try{self[`workbox:core:7.4.0`]&&_()}catch{}var e=(e,...t)=>{let n=e;return t.length>0&&(n+=` :: ${JSON.stringify(t)}`),n},t=class extends Error{constructor(t,n){let r=e(t,n);super(r),this.name=t,this.details=n}},n=new Set;function r(e){n.add(e)}var i={googleAnalytics:`googleAnalytics`,precache:`precache-v2`,prefix:`workbox`,runtime:`runtime`,suffix:typeof registration<`u`?registration.scope:``},a=e=>[i.prefix,e,i.suffix].filter(e=>e&&e.length>0).join(`-`),o=e=>{for(let t of Object.keys(i))e(t)},s={updateDetails:e=>{o(t=>{typeof e[t]==`string`&&(i[t]=e[t])})},getGoogleAnalyticsName:e=>e||a(i.googleAnalytics),getPrecacheName:e=>e||a(i.precache),getPrefix:()=>i.prefix,getRuntimeName:e=>e||a(i.runtime),getSuffix:()=>i.suffix};function c(e,t){let n=new URL(e);for(let e of t)n.searchParams.delete(e);return n.href}async function l(e,t,n,r){let i=c(t.url,n);if(t.url===i)return e.match(t,r);let a=Object.assign(Object.assign({},r),{ignoreSearch:!0}),o=await e.keys(t,a);for(let t of o)if(i===c(t.url,n))return e.match(t,r)}var u;function d(){if(u===void 0){let e=new Response(``);if(`body`in e)try{new Response(e.body),u=!0}catch{u=!1}u=!1}return u}function f(e){e.then(()=>{})}var p=class{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}};async function ee(){for(let e of n)await e()}var te=e=>new URL(String(e),location.href).href.replace(RegExp(`^${location.origin}`),``);function m(e){return new Promise(t=>setTimeout(t,e))}function h(e,t){let n=t();return e.waitUntil(n),n}async function g(e,n){let r=null;if(e.url&&(r=new URL(e.url).origin),r!==self.location.origin)throw new t(`cross-origin-copy-response`,{origin:r});let i=e.clone(),a={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},o=n?n(a):a,s=d()?i.body:await i.blob();return new Response(s,o)}function v(){self.addEventListener(`activate`,()=>self.clients.claim())}var ne=(e,t)=>t.some(t=>e instanceof t),re,ie;function ae(){return re||=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]}function oe(){return ie||=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey]}var y=new WeakMap,b=new WeakMap,x=new WeakMap,S=new WeakMap,C=new WeakMap;function w(e){let t=new Promise((t,n)=>{let r=()=>{e.removeEventListener(`success`,i),e.removeEventListener(`error`,a)},i=()=>{t(E(e.result)),r()},a=()=>{n(e.error),r()};e.addEventListener(`success`,i),e.addEventListener(`error`,a)});return t.then(t=>{t instanceof IDBCursor&&y.set(t,e)}).catch(()=>{}),C.set(t,e),t}function se(e){if(b.has(e))return;let t=new Promise((t,n)=>{let r=()=>{e.removeEventListener(`complete`,i),e.removeEventListener(`error`,a),e.removeEventListener(`abort`,a)},i=()=>{t(),r()},a=()=>{n(e.error||new DOMException(`AbortError`,`AbortError`)),r()};e.addEventListener(`complete`,i),e.addEventListener(`error`,a),e.addEventListener(`abort`,a)});b.set(e,t)}var T={get(e,t,n){if(e instanceof IDBTransaction){if(t===`done`)return b.get(e);if(t===`objectStoreNames`)return e.objectStoreNames||x.get(e);if(t===`store`)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return E(e[t])},set(e,t,n){return e[t]=n,!0},has(e,t){return e instanceof IDBTransaction&&(t===`done`||t===`store`)?!0:t in e}};function ce(e){T=e(T)}function le(e){return e===IDBDatabase.prototype.transaction&&!(`objectStoreNames`in IDBTransaction.prototype)?function(t,...n){let r=e.call(D(this),t,...n);return x.set(r,t.sort?t.sort():[t]),E(r)}:oe().includes(e)?function(...t){return e.apply(D(this),t),E(y.get(this))}:function(...t){return E(e.apply(D(this),t))}}function ue(e){return typeof e==`function`?le(e):(e instanceof IDBTransaction&&se(e),ne(e,ae())?new Proxy(e,T):e)}function E(e){if(e instanceof IDBRequest)return w(e);if(S.has(e))return S.get(e);let t=ue(e);return t!==e&&(S.set(e,t),C.set(t,e)),t}var D=e=>C.get(e);function O(e,t,{blocked:n,upgrade:r,blocking:i,terminated:a}={}){let o=indexedDB.open(e,t),s=E(o);return r&&o.addEventListener(`upgradeneeded`,e=>{r(E(o.result),e.oldVersion,e.newVersion,E(o.transaction),e)}),n&&o.addEventListener(`blocked`,e=>n(e.oldVersion,e.newVersion,e)),s.then(e=>{a&&e.addEventListener(`close`,()=>a()),i&&e.addEventListener(`versionchange`,e=>i(e.oldVersion,e.newVersion,e))}).catch(()=>{}),s}function k(e,{blocked:t}={}){let n=indexedDB.deleteDatabase(e);return t&&n.addEventListener(`blocked`,e=>t(e.oldVersion,e)),E(n).then(()=>void 0)}var A=[`get`,`getKey`,`getAll`,`getAllKeys`,`count`],j=[`put`,`add`,`delete`,`clear`],M=new Map;function N(e,t){if(!(e instanceof IDBDatabase&&!(t in e)&&typeof t==`string`))return;if(M.get(t))return M.get(t);let n=t.replace(/FromIndex$/,``),r=t!==n,i=j.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||A.includes(n)))return;let a=async function(e,...t){let a=this.transaction(e,i?`readwrite`:`readonly`),o=a.store;return r&&(o=o.index(t.shift())),(await Promise.all([o[n](...t),i&&a.done]))[0]};return M.set(t,a),a}ce(e=>({...e,get:(t,n,r)=>N(t,n)||e.get(t,n,r),has:(t,n)=>!!N(t,n)||e.has(t,n)}));try{self[`workbox:expiration:7.4.0`]&&_()}catch{}var P=`workbox-expiration`,F=`cache-entries`,I=e=>{let t=new URL(e,location.href);return t.hash=``,t.href},L=class{constructor(e){this._db=null,this._cacheName=e}_upgradeDb(e){let t=e.createObjectStore(F,{keyPath:`id`});t.createIndex(`cacheName`,`cacheName`,{unique:!1}),t.createIndex(`timestamp`,`timestamp`,{unique:!1})}_upgradeDbAndDeleteOldDbs(e){this._upgradeDb(e),this._cacheName&&k(this._cacheName)}async setTimestamp(e,t){e=I(e);let n={url:e,timestamp:t,cacheName:this._cacheName,id:this._getId(e)},r=(await this.getDb()).transaction(F,`readwrite`,{durability:`relaxed`});await r.store.put(n),await r.done}async getTimestamp(e){return(await(await this.getDb()).get(F,this._getId(e)))?.timestamp}async expireEntries(e,t){let n=await this.getDb(),r=await n.transaction(F).store.index(`timestamp`).openCursor(null,`prev`),i=[],a=0;for(;r;){let n=r.value;n.cacheName===this._cacheName&&(e&&n.timestamp=t?i.push(r.value):a++),r=await r.continue()}let o=[];for(let e of i)await n.delete(F,e.id),o.push(e.url);return o}_getId(e){return this._cacheName+`|`+I(e)}async getDb(){return this._db||=await O(P,1,{upgrade:this._upgradeDbAndDeleteOldDbs.bind(this)}),this._db}},R=class{constructor(e,t={}){this._isRunning=!1,this._rerunRequested=!1,this._maxEntries=t.maxEntries,this._maxAgeSeconds=t.maxAgeSeconds,this._matchOptions=t.matchOptions,this._cacheName=e,this._timestampModel=new L(e)}async expireEntries(){if(this._isRunning){this._rerunRequested=!0;return}this._isRunning=!0;let e=this._maxAgeSeconds?Date.now()-this._maxAgeSeconds*1e3:0,t=await this._timestampModel.expireEntries(e,this._maxEntries),n=await self.caches.open(this._cacheName);for(let e of t)await n.delete(e,this._matchOptions);this._isRunning=!1,this._rerunRequested&&(this._rerunRequested=!1,f(this.expireEntries()))}async updateTimestamp(e){await this._timestampModel.setTimestamp(e,Date.now())}async isURLExpired(e){if(this._maxAgeSeconds){let t=await this._timestampModel.getTimestamp(e),n=Date.now()-this._maxAgeSeconds*1e3;return t===void 0?!0:t{if(!r)return null;let i=this._isResponseDateFresh(r),a=this._getCacheExpiration(n);f(a.expireEntries());let o=a.updateTimestamp(t.url);if(e)try{e.waitUntil(o)}catch{}return i?r:null},this.cacheDidUpdate=async({cacheName:e,request:t})=>{let n=this._getCacheExpiration(e);await n.updateTimestamp(t.url),await n.expireEntries()},this._config=e,this._maxAgeSeconds=e.maxAgeSeconds,this._cacheExpirations=new Map,e.purgeOnQuotaError&&r(()=>this.deleteCacheAndMetadata())}_getCacheExpiration(e){if(e===s.getRuntimeName())throw new t(`expire-custom-caches-only`);let n=this._cacheExpirations.get(e);return n||(n=new R(e,this._config),this._cacheExpirations.set(e,n)),n}_isResponseDateFresh(e){if(!this._maxAgeSeconds)return!0;let t=this._getDateHeaderTimestamp(e);return t===null?!0:t>=Date.now()-this._maxAgeSeconds*1e3}_getDateHeaderTimestamp(e){if(!e.headers.has(`date`))return null;let t=e.headers.get(`date`),n=new Date(t).getTime();return isNaN(n)?null:n}async deleteCacheAndMetadata(){for(let[e,t]of this._cacheExpirations)await self.caches.delete(e),await t.delete();this._cacheExpirations=new Map}};try{self[`workbox:precaching:7.4.0`]&&_()}catch{}var B=`__WB_REVISION__`;function V(e){if(!e)throw new t(`add-to-cache-list-unexpected-type`,{entry:e});if(typeof e==`string`){let t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}let{revision:n,url:r}=e;if(!r)throw new t(`add-to-cache-list-unexpected-type`,{entry:e});if(!n){let e=new URL(r,location.href);return{cacheKey:e.href,url:e.href}}let i=new URL(r,location.href),a=new URL(r,location.href);return i.searchParams.set(B,n),{cacheKey:i.href,url:a.href}}var H=class{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:e,state:t})=>{t&&(t.originalRequest=e)},this.cachedResponseWillBeUsed=async({event:e,state:t,cachedResponse:n})=>{if(e.type===`install`&&t&&t.originalRequest&&t.originalRequest instanceof Request){let e=t.originalRequest.url;n?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return n}}},U=class{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:e,params:t})=>{let n=t?.cacheKey||this._precacheController.getCacheKeyForURL(e.url);return n?new Request(n,{headers:e.headers}):e},this._precacheController=e}};try{self[`workbox:strategies:7.4.0`]&&_()}catch{}function W(e){return typeof e==`string`?new Request(e):e}var de=class{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new p,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(let e of this._plugins)this._pluginStateMap.set(e,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){let{event:n}=this,r=W(e);if(r.mode===`navigate`&&n instanceof FetchEvent&&n.preloadResponse){let e=await n.preloadResponse;if(e)return e}let i=this.hasCallback(`fetchDidFail`)?r.clone():null;try{for(let e of this.iterateCallbacks(`requestWillFetch`))r=await e({request:r.clone(),event:n})}catch(e){if(e instanceof Error)throw new t(`plugin-error-request-will-fetch`,{thrownErrorMessage:e.message})}let a=r.clone();try{let e;e=await fetch(r,r.mode===`navigate`?void 0:this._strategy.fetchOptions);for(let t of this.iterateCallbacks(`fetchDidSucceed`))e=await t({event:n,request:a,response:e});return e}catch(e){throw i&&await this.runCallbacks(`fetchDidFail`,{error:e,event:n,originalRequest:i.clone(),request:a.clone()}),e}}async fetchAndCachePut(e){let t=await this.fetch(e),n=t.clone();return this.waitUntil(this.cachePut(e,n)),t}async cacheMatch(e){let t=W(e),n,{cacheName:r,matchOptions:i}=this._strategy,a=await this.getCacheKey(t,`read`),o=Object.assign(Object.assign({},i),{cacheName:r});n=await caches.match(a,o);for(let e of this.iterateCallbacks(`cachedResponseWillBeUsed`))n=await e({cacheName:r,matchOptions:i,cachedResponse:n,request:a,event:this.event})||void 0;return n}async cachePut(e,n){let r=W(e);await m(0);let i=await this.getCacheKey(r,`write`);if(!n)throw new t(`cache-put-with-no-response`,{url:te(i.url)});let a=await this._ensureResponseSafeToCache(n);if(!a)return!1;let{cacheName:o,matchOptions:s}=this._strategy,c=await self.caches.open(o),u=this.hasCallback(`cacheDidUpdate`),d=u?await l(c,i.clone(),[`__WB_REVISION__`],s):null;try{await c.put(i,u?a.clone():a)}catch(e){if(e instanceof Error)throw e.name===`QuotaExceededError`&&await ee(),e}for(let e of this.iterateCallbacks(`cacheDidUpdate`))await e({cacheName:o,oldResponse:d,newResponse:a.clone(),request:i,event:this.event});return!0}async getCacheKey(e,t){let n=`${e.url} | ${t}`;if(!this._cacheKeys[n]){let r=e;for(let e of this.iterateCallbacks(`cacheKeyWillBeUsed`))r=W(await e({mode:t,request:r,event:this.event,params:this.params}));this._cacheKeys[n]=r}return this._cacheKeys[n]}hasCallback(e){for(let t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(let n of this.iterateCallbacks(e))await n(t)}*iterateCallbacks(e){for(let t of this._strategy.plugins)if(typeof t[e]==`function`){let n=this._pluginStateMap.get(t);yield r=>{let i=Object.assign(Object.assign({},r),{state:n});return t[e](i)}}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){for(;this._extendLifetimePromises.length;){let e=this._extendLifetimePromises.splice(0),t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason}}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,n=!1;for(let e of this.iterateCallbacks(`cacheWillUpdate`))if(t=await e({request:this.request,response:t,event:this.event})||void 0,n=!0,!t)break;return n||t&&t.status!==200&&(t=void 0),t}},G=class{constructor(e={}){this.cacheName=s.getRuntimeName(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){let[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});let t=e.event,n=typeof e.request==`string`?new Request(e.request):e.request,r=`params`in e?e.params:void 0,i=new de(this,{event:t,request:n,params:r}),a=this._getResponse(i,n,t);return[a,this._awaitComplete(a,i,n,t)]}async _getResponse(e,n,r){await e.runCallbacks(`handlerWillStart`,{event:r,request:n});let i;try{if(i=await this._handle(n,e),!i||i.type===`error`)throw new t(`no-response`,{url:n.url})}catch(t){if(t instanceof Error){for(let a of e.iterateCallbacks(`handlerDidError`))if(i=await a({error:t,event:r,request:n}),i)break}if(!i)throw t}for(let t of e.iterateCallbacks(`handlerWillRespond`))i=await t({event:r,request:n,response:i});return i}async _awaitComplete(e,t,n,r){let i,a;try{i=await e}catch{}try{await t.runCallbacks(`handlerDidRespond`,{event:r,request:n,response:i}),await t.doneWaiting()}catch(e){e instanceof Error&&(a=e)}if(await t.runCallbacks(`handlerDidComplete`,{event:r,request:n,response:i,error:a}),t.destroy(),a)throw a}},K=class e extends G{constructor(t={}){t.cacheName=s.getPrecacheName(t.cacheName),super(t),this._fallbackToNetwork=t.fallbackToNetwork!==!1,this.plugins.push(e.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){return await t.cacheMatch(e)||(t.event&&t.event.type===`install`?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,n){let r,i=n.params||{};if(this._fallbackToNetwork){let t=i.integrity,a=e.integrity,o=!a||a===t;r=await n.fetch(new Request(e,{integrity:e.mode===`no-cors`?void 0:a||t})),t&&o&&e.mode!==`no-cors`&&(this._useDefaultCacheabilityPluginIfNeeded(),await n.cachePut(e,r.clone()))}else throw new t(`missing-precache-entry`,{cacheName:this.cacheName,url:e.url});return r}async _handleInstall(e,n){this._useDefaultCacheabilityPluginIfNeeded();let r=await n.fetch(e);if(!await n.cachePut(e,r.clone()))throw new t(`bad-precaching-response`,{url:e.url,status:r.status});return r}_useDefaultCacheabilityPluginIfNeeded(){let t=null,n=0;for(let[r,i]of this.plugins.entries())i!==e.copyRedirectedCacheableResponsesPlugin&&(i===e.defaultPrecacheCacheabilityPlugin&&(t=r),i.cacheWillUpdate&&n++);n===0?this.plugins.push(e.defaultPrecacheCacheabilityPlugin):n>1&&t!==null&&this.plugins.splice(t,1)}};K.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate({response:e}){return!e||e.status>=400?null:e}},K.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate({response:e}){return e.redirected?await g(e):e}};var fe=class{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:n=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new K({cacheName:s.getPrecacheName(e),plugins:[...t,new U({precacheController:this})],fallbackToNetwork:n}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||=(self.addEventListener(`install`,this.install),self.addEventListener(`activate`,this.activate),!0)}addToCacheList(e){let n=[];for(let r of e){typeof r==`string`?n.push(r):r&&r.revision===void 0&&n.push(r.url);let{cacheKey:e,url:i}=V(r),a=typeof r!=`string`&&r.revision?`reload`:`default`;if(this._urlsToCacheKeys.has(i)&&this._urlsToCacheKeys.get(i)!==e)throw new t(`add-to-cache-list-conflicting-entries`,{firstEntry:this._urlsToCacheKeys.get(i),secondEntry:e});if(typeof r!=`string`&&r.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==r.integrity)throw new t(`add-to-cache-list-conflicting-integrities`,{url:i});this._cacheKeysToIntegrities.set(e,r.integrity)}if(this._urlsToCacheKeys.set(i,e),this._urlsToCacheModes.set(i,a),n.length>0){let e=`Workbox is precaching URLs without revision info: ${n.join(`, `)}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(e)}}}install(e){return h(e,async()=>{let t=new H;this.strategy.plugins.push(t);for(let[t,n]of this._urlsToCacheKeys){let r=this._cacheKeysToIntegrities.get(n),i=this._urlsToCacheModes.get(t),a=new Request(t,{integrity:r,cache:i,credentials:`same-origin`});await Promise.all(this.strategy.handleAll({params:{cacheKey:n},request:a,event:e}))}let{updatedURLs:n,notUpdatedURLs:r}=t;return{updatedURLs:n,notUpdatedURLs:r}})}activate(e){return h(e,async()=>{let e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),n=new Set(this._urlsToCacheKeys.values()),r=[];for(let i of t)n.has(i.url)||(await e.delete(i),r.push(i.url));return{deletedURLs:r}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){let t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){let t=e instanceof Request?e.url:e,n=this.getCacheKeyForURL(t);if(n)return(await self.caches.open(this.strategy.cacheName)).match(n)}createHandlerBoundToURL(e){let n=this.getCacheKeyForURL(e);if(!n)throw new t(`non-precached-url`,{url:e});return t=>(t.request=new Request(e),t.params=Object.assign({cacheKey:n},t.params),this.strategy.handle(t))}},q,J=()=>(q||=new fe,q);try{self[`workbox:routing:7.4.0`]&&_()}catch{}var Y=e=>e&&typeof e==`object`?e:{handle:e},X=class{constructor(e,t,n=`GET`){this.handler=Y(t),this.match=e,this.method=n}setCatchHandler(e){this.catchHandler=Y(e)}},pe=class extends X{constructor(e,t,n){super(({url:t})=>{let n=e.exec(t.href);if(n&&!(t.origin!==location.origin&&n.index!==0))return n.slice(1)},t,n)}},me=class{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener(`fetch`,(e=>{let{request:t}=e,n=this.handleRequest({request:t,event:e});n&&e.respondWith(n)}))}addCacheListener(){self.addEventListener(`message`,(e=>{if(e.data&&e.data.type===`CACHE_URLS`){let{payload:t}=e.data,n=Promise.all(t.urlsToCache.map(t=>{typeof t==`string`&&(t=[t]);let n=new Request(...t);return this.handleRequest({request:n,event:e})}));e.waitUntil(n),e.ports&&e.ports[0]&&n.then(()=>e.ports[0].postMessage(!0))}}))}handleRequest({request:e,event:t}){let n=new URL(e.url,location.href);if(!n.protocol.startsWith(`http`))return;let r=n.origin===location.origin,{params:i,route:a}=this.findMatchingRoute({event:t,request:e,sameOrigin:r,url:n}),o=a&&a.handler,s=e.method;if(!o&&this._defaultHandlerMap.has(s)&&(o=this._defaultHandlerMap.get(s)),!o)return;let c;try{c=o.handle({url:n,request:e,event:t,params:i})}catch(e){c=Promise.reject(e)}let l=a&&a.catchHandler;return c instanceof Promise&&(this._catchHandler||l)&&(c=c.catch(async r=>{if(l)try{return await l.handle({url:n,request:e,event:t,params:i})}catch(e){e instanceof Error&&(r=e)}if(this._catchHandler)return this._catchHandler.handle({url:n,request:e,event:t});throw r})),c}findMatchingRoute({url:e,sameOrigin:t,request:n,event:r}){let i=this._routes.get(n.method)||[];for(let a of i){let i,o=a.match({url:e,sameOrigin:t,request:n,event:r});if(o)return i=o,(Array.isArray(i)&&i.length===0||o.constructor===Object&&Object.keys(o).length===0||typeof o==`boolean`)&&(i=void 0),{route:a,params:i}}return{}}setDefaultHandler(e,t=`GET`){this._defaultHandlerMap.set(t,Y(e))}setCatchHandler(e){this._catchHandler=Y(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new t(`unregister-route-but-not-found-with-method`,{method:e.method});let n=this._routes.get(e.method).indexOf(e);if(n>-1)this._routes.get(e.method).splice(n,1);else throw new t(`unregister-route-route-not-registered`)}},Z,he=()=>(Z||(Z=new me,Z.addFetchListener(),Z.addCacheListener()),Z);function Q(e,n,r){let i;if(typeof e==`string`){let t=new URL(e,location.href);i=new X(({url:e})=>e.href===t.href,n,r)}else if(e instanceof RegExp)i=new pe(e,n,r);else if(typeof e==`function`)i=new X(e,n,r);else if(e instanceof X)i=e;else throw new t(`unsupported-route-type`,{moduleName:`workbox-routing`,funcName:`registerRoute`,paramName:`capture`});return he().registerRoute(i),i}function ge(e,t=[]){for(let n of[...e.searchParams.keys()])t.some(e=>e.test(n))&&e.searchParams.delete(n);return e}function*$(e,{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:n=`index.html`,cleanURLs:r=!0,urlManipulation:i}={}){let a=new URL(e,location.href);a.hash=``,yield a.href;let o=ge(a,t);if(yield o.href,n&&o.pathname.endsWith(`/`)){let e=new URL(o.href);e.pathname+=n,yield e.href}if(r){let e=new URL(o.href);e.pathname+=`.html`,yield e.href}if(i){let e=i({url:a});for(let t of e)yield t.href}}var _e=class extends X{constructor(e,t){super(({request:n})=>{let r=e.getURLsToCacheKeys();for(let i of $(n.url,t)){let t=r.get(i);if(t)return{cacheKey:t,integrity:e.getIntegrityForCacheKey(t)}}},e.strategy)}};function ve(e){Q(new _e(J(),e))}function ye(e){return J().createHandlerBoundToURL(e)}function be(e){J().precache(e)}function xe(e,t){be(e),ve(t)}var Se={cacheWillUpdate:async({response:e})=>e.status===200||e.status===0?e:null},Ce=class extends G{constructor(e={}){super(e),this.plugins.some(e=>`cacheWillUpdate`in e)||this.plugins.unshift(Se)}async _handle(e,n){let r=n.fetchAndCachePut(e).catch(()=>{});n.waitUntil(r);let i=await n.cacheMatch(e),a;if(!i)try{i=await r}catch(e){e instanceof Error&&(a=e)}if(!i)throw new t(`no-response`,{url:e.url,error:a});return i}},we={name:`shlink-web-client`,description:`A React-based progressive web application for shlink`,private:!1,homepage:`/shlink-web-client/develop`,repository:`https://github.com/shlinkio/shlink-web-client`,license:`MIT`,type:`module`,scripts:{lint:`eslint src test config/test *.config.{js,ts}`,"lint:fix":`node --run lint -- --fix`,types:`tsc`,start:`vite serve --host=0.0.0.0`,preview:`vite preview --host=0.0.0.0`,build:`node --run types && vite build && node scripts/replace-version.mjs`,"build:dist":`node --run build && node scripts/create-dist-file.mjs`,test:`vitest run --run`,"test:watch":`vitest --watch`,"test:ci":`node --run test -- --coverage`,"test:verbose":`node --run test -- --verbose`},dependencies:{"@fortawesome/fontawesome-free":`^7.2.0`,"@fortawesome/fontawesome-svg-core":`^7.2.0`,"@fortawesome/free-brands-svg-icons":`^7.2.0`,"@fortawesome/free-regular-svg-icons":`^7.2.0`,"@fortawesome/free-solid-svg-icons":`^7.2.0`,"@fortawesome/react-fontawesome":`^3.3.1`,"@json2csv/plainjs":`^7.0.6`,"@reduxjs/toolkit":`^2.11.2`,"@shlinkio/data-manipulation":`^1.0.4`,"@shlinkio/shlink-frontend-kit":`^1.4.0`,"@shlinkio/shlink-js-sdk":`^3.1.0`,"@shlinkio/shlink-web-component":`^0.18.0`,"@vitest/browser-playwright":`^4.1.5`,bottlejs:`^2.0.1`,clsx:`^2.1.1`,"compare-versions":`^6.1.1`,csvtojson:`^2.0.14`,"date-fns":`^4.1.0`,react:`^19.2.6`,"react-dom":`^19.2.6`,"react-external-link":`^2.6.1`,"react-redux":`^9.2.0`,"react-router":`^7.15.0`,"redux-localstorage-simple":`^2.5.1`,"workbox-core":`^7.4.0`,"workbox-expiration":`^7.4.0`,"workbox-precaching":`^7.4.0`,"workbox-routing":`^7.4.0`,"workbox-strategies":`^7.4.0`},devDependencies:{"@shlinkio/eslint-config-js-coding-standard":`~3.7.0`,"@stylistic/eslint-plugin":`^5.7.1`,"@tailwindcss/vite":`^4.3.0`,"@testing-library/jest-dom":`^6.9.1`,"@testing-library/react":`^16.3.2`,"@testing-library/user-event":`^14.6.1`,"@total-typescript/shoehorn":`^0.1.2`,"@types/node":`^25.6.2`,"@types/react":`^19.2.14`,"@types/react-dom":`^19.2.3`,"@vitejs/plugin-react":`^6.0.1`,"@vitest/browser":`^4.0.3`,"@vitest/coverage-v8":`^4.1.2`,"adm-zip":`^0.5.17`,"axe-core":`^4.11.4`,chalk:`^5.6.2`,eslint:`^9.39.2`,"eslint-plugin-import":`^2.32.0`,"eslint-plugin-jsx-a11y":`^6.10.2`,"eslint-plugin-react":`^7.37.5`,"eslint-plugin-react-compiler":`^19.0.0-beta-714736e-20250131`,"eslint-plugin-react-hooks":`^7.0.1`,"eslint-plugin-simple-import-sort":`^12.1.1`,history:`^5.3.0`,playwright:`^1.59.1`,tailwindcss:`^4.1.3`,typescript:`^5.9.3`,"typescript-eslint":`^8.54.0`,vite:`^8.0.11`,"vite-plugin-pwa":`^1.3.0`,vitest:`^4.0.3`},browserslist:[`>0.2%`,`not dead`,`not ie <= 11`,`not op_mini all`]};v(),xe([{"revision":"471a52e666028eac29af1ddf21dcfd29","url":"index.html"},{"revision":null,"url":"assets/index-D1ngJPTo.js"},{"revision":null,"url":"assets/index-CIZO-cL5.css"},{"revision":"f3e729bb644bebe1dcffadcbba68f1ff","url":"icons/icon-1024x1024.png"},{"revision":"cd508d134aa805268381ead58279489b","url":"icons/icon-114x114.png"},{"revision":"0812cd0c539ec3bc3880201497ef5439","url":"icons/icon-120x120.png"},{"revision":"db11b5c2a48fbba615b39792e40f4c87","url":"icons/icon-128x128.png"},{"revision":"eb6d6cdd19cac779b6d7ac97463b888e","url":"icons/icon-144x144.png"},{"revision":"6088b31c860949672f7df75fccf9a9ba","url":"icons/icon-150x150.png"},{"revision":"e6f72b1eaa19a7c204b01f5d432b8d12","url":"icons/icon-152x152.png"},{"revision":"0e45616d9a2ada37a8cc9f27a670ca31","url":"icons/icon-160x160.png"},{"revision":"d1006b686a7ab98a5620b415792a33a6","url":"icons/icon-167x167.png"},{"revision":"d42b11e07581fa319271ae71f7093811","url":"icons/icon-16x16.png"},{"revision":"78f75b82e4ce73706359d19cb87c3b00","url":"icons/icon-180x180.png"},{"revision":"a536b5cee1e4a64fd54fc4be7b77efcf","url":"icons/icon-192x192.png"},{"revision":"9e994d55a0485b6bbaad7e63b13a0ef5","url":"icons/icon-196x196.png"},{"revision":"786e390718d25939056e8ef85e264d8a","url":"icons/icon-228x228.png"},{"revision":"556d9b9e027c4411745496790753cd73","url":"icons/icon-24x24.png"},{"revision":"7642a0a1530b73e8818bceceb3d3e7e2","url":"icons/icon-256x256.png"},{"revision":"06d7a4a92102470e88880d42920c7549","url":"icons/icon-310x310.png"},{"revision":"7fcbe3894492fb7f62a317ddd99a28d5","url":"icons/icon-32x32.png"},{"revision":"5a8a86ced62f17062326ae85d5ff352f","url":"icons/icon-384x384.png"},{"revision":"45146cbf5554683533638cb5d8b017ae","url":"icons/icon-40x40.png"},{"revision":"903d05ccefb480c98cd4cf2e484bd663","url":"icons/icon-48x48.png"},{"revision":"f25bdd85d754463f79f8ef441a035933","url":"icons/icon-512x512.png"},{"revision":"60f05c206db3360a51bef6105de2b995","url":"icons/icon-60x60.png"},{"revision":"492762bfada55a219fc687f2549ed05a","url":"icons/icon-64x64.png"},{"revision":"faa08e0d1df851afc410e939cc7bcbc4","url":"icons/icon-72x72.png"},{"revision":"6ae3db0007861108aa3db4e35450fe16","url":"icons/icon-76x76.png"},{"revision":"a5602a4acdef243f27b9acc94f49e9c2","url":"icons/icon-96x96.png"},{"revision":"dffe757e2951a5ff31046221e23be8e6","url":"manifest.json"}]);var Te=RegExp(`/[^/?]+\\.[^/]+$`);Q(({request:e,url:t})=>!(e.mode!==`navigate`||t.pathname.startsWith(`/_`)||t.pathname.match(Te)),ye(`${we.homepage}/index.html`)),Q(({url:e})=>e.origin===self.location.origin&&e.pathname.endsWith(`.png`),new Ce({cacheName:`images`,plugins:[new z({maxEntries:50})]})),self.addEventListener(`message`,e=>{e.data&&e.data.type===`SKIP_WAITING`&&self.skipWaiting()});