1<!doctype html> 2<html lang="en"> 3 <head> 4 <meta charset="utf-8" /> 5 <link rel="icon" type="image/png" href="/static/favicon.png" crossorigin="use-credentials" /> 6 <link 7 rel="icon" 8 type="image/png" 9 href="/static/favicon-96x96.png" 10 sizes="96x96" 11 crossorigin="use-credentials" 12 /> 13 <link 14 rel="icon" 15 type="image/svg+xml" 16 href="/static/favicon.svg" 17 crossorigin="use-credentials" 18 /> 19 <link rel="shortcut icon" href="/static/favicon.ico" crossorigin="use-credentials" /> 20 <link 21 rel="apple-touch-icon" 22 sizes="180x180" 23 href="/static/apple-touch-icon.png" 24 crossorigin="use-credentials" 25 /> 26 <link rel="manifest" href="/manifest.json" crossorigin="use-credentials" /> 27 <meta 28 name="viewport" 29 content="width=device-width, initial-scale=1, maximum-scale=1, viewport-fit=cover, interactive-widget=resizes-content" 30 /> 31 <meta name="theme-color" content="#171717" /> 32 <meta name="robots" content="noindex,nofollow" /> 33 34
34<script src="/static/loader.js" defer crossorigin="use-credentials"></script>
34 35 <link rel="stylesheet" href="/static/custom.css" crossorigin="use-credentials" /> 36 37
37<script> 38 function resizeIframe(obj) { 39 obj.style.height = obj.contentWindow.document.documentElement.scrollHeight + 'px'; 40 } 41 </script>
41 42 43
43<script> 44 // On page load or when changing themes, best to add inline in `head` to avoid FOUC 45 (() => { 46 const metaThemeColorTag = document.querySelector('meta[name="theme-color"]'); 47 const prefersDarkTheme = window.matchMedia('(prefers-color-scheme: dark)').matches; 48 49 if (!localStorage?.theme) { 50 localStorage.theme = 'system'; 51 } 52 53 if (localStorage.theme === 'system') { 54 document.documentElement.classList.add(prefersDarkTheme ? 'dark' : 'light'); 55 metaThemeColorTag.setAttribute('content', prefersDarkTheme ? '#171717' : '#ffffff'); 56 } else if (localStorage.theme === 'oled-dark') { 57 document.documentElement.style.setProperty('--color-gray-800', '#101010'); 58 document.documentElement.style.setProperty('--color-gray-850', '#050505'); 59 document.documentElement.style.setProperty('--color-gray-900', '#000000'); 60 document.documentElement.style.setProperty('--color-gray-950', '#000000'); 61 document.documentElement.classList.add('dark'); 62 metaThemeColorTag.setAttribute('content', '#000000'); 63 } else if (localStorage.theme === 'light') { 64 document.documentElement.classList.add('light'); 65 metaThemeColorTag.setAttribute('content', '#ffffff'); 66 } else if (localStorage.theme === 'her') { 67 document.documentElement.classList.add('her'); 68 metaThemeColorTag.setAttribute('content', '#983724'); 69 } else { 70 document.documentElement.classList.add('dark'); 71 metaThemeColorTag.setAttribute('content', '#171717'); 72 } 73 74 const preloadHref = document.documentElement.classList.contains('dark') 75 ? '/static/splash-dark.png' 76 : '/static/splash.png'; 77 const preload = document.createElement('link'); 78 preload.rel = 'preload'; 79 preload.as = 'image'; 80 preload.href = preloadHref; 81 preload.setAttribute('fetchpriority', 'high'); 82 document.head.appendChild(preload); 83 84 window.matchMedia('(prefers-color-scheme: dark)').addListener((e) => { 85 if (localStorage.theme === 'system') { 86 if (e.matches) { 87 document.documentElement.classList.add('dark'); 88 document.documentElement.classList.remove('light'); 89 metaThemeColorTag.setAttribute('content', '#171717'); 90 } else { 91 document.documentElement.classList.add('light'); 92 document.documentElement.classList.remove('dark'); 93 metaThemeColorTag.setAttribute('content', '#ffffff'); 94 } 95 } 96 }); 97 const isDarkMode = document.documentElement.classList.contains('dark'); 98 99 const logo = document.createElement('img'); 100 logo.id = 'logo'; 101 logo.style = 102 'position: absolute; width: auto; height: 6rem; top: 44%; left: 50%; transform: translateX(-50%); display:block;'; 103 logo.loading = 'eager'; 104 logo.fetchPriority = 'high'; 105 logo.src = isDarkMode ? '/static/splash-dark.png' : '/static/splash.png'; 106 107 document.addEventListener('DOMContentLoaded', function () { 108 const splash = document.getElementById('splash-screen'); 109 if (document.documentElement.classList.contains('her')) { 110 return; 111 } 112 113 if (splash) splash.prepend(logo); 114 }); 115 })(); 116 </script>
116 117 118 <title>Open WebUI</title> 119 120 <link href="/_app/immutable/entry/start.D_R49xHU.js" rel="modulepreload"> 121 <link href="/_app/immutable/chunks/BwKtPiAG.js" rel="modulepreload"> 122 <link href="/_app/immutable/chunks/Djt4fO9t.js" rel="modulepreload"> 123 <link href="/_app/immutable/chunks/DIeogL5L.js" rel="modulepreload"> 124 <link href="/_app/immutable/entry/app.AL1gMCQi.js" rel="modulepreload"> 125 <link href="/_app/immutable/chunks/C1FmrZbK.js" rel="modulepreload"> 126 <link href="/_app/immutable/chunks/DWJt98Vr.js" rel="modulepreload"> 127 <link href="/_app/immutable/chunks/CWj6FrbW.js" rel="modulepreload"> 128 <link href="/_app/immutable/chunks/DresXHHc.js" rel="modulepreload"> 129 <link href="/_app/immutable/chunks/Mdn6-8wz.js" rel="modulepreload"> 130 <link href="/_app/immutable/chunks/CFvwO0iM.js" rel="modulepreload"> 131 <link href="/_app/immutable/chunks/DAJo4HNn.js" rel="modulepreload"> 132 <link href="/_app/immutable/nodes/0.CzPOgsUQ.js" rel="modulepreload"> 133 <link href="/_app/immutable/chunks/69_IOA4Y.js" rel="modulepreload"> 134 <link href="/_app/immutable/chunks/Bchnts8h.js" rel="modulepreload"> 135 <link href="/_app/immutable/chunks/CCcyyoLP.js" rel="modulepreload"> 136 <link href="/_app/immutable/chunks/C22PTw-J.js" rel="modulepreload"> 137 <link href="/_app/immutable/chunks/BqaakOp7.js" rel="modulepreload"> 138 <link href="/_app/immutable/chunks/BcxXcwBL.js" rel="modulepreload"> 139 <link href="/_app/immutable/chunks/HWcJ0KV-.js" rel="modulepreload"> 140 <link href="/_app/immutable/chunks/DDjvPYNk.js" rel="modulepreload"> 141 <link href="/_app/immutable/chunks/CioKlagv.js" rel="modulepreload"> 142 <link href="/_app/immutable/chunks/CDvT-V1T.js" rel="modulepreload"> 143 <link href="/_app/immutable/chunks/Di7fgO1t.js" rel="modulepreload"> 144 <link href="/_app/immutable/chunks/QGuclOcQ.js" rel="modulepreload"> 145 <link href="/_app/immutable/chunks/A0sNSzJb.js" rel="modulepreload"> 146 <link href="/_app/immutable/chunks/DvLK6xgF.js" rel="modulepreload"> 147 <link href="/_app/immutable/chunks/BC4znSyB.js" rel="modulepreload"> 148 <link href="/_app/immutable/chunks/B5CD4DQe.js" rel="modulepreload"> 149 <link href="/_app/immutable/chunks/Bp9Sdq8c.js" rel="modulepreload"> 150 <link href="/_app/immutable/chunks/DgCmIQGJ.js" rel="modulepreload"> 151 <link href="/_app/immutable/chunks/B62_3pd2.js" rel="modulepreload"> 152 <link href="/_app/immutable/chunks/DS7zhhMe.js" rel="modulepreload"> 153 <link href="/_app/immutable/chunks/B2185GOa.js" rel="modulepreload"> 154 <link href="/_app/immutable/chunks/BT28bLwl.js" rel="modulepreload"> 155 <link href="/_app/immutable/chunks/QjJsDpFa.js" rel="modulepreload"> 156 <link href="/_app/immutable/chunks/BTnQyZiD.js" rel="modulepreload"> 157 <link href="/_app/immutable/chunks/Cg0QFnFM.js" rel="modulepreload"> 158 <link href="/_app/immutable/chunks/DSgu-Efj.js" rel="modulepreload"> 159 <link href="/_app/immutable/chunks/CUMVP5zM.js" rel="modulepreload"> 160 <link href="/_app/immutable/chunks/yttw3aWw.js" rel="modulepreload"> 161 <link href="/_app/immutable/chunks/C9MNpwWT.js" rel="modulepreload"> 162 <link href="/_app/immutable/chunks/Dv4qAoF8.js" rel="modulepreload"> 163 <link href="/_app/immutable/chunks/Bfc47y5P.js" rel="modulepreload"> 164 <link href="/_app/immutable/chunks/BEDL1iEW.js" rel="modulepreload"> 165 <link href="/_app/immutable/chunks/CwbeA-h1.js" rel="modulepreload"> 166 <link href="/_app/immutable/chunks/v8LnAg0L.js" rel="modulepreload"> 167 <link href="/_app/immutable/chunks/BL490Osp.js" rel="modulepreload"> 168 <link href="/_app/immutable/chunks/C9aOdl_g.js" rel="modulepreload"> 169 <link href="/_app/immutable/chunks/B8AXWb8I.js" rel="modulepreload"> 170 <link href="/_app/immutable/chunks/BMMV_8DA.js" rel="modulepreload"> 171 <link href="/_app/immutable/chunks/BMHTEson.js" rel="modulepreload"> 172 173 <link href="/_app/immutable/assets/Toaster.DKF17Rty.css" rel="stylesheet"> 174 <link href="/_app/immutable/assets/Confetti.VzC_X4OY.css" rel="stylesheet"> 175 <link href="/_app/immutable/assets/Modal.CSlFhZkq.css" rel="stylesheet"> 176 <link href="/_app/immutable/assets/0.CrPnbDCw.css" rel="stylesheet"> 177 </head> 178 179 <body data-sveltekit-preload-data="hover"> 180 <div style="display: contents"> 181
181<script> 182 { 183 __sveltekit_1a16pfk = { 184 base: "" 185 }; 186 187 const element = document.currentScript.parentElement; 188 189 Promise.all([ 190 import("/_app/immutable/entry/start.D_R49xHU.js"), 191 import("/_app/immutable/entry/app.AL1gMCQi.js") 192 ]).then(([kit, app]) => { 193 kit.start(app, element); 194 }); 195 } 196 </script>
196 197 </div> 198 199 <div 200 id="splash-screen" 201 style="position: fixed; z-index: 100; top: 0; left: 0; width: 100%; height: 100%" 202 > 203 <style type="text/css" nonce=""> 204 html { 205 overflow-y: scroll !important; 206 } 207 </style> 208 209 <div 210 style=" 211 position: absolute; 212 top: 33%; 213 left: 50%; 214 215 width: 24rem; 216 transform: translateX(-50%); 217 218 display: flex; 219 flex-direction: column; 220 align-items: center; 221 " 222 > 223 <img 224 id="logo-her" 225 style="width: auto; height: 13rem" 226 src="/static/splash.png" 227 loading="eager" 228 fetchpriority="high" 229 class="animate-pulse-fast" 230 /> 231 232 <div style="position: relative; width: 24rem; margin-top: 0.5rem"> 233 <div 234 id="progress-background" 235 style=" 236 position: absolute; 237 width: 100%; 238 height: 0.75rem; 239 240 border-radius: 9999px; 241 background-color: #fafafa9a; 242 " 243 ></div> 244 245 <div 246 id="progress-bar" 247 style=" 248 position: absolute; 249 width: 0%; 250 height: 0.75rem; 251 border-radius: 9999px; 252 background-color: #fff; 253 " 254 class="bg-white" 255 ></div> 256 </div> 257 </div> 258 259 <!-- <span style="position: absolute; bottom: 32px; left: 50%; margin: -36px 0 0 -36px"> 260 Footer content 261 </span> --> 262 </div> 263 </body> 264 265 <style type="text/css" nonce=""> 266 html { 267 overflow-y: hidden !important; 268 overscroll-behavior-y: none; 269 } 270 271 #splash-screen { 272 background: #fff; 273 } 274 275 html.dark #splash-screen { 276 background: #000; 277 } 278 279 html.her #splash-screen { 280 background: #983724; 281 } 282 283 #logo-her { 284 display: none; 285 } 286 287 #progress-background { 288 display: none; 289 } 290 291 #progress-bar { 292 display: none; 293 } 294 295 html.her #logo { 296 display: none; 297 } 298 299 html.her #logo-her { 300 display: block; 301 filter: invert(1); 302 } 303 304 html.her #progress-background { 305 display: block; 306 } 307 308 html.her #progress-bar { 309 display: block; 310 } 311 312 @media (max-width: 24rem) { 313 html.her #progress-background { 314 display: none; 315 } 316 317 html.her #progress-bar { 318 display: none; 319 } 320 } 321 322 @keyframes pulse { 323 50% { 324 opacity: 0.65; 325 } 326 } 327 328 .animate-pulse-fast { 329 animation: pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite; 330 } 331 </style> 332</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.