1/// <reference no-default-lib="true"/> 2/// <reference lib="esnext" /> 3/// <reference lib="webworker" /> 4 5// replaced in process-service-worker.js 6const VERSION = 'e6b80a92'; 7 8const PRECACHE = `precache-${VERSION}`; 9const RUNTIME = `runtime-${VERSION}`; 10 11const FILE_WHITELIST = /.*\.(woff|woff2|webp)$/; 12 13// A list of local resources we always want to be cached. 14const PRECACHE_URLS = [ 15 '/favicon.ico', 16 '/site.webmanifest', 17 '/android-chrome-192x192.png', 18 '/_next/static/chunks/0-uep9dxb7obp.js','/_next/static/chunks/0-w0uj17hf5w2.css','/_next/static/chunks/01jy_9ice6cbn.js','/_next/static/chunks/05yahk1u37okx.js','/_next/static/chunks/06cv6zmtqssdm.js','/_next/static/chunks/0b45prlzdj--w.css','/_next/static/chunks/0cz1d0mv5g_q7.js','/_next/static/chunks/0eqptb8vqnyp_.js','/_next/static/chunks/0fuhe_a_nft0h.js','/_next/static/chunks/0kb1m-jtf4ya_.css','/_next/static/chunks/0l61pd443zg6h.js','/_next/static/chunks/0m24t1qk1l2vg.js','/_next/static/chunks/0msxr90chbbfm.js','/_next/static/chunks/0nzq0pg96wsxf.js','/_next/static/chunks/0ppdadw1aza2v.css','/_next/static/chunks/0qg86ooiq5sb5.css','/_next/static/chunks/0qyggj26xcivo.css','/_next/static/chunks/0rm27ft1w_d75.css','/_next/static/chunks/0xabw_fpcgn-t.css','/_next/static/chunks/0yppd1pshiu7l.js','/_next/static/chunks/0z34oh2kov875.js','/_next/static/chunks/0z_okp0i2xdkd.js','/_next/static/chunks/0zw3jw8_7k660.js','/_next/static/chunks/10vs4u9ome1si.js','/_next/static/chunks/1_h0lhl9oo1-1.js','/_next/static/chunks/1axc6rqcrw47z.js','/_next/static/chunks/1davaz-j0gi7_.js','/_next/static/chunks/1ddqez3s38m6y.js','/_next/static/chunks/1fh8-kqglo6_i.css','/_next/static/chunks/1gqkxlohz9oa6.js','/_next/static/chunks/1i2kjdd947qu4.css','/_next/static/chunks/1ihepgnv0z0f6.js','/_next/static/chunks/1j9rb9xi1hkvh.js','/_next/static/chunks/1k2knzocwtz92.js','/_next/static/chunks/1ksp47uc67hdz.css','/_next/static/chunks/1kt6ximg4keew.js','/_next/static/chunks/1mvps63h7-p20.js','/_next/static/chunks/1p9n2orzf4o43.js','/_next/static/chunks/1q-0jam7598ti.js','/_next/static/chunks/1s_f7x7czvg9m.js','/_next/static/chunks/1xbj3dxg8yfqb.js','/_next/static/chunks/1y3s70uq-9bxq.css','/_next/static/chunks/1zkxq8s6-7s2-.js','/_next/static/chunks/2-2rsel4m_s6p.css','/_next/static/chunks/21r9078hjmp74.js','/_next/static/chunks/2481xdt83bya2.js','/_next/static/chunks/25akvh8i8xkjb.js','/_next/static/chunks/25v19jlr-uvke.js','/_next/static/chunks/2a31h1_7qb0f3.js','/_next/static/chunks/2b9ol0uzptcau.css','/_next/static/chunks/2domk_zbzxkui.css','/_next/static/chunks/2duti4p5--itz.js','/_next/static/chunks/2ek7jvk2t69-l.js','/_next/static/chunks/2ezrg7xgtk48b.js','/_next/static/chunks/2fdb81dub-0v2.js','/_next/static/chunks/2gnuycrbuk43-.js','/_next/static/chunks/2i7iqi9g4x6mn.css','/_next/static/chunks/2jmf5qi_ssh1e.css','/_next/static/chunks/2m990hxb0j8m_.js','/_next/static/chunks/2nwlt5hai_5ov.js','/_next/static/chunks/2orl-5qutkaqu.css','/_next/static/chunks/2p7mumw_drvoy.css','/_next/static/chunks/2qcxruvqnvqym.css','/_next/static/chunks/2t3s45kx219tt.js','/_next/static/chunks/2u92d4gy7m4om.css','/_next/static/chunks/2v5hw_mw9wggq.js','/_next/static/chunks/2vfg5wcpfnb-j.js','/_next/static/chunks/2wt90w-_ob76x.js','/_next/static/chunks/2yhqqrszl-k9m.css','/_next/static/chunks/2yx2bshebr_o6.js','/_next/static/chunks/3-ezcs9q3bemy.js','/_next/static/chunks/31bnmc2rzfwz9.js','/_next/static/chunks/31q1lt1-s19hl.js','/_next/static/chunks/32ugovpc5shaz.css','/_next/static/chunks/33eyuqee5r0ve.js','/_next/static/chunks/34jxf_ucwkhz5.js','/_next/static/chunks/36_weklvgfpi4.js','/_next/static/chunks/380p6uoqnw3ia.js','/_next/static/chunks/39g_i06azpov6.css','/_next/static/chunks/3b4a0prjhorxh.js','/_next/static/chunks/3c04j1y3vog1q.css','/_next/static/chunks/3dceioc3687f4.css','/_next/static/chunks/3eauo370j09ts.js','/_next/static/chunks/3eyqq-l9kjp2w.js','/_next/static/chunks/3f8dc0grutz_o.js','/_next/static/chunks/3g3y0pb-lvvah.js','/_next/static/chunks/3g9h1gcgacjlj.js','/_next/static/chunks/3h5_hsbun9alc.js','/_next/static/chunks/3id_2ubx_x12m.css','/_next/static/chunks/3k3h8a5cs4dg8.js','/_next/static/chunks/3kgeizlcjb4ya.css','/_next/static/chunks/3kmniz6di69z_.js','/_next/static/chunks/3nwe5efrrqdxk.js','/_next/static/chunks/3pb1kkjke_91-.js','/_next/static/chunks/3q79lmo7517-w.js','/_next/static/chunks/3r_8ghc6ld8sv.js','/_next/static/chunks/3uesybnfvncbz.css','/_next/static/chunks/3wtlyrcav0a9w.js','/_next/static/chunks/3
18yda6os6a8qx7.js','/_next/static/chunks/41xeewtyqx7wl.js','/_next/static/chunks/44konl5zlikzz.css','/_next/static/chunks/turbopack-3jhlqgd5iu3oi.js','/_next/static/media/aeryn.0rpwmcqvgz-fv.svg','/_next/static/media/africa-map.156gu4efa7fre.svg','/_next/static/media/airtel.25exyesksqf-a.svg','/_next/static/media/algarTelecom.0ikmgoet80o4s.svg','/_next/static/media/arelion.2aisxhtjwvzzc.svg','/_next/static/media/att.0na9b5kthi-aq.svg','/_next/static/media/avast.0cifx5y64ttlt.svg','/_next/static/media/banijay.1-snfp5_b1v_i.svg','/_next/static/media/banijay.378z7w4ctj-o8.svg','/_next/static/media/bell.2-kcd6g92o6px.svg','/_next/static/media/bigLinux.0-n1l8poj89wb.svg','/_next/static/media/biglobe.02vqi6lu71wst.svg','/_next/static/media/blender.1aj4vlggddf0i.svg','/_next/static/media/blender.1blqp7b_2cha7.svg','/_next/static/media/bt.1_ok8r77bobun.svg','/_next/static/media/cachyOs.1wl05hxt1p79_.svg','/_next/static/media/capterra.12jpmolqyp3-k.svg','/_next/static/media/cdn77.05e7ckk5de-13.svg','/_next/static/media/cdn77.16nxa5h2x1djv.svg','/_next/static/media/cdn77.2ks2l-8t7xxo3.svg','/_next/static/media/centos.1bhkcysajyyez.svg','/_next/static/media/charter.3_6rl4pg04rqu.svg','/_next/static/media/circles.3rw96d1ywpmbf.svg','/_next/static/media/claro.0y5wlr4m2yf_t.svg','/_next/static/media/cloudstack.1ngtan714ko40.svg','/_next/static/media/cogent.2rc1v6tpmdxp1.svg','/_next/static/media/comcast.2ufmmvpfgzspn.svg','/_next/static/media/coreBackBone.06zhtmaxqi3v9.svg','/_next/static/media/cox.1ff8schghai6r.svg','/_next/static/media/crozdesk.23-irkj3j0j91.svg','/_next/static/media/cta-lines.09v5ehjvsdjh2.svg','/_next/static/media/cwBusiness.3t6qt124u9a-a.svg','/_next/static/media/datapacket.293i6umnucl8-.svg','/_next/static/media/datapacket.3kl8-fky9u0ld.svg','/_next/static/media/dathost.2c5ja0mu8na_o.svg','/_next/static/media/deepin.43blu6fo0gb_9.svg','/_next/static/media/docomo.3ywqk7lonh3wr.svg','/_next/static/media/edge-computing.2_7w3-3ckh5zh.svg','/_next/static/media/esa.09ypwj31s1s8i.svg','/_next/static/media/esa.2z77rerov4v91.svg','/_next/static/media/eset.2-sar_oll2nkn.svg','/_next/static/media/eset.33yo5mpa18aiz.svg','/_next/static/media/esl.2kdwoi48mnqw7.svg','/_next/static/media/esl.2ur0vkbymb64g.svg','/_next/static/media/execution.1pv5iblkd2egs.svg','/_next/static/media/fedora.1l7gi6oh062hx.svg','/_next/static/media/floNetworks.0mr7lq-xh5-zu.svg','/_next/static/media/g2crowd.1yexrundaryzd.svg','/_next/static/media/gaijin.2_c1_if6rdd-7.svg','/_next/static/media/gentooLinux.1yy0bawryv2_d.svg','/_next/static/media/globe.382p6tnvtj626.svg','/_next/static/media/globenet.0tsmfylrwbx-m.svg','/_next/static/media/gnome.0imzoav_40_ri.svg','/_next/static/media/gnome.0s_jaflgh6ki4.svg','/_next/static/media/google.1galmpb8mtyo0.svg','/_next/static/media/gtt.35zgo5tlws0i0.svg','/_next/static/media/iij.0hcvopuxjge9s.svg','/_next/static/media/infrastructure.2hmqzk326b2bs.svg','/_next/static/media/jupiter.1znpa767osimx.svg','/_next/static/media/jupitercom.1ii605ytmv2h5.svg','/_next/static/media/kddi.2pamy7n8phxxl.svg','/_next/static/media/kde.3ubn4_b73ppvi.svg','/_next/static/media/kt.0--5zrvtrforr.svg','/_next/static/media/letsEncrypt.1dmea97l6bu3t.svg','/_next/static/media/libertyGlobal.1ojzla18-n_uy.svg','/_next/static/media/lineBottom.3pi9wmo-jel8t.svg','/_next/static/media/lineTop.0sm8xj011jl61.svg','/_next/static/media/lumen.2vek3o_d_njl6.svg','/_next/static/media/macaroniOs.34s-5bx213x-v.svg','/_next/static/media/manjaro.09oiyksvwhszm.svg','/_next/static/media/manjaro.3h6m9t3v1vd6g.svg','/_next/static/media/map.1gha3wvo554zt.svg','/_next/static/media/map.1ibyjveh71t5e.svg','/_next/static/media/map.3h2kpjni8s_7x.svg','/_next/static/media/map.43m5drs_rsu6e.svg','/_next/static/media/masomo.39wfs2qft_we4.svg','/_next/static/media/meo.1861_f77f9tzn.svg','/_next/static/media/microOrm.32whj3ji66rga.svg','/_next/static/media/network.0in39mynh5t_6.svg','/_next/static/media/nodecraft.3i2yxlptr5cfb.svg','/_next/static/media/ntt.296tvrfu_er68.svg','/_next/static/media/nttCommunications.3-bm8ktv89yae.svg','/_next/static/media/nttDocomo.3di06s1wdrgqc.svg','/_next/static/media/orange.0bizatetbzufa.svg','/_next/static/media/pccw.2bjygb59kjw10.svg','/_next/static/media/phpMyAdmin.0zt-omiqmi-1l.svg','/_next/static/media/rakuten.16g5v4wj31g_8.svg','/_next/static/media/rating.24xikj46izz93.svg','/_next/static/media/reliance.0connqqs-hm5v.svg','/_next/static/media/rogers.3cpizvu6u_erj.svg','/_next/static/media/seaborn.2fh54yd-0w_2p.svg','/_next/static/media/shaw.1r-3oqf1gdbuw.svg','/_next/static/media/skTelecom.2dp_07_jmnhjh.svg','/_next/static/media/sky.18p8enh6ltlvj.svg','/_next/static/media/sleepiest.205uws2v1s65z.svg','/_next/static/media/softbank.32dq4qs-mbejz.svg','/_next/static/media/sparkle.2wq0danonuhda.svg','/_next/static/media/sport1.2gbu8439ip7vs.svg','/_next/static/media/sport1.2h75rn2tcajty.svg','/_next/static/media/starz.2l3ucw41qo-qq.svg','/_next/static/media/swisscom.2i1x2du97zqlk.svg','/_next/static/media/tata.08h3tmeoy_z8m.svg','/_next/static/media/telstra.30x15488i8b11.svg','/_next/static/media/telus.0lmj_t_7zs6wk.svg','/_next/static/media/telxius.0rzzhd6edyc8x.svg','/_next/static/media/tmobile.2vc5zstymegu1.svg','/_next/static/media/totalplay.0nr1zbli_3-8o.svg','/_next/static/media/udemy.0tcx2euj-snr7.svg','/_next/static/media/udemy.2awd1i7k2zem7.svg','/_next/static/media/videotron.293kf8c1csoyi.svg','/_next/static/media/vodafone.3z4j1z4qncys8.svg','/_next/static/media/workflow.3_oh8ieoorl3c.svg', 19]; 20 21const LOG_ENABLED = false;
22const log = (message, color) => { 23 if (!LOG_ENABLED) { 24 return; 25 } 26 27 console.log( 28 '%c[SW] %s', 29 `background: ${color}; color: white; font-weight: bold; padding: 2px 6px; border-radius: 3px;`, 30 message, 31 ); 32}; 33 34// The install handler takes care of precaching the resources we always need. 35self.addEventListener('install', event => { 36 log(`ð Service Worker v${VERSION} installing...`, '#2196F3'); 37 event.waitUntil( 38 caches 39 .open(PRECACHE) 40 .then(cache => { 41 log(`ð¦ Precache opened: ${PRECACHE}`, '#4CAF50'); 42 return cache.addAll(PRECACHE_URLS); 43 }) 44 .then(() => { 45 log(`â Precache complete (${PRECACHE_URLS.length} files)`, '#4CAF50'); 46 return self.skipWaiting(); 47 }), 48 ); 49}); 50 51// The activate handler takes care of cleaning up old caches. 52self.addEventListener('activate', event => { 53 const currentCaches = [PRECACHE, RUNTIME]; 54 55 log(`ð Service Worker activating...`, '#FF9800'); 56 log(`ð Current caches: ${currentCaches.join(', ')}`, '#9C27B0'); 57 58 event.waitUntil( 59 caches 60 .keys() 61 .then(cacheNames => { 62 const cachesToDelete = cacheNames.filter(cacheName => !currentCaches.includes(cacheName)); 63 if (cachesToDelete.length > 0) { 64 log(`ðï¸ Found ${cachesToDelete.length} old caches to delete:`, '#f44336'); 65 cachesToDelete.forEach(cache => log(` - ${cache}`, '#f44336')); 66 } else { 67 log(`⨠No old caches found`, '#4CAF50'); 68 } 69 return cachesToDelete; 70 }) 71 .then(cachesToDelete => { 72 return Promise.all( 73 cachesToDelete.map(cacheToDelete => { 74 log(`ðï¸ Deleting old cache: ${cacheToDelete}`, '#f44336'); 75 return caches.delete(cacheToDelete); 76 }), 77 ); 78 }) 79 .then(() => { 80 log(`â Service Worker activated and ready`, '#4CAF50'); 81 return self.clients.claim(); 82 }), 83 ); 84}); 85 86// The fetch handler serves responses for same-origin resources from a cache. 87// If no response is found, it populates the runtime cache with the response 88// from the network before returning it to the page. 89self.addEventListener('fetch', event => { 90 if (event.request.method !== 'GET') { 91 log(`âï¸ Non-GET request: ${event.request.method} ${event.request.url}`, '#607D8B'); 92 return; 93 } 94 95 const fetchUrl = event.request.url; 96 const url = new URL(fetchUrl); 97 98 // request.url is absolute, so API requests must be matched on the pathname. 99 if (url.pathname.startsWith('/api')) { 100 log(`âï¸ API request: ${event.request.url}`, '#607D8B'); 101 return; 102 } 103 104 // Don't try to handle anything besides http(s) (e.g. browser extension request or data URIs) 105 if (!url.protocol.startsWith('http')) { 106 log(`âï¸ Non-HTTP request: ${event.request.url}`, '#607D8B'); 107 return; 108 } 109 110 // Do not handle navigation requests 111 if (event.request.mode === 'navigate') { 112 log(`âï¸ Navigation request: ${event.request.url}`, '#607D8B'); 113 return; 114 } 115 116 // Skip cross-origin requests, like those for Google Analytics. 117 if (event.request.url.startsWith(self.location.origin)) { 118 event.respondWith( 119 caches.match(event.request).then(async cachedResponse => { 120 if (cachedResponse) { 121 log(`ð¦ Cache HIT: ${event.request.url}`, '#4CAF50'); 122 return cachedResponse; 123 } 124 125 log(`ð Cache MISS: ${event.request.url}`, '#FF9800'); 126 127 return caches.open(RUNTIME).then(cache => { 128 return fetch(event.request) 129 .then(response => { 130 if ( 131 /\./.test(url.pathname) && 132 !/\.html?$/.test(url.pathname) && 133 response.headers.get('content-type')?.startsWith('text/html') 134 ) { 135 log( 136 `Not in cache, tried network and received unexpected HTML - triggering page reload: ${url.pathname}`, 137 '#f44336', 138 ); 139 return response; 140 } 141 142 if (response.type === 'opaque') {
143 log(`â ï¸ Opaque response (CORS): ${fetchUrl}`, '#FF9800'); 144 return response; 145 } 146 147 if (response.status !== 200) { 148 log(`â ï¸ Non-200 response (${response.status}): ${fetchUrl}`, '#FF9800'); 149 return response; 150 } 151 152 if (!FILE_WHITELIST.test(url.pathname)) { 153 log(`ð File type not cached: ${fetchUrl}`, '#607D8B'); 154 return response; 155 } 156 157 log(`ð¾ Caching response: ${fetchUrl}`, '#9C27B0'); 158 // Put a copy of the response in the runtime cache. 159 return cache.put(event.request, response.clone()).then(() => { 160 return response; 161 }); 162 }) 163 .catch(err => { 164 log(`â Network error: ${fetchUrl}`, '#f44336'); 165 }); 166 }); 167 }), 168 ); 169 } 170});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.