1<!doctype html> 2<html lang="en"> 3 <head> 4
4<script> 5 if (window.location.host === "fe.rocketlanguages.com") { 6 window.location.host = "app.rocketlanguages.com"; 7 } 8 </script>
8 9 <title>Rocket Languages</title> 10 <meta charset="utf-8" /> 11 <link rel="icon" href="/favicon-rl.svg" /> 12 <link rel="preconnect" href="https://fonts.gstatic.com" /> 13 <link href="https://fonts.googleapis.com/css2?family=Merriweather:wght@300;400;700&display=swap" rel="stylesheet" /> 14 <link 15 href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap" 16 rel="stylesheet" 17 /> 18 19 <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" /> 20 <meta name="theme-color" content="#2b2d42" /> 21 <meta 22 name="description" 23 content="Rocket Languages: Online language courses that are Simple, Powerful and Effective." 24 /> 25 <meta name="keywords" content="learn a language, rocket languages, rocketlanguages" /> 26 <link rel="apple-touch-icon" href="/apple-touch-icon.png" /> 27 <link rel="manifest" href="/manifest.json" /> 28
28<script> 29 (function () { 30 function setTheme(newTheme) { 31 window.__theme = newTheme; 32 if (newTheme && newTheme !== "device") { 33 const htmlElement = document.querySelector("html"); 34 if (htmlElement) { 35 htmlElement.classList.remove("dark", "light"); 36 htmlElement.classList.add(newTheme); 37 } 38 } 39 } 40 function getTheme() { 41 try { 42 return localStorage.getItem("theme").replace(/\"/g, ""); 43 } catch (err) {} 44 } 45 var localStorageTheme = getTheme(); 46 if (localStorageTheme === "device" || !localStorageTheme) { 47 var darkQuery = window.matchMedia("(prefers-color-scheme: dark)"); 48 setTheme(darkQuery.matches ? "dark" : "light"); 49 } else { 50 setTheme(localStorageTheme); 51 } 52 })(); 53 </script>
53 54 <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 68 bytes, lines 54-55
54 55 <script async src="https://www.googletagmanager.com/gtag/js?id=
55UA-3355083-1
vendor: 16 bytes, lines 55-56
55"></script> 56
56<script> 57
vendor: 162 bytes, lines 57-62
57window.dataLayer = window.dataLayer || []; 58 function gtag() { 59 dataLayer.push(arguments); 60 } 61 gtag("js", new Date()); 62 gtag("config", "
62UA-3355083-1
vendor: 49 bytes, lines 62-63
62", { page_path: window.location.pathname }); 63
63</script>
63 64
64<script type="module" crossorigin src="/assets/index-CaiM0ZeM.js"></script>
64 65 <link rel="stylesheet" crossorigin href="/assets/index-B8yc07TG.css"> 66 </head> 67 <body class="overflow-y-scroll text-missiledark"> 68 <noscript>You need to enable JavaScript to run this app.</noscript> 69 <div id="root"> 70 <div class="spinner-container"> 71 <div class="spinner"> 72 <div class="bounce1"></div> 73 <div class="bounce2"></div> 74 <div class="bounce3"></div> 75 </div> 76 </div> 77 <style> 78 body { 79 margin: 0; 80 } 81 82 .spinner-container { 83 height: 100vh; 84 background: rgb(0 60 91); 85 } 86 87 .spinner { 88 margin: auto; 89 width: 70px; 90 text-align: center; 91 position: absolute; 92 left: 50%; 93 top: 50%; 94 -webkit-transform: translate(-50%, -50%); 95 transform: translate(-50%, -50%); 96 } 97 98 .spinner > div { 99 width: 18px; 100 height: 18px; 101 background-color: #fff; 102 border-radius: 100%; 103 display: inline-block; 104 -webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both; 105 animation: sk-bouncedelay 1.4s infinite ease-in-out both; 106 } 107 108 .spinner .bounce1 { 109 -webkit-animation-delay: -0.32s; 110 animation-delay: -0.32s; 111 } 112 113 .spinner .bounce2 { 114 -webkit-animation-delay: -0.16s; 115 animation-delay: -0.16s; 116 } 117 118 @-webkit-keyframes sk-bouncedelay { 119 0%, 120 80%, 121 100% { 122 -webkit-transform: scale(0); 123 } 124 125 40% { 126 -webkit-transform: scale(1); 127 } 128 } 129 130 @keyframes sk-bouncedelay { 131 0%, 132 80%, 133 100% { 134 -webkit-transform: scale(0); 135 transform: scale(0); 136 } 137 138 40% { 139 -webkit-transform: scale(1); 140 transform: scale(1); 141 } 142 } 143 </style> 144 </div> 145
145<script> 146 window.addEventListener("vite:preloadError", (event) => { 147 window.location.reload(); 148 }); 149 window.addEventListener( 150 "error", 151 function (e) { 152 if (e.target.tagName === "SCRIPT" && e.target.type === "module") { 153 var url = new URL(window.location.href); 154 var ts = url.searchParams.get("ts"); 155 var fiveMinutes = 5 * 60 * 1000; 156 if (!ts || Date.now() - Number(ts) > fiveMinutes) { 157 console.error("Module failed to load, reloading page..."); 158 url.searchParams.set("ts", Date.now()); 159 window.location.replace(url.toString()); 160 } 161 } 162 }, 163 true, 164 ); 165 </script>
165 166 </body> 167</html>
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.