diff --git a/asset-manifest.json b/asset-manifest.json index 95ce935..6487e4b 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,32 +1,32 @@ { "files": { - "main.css": "/static/css/main.e6c13ad2.css", - "main.js": "/static/js/main.06a42d0d.js", - "static/js/787.c4e7f8f9.chunk.js": "/static/js/787.c4e7f8f9.chunk.js", - "service-worker.js": "/service-worker.js", - "static/media/14plus.svg": "/static/media/14plus.c684ea360f03470b6108894bb330ea45.svg", - "static/media/15plus.svg": "/static/media/15plus.4599b3f8a2d69d997009fc0438af6b73.svg", - "static/media/9B.svg": "/static/media/9B.53c4cd63eee5b0e5e9c31ac22db437e5.svg", - "static/media/10B.svg": "/static/media/10B.a1ff70bedc43e5e935fa07060d364163.svg", - "static/media/14B.svg": "/static/media/14B.c0be400f2fd7ba90ecd6036dce688dba.svg", - "static/media/11B.svg": "/static/media/11B.2aed50f71a99f36d36cdce228b577bf5.svg", - "static/media/15B.svg": "/static/media/15B.f9155827b88689801f738c904e36dfa7.svg", - "static/media/12B.svg": "/static/media/12B.88e9c7ac276aed03ca966dc7d20af0c6.svg", - "static/media/13B.svg": "/static/media/13B.79a0cecf536e77a4d6f824f9fcf2f434.svg", - "static/media/3B.svg": "/static/media/3B.dab68bf6594639e1a8ee1d61269dd2d5.svg", - "static/media/4B.svg": "/static/media/4B.7d11eb5923c95a35c4c619a8770499f0.svg", - "static/media/7B.svg": "/static/media/7B.b79dd69a40dfdde9337e0f917061db6f.svg", - "static/media/5B.svg": "/static/media/5B.e28ce9271450a69b1d64040b616dcfb2.svg", - "static/media/6B.svg": "/static/media/6B.89c6a5bdb6616bbb10c0ba8fde91c33c.svg", - "static/media/2B.svg": "/static/media/2B.d8924a01fcaf0de5e787495766754115.svg", - "static/media/8B.svg": "/static/media/8B.cca3b3a13d9bf00a7041b94dbe3f370c.svg", - "index.html": "/index.html", - "main.e6c13ad2.css.map": "/static/css/main.e6c13ad2.css.map", - "main.06a42d0d.js.map": "/static/js/main.06a42d0d.js.map", - "787.c4e7f8f9.chunk.js.map": "/static/js/787.c4e7f8f9.chunk.js.map" + "main.css": "/poolscore/static/css/main.e6c13ad2.css", + "main.js": "/poolscore/static/js/main.479afb46.js", + "static/js/787.c4e7f8f9.chunk.js": "/poolscore/static/js/787.c4e7f8f9.chunk.js", + "service-worker.js": "/poolscore/service-worker.js", + "static/media/14plus.svg": "/poolscore/static/media/14plus.c684ea360f03470b6108894bb330ea45.svg", + "static/media/15plus.svg": "/poolscore/static/media/15plus.4599b3f8a2d69d997009fc0438af6b73.svg", + "static/media/9B.svg": "/poolscore/static/media/9B.53c4cd63eee5b0e5e9c31ac22db437e5.svg", + "static/media/10B.svg": "/poolscore/static/media/10B.a1ff70bedc43e5e935fa07060d364163.svg", + "static/media/14B.svg": "/poolscore/static/media/14B.c0be400f2fd7ba90ecd6036dce688dba.svg", + "static/media/11B.svg": "/poolscore/static/media/11B.2aed50f71a99f36d36cdce228b577bf5.svg", + "static/media/15B.svg": "/poolscore/static/media/15B.f9155827b88689801f738c904e36dfa7.svg", + "static/media/12B.svg": "/poolscore/static/media/12B.88e9c7ac276aed03ca966dc7d20af0c6.svg", + "static/media/13B.svg": "/poolscore/static/media/13B.79a0cecf536e77a4d6f824f9fcf2f434.svg", + "static/media/3B.svg": "/poolscore/static/media/3B.dab68bf6594639e1a8ee1d61269dd2d5.svg", + "static/media/4B.svg": "/poolscore/static/media/4B.7d11eb5923c95a35c4c619a8770499f0.svg", + "static/media/7B.svg": "/poolscore/static/media/7B.b79dd69a40dfdde9337e0f917061db6f.svg", + "static/media/5B.svg": "/poolscore/static/media/5B.e28ce9271450a69b1d64040b616dcfb2.svg", + "static/media/6B.svg": "/poolscore/static/media/6B.89c6a5bdb6616bbb10c0ba8fde91c33c.svg", + "static/media/2B.svg": "/poolscore/static/media/2B.d8924a01fcaf0de5e787495766754115.svg", + "static/media/8B.svg": "/poolscore/static/media/8B.cca3b3a13d9bf00a7041b94dbe3f370c.svg", + "index.html": "/poolscore/index.html", + "main.e6c13ad2.css.map": "/poolscore/static/css/main.e6c13ad2.css.map", + "main.479afb46.js.map": "/poolscore/static/js/main.479afb46.js.map", + "787.c4e7f8f9.chunk.js.map": "/poolscore/static/js/787.c4e7f8f9.chunk.js.map" }, "entrypoints": [ "static/css/main.e6c13ad2.css", - "static/js/main.06a42d0d.js" + "static/js/main.479afb46.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index 68f7413..f890818 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Poolscore
\ No newline at end of file +Poolscore
\ No newline at end of file diff --git a/service-worker.js b/service-worker.js index cc7fdce..a149380 100644 --- a/service-worker.js +++ b/service-worker.js @@ -1,3 +1,3 @@ /*! For license information please see service-worker.js.LICENSE.txt */ -!function(){"use strict";var e={923:function(){try{self["workbox:core:6.5.3"]&&_()}catch(e){}},190:function(){try{self["workbox:expiration:6.5.3"]&&_()}catch(e){}},437:function(){try{self["workbox:precaching:6.5.3"]&&_()}catch(e){}},185:function(){try{self["workbox:routing:6.5.3"]&&_()}catch(e){}},833:function(){try{self["workbox:strategies:6.5.3"]&&_()}catch(e){}}},t={};function r(n){var a=t[n];if(void 0!==a)return a.exports;var i=t[n]={exports:{}};return e[n](i,i.exports,r),i.exports}!function(){r(923);var e=null;function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t(e)}function n(e){var r=function(e,r){if("object"!==t(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,r||"default");if("object"!==t(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)}(e,"string");return"symbol"===t(r)?r:String(r)}function a(e,t){for(var r=0;r1?r-1:0),a=1;a0&&(t+=" :: ".concat(JSON.stringify(n))),t},y=function(e){o(r,e);var t=l(r);function r(e,n){var a;s(this,r);var i=d(e,n);return(a=t.call(this,i)).name=e,a.details=n,a}return i(r)}(v(Error)),g=new Set;var b,m={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!==typeof registration?registration.scope:""},x=function(e){return[m.prefix,e,m.suffix].filter((function(e){return e&&e.length>0})).join("-")},w={updateDetails:function(e){!function(e){for(var t=0,r=Object.keys(m);t=0;--a){var i=this.tryEntries[a],s=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),o=n.call(i,"finallyLoc");if(c&&o){if(this.prev=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),L(r),l}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;L(r)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:C(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),l}},e}function _(e,t,r,n,a,i,s){try{var c=e[i](s),o=c.value}catch(u){return void r(u)}c.done?t(o):Promise.resolve(o).then(n,a)}function R(e){return function(){var t=this,r=arguments;return new Promise((function(n,a){var i=e.apply(t,r);function s(e){_(i,n,a,s,c,"next",e)}function c(e){_(i,n,a,s,c,"throw",e)}s(void 0)}))}}function E(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return s=e.done,e},e:function(e){c=!0,i=e},f:function(){try{s||null==r.return||r.return()}finally{if(c)throw i}}}}function C(e,t){var r,n=new URL(e),a=O(t);try{for(a.s();!(r=a.n()).done;){var i=r.value;n.searchParams.delete(i)}}catch(s){a.e(s)}finally{a.f()}return n.href}function P(e,t,r,n){return S.apply(this,arguments)}function S(){return(S=R(k().mark((function e(t,r,n,a){var i,s,c,o,u,h,f;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=C(r.url,n),r.url!==i){e.next=3;break}return e.abrupt("return",t.match(r,a));case 3:return s=Object.assign(Object.assign({},a),{ignoreSearch:!0}),e.next=6,t.keys(r,s);case 6:c=e.sent,o=O(c),e.prev=8,o.s();case 10:if((u=o.n()).done){e.next=17;break}if(h=u.value,f=C(h.url,n),i!==f){e.next=15;break}return e.abrupt("return",t.match(h,a));case 15:e.next=10;break;case 17:e.next=22;break;case 19:e.prev=19,e.t0=e.catch(8),o.e(e.t0);case 22:return e.prev=22,o.f(),e.finish(22);case 25:return e.abrupt("return");case 26:case"end":return e.stop()}}),e,null,[[8,19,22,25]])})))).apply(this,arguments)}function j(){if(void 0===b){var e=new Response("");if("body"in e)try{new Response(e.body),b=!0}catch(t){b=!1}b=!1}return b}function N(e){e.then((function(){}))}var T=i((function e(){var t=this;s(this,e),this.promise=new Promise((function(e,r){t.resolve=e,t.reject=r}))}));function D(){return q.apply(this,arguments)}function q(){return(q=R(k().mark((function e(){var t,r,n;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:0,t=O(g),e.prev=2,t.s();case 4:if((r=t.n()).done){e.next=11;break}return n=r.value,e.next=8,n();case 8:0;case 9:e.next=4;break;case 11:e.next=16;break;case 13:e.prev=13,e.t0=e.catch(2),t.e(e.t0);case 16:return e.prev=16,t.f(),e.finish(16);case 19:0;case 20:case"end":return e.stop()}}),e,null,[[2,13,16,19]])})))).apply(this,arguments)}var U=function(e){return new URL(String(e),location.href).href.replace(new RegExp("^".concat(location.origin)),"")};function I(e){return new Promise((function(t){return setTimeout(t,e)}))}function A(e,t){var r=t();return e.waitUntil(r),r}function K(e,t){return M.apply(this,arguments)}function M(){return(M=R(k().mark((function e(t,r){var n,a,i,s,c,o;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=null,t.url&&(a=new URL(t.url),n=a.origin),n===self.location.origin){e.next=4;break}throw new y("cross-origin-copy-response",{origin:n});case 4:if(i=t.clone(),s={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},c=r?r(s):s,!j()){e.next=11;break}e.t0=i.body,e.next=14;break;case 11:return e.next=13,i.blob();case 13:e.t0=e.sent;case 14:return o=e.t0,e.abrupt("return",new Response(o,c));case 16:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function W(e,t,r){return(t=n(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function B(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function F(e){for(var t=1;t1?r-1:0),a=1;a2&&void 0!==arguments[2]?arguments[2]:{},n=r.blocked,a=r.upgrade,i=r.blocking,s=r.terminated,c=indexedDB.open(e,t),o=te(c);return a&&c.addEventListener("upgradeneeded",(function(e){a(te(c.result),e.oldVersion,e.newVersion,te(c.transaction))})),n&&c.addEventListener("blocked",(function(){return n()})),o.then((function(e){s&&e.addEventListener("close",(function(){return s()})),i&&e.addEventListener("versionchange",(function(){return i()}))})).catch((function(){})),o}var ae=["get","getKey","getAll","getAllKeys","count"],ie=["put","add","delete","clear"],se=new Map;function ce(e,t){if(e instanceof IDBDatabase&&!(t in e)&&"string"===typeof t){if(se.get(t))return se.get(t);var r=t.replace(/FromIndex$/,""),n=t!==r,a=ie.includes(r);if(r in(n?IDBIndex:IDBObjectStore).prototype&&(a||ae.includes(r))){var i=function(){var e=R(k().mark((function e(t){var i,s,c,o,u,h,f=arguments;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(s=this.transaction(t,a?"readwrite":"readonly"),c=s.store,o=f.length,u=new Array(o>1?o-1:0),h=1;h1&&void 0!==arguments[1]?arguments[1]:{}).blocked,r=indexedDB.deleteDatabase(e);t&&r.addEventListener("blocked",(function(){return t()})),te(r).then((function(){}))}(this._cacheName)}},{key:"setTimestamp",value:function(){var e=R(k().mark((function e(t,r){var n,a,i;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=ue(t),n={url:t,timestamp:r,cacheName:this._cacheName,id:this._getId(t)},e.next=4,this.getDb();case 4:return a=e.sent,i=a.transaction(oe,"readwrite",{durability:"relaxed"}),e.next=8,i.store.put(n);case 8:return e.next=10,i.done;case 10:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}()},{key:"getTimestamp",value:function(){var e=R(k().mark((function e(t){var r,n;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getDb();case 2:return r=e.sent,e.next=5,r.get(oe,this._getId(t));case 5:return n=e.sent,e.abrupt("return",null===n||void 0===n?void 0:n.timestamp);case 7:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"expireEntries",value:function(){var e=R(k().mark((function e(t,r){var n,a,i,s,c,o,u,h,f;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getDb();case 2:return n=e.sent,e.next=5,n.transaction(oe).store.index("timestamp").openCursor(null,"prev");case 5:a=e.sent,i=[],s=0;case 8:if(!a){e.next=16;break}return(c=a.value).cacheName===this._cacheName&&(t&&c.timestamp=r?i.push(a.value):s++),e.next=13,a.continue();case 13:a=e.sent,e.next=8;break;case 16:o=[],u=0,h=i;case 18:if(!(u1&&void 0!==arguments[1]?arguments[1]:{};s(this,e),this._isRunning=!1,this._rerunRequested=!1,this._maxEntries=r.maxEntries,this._maxAgeSeconds=r.maxAgeSeconds,this._matchOptions=r.matchOptions,this._cacheName=t,this._timestampModel=new he(t)}return i(e,[{key:"expireEntries",value:function(){var e=R(k().mark((function e(){var t,r,n,a,i,s;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._isRunning){e.next=3;break}return this._rerunRequested=!0,e.abrupt("return");case 3:return this._isRunning=!0,t=this._maxAgeSeconds?Date.now()-1e3*this._maxAgeSeconds:0,e.next=7,this._timestampModel.expireEntries(t,this._maxEntries);case 7:return r=e.sent,e.next=10,self.caches.open(this._cacheName);case 10:n=e.sent,a=O(r),e.prev=12,a.s();case 14:if((i=a.n()).done){e.next=20;break}return s=i.value,e.next=18,n.delete(s,this._matchOptions);case 18:e.next=14;break;case 20:e.next=25;break;case 22:e.prev=22,e.t0=e.catch(12),a.e(e.t0);case 25:return e.prev=25,a.f(),e.finish(25);case 28:0,this._isRunning=!1,this._rerunRequested&&(this._rerunRequested=!1,N(this.expireEntries()));case 31:case"end":return e.stop()}}),e,this,[[12,22,25,28]])})));return function(){return e.apply(this,arguments)}}()},{key:"updateTimestamp",value:function(){var e=R(k().mark((function e(t){return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=3,this._timestampModel.setTimestamp(t,Date.now());case 3:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"isURLExpired",value:function(){var e=R(k().mark((function e(t){var r,n;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._maxAgeSeconds){e.next=6;break}e.next=3;break;case 3:return e.abrupt("return",!1);case 6:return e.next=8,this._timestampModel.getTimestamp(t);case 8:return r=e.sent,n=Date.now()-1e3*this._maxAgeSeconds,e.abrupt("return",void 0===r||r0&&void 0!==arguments[0]?arguments[0]:{};s(this,e),this.cachedResponseWillBeUsed=function(){var e=R(k().mark((function e(r){var n,a,i,s,c,o,u;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=r.event,a=r.request,i=r.cacheName,s=r.cachedResponse){e.next=3;break}return e.abrupt("return",null);case 3:if(c=t._isResponseDateFresh(s),N((o=t._getCacheExpiration(i)).expireEntries()),u=o.updateTimestamp(a.url),n)try{n.waitUntil(u)}catch(h){0}return e.abrupt("return",c?s:null);case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),this.cacheDidUpdate=function(){var e=R(k().mark((function e(r){var n,a,i;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=r.cacheName,a=r.request,i=t._getCacheExpiration(n),e.next=5,i.updateTimestamp(a.url);case 5:return e.next=7,i.expireEntries();case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),this._config=r,this._maxAgeSeconds=r.maxAgeSeconds,this._cacheExpirations=new Map,r.purgeOnQuotaError&&function(e){g.add(e)}((function(){return t.deleteCacheAndMetadata()}))}return i(e,[{key:"_getCacheExpiration",value:function(e){if(e===w.getRuntimeName())throw new y("expire-custom-caches-only");var t=this._cacheExpirations.get(e);return t||(t=new fe(e,this._config),this._cacheExpirations.set(e,t)),t}},{key:"_isResponseDateFresh",value:function(e){if(!this._maxAgeSeconds)return!0;var t=this._getDateHeaderTimestamp(e);return null===t||t>=Date.now()-1e3*this._maxAgeSeconds}},{key:"_getDateHeaderTimestamp",value:function(e){if(!e.headers.has("date"))return null;var t=e.headers.get("date"),r=new Date(t).getTime();return isNaN(r)?null:r}},{key:"deleteCacheAndMetadata",value:function(){var e=R(k().mark((function e(){var t,r,n,a,i;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=O(this._cacheExpirations),e.prev=1,t.s();case 3:if((r=t.n()).done){e.next=11;break}return n=le(r.value,2),a=n[0],i=n[1],e.next=7,self.caches.delete(a);case 7:return e.next=9,i.delete();case 9:e.next=3;break;case 11:e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),t.e(e.t0);case 16:return e.prev=16,t.f(),e.finish(16);case 19:this._cacheExpirations=new Map;case 20:case"end":return e.stop()}}),e,this,[[1,13,16,19]])})));return function(){return e.apply(this,arguments)}}()}]),e}();function ve(e){return function(e){if(Array.isArray(e))return E(e)}(e)||function(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||L(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}r(437);var de="__WB_REVISION__";function ye(e){if(!e)throw new y("add-to-cache-list-unexpected-type",{entry:e});if("string"===typeof e){var t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}var r=e.revision,n=e.url;if(!n)throw new y("add-to-cache-list-unexpected-type",{entry:e});if(!r){var a=new URL(n,location.href);return{cacheKey:a.href,url:a.href}}var i=new URL(n,location.href),s=new URL(n,location.href);return i.searchParams.set(de,r),{cacheKey:i.href,url:s.href}}var ge=i((function e(){var t=this;s(this,e),this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=function(){var e=R(k().mark((function e(t){var r,n;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=t.request,(n=t.state)&&(n.originalRequest=r);case 2:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),this.cachedResponseWillBeUsed=function(){var e=R(k().mark((function e(r){var n,a,i,s;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=r.event,a=r.state,i=r.cachedResponse,"install"===n.type&&a&&a.originalRequest&&a.originalRequest instanceof Request&&(s=a.originalRequest.url,i?t.notUpdatedURLs.push(s):t.updatedURLs.push(s)),e.abrupt("return",i);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()})),be=i((function e(t){var r=this,n=t.precacheController;s(this,e),this.cacheKeyWillBeUsed=function(){var e=R(k().mark((function e(t){var n,a,i;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.request,a=t.params,i=(null===a||void 0===a?void 0:a.cacheKey)||r._precacheController.getCacheKeyForURL(n.url),e.abrupt("return",i?new Request(i,{headers:n.headers}):n);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),this._precacheController=n}));r(833);function me(e){return"string"===typeof e?new Request(e):e}var xe=function(){function t(e,r){s(this,t),this._cacheKeys={},Object.assign(this,r),this.event=r.event,this._strategy=e,this._handlerDeferred=new T,this._extendLifetimePromises=[],this._plugins=ve(e.plugins),this._pluginStateMap=new Map;var n,a=O(this._plugins);try{for(a.s();!(n=a.n()).done;){var i=n.value;this._pluginStateMap.set(i,{})}}catch(c){a.e(c)}finally{a.f()}this.event.waitUntil(this._handlerDeferred.promise)}return i(t,[{key:"fetch",value:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(){var e=R(k().mark((function e(t){var r,n,a,i,s,c,o,u,h,f,l,p;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=this.event,!("navigate"===(n=me(t)).mode&&r instanceof FetchEvent&&r.preloadResponse)){e.next=9;break}return e.next=5,r.preloadResponse;case 5:if(!(a=e.sent)){e.next=9;break}return e.abrupt("return",a);case 9:i=this.hasCallback("fetchDidFail")?n.clone():null,e.prev=10,s=O(this.iterateCallbacks("requestWillFetch")),e.prev=12,s.s();case 14:if((c=s.n()).done){e.next=21;break}return o=c.value,e.next=18,o({request:n.clone(),event:r});case 18:n=e.sent;case 19:e.next=14;break;case 21:e.next=26;break;case 23:e.prev=23,e.t0=e.catch(12),s.e(e.t0);case 26:return e.prev=26,s.f(),e.finish(26);case 29:e.next=35;break;case 31:if(e.prev=31,e.t1=e.catch(10),!(e.t1 instanceof Error)){e.next=35;break}throw new y("plugin-error-request-will-fetch",{thrownErrorMessage:e.t1.message});case 35:return u=n.clone(),e.prev=36,e.next=39,fetch(n,"navigate"===n.mode?void 0:this._strategy.fetchOptions);case 39:h=e.sent,f=O(this.iterateCallbacks("fetchDidSucceed")),e.prev=42,f.s();case 44:if((l=f.n()).done){e.next=51;break}return p=l.value,e.next=48,p({event:r,request:u,response:h});case 48:h=e.sent;case 49:e.next=44;break;case 51:e.next=56;break;case 53:e.prev=53,e.t2=e.catch(42),f.e(e.t2);case 56:return e.prev=56,f.f(),e.finish(56);case 59:return e.abrupt("return",h);case 62:if(e.prev=62,e.t3=e.catch(36),!i){e.next=68;break}return e.next=68,this.runCallbacks("fetchDidFail",{error:e.t3,event:r,originalRequest:i.clone(),request:u.clone()});case 68:throw e.t3;case 69:case"end":return e.stop()}}),e,this,[[10,31],[12,23,26,29],[36,62],[42,53,56,59]])})));return function(t){return e.apply(this,arguments)}}())},{key:"fetchAndCachePut",value:function(){var e=R(k().mark((function e(t){var r,n;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.fetch(t);case 2:return r=e.sent,n=r.clone(),this.waitUntil(this.cachePut(t,n)),e.abrupt("return",r);case 6:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"cacheMatch",value:function(){var e=R(k().mark((function e(t){var r,n,a,i,s,c,o,u,h,f;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=me(t),a=this._strategy,i=a.cacheName,s=a.matchOptions,e.next=4,this.getCacheKey(r,"read");case 4:return c=e.sent,o=Object.assign(Object.assign({},s),{cacheName:i}),e.next=8,caches.match(c,o);case 8:n=e.sent,u=O(this.iterateCallbacks("cachedResponseWillBeUsed")),e.prev=11,u.s();case 13:if((h=u.n()).done){e.next=23;break}return f=h.value,e.next=17,f({cacheName:i,matchOptions:s,cachedResponse:n,request:c,event:this.event});case 17:if(e.t0=e.sent,e.t0){e.next=20;break}e.t0=void 0;case 20:n=e.t0;case 21:e.next=13;break;case 23:e.next=28;break;case 25:e.prev=25,e.t1=e.catch(11),u.e(e.t1);case 28:return e.prev=28,u.f(),e.finish(28);case 31:return e.abrupt("return",n);case 32:case"end":return e.stop()}}),e,this,[[11,25,28,31]])})));return function(t){return e.apply(this,arguments)}}()},{key:"cachePut",value:function(){var t=R(k().mark((function t(r,n){var a,i,s,c,o,u,h,f,l,p,v,d,g;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=me(r),t.next=3,I(0);case 3:return t.next=5,this.getCacheKey(a,"write");case 5:i=t.sent,t.next=11;break;case 9:(s=n.headers.get("Vary"))&&e.debug("The response for ".concat(U(i.url)," ")+"has a 'Vary: ".concat(s,"' header. ")+"Consider setting the {ignoreVary: true} option on your strategy to ensure cache matching and deletion works as expected.");case 11:if(n){t.next=14;break}throw new y("cache-put-with-no-response",{url:U(i.url)});case 14:return t.next=16,this._ensureResponseSafeToCache(n);case 16:if(c=t.sent){t.next=20;break}return t.abrupt("return",!1);case 20:return o=this._strategy,u=o.cacheName,h=o.matchOptions,t.next=23,self.caches.open(u);case 23:if(f=t.sent,!(l=this.hasCallback("cacheDidUpdate"))){t.next=31;break}return t.next=28,P(f,i.clone(),["__WB_REVISION__"],h);case 28:t.t0=t.sent,t.next=32;break;case 31:t.t0=null;case 32:return p=t.t0,t.prev=34,t.next=37,f.put(i,l?c.clone():c);case 37:t.next=46;break;case 39:if(t.prev=39,t.t1=t.catch(34),!(t.t1 instanceof Error)){t.next=46;break}if("QuotaExceededError"!==t.t1.name){t.next=45;break}return t.next=45,D();case 45:throw t.t1;case 46:v=O(this.iterateCallbacks("cacheDidUpdate")),t.prev=47,v.s();case 49:if((d=v.n()).done){t.next=55;break}return g=d.value,t.next=53,g({cacheName:u,oldResponse:p,newResponse:c.clone(),request:i,event:this.event});case 53:t.next=49;break;case 55:t.next=60;break;case 57:t.prev=57,t.t2=t.catch(47),v.e(t.t2);case 60:return t.prev=60,v.f(),t.finish(60);case 63:return t.abrupt("return",!0);case 64:case"end":return t.stop()}}),t,this,[[34,39],[47,57,60,63]])})));return function(e,r){return t.apply(this,arguments)}}()},{key:"getCacheKey",value:function(){var e=R(k().mark((function e(t,r){var n,a,i,s,c;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n="".concat(t.url," | ").concat(r),this._cacheKeys[n]){e.next=24;break}a=t,i=O(this.iterateCallbacks("cacheKeyWillBeUsed")),e.prev=4,i.s();case 6:if((s=i.n()).done){e.next=15;break}return c=s.value,e.t0=me,e.next=11,c({mode:r,request:a,event:this.event,params:this.params});case 11:e.t1=e.sent,a=(0,e.t0)(e.t1);case 13:e.next=6;break;case 15:e.next=20;break;case 17:e.prev=17,e.t2=e.catch(4),i.e(e.t2);case 20:return e.prev=20,i.f(),e.finish(20);case 23:this._cacheKeys[n]=a;case 24:return e.abrupt("return",this._cacheKeys[n]);case 25:case"end":return e.stop()}}),e,this,[[4,17,20,23]])})));return function(t,r){return e.apply(this,arguments)}}()},{key:"hasCallback",value:function(e){var t,r=O(this._strategy.plugins);try{for(r.s();!(t=r.n()).done;){if(e in t.value)return!0}}catch(n){r.e(n)}finally{r.f()}return!1}},{key:"runCallbacks",value:function(){var e=R(k().mark((function e(t,r){var n,a,i;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=O(this.iterateCallbacks(t)),e.prev=1,n.s();case 3:if((a=n.n()).done){e.next=9;break}return i=a.value,e.next=7,i(r);case 7:e.next=3;break;case 9:e.next=14;break;case 11:e.prev=11,e.t0=e.catch(1),n.e(e.t0);case 14:return e.prev=14,n.f(),e.finish(14);case 17:case"end":return e.stop()}}),e,this,[[1,11,14,17]])})));return function(t,r){return e.apply(this,arguments)}}()},{key:"iterateCallbacks",value:k().mark((function e(t){var r,n,a,i=this;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=O(this._strategy.plugins),e.prev=1,a=k().mark((function e(){var r,a,s;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("function"!==typeof(r=n.value)[t]){e.next=6;break}return a=i._pluginStateMap.get(r),s=function(e){var n=Object.assign(Object.assign({},e),{state:a});return r[t](n)},e.next=6,s;case 6:case"end":return e.stop()}}),e)})),r.s();case 4:if((n=r.n()).done){e.next=8;break}return e.delegateYield(a(),"t0",6);case 6:e.next=4;break;case 8:e.next=13;break;case 10:e.prev=10,e.t1=e.catch(1),r.e(e.t1);case 13:return e.prev=13,r.f(),e.finish(13);case 16:case"end":return e.stop()}}),e,this,[[1,10,13,16]])}))},{key:"waitUntil",value:function(e){return this._extendLifetimePromises.push(e),e}},{key:"doneWaiting",value:function(){var e=R(k().mark((function e(){var t;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(t=this._extendLifetimePromises.shift())){e.next=5;break}return e.next=3,t;case 3:e.next=0;break;case 5:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"destroy",value:function(){this._handlerDeferred.resolve(null)}},{key:"_ensureResponseSafeToCache",value:function(){var e=R(k().mark((function e(t){var r,n,a,i,s;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=t,n=!1,a=O(this.iterateCallbacks("cacheWillUpdate")),e.prev=3,a.s();case 5:if((i=a.n()).done){e.next=18;break}return s=i.value,e.next=9,s({request:this.request,response:r,event:this.event});case 9:if(e.t0=e.sent,e.t0){e.next=12;break}e.t0=void 0;case 12:if(r=e.t0,n=!0,r){e.next=16;break}return e.abrupt("break",18);case 16:e.next=5;break;case 18:e.next=23;break;case 20:e.prev=20,e.t1=e.catch(3),a.e(e.t1);case 23:return e.prev=23,a.f(),e.finish(23);case 26:return n||r&&200!==r.status&&(r=void 0),e.abrupt("return",r);case 28:case"end":return e.stop()}}),e,this,[[3,20,23,26]])})));return function(t){return e.apply(this,arguments)}}()}]),t}(),we=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};s(this,e),this.cacheName=w.getRuntimeName(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions}return i(e,[{key:"handle",value:function(e){return le(this.handleAll(e),1)[0]}},{key:"handleAll",value:function(e){e instanceof FetchEvent&&(e={event:e,request:e.request});var t=e.event,r="string"===typeof e.request?new Request(e.request):e.request,n="params"in e?e.params:void 0,a=new xe(this,{event:t,request:r,params:n}),i=this._getResponse(a,r,t);return[i,this._awaitComplete(i,a,r,t)]}},{key:"_getResponse",value:function(){var e=R(k().mark((function e(t,r,n){var a,i,s,c,o,u,h;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.runCallbacks("handlerWillStart",{event:n,request:r});case 2:return a=void 0,e.prev=3,e.next=6,this._handle(r,t);case 6:if((a=e.sent)&&"error"!==a.type){e.next=9;break}throw new y("no-response",{url:r.url});case 9:e.next=39;break;case 11:if(e.prev=11,e.t0=e.catch(3),!(e.t0 instanceof Error)){e.next=34;break}i=O(t.iterateCallbacks("handlerDidError")),e.prev=15,i.s();case 17:if((s=i.n()).done){e.next=26;break}return c=s.value,e.next=21,c({error:e.t0,event:n,request:r});case 21:if(!(a=e.sent)){e.next=24;break}return e.abrupt("break",26);case 24:e.next=17;break;case 26:e.next=31;break;case 28:e.prev=28,e.t1=e.catch(15),i.e(e.t1);case 31:return e.prev=31,i.f(),e.finish(31);case 34:if(a){e.next=38;break}throw e.t0;case 38:0;case 39:o=O(t.iterateCallbacks("handlerWillRespond")),e.prev=40,o.s();case 42:if((u=o.n()).done){e.next=49;break}return h=u.value,e.next=46,h({event:n,request:r,response:a});case 46:a=e.sent;case 47:e.next=42;break;case 49:e.next=54;break;case 51:e.prev=51,e.t2=e.catch(40),o.e(e.t2);case 54:return e.prev=54,o.f(),e.finish(54);case 57:return e.abrupt("return",a);case 58:case"end":return e.stop()}}),e,this,[[3,11],[15,28,31,34],[40,51,54,57]])})));return function(t,r,n){return e.apply(this,arguments)}}()},{key:"_awaitComplete",value:function(){var e=R(k().mark((function e(t,r,n,a){var i,s;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,t;case 3:i=e.sent,e.next=8;break;case 6:e.prev=6,e.t0=e.catch(0);case 8:return e.prev=8,e.next=11,r.runCallbacks("handlerDidRespond",{event:a,request:n,response:i});case 11:return e.next=13,r.doneWaiting();case 13:e.next=18;break;case 15:e.prev=15,e.t1=e.catch(8),e.t1 instanceof Error&&(s=e.t1);case 18:return e.next=20,r.runCallbacks("handlerDidComplete",{event:a,request:n,response:i,error:s});case 20:if(r.destroy(),!s){e.next=23;break}throw s;case 23:case"end":return e.stop()}}),e,null,[[0,6],[8,15]])})));return function(t,r,n,a){return e.apply(this,arguments)}}()}]),e}(),ke=function(t){o(n,t);var r=l(n);function n(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return s(this,n),t.cacheName=w.getPrecacheName(t.cacheName),(e=r.call(this,t))._fallbackToNetwork=!1!==t.fallbackToNetwork,e.plugins.push(n.copyRedirectedCacheableResponsesPlugin),e}return i(n,[{key:"_handle",value:function(){var e=R(k().mark((function e(t,r){var n;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,r.cacheMatch(t);case 2:if(!(n=e.sent)){e.next=5;break}return e.abrupt("return",n);case 5:if(!r.event||"install"!==r.event.type){e.next=9;break}return e.next=8,this._handleInstall(t,r);case 8:case 11:return e.abrupt("return",e.sent);case 9:return e.next=11,this._handleFetch(t,r);case 12:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}()},{key:"_handleFetch",value:function(){var t=R(k().mark((function t(r,n){var a,i,s,c,o,u;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=n.params||{},!this._fallbackToNetwork){t.next=17;break}return s=i.integrity,c=r.integrity,o=!c||c===s,t.next=8,n.fetch(new Request(r,{integrity:"no-cors"!==r.mode?c||s:void 0}));case 8:if(a=t.sent,!s||!o||"no-cors"===r.mode){t.next=15;break}return this._useDefaultCacheabilityPluginIfNeeded(),t.next=13,n.cachePut(r,a.clone());case 13:t.sent;case 15:t.next=18;break;case 17:throw new y("missing-precache-entry",{cacheName:this.cacheName,url:r.url});case 18:t.next=34;break;case 23:t.t0=t.sent;case 24:u=t.t0,e.groupCollapsed("Precaching is responding to: "+U(r.url)),e.log("Serving the precached url: ".concat(U(u instanceof Request?u.url:u))),e.groupCollapsed("View request details here."),e.log(r),e.groupEnd(),e.groupCollapsed("View response details here."),e.log(a),e.groupEnd(),e.groupEnd();case 34:return t.abrupt("return",a);case 35:case"end":return t.stop()}}),t,this)})));return function(e,r){return t.apply(this,arguments)}}()},{key:"_handleInstall",value:function(){var e=R(k().mark((function e(t,r){var n;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this._useDefaultCacheabilityPluginIfNeeded(),e.next=3,r.fetch(t);case 3:return n=e.sent,e.next=6,r.cachePut(t,n.clone());case 6:if(e.sent){e.next=9;break}throw new y("bad-precaching-response",{url:t.url,status:n.status});case 9:return e.abrupt("return",n);case 10:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}()},{key:"_useDefaultCacheabilityPluginIfNeeded",value:function(){var e,t=null,r=0,a=O(this.plugins.entries());try{for(a.s();!(e=a.n()).done;){var i=le(e.value,2),s=i[0],c=i[1];c!==n.copyRedirectedCacheableResponsesPlugin&&(c===n.defaultPrecacheCacheabilityPlugin&&(t=s),c.cacheWillUpdate&&r++)}}catch(o){a.e(o)}finally{a.f()}0===r?this.plugins.push(n.defaultPrecacheCacheabilityPlugin):r>1&&null!==t&&this.plugins.splice(t,1)}}]),n}(we);ke.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:function(e){return R(k().mark((function t(){var r;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if((r=e.response)&&!(r.status>=400)){t.next=3;break}return t.abrupt("return",null);case 3:return t.abrupt("return",r);case 4:case"end":return t.stop()}}),t)})))()}},ke.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:function(e){return R(k().mark((function t(){var r;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!(r=e.response).redirected){t.next=7;break}return t.next=4,K(r);case 4:t.t0=t.sent,t.next=8;break;case 7:t.t0=r;case 8:return t.abrupt("return",t.t0);case 9:case"end":return t.stop()}}),t)})))()}};var _e,Re=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=t.cacheName,n=t.plugins,a=void 0===n?[]:n,i=t.fallbackToNetwork,c=void 0===i||i;s(this,e),this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new ke({cacheName:w.getPrecacheName(r),plugins:[].concat(ve(a),[new be({precacheController:this})]),fallbackToNetwork:c}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}return i(e,[{key:"strategy",get:function(){return this._strategy}},{key:"precache",value:function(e){this.addToCacheList(e),this._installAndActiveListenersAdded||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this._installAndActiveListenersAdded=!0)}},{key:"addToCacheList",value:function(e){var t,r=[],n=O(e);try{for(n.s();!(t=n.n()).done;){var a=t.value;"string"===typeof a?r.push(a):a&&void 0===a.revision&&r.push(a.url);var i=ye(a),s=i.cacheKey,c=i.url,o="string"!==typeof a&&a.revision?"reload":"default";if(this._urlsToCacheKeys.has(c)&&this._urlsToCacheKeys.get(c)!==s)throw new y("add-to-cache-list-conflicting-entries",{firstEntry:this._urlsToCacheKeys.get(c),secondEntry:s});if("string"!==typeof a&&a.integrity){if(this._cacheKeysToIntegrities.has(s)&&this._cacheKeysToIntegrities.get(s)!==a.integrity)throw new y("add-to-cache-list-conflicting-integrities",{url:c});this._cacheKeysToIntegrities.set(s,a.integrity)}if(this._urlsToCacheKeys.set(c,s),this._urlsToCacheModes.set(c,o),r.length>0){var u="Workbox is precaching URLs without revision "+"info: ".concat(r.join(", "),"\nThis is generally NOT safe. ")+"Learn more at https://bit.ly/wb-precache";console.warn(u)}}}catch(h){n.e(h)}finally{n.f()}}},{key:"install",value:function(e){var t=this;return A(e,R(k().mark((function r(){var n,a,i,s,c,o,u,h,f,l,p;return k().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:n=new ge,t.strategy.plugins.push(n),a=O(t._urlsToCacheKeys),r.prev=3,a.s();case 5:if((i=a.n()).done){r.next=14;break}return s=le(i.value,2),c=s[0],o=s[1],u=t._cacheKeysToIntegrities.get(o),h=t._urlsToCacheModes.get(c),f=new Request(c,{integrity:u,cache:h,credentials:"same-origin"}),r.next=12,Promise.all(t.strategy.handleAll({params:{cacheKey:o},request:f,event:e}));case 12:r.next=5;break;case 14:r.next=19;break;case 16:r.prev=16,r.t0=r.catch(3),a.e(r.t0);case 19:return r.prev=19,a.f(),r.finish(19);case 22:return l=n.updatedURLs,p=n.notUpdatedURLs,r.abrupt("return",{updatedURLs:l,notUpdatedURLs:p});case 25:case"end":return r.stop()}}),r,null,[[3,16,19,22]])}))))}},{key:"activate",value:function(e){var t=this;return A(e,R(k().mark((function e(){var r,n,a,i,s,c,o;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,self.caches.open(t.strategy.cacheName);case 2:return r=e.sent,e.next=5,r.keys();case 5:n=e.sent,a=new Set(t._urlsToCacheKeys.values()),i=[],s=O(n),e.prev=9,s.s();case 11:if((c=s.n()).done){e.next=19;break}if(o=c.value,a.has(o.url)){e.next=17;break}return e.next=16,r.delete(o);case 16:i.push(o.url);case 17:e.next=11;break;case 19:e.next=24;break;case 21:e.prev=21,e.t0=e.catch(9),s.e(e.t0);case 24:return e.prev=24,s.f(),e.finish(24);case 27:return e.abrupt("return",{deletedURLs:i});case 29:case"end":return e.stop()}}),e,null,[[9,21,24,27]])}))))}},{key:"getURLsToCacheKeys",value:function(){return this._urlsToCacheKeys}},{key:"getCachedURLs",value:function(){return ve(this._urlsToCacheKeys.keys())}},{key:"getCacheKeyForURL",value:function(e){var t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}},{key:"getIntegrityForCacheKey",value:function(e){return this._cacheKeysToIntegrities.get(e)}},{key:"matchPrecache",value:function(){var e=R(k().mark((function e(t){var r,n,a;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t instanceof Request?t.url:t,!(n=this.getCacheKeyForURL(r))){e.next=7;break}return e.next=5,self.caches.open(this.strategy.cacheName);case 5:return a=e.sent,e.abrupt("return",a.match(n));case 7:return e.abrupt("return",void 0);case 8:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"createHandlerBoundToURL",value:function(e){var t=this,r=this.getCacheKeyForURL(e);if(!r)throw new y("non-precached-url",{url:e});return function(n){return n.request=new Request(e),n.params=Object.assign({cacheKey:r},n.params),t.strategy.handle(n)}}}]),e}(),Ee=function(){return _e||(_e=new Re),_e};r(185);var Le,Oe="GET",Ce=function(e){return e&&"object"===typeof e?e:{handle:e}},Pe=function(){function e(t,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Oe;s(this,e),this.handler=Ce(r),this.match=t,this.method=n}return i(e,[{key:"setCatchHandler",value:function(e){this.catchHandler=Ce(e)}}]),e}(),Se=function(e){o(r,e);var t=l(r);function r(e,n,a){s(this,r);return t.call(this,(function(t){var r=t.url,n=e.exec(r.href);if(n&&(r.origin===location.origin||0===n.index))return n.slice(1)}),n,a)}return i(r)}(Pe),je=function(){function e(){s(this,e),this._routes=new Map,this._defaultHandlerMap=new Map}return i(e,[{key:"routes",get:function(){return this._routes}},{key:"addFetchListener",value:function(){var e=this;self.addEventListener("fetch",(function(t){var r=t.request,n=e.handleRequest({request:r,event:t});n&&t.respondWith(n)}))}},{key:"addCacheListener",value:function(){var e=this;self.addEventListener("message",(function(t){if(t.data&&"CACHE_URLS"===t.data.type){var r=t.data.payload;0;var n=Promise.all(r.urlsToCache.map((function(r){"string"===typeof r&&(r=[r]);var n=p(Request,ve(r));return e.handleRequest({request:n,event:t})})));t.waitUntil(n),t.ports&&t.ports[0]&&n.then((function(){return t.ports[0].postMessage(!0)}))}}))}},{key:"handleRequest",value:function(e){var t=this,r=e.request,n=e.event;var a=new URL(r.url,location.href);if(a.protocol.startsWith("http")){var i=a.origin===location.origin,s=this.findMatchingRoute({event:n,request:r,sameOrigin:i,url:a}),c=s.params,o=s.route,u=o&&o.handler;0;var h=r.method;if(!u&&this._defaultHandlerMap.has(h)&&(u=this._defaultHandlerMap.get(h)),u){var f;0;try{f=u.handle({url:a,request:r,event:n,params:c})}catch(p){f=Promise.reject(p)}var l=o&&o.catchHandler;return f instanceof Promise&&(this._catchHandler||l)&&(f=f.catch(function(){var e=R(k().mark((function e(i){return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!l){e.next=11;break}return e.prev=2,e.next=5,l.handle({url:a,request:r,event:n,params:c});case 5:return e.abrupt("return",e.sent);case 8:e.prev=8,e.t0=e.catch(2),e.t0 instanceof Error&&(i=e.t0);case 11:if(!t._catchHandler){e.next=14;break}return e.abrupt("return",t._catchHandler.handle({url:a,request:r,event:n}));case 14:throw i;case 15:case"end":return e.stop()}}),e,null,[[2,8]])})));return function(t){return e.apply(this,arguments)}}())),f}}}},{key:"findMatchingRoute",value:function(e){var t,r=e.url,n=e.sameOrigin,a=e.request,i=e.event,s=O(this._routes.get(a.method)||[]);try{for(s.s();!(t=s.n()).done;){var c=t.value,o=void 0,u=c.match({url:r,sameOrigin:n,request:a,event:i});if(u)return o=u,(Array.isArray(o)&&0===o.length||u.constructor===Object&&0===Object.keys(u).length||"boolean"===typeof u)&&(o=void 0),{route:c,params:o}}}catch(h){s.e(h)}finally{s.f()}return{}}},{key:"setDefaultHandler",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Oe;this._defaultHandlerMap.set(t,Ce(e))}},{key:"setCatchHandler",value:function(e){this._catchHandler=Ce(e)}},{key:"registerRoute",value:function(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}},{key:"unregisterRoute",value:function(e){if(!this._routes.has(e.method))throw new y("unregister-route-but-not-found-with-method",{method:e.method});var t=this._routes.get(e.method).indexOf(e);if(!(t>-1))throw new y("unregister-route-route-not-registered");this._routes.get(e.method).splice(t,1)}}]),e}(),Ne=function(){return Le||((Le=new je).addFetchListener(),Le.addCacheListener()),Le};function Te(e,t,r){var n;if("string"===typeof e){var a=new URL(e,location.href);n=new Pe((function(e){return e.url.href===a.href}),t,r)}else if(e instanceof RegExp)n=new Se(e,t,r);else if("function"===typeof e)n=new Pe(e,t,r);else{if(!(e instanceof Pe))throw new y("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});n=e}return Ne().registerRoute(n),n}function De(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=function(){var r=a[n];t.some((function(e){return e.test(r)}))&&e.searchParams.delete(r)},n=0,a=ve(e.searchParams.keys());n1&&void 0!==arguments[1]?arguments[1]:{},r=t.ignoreURLParametersMatching,n=void 0===r?[/^utm_/,/^fbclid$/]:r,a=t.directoryIndex,i=void 0===a?"index.html":a,s=t.cleanURLs,c=void 0===s||s,o=t.urlManipulation;return k().mark((function t(){var r,a,s,u,h,f,l,p;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(r=new URL(e,location.href)).hash="",t.next=4,r.href;case 4:return a=De(r,n),t.next=7,a.href;case 7:if(!i||!a.pathname.endsWith("/")){t.next=12;break}return(s=new URL(a.href)).pathname+=i,t.next=12,s.href;case 12:if(!c){t.next=17;break}return(u=new URL(a.href)).pathname+=".html",t.next=17,u.href;case 17:if(!o){t.next=36;break}h=o({url:r}),f=O(h),t.prev=20,f.s();case 22:if((l=f.n()).done){t.next=28;break}return p=l.value,t.next=26,p.href;case 26:t.next=22;break;case 28:t.next=33;break;case 30:t.prev=30,t.t0=t.catch(20),f.e(t.t0);case 33:return t.prev=33,f.f(),t.finish(33);case 36:case"end":return t.stop()}}),t,null,[[20,30,33,36]])}))()}(a.url,n));try{for(s.s();!(r=s.n()).done;){var c=r.value,o=i.get(c);if(o)return{cacheKey:o,integrity:e.getIntegrityForCacheKey(o)}}}catch(u){s.e(u)}finally{s.f()}}),e.strategy)}return i(r)}(Pe);var Ue,Ie={cacheWillUpdate:function(){var e=R(k().mark((function e(t){var r;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(200!==(r=t.response).status&&0!==r.status){e.next=3;break}return e.abrupt("return",r);case 3:return e.abrupt("return",null);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},Ae=function(e){o(r,e);var t=l(r);function r(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return s(this,r),(e=t.call(this,n)).plugins.some((function(e){return"cacheWillUpdate"in e}))||e.plugins.unshift(Ie),e}return i(r,[{key:"_handle",value:function(){var e=R(k().mark((function e(t,r){var n,a,i;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return[],n=r.fetchAndCachePut(t).catch((function(){})),r.waitUntil(n),e.next=6,r.cacheMatch(t);case 6:if(!(a=e.sent)){e.next=11;break}0,e.next=21;break;case 11:return e.prev=12,e.next=15,n;case 15:a=e.sent,e.next=21;break;case 18:e.prev=18,e.t0=e.catch(12),e.t0 instanceof Error&&(i=e.t0);case 21:if(a){e.next=24;break}throw new y("no-response",{url:t.url,error:i});case 24:return e.abrupt("return",a);case 25:case"end":return e.stop()}}),e,this,[[12,18]])})));return function(t,r){return e.apply(this,arguments)}}()}]),r}(we);self.addEventListener("activate",(function(){return self.clients.claim()})),function(e){Ee().precache(e)}([{'revision':'6a3d636cf3818e74d310803ed4fda718','url':'/index.html'},{'revision':null,'url':'/static/css/main.e6c13ad2.css'},{'revision':null,'url':'/static/js/787.c4e7f8f9.chunk.js'},{'revision':null,'url':'/static/js/main.06a42d0d.js'},{'revision':'af9b5d812304bcb0bc00d3b48a6180aa','url':'/static/media/10B.a1ff70bedc43e5e935fa07060d364163.svg'},{'revision':'b5bad667be81020671f3846dea554ece','url':'/static/media/11B.2aed50f71a99f36d36cdce228b577bf5.svg'},{'revision':'b86408bfb742fc1f15298ce212ea63e8','url':'/static/media/12B.88e9c7ac276aed03ca966dc7d20af0c6.svg'},{'revision':'0a112b55f44dab1683ddd8878516ffcf','url':'/static/media/13B.79a0cecf536e77a4d6f824f9fcf2f434.svg'},{'revision':'ce53be682ef5ca28d1795a8ff64dcbb8','url':'/static/media/14B.c0be400f2fd7ba90ecd6036dce688dba.svg'},{'revision':'5c1e1e9c9505a57a9087b86220a07e25','url':'/static/media/14plus.c684ea360f03470b6108894bb330ea45.svg'},{'revision':'10a5812fcf996ac39232c0cb59e7af23','url':'/static/media/15B.f9155827b88689801f738c904e36dfa7.svg'},{'revision':'27df17858c63af6f5fbff0f99eb9fa8c','url':'/static/media/15plus.4599b3f8a2d69d997009fc0438af6b73.svg'},{'revision':'52d73f585de4e3600a689291d46ce869','url':'/static/media/2B.d8924a01fcaf0de5e787495766754115.svg'},{'revision':'1679ce97a6b05e3985369bf841a0d95a','url':'/static/media/3B.dab68bf6594639e1a8ee1d61269dd2d5.svg'},{'revision':'fec8949bd989de4ba832994e68871d67','url':'/static/media/4B.7d11eb5923c95a35c4c619a8770499f0.svg'},{'revision':'e01f76331969c5ecc8671d6c5b725aa7','url':'/static/media/5B.e28ce9271450a69b1d64040b616dcfb2.svg'},{'revision':'fe88d89a48afe7605b9afdc6527d6e8d','url':'/static/media/6B.89c6a5bdb6616bbb10c0ba8fde91c33c.svg'},{'revision':'ad5cf335a7751a61dd60190c5957fe91','url':'/static/media/7B.b79dd69a40dfdde9337e0f917061db6f.svg'},{'revision':'e482ac82126ac436dbc2ebbf63f1beb3','url':'/static/media/8B.cca3b3a13d9bf00a7041b94dbe3f370c.svg'},{'revision':'4407269410ef909efc03688bc84c8f0d','url':'/static/media/9B.53c4cd63eee5b0e5e9c31ac22db437e5.svg'}]),function(e){var t=Ee();Te(new qe(t,e))}(Ue);var Ke,Me=/[^/?]+\\.[^/]+$/;Te((function(e){var t=e.request,r=e.url;return"navigate"===t.mode&&(!r.pathname.startsWith("/_")&&!r.pathname.match(Me))}),(Ke="".concat("","/index.html"),Ee().createHandlerBoundToURL(Ke))),Te((function(e){var t=e.url;return t.origin===self.location.origin&&t.pathname.endsWith(".png")}),new Ae({cacheName:"images",plugins:[new pe({maxEntries:50})]})),self.addEventListener("message",(function(e){e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}))}()}(); +!function(){"use strict";var e={923:function(){try{self["workbox:core:6.5.3"]&&_()}catch(e){}},190:function(){try{self["workbox:expiration:6.5.3"]&&_()}catch(e){}},437:function(){try{self["workbox:precaching:6.5.3"]&&_()}catch(e){}},185:function(){try{self["workbox:routing:6.5.3"]&&_()}catch(e){}},833:function(){try{self["workbox:strategies:6.5.3"]&&_()}catch(e){}}},t={};function r(n){var a=t[n];if(void 0!==a)return a.exports;var i=t[n]={exports:{}};return e[n](i,i.exports,r),i.exports}!function(){r(923);var e=null;function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t(e)}function n(e){var r=function(e,r){if("object"!==t(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,r||"default");if("object"!==t(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)}(e,"string");return"symbol"===t(r)?r:String(r)}function a(e,t){for(var r=0;r1?r-1:0),a=1;a0&&(t+=" :: ".concat(JSON.stringify(n))),t},y=function(e){o(r,e);var t=l(r);function r(e,n){var a;s(this,r);var i=d(e,n);return(a=t.call(this,i)).name=e,a.details=n,a}return i(r)}(v(Error)),g=new Set;var b,m={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!==typeof registration?registration.scope:""},x=function(e){return[m.prefix,e,m.suffix].filter((function(e){return e&&e.length>0})).join("-")},w={updateDetails:function(e){!function(e){for(var t=0,r=Object.keys(m);t=0;--a){var i=this.tryEntries[a],s=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),o=n.call(i,"finallyLoc");if(c&&o){if(this.prev=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),L(r),l}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;L(r)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:C(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),l}},e}function _(e,t,r,n,a,i,s){try{var c=e[i](s),o=c.value}catch(u){return void r(u)}c.done?t(o):Promise.resolve(o).then(n,a)}function R(e){return function(){var t=this,r=arguments;return new Promise((function(n,a){var i=e.apply(t,r);function s(e){_(i,n,a,s,c,"next",e)}function c(e){_(i,n,a,s,c,"throw",e)}s(void 0)}))}}function E(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return s=e.done,e},e:function(e){c=!0,i=e},f:function(){try{s||null==r.return||r.return()}finally{if(c)throw i}}}}function C(e,t){var r,n=new URL(e),a=O(t);try{for(a.s();!(r=a.n()).done;){var i=r.value;n.searchParams.delete(i)}}catch(s){a.e(s)}finally{a.f()}return n.href}function P(e,t,r,n){return S.apply(this,arguments)}function S(){return(S=R(k().mark((function e(t,r,n,a){var i,s,c,o,u,h,f;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=C(r.url,n),r.url!==i){e.next=3;break}return e.abrupt("return",t.match(r,a));case 3:return s=Object.assign(Object.assign({},a),{ignoreSearch:!0}),e.next=6,t.keys(r,s);case 6:c=e.sent,o=O(c),e.prev=8,o.s();case 10:if((u=o.n()).done){e.next=17;break}if(h=u.value,f=C(h.url,n),i!==f){e.next=15;break}return e.abrupt("return",t.match(h,a));case 15:e.next=10;break;case 17:e.next=22;break;case 19:e.prev=19,e.t0=e.catch(8),o.e(e.t0);case 22:return e.prev=22,o.f(),e.finish(22);case 25:return e.abrupt("return");case 26:case"end":return e.stop()}}),e,null,[[8,19,22,25]])})))).apply(this,arguments)}function j(){if(void 0===b){var e=new Response("");if("body"in e)try{new Response(e.body),b=!0}catch(t){b=!1}b=!1}return b}function N(e){e.then((function(){}))}var T=i((function e(){var t=this;s(this,e),this.promise=new Promise((function(e,r){t.resolve=e,t.reject=r}))}));function D(){return q.apply(this,arguments)}function q(){return(q=R(k().mark((function e(){var t,r,n;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:0,t=O(g),e.prev=2,t.s();case 4:if((r=t.n()).done){e.next=11;break}return n=r.value,e.next=8,n();case 8:0;case 9:e.next=4;break;case 11:e.next=16;break;case 13:e.prev=13,e.t0=e.catch(2),t.e(e.t0);case 16:return e.prev=16,t.f(),e.finish(16);case 19:0;case 20:case"end":return e.stop()}}),e,null,[[2,13,16,19]])})))).apply(this,arguments)}var U=function(e){return new URL(String(e),location.href).href.replace(new RegExp("^".concat(location.origin)),"")};function I(e){return new Promise((function(t){return setTimeout(t,e)}))}function A(e,t){var r=t();return e.waitUntil(r),r}function K(e,t){return M.apply(this,arguments)}function M(){return(M=R(k().mark((function e(t,r){var n,a,i,s,c,o;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=null,t.url&&(a=new URL(t.url),n=a.origin),n===self.location.origin){e.next=4;break}throw new y("cross-origin-copy-response",{origin:n});case 4:if(i=t.clone(),s={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},c=r?r(s):s,!j()){e.next=11;break}e.t0=i.body,e.next=14;break;case 11:return e.next=13,i.blob();case 13:e.t0=e.sent;case 14:return o=e.t0,e.abrupt("return",new Response(o,c));case 16:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function W(e,t,r){return(t=n(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function B(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function F(e){for(var t=1;t1?r-1:0),a=1;a2&&void 0!==arguments[2]?arguments[2]:{},n=r.blocked,a=r.upgrade,i=r.blocking,s=r.terminated,c=indexedDB.open(e,t),o=te(c);return a&&c.addEventListener("upgradeneeded",(function(e){a(te(c.result),e.oldVersion,e.newVersion,te(c.transaction))})),n&&c.addEventListener("blocked",(function(){return n()})),o.then((function(e){s&&e.addEventListener("close",(function(){return s()})),i&&e.addEventListener("versionchange",(function(){return i()}))})).catch((function(){})),o}var ae=["get","getKey","getAll","getAllKeys","count"],ie=["put","add","delete","clear"],se=new Map;function ce(e,t){if(e instanceof IDBDatabase&&!(t in e)&&"string"===typeof t){if(se.get(t))return se.get(t);var r=t.replace(/FromIndex$/,""),n=t!==r,a=ie.includes(r);if(r in(n?IDBIndex:IDBObjectStore).prototype&&(a||ae.includes(r))){var i=function(){var e=R(k().mark((function e(t){var i,s,c,o,u,h,f=arguments;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(s=this.transaction(t,a?"readwrite":"readonly"),c=s.store,o=f.length,u=new Array(o>1?o-1:0),h=1;h1&&void 0!==arguments[1]?arguments[1]:{}).blocked,r=indexedDB.deleteDatabase(e);t&&r.addEventListener("blocked",(function(){return t()})),te(r).then((function(){}))}(this._cacheName)}},{key:"setTimestamp",value:function(){var e=R(k().mark((function e(t,r){var n,a,i;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=ue(t),n={url:t,timestamp:r,cacheName:this._cacheName,id:this._getId(t)},e.next=4,this.getDb();case 4:return a=e.sent,i=a.transaction(oe,"readwrite",{durability:"relaxed"}),e.next=8,i.store.put(n);case 8:return e.next=10,i.done;case 10:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}()},{key:"getTimestamp",value:function(){var e=R(k().mark((function e(t){var r,n;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getDb();case 2:return r=e.sent,e.next=5,r.get(oe,this._getId(t));case 5:return n=e.sent,e.abrupt("return",null===n||void 0===n?void 0:n.timestamp);case 7:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"expireEntries",value:function(){var e=R(k().mark((function e(t,r){var n,a,i,s,c,o,u,h,f;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getDb();case 2:return n=e.sent,e.next=5,n.transaction(oe).store.index("timestamp").openCursor(null,"prev");case 5:a=e.sent,i=[],s=0;case 8:if(!a){e.next=16;break}return(c=a.value).cacheName===this._cacheName&&(t&&c.timestamp=r?i.push(a.value):s++),e.next=13,a.continue();case 13:a=e.sent,e.next=8;break;case 16:o=[],u=0,h=i;case 18:if(!(u1&&void 0!==arguments[1]?arguments[1]:{};s(this,e),this._isRunning=!1,this._rerunRequested=!1,this._maxEntries=r.maxEntries,this._maxAgeSeconds=r.maxAgeSeconds,this._matchOptions=r.matchOptions,this._cacheName=t,this._timestampModel=new he(t)}return i(e,[{key:"expireEntries",value:function(){var e=R(k().mark((function e(){var t,r,n,a,i,s;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._isRunning){e.next=3;break}return this._rerunRequested=!0,e.abrupt("return");case 3:return this._isRunning=!0,t=this._maxAgeSeconds?Date.now()-1e3*this._maxAgeSeconds:0,e.next=7,this._timestampModel.expireEntries(t,this._maxEntries);case 7:return r=e.sent,e.next=10,self.caches.open(this._cacheName);case 10:n=e.sent,a=O(r),e.prev=12,a.s();case 14:if((i=a.n()).done){e.next=20;break}return s=i.value,e.next=18,n.delete(s,this._matchOptions);case 18:e.next=14;break;case 20:e.next=25;break;case 22:e.prev=22,e.t0=e.catch(12),a.e(e.t0);case 25:return e.prev=25,a.f(),e.finish(25);case 28:0,this._isRunning=!1,this._rerunRequested&&(this._rerunRequested=!1,N(this.expireEntries()));case 31:case"end":return e.stop()}}),e,this,[[12,22,25,28]])})));return function(){return e.apply(this,arguments)}}()},{key:"updateTimestamp",value:function(){var e=R(k().mark((function e(t){return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=3,this._timestampModel.setTimestamp(t,Date.now());case 3:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"isURLExpired",value:function(){var e=R(k().mark((function e(t){var r,n;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._maxAgeSeconds){e.next=6;break}e.next=3;break;case 3:return e.abrupt("return",!1);case 6:return e.next=8,this._timestampModel.getTimestamp(t);case 8:return r=e.sent,n=Date.now()-1e3*this._maxAgeSeconds,e.abrupt("return",void 0===r||r0&&void 0!==arguments[0]?arguments[0]:{};s(this,e),this.cachedResponseWillBeUsed=function(){var e=R(k().mark((function e(r){var n,a,i,s,c,o,u;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=r.event,a=r.request,i=r.cacheName,s=r.cachedResponse){e.next=3;break}return e.abrupt("return",null);case 3:if(c=t._isResponseDateFresh(s),N((o=t._getCacheExpiration(i)).expireEntries()),u=o.updateTimestamp(a.url),n)try{n.waitUntil(u)}catch(h){0}return e.abrupt("return",c?s:null);case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),this.cacheDidUpdate=function(){var e=R(k().mark((function e(r){var n,a,i;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=r.cacheName,a=r.request,i=t._getCacheExpiration(n),e.next=5,i.updateTimestamp(a.url);case 5:return e.next=7,i.expireEntries();case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),this._config=r,this._maxAgeSeconds=r.maxAgeSeconds,this._cacheExpirations=new Map,r.purgeOnQuotaError&&function(e){g.add(e)}((function(){return t.deleteCacheAndMetadata()}))}return i(e,[{key:"_getCacheExpiration",value:function(e){if(e===w.getRuntimeName())throw new y("expire-custom-caches-only");var t=this._cacheExpirations.get(e);return t||(t=new fe(e,this._config),this._cacheExpirations.set(e,t)),t}},{key:"_isResponseDateFresh",value:function(e){if(!this._maxAgeSeconds)return!0;var t=this._getDateHeaderTimestamp(e);return null===t||t>=Date.now()-1e3*this._maxAgeSeconds}},{key:"_getDateHeaderTimestamp",value:function(e){if(!e.headers.has("date"))return null;var t=e.headers.get("date"),r=new Date(t).getTime();return isNaN(r)?null:r}},{key:"deleteCacheAndMetadata",value:function(){var e=R(k().mark((function e(){var t,r,n,a,i;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=O(this._cacheExpirations),e.prev=1,t.s();case 3:if((r=t.n()).done){e.next=11;break}return n=le(r.value,2),a=n[0],i=n[1],e.next=7,self.caches.delete(a);case 7:return e.next=9,i.delete();case 9:e.next=3;break;case 11:e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),t.e(e.t0);case 16:return e.prev=16,t.f(),e.finish(16);case 19:this._cacheExpirations=new Map;case 20:case"end":return e.stop()}}),e,this,[[1,13,16,19]])})));return function(){return e.apply(this,arguments)}}()}]),e}();function ve(e){return function(e){if(Array.isArray(e))return E(e)}(e)||function(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||L(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}r(437);var de="__WB_REVISION__";function ye(e){if(!e)throw new y("add-to-cache-list-unexpected-type",{entry:e});if("string"===typeof e){var t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}var r=e.revision,n=e.url;if(!n)throw new y("add-to-cache-list-unexpected-type",{entry:e});if(!r){var a=new URL(n,location.href);return{cacheKey:a.href,url:a.href}}var i=new URL(n,location.href),s=new URL(n,location.href);return i.searchParams.set(de,r),{cacheKey:i.href,url:s.href}}var ge=i((function e(){var t=this;s(this,e),this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=function(){var e=R(k().mark((function e(t){var r,n;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=t.request,(n=t.state)&&(n.originalRequest=r);case 2:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),this.cachedResponseWillBeUsed=function(){var e=R(k().mark((function e(r){var n,a,i,s;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=r.event,a=r.state,i=r.cachedResponse,"install"===n.type&&a&&a.originalRequest&&a.originalRequest instanceof Request&&(s=a.originalRequest.url,i?t.notUpdatedURLs.push(s):t.updatedURLs.push(s)),e.abrupt("return",i);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()})),be=i((function e(t){var r=this,n=t.precacheController;s(this,e),this.cacheKeyWillBeUsed=function(){var e=R(k().mark((function e(t){var n,a,i;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.request,a=t.params,i=(null===a||void 0===a?void 0:a.cacheKey)||r._precacheController.getCacheKeyForURL(n.url),e.abrupt("return",i?new Request(i,{headers:n.headers}):n);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),this._precacheController=n}));r(833);function me(e){return"string"===typeof e?new Request(e):e}var xe=function(){function t(e,r){s(this,t),this._cacheKeys={},Object.assign(this,r),this.event=r.event,this._strategy=e,this._handlerDeferred=new T,this._extendLifetimePromises=[],this._plugins=ve(e.plugins),this._pluginStateMap=new Map;var n,a=O(this._plugins);try{for(a.s();!(n=a.n()).done;){var i=n.value;this._pluginStateMap.set(i,{})}}catch(c){a.e(c)}finally{a.f()}this.event.waitUntil(this._handlerDeferred.promise)}return i(t,[{key:"fetch",value:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(){var e=R(k().mark((function e(t){var r,n,a,i,s,c,o,u,h,f,l,p;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=this.event,!("navigate"===(n=me(t)).mode&&r instanceof FetchEvent&&r.preloadResponse)){e.next=9;break}return e.next=5,r.preloadResponse;case 5:if(!(a=e.sent)){e.next=9;break}return e.abrupt("return",a);case 9:i=this.hasCallback("fetchDidFail")?n.clone():null,e.prev=10,s=O(this.iterateCallbacks("requestWillFetch")),e.prev=12,s.s();case 14:if((c=s.n()).done){e.next=21;break}return o=c.value,e.next=18,o({request:n.clone(),event:r});case 18:n=e.sent;case 19:e.next=14;break;case 21:e.next=26;break;case 23:e.prev=23,e.t0=e.catch(12),s.e(e.t0);case 26:return e.prev=26,s.f(),e.finish(26);case 29:e.next=35;break;case 31:if(e.prev=31,e.t1=e.catch(10),!(e.t1 instanceof Error)){e.next=35;break}throw new y("plugin-error-request-will-fetch",{thrownErrorMessage:e.t1.message});case 35:return u=n.clone(),e.prev=36,e.next=39,fetch(n,"navigate"===n.mode?void 0:this._strategy.fetchOptions);case 39:h=e.sent,f=O(this.iterateCallbacks("fetchDidSucceed")),e.prev=42,f.s();case 44:if((l=f.n()).done){e.next=51;break}return p=l.value,e.next=48,p({event:r,request:u,response:h});case 48:h=e.sent;case 49:e.next=44;break;case 51:e.next=56;break;case 53:e.prev=53,e.t2=e.catch(42),f.e(e.t2);case 56:return e.prev=56,f.f(),e.finish(56);case 59:return e.abrupt("return",h);case 62:if(e.prev=62,e.t3=e.catch(36),!i){e.next=68;break}return e.next=68,this.runCallbacks("fetchDidFail",{error:e.t3,event:r,originalRequest:i.clone(),request:u.clone()});case 68:throw e.t3;case 69:case"end":return e.stop()}}),e,this,[[10,31],[12,23,26,29],[36,62],[42,53,56,59]])})));return function(t){return e.apply(this,arguments)}}())},{key:"fetchAndCachePut",value:function(){var e=R(k().mark((function e(t){var r,n;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.fetch(t);case 2:return r=e.sent,n=r.clone(),this.waitUntil(this.cachePut(t,n)),e.abrupt("return",r);case 6:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"cacheMatch",value:function(){var e=R(k().mark((function e(t){var r,n,a,i,s,c,o,u,h,f;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=me(t),a=this._strategy,i=a.cacheName,s=a.matchOptions,e.next=4,this.getCacheKey(r,"read");case 4:return c=e.sent,o=Object.assign(Object.assign({},s),{cacheName:i}),e.next=8,caches.match(c,o);case 8:n=e.sent,u=O(this.iterateCallbacks("cachedResponseWillBeUsed")),e.prev=11,u.s();case 13:if((h=u.n()).done){e.next=23;break}return f=h.value,e.next=17,f({cacheName:i,matchOptions:s,cachedResponse:n,request:c,event:this.event});case 17:if(e.t0=e.sent,e.t0){e.next=20;break}e.t0=void 0;case 20:n=e.t0;case 21:e.next=13;break;case 23:e.next=28;break;case 25:e.prev=25,e.t1=e.catch(11),u.e(e.t1);case 28:return e.prev=28,u.f(),e.finish(28);case 31:return e.abrupt("return",n);case 32:case"end":return e.stop()}}),e,this,[[11,25,28,31]])})));return function(t){return e.apply(this,arguments)}}()},{key:"cachePut",value:function(){var t=R(k().mark((function t(r,n){var a,i,s,c,o,u,h,f,l,p,v,d,g;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=me(r),t.next=3,I(0);case 3:return t.next=5,this.getCacheKey(a,"write");case 5:i=t.sent,t.next=11;break;case 9:(s=n.headers.get("Vary"))&&e.debug("The response for ".concat(U(i.url)," ")+"has a 'Vary: ".concat(s,"' header. ")+"Consider setting the {ignoreVary: true} option on your strategy to ensure cache matching and deletion works as expected.");case 11:if(n){t.next=14;break}throw new y("cache-put-with-no-response",{url:U(i.url)});case 14:return t.next=16,this._ensureResponseSafeToCache(n);case 16:if(c=t.sent){t.next=20;break}return t.abrupt("return",!1);case 20:return o=this._strategy,u=o.cacheName,h=o.matchOptions,t.next=23,self.caches.open(u);case 23:if(f=t.sent,!(l=this.hasCallback("cacheDidUpdate"))){t.next=31;break}return t.next=28,P(f,i.clone(),["__WB_REVISION__"],h);case 28:t.t0=t.sent,t.next=32;break;case 31:t.t0=null;case 32:return p=t.t0,t.prev=34,t.next=37,f.put(i,l?c.clone():c);case 37:t.next=46;break;case 39:if(t.prev=39,t.t1=t.catch(34),!(t.t1 instanceof Error)){t.next=46;break}if("QuotaExceededError"!==t.t1.name){t.next=45;break}return t.next=45,D();case 45:throw t.t1;case 46:v=O(this.iterateCallbacks("cacheDidUpdate")),t.prev=47,v.s();case 49:if((d=v.n()).done){t.next=55;break}return g=d.value,t.next=53,g({cacheName:u,oldResponse:p,newResponse:c.clone(),request:i,event:this.event});case 53:t.next=49;break;case 55:t.next=60;break;case 57:t.prev=57,t.t2=t.catch(47),v.e(t.t2);case 60:return t.prev=60,v.f(),t.finish(60);case 63:return t.abrupt("return",!0);case 64:case"end":return t.stop()}}),t,this,[[34,39],[47,57,60,63]])})));return function(e,r){return t.apply(this,arguments)}}()},{key:"getCacheKey",value:function(){var e=R(k().mark((function e(t,r){var n,a,i,s,c;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n="".concat(t.url," | ").concat(r),this._cacheKeys[n]){e.next=24;break}a=t,i=O(this.iterateCallbacks("cacheKeyWillBeUsed")),e.prev=4,i.s();case 6:if((s=i.n()).done){e.next=15;break}return c=s.value,e.t0=me,e.next=11,c({mode:r,request:a,event:this.event,params:this.params});case 11:e.t1=e.sent,a=(0,e.t0)(e.t1);case 13:e.next=6;break;case 15:e.next=20;break;case 17:e.prev=17,e.t2=e.catch(4),i.e(e.t2);case 20:return e.prev=20,i.f(),e.finish(20);case 23:this._cacheKeys[n]=a;case 24:return e.abrupt("return",this._cacheKeys[n]);case 25:case"end":return e.stop()}}),e,this,[[4,17,20,23]])})));return function(t,r){return e.apply(this,arguments)}}()},{key:"hasCallback",value:function(e){var t,r=O(this._strategy.plugins);try{for(r.s();!(t=r.n()).done;){if(e in t.value)return!0}}catch(n){r.e(n)}finally{r.f()}return!1}},{key:"runCallbacks",value:function(){var e=R(k().mark((function e(t,r){var n,a,i;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=O(this.iterateCallbacks(t)),e.prev=1,n.s();case 3:if((a=n.n()).done){e.next=9;break}return i=a.value,e.next=7,i(r);case 7:e.next=3;break;case 9:e.next=14;break;case 11:e.prev=11,e.t0=e.catch(1),n.e(e.t0);case 14:return e.prev=14,n.f(),e.finish(14);case 17:case"end":return e.stop()}}),e,this,[[1,11,14,17]])})));return function(t,r){return e.apply(this,arguments)}}()},{key:"iterateCallbacks",value:k().mark((function e(t){var r,n,a,i=this;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=O(this._strategy.plugins),e.prev=1,a=k().mark((function e(){var r,a,s;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("function"!==typeof(r=n.value)[t]){e.next=6;break}return a=i._pluginStateMap.get(r),s=function(e){var n=Object.assign(Object.assign({},e),{state:a});return r[t](n)},e.next=6,s;case 6:case"end":return e.stop()}}),e)})),r.s();case 4:if((n=r.n()).done){e.next=8;break}return e.delegateYield(a(),"t0",6);case 6:e.next=4;break;case 8:e.next=13;break;case 10:e.prev=10,e.t1=e.catch(1),r.e(e.t1);case 13:return e.prev=13,r.f(),e.finish(13);case 16:case"end":return e.stop()}}),e,this,[[1,10,13,16]])}))},{key:"waitUntil",value:function(e){return this._extendLifetimePromises.push(e),e}},{key:"doneWaiting",value:function(){var e=R(k().mark((function e(){var t;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(t=this._extendLifetimePromises.shift())){e.next=5;break}return e.next=3,t;case 3:e.next=0;break;case 5:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"destroy",value:function(){this._handlerDeferred.resolve(null)}},{key:"_ensureResponseSafeToCache",value:function(){var e=R(k().mark((function e(t){var r,n,a,i,s;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=t,n=!1,a=O(this.iterateCallbacks("cacheWillUpdate")),e.prev=3,a.s();case 5:if((i=a.n()).done){e.next=18;break}return s=i.value,e.next=9,s({request:this.request,response:r,event:this.event});case 9:if(e.t0=e.sent,e.t0){e.next=12;break}e.t0=void 0;case 12:if(r=e.t0,n=!0,r){e.next=16;break}return e.abrupt("break",18);case 16:e.next=5;break;case 18:e.next=23;break;case 20:e.prev=20,e.t1=e.catch(3),a.e(e.t1);case 23:return e.prev=23,a.f(),e.finish(23);case 26:return n||r&&200!==r.status&&(r=void 0),e.abrupt("return",r);case 28:case"end":return e.stop()}}),e,this,[[3,20,23,26]])})));return function(t){return e.apply(this,arguments)}}()}]),t}(),we=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};s(this,e),this.cacheName=w.getRuntimeName(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions}return i(e,[{key:"handle",value:function(e){return le(this.handleAll(e),1)[0]}},{key:"handleAll",value:function(e){e instanceof FetchEvent&&(e={event:e,request:e.request});var t=e.event,r="string"===typeof e.request?new Request(e.request):e.request,n="params"in e?e.params:void 0,a=new xe(this,{event:t,request:r,params:n}),i=this._getResponse(a,r,t);return[i,this._awaitComplete(i,a,r,t)]}},{key:"_getResponse",value:function(){var e=R(k().mark((function e(t,r,n){var a,i,s,c,o,u,h;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.runCallbacks("handlerWillStart",{event:n,request:r});case 2:return a=void 0,e.prev=3,e.next=6,this._handle(r,t);case 6:if((a=e.sent)&&"error"!==a.type){e.next=9;break}throw new y("no-response",{url:r.url});case 9:e.next=39;break;case 11:if(e.prev=11,e.t0=e.catch(3),!(e.t0 instanceof Error)){e.next=34;break}i=O(t.iterateCallbacks("handlerDidError")),e.prev=15,i.s();case 17:if((s=i.n()).done){e.next=26;break}return c=s.value,e.next=21,c({error:e.t0,event:n,request:r});case 21:if(!(a=e.sent)){e.next=24;break}return e.abrupt("break",26);case 24:e.next=17;break;case 26:e.next=31;break;case 28:e.prev=28,e.t1=e.catch(15),i.e(e.t1);case 31:return e.prev=31,i.f(),e.finish(31);case 34:if(a){e.next=38;break}throw e.t0;case 38:0;case 39:o=O(t.iterateCallbacks("handlerWillRespond")),e.prev=40,o.s();case 42:if((u=o.n()).done){e.next=49;break}return h=u.value,e.next=46,h({event:n,request:r,response:a});case 46:a=e.sent;case 47:e.next=42;break;case 49:e.next=54;break;case 51:e.prev=51,e.t2=e.catch(40),o.e(e.t2);case 54:return e.prev=54,o.f(),e.finish(54);case 57:return e.abrupt("return",a);case 58:case"end":return e.stop()}}),e,this,[[3,11],[15,28,31,34],[40,51,54,57]])})));return function(t,r,n){return e.apply(this,arguments)}}()},{key:"_awaitComplete",value:function(){var e=R(k().mark((function e(t,r,n,a){var i,s;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,t;case 3:i=e.sent,e.next=8;break;case 6:e.prev=6,e.t0=e.catch(0);case 8:return e.prev=8,e.next=11,r.runCallbacks("handlerDidRespond",{event:a,request:n,response:i});case 11:return e.next=13,r.doneWaiting();case 13:e.next=18;break;case 15:e.prev=15,e.t1=e.catch(8),e.t1 instanceof Error&&(s=e.t1);case 18:return e.next=20,r.runCallbacks("handlerDidComplete",{event:a,request:n,response:i,error:s});case 20:if(r.destroy(),!s){e.next=23;break}throw s;case 23:case"end":return e.stop()}}),e,null,[[0,6],[8,15]])})));return function(t,r,n,a){return e.apply(this,arguments)}}()}]),e}(),ke=function(t){o(n,t);var r=l(n);function n(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return s(this,n),t.cacheName=w.getPrecacheName(t.cacheName),(e=r.call(this,t))._fallbackToNetwork=!1!==t.fallbackToNetwork,e.plugins.push(n.copyRedirectedCacheableResponsesPlugin),e}return i(n,[{key:"_handle",value:function(){var e=R(k().mark((function e(t,r){var n;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,r.cacheMatch(t);case 2:if(!(n=e.sent)){e.next=5;break}return e.abrupt("return",n);case 5:if(!r.event||"install"!==r.event.type){e.next=9;break}return e.next=8,this._handleInstall(t,r);case 8:case 11:return e.abrupt("return",e.sent);case 9:return e.next=11,this._handleFetch(t,r);case 12:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}()},{key:"_handleFetch",value:function(){var t=R(k().mark((function t(r,n){var a,i,s,c,o,u;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=n.params||{},!this._fallbackToNetwork){t.next=17;break}return s=i.integrity,c=r.integrity,o=!c||c===s,t.next=8,n.fetch(new Request(r,{integrity:"no-cors"!==r.mode?c||s:void 0}));case 8:if(a=t.sent,!s||!o||"no-cors"===r.mode){t.next=15;break}return this._useDefaultCacheabilityPluginIfNeeded(),t.next=13,n.cachePut(r,a.clone());case 13:t.sent;case 15:t.next=18;break;case 17:throw new y("missing-precache-entry",{cacheName:this.cacheName,url:r.url});case 18:t.next=34;break;case 23:t.t0=t.sent;case 24:u=t.t0,e.groupCollapsed("Precaching is responding to: "+U(r.url)),e.log("Serving the precached url: ".concat(U(u instanceof Request?u.url:u))),e.groupCollapsed("View request details here."),e.log(r),e.groupEnd(),e.groupCollapsed("View response details here."),e.log(a),e.groupEnd(),e.groupEnd();case 34:return t.abrupt("return",a);case 35:case"end":return t.stop()}}),t,this)})));return function(e,r){return t.apply(this,arguments)}}()},{key:"_handleInstall",value:function(){var e=R(k().mark((function e(t,r){var n;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this._useDefaultCacheabilityPluginIfNeeded(),e.next=3,r.fetch(t);case 3:return n=e.sent,e.next=6,r.cachePut(t,n.clone());case 6:if(e.sent){e.next=9;break}throw new y("bad-precaching-response",{url:t.url,status:n.status});case 9:return e.abrupt("return",n);case 10:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}()},{key:"_useDefaultCacheabilityPluginIfNeeded",value:function(){var e,t=null,r=0,a=O(this.plugins.entries());try{for(a.s();!(e=a.n()).done;){var i=le(e.value,2),s=i[0],c=i[1];c!==n.copyRedirectedCacheableResponsesPlugin&&(c===n.defaultPrecacheCacheabilityPlugin&&(t=s),c.cacheWillUpdate&&r++)}}catch(o){a.e(o)}finally{a.f()}0===r?this.plugins.push(n.defaultPrecacheCacheabilityPlugin):r>1&&null!==t&&this.plugins.splice(t,1)}}]),n}(we);ke.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:function(e){return R(k().mark((function t(){var r;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if((r=e.response)&&!(r.status>=400)){t.next=3;break}return t.abrupt("return",null);case 3:return t.abrupt("return",r);case 4:case"end":return t.stop()}}),t)})))()}},ke.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:function(e){return R(k().mark((function t(){var r;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!(r=e.response).redirected){t.next=7;break}return t.next=4,K(r);case 4:t.t0=t.sent,t.next=8;break;case 7:t.t0=r;case 8:return t.abrupt("return",t.t0);case 9:case"end":return t.stop()}}),t)})))()}};var _e,Re=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=t.cacheName,n=t.plugins,a=void 0===n?[]:n,i=t.fallbackToNetwork,c=void 0===i||i;s(this,e),this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new ke({cacheName:w.getPrecacheName(r),plugins:[].concat(ve(a),[new be({precacheController:this})]),fallbackToNetwork:c}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}return i(e,[{key:"strategy",get:function(){return this._strategy}},{key:"precache",value:function(e){this.addToCacheList(e),this._installAndActiveListenersAdded||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this._installAndActiveListenersAdded=!0)}},{key:"addToCacheList",value:function(e){var t,r=[],n=O(e);try{for(n.s();!(t=n.n()).done;){var a=t.value;"string"===typeof a?r.push(a):a&&void 0===a.revision&&r.push(a.url);var i=ye(a),s=i.cacheKey,c=i.url,o="string"!==typeof a&&a.revision?"reload":"default";if(this._urlsToCacheKeys.has(c)&&this._urlsToCacheKeys.get(c)!==s)throw new y("add-to-cache-list-conflicting-entries",{firstEntry:this._urlsToCacheKeys.get(c),secondEntry:s});if("string"!==typeof a&&a.integrity){if(this._cacheKeysToIntegrities.has(s)&&this._cacheKeysToIntegrities.get(s)!==a.integrity)throw new y("add-to-cache-list-conflicting-integrities",{url:c});this._cacheKeysToIntegrities.set(s,a.integrity)}if(this._urlsToCacheKeys.set(c,s),this._urlsToCacheModes.set(c,o),r.length>0){var u="Workbox is precaching URLs without revision "+"info: ".concat(r.join(", "),"\nThis is generally NOT safe. ")+"Learn more at https://bit.ly/wb-precache";console.warn(u)}}}catch(h){n.e(h)}finally{n.f()}}},{key:"install",value:function(e){var t=this;return A(e,R(k().mark((function r(){var n,a,i,s,c,o,u,h,f,l,p;return k().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:n=new ge,t.strategy.plugins.push(n),a=O(t._urlsToCacheKeys),r.prev=3,a.s();case 5:if((i=a.n()).done){r.next=14;break}return s=le(i.value,2),c=s[0],o=s[1],u=t._cacheKeysToIntegrities.get(o),h=t._urlsToCacheModes.get(c),f=new Request(c,{integrity:u,cache:h,credentials:"same-origin"}),r.next=12,Promise.all(t.strategy.handleAll({params:{cacheKey:o},request:f,event:e}));case 12:r.next=5;break;case 14:r.next=19;break;case 16:r.prev=16,r.t0=r.catch(3),a.e(r.t0);case 19:return r.prev=19,a.f(),r.finish(19);case 22:return l=n.updatedURLs,p=n.notUpdatedURLs,r.abrupt("return",{updatedURLs:l,notUpdatedURLs:p});case 25:case"end":return r.stop()}}),r,null,[[3,16,19,22]])}))))}},{key:"activate",value:function(e){var t=this;return A(e,R(k().mark((function e(){var r,n,a,i,s,c,o;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,self.caches.open(t.strategy.cacheName);case 2:return r=e.sent,e.next=5,r.keys();case 5:n=e.sent,a=new Set(t._urlsToCacheKeys.values()),i=[],s=O(n),e.prev=9,s.s();case 11:if((c=s.n()).done){e.next=19;break}if(o=c.value,a.has(o.url)){e.next=17;break}return e.next=16,r.delete(o);case 16:i.push(o.url);case 17:e.next=11;break;case 19:e.next=24;break;case 21:e.prev=21,e.t0=e.catch(9),s.e(e.t0);case 24:return e.prev=24,s.f(),e.finish(24);case 27:return e.abrupt("return",{deletedURLs:i});case 29:case"end":return e.stop()}}),e,null,[[9,21,24,27]])}))))}},{key:"getURLsToCacheKeys",value:function(){return this._urlsToCacheKeys}},{key:"getCachedURLs",value:function(){return ve(this._urlsToCacheKeys.keys())}},{key:"getCacheKeyForURL",value:function(e){var t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}},{key:"getIntegrityForCacheKey",value:function(e){return this._cacheKeysToIntegrities.get(e)}},{key:"matchPrecache",value:function(){var e=R(k().mark((function e(t){var r,n,a;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t instanceof Request?t.url:t,!(n=this.getCacheKeyForURL(r))){e.next=7;break}return e.next=5,self.caches.open(this.strategy.cacheName);case 5:return a=e.sent,e.abrupt("return",a.match(n));case 7:return e.abrupt("return",void 0);case 8:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"createHandlerBoundToURL",value:function(e){var t=this,r=this.getCacheKeyForURL(e);if(!r)throw new y("non-precached-url",{url:e});return function(n){return n.request=new Request(e),n.params=Object.assign({cacheKey:r},n.params),t.strategy.handle(n)}}}]),e}(),Ee=function(){return _e||(_e=new Re),_e};r(185);var Le,Oe="GET",Ce=function(e){return e&&"object"===typeof e?e:{handle:e}},Pe=function(){function e(t,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Oe;s(this,e),this.handler=Ce(r),this.match=t,this.method=n}return i(e,[{key:"setCatchHandler",value:function(e){this.catchHandler=Ce(e)}}]),e}(),Se=function(e){o(r,e);var t=l(r);function r(e,n,a){s(this,r);return t.call(this,(function(t){var r=t.url,n=e.exec(r.href);if(n&&(r.origin===location.origin||0===n.index))return n.slice(1)}),n,a)}return i(r)}(Pe),je=function(){function e(){s(this,e),this._routes=new Map,this._defaultHandlerMap=new Map}return i(e,[{key:"routes",get:function(){return this._routes}},{key:"addFetchListener",value:function(){var e=this;self.addEventListener("fetch",(function(t){var r=t.request,n=e.handleRequest({request:r,event:t});n&&t.respondWith(n)}))}},{key:"addCacheListener",value:function(){var e=this;self.addEventListener("message",(function(t){if(t.data&&"CACHE_URLS"===t.data.type){var r=t.data.payload;0;var n=Promise.all(r.urlsToCache.map((function(r){"string"===typeof r&&(r=[r]);var n=p(Request,ve(r));return e.handleRequest({request:n,event:t})})));t.waitUntil(n),t.ports&&t.ports[0]&&n.then((function(){return t.ports[0].postMessage(!0)}))}}))}},{key:"handleRequest",value:function(e){var t=this,r=e.request,n=e.event;var a=new URL(r.url,location.href);if(a.protocol.startsWith("http")){var i=a.origin===location.origin,s=this.findMatchingRoute({event:n,request:r,sameOrigin:i,url:a}),c=s.params,o=s.route,u=o&&o.handler;0;var h=r.method;if(!u&&this._defaultHandlerMap.has(h)&&(u=this._defaultHandlerMap.get(h)),u){var f;0;try{f=u.handle({url:a,request:r,event:n,params:c})}catch(p){f=Promise.reject(p)}var l=o&&o.catchHandler;return f instanceof Promise&&(this._catchHandler||l)&&(f=f.catch(function(){var e=R(k().mark((function e(i){return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!l){e.next=11;break}return e.prev=2,e.next=5,l.handle({url:a,request:r,event:n,params:c});case 5:return e.abrupt("return",e.sent);case 8:e.prev=8,e.t0=e.catch(2),e.t0 instanceof Error&&(i=e.t0);case 11:if(!t._catchHandler){e.next=14;break}return e.abrupt("return",t._catchHandler.handle({url:a,request:r,event:n}));case 14:throw i;case 15:case"end":return e.stop()}}),e,null,[[2,8]])})));return function(t){return e.apply(this,arguments)}}())),f}}}},{key:"findMatchingRoute",value:function(e){var t,r=e.url,n=e.sameOrigin,a=e.request,i=e.event,s=O(this._routes.get(a.method)||[]);try{for(s.s();!(t=s.n()).done;){var c=t.value,o=void 0,u=c.match({url:r,sameOrigin:n,request:a,event:i});if(u)return o=u,(Array.isArray(o)&&0===o.length||u.constructor===Object&&0===Object.keys(u).length||"boolean"===typeof u)&&(o=void 0),{route:c,params:o}}}catch(h){s.e(h)}finally{s.f()}return{}}},{key:"setDefaultHandler",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Oe;this._defaultHandlerMap.set(t,Ce(e))}},{key:"setCatchHandler",value:function(e){this._catchHandler=Ce(e)}},{key:"registerRoute",value:function(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}},{key:"unregisterRoute",value:function(e){if(!this._routes.has(e.method))throw new y("unregister-route-but-not-found-with-method",{method:e.method});var t=this._routes.get(e.method).indexOf(e);if(!(t>-1))throw new y("unregister-route-route-not-registered");this._routes.get(e.method).splice(t,1)}}]),e}(),Ne=function(){return Le||((Le=new je).addFetchListener(),Le.addCacheListener()),Le};function Te(e,t,r){var n;if("string"===typeof e){var a=new URL(e,location.href);n=new Pe((function(e){return e.url.href===a.href}),t,r)}else if(e instanceof RegExp)n=new Se(e,t,r);else if("function"===typeof e)n=new Pe(e,t,r);else{if(!(e instanceof Pe))throw new y("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});n=e}return Ne().registerRoute(n),n}function De(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=function(){var r=a[n];t.some((function(e){return e.test(r)}))&&e.searchParams.delete(r)},n=0,a=ve(e.searchParams.keys());n1&&void 0!==arguments[1]?arguments[1]:{},r=t.ignoreURLParametersMatching,n=void 0===r?[/^utm_/,/^fbclid$/]:r,a=t.directoryIndex,i=void 0===a?"index.html":a,s=t.cleanURLs,c=void 0===s||s,o=t.urlManipulation;return k().mark((function t(){var r,a,s,u,h,f,l,p;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(r=new URL(e,location.href)).hash="",t.next=4,r.href;case 4:return a=De(r,n),t.next=7,a.href;case 7:if(!i||!a.pathname.endsWith("/")){t.next=12;break}return(s=new URL(a.href)).pathname+=i,t.next=12,s.href;case 12:if(!c){t.next=17;break}return(u=new URL(a.href)).pathname+=".html",t.next=17,u.href;case 17:if(!o){t.next=36;break}h=o({url:r}),f=O(h),t.prev=20,f.s();case 22:if((l=f.n()).done){t.next=28;break}return p=l.value,t.next=26,p.href;case 26:t.next=22;break;case 28:t.next=33;break;case 30:t.prev=30,t.t0=t.catch(20),f.e(t.t0);case 33:return t.prev=33,f.f(),t.finish(33);case 36:case"end":return t.stop()}}),t,null,[[20,30,33,36]])}))()}(a.url,n));try{for(s.s();!(r=s.n()).done;){var c=r.value,o=i.get(c);if(o)return{cacheKey:o,integrity:e.getIntegrityForCacheKey(o)}}}catch(u){s.e(u)}finally{s.f()}}),e.strategy)}return i(r)}(Pe);var Ue,Ie={cacheWillUpdate:function(){var e=R(k().mark((function e(t){var r;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(200!==(r=t.response).status&&0!==r.status){e.next=3;break}return e.abrupt("return",r);case 3:return e.abrupt("return",null);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},Ae=function(e){o(r,e);var t=l(r);function r(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return s(this,r),(e=t.call(this,n)).plugins.some((function(e){return"cacheWillUpdate"in e}))||e.plugins.unshift(Ie),e}return i(r,[{key:"_handle",value:function(){var e=R(k().mark((function e(t,r){var n,a,i;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return[],n=r.fetchAndCachePut(t).catch((function(){})),r.waitUntil(n),e.next=6,r.cacheMatch(t);case 6:if(!(a=e.sent)){e.next=11;break}0,e.next=21;break;case 11:return e.prev=12,e.next=15,n;case 15:a=e.sent,e.next=21;break;case 18:e.prev=18,e.t0=e.catch(12),e.t0 instanceof Error&&(i=e.t0);case 21:if(a){e.next=24;break}throw new y("no-response",{url:t.url,error:i});case 24:return e.abrupt("return",a);case 25:case"end":return e.stop()}}),e,this,[[12,18]])})));return function(t,r){return e.apply(this,arguments)}}()}]),r}(we);self.addEventListener("activate",(function(){return self.clients.claim()})),function(e){Ee().precache(e)}([{'revision':'4d7dbb76330468b48d5032fcfbe69ee0','url':'/poolscore/index.html'},{'revision':null,'url':'/poolscore/static/css/main.e6c13ad2.css'},{'revision':null,'url':'/poolscore/static/js/787.c4e7f8f9.chunk.js'},{'revision':null,'url':'/poolscore/static/js/main.479afb46.js'},{'revision':'af9b5d812304bcb0bc00d3b48a6180aa','url':'/poolscore/static/media/10B.a1ff70bedc43e5e935fa07060d364163.svg'},{'revision':'b5bad667be81020671f3846dea554ece','url':'/poolscore/static/media/11B.2aed50f71a99f36d36cdce228b577bf5.svg'},{'revision':'b86408bfb742fc1f15298ce212ea63e8','url':'/poolscore/static/media/12B.88e9c7ac276aed03ca966dc7d20af0c6.svg'},{'revision':'0a112b55f44dab1683ddd8878516ffcf','url':'/poolscore/static/media/13B.79a0cecf536e77a4d6f824f9fcf2f434.svg'},{'revision':'ce53be682ef5ca28d1795a8ff64dcbb8','url':'/poolscore/static/media/14B.c0be400f2fd7ba90ecd6036dce688dba.svg'},{'revision':'5c1e1e9c9505a57a9087b86220a07e25','url':'/poolscore/static/media/14plus.c684ea360f03470b6108894bb330ea45.svg'},{'revision':'10a5812fcf996ac39232c0cb59e7af23','url':'/poolscore/static/media/15B.f9155827b88689801f738c904e36dfa7.svg'},{'revision':'27df17858c63af6f5fbff0f99eb9fa8c','url':'/poolscore/static/media/15plus.4599b3f8a2d69d997009fc0438af6b73.svg'},{'revision':'52d73f585de4e3600a689291d46ce869','url':'/poolscore/static/media/2B.d8924a01fcaf0de5e787495766754115.svg'},{'revision':'1679ce97a6b05e3985369bf841a0d95a','url':'/poolscore/static/media/3B.dab68bf6594639e1a8ee1d61269dd2d5.svg'},{'revision':'fec8949bd989de4ba832994e68871d67','url':'/poolscore/static/media/4B.7d11eb5923c95a35c4c619a8770499f0.svg'},{'revision':'e01f76331969c5ecc8671d6c5b725aa7','url':'/poolscore/static/media/5B.e28ce9271450a69b1d64040b616dcfb2.svg'},{'revision':'fe88d89a48afe7605b9afdc6527d6e8d','url':'/poolscore/static/media/6B.89c6a5bdb6616bbb10c0ba8fde91c33c.svg'},{'revision':'ad5cf335a7751a61dd60190c5957fe91','url':'/poolscore/static/media/7B.b79dd69a40dfdde9337e0f917061db6f.svg'},{'revision':'e482ac82126ac436dbc2ebbf63f1beb3','url':'/poolscore/static/media/8B.cca3b3a13d9bf00a7041b94dbe3f370c.svg'},{'revision':'4407269410ef909efc03688bc84c8f0d','url':'/poolscore/static/media/9B.53c4cd63eee5b0e5e9c31ac22db437e5.svg'}]),function(e){var t=Ee();Te(new qe(t,e))}(Ue);var Ke,Me=/[^/?]+\\.[^/]+$/;Te((function(e){var t=e.request,r=e.url;return"navigate"===t.mode&&(!r.pathname.startsWith("/_")&&!r.pathname.match(Me))}),(Ke="".concat("/poolscore","/index.html"),Ee().createHandlerBoundToURL(Ke))),Te((function(e){var t=e.url;return t.origin===self.location.origin&&t.pathname.endsWith(".png")}),new Ae({cacheName:"images",plugins:[new pe({maxEntries:50})]})),self.addEventListener("message",(function(e){e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}))}()}(); //# sourceMappingURL=service-worker.js.map \ No newline at end of file diff --git a/service-worker.js.map b/service-worker.js.map index e08c4c8..5df23f3 100644 --- a/service-worker.js.map +++ b/service-worker.js.map @@ -1 +1 @@ -{"version":3,"sources":["../node_modules/workbox-core/_version.js","../node_modules/workbox-expiration/_version.js","../node_modules/workbox-precaching/_version.js","../node_modules/workbox-routing/_version.js","../node_modules/workbox-strategies/_version.js","../webpack/bootstrap","../node_modules/workbox-core/_private/logger.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/workbox-core/models/messages/messages.js","../node_modules/workbox-core/models/messages/messageGenerator.js","../node_modules/workbox-core/_private/WorkboxError.js","../node_modules/workbox-core/models/quotaErrorCallbacks.js","../node_modules/workbox-core/_private/cacheNames.js","../node_modules/workbox-core/_private/canConstructResponseFromBodyStream.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/workbox-core/_private/cacheMatchIgnoreParams.js","../node_modules/workbox-core/_private/dontWaitFor.js","../node_modules/workbox-core/_private/Deferred.js","../node_modules/workbox-core/_private/executeQuotaErrorCallbacks.js","../node_modules/workbox-core/_private/getFriendlyURL.js","../node_modules/workbox-core/_private/timeout.js","../node_modules/workbox-core/_private/waitUntil.js","../node_modules/workbox-core/copyResponse.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/idb/build/wrap-idb-value.js","../node_modules/idb/build/index.js","../node_modules/workbox-expiration/models/CacheTimestampsModel.js","../node_modules/workbox-expiration/CacheExpiration.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/workbox-expiration/ExpirationPlugin.js","../node_modules/workbox-core/registerQuotaErrorCallback.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/workbox-precaching/utils/createCacheKey.js","../node_modules/workbox-precaching/utils/PrecacheInstallReportPlugin.js","../node_modules/workbox-precaching/utils/PrecacheCacheKeyPlugin.js","../node_modules/workbox-strategies/StrategyHandler.js","../node_modules/workbox-strategies/Strategy.js","../node_modules/workbox-precaching/PrecacheStrategy.js","../node_modules/workbox-precaching/PrecacheController.js","../node_modules/workbox-precaching/utils/getOrCreatePrecacheController.js","../node_modules/workbox-routing/utils/getOrCreateDefaultRouter.js","../node_modules/workbox-routing/utils/constants.js","../node_modules/workbox-routing/utils/normalizeHandler.js","../node_modules/workbox-routing/Route.js","../node_modules/workbox-routing/RegExpRoute.js","../node_modules/workbox-routing/Router.js","../node_modules/workbox-routing/registerRoute.js","../node_modules/workbox-precaching/utils/removeIgnoredSearchParams.js","../node_modules/workbox-precaching/PrecacheRoute.js","../node_modules/workbox-precaching/utils/generateURLVariations.js","../node_modules/workbox-strategies/utils/messages.js","../node_modules/workbox-precaching/precacheAndRoute.js","../node_modules/workbox-strategies/plugins/cacheOkAndOpaquePlugin.js","../node_modules/workbox-strategies/StaleWhileRevalidate.js","../node_modules/workbox-core/clientsClaim.js","../node_modules/workbox-precaching/precache.js","service-worker.ts","../node_modules/workbox-precaching/addRoute.js","../node_modules/workbox-precaching/createHandlerBoundToURL.js"],"names":["self","_","e","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","logger","_typeof","obj","Symbol","iterator","constructor","prototype","_toPropertyKey","arg","key","input","hint","prim","toPrimitive","res","call","TypeError","String","Number","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","Constructor","protoProps","staticProps","instance","_setPrototypeOf","o","p","setPrototypeOf","bind","__proto__","_inherits","subClass","superClass","create","value","_getPrototypeOf","getPrototypeOf","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_possibleConstructorReturn","ReferenceError","_createSuper","Derived","hasNativeReflectConstruct","result","Super","NewTarget","this","arguments","apply","_construct","Parent","args","Class","a","push","Function","_wrapNativeSuper","_cache","Map","fn","toString","indexOf","has","get","set","Wrapper","messageGenerator","code","msg","_len","Array","_key","concat","JSON","stringify","WorkboxError","_Error","_super","errorCode","details","_this","_classCallCheck","message","name","_createClass","Error","quotaErrorCallbacks","Set","supportStatus","_cacheNameDetails","googleAnalytics","precache","prefix","runtime","suffix","registration","scope","_createCacheName","cacheName","filter","join","cacheNames","updateDetails","_i","_Object$keys","keys","eachCacheNameDetail","getGoogleAnalyticsName","userCacheName","getPrecacheName","getPrefix","getRuntimeName","getSuffix","Op","hasOwn","hasOwnProperty","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","err","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","makeInvokeMethod","tryCatch","type","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","state","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","done","methodName","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","Promise","iter","val","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_arrayLikeToArray","arr","len","arr2","_unsupportedIterableToArray","minLen","n","from","test","allowArrayLike","it","isArray","F","s","_e","f","normalCompletion","didErr","step","_e2","stripParams","fullURL","ignoreParams","_step","strippedURL","URL","_iterator","_createForOfIteratorHelper","param","searchParams","delete","href","cacheMatchIgnoreParams","_x","_x2","_x3","_x4","_cacheMatchIgnoreParams","_asyncToGenerator","_regeneratorRuntime","_callee","cache","request","matchOptions","strippedRequestURL","keysOptions","cacheKeys","_iterator2","_step2","cacheKey","strippedCacheKeyURL","_context","url","match","assign","ignoreSearch","t0","canConstructResponseFromBodyStream","testResponse","Response","body","dontWaitFor","promise","Deferred","executeQuotaErrorCallbacks","_executeQuotaErrorCallbacks","callback","process","getFriendlyURL","location","replace","RegExp","origin","timeout","ms","setTimeout","waitUntil","event","asyncFn","returnPromise","copyResponse","_copyResponse","response","modifier","responseURL","clonedResponse","responseInit","modifiedResponseInit","clone","headers","Headers","status","statusText","blob","_defineProperty","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread2","source","getOwnPropertyDescriptors","defineProperties","idbProxyableTypes","cursorAdvanceMethods","instanceOfAny","constructors","some","c","cursorRequestMap","WeakMap","transactionDoneMap","transactionStoreNamesMap","transformCache","reverseTransformCache","idbProxyTraps","prop","receiver","IDBTransaction","objectStoreNames","objectStore","wrapFunction","func","IDBDatabase","transaction","IDBCursor","advance","continue","continuePrimaryKey","includes","_len2","_key2","unwrap","_len3","_key3","storeNames","tx","sort","transformCachableValue","unlisten","removeEventListener","DOMException","addEventListener","cacheDonePromiseForTransaction","IDBObjectStore","IDBIndex","IDBRequest","success","catch","promisifyRequest","newValue","openDB","version","_ref","blocked","upgrade","blocking","terminated","indexedDB","open","openPromise","oldVersion","newVersion","db","readMethods","writeMethods","cachedMethods","getMethod","targetFuncName","useIndex","isWrite","_ref3","storeName","_target","_args","store","index","shift","all","oldTraps","_objectSpread","CACHE_OBJECT_STORE","normalizeURL","unNormalizedUrl","hash","CacheTimestampsModel","_db","_cacheName","objStore","createObjectStore","keyPath","createIndex","unique","_upgradeDb","deleteDatabase","deleteDB","_setTimestamp","timestamp","id","_getId","getDb","durability","put","_getTimestamp","_callee2","_context2","_expireEntries","_callee3","minTimestamp","maxCount","cursor","entriesToDelete","entriesNotDeletedCount","urlsDeleted","_entriesToDelete","_context3","openCursor","_x5","_getDb","_callee4","_context4","_upgradeDbAndDeleteOldDbs","CacheExpiration","config","_isRunning","_rerunRequested","_maxEntries","maxEntries","_maxAgeSeconds","maxAgeSeconds","_matchOptions","_timestampModel","urlsExpired","Date","now","expireEntries","caches","_updateTimestamp","setTimestamp","_isURLExpired","expireOlderThan","getTimestamp","_delete2","Infinity","_slicedToArray","_s","_r","_arr","_n","_d","ExpirationPlugin","cachedResponseWillBeUsed","_ref2","cachedResponse","isFresh","cacheExpiration","updateTimestampDone","_isResponseDateFresh","_getCacheExpiration","updateTimestamp","cacheDidUpdate","_ref4","_config","_cacheExpirations","purgeOnQuotaError","add","registerQuotaErrorCallback","deleteCacheAndMetadata","dateHeaderTimestamp","_getDateHeaderTimestamp","dateHeader","headerTime","getTime","_deleteCacheAndMetadata","_step$value","REVISION_SEARCH_PARAM","createCacheKey","urlObject","revision","cacheKeyURL","originalURL","PrecacheInstallReportPlugin","updatedURLs","notUpdatedURLs","handlerWillStart","originalRequest","Request","PrecacheCacheKeyPlugin","precacheController","cacheKeyWillBeUsed","params","_precacheController","getCacheKeyForURL","toRequest","StrategyHandler","strategy","options","_cacheKeys","_strategy","_handlerDeferred","_extendLifetimePromises","_plugins","_toConsumableArray","plugins","_pluginStateMap","plugin","_fetch","fetch","possiblePreloadResponse","cb","pluginFilteredRequest","fetchResponse","_iterator3","_step3","mode","FetchEvent","preloadResponse","hasCallback","iterateCallbacks","t1","thrownErrorMessage","fetchOptions","t2","t3","runCallbacks","_fetchAndCachePut","responseClone","cachePut","_cacheMatch","_this$_strategy","effectiveRequest","multiMatchOptions","_iterator4","_step4","getCacheKey","_cachePut","vary","responseToCache","_this$_strategy2","hasCacheUpdateCallback","oldResponse","_iterator5","_step5","_ensureResponseSafeToCache","newResponse","_x6","_getCacheKey","_callee5","_iterator6","_step6","_context5","_x7","_x8","_step7","_iterator7","_runCallbacks","_callee6","_iterator8","_step8","_context6","_x9","_x10","_iterator9","_step9","_loop","_context8","statefulCallback","_context7","statefulParam","_doneWaiting","_callee7","_context9","_ensureResponseSafeToCache2","_callee8","pluginsUsed","_iterator10","_step10","_context10","_x11","Strategy","handleAll","handler","responseDone","_getResponse","_awaitComplete","_getResponse2","_callback","_handle","_awaitComplete2","doneWaiting","destroy","PrecacheStrategy","_Strategy","_fallbackToNetwork","fallbackToNetwork","copyRedirectedCacheableResponsesPlugin","_handle2","cacheMatch","_handleInstall","_handleFetch","_handleFetch2","integrityInManifest","integrityInRequest","noIntegrityConflict","integrity","_useDefaultCacheabilityPluginIfNeeded","_handleInstall2","defaultPluginIndex","cacheWillUpdatePluginCount","entries","defaultPrecacheCacheabilityPlugin","cacheWillUpdate","splice","redirected","PrecacheController","_ref$plugins","_ref$fallbackToNetwor","_urlsToCacheKeys","_urlsToCacheModes","_cacheKeysToIntegrities","install","activate","addToCacheList","_installAndActiveListenersAdded","urlsToWarnAbout","_createCacheKey","cacheMode","firstEntry","secondEntry","warningMessage","console","warn","installReportPlugin","_step2$value","credentials","_this2","currentlyCachedRequests","expectedCacheKeys","deletedURLs","_matchPrecache","_this3","getOrCreatePrecacheController","defaultRouter","defaultMethod","normalizeHandler","Route","catchHandler","RegExpRoute","_Route","regExp","exec","Router","_routes","_defaultHandlerMap","responsePromise","handleRequest","respondWith","data","payload","requestPromises","urlsToCache","map","ports","postMessage","protocol","startsWith","sameOrigin","_this$findMatchingRou","findMatchingRoute","route","_catchHandler","matchResult","routeIndex","getOrCreateDefaultRouter","addFetchListener","addCacheListener","registerRoute","capture","captureUrl","moduleName","funcName","paramName","removeIgnoredSearchParams","ignoreURLParametersMatching","PrecacheRoute","urlsToCacheKeys","getURLsToCacheKeys","_ref$ignoreURLParamet","_ref$directoryIndex","directoryIndex","_ref$cleanURLs","cleanURLs","urlManipulation","urlWithoutIgnoredParams","directoryURL","cleanURL","additionalURLs","urlToAttempt","pathname","endsWith","generateURLVariations","possibleURL","getIntegrityForCacheKey","cacheOkAndOpaquePlugin","_cacheWillUpdate","StaleWhileRevalidate","unshift","fetchAndCachePromise","fetchAndCachePut","clients","claim","__WB_MANIFEST","addRoute","fileExtensionRegexp","createHandlerBoundToURL","skipWaiting"],"mappings":"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","file":"service-worker.js","sourceRoot":"","sourcesContent":["\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:core:6.5.3'] && _();\n}\ncatch (e) { }\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:expiration:6.5.3'] && _();\n}\ncatch (e) { }\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:precaching:6.5.3'] && _();\n}\ncatch (e) { }\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:routing:6.5.3'] && _();\n}\ncatch (e) { }\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:strategies:6.5.3'] && _();\n}\ncatch (e) { }\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst logger = (process.env.NODE_ENV === 'production'\n ? null\n : (() => {\n // Don't overwrite this value if it's already set.\n // See https://github.com/GoogleChrome/workbox/pull/2284#issuecomment-560470923\n if (!('__WB_DISABLE_DEV_LOGS' in self)) {\n self.__WB_DISABLE_DEV_LOGS = false;\n }\n let inGroup = false;\n const methodToColorMap = {\n debug: `#7f8c8d`,\n log: `#2ecc71`,\n warn: `#f39c12`,\n error: `#c0392b`,\n groupCollapsed: `#3498db`,\n groupEnd: null, // No colored prefix on groupEnd\n };\n const print = function (method, args) {\n if (self.__WB_DISABLE_DEV_LOGS) {\n return;\n }\n if (method === 'groupCollapsed') {\n // Safari doesn't print all console.groupCollapsed() arguments:\n // https://bugs.webkit.org/show_bug.cgi?id=182754\n if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n console[method](...args);\n return;\n }\n }\n const styles = [\n `background: ${methodToColorMap[method]}`,\n `border-radius: 0.5em`,\n `color: white`,\n `font-weight: bold`,\n `padding: 2px 0.5em`,\n ];\n // When in a group, the workbox prefix is not displayed.\n const logPrefix = inGroup ? [] : ['%cworkbox', styles.join(';')];\n console[method](...logPrefix, ...args);\n if (method === 'groupCollapsed') {\n inGroup = true;\n }\n if (method === 'groupEnd') {\n inGroup = false;\n }\n };\n // eslint-disable-next-line @typescript-eslint/ban-types\n const api = {};\n const loggerMethods = Object.keys(methodToColorMap);\n for (const key of loggerMethods) {\n const method = key;\n api[method] = (...args) => {\n print(method, args);\n };\n }\n return api;\n })());\nexport { logger };\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../../_version.js';\nexport const messages = {\n 'invalid-value': ({ paramName, validValueDescription, value }) => {\n if (!paramName || !validValueDescription) {\n throw new Error(`Unexpected input to 'invalid-value' error.`);\n }\n return (`The '${paramName}' parameter was given a value with an ` +\n `unexpected value. ${validValueDescription} Received a value of ` +\n `${JSON.stringify(value)}.`);\n },\n 'not-an-array': ({ moduleName, className, funcName, paramName }) => {\n if (!moduleName || !className || !funcName || !paramName) {\n throw new Error(`Unexpected input to 'not-an-array' error.`);\n }\n return (`The parameter '${paramName}' passed into ` +\n `'${moduleName}.${className}.${funcName}()' must be an array.`);\n },\n 'incorrect-type': ({ expectedType, paramName, moduleName, className, funcName, }) => {\n if (!expectedType || !paramName || !moduleName || !funcName) {\n throw new Error(`Unexpected input to 'incorrect-type' error.`);\n }\n const classNameStr = className ? `${className}.` : '';\n return (`The parameter '${paramName}' passed into ` +\n `'${moduleName}.${classNameStr}` +\n `${funcName}()' must be of type ${expectedType}.`);\n },\n 'incorrect-class': ({ expectedClassName, paramName, moduleName, className, funcName, isReturnValueProblem, }) => {\n if (!expectedClassName || !moduleName || !funcName) {\n throw new Error(`Unexpected input to 'incorrect-class' error.`);\n }\n const classNameStr = className ? `${className}.` : '';\n if (isReturnValueProblem) {\n return (`The return value from ` +\n `'${moduleName}.${classNameStr}${funcName}()' ` +\n `must be an instance of class ${expectedClassName}.`);\n }\n return (`The parameter '${paramName}' passed into ` +\n `'${moduleName}.${classNameStr}${funcName}()' ` +\n `must be an instance of class ${expectedClassName}.`);\n },\n 'missing-a-method': ({ expectedMethod, paramName, moduleName, className, funcName, }) => {\n if (!expectedMethod ||\n !paramName ||\n !moduleName ||\n !className ||\n !funcName) {\n throw new Error(`Unexpected input to 'missing-a-method' error.`);\n }\n return (`${moduleName}.${className}.${funcName}() expected the ` +\n `'${paramName}' parameter to expose a '${expectedMethod}' method.`);\n },\n 'add-to-cache-list-unexpected-type': ({ entry }) => {\n return (`An unexpected entry was passed to ` +\n `'workbox-precaching.PrecacheController.addToCacheList()' The entry ` +\n `'${JSON.stringify(entry)}' isn't supported. You must supply an array of ` +\n `strings with one or more characters, objects with a url property or ` +\n `Request objects.`);\n },\n 'add-to-cache-list-conflicting-entries': ({ firstEntry, secondEntry }) => {\n if (!firstEntry || !secondEntry) {\n throw new Error(`Unexpected input to ` + `'add-to-cache-list-duplicate-entries' error.`);\n }\n return (`Two of the entries passed to ` +\n `'workbox-precaching.PrecacheController.addToCacheList()' had the URL ` +\n `${firstEntry} but different revision details. Workbox is ` +\n `unable to cache and version the asset correctly. Please remove one ` +\n `of the entries.`);\n },\n 'plugin-error-request-will-fetch': ({ thrownErrorMessage }) => {\n if (!thrownErrorMessage) {\n throw new Error(`Unexpected input to ` + `'plugin-error-request-will-fetch', error.`);\n }\n return (`An error was thrown by a plugins 'requestWillFetch()' method. ` +\n `The thrown error message was: '${thrownErrorMessage}'.`);\n },\n 'invalid-cache-name': ({ cacheNameId, value }) => {\n if (!cacheNameId) {\n throw new Error(`Expected a 'cacheNameId' for error 'invalid-cache-name'`);\n }\n return (`You must provide a name containing at least one character for ` +\n `setCacheDetails({${cacheNameId}: '...'}). Received a value of ` +\n `'${JSON.stringify(value)}'`);\n },\n 'unregister-route-but-not-found-with-method': ({ method }) => {\n if (!method) {\n throw new Error(`Unexpected input to ` +\n `'unregister-route-but-not-found-with-method' error.`);\n }\n return (`The route you're trying to unregister was not previously ` +\n `registered for the method type '${method}'.`);\n },\n 'unregister-route-route-not-registered': () => {\n return (`The route you're trying to unregister was not previously ` +\n `registered.`);\n },\n 'queue-replay-failed': ({ name }) => {\n return `Replaying the background sync queue '${name}' failed.`;\n },\n 'duplicate-queue-name': ({ name }) => {\n return (`The Queue name '${name}' is already being used. ` +\n `All instances of backgroundSync.Queue must be given unique names.`);\n },\n 'expired-test-without-max-age': ({ methodName, paramName }) => {\n return (`The '${methodName}()' method can only be used when the ` +\n `'${paramName}' is used in the constructor.`);\n },\n 'unsupported-route-type': ({ moduleName, className, funcName, paramName }) => {\n return (`The supplied '${paramName}' parameter was an unsupported type. ` +\n `Please check the docs for ${moduleName}.${className}.${funcName} for ` +\n `valid input types.`);\n },\n 'not-array-of-class': ({ value, expectedClass, moduleName, className, funcName, paramName, }) => {\n return (`The supplied '${paramName}' parameter must be an array of ` +\n `'${expectedClass}' objects. Received '${JSON.stringify(value)},'. ` +\n `Please check the call to ${moduleName}.${className}.${funcName}() ` +\n `to fix the issue.`);\n },\n 'max-entries-or-age-required': ({ moduleName, className, funcName }) => {\n return (`You must define either config.maxEntries or config.maxAgeSeconds` +\n `in ${moduleName}.${className}.${funcName}`);\n },\n 'statuses-or-headers-required': ({ moduleName, className, funcName }) => {\n return (`You must define either config.statuses or config.headers` +\n `in ${moduleName}.${className}.${funcName}`);\n },\n 'invalid-string': ({ moduleName, funcName, paramName }) => {\n if (!paramName || !moduleName || !funcName) {\n throw new Error(`Unexpected input to 'invalid-string' error.`);\n }\n return (`When using strings, the '${paramName}' parameter must start with ` +\n `'http' (for cross-origin matches) or '/' (for same-origin matches). ` +\n `Please see the docs for ${moduleName}.${funcName}() for ` +\n `more info.`);\n },\n 'channel-name-required': () => {\n return (`You must provide a channelName to construct a ` +\n `BroadcastCacheUpdate instance.`);\n },\n 'invalid-responses-are-same-args': () => {\n return (`The arguments passed into responsesAreSame() appear to be ` +\n `invalid. Please ensure valid Responses are used.`);\n },\n 'expire-custom-caches-only': () => {\n return (`You must provide a 'cacheName' property when using the ` +\n `expiration plugin with a runtime caching strategy.`);\n },\n 'unit-must-be-bytes': ({ normalizedRangeHeader }) => {\n if (!normalizedRangeHeader) {\n throw new Error(`Unexpected input to 'unit-must-be-bytes' error.`);\n }\n return (`The 'unit' portion of the Range header must be set to 'bytes'. ` +\n `The Range header provided was \"${normalizedRangeHeader}\"`);\n },\n 'single-range-only': ({ normalizedRangeHeader }) => {\n if (!normalizedRangeHeader) {\n throw new Error(`Unexpected input to 'single-range-only' error.`);\n }\n return (`Multiple ranges are not supported. Please use a single start ` +\n `value, and optional end value. The Range header provided was ` +\n `\"${normalizedRangeHeader}\"`);\n },\n 'invalid-range-values': ({ normalizedRangeHeader }) => {\n if (!normalizedRangeHeader) {\n throw new Error(`Unexpected input to 'invalid-range-values' error.`);\n }\n return (`The Range header is missing both start and end values. At least ` +\n `one of those values is needed. The Range header provided was ` +\n `\"${normalizedRangeHeader}\"`);\n },\n 'no-range-header': () => {\n return `No Range header was found in the Request provided.`;\n },\n 'range-not-satisfiable': ({ size, start, end }) => {\n return (`The start (${start}) and end (${end}) values in the Range are ` +\n `not satisfiable by the cached response, which is ${size} bytes.`);\n },\n 'attempt-to-cache-non-get-request': ({ url, method }) => {\n return (`Unable to cache '${url}' because it is a '${method}' request and ` +\n `only 'GET' requests can be cached.`);\n },\n 'cache-put-with-no-response': ({ url }) => {\n return (`There was an attempt to cache '${url}' but the response was not ` +\n `defined.`);\n },\n 'no-response': ({ url, error }) => {\n let message = `The strategy could not generate a response for '${url}'.`;\n if (error) {\n message += ` The underlying error is ${error}.`;\n }\n return message;\n },\n 'bad-precaching-response': ({ url, status }) => {\n return (`The precaching request for '${url}' failed` +\n (status ? ` with an HTTP status of ${status}.` : `.`));\n },\n 'non-precached-url': ({ url }) => {\n return (`createHandlerBoundToURL('${url}') was called, but that URL is ` +\n `not precached. Please pass in a URL that is precached instead.`);\n },\n 'add-to-cache-list-conflicting-integrities': ({ url }) => {\n return (`Two of the entries passed to ` +\n `'workbox-precaching.PrecacheController.addToCacheList()' had the URL ` +\n `${url} with different integrity values. Please remove one of them.`);\n },\n 'missing-precache-entry': ({ cacheName, url }) => {\n return `Unable to find a precached response in ${cacheName} for ${url}.`;\n },\n 'cross-origin-copy-response': ({ origin }) => {\n return (`workbox-core.copyResponse() can only be used with same-origin ` +\n `responses. It was passed a response with origin ${origin}.`);\n },\n 'opaque-streams-source': ({ type }) => {\n const message = `One of the workbox-streams sources resulted in an ` +\n `'${type}' response.`;\n if (type === 'opaqueredirect') {\n return (`${message} Please do not use a navigation request that results ` +\n `in a redirect as a source.`);\n }\n return `${message} Please ensure your sources are CORS-enabled.`;\n },\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { messages } from './messages.js';\nimport '../../_version.js';\nconst fallback = (code, ...args) => {\n let msg = code;\n if (args.length > 0) {\n msg += ` :: ${JSON.stringify(args)}`;\n }\n return msg;\n};\nconst generatorFunction = (code, details = {}) => {\n const message = messages[code];\n if (!message) {\n throw new Error(`Unable to find message for code '${code}'.`);\n }\n return message(details);\n};\nexport const messageGenerator = process.env.NODE_ENV === 'production' ? fallback : generatorFunction;\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { messageGenerator } from '../models/messages/messageGenerator.js';\nimport '../_version.js';\n/**\n * Workbox errors should be thrown with this class.\n * This allows use to ensure the type easily in tests,\n * helps developers identify errors from workbox\n * easily and allows use to optimise error\n * messages correctly.\n *\n * @private\n */\nclass WorkboxError extends Error {\n /**\n *\n * @param {string} errorCode The error code that\n * identifies this particular error.\n * @param {Object=} details Any relevant arguments\n * that will help developers identify issues should\n * be added as a key on the context object.\n */\n constructor(errorCode, details) {\n const message = messageGenerator(errorCode, details);\n super(message);\n this.name = errorCode;\n this.details = details;\n }\n}\nexport { WorkboxError };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n// Callbacks to be executed whenever there's a quota error.\n// Can't change Function type right now.\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst quotaErrorCallbacks = new Set();\nexport { quotaErrorCallbacks };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst _cacheNameDetails = {\n googleAnalytics: 'googleAnalytics',\n precache: 'precache-v2',\n prefix: 'workbox',\n runtime: 'runtime',\n suffix: typeof registration !== 'undefined' ? registration.scope : '',\n};\nconst _createCacheName = (cacheName) => {\n return [_cacheNameDetails.prefix, cacheName, _cacheNameDetails.suffix]\n .filter((value) => value && value.length > 0)\n .join('-');\n};\nconst eachCacheNameDetail = (fn) => {\n for (const key of Object.keys(_cacheNameDetails)) {\n fn(key);\n }\n};\nexport const cacheNames = {\n updateDetails: (details) => {\n eachCacheNameDetail((key) => {\n if (typeof details[key] === 'string') {\n _cacheNameDetails[key] = details[key];\n }\n });\n },\n getGoogleAnalyticsName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.googleAnalytics);\n },\n getPrecacheName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.precache);\n },\n getPrefix: () => {\n return _cacheNameDetails.prefix;\n },\n getRuntimeName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.runtime);\n },\n getSuffix: () => {\n return _cacheNameDetails.suffix;\n },\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nlet supportStatus;\n/**\n * A utility function that determines whether the current browser supports\n * constructing a new `Response` from a `response.body` stream.\n *\n * @return {boolean} `true`, if the current browser can successfully\n * construct a `Response` from a `response.body` stream, `false` otherwise.\n *\n * @private\n */\nfunction canConstructResponseFromBodyStream() {\n if (supportStatus === undefined) {\n const testResponse = new Response('');\n if ('body' in testResponse) {\n try {\n new Response(testResponse.body);\n supportStatus = true;\n }\n catch (error) {\n supportStatus = false;\n }\n }\n supportStatus = false;\n }\n return supportStatus;\n}\nexport { canConstructResponseFromBodyStream };\n","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","/*\n Copyright 2020 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nfunction stripParams(fullURL, ignoreParams) {\n const strippedURL = new URL(fullURL);\n for (const param of ignoreParams) {\n strippedURL.searchParams.delete(param);\n }\n return strippedURL.href;\n}\n/**\n * Matches an item in the cache, ignoring specific URL params. This is similar\n * to the `ignoreSearch` option, but it allows you to ignore just specific\n * params (while continuing to match on the others).\n *\n * @private\n * @param {Cache} cache\n * @param {Request} request\n * @param {Object} matchOptions\n * @param {Array} ignoreParams\n * @return {Promise}\n */\nasync function cacheMatchIgnoreParams(cache, request, ignoreParams, matchOptions) {\n const strippedRequestURL = stripParams(request.url, ignoreParams);\n // If the request doesn't include any ignored params, match as normal.\n if (request.url === strippedRequestURL) {\n return cache.match(request, matchOptions);\n }\n // Otherwise, match by comparing keys\n const keysOptions = Object.assign(Object.assign({}, matchOptions), { ignoreSearch: true });\n const cacheKeys = await cache.keys(request, keysOptions);\n for (const cacheKey of cacheKeys) {\n const strippedCacheKeyURL = stripParams(cacheKey.url, ignoreParams);\n if (strippedRequestURL === strippedCacheKeyURL) {\n return cache.match(cacheKey, matchOptions);\n }\n }\n return;\n}\nexport { cacheMatchIgnoreParams };\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A helper function that prevents a promise from being flagged as unused.\n *\n * @private\n **/\nexport function dontWaitFor(promise) {\n // Effective no-op.\n void promise.then(() => { });\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The Deferred class composes Promises in a way that allows for them to be\n * resolved or rejected from outside the constructor. In most cases promises\n * should be used directly, but Deferreds can be necessary when the logic to\n * resolve a promise must be separate.\n *\n * @private\n */\nclass Deferred {\n /**\n * Creates a promise and exposes its resolve and reject functions as methods.\n */\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\nexport { Deferred };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from '../_private/logger.js';\nimport { quotaErrorCallbacks } from '../models/quotaErrorCallbacks.js';\nimport '../_version.js';\n/**\n * Runs all of the callback functions, one at a time sequentially, in the order\n * in which they were registered.\n *\n * @memberof workbox-core\n * @private\n */\nasync function executeQuotaErrorCallbacks() {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`About to run ${quotaErrorCallbacks.size} ` +\n `callbacks to clean up caches.`);\n }\n for (const callback of quotaErrorCallbacks) {\n await callback();\n if (process.env.NODE_ENV !== 'production') {\n logger.log(callback, 'is complete.');\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Finished running callbacks.');\n }\n}\nexport { executeQuotaErrorCallbacks };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst getFriendlyURL = (url) => {\n const urlObj = new URL(String(url), location.href);\n // See https://github.com/GoogleChrome/workbox/issues/2323\n // We want to include everything, except for the origin if it's same-origin.\n return urlObj.href.replace(new RegExp(`^${location.origin}`), '');\n};\nexport { getFriendlyURL };\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * Returns a promise that resolves and the passed number of milliseconds.\n * This utility is an async/await-friendly version of `setTimeout`.\n *\n * @param {number} ms\n * @return {Promise}\n * @private\n */\nexport function timeout(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","/*\n Copyright 2020 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A utility method that makes it easier to use `event.waitUntil` with\n * async functions and return the result.\n *\n * @param {ExtendableEvent} event\n * @param {Function} asyncFn\n * @return {Function}\n * @private\n */\nfunction waitUntil(event, asyncFn) {\n const returnPromise = asyncFn();\n event.waitUntil(returnPromise);\n return returnPromise;\n}\nexport { waitUntil };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { canConstructResponseFromBodyStream } from './_private/canConstructResponseFromBodyStream.js';\nimport { WorkboxError } from './_private/WorkboxError.js';\nimport './_version.js';\n/**\n * Allows developers to copy a response and modify its `headers`, `status`,\n * or `statusText` values (the values settable via a\n * [`ResponseInit`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax}\n * object in the constructor).\n * To modify these values, pass a function as the second argument. That\n * function will be invoked with a single object with the response properties\n * `{headers, status, statusText}`. The return value of this function will\n * be used as the `ResponseInit` for the new `Response`. To change the values\n * either modify the passed parameter(s) and return it, or return a totally\n * new object.\n *\n * This method is intentionally limited to same-origin responses, regardless of\n * whether CORS was used or not.\n *\n * @param {Response} response\n * @param {Function} modifier\n * @memberof workbox-core\n */\nasync function copyResponse(response, modifier) {\n let origin = null;\n // If response.url isn't set, assume it's cross-origin and keep origin null.\n if (response.url) {\n const responseURL = new URL(response.url);\n origin = responseURL.origin;\n }\n if (origin !== self.location.origin) {\n throw new WorkboxError('cross-origin-copy-response', { origin });\n }\n const clonedResponse = response.clone();\n // Create a fresh `ResponseInit` object by cloning the headers.\n const responseInit = {\n headers: new Headers(clonedResponse.headers),\n status: clonedResponse.status,\n statusText: clonedResponse.statusText,\n };\n // Apply any user modifications.\n const modifiedResponseInit = modifier ? modifier(responseInit) : responseInit;\n // Create the new response from the body stream and `ResponseInit`\n // modifications. Note: not all browsers support the Response.body stream,\n // so fall back to reading the entire body into memory as a blob.\n const body = canConstructResponseFromBodyStream()\n ? clonedResponse.body\n : await clonedResponse.blob();\n return new Response(body, modifiedResponseInit);\n}\nexport { copyResponse };\n","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction));\n });\n }\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking)\n db.addEventListener('versionchange', () => blocking());\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { openDB, deleteDB } from 'idb';\nimport '../_version.js';\nconst DB_NAME = 'workbox-expiration';\nconst CACHE_OBJECT_STORE = 'cache-entries';\nconst normalizeURL = (unNormalizedUrl) => {\n const url = new URL(unNormalizedUrl, location.href);\n url.hash = '';\n return url.href;\n};\n/**\n * Returns the timestamp model.\n *\n * @private\n */\nclass CacheTimestampsModel {\n /**\n *\n * @param {string} cacheName\n *\n * @private\n */\n constructor(cacheName) {\n this._db = null;\n this._cacheName = cacheName;\n }\n /**\n * Performs an upgrade of indexedDB.\n *\n * @param {IDBPDatabase} db\n *\n * @private\n */\n _upgradeDb(db) {\n // TODO(philipwalton): EdgeHTML doesn't support arrays as a keyPath, so we\n // have to use the `id` keyPath here and create our own values (a\n // concatenation of `url + cacheName`) instead of simply using\n // `keyPath: ['url', 'cacheName']`, which is supported in other browsers.\n const objStore = db.createObjectStore(CACHE_OBJECT_STORE, { keyPath: 'id' });\n // TODO(philipwalton): once we don't have to support EdgeHTML, we can\n // create a single index with the keyPath `['cacheName', 'timestamp']`\n // instead of doing both these indexes.\n objStore.createIndex('cacheName', 'cacheName', { unique: false });\n objStore.createIndex('timestamp', 'timestamp', { unique: false });\n }\n /**\n * Performs an upgrade of indexedDB and deletes deprecated DBs.\n *\n * @param {IDBPDatabase} db\n *\n * @private\n */\n _upgradeDbAndDeleteOldDbs(db) {\n this._upgradeDb(db);\n if (this._cacheName) {\n void deleteDB(this._cacheName);\n }\n }\n /**\n * @param {string} url\n * @param {number} timestamp\n *\n * @private\n */\n async setTimestamp(url, timestamp) {\n url = normalizeURL(url);\n const entry = {\n url,\n timestamp,\n cacheName: this._cacheName,\n // Creating an ID from the URL and cache name won't be necessary once\n // Edge switches to Chromium and all browsers we support work with\n // array keyPaths.\n id: this._getId(url),\n };\n const db = await this.getDb();\n const tx = db.transaction(CACHE_OBJECT_STORE, 'readwrite', {\n durability: 'relaxed',\n });\n await tx.store.put(entry);\n await tx.done;\n }\n /**\n * Returns the timestamp stored for a given URL.\n *\n * @param {string} url\n * @return {number | undefined}\n *\n * @private\n */\n async getTimestamp(url) {\n const db = await this.getDb();\n const entry = await db.get(CACHE_OBJECT_STORE, this._getId(url));\n return entry === null || entry === void 0 ? void 0 : entry.timestamp;\n }\n /**\n * Iterates through all the entries in the object store (from newest to\n * oldest) and removes entries once either `maxCount` is reached or the\n * entry's timestamp is less than `minTimestamp`.\n *\n * @param {number} minTimestamp\n * @param {number} maxCount\n * @return {Array}\n *\n * @private\n */\n async expireEntries(minTimestamp, maxCount) {\n const db = await this.getDb();\n let cursor = await db\n .transaction(CACHE_OBJECT_STORE)\n .store.index('timestamp')\n .openCursor(null, 'prev');\n const entriesToDelete = [];\n let entriesNotDeletedCount = 0;\n while (cursor) {\n const result = cursor.value;\n // TODO(philipwalton): once we can use a multi-key index, we\n // won't have to check `cacheName` here.\n if (result.cacheName === this._cacheName) {\n // Delete an entry if it's older than the max age or\n // if we already have the max number allowed.\n if ((minTimestamp && result.timestamp < minTimestamp) ||\n (maxCount && entriesNotDeletedCount >= maxCount)) {\n // TODO(philipwalton): we should be able to delete the\n // entry right here, but doing so causes an iteration\n // bug in Safari stable (fixed in TP). Instead we can\n // store the keys of the entries to delete, and then\n // delete the separate transactions.\n // https://github.com/GoogleChrome/workbox/issues/1978\n // cursor.delete();\n // We only need to return the URL, not the whole entry.\n entriesToDelete.push(cursor.value);\n }\n else {\n entriesNotDeletedCount++;\n }\n }\n cursor = await cursor.continue();\n }\n // TODO(philipwalton): once the Safari bug in the following issue is fixed,\n // we should be able to remove this loop and do the entry deletion in the\n // cursor loop above:\n // https://github.com/GoogleChrome/workbox/issues/1978\n const urlsDeleted = [];\n for (const entry of entriesToDelete) {\n await db.delete(CACHE_OBJECT_STORE, entry.id);\n urlsDeleted.push(entry.url);\n }\n return urlsDeleted;\n }\n /**\n * Takes a URL and returns an ID that will be unique in the object store.\n *\n * @param {string} url\n * @return {string}\n *\n * @private\n */\n _getId(url) {\n // Creating an ID from the URL and cache name won't be necessary once\n // Edge switches to Chromium and all browsers we support work with\n // array keyPaths.\n return this._cacheName + '|' + normalizeURL(url);\n }\n /**\n * Returns an open connection to the database.\n *\n * @private\n */\n async getDb() {\n if (!this._db) {\n this._db = await openDB(DB_NAME, 1, {\n upgrade: this._upgradeDbAndDeleteOldDbs.bind(this),\n });\n }\n return this._db;\n }\n}\nexport { CacheTimestampsModel };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { dontWaitFor } from 'workbox-core/_private/dontWaitFor.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { CacheTimestampsModel } from './models/CacheTimestampsModel.js';\nimport './_version.js';\n/**\n * The `CacheExpiration` class allows you define an expiration and / or\n * limit on the number of responses stored in a\n * [`Cache`](https://developer.mozilla.org/en-US/docs/Web/API/Cache).\n *\n * @memberof workbox-expiration\n */\nclass CacheExpiration {\n /**\n * To construct a new CacheExpiration instance you must provide at least\n * one of the `config` properties.\n *\n * @param {string} cacheName Name of the cache to apply restrictions to.\n * @param {Object} config\n * @param {number} [config.maxEntries] The maximum number of entries to cache.\n * Entries used the least will be removed as the maximum is reached.\n * @param {number} [config.maxAgeSeconds] The maximum age of an entry before\n * it's treated as stale and removed.\n * @param {Object} [config.matchOptions] The [`CacheQueryOptions`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/delete#Parameters)\n * that will be used when calling `delete()` on the cache.\n */\n constructor(cacheName, config = {}) {\n this._isRunning = false;\n this._rerunRequested = false;\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(cacheName, 'string', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n paramName: 'cacheName',\n });\n if (!(config.maxEntries || config.maxAgeSeconds)) {\n throw new WorkboxError('max-entries-or-age-required', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n });\n }\n if (config.maxEntries) {\n assert.isType(config.maxEntries, 'number', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n paramName: 'config.maxEntries',\n });\n }\n if (config.maxAgeSeconds) {\n assert.isType(config.maxAgeSeconds, 'number', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n paramName: 'config.maxAgeSeconds',\n });\n }\n }\n this._maxEntries = config.maxEntries;\n this._maxAgeSeconds = config.maxAgeSeconds;\n this._matchOptions = config.matchOptions;\n this._cacheName = cacheName;\n this._timestampModel = new CacheTimestampsModel(cacheName);\n }\n /**\n * Expires entries for the given cache and given criteria.\n */\n async expireEntries() {\n if (this._isRunning) {\n this._rerunRequested = true;\n return;\n }\n this._isRunning = true;\n const minTimestamp = this._maxAgeSeconds\n ? Date.now() - this._maxAgeSeconds * 1000\n : 0;\n const urlsExpired = await this._timestampModel.expireEntries(minTimestamp, this._maxEntries);\n // Delete URLs from the cache\n const cache = await self.caches.open(this._cacheName);\n for (const url of urlsExpired) {\n await cache.delete(url, this._matchOptions);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (urlsExpired.length > 0) {\n logger.groupCollapsed(`Expired ${urlsExpired.length} ` +\n `${urlsExpired.length === 1 ? 'entry' : 'entries'} and removed ` +\n `${urlsExpired.length === 1 ? 'it' : 'them'} from the ` +\n `'${this._cacheName}' cache.`);\n logger.log(`Expired the following ${urlsExpired.length === 1 ? 'URL' : 'URLs'}:`);\n urlsExpired.forEach((url) => logger.log(` ${url}`));\n logger.groupEnd();\n }\n else {\n logger.debug(`Cache expiration ran and found no entries to remove.`);\n }\n }\n this._isRunning = false;\n if (this._rerunRequested) {\n this._rerunRequested = false;\n dontWaitFor(this.expireEntries());\n }\n }\n /**\n * Update the timestamp for the given URL. This ensures the when\n * removing entries based on maximum entries, most recently used\n * is accurate or when expiring, the timestamp is up-to-date.\n *\n * @param {string} url\n */\n async updateTimestamp(url) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(url, 'string', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'updateTimestamp',\n paramName: 'url',\n });\n }\n await this._timestampModel.setTimestamp(url, Date.now());\n }\n /**\n * Can be used to check if a URL has expired or not before it's used.\n *\n * This requires a look up from IndexedDB, so can be slow.\n *\n * Note: This method will not remove the cached entry, call\n * `expireEntries()` to remove indexedDB and Cache entries.\n *\n * @param {string} url\n * @return {boolean}\n */\n async isURLExpired(url) {\n if (!this._maxAgeSeconds) {\n if (process.env.NODE_ENV !== 'production') {\n throw new WorkboxError(`expired-test-without-max-age`, {\n methodName: 'isURLExpired',\n paramName: 'maxAgeSeconds',\n });\n }\n return false;\n }\n else {\n const timestamp = await this._timestampModel.getTimestamp(url);\n const expireOlderThan = Date.now() - this._maxAgeSeconds * 1000;\n return timestamp !== undefined ? timestamp < expireOlderThan : true;\n }\n }\n /**\n * Removes the IndexedDB object store used to keep track of cache expiration\n * metadata.\n */\n async delete() {\n // Make sure we don't attempt another rerun if we're called in the middle of\n // a cache expiration.\n this._rerunRequested = false;\n await this._timestampModel.expireEntries(Infinity); // Expires all.\n }\n}\nexport { CacheExpiration };\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { dontWaitFor } from 'workbox-core/_private/dontWaitFor.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { registerQuotaErrorCallback } from 'workbox-core/registerQuotaErrorCallback.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { CacheExpiration } from './CacheExpiration.js';\nimport './_version.js';\n/**\n * This plugin can be used in a `workbox-strategy` to regularly enforce a\n * limit on the age and / or the number of cached requests.\n *\n * It can only be used with `workbox-strategy` instances that have a\n * [custom `cacheName` property set](/web/tools/workbox/guides/configure-workbox#custom_cache_names_in_strategies).\n * In other words, it can't be used to expire entries in strategy that uses the\n * default runtime cache name.\n *\n * Whenever a cached response is used or updated, this plugin will look\n * at the associated cache and remove any old or extra responses.\n *\n * When using `maxAgeSeconds`, responses may be used *once* after expiring\n * because the expiration clean up will not have occurred until *after* the\n * cached response has been used. If the response has a \"Date\" header, then\n * a light weight expiration check is performed and the response will not be\n * used immediately.\n *\n * When using `maxEntries`, the entry least-recently requested will be removed\n * from the cache first.\n *\n * @memberof workbox-expiration\n */\nclass ExpirationPlugin {\n /**\n * @param {ExpirationPluginOptions} config\n * @param {number} [config.maxEntries] The maximum number of entries to cache.\n * Entries used the least will be removed as the maximum is reached.\n * @param {number} [config.maxAgeSeconds] The maximum age of an entry before\n * it's treated as stale and removed.\n * @param {Object} [config.matchOptions] The [`CacheQueryOptions`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/delete#Parameters)\n * that will be used when calling `delete()` on the cache.\n * @param {boolean} [config.purgeOnQuotaError] Whether to opt this cache in to\n * automatic deletion if the available storage quota has been exceeded.\n */\n constructor(config = {}) {\n /**\n * A \"lifecycle\" callback that will be triggered automatically by the\n * `workbox-strategies` handlers when a `Response` is about to be returned\n * from a [Cache](https://developer.mozilla.org/en-US/docs/Web/API/Cache) to\n * the handler. It allows the `Response` to be inspected for freshness and\n * prevents it from being used if the `Response`'s `Date` header value is\n * older than the configured `maxAgeSeconds`.\n *\n * @param {Object} options\n * @param {string} options.cacheName Name of the cache the response is in.\n * @param {Response} options.cachedResponse The `Response` object that's been\n * read from a cache and whose freshness should be checked.\n * @return {Response} Either the `cachedResponse`, if it's\n * fresh, or `null` if the `Response` is older than `maxAgeSeconds`.\n *\n * @private\n */\n this.cachedResponseWillBeUsed = async ({ event, request, cacheName, cachedResponse, }) => {\n if (!cachedResponse) {\n return null;\n }\n const isFresh = this._isResponseDateFresh(cachedResponse);\n // Expire entries to ensure that even if the expiration date has\n // expired, it'll only be used once.\n const cacheExpiration = this._getCacheExpiration(cacheName);\n dontWaitFor(cacheExpiration.expireEntries());\n // Update the metadata for the request URL to the current timestamp,\n // but don't `await` it as we don't want to block the response.\n const updateTimestampDone = cacheExpiration.updateTimestamp(request.url);\n if (event) {\n try {\n event.waitUntil(updateTimestampDone);\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n // The event may not be a fetch event; only log the URL if it is.\n if ('request' in event) {\n logger.warn(`Unable to ensure service worker stays alive when ` +\n `updating cache entry for ` +\n `'${getFriendlyURL(event.request.url)}'.`);\n }\n }\n }\n }\n return isFresh ? cachedResponse : null;\n };\n /**\n * A \"lifecycle\" callback that will be triggered automatically by the\n * `workbox-strategies` handlers when an entry is added to a cache.\n *\n * @param {Object} options\n * @param {string} options.cacheName Name of the cache that was updated.\n * @param {string} options.request The Request for the cached entry.\n *\n * @private\n */\n this.cacheDidUpdate = async ({ cacheName, request, }) => {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(cacheName, 'string', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'cacheDidUpdate',\n paramName: 'cacheName',\n });\n assert.isInstance(request, Request, {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'cacheDidUpdate',\n paramName: 'request',\n });\n }\n const cacheExpiration = this._getCacheExpiration(cacheName);\n await cacheExpiration.updateTimestamp(request.url);\n await cacheExpiration.expireEntries();\n };\n if (process.env.NODE_ENV !== 'production') {\n if (!(config.maxEntries || config.maxAgeSeconds)) {\n throw new WorkboxError('max-entries-or-age-required', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'constructor',\n });\n }\n if (config.maxEntries) {\n assert.isType(config.maxEntries, 'number', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'constructor',\n paramName: 'config.maxEntries',\n });\n }\n if (config.maxAgeSeconds) {\n assert.isType(config.maxAgeSeconds, 'number', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'constructor',\n paramName: 'config.maxAgeSeconds',\n });\n }\n }\n this._config = config;\n this._maxAgeSeconds = config.maxAgeSeconds;\n this._cacheExpirations = new Map();\n if (config.purgeOnQuotaError) {\n registerQuotaErrorCallback(() => this.deleteCacheAndMetadata());\n }\n }\n /**\n * A simple helper method to return a CacheExpiration instance for a given\n * cache name.\n *\n * @param {string} cacheName\n * @return {CacheExpiration}\n *\n * @private\n */\n _getCacheExpiration(cacheName) {\n if (cacheName === cacheNames.getRuntimeName()) {\n throw new WorkboxError('expire-custom-caches-only');\n }\n let cacheExpiration = this._cacheExpirations.get(cacheName);\n if (!cacheExpiration) {\n cacheExpiration = new CacheExpiration(cacheName, this._config);\n this._cacheExpirations.set(cacheName, cacheExpiration);\n }\n return cacheExpiration;\n }\n /**\n * @param {Response} cachedResponse\n * @return {boolean}\n *\n * @private\n */\n _isResponseDateFresh(cachedResponse) {\n if (!this._maxAgeSeconds) {\n // We aren't expiring by age, so return true, it's fresh\n return true;\n }\n // Check if the 'date' header will suffice a quick expiration check.\n // See https://github.com/GoogleChromeLabs/sw-toolbox/issues/164 for\n // discussion.\n const dateHeaderTimestamp = this._getDateHeaderTimestamp(cachedResponse);\n if (dateHeaderTimestamp === null) {\n // Unable to parse date, so assume it's fresh.\n return true;\n }\n // If we have a valid headerTime, then our response is fresh iff the\n // headerTime plus maxAgeSeconds is greater than the current time.\n const now = Date.now();\n return dateHeaderTimestamp >= now - this._maxAgeSeconds * 1000;\n }\n /**\n * This method will extract the data header and parse it into a useful\n * value.\n *\n * @param {Response} cachedResponse\n * @return {number|null}\n *\n * @private\n */\n _getDateHeaderTimestamp(cachedResponse) {\n if (!cachedResponse.headers.has('date')) {\n return null;\n }\n const dateHeader = cachedResponse.headers.get('date');\n const parsedDate = new Date(dateHeader);\n const headerTime = parsedDate.getTime();\n // If the Date header was invalid for some reason, parsedDate.getTime()\n // will return NaN.\n if (isNaN(headerTime)) {\n return null;\n }\n return headerTime;\n }\n /**\n * This is a helper method that performs two operations:\n *\n * - Deletes *all* the underlying Cache instances associated with this plugin\n * instance, by calling caches.delete() on your behalf.\n * - Deletes the metadata from IndexedDB used to keep track of expiration\n * details for each Cache instance.\n *\n * When using cache expiration, calling this method is preferable to calling\n * `caches.delete()` directly, since this will ensure that the IndexedDB\n * metadata is also cleanly removed and open IndexedDB instances are deleted.\n *\n * Note that if you're *not* using cache expiration for a given cache, calling\n * `caches.delete()` and passing in the cache's name should be sufficient.\n * There is no Workbox-specific method needed for cleanup in that case.\n */\n async deleteCacheAndMetadata() {\n // Do this one at a time instead of all at once via `Promise.all()` to\n // reduce the chance of inconsistency if a promise rejects.\n for (const [cacheName, cacheExpiration] of this._cacheExpirations) {\n await self.caches.delete(cacheName);\n await cacheExpiration.delete();\n }\n // Reset this._cacheExpirations to its initial state.\n this._cacheExpirations = new Map();\n }\n}\nexport { ExpirationPlugin };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from './_private/logger.js';\nimport { assert } from './_private/assert.js';\nimport { quotaErrorCallbacks } from './models/quotaErrorCallbacks.js';\nimport './_version.js';\n/**\n * Adds a function to the set of quotaErrorCallbacks that will be executed if\n * there's a quota error.\n *\n * @param {Function} callback\n * @memberof workbox-core\n */\n// Can't change Function type\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction registerQuotaErrorCallback(callback) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(callback, 'function', {\n moduleName: 'workbox-core',\n funcName: 'register',\n paramName: 'callback',\n });\n }\n quotaErrorCallbacks.add(callback);\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Registered a callback to respond to quota errors.', callback);\n }\n}\nexport { registerQuotaErrorCallback };\n","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport '../_version.js';\n// Name of the search parameter used to store revision info.\nconst REVISION_SEARCH_PARAM = '__WB_REVISION__';\n/**\n * Converts a manifest entry into a versioned URL suitable for precaching.\n *\n * @param {Object|string} entry\n * @return {string} A URL with versioning info.\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function createCacheKey(entry) {\n if (!entry) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', { entry });\n }\n // If a precache manifest entry is a string, it's assumed to be a versioned\n // URL, like '/app.abcd1234.js'. Return as-is.\n if (typeof entry === 'string') {\n const urlObject = new URL(entry, location.href);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n const { revision, url } = entry;\n if (!url) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', { entry });\n }\n // If there's just a URL and no revision, then it's also assumed to be a\n // versioned URL.\n if (!revision) {\n const urlObject = new URL(url, location.href);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n // Otherwise, construct a properly versioned URL using the custom Workbox\n // search parameter along with the revision info.\n const cacheKeyURL = new URL(url, location.href);\n const originalURL = new URL(url, location.href);\n cacheKeyURL.searchParams.set(REVISION_SEARCH_PARAM, revision);\n return {\n cacheKey: cacheKeyURL.href,\n url: originalURL.href,\n };\n}\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A plugin, designed to be used with PrecacheController, to determine the\n * of assets that were updated (or not updated) during the install event.\n *\n * @private\n */\nclass PrecacheInstallReportPlugin {\n constructor() {\n this.updatedURLs = [];\n this.notUpdatedURLs = [];\n this.handlerWillStart = async ({ request, state, }) => {\n // TODO: `state` should never be undefined...\n if (state) {\n state.originalRequest = request;\n }\n };\n this.cachedResponseWillBeUsed = async ({ event, state, cachedResponse, }) => {\n if (event.type === 'install') {\n if (state &&\n state.originalRequest &&\n state.originalRequest instanceof Request) {\n // TODO: `state` should never be undefined...\n const url = state.originalRequest.url;\n if (cachedResponse) {\n this.notUpdatedURLs.push(url);\n }\n else {\n this.updatedURLs.push(url);\n }\n }\n }\n return cachedResponse;\n };\n }\n}\nexport { PrecacheInstallReportPlugin };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A plugin, designed to be used with PrecacheController, to translate URLs into\n * the corresponding cache key, based on the current revision info.\n *\n * @private\n */\nclass PrecacheCacheKeyPlugin {\n constructor({ precacheController }) {\n this.cacheKeyWillBeUsed = async ({ request, params, }) => {\n // Params is type any, can't change right now.\n /* eslint-disable */\n const cacheKey = (params === null || params === void 0 ? void 0 : params.cacheKey) ||\n this._precacheController.getCacheKeyForURL(request.url);\n /* eslint-enable */\n return cacheKey\n ? new Request(cacheKey, { headers: request.headers })\n : request;\n };\n this._precacheController = precacheController;\n }\n}\nexport { PrecacheCacheKeyPlugin };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheMatchIgnoreParams } from 'workbox-core/_private/cacheMatchIgnoreParams.js';\nimport { Deferred } from 'workbox-core/_private/Deferred.js';\nimport { executeQuotaErrorCallbacks } from 'workbox-core/_private/executeQuotaErrorCallbacks.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { timeout } from 'workbox-core/_private/timeout.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\nfunction toRequest(input) {\n return typeof input === 'string' ? new Request(input) : input;\n}\n/**\n * A class created every time a Strategy instance instance calls\n * {@link workbox-strategies.Strategy~handle} or\n * {@link workbox-strategies.Strategy~handleAll} that wraps all fetch and\n * cache actions around plugin callbacks and keeps track of when the strategy\n * is \"done\" (i.e. all added `event.waitUntil()` promises have resolved).\n *\n * @memberof workbox-strategies\n */\nclass StrategyHandler {\n /**\n * Creates a new instance associated with the passed strategy and event\n * that's handling the request.\n *\n * The constructor also initializes the state that will be passed to each of\n * the plugins handling this request.\n *\n * @param {workbox-strategies.Strategy} strategy\n * @param {Object} options\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params] The return value from the\n * {@link workbox-routing~matchCallback} (if applicable).\n */\n constructor(strategy, options) {\n this._cacheKeys = {};\n /**\n * The request the strategy is performing (passed to the strategy's\n * `handle()` or `handleAll()` method).\n * @name request\n * @instance\n * @type {Request}\n * @memberof workbox-strategies.StrategyHandler\n */\n /**\n * The event associated with this request.\n * @name event\n * @instance\n * @type {ExtendableEvent}\n * @memberof workbox-strategies.StrategyHandler\n */\n /**\n * A `URL` instance of `request.url` (if passed to the strategy's\n * `handle()` or `handleAll()` method).\n * Note: the `url` param will be present if the strategy was invoked\n * from a workbox `Route` object.\n * @name url\n * @instance\n * @type {URL|undefined}\n * @memberof workbox-strategies.StrategyHandler\n */\n /**\n * A `param` value (if passed to the strategy's\n * `handle()` or `handleAll()` method).\n * Note: the `param` param will be present if the strategy was invoked\n * from a workbox `Route` object and the\n * {@link workbox-routing~matchCallback} returned\n * a truthy value (it will be that value).\n * @name params\n * @instance\n * @type {*|undefined}\n * @memberof workbox-strategies.StrategyHandler\n */\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(options.event, ExtendableEvent, {\n moduleName: 'workbox-strategies',\n className: 'StrategyHandler',\n funcName: 'constructor',\n paramName: 'options.event',\n });\n }\n Object.assign(this, options);\n this.event = options.event;\n this._strategy = strategy;\n this._handlerDeferred = new Deferred();\n this._extendLifetimePromises = [];\n // Copy the plugins list (since it's mutable on the strategy),\n // so any mutations don't affect this handler instance.\n this._plugins = [...strategy.plugins];\n this._pluginStateMap = new Map();\n for (const plugin of this._plugins) {\n this._pluginStateMap.set(plugin, {});\n }\n this.event.waitUntil(this._handlerDeferred.promise);\n }\n /**\n * Fetches a given request (and invokes any applicable plugin callback\n * methods) using the `fetchOptions` (for non-navigation requests) and\n * `plugins` defined on the `Strategy` object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - `requestWillFetch()`\n * - `fetchDidSucceed()`\n * - `fetchDidFail()`\n *\n * @param {Request|string} input The URL or request to fetch.\n * @return {Promise}\n */\n async fetch(input) {\n const { event } = this;\n let request = toRequest(input);\n if (request.mode === 'navigate' &&\n event instanceof FetchEvent &&\n event.preloadResponse) {\n const possiblePreloadResponse = (await event.preloadResponse);\n if (possiblePreloadResponse) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Using a preloaded navigation response for ` +\n `'${getFriendlyURL(request.url)}'`);\n }\n return possiblePreloadResponse;\n }\n }\n // If there is a fetchDidFail plugin, we need to save a clone of the\n // original request before it's either modified by a requestWillFetch\n // plugin or before the original request's body is consumed via fetch().\n const originalRequest = this.hasCallback('fetchDidFail')\n ? request.clone()\n : null;\n try {\n for (const cb of this.iterateCallbacks('requestWillFetch')) {\n request = await cb({ request: request.clone(), event });\n }\n }\n catch (err) {\n if (err instanceof Error) {\n throw new WorkboxError('plugin-error-request-will-fetch', {\n thrownErrorMessage: err.message,\n });\n }\n }\n // The request can be altered by plugins with `requestWillFetch` making\n // the original request (most likely from a `fetch` event) different\n // from the Request we make. Pass both to `fetchDidFail` to aid debugging.\n const pluginFilteredRequest = request.clone();\n try {\n let fetchResponse;\n // See https://github.com/GoogleChrome/workbox/issues/1796\n fetchResponse = await fetch(request, request.mode === 'navigate' ? undefined : this._strategy.fetchOptions);\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Network request for ` +\n `'${getFriendlyURL(request.url)}' returned a response with ` +\n `status '${fetchResponse.status}'.`);\n }\n for (const callback of this.iterateCallbacks('fetchDidSucceed')) {\n fetchResponse = await callback({\n event,\n request: pluginFilteredRequest,\n response: fetchResponse,\n });\n }\n return fetchResponse;\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Network request for ` +\n `'${getFriendlyURL(request.url)}' threw an error.`, error);\n }\n // `originalRequest` will only exist if a `fetchDidFail` callback\n // is being used (see above).\n if (originalRequest) {\n await this.runCallbacks('fetchDidFail', {\n error: error,\n event,\n originalRequest: originalRequest.clone(),\n request: pluginFilteredRequest.clone(),\n });\n }\n throw error;\n }\n }\n /**\n * Calls `this.fetch()` and (in the background) runs `this.cachePut()` on\n * the response generated by `this.fetch()`.\n *\n * The call to `this.cachePut()` automatically invokes `this.waitUntil()`,\n * so you do not have to manually call `waitUntil()` on the event.\n *\n * @param {Request|string} input The request or URL to fetch and cache.\n * @return {Promise}\n */\n async fetchAndCachePut(input) {\n const response = await this.fetch(input);\n const responseClone = response.clone();\n void this.waitUntil(this.cachePut(input, responseClone));\n return response;\n }\n /**\n * Matches a request from the cache (and invokes any applicable plugin\n * callback methods) using the `cacheName`, `matchOptions`, and `plugins`\n * defined on the strategy object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - cacheKeyWillByUsed()\n * - cachedResponseWillByUsed()\n *\n * @param {Request|string} key The Request or URL to use as the cache key.\n * @return {Promise} A matching response, if found.\n */\n async cacheMatch(key) {\n const request = toRequest(key);\n let cachedResponse;\n const { cacheName, matchOptions } = this._strategy;\n const effectiveRequest = await this.getCacheKey(request, 'read');\n const multiMatchOptions = Object.assign(Object.assign({}, matchOptions), { cacheName });\n cachedResponse = await caches.match(effectiveRequest, multiMatchOptions);\n if (process.env.NODE_ENV !== 'production') {\n if (cachedResponse) {\n logger.debug(`Found a cached response in '${cacheName}'.`);\n }\n else {\n logger.debug(`No cached response found in '${cacheName}'.`);\n }\n }\n for (const callback of this.iterateCallbacks('cachedResponseWillBeUsed')) {\n cachedResponse =\n (await callback({\n cacheName,\n matchOptions,\n cachedResponse,\n request: effectiveRequest,\n event: this.event,\n })) || undefined;\n }\n return cachedResponse;\n }\n /**\n * Puts a request/response pair in the cache (and invokes any applicable\n * plugin callback methods) using the `cacheName` and `plugins` defined on\n * the strategy object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - cacheKeyWillByUsed()\n * - cacheWillUpdate()\n * - cacheDidUpdate()\n *\n * @param {Request|string} key The request or URL to use as the cache key.\n * @param {Response} response The response to cache.\n * @return {Promise} `false` if a cacheWillUpdate caused the response\n * not be cached, and `true` otherwise.\n */\n async cachePut(key, response) {\n const request = toRequest(key);\n // Run in the next task to avoid blocking other cache reads.\n // https://github.com/w3c/ServiceWorker/issues/1397\n await timeout(0);\n const effectiveRequest = await this.getCacheKey(request, 'write');\n if (process.env.NODE_ENV !== 'production') {\n if (effectiveRequest.method && effectiveRequest.method !== 'GET') {\n throw new WorkboxError('attempt-to-cache-non-get-request', {\n url: getFriendlyURL(effectiveRequest.url),\n method: effectiveRequest.method,\n });\n }\n // See https://github.com/GoogleChrome/workbox/issues/2818\n const vary = response.headers.get('Vary');\n if (vary) {\n logger.debug(`The response for ${getFriendlyURL(effectiveRequest.url)} ` +\n `has a 'Vary: ${vary}' header. ` +\n `Consider setting the {ignoreVary: true} option on your strategy ` +\n `to ensure cache matching and deletion works as expected.`);\n }\n }\n if (!response) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Cannot cache non-existent response for ` +\n `'${getFriendlyURL(effectiveRequest.url)}'.`);\n }\n throw new WorkboxError('cache-put-with-no-response', {\n url: getFriendlyURL(effectiveRequest.url),\n });\n }\n const responseToCache = await this._ensureResponseSafeToCache(response);\n if (!responseToCache) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Response '${getFriendlyURL(effectiveRequest.url)}' ` +\n `will not be cached.`, responseToCache);\n }\n return false;\n }\n const { cacheName, matchOptions } = this._strategy;\n const cache = await self.caches.open(cacheName);\n const hasCacheUpdateCallback = this.hasCallback('cacheDidUpdate');\n const oldResponse = hasCacheUpdateCallback\n ? await cacheMatchIgnoreParams(\n // TODO(philipwalton): the `__WB_REVISION__` param is a precaching\n // feature. Consider into ways to only add this behavior if using\n // precaching.\n cache, effectiveRequest.clone(), ['__WB_REVISION__'], matchOptions)\n : null;\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Updating the '${cacheName}' cache with a new Response ` +\n `for ${getFriendlyURL(effectiveRequest.url)}.`);\n }\n try {\n await cache.put(effectiveRequest, hasCacheUpdateCallback ? responseToCache.clone() : responseToCache);\n }\n catch (error) {\n if (error instanceof Error) {\n // See https://developer.mozilla.org/en-US/docs/Web/API/DOMException#exception-QuotaExceededError\n if (error.name === 'QuotaExceededError') {\n await executeQuotaErrorCallbacks();\n }\n throw error;\n }\n }\n for (const callback of this.iterateCallbacks('cacheDidUpdate')) {\n await callback({\n cacheName,\n oldResponse,\n newResponse: responseToCache.clone(),\n request: effectiveRequest,\n event: this.event,\n });\n }\n return true;\n }\n /**\n * Checks the list of plugins for the `cacheKeyWillBeUsed` callback, and\n * executes any of those callbacks found in sequence. The final `Request`\n * object returned by the last plugin is treated as the cache key for cache\n * reads and/or writes. If no `cacheKeyWillBeUsed` plugin callbacks have\n * been registered, the passed request is returned unmodified\n *\n * @param {Request} request\n * @param {string} mode\n * @return {Promise}\n */\n async getCacheKey(request, mode) {\n const key = `${request.url} | ${mode}`;\n if (!this._cacheKeys[key]) {\n let effectiveRequest = request;\n for (const callback of this.iterateCallbacks('cacheKeyWillBeUsed')) {\n effectiveRequest = toRequest(await callback({\n mode,\n request: effectiveRequest,\n event: this.event,\n // params has a type any can't change right now.\n params: this.params, // eslint-disable-line\n }));\n }\n this._cacheKeys[key] = effectiveRequest;\n }\n return this._cacheKeys[key];\n }\n /**\n * Returns true if the strategy has at least one plugin with the given\n * callback.\n *\n * @param {string} name The name of the callback to check for.\n * @return {boolean}\n */\n hasCallback(name) {\n for (const plugin of this._strategy.plugins) {\n if (name in plugin) {\n return true;\n }\n }\n return false;\n }\n /**\n * Runs all plugin callbacks matching the given name, in order, passing the\n * given param object (merged ith the current plugin state) as the only\n * argument.\n *\n * Note: since this method runs all plugins, it's not suitable for cases\n * where the return value of a callback needs to be applied prior to calling\n * the next callback. See\n * {@link workbox-strategies.StrategyHandler#iterateCallbacks}\n * below for how to handle that case.\n *\n * @param {string} name The name of the callback to run within each plugin.\n * @param {Object} param The object to pass as the first (and only) param\n * when executing each callback. This object will be merged with the\n * current plugin state prior to callback execution.\n */\n async runCallbacks(name, param) {\n for (const callback of this.iterateCallbacks(name)) {\n // TODO(philipwalton): not sure why `any` is needed. It seems like\n // this should work with `as WorkboxPluginCallbackParam[C]`.\n await callback(param);\n }\n }\n /**\n * Accepts a callback and returns an iterable of matching plugin callbacks,\n * where each callback is wrapped with the current handler state (i.e. when\n * you call each callback, whatever object parameter you pass it will\n * be merged with the plugin's current state).\n *\n * @param {string} name The name fo the callback to run\n * @return {Array}\n */\n *iterateCallbacks(name) {\n for (const plugin of this._strategy.plugins) {\n if (typeof plugin[name] === 'function') {\n const state = this._pluginStateMap.get(plugin);\n const statefulCallback = (param) => {\n const statefulParam = Object.assign(Object.assign({}, param), { state });\n // TODO(philipwalton): not sure why `any` is needed. It seems like\n // this should work with `as WorkboxPluginCallbackParam[C]`.\n return plugin[name](statefulParam);\n };\n yield statefulCallback;\n }\n }\n }\n /**\n * Adds a promise to the\n * [extend lifetime promises]{@link https://w3c.github.io/ServiceWorker/#extendableevent-extend-lifetime-promises}\n * of the event event associated with the request being handled (usually a\n * `FetchEvent`).\n *\n * Note: you can await\n * {@link workbox-strategies.StrategyHandler~doneWaiting}\n * to know when all added promises have settled.\n *\n * @param {Promise} promise A promise to add to the extend lifetime promises\n * of the event that triggered the request.\n */\n waitUntil(promise) {\n this._extendLifetimePromises.push(promise);\n return promise;\n }\n /**\n * Returns a promise that resolves once all promises passed to\n * {@link workbox-strategies.StrategyHandler~waitUntil}\n * have settled.\n *\n * Note: any work done after `doneWaiting()` settles should be manually\n * passed to an event's `waitUntil()` method (not this handler's\n * `waitUntil()` method), otherwise the service worker thread my be killed\n * prior to your work completing.\n */\n async doneWaiting() {\n let promise;\n while ((promise = this._extendLifetimePromises.shift())) {\n await promise;\n }\n }\n /**\n * Stops running the strategy and immediately resolves any pending\n * `waitUntil()` promises.\n */\n destroy() {\n this._handlerDeferred.resolve(null);\n }\n /**\n * This method will call cacheWillUpdate on the available plugins (or use\n * status === 200) to determine if the Response is safe and valid to cache.\n *\n * @param {Request} options.request\n * @param {Response} options.response\n * @return {Promise}\n *\n * @private\n */\n async _ensureResponseSafeToCache(response) {\n let responseToCache = response;\n let pluginsUsed = false;\n for (const callback of this.iterateCallbacks('cacheWillUpdate')) {\n responseToCache =\n (await callback({\n request: this.request,\n response: responseToCache,\n event: this.event,\n })) || undefined;\n pluginsUsed = true;\n if (!responseToCache) {\n break;\n }\n }\n if (!pluginsUsed) {\n if (responseToCache && responseToCache.status !== 200) {\n responseToCache = undefined;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (responseToCache) {\n if (responseToCache.status !== 200) {\n if (responseToCache.status === 0) {\n logger.warn(`The response for '${this.request.url}' ` +\n `is an opaque response. The caching strategy that you're ` +\n `using will not cache opaque responses by default.`);\n }\n else {\n logger.debug(`The response for '${this.request.url}' ` +\n `returned a status code of '${response.status}' and won't ` +\n `be cached as a result.`);\n }\n }\n }\n }\n }\n return responseToCache;\n }\n}\nexport { StrategyHandler };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { StrategyHandler } from './StrategyHandler.js';\nimport './_version.js';\n/**\n * An abstract base class that all other strategy classes must extend from:\n *\n * @memberof workbox-strategies\n */\nclass Strategy {\n /**\n * Creates a new instance of the strategy and sets all documented option\n * properties as public instance properties.\n *\n * Note: if a custom strategy class extends the base Strategy class and does\n * not need more than these properties, it does not need to define its own\n * constructor.\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * {@link workbox-core.cacheNames}.\n * @param {Array} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)\n * `fetch()` requests made by this strategy.\n * @param {Object} [options.matchOptions] The\n * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n */\n constructor(options = {}) {\n /**\n * Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * {@link workbox-core.cacheNames}.\n *\n * @type {string}\n */\n this.cacheName = cacheNames.getRuntimeName(options.cacheName);\n /**\n * The list\n * [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * used by this strategy.\n *\n * @type {Array}\n */\n this.plugins = options.plugins || [];\n /**\n * Values passed along to the\n * [`init`]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters}\n * of all fetch() requests made by this strategy.\n *\n * @type {Object}\n */\n this.fetchOptions = options.fetchOptions;\n /**\n * The\n * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n *\n * @type {Object}\n */\n this.matchOptions = options.matchOptions;\n }\n /**\n * Perform a request strategy and returns a `Promise` that will resolve with\n * a `Response`, invoking all relevant plugin callbacks.\n *\n * When a strategy instance is registered with a Workbox\n * {@link workbox-routing.Route}, this method is automatically\n * called when the route matches.\n *\n * Alternatively, this method can be used in a standalone `FetchEvent`\n * listener by passing it to `event.respondWith()`.\n *\n * @param {FetchEvent|Object} options A `FetchEvent` or an object with the\n * properties listed below.\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params]\n */\n handle(options) {\n const [responseDone] = this.handleAll(options);\n return responseDone;\n }\n /**\n * Similar to {@link workbox-strategies.Strategy~handle}, but\n * instead of just returning a `Promise` that resolves to a `Response` it\n * it will return an tuple of `[response, done]` promises, where the former\n * (`response`) is equivalent to what `handle()` returns, and the latter is a\n * Promise that will resolve once any promises that were added to\n * `event.waitUntil()` as part of performing the strategy have completed.\n *\n * You can await the `done` promise to ensure any extra work performed by\n * the strategy (usually caching responses) completes successfully.\n *\n * @param {FetchEvent|Object} options A `FetchEvent` or an object with the\n * properties listed below.\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params]\n * @return {Array} A tuple of [response, done]\n * promises that can be used to determine when the response resolves as\n * well as when the handler has completed all its work.\n */\n handleAll(options) {\n // Allow for flexible options to be passed.\n if (options instanceof FetchEvent) {\n options = {\n event: options,\n request: options.request,\n };\n }\n const event = options.event;\n const request = typeof options.request === 'string'\n ? new Request(options.request)\n : options.request;\n const params = 'params' in options ? options.params : undefined;\n const handler = new StrategyHandler(this, { event, request, params });\n const responseDone = this._getResponse(handler, request, event);\n const handlerDone = this._awaitComplete(responseDone, handler, request, event);\n // Return an array of promises, suitable for use with Promise.all().\n return [responseDone, handlerDone];\n }\n async _getResponse(handler, request, event) {\n await handler.runCallbacks('handlerWillStart', { event, request });\n let response = undefined;\n try {\n response = await this._handle(request, handler);\n // The \"official\" Strategy subclasses all throw this error automatically,\n // but in case a third-party Strategy doesn't, ensure that we have a\n // consistent failure when there's no response or an error response.\n if (!response || response.type === 'error') {\n throw new WorkboxError('no-response', { url: request.url });\n }\n }\n catch (error) {\n if (error instanceof Error) {\n for (const callback of handler.iterateCallbacks('handlerDidError')) {\n response = await callback({ error, event, request });\n if (response) {\n break;\n }\n }\n }\n if (!response) {\n throw error;\n }\n else if (process.env.NODE_ENV !== 'production') {\n logger.log(`While responding to '${getFriendlyURL(request.url)}', ` +\n `an ${error instanceof Error ? error.toString() : ''} error occurred. Using a fallback response provided by ` +\n `a handlerDidError plugin.`);\n }\n }\n for (const callback of handler.iterateCallbacks('handlerWillRespond')) {\n response = await callback({ event, request, response });\n }\n return response;\n }\n async _awaitComplete(responseDone, handler, request, event) {\n let response;\n let error;\n try {\n response = await responseDone;\n }\n catch (error) {\n // Ignore errors, as response errors should be caught via the `response`\n // promise above. The `done` promise will only throw for errors in\n // promises passed to `handler.waitUntil()`.\n }\n try {\n await handler.runCallbacks('handlerDidRespond', {\n event,\n request,\n response,\n });\n await handler.doneWaiting();\n }\n catch (waitUntilError) {\n if (waitUntilError instanceof Error) {\n error = waitUntilError;\n }\n }\n await handler.runCallbacks('handlerDidComplete', {\n event,\n request,\n response,\n error: error,\n });\n handler.destroy();\n if (error) {\n throw error;\n }\n }\n}\nexport { Strategy };\n/**\n * Classes extending the `Strategy` based class should implement this method,\n * and leverage the {@link workbox-strategies.StrategyHandler}\n * arg to perform all fetching and cache logic, which will ensure all relevant\n * cache, cache options, fetch options and plugins are used (per the current\n * strategy instance).\n *\n * @name _handle\n * @instance\n * @abstract\n * @function\n * @param {Request} request\n * @param {workbox-strategies.StrategyHandler} handler\n * @return {Promise}\n *\n * @memberof workbox-strategies.Strategy\n */\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { copyResponse } from 'workbox-core/copyResponse.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Strategy } from 'workbox-strategies/Strategy.js';\nimport './_version.js';\n/**\n * A {@link workbox-strategies.Strategy} implementation\n * specifically designed to work with\n * {@link workbox-precaching.PrecacheController}\n * to both cache and fetch precached assets.\n *\n * Note: an instance of this class is created automatically when creating a\n * `PrecacheController`; it's generally not necessary to create this yourself.\n *\n * @extends workbox-strategies.Strategy\n * @memberof workbox-precaching\n */\nclass PrecacheStrategy extends Strategy {\n /**\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * {@link workbox-core.cacheNames}.\n * @param {Array} [options.plugins] {@link https://developers.google.com/web/tools/workbox/guides/using-plugins|Plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters|init}\n * of all fetch() requests made by this strategy.\n * @param {Object} [options.matchOptions] The\n * {@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions|CacheQueryOptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to\n * get the response from the network if there's a precache miss.\n */\n constructor(options = {}) {\n options.cacheName = cacheNames.getPrecacheName(options.cacheName);\n super(options);\n this._fallbackToNetwork =\n options.fallbackToNetwork === false ? false : true;\n // Redirected responses cannot be used to satisfy a navigation request, so\n // any redirected response must be \"copied\" rather than cloned, so the new\n // response doesn't contain the `redirected` flag. See:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=669363&desc=2#c1\n this.plugins.push(PrecacheStrategy.copyRedirectedCacheableResponsesPlugin);\n }\n /**\n * @private\n * @param {Request|string} request A request to run this strategy for.\n * @param {workbox-strategies.StrategyHandler} handler The event that\n * triggered the request.\n * @return {Promise}\n */\n async _handle(request, handler) {\n const response = await handler.cacheMatch(request);\n if (response) {\n return response;\n }\n // If this is an `install` event for an entry that isn't already cached,\n // then populate the cache.\n if (handler.event && handler.event.type === 'install') {\n return await this._handleInstall(request, handler);\n }\n // Getting here means something went wrong. An entry that should have been\n // precached wasn't found in the cache.\n return await this._handleFetch(request, handler);\n }\n async _handleFetch(request, handler) {\n let response;\n const params = (handler.params || {});\n // Fall back to the network if we're configured to do so.\n if (this._fallbackToNetwork) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`The precached response for ` +\n `${getFriendlyURL(request.url)} in ${this.cacheName} was not ` +\n `found. Falling back to the network.`);\n }\n const integrityInManifest = params.integrity;\n const integrityInRequest = request.integrity;\n const noIntegrityConflict = !integrityInRequest || integrityInRequest === integrityInManifest;\n // Do not add integrity if the original request is no-cors\n // See https://github.com/GoogleChrome/workbox/issues/3096\n response = await handler.fetch(new Request(request, {\n integrity: request.mode !== 'no-cors'\n ? integrityInRequest || integrityInManifest\n : undefined,\n }));\n // It's only \"safe\" to repair the cache if we're using SRI to guarantee\n // that the response matches the precache manifest's expectations,\n // and there's either a) no integrity property in the incoming request\n // or b) there is an integrity, and it matches the precache manifest.\n // See https://github.com/GoogleChrome/workbox/issues/2858\n // Also if the original request users no-cors we don't use integrity.\n // See https://github.com/GoogleChrome/workbox/issues/3096\n if (integrityInManifest &&\n noIntegrityConflict &&\n request.mode !== 'no-cors') {\n this._useDefaultCacheabilityPluginIfNeeded();\n const wasCached = await handler.cachePut(request, response.clone());\n if (process.env.NODE_ENV !== 'production') {\n if (wasCached) {\n logger.log(`A response for ${getFriendlyURL(request.url)} ` +\n `was used to \"repair\" the precache.`);\n }\n }\n }\n }\n else {\n // This shouldn't normally happen, but there are edge cases:\n // https://github.com/GoogleChrome/workbox/issues/1441\n throw new WorkboxError('missing-precache-entry', {\n cacheName: this.cacheName,\n url: request.url,\n });\n }\n if (process.env.NODE_ENV !== 'production') {\n const cacheKey = params.cacheKey || (await handler.getCacheKey(request, 'read'));\n // Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Precaching is responding to: ` + getFriendlyURL(request.url));\n logger.log(`Serving the precached url: ${getFriendlyURL(cacheKey instanceof Request ? cacheKey.url : cacheKey)}`);\n logger.groupCollapsed(`View request details here.`);\n logger.log(request);\n logger.groupEnd();\n logger.groupCollapsed(`View response details here.`);\n logger.log(response);\n logger.groupEnd();\n logger.groupEnd();\n }\n return response;\n }\n async _handleInstall(request, handler) {\n this._useDefaultCacheabilityPluginIfNeeded();\n const response = await handler.fetch(request);\n // Make sure we defer cachePut() until after we know the response\n // should be cached; see https://github.com/GoogleChrome/workbox/issues/2737\n const wasCached = await handler.cachePut(request, response.clone());\n if (!wasCached) {\n // Throwing here will lead to the `install` handler failing, which\n // we want to do if *any* of the responses aren't safe to cache.\n throw new WorkboxError('bad-precaching-response', {\n url: request.url,\n status: response.status,\n });\n }\n return response;\n }\n /**\n * This method is complex, as there a number of things to account for:\n *\n * The `plugins` array can be set at construction, and/or it might be added to\n * to at any time before the strategy is used.\n *\n * At the time the strategy is used (i.e. during an `install` event), there\n * needs to be at least one plugin that implements `cacheWillUpdate` in the\n * array, other than `copyRedirectedCacheableResponsesPlugin`.\n *\n * - If this method is called and there are no suitable `cacheWillUpdate`\n * plugins, we need to add `defaultPrecacheCacheabilityPlugin`.\n *\n * - If this method is called and there is exactly one `cacheWillUpdate`, then\n * we don't have to do anything (this might be a previously added\n * `defaultPrecacheCacheabilityPlugin`, or it might be a custom plugin).\n *\n * - If this method is called and there is more than one `cacheWillUpdate`,\n * then we need to check if one is `defaultPrecacheCacheabilityPlugin`. If so,\n * we need to remove it. (This situation is unlikely, but it could happen if\n * the strategy is used multiple times, the first without a `cacheWillUpdate`,\n * and then later on after manually adding a custom `cacheWillUpdate`.)\n *\n * See https://github.com/GoogleChrome/workbox/issues/2737 for more context.\n *\n * @private\n */\n _useDefaultCacheabilityPluginIfNeeded() {\n let defaultPluginIndex = null;\n let cacheWillUpdatePluginCount = 0;\n for (const [index, plugin] of this.plugins.entries()) {\n // Ignore the copy redirected plugin when determining what to do.\n if (plugin === PrecacheStrategy.copyRedirectedCacheableResponsesPlugin) {\n continue;\n }\n // Save the default plugin's index, in case it needs to be removed.\n if (plugin === PrecacheStrategy.defaultPrecacheCacheabilityPlugin) {\n defaultPluginIndex = index;\n }\n if (plugin.cacheWillUpdate) {\n cacheWillUpdatePluginCount++;\n }\n }\n if (cacheWillUpdatePluginCount === 0) {\n this.plugins.push(PrecacheStrategy.defaultPrecacheCacheabilityPlugin);\n }\n else if (cacheWillUpdatePluginCount > 1 && defaultPluginIndex !== null) {\n // Only remove the default plugin; multiple custom plugins are allowed.\n this.plugins.splice(defaultPluginIndex, 1);\n }\n // Nothing needs to be done if cacheWillUpdatePluginCount is 1\n }\n}\nPrecacheStrategy.defaultPrecacheCacheabilityPlugin = {\n async cacheWillUpdate({ response }) {\n if (!response || response.status >= 400) {\n return null;\n }\n return response;\n },\n};\nPrecacheStrategy.copyRedirectedCacheableResponsesPlugin = {\n async cacheWillUpdate({ response }) {\n return response.redirected ? await copyResponse(response) : response;\n },\n};\nexport { PrecacheStrategy };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { waitUntil } from 'workbox-core/_private/waitUntil.js';\nimport { createCacheKey } from './utils/createCacheKey.js';\nimport { PrecacheInstallReportPlugin } from './utils/PrecacheInstallReportPlugin.js';\nimport { PrecacheCacheKeyPlugin } from './utils/PrecacheCacheKeyPlugin.js';\nimport { printCleanupDetails } from './utils/printCleanupDetails.js';\nimport { printInstallDetails } from './utils/printInstallDetails.js';\nimport { PrecacheStrategy } from './PrecacheStrategy.js';\nimport './_version.js';\n/**\n * Performs efficient precaching of assets.\n *\n * @memberof workbox-precaching\n */\nclass PrecacheController {\n /**\n * Create a new PrecacheController.\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] The cache to use for precaching.\n * @param {string} [options.plugins] Plugins to use when precaching as well\n * as responding to fetch events for precached assets.\n * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to\n * get the response from the network if there's a precache miss.\n */\n constructor({ cacheName, plugins = [], fallbackToNetwork = true, } = {}) {\n this._urlsToCacheKeys = new Map();\n this._urlsToCacheModes = new Map();\n this._cacheKeysToIntegrities = new Map();\n this._strategy = new PrecacheStrategy({\n cacheName: cacheNames.getPrecacheName(cacheName),\n plugins: [\n ...plugins,\n new PrecacheCacheKeyPlugin({ precacheController: this }),\n ],\n fallbackToNetwork,\n });\n // Bind the install and activate methods to the instance.\n this.install = this.install.bind(this);\n this.activate = this.activate.bind(this);\n }\n /**\n * @type {workbox-precaching.PrecacheStrategy} The strategy created by this controller and\n * used to cache assets and respond to fetch events.\n */\n get strategy() {\n return this._strategy;\n }\n /**\n * Adds items to the precache list, removing any duplicates and\n * stores the files in the\n * {@link workbox-core.cacheNames|\"precache cache\"} when the service\n * worker installs.\n *\n * This method can be called multiple times.\n *\n * @param {Array} [entries=[]] Array of entries to precache.\n */\n precache(entries) {\n this.addToCacheList(entries);\n if (!this._installAndActiveListenersAdded) {\n self.addEventListener('install', this.install);\n self.addEventListener('activate', this.activate);\n this._installAndActiveListenersAdded = true;\n }\n }\n /**\n * This method will add items to the precache list, removing duplicates\n * and ensuring the information is valid.\n *\n * @param {Array} entries\n * Array of entries to precache.\n */\n addToCacheList(entries) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isArray(entries, {\n moduleName: 'workbox-precaching',\n className: 'PrecacheController',\n funcName: 'addToCacheList',\n paramName: 'entries',\n });\n }\n const urlsToWarnAbout = [];\n for (const entry of entries) {\n // See https://github.com/GoogleChrome/workbox/issues/2259\n if (typeof entry === 'string') {\n urlsToWarnAbout.push(entry);\n }\n else if (entry && entry.revision === undefined) {\n urlsToWarnAbout.push(entry.url);\n }\n const { cacheKey, url } = createCacheKey(entry);\n const cacheMode = typeof entry !== 'string' && entry.revision ? 'reload' : 'default';\n if (this._urlsToCacheKeys.has(url) &&\n this._urlsToCacheKeys.get(url) !== cacheKey) {\n throw new WorkboxError('add-to-cache-list-conflicting-entries', {\n firstEntry: this._urlsToCacheKeys.get(url),\n secondEntry: cacheKey,\n });\n }\n if (typeof entry !== 'string' && entry.integrity) {\n if (this._cacheKeysToIntegrities.has(cacheKey) &&\n this._cacheKeysToIntegrities.get(cacheKey) !== entry.integrity) {\n throw new WorkboxError('add-to-cache-list-conflicting-integrities', {\n url,\n });\n }\n this._cacheKeysToIntegrities.set(cacheKey, entry.integrity);\n }\n this._urlsToCacheKeys.set(url, cacheKey);\n this._urlsToCacheModes.set(url, cacheMode);\n if (urlsToWarnAbout.length > 0) {\n const warningMessage = `Workbox is precaching URLs without revision ` +\n `info: ${urlsToWarnAbout.join(', ')}\\nThis is generally NOT safe. ` +\n `Learn more at https://bit.ly/wb-precache`;\n if (process.env.NODE_ENV === 'production') {\n // Use console directly to display this warning without bloating\n // bundle sizes by pulling in all of the logger codebase in prod.\n console.warn(warningMessage);\n }\n else {\n logger.warn(warningMessage);\n }\n }\n }\n }\n /**\n * Precaches new and updated assets. Call this method from the service worker\n * install event.\n *\n * Note: this method calls `event.waitUntil()` for you, so you do not need\n * to call it yourself in your event handlers.\n *\n * @param {ExtendableEvent} event\n * @return {Promise}\n */\n install(event) {\n // waitUntil returns Promise\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return waitUntil(event, async () => {\n const installReportPlugin = new PrecacheInstallReportPlugin();\n this.strategy.plugins.push(installReportPlugin);\n // Cache entries one at a time.\n // See https://github.com/GoogleChrome/workbox/issues/2528\n for (const [url, cacheKey] of this._urlsToCacheKeys) {\n const integrity = this._cacheKeysToIntegrities.get(cacheKey);\n const cacheMode = this._urlsToCacheModes.get(url);\n const request = new Request(url, {\n integrity,\n cache: cacheMode,\n credentials: 'same-origin',\n });\n await Promise.all(this.strategy.handleAll({\n params: { cacheKey },\n request,\n event,\n }));\n }\n const { updatedURLs, notUpdatedURLs } = installReportPlugin;\n if (process.env.NODE_ENV !== 'production') {\n printInstallDetails(updatedURLs, notUpdatedURLs);\n }\n return { updatedURLs, notUpdatedURLs };\n });\n }\n /**\n * Deletes assets that are no longer present in the current precache manifest.\n * Call this method from the service worker activate event.\n *\n * Note: this method calls `event.waitUntil()` for you, so you do not need\n * to call it yourself in your event handlers.\n *\n * @param {ExtendableEvent} event\n * @return {Promise}\n */\n activate(event) {\n // waitUntil returns Promise\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return waitUntil(event, async () => {\n const cache = await self.caches.open(this.strategy.cacheName);\n const currentlyCachedRequests = await cache.keys();\n const expectedCacheKeys = new Set(this._urlsToCacheKeys.values());\n const deletedURLs = [];\n for (const request of currentlyCachedRequests) {\n if (!expectedCacheKeys.has(request.url)) {\n await cache.delete(request);\n deletedURLs.push(request.url);\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n printCleanupDetails(deletedURLs);\n }\n return { deletedURLs };\n });\n }\n /**\n * Returns a mapping of a precached URL to the corresponding cache key, taking\n * into account the revision information for the URL.\n *\n * @return {Map} A URL to cache key mapping.\n */\n getURLsToCacheKeys() {\n return this._urlsToCacheKeys;\n }\n /**\n * Returns a list of all the URLs that have been precached by the current\n * service worker.\n *\n * @return {Array} The precached URLs.\n */\n getCachedURLs() {\n return [...this._urlsToCacheKeys.keys()];\n }\n /**\n * Returns the cache key used for storing a given URL. If that URL is\n * unversioned, like `/index.html', then the cache key will be the original\n * URL with a search parameter appended to it.\n *\n * @param {string} url A URL whose cache key you want to look up.\n * @return {string} The versioned URL that corresponds to a cache key\n * for the original URL, or undefined if that URL isn't precached.\n */\n getCacheKeyForURL(url) {\n const urlObject = new URL(url, location.href);\n return this._urlsToCacheKeys.get(urlObject.href);\n }\n /**\n * @param {string} url A cache key whose SRI you want to look up.\n * @return {string} The subresource integrity associated with the cache key,\n * or undefined if it's not set.\n */\n getIntegrityForCacheKey(cacheKey) {\n return this._cacheKeysToIntegrities.get(cacheKey);\n }\n /**\n * This acts as a drop-in replacement for\n * [`cache.match()`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/match)\n * with the following differences:\n *\n * - It knows what the name of the precache is, and only checks in that cache.\n * - It allows you to pass in an \"original\" URL without versioning parameters,\n * and it will automatically look up the correct cache key for the currently\n * active revision of that URL.\n *\n * E.g., `matchPrecache('index.html')` will find the correct precached\n * response for the currently active service worker, even if the actual cache\n * key is `'/index.html?__WB_REVISION__=1234abcd'`.\n *\n * @param {string|Request} request The key (without revisioning parameters)\n * to look up in the precache.\n * @return {Promise}\n */\n async matchPrecache(request) {\n const url = request instanceof Request ? request.url : request;\n const cacheKey = this.getCacheKeyForURL(url);\n if (cacheKey) {\n const cache = await self.caches.open(this.strategy.cacheName);\n return cache.match(cacheKey);\n }\n return undefined;\n }\n /**\n * Returns a function that looks up `url` in the precache (taking into\n * account revision information), and returns the corresponding `Response`.\n *\n * @param {string} url The precached URL which will be used to lookup the\n * `Response`.\n * @return {workbox-routing~handlerCallback}\n */\n createHandlerBoundToURL(url) {\n const cacheKey = this.getCacheKeyForURL(url);\n if (!cacheKey) {\n throw new WorkboxError('non-precached-url', { url });\n }\n return (options) => {\n options.request = new Request(url);\n options.params = Object.assign({ cacheKey }, options.params);\n return this.strategy.handle(options);\n };\n }\n}\nexport { PrecacheController };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { PrecacheController } from '../PrecacheController.js';\nimport '../_version.js';\nlet precacheController;\n/**\n * @return {PrecacheController}\n * @private\n */\nexport const getOrCreatePrecacheController = () => {\n if (!precacheController) {\n precacheController = new PrecacheController();\n }\n return precacheController;\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { Router } from '../Router.js';\nimport '../_version.js';\nlet defaultRouter;\n/**\n * Creates a new, singleton Router instance if one does not exist. If one\n * does already exist, that instance is returned.\n *\n * @private\n * @return {Router}\n */\nexport const getOrCreateDefaultRouter = () => {\n if (!defaultRouter) {\n defaultRouter = new Router();\n // The helpers that use the default Router assume these listeners exist.\n defaultRouter.addFetchListener();\n defaultRouter.addCacheListener();\n }\n return defaultRouter;\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The default HTTP method, 'GET', used when there's no specific method\n * configured for a route.\n *\n * @type {string}\n *\n * @private\n */\nexport const defaultMethod = 'GET';\n/**\n * The list of valid HTTP methods associated with requests that could be routed.\n *\n * @type {Array}\n *\n * @private\n */\nexport const validMethods = [\n 'DELETE',\n 'GET',\n 'HEAD',\n 'PATCH',\n 'POST',\n 'PUT',\n];\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport '../_version.js';\n/**\n * @param {function()|Object} handler Either a function, or an object with a\n * 'handle' method.\n * @return {Object} An object with a handle method.\n *\n * @private\n */\nexport const normalizeHandler = (handler) => {\n if (handler && typeof handler === 'object') {\n if (process.env.NODE_ENV !== 'production') {\n assert.hasMethod(handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return handler;\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(handler, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return { handle: handler };\n }\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { defaultMethod, validMethods } from './utils/constants.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport './_version.js';\n/**\n * A `Route` consists of a pair of callback functions, \"match\" and \"handler\".\n * The \"match\" callback determine if a route should be used to \"handle\" a\n * request by returning a non-falsy value if it can. The \"handler\" callback\n * is called when there is a match and should return a Promise that resolves\n * to a `Response`.\n *\n * @memberof workbox-routing\n */\nclass Route {\n /**\n * Constructor for Route class.\n *\n * @param {workbox-routing~matchCallback} match\n * A callback function that determines whether the route matches a given\n * `fetch` event by returning a non-falsy value.\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resolving to a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n */\n constructor(match, handler, method = defaultMethod) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(match, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'match',\n });\n if (method) {\n assert.isOneOf(method, validMethods, { paramName: 'method' });\n }\n }\n // These values are referenced directly by Router so cannot be\n // altered by minificaton.\n this.handler = normalizeHandler(handler);\n this.match = match;\n this.method = method;\n }\n /**\n *\n * @param {workbox-routing-handlerCallback} handler A callback\n * function that returns a Promise resolving to a Response\n */\n setCatchHandler(handler) {\n this.catchHandler = normalizeHandler(handler);\n }\n}\nexport { Route };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { Route } from './Route.js';\nimport './_version.js';\n/**\n * RegExpRoute makes it easy to create a regular expression based\n * {@link workbox-routing.Route}.\n *\n * For same-origin requests the RegExp only needs to match part of the URL. For\n * requests against third-party servers, you must define a RegExp that matches\n * the start of the URL.\n *\n * @memberof workbox-routing\n * @extends workbox-routing.Route\n */\nclass RegExpRoute extends Route {\n /**\n * If the regular expression contains\n * [capture groups]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#grouping-back-references},\n * the captured values will be passed to the\n * {@link workbox-routing~handlerCallback} `params`\n * argument.\n *\n * @param {RegExp} regExp The regular expression to match against URLs.\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n */\n constructor(regExp, handler, method) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(regExp, RegExp, {\n moduleName: 'workbox-routing',\n className: 'RegExpRoute',\n funcName: 'constructor',\n paramName: 'pattern',\n });\n }\n const match = ({ url }) => {\n const result = regExp.exec(url.href);\n // Return immediately if there's no match.\n if (!result) {\n return;\n }\n // Require that the match start at the first character in the URL string\n // if it's a cross-origin request.\n // See https://github.com/GoogleChrome/workbox/issues/281 for the context\n // behind this behavior.\n if (url.origin !== location.origin && result.index !== 0) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`The regular expression '${regExp.toString()}' only partially matched ` +\n `against the cross-origin URL '${url.toString()}'. RegExpRoute's will only ` +\n `handle cross-origin requests if they match the entire URL.`);\n }\n return;\n }\n // If the route matches, but there aren't any capture groups defined, then\n // this will return [], which is truthy and therefore sufficient to\n // indicate a match.\n // If there are capture groups, then it will return their values.\n return result.slice(1);\n };\n super(match, handler, method);\n }\n}\nexport { RegExpRoute };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { defaultMethod } from './utils/constants.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\n/**\n * The Router can be used to process a `FetchEvent` using one or more\n * {@link workbox-routing.Route}, responding with a `Response` if\n * a matching route exists.\n *\n * If no route matches a given a request, the Router will use a \"default\"\n * handler if one is defined.\n *\n * Should the matching Route throw an error, the Router will use a \"catch\"\n * handler if one is defined to gracefully deal with issues and respond with a\n * Request.\n *\n * If a request matches multiple routes, the **earliest** registered route will\n * be used to respond to the request.\n *\n * @memberof workbox-routing\n */\nclass Router {\n /**\n * Initializes a new Router.\n */\n constructor() {\n this._routes = new Map();\n this._defaultHandlerMap = new Map();\n }\n /**\n * @return {Map>} routes A `Map` of HTTP\n * method name ('GET', etc.) to an array of all the corresponding `Route`\n * instances that are registered.\n */\n get routes() {\n return this._routes;\n }\n /**\n * Adds a fetch event listener to respond to events when a route matches\n * the event's request.\n */\n addFetchListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('fetch', ((event) => {\n const { request } = event;\n const responsePromise = this.handleRequest({ request, event });\n if (responsePromise) {\n event.respondWith(responsePromise);\n }\n }));\n }\n /**\n * Adds a message event listener for URLs to cache from the window.\n * This is useful to cache resources loaded on the page prior to when the\n * service worker started controlling it.\n *\n * The format of the message data sent from the window should be as follows.\n * Where the `urlsToCache` array may consist of URL strings or an array of\n * URL string + `requestInit` object (the same as you'd pass to `fetch()`).\n *\n * ```\n * {\n * type: 'CACHE_URLS',\n * payload: {\n * urlsToCache: [\n * './script1.js',\n * './script2.js',\n * ['./script3.js', {mode: 'no-cors'}],\n * ],\n * },\n * }\n * ```\n */\n addCacheListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('message', ((event) => {\n // event.data is type 'any'\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (event.data && event.data.type === 'CACHE_URLS') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { payload } = event.data;\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Caching URLs from the window`, payload.urlsToCache);\n }\n const requestPromises = Promise.all(payload.urlsToCache.map((entry) => {\n if (typeof entry === 'string') {\n entry = [entry];\n }\n const request = new Request(...entry);\n return this.handleRequest({ request, event });\n // TODO(philipwalton): TypeScript errors without this typecast for\n // some reason (probably a bug). The real type here should work but\n // doesn't: `Array | undefined>`.\n })); // TypeScript\n event.waitUntil(requestPromises);\n // If a MessageChannel was used, reply to the message on success.\n if (event.ports && event.ports[0]) {\n void requestPromises.then(() => event.ports[0].postMessage(true));\n }\n }\n }));\n }\n /**\n * Apply the routing rules to a FetchEvent object to get a Response from an\n * appropriate Route's handler.\n *\n * @param {Object} options\n * @param {Request} options.request The request to handle.\n * @param {ExtendableEvent} options.event The event that triggered the\n * request.\n * @return {Promise|undefined} A promise is returned if a\n * registered route can handle the request. If there is no matching\n * route and there's no `defaultHandler`, `undefined` is returned.\n */\n handleRequest({ request, event, }) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'handleRequest',\n paramName: 'options.request',\n });\n }\n const url = new URL(request.url, location.href);\n if (!url.protocol.startsWith('http')) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Workbox Router only supports URLs that start with 'http'.`);\n }\n return;\n }\n const sameOrigin = url.origin === location.origin;\n const { params, route } = this.findMatchingRoute({\n event,\n request,\n sameOrigin,\n url,\n });\n let handler = route && route.handler;\n const debugMessages = [];\n if (process.env.NODE_ENV !== 'production') {\n if (handler) {\n debugMessages.push([`Found a route to handle this request:`, route]);\n if (params) {\n debugMessages.push([\n `Passing the following params to the route's handler:`,\n params,\n ]);\n }\n }\n }\n // If we don't have a handler because there was no matching route, then\n // fall back to defaultHandler if that's defined.\n const method = request.method;\n if (!handler && this._defaultHandlerMap.has(method)) {\n if (process.env.NODE_ENV !== 'production') {\n debugMessages.push(`Failed to find a matching route. Falling ` +\n `back to the default handler for ${method}.`);\n }\n handler = this._defaultHandlerMap.get(method);\n }\n if (!handler) {\n if (process.env.NODE_ENV !== 'production') {\n // No handler so Workbox will do nothing. If logs is set of debug\n // i.e. verbose, we should print out this information.\n logger.debug(`No route found for: ${getFriendlyURL(url)}`);\n }\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // We have a handler, meaning Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Router is responding to: ${getFriendlyURL(url)}`);\n debugMessages.forEach((msg) => {\n if (Array.isArray(msg)) {\n logger.log(...msg);\n }\n else {\n logger.log(msg);\n }\n });\n logger.groupEnd();\n }\n // Wrap in try and catch in case the handle method throws a synchronous\n // error. It should still callback to the catch handler.\n let responsePromise;\n try {\n responsePromise = handler.handle({ url, request, event, params });\n }\n catch (err) {\n responsePromise = Promise.reject(err);\n }\n // Get route's catch handler, if it exists\n const catchHandler = route && route.catchHandler;\n if (responsePromise instanceof Promise &&\n (this._catchHandler || catchHandler)) {\n responsePromise = responsePromise.catch(async (err) => {\n // If there's a route catch handler, process that first\n if (catchHandler) {\n if (process.env.NODE_ENV !== 'production') {\n // Still include URL here as it will be async from the console group\n // and may not make sense without the URL\n logger.groupCollapsed(`Error thrown when responding to: ` +\n ` ${getFriendlyURL(url)}. Falling back to route's Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n try {\n return await catchHandler.handle({ url, request, event, params });\n }\n catch (catchErr) {\n if (catchErr instanceof Error) {\n err = catchErr;\n }\n }\n }\n if (this._catchHandler) {\n if (process.env.NODE_ENV !== 'production') {\n // Still include URL here as it will be async from the console group\n // and may not make sense without the URL\n logger.groupCollapsed(`Error thrown when responding to: ` +\n ` ${getFriendlyURL(url)}. Falling back to global Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n return this._catchHandler.handle({ url, request, event });\n }\n throw err;\n });\n }\n return responsePromise;\n }\n /**\n * Checks a request and URL (and optionally an event) against the list of\n * registered routes, and if there's a match, returns the corresponding\n * route along with any params generated by the match.\n *\n * @param {Object} options\n * @param {URL} options.url\n * @param {boolean} options.sameOrigin The result of comparing `url.origin`\n * against the current origin.\n * @param {Request} options.request The request to match.\n * @param {Event} options.event The corresponding event.\n * @return {Object} An object with `route` and `params` properties.\n * They are populated if a matching route was found or `undefined`\n * otherwise.\n */\n findMatchingRoute({ url, sameOrigin, request, event, }) {\n const routes = this._routes.get(request.method) || [];\n for (const route of routes) {\n let params;\n // route.match returns type any, not possible to change right now.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const matchResult = route.match({ url, sameOrigin, request, event });\n if (matchResult) {\n if (process.env.NODE_ENV !== 'production') {\n // Warn developers that using an async matchCallback is almost always\n // not the right thing to do.\n if (matchResult instanceof Promise) {\n logger.warn(`While routing ${getFriendlyURL(url)}, an async ` +\n `matchCallback function was used. Please convert the ` +\n `following route to use a synchronous matchCallback function:`, route);\n }\n }\n // See https://github.com/GoogleChrome/workbox/issues/2079\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n params = matchResult;\n if (Array.isArray(params) && params.length === 0) {\n // Instead of passing an empty array in as params, use undefined.\n params = undefined;\n }\n else if (matchResult.constructor === Object && // eslint-disable-line\n Object.keys(matchResult).length === 0) {\n // Instead of passing an empty object in as params, use undefined.\n params = undefined;\n }\n else if (typeof matchResult === 'boolean') {\n // For the boolean value true (rather than just something truth-y),\n // don't set params.\n // See https://github.com/GoogleChrome/workbox/pull/2134#issuecomment-513924353\n params = undefined;\n }\n // Return early if have a match.\n return { route, params };\n }\n }\n // If no match was found above, return and empty object.\n return {};\n }\n /**\n * Define a default `handler` that's called when no routes explicitly\n * match the incoming request.\n *\n * Each HTTP method ('GET', 'POST', etc.) gets its own default handler.\n *\n * Without a default handler, unmatched requests will go against the\n * network as if there were no service worker present.\n *\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to associate with this\n * default handler. Each method has its own default.\n */\n setDefaultHandler(handler, method = defaultMethod) {\n this._defaultHandlerMap.set(method, normalizeHandler(handler));\n }\n /**\n * If a Route throws an error while handling a request, this `handler`\n * will be called and given a chance to provide a response.\n *\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n */\n setCatchHandler(handler) {\n this._catchHandler = normalizeHandler(handler);\n }\n /**\n * Registers a route with the router.\n *\n * @param {workbox-routing.Route} route The route to register.\n */\n registerRoute(route) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(route, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.hasMethod(route, 'match', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.isType(route.handler, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.hasMethod(route.handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.handler',\n });\n assert.isType(route.method, 'string', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.method',\n });\n }\n if (!this._routes.has(route.method)) {\n this._routes.set(route.method, []);\n }\n // Give precedence to all of the earlier routes by adding this additional\n // route to the end of the array.\n this._routes.get(route.method).push(route);\n }\n /**\n * Unregisters a route with the router.\n *\n * @param {workbox-routing.Route} route The route to unregister.\n */\n unregisterRoute(route) {\n if (!this._routes.has(route.method)) {\n throw new WorkboxError('unregister-route-but-not-found-with-method', {\n method: route.method,\n });\n }\n const routeIndex = this._routes.get(route.method).indexOf(route);\n if (routeIndex > -1) {\n this._routes.get(route.method).splice(routeIndex, 1);\n }\n else {\n throw new WorkboxError('unregister-route-route-not-registered');\n }\n }\n}\nexport { Router };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Route } from './Route.js';\nimport { RegExpRoute } from './RegExpRoute.js';\nimport { getOrCreateDefaultRouter } from './utils/getOrCreateDefaultRouter.js';\nimport './_version.js';\n/**\n * Easily register a RegExp, string, or function with a caching\n * strategy to a singleton Router instance.\n *\n * This method will generate a Route for you if needed and\n * call {@link workbox-routing.Router#registerRoute}.\n *\n * @param {RegExp|string|workbox-routing.Route~matchCallback|workbox-routing.Route} capture\n * If the capture param is a `Route`, all other arguments will be ignored.\n * @param {workbox-routing~handlerCallback} [handler] A callback\n * function that returns a Promise resulting in a Response. This parameter\n * is required if `capture` is not a `Route` object.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n * @return {workbox-routing.Route} The generated `Route`.\n *\n * @memberof workbox-routing\n */\nfunction registerRoute(capture, handler, method) {\n let route;\n if (typeof capture === 'string') {\n const captureUrl = new URL(capture, location.href);\n if (process.env.NODE_ENV !== 'production') {\n if (!(capture.startsWith('/') || capture.startsWith('http'))) {\n throw new WorkboxError('invalid-string', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n // We want to check if Express-style wildcards are in the pathname only.\n // TODO: Remove this log message in v4.\n const valueToCheck = capture.startsWith('http')\n ? captureUrl.pathname\n : capture;\n // See https://github.com/pillarjs/path-to-regexp#parameters\n const wildcards = '[*:?+]';\n if (new RegExp(`${wildcards}`).exec(valueToCheck)) {\n logger.debug(`The '$capture' parameter contains an Express-style wildcard ` +\n `character (${wildcards}). Strings are now always interpreted as ` +\n `exact matches; use a RegExp for partial or wildcard matches.`);\n }\n }\n const matchCallback = ({ url }) => {\n if (process.env.NODE_ENV !== 'production') {\n if (url.pathname === captureUrl.pathname &&\n url.origin !== captureUrl.origin) {\n logger.debug(`${capture} only partially matches the cross-origin URL ` +\n `${url.toString()}. This route will only handle cross-origin requests ` +\n `if they match the entire URL.`);\n }\n }\n return url.href === captureUrl.href;\n };\n // If `capture` is a string then `handler` and `method` must be present.\n route = new Route(matchCallback, handler, method);\n }\n else if (capture instanceof RegExp) {\n // If `capture` is a `RegExp` then `handler` and `method` must be present.\n route = new RegExpRoute(capture, handler, method);\n }\n else if (typeof capture === 'function') {\n // If `capture` is a function then `handler` and `method` must be present.\n route = new Route(capture, handler, method);\n }\n else if (capture instanceof Route) {\n route = capture;\n }\n else {\n throw new WorkboxError('unsupported-route-type', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n const defaultRouter = getOrCreateDefaultRouter();\n defaultRouter.registerRoute(route);\n return route;\n}\nexport { registerRoute };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * Removes any URL search parameters that should be ignored.\n *\n * @param {URL} urlObject The original URL.\n * @param {Array} ignoreURLParametersMatching RegExps to test against\n * each search parameter name. Matches mean that the search parameter should be\n * ignored.\n * @return {URL} The URL with any ignored search parameters removed.\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching = []) {\n // Convert the iterable into an array at the start of the loop to make sure\n // deletion doesn't mess up iteration.\n for (const paramName of [...urlObject.searchParams.keys()]) {\n if (ignoreURLParametersMatching.some((regExp) => regExp.test(paramName))) {\n urlObject.searchParams.delete(paramName);\n }\n }\n return urlObject;\n}\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { Route } from 'workbox-routing/Route.js';\nimport { generateURLVariations } from './utils/generateURLVariations.js';\nimport './_version.js';\n/**\n * A subclass of {@link workbox-routing.Route} that takes a\n * {@link workbox-precaching.PrecacheController}\n * instance and uses it to match incoming requests and handle fetching\n * responses from the precache.\n *\n * @memberof workbox-precaching\n * @extends workbox-routing.Route\n */\nclass PrecacheRoute extends Route {\n /**\n * @param {PrecacheController} precacheController A `PrecacheController`\n * instance used to both match requests and respond to fetch events.\n * @param {Object} [options] Options to control how requests are matched\n * against the list of precached URLs.\n * @param {string} [options.directoryIndex=index.html] The `directoryIndex` will\n * check cache entries for a URLs ending with '/' to see if there is a hit when\n * appending the `directoryIndex` value.\n * @param {Array} [options.ignoreURLParametersMatching=[/^utm_/, /^fbclid$/]] An\n * array of regex's to remove search params when looking for a cache match.\n * @param {boolean} [options.cleanURLs=true] The `cleanURLs` option will\n * check the cache for the URL with a `.html` added to the end of the end.\n * @param {workbox-precaching~urlManipulation} [options.urlManipulation]\n * This is a function that should take a URL and return an array of\n * alternative URLs that should be checked for precache matches.\n */\n constructor(precacheController, options) {\n const match = ({ request, }) => {\n const urlsToCacheKeys = precacheController.getURLsToCacheKeys();\n for (const possibleURL of generateURLVariations(request.url, options)) {\n const cacheKey = urlsToCacheKeys.get(possibleURL);\n if (cacheKey) {\n const integrity = precacheController.getIntegrityForCacheKey(cacheKey);\n return { cacheKey, integrity };\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Precaching did not find a match for ` + getFriendlyURL(request.url));\n }\n return;\n };\n super(match, precacheController.strategy);\n }\n}\nexport { PrecacheRoute };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { removeIgnoredSearchParams } from './removeIgnoredSearchParams.js';\nimport '../_version.js';\n/**\n * Generator function that yields possible variations on the original URL to\n * check, one at a time.\n *\n * @param {string} url\n * @param {Object} options\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function* generateURLVariations(url, { ignoreURLParametersMatching = [/^utm_/, /^fbclid$/], directoryIndex = 'index.html', cleanURLs = true, urlManipulation, } = {}) {\n const urlObject = new URL(url, location.href);\n urlObject.hash = '';\n yield urlObject.href;\n const urlWithoutIgnoredParams = removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching);\n yield urlWithoutIgnoredParams.href;\n if (directoryIndex && urlWithoutIgnoredParams.pathname.endsWith('/')) {\n const directoryURL = new URL(urlWithoutIgnoredParams.href);\n directoryURL.pathname += directoryIndex;\n yield directoryURL.href;\n }\n if (cleanURLs) {\n const cleanURL = new URL(urlWithoutIgnoredParams.href);\n cleanURL.pathname += '.html';\n yield cleanURL.href;\n }\n if (urlManipulation) {\n const additionalURLs = urlManipulation({ url: urlObject });\n for (const urlToAttempt of additionalURLs) {\n yield urlToAttempt.href;\n }\n }\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport '../_version.js';\nexport const messages = {\n strategyStart: (strategyName, request) => `Using ${strategyName} to respond to '${getFriendlyURL(request.url)}'`,\n printFinalResponse: (response) => {\n if (response) {\n logger.groupCollapsed(`View the final response here.`);\n logger.log(response || '[No response returned]');\n logger.groupEnd();\n }\n },\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { addRoute } from './addRoute.js';\nimport { precache } from './precache.js';\nimport './_version.js';\n/**\n * This method will add entries to the precache list and add a route to\n * respond to fetch events.\n *\n * This is a convenience method that will call\n * {@link workbox-precaching.precache} and\n * {@link workbox-precaching.addRoute} in a single call.\n *\n * @param {Array} entries Array of entries to precache.\n * @param {Object} [options] See the\n * {@link workbox-precaching.PrecacheRoute} options.\n *\n * @memberof workbox-precaching\n */\nfunction precacheAndRoute(entries, options) {\n precache(entries);\n addRoute(options);\n}\nexport { precacheAndRoute };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nexport const cacheOkAndOpaquePlugin = {\n /**\n * Returns a valid response (to allow caching) if the status is 200 (OK) or\n * 0 (opaque).\n *\n * @param {Object} options\n * @param {Response} options.response\n * @return {Response|null}\n *\n * @private\n */\n cacheWillUpdate: async ({ response }) => {\n if (response.status === 200 || response.status === 0) {\n return response;\n }\n return null;\n },\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { cacheOkAndOpaquePlugin } from './plugins/cacheOkAndOpaquePlugin.js';\nimport { Strategy } from './Strategy.js';\nimport { messages } from './utils/messages.js';\nimport './_version.js';\n/**\n * An implementation of a\n * [stale-while-revalidate](https://developer.chrome.com/docs/workbox/caching-strategies-overview/#stale-while-revalidate)\n * request strategy.\n *\n * Resources are requested from both the cache and the network in parallel.\n * The strategy will respond with the cached version if available, otherwise\n * wait for the network response. The cache is updated with the network response\n * with each successful request.\n *\n * By default, this strategy will cache responses with a 200 status code as\n * well as [opaque responses](https://developer.chrome.com/docs/workbox/caching-resources-during-runtime/#opaque-responses).\n * Opaque responses are cross-origin requests where the response doesn't\n * support [CORS](https://enable-cors.org/).\n *\n * If the network request fails, and there is no cache match, this will throw\n * a `WorkboxError` exception.\n *\n * @extends workbox-strategies.Strategy\n * @memberof workbox-strategies\n */\nclass StaleWhileRevalidate extends Strategy {\n /**\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to cache names provided by\n * {@link workbox-core.cacheNames}.\n * @param {Array} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)\n * `fetch()` requests made by this strategy.\n * @param {Object} [options.matchOptions] [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions)\n */\n constructor(options = {}) {\n super(options);\n // If this instance contains no plugins with a 'cacheWillUpdate' callback,\n // prepend the `cacheOkAndOpaquePlugin` plugin to the plugins list.\n if (!this.plugins.some((p) => 'cacheWillUpdate' in p)) {\n this.plugins.unshift(cacheOkAndOpaquePlugin);\n }\n }\n /**\n * @private\n * @param {Request|string} request A request to run this strategy for.\n * @param {workbox-strategies.StrategyHandler} handler The event that\n * triggered the request.\n * @return {Promise}\n */\n async _handle(request, handler) {\n const logs = [];\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: this.constructor.name,\n funcName: 'handle',\n paramName: 'request',\n });\n }\n const fetchAndCachePromise = handler.fetchAndCachePut(request).catch(() => {\n // Swallow this error because a 'no-response' error will be thrown in\n // main handler return flow. This will be in the `waitUntil()` flow.\n });\n void handler.waitUntil(fetchAndCachePromise);\n let response = await handler.cacheMatch(request);\n let error;\n if (response) {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`Found a cached response in the '${this.cacheName}'` +\n ` cache. Will update with the network response in the background.`);\n }\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`No response found in the '${this.cacheName}' cache. ` +\n `Will wait for the network response.`);\n }\n try {\n // NOTE(philipwalton): Really annoying that we have to type cast here.\n // https://github.com/microsoft/TypeScript/issues/20006\n response = (await fetchAndCachePromise);\n }\n catch (err) {\n if (err instanceof Error) {\n error = err;\n }\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(messages.strategyStart(this.constructor.name, request));\n for (const log of logs) {\n logger.log(log);\n }\n messages.printFinalResponse(response);\n logger.groupEnd();\n }\n if (!response) {\n throw new WorkboxError('no-response', { url: request.url, error });\n }\n return response;\n }\n}\nexport { StaleWhileRevalidate };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport './_version.js';\n/**\n * Claim any currently available clients once the service worker\n * becomes active. This is normally used in conjunction with `skipWaiting()`.\n *\n * @memberof workbox-core\n */\nfunction clientsClaim() {\n self.addEventListener('activate', () => self.clients.claim());\n}\nexport { clientsClaim };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport './_version.js';\n/**\n * Adds items to the precache list, removing any duplicates and\n * stores the files in the\n * {@link workbox-core.cacheNames|\"precache cache\"} when the service\n * worker installs.\n *\n * This method can be called multiple times.\n *\n * Please note: This method **will not** serve any of the cached files for you.\n * It only precaches files. To respond to a network request you call\n * {@link workbox-precaching.addRoute}.\n *\n * If you have a single array of files to precache, you can just call\n * {@link workbox-precaching.precacheAndRoute}.\n *\n * @param {Array} [entries=[]] Array of entries to precache.\n *\n * @memberof workbox-precaching\n */\nfunction precache(entries) {\n const precacheController = getOrCreatePrecacheController();\n precacheController.precache(entries);\n}\nexport { precache };\n","/// \n/* eslint-disable no-restricted-globals */\n\n// This service worker can be customized!\n// See https://developers.google.com/web/tools/workbox/modules\n// for the list of available Workbox modules, or add any other\n// code you'd like.\n// You can also remove this file if you'd prefer not to use a\n// service worker, and the Workbox build step will be skipped.\n\nimport { clientsClaim } from 'workbox-core';\nimport { ExpirationPlugin } from 'workbox-expiration';\nimport { precacheAndRoute, createHandlerBoundToURL } from 'workbox-precaching';\nimport { registerRoute } from 'workbox-routing';\nimport { StaleWhileRevalidate } from 'workbox-strategies';\n\ndeclare const self: ServiceWorkerGlobalScope;\n\nclientsClaim();\n\n// Precache all of the assets generated by your build process.\n// Their URLs are injected into the manifest variable below.\n// This variable must be present somewhere in your service worker file,\n// even if you decide not to use precaching. See https://cra.link/PWA\nprecacheAndRoute(self.__WB_MANIFEST);\n\n// Set up App Shell-style routing, so that all navigation requests\n// are fulfilled with your index.html shell. Learn more at\n// https://developers.google.com/web/fundamentals/architecture/app-shell\nconst fileExtensionRegexp = /[^/?]+\\\\.[^/]+$/;\nregisterRoute(\n // Return false to exempt requests from being fulfilled by index.html.\n ({ request, url }: { request: Request; url: URL }) => {\n // If this isn't a navigation, skip.\n if (request.mode !== 'navigate') {\n return false;\n }\n\n // If this is a URL that starts with /_, skip.\n if (url.pathname.startsWith('/_')) {\n return false;\n }\n\n // If this looks like a URL for a resource, because it contains\n // a file extension, skip.\n if (url.pathname.match(fileExtensionRegexp)) {\n return false;\n }\n\n // Return true to signal that we want to use the handler.\n return true;\n },\n createHandlerBoundToURL(`${process.env.PUBLIC_URL}/index.html`),\n);\n\n// An example runtime caching route for requests that aren't handled by the\n// precache, in this case same-origin .png requests like those from in public/\nregisterRoute(\n // Add in any other file extensions or routing criteria as needed.\n ({ url }) => url.origin === self.location.origin && url.pathname.endsWith('.png'),\n // Customize this strategy as needed, e.g., by changing to CacheFirst.\n new StaleWhileRevalidate({\n cacheName: 'images',\n plugins: [\n // Ensure that once this runtime cache reaches a maximum size the\n // least-recently used images are removed.\n new ExpirationPlugin({ maxEntries: 50 }),\n ],\n }),\n);\n\n// This allows the web app to trigger skipWaiting via\n// registration.waiting.postMessage({type: 'SKIP_WAITING'})\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n// Any other custom service worker logic can go here.\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { registerRoute } from 'workbox-routing/registerRoute.js';\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport { PrecacheRoute } from './PrecacheRoute.js';\nimport './_version.js';\n/**\n * Add a `fetch` listener to the service worker that will\n * respond to\n * [network requests]{@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers#Custom_responses_to_requests}\n * with precached assets.\n *\n * Requests for assets that aren't precached, the `FetchEvent` will not be\n * responded to, allowing the event to fall through to other `fetch` event\n * listeners.\n *\n * @param {Object} [options] See the {@link workbox-precaching.PrecacheRoute}\n * options.\n *\n * @memberof workbox-precaching\n */\nfunction addRoute(options) {\n const precacheController = getOrCreatePrecacheController();\n const precacheRoute = new PrecacheRoute(precacheController, options);\n registerRoute(precacheRoute);\n}\nexport { addRoute };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport './_version.js';\n/**\n * Helper function that calls\n * {@link PrecacheController#createHandlerBoundToURL} on the default\n * {@link PrecacheController} instance.\n *\n * If you are creating your own {@link PrecacheController}, then call the\n * {@link PrecacheController#createHandlerBoundToURL} on that instance,\n * instead of using this function.\n *\n * @param {string} url The precached URL which will be used to lookup the\n * `Response`.\n * @param {boolean} [fallbackToNetwork=true] Whether to attempt to get the\n * response from the network if there's a precache miss.\n * @return {workbox-routing~handlerCallback}\n *\n * @memberof workbox-precaching\n */\nfunction createHandlerBoundToURL(url) {\n const precacheController = getOrCreatePrecacheController();\n return precacheController.createHandlerBoundToURL(url);\n}\nexport { createHandlerBoundToURL };\n"]} \ No newline at end of file +{"version":3,"sources":["../node_modules/workbox-core/_version.js","../node_modules/workbox-expiration/_version.js","../node_modules/workbox-precaching/_version.js","../node_modules/workbox-routing/_version.js","../node_modules/workbox-strategies/_version.js","../webpack/bootstrap","../node_modules/workbox-core/_private/logger.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/workbox-core/models/messages/messages.js","../node_modules/workbox-core/models/messages/messageGenerator.js","../node_modules/workbox-core/_private/WorkboxError.js","../node_modules/workbox-core/models/quotaErrorCallbacks.js","../node_modules/workbox-core/_private/cacheNames.js","../node_modules/workbox-core/_private/canConstructResponseFromBodyStream.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/workbox-core/_private/cacheMatchIgnoreParams.js","../node_modules/workbox-core/_private/dontWaitFor.js","../node_modules/workbox-core/_private/Deferred.js","../node_modules/workbox-core/_private/executeQuotaErrorCallbacks.js","../node_modules/workbox-core/_private/getFriendlyURL.js","../node_modules/workbox-core/_private/timeout.js","../node_modules/workbox-core/_private/waitUntil.js","../node_modules/workbox-core/copyResponse.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/idb/build/wrap-idb-value.js","../node_modules/idb/build/index.js","../node_modules/workbox-expiration/models/CacheTimestampsModel.js","../node_modules/workbox-expiration/CacheExpiration.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/workbox-expiration/ExpirationPlugin.js","../node_modules/workbox-core/registerQuotaErrorCallback.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/workbox-precaching/utils/createCacheKey.js","../node_modules/workbox-precaching/utils/PrecacheInstallReportPlugin.js","../node_modules/workbox-precaching/utils/PrecacheCacheKeyPlugin.js","../node_modules/workbox-strategies/StrategyHandler.js","../node_modules/workbox-strategies/Strategy.js","../node_modules/workbox-precaching/PrecacheStrategy.js","../node_modules/workbox-precaching/PrecacheController.js","../node_modules/workbox-precaching/utils/getOrCreatePrecacheController.js","../node_modules/workbox-routing/utils/getOrCreateDefaultRouter.js","../node_modules/workbox-routing/utils/constants.js","../node_modules/workbox-routing/utils/normalizeHandler.js","../node_modules/workbox-routing/Route.js","../node_modules/workbox-routing/RegExpRoute.js","../node_modules/workbox-routing/Router.js","../node_modules/workbox-routing/registerRoute.js","../node_modules/workbox-precaching/utils/removeIgnoredSearchParams.js","../node_modules/workbox-precaching/PrecacheRoute.js","../node_modules/workbox-precaching/utils/generateURLVariations.js","../node_modules/workbox-strategies/utils/messages.js","../node_modules/workbox-precaching/precacheAndRoute.js","../node_modules/workbox-strategies/plugins/cacheOkAndOpaquePlugin.js","../node_modules/workbox-strategies/StaleWhileRevalidate.js","../node_modules/workbox-core/clientsClaim.js","../node_modules/workbox-precaching/precache.js","service-worker.ts","../node_modules/workbox-precaching/addRoute.js","../node_modules/workbox-precaching/createHandlerBoundToURL.js"],"names":["self","_","e","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","logger","_typeof","obj","Symbol","iterator","constructor","prototype","_toPropertyKey","arg","key","input","hint","prim","toPrimitive","res","call","TypeError","String","Number","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","Constructor","protoProps","staticProps","instance","_setPrototypeOf","o","p","setPrototypeOf","bind","__proto__","_inherits","subClass","superClass","create","value","_getPrototypeOf","getPrototypeOf","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_possibleConstructorReturn","ReferenceError","_createSuper","Derived","hasNativeReflectConstruct","result","Super","NewTarget","this","arguments","apply","_construct","Parent","args","Class","a","push","Function","_wrapNativeSuper","_cache","Map","fn","toString","indexOf","has","get","set","Wrapper","messageGenerator","code","msg","_len","Array","_key","concat","JSON","stringify","WorkboxError","_Error","_super","errorCode","details","_this","_classCallCheck","message","name","_createClass","Error","quotaErrorCallbacks","Set","supportStatus","_cacheNameDetails","googleAnalytics","precache","prefix","runtime","suffix","registration","scope","_createCacheName","cacheName","filter","join","cacheNames","updateDetails","_i","_Object$keys","keys","eachCacheNameDetail","getGoogleAnalyticsName","userCacheName","getPrecacheName","getPrefix","getRuntimeName","getSuffix","Op","hasOwn","hasOwnProperty","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","err","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","makeInvokeMethod","tryCatch","type","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","state","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","done","methodName","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","Promise","iter","val","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_arrayLikeToArray","arr","len","arr2","_unsupportedIterableToArray","minLen","n","from","test","allowArrayLike","it","isArray","F","s","_e","f","normalCompletion","didErr","step","_e2","stripParams","fullURL","ignoreParams","_step","strippedURL","URL","_iterator","_createForOfIteratorHelper","param","searchParams","delete","href","cacheMatchIgnoreParams","_x","_x2","_x3","_x4","_cacheMatchIgnoreParams","_asyncToGenerator","_regeneratorRuntime","_callee","cache","request","matchOptions","strippedRequestURL","keysOptions","cacheKeys","_iterator2","_step2","cacheKey","strippedCacheKeyURL","_context","url","match","assign","ignoreSearch","t0","canConstructResponseFromBodyStream","testResponse","Response","body","dontWaitFor","promise","Deferred","executeQuotaErrorCallbacks","_executeQuotaErrorCallbacks","callback","process","getFriendlyURL","location","replace","RegExp","origin","timeout","ms","setTimeout","waitUntil","event","asyncFn","returnPromise","copyResponse","_copyResponse","response","modifier","responseURL","clonedResponse","responseInit","modifiedResponseInit","clone","headers","Headers","status","statusText","blob","_defineProperty","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread2","source","getOwnPropertyDescriptors","defineProperties","idbProxyableTypes","cursorAdvanceMethods","instanceOfAny","constructors","some","c","cursorRequestMap","WeakMap","transactionDoneMap","transactionStoreNamesMap","transformCache","reverseTransformCache","idbProxyTraps","prop","receiver","IDBTransaction","objectStoreNames","objectStore","wrapFunction","func","IDBDatabase","transaction","IDBCursor","advance","continue","continuePrimaryKey","includes","_len2","_key2","unwrap","_len3","_key3","storeNames","tx","sort","transformCachableValue","unlisten","removeEventListener","DOMException","addEventListener","cacheDonePromiseForTransaction","IDBObjectStore","IDBIndex","IDBRequest","success","catch","promisifyRequest","newValue","openDB","version","_ref","blocked","upgrade","blocking","terminated","indexedDB","open","openPromise","oldVersion","newVersion","db","readMethods","writeMethods","cachedMethods","getMethod","targetFuncName","useIndex","isWrite","_ref3","storeName","_target","_args","store","index","shift","all","oldTraps","_objectSpread","CACHE_OBJECT_STORE","normalizeURL","unNormalizedUrl","hash","CacheTimestampsModel","_db","_cacheName","objStore","createObjectStore","keyPath","createIndex","unique","_upgradeDb","deleteDatabase","deleteDB","_setTimestamp","timestamp","id","_getId","getDb","durability","put","_getTimestamp","_callee2","_context2","_expireEntries","_callee3","minTimestamp","maxCount","cursor","entriesToDelete","entriesNotDeletedCount","urlsDeleted","_entriesToDelete","_context3","openCursor","_x5","_getDb","_callee4","_context4","_upgradeDbAndDeleteOldDbs","CacheExpiration","config","_isRunning","_rerunRequested","_maxEntries","maxEntries","_maxAgeSeconds","maxAgeSeconds","_matchOptions","_timestampModel","urlsExpired","Date","now","expireEntries","caches","_updateTimestamp","setTimestamp","_isURLExpired","expireOlderThan","getTimestamp","_delete2","Infinity","_slicedToArray","_s","_r","_arr","_n","_d","ExpirationPlugin","cachedResponseWillBeUsed","_ref2","cachedResponse","isFresh","cacheExpiration","updateTimestampDone","_isResponseDateFresh","_getCacheExpiration","updateTimestamp","cacheDidUpdate","_ref4","_config","_cacheExpirations","purgeOnQuotaError","add","registerQuotaErrorCallback","deleteCacheAndMetadata","dateHeaderTimestamp","_getDateHeaderTimestamp","dateHeader","headerTime","getTime","_deleteCacheAndMetadata","_step$value","REVISION_SEARCH_PARAM","createCacheKey","urlObject","revision","cacheKeyURL","originalURL","PrecacheInstallReportPlugin","updatedURLs","notUpdatedURLs","handlerWillStart","originalRequest","Request","PrecacheCacheKeyPlugin","precacheController","cacheKeyWillBeUsed","params","_precacheController","getCacheKeyForURL","toRequest","StrategyHandler","strategy","options","_cacheKeys","_strategy","_handlerDeferred","_extendLifetimePromises","_plugins","_toConsumableArray","plugins","_pluginStateMap","plugin","_fetch","fetch","possiblePreloadResponse","cb","pluginFilteredRequest","fetchResponse","_iterator3","_step3","mode","FetchEvent","preloadResponse","hasCallback","iterateCallbacks","t1","thrownErrorMessage","fetchOptions","t2","t3","runCallbacks","_fetchAndCachePut","responseClone","cachePut","_cacheMatch","_this$_strategy","effectiveRequest","multiMatchOptions","_iterator4","_step4","getCacheKey","_cachePut","vary","responseToCache","_this$_strategy2","hasCacheUpdateCallback","oldResponse","_iterator5","_step5","_ensureResponseSafeToCache","newResponse","_x6","_getCacheKey","_callee5","_iterator6","_step6","_context5","_x7","_x8","_step7","_iterator7","_runCallbacks","_callee6","_iterator8","_step8","_context6","_x9","_x10","_iterator9","_step9","_loop","_context8","statefulCallback","_context7","statefulParam","_doneWaiting","_callee7","_context9","_ensureResponseSafeToCache2","_callee8","pluginsUsed","_iterator10","_step10","_context10","_x11","Strategy","handleAll","handler","responseDone","_getResponse","_awaitComplete","_getResponse2","_callback","_handle","_awaitComplete2","doneWaiting","destroy","PrecacheStrategy","_Strategy","_fallbackToNetwork","fallbackToNetwork","copyRedirectedCacheableResponsesPlugin","_handle2","cacheMatch","_handleInstall","_handleFetch","_handleFetch2","integrityInManifest","integrityInRequest","noIntegrityConflict","integrity","_useDefaultCacheabilityPluginIfNeeded","_handleInstall2","defaultPluginIndex","cacheWillUpdatePluginCount","entries","defaultPrecacheCacheabilityPlugin","cacheWillUpdate","splice","redirected","PrecacheController","_ref$plugins","_ref$fallbackToNetwor","_urlsToCacheKeys","_urlsToCacheModes","_cacheKeysToIntegrities","install","activate","addToCacheList","_installAndActiveListenersAdded","urlsToWarnAbout","_createCacheKey","cacheMode","firstEntry","secondEntry","warningMessage","console","warn","installReportPlugin","_step2$value","credentials","_this2","currentlyCachedRequests","expectedCacheKeys","deletedURLs","_matchPrecache","_this3","getOrCreatePrecacheController","defaultRouter","defaultMethod","normalizeHandler","Route","catchHandler","RegExpRoute","_Route","regExp","exec","Router","_routes","_defaultHandlerMap","responsePromise","handleRequest","respondWith","data","payload","requestPromises","urlsToCache","map","ports","postMessage","protocol","startsWith","sameOrigin","_this$findMatchingRou","findMatchingRoute","route","_catchHandler","matchResult","routeIndex","getOrCreateDefaultRouter","addFetchListener","addCacheListener","registerRoute","capture","captureUrl","moduleName","funcName","paramName","removeIgnoredSearchParams","ignoreURLParametersMatching","PrecacheRoute","urlsToCacheKeys","getURLsToCacheKeys","_ref$ignoreURLParamet","_ref$directoryIndex","directoryIndex","_ref$cleanURLs","cleanURLs","urlManipulation","urlWithoutIgnoredParams","directoryURL","cleanURL","additionalURLs","urlToAttempt","pathname","endsWith","generateURLVariations","possibleURL","getIntegrityForCacheKey","cacheOkAndOpaquePlugin","_cacheWillUpdate","StaleWhileRevalidate","unshift","fetchAndCachePromise","fetchAndCachePut","clients","claim","__WB_MANIFEST","addRoute","fileExtensionRegexp","createHandlerBoundToURL","skipWaiting"],"mappings":"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","file":"service-worker.js","sourceRoot":"","sourcesContent":["\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:core:6.5.3'] && _();\n}\ncatch (e) { }\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:expiration:6.5.3'] && _();\n}\ncatch (e) { }\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:precaching:6.5.3'] && _();\n}\ncatch (e) { }\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:routing:6.5.3'] && _();\n}\ncatch (e) { }\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:strategies:6.5.3'] && _();\n}\ncatch (e) { }\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst logger = (process.env.NODE_ENV === 'production'\n ? null\n : (() => {\n // Don't overwrite this value if it's already set.\n // See https://github.com/GoogleChrome/workbox/pull/2284#issuecomment-560470923\n if (!('__WB_DISABLE_DEV_LOGS' in self)) {\n self.__WB_DISABLE_DEV_LOGS = false;\n }\n let inGroup = false;\n const methodToColorMap = {\n debug: `#7f8c8d`,\n log: `#2ecc71`,\n warn: `#f39c12`,\n error: `#c0392b`,\n groupCollapsed: `#3498db`,\n groupEnd: null, // No colored prefix on groupEnd\n };\n const print = function (method, args) {\n if (self.__WB_DISABLE_DEV_LOGS) {\n return;\n }\n if (method === 'groupCollapsed') {\n // Safari doesn't print all console.groupCollapsed() arguments:\n // https://bugs.webkit.org/show_bug.cgi?id=182754\n if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n console[method](...args);\n return;\n }\n }\n const styles = [\n `background: ${methodToColorMap[method]}`,\n `border-radius: 0.5em`,\n `color: white`,\n `font-weight: bold`,\n `padding: 2px 0.5em`,\n ];\n // When in a group, the workbox prefix is not displayed.\n const logPrefix = inGroup ? [] : ['%cworkbox', styles.join(';')];\n console[method](...logPrefix, ...args);\n if (method === 'groupCollapsed') {\n inGroup = true;\n }\n if (method === 'groupEnd') {\n inGroup = false;\n }\n };\n // eslint-disable-next-line @typescript-eslint/ban-types\n const api = {};\n const loggerMethods = Object.keys(methodToColorMap);\n for (const key of loggerMethods) {\n const method = key;\n api[method] = (...args) => {\n print(method, args);\n };\n }\n return api;\n })());\nexport { logger };\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../../_version.js';\nexport const messages = {\n 'invalid-value': ({ paramName, validValueDescription, value }) => {\n if (!paramName || !validValueDescription) {\n throw new Error(`Unexpected input to 'invalid-value' error.`);\n }\n return (`The '${paramName}' parameter was given a value with an ` +\n `unexpected value. ${validValueDescription} Received a value of ` +\n `${JSON.stringify(value)}.`);\n },\n 'not-an-array': ({ moduleName, className, funcName, paramName }) => {\n if (!moduleName || !className || !funcName || !paramName) {\n throw new Error(`Unexpected input to 'not-an-array' error.`);\n }\n return (`The parameter '${paramName}' passed into ` +\n `'${moduleName}.${className}.${funcName}()' must be an array.`);\n },\n 'incorrect-type': ({ expectedType, paramName, moduleName, className, funcName, }) => {\n if (!expectedType || !paramName || !moduleName || !funcName) {\n throw new Error(`Unexpected input to 'incorrect-type' error.`);\n }\n const classNameStr = className ? `${className}.` : '';\n return (`The parameter '${paramName}' passed into ` +\n `'${moduleName}.${classNameStr}` +\n `${funcName}()' must be of type ${expectedType}.`);\n },\n 'incorrect-class': ({ expectedClassName, paramName, moduleName, className, funcName, isReturnValueProblem, }) => {\n if (!expectedClassName || !moduleName || !funcName) {\n throw new Error(`Unexpected input to 'incorrect-class' error.`);\n }\n const classNameStr = className ? `${className}.` : '';\n if (isReturnValueProblem) {\n return (`The return value from ` +\n `'${moduleName}.${classNameStr}${funcName}()' ` +\n `must be an instance of class ${expectedClassName}.`);\n }\n return (`The parameter '${paramName}' passed into ` +\n `'${moduleName}.${classNameStr}${funcName}()' ` +\n `must be an instance of class ${expectedClassName}.`);\n },\n 'missing-a-method': ({ expectedMethod, paramName, moduleName, className, funcName, }) => {\n if (!expectedMethod ||\n !paramName ||\n !moduleName ||\n !className ||\n !funcName) {\n throw new Error(`Unexpected input to 'missing-a-method' error.`);\n }\n return (`${moduleName}.${className}.${funcName}() expected the ` +\n `'${paramName}' parameter to expose a '${expectedMethod}' method.`);\n },\n 'add-to-cache-list-unexpected-type': ({ entry }) => {\n return (`An unexpected entry was passed to ` +\n `'workbox-precaching.PrecacheController.addToCacheList()' The entry ` +\n `'${JSON.stringify(entry)}' isn't supported. You must supply an array of ` +\n `strings with one or more characters, objects with a url property or ` +\n `Request objects.`);\n },\n 'add-to-cache-list-conflicting-entries': ({ firstEntry, secondEntry }) => {\n if (!firstEntry || !secondEntry) {\n throw new Error(`Unexpected input to ` + `'add-to-cache-list-duplicate-entries' error.`);\n }\n return (`Two of the entries passed to ` +\n `'workbox-precaching.PrecacheController.addToCacheList()' had the URL ` +\n `${firstEntry} but different revision details. Workbox is ` +\n `unable to cache and version the asset correctly. Please remove one ` +\n `of the entries.`);\n },\n 'plugin-error-request-will-fetch': ({ thrownErrorMessage }) => {\n if (!thrownErrorMessage) {\n throw new Error(`Unexpected input to ` + `'plugin-error-request-will-fetch', error.`);\n }\n return (`An error was thrown by a plugins 'requestWillFetch()' method. ` +\n `The thrown error message was: '${thrownErrorMessage}'.`);\n },\n 'invalid-cache-name': ({ cacheNameId, value }) => {\n if (!cacheNameId) {\n throw new Error(`Expected a 'cacheNameId' for error 'invalid-cache-name'`);\n }\n return (`You must provide a name containing at least one character for ` +\n `setCacheDetails({${cacheNameId}: '...'}). Received a value of ` +\n `'${JSON.stringify(value)}'`);\n },\n 'unregister-route-but-not-found-with-method': ({ method }) => {\n if (!method) {\n throw new Error(`Unexpected input to ` +\n `'unregister-route-but-not-found-with-method' error.`);\n }\n return (`The route you're trying to unregister was not previously ` +\n `registered for the method type '${method}'.`);\n },\n 'unregister-route-route-not-registered': () => {\n return (`The route you're trying to unregister was not previously ` +\n `registered.`);\n },\n 'queue-replay-failed': ({ name }) => {\n return `Replaying the background sync queue '${name}' failed.`;\n },\n 'duplicate-queue-name': ({ name }) => {\n return (`The Queue name '${name}' is already being used. ` +\n `All instances of backgroundSync.Queue must be given unique names.`);\n },\n 'expired-test-without-max-age': ({ methodName, paramName }) => {\n return (`The '${methodName}()' method can only be used when the ` +\n `'${paramName}' is used in the constructor.`);\n },\n 'unsupported-route-type': ({ moduleName, className, funcName, paramName }) => {\n return (`The supplied '${paramName}' parameter was an unsupported type. ` +\n `Please check the docs for ${moduleName}.${className}.${funcName} for ` +\n `valid input types.`);\n },\n 'not-array-of-class': ({ value, expectedClass, moduleName, className, funcName, paramName, }) => {\n return (`The supplied '${paramName}' parameter must be an array of ` +\n `'${expectedClass}' objects. Received '${JSON.stringify(value)},'. ` +\n `Please check the call to ${moduleName}.${className}.${funcName}() ` +\n `to fix the issue.`);\n },\n 'max-entries-or-age-required': ({ moduleName, className, funcName }) => {\n return (`You must define either config.maxEntries or config.maxAgeSeconds` +\n `in ${moduleName}.${className}.${funcName}`);\n },\n 'statuses-or-headers-required': ({ moduleName, className, funcName }) => {\n return (`You must define either config.statuses or config.headers` +\n `in ${moduleName}.${className}.${funcName}`);\n },\n 'invalid-string': ({ moduleName, funcName, paramName }) => {\n if (!paramName || !moduleName || !funcName) {\n throw new Error(`Unexpected input to 'invalid-string' error.`);\n }\n return (`When using strings, the '${paramName}' parameter must start with ` +\n `'http' (for cross-origin matches) or '/' (for same-origin matches). ` +\n `Please see the docs for ${moduleName}.${funcName}() for ` +\n `more info.`);\n },\n 'channel-name-required': () => {\n return (`You must provide a channelName to construct a ` +\n `BroadcastCacheUpdate instance.`);\n },\n 'invalid-responses-are-same-args': () => {\n return (`The arguments passed into responsesAreSame() appear to be ` +\n `invalid. Please ensure valid Responses are used.`);\n },\n 'expire-custom-caches-only': () => {\n return (`You must provide a 'cacheName' property when using the ` +\n `expiration plugin with a runtime caching strategy.`);\n },\n 'unit-must-be-bytes': ({ normalizedRangeHeader }) => {\n if (!normalizedRangeHeader) {\n throw new Error(`Unexpected input to 'unit-must-be-bytes' error.`);\n }\n return (`The 'unit' portion of the Range header must be set to 'bytes'. ` +\n `The Range header provided was \"${normalizedRangeHeader}\"`);\n },\n 'single-range-only': ({ normalizedRangeHeader }) => {\n if (!normalizedRangeHeader) {\n throw new Error(`Unexpected input to 'single-range-only' error.`);\n }\n return (`Multiple ranges are not supported. Please use a single start ` +\n `value, and optional end value. The Range header provided was ` +\n `\"${normalizedRangeHeader}\"`);\n },\n 'invalid-range-values': ({ normalizedRangeHeader }) => {\n if (!normalizedRangeHeader) {\n throw new Error(`Unexpected input to 'invalid-range-values' error.`);\n }\n return (`The Range header is missing both start and end values. At least ` +\n `one of those values is needed. The Range header provided was ` +\n `\"${normalizedRangeHeader}\"`);\n },\n 'no-range-header': () => {\n return `No Range header was found in the Request provided.`;\n },\n 'range-not-satisfiable': ({ size, start, end }) => {\n return (`The start (${start}) and end (${end}) values in the Range are ` +\n `not satisfiable by the cached response, which is ${size} bytes.`);\n },\n 'attempt-to-cache-non-get-request': ({ url, method }) => {\n return (`Unable to cache '${url}' because it is a '${method}' request and ` +\n `only 'GET' requests can be cached.`);\n },\n 'cache-put-with-no-response': ({ url }) => {\n return (`There was an attempt to cache '${url}' but the response was not ` +\n `defined.`);\n },\n 'no-response': ({ url, error }) => {\n let message = `The strategy could not generate a response for '${url}'.`;\n if (error) {\n message += ` The underlying error is ${error}.`;\n }\n return message;\n },\n 'bad-precaching-response': ({ url, status }) => {\n return (`The precaching request for '${url}' failed` +\n (status ? ` with an HTTP status of ${status}.` : `.`));\n },\n 'non-precached-url': ({ url }) => {\n return (`createHandlerBoundToURL('${url}') was called, but that URL is ` +\n `not precached. Please pass in a URL that is precached instead.`);\n },\n 'add-to-cache-list-conflicting-integrities': ({ url }) => {\n return (`Two of the entries passed to ` +\n `'workbox-precaching.PrecacheController.addToCacheList()' had the URL ` +\n `${url} with different integrity values. Please remove one of them.`);\n },\n 'missing-precache-entry': ({ cacheName, url }) => {\n return `Unable to find a precached response in ${cacheName} for ${url}.`;\n },\n 'cross-origin-copy-response': ({ origin }) => {\n return (`workbox-core.copyResponse() can only be used with same-origin ` +\n `responses. It was passed a response with origin ${origin}.`);\n },\n 'opaque-streams-source': ({ type }) => {\n const message = `One of the workbox-streams sources resulted in an ` +\n `'${type}' response.`;\n if (type === 'opaqueredirect') {\n return (`${message} Please do not use a navigation request that results ` +\n `in a redirect as a source.`);\n }\n return `${message} Please ensure your sources are CORS-enabled.`;\n },\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { messages } from './messages.js';\nimport '../../_version.js';\nconst fallback = (code, ...args) => {\n let msg = code;\n if (args.length > 0) {\n msg += ` :: ${JSON.stringify(args)}`;\n }\n return msg;\n};\nconst generatorFunction = (code, details = {}) => {\n const message = messages[code];\n if (!message) {\n throw new Error(`Unable to find message for code '${code}'.`);\n }\n return message(details);\n};\nexport const messageGenerator = process.env.NODE_ENV === 'production' ? fallback : generatorFunction;\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { messageGenerator } from '../models/messages/messageGenerator.js';\nimport '../_version.js';\n/**\n * Workbox errors should be thrown with this class.\n * This allows use to ensure the type easily in tests,\n * helps developers identify errors from workbox\n * easily and allows use to optimise error\n * messages correctly.\n *\n * @private\n */\nclass WorkboxError extends Error {\n /**\n *\n * @param {string} errorCode The error code that\n * identifies this particular error.\n * @param {Object=} details Any relevant arguments\n * that will help developers identify issues should\n * be added as a key on the context object.\n */\n constructor(errorCode, details) {\n const message = messageGenerator(errorCode, details);\n super(message);\n this.name = errorCode;\n this.details = details;\n }\n}\nexport { WorkboxError };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n// Callbacks to be executed whenever there's a quota error.\n// Can't change Function type right now.\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst quotaErrorCallbacks = new Set();\nexport { quotaErrorCallbacks };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst _cacheNameDetails = {\n googleAnalytics: 'googleAnalytics',\n precache: 'precache-v2',\n prefix: 'workbox',\n runtime: 'runtime',\n suffix: typeof registration !== 'undefined' ? registration.scope : '',\n};\nconst _createCacheName = (cacheName) => {\n return [_cacheNameDetails.prefix, cacheName, _cacheNameDetails.suffix]\n .filter((value) => value && value.length > 0)\n .join('-');\n};\nconst eachCacheNameDetail = (fn) => {\n for (const key of Object.keys(_cacheNameDetails)) {\n fn(key);\n }\n};\nexport const cacheNames = {\n updateDetails: (details) => {\n eachCacheNameDetail((key) => {\n if (typeof details[key] === 'string') {\n _cacheNameDetails[key] = details[key];\n }\n });\n },\n getGoogleAnalyticsName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.googleAnalytics);\n },\n getPrecacheName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.precache);\n },\n getPrefix: () => {\n return _cacheNameDetails.prefix;\n },\n getRuntimeName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.runtime);\n },\n getSuffix: () => {\n return _cacheNameDetails.suffix;\n },\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nlet supportStatus;\n/**\n * A utility function that determines whether the current browser supports\n * constructing a new `Response` from a `response.body` stream.\n *\n * @return {boolean} `true`, if the current browser can successfully\n * construct a `Response` from a `response.body` stream, `false` otherwise.\n *\n * @private\n */\nfunction canConstructResponseFromBodyStream() {\n if (supportStatus === undefined) {\n const testResponse = new Response('');\n if ('body' in testResponse) {\n try {\n new Response(testResponse.body);\n supportStatus = true;\n }\n catch (error) {\n supportStatus = false;\n }\n }\n supportStatus = false;\n }\n return supportStatus;\n}\nexport { canConstructResponseFromBodyStream };\n","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","/*\n Copyright 2020 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nfunction stripParams(fullURL, ignoreParams) {\n const strippedURL = new URL(fullURL);\n for (const param of ignoreParams) {\n strippedURL.searchParams.delete(param);\n }\n return strippedURL.href;\n}\n/**\n * Matches an item in the cache, ignoring specific URL params. This is similar\n * to the `ignoreSearch` option, but it allows you to ignore just specific\n * params (while continuing to match on the others).\n *\n * @private\n * @param {Cache} cache\n * @param {Request} request\n * @param {Object} matchOptions\n * @param {Array} ignoreParams\n * @return {Promise}\n */\nasync function cacheMatchIgnoreParams(cache, request, ignoreParams, matchOptions) {\n const strippedRequestURL = stripParams(request.url, ignoreParams);\n // If the request doesn't include any ignored params, match as normal.\n if (request.url === strippedRequestURL) {\n return cache.match(request, matchOptions);\n }\n // Otherwise, match by comparing keys\n const keysOptions = Object.assign(Object.assign({}, matchOptions), { ignoreSearch: true });\n const cacheKeys = await cache.keys(request, keysOptions);\n for (const cacheKey of cacheKeys) {\n const strippedCacheKeyURL = stripParams(cacheKey.url, ignoreParams);\n if (strippedRequestURL === strippedCacheKeyURL) {\n return cache.match(cacheKey, matchOptions);\n }\n }\n return;\n}\nexport { cacheMatchIgnoreParams };\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A helper function that prevents a promise from being flagged as unused.\n *\n * @private\n **/\nexport function dontWaitFor(promise) {\n // Effective no-op.\n void promise.then(() => { });\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The Deferred class composes Promises in a way that allows for them to be\n * resolved or rejected from outside the constructor. In most cases promises\n * should be used directly, but Deferreds can be necessary when the logic to\n * resolve a promise must be separate.\n *\n * @private\n */\nclass Deferred {\n /**\n * Creates a promise and exposes its resolve and reject functions as methods.\n */\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\nexport { Deferred };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from '../_private/logger.js';\nimport { quotaErrorCallbacks } from '../models/quotaErrorCallbacks.js';\nimport '../_version.js';\n/**\n * Runs all of the callback functions, one at a time sequentially, in the order\n * in which they were registered.\n *\n * @memberof workbox-core\n * @private\n */\nasync function executeQuotaErrorCallbacks() {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`About to run ${quotaErrorCallbacks.size} ` +\n `callbacks to clean up caches.`);\n }\n for (const callback of quotaErrorCallbacks) {\n await callback();\n if (process.env.NODE_ENV !== 'production') {\n logger.log(callback, 'is complete.');\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Finished running callbacks.');\n }\n}\nexport { executeQuotaErrorCallbacks };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst getFriendlyURL = (url) => {\n const urlObj = new URL(String(url), location.href);\n // See https://github.com/GoogleChrome/workbox/issues/2323\n // We want to include everything, except for the origin if it's same-origin.\n return urlObj.href.replace(new RegExp(`^${location.origin}`), '');\n};\nexport { getFriendlyURL };\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * Returns a promise that resolves and the passed number of milliseconds.\n * This utility is an async/await-friendly version of `setTimeout`.\n *\n * @param {number} ms\n * @return {Promise}\n * @private\n */\nexport function timeout(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","/*\n Copyright 2020 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A utility method that makes it easier to use `event.waitUntil` with\n * async functions and return the result.\n *\n * @param {ExtendableEvent} event\n * @param {Function} asyncFn\n * @return {Function}\n * @private\n */\nfunction waitUntil(event, asyncFn) {\n const returnPromise = asyncFn();\n event.waitUntil(returnPromise);\n return returnPromise;\n}\nexport { waitUntil };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { canConstructResponseFromBodyStream } from './_private/canConstructResponseFromBodyStream.js';\nimport { WorkboxError } from './_private/WorkboxError.js';\nimport './_version.js';\n/**\n * Allows developers to copy a response and modify its `headers`, `status`,\n * or `statusText` values (the values settable via a\n * [`ResponseInit`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax}\n * object in the constructor).\n * To modify these values, pass a function as the second argument. That\n * function will be invoked with a single object with the response properties\n * `{headers, status, statusText}`. The return value of this function will\n * be used as the `ResponseInit` for the new `Response`. To change the values\n * either modify the passed parameter(s) and return it, or return a totally\n * new object.\n *\n * This method is intentionally limited to same-origin responses, regardless of\n * whether CORS was used or not.\n *\n * @param {Response} response\n * @param {Function} modifier\n * @memberof workbox-core\n */\nasync function copyResponse(response, modifier) {\n let origin = null;\n // If response.url isn't set, assume it's cross-origin and keep origin null.\n if (response.url) {\n const responseURL = new URL(response.url);\n origin = responseURL.origin;\n }\n if (origin !== self.location.origin) {\n throw new WorkboxError('cross-origin-copy-response', { origin });\n }\n const clonedResponse = response.clone();\n // Create a fresh `ResponseInit` object by cloning the headers.\n const responseInit = {\n headers: new Headers(clonedResponse.headers),\n status: clonedResponse.status,\n statusText: clonedResponse.statusText,\n };\n // Apply any user modifications.\n const modifiedResponseInit = modifier ? modifier(responseInit) : responseInit;\n // Create the new response from the body stream and `ResponseInit`\n // modifications. Note: not all browsers support the Response.body stream,\n // so fall back to reading the entire body into memory as a blob.\n const body = canConstructResponseFromBodyStream()\n ? clonedResponse.body\n : await clonedResponse.blob();\n return new Response(body, modifiedResponseInit);\n}\nexport { copyResponse };\n","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction));\n });\n }\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking)\n db.addEventListener('versionchange', () => blocking());\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { openDB, deleteDB } from 'idb';\nimport '../_version.js';\nconst DB_NAME = 'workbox-expiration';\nconst CACHE_OBJECT_STORE = 'cache-entries';\nconst normalizeURL = (unNormalizedUrl) => {\n const url = new URL(unNormalizedUrl, location.href);\n url.hash = '';\n return url.href;\n};\n/**\n * Returns the timestamp model.\n *\n * @private\n */\nclass CacheTimestampsModel {\n /**\n *\n * @param {string} cacheName\n *\n * @private\n */\n constructor(cacheName) {\n this._db = null;\n this._cacheName = cacheName;\n }\n /**\n * Performs an upgrade of indexedDB.\n *\n * @param {IDBPDatabase} db\n *\n * @private\n */\n _upgradeDb(db) {\n // TODO(philipwalton): EdgeHTML doesn't support arrays as a keyPath, so we\n // have to use the `id` keyPath here and create our own values (a\n // concatenation of `url + cacheName`) instead of simply using\n // `keyPath: ['url', 'cacheName']`, which is supported in other browsers.\n const objStore = db.createObjectStore(CACHE_OBJECT_STORE, { keyPath: 'id' });\n // TODO(philipwalton): once we don't have to support EdgeHTML, we can\n // create a single index with the keyPath `['cacheName', 'timestamp']`\n // instead of doing both these indexes.\n objStore.createIndex('cacheName', 'cacheName', { unique: false });\n objStore.createIndex('timestamp', 'timestamp', { unique: false });\n }\n /**\n * Performs an upgrade of indexedDB and deletes deprecated DBs.\n *\n * @param {IDBPDatabase} db\n *\n * @private\n */\n _upgradeDbAndDeleteOldDbs(db) {\n this._upgradeDb(db);\n if (this._cacheName) {\n void deleteDB(this._cacheName);\n }\n }\n /**\n * @param {string} url\n * @param {number} timestamp\n *\n * @private\n */\n async setTimestamp(url, timestamp) {\n url = normalizeURL(url);\n const entry = {\n url,\n timestamp,\n cacheName: this._cacheName,\n // Creating an ID from the URL and cache name won't be necessary once\n // Edge switches to Chromium and all browsers we support work with\n // array keyPaths.\n id: this._getId(url),\n };\n const db = await this.getDb();\n const tx = db.transaction(CACHE_OBJECT_STORE, 'readwrite', {\n durability: 'relaxed',\n });\n await tx.store.put(entry);\n await tx.done;\n }\n /**\n * Returns the timestamp stored for a given URL.\n *\n * @param {string} url\n * @return {number | undefined}\n *\n * @private\n */\n async getTimestamp(url) {\n const db = await this.getDb();\n const entry = await db.get(CACHE_OBJECT_STORE, this._getId(url));\n return entry === null || entry === void 0 ? void 0 : entry.timestamp;\n }\n /**\n * Iterates through all the entries in the object store (from newest to\n * oldest) and removes entries once either `maxCount` is reached or the\n * entry's timestamp is less than `minTimestamp`.\n *\n * @param {number} minTimestamp\n * @param {number} maxCount\n * @return {Array}\n *\n * @private\n */\n async expireEntries(minTimestamp, maxCount) {\n const db = await this.getDb();\n let cursor = await db\n .transaction(CACHE_OBJECT_STORE)\n .store.index('timestamp')\n .openCursor(null, 'prev');\n const entriesToDelete = [];\n let entriesNotDeletedCount = 0;\n while (cursor) {\n const result = cursor.value;\n // TODO(philipwalton): once we can use a multi-key index, we\n // won't have to check `cacheName` here.\n if (result.cacheName === this._cacheName) {\n // Delete an entry if it's older than the max age or\n // if we already have the max number allowed.\n if ((minTimestamp && result.timestamp < minTimestamp) ||\n (maxCount && entriesNotDeletedCount >= maxCount)) {\n // TODO(philipwalton): we should be able to delete the\n // entry right here, but doing so causes an iteration\n // bug in Safari stable (fixed in TP). Instead we can\n // store the keys of the entries to delete, and then\n // delete the separate transactions.\n // https://github.com/GoogleChrome/workbox/issues/1978\n // cursor.delete();\n // We only need to return the URL, not the whole entry.\n entriesToDelete.push(cursor.value);\n }\n else {\n entriesNotDeletedCount++;\n }\n }\n cursor = await cursor.continue();\n }\n // TODO(philipwalton): once the Safari bug in the following issue is fixed,\n // we should be able to remove this loop and do the entry deletion in the\n // cursor loop above:\n // https://github.com/GoogleChrome/workbox/issues/1978\n const urlsDeleted = [];\n for (const entry of entriesToDelete) {\n await db.delete(CACHE_OBJECT_STORE, entry.id);\n urlsDeleted.push(entry.url);\n }\n return urlsDeleted;\n }\n /**\n * Takes a URL and returns an ID that will be unique in the object store.\n *\n * @param {string} url\n * @return {string}\n *\n * @private\n */\n _getId(url) {\n // Creating an ID from the URL and cache name won't be necessary once\n // Edge switches to Chromium and all browsers we support work with\n // array keyPaths.\n return this._cacheName + '|' + normalizeURL(url);\n }\n /**\n * Returns an open connection to the database.\n *\n * @private\n */\n async getDb() {\n if (!this._db) {\n this._db = await openDB(DB_NAME, 1, {\n upgrade: this._upgradeDbAndDeleteOldDbs.bind(this),\n });\n }\n return this._db;\n }\n}\nexport { CacheTimestampsModel };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { dontWaitFor } from 'workbox-core/_private/dontWaitFor.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { CacheTimestampsModel } from './models/CacheTimestampsModel.js';\nimport './_version.js';\n/**\n * The `CacheExpiration` class allows you define an expiration and / or\n * limit on the number of responses stored in a\n * [`Cache`](https://developer.mozilla.org/en-US/docs/Web/API/Cache).\n *\n * @memberof workbox-expiration\n */\nclass CacheExpiration {\n /**\n * To construct a new CacheExpiration instance you must provide at least\n * one of the `config` properties.\n *\n * @param {string} cacheName Name of the cache to apply restrictions to.\n * @param {Object} config\n * @param {number} [config.maxEntries] The maximum number of entries to cache.\n * Entries used the least will be removed as the maximum is reached.\n * @param {number} [config.maxAgeSeconds] The maximum age of an entry before\n * it's treated as stale and removed.\n * @param {Object} [config.matchOptions] The [`CacheQueryOptions`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/delete#Parameters)\n * that will be used when calling `delete()` on the cache.\n */\n constructor(cacheName, config = {}) {\n this._isRunning = false;\n this._rerunRequested = false;\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(cacheName, 'string', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n paramName: 'cacheName',\n });\n if (!(config.maxEntries || config.maxAgeSeconds)) {\n throw new WorkboxError('max-entries-or-age-required', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n });\n }\n if (config.maxEntries) {\n assert.isType(config.maxEntries, 'number', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n paramName: 'config.maxEntries',\n });\n }\n if (config.maxAgeSeconds) {\n assert.isType(config.maxAgeSeconds, 'number', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n paramName: 'config.maxAgeSeconds',\n });\n }\n }\n this._maxEntries = config.maxEntries;\n this._maxAgeSeconds = config.maxAgeSeconds;\n this._matchOptions = config.matchOptions;\n this._cacheName = cacheName;\n this._timestampModel = new CacheTimestampsModel(cacheName);\n }\n /**\n * Expires entries for the given cache and given criteria.\n */\n async expireEntries() {\n if (this._isRunning) {\n this._rerunRequested = true;\n return;\n }\n this._isRunning = true;\n const minTimestamp = this._maxAgeSeconds\n ? Date.now() - this._maxAgeSeconds * 1000\n : 0;\n const urlsExpired = await this._timestampModel.expireEntries(minTimestamp, this._maxEntries);\n // Delete URLs from the cache\n const cache = await self.caches.open(this._cacheName);\n for (const url of urlsExpired) {\n await cache.delete(url, this._matchOptions);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (urlsExpired.length > 0) {\n logger.groupCollapsed(`Expired ${urlsExpired.length} ` +\n `${urlsExpired.length === 1 ? 'entry' : 'entries'} and removed ` +\n `${urlsExpired.length === 1 ? 'it' : 'them'} from the ` +\n `'${this._cacheName}' cache.`);\n logger.log(`Expired the following ${urlsExpired.length === 1 ? 'URL' : 'URLs'}:`);\n urlsExpired.forEach((url) => logger.log(` ${url}`));\n logger.groupEnd();\n }\n else {\n logger.debug(`Cache expiration ran and found no entries to remove.`);\n }\n }\n this._isRunning = false;\n if (this._rerunRequested) {\n this._rerunRequested = false;\n dontWaitFor(this.expireEntries());\n }\n }\n /**\n * Update the timestamp for the given URL. This ensures the when\n * removing entries based on maximum entries, most recently used\n * is accurate or when expiring, the timestamp is up-to-date.\n *\n * @param {string} url\n */\n async updateTimestamp(url) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(url, 'string', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'updateTimestamp',\n paramName: 'url',\n });\n }\n await this._timestampModel.setTimestamp(url, Date.now());\n }\n /**\n * Can be used to check if a URL has expired or not before it's used.\n *\n * This requires a look up from IndexedDB, so can be slow.\n *\n * Note: This method will not remove the cached entry, call\n * `expireEntries()` to remove indexedDB and Cache entries.\n *\n * @param {string} url\n * @return {boolean}\n */\n async isURLExpired(url) {\n if (!this._maxAgeSeconds) {\n if (process.env.NODE_ENV !== 'production') {\n throw new WorkboxError(`expired-test-without-max-age`, {\n methodName: 'isURLExpired',\n paramName: 'maxAgeSeconds',\n });\n }\n return false;\n }\n else {\n const timestamp = await this._timestampModel.getTimestamp(url);\n const expireOlderThan = Date.now() - this._maxAgeSeconds * 1000;\n return timestamp !== undefined ? timestamp < expireOlderThan : true;\n }\n }\n /**\n * Removes the IndexedDB object store used to keep track of cache expiration\n * metadata.\n */\n async delete() {\n // Make sure we don't attempt another rerun if we're called in the middle of\n // a cache expiration.\n this._rerunRequested = false;\n await this._timestampModel.expireEntries(Infinity); // Expires all.\n }\n}\nexport { CacheExpiration };\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { dontWaitFor } from 'workbox-core/_private/dontWaitFor.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { registerQuotaErrorCallback } from 'workbox-core/registerQuotaErrorCallback.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { CacheExpiration } from './CacheExpiration.js';\nimport './_version.js';\n/**\n * This plugin can be used in a `workbox-strategy` to regularly enforce a\n * limit on the age and / or the number of cached requests.\n *\n * It can only be used with `workbox-strategy` instances that have a\n * [custom `cacheName` property set](/web/tools/workbox/guides/configure-workbox#custom_cache_names_in_strategies).\n * In other words, it can't be used to expire entries in strategy that uses the\n * default runtime cache name.\n *\n * Whenever a cached response is used or updated, this plugin will look\n * at the associated cache and remove any old or extra responses.\n *\n * When using `maxAgeSeconds`, responses may be used *once* after expiring\n * because the expiration clean up will not have occurred until *after* the\n * cached response has been used. If the response has a \"Date\" header, then\n * a light weight expiration check is performed and the response will not be\n * used immediately.\n *\n * When using `maxEntries`, the entry least-recently requested will be removed\n * from the cache first.\n *\n * @memberof workbox-expiration\n */\nclass ExpirationPlugin {\n /**\n * @param {ExpirationPluginOptions} config\n * @param {number} [config.maxEntries] The maximum number of entries to cache.\n * Entries used the least will be removed as the maximum is reached.\n * @param {number} [config.maxAgeSeconds] The maximum age of an entry before\n * it's treated as stale and removed.\n * @param {Object} [config.matchOptions] The [`CacheQueryOptions`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/delete#Parameters)\n * that will be used when calling `delete()` on the cache.\n * @param {boolean} [config.purgeOnQuotaError] Whether to opt this cache in to\n * automatic deletion if the available storage quota has been exceeded.\n */\n constructor(config = {}) {\n /**\n * A \"lifecycle\" callback that will be triggered automatically by the\n * `workbox-strategies` handlers when a `Response` is about to be returned\n * from a [Cache](https://developer.mozilla.org/en-US/docs/Web/API/Cache) to\n * the handler. It allows the `Response` to be inspected for freshness and\n * prevents it from being used if the `Response`'s `Date` header value is\n * older than the configured `maxAgeSeconds`.\n *\n * @param {Object} options\n * @param {string} options.cacheName Name of the cache the response is in.\n * @param {Response} options.cachedResponse The `Response` object that's been\n * read from a cache and whose freshness should be checked.\n * @return {Response} Either the `cachedResponse`, if it's\n * fresh, or `null` if the `Response` is older than `maxAgeSeconds`.\n *\n * @private\n */\n this.cachedResponseWillBeUsed = async ({ event, request, cacheName, cachedResponse, }) => {\n if (!cachedResponse) {\n return null;\n }\n const isFresh = this._isResponseDateFresh(cachedResponse);\n // Expire entries to ensure that even if the expiration date has\n // expired, it'll only be used once.\n const cacheExpiration = this._getCacheExpiration(cacheName);\n dontWaitFor(cacheExpiration.expireEntries());\n // Update the metadata for the request URL to the current timestamp,\n // but don't `await` it as we don't want to block the response.\n const updateTimestampDone = cacheExpiration.updateTimestamp(request.url);\n if (event) {\n try {\n event.waitUntil(updateTimestampDone);\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n // The event may not be a fetch event; only log the URL if it is.\n if ('request' in event) {\n logger.warn(`Unable to ensure service worker stays alive when ` +\n `updating cache entry for ` +\n `'${getFriendlyURL(event.request.url)}'.`);\n }\n }\n }\n }\n return isFresh ? cachedResponse : null;\n };\n /**\n * A \"lifecycle\" callback that will be triggered automatically by the\n * `workbox-strategies` handlers when an entry is added to a cache.\n *\n * @param {Object} options\n * @param {string} options.cacheName Name of the cache that was updated.\n * @param {string} options.request The Request for the cached entry.\n *\n * @private\n */\n this.cacheDidUpdate = async ({ cacheName, request, }) => {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(cacheName, 'string', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'cacheDidUpdate',\n paramName: 'cacheName',\n });\n assert.isInstance(request, Request, {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'cacheDidUpdate',\n paramName: 'request',\n });\n }\n const cacheExpiration = this._getCacheExpiration(cacheName);\n await cacheExpiration.updateTimestamp(request.url);\n await cacheExpiration.expireEntries();\n };\n if (process.env.NODE_ENV !== 'production') {\n if (!(config.maxEntries || config.maxAgeSeconds)) {\n throw new WorkboxError('max-entries-or-age-required', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'constructor',\n });\n }\n if (config.maxEntries) {\n assert.isType(config.maxEntries, 'number', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'constructor',\n paramName: 'config.maxEntries',\n });\n }\n if (config.maxAgeSeconds) {\n assert.isType(config.maxAgeSeconds, 'number', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'constructor',\n paramName: 'config.maxAgeSeconds',\n });\n }\n }\n this._config = config;\n this._maxAgeSeconds = config.maxAgeSeconds;\n this._cacheExpirations = new Map();\n if (config.purgeOnQuotaError) {\n registerQuotaErrorCallback(() => this.deleteCacheAndMetadata());\n }\n }\n /**\n * A simple helper method to return a CacheExpiration instance for a given\n * cache name.\n *\n * @param {string} cacheName\n * @return {CacheExpiration}\n *\n * @private\n */\n _getCacheExpiration(cacheName) {\n if (cacheName === cacheNames.getRuntimeName()) {\n throw new WorkboxError('expire-custom-caches-only');\n }\n let cacheExpiration = this._cacheExpirations.get(cacheName);\n if (!cacheExpiration) {\n cacheExpiration = new CacheExpiration(cacheName, this._config);\n this._cacheExpirations.set(cacheName, cacheExpiration);\n }\n return cacheExpiration;\n }\n /**\n * @param {Response} cachedResponse\n * @return {boolean}\n *\n * @private\n */\n _isResponseDateFresh(cachedResponse) {\n if (!this._maxAgeSeconds) {\n // We aren't expiring by age, so return true, it's fresh\n return true;\n }\n // Check if the 'date' header will suffice a quick expiration check.\n // See https://github.com/GoogleChromeLabs/sw-toolbox/issues/164 for\n // discussion.\n const dateHeaderTimestamp = this._getDateHeaderTimestamp(cachedResponse);\n if (dateHeaderTimestamp === null) {\n // Unable to parse date, so assume it's fresh.\n return true;\n }\n // If we have a valid headerTime, then our response is fresh iff the\n // headerTime plus maxAgeSeconds is greater than the current time.\n const now = Date.now();\n return dateHeaderTimestamp >= now - this._maxAgeSeconds * 1000;\n }\n /**\n * This method will extract the data header and parse it into a useful\n * value.\n *\n * @param {Response} cachedResponse\n * @return {number|null}\n *\n * @private\n */\n _getDateHeaderTimestamp(cachedResponse) {\n if (!cachedResponse.headers.has('date')) {\n return null;\n }\n const dateHeader = cachedResponse.headers.get('date');\n const parsedDate = new Date(dateHeader);\n const headerTime = parsedDate.getTime();\n // If the Date header was invalid for some reason, parsedDate.getTime()\n // will return NaN.\n if (isNaN(headerTime)) {\n return null;\n }\n return headerTime;\n }\n /**\n * This is a helper method that performs two operations:\n *\n * - Deletes *all* the underlying Cache instances associated with this plugin\n * instance, by calling caches.delete() on your behalf.\n * - Deletes the metadata from IndexedDB used to keep track of expiration\n * details for each Cache instance.\n *\n * When using cache expiration, calling this method is preferable to calling\n * `caches.delete()` directly, since this will ensure that the IndexedDB\n * metadata is also cleanly removed and open IndexedDB instances are deleted.\n *\n * Note that if you're *not* using cache expiration for a given cache, calling\n * `caches.delete()` and passing in the cache's name should be sufficient.\n * There is no Workbox-specific method needed for cleanup in that case.\n */\n async deleteCacheAndMetadata() {\n // Do this one at a time instead of all at once via `Promise.all()` to\n // reduce the chance of inconsistency if a promise rejects.\n for (const [cacheName, cacheExpiration] of this._cacheExpirations) {\n await self.caches.delete(cacheName);\n await cacheExpiration.delete();\n }\n // Reset this._cacheExpirations to its initial state.\n this._cacheExpirations = new Map();\n }\n}\nexport { ExpirationPlugin };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from './_private/logger.js';\nimport { assert } from './_private/assert.js';\nimport { quotaErrorCallbacks } from './models/quotaErrorCallbacks.js';\nimport './_version.js';\n/**\n * Adds a function to the set of quotaErrorCallbacks that will be executed if\n * there's a quota error.\n *\n * @param {Function} callback\n * @memberof workbox-core\n */\n// Can't change Function type\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction registerQuotaErrorCallback(callback) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(callback, 'function', {\n moduleName: 'workbox-core',\n funcName: 'register',\n paramName: 'callback',\n });\n }\n quotaErrorCallbacks.add(callback);\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Registered a callback to respond to quota errors.', callback);\n }\n}\nexport { registerQuotaErrorCallback };\n","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport '../_version.js';\n// Name of the search parameter used to store revision info.\nconst REVISION_SEARCH_PARAM = '__WB_REVISION__';\n/**\n * Converts a manifest entry into a versioned URL suitable for precaching.\n *\n * @param {Object|string} entry\n * @return {string} A URL with versioning info.\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function createCacheKey(entry) {\n if (!entry) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', { entry });\n }\n // If a precache manifest entry is a string, it's assumed to be a versioned\n // URL, like '/app.abcd1234.js'. Return as-is.\n if (typeof entry === 'string') {\n const urlObject = new URL(entry, location.href);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n const { revision, url } = entry;\n if (!url) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', { entry });\n }\n // If there's just a URL and no revision, then it's also assumed to be a\n // versioned URL.\n if (!revision) {\n const urlObject = new URL(url, location.href);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n // Otherwise, construct a properly versioned URL using the custom Workbox\n // search parameter along with the revision info.\n const cacheKeyURL = new URL(url, location.href);\n const originalURL = new URL(url, location.href);\n cacheKeyURL.searchParams.set(REVISION_SEARCH_PARAM, revision);\n return {\n cacheKey: cacheKeyURL.href,\n url: originalURL.href,\n };\n}\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A plugin, designed to be used with PrecacheController, to determine the\n * of assets that were updated (or not updated) during the install event.\n *\n * @private\n */\nclass PrecacheInstallReportPlugin {\n constructor() {\n this.updatedURLs = [];\n this.notUpdatedURLs = [];\n this.handlerWillStart = async ({ request, state, }) => {\n // TODO: `state` should never be undefined...\n if (state) {\n state.originalRequest = request;\n }\n };\n this.cachedResponseWillBeUsed = async ({ event, state, cachedResponse, }) => {\n if (event.type === 'install') {\n if (state &&\n state.originalRequest &&\n state.originalRequest instanceof Request) {\n // TODO: `state` should never be undefined...\n const url = state.originalRequest.url;\n if (cachedResponse) {\n this.notUpdatedURLs.push(url);\n }\n else {\n this.updatedURLs.push(url);\n }\n }\n }\n return cachedResponse;\n };\n }\n}\nexport { PrecacheInstallReportPlugin };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A plugin, designed to be used with PrecacheController, to translate URLs into\n * the corresponding cache key, based on the current revision info.\n *\n * @private\n */\nclass PrecacheCacheKeyPlugin {\n constructor({ precacheController }) {\n this.cacheKeyWillBeUsed = async ({ request, params, }) => {\n // Params is type any, can't change right now.\n /* eslint-disable */\n const cacheKey = (params === null || params === void 0 ? void 0 : params.cacheKey) ||\n this._precacheController.getCacheKeyForURL(request.url);\n /* eslint-enable */\n return cacheKey\n ? new Request(cacheKey, { headers: request.headers })\n : request;\n };\n this._precacheController = precacheController;\n }\n}\nexport { PrecacheCacheKeyPlugin };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheMatchIgnoreParams } from 'workbox-core/_private/cacheMatchIgnoreParams.js';\nimport { Deferred } from 'workbox-core/_private/Deferred.js';\nimport { executeQuotaErrorCallbacks } from 'workbox-core/_private/executeQuotaErrorCallbacks.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { timeout } from 'workbox-core/_private/timeout.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\nfunction toRequest(input) {\n return typeof input === 'string' ? new Request(input) : input;\n}\n/**\n * A class created every time a Strategy instance instance calls\n * {@link workbox-strategies.Strategy~handle} or\n * {@link workbox-strategies.Strategy~handleAll} that wraps all fetch and\n * cache actions around plugin callbacks and keeps track of when the strategy\n * is \"done\" (i.e. all added `event.waitUntil()` promises have resolved).\n *\n * @memberof workbox-strategies\n */\nclass StrategyHandler {\n /**\n * Creates a new instance associated with the passed strategy and event\n * that's handling the request.\n *\n * The constructor also initializes the state that will be passed to each of\n * the plugins handling this request.\n *\n * @param {workbox-strategies.Strategy} strategy\n * @param {Object} options\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params] The return value from the\n * {@link workbox-routing~matchCallback} (if applicable).\n */\n constructor(strategy, options) {\n this._cacheKeys = {};\n /**\n * The request the strategy is performing (passed to the strategy's\n * `handle()` or `handleAll()` method).\n * @name request\n * @instance\n * @type {Request}\n * @memberof workbox-strategies.StrategyHandler\n */\n /**\n * The event associated with this request.\n * @name event\n * @instance\n * @type {ExtendableEvent}\n * @memberof workbox-strategies.StrategyHandler\n */\n /**\n * A `URL` instance of `request.url` (if passed to the strategy's\n * `handle()` or `handleAll()` method).\n * Note: the `url` param will be present if the strategy was invoked\n * from a workbox `Route` object.\n * @name url\n * @instance\n * @type {URL|undefined}\n * @memberof workbox-strategies.StrategyHandler\n */\n /**\n * A `param` value (if passed to the strategy's\n * `handle()` or `handleAll()` method).\n * Note: the `param` param will be present if the strategy was invoked\n * from a workbox `Route` object and the\n * {@link workbox-routing~matchCallback} returned\n * a truthy value (it will be that value).\n * @name params\n * @instance\n * @type {*|undefined}\n * @memberof workbox-strategies.StrategyHandler\n */\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(options.event, ExtendableEvent, {\n moduleName: 'workbox-strategies',\n className: 'StrategyHandler',\n funcName: 'constructor',\n paramName: 'options.event',\n });\n }\n Object.assign(this, options);\n this.event = options.event;\n this._strategy = strategy;\n this._handlerDeferred = new Deferred();\n this._extendLifetimePromises = [];\n // Copy the plugins list (since it's mutable on the strategy),\n // so any mutations don't affect this handler instance.\n this._plugins = [...strategy.plugins];\n this._pluginStateMap = new Map();\n for (const plugin of this._plugins) {\n this._pluginStateMap.set(plugin, {});\n }\n this.event.waitUntil(this._handlerDeferred.promise);\n }\n /**\n * Fetches a given request (and invokes any applicable plugin callback\n * methods) using the `fetchOptions` (for non-navigation requests) and\n * `plugins` defined on the `Strategy` object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - `requestWillFetch()`\n * - `fetchDidSucceed()`\n * - `fetchDidFail()`\n *\n * @param {Request|string} input The URL or request to fetch.\n * @return {Promise}\n */\n async fetch(input) {\n const { event } = this;\n let request = toRequest(input);\n if (request.mode === 'navigate' &&\n event instanceof FetchEvent &&\n event.preloadResponse) {\n const possiblePreloadResponse = (await event.preloadResponse);\n if (possiblePreloadResponse) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Using a preloaded navigation response for ` +\n `'${getFriendlyURL(request.url)}'`);\n }\n return possiblePreloadResponse;\n }\n }\n // If there is a fetchDidFail plugin, we need to save a clone of the\n // original request before it's either modified by a requestWillFetch\n // plugin or before the original request's body is consumed via fetch().\n const originalRequest = this.hasCallback('fetchDidFail')\n ? request.clone()\n : null;\n try {\n for (const cb of this.iterateCallbacks('requestWillFetch')) {\n request = await cb({ request: request.clone(), event });\n }\n }\n catch (err) {\n if (err instanceof Error) {\n throw new WorkboxError('plugin-error-request-will-fetch', {\n thrownErrorMessage: err.message,\n });\n }\n }\n // The request can be altered by plugins with `requestWillFetch` making\n // the original request (most likely from a `fetch` event) different\n // from the Request we make. Pass both to `fetchDidFail` to aid debugging.\n const pluginFilteredRequest = request.clone();\n try {\n let fetchResponse;\n // See https://github.com/GoogleChrome/workbox/issues/1796\n fetchResponse = await fetch(request, request.mode === 'navigate' ? undefined : this._strategy.fetchOptions);\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Network request for ` +\n `'${getFriendlyURL(request.url)}' returned a response with ` +\n `status '${fetchResponse.status}'.`);\n }\n for (const callback of this.iterateCallbacks('fetchDidSucceed')) {\n fetchResponse = await callback({\n event,\n request: pluginFilteredRequest,\n response: fetchResponse,\n });\n }\n return fetchResponse;\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Network request for ` +\n `'${getFriendlyURL(request.url)}' threw an error.`, error);\n }\n // `originalRequest` will only exist if a `fetchDidFail` callback\n // is being used (see above).\n if (originalRequest) {\n await this.runCallbacks('fetchDidFail', {\n error: error,\n event,\n originalRequest: originalRequest.clone(),\n request: pluginFilteredRequest.clone(),\n });\n }\n throw error;\n }\n }\n /**\n * Calls `this.fetch()` and (in the background) runs `this.cachePut()` on\n * the response generated by `this.fetch()`.\n *\n * The call to `this.cachePut()` automatically invokes `this.waitUntil()`,\n * so you do not have to manually call `waitUntil()` on the event.\n *\n * @param {Request|string} input The request or URL to fetch and cache.\n * @return {Promise}\n */\n async fetchAndCachePut(input) {\n const response = await this.fetch(input);\n const responseClone = response.clone();\n void this.waitUntil(this.cachePut(input, responseClone));\n return response;\n }\n /**\n * Matches a request from the cache (and invokes any applicable plugin\n * callback methods) using the `cacheName`, `matchOptions`, and `plugins`\n * defined on the strategy object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - cacheKeyWillByUsed()\n * - cachedResponseWillByUsed()\n *\n * @param {Request|string} key The Request or URL to use as the cache key.\n * @return {Promise} A matching response, if found.\n */\n async cacheMatch(key) {\n const request = toRequest(key);\n let cachedResponse;\n const { cacheName, matchOptions } = this._strategy;\n const effectiveRequest = await this.getCacheKey(request, 'read');\n const multiMatchOptions = Object.assign(Object.assign({}, matchOptions), { cacheName });\n cachedResponse = await caches.match(effectiveRequest, multiMatchOptions);\n if (process.env.NODE_ENV !== 'production') {\n if (cachedResponse) {\n logger.debug(`Found a cached response in '${cacheName}'.`);\n }\n else {\n logger.debug(`No cached response found in '${cacheName}'.`);\n }\n }\n for (const callback of this.iterateCallbacks('cachedResponseWillBeUsed')) {\n cachedResponse =\n (await callback({\n cacheName,\n matchOptions,\n cachedResponse,\n request: effectiveRequest,\n event: this.event,\n })) || undefined;\n }\n return cachedResponse;\n }\n /**\n * Puts a request/response pair in the cache (and invokes any applicable\n * plugin callback methods) using the `cacheName` and `plugins` defined on\n * the strategy object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - cacheKeyWillByUsed()\n * - cacheWillUpdate()\n * - cacheDidUpdate()\n *\n * @param {Request|string} key The request or URL to use as the cache key.\n * @param {Response} response The response to cache.\n * @return {Promise} `false` if a cacheWillUpdate caused the response\n * not be cached, and `true` otherwise.\n */\n async cachePut(key, response) {\n const request = toRequest(key);\n // Run in the next task to avoid blocking other cache reads.\n // https://github.com/w3c/ServiceWorker/issues/1397\n await timeout(0);\n const effectiveRequest = await this.getCacheKey(request, 'write');\n if (process.env.NODE_ENV !== 'production') {\n if (effectiveRequest.method && effectiveRequest.method !== 'GET') {\n throw new WorkboxError('attempt-to-cache-non-get-request', {\n url: getFriendlyURL(effectiveRequest.url),\n method: effectiveRequest.method,\n });\n }\n // See https://github.com/GoogleChrome/workbox/issues/2818\n const vary = response.headers.get('Vary');\n if (vary) {\n logger.debug(`The response for ${getFriendlyURL(effectiveRequest.url)} ` +\n `has a 'Vary: ${vary}' header. ` +\n `Consider setting the {ignoreVary: true} option on your strategy ` +\n `to ensure cache matching and deletion works as expected.`);\n }\n }\n if (!response) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Cannot cache non-existent response for ` +\n `'${getFriendlyURL(effectiveRequest.url)}'.`);\n }\n throw new WorkboxError('cache-put-with-no-response', {\n url: getFriendlyURL(effectiveRequest.url),\n });\n }\n const responseToCache = await this._ensureResponseSafeToCache(response);\n if (!responseToCache) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Response '${getFriendlyURL(effectiveRequest.url)}' ` +\n `will not be cached.`, responseToCache);\n }\n return false;\n }\n const { cacheName, matchOptions } = this._strategy;\n const cache = await self.caches.open(cacheName);\n const hasCacheUpdateCallback = this.hasCallback('cacheDidUpdate');\n const oldResponse = hasCacheUpdateCallback\n ? await cacheMatchIgnoreParams(\n // TODO(philipwalton): the `__WB_REVISION__` param is a precaching\n // feature. Consider into ways to only add this behavior if using\n // precaching.\n cache, effectiveRequest.clone(), ['__WB_REVISION__'], matchOptions)\n : null;\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Updating the '${cacheName}' cache with a new Response ` +\n `for ${getFriendlyURL(effectiveRequest.url)}.`);\n }\n try {\n await cache.put(effectiveRequest, hasCacheUpdateCallback ? responseToCache.clone() : responseToCache);\n }\n catch (error) {\n if (error instanceof Error) {\n // See https://developer.mozilla.org/en-US/docs/Web/API/DOMException#exception-QuotaExceededError\n if (error.name === 'QuotaExceededError') {\n await executeQuotaErrorCallbacks();\n }\n throw error;\n }\n }\n for (const callback of this.iterateCallbacks('cacheDidUpdate')) {\n await callback({\n cacheName,\n oldResponse,\n newResponse: responseToCache.clone(),\n request: effectiveRequest,\n event: this.event,\n });\n }\n return true;\n }\n /**\n * Checks the list of plugins for the `cacheKeyWillBeUsed` callback, and\n * executes any of those callbacks found in sequence. The final `Request`\n * object returned by the last plugin is treated as the cache key for cache\n * reads and/or writes. If no `cacheKeyWillBeUsed` plugin callbacks have\n * been registered, the passed request is returned unmodified\n *\n * @param {Request} request\n * @param {string} mode\n * @return {Promise}\n */\n async getCacheKey(request, mode) {\n const key = `${request.url} | ${mode}`;\n if (!this._cacheKeys[key]) {\n let effectiveRequest = request;\n for (const callback of this.iterateCallbacks('cacheKeyWillBeUsed')) {\n effectiveRequest = toRequest(await callback({\n mode,\n request: effectiveRequest,\n event: this.event,\n // params has a type any can't change right now.\n params: this.params, // eslint-disable-line\n }));\n }\n this._cacheKeys[key] = effectiveRequest;\n }\n return this._cacheKeys[key];\n }\n /**\n * Returns true if the strategy has at least one plugin with the given\n * callback.\n *\n * @param {string} name The name of the callback to check for.\n * @return {boolean}\n */\n hasCallback(name) {\n for (const plugin of this._strategy.plugins) {\n if (name in plugin) {\n return true;\n }\n }\n return false;\n }\n /**\n * Runs all plugin callbacks matching the given name, in order, passing the\n * given param object (merged ith the current plugin state) as the only\n * argument.\n *\n * Note: since this method runs all plugins, it's not suitable for cases\n * where the return value of a callback needs to be applied prior to calling\n * the next callback. See\n * {@link workbox-strategies.StrategyHandler#iterateCallbacks}\n * below for how to handle that case.\n *\n * @param {string} name The name of the callback to run within each plugin.\n * @param {Object} param The object to pass as the first (and only) param\n * when executing each callback. This object will be merged with the\n * current plugin state prior to callback execution.\n */\n async runCallbacks(name, param) {\n for (const callback of this.iterateCallbacks(name)) {\n // TODO(philipwalton): not sure why `any` is needed. It seems like\n // this should work with `as WorkboxPluginCallbackParam[C]`.\n await callback(param);\n }\n }\n /**\n * Accepts a callback and returns an iterable of matching plugin callbacks,\n * where each callback is wrapped with the current handler state (i.e. when\n * you call each callback, whatever object parameter you pass it will\n * be merged with the plugin's current state).\n *\n * @param {string} name The name fo the callback to run\n * @return {Array}\n */\n *iterateCallbacks(name) {\n for (const plugin of this._strategy.plugins) {\n if (typeof plugin[name] === 'function') {\n const state = this._pluginStateMap.get(plugin);\n const statefulCallback = (param) => {\n const statefulParam = Object.assign(Object.assign({}, param), { state });\n // TODO(philipwalton): not sure why `any` is needed. It seems like\n // this should work with `as WorkboxPluginCallbackParam[C]`.\n return plugin[name](statefulParam);\n };\n yield statefulCallback;\n }\n }\n }\n /**\n * Adds a promise to the\n * [extend lifetime promises]{@link https://w3c.github.io/ServiceWorker/#extendableevent-extend-lifetime-promises}\n * of the event event associated with the request being handled (usually a\n * `FetchEvent`).\n *\n * Note: you can await\n * {@link workbox-strategies.StrategyHandler~doneWaiting}\n * to know when all added promises have settled.\n *\n * @param {Promise} promise A promise to add to the extend lifetime promises\n * of the event that triggered the request.\n */\n waitUntil(promise) {\n this._extendLifetimePromises.push(promise);\n return promise;\n }\n /**\n * Returns a promise that resolves once all promises passed to\n * {@link workbox-strategies.StrategyHandler~waitUntil}\n * have settled.\n *\n * Note: any work done after `doneWaiting()` settles should be manually\n * passed to an event's `waitUntil()` method (not this handler's\n * `waitUntil()` method), otherwise the service worker thread my be killed\n * prior to your work completing.\n */\n async doneWaiting() {\n let promise;\n while ((promise = this._extendLifetimePromises.shift())) {\n await promise;\n }\n }\n /**\n * Stops running the strategy and immediately resolves any pending\n * `waitUntil()` promises.\n */\n destroy() {\n this._handlerDeferred.resolve(null);\n }\n /**\n * This method will call cacheWillUpdate on the available plugins (or use\n * status === 200) to determine if the Response is safe and valid to cache.\n *\n * @param {Request} options.request\n * @param {Response} options.response\n * @return {Promise}\n *\n * @private\n */\n async _ensureResponseSafeToCache(response) {\n let responseToCache = response;\n let pluginsUsed = false;\n for (const callback of this.iterateCallbacks('cacheWillUpdate')) {\n responseToCache =\n (await callback({\n request: this.request,\n response: responseToCache,\n event: this.event,\n })) || undefined;\n pluginsUsed = true;\n if (!responseToCache) {\n break;\n }\n }\n if (!pluginsUsed) {\n if (responseToCache && responseToCache.status !== 200) {\n responseToCache = undefined;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (responseToCache) {\n if (responseToCache.status !== 200) {\n if (responseToCache.status === 0) {\n logger.warn(`The response for '${this.request.url}' ` +\n `is an opaque response. The caching strategy that you're ` +\n `using will not cache opaque responses by default.`);\n }\n else {\n logger.debug(`The response for '${this.request.url}' ` +\n `returned a status code of '${response.status}' and won't ` +\n `be cached as a result.`);\n }\n }\n }\n }\n }\n return responseToCache;\n }\n}\nexport { StrategyHandler };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { StrategyHandler } from './StrategyHandler.js';\nimport './_version.js';\n/**\n * An abstract base class that all other strategy classes must extend from:\n *\n * @memberof workbox-strategies\n */\nclass Strategy {\n /**\n * Creates a new instance of the strategy and sets all documented option\n * properties as public instance properties.\n *\n * Note: if a custom strategy class extends the base Strategy class and does\n * not need more than these properties, it does not need to define its own\n * constructor.\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * {@link workbox-core.cacheNames}.\n * @param {Array} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)\n * `fetch()` requests made by this strategy.\n * @param {Object} [options.matchOptions] The\n * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n */\n constructor(options = {}) {\n /**\n * Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * {@link workbox-core.cacheNames}.\n *\n * @type {string}\n */\n this.cacheName = cacheNames.getRuntimeName(options.cacheName);\n /**\n * The list\n * [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * used by this strategy.\n *\n * @type {Array}\n */\n this.plugins = options.plugins || [];\n /**\n * Values passed along to the\n * [`init`]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters}\n * of all fetch() requests made by this strategy.\n *\n * @type {Object}\n */\n this.fetchOptions = options.fetchOptions;\n /**\n * The\n * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n *\n * @type {Object}\n */\n this.matchOptions = options.matchOptions;\n }\n /**\n * Perform a request strategy and returns a `Promise` that will resolve with\n * a `Response`, invoking all relevant plugin callbacks.\n *\n * When a strategy instance is registered with a Workbox\n * {@link workbox-routing.Route}, this method is automatically\n * called when the route matches.\n *\n * Alternatively, this method can be used in a standalone `FetchEvent`\n * listener by passing it to `event.respondWith()`.\n *\n * @param {FetchEvent|Object} options A `FetchEvent` or an object with the\n * properties listed below.\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params]\n */\n handle(options) {\n const [responseDone] = this.handleAll(options);\n return responseDone;\n }\n /**\n * Similar to {@link workbox-strategies.Strategy~handle}, but\n * instead of just returning a `Promise` that resolves to a `Response` it\n * it will return an tuple of `[response, done]` promises, where the former\n * (`response`) is equivalent to what `handle()` returns, and the latter is a\n * Promise that will resolve once any promises that were added to\n * `event.waitUntil()` as part of performing the strategy have completed.\n *\n * You can await the `done` promise to ensure any extra work performed by\n * the strategy (usually caching responses) completes successfully.\n *\n * @param {FetchEvent|Object} options A `FetchEvent` or an object with the\n * properties listed below.\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params]\n * @return {Array} A tuple of [response, done]\n * promises that can be used to determine when the response resolves as\n * well as when the handler has completed all its work.\n */\n handleAll(options) {\n // Allow for flexible options to be passed.\n if (options instanceof FetchEvent) {\n options = {\n event: options,\n request: options.request,\n };\n }\n const event = options.event;\n const request = typeof options.request === 'string'\n ? new Request(options.request)\n : options.request;\n const params = 'params' in options ? options.params : undefined;\n const handler = new StrategyHandler(this, { event, request, params });\n const responseDone = this._getResponse(handler, request, event);\n const handlerDone = this._awaitComplete(responseDone, handler, request, event);\n // Return an array of promises, suitable for use with Promise.all().\n return [responseDone, handlerDone];\n }\n async _getResponse(handler, request, event) {\n await handler.runCallbacks('handlerWillStart', { event, request });\n let response = undefined;\n try {\n response = await this._handle(request, handler);\n // The \"official\" Strategy subclasses all throw this error automatically,\n // but in case a third-party Strategy doesn't, ensure that we have a\n // consistent failure when there's no response or an error response.\n if (!response || response.type === 'error') {\n throw new WorkboxError('no-response', { url: request.url });\n }\n }\n catch (error) {\n if (error instanceof Error) {\n for (const callback of handler.iterateCallbacks('handlerDidError')) {\n response = await callback({ error, event, request });\n if (response) {\n break;\n }\n }\n }\n if (!response) {\n throw error;\n }\n else if (process.env.NODE_ENV !== 'production') {\n logger.log(`While responding to '${getFriendlyURL(request.url)}', ` +\n `an ${error instanceof Error ? error.toString() : ''} error occurred. Using a fallback response provided by ` +\n `a handlerDidError plugin.`);\n }\n }\n for (const callback of handler.iterateCallbacks('handlerWillRespond')) {\n response = await callback({ event, request, response });\n }\n return response;\n }\n async _awaitComplete(responseDone, handler, request, event) {\n let response;\n let error;\n try {\n response = await responseDone;\n }\n catch (error) {\n // Ignore errors, as response errors should be caught via the `response`\n // promise above. The `done` promise will only throw for errors in\n // promises passed to `handler.waitUntil()`.\n }\n try {\n await handler.runCallbacks('handlerDidRespond', {\n event,\n request,\n response,\n });\n await handler.doneWaiting();\n }\n catch (waitUntilError) {\n if (waitUntilError instanceof Error) {\n error = waitUntilError;\n }\n }\n await handler.runCallbacks('handlerDidComplete', {\n event,\n request,\n response,\n error: error,\n });\n handler.destroy();\n if (error) {\n throw error;\n }\n }\n}\nexport { Strategy };\n/**\n * Classes extending the `Strategy` based class should implement this method,\n * and leverage the {@link workbox-strategies.StrategyHandler}\n * arg to perform all fetching and cache logic, which will ensure all relevant\n * cache, cache options, fetch options and plugins are used (per the current\n * strategy instance).\n *\n * @name _handle\n * @instance\n * @abstract\n * @function\n * @param {Request} request\n * @param {workbox-strategies.StrategyHandler} handler\n * @return {Promise}\n *\n * @memberof workbox-strategies.Strategy\n */\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { copyResponse } from 'workbox-core/copyResponse.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Strategy } from 'workbox-strategies/Strategy.js';\nimport './_version.js';\n/**\n * A {@link workbox-strategies.Strategy} implementation\n * specifically designed to work with\n * {@link workbox-precaching.PrecacheController}\n * to both cache and fetch precached assets.\n *\n * Note: an instance of this class is created automatically when creating a\n * `PrecacheController`; it's generally not necessary to create this yourself.\n *\n * @extends workbox-strategies.Strategy\n * @memberof workbox-precaching\n */\nclass PrecacheStrategy extends Strategy {\n /**\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * {@link workbox-core.cacheNames}.\n * @param {Array} [options.plugins] {@link https://developers.google.com/web/tools/workbox/guides/using-plugins|Plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters|init}\n * of all fetch() requests made by this strategy.\n * @param {Object} [options.matchOptions] The\n * {@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions|CacheQueryOptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to\n * get the response from the network if there's a precache miss.\n */\n constructor(options = {}) {\n options.cacheName = cacheNames.getPrecacheName(options.cacheName);\n super(options);\n this._fallbackToNetwork =\n options.fallbackToNetwork === false ? false : true;\n // Redirected responses cannot be used to satisfy a navigation request, so\n // any redirected response must be \"copied\" rather than cloned, so the new\n // response doesn't contain the `redirected` flag. See:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=669363&desc=2#c1\n this.plugins.push(PrecacheStrategy.copyRedirectedCacheableResponsesPlugin);\n }\n /**\n * @private\n * @param {Request|string} request A request to run this strategy for.\n * @param {workbox-strategies.StrategyHandler} handler The event that\n * triggered the request.\n * @return {Promise}\n */\n async _handle(request, handler) {\n const response = await handler.cacheMatch(request);\n if (response) {\n return response;\n }\n // If this is an `install` event for an entry that isn't already cached,\n // then populate the cache.\n if (handler.event && handler.event.type === 'install') {\n return await this._handleInstall(request, handler);\n }\n // Getting here means something went wrong. An entry that should have been\n // precached wasn't found in the cache.\n return await this._handleFetch(request, handler);\n }\n async _handleFetch(request, handler) {\n let response;\n const params = (handler.params || {});\n // Fall back to the network if we're configured to do so.\n if (this._fallbackToNetwork) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`The precached response for ` +\n `${getFriendlyURL(request.url)} in ${this.cacheName} was not ` +\n `found. Falling back to the network.`);\n }\n const integrityInManifest = params.integrity;\n const integrityInRequest = request.integrity;\n const noIntegrityConflict = !integrityInRequest || integrityInRequest === integrityInManifest;\n // Do not add integrity if the original request is no-cors\n // See https://github.com/GoogleChrome/workbox/issues/3096\n response = await handler.fetch(new Request(request, {\n integrity: request.mode !== 'no-cors'\n ? integrityInRequest || integrityInManifest\n : undefined,\n }));\n // It's only \"safe\" to repair the cache if we're using SRI to guarantee\n // that the response matches the precache manifest's expectations,\n // and there's either a) no integrity property in the incoming request\n // or b) there is an integrity, and it matches the precache manifest.\n // See https://github.com/GoogleChrome/workbox/issues/2858\n // Also if the original request users no-cors we don't use integrity.\n // See https://github.com/GoogleChrome/workbox/issues/3096\n if (integrityInManifest &&\n noIntegrityConflict &&\n request.mode !== 'no-cors') {\n this._useDefaultCacheabilityPluginIfNeeded();\n const wasCached = await handler.cachePut(request, response.clone());\n if (process.env.NODE_ENV !== 'production') {\n if (wasCached) {\n logger.log(`A response for ${getFriendlyURL(request.url)} ` +\n `was used to \"repair\" the precache.`);\n }\n }\n }\n }\n else {\n // This shouldn't normally happen, but there are edge cases:\n // https://github.com/GoogleChrome/workbox/issues/1441\n throw new WorkboxError('missing-precache-entry', {\n cacheName: this.cacheName,\n url: request.url,\n });\n }\n if (process.env.NODE_ENV !== 'production') {\n const cacheKey = params.cacheKey || (await handler.getCacheKey(request, 'read'));\n // Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Precaching is responding to: ` + getFriendlyURL(request.url));\n logger.log(`Serving the precached url: ${getFriendlyURL(cacheKey instanceof Request ? cacheKey.url : cacheKey)}`);\n logger.groupCollapsed(`View request details here.`);\n logger.log(request);\n logger.groupEnd();\n logger.groupCollapsed(`View response details here.`);\n logger.log(response);\n logger.groupEnd();\n logger.groupEnd();\n }\n return response;\n }\n async _handleInstall(request, handler) {\n this._useDefaultCacheabilityPluginIfNeeded();\n const response = await handler.fetch(request);\n // Make sure we defer cachePut() until after we know the response\n // should be cached; see https://github.com/GoogleChrome/workbox/issues/2737\n const wasCached = await handler.cachePut(request, response.clone());\n if (!wasCached) {\n // Throwing here will lead to the `install` handler failing, which\n // we want to do if *any* of the responses aren't safe to cache.\n throw new WorkboxError('bad-precaching-response', {\n url: request.url,\n status: response.status,\n });\n }\n return response;\n }\n /**\n * This method is complex, as there a number of things to account for:\n *\n * The `plugins` array can be set at construction, and/or it might be added to\n * to at any time before the strategy is used.\n *\n * At the time the strategy is used (i.e. during an `install` event), there\n * needs to be at least one plugin that implements `cacheWillUpdate` in the\n * array, other than `copyRedirectedCacheableResponsesPlugin`.\n *\n * - If this method is called and there are no suitable `cacheWillUpdate`\n * plugins, we need to add `defaultPrecacheCacheabilityPlugin`.\n *\n * - If this method is called and there is exactly one `cacheWillUpdate`, then\n * we don't have to do anything (this might be a previously added\n * `defaultPrecacheCacheabilityPlugin`, or it might be a custom plugin).\n *\n * - If this method is called and there is more than one `cacheWillUpdate`,\n * then we need to check if one is `defaultPrecacheCacheabilityPlugin`. If so,\n * we need to remove it. (This situation is unlikely, but it could happen if\n * the strategy is used multiple times, the first without a `cacheWillUpdate`,\n * and then later on after manually adding a custom `cacheWillUpdate`.)\n *\n * See https://github.com/GoogleChrome/workbox/issues/2737 for more context.\n *\n * @private\n */\n _useDefaultCacheabilityPluginIfNeeded() {\n let defaultPluginIndex = null;\n let cacheWillUpdatePluginCount = 0;\n for (const [index, plugin] of this.plugins.entries()) {\n // Ignore the copy redirected plugin when determining what to do.\n if (plugin === PrecacheStrategy.copyRedirectedCacheableResponsesPlugin) {\n continue;\n }\n // Save the default plugin's index, in case it needs to be removed.\n if (plugin === PrecacheStrategy.defaultPrecacheCacheabilityPlugin) {\n defaultPluginIndex = index;\n }\n if (plugin.cacheWillUpdate) {\n cacheWillUpdatePluginCount++;\n }\n }\n if (cacheWillUpdatePluginCount === 0) {\n this.plugins.push(PrecacheStrategy.defaultPrecacheCacheabilityPlugin);\n }\n else if (cacheWillUpdatePluginCount > 1 && defaultPluginIndex !== null) {\n // Only remove the default plugin; multiple custom plugins are allowed.\n this.plugins.splice(defaultPluginIndex, 1);\n }\n // Nothing needs to be done if cacheWillUpdatePluginCount is 1\n }\n}\nPrecacheStrategy.defaultPrecacheCacheabilityPlugin = {\n async cacheWillUpdate({ response }) {\n if (!response || response.status >= 400) {\n return null;\n }\n return response;\n },\n};\nPrecacheStrategy.copyRedirectedCacheableResponsesPlugin = {\n async cacheWillUpdate({ response }) {\n return response.redirected ? await copyResponse(response) : response;\n },\n};\nexport { PrecacheStrategy };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { waitUntil } from 'workbox-core/_private/waitUntil.js';\nimport { createCacheKey } from './utils/createCacheKey.js';\nimport { PrecacheInstallReportPlugin } from './utils/PrecacheInstallReportPlugin.js';\nimport { PrecacheCacheKeyPlugin } from './utils/PrecacheCacheKeyPlugin.js';\nimport { printCleanupDetails } from './utils/printCleanupDetails.js';\nimport { printInstallDetails } from './utils/printInstallDetails.js';\nimport { PrecacheStrategy } from './PrecacheStrategy.js';\nimport './_version.js';\n/**\n * Performs efficient precaching of assets.\n *\n * @memberof workbox-precaching\n */\nclass PrecacheController {\n /**\n * Create a new PrecacheController.\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] The cache to use for precaching.\n * @param {string} [options.plugins] Plugins to use when precaching as well\n * as responding to fetch events for precached assets.\n * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to\n * get the response from the network if there's a precache miss.\n */\n constructor({ cacheName, plugins = [], fallbackToNetwork = true, } = {}) {\n this._urlsToCacheKeys = new Map();\n this._urlsToCacheModes = new Map();\n this._cacheKeysToIntegrities = new Map();\n this._strategy = new PrecacheStrategy({\n cacheName: cacheNames.getPrecacheName(cacheName),\n plugins: [\n ...plugins,\n new PrecacheCacheKeyPlugin({ precacheController: this }),\n ],\n fallbackToNetwork,\n });\n // Bind the install and activate methods to the instance.\n this.install = this.install.bind(this);\n this.activate = this.activate.bind(this);\n }\n /**\n * @type {workbox-precaching.PrecacheStrategy} The strategy created by this controller and\n * used to cache assets and respond to fetch events.\n */\n get strategy() {\n return this._strategy;\n }\n /**\n * Adds items to the precache list, removing any duplicates and\n * stores the files in the\n * {@link workbox-core.cacheNames|\"precache cache\"} when the service\n * worker installs.\n *\n * This method can be called multiple times.\n *\n * @param {Array} [entries=[]] Array of entries to precache.\n */\n precache(entries) {\n this.addToCacheList(entries);\n if (!this._installAndActiveListenersAdded) {\n self.addEventListener('install', this.install);\n self.addEventListener('activate', this.activate);\n this._installAndActiveListenersAdded = true;\n }\n }\n /**\n * This method will add items to the precache list, removing duplicates\n * and ensuring the information is valid.\n *\n * @param {Array} entries\n * Array of entries to precache.\n */\n addToCacheList(entries) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isArray(entries, {\n moduleName: 'workbox-precaching',\n className: 'PrecacheController',\n funcName: 'addToCacheList',\n paramName: 'entries',\n });\n }\n const urlsToWarnAbout = [];\n for (const entry of entries) {\n // See https://github.com/GoogleChrome/workbox/issues/2259\n if (typeof entry === 'string') {\n urlsToWarnAbout.push(entry);\n }\n else if (entry && entry.revision === undefined) {\n urlsToWarnAbout.push(entry.url);\n }\n const { cacheKey, url } = createCacheKey(entry);\n const cacheMode = typeof entry !== 'string' && entry.revision ? 'reload' : 'default';\n if (this._urlsToCacheKeys.has(url) &&\n this._urlsToCacheKeys.get(url) !== cacheKey) {\n throw new WorkboxError('add-to-cache-list-conflicting-entries', {\n firstEntry: this._urlsToCacheKeys.get(url),\n secondEntry: cacheKey,\n });\n }\n if (typeof entry !== 'string' && entry.integrity) {\n if (this._cacheKeysToIntegrities.has(cacheKey) &&\n this._cacheKeysToIntegrities.get(cacheKey) !== entry.integrity) {\n throw new WorkboxError('add-to-cache-list-conflicting-integrities', {\n url,\n });\n }\n this._cacheKeysToIntegrities.set(cacheKey, entry.integrity);\n }\n this._urlsToCacheKeys.set(url, cacheKey);\n this._urlsToCacheModes.set(url, cacheMode);\n if (urlsToWarnAbout.length > 0) {\n const warningMessage = `Workbox is precaching URLs without revision ` +\n `info: ${urlsToWarnAbout.join(', ')}\\nThis is generally NOT safe. ` +\n `Learn more at https://bit.ly/wb-precache`;\n if (process.env.NODE_ENV === 'production') {\n // Use console directly to display this warning without bloating\n // bundle sizes by pulling in all of the logger codebase in prod.\n console.warn(warningMessage);\n }\n else {\n logger.warn(warningMessage);\n }\n }\n }\n }\n /**\n * Precaches new and updated assets. Call this method from the service worker\n * install event.\n *\n * Note: this method calls `event.waitUntil()` for you, so you do not need\n * to call it yourself in your event handlers.\n *\n * @param {ExtendableEvent} event\n * @return {Promise}\n */\n install(event) {\n // waitUntil returns Promise\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return waitUntil(event, async () => {\n const installReportPlugin = new PrecacheInstallReportPlugin();\n this.strategy.plugins.push(installReportPlugin);\n // Cache entries one at a time.\n // See https://github.com/GoogleChrome/workbox/issues/2528\n for (const [url, cacheKey] of this._urlsToCacheKeys) {\n const integrity = this._cacheKeysToIntegrities.get(cacheKey);\n const cacheMode = this._urlsToCacheModes.get(url);\n const request = new Request(url, {\n integrity,\n cache: cacheMode,\n credentials: 'same-origin',\n });\n await Promise.all(this.strategy.handleAll({\n params: { cacheKey },\n request,\n event,\n }));\n }\n const { updatedURLs, notUpdatedURLs } = installReportPlugin;\n if (process.env.NODE_ENV !== 'production') {\n printInstallDetails(updatedURLs, notUpdatedURLs);\n }\n return { updatedURLs, notUpdatedURLs };\n });\n }\n /**\n * Deletes assets that are no longer present in the current precache manifest.\n * Call this method from the service worker activate event.\n *\n * Note: this method calls `event.waitUntil()` for you, so you do not need\n * to call it yourself in your event handlers.\n *\n * @param {ExtendableEvent} event\n * @return {Promise}\n */\n activate(event) {\n // waitUntil returns Promise\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return waitUntil(event, async () => {\n const cache = await self.caches.open(this.strategy.cacheName);\n const currentlyCachedRequests = await cache.keys();\n const expectedCacheKeys = new Set(this._urlsToCacheKeys.values());\n const deletedURLs = [];\n for (const request of currentlyCachedRequests) {\n if (!expectedCacheKeys.has(request.url)) {\n await cache.delete(request);\n deletedURLs.push(request.url);\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n printCleanupDetails(deletedURLs);\n }\n return { deletedURLs };\n });\n }\n /**\n * Returns a mapping of a precached URL to the corresponding cache key, taking\n * into account the revision information for the URL.\n *\n * @return {Map} A URL to cache key mapping.\n */\n getURLsToCacheKeys() {\n return this._urlsToCacheKeys;\n }\n /**\n * Returns a list of all the URLs that have been precached by the current\n * service worker.\n *\n * @return {Array} The precached URLs.\n */\n getCachedURLs() {\n return [...this._urlsToCacheKeys.keys()];\n }\n /**\n * Returns the cache key used for storing a given URL. If that URL is\n * unversioned, like `/index.html', then the cache key will be the original\n * URL with a search parameter appended to it.\n *\n * @param {string} url A URL whose cache key you want to look up.\n * @return {string} The versioned URL that corresponds to a cache key\n * for the original URL, or undefined if that URL isn't precached.\n */\n getCacheKeyForURL(url) {\n const urlObject = new URL(url, location.href);\n return this._urlsToCacheKeys.get(urlObject.href);\n }\n /**\n * @param {string} url A cache key whose SRI you want to look up.\n * @return {string} The subresource integrity associated with the cache key,\n * or undefined if it's not set.\n */\n getIntegrityForCacheKey(cacheKey) {\n return this._cacheKeysToIntegrities.get(cacheKey);\n }\n /**\n * This acts as a drop-in replacement for\n * [`cache.match()`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/match)\n * with the following differences:\n *\n * - It knows what the name of the precache is, and only checks in that cache.\n * - It allows you to pass in an \"original\" URL without versioning parameters,\n * and it will automatically look up the correct cache key for the currently\n * active revision of that URL.\n *\n * E.g., `matchPrecache('index.html')` will find the correct precached\n * response for the currently active service worker, even if the actual cache\n * key is `'/index.html?__WB_REVISION__=1234abcd'`.\n *\n * @param {string|Request} request The key (without revisioning parameters)\n * to look up in the precache.\n * @return {Promise}\n */\n async matchPrecache(request) {\n const url = request instanceof Request ? request.url : request;\n const cacheKey = this.getCacheKeyForURL(url);\n if (cacheKey) {\n const cache = await self.caches.open(this.strategy.cacheName);\n return cache.match(cacheKey);\n }\n return undefined;\n }\n /**\n * Returns a function that looks up `url` in the precache (taking into\n * account revision information), and returns the corresponding `Response`.\n *\n * @param {string} url The precached URL which will be used to lookup the\n * `Response`.\n * @return {workbox-routing~handlerCallback}\n */\n createHandlerBoundToURL(url) {\n const cacheKey = this.getCacheKeyForURL(url);\n if (!cacheKey) {\n throw new WorkboxError('non-precached-url', { url });\n }\n return (options) => {\n options.request = new Request(url);\n options.params = Object.assign({ cacheKey }, options.params);\n return this.strategy.handle(options);\n };\n }\n}\nexport { PrecacheController };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { PrecacheController } from '../PrecacheController.js';\nimport '../_version.js';\nlet precacheController;\n/**\n * @return {PrecacheController}\n * @private\n */\nexport const getOrCreatePrecacheController = () => {\n if (!precacheController) {\n precacheController = new PrecacheController();\n }\n return precacheController;\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { Router } from '../Router.js';\nimport '../_version.js';\nlet defaultRouter;\n/**\n * Creates a new, singleton Router instance if one does not exist. If one\n * does already exist, that instance is returned.\n *\n * @private\n * @return {Router}\n */\nexport const getOrCreateDefaultRouter = () => {\n if (!defaultRouter) {\n defaultRouter = new Router();\n // The helpers that use the default Router assume these listeners exist.\n defaultRouter.addFetchListener();\n defaultRouter.addCacheListener();\n }\n return defaultRouter;\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The default HTTP method, 'GET', used when there's no specific method\n * configured for a route.\n *\n * @type {string}\n *\n * @private\n */\nexport const defaultMethod = 'GET';\n/**\n * The list of valid HTTP methods associated with requests that could be routed.\n *\n * @type {Array}\n *\n * @private\n */\nexport const validMethods = [\n 'DELETE',\n 'GET',\n 'HEAD',\n 'PATCH',\n 'POST',\n 'PUT',\n];\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport '../_version.js';\n/**\n * @param {function()|Object} handler Either a function, or an object with a\n * 'handle' method.\n * @return {Object} An object with a handle method.\n *\n * @private\n */\nexport const normalizeHandler = (handler) => {\n if (handler && typeof handler === 'object') {\n if (process.env.NODE_ENV !== 'production') {\n assert.hasMethod(handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return handler;\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(handler, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return { handle: handler };\n }\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { defaultMethod, validMethods } from './utils/constants.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport './_version.js';\n/**\n * A `Route` consists of a pair of callback functions, \"match\" and \"handler\".\n * The \"match\" callback determine if a route should be used to \"handle\" a\n * request by returning a non-falsy value if it can. The \"handler\" callback\n * is called when there is a match and should return a Promise that resolves\n * to a `Response`.\n *\n * @memberof workbox-routing\n */\nclass Route {\n /**\n * Constructor for Route class.\n *\n * @param {workbox-routing~matchCallback} match\n * A callback function that determines whether the route matches a given\n * `fetch` event by returning a non-falsy value.\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resolving to a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n */\n constructor(match, handler, method = defaultMethod) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(match, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'match',\n });\n if (method) {\n assert.isOneOf(method, validMethods, { paramName: 'method' });\n }\n }\n // These values are referenced directly by Router so cannot be\n // altered by minificaton.\n this.handler = normalizeHandler(handler);\n this.match = match;\n this.method = method;\n }\n /**\n *\n * @param {workbox-routing-handlerCallback} handler A callback\n * function that returns a Promise resolving to a Response\n */\n setCatchHandler(handler) {\n this.catchHandler = normalizeHandler(handler);\n }\n}\nexport { Route };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { Route } from './Route.js';\nimport './_version.js';\n/**\n * RegExpRoute makes it easy to create a regular expression based\n * {@link workbox-routing.Route}.\n *\n * For same-origin requests the RegExp only needs to match part of the URL. For\n * requests against third-party servers, you must define a RegExp that matches\n * the start of the URL.\n *\n * @memberof workbox-routing\n * @extends workbox-routing.Route\n */\nclass RegExpRoute extends Route {\n /**\n * If the regular expression contains\n * [capture groups]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#grouping-back-references},\n * the captured values will be passed to the\n * {@link workbox-routing~handlerCallback} `params`\n * argument.\n *\n * @param {RegExp} regExp The regular expression to match against URLs.\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n */\n constructor(regExp, handler, method) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(regExp, RegExp, {\n moduleName: 'workbox-routing',\n className: 'RegExpRoute',\n funcName: 'constructor',\n paramName: 'pattern',\n });\n }\n const match = ({ url }) => {\n const result = regExp.exec(url.href);\n // Return immediately if there's no match.\n if (!result) {\n return;\n }\n // Require that the match start at the first character in the URL string\n // if it's a cross-origin request.\n // See https://github.com/GoogleChrome/workbox/issues/281 for the context\n // behind this behavior.\n if (url.origin !== location.origin && result.index !== 0) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`The regular expression '${regExp.toString()}' only partially matched ` +\n `against the cross-origin URL '${url.toString()}'. RegExpRoute's will only ` +\n `handle cross-origin requests if they match the entire URL.`);\n }\n return;\n }\n // If the route matches, but there aren't any capture groups defined, then\n // this will return [], which is truthy and therefore sufficient to\n // indicate a match.\n // If there are capture groups, then it will return their values.\n return result.slice(1);\n };\n super(match, handler, method);\n }\n}\nexport { RegExpRoute };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { defaultMethod } from './utils/constants.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\n/**\n * The Router can be used to process a `FetchEvent` using one or more\n * {@link workbox-routing.Route}, responding with a `Response` if\n * a matching route exists.\n *\n * If no route matches a given a request, the Router will use a \"default\"\n * handler if one is defined.\n *\n * Should the matching Route throw an error, the Router will use a \"catch\"\n * handler if one is defined to gracefully deal with issues and respond with a\n * Request.\n *\n * If a request matches multiple routes, the **earliest** registered route will\n * be used to respond to the request.\n *\n * @memberof workbox-routing\n */\nclass Router {\n /**\n * Initializes a new Router.\n */\n constructor() {\n this._routes = new Map();\n this._defaultHandlerMap = new Map();\n }\n /**\n * @return {Map>} routes A `Map` of HTTP\n * method name ('GET', etc.) to an array of all the corresponding `Route`\n * instances that are registered.\n */\n get routes() {\n return this._routes;\n }\n /**\n * Adds a fetch event listener to respond to events when a route matches\n * the event's request.\n */\n addFetchListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('fetch', ((event) => {\n const { request } = event;\n const responsePromise = this.handleRequest({ request, event });\n if (responsePromise) {\n event.respondWith(responsePromise);\n }\n }));\n }\n /**\n * Adds a message event listener for URLs to cache from the window.\n * This is useful to cache resources loaded on the page prior to when the\n * service worker started controlling it.\n *\n * The format of the message data sent from the window should be as follows.\n * Where the `urlsToCache` array may consist of URL strings or an array of\n * URL string + `requestInit` object (the same as you'd pass to `fetch()`).\n *\n * ```\n * {\n * type: 'CACHE_URLS',\n * payload: {\n * urlsToCache: [\n * './script1.js',\n * './script2.js',\n * ['./script3.js', {mode: 'no-cors'}],\n * ],\n * },\n * }\n * ```\n */\n addCacheListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('message', ((event) => {\n // event.data is type 'any'\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (event.data && event.data.type === 'CACHE_URLS') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { payload } = event.data;\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Caching URLs from the window`, payload.urlsToCache);\n }\n const requestPromises = Promise.all(payload.urlsToCache.map((entry) => {\n if (typeof entry === 'string') {\n entry = [entry];\n }\n const request = new Request(...entry);\n return this.handleRequest({ request, event });\n // TODO(philipwalton): TypeScript errors without this typecast for\n // some reason (probably a bug). The real type here should work but\n // doesn't: `Array | undefined>`.\n })); // TypeScript\n event.waitUntil(requestPromises);\n // If a MessageChannel was used, reply to the message on success.\n if (event.ports && event.ports[0]) {\n void requestPromises.then(() => event.ports[0].postMessage(true));\n }\n }\n }));\n }\n /**\n * Apply the routing rules to a FetchEvent object to get a Response from an\n * appropriate Route's handler.\n *\n * @param {Object} options\n * @param {Request} options.request The request to handle.\n * @param {ExtendableEvent} options.event The event that triggered the\n * request.\n * @return {Promise|undefined} A promise is returned if a\n * registered route can handle the request. If there is no matching\n * route and there's no `defaultHandler`, `undefined` is returned.\n */\n handleRequest({ request, event, }) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'handleRequest',\n paramName: 'options.request',\n });\n }\n const url = new URL(request.url, location.href);\n if (!url.protocol.startsWith('http')) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Workbox Router only supports URLs that start with 'http'.`);\n }\n return;\n }\n const sameOrigin = url.origin === location.origin;\n const { params, route } = this.findMatchingRoute({\n event,\n request,\n sameOrigin,\n url,\n });\n let handler = route && route.handler;\n const debugMessages = [];\n if (process.env.NODE_ENV !== 'production') {\n if (handler) {\n debugMessages.push([`Found a route to handle this request:`, route]);\n if (params) {\n debugMessages.push([\n `Passing the following params to the route's handler:`,\n params,\n ]);\n }\n }\n }\n // If we don't have a handler because there was no matching route, then\n // fall back to defaultHandler if that's defined.\n const method = request.method;\n if (!handler && this._defaultHandlerMap.has(method)) {\n if (process.env.NODE_ENV !== 'production') {\n debugMessages.push(`Failed to find a matching route. Falling ` +\n `back to the default handler for ${method}.`);\n }\n handler = this._defaultHandlerMap.get(method);\n }\n if (!handler) {\n if (process.env.NODE_ENV !== 'production') {\n // No handler so Workbox will do nothing. If logs is set of debug\n // i.e. verbose, we should print out this information.\n logger.debug(`No route found for: ${getFriendlyURL(url)}`);\n }\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // We have a handler, meaning Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Router is responding to: ${getFriendlyURL(url)}`);\n debugMessages.forEach((msg) => {\n if (Array.isArray(msg)) {\n logger.log(...msg);\n }\n else {\n logger.log(msg);\n }\n });\n logger.groupEnd();\n }\n // Wrap in try and catch in case the handle method throws a synchronous\n // error. It should still callback to the catch handler.\n let responsePromise;\n try {\n responsePromise = handler.handle({ url, request, event, params });\n }\n catch (err) {\n responsePromise = Promise.reject(err);\n }\n // Get route's catch handler, if it exists\n const catchHandler = route && route.catchHandler;\n if (responsePromise instanceof Promise &&\n (this._catchHandler || catchHandler)) {\n responsePromise = responsePromise.catch(async (err) => {\n // If there's a route catch handler, process that first\n if (catchHandler) {\n if (process.env.NODE_ENV !== 'production') {\n // Still include URL here as it will be async from the console group\n // and may not make sense without the URL\n logger.groupCollapsed(`Error thrown when responding to: ` +\n ` ${getFriendlyURL(url)}. Falling back to route's Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n try {\n return await catchHandler.handle({ url, request, event, params });\n }\n catch (catchErr) {\n if (catchErr instanceof Error) {\n err = catchErr;\n }\n }\n }\n if (this._catchHandler) {\n if (process.env.NODE_ENV !== 'production') {\n // Still include URL here as it will be async from the console group\n // and may not make sense without the URL\n logger.groupCollapsed(`Error thrown when responding to: ` +\n ` ${getFriendlyURL(url)}. Falling back to global Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n return this._catchHandler.handle({ url, request, event });\n }\n throw err;\n });\n }\n return responsePromise;\n }\n /**\n * Checks a request and URL (and optionally an event) against the list of\n * registered routes, and if there's a match, returns the corresponding\n * route along with any params generated by the match.\n *\n * @param {Object} options\n * @param {URL} options.url\n * @param {boolean} options.sameOrigin The result of comparing `url.origin`\n * against the current origin.\n * @param {Request} options.request The request to match.\n * @param {Event} options.event The corresponding event.\n * @return {Object} An object with `route` and `params` properties.\n * They are populated if a matching route was found or `undefined`\n * otherwise.\n */\n findMatchingRoute({ url, sameOrigin, request, event, }) {\n const routes = this._routes.get(request.method) || [];\n for (const route of routes) {\n let params;\n // route.match returns type any, not possible to change right now.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const matchResult = route.match({ url, sameOrigin, request, event });\n if (matchResult) {\n if (process.env.NODE_ENV !== 'production') {\n // Warn developers that using an async matchCallback is almost always\n // not the right thing to do.\n if (matchResult instanceof Promise) {\n logger.warn(`While routing ${getFriendlyURL(url)}, an async ` +\n `matchCallback function was used. Please convert the ` +\n `following route to use a synchronous matchCallback function:`, route);\n }\n }\n // See https://github.com/GoogleChrome/workbox/issues/2079\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n params = matchResult;\n if (Array.isArray(params) && params.length === 0) {\n // Instead of passing an empty array in as params, use undefined.\n params = undefined;\n }\n else if (matchResult.constructor === Object && // eslint-disable-line\n Object.keys(matchResult).length === 0) {\n // Instead of passing an empty object in as params, use undefined.\n params = undefined;\n }\n else if (typeof matchResult === 'boolean') {\n // For the boolean value true (rather than just something truth-y),\n // don't set params.\n // See https://github.com/GoogleChrome/workbox/pull/2134#issuecomment-513924353\n params = undefined;\n }\n // Return early if have a match.\n return { route, params };\n }\n }\n // If no match was found above, return and empty object.\n return {};\n }\n /**\n * Define a default `handler` that's called when no routes explicitly\n * match the incoming request.\n *\n * Each HTTP method ('GET', 'POST', etc.) gets its own default handler.\n *\n * Without a default handler, unmatched requests will go against the\n * network as if there were no service worker present.\n *\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to associate with this\n * default handler. Each method has its own default.\n */\n setDefaultHandler(handler, method = defaultMethod) {\n this._defaultHandlerMap.set(method, normalizeHandler(handler));\n }\n /**\n * If a Route throws an error while handling a request, this `handler`\n * will be called and given a chance to provide a response.\n *\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n */\n setCatchHandler(handler) {\n this._catchHandler = normalizeHandler(handler);\n }\n /**\n * Registers a route with the router.\n *\n * @param {workbox-routing.Route} route The route to register.\n */\n registerRoute(route) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(route, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.hasMethod(route, 'match', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.isType(route.handler, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.hasMethod(route.handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.handler',\n });\n assert.isType(route.method, 'string', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.method',\n });\n }\n if (!this._routes.has(route.method)) {\n this._routes.set(route.method, []);\n }\n // Give precedence to all of the earlier routes by adding this additional\n // route to the end of the array.\n this._routes.get(route.method).push(route);\n }\n /**\n * Unregisters a route with the router.\n *\n * @param {workbox-routing.Route} route The route to unregister.\n */\n unregisterRoute(route) {\n if (!this._routes.has(route.method)) {\n throw new WorkboxError('unregister-route-but-not-found-with-method', {\n method: route.method,\n });\n }\n const routeIndex = this._routes.get(route.method).indexOf(route);\n if (routeIndex > -1) {\n this._routes.get(route.method).splice(routeIndex, 1);\n }\n else {\n throw new WorkboxError('unregister-route-route-not-registered');\n }\n }\n}\nexport { Router };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Route } from './Route.js';\nimport { RegExpRoute } from './RegExpRoute.js';\nimport { getOrCreateDefaultRouter } from './utils/getOrCreateDefaultRouter.js';\nimport './_version.js';\n/**\n * Easily register a RegExp, string, or function with a caching\n * strategy to a singleton Router instance.\n *\n * This method will generate a Route for you if needed and\n * call {@link workbox-routing.Router#registerRoute}.\n *\n * @param {RegExp|string|workbox-routing.Route~matchCallback|workbox-routing.Route} capture\n * If the capture param is a `Route`, all other arguments will be ignored.\n * @param {workbox-routing~handlerCallback} [handler] A callback\n * function that returns a Promise resulting in a Response. This parameter\n * is required if `capture` is not a `Route` object.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n * @return {workbox-routing.Route} The generated `Route`.\n *\n * @memberof workbox-routing\n */\nfunction registerRoute(capture, handler, method) {\n let route;\n if (typeof capture === 'string') {\n const captureUrl = new URL(capture, location.href);\n if (process.env.NODE_ENV !== 'production') {\n if (!(capture.startsWith('/') || capture.startsWith('http'))) {\n throw new WorkboxError('invalid-string', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n // We want to check if Express-style wildcards are in the pathname only.\n // TODO: Remove this log message in v4.\n const valueToCheck = capture.startsWith('http')\n ? captureUrl.pathname\n : capture;\n // See https://github.com/pillarjs/path-to-regexp#parameters\n const wildcards = '[*:?+]';\n if (new RegExp(`${wildcards}`).exec(valueToCheck)) {\n logger.debug(`The '$capture' parameter contains an Express-style wildcard ` +\n `character (${wildcards}). Strings are now always interpreted as ` +\n `exact matches; use a RegExp for partial or wildcard matches.`);\n }\n }\n const matchCallback = ({ url }) => {\n if (process.env.NODE_ENV !== 'production') {\n if (url.pathname === captureUrl.pathname &&\n url.origin !== captureUrl.origin) {\n logger.debug(`${capture} only partially matches the cross-origin URL ` +\n `${url.toString()}. This route will only handle cross-origin requests ` +\n `if they match the entire URL.`);\n }\n }\n return url.href === captureUrl.href;\n };\n // If `capture` is a string then `handler` and `method` must be present.\n route = new Route(matchCallback, handler, method);\n }\n else if (capture instanceof RegExp) {\n // If `capture` is a `RegExp` then `handler` and `method` must be present.\n route = new RegExpRoute(capture, handler, method);\n }\n else if (typeof capture === 'function') {\n // If `capture` is a function then `handler` and `method` must be present.\n route = new Route(capture, handler, method);\n }\n else if (capture instanceof Route) {\n route = capture;\n }\n else {\n throw new WorkboxError('unsupported-route-type', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n const defaultRouter = getOrCreateDefaultRouter();\n defaultRouter.registerRoute(route);\n return route;\n}\nexport { registerRoute };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * Removes any URL search parameters that should be ignored.\n *\n * @param {URL} urlObject The original URL.\n * @param {Array} ignoreURLParametersMatching RegExps to test against\n * each search parameter name. Matches mean that the search parameter should be\n * ignored.\n * @return {URL} The URL with any ignored search parameters removed.\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching = []) {\n // Convert the iterable into an array at the start of the loop to make sure\n // deletion doesn't mess up iteration.\n for (const paramName of [...urlObject.searchParams.keys()]) {\n if (ignoreURLParametersMatching.some((regExp) => regExp.test(paramName))) {\n urlObject.searchParams.delete(paramName);\n }\n }\n return urlObject;\n}\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { Route } from 'workbox-routing/Route.js';\nimport { generateURLVariations } from './utils/generateURLVariations.js';\nimport './_version.js';\n/**\n * A subclass of {@link workbox-routing.Route} that takes a\n * {@link workbox-precaching.PrecacheController}\n * instance and uses it to match incoming requests and handle fetching\n * responses from the precache.\n *\n * @memberof workbox-precaching\n * @extends workbox-routing.Route\n */\nclass PrecacheRoute extends Route {\n /**\n * @param {PrecacheController} precacheController A `PrecacheController`\n * instance used to both match requests and respond to fetch events.\n * @param {Object} [options] Options to control how requests are matched\n * against the list of precached URLs.\n * @param {string} [options.directoryIndex=index.html] The `directoryIndex` will\n * check cache entries for a URLs ending with '/' to see if there is a hit when\n * appending the `directoryIndex` value.\n * @param {Array} [options.ignoreURLParametersMatching=[/^utm_/, /^fbclid$/]] An\n * array of regex's to remove search params when looking for a cache match.\n * @param {boolean} [options.cleanURLs=true] The `cleanURLs` option will\n * check the cache for the URL with a `.html` added to the end of the end.\n * @param {workbox-precaching~urlManipulation} [options.urlManipulation]\n * This is a function that should take a URL and return an array of\n * alternative URLs that should be checked for precache matches.\n */\n constructor(precacheController, options) {\n const match = ({ request, }) => {\n const urlsToCacheKeys = precacheController.getURLsToCacheKeys();\n for (const possibleURL of generateURLVariations(request.url, options)) {\n const cacheKey = urlsToCacheKeys.get(possibleURL);\n if (cacheKey) {\n const integrity = precacheController.getIntegrityForCacheKey(cacheKey);\n return { cacheKey, integrity };\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Precaching did not find a match for ` + getFriendlyURL(request.url));\n }\n return;\n };\n super(match, precacheController.strategy);\n }\n}\nexport { PrecacheRoute };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { removeIgnoredSearchParams } from './removeIgnoredSearchParams.js';\nimport '../_version.js';\n/**\n * Generator function that yields possible variations on the original URL to\n * check, one at a time.\n *\n * @param {string} url\n * @param {Object} options\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function* generateURLVariations(url, { ignoreURLParametersMatching = [/^utm_/, /^fbclid$/], directoryIndex = 'index.html', cleanURLs = true, urlManipulation, } = {}) {\n const urlObject = new URL(url, location.href);\n urlObject.hash = '';\n yield urlObject.href;\n const urlWithoutIgnoredParams = removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching);\n yield urlWithoutIgnoredParams.href;\n if (directoryIndex && urlWithoutIgnoredParams.pathname.endsWith('/')) {\n const directoryURL = new URL(urlWithoutIgnoredParams.href);\n directoryURL.pathname += directoryIndex;\n yield directoryURL.href;\n }\n if (cleanURLs) {\n const cleanURL = new URL(urlWithoutIgnoredParams.href);\n cleanURL.pathname += '.html';\n yield cleanURL.href;\n }\n if (urlManipulation) {\n const additionalURLs = urlManipulation({ url: urlObject });\n for (const urlToAttempt of additionalURLs) {\n yield urlToAttempt.href;\n }\n }\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport '../_version.js';\nexport const messages = {\n strategyStart: (strategyName, request) => `Using ${strategyName} to respond to '${getFriendlyURL(request.url)}'`,\n printFinalResponse: (response) => {\n if (response) {\n logger.groupCollapsed(`View the final response here.`);\n logger.log(response || '[No response returned]');\n logger.groupEnd();\n }\n },\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { addRoute } from './addRoute.js';\nimport { precache } from './precache.js';\nimport './_version.js';\n/**\n * This method will add entries to the precache list and add a route to\n * respond to fetch events.\n *\n * This is a convenience method that will call\n * {@link workbox-precaching.precache} and\n * {@link workbox-precaching.addRoute} in a single call.\n *\n * @param {Array} entries Array of entries to precache.\n * @param {Object} [options] See the\n * {@link workbox-precaching.PrecacheRoute} options.\n *\n * @memberof workbox-precaching\n */\nfunction precacheAndRoute(entries, options) {\n precache(entries);\n addRoute(options);\n}\nexport { precacheAndRoute };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nexport const cacheOkAndOpaquePlugin = {\n /**\n * Returns a valid response (to allow caching) if the status is 200 (OK) or\n * 0 (opaque).\n *\n * @param {Object} options\n * @param {Response} options.response\n * @return {Response|null}\n *\n * @private\n */\n cacheWillUpdate: async ({ response }) => {\n if (response.status === 200 || response.status === 0) {\n return response;\n }\n return null;\n },\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { cacheOkAndOpaquePlugin } from './plugins/cacheOkAndOpaquePlugin.js';\nimport { Strategy } from './Strategy.js';\nimport { messages } from './utils/messages.js';\nimport './_version.js';\n/**\n * An implementation of a\n * [stale-while-revalidate](https://developer.chrome.com/docs/workbox/caching-strategies-overview/#stale-while-revalidate)\n * request strategy.\n *\n * Resources are requested from both the cache and the network in parallel.\n * The strategy will respond with the cached version if available, otherwise\n * wait for the network response. The cache is updated with the network response\n * with each successful request.\n *\n * By default, this strategy will cache responses with a 200 status code as\n * well as [opaque responses](https://developer.chrome.com/docs/workbox/caching-resources-during-runtime/#opaque-responses).\n * Opaque responses are cross-origin requests where the response doesn't\n * support [CORS](https://enable-cors.org/).\n *\n * If the network request fails, and there is no cache match, this will throw\n * a `WorkboxError` exception.\n *\n * @extends workbox-strategies.Strategy\n * @memberof workbox-strategies\n */\nclass StaleWhileRevalidate extends Strategy {\n /**\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to cache names provided by\n * {@link workbox-core.cacheNames}.\n * @param {Array} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)\n * `fetch()` requests made by this strategy.\n * @param {Object} [options.matchOptions] [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions)\n */\n constructor(options = {}) {\n super(options);\n // If this instance contains no plugins with a 'cacheWillUpdate' callback,\n // prepend the `cacheOkAndOpaquePlugin` plugin to the plugins list.\n if (!this.plugins.some((p) => 'cacheWillUpdate' in p)) {\n this.plugins.unshift(cacheOkAndOpaquePlugin);\n }\n }\n /**\n * @private\n * @param {Request|string} request A request to run this strategy for.\n * @param {workbox-strategies.StrategyHandler} handler The event that\n * triggered the request.\n * @return {Promise}\n */\n async _handle(request, handler) {\n const logs = [];\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: this.constructor.name,\n funcName: 'handle',\n paramName: 'request',\n });\n }\n const fetchAndCachePromise = handler.fetchAndCachePut(request).catch(() => {\n // Swallow this error because a 'no-response' error will be thrown in\n // main handler return flow. This will be in the `waitUntil()` flow.\n });\n void handler.waitUntil(fetchAndCachePromise);\n let response = await handler.cacheMatch(request);\n let error;\n if (response) {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`Found a cached response in the '${this.cacheName}'` +\n ` cache. Will update with the network response in the background.`);\n }\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`No response found in the '${this.cacheName}' cache. ` +\n `Will wait for the network response.`);\n }\n try {\n // NOTE(philipwalton): Really annoying that we have to type cast here.\n // https://github.com/microsoft/TypeScript/issues/20006\n response = (await fetchAndCachePromise);\n }\n catch (err) {\n if (err instanceof Error) {\n error = err;\n }\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(messages.strategyStart(this.constructor.name, request));\n for (const log of logs) {\n logger.log(log);\n }\n messages.printFinalResponse(response);\n logger.groupEnd();\n }\n if (!response) {\n throw new WorkboxError('no-response', { url: request.url, error });\n }\n return response;\n }\n}\nexport { StaleWhileRevalidate };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport './_version.js';\n/**\n * Claim any currently available clients once the service worker\n * becomes active. This is normally used in conjunction with `skipWaiting()`.\n *\n * @memberof workbox-core\n */\nfunction clientsClaim() {\n self.addEventListener('activate', () => self.clients.claim());\n}\nexport { clientsClaim };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport './_version.js';\n/**\n * Adds items to the precache list, removing any duplicates and\n * stores the files in the\n * {@link workbox-core.cacheNames|\"precache cache\"} when the service\n * worker installs.\n *\n * This method can be called multiple times.\n *\n * Please note: This method **will not** serve any of the cached files for you.\n * It only precaches files. To respond to a network request you call\n * {@link workbox-precaching.addRoute}.\n *\n * If you have a single array of files to precache, you can just call\n * {@link workbox-precaching.precacheAndRoute}.\n *\n * @param {Array} [entries=[]] Array of entries to precache.\n *\n * @memberof workbox-precaching\n */\nfunction precache(entries) {\n const precacheController = getOrCreatePrecacheController();\n precacheController.precache(entries);\n}\nexport { precache };\n","/// \n/* eslint-disable no-restricted-globals */\n\n// This service worker can be customized!\n// See https://developers.google.com/web/tools/workbox/modules\n// for the list of available Workbox modules, or add any other\n// code you'd like.\n// You can also remove this file if you'd prefer not to use a\n// service worker, and the Workbox build step will be skipped.\n\nimport { clientsClaim } from 'workbox-core';\nimport { ExpirationPlugin } from 'workbox-expiration';\nimport { precacheAndRoute, createHandlerBoundToURL } from 'workbox-precaching';\nimport { registerRoute } from 'workbox-routing';\nimport { StaleWhileRevalidate } from 'workbox-strategies';\n\ndeclare const self: ServiceWorkerGlobalScope;\n\nclientsClaim();\n\n// Precache all of the assets generated by your build process.\n// Their URLs are injected into the manifest variable below.\n// This variable must be present somewhere in your service worker file,\n// even if you decide not to use precaching. See https://cra.link/PWA\nprecacheAndRoute(self.__WB_MANIFEST);\n\n// Set up App Shell-style routing, so that all navigation requests\n// are fulfilled with your index.html shell. Learn more at\n// https://developers.google.com/web/fundamentals/architecture/app-shell\nconst fileExtensionRegexp = /[^/?]+\\\\.[^/]+$/;\nregisterRoute(\n // Return false to exempt requests from being fulfilled by index.html.\n ({ request, url }: { request: Request; url: URL }) => {\n // If this isn't a navigation, skip.\n if (request.mode !== 'navigate') {\n return false;\n }\n\n // If this is a URL that starts with /_, skip.\n if (url.pathname.startsWith('/_')) {\n return false;\n }\n\n // If this looks like a URL for a resource, because it contains\n // a file extension, skip.\n if (url.pathname.match(fileExtensionRegexp)) {\n return false;\n }\n\n // Return true to signal that we want to use the handler.\n return true;\n },\n createHandlerBoundToURL(`${process.env.PUBLIC_URL}/index.html`),\n);\n\n// An example runtime caching route for requests that aren't handled by the\n// precache, in this case same-origin .png requests like those from in public/\nregisterRoute(\n // Add in any other file extensions or routing criteria as needed.\n ({ url }) => url.origin === self.location.origin && url.pathname.endsWith('.png'),\n // Customize this strategy as needed, e.g., by changing to CacheFirst.\n new StaleWhileRevalidate({\n cacheName: 'images',\n plugins: [\n // Ensure that once this runtime cache reaches a maximum size the\n // least-recently used images are removed.\n new ExpirationPlugin({ maxEntries: 50 }),\n ],\n }),\n);\n\n// This allows the web app to trigger skipWaiting via\n// registration.waiting.postMessage({type: 'SKIP_WAITING'})\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n// Any other custom service worker logic can go here.\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { registerRoute } from 'workbox-routing/registerRoute.js';\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport { PrecacheRoute } from './PrecacheRoute.js';\nimport './_version.js';\n/**\n * Add a `fetch` listener to the service worker that will\n * respond to\n * [network requests]{@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers#Custom_responses_to_requests}\n * with precached assets.\n *\n * Requests for assets that aren't precached, the `FetchEvent` will not be\n * responded to, allowing the event to fall through to other `fetch` event\n * listeners.\n *\n * @param {Object} [options] See the {@link workbox-precaching.PrecacheRoute}\n * options.\n *\n * @memberof workbox-precaching\n */\nfunction addRoute(options) {\n const precacheController = getOrCreatePrecacheController();\n const precacheRoute = new PrecacheRoute(precacheController, options);\n registerRoute(precacheRoute);\n}\nexport { addRoute };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport './_version.js';\n/**\n * Helper function that calls\n * {@link PrecacheController#createHandlerBoundToURL} on the default\n * {@link PrecacheController} instance.\n *\n * If you are creating your own {@link PrecacheController}, then call the\n * {@link PrecacheController#createHandlerBoundToURL} on that instance,\n * instead of using this function.\n *\n * @param {string} url The precached URL which will be used to lookup the\n * `Response`.\n * @param {boolean} [fallbackToNetwork=true] Whether to attempt to get the\n * response from the network if there's a precache miss.\n * @return {workbox-routing~handlerCallback}\n *\n * @memberof workbox-precaching\n */\nfunction createHandlerBoundToURL(url) {\n const precacheController = getOrCreatePrecacheController();\n return precacheController.createHandlerBoundToURL(url);\n}\nexport { createHandlerBoundToURL };\n"]} \ No newline at end of file diff --git a/static/js/main.06a42d0d.js b/static/js/main.06a42d0d.js deleted file mode 100644 index 4d4d2e1..0000000 --- a/static/js/main.06a42d0d.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see main.06a42d0d.js.LICENSE.txt */ -!function(){var e={3361:function(e,t,n){"use strict";n.d(t,{Z:function(){return ae}});var r=function(){function e(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)===0&&this._insertTag(function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=function(e){if(e.sheet)return e.sheet;for(var t=0;t0?c(k,--y):0,m--,10===b&&(m=1,v--),b}function S(){return b=y2||I(b)>3?"":" "}function D(e,t){for(;--t&&S()&&!(b<48||b>102||b>57&&b<65||b>70&&b<97););return Z(e,T()+(t<6&&32==E()&&32==S()))}function A(e){for(;S();)switch(b){case e:return y;case 34:case 39:34!==e&&39!==e&&A(b);break;case 40:41===e&&A(e);break;case 92:S()}return y}function _(e,t){for(;S()&&e+b!==57&&(e+b!==84||47!==E()););return"/*"+Z(t,y-1)+"*"+a(47===e?e:S())}function L(e){for(;!I(E());)S();return Z(e,y)}var N="-ms-",j="-moz-",F="-webkit-",z="comm",V="rule",B="decl",U="@import",W="@keyframes";function H(e,t){for(var n="",r=h(e),i=0;i0&&f(j)-g&&p(b>32?Q(j+";",r,n,g-1):Q(u(j," ","")+";",r,n,g-2),h);break;case 59:j+=";";default:if(p(N=Y(j,t,n,v,m,i,d,M,P=[],A=[],g),o),123===I)if(0===m)G(j,t,N,N,P,o,g,d,A);else switch(99===y&&110===c(j,3)?100:y){case 100:case 109:case 115:G(e,N,N,r&&p(Y(e,N,N,0,0,i,d,M,i,P=[],g),A),i,A,g,d,r?P:A);break;default:G(j,N,N,N,[""],A,0,d,A)}}v=m=b=0,w=Z=1,M=j="",g=s;break;case 58:g=1+f(j),b=k;default:if(w<1)if(123==I)--w;else if(125==I&&0==w++&&125==C())continue;switch(j+=a(I),I*w){case 38:Z=m>0?1:(j+="\f",-1);break;case 44:d[v++]=(f(j)-1)*Z,Z=1;break;case 64:45===E()&&(j+=R(S())),y=E(),m=g=f(M=j+=L(T())),I++;break;case 45:45===k&&2==f(j)&&(w=0)}}return o}function Y(e,t,n,r,a,o,l,c,f,p,v){for(var m=a-1,g=0===a?o:[""],y=h(g),b=0,k=0,x=0;b0?g[C]+" "+S:u(S,/&\f/g,g[C])))&&(f[x++]=E);return w(e,t,n,0===a?V:c,f,p,v)}function $(e,t,n){return w(e,t,n,z,a(b),d(e,2,-2),0)}function Q(e,t,n,r){return w(e,t,n,B,d(e,0,r),d(e,r+1,-1),r)}var X=function(e,t,n){for(var r=0,i=0;r=i,i=E(),38===r&&12===i&&(t[n]=1),!I(i);)S();return Z(e,y)},J=function(e,t){return P(function(e,t){var n=-1,r=44;do{switch(I(r)){case 0:38===r&&12===E()&&(t[n]=1),e[n]+=X(y-1,t,n);break;case 2:e[n]+=R(r);break;case 4:if(44===r){e[++n]=58===E()?"&\f":"",t[n]=e[n].length;break}default:e[n]+=a(r)}}while(r=S());return e}(M(e),t))},ee=new WeakMap,te=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,n=e.parent,r=e.column===n.column&&e.line===n.line;"rule"!==n.type;)if(!(n=n.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||ee.get(n))&&!r){ee.set(e,!0);for(var i=[],a=J(t,i),o=n.props,s=0,u=0;s6)switch(c(e,t+1)){case 109:if(45!==c(e,t+4))break;case 102:return u(e,/(.+:)(.+)-([^]+)/,"$1"+F+"$2-$3$1"+j+(108==c(e,t+3)?"$3":"$2-$3"))+e;case 115:return~l(e,"stretch")?re(u(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==c(e,t+1))break;case 6444:switch(c(e,f(e)-3-(~l(e,"!important")&&10))){case 107:return u(e,":",":"+F)+e;case 101:return u(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+F+(45===c(e,14)?"inline-":"")+"box$3$1"+F+"$2$3$1"+N+"$2box$3")+e}break;case 5936:switch(c(e,t+11)){case 114:return F+e+N+u(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return F+e+N+u(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return F+e+N+u(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return F+e+N+e+e}return e}var ie=[function(e,t,n,r){if(e.length>-1&&!e.return)switch(e.type){case B:e.return=re(e.value,e.length);break;case W:return H([x(e,{value:u(e.value,"@","@"+F)})],r);case V:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,(function(t){switch(function(e,t){return(e=t.exec(e))?e[0]:e}(t,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return H([x(e,{props:[u(t,/:(read-\w+)/,":"+j+"$1")]})],r);case"::placeholder":return H([x(e,{props:[u(t,/:(plac\w+)/,":"+F+"input-$1")]}),x(e,{props:[u(t,/:(plac\w+)/,":"+j+"$1")]}),x(e,{props:[u(t,/:(plac\w+)/,N+"input-$1")]})],r)}return""}))}}],ae=function(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,(function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))}))}var i=e.stylisPlugins||ie;var a,o,s={},u=[];a=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),(function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;n=4;++r,i-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(i){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)},i={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},a=n(9797),o=/[A-Z]|^ms/g,s=/_EMO_([^_]+?)_([^]*?)_EMO_/g,u=function(e){return 45===e.charCodeAt(1)},l=function(e){return null!=e&&"boolean"!==typeof e},c=(0,a.Z)((function(e){return u(e)?e:e.replace(o,"-$&").toLowerCase()})),d=function(e,t){switch(e){case"animation":case"animationName":if("string"===typeof t)return t.replace(s,(function(e,t,n){return h={name:t,styles:n,next:h},t}))}return 1===i[e]||u(e)||"number"!==typeof t||0===t?t:t+"px"};function f(e,t,n){if(null==n)return"";if(void 0!==n.__emotion_styles)return n;switch(typeof n){case"boolean":return"";case"object":if(1===n.anim)return h={name:n.name,styles:n.styles,next:h},n.name;if(void 0!==n.styles){var r=n.next;if(void 0!==r)for(;void 0!==r;)h={name:r.name,styles:r.styles,next:h},r=r.next;return n.styles+";"}return function(e,t,n){var r="";if(Array.isArray(n))for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:"light")?{main:y[200],light:y[50],dark:y[400]}:{main:y[700],light:y[400],dark:y[800]}}(n),T=e.secondary||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:v[200],light:v[50],dark:v[400]}:{main:v[500],light:v[300],dark:v[700]}}(n),Z=e.error||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:m[500],light:m[300],dark:m[700]}:{main:m[700],light:m[400],dark:m[800]}}(n),I=e.info||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:b[400],light:b[300],dark:b[700]}:{main:b[700],light:b[500],dark:b[900]}}(n),M=e.success||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:k[400],light:k[300],dark:k[700]}:{main:k[800],light:k[500],dark:k[900]}}(n),P=e.warning||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:g[400],light:g[300],dark:g[700]}:{main:"#ed6c02",light:g[500],dark:g[900]}}(n);function R(e){return(0,f.mi)(e,C.text.primary)>=u?C.text.primary:x.text.primary}var O=function(e){var t=e.color,n=e.name,i=e.mainShade,o=void 0===i?500:i,s=e.lightShade,u=void 0===s?300:s,l=e.darkShade,d=void 0===l?700:l;if(!(t=(0,r.Z)({},t)).main&&t[o]&&(t.main=t[o]),!t.hasOwnProperty("main"))throw new Error((0,a.Z)(11,n?" (".concat(n,")"):"",o));if("string"!==typeof t.main)throw new Error((0,a.Z)(12,n?" (".concat(n,")"):"",JSON.stringify(t.main)));return S(t,"light",u,c),S(t,"dark",d,c),t.contrastText||(t.contrastText=R(t.main)),t},D={dark:C,light:x};return(0,o.Z)((0,r.Z)({common:(0,r.Z)({},h),mode:n,primary:O({color:E,name:"primary"}),secondary:O({color:T,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:O({color:Z,name:"error"}),warning:O({color:P,name:"warning"}),info:O({color:I,name:"info"}),success:O({color:M,name:"success"}),grey:p,contrastThreshold:u,getContrastText:R,augmentColor:O,tonalOffset:c},D[n]),d)}var T=["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"];var Z={textTransform:"uppercase"},I='"Roboto", "Helvetica", "Arial", sans-serif';function M(e,t){var n="function"===typeof t?t(e):t,a=n.fontFamily,s=void 0===a?I:a,u=n.fontSize,l=void 0===u?14:u,c=n.fontWeightLight,d=void 0===c?300:c,f=n.fontWeightRegular,h=void 0===f?400:f,p=n.fontWeightMedium,v=void 0===p?500:p,m=n.fontWeightBold,g=void 0===m?700:m,y=n.htmlFontSize,b=void 0===y?16:y,k=n.allVariants,w=n.pxToRem,x=(0,i.Z)(n,T);var C=l/14,S=w||function(e){return"".concat(e/b*C,"rem")},E=function(e,t,n,i,a){return(0,r.Z)({fontFamily:s,fontWeight:e,fontSize:S(t),lineHeight:n},s===I?{letterSpacing:"".concat((o=i/t,Math.round(1e5*o)/1e5),"em")}:{},a,k);var o},M={h1:E(d,96,1.167,-1.5),h2:E(d,60,1.2,-.5),h3:E(h,48,1.167,0),h4:E(h,34,1.235,.25),h5:E(h,24,1.334,0),h6:E(v,20,1.6,.15),subtitle1:E(h,16,1.75,.15),subtitle2:E(v,14,1.57,.1),body1:E(h,16,1.5,.15),body2:E(h,14,1.43,.15),button:E(v,14,1.75,.4,Z),caption:E(h,12,1.66,.4),overline:E(h,12,2.66,1,Z)};return(0,o.Z)((0,r.Z)({htmlFontSize:b,pxToRem:S,fontFamily:s,fontSize:l,fontWeightLight:d,fontWeightRegular:h,fontWeightMedium:v,fontWeightBold:g},M),x,{clone:!1})}var P=.2,R=.14,O=.12;function D(){return["".concat(arguments.length<=0?void 0:arguments[0],"px ").concat(arguments.length<=1?void 0:arguments[1],"px ").concat(arguments.length<=2?void 0:arguments[2],"px ").concat(arguments.length<=3?void 0:arguments[3],"px rgba(0,0,0,").concat(P,")"),"".concat(arguments.length<=4?void 0:arguments[4],"px ").concat(arguments.length<=5?void 0:arguments[5],"px ").concat(arguments.length<=6?void 0:arguments[6],"px ").concat(arguments.length<=7?void 0:arguments[7],"px rgba(0,0,0,").concat(R,")"),"".concat(arguments.length<=8?void 0:arguments[8],"px ").concat(arguments.length<=9?void 0:arguments[9],"px ").concat(arguments.length<=10?void 0:arguments[10],"px ").concat(arguments.length<=11?void 0:arguments[11],"px rgba(0,0,0,").concat(O,")")].join(",")}var A=["none",D(0,2,1,-1,0,1,1,0,0,1,3,0),D(0,3,1,-2,0,2,2,0,0,1,5,0),D(0,3,3,-2,0,3,4,0,0,1,8,0),D(0,2,4,-1,0,4,5,0,0,1,10,0),D(0,3,5,-1,0,5,8,0,0,1,14,0),D(0,3,5,-1,0,6,10,0,0,1,18,0),D(0,4,5,-2,0,7,10,1,0,2,16,1),D(0,5,5,-3,0,8,10,1,0,3,14,2),D(0,5,6,-3,0,9,12,1,0,3,16,2),D(0,6,6,-3,0,10,14,1,0,4,18,3),D(0,6,7,-4,0,11,15,1,0,4,20,3),D(0,7,8,-4,0,12,17,2,0,5,22,4),D(0,7,8,-4,0,13,19,2,0,5,24,4),D(0,7,9,-4,0,14,21,2,0,5,26,4),D(0,8,9,-5,0,15,22,2,0,6,28,5),D(0,8,10,-5,0,16,24,2,0,6,30,5),D(0,8,11,-5,0,17,26,2,0,6,32,5),D(0,9,11,-5,0,18,28,2,0,7,34,6),D(0,9,12,-6,0,19,29,2,0,7,36,6),D(0,10,13,-6,0,20,31,3,0,8,38,7),D(0,10,13,-6,0,21,33,3,0,8,40,7),D(0,10,14,-6,0,22,35,3,0,8,42,7),D(0,11,14,-7,0,23,36,3,0,9,44,8),D(0,11,15,-7,0,24,38,3,0,9,46,8)],_=n(1314),L={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500},N=["breakpoints","mixins","spacing","palette","transitions","typography","shape"];function j(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.mixins,n=void 0===t?{}:t,c=e.palette,f=void 0===c?{}:c,h=e.transitions,p=void 0===h?{}:h,v=e.typography,m=void 0===v?{}:v,g=(0,i.Z)(e,N);if(e.vars)throw new Error((0,a.Z)(18));var y=E(f),b=(0,s.Z)(e),k=(0,o.Z)(b,{mixins:d(b.breakpoints,n),palette:y,shadows:A.slice(),typography:M(y,m),transitions:(0,_.ZP)(p),zIndex:(0,r.Z)({},L)});k=(0,o.Z)(k,g);for(var w=arguments.length,x=new Array(w>1?w-1:0),C=1;C0&&void 0!==arguments[0]?arguments[0]:["all"],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=i.duration,s=void 0===o?n.standard:o,l=i.easing,c=void 0===l?t.easeInOut:l,d=i.delay,f=void 0===d?0:d;(0,r.Z)(i,a);return(Array.isArray(e)?e:[e]).map((function(e){return"".concat(e," ").concat("string"===typeof s?s:u(s)," ").concat(c," ").concat("string"===typeof f?f:u(f))})).join(",")}},e,{easing:t,duration:n})}},6482:function(e,t,n){"use strict";var r=(0,n(1979).Z)();t.Z=r},6934:function(e,t,n){"use strict";n.d(t,{Dz:function(){return o},FO:function(){return a}});var r=n(4046),i=n(6482),a=function(e){return(0,r.x9)(e)&&"classes"!==e},o=r.x9,s=(0,r.ZP)({defaultTheme:i.Z,rootShouldForwardProp:a});t.ZP=s},1402:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var r=n(6083),i=n(6482);function a(e){var t=e.props,n=e.name;return(0,r.Z)({props:t,name:n,defaultTheme:i.Z})}},4036:function(e,t,n){"use strict";var r=n(7312);t.Z=r.Z},4223:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var r=n(7462),i=n(2791),a=n(9259),o=n(184);function s(e,t){function n(n,i){return(0,o.jsx)(a.Z,(0,r.Z)({"data-testid":"".concat(t,"Icon"),ref:i},n,{children:e}))}return n.muiName=a.Z.muiName,i.memo(i.forwardRef(n))}},3199:function(e,t,n){"use strict";var r=n(3981);t.Z=r.Z},4421:function(e,t,n){"use strict";n.r(t),n.d(t,{capitalize:function(){return i.Z},createChainedFunction:function(){return a},createSvgIcon:function(){return o.Z},debounce:function(){return s.Z},deprecatedPropType:function(){return u},isMuiElement:function(){return l.Z},ownerDocument:function(){return c.Z},ownerWindow:function(){return d.Z},requirePropFactory:function(){return f},setRef:function(){return h},unstable_ClassNameGenerator:function(){return w},unstable_useEnhancedEffect:function(){return p.Z},unstable_useId:function(){return v.Z},unsupportedProp:function(){return m},useControlled:function(){return g.Z},useEventCallback:function(){return y.Z},useForkRef:function(){return b.Z},useIsFocusVisible:function(){return k.Z}});var r=n(5902),i=n(4036),a=n(8949).Z,o=n(4223),s=n(3199);var u=function(e,t){return function(){return null}},l=n(9103),c=n(8301),d=n(7602);n(7462);var f=function(e,t){return function(){return null}},h=n(2971).Z,p=n(162),v=n(7384);var m=function(e,t,n,r,i){return null},g=n(8278),y=n(9683),b=n(2071),k=n(3031),w={configure:function(e){r.Z.configure(e)}}},9103:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var r=n(2791);var i=function(e,t){return r.isValidElement(e)&&-1!==t.indexOf(e.type.muiName)}},8301:function(e,t,n){"use strict";var r=n(9723);t.Z=r.Z},7602:function(e,t,n){"use strict";var r=n(7979);t.Z=r.Z},8278:function(e,t,n){"use strict";var r=n(8959);t.Z=r.Z},162:function(e,t,n){"use strict";var r=n(5721);t.Z=r.Z},9683:function(e,t,n){"use strict";var r=n(8956);t.Z=r.Z},2071:function(e,t,n){"use strict";var r=n(7563);t.Z=r.Z},7384:function(e,t,n){"use strict";var r=n(6248);t.Z=r.Z},3031:function(e,t,n){"use strict";n.d(t,{Z:function(){return f}});var r,i=n(2791),a=!0,o=!1,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function u(e){e.metaKey||e.altKey||e.ctrlKey||(a=!0)}function l(){a=!1}function c(){"hidden"===this.visibilityState&&o&&(a=!0)}function d(e){var t=e.target;try{return t.matches(":focus-visible")}catch(n){}return a||function(e){var t=e.type,n=e.tagName;return!("INPUT"!==n||!s[t]||e.readOnly)||"TEXTAREA"===n&&!e.readOnly||!!e.isContentEditable}(t)}var f=function(){var e=i.useCallback((function(e){var t;null!=e&&((t=e.ownerDocument).addEventListener("keydown",u,!0),t.addEventListener("mousedown",l,!0),t.addEventListener("pointerdown",l,!0),t.addEventListener("touchstart",l,!0),t.addEventListener("visibilitychange",c,!0))}),[]),t=i.useRef(!1);return{isFocusVisibleRef:t,onFocus:function(e){return!!d(e)&&(t.current=!0,!0)},onBlur:function(){return!!t.current&&(o=!0,window.clearTimeout(r),r=window.setTimeout((function(){o=!1}),100),t.current=!1,!0)},ref:e}}},8023:function(e,t,n){"use strict";var r=n(2791).createContext(null);t.Z=r},9598:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var r=n(2791),i=n(8023);function a(){return r.useContext(i.Z)}},2421:function(e,t,n){"use strict";n.d(t,{ZP:function(){return k},Co:function(){return w}});var r=n(2791),i=n(7462),a=n(9797),o=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,s=(0,a.Z)((function(e){return o.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91})),u=n(9886),l=n(5438),c=n(9140),d=n(2561),f=s,h=function(e){return"theme"!==e},p=function(e){return"string"===typeof e&&e.charCodeAt(0)>96?f:h},v=function(e,t,n){var r;if(t){var i=t.shouldForwardProp;r=e.__emotion_forwardProp&&i?function(t){return e.__emotion_forwardProp(t)&&i(t)}:i}return"function"!==typeof r&&n&&(r=e.__emotion_forwardProp),r},m=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;(0,l.hC)(t,n,r);(0,d.L)((function(){return(0,l.My)(t,n,r)}));return null},g=function e(t,n){var a,o,s=t.__emotion_real===t,d=s&&t.__emotion_base||t;void 0!==n&&(a=n.label,o=n.target);var f=v(t,n,s),h=f||p(d),g=!h("as");return function(){var y=arguments,b=s&&void 0!==t.__emotion_styles?t.__emotion_styles.slice(0):[];if(void 0!==a&&b.push("label:"+a+";"),null==y[0]||void 0===y[0].raw)b.push.apply(b,y);else{0,b.push(y[0][0]);for(var k=y.length,w=1;w0&&void 0!==arguments[0]?arguments[0]:{};return(null==(e=t.keys)?void 0:e.reduce((function(e,n){return e[t.up(n)]={},e}),{}))||{}}function u(e,t){return e.reduce((function(e,t){var n=e[t];return(!n||0===Object.keys(n).length)&&delete e[t],e}),t)}function l(e){for(var t=s(e),n=arguments.length,i=new Array(n>1?n-1:0),a=1;a1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return Math.min(Math.max(t,e),n)}function a(e){if(e.type)return e;if("#"===e.charAt(0))return a(function(e){e=e.slice(1);var t=new RegExp(".{1,".concat(e.length>=6?2:1,"}"),"g"),n=e.match(t);return n&&1===n[0].length&&(n=n.map((function(e){return e+e}))),n?"rgb".concat(4===n.length?"a":"","(").concat(n.map((function(e,t){return t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3})).join(", "),")"):""}(e));var t=e.indexOf("("),n=e.substring(0,t);if(-1===["rgb","rgba","hsl","hsla","color"].indexOf(n))throw new Error((0,r.Z)(9,e));var i,o=e.substring(t+1,e.length-1);if("color"===n){if(i=(o=o.split(" ")).shift(),4===o.length&&"/"===o[3].charAt(0)&&(o[3]=o[3].slice(1)),-1===["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].indexOf(i))throw new Error((0,r.Z)(10,i))}else o=o.split(",");return{type:n,values:o=o.map((function(e){return parseFloat(e)})),colorSpace:i}}function o(e){var t=e.type,n=e.colorSpace,r=e.values;return-1!==t.indexOf("rgb")?r=r.map((function(e,t){return t<3?parseInt(e,10):e})):-1!==t.indexOf("hsl")&&(r[1]="".concat(r[1],"%"),r[2]="".concat(r[2],"%")),r=-1!==t.indexOf("color")?"".concat(n," ").concat(r.join(" ")):"".concat(r.join(", ")),"".concat(t,"(").concat(r,")")}function s(e){var t="hsl"===(e=a(e)).type||"hsla"===e.type?a(function(e){var t=(e=a(e)).values,n=t[0],r=t[1]/100,i=t[2]/100,s=r*Math.min(i,1-i),u=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(e+n/30)%12;return i-s*Math.max(Math.min(t-3,9-t,1),-1)},l="rgb",c=[Math.round(255*u(0)),Math.round(255*u(8)),Math.round(255*u(4))];return"hsla"===e.type&&(l+="a",c.push(t[3])),o({type:l,values:c})}(e)).values:e.values;return t=t.map((function(t){return"color"!==e.type&&(t/=255),t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)})),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function u(e,t){var n=s(e),r=s(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}function l(e,t){return e=a(e),t=i(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]="/".concat(t):e.values[3]=t,o(e)}function c(e,t){if(e=a(e),t=i(t),-1!==e.type.indexOf("hsl"))e.values[2]*=1-t;else if(-1!==e.type.indexOf("rgb")||-1!==e.type.indexOf("color"))for(var n=0;n<3;n+=1)e.values[n]*=1-t;return o(e)}function d(e,t){if(e=a(e),t=i(t),-1!==e.type.indexOf("hsl"))e.values[2]+=(100-e.values[2])*t;else if(-1!==e.type.indexOf("rgb"))for(var n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;else if(-1!==e.type.indexOf("color"))for(var r=0;r<3;r+=1)e.values[r]+=(1-e.values[r])*t;return o(e)}},4046:function(e,t,n){"use strict";n.d(t,{ZP:function(){return C},x9:function(){return w}});var r=n(3433),i=n(9439),a=n(3366),o=n(7462),s=n(2421),u=n(5080),l=n(7312),c=["variant"];function d(e){return 0===e.length}function f(e){var t=e.variant,n=(0,a.Z)(e,c),r=t||"";return Object.keys(n).sort().forEach((function(t){r+="color"===t?d(r)?e[t]:(0,l.Z)(e[t]):"".concat(d(r)?t:(0,l.Z)(t)).concat((0,l.Z)(e[t].toString()))})),r}var h=n(104),p=["name","slot","skipVariantsResolver","skipSx","overridesResolver"],v=["theme"],m=["theme"];function g(e){return 0===Object.keys(e).length}var y=function(e,t){return t.components&&t.components[e]&&t.components[e].styleOverrides?t.components[e].styleOverrides:null},b=function(e,t){var n=[];t&&t.components&&t.components[e]&&t.components[e].variants&&(n=t.components[e].variants);var r={};return n.forEach((function(e){var t=f(e.props);r[t]=e.style})),r},k=function(e,t,n,r){var i,a,o=e.ownerState,s=void 0===o?{}:o,u=[],l=null==n||null==(i=n.components)||null==(a=i[r])?void 0:a.variants;return l&&l.forEach((function(n){var r=!0;Object.keys(n.props).forEach((function(t){s[t]!==n.props[t]&&e[t]!==n.props[t]&&(r=!1)})),r&&u.push(t[f(n.props)])})),u};function w(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}var x=(0,u.Z)();function C(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.defaultTheme,n=void 0===t?x:t,u=e.rootShouldForwardProp,l=void 0===u?w:u,c=e.slotShouldForwardProp,d=void 0===c?w:c,f=function(e){var t=g(e.theme)?n:e.theme;return(0,h.Z)((0,o.Z)({},e,{theme:t}))};return f.__mui_systemSx=!0,function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,s.Co)(e,(function(e){return e.filter((function(e){return!(null!=e&&e.__mui_systemSx)}))}));var u=t.name,c=t.slot,h=t.skipVariantsResolver,x=t.skipSx,C=t.overridesResolver,S=(0,a.Z)(t,p),E=void 0!==h?h:c&&"Root"!==c||!1,T=x||!1;var Z=w;"Root"===c?Z=l:c?Z=d:function(e){return"string"===typeof e&&e.charCodeAt(0)>96}(e)&&(Z=void 0);var I=(0,s.ZP)(e,(0,o.Z)({shouldForwardProp:Z,label:undefined},S)),M=function(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),l=1;l0){var p=new Array(h).fill("");(d=[].concat((0,r.Z)(e),(0,r.Z)(p))).raw=[].concat((0,r.Z)(e.raw),(0,r.Z)(p))}else"function"===typeof e&&e.__emotion_real!==e&&(d=function(t){var r=t.theme,i=(0,a.Z)(t,m);return e((0,o.Z)({theme:g(r)?n:r},i))});return I.apply(void 0,[d].concat((0,r.Z)(c)))};return I.withConfig&&(M.withConfig=I.withConfig),M}}},5080:function(e,t,n){"use strict";n.d(t,{Z:function(){return p}});var r=n(7462),i=n(3366),a=n(2466),o=n(4942),s=["values","unit","step"],u=function(e){var t=Object.keys(e).map((function(t){return{key:t,val:e[t]}}))||[];return t.sort((function(e,t){return e.val-t.val})),t.reduce((function(e,t){return(0,r.Z)({},e,(0,o.Z)({},t.key,t.val))}),{})};var l={borderRadius:4},c=n(5682);var d=n(104),f=n(7416),h=["breakpoints","palette","spacing","shape"];var p=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.breakpoints,n=void 0===t?{}:t,o=e.palette,p=void 0===o?{}:o,v=e.spacing,m=e.shape,g=void 0===m?{}:m,y=(0,i.Z)(e,h),b=function(e){var t=e.values,n=void 0===t?{xs:0,sm:600,md:900,lg:1200,xl:1536}:t,a=e.unit,o=void 0===a?"px":a,l=e.step,c=void 0===l?5:l,d=(0,i.Z)(e,s),f=u(n),h=Object.keys(f);function p(e){var t="number"===typeof n[e]?n[e]:e;return"@media (min-width:".concat(t).concat(o,")")}function v(e){var t="number"===typeof n[e]?n[e]:e;return"@media (max-width:".concat(t-c/100).concat(o,")")}function m(e,t){var r=h.indexOf(t);return"@media (min-width:".concat("number"===typeof n[e]?n[e]:e).concat(o,") and ")+"(max-width:".concat((-1!==r&&"number"===typeof n[h[r]]?n[h[r]]:t)-c/100).concat(o,")")}return(0,r.Z)({keys:h,values:f,up:p,down:v,between:m,only:function(e){return h.indexOf(e)+10&&void 0!==arguments[0]?arguments[0]:8;if(e.mui)return e;var t=(0,c.hB)({spacing:e}),n=function(){for(var e=arguments.length,n=new Array(e),r=0;r1?x-1:0),S=1;S2){if(!l[e])return[e];e=l[e]}var t=e.split(""),n=(0,r.Z)(t,2),i=n[0],a=n[1],o=s[i],c=u[a]||"";return Array.isArray(c)?c.map((function(e){return o+e})):[o+c]})),d=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],f=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"],h=[].concat(d,f);function p(e,t,n,r){var i,o=null!=(i=(0,a.DW)(e,t,!1))?i:n;return"number"===typeof o?function(e){return"string"===typeof e?e:o*e}:Array.isArray(o)?function(e){return"string"===typeof e?e:o[e]}:"function"===typeof o?o:function(){}}function v(e){return p(e,"spacing",8)}function m(e,t){if("string"===typeof t||null==t)return t;var n=e(Math.abs(t));return t>=0?n:"number"===typeof n?-n:"-".concat(n)}function g(e,t,n,r){if(-1===t.indexOf(n))return null;var a=function(e,t){return function(n){return e.reduce((function(e,r){return e[r]=m(t,n),e}),{})}}(c(n),r),o=e[n];return(0,i.k9)(e,o,a)}function y(e,t){var n=v(e.theme);return Object.keys(e).map((function(r){return g(e,t,r,n)})).reduce(o.Z,{})}function b(e){return y(e,d)}function k(e){return y(e,f)}function w(e){return y(e,h)}b.propTypes={},b.filterProps=d,k.propTypes={},k.filterProps=f,w.propTypes={},w.filterProps=h},8529:function(e,t,n){"use strict";n.d(t,{DW:function(){return o},Jq:function(){return s}});var r=n(4942),i=n(7312),a=n(1184);function o(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!t||"string"!==typeof t)return null;if(e&&e.vars&&n){var r="vars.".concat(t).split(".").reduce((function(e,t){return e&&e[t]?e[t]:null}),e);if(null!=r)return r}return t.split(".").reduce((function(e,t){return e&&null!=e[t]?e[t]:null}),e)}function s(e,t,n){var r,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:n;return r="function"===typeof e?e(n):Array.isArray(e)?e[n]||i:o(e,n)||i,t&&(r=t(r,i,e)),r}t.ZP=function(e){var t=e.prop,n=e.cssProperty,u=void 0===n?e.prop:n,l=e.themeKey,c=e.transform,d=function(e){if(null==e[t])return null;var n=e[t],d=o(e.theme,l)||{};return(0,a.k9)(e,n,(function(e){var n=s(d,c,e);return e===n&&"string"===typeof e&&(n=s(d,c,"".concat(t).concat("default"===e?"":(0,i.Z)(e)),e)),!1===u?n:(0,r.Z)({},u,n)}))};return d.propTypes={},d.filterProps=[t],d}},7416:function(e,t,n){"use strict";n.d(t,{Z:function(){return R}});var r=n(5682),i=n(8529),a=n(8247);var o=function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&void 0!==arguments[0]?arguments[0]:a;return(0,i.Z)(e)}},3073:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var r=n(5735);function i(e){var t=e.theme,n=e.name,i=e.props;return t&&t.components&&t.components[n]&&t.components[n].defaultProps?(0,r.Z)(t.components[n].defaultProps,i):i}},6083:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var r=n(3073),i=n(418);function a(e){var t=e.props,n=e.name,a=e.defaultTheme,o=(0,i.Z)(a);return(0,r.Z)({theme:o,name:n,props:t})}},9120:function(e,t,n){"use strict";var r=n(9598);t.Z=function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=(0,r.Z)();return n&&(e=n,0!==Object.keys(e).length)?n:t}},5902:function(e,t){"use strict";var n=function(e){return e},r=function(){var e=n;return{configure:function(t){e=t},generate:function(t){return e(t)},reset:function(){e=n}}}();t.Z=r},7312:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var r=n(6189);function i(e){if("string"!==typeof e)throw new Error((0,r.Z)(7));return e.charAt(0).toUpperCase()+e.slice(1)}},4419:function(e,t,n){"use strict";function r(e,t,n){var r={};return Object.keys(e).forEach((function(i){r[i]=e[i].reduce((function(e,r){return r&&(e.push(t(r)),n&&n[r]&&e.push(n[r])),e}),[]).join(" ")})),r}n.d(t,{Z:function(){return r}})},8949:function(e,t,n){"use strict";function r(){for(var e=arguments.length,t=new Array(e),n=0;n1&&void 0!==arguments[1]?arguments[1]:166;function r(){for(var r=this,i=arguments.length,a=new Array(i),o=0;o2&&void 0!==arguments[2]?arguments[2]:{clone:!0},s=n.clone?(0,r.Z)({},e):e;return i(e)&&i(t)&&Object.keys(t).forEach((function(r){"__proto__"!==r&&(i(t[r])&&r in e&&i(e[r])?s[r]=o(e[r],t[r],n):n.clone?s[r]=i(t[r])?a(t[r]):t[r]:s[r]=t[r])})),s}},6189:function(e,t,n){"use strict";function r(e){for(var t="https://mui.com/production-error/?code="+e,n=1;n2&&void 0!==arguments[2]?arguments[2]:"Mui",a=i[t];return a?"".concat(n,"-").concat(a):"".concat(r.Z.generate(e),"-").concat(t)}},5878:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var r=n(1217);function i(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Mui",i={};return t.forEach((function(t){i[t]=(0,r.Z)(e,t,n)})),i}},9723:function(e,t,n){"use strict";function r(e){return e&&e.ownerDocument||document}n.d(t,{Z:function(){return r}})},7979:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var r=n(9723);function i(e){return(0,r.Z)(e).defaultView||window}},5735:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var r=n(7462);function i(e,t){var n=(0,r.Z)({},t);return Object.keys(e).forEach((function(a){if(a.toString().match(/^(components|slots)$/))n[a]=(0,r.Z)({},e[a],n[a]);else if(a.toString().match(/^(componentsProps|slotProps)$/)){var o=e[a]||{},s=t[a];n[a]={},s&&Object.keys(s)?o&&Object.keys(o)?(n[a]=(0,r.Z)({},s),Object.keys(o).forEach((function(e){n[a][e]=i(o[e],s[e])}))):n[a]=s:n[a]=o}else void 0===n[a]&&(n[a]=e[a])})),n}},2971:function(e,t,n){"use strict";function r(e,t){"function"===typeof e?e(t):e&&(e.current=t)}n.d(t,{Z:function(){return r}})},8959:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var r=n(9439),i=n(2791);function a(e){var t=e.controlled,n=e.default,a=(e.name,e.state,i.useRef(void 0!==t).current),o=i.useState(n),s=(0,r.Z)(o,2),u=s[0],l=s[1];return[a?t:u,i.useCallback((function(e){a||l(e)}),[])]}},5721:function(e,t,n){"use strict";var r=n(2791),i="undefined"!==typeof window?r.useLayoutEffect:r.useEffect;t.Z=i},8956:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var r=n(2791),i=n(5721);function a(e){var t=r.useRef(e);return(0,i.Z)((function(){t.current=e})),r.useCallback((function(){return t.current.apply(void 0,arguments)}),[])}},7563:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var r=n(2791),i=n(2971);function a(){for(var e=arguments.length,t=new Array(e),n=0;n=t?e:""+Array(t+1-r.length).join(n)+e},y={s:g,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),i=n%60;return(t<=0?"+":"-")+g(r,2,"0")+":"+g(i,2,"0")},m:function e(t,n){if(t.date()1)return e(o[0])}else{var s=t.name;k[s]=t,i=s}return!r&&i&&(b=i),i||!r&&b},C=function(e,t){if(w(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new E(n)},S=y;S.l=x,S.i=w,S.w=function(e,t){return C(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var E=function(){function m(e){this.$L=x(e.locale,null,!0),this.parse(e)}var g=m.prototype;return g.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(S.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(p);if(r){var i=r[2]-1||0,a=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,a)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,a)}}return new Date(t)}(e),this.$x=e.x||{},this.init()},g.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},g.$utils=function(){return S},g.isValid=function(){return!(this.$d.toString()===h)},g.isSame=function(e,t){var n=C(e);return this.startOf(t)<=n&&n<=this.endOf(t)},g.isAfter=function(e,t){return C(e)68?1900:2e3)},s=function(e){return function(t){this[e]=+t}},u=[/[+-]\d\d:?(\d\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if("Z"===e)return 0;var t=e.match(/([+-]|\d\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:"+"===t[0]?-n:n}(e)}],l=function(e){var t=a[e];return t&&(t.indexOf?t:t.s.concat(t.f))},c=function(e,t){var n,r=a.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?"pm":"PM");return n},d={A:[i,function(e){this.afternoon=c(e,!1)}],a:[i,function(e){this.afternoon=c(e,!0)}],S:[/\d/,function(e){this.milliseconds=100*+e}],SS:[n,function(e){this.milliseconds=10*+e}],SSS:[/\d{3}/,function(e){this.milliseconds=+e}],s:[r,s("seconds")],ss:[r,s("seconds")],m:[r,s("minutes")],mm:[r,s("minutes")],H:[r,s("hours")],h:[r,s("hours")],HH:[r,s("hours")],hh:[r,s("hours")],D:[r,s("day")],DD:[n,s("day")],Do:[i,function(e){var t=a.ordinal,n=e.match(/\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\[|\]/g,"")===e&&(this.day=r)}],M:[r,s("month")],MM:[n,s("month")],MMM:[i,function(e){var t=l("months"),n=(l("monthsShort")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(e){var t=l("months").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\d+/,s("year")],YY:[n,function(e){this.year=o(e)}],YYYY:[/\d{4}/,s("year")],Z:u,ZZ:u};function f(n){var r,i;r=n,i=a&&a.formats;for(var o=(n=r.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var a=r&&r.toUpperCase();return n||i[r]||e[r]||i[a].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),s=o.length,u=0;u-1)return new Date(("X"===t?1e3:1)*e);var r=f(t)(e),i=r.year,a=r.month,o=r.day,s=r.hours,u=r.minutes,l=r.seconds,c=r.milliseconds,d=r.zone,h=new Date,p=o||(i||a?1:h.getDate()),v=i||h.getFullYear(),m=0;i&&!a||(m=a>0?a-1:h.getMonth());var g=s||0,y=u||0,b=l||0,k=c||0;return d?new Date(Date.UTC(v,m,p,g,y,b,k+60*d.offset*1e3)):n?new Date(Date.UTC(v,m,p,g,y,b,k)):new Date(v,m,p,g,y,b,k)}catch(e){return new Date("")}}(t,s,r),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),c&&t!=this.format(s)&&(this.$d=new Date("")),a={}}else if(s instanceof Array)for(var h=s.length,p=1;p<=h;p+=1){o[1]=s[p-1];var v=n.apply(this,o);if(v.isValid()){this.$d=v.$d,this.$L=v.$L,this.init();break}p===h&&(this.$d=new Date(""))}else i.call(this,e)}}}()},6818:function(e){e.exports=function(){"use strict";return function(e,t,n){t.prototype.isBetween=function(e,t,r,i){var a=n(e),o=n(t),s="("===(i=i||"()")[0],u=")"===i[1];return(s?this.isAfter(a,r):!this.isBefore(a,r))&&(u?this.isBefore(o,r):!this.isAfter(o,r))||(s?this.isBefore(a,r):!this.isAfter(a,r))&&(u?this.isAfter(o,r):!this.isBefore(o,r))}}}()},9893:function(e){e.exports=function(){"use strict";var e={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};return function(t,n,r){var i=n.prototype,a=i.format;r.en.formats=e,i.format=function(t){void 0===t&&(t="YYYY-MM-DDTHH:mm:ssZ");var n=this.$locale().formats,r=function(t,n){return t.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,r,i){var a=i&&i.toUpperCase();return r||n[i]||e[i]||n[a].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))}(t,void 0===n?{}:n);return a.call(this,r)}}}()},2110:function(e,t,n){"use strict";var r=n(8309),i={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},o={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function u(e){return r.isMemo(e)?o:s[e.$$typeof]||i}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=o;var l=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,h=Object.getPrototypeOf,p=Object.prototype;e.exports=function e(t,n,r){if("string"!==typeof n){if(p){var i=h(n);i&&i!==p&&e(t,i,r)}var o=c(n);d&&(o=o.concat(d(n)));for(var s=u(t),v=u(n),m=0;m