var snapVersion = '7.1.3', cacheName = 'snap-pwa', filesToCache = [ 'snap.html', // program 'src/morphic.js', 'src/symbols.js', 'src/widgets.js', 'src/blocks.js', 'src/threads.js', 'src/objects.js', 'src/scenes.js', 'src/gui.js', 'src/paint.js', 'src/lists.js', 'src/byob.js', 'src/tables.js', 'src/sketch.js', 'src/video.js', 'src/maps.js', 'src/extensions.js', 'src/xml.js', 'src/store.js', 'src/locale.js', 'src/cloud.js', 'src/api.js', 'src/sha512.js', 'src/FileSaver.min.js', // translations 'locale/lang-ar.js', 'locale/lang-bg.js', 'locale/lang-bn.js', 'locale/lang-ca.js', 'locale/lang-ca_VA.js', 'locale/lang-cs.js', 'locale/lang-de.js', 'locale/lang-dk.js', 'locale/lang-el.js', 'locale/lang-eo.js', 'locale/lang-es.js', 'locale/lang-et.js', 'locale/lang-eu.js', 'locale/lang-fi.js', 'locale/lang-fr.js', 'locale/lang-gl.js', 'locale/lang-he.js', 'locale/lang-hi.js', 'locale/lang-hr.js', 'locale/lang-hu.js', 'locale/lang-ia.js', 'locale/lang-id.js', 'locale/lang-it.js', 'locale/lang-ja_HIRA.js', 'locale/lang-ja.js', 'locale/lang-kn.js', 'locale/lang-ko.js', 'locale/lang-ml.js', 'locale/lang-nl.js', 'locale/lang-no.js', 'locale/lang-pl.js', 'locale/lang-pt_BR.js', 'locale/lang-pt.js', 'locale/lang-ro.js', 'locale/lang-ru.js', 'locale/lang-si.js', 'locale/lang-sk.js', 'locale/lang-sv.js', 'locale/lang-ta.js', 'locale/lang-te.js', 'locale/lang-tr.js', 'locale/lang-ua.js', 'locale/lang-zh_CN.js', 'locale/lang-zh_TW.js', //libraries 'libraries/LIBRARIES', 'libraries/animation_module.xml', 'libraries/apl.xml', 'libraries/audioComp_module.xml', 'libraries/bar-charts.xml', 'libraries/biginteger.js', 'libraries/bignumbers.xml', 'libraries/bignums.js', 'libraries/bitwise.xml', 'libraries/bbtSnapExtension.js', 'libraries/cases.xml', 'libraries/colors.xml', 'libraries/Eisenbergification.xml', 'libraries/frequency_distribution_module.xml', 'libraries/httpBlocks.xml', 'libraries/HummingbirdBlocks.xml', 'libraries/iteration-composition.xml', 'libraries/leap-library.xml', 'libraries/list-utilities.xml', 'libraries/localstorage_module.xml', 'libraries/make-variables.xml', 'libraries/maps_module.xml', 'libraries/parallel_module.xml', 'libraries/pixel_module.xml', 'libraries/schemeNumber.js', 'libraries/serial_module.xml', 'libraries/signada.js', 'libraries/signada.xml', 'libraries/speech_module.xml', 'libraries/stream-tools.xml', 'libraries/strings.xml', 'libraries/textCostumes_module.xml', 'libraries/try-catch.xml', 'libraries/variadic-reporters.xml', 'libraries/word-sentence.xml', //costumes 'Costumes/COSTUMES', 'Costumes/abby-a.svg', 'Costumes/abby-b.svg', 'Costumes/abby-c.svg', 'Costumes/abby-d.svg', 'Costumes/airplane2.png', 'Costumes/alonzo.png', 'Costumes/Alonzo3D.png', 'Costumes/alonzo.svg', 'Costumes/amon.gif', 'Costumes/anina_pop_down.png', 'Costumes/anina_pop_front.png', 'Costumes/anina_pop_L_arm.png', 'Costumes/anina_pop_left.png', 'Costumes/anina_pop_R_arm.png', 'Costumes/anina_pop_right.png', 'Costumes/anina_pop_stand.png', 'Costumes/anina_R_cross.png', 'Costumes/anina_stance.png', 'Costumes/anina_top_freeze.png', 'Costumes/anina_top_L_step.png', 'Costumes/anina_top_R_step.png', 'Costumes/anina_top_stand.png', 'Costumes/anna01.png', 'Costumes/anna02.png', 'Costumes/anna03.png', 'Costumes/anna04.png', 'Costumes/anna05.png', 'Costumes/anna06.png', 'Costumes/anna07b.png', 'Costumes/anna07c.png', 'Costumes/anna07.png', 'Costumes/anna08.png', 'Costumes/anna09.png', 'Costumes/anna10.png', 'Costumes/anna11.png', 'Costumes/anna12.png', 'Costumes/anna-a.png', 'Costumes/anna-b.png', 'Costumes/apple.svg', 'Costumes/arrow1-a.svg', 'Costumes/arrow1-b.svg', 'Costumes/arrow1-c.svg', 'Costumes/arrow1-d.svg', 'Costumes/avery-a.svg', 'Costumes/avery-b.svg', 'Costumes/avery_walking-a.svg', 'Costumes/avery_walking-b.svg', 'Costumes/avery_walking-c.svg', 'Costumes/avery_walking-d.svg', 'Costumes/AZ_pop_down.png', 'Costumes/AZ_pop_front.png', 'Costumes/AZ_pop_L_arm.png', 'Costumes/AZ_pop_left.png', 'Costumes/AZ_pop_R_arm.png', 'Costumes/AZ_pop_right.png', 'Costumes/AZ_pop_stand.png', 'Costumes/AZ_stance.png', 'Costumes/AZ_top_freeze.png', 'Costumes/AZ_top_L_step.png', 'Costumes/AZ_top_R_cross.png', 'Costumes/AZ_top_R_step.png', 'Costumes/AZ_top_stand.png', 'Costumes/ball-a.svg', 'Costumes/ball-b.svg', 'Costumes/ball-c.svg', 'Costumes/ball-d.svg', 'Costumes/ballerina-a.svg', 'Costumes/ballerina-b.svg', 'Costumes/ballerina-c.svg', 'Costumes/ballerina-d.svg', 'Costumes/ball-e.svg', 'Costumes/balloon1-a.svg', 'Costumes/balloon1-b.svg', 'Costumes/balloon1-c.svg', 'Costumes/ball-soccer.svg', 'Costumes/bananas.svg', 'Costumes/baseball.svg', 'Costumes/basketball.svg', 'Costumes/bass.svg', 'Costumes/bat1-a_.svg', 'Costumes/bat1-b_.svg', 'Costumes/bat2-a_.svg', 'Costumes/bat2-b_.svg', 'Costumes/beachball.svg', 'Costumes/bear2-a.svg', 'Costumes/bear2-b.svg', 'Costumes/beetle.svg', 'Costumes/bell1.svg', 'Costumes/bells-a.svg', 'Costumes/bells-b.svg', 'Costumes/bowl-a.svg', 'Costumes/bowtie-a.svg', 'Costumes/bowtie-b.svg', 'Costumes/boy1-standing.gif', 'Costumes/boy1-walking.gif', 'Costumes/boy2.gif', 'Costumes/boy3.gif', 'Costumes/building-a.svg', 'Costumes/building-b.svg', 'Costumes/building-c.svg', 'Costumes/building-d.svg', 'Costumes/building-e.svg', 'Costumes/building-f.svg', 'Costumes/building-g.svg', 'Costumes/building-h.svg', 'Costumes/building-i.svg', 'Costumes/building-j.svg', 'Costumes/bus.png', 'Costumes/butterfly1-a.svg', 'Costumes/butterfly1-b_.svg', 'Costumes/butterfly2_.svg', 'Costumes/butterfly3_.svg', 'Costumes/button1.svg', 'Costumes/button2-a.svg', 'Costumes/button2-b.svg', 'Costumes/button3-a.svg', 'Costumes/button3-b.svg', 'Costumes/button4-a.svg', 'Costumes/button4-b.svg', 'Costumes/button5-a.svg', 'Costumes/button5-b.svg', 'Costumes/cake-a.svg', 'Costumes/cake-b.svg', 'Costumes/calvrett_jumping.png', 'Costumes/calvrett_thinking.png', 'Costumes/candle1-a.svg', 'Costumes/candle1-b.svg', 'Costumes/candles1.svg', 'Costumes/candles2.svg', 'Costumes/car-bug.png', 'Costumes/cassy-a.png', 'Costumes/cassy-b.png', 'Costumes/cassy-c.png', 'Costumes/cassy_dance-a.png', 'Costumes/cassy_dance-b.png', 'Costumes/cassy_dance-c.png', 'Costumes/cassy_dance-d.png', 'Costumes/cassy-d.png', 'Costumes/cat2.gif', 'Costumes/cat2.svg', 'Costumes/cat3.png', 'Costumes/cat4.png', 'Costumes/cat5.gif', 'Costumes/catherine-a.png', 'Costumes/catherine-b.png', 'Costumes/catherine-c.png', 'Costumes/catherine-d.png', 'Costumes/champ99-a.png', 'Costumes/champ99-b.png', 'Costumes/champ99-c.png', 'Costumes/champ99-d.png', 'Costumes/champ99-e.png', 'Costumes/champ99-f.png', 'Costumes/champ99-g.png', 'Costumes/cheesy-puffs.png', 'Costumes/cloud-a.svg', 'Costumes/cloud-b.svg', 'Costumes/cloud-c.svg', 'Costumes/cloud-d.svg', 'Costumes/cloud.svg', 'Costumes/cm_pop_L_arm.png', 'Costumes/cm_pop_R_arm.png', 'Costumes/cm_top_L_cross.png', 'Costumes/cm_top_L_leg.png', 'Costumes/cm_top_R_cross.png', 'Costumes/cm_top_ready.png', 'Costumes/cm_top_R_leg.png', 'Costumes/cm_top_stand.png', 'Costumes/convertible1.png', 'Costumes/convertible2.png', 'Costumes/convertible3.svg', 'Costumes/cowbell.svg', 'Costumes/crab-a.svg', 'Costumes/crab-b.svg', 'Costumes/creature1-a.svg', 'Costumes/creature1-b.svg', 'Costumes/creature1-c.svg', 'Costumes/cymbal-a.svg', 'Costumes/cymbal-b.svg', 'Costumes/dan-a.png', 'Costumes/dan-b.png', 'Costumes/dani-a.svg', 'Costumes/dani-b.svg', 'Costumes/dani-c.svg', 'Costumes/dee-a.svg', 'Costumes/dee-b.svg', 'Costumes/dee-c.svg', 'Costumes/dee-d.svg', 'Costumes/dee-e.svg', 'Costumes/devin-a.svg', 'Costumes/devin-b.svg', 'Costumes/devin-c.svg', 'Costumes/devin-d.svg', 'Costumes/dinosaur1-a.svg', 'Costumes/dinosaur1-b.svg', 'Costumes/dinosaur1-c.svg', 'Costumes/dinosaur1-d.svg', 'Costumes/dinosaur1-e.svg', 'Costumes/dinosaur1-f.svg', 'Costumes/dinosaur1-g.svg', 'Costumes/dinosaur2-a.svg', 'Costumes/dinosaur2-b.svg', 'Costumes/dinosaur3.svg', 'Costumes/diver1.svg', 'Costumes/diver2.svg', 'Costumes/dm_freeze.png', 'Costumes/dm_pop_down.png', 'Costumes/dm_pop_front.png', 'Costumes/dm_pop_L_arm.png', 'Costumes/dm_pop_left.png', 'Costumes/dm_pop_R_arm.png', 'Costumes/dm_pop_right.png', 'Costumes/dm_pop_stand.png', 'Costumes/dm_stance.svg', 'Costumes/dm_top_L_leg.png', 'Costumes/dm_top_R_leg.png', 'Costumes/dm_top_stand.png', 'Costumes/dog1-a.svg', 'Costumes/dog1-b.svg', 'Costumes/dog2-a.svg', 'Costumes/dog2-b.svg', 'Costumes/dog2-c.svg', 'Costumes/dog_puppy_back.png', 'Costumes/dog_puppy_right.png', 'Costumes/dog_puppy_side.png', 'Costumes/dog_puppy_sit.png', 'Costumes/donut.svg', 'Costumes/dove1-a.svg', 'Costumes/dove1-b.svg', 'Costumes/dove2-a.svg', 'Costumes/dove2-b.svg', 'Costumes/dragon1-a.svg', 'Costumes/dragon1-b.png', 'Costumes/dragon1-b.svg', 'Costumes/dragon2.gif', 'Costumes/drum1-a.svg', 'Costumes/drum1-b.svg', 'Costumes/drum2-a.svg', 'Costumes/drum2-b.svg', 'Costumes/drum_bass-a.svg', 'Costumes/drum_bass-b.svg', 'Costumes/drums_conga-a.svg', 'Costumes/drums_conga-b.svg', 'Costumes/drum_snare-a.svg', 'Costumes/drum_snare-b.svg', 'Costumes/duck.svg', 'Costumes/earth.svg', 'Costumes/elephant-a_.svg', 'Costumes/elephant-b_.svg', 'Costumes/fire_hydrant.png', 'Costumes/fish1.svg', 'Costumes/fish2.svg', 'Costumes/fish3.svg', 'Costumes/flower_shape.svg', 'Costumes/football_running.png', 'Costumes/football_standing.png', 'Costumes/fortunecookie.png', 'Costumes/fox.svg', 'Costumes/frog.svg', 'Costumes/fruit_platter.png', 'Costumes/fruitsalad.svg', 'Costumes/ghost1_.svg', 'Costumes/ghost2-a.svg', 'Costumes/ghost2-b.svg', 'Costumes/ghoul-a.svg', 'Costumes/ghoul-b.svg', 'Costumes/gift-a.svg', 'Costumes/gift-b.svg', 'Costumes/girl1-standing.gif', 'Costumes/girl1-walking.gif', 'Costumes/girl2-shouting.gif', 'Costumes/girl2-standing.gif', 'Costumes/girl3-basketball.gif', 'Costumes/girl3-running.gif', 'Costumes/girl3-standing.gif', 'Costumes/glasses.svg', 'Costumes/glass_water-a.svg', 'Costumes/glass_water-b.svg', 'Costumes/green_flag.svg', 'Costumes/guitar_bass.svg', 'Costumes/guitar_electric.svg', 'Costumes/guitar.svg', 'Costumes/hannah-a.png', 'Costumes/hannah-b.png', 'Costumes/hannah-c.png', 'Costumes/hat_beanie.svg', 'Costumes/hat_party2-a.svg', 'Costumes/Hat.svg', 'Costumes/hat_winter.svg', 'Costumes/hat_wizard.svg', 'Costumes/headband.svg', 'Costumes/heart_code.svg', 'Costumes/heart_face.svg', 'Costumes/heart_love_it.svg', 'Costumes/heart_purple.svg', 'Costumes/heart_red.svg', 'Costumes/heart_smile.svg', 'Costumes/heart_sweet.svg', 'Costumes/helicopter.png', 'Costumes/hippo1-a.svg', 'Costumes/hippo1-b.svg', 'Costumes/holly1.svg', 'Costumes/holly2.svg', 'Costumes/home_button.svg', 'Costumes/horse1-a.svg', 'Costumes/horse1-b.svg', 'Costumes/jaime-a.png', 'Costumes/jaime-b.png', 'Costumes/jaime_walking-a.png', 'Costumes/jaime_walking-b.png', 'Costumes/jaime_walking-c.png', 'Costumes/jaime_walking-d.png', 'Costumes/jaime_walking-e.png', 'Costumes/jay.gif', 'Costumes/jeans-a.svg', 'Costumes/jeans-b.svg', 'Costumes/jodi.gif', 'Costumes/jo_pop_down.png', 'Costumes/jo_pop_front.png', 'Costumes/jo_pop_L_arm.png', 'Costumes/jo_pop_left.png', 'Costumes/jo_pop_R_arm.png', 'Costumes/jo_pop_right.png', 'Costumes/jo_pop_stand.png', 'Costumes/jo_stance.png', 'Costumes/jo_top_L_cross.png', 'Costumes/jo_top_L_leg.png', 'Costumes/jo_top_R_cross.png', 'Costumes/jo_top_R_leg.png', 'Costumes/jo_top_stand.png', 'Costumes/keyboard-a.svg', 'Costumes/keyboard-b.svg', 'Costumes/keyboard-c.svg', 'Costumes/keyboard-d.svg', 'Costumes/key.svg', 'Costumes/khalid-a.png', 'Costumes/Khalid-b.png', 'Costumes/khalid-c.png', 'Costumes/khalid-d.png', 'Costumes/knight.svg', 'Costumes/ladybug2-a.svg', 'Costumes/ladybug2-b.svg', 'Costumes/ladybug2.svg', 'Costumes/lamp.png', 'Costumes/laptop.svg', 'Costumes/lb_pop_down.png', 'Costumes/lb_pop_front.png', 'Costumes/lb_pop_L_arm.png', 'Costumes/lb_pop_left.png', 'Costumes/lb_pop_R_arm.png', 'Costumes/lb_pop_right.png', 'Costumes/lb_pop_stand.png', 'Costumes/lb_stance.png', 'Costumes/lb_top_L_cross.png', 'Costumes/lb_top_L_leg.png', 'Costumes/lb_top_R_cross.png', 'Costumes/lb_top_R_leg.png', 'Costumes/lb_top_stand.png', 'Costumes/lightning.svg', 'Costumes/lion-a.svg', 'Costumes/lion-b.svg', 'Costumes/lioness.svg', 'Costumes/lorenz01.png', 'Costumes/lorenz02.png', 'Costumes/lorenz03.png', 'Costumes/lorenz04.png', 'Costumes/lorenz05.png', 'Costumes/lorenz06.png', 'Costumes/lorenz07b.png', 'Costumes/lorenz07.png', 'Costumes/magiccarpet.png', 'Costumes/magicwand.svg', 'Costumes/marble-building.png', 'Costumes/marissa-crouching.gif', 'Costumes/marissa.gif', 'Costumes/marissa-sitting.gif', 'Costumes/maya.png', 'Costumes/microphonestand.svg', 'Costumes/microphone.svg', 'Costumes/monkey1-a.svg', 'Costumes/monkey1-b.svg', 'Costumes/monkey2-a.svg', 'Costumes/monkey2-b.svg', 'Costumes/monkey2-c.svg', 'Costumes/mori.png', 'Costumes/mouse1-a.svg', 'Costumes/mouse1-b.svg', 'Costumes/muffin-a.svg', 'Costumes/muffin-b.svg', 'Costumes/octopus-a.svg', 'Costumes/octopus-b.svg', 'Costumes/orange2-a.svg', 'Costumes/orange2-b.svg', 'Costumes/orange2-c.svg', 'Costumes/orange.svg', 'Costumes/paddle.svg', 'Costumes/palmtree.gif', 'Costumes/parrot2-a.svg', 'Costumes/parrot2-b.svg', 'Costumes/parrot-a.svg', 'Costumes/parrot-b.svg', 'Costumes/partyhat1.svg', 'Costumes/paul.gif', 'Costumes/pencil-a.svg', 'Costumes/pencil-b.svg', 'Costumes/penguin1.svg', 'Costumes/penguin1_talk-a.svg', 'Costumes/penguin1_talk-b.svg', 'Costumes/penguin2.svg', 'Costumes/penguin2_talk-a.svg', 'Costumes/penguin2_talk-b.svg', 'Costumes/penguin3-a.svg', 'Costumes/penguin3-b.svg', 'Costumes/penguin3-c.svg', 'Costumes/piano.svg', 'Costumes/planet2.svg', 'Costumes/princess.svg', 'Costumes/prince.svg', 'Costumes/rainbow.svg', 'Costumes/referee.gif', 'Costumes/reindeer.svg', 'Costumes/robot1.svg', 'Costumes/rocks.svg', 'Costumes/rory.png', 'Costumes/ruby-a.png', 'Costumes/ruby-b.png', 'Costumes/sail-boat.png', 'Costumes/sam.gif', 'Costumes/saxophone-a.svg', 'Costumes/saxophone-b.svg', 'Costumes/scarf1.svg', 'Costumes/scarf2.svg', 'Costumes/shark-a_.svg', 'Costumes/shark-b_.svg', 'Costumes/shark-c_.svg', 'Costumes/shirt2-a2.svg', 'Costumes/shirt2-a.svg', 'Costumes/shirt-a.svg', 'Costumes/shirt_blouse.svg', 'Costumes/shirt-b.svg', 'Costumes/shirt_collar-a.svg', 'Costumes/shirt_collar-b.svg', 'Costumes/shirt_collar-c.svg', 'Costumes/shoes1.svg', 'Costumes/shoes2.svg', 'Costumes/Singer1.svg', 'Costumes/skates.svg', 'Costumes/sl_pop_L_arm.png', 'Costumes/sl_pop_R_arm.png', 'Costumes/sl_top_L_cross.png', 'Costumes/sl_top_L_leg.png', 'Costumes/sl_top_R_cross.png', 'Costumes/sl_top_ready.png', 'Costumes/sl_top_R_leg.png', 'Costumes/sl_top_stand.png', 'Costumes/snowflake.svg', 'Costumes/snowman.svg', 'Costumes/spaceship-a.svg', 'Costumes/spaceship-b.svg', 'Costumes/speaker.svg', 'Costumes/squirrel1.png', 'Costumes/star1.svg', 'Costumes/star2.svg', 'Costumes/star3-a.svg', 'Costumes/star3-b.svg', 'Costumes/starfish-a.svg', 'Costumes/starfish-b_.svg', 'Costumes/stop.svg', 'Costumes/street-cleaner-mit.png', 'Costumes/sunglasses1.svg', 'Costumes/sunglasses2.svg', 'Costumes/sun.svg', 'Costumes/tabla-a.svg', 'Costumes/tabla-b.svg', 'Costumes/taco-a.svg', 'Costumes/taco-b.svg', 'Costumes/tennisball.png', 'Costumes/trampoline.png', 'Costumes/tree1.svg', 'Costumes/tree2.svg', 'Costumes/tree-lights-a.svg', 'Costumes/tree-lights-b.svg', 'Costumes/trees-a.svg', 'Costumes/trees-b.svg', 'Costumes/trombone-a.svg', 'Costumes/trombone-b.svg', 'Costumes/trumpet-a2.svg', 'Costumes/trumpet-a.svg', 'Costumes/ukulele.svg', 'Costumes/umbrella.png', 'Costumes/unicorn1.png', 'Costumes/unicorn.svg', 'Costumes/vest-a.svg', 'Costumes/vest-b.svg', 'Costumes/wanda.svg', 'Costumes/watermelon-a.svg', 'Costumes/watermelon-b.svg', 'Costumes/watermelon-c.svg', 'Costumes/witch.svg', 'Costumes/wizard1.svg', 'Costumes/wizard2.svg', 'Costumes/wizard.svg', // Backgrounds 'Backgrounds/BACKGROUNDS', 'Backgrounds/atom_playground.jpg', 'Backgrounds/bedroom1.gif', 'Backgrounds/bedroom2.gif', 'Backgrounds/berkeley_mural.jpg', 'Backgrounds/brick-wall-and-stairs.jpg', 'Backgrounds/brick-wall1.jpg', 'Backgrounds/brick-wall2.jpg', 'Backgrounds/desert.gif', 'Backgrounds/night_city_with_street.gif', 'Backgrounds/party_room.jpg', 'Backgrounds/pathway.jpg', 'Backgrounds/xy-grid.gif', // Sounds 'Sounds/SOUNDS', 'Sounds/Cat.mp3', 'Sounds/Chord.wav', 'Sounds/Dog1.wav', 'Sounds/Dog2.wav', 'Sounds/FingerSnap.wav', 'Sounds/Kitten.wav', 'Sounds/Laugh-female.wav', 'Sounds/Laugh-male1.wav', 'Sounds/Laugh-male2.wav', 'Sounds/Laugh-male3.mp3', 'Sounds/Meow.wav', 'Sounds/Pop.wav', // Examples 'Examples/EXAMPLES', 'Examples/animal-game.xml', 'Examples/Codification.xml', 'Examples/copter.xml', 'Examples/count-change.xml', 'Examples/icecream-visual.xml', 'Examples/JSfunctions.xml', 'Examples/live-tree.xml', 'Examples/swimmer.xml', 'Examples/tree.xml', 'Examples/vee.xml', ]; /* Start the service worker and cache all of the app's content */ self.addEventListener('install', function(e) { e.waitUntil( caches.open(cacheName).then(function(cache) { return cache.addAll(filesToCache); }) ); }); self.addEventListener('activate', (evt) => { evt.waitUntil( caches.keys().then((keyList) => { return Promise.all(keyList.map((key) => { if (key !== cacheName) { return caches.delete(key); } })); }) ); self.clients.claim(); }); /* Serve cached content when offline */ self.addEventListener('fetch', function(e) { e.respondWith( caches.match( e.request, {'ignoreSearch': true} ).then(function(response) { return response || fetch(e.request); }) ); });