From 47a4810ad3bbc27caeeddc7931cc7d0211d61abd Mon Sep 17 00:00:00 2001 From: Liamoule Date: Sat, 26 Sep 2026 11:05:04 +0200 Subject: [PATCH 01/18] Fix Reamde --- BUILDING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BUILDING.md b/BUILDING.md index 4f7acb0a..0820592e 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -19,7 +19,7 @@ - [Rust & Cargo](https://rustup.rs/) - [Microsoft Visual C++](https://visualstudio.microsoft.com/downloads/) - [CMake](https://cmake.org/download/) and [Ninja](https://github.com/ninja-build/ninja/releases) (the CEF wrapper is built on the first build) - - [Bun](https://bun.sh/) + - [Bun](https://bun.sh/) (`bun install` once, at the root of the project) - [WiX 6 **(if packaging)**](https://github.com/wixtoolset/wix/releases) 1. `git clone https://github.com/NullDev/Kute.git` From eef7ed7929897797c648895ed65caa9151a7319f Mon Sep 17 00:00:00 2001 From: Liamoule Date: Mon, 28 Sep 2026 07:30:13 +0200 Subject: [PATCH 02/18] Update Bun installation instructions in BUILDING.md Remove installation command for Bun in BUILDING.md --- BUILDING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BUILDING.md b/BUILDING.md index 0820592e..4f7acb0a 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -19,7 +19,7 @@ - [Rust & Cargo](https://rustup.rs/) - [Microsoft Visual C++](https://visualstudio.microsoft.com/downloads/) - [CMake](https://cmake.org/download/) and [Ninja](https://github.com/ninja-build/ninja/releases) (the CEF wrapper is built on the first build) - - [Bun](https://bun.sh/) (`bun install` once, at the root of the project) + - [Bun](https://bun.sh/) - [WiX 6 **(if packaging)**](https://github.com/wixtoolset/wix/releases) 1. `git clone https://github.com/NullDev/Kute.git` From 404744fed3df305287567c6390d295ffde4b1422 Mon Sep 17 00:00:00 2001 From: Liamoule Date: Tue, 20 Oct 2026 19:15:18 +0200 Subject: [PATCH 03/18] Adding CSS Store --- README.md | 1 + .../components/managers/customCss.html | 129 ++++++++ src/frontend/modules/managers/customCss.js | 271 ++++++++++++---- target/bundle.js | 288 +++++++++--------- 4 files changed, 486 insertions(+), 203 deletions(-) diff --git a/README.md b/README.md index ae988e0e..2d622310 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,7 @@ Kute is a high-performance Krunker client designed to enhance your gaming experi - [x] Autoupdater with a download progress window, plus changelogs - [x] Rebindable kute hotkeys - [x] Spotify overlay - by [@Liamoulee](https://github.com/Liamoulee) +- [x] CSS Store - by [@Liamoulee](https://github.com/Liamoulee) - [ ] BetterKDR™️ (coming soon) - [x] and more... diff --git a/src/frontend/components/managers/customCss.html b/src/frontend/components/managers/customCss.html index 123b5bf8..156f2325 100644 --- a/src/frontend/components/managers/customCss.html +++ b/src/frontend/components/managers/customCss.html @@ -102,6 +102,127 @@ .managerPopup.legacy #ccFiles { display: none; } + +#ccStorePanel { + flex: 1; + min-height: 0; + overflow-y: auto; +} + +#ccStoreList { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 16px; + padding: 12px 0; +} + +.storeCard { + padding: 12px; + border: 1px solid #333; + border-radius: 8px; + background: #202020; +} + +.storeCard img { + width: 100%; + max-height: 165px; + object-fit: cover; + border-radius: 5px; +} + +.storeCard h3 { + margin: 10px 0 5px; +} + +.storeCard p { + color: var(--muted); + font-size: 0.9em; +} + +.storeCard button { + margin-top: 8px; +} + +.managerBody.storeOpen > #ccEditor, +.managerBody.storeOpen > #ccFiles { + display: none; +} + +.managerBody.storeOpen > #ccStorePanel { + display: block; +} + +#ccStoreBack { + margin-left: auto; +} + +.storeDownloadBtn { + display: flex; + align-items: center; + justify-content: center; + gap: 8px; + + width: 100%; + padding: 11px 16px; + + border: 1px solid var(--accent); + border-radius: 8px; + + background: var(--accent); + color: #fff; + + font: inherit; + font-size: 13px; + font-weight: 600; + letter-spacing: 0.2px; + + cursor: pointer; + transition: + background 0.2s ease, + border-color 0.2s ease, + transform 0.2s ease, + box-shadow 0.2s ease; +} + +.storeDownloadBtn:disabled { + opacity: 0.65; + cursor: not-allowed; + transform: none; + box-shadow: none; +} + +.storeDownloadBtn.installed { + background: #292929; + border-color: #444; + color: var(--muted); +} + +.storeDownloadBtn i { + font-size: 14px; +} + +.storeDownloadBtn:hover { + filter: brightness(1.12); + transform: translateY(-1px); + box-shadow: 0 4px 14px rgba(0, 0, 0, 0.2); +} + +.storeDownloadBtn:active { + transform: translateY(0); + box-shadow: none; +} + +.storeDownloadBtn:focus-visible { + outline: 2px solid var(--accent); + outline-offset: 3px; +} + +.storeDownloadBtn:disabled { + opacity: 0.55; + cursor: not-allowed; + transform: none; + box-shadow: none; +}
@@ -109,6 +230,7 @@

CSS Manager

visibilityHold to peek
folder_openShow folder
+
storeCSS Store
×
One file is active at a time and loads after all of Krunker's styles, so a rule with the same selector wins. @@ -116,6 +238,13 @@

CSS Manager

+
diff --git a/src/frontend/modules/managers/customCss.js b/src/frontend/modules/managers/customCss.js index 2f6c6d7e..024309c9 100644 --- a/src/frontend/modules/managers/customCss.js +++ b/src/frontend/modules/managers/customCss.js @@ -63,72 +63,225 @@ class CssManager { } open(){ - if (this.popup) return; - if (!hostSupportsCustomCss()){ - kute.showNotification("The CSS Manager needs a newer Kute. Update Kute to use it.", false, 6); - return; + if (this.popup) return; + if (!hostSupportsCustomCss()){ + kute.showNotification("The CSS Manager needs a newer Kute. Update Kute to use it.", false, 6); + return; + } + + this.legacy = !hostSupportsManager(); + this.popup = openManagerPopup(html, { + onMessage: (data) => this.receive(data), + canClose: () => this.canClose(), + }); + + const { shadow, signal } = this.popup; + + signal.addEventListener("abort", () => { + clearTimeout(this.previewTimer); + // closing without saving drops the preview + customCss.revert(); + this.popup = null; + this.editor = null; + this.editing = null; + this.loading = null; + this.listed = false; + this.saving = null; + this.renaming = null; + this.openAfterImport = null; + this.activating = false; + this.forceClose = false; + }); + + this.$("#ccFolder").onclick = () => post("reveal", { name: this.editing ?? "" }); + this.$("#ccOff").hidden = kute.settings.data.customCss !== false; + + // CSS Store + this.$("#ccStore").onclick = () => this.openStore(); + + this.$("#ccStoreBack").onclick = () => { + this.$("#ccStorePanel").hidden = true; + this.$(".managerBody").classList.remove("storeOpen"); + }; + + const live = /** @type {HTMLInputElement} */ (this.$("#ccLive")); + live.checked = this.live; + live.onchange = () => { + this.live = live.checked; + this.preview(); + }; + + const overlay = /** @type {HTMLElement} */ (/** @type {HTMLElement} */ (shadow.host).parentElement); + this.$("#ccPeek").onpointerdown = (event) => { + event.preventDefault(); + overlay.style.opacity = "0"; + window.addEventListener("pointerup", () => { + overlay.style.opacity = ""; + }, { once: true, signal }); + }; + + if (this.legacy){ + this.$(".managerPopup").classList.add("legacy"); + this.$("#ccHint").textContent = "Loaded after all of Krunker's styles, so a rule with the same selector wins. " + + "Saved as Documents\\kute\\custom.css. Update Kute to keep several CSS files and switch between them."; + this.$("#ccEditor").textContent = "Loading..."; + post("read"); + return; + } + + this.$("#ccNew").onclick = () => this.create(); + this.$("#ccPaste").onclick = () => this.paste(); + + const input = /** @type {HTMLInputElement} */ (this.$("#ccImportInput")); + this.$("#ccImport").onclick = () => input.click(); + input.onchange = () => { + this.importFiles([...input.files ?? []]); + input.value = ""; + }; + + makeDropTarget( + this.$("#ccFiles"), + (dropped) => this.importFiles(dropped.map((entry) => entry.file)) + ); + + this.$("#ccEditor").textContent = "Loading..."; + post("list"); + } + + + +async openStore() { + const panel = this.$("#ccStorePanel"); + const list = this.$("#ccStoreList"); + + this.$(".managerBody").classList.add("storeOpen"); + panel.hidden = false; + list.replaceChildren(); + + const status = document.createElement("p"); + status.textContent = "Loading the CSS Store..."; + list.append(status); + + try { + const response = await fetch( + "https://raw.githubusercontent.com/Liamoulee/KSS/main/index.json" + ); + + if (!response.ok) { + throw new Error(`HTTP ${response.status}`); } - this.legacy = !hostSupportsManager(); - this.popup = openManagerPopup(html, { - onMessage: (data) => this.receive(data), - canClose: () => this.canClose(), - }); - const { shadow, signal } = this.popup; - signal.addEventListener("abort", () => { - clearTimeout(this.previewTimer); - // closing without saving drops the preview - customCss.revert(); - this.popup = null; - this.editor = null; - this.editing = null; - this.loading = null; - this.listed = false; - this.saving = null; - this.renaming = null; - this.openAfterImport = null; - this.activating = false; - this.forceClose = false; - }); - this.$("#ccFolder").onclick = () => post("reveal", { name: this.editing ?? "" }); - this.$("#ccOff").hidden = kute.settings.data.customCss !== false; - const live = /** @type {HTMLInputElement} */ (this.$("#ccLive")); - live.checked = this.live; - live.onchange = () => { - this.live = live.checked; - this.preview(); - }; + const catalog = await response.json(); + list.replaceChildren(); - const overlay = /** @type {HTMLElement} */ (/** @type {HTMLElement} */ (shadow.host).parentElement); - this.$("#ccPeek").onpointerdown = (event) => { - event.preventDefault(); - overlay.style.opacity = "0"; - window.addEventListener("pointerup", () => { - overlay.style.opacity = ""; - }, { once: true, signal }); - }; + for (const item of catalog) { + const card = document.createElement("div"); + card.className = "storeCard"; - if (this.legacy){ - this.$(".managerPopup").classList.add("legacy"); - this.$("#ccHint").textContent = "Loaded after all of Krunker's styles, so a rule with the same selector wins. " + - "Saved as Documents\\kute\\custom.css. Update Kute to keep several CSS files and switch between them."; - this.$("#ccEditor").textContent = "Loading..."; - post("read"); - return; + if (item.preview) { + const image = document.createElement("img"); + + image.src = item.preview.startsWith("https://") + ? item.preview + : "https://raw.githubusercontent.com/Liamoulee/KSS/main/" + + item.preview.split("/").map(encodeURIComponent).join("/"); + + image.alt = `${item.name} preview`; + image.onerror = () => image.remove(); + + card.append(image); + } + + const title = document.createElement("h3"); + title.textContent = item.name; + + const author = document.createElement("p"); + author.textContent = `By ${item.author}`; + + const description = document.createElement("p"); + description.textContent = item.description ?? ""; + + const button = document.createElement("button"); + button.className = "storeDownloadBtn"; + + let installed = this.files.some( + file => file.name.toLowerCase() === cssName(item.name).toLowerCase() + ); + + /** @param {string} text */ + const setButtonText = (text) => { + button.textContent = text; + }; + + setButtonText(installed ? "Already downloaded" : "Download the CSS"); + if (installed) { + button.classList.add("installed"); + button.disabled = true; + } + + button.onclick = async () => { + installed = this.files.some( + file => file.name.toLowerCase() === cssName(item.name).toLowerCase() + ); + + if (installed) { + setButtonText("Already downloaded"); + button.classList.add("installed"); + button.disabled = true; + return; + } + + button.disabled = true; + setButtonText("Downloading..."); + + try { + const cssResponse = await fetch( + "https://raw.githubusercontent.com/Liamoulee/KSS/main/" + + item.file.split("/").map(encodeURIComponent).join("/") + ); + + if (!cssResponse.ok) { + throw new Error(`HTTP ${cssResponse.status}`); + } + + const content = await cssResponse.text(); + + post("import", { + name: cssName(item.name), + content + }); + + installed = true; + setButtonText("Already downloaded"); + button.classList.add("installed"); + button.disabled = true; + } catch (error) { + console.error("CSS Store import failed:", error); + button.disabled = false; + setButtonText("Try again"); + } + }; + + card.append(title, author, description, button); + list.append(card); } - this.$("#ccNew").onclick = () => this.create(); - this.$("#ccPaste").onclick = () => this.paste(); - const input = /** @type {HTMLInputElement} */ (this.$("#ccImportInput")); - this.$("#ccImport").onclick = () => input.click(); - input.onchange = () => { - this.importFiles([...input.files ?? []]); - input.value = ""; - }; - makeDropTarget(this.$("#ccFiles"), (dropped) => this.importFiles(dropped.map((entry) => entry.file))); - this.$("#ccEditor").textContent = "Loading..."; - post("list"); + if (catalog.length === 0) { + list.textContent = "No CSS available."; + } + } catch (error) { + console.error("CSS Store failed to load:", error); + list.replaceChildren(); + + const errorMessage = document.createElement("p"); + errorMessage.textContent = + "Unable to load the CSS Store. Please try again later."; + + list.append(errorMessage); } +} + + /** * @param {string} selector diff --git a/target/bundle.js b/target/bundle.js index fd153dd3..12a77ac4 100644 --- a/target/bundle.js +++ b/target/bundle.js @@ -1,5 +1,5 @@ -"use strict";(()=>{var Dg=Object.create;var Nr=Object.defineProperty;var qg=Object.getOwnPropertyDescriptor;var Kg=Object.getOwnPropertyNames;var jg=Object.getPrototypeOf,Ug=Object.prototype.hasOwnProperty;var iu=s=>e=>{var t=s[e];if(t)return t();throw new Error("Module not found in bundle: "+e)};var w=(s,e,t)=>()=>{if(t)throw t[0];try{return s&&(e=s(s=0)),e}catch(o){throw t=[o],o}};var we=(s,e)=>()=>{try{return e||s((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},A=(s,e)=>{for(var t in e)Nr(s,t,{get:e[t],enumerable:!0})},Gg=(s,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Kg(e))!Ug.call(s,n)&&n!==t&&Nr(s,n,{get:()=>e[n],enumerable:!(o=qg(e,n))||o.enumerable});return s};var ue=(s,e,t)=>(t=s!=null?Dg(jg(s)):{},Gg(e||!s||!s.__esModule?Nr(t,"default",{value:s,enumerable:!0}):t,s));var Tt,Yo=w(()=>{Tt={autoDetect:{name:"Auto-Detect Best Settings",id:"autoDetect",description:"Tests the client and the game on your PC for about two minutes and picks what runs best. Don't touch mouse or keyboard meanwhile. You can undo it",type:"none",category:"General",button:"Run",buttonAction:"{{kute}}.autoDetect.setUp()",requiresLogin:!0,hostFeature:"autodetect-v2"},autoDetectResult:{name:"Last Auto-Detect Result",id:"autoDetectResult",description:"See what the last run measured and changed, and undo it",type:"none",category:"General",button:"Show",buttonAction:"{{kute}}.autoDetect.showLast()"},hotkeys:{name:"Hotkeys",id:"hotkeys",description:"Change or clear Kute's own keys (new lobby, matchmaker, reload, fullscreen, chat logs) and add keys for toggles",type:"none",category:"General",button:"Change",buttonAction:"{{kute}}.hotkeys.edit()",hostFeature:"hotkeys"},performanceMode:{name:"Disable & Hide All Non-Performance Settings",id:"performanceMode",description:"Turns off everything cosmetic and hides its settings. Turn this off again and all of them come back as they were",type:"checkbox",category:"General",defaultValue:!1,needsRefresh:!0,hostFeature:"performance-mode"},startMode:{name:"Start Mode",id:"startMode",description:"How the window opens when Kute starts",type:"select",category:"General",defaultValue:"Remember Previous",options:["Remember Previous","Borderless Fullscreen","Windowed","Maximized"]},gameFpsLimit:{name:"FPS Limit",id:"gameFpsLimit",description:"Caps your FPS to save power and heat. 0 means unlimited",type:"slider",category:"General",defaultValue:0,min:0,max:2e3,step:5},discordRPC:{name:"Discord Rich Presence",id:"discordRPC",description:"Shows your current mode and map on your Discord profile",type:"checkbox",category:"General",defaultValue:!0,needsRestart:!0},accountManager:{name:"Account Manager",id:"accountManager",description:"Save your Krunker accounts and switch between them from the menu",type:"checkbox",category:"General",defaultValue:!0},market:{name:"Kute Market",id:"market",description:"Enables market and trading features: K values, liquidity grades, trade verdicts and the market analyzer. In return, you allow Kute to see trading stats.",type:"checkbox",category:"General",defaultValue:!0,disabledBy:"disableOnlineFeatures"},obsCapturePlugin:{name:"OBS Capture Plugin",id:"obsCapturePlugin",platforms:["windows"],description:"Adds a Kute Capture source to OBS (close OBS first). For sound, add an Application Audio Capture of 'Kute audio window'",type:"checkbox",category:"General",defaultValue:!1},rawInput:{name:"Raw Input",id:"rawInput",platforms:["windows"],description:"Mouse movement comes straight from the device, without Windows pointer acceleration, and all of it reaches the game, also when you click or scroll mid-flick. Krunker's own Raw Mouse Input follows this setting",type:"checkbox",category:"Game",defaultValue:!0,needsRefresh:!0},rampBoost:{name:"Ramp Boosting",id:"rampBoost",description:"Scrolling makes you jump, for easier ramp boosts. Off in competitive. Turn it off if another tool already does this",type:"checkbox",category:"Game",defaultValue:!1},autoSpec:{name:"Auto Spectate",id:"autoSpec",description:"Joins public matches as a spectator instead of a player",type:"checkbox",category:"Game",defaultValue:!1},hsSound:{name:"Headshot Sound on Every Kill",id:"hsSound",performance:!1,description:"Plays the headshot sound on every kill, not just headshots",category:"Game",type:"checkbox",defaultValue:!1},hpEnemyCounter:{name:"Hardpoint Enemy Counter",id:"hpEnemyCounter",performance:!1,description:"Shows how many enemies are on the point in competitive Hardpoint",type:"checkbox",category:"Game",defaultValue:!0},showPing:{name:"Player List Ping",id:"showPing",performance:!1,description:"Shows everyone's ping next to their name in the player list",type:"checkbox",category:"Game",defaultValue:!0,needsRefresh:!0},realPing:{name:"Real Ping\u2122\uFE0F",id:"realPing",description:"Pings the lobby server directly and shows your real latency",type:"checkbox",category:"Game",defaultValue:!1,needsRestart:!0},matchmaker:{name:"Matchmaker (F6)",id:"matchmaker",description:"F6 joins the lowest ping lobby that matches your filters instead of a random one",type:"checkbox",category:"Game",defaultValue:!0,button:"Filters",buttonAction:"{{kute}}.matchmaker.showFilters()"},rankedAlert:{name:"Ranked Match Alert",id:"rankedAlert",description:"When Krunker's ranked queue finds a match while you are tabbed out, Kute comes to the front",type:"checkbox",category:"Game",defaultValue:!0,button:"Sound",buttonAction:"{{kute}}.queueSound.showOptions()"},accountEndMessage:{name:"Match End Message per Account",id:"accountEndMessage",description:"Remembers Krunker's Match End Message per account, an account without one sends nothing",type:"checkbox",category:"Game",defaultValue:!1,requiresLogin:!0},exitButton:{name:"Exit Button",id:"exitButton",performance:!1,description:"Adds an Exit button to the menu",type:"checkbox",category:"Interface",defaultValue:!0},menuTimer:{name:"Menu Timer",id:"menuTimer",performance:!1,description:"Shows the match timer while you are in the menu",type:"checkbox",category:"Interface",defaultValue:!0},classicMenu:{name:"Classic Menu",id:"classicMenu",performance:!1,description:"Season 9 menu layout, new buttons and features stay",type:"checkbox",category:"Interface",defaultValue:!1},betterChat:{name:"Better Chat",id:"betterChat",performance:!1,description:"Team and all chat in one view. Press Tab to switch where you send",type:"checkbox",category:"Interface",defaultValue:!0},chatLogs:{name:"Chat Logs",id:"chatLogs",description:"Keeps the last 2000 chat lines, also across lobbies, to search and copy. F1 opens them, change it in Hotkeys",type:"checkbox",category:"Interface",defaultValue:!0,button:"Open",buttonAction:"{{kute}}.chatLogs?.open()"},textSelect:{name:"Selectable Chat",id:"textSelect",performance:!1,description:"Lets you select and copy text from the chat",type:"checkbox",category:"Interface",defaultValue:!0},cleanUI:{name:"Cleaner Menu",id:"cleanUI",description:"Hides ads, promos, the Popular Now row and other clutter in the menu",type:"checkbox",category:"Interface",defaultValue:!1},hideBundles:{name:"Hide Bundle Popups",id:"hideBundles",description:"Stops store bundle popups from showing up outside the store",type:"checkbox",category:"Interface",defaultValue:!1},clanColors:{name:"Show Clan Colors",id:"clanColors",performance:!1,description:"Colors the tags of some clans in the player lists",type:"checkbox",category:"Interface",defaultValue:!0,disabledBy:"disableOnlineFeatures"},cuteBadge:{name:"Show Kute Badge",id:"cuteBadge",description:"Shows a badge next to other Kute players. This only affects what you see, others still see yours",type:"checkbox",category:"Interface",defaultValue:!0,disabledBy:"disableOnlineFeatures"},kuteIcons:{name:"Use Kute Icons",id:"kuteIcons",performance:!1,description:"Kute's own icons for counters, ammo, hitmarker, reticle and scope. Your game settings stay untouched",type:"checkbox",category:"Interface",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.kuteIcons.customize()"},hudLayout:{name:"HUD Editor",id:"hudLayout",description:"Move, resize and hide parts of the in-game HUD. Opens a private match while you edit",type:"none",category:"Interface",button:"Edit",buttonAction:"{{kute}}.hudEditor.edit()",requiresLogin:!0},keystrokes:{name:"Keystrokes",id:"keystrokes",performance:!1,description:"Shows your movement keys and mouse in the HUD and lights them up while pressed. Move it with the HUD Editor",type:"checkbox",category:"Interface",defaultValue:!1},spotifyOverlay:{name:"Spotify Overlay",id:"spotifyOverlay",performance:!1,description:"Shows the currently playing Spotify track in the HUD. Move and resize it with the HUD Editor",type:"checkbox",category:"Interface",defaultValue:!1,hostFeature:"spotify"},nukeCounter:{name:"Nuke Counter",id:"nukeCounter",performance:!1,description:"Shows your career nuke total in game. It updates when a match ends",type:"checkbox",category:"Interface",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.nukeCounter.showOptions()"},renderStats:{name:"Present FPS Counter",id:"renderStats",description:"The game counter shows how fast your PC runs the game, this adds the frames that reach your screen",type:"checkbox",category:"Interface",defaultValue:!1,needsRestart:!0,requires:"hardFlip"},kuteCss:{name:"Kute CSS",id:"kuteCss",performance:!1,description:"Kute's own look for menus, settings, HUD and social, with a few cats",type:"checkbox",category:"Customization",defaultValue:!1},motionBlur:{name:"Motion Blur",id:"motionBlur",performance:!1,description:"A slight blur while you turn the camera, the HUD stays sharp. Costs FPS: about 5 % fewer while it blurs",type:"checkbox",category:"Customization",defaultValue:!1},motionBlurStrength:{name:"Motion Blur Strength",id:"motionBlurStrength",performance:null,description:"How long the trail is when Motion Blur is on",type:"slider",category:"Customization",defaultValue:40,min:10,max:100,step:5},customSky:{name:"Custom Sky",id:"customSky",performance:!1,description:"Your own sky color gradient or image on every map. Applies from the next match",type:"checkbox",category:"Customization",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.customSky.showOptions()",hostFeature:"custom-sky"},swapper:{name:"Resource Swapper",id:"swapper",performance:!1,description:"Replaces game files like textures and sounds with the files in your swapper folder",type:"checkbox",category:"Customization",defaultValue:!0,button:"Manage",buttonAction:"{{kute}}.swapperManager.open()",needsRefresh:!0},customCss:{name:"CSS Manager",id:"customCss",performance:!1,description:"Your own CSS on top of Krunker's. Keep several files and switch between them, with a live preview",type:"checkbox",category:"Customization",defaultValue:!0,button:"Edit",buttonAction:"{{kute}}.customCss.open()"},userscripts:{name:"Userscripts",id:"userscripts",description:"Runs your own scripts. Crankshaft and idkr scripts work too",type:"checkbox",category:"Customization",defaultValue:!0,button:"Manage",buttonAction:"{{kute}}.userscriptManager.open()"},blocklist:{name:"URL Blocklist",id:"blocklist",description:"Blocks ads and trackers. Open the file to add your own entries",type:"checkbox",category:"Customization",defaultValue:!0,button:"Open file",buttonAction:"window.chrome.webview.postMessage('open, blocklist')",needsRestart:!0},disableCats:{name:"Disable Cats",id:"disableCats",performance:!0,description:"Blocks the cat models in the maps",type:"checkbox",category:"Customization",defaultValue:!0,needsRefresh:!0},disableVideoSkins:{name:"Disable Video Skins",id:"disableVideoSkins",performance:!0,description:"Video skins like Glitch are not loaded and show black instead, which can save FPS",type:"checkbox",category:"Customization",defaultValue:!1,needsRefresh:!0,hostFeature:"video-skins"},uncapFps:{name:"Uncap FPS",id:"uncapFps",description:"Removes the FPS cap at your monitor's refresh rate",type:"checkbox",category:"Advanced",defaultValue:!0,needsRestart:!0},audioFix:{name:"Fix Audio Stutters",id:"audioFix",description:"For sound that cuts out at high FPS. Moves sounds every 8 ms instead of every sample",type:"checkbox",category:"Advanced",defaultValue:!1,needsRestart:!0,hostFeature:"audio-fix"},angleBackend:{name:"Graphics Backend (ANGLE)",id:"angleBackend",platforms:["windows"],description:"Leave it on Default (D3D11). OpenGL and Vulkan turn off everything the swapchain hook does",type:"select",category:"Advanced",defaultValue:"Default",needsRestart:!0,options:["Default","D3D11","D3D11on12","OpenGL","Vulkan"]},displayServer:{name:"Display Server",id:"displayServer",platforms:["linux"],description:"Leave it on X11, it runs much faster than Wayland for now. X11 also works inside a Wayland session",type:"select",category:"Advanced",defaultValue:"X11",needsRestart:!0,options:["X11","Wayland"]},colorProfile:{name:"Color Profile",id:"colorProfile",description:"Try sRGB if colors look washed out or too strong",type:"select",category:"Advanced",defaultValue:"Default",needsRestart:!0,options:["Default","sRGB","Display P3 D65","Extended sRGB","scRGB linear","HDR10"]},webviewPriority:{name:"Process Priority",id:"webviewPriority",description:"Higher can help a little, but may make your PC less stable",type:"select",category:"Advanced",defaultValue:"Normal",needsRestart:!0,options:["High","Above Normal","Normal","Below Normal","Low","Idle"]},x3dCacheCores:{name:"Keep Kute on the 3D V-Cache cores",id:"x3dCacheCores",description:"Ryzen X3D with two core groups only: steadier frame pacing on the cores with the big cache",type:"checkbox",category:"Advanced",defaultValue:!0,needsRestart:!0,hostFeature:"x3d-cores"},throttle:{name:"CPU Throttling",id:"throttle",description:"Slows the game down on purpose (2 = half speed). Only for an unstable game, an FPS limit is usually better",type:"slider",min:1,max:3,step:.01,category:"Advanced",defaultValue:1},inMenuThrottle:{name:"CPU Throttling in Menu",id:"inMenuThrottle",description:"Same, but only in the menu. It also slows the match that runs behind the menu",type:"slider",min:1,max:3,step:.01,category:"Advanced",defaultValue:1},clearCache:{name:"Clear Cache & Storage",id:"clearCache",description:"Deletes the cache and local storage. This also resets your game settings",type:"none",category:"Advanced",button:"Clear Now",buttonAction:"if(confirm('Are you sure you want to clear cache and local storage?')) { localStorage.clear(); sessionStorage.clear(); window.chrome.webview.postMessage('clear-cache'); }"},hardFlip:{name:"DXGI Swapchain Hook",id:"hardFlip",platforms:["windows"],description:"Present FPS counter and OBS capture. Laptops with two graphics chips may run better without it",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0},laptopPowerBoost:{name:"Laptop Power Boost",id:"laptopPowerBoost",description:"Plugged in laptops only: switches the power mode to performance while Kute runs and puts yours back after",type:"checkbox",category:"Engine",defaultValue:!0,hostFeature:"hybrid-gpu"},primeOffload:{name:"NVIDIA PRIME Offload",id:"primeOffload",platforms:["linux"],description:"Hybrid laptops with the NVIDIA driver: the game renders on the NVIDIA chip instead of the built in one",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"prime-offload"},patchInputPriority:{name:"Input at Normal Priority",id:"patchInputPriority",description:"Chromium patch: mouse input no longer starves the game's server messages. Off brings back the aim freeze",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchFramePacing:{name:"Frame Pacing",id:"patchFramePacing",description:"Chromium patch: the game runs one frame ahead of the screen instead of flooding it. Off brings back the GPU stutter",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchFrameLimiter:{name:"Chromium FPS Limiter",id:"patchFrameLimiter",description:"Chromium patch: holds the FPS limit inside Chromium with the CPU idle, with or without the hook. Off uses the hook's limiter, or a busy wait without the hook",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchRawInputMovement:{name:"Raw Input Keeps Movement",id:"patchRawInputMovement",platforms:["windows"],description:"Chromium patch: no mouse movement is lost on a click. Off drops a few counts at every shot",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchAudioParamCoalesce:{name:"Coalesce Audio Automation",id:"patchAudioParamCoalesce",description:"Chromium patch: the game's per frame sound updates no longer pile up. Off makes FPS drop over a long match",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchCanvasBufferCache:{name:"WebGL Buffer Cache",id:"patchCanvasBufferCache",description:"Chromium patch: keeps three spare frame buffers instead of one. Off makes some starts land in a slow mode",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchHighQoS:{name:"Game Process at High QoS",id:"patchHighQoS",platforms:["windows"],description:"Chromium patch: Windows may not throttle the game's process to save power. Off leaves that to Windows",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},showChangelog:{name:"Show Changelog After Updates",id:"showChangelog",description:"Shows what's new after Kute updates",type:"checkbox",button:"Show Now",buttonAction:"{{kute}}.showChangelogPopup({{kute}}.version)",category:"About",defaultValue:!0},disableOnlineFeatures:{name:"Disable Kute Online Features",id:"disableOnlineFeatures",description:"Nothing is sent to or received from kute.lol. Turns off all Kute badges (yours too) and clan colors",type:"checkbox",category:"About",defaultValue:!1,needsRestart:!0},checkUpdates:{name:"Check For Updates",id:"checkUpdates",description:"Looks for a new Kute version when it starts",type:"checkbox",category:"About",defaultValue:!0,needsRestart:!0},exportClientSettings:{name:"Export Kute Settings",id:"exportClientSettings",description:"Saves Kute's settings, HUD positions, matchmaker filters and hotkeys as a file in Downloads",type:"none",category:"About",button:"Export",buttonAction:"{{kute}}.settingsTransfer.exportFile()"},importClientSettings:{name:"Import Kute Settings",id:"importClientSettings",description:"Loads a file from Export Kute Settings and restarts Kute",type:"none",category:"About",button:"Import",buttonAction:"{{kute}}.settingsTransfer.importFile()"},diagnosticsReport:{name:"Diagnostics Report",id:"diagnosticsReport",description:"Puts what helps fix a problem into one file you can send. You see all of it first, nothing is uploaded",type:"none",category:"About",button:"Create",buttonAction:"{{kute}}.diagnostics.open()",hostFeature:"diagnostics"}}});function $o(s,e){return s.performanceMode===!0&&e in lu}function cu(s){return{...s,...Eo}}function un(s,e){let t=[];for(let[o,n]of Object.entries(lu)){if(n===null)continue;let r=s[o];e?(o in Eo||(Eo[o]=r),s[o]=n):o in Eo&&(s[o]=Eo[o],delete Eo[o]),s[o]!==r&&t.push(o)}return t}var lu,Eo,Co=w(()=>{"use strict";Yo();lu=Object.fromEntries(Object.values(Tt).filter(s=>s.performance!==void 0).map(s=>[s.id,s.performance??null])),Eo={}});function Yg(s){let e="abcdefghijklmnopqrstuvwxyz",t=crypto.getRandomValues(new Uint8Array(s));return Array.from(t,o=>e[o%e.length]).join("")}var d,Ne,du,Ue,F=w(()=>{"use strict";Yo();Co();d={},Ne=new Promise(s=>{function e(t){if(t?.data?.settings||t?.data?.version){if(window.chrome.webview.removeEventListener("message",e),Object.assign(d,t.data),d.settings?.data)for(let o of Object.values(Tt))o.defaultValue!==void 0&&!(o.id in d.settings.data)&&(d.settings.data[o.id]=o.defaultValue);d.settings?.data&&un(d.settings.data,d.settings.data.performanceMode===!0),s(d)}}window.chrome.webview.addEventListener("message",e),window.chrome.webview.postMessage("get-info")}),du=Yg(12);Object.defineProperty(window,du,{value:d,enumerable:!1,writable:!1,configurable:!1});Ue=`window["${du}"]`});function Te(s,e,t=2e3){return new Promise(o=>{let n={timer:0},r=i=>{i.data?.[e]!==void 0&&(clearTimeout(n.timer),window.chrome.webview.removeEventListener("message",r),o(i.data[e]))};n.timer=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),o(null)},t),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(s)})}var _r,$e,U,ke,He,Ae=w(()=>{"use strict";_r=(s,e,t)=>{let o=s.prototype[e];s.prototype[e]=function(...n){let r=t.call(this,n,o);return r===void 0?o.apply(this,n):r}},$e=(s,e=3e4)=>new Promise((t,o)=>{let n=document.querySelector(s);if(n){t(n);return}let r={timer:0},i=new MutationObserver(()=>{let a=document.querySelector(s);a&&(clearTimeout(r.timer),i.disconnect(),t(a))});r.timer=setTimeout(()=>{i.disconnect(),o(new Error(`element never showed up: ${s}`))},e),i.observe(document.body,{childList:!0,subtree:!0})}),U=(s,e=document)=>{let t=e.querySelector(s);if(!t)throw new Error(`element not found: ${s}`);return t},ke=(s,e=document)=>U(s,e),He=()=>!!document.querySelector(".cmpTmHed")});var pu={};A(pu,{setRampBoost:()=>Zt,syncScrollBinds:()=>zr});function Zt(s){uu=s,window.chrome.webview.postMessage(`toggle-rboost, ${s}`)}function zr(){let s=!1;try{s=Object.keys(localStorage).some(e=>e.startsWith("cont_")&&localStorage.getItem(e)===Xg)}catch{return}s!==Br&&(Br=s,d.hostFeatures?.includes("scroll-binds")&&window.chrome.webview.postMessage(`wheel-to-page, ${s}`))}var Xg,uu,Br,pn=w(()=>{"use strict";F();Xg="20000",uu=!1;window.addEventListener("wheel",s=>{!uu||!document.pointerLockElement||!d.hostFeatures?.includes("ramp-boost")||(Br||(s.stopImmediatePropagation(),s.preventDefault()),window.chrome.webview.postMessage(`ramp-wheel, ${(s.deltaY||s.deltaX)<0?1:-1}`))},{capture:!0,passive:!1})});var fu={};A(fu,{claimAltShoot:()=>Or,hostSupports:()=>mn,prepareShootBind:()=>Fr,syncLeftClick:()=>Jo});function Hr(s){return Number(localStorage.getItem(s)??-1)}function mu(){let s=Hr(hn);return s!==-1&&s!==Xo}function mn(){return d.hostFeatures?.includes(Zg)===!0}function Or(){return!mu()||!mn()}function Fr(){if(!mu()){localStorage.setItem(hn,String(Xo));return}Ne.then(()=>{mn()||localStorage.setItem(hn,String(Xo))})}function Jo(){if(!mn())return;let s=Hr(hn)===Xo||Hr(Jg)===Xo;s!==hu&&(hu=s,window.chrome.webview.postMessage(`left-click-f20, ${s}`))}var Xo,hn,Jg,Zg,hu,fn=w(()=>{"use strict";F();Xo=131,hn="cont_shoot1Key_alt",Jg="cont_shoot1Key",Zg="left-click-f20"});var bu={};A(bu,{SLOTS:()=>Mo,postUrls:()=>Qt});function Dr(s){try{return localStorage.getItem(s)}catch{return null}}function eb(s){try{let e=JSON.parse(Dr(s)??"[]");return Array.isArray(e)?e.map(t=>Array.isArray(t)?t[1]:null).filter(t=>typeof t=="string").slice(0,Qg):[]}catch{return[]}}function Qt(){let s={};for(let t of Mo){let o=[];for(let i of t.settings)o.push(Dr(`kro_setngss_${i}`)??"");for(let i of t.keys??[])o.push(Dr(i)??"");for(let i of t.lists??[])o.push(...eb(i));let n=t.element?document.getElementById(t.element):null;n instanceof HTMLImageElement&&o.push(n.src);let r=[...new Set(o)].filter(i=>i.startsWith("http"));r.length>0&&(s[t.id]=r)}let e=JSON.stringify(s);e!==gu&&(gu=e,window.chrome.webview.postMessage(`icon-urls ${e}`))}var Zo,Mo,Qg,gu,gn=w(()=>{"use strict";Zo={id:"showUI",name:"Show UI",kind:"checkbox"},Mo=[{id:"kills",file:"kills.png",name:"Kill counter",settings:["customKills"],element:"killsIcon",hiddenBy:[Zo,{id:"showKillC",name:"Show Kill Counter",kind:"checkbox"}]},{id:"deaths",file:"deaths.png",name:"Death counter",settings:["customDeaths"],element:"deathsIcon",hiddenBy:[Zo,{id:"showDeaths",name:"Show Death Counter",kind:"checkbox"}]},{id:"streak",file:"streak.png",name:"Streak counter",settings:["customStreak"],element:"streakIcon",hiddenBy:[Zo,{id:"showStreak",name:"Show Streak Counter",kind:"checkbox"}]},{id:"kdr",file:"kdr.png",name:"K/D counter",settings:[],element:"kdIcon",hiddenBy:[Zo,{id:"showKD",name:"Show K/D Counter",kind:"checkbox"}]},{id:"ammo",file:"ammo.png",name:"Ammo",settings:["customAmmo"],element:"ammoIcon",hiddenBy:[Zo]},{id:"hitmarker",file:"hitmarker.png",name:"Hitmarker",settings:["customHitmarker"],hiddenBy:[{id:"hitm",name:"Hitmarker: Show",kind:"checkbox"},{id:"hitOpac",name:"Hitmarker: Opacity",kind:"opacity"}]},{id:"reticle",file:"reticle.png",name:"Reticle",settings:[],keys:["savedReticle"],lists:["krk_custRet"],element:"aimDot",hiddenBy:[]},{id:"scope",file:"scope.png",name:"Scope",settings:[],keys:["savedScope"],lists:["krk_custScps"],element:"recticleImg",hiddenBy:[{id:"scopeOpac",name:"Scope Opacity",kind:"opacity"}]}],Qg=30;gu=""});var vu={};A(vu,{canLoadLive:()=>At,loadScripts:()=>To,registry:()=>Xe});var Xe,At,To,Qo=w(()=>{"use strict";F();Xe=window.__kuteUserscripts??null,At=()=>!!(Xe&&d.hostFeatures?.includes("userscripts-live")),To=(s,e,t)=>{window.chrome.webview.postMessage(`scripts-load ${JSON.stringify({...s?{keys:s}:{},replace:e,start:t})}`)}});var ku={};A(ku,{default:()=>Lt,hostSupportsCustomCss:()=>es});var wu,es,qr,Lt,bn=w(()=>{"use strict";F();wu=/@import\s+(?:url\([^)]*\)|"[^"]*"|'[^']*')[^;]*;?/gi,es=()=>d.hostFeatures?.includes("custom-css")??!1,qr=class{constructor(){this.saved=String(window.__kuteCustomCss??""),this.enabled=!0,this.sheet=null,this.importStyle=null,this.importText="",this.waitingForBody=!1,this.saved&&this.apply(this.saved),Ne.then(()=>{d.settings.toggleCustomCss=e=>this.toggle(e),d.settings.data.customCss===!1?this.toggle(!1):!this.saved&&es()&&this.load().then(e=>this.apply(e))})}load(){return new Promise(e=>{let t=o=>{typeof o.data?.customCss?.content=="string"&&(window.chrome.webview.removeEventListener("message",t),this.saved=o.data.customCss.content,e(this.saved))};window.chrome.webview.addEventListener("message",t),window.chrome.webview.postMessage("css-read")})}apply(e){if(!this.enabled)return;let t=e.match(wu)??[],o=t.length?e.replace(wu,""):e;if(!this.sheet){if(!o.trim())return;this.sheet=new CSSStyleSheet,document.adoptedStyleSheets=[...document.adoptedStyleSheets,this.sheet]}this.sheet.replaceSync(o),this.setImports(t.join(` -`))}setImports(e){if(this.importText=e,!(!e&&!this.importStyle)){if(document.readyState==="loading"){if(this.waitingForBody)return;this.waitingForBody=!0,document.addEventListener("DOMContentLoaded",()=>this.setImports(this.importText),{once:!0});return}this.importStyle||(this.importStyle=document.createElement("style"),document.documentElement.append(this.importStyle)),this.importStyle.textContent!==e&&(this.importStyle.textContent=e)}}toggle(e){if(this.enabled=e,!e){this.sheet?.replaceSync(""),this.setImports("");return}this.saved?this.apply(this.saved):es()&&this.load().then(t=>this.apply(t))}markSaved(e){this.saved=e,this.apply(e)}revert(){this.enabled&&this.apply(this.saved)}},Lt=new qr});var $u={};A($u,{holdRestart:()=>vn,restart:()=>Ao});function Ao(){location.assign("https://krunker.io/")}function vn(s){Su=Date.now()+s}function Eu(){return localStorage.getItem(yu)!==null||document.cookie.includes(`${yu}=`)}function tb(){try{return!!window.getGameActivity?.()?.id}catch{return!1}}function ob(s){let e=Date.now(),t=0,o=setInterval(()=>{if(tb()){sessionStorage.removeItem(Kr),clearInterval(o);return}if(Date.now()-e>9e4){clearInterval(o);return}if(!s||!Eu()||(t===0&&(t=Date.now()),Date.now()-t<1500))return;clearInterval(o);let n=Number(sessionStorage.getItem(Kr)??0);n>=2||(sessionStorage.setItem(Kr,String(n+1)),console.log("[kute] session: no lobby after the frvr login, reloading"),Ao())},1e3)}function sb(){let s=localStorage.getItem(xu)!==null,e=!1;setInterval(()=>{if(e){document.pointerLockElement||Ao();return}let t=localStorage.getItem(xu)!==null;s&&!t&&Date.now()>Su&&(e=!0,console.log("[kute] session: logged out, reloading")),s=t},1e3)}var yu,xu,Kr,Su,wn=w(()=>{"use strict";yu="__FRVR_auth_refresh_token",xu="krunker_token",Kr="kute_hang_reloads";Su=0;location.hostname==="krunker.io"&&location.pathname==="/"&&(ob(!Eu()),sb())});var Tu={};A(Tu,{DEFAULT_LOAD:()=>eo,cpuChecksum:()=>Wr,createScene:()=>Gr});function db(s){let e=document.createElement("canvas");e.width=640,e.height=60+s.length*34;let t=e.getContext("2d");return t&&(t.fillStyle="rgba(30, 30, 30, 0.92)",t.beginPath(),t.roundRect(0,0,e.width,e.height,18),t.fill(),t.textAlign="center",t.textBaseline="middle",s.forEach((o,n)=>{t.font=n===0?"26px Consolas, monospace":"18px Consolas, monospace",t.fillStyle=n===0?"#35e0e8":"#bbbbbb",t.fillText(o,e.width/2,48+n*34)})),e}function Cu(s,e,t){let o=s.createShader(e);if(!o)throw new Error("cannot create shader");if(s.shaderSource(o,t),s.compileShader(o),!s.getShaderParameter(o,s.COMPILE_STATUS))throw new Error(s.getShaderInfoLog(o)??"shader compile failed");return o}function jr(s,e,t){let o=s.createProgram();if(s.attachShader(o,Cu(s,s.VERTEX_SHADER,e)),s.attachShader(o,Cu(s,s.FRAGMENT_SHADER,t)),s.linkProgram(o),!s.getProgramParameter(o,s.LINK_STATUS))throw new Error(s.getProgramInfoLog(o)??"program link failed");return o}function ub(s){let e=[],t=[];for(let o=0;o<=s;o++){let n=o/s*Math.PI;for(let r=0;r<=s;r++){let i=r/s*Math.PI*2;e.push(Math.cos(i)*Math.sin(n),Math.cos(n),Math.sin(i)*Math.sin(n))}}for(let o=0;o0?db(t):null,g=m?jr(o,lb,cb):null,b=g?o.getUniformLocation(g,"uScale"):null,v=o.createVertexArray();m&&(o.bindVertexArray(v),o.bindBuffer(o.ARRAY_BUFFER,o.createBuffer()),o.bufferData(o.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,1]),o.STATIC_DRAW),o.enableVertexAttribArray(0),o.vertexAttribPointer(0,2,o.FLOAT,!1,0,0),o.bindVertexArray(null),o.bindTexture(o.TEXTURE_2D,o.createTexture()),o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,m),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE));let k=1337,E=()=>(k=k*1664525+1013904223>>>0,k/4294967296),L=Array.from({length:e.draws},()=>({x:(E()-.5)*80,y:(E()-.5)*50,z:(E()-.5)*40,scale:.6+E()*1.6,spin:.2+E()*1.5,red:.3+E()*.7,green:.3+E()*.7,blue:.3+E()*.7})),x=new Float32Array(16),$=new Float32Array(16),I=new Float32Array(16),_=new Float32Array(16);return $[0]=1,$[5]=1,$[10]=1,$[15]=1,$[14]=-60,{resize(H,G){s.width=Math.max(1,Math.round(H)),s.height=Math.max(1,Math.round(G)),o.viewport(0,0,s.width,s.height),pb(x,Math.PI/2,s.width/s.height,.1,500),hb(I,x,$)},render(H){let G=H*.001;fb(e.cpuIterations),o.enable(o.DEPTH_TEST),o.disable(o.BLEND),o.clearColor(.08,.09,.12,1),o.clear(o.COLOR_BUFFER_BIT|o.DEPTH_BUFFER_BIT),o.useProgram(n),o.bindVertexArray(p),o.uniformMatrix4fv(i,!1,I);for(let J of L)mb(_,J.x,J.y,J.z,G*J.spin,J.scale),o.uniformMatrix4fv(r,!1,_),o.uniform3f(a,J.red,J.green,J.blue),o.drawElements(o.TRIANGLES,h.indices.length,o.UNSIGNED_SHORT,0);o.disable(o.DEPTH_TEST),o.enable(o.BLEND),o.blendFunc(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA),o.useProgram(l),o.bindVertexArray(f),o.uniform1f(c,G);for(let J=0;J{"use strict";eo={draws:1200,meshSegments:10,overdraw:4,cpuIterations:2e5},nb=`#version 300 es +"use strict";(()=>{var Fg=Object.create;var _r=Object.defineProperty;var qg=Object.getOwnPropertyDescriptor;var Kg=Object.getOwnPropertyNames;var jg=Object.getPrototypeOf,Ug=Object.prototype.hasOwnProperty;var iu=s=>e=>{var t=s[e];if(t)return t();throw new Error("Module not found in bundle: "+e)};var w=(s,e,t)=>()=>{if(t)throw t[0];try{return s&&(e=s(s=0)),e}catch(o){throw t=[o],o}};var we=(s,e)=>()=>{try{return e||s((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},A=(s,e)=>{for(var t in e)_r(s,t,{get:e[t],enumerable:!0})},Gg=(s,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Kg(e))!Ug.call(s,n)&&n!==t&&_r(s,n,{get:()=>e[n],enumerable:!(o=qg(e,n))||o.enumerable});return s};var ue=(s,e,t)=>(t=s!=null?Fg(jg(s)):{},Gg(e||!s||!s.__esModule?_r(t,"default",{value:s,enumerable:!0}):t,s));var Tt,Xo=w(()=>{Tt={autoDetect:{name:"Auto-Detect Best Settings",id:"autoDetect",description:"Tests the client and the game on your PC for about two minutes and picks what runs best. Don't touch mouse or keyboard meanwhile. You can undo it",type:"none",category:"General",button:"Run",buttonAction:"{{kute}}.autoDetect.setUp()",requiresLogin:!0,hostFeature:"autodetect-v2"},autoDetectResult:{name:"Last Auto-Detect Result",id:"autoDetectResult",description:"See what the last run measured and changed, and undo it",type:"none",category:"General",button:"Show",buttonAction:"{{kute}}.autoDetect.showLast()"},hotkeys:{name:"Hotkeys",id:"hotkeys",description:"Change or clear Kute's own keys (new lobby, matchmaker, reload, fullscreen, chat logs) and add keys for toggles",type:"none",category:"General",button:"Change",buttonAction:"{{kute}}.hotkeys.edit()",hostFeature:"hotkeys"},performanceMode:{name:"Disable & Hide All Non-Performance Settings",id:"performanceMode",description:"Turns off everything cosmetic and hides its settings. Turn this off again and all of them come back as they were",type:"checkbox",category:"General",defaultValue:!1,needsRefresh:!0,hostFeature:"performance-mode"},startMode:{name:"Start Mode",id:"startMode",description:"How the window opens when Kute starts",type:"select",category:"General",defaultValue:"Remember Previous",options:["Remember Previous","Borderless Fullscreen","Windowed","Maximized"]},gameFpsLimit:{name:"FPS Limit",id:"gameFpsLimit",description:"Caps your FPS to save power and heat. 0 means unlimited",type:"slider",category:"General",defaultValue:0,min:0,max:2e3,step:5},discordRPC:{name:"Discord Rich Presence",id:"discordRPC",description:"Shows your current mode and map on your Discord profile",type:"checkbox",category:"General",defaultValue:!0,needsRestart:!0},accountManager:{name:"Account Manager",id:"accountManager",description:"Save your Krunker accounts and switch between them from the menu",type:"checkbox",category:"General",defaultValue:!0},market:{name:"Kute Market",id:"market",description:"Enables market and trading features: K values, liquidity grades, trade verdicts and the market analyzer. In return, you allow Kute to see trading stats.",type:"checkbox",category:"General",defaultValue:!0,disabledBy:"disableOnlineFeatures"},obsCapturePlugin:{name:"OBS Capture Plugin",id:"obsCapturePlugin",platforms:["windows"],description:"Adds a Kute Capture source to OBS (close OBS first). For sound, add an Application Audio Capture of 'Kute audio window'",type:"checkbox",category:"General",defaultValue:!1},rawInput:{name:"Raw Input",id:"rawInput",platforms:["windows"],description:"Mouse movement comes straight from the device, without Windows pointer acceleration, and all of it reaches the game, also when you click or scroll mid-flick. Krunker's own Raw Mouse Input follows this setting",type:"checkbox",category:"Game",defaultValue:!0,needsRefresh:!0},rampBoost:{name:"Ramp Boosting",id:"rampBoost",description:"Scrolling makes you jump, for easier ramp boosts. Off in competitive. Turn it off if another tool already does this",type:"checkbox",category:"Game",defaultValue:!1},autoSpec:{name:"Auto Spectate",id:"autoSpec",description:"Joins public matches as a spectator instead of a player",type:"checkbox",category:"Game",defaultValue:!1},hsSound:{name:"Headshot Sound on Every Kill",id:"hsSound",performance:!1,description:"Plays the headshot sound on every kill, not just headshots",category:"Game",type:"checkbox",defaultValue:!1},hpEnemyCounter:{name:"Hardpoint Enemy Counter",id:"hpEnemyCounter",performance:!1,description:"Shows how many enemies are on the point in competitive Hardpoint",type:"checkbox",category:"Game",defaultValue:!0},showPing:{name:"Player List Ping",id:"showPing",performance:!1,description:"Shows everyone's ping next to their name in the player list",type:"checkbox",category:"Game",defaultValue:!0,needsRefresh:!0},realPing:{name:"Real Ping\u2122\uFE0F",id:"realPing",description:"Pings the lobby server directly and shows your real latency",type:"checkbox",category:"Game",defaultValue:!1,needsRestart:!0},matchmaker:{name:"Matchmaker (F6)",id:"matchmaker",description:"F6 joins the lowest ping lobby that matches your filters instead of a random one",type:"checkbox",category:"Game",defaultValue:!0,button:"Filters",buttonAction:"{{kute}}.matchmaker.showFilters()"},rankedAlert:{name:"Ranked Match Alert",id:"rankedAlert",description:"When Krunker's ranked queue finds a match while you are tabbed out, Kute comes to the front",type:"checkbox",category:"Game",defaultValue:!0,button:"Sound",buttonAction:"{{kute}}.queueSound.showOptions()"},accountEndMessage:{name:"Match End Message per Account",id:"accountEndMessage",description:"Remembers Krunker's Match End Message per account, an account without one sends nothing",type:"checkbox",category:"Game",defaultValue:!1,requiresLogin:!0},exitButton:{name:"Exit Button",id:"exitButton",performance:!1,description:"Adds an Exit button to the menu",type:"checkbox",category:"Interface",defaultValue:!0},menuTimer:{name:"Menu Timer",id:"menuTimer",performance:!1,description:"Shows the match timer while you are in the menu",type:"checkbox",category:"Interface",defaultValue:!0},classicMenu:{name:"Classic Menu",id:"classicMenu",performance:!1,description:"Season 9 menu layout, new buttons and features stay",type:"checkbox",category:"Interface",defaultValue:!1},betterChat:{name:"Better Chat",id:"betterChat",performance:!1,description:"Team and all chat in one view. Press Tab to switch where you send",type:"checkbox",category:"Interface",defaultValue:!0},chatLogs:{name:"Chat Logs",id:"chatLogs",description:"Keeps the last 2000 chat lines, also across lobbies, to search and copy. F1 opens them, change it in Hotkeys",type:"checkbox",category:"Interface",defaultValue:!0,button:"Open",buttonAction:"{{kute}}.chatLogs?.open()"},textSelect:{name:"Selectable Chat",id:"textSelect",performance:!1,description:"Lets you select and copy text from the chat",type:"checkbox",category:"Interface",defaultValue:!0},cleanUI:{name:"Cleaner Menu",id:"cleanUI",description:"Hides ads, promos, the Popular Now row and other clutter in the menu",type:"checkbox",category:"Interface",defaultValue:!1},hideBundles:{name:"Hide Bundle Popups",id:"hideBundles",description:"Stops store bundle popups from showing up outside the store",type:"checkbox",category:"Interface",defaultValue:!1},clanColors:{name:"Show Clan Colors",id:"clanColors",performance:!1,description:"Colors the tags of some clans in the player lists",type:"checkbox",category:"Interface",defaultValue:!0,disabledBy:"disableOnlineFeatures"},cuteBadge:{name:"Show Kute Badge",id:"cuteBadge",description:"Shows a badge next to other Kute players. This only affects what you see, others still see yours",type:"checkbox",category:"Interface",defaultValue:!0,disabledBy:"disableOnlineFeatures"},kuteIcons:{name:"Use Kute Icons",id:"kuteIcons",performance:!1,description:"Kute's own icons for counters, ammo, hitmarker, reticle and scope. Your game settings stay untouched",type:"checkbox",category:"Interface",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.kuteIcons.customize()"},hudLayout:{name:"HUD Editor",id:"hudLayout",description:"Move, resize and hide parts of the in-game HUD. Opens a private match while you edit",type:"none",category:"Interface",button:"Edit",buttonAction:"{{kute}}.hudEditor.edit()",requiresLogin:!0},keystrokes:{name:"Keystrokes",id:"keystrokes",performance:!1,description:"Shows your movement keys and mouse in the HUD and lights them up while pressed. Move it with the HUD Editor",type:"checkbox",category:"Interface",defaultValue:!1},spotifyOverlay:{name:"Spotify Overlay",id:"spotifyOverlay",performance:!1,description:"Shows the currently playing Spotify track in the HUD. Move and resize it with the HUD Editor",type:"checkbox",category:"Interface",defaultValue:!1,hostFeature:"spotify"},nukeCounter:{name:"Nuke Counter",id:"nukeCounter",performance:!1,description:"Shows your career nuke total in game. It updates when a match ends",type:"checkbox",category:"Interface",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.nukeCounter.showOptions()"},renderStats:{name:"Present FPS Counter",id:"renderStats",description:"The game counter shows how fast your PC runs the game, this adds the frames that reach your screen",type:"checkbox",category:"Interface",defaultValue:!1,needsRestart:!0,requires:"hardFlip"},kuteCss:{name:"Kute CSS",id:"kuteCss",performance:!1,description:"Kute's own look for menus, settings, HUD and social, with a few cats",type:"checkbox",category:"Customization",defaultValue:!1},motionBlur:{name:"Motion Blur",id:"motionBlur",performance:!1,description:"A slight blur while you turn the camera, the HUD stays sharp. Costs FPS: about 5 % fewer while it blurs",type:"checkbox",category:"Customization",defaultValue:!1},motionBlurStrength:{name:"Motion Blur Strength",id:"motionBlurStrength",performance:null,description:"How long the trail is when Motion Blur is on",type:"slider",category:"Customization",defaultValue:40,min:10,max:100,step:5},customSky:{name:"Custom Sky",id:"customSky",performance:!1,description:"Your own sky color gradient or image on every map. Applies from the next match",type:"checkbox",category:"Customization",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.customSky.showOptions()",hostFeature:"custom-sky"},swapper:{name:"Resource Swapper",id:"swapper",performance:!1,description:"Replaces game files like textures and sounds with the files in your swapper folder",type:"checkbox",category:"Customization",defaultValue:!0,button:"Manage",buttonAction:"{{kute}}.swapperManager.open()",needsRefresh:!0},customCss:{name:"CSS Manager",id:"customCss",performance:!1,description:"Your own CSS on top of Krunker's. Keep several files and switch between them, with a live preview",type:"checkbox",category:"Customization",defaultValue:!0,button:"Edit",buttonAction:"{{kute}}.customCss.open()"},userscripts:{name:"Userscripts",id:"userscripts",description:"Runs your own scripts. Crankshaft and idkr scripts work too",type:"checkbox",category:"Customization",defaultValue:!0,button:"Manage",buttonAction:"{{kute}}.userscriptManager.open()"},blocklist:{name:"URL Blocklist",id:"blocklist",description:"Blocks ads and trackers. Open the file to add your own entries",type:"checkbox",category:"Customization",defaultValue:!0,button:"Open file",buttonAction:"window.chrome.webview.postMessage('open, blocklist')",needsRestart:!0},disableCats:{name:"Disable Cats",id:"disableCats",performance:!0,description:"Blocks the cat models in the maps",type:"checkbox",category:"Customization",defaultValue:!0,needsRefresh:!0},disableVideoSkins:{name:"Disable Video Skins",id:"disableVideoSkins",performance:!0,description:"Video skins like Glitch are not loaded and show black instead, which can save FPS",type:"checkbox",category:"Customization",defaultValue:!1,needsRefresh:!0,hostFeature:"video-skins"},uncapFps:{name:"Uncap FPS",id:"uncapFps",description:"Removes the FPS cap at your monitor's refresh rate",type:"checkbox",category:"Advanced",defaultValue:!0,needsRestart:!0},audioFix:{name:"Fix Audio Stutters",id:"audioFix",description:"For sound that cuts out at high FPS. Moves sounds every 8 ms instead of every sample",type:"checkbox",category:"Advanced",defaultValue:!1,needsRestart:!0,hostFeature:"audio-fix"},angleBackend:{name:"Graphics Backend (ANGLE)",id:"angleBackend",platforms:["windows"],description:"Leave it on Default (D3D11). OpenGL and Vulkan turn off everything the swapchain hook does",type:"select",category:"Advanced",defaultValue:"Default",needsRestart:!0,options:["Default","D3D11","D3D11on12","OpenGL","Vulkan"]},displayServer:{name:"Display Server",id:"displayServer",platforms:["linux"],description:"Leave it on X11, it runs much faster than Wayland for now. X11 also works inside a Wayland session",type:"select",category:"Advanced",defaultValue:"X11",needsRestart:!0,options:["X11","Wayland"]},colorProfile:{name:"Color Profile",id:"colorProfile",description:"Try sRGB if colors look washed out or too strong",type:"select",category:"Advanced",defaultValue:"Default",needsRestart:!0,options:["Default","sRGB","Display P3 D65","Extended sRGB","scRGB linear","HDR10"]},webviewPriority:{name:"Process Priority",id:"webviewPriority",description:"Higher can help a little, but may make your PC less stable",type:"select",category:"Advanced",defaultValue:"Normal",needsRestart:!0,options:["High","Above Normal","Normal","Below Normal","Low","Idle"]},x3dCacheCores:{name:"Keep Kute on the 3D V-Cache cores",id:"x3dCacheCores",description:"Ryzen X3D with two core groups only: steadier frame pacing on the cores with the big cache",type:"checkbox",category:"Advanced",defaultValue:!0,needsRestart:!0,hostFeature:"x3d-cores"},throttle:{name:"CPU Throttling",id:"throttle",description:"Slows the game down on purpose (2 = half speed). Only for an unstable game, an FPS limit is usually better",type:"slider",min:1,max:3,step:.01,category:"Advanced",defaultValue:1},inMenuThrottle:{name:"CPU Throttling in Menu",id:"inMenuThrottle",description:"Same, but only in the menu. It also slows the match that runs behind the menu",type:"slider",min:1,max:3,step:.01,category:"Advanced",defaultValue:1},clearCache:{name:"Clear Cache & Storage",id:"clearCache",description:"Deletes the cache and local storage. This also resets your game settings",type:"none",category:"Advanced",button:"Clear Now",buttonAction:"if(confirm('Are you sure you want to clear cache and local storage?')) { localStorage.clear(); sessionStorage.clear(); window.chrome.webview.postMessage('clear-cache'); }"},hardFlip:{name:"DXGI Swapchain Hook",id:"hardFlip",platforms:["windows"],description:"Present FPS counter and OBS capture. Laptops with two graphics chips may run better without it",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0},laptopPowerBoost:{name:"Laptop Power Boost",id:"laptopPowerBoost",description:"Plugged in laptops only: switches the power mode to performance while Kute runs and puts yours back after",type:"checkbox",category:"Engine",defaultValue:!0,hostFeature:"hybrid-gpu"},primeOffload:{name:"NVIDIA PRIME Offload",id:"primeOffload",platforms:["linux"],description:"Hybrid laptops with the NVIDIA driver: the game renders on the NVIDIA chip instead of the built in one",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"prime-offload"},patchInputPriority:{name:"Input at Normal Priority",id:"patchInputPriority",description:"Chromium patch: mouse input no longer starves the game's server messages. Off brings back the aim freeze",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchFramePacing:{name:"Frame Pacing",id:"patchFramePacing",description:"Chromium patch: the game runs one frame ahead of the screen instead of flooding it. Off brings back the GPU stutter",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchFrameLimiter:{name:"Chromium FPS Limiter",id:"patchFrameLimiter",description:"Chromium patch: holds the FPS limit inside Chromium with the CPU idle, with or without the hook. Off uses the hook's limiter, or a busy wait without the hook",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchRawInputMovement:{name:"Raw Input Keeps Movement",id:"patchRawInputMovement",platforms:["windows"],description:"Chromium patch: no mouse movement is lost on a click. Off drops a few counts at every shot",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchAudioParamCoalesce:{name:"Coalesce Audio Automation",id:"patchAudioParamCoalesce",description:"Chromium patch: the game's per frame sound updates no longer pile up. Off makes FPS drop over a long match",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchCanvasBufferCache:{name:"WebGL Buffer Cache",id:"patchCanvasBufferCache",description:"Chromium patch: keeps three spare frame buffers instead of one. Off makes some starts land in a slow mode",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchHighQoS:{name:"Game Process at High QoS",id:"patchHighQoS",platforms:["windows"],description:"Chromium patch: Windows may not throttle the game's process to save power. Off leaves that to Windows",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},showChangelog:{name:"Show Changelog After Updates",id:"showChangelog",description:"Shows what's new after Kute updates",type:"checkbox",button:"Show Now",buttonAction:"{{kute}}.showChangelogPopup({{kute}}.version)",category:"About",defaultValue:!0},disableOnlineFeatures:{name:"Disable Kute Online Features",id:"disableOnlineFeatures",description:"Nothing is sent to or received from kute.lol. Turns off all Kute badges (yours too) and clan colors",type:"checkbox",category:"About",defaultValue:!1,needsRestart:!0},checkUpdates:{name:"Check For Updates",id:"checkUpdates",description:"Looks for a new Kute version when it starts",type:"checkbox",category:"About",defaultValue:!0,needsRestart:!0},exportClientSettings:{name:"Export Kute Settings",id:"exportClientSettings",description:"Saves Kute's settings, HUD positions, matchmaker filters and hotkeys as a file in Downloads",type:"none",category:"About",button:"Export",buttonAction:"{{kute}}.settingsTransfer.exportFile()"},importClientSettings:{name:"Import Kute Settings",id:"importClientSettings",description:"Loads a file from Export Kute Settings and restarts Kute",type:"none",category:"About",button:"Import",buttonAction:"{{kute}}.settingsTransfer.importFile()"},diagnosticsReport:{name:"Diagnostics Report",id:"diagnosticsReport",description:"Puts what helps fix a problem into one file you can send. You see all of it first, nothing is uploaded",type:"none",category:"About",button:"Create",buttonAction:"{{kute}}.diagnostics.open()",hostFeature:"diagnostics"}}});function $o(s,e){return s.performanceMode===!0&&e in lu}function cu(s){return{...s,...Eo}}function pn(s,e){let t=[];for(let[o,n]of Object.entries(lu)){if(n===null)continue;let r=s[o];e?(o in Eo||(Eo[o]=r),s[o]=n):o in Eo&&(s[o]=Eo[o],delete Eo[o]),s[o]!==r&&t.push(o)}return t}var lu,Eo,Co=w(()=>{"use strict";Xo();lu=Object.fromEntries(Object.values(Tt).filter(s=>s.performance!==void 0).map(s=>[s.id,s.performance??null])),Eo={}});function Yg(s){let e="abcdefghijklmnopqrstuvwxyz",t=crypto.getRandomValues(new Uint8Array(s));return Array.from(t,o=>e[o%e.length]).join("")}var u,Ne,du,Ue,D=w(()=>{"use strict";Xo();Co();u={},Ne=new Promise(s=>{function e(t){if(t?.data?.settings||t?.data?.version){if(window.chrome.webview.removeEventListener("message",e),Object.assign(u,t.data),u.settings?.data)for(let o of Object.values(Tt))o.defaultValue!==void 0&&!(o.id in u.settings.data)&&(u.settings.data[o.id]=o.defaultValue);u.settings?.data&&pn(u.settings.data,u.settings.data.performanceMode===!0),s(u)}}window.chrome.webview.addEventListener("message",e),window.chrome.webview.postMessage("get-info")}),du=Yg(12);Object.defineProperty(window,du,{value:u,enumerable:!1,writable:!1,configurable:!1});Ue=`window["${du}"]`});function Te(s,e,t=2e3){return new Promise(o=>{let n={timer:0},r=i=>{i.data?.[e]!==void 0&&(clearTimeout(n.timer),window.chrome.webview.removeEventListener("message",r),o(i.data[e]))};n.timer=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),o(null)},t),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(s)})}var Br,$e,U,ke,He,Ae=w(()=>{"use strict";Br=(s,e,t)=>{let o=s.prototype[e];s.prototype[e]=function(...n){let r=t.call(this,n,o);return r===void 0?o.apply(this,n):r}},$e=(s,e=3e4)=>new Promise((t,o)=>{let n=document.querySelector(s);if(n){t(n);return}let r={timer:0},i=new MutationObserver(()=>{let a=document.querySelector(s);a&&(clearTimeout(r.timer),i.disconnect(),t(a))});r.timer=setTimeout(()=>{i.disconnect(),o(new Error(`element never showed up: ${s}`))},e),i.observe(document.body,{childList:!0,subtree:!0})}),U=(s,e=document)=>{let t=e.querySelector(s);if(!t)throw new Error(`element not found: ${s}`);return t},ke=(s,e=document)=>U(s,e),He=()=>!!document.querySelector(".cmpTmHed")});var pu={};A(pu,{setRampBoost:()=>Zt,syncScrollBinds:()=>Hr});function Zt(s){uu=s,window.chrome.webview.postMessage(`toggle-rboost, ${s}`)}function Hr(){let s=!1;try{s=Object.keys(localStorage).some(e=>e.startsWith("cont_")&&localStorage.getItem(e)===Xg)}catch{return}s!==zr&&(zr=s,u.hostFeatures?.includes("scroll-binds")&&window.chrome.webview.postMessage(`wheel-to-page, ${s}`))}var Xg,uu,zr,hn=w(()=>{"use strict";D();Xg="20000",uu=!1;window.addEventListener("wheel",s=>{!uu||!document.pointerLockElement||!u.hostFeatures?.includes("ramp-boost")||(zr||(s.stopImmediatePropagation(),s.preventDefault()),window.chrome.webview.postMessage(`ramp-wheel, ${(s.deltaY||s.deltaX)<0?1:-1}`))},{capture:!0,passive:!1})});var fu={};A(fu,{claimAltShoot:()=>Dr,hostSupports:()=>fn,prepareShootBind:()=>Fr,syncLeftClick:()=>Zo});function Or(s){return Number(localStorage.getItem(s)??-1)}function mu(){let s=Or(mn);return s!==-1&&s!==Jo}function fn(){return u.hostFeatures?.includes(Zg)===!0}function Dr(){return!mu()||!fn()}function Fr(){if(!mu()){localStorage.setItem(mn,String(Jo));return}Ne.then(()=>{fn()||localStorage.setItem(mn,String(Jo))})}function Zo(){if(!fn())return;let s=Or(mn)===Jo||Or(Jg)===Jo;s!==hu&&(hu=s,window.chrome.webview.postMessage(`left-click-f20, ${s}`))}var Jo,mn,Jg,Zg,hu,gn=w(()=>{"use strict";D();Jo=131,mn="cont_shoot1Key_alt",Jg="cont_shoot1Key",Zg="left-click-f20"});var bu={};A(bu,{SLOTS:()=>Mo,postUrls:()=>Qt});function qr(s){try{return localStorage.getItem(s)}catch{return null}}function eb(s){try{let e=JSON.parse(qr(s)??"[]");return Array.isArray(e)?e.map(t=>Array.isArray(t)?t[1]:null).filter(t=>typeof t=="string").slice(0,Qg):[]}catch{return[]}}function Qt(){let s={};for(let t of Mo){let o=[];for(let i of t.settings)o.push(qr(`kro_setngss_${i}`)??"");for(let i of t.keys??[])o.push(qr(i)??"");for(let i of t.lists??[])o.push(...eb(i));let n=t.element?document.getElementById(t.element):null;n instanceof HTMLImageElement&&o.push(n.src);let r=[...new Set(o)].filter(i=>i.startsWith("http"));r.length>0&&(s[t.id]=r)}let e=JSON.stringify(s);e!==gu&&(gu=e,window.chrome.webview.postMessage(`icon-urls ${e}`))}var Qo,Mo,Qg,gu,bn=w(()=>{"use strict";Qo={id:"showUI",name:"Show UI",kind:"checkbox"},Mo=[{id:"kills",file:"kills.png",name:"Kill counter",settings:["customKills"],element:"killsIcon",hiddenBy:[Qo,{id:"showKillC",name:"Show Kill Counter",kind:"checkbox"}]},{id:"deaths",file:"deaths.png",name:"Death counter",settings:["customDeaths"],element:"deathsIcon",hiddenBy:[Qo,{id:"showDeaths",name:"Show Death Counter",kind:"checkbox"}]},{id:"streak",file:"streak.png",name:"Streak counter",settings:["customStreak"],element:"streakIcon",hiddenBy:[Qo,{id:"showStreak",name:"Show Streak Counter",kind:"checkbox"}]},{id:"kdr",file:"kdr.png",name:"K/D counter",settings:[],element:"kdIcon",hiddenBy:[Qo,{id:"showKD",name:"Show K/D Counter",kind:"checkbox"}]},{id:"ammo",file:"ammo.png",name:"Ammo",settings:["customAmmo"],element:"ammoIcon",hiddenBy:[Qo]},{id:"hitmarker",file:"hitmarker.png",name:"Hitmarker",settings:["customHitmarker"],hiddenBy:[{id:"hitm",name:"Hitmarker: Show",kind:"checkbox"},{id:"hitOpac",name:"Hitmarker: Opacity",kind:"opacity"}]},{id:"reticle",file:"reticle.png",name:"Reticle",settings:[],keys:["savedReticle"],lists:["krk_custRet"],element:"aimDot",hiddenBy:[]},{id:"scope",file:"scope.png",name:"Scope",settings:[],keys:["savedScope"],lists:["krk_custScps"],element:"recticleImg",hiddenBy:[{id:"scopeOpac",name:"Scope Opacity",kind:"opacity"}]}],Qg=30;gu=""});var vu={};A(vu,{canLoadLive:()=>At,loadScripts:()=>To,registry:()=>Je});var Je,At,To,es=w(()=>{"use strict";D();Je=window.__kuteUserscripts??null,At=()=>!!(Je&&u.hostFeatures?.includes("userscripts-live")),To=(s,e,t)=>{window.chrome.webview.postMessage(`scripts-load ${JSON.stringify({...s?{keys:s}:{},replace:e,start:t})}`)}});var ku={};A(ku,{default:()=>Lt,hostSupportsCustomCss:()=>ts});var wu,ts,Kr,Lt,vn=w(()=>{"use strict";D();wu=/@import\s+(?:url\([^)]*\)|"[^"]*"|'[^']*')[^;]*;?/gi,ts=()=>u.hostFeatures?.includes("custom-css")??!1,Kr=class{constructor(){this.saved=String(window.__kuteCustomCss??""),this.enabled=!0,this.sheet=null,this.importStyle=null,this.importText="",this.waitingForBody=!1,this.saved&&this.apply(this.saved),Ne.then(()=>{u.settings.toggleCustomCss=e=>this.toggle(e),u.settings.data.customCss===!1?this.toggle(!1):!this.saved&&ts()&&this.load().then(e=>this.apply(e))})}load(){return new Promise(e=>{let t=o=>{typeof o.data?.customCss?.content=="string"&&(window.chrome.webview.removeEventListener("message",t),this.saved=o.data.customCss.content,e(this.saved))};window.chrome.webview.addEventListener("message",t),window.chrome.webview.postMessage("css-read")})}apply(e){if(!this.enabled)return;let t=e.match(wu)??[],o=t.length?e.replace(wu,""):e;if(!this.sheet){if(!o.trim())return;this.sheet=new CSSStyleSheet,document.adoptedStyleSheets=[...document.adoptedStyleSheets,this.sheet]}this.sheet.replaceSync(o),this.setImports(t.join(` +`))}setImports(e){if(this.importText=e,!(!e&&!this.importStyle)){if(document.readyState==="loading"){if(this.waitingForBody)return;this.waitingForBody=!0,document.addEventListener("DOMContentLoaded",()=>this.setImports(this.importText),{once:!0});return}this.importStyle||(this.importStyle=document.createElement("style"),document.documentElement.append(this.importStyle)),this.importStyle.textContent!==e&&(this.importStyle.textContent=e)}}toggle(e){if(this.enabled=e,!e){this.sheet?.replaceSync(""),this.setImports("");return}this.saved?this.apply(this.saved):ts()&&this.load().then(t=>this.apply(t))}markSaved(e){this.saved=e,this.apply(e)}revert(){this.enabled&&this.apply(this.saved)}},Lt=new Kr});var $u={};A($u,{holdRestart:()=>wn,restart:()=>Ao});function Ao(){location.assign("https://krunker.io/")}function wn(s){Su=Date.now()+s}function Eu(){return localStorage.getItem(yu)!==null||document.cookie.includes(`${yu}=`)}function tb(){try{return!!window.getGameActivity?.()?.id}catch{return!1}}function ob(s){let e=Date.now(),t=0,o=setInterval(()=>{if(tb()){sessionStorage.removeItem(jr),clearInterval(o);return}if(Date.now()-e>9e4){clearInterval(o);return}if(!s||!Eu()||(t===0&&(t=Date.now()),Date.now()-t<1500))return;clearInterval(o);let n=Number(sessionStorage.getItem(jr)??0);n>=2||(sessionStorage.setItem(jr,String(n+1)),console.log("[kute] session: no lobby after the frvr login, reloading"),Ao())},1e3)}function sb(){let s=localStorage.getItem(xu)!==null,e=!1;setInterval(()=>{if(e){document.pointerLockElement||Ao();return}let t=localStorage.getItem(xu)!==null;s&&!t&&Date.now()>Su&&(e=!0,console.log("[kute] session: logged out, reloading")),s=t},1e3)}var yu,xu,jr,Su,kn=w(()=>{"use strict";yu="__FRVR_auth_refresh_token",xu="krunker_token",jr="kute_hang_reloads";Su=0;location.hostname==="krunker.io"&&location.pathname==="/"&&(ob(!Eu()),sb())});var Tu={};A(Tu,{DEFAULT_LOAD:()=>eo,cpuChecksum:()=>Vr,createScene:()=>Wr});function db(s){let e=document.createElement("canvas");e.width=640,e.height=60+s.length*34;let t=e.getContext("2d");return t&&(t.fillStyle="rgba(30, 30, 30, 0.92)",t.beginPath(),t.roundRect(0,0,e.width,e.height,18),t.fill(),t.textAlign="center",t.textBaseline="middle",s.forEach((o,n)=>{t.font=n===0?"26px Consolas, monospace":"18px Consolas, monospace",t.fillStyle=n===0?"#35e0e8":"#bbbbbb",t.fillText(o,e.width/2,48+n*34)})),e}function Cu(s,e,t){let o=s.createShader(e);if(!o)throw new Error("cannot create shader");if(s.shaderSource(o,t),s.compileShader(o),!s.getShaderParameter(o,s.COMPILE_STATUS))throw new Error(s.getShaderInfoLog(o)??"shader compile failed");return o}function Ur(s,e,t){let o=s.createProgram();if(s.attachShader(o,Cu(s,s.VERTEX_SHADER,e)),s.attachShader(o,Cu(s,s.FRAGMENT_SHADER,t)),s.linkProgram(o),!s.getProgramParameter(o,s.LINK_STATUS))throw new Error(s.getProgramInfoLog(o)??"program link failed");return o}function ub(s){let e=[],t=[];for(let o=0;o<=s;o++){let n=o/s*Math.PI;for(let r=0;r<=s;r++){let i=r/s*Math.PI*2;e.push(Math.cos(i)*Math.sin(n),Math.cos(n),Math.sin(i)*Math.sin(n))}}for(let o=0;o0?db(t):null,g=m?Ur(o,lb,cb):null,b=g?o.getUniformLocation(g,"uScale"):null,v=o.createVertexArray();m&&(o.bindVertexArray(v),o.bindBuffer(o.ARRAY_BUFFER,o.createBuffer()),o.bufferData(o.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,1]),o.STATIC_DRAW),o.enableVertexAttribArray(0),o.vertexAttribPointer(0,2,o.FLOAT,!1,0,0),o.bindVertexArray(null),o.bindTexture(o.TEXTURE_2D,o.createTexture()),o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,m),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE));let k=1337,E=()=>(k=k*1664525+1013904223>>>0,k/4294967296),L=Array.from({length:e.draws},()=>({x:(E()-.5)*80,y:(E()-.5)*50,z:(E()-.5)*40,scale:.6+E()*1.6,spin:.2+E()*1.5,red:.3+E()*.7,green:.3+E()*.7,blue:.3+E()*.7})),x=new Float32Array(16),$=new Float32Array(16),I=new Float32Array(16),_=new Float32Array(16);return $[0]=1,$[5]=1,$[10]=1,$[15]=1,$[14]=-60,{resize(H,G){s.width=Math.max(1,Math.round(H)),s.height=Math.max(1,Math.round(G)),o.viewport(0,0,s.width,s.height),pb(x,Math.PI/2,s.width/s.height,.1,500),hb(I,x,$)},render(H){let G=H*.001;fb(e.cpuIterations),o.enable(o.DEPTH_TEST),o.disable(o.BLEND),o.clearColor(.08,.09,.12,1),o.clear(o.COLOR_BUFFER_BIT|o.DEPTH_BUFFER_BIT),o.useProgram(n),o.bindVertexArray(h),o.uniformMatrix4fv(i,!1,I);for(let J of L)mb(_,J.x,J.y,J.z,G*J.spin,J.scale),o.uniformMatrix4fv(r,!1,_),o.uniform3f(a,J.red,J.green,J.blue),o.drawElements(o.TRIANGLES,p.indices.length,o.UNSIGNED_SHORT,0);o.disable(o.DEPTH_TEST),o.enable(o.BLEND),o.blendFunc(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA),o.useProgram(l),o.bindVertexArray(f),o.uniform1f(c,G);for(let J=0;J{"use strict";eo={draws:1200,meshSegments:10,overdraw:4,cpuIterations:2e5},nb=`#version 300 es layout(location=0) in vec3 aPos; layout(location=1) in vec3 aNormal; uniform mat4 uModel; @@ -36,9 +36,9 @@ precision mediump float; in vec2 vUv; uniform sampler2D uLabel; out vec4 outColor; -void main() { outColor = texture(uLabel, vUv); }`;Ur=new Float32Array(4096),Mu=0});var Au={};A(Au,{FrameRecorder:()=>to,InputProbe:()=>ts,TaskProbe:()=>oo});var to,ts,oo,kn=w(()=>{"use strict";to=class{constructor(e=12e4){this.samples=new Float32Array(e),this.count=0,this.stored=0,this.last=-1,this.first=-1}frame(e){this.last>=0&&(this.count++,this.storedt[Math.min(t.length-1,Math.floor(h*t.length))],r=n(.5),i=Math.max(4*r,e),a=0,l=0,c=0;for(let h of t)a+=h,h>i&&(l++,c+=h-r);let u=Math.max(.001,a/1e3);return{frames:this.count,seconds:o,fps:this.count/o,meanMs:a/this.stored,p50:r,p95:n(.95),p99:n(.99),p999:n(.999),maxMs:t[t.length-1],hitches:l,hitchesPerSec:l/u,stallMs:c/u}}},ts=class{constructor(){this.waits=new Float32Array(16384),this.events=0,this.packets=0,this.onMove=e=>{if(document.pointerLockElement===null)return;let t=e.getCoalescedEvents(),o=t.length>0?t[0].timeStamp:e.timeStamp;this.waits[this.events%this.waits.length]=performance.now()-o,this.events++,this.packets+=Math.max(1,t.length)}}start(){this.events=0,this.packets=0,window.addEventListener("pointermove",this.onMove,{capture:!0,passive:!0})}stop(){window.removeEventListener("pointermove",this.onMove,!0);let e=Math.min(this.events,this.waits.length),t=this.waits.slice(0,e).sort();return{events:this.events,packets:this.packets,p99:e>0?t[Math.min(e-1,Math.floor(e*.99))]:null,max:e>0?t[e-1]:null}}},oo=class{constructor(){this.delays=[],this.timer=0,this.sent=0,this.channel=new MessageChannel,this.channel.port1.onmessage=e=>{this.delays.push(performance.now()-e.data)}}start(){this.delays=[],this.sent=0;let e=performance.now()+10;this.timer=setInterval(()=>{this.sent++;let t=performance.now();this.channel.port2.postMessage(Math.min(t,e)),e=t+10},10)}stop(){clearInterval(this.timer);let e=[...this.delays].sort((t,o)=>t-o);return{sent:this.sent,ran:e.length,p99:e.length?e[Math.min(e.length-1,Math.floor(e.length*.99))]:null,max:e.length?e[e.length-1]:null}}}});var Iu={};function Je(s,e){let t=Number(yn.get(s));return yn.has(s)&&Number.isFinite(t)?t:e}function Xr(s){window.chrome.webview.postMessage(`bench-finish ${JSON.stringify(s)}`)}function Eb(){let s=document.createElement("canvas");s.style.cssText="position:fixed;inset:0;width:100vw;height:100vh;display:block",document.body.append(s);let e=Lu>0?["Kute is testing this PC",`client test ${kb} of ${Lu}`,"this takes a moment, nothing to do for you"]:[],t=Gr(s,Ru,e);t.resize(window.innerWidth*devicePixelRatio,window.innerHeight*devicePixelRatio);let o=Yr.length>0?Array.from({length:Math.max(1,yb)},()=>Yr).flat():[null],n=[],r=0,i=performance.now(),a=null,l=new oo,c=Je("cap",0),u=i,h=0,p=!1;s.addEventListener("webglcontextlost",()=>{p=!0});let f=g=>{i=g,a=null;let b=o[r];b!==null&&(c=Sb?b:0,u=g,window.chrome.webview.postMessage(`bench-cap ${b}`))};f(i);let m=g=>{if(c>0){for(;performance.now()0&&t.lost()){h===0&&Xr({ok:!1,error:"webgl context lost"}),t.destroy();return}if(t.render(g),h>0){b-h=v&&(a=new to,r===0&&window.chrome.webview.postMessage("bench-sample-start"),l.start()),a!==null&&(a.frame(b),b-i>=v+vb&&(n.push({cap:o[r]??c,stats:a.stats(wb),otherTasks:l.stop()}),r++,r0?n:void 0,load:Ru,width:s.width,height:s.height,checksum:Wr()})))),requestAnimationFrame(m)};requestAnimationFrame(m)}function Pu(){try{Eb()}catch(s){Xr({ok:!1,error:String(s)})}}var yn,gb,bb,vb,wb,kb,Lu,Yr,yb,xb,Sb,Ru,Jr=w(()=>{"use strict";Vr();kn();yn=new URLSearchParams(location.search);gb=400,bb=Je("settle",700),vb=Je("ms",2e3),wb=1e3/Je("hz",60),kb=Je("step",0),Lu=Je("steps",0),Yr=(yn.get("caps")??"").split(".").filter(s=>s!=="").map(Number).filter(Number.isFinite),yb=Je("rounds",1),xb=Je("capsettle",700),Sb=yn.get("selfcap")==="1",Ru={draws:Je("draws",eo.draws),meshSegments:eo.meshSegments,overdraw:Je("overdraw",eo.overdraw),cpuIterations:Je("cpu",eo.cpuIterations)};document.body?Pu():document.addEventListener("DOMContentLoaded",Pu,{once:!0})});var _u,Nu=w(()=>{_u=`#guidePopup{background-color:#182429}.guideHeader,.guideSubH{border-bottom-color:#35e0e81f}.guStepS:not(:last-child){border-bottom-color:#35e0e81f}a,a:active,a:visited{color:#35e0e8}#purchaseSelector{background-color:#111b1f}.roundScrV{border-bottom-color:#35e0e847}#reloadMsg,#interactMsg,#mobileUI #interactMsg{border-color:#35e0e847}#instructionsUpdate{background-color:#151f24}.instructionsHeader,.instructionsTabs{background-color:#070c0f}.endTablePfp{border-color:#35e0e847}th,tr{border-bottom-color:#35e0e81f}.followBut{background-color:#35e0e8;color:#0b1215}.lds-ring div{border-color:#35e0e847;border-color:rgba(53,224,232,.28) transparent transparent transparent}#spinItemName{background-image:linear-gradient(to right,#0000,#070c0fb3 40%,#070c0fe6 60%,#0000)}.spinPrevIcon,.spinSprayDiv,#spinPromo,.compClassPItm,.compPLstIcn,.compSwpTmB,.compMenBtnS,.compPlWpIcn{border-color:#35e0e847}.hostHeader{background-color:#070c0f}#bigMFeatHBtn{border-color:#35e0e847}#bigMFeatHBtn:hover,#bigMFeatHBtn:active,#bigMFeatPBtn:hover,#bigMFeatPBtn:active{border-color:#35e0e847!important}.biMFeatInfB{border-color:#35e0e847}.biMFeatInfB:hover{border-color:#35e0e847!important}.mapLICat{background-color:#151f24}.hostPresetBtn,#hostMenuBtn{background-color:#35e0e8;color:#0b1215}.serverHostOp{border-color:#35e0e81f}.hostCBtn{border-color:#35e0e847}#hostActionH{border-top-color:#35e0e847}#stickyHostH{background-color:#070c0f}.loadoutBtn{background-color:#35e0e8;color:#0b1215}#loadoutToolbar{background-color:#111b1f;border-bottom-color:#35e0e81f}.loadoutTab{background-color:#182429}.loadoutTab:hover{background-color:#1d2c32}.loadoutTabSel{background-color:#24343a}#charPreviewSlot{border-right-color:#35e0e81f}#menuWindow.eterno .bigMenTabs{background-color:#111b1fad}.quickJoin{border-color:#35e0e8}.settText{color:#35e0e8}.contactsHeader,.setHed{border-color:#35e0e81f;background-color:#1d2c32}.setHed:hover{background-color:#182429}.setHedS{border-color:#35e0e81f;background-color:#1d2c32}.settName,.settNameSmall{border-bottom-color:#35e0e81f}input:checked+.sliderSml{background-color:#35e0e8;color:#0b1215}input:focus+.sliderSml{box-shadow:0 0 1px #35e0e8}input:checked+.slider{background-color:#35e0e8;color:#0b1215}input:focus+.slider{box-shadow:0 0 1px #35e0e8}.sliderVal{border-color:#35e0e847!important}#modDropper{border-color:#35e0e81f}#profilePicM{background-color:#24343a}.mailFrom{color:#35e0e8;border-bottom-color:#35e0e847}.followFrom{color:#35e0e8}#mailCount{border-color:#35e0e81f}#policePopC{background-color:#151f24}.classXPBar{background-color:#111b1f}.clsXPBarC{background-color:#35e0e8;color:#0b1215}.skinPaintSwatch{border-color:#35e0e847}.sb1:before{border-left-color:#35e0e847;border-top-color:#35e0e847}.skinColorItem,.matchVote{border-color:#35e0e81f}.hostMap,#mobileJoystick .back,#mobileJoystick .front{border-color:#35e0e847}#chargeModalCard{background-color:#111b1f}.chargeModalBtn{background-color:#35e0e8;color:#0b1215}.settingsHeader,.serverHeader{background-color:#151f24}.setSugBox2,.setSugBox2:hover,.setSugBox,.setSugBox:hover{border-color:#35e0e847}.settingsBtn{background-color:#35e0e8;color:#0b1215}.settingTab:hover{border-bottom-color:#35e0e81f}.redVouchBtn,.searchBtn{background-color:#35e0e8;color:#0b1215}.challMapCrd,.challHeadrI{border-color:#35e0e847}.chalCard{background-color:#151f24}.chalRews{border-left-color:#35e0e847}.chalRewSkn{border-color:#35e0e847}.changeText{border-bottom-color:#35e0e81f}.crftRcpeCrd{background-color:#070c0f}.craftRcIcn,.crftRecSml,.crftItmReq{border-color:#35e0e847}.crftTim{background-color:#151f24}.hostToggle{background-color:#35e0e8;color:#0b1215}.titleRowLocked{border-bottom-color:#35e0e81f}input:checked+.optCheck{background-color:#35e0e8;color:#0b1215}.subPassChg,.subPassChg:hover,.updDisN,.updDisN:hover,.lnkTw:hover{background-color:#35e0e8;color:#0b1215}#popupContent{background-color:#151f24}.twitchPop,.nftPop,.confPop,.clientExitPop,#confPurchItemPop{border-color:#35e0e847}#bundlePop,#premiumPop{background-color:#151f24}.metaPop{border-color:#35e0e847}.confPremiumPop,.vouchPop{background-color:#151f24}.polConfPop{border-color:#35e0e847}.rankedPop,.promoPop{background-color:#151f24}.tListN.inv{background-color:#35e0e8;color:#0b1215}.tItemHolder,.dItemHolder,.tCurrencyItem{border-color:#35e0e847}.bigMenTab:hover,.bigMenTabA,.bigMenTabA:hover{border-bottom-color:#35e0e847}.dark .menuTabNew:hover{border-bottom-color:#35e0e81f!important}.dark .tabANew,.dark .tabANew:hover{border-bottom-color:#35e0e847!important}input:checked+.slider2{background-color:#35e0e8;color:#0b1215}input:focus+.slider2{box-shadow:0 0 1px #35e0e8}.tabHeader:hover{border-bottom-color:#35e0e847}#kdLayout,.crStat{border-color:#35e0e81f}.keyIcon{border-left-color:#35e0e81f;border-right-color:#35e0e81f;border-top-color:#35e0e847;border-bottom-color:#35e0e81f}.pfpPop,.dropsPop{background-color:#151f24}.accountCreatePop{background-color:#151f24;border-color:#35e0e847}#pubPfp{background-color:#35e0e8;color:#0b1215}#tradeChatInput,.tradeChatItem{background-color:#111b1f}#partnerProgB{background-color:#35e0e8;color:#0b1215}#partnrUpBtn{background-color:#35e0e8;border-bottom-color:#35e0e8;color:#0b1215}#partnrUpBtn:hover,#partnrUpBtn:active{border-bottom-color:#35e0e8}#partnrUpBtnD,#partnrUpBtnD:hover,#partnrUpBtnD:active{border-bottom-color:#35e0e847}.editLink{color:#35e0e8}.speedRunItem{border-bottom-color:#35e0e81f}#speedRunInfo{border-bottom-color:#35e0e847}#shopMainSellB{border-color:#35e0e847}.custBack:hover{background-color:#24343a85}#itemSearchH{background-color:#151f24}.skinReward{border-color:#35e0e847}.selectedItem{border-color:#35e0e847!important}.custContainer{border-color:#35e0e847}.custSubContainer{border-left-color:#35e0e847;border-bottom-color:#35e0e847}#findGameBtn{background-color:#35e0e8;color:#0b1215}#clanDeclineAll:hover,.logVersionHed,.viewAllUpdates,.viewAllUpdates:hover{border-color:#35e0e847}.followBack{border-color:#35e0e8!important}.followBack:hover{border-color:#35e0e847!important}.joinBtn{background-color:#35e0e8;color:#0b1215}.imagePop,.badgePop,.imageNewPop{background-color:#151f24}.openCollection{background-color:#35e0e8!important;color:#0b1215}.imageListHeader,.imageListFooter{background-color:#070c0f}.importPop,#bindsHeader,.disconnectPop{background-color:#151f24}.tooltip{background-color:#24343a}.tooltip2{background-color:#070c0f}.imageTab:hover{border-bottom-color:#35e0e81f}.tabAIMG,.tabAIMG:hover{border-bottom-color:#35e0e847}input:checked+.advancedSlider{background-color:#35e0e8;color:#0b1215}input:focus+.advancedSlider{box-shadow:0 0 1px #35e0e8}.quickPlayMap{border-color:#35e0e847}#custStreakSelH{border-top-color:#35e0e81f}.winSelH{background-color:#24343a}#spinHistoryBtn{border-color:#35e0e847}#spinHistoryBtn:hover{border-color:#35e0e847!important}#spinMultiToggleBtn{background-color:#35e0e8!important;box-shadow:inset 0 -7px #35e0e8!important;border-color:#35e0e847;color:#0b1215}#spinMultiToggleBtn:hover{border-color:#35e0e847!important}#spinHistoryPop{background-color:#151f24}.spinHistoryHeader{background-color:#070c0f}.clsStatXPBar{background-color:#0b1215}.eventPop{background-color:#151f24}.eventPopHeader,.bSliderBtn,.bSliderBtn:hover,.bSliderBtn:active{border-color:#35e0e847}.bSliderBtn.disabled{border-color:#35e0e81f}.bpLevelNum.completed{background-color:#24343a}.bpLevelNum.active{border-color:#35e0e847}.bpCard,.bpCard.free{border-color:#35e0e81f}.bpCard.free.completed,.bpCard.free.completed.claimed{border-color:#35e0e847}.bpCardSlot{border-color:#35e0e81f}.bpSliderArrow{border-right-color:#35e0e847}.bpInfoBalloon{background-color:#151f24}.bpInfoBalloon:after{background-color:#151f24}.bpClaimB{border-color:#35e0e847;background-color:#151f24}.bp-unlock-header{background-color:#151f24}.bp-generic-pop,.bp-purchase-pop{background-color:#151f24;border-color:#35e0e847}.clanSubmitBtn,.clanSubmitBtn:hover{background-color:#35e0e8;color:#0b1215}.spinErrorPop{background-color:#151f24}.popHeader,.dropsPopHeader{background-color:#070c0f}.charmErrorPop,.spinHistoryStatsPop{background-color:#151f24}#kpdCalls>* td,#kpdCalls>* th{border-bottom-color:#35e0e81f}.loadingPop,.autoLoadPop,.editMapPop,.responsePop{background-color:#151f24}.infoPop,.contPop{background-color:#1d2c32}.ticketPop{background-color:#151f24}.bundleCrd{background-color:#070c0f}.bundleItmReq,.bundleSliderBtn,.bundleSliderBtn:hover,.bundleSliderBtn:active,.bundleSliderBtn.disabled{border-color:#35e0e847}.bundleSliderArrow{border-right-color:#35e0e847}.dxp-pop{background-color:#151f24;border-color:#35e0e847}.dropsSliderBtn,.dropsSliderBtn:hover,.dropsSliderBtn:active,.dropsSliderBtn.disabled{border-color:#35e0e847}.dropsSliderArrow{border-right-color:#35e0e847}.rewItemHolder{border-color:#35e0e847}.abTestsPop{background-color:#151f24}.registerGiftPop{background-color:#151f24;border-color:#35e0e847}.rankedQueueModal{background-color:#151f24;border-color:#35e0e8;box-shadow:0 0 160px #35e0e875}.rankedMenuModal,.communityPopup,.tutorialPopup,.defaultModal,.krunkCupJoinModal,.krunkCupViewModal,.exchangeModal,.itemsModal,.socialModal,.moreKrunkerPopup{background-color:#151f24}.io-button{background-color:#151f24;border-color:#35e0e81f}.io-button:hover{background-color:#182429}.io-button--accept-secondary{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.io-input-field{border-color:#35e0e81f}.io-input-field:focus{border-color:#35e0e8}.io-popup-container{background-color:#111b1f}.io-section-header:after{background-color:#35e0e8;color:#0b1215}.io-card{border-color:#35e0e81f}.io-separator{border-bottom-color:#35e0e81f}.io-separator span{background-color:#111b1f}.strike-timer__info-holder,.strike-timer__timer-bg{background-color:#151f24}.bundle-popup-lmt-offer{background-color:#24343a}.ltm-offer-container__arrow{border-right-color:#35e0e847}.file-drop-target.svelte-145grbc{border-color:#35e0e81f}.file-drop-target.svelte-145grbc:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.file-drop-target.hovered.svelte-145grbc{border-color:#35e0e847}.file-drop-target.drag-over.svelte-145grbc{border-color:#35e0e8;background-color:#35e0e81a}.code-input.svelte-1xwmszg{border-color:#35e0e81f}.code-input.svelte-1xwmszg:focus{border-color:#35e0e8}.qr-code-image.svelte-1xwmszg,.slider-input.svelte-1xwmszg{border-color:#35e0e81f}.slider-input.svelte-1xwmszg::-webkit-slider-thumb{background-image:linear-gradient(145deg,#35e0e8,#3a7dce);border-color:#35e0e847}.slider-input.svelte-1xwmszg::-webkit-slider-runnable-track{background-image:linear-gradient(to right,#245d99,#35e0e8)}.slider-display.svelte-1xwmszg{color:#35e0e8}.info-message.svelte-1xwmszg{border-color:#35e0e8}.password-requirements.svelte-1xwmszg,.motd-input.svelte-15d5v89{border-color:#35e0e81f}.motd-input.svelte-15d5v89:focus{border-color:#35e0e81f}.motd-display.svelte-15d5v89{border-left-color:#35e0e81f}.item-showcase-container.svelte-2tp35a{background-color:#151f24bf}.more-info-btn.svelte-2tp35a,.more-info-btn.svelte-2tp35a:hover,.share-btn.svelte-2tp35a{border-color:#35e0e81f}.md-root.svelte-1kkpw01{background-color:#151f24}.md-header.svelte-1kkpw01{border-bottom-color:#35e0e81f;background-color:#111b1f}.md-back.svelte-1kkpw01{border-color:#35e0e81f}.md-header-icon.svelte-1kkpw01{color:#35e0e8}.md-thumb.svelte-1kkpw01{background-color:#0b1215}.md-info-bar.svelte-1kkpw01{border-bottom-color:#35e0e81f}.md-creator.svelte-1kkpw01{color:#35e0e8}.md-host-btn.svelte-1kkpw01,.md-icon-btn.svelte-1kkpw01{border-color:#35e0e81f}.md-tabs.svelte-1kkpw01{border-bottom-color:#35e0e81f}.md-tab.active.svelte-1kkpw01{color:#35e0e8;border-bottom-color:#35e0e8}.md-lb-name.svelte-1kkpw01{color:#35e0e8}.md-load-more.svelte-1kkpw01{border-color:#35e0e81f}.md-data-section-title.svelte-1kkpw01{color:#35e0e8;border-top-color:#35e0e81f}.md-data-table.svelte-1kkpw01{background-color:#111b1f;border-color:#35e0e81f}.md-data-table-row.svelte-1kkpw01{border-top-color:#35e0e81f}.md-data-header.svelte-1kkpw01{background-color:#111b1f;border-color:#35e0e81f}.md-data-search-btn.svelte-1kkpw01{border-color:#35e0e81f}.md-data-input.svelte-1kkpw01{background-color:#0b1215;border-color:#35e0e81f}.md-data-input.svelte-1kkpw01:focus{border-color:#35e0e8}.md-ver-row.svelte-1kkpw01{border-top-color:#35e0e81f}.md-ver-btn.svelte-1kkpw01{border-color:#35e0e81f}.mod-root.svelte-1v2j2f2{background-color:#151f24}.mod-header.svelte-1v2j2f2{border-bottom-color:#35e0e81f;background-color:#111b1f}.mod-back.svelte-1v2j2f2{border-color:#35e0e81f}.mod-header-icon.svelte-1v2j2f2{color:#35e0e8}.mod-thumb.svelte-1v2j2f2{background-color:#0b1215}.mod-info-bar.svelte-1v2j2f2{border-bottom-color:#35e0e81f}.mod-creator.svelte-1v2j2f2{color:#35e0e8}.mod-use-btn.svelte-1v2j2f2,.mod-use-btn.svelte-1v2j2f2:hover{background-color:#35e0e8;color:#0b1215}.mod-icon-btn.svelte-1v2j2f2{border-color:#35e0e81f}.style-container.svelte-143xo7r{background-color:#151f24bf}.slider-arrow.svelte-143xo7r{border-color:#35e0e81f}.slider-arrow.left.svelte-143xo7r .slider-arrow-icon.svelte-143xo7r{border-right-color:#35e0e847}.slider-arrow.right.svelte-143xo7r .slider-arrow-icon.svelte-143xo7r{border-left-color:#35e0e847}.swatch.svelte-143xo7r,.btn.svelte-143xo7r{border-color:#35e0e81f}.market-card.svelte-r5taai{background-color:#070c0fcc}.trade-label.inv.svelte-1lqen9w{background-color:#35e0e8;color:#0b1215}.trade-inv-item.svelte-1lqen9w{border-color:#35e0e847}.trade-search.svelte-1lqen9w{border-color:#35e0e81f}.trade-search.svelte-1lqen9w:focus{border-color:#35e0e81f}.gift-root.svelte-g5j1wf{background-color:#151f24}.gift-header.svelte-g5j1wf{border-bottom-color:#35e0e81f;background-color:#111b1f}.gift-back.svelte-g5j1wf{border-color:#35e0e81f}.gift-header-icon.svelte-g5j1wf{color:#35e0e8}.gift-input.svelte-g5j1wf{background-color:#0b1215;border-color:#35e0e81f}.gift-input.svelte-g5j1wf:focus{border-color:#35e0e8}.gift-send.svelte-g5j1wf{background-color:#35e0e8;color:#0b1215}.gift-done.svelte-g5j1wf{border-color:#35e0e81f}.buy-button.svelte-r01l8m:disabled{background-color:#24343a}.buy-button.svelte-r01l8m:disabled:hover{background-color:#24343a}.shop-header.svelte-1gtpoav{border-bottom-color:#35e0e81f}.rp-balance.svelte-1gtpoav,.guest-earned-collect__reward-items.svelte-1hb83uo,.guest-earned-collect__register-btn.svelte-1hb83uo,.guest-earned-collect__register-btn.svelte-1hb83uo:hover{border-color:#35e0e81f}.signup-rewards-list.svelte-1v6b0qm{background-color:#070c0fb3}.signup-rewards-register-button.svelte-1v6b0qm{border-color:#35e0e847!important}.product-row.svelte-14104bb{border-color:#35e0e81f}.product-row.svelte-14104bb:hover{border-color:#35e0e847}.gift-button.svelte-14104bb,.for-you-text.svelte-14104bb,.currency-shop-item.svelte-14104bb,.currency-shop-item.svelte-14104bb:hover{border-color:#35e0e81f}.verification-banner.svelte-165vbjp{background-color:#151f24cc}.spinner.svelte-165vbjp{border-color:#35e0e81f;border-top-color:#35e0e847}.section-title.svelte-e65miw .material-icons.svelte-e65miw{color:#35e0e8}.toggle-switch.svelte-e65miw input:checked+.slider.svelte-e65miw{background-color:#35e0e8;color:#0b1215}.texture-upload-item.svelte-e65miw,.texture-image.svelte-e65miw{border-color:#35e0e81f}.btn-generate.svelte-e65miw{background-color:#35e0e8;color:#0b1215}.btn-generate.svelte-e65miw:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.sgNum.svelte-1i1uhp7,.sgHex.svelte-1i1uhp7{border-color:#35e0e81f}.sgNum.svelte-1i1uhp7:focus,.sgHex.svelte-1i1uhp7:focus{border-color:#35e0e8}.sgSlider.svelte-1i1uhp7::-webkit-slider-thumb{background-color:#35e0e8;color:#0b1215}.sgSlider.svelte-1i1uhp7:focus-visible{outline-color:#35e0e8}.sgColorInput.svelte-1i1uhp7{border-color:#35e0e81f}.sgColorInput.svelte-1i1uhp7:focus-visible{outline-color:#35e0e8}.sgPalette.svelte-sxvv3c{background-color:#0b1215fa;border-color:#35e0e81f}.sgPaletteSearch.svelte-sxvv3c{border-color:#35e0e81f}.sgPaletteSearch.svelte-sxvv3c:focus{border-color:#35e0e8}.sgPaletteItem.active.svelte-sxvv3c,.sgPaletteItem.svelte-sxvv3c:focus-visible{background-color:#35e0e840}.sgEditor.svelte-upgo13{border-color:#35e0e81f}.sgToolbar.svelte-upgo13{border-bottom-color:#35e0e81f}.sgBtn.svelte-upgo13{border-color:#35e0e81f}.sgBtn.svelte-upgo13:focus-visible,.sgCanvas.svelte-upgo13:focus-visible,.sgErrorItem.svelte-upgo13:focus-visible,.sgMenuItem.svelte-upgo13:focus-visible{outline-color:#35e0e8}.sgBtnPrimary.svelte-upgo13{background-color:#35e0e840;border-color:#35e0e899;color:#35e0e8}.sgBtnPrimary.svelte-upgo13:hover:not(:disabled){background-color:#35e0e866}.sgMenu.svelte-upgo13{background-color:#0b1215fa;border-color:#35e0e81f}.sgMenuItem.svelte-upgo13:hover{background-color:#35e0e840}.sgCanvas.svelte-upgo13{background-color:#070c0fe6}.sgOverlay.svelte-upgo13{background-color:#070c0ffa;border-color:#35e0e81f}.sgIoText.svelte-upgo13{border-color:#35e0e81f}.sgIoText.svelte-upgo13:focus{border-color:#35e0e8}.sgFooter.svelte-upgo13{border-top-color:#35e0e81f}.io-action-bar-button.svelte-103lu6x{background-color:#35e0e8;color:#0b1215}.search-input.svelte-103lu6x{border-color:#35e0e81f}.search-input.svelte-103lu6x:focus{border-color:#35e0e8}.io-action-bar-button.svelte-103lu6x:hover,.action-btn.test-btn.svelte-103lu6x,.action-btn.test-btn.svelte-103lu6x:hover{background-color:#35e0e8;color:#0b1215}.skin-manager-table.svelte-103lu6x .table thead th{background-color:#0b1215}.tab-navigation.svelte-103lu6x{border-bottom-color:#35e0e81f}.tab-button.active.svelte-103lu6x{color:#35e0e8;background-color:#35e0e81a}.tab-button.active.svelte-103lu6x:after{background-color:#35e0e8;color:#0b1215}.preview-control-btn.svelte-103lu6x{border-color:#35e0e81f}.preview-control-btn.active.svelte-103lu6x{background-color:#35e0e84d;border-color:#35e0e8}.paint-select.svelte-103lu6x{border-color:#35e0e81f}.paint-select.svelte-103lu6x option.svelte-103lu6x{background-color:#0b1215}.connection.svelte-1fenhdo{background-color:#182429}.consequences.svelte-18wpngg{border-color:#35e0e81f}.loading-spinner.svelte-190e6fj{border-color:#35e0e81f;border-top-color:#35e0e847}.retry-button.svelte-190e6fj{background-color:#35e0e8;color:#0b1215}.benefits-card.svelte-190e6fj,.billing-info.svelte-190e6fj,.subscribe-btn.svelte-190e6fj{border-color:#35e0e81f}.subscribe-btn.svelte-190e6fj:hover{border-color:#35e0e847}.disabled-card.svelte-190e6fj .subscribe-btn.svelte-190e6fj{background-image:linear-gradient(135deg,#24343a,#1d2c32);border-color:#35e0e81f}.disabled-card.svelte-190e6fj .subscribe-btn.svelte-190e6fj:hover,.disabled-indicator.svelte-190e6fj{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.subscribed-btn.svelte-190e6fj{border-color:#35e0e81f}.renew-btn.svelte-190e6fj{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);border-color:#35e0e81f;box-shadow:0 8px 24px #35e0e866,0 4px 8px #0000004d,inset 0 1px #ffffff4d}.renew-btn.svelte-190e6fj:hover{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);box-shadow:0 12px 32px #35e0e880,0 6px 12px #0006,inset 0 1px #fff6;border-color:#35e0e847}.cancel-container.svelte-190e6fj,.cancel-btn.svelte-190e6fj,.cancel-btn.svelte-190e6fj:hover{border-color:#35e0e81f}.wild-offer-notification.svelte-1gcqcwy{background-image:linear-gradient(135deg,#000000f2,#070c0ffa)}.shop-btn.svelte-1gcqcwy,.shop-btn.svelte-1gcqcwy:hover,.player-bound-display.svelte-1nzacef,.player-bound-display.svelte-1nzacef:hover,.login-button.svelte-1nzacef,.login-button.svelte-1nzacef:hover{border-color:#35e0e81f}.data-table.svelte-69sryq thead.svelte-69sryq{background-color:#0b1215}.table-header.svelte-69sryq{color:#35e0e8}.table-header.sortable.svelte-69sryq:hover{background-color:#35e0e81a}.table-header.sortable.sort-asc.svelte-69sryq:after{border-bottom-color:#35e0e8}.table-header.sortable.sort-desc.svelte-69sryq:after{border-top-color:#35e0e8}.table-cell.svelte-69sryq{border-bottom-color:#35e0e81f}.qs-window.svelte-1o11rsf{background-color:#111b1f;border-color:#35e0e81f}.qs-item-preview.svelte-1o11rsf,.qs-values.svelte-1o11rsf,.qs-amount-select.svelte-1o11rsf{border-color:#35e0e81f}.qs-amount-select.svelte-1o11rsf:focus{border-color:#35e0e88c}.jy-filter-bar.svelte-1vqzycn{background-color:#111b1f;border-color:#35e0e81f}.jy-search-input.svelte-1vqzycn,.jy-sort-select.svelte-1vqzycn{background-color:#151f24;border-color:#35e0e81f}.sd-root.svelte-a9j4oe{background-color:#151f24}.sd-header.svelte-a9j4oe{border-bottom-color:#35e0e81f;background-color:#111b1f}.sd-back.svelte-a9j4oe{border-color:#35e0e81f}.sd-header-icon.svelte-a9j4oe{color:#35e0e8}.sd-del.svelte-a9j4oe{border-color:#35e0e81f}.sd-tabs.svelte-a9j4oe{border-bottom-color:#35e0e81f}.sd-tab.active.svelte-a9j4oe{color:#35e0e8;border-bottom-color:#35e0e8}.sd-row.svelte-a9j4oe{background-color:#111b1f;border-color:#35e0e81f}.sd-input.svelte-a9j4oe{background-color:#0b1215;border-color:#35e0e81f}.sd-input.svelte-a9j4oe:focus{border-color:#35e0e8}.sd-primary.svelte-a9j4oe{background-color:#35e0e8;color:#0b1215}.sd-mini.svelte-a9j4oe{border-color:#35e0e81f}.sd-kr.svelte-a9j4oe{background-color:#111b1f}.region-btn.svelte-1gdnqq5{border-color:#35e0e81f}.region-btn.active.svelte-1gdnqq5{background-color:#35e0e826;border-color:#35e0e880;color:#35e0e8}.season-select.svelte-1gdnqq5{border-color:#35e0e81f}.season-select.svelte-1gdnqq5 option.svelte-1gdnqq5{background-color:#0b1215}th.svelte-1gdnqq5{color:#35e0e8}td.svelte-1gdnqq5{border-bottom-color:#35e0e81f}.season-select.svelte-81ueoe{border-color:#35e0e81f}.season-select.svelte-81ueoe option.svelte-81ueoe{background-color:#0b1215}.kc-title.svelte-1xp8pv1{color:#35e0e8}.back-btn.svelte-1xp8pv1{border-color:#35e0e84d}.back-btn.svelte-1xp8pv1:hover{background-color:#35e0e81f;color:#35e0e8}.friend-list.svelte-e2g8p2{background-color:#111b1f;border-right-color:#35e0e81f}.friend-presence-dot.svelte-e2g8p2{border-color:#35e0e81f}.friend-presence-dot.offline.svelte-e2g8p2{background-color:#24343a}.friend-unread.svelte-e2g8p2{background-color:#35e0e8;color:#0b1215}.friend-list-search.svelte-e2g8p2{background-color:#111b1f;border-top-color:#35e0e81f}.conversation-root.svelte-128yn5i{background-color:#151f24}.conversation-header.svelte-128yn5i{border-bottom-color:#35e0e81f;background-color:#111b1f}.conversation-presence-dot.svelte-128yn5i{border-color:#35e0e81f}.conversation-presence-dot.offline.svelte-128yn5i{background-color:#24343a}.conversation-compose.svelte-128yn5i{border-top-color:#35e0e81f;background-color:#111b1f}.conversation-load-earlier.svelte-128yn5i{border-color:#35e0e81f}.conversation-input.svelte-128yn5i{background-color:#0b1215;border-color:#35e0e81f}.conversation-input.svelte-128yn5i:focus{border-color:#35e0e8}.conversation-emoji-button.svelte-128yn5i{background-color:#0b1215;border-color:#35e0e81f}.conversation-emoji-button.svelte-128yn5i:hover:not(:disabled){background-color:#111b1f;color:#35e0e8}.conversation-send-button.svelte-128yn5i{background-color:#35e0e8;color:#0b1215}.conversation-send-button.svelte-128yn5i:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.conversation-send-button.svelte-128yn5i:disabled{background-color:#1d2c32}.friends-root.svelte-u33r8v{background-color:#151f24}.friends-status-dot.svelte-u33r8v{background-color:#24343a}.player-card.svelte-dp3rf9{background-color:#0b1215cc;border-color:#35e0e81f}.player-card.svelte-dp3rf9:hover{background-color:#111b1fcc}.player-card.svelte-dp3rf9:focus-visible{outline-color:#35e0e847}.counterBadge.svelte-fgmdj8{background-color:#35e0e8;color:#0b1215}.territory-map-container.svelte-102279m{background-color:#111b1f;border-color:#35e0e81f}.territory-details-panel.svelte-102279m{border-color:#35e0e81f}.panel-header.svelte-102279m,.leaderboard-entry.svelte-102279m{border-bottom-color:#35e0e81f}.clickable-name.svelte-myp8tq:hover{color:var(--highlight-color, rgb(53, 224, 232))}.view-tab.svelte-myp8tq{border-color:#35e0e81f}.view-tab.active.svelte-myp8tq{background-color:#35e0e833;border-color:#35e0e866}.day-arrow.svelte-myp8tq,.day-input.svelte-myp8tq{border-color:#35e0e81f}.payouts-row.svelte-myp8tq,.payouts-row-header.svelte-myp8tq{border-bottom-color:#35e0e81f}.main-title.svelte-1sr7h97,.card-title.svelte-1sr7h97{color:#35e0e8}.map-badge.svelte-1sr7h97,.mode-badge.svelte-1sr7h97{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.section-title.svelte-1sr7h97{color:#35e0e8;border-left-color:#35e0e8}.rule-icon.svelte-1sr7h97,.tip-title.svelte-1sr7h97{color:#35e0e8}.filter-input.svelte-72bcy3{border-color:#35e0e84d}.filter-input.svelte-72bcy3:focus{border-color:#35e0e8}.post-card.svelte-72bcy3{border-color:#35e0e81f}.looking-for-label.svelte-72bcy3{color:#35e0e8}.req-badge.svelte-72bcy3{border-color:#35e0e81f}.player-clan.clickable-clan.svelte-7h12t9:hover{color:var(--highlight-color, rgb(53, 224, 232))}.tab-bar.svelte-7h12t9{border-bottom-color:#35e0e81f}.tab.active.svelte-7h12t9{border-bottom-color:var(--highlight-color, rgb(53, 224, 232))}.day-arrow.svelte-7h12t9,.day-input.svelte-7h12t9{border-color:#35e0e81f}.page-btn.svelte-7h12t9{background-color:#35e0e833;border-color:#35e0e866}.ct-row.svelte-7h12t9,.ct-header.svelte-7h12t9{border-bottom-color:#35e0e81f}.clickable-name.svelte-7h12t9:hover{color:var(--highlight-color, rgb(53, 224, 232))}.rank-display.svelte-19e82s0{border-color:#35e0e81f}.popup-box.svelte-6dkuug{background-color:#151f24}.moreKrunkerOption.svelte-19783yx{border-color:#35e0e847;background-color:#0b1215}.moreKrunkerOption.svelte-19783yx:hover{border-color:#35e0e847}.emoji-panel.svelte-13g6jqo{background-color:#151f24}.emoji-icon.svelte-13g6jqo{color:#35e0e8}.emoji-item.selected.svelte-13g6jqo,.emoji-item.svelte-13g6jqo:hover{border-color:#35e0e81f}.compose-window.svelte-qxxay9{background-color:#0b1215;border-color:#35e0e81f}.compose-input.svelte-qxxay9{border-color:#35e0e81f}.compose-input.svelte-qxxay9:focus{border-color:#35e0e899}.compose-input-num.svelte-qxxay9{border-color:#35e0e81f}.compose-btn-submit.svelte-qxxay9{background-color:#35e0e8;color:#0b1215}.compose-btn-submit.svelte-qxxay9:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.rewards-container.svelte-1sac6ik{border-color:#35e0e81f}.reward-card.flying.svelte-1sac6ik:after{border-color:#35e0e81f}.card-front.svelte-1sac6ik,.card-back.svelte-1sac6ik{background-color:#070c0fe6}.loading-spinner.svelte-172kpk5{border-color:#35e0e81f;border-top-color:#35e0e8}.socialsStickyFooter.svelte-1ley7u4{border-top-color:#35e0e81f}.pollBadge.svelte-1ley7u4,.pollVote.svelte-1ley7u4{background-color:#35e0e8;color:#0b1215}.eventLink.svelte-1ley7u4{color:#35e0e8;background-color:#35e0e81a}.eventLink.svelte-1ley7u4:hover{background-color:#35e0e833}.dm-emoji-panel.svelte-1ni3kfh{background-color:#151f24;border-color:#35e0e81f}.dm-emoji-header.svelte-1ni3kfh{border-bottom-color:#35e0e81f}.dm-emoji-header-icon.svelte-1ni3kfh{color:#35e0e8}.dm-emoji-thumb.svelte-1ni3kfh{background-color:#0b1215;border-color:#35e0e81f}.sub-tab-panel.svelte-lri212{border-color:#35e0e847}.bundle-card.svelte-lri212{background-color:#070c0f}.bundle-item-req.svelte-lri212{border-color:#35e0e847}.detail-window.svelte-h3kymj{background-color:#0b1215;border-color:#35e0e81f}.detail-head.svelte-h3kymj{border-bottom-color:#35e0e81f}.reply-input.svelte-h3kymj{border-color:#35e0e81f}.reply-input.svelte-h3kymj:focus{border-color:#35e0e880}.reply-btn.svelte-h3kymj{background-color:#35e0e8;color:#0b1215}.map-filter-select.svelte-c92dbh{border-color:#35e0e866}.map-filter-select.svelte-c92dbh:hover{border-color:#35e0e8}.map-filter-select.svelte-c92dbh:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.section-title.svelte-c92dbh{color:#35e0e8;border-left-color:#35e0e8}.day-arrow.svelte-c92dbh{border-color:#35e0e866;color:#35e0e8}.day-arrow.svelte-c92dbh:hover:not(:disabled){background-color:#35e0e833;border-color:#35e0e8}.day-input.svelte-c92dbh{border-color:#35e0e866}.day-input.svelte-c92dbh:focus{border-color:#35e0e8}.no-participation-title.svelte-c92dbh{color:#35e0e8}.page-btn.svelte-c92dbh{background-color:#35e0e833;border-color:#35e0e866}.overlay-content.svelte-jxc66d{background-color:#070c0f;border-color:#35e0e81f}.streams-overlay.svelte-60shhe{border-color:#35e0e81f}.hide-button.svelte-60shhe{background-color:#182429}.hide-button.svelte-60shhe:hover{background-color:#1d2c32}.spinner.svelte-60shhe{border-color:#35e0e81f}.featured-section.svelte-60shhe{background-color:#070c0fe6}.stream-card.svelte-60shhe{background-color:#0b1215cc;border-color:#35e0e81f}.thumbnail.svelte-60shhe{background-color:#0b1215}.thumbnail.svelte-60shhe:before{background-color:#0b1215}.tutorialSidebar.svelte-los391{background-image:linear-gradient(180deg,#111b1ff2,#0b1215f2)}.tutorialSidebar.svelte-los391:before{background-image:linear-gradient(180deg,rgba(17,27,31,.95) 0%,transparent 100%)}.tutorialSidebar.svelte-los391:after{background-image:linear-gradient(0deg,rgba(11,18,21,.95) 0%,transparent 100%)}.tutorialNavItem.svelte-los391{border-bottom-color:#35e0e81f}.matchmakingBarImage.svelte-los391,.inviteFriendsURLImage.svelte-los391,.spinsImage.svelte-los391,.matchmakingBarQuickMatchImage.svelte-los391,.hostFindGameImage.svelte-los391,.hostGameSetupImage.svelte-los391,.challengesImage.svelte-los391,.rankedImage.svelte-los391,.clanCreateImage.svelte-los391,.clanManageImage.svelte-los391,.tradingImage.svelte-los391,.challengeModeImage.svelte-los391,.challengeModeDifferenceImage.svelte-los391{border-color:#35e0e81f}.comment-text.svelte-7miv1g a{color:#35e0e8}.guide-section.svelte-4log2q{background-color:#070c0f}.guide-section-title.svelte-4log2q .material-icons.svelte-4log2q{color:#35e0e8}.guide-key.svelte-4log2q{background-color:#111b1f;border-color:#35e0e81f}.guide-rarity.dark.svelte-4log2q{border-color:#35e0e81f}.match-details.svelte-1irqx9a{border-top-color:#35e0e81f}.table-header.svelte-1irqx9a,.table-cell.svelte-1irqx9a{border-bottom-color:#35e0e81f}.page-btn.svelte-1irqx9a{border-color:#35e0e81f}.page-btn.svelte-1irqx9a:hover:not([disabled]){border-color:#35e0e81f}.currency-reward.svelte-1yk8fym,.gift-button.svelte-rew7ag{border-color:#35e0e81f}.modal-content.svelte-1pf0608{background-color:#111b1f;border-color:#35e0e81f}.price-input.svelte-1pf0608,.fee-breakdown.svelte-1pf0608{border-color:#35e0e81f}.season-banner.svelte-17kea4i{background-color:#35e0e8;color:#0b1215}.challenges-link-icon.svelte-17kea4i,.section-title.svelte-1x46pbz .material-icons.svelte-1x46pbz{color:#35e0e8}.param-chip.svelte-1x46pbz{border-color:#35e0e81f}.add-uniform-btn.svelte-1x46pbz{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.add-uniform-btn.svelte-1x46pbz:hover{background-color:#35e0e84d}.part-block.svelte-1x46pbz,.part-name-input.svelte-1x46pbz{border-color:#35e0e81f}.copy-defaults-btn.svelte-1x46pbz{background-color:#35e0e826;border-color:#35e0e84d;color:#35e0e8}.copy-defaults-btn.svelte-1x46pbz:hover:not(:disabled){background-color:#35e0e84d}.apply-btn.svelte-1x46pbz,.apply-btn.svelte-1x46pbz:hover{background-color:#35e0e8;color:#0b1215}.clear-btn.svelte-1x46pbz{border-color:#35e0e81f}.ph-xp-fill.svelte-da3zva{background-image:linear-gradient(to right,#ff6a0b,#35e0e8)}.survey-notification.svelte-1u0qxrf{background-image:linear-gradient(135deg,#000000f2,#070c0ffa)}.answer-btn.svelte-1u0qxrf{border-color:#35e0e81f}.icon-btn.list.svelte-hk8nq9{background-color:#35e0e8;color:#0b1215}.card-title.svelte-1k16b2z,.view-title.svelte-1k16b2z{color:#35e0e8}.trade-item.svelte-z9tzua,.trade-item-empty.svelte-z9tzua{border-color:#35e0e81f}.bm-card.svelte-dbcods{background-color:#070c0f}.bm-card-icon.svelte-dbcods{border-color:#35e0e847}.bm-locked-btn.svelte-dbcods{background-color:#111b1f}.modal-content.svelte-dbcods{background-color:#111b1f;border-color:#35e0e81f}.price-row.total.svelte-dbcods{border-top-color:#35e0e81f}.sma-dialog.svelte-1veg8cv{background-color:#151f24}.sma-header.svelte-1veg8cv{background-color:#111b1f;border-bottom-color:#35e0e81f}.sma-header-icon.svelte-1veg8cv{color:#35e0e8}.sma-rules.svelte-1veg8cv{background-color:#111b1f;border-color:#35e0e81f}.sma-input.svelte-1veg8cv{background-color:#0b1215;border-color:#35e0e81f}.sma-input.svelte-1veg8cv:focus{border-color:#35e0e8}.sma-map.svelte-1veg8cv{border-color:#35e0e81f}.sma-map.active.svelte-1veg8cv{border-color:#35e0e8;color:#35e0e8}.sma-footer.svelte-1veg8cv{border-top-color:#35e0e81f;background-color:#111b1f}.sma-secondary.svelte-1veg8cv{border-color:#35e0e81f}.sma-primary.svelte-1veg8cv{background-color:#35e0e8;color:#0b1215}.usernames-col.svelte-27udiy{border-color:#35e0e81f}.col-header.svelte-27udiy{border-bottom-color:#35e0e81f}.username-row.svelte-27udiy{border-color:#35e0e81f}.username-row.active.svelte-27udiy{border-color:#35e0e8}.leave-note.svelte-27udiy{border-left-color:#35e0e8}.username-active.svelte-27udiy{color:#35e0e8}#menuWindow.eterno .store-tabs.svelte-v85byk{background-color:#111b1fad}.store-tab.svelte-v85byk:hover,.store-tab-active.svelte-v85byk,.store-tab-active.svelte-v85byk:hover{border-bottom-color:#35e0e847}.register-notification.svelte-t1w66d{background-image:linear-gradient(135deg,#000000e6,#070c0ff2)}.table.svelte-12kndpz th.svelte-12kndpz,.table.svelte-12kndpz td.svelte-12kndpz{border-bottom-color:#35e0e81f}.pagination.svelte-12kndpz{border-top-color:#35e0e81f}.pagination-btn.svelte-12kndpz{background-color:#35e0e8;color:#0b1215}.pagination-btn.svelte-12kndpz:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.loading-spinner.svelte-1tteuk0{border-color:#35e0e81f}.load-more-btn.svelte-1tteuk0{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-1tteuk0:hover{background-color:#35e0e84d}.load-more-btn.svelte-1tteuk0:active{background-color:#35e0e866}.modal-content.svelte-1k428dj{background-color:#111b1f;border-color:#35e0e81f}.st-root.svelte-kqehnu{background-color:#151f24}.st-header.svelte-kqehnu{border-bottom-color:#35e0e81f;background-color:#111b1f}.st-back.svelte-kqehnu{border-color:#35e0e81f}.st-header-icon.svelte-kqehnu{color:#35e0e8}.st-row.svelte-kqehnu{background-color:#111b1f;border-color:#35e0e81f}.st-row.svelte-kqehnu:hover{background-color:#151f24}.st-invite.svelte-kqehnu:hover{background-color:#111b1f}.st-mini.svelte-kqehnu{border-color:#35e0e81f}.st-section-title.svelte-kqehnu{color:#35e0e8;border-top-color:#35e0e81f}.st-input.svelte-kqehnu{background-color:#0b1215;border-color:#35e0e81f}.st-input.svelte-kqehnu:focus{border-color:#35e0e8}.st-primary.svelte-kqehnu{background-color:#35e0e8;color:#0b1215}.card-title.svelte-raovk7,.view-title.svelte-raovk7{color:#35e0e8}.profile-detail-root.svelte-1hghrmf{background-color:#151f24}.profile-detail-header-bar.svelte-1hghrmf{border-bottom-color:#35e0e81f;background-color:#111b1f}.profile-detail-back.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-header-icon.svelte-1hghrmf{color:#35e0e8}.profile-detail-identity.svelte-1hghrmf,.profile-detail-avatar.svelte-1hghrmf{background-color:#111b1f;border-color:#35e0e81f}.profile-detail-online-dot.svelte-1hghrmf{background-color:#24343a;border-color:#35e0e81f}.profile-detail-creation-thumb.svelte-1hghrmf{background-color:#0b1215}.profile-detail-clan.svelte-1hghrmf{color:#35e0e8}.profile-detail-info-row.svelte-1hghrmf{border-top-color:#35e0e81f}.profile-detail-follow-box.svelte-1hghrmf{background-color:#111b1f}.profile-detail-follow-box.svelte-1hghrmf:hover{background-color:#151f24}.profile-detail-action.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-action.active.svelte-1hghrmf{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.profile-detail-action.active.svelte-1hghrmf i.svelte-1hghrmf{color:#35e0e8}.profile-detail-xp-strip.svelte-1hghrmf{border-top-color:#35e0e81f}.profile-detail-level-badge.svelte-1hghrmf,.profile-detail-xp-fill.svelte-1hghrmf{background-color:#35e0e8;color:#0b1215}.profile-detail-stat.svelte-1hghrmf,.profile-detail-class.svelte-1hghrmf,.profile-detail-raid-row.svelte-1hghrmf{background-color:#0b1215;border-color:#35e0e81f}.profile-detail-sales-panel.svelte-1hghrmf,.profile-detail-badges-panel.svelte-1hghrmf,.profile-detail-creations-panel.svelte-1hghrmf{background-color:#111b1f;border-color:#35e0e81f}.profile-detail-section-header.svelte-1hghrmf,.profile-detail-sales-header.svelte-1hghrmf{color:#35e0e8}.profile-detail-range-btn.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-range-btn.active.svelte-1hghrmf{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.profile-detail-listing-card.svelte-1hghrmf{background-color:#0b1215}.profile-detail-listing-card.svelte-1hghrmf:hover{background-color:#111b1f}.profile-detail-listing-thumb.svelte-1hghrmf{background-color:#070c0f}.profile-detail-title-item.svelte-1hghrmf,.profile-detail-badge-item.svelte-1hghrmf{background-color:#111b1f}.profile-detail-creation-card.svelte-1hghrmf{background-color:#0b1215}.profile-detail-creation-card.svelte-1hghrmf:hover{background-color:#111b1f}.modal-content.svelte-1ugt6n9{background-color:#111b1f;border-color:#35e0e81f}.section-title.svelte-awmvtb .material-icons.svelte-awmvtb{color:#35e0e8}.sound-info.svelte-awmvtb{border-color:#35e0e81f}.btn-replace.svelte-awmvtb{background-color:#35e0e8cc}.btn-replace.svelte-awmvtb:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.item-preview.svelte-1lii2o,.kid-display-container.svelte-lbi007{border-color:#35e0e81f}.kid-display-benefits.svelte-lbi007 h3.svelte-lbi007:after{background-color:#35e0e8;color:#0b1215}.partnership-info.svelte-lbi007{background-color:#35e0e81a;border-left-color:#35e0e8}.sgNode.svelte-wbsbny{background-color:#0b1215f5;border-color:#35e0e81f}.sgNode.selected.svelte-wbsbny{border-color:#35e0e8;box-shadow:0 0 0 1px #35e0e8,0 2px 10px #00000073}.sgNode.isOutput.svelte-wbsbny .sgNodeHeader.svelte-wbsbny{background-color:#35e0e840}.sgNodeHeader.svelte-wbsbny{border-bottom-color:#35e0e81f}.sgSelect.svelte-wbsbny,.sgText.svelte-wbsbny{border-color:#35e0e81f}.sgSelect.svelte-wbsbny option.svelte-wbsbny{background-color:#0b1215}.sgSelect.svelte-wbsbny:focus,.sgText.svelte-wbsbny:focus{border-color:#35e0e8}.sgCheck.svelte-wbsbny:focus-visible{outline-color:#35e0e8}.sgUnset.svelte-wbsbny{border-color:#35e0e81f}.sgUnset.svelte-wbsbny:hover:not(:disabled){border-color:#35e0e847}.sgUnset.svelte-wbsbny:focus-visible{outline-color:#35e0e8}.simple-tabs.svelte-1oqd18e{border-bottom-color:#35e0e81f}.simple-tab-active.svelte-1oqd18e{border-bottom-color:#35e0e8}.simple-tab-active.svelte-1oqd18e .simple-tab-icon.svelte-1oqd18e,.simple-tab-active.svelte-1oqd18e .simple-tab-label.svelte-1oqd18e{color:#35e0e8}.load-more-button.svelte-23mnz9{background-color:#35e0e833;border-color:#35e0e880;color:#35e0e8}.load-more-button.svelte-23mnz9:hover{background-color:#35e0e84d}.loading-spinner.svelte-gh77t9{border-color:#35e0e81f;border-top-color:#35e0e847}.retry-button.svelte-gh77t9{background-color:#35e0e8;color:#0b1215}.filter-input.svelte-1rpti7l{border-color:#35e0e84d}.filter-input.svelte-1rpti7l:focus{border-color:#35e0e8}.spin-promo-badge.svelte-5s5opu{border-color:#35e0e847}.no-offer-container.svelte-m5s1iy{background-color:#070c0fcc}.refresh-button.svelte-m5s1iy{background-image:linear-gradient(135deg,#ff5722,#ff9800,#35e0e8);border-color:#35e0e81f}.refresh-button.svelte-m5s1iy:hover:not(:disabled){border-color:#35e0e847}.optin__hero-fade.svelte-ga1m1g{background-image:linear-gradient(to top,#070c0ff2,#14141400 45%)}.report-root.svelte-18p16wl{background-color:#151f24}.report-header.svelte-18p16wl{border-bottom-color:#35e0e81f;background-color:#111b1f}.report-back.svelte-18p16wl{border-color:#35e0e81f}.report-input.svelte-18p16wl{background-color:#0b1215;border-color:#35e0e81f}.report-done.svelte-18p16wl{border-color:#35e0e81f}.trade-window.svelte-kfskmv{background-color:#151f24}.trade-message.svelte-kfskmv{border-color:#35e0e81f}.trade-message.svelte-kfskmv:focus{border-color:#35e0e81f}.trade-submit.disabled.svelte-kfskmv{background-color:#1d2c32}.profile-header.svelte-18dbnt3{border-bottom-color:#35e0e81f}.dynamic-shop-item.svelte-dif8c,.dynamic-shop-item.svelte-dif8c:hover,.dynamic-row.svelte-dif8c{border-color:#35e0e81f}.dynamic-row.svelte-dif8c:hover{border-color:#35e0e847}.next-step-hint.svelte-dif8c{color:#35e0e8}.dyn-buy-button.svelte-dif8c{border-color:#35e0e81f}.dyn-buy-button.virtual.svelte-dif8c{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);box-shadow:0 4px 12px #35e0e84d,0 2px 4px #0003,inset 0 1px #fff3}.dyn-buy-button.svelte-dif8c:hover:not(:disabled){border-color:#35e0e81f}.dyn-buy-button.svelte-dif8c:disabled{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.craft-recipe-card.svelte-ggnigm{background-color:#070c0f}.craft-icon.svelte-ggnigm,.craft-item-req.svelte-ggnigm{border-color:#35e0e847}.craft-item-req.missing.svelte-ggnigm{border-color:#35e0e847!important}.craft-timer.svelte-ggnigm{background-color:#151f24}.item-wrapper.selected.svelte-18k2d4k{box-shadow:0 0 0 2px #35e0e8}.section-title.svelte-gygf75 .material-icons.svelte-gygf75{color:#35e0e8}.btn-replace.svelte-gygf75{background-color:#35e0e8cc}.btn-replace.svelte-gygf75:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.highlight-name.svelte-1w0uz1r{background-color:#35e0e81a;border-color:#35e0e84d}.logo-image.svelte-1w0uz1r,.banner-color-swatch.svelte-1w0uz1r,.swatch.svelte-1w0uz1r,.swatch-fill.svelte-1w0uz1r,.text-notification.svelte-nrigjp,.share-btn.svelte-1524ito{border-color:#35e0e81f}.bubble-row.sent.svelte-jj9ljg .bubble.svelte-jj9ljg{background-color:#35e0e8;color:#0b1215}.quantity-button.svelte-jsgxg6:disabled{background-color:#24343a;border-color:#35e0e81f}.section-title.svelte-1rov8jm .material-icons.svelte-1rov8jm{color:#35e0e8}.tool-btn.svelte-1rov8jm,.attach-btn.svelte-1rov8jm{border-color:#35e0e81f}.tool-btn.active.svelte-1rov8jm{border-color:#35e0e8;background-color:#35e0e840}.fields.svelte-1rov8jm input[type=number].svelte-1rov8jm,.fields.svelte-1rov8jm select.svelte-1rov8jm,.fields.svelte-1rov8jm input[type=color].svelte-1rov8jm{border-color:#35e0e81f}.window-header.svelte-4fhlo6{border-bottom-color:#35e0e81f;background-color:#111b1f}.window-header-icon.svelte-4fhlo6,.section-title.svelte-wfs5t6 .material-icons.svelte-wfs5t6{color:#35e0e8}.form-select.svelte-wfs5t6{border-color:#35e0e81f}.form-select.svelte-wfs5t6:focus{border-color:#35e0e8}.form-select.svelte-wfs5t6 option.svelte-wfs5t6{background-color:#0b1215}.dye-color-input.svelte-wfs5t6{border-color:#35e0e81f}.dye-opacity-slider.svelte-wfs5t6::-webkit-slider-thumb{background-color:#35e0e8;border-color:#35e0e81f;color:#0b1215}.form-input.svelte-iy81sy,.form-select.svelte-iy81sy{border-color:#35e0e81f}.form-input.svelte-iy81sy:focus,.form-select.svelte-iy81sy:focus{border-color:#35e0e8}.form-select.svelte-iy81sy option.svelte-iy81sy{background-color:#0b1215}.add-all-button.svelte-1rj22es:disabled{background-color:#24343a;border-color:#35e0e81f}.lottery-window.theme-easter.svelte-1rj22es,.theme-easter.svelte-1rj22es .title-separator.svelte-1rj22es,.theme-easter.svelte-1rj22es .cost-column.themed-box.svelte-1rj22es{outline-color:#35e0e81f}.lottery-window.theme-neutral.svelte-1rj22es:after{border-color:#35e0e81f}.theme-neutral.svelte-1rj22es .draw-timer.svelte-1rj22es{border-color:#35e0e81f;background-color:#182429a6}.theme-neutral.svelte-1rj22es .cost-column.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .grand-prize-container.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .additional-prizes-box.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .last-draw-winners.themed-box.svelte-1rj22es{border-color:#35e0e81f;background-color:#18242980}.painted-badge-swatch.svelte-n0vhtc,.painted-inline-swatch.svelte-n0vhtc{border-color:#35e0e847}.milestone-number.svelte-6hxhl0{background-color:#182429}.milestone-bonus.svelte-6hxhl0{background-color:#151f24}.milestone-bonus.claimable.svelte-6hxhl0{background-color:#182429}.progression-summary.svelte-6hxhl0{border-top-color:#35e0e81f}.progression-details.svelte-6hxhl0{border-color:#35e0e81f}.offer-holder.svelte-1agthf7,.offer-holder.svelte-1agthf7:hover{background-color:#111b1f}.offer-name.svelte-1agthf7{color:#35e0e8}.filter-input.svelte-49w24t,.filter-select.svelte-49w24t{border-color:#35e0e84d}.filter-input.svelte-49w24t:focus,.filter-select.svelte-49w24t:focus{border-color:#35e0e8}.email-change-section.svelte-126q2op{border-top-color:#35e0e81f}.change-email-btn.svelte-126q2op{border-color:#35e0e8}.sidebar-tab.svelte-berov0{background-color:#151f24}.sidebar-tab.svelte-berov0:hover,.sidebar-tab.active.svelte-berov0,.sidebar-tab-badge.svelte-berov0{background-color:#35e0e8;color:#0b1215}.items-detail-root.svelte-dmu4q2{background-color:#151f24}.items-detail-header-bar.svelte-dmu4q2{border-bottom-color:#35e0e81f;background-color:#111b1f}.items-detail-back.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-header-icon.svelte-dmu4q2{color:#35e0e8}.items-detail-header-btn.svelte-dmu4q2,.preview-action-btn.svelte-dmu4q2{border-color:#35e0e81f}.preview-action-btn.svelte-dmu4q2:hover{border-color:#35e0e847}.preview-action-btn.active.svelte-dmu4q2{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.items-detail-wear-slider.svelte-dmu4q2,.items-detail-instance-overlay.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-paint-swatch.svelte-dmu4q2{border-color:#35e0e847}.items-detail-tabs-panel.svelte-dmu4q2{background-color:#111b1f;border-color:#35e0e81f}.items-detail-creator-link.svelte-dmu4q2{color:#35e0e8}.items-detail-stats-section.svelte-dmu4q2{border-top-color:#35e0e81f}.items-detail-stats-header.svelte-dmu4q2{color:#35e0e8}.items-detail-range-btn.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-range-btn.active.svelte-dmu4q2{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.items-detail-owner-row.svelte-dmu4q2{border-bottom-color:#35e0e81f}.items-detail-owner-name.svelte-dmu4q2:hover{color:#35e0e8}.items-detail-instance-table.svelte-dmu4q2 th.svelte-dmu4q2{background-color:#111b1f;border-bottom-color:#35e0e81f}.items-detail-instance-table.svelte-dmu4q2 td.svelte-dmu4q2,.items-detail-listing-row.svelte-dmu4q2{border-bottom-color:#35e0e81f}.items-detail-listing-seller.svelte-dmu4q2:hover,.no-clan-title.svelte-51j5cz,.clan-benefits.svelte-51j5cz h3.svelte-51j5cz{color:#35e0e8}.clan-benefits.svelte-51j5cz li.svelte-51j5cz:before{color:#35e0e8}.map-filter-select.svelte-51j5cz{border-color:#35e0e866}.map-filter-select.svelte-51j5cz:hover{border-color:#35e0e8}.map-filter-select.svelte-51j5cz:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.section-title.svelte-51j5cz{color:#35e0e8;border-left-color:#35e0e8}.day-arrow.svelte-51j5cz{border-color:#35e0e866;color:#35e0e8}.day-arrow.svelte-51j5cz:hover:not(:disabled){background-color:#35e0e833;border-color:#35e0e8}.day-input.svelte-51j5cz{border-color:#35e0e866}.day-input.svelte-51j5cz:focus{border-color:#35e0e8}.view-all-btn.svelte-51j5cz{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.view-all-btn.svelte-51j5cz:hover{background-color:#35e0e84d}.page-btn.svelte-51j5cz{background-color:#35e0e833;border-color:#35e0e866}.historical-day.svelte-51j5cz{border-color:#35e0e81f}.day-header.svelte-51j5cz{border-bottom-color:#35e0e81f}.day-label.svelte-51j5cz{color:#35e0e8}.clan-side.comparison-clan.no-comparison.svelte-51j5cz,.clan-side.svelte-51j5cz .clan-logo-small.svelte-51j5cz{border-color:#35e0e81f}.stat-row.svelte-51j5cz{border-bottom-color:#35e0e81f}.no-participation-title.svelte-51j5cz,.eligible-maps.svelte-51j5cz h3.svelte-51j5cz{color:#35e0e8}.eligible-maps.svelte-51j5cz li.svelte-51j5cz{background-color:#35e0e81a;border-color:#35e0e84d}.game-announcement.svelte-1m80xxc{border-color:#35e0e81f}.game-announcement.svelte-1m80xxc:before{border-bottom-color:#35e0e847}.ga-bundle.svelte-1m80xxc{border-color:#35e0e81f}.ga-bundle.svelte-1m80xxc:hover,.ga-action-btn.svelte-1m80xxc,.ga-action-btn.svelte-1m80xxc:hover,.ga-action-btn.disabled.svelte-1m80xxc:hover{border-color:#35e0e847}.login-button.svelte-16z1lxi{background-color:#070c0f;border-color:#35e0e847}.terms-privacy-notice.svelte-16z1lxi a.svelte-16z1lxi{color:#35e0e8}.item-wrapper.selected.svelte-zhgogl{box-shadow:0 0 0 2px #35e0e8}.loading-spinner.svelte-zhgogl{border-color:#35e0e81f}.load-more-btn.svelte-zhgogl{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-zhgogl:hover{background-color:#35e0e84d}.load-more-btn.svelte-zhgogl:active{background-color:#35e0e866}.tab.svelte-1o3qul6:hover,.tab-active.svelte-1o3qul6,.tab-active.svelte-1o3qul6:hover{border-bottom-color:#35e0e847}.trading-column-header.svelte-1r9fijr{border-bottom-color:#35e0e81f}.confirm-box.svelte-1r9fijr,.start-box.svelte-1r9fijr{background-color:#151f24;border-color:#35e0e81f}.start-input.svelte-1r9fijr{border-color:#35e0e81f}.start-input.svelte-1r9fijr:focus{border-color:#35e0e81f}.section-title.svelte-4e4ust .material-icons.svelte-4e4ust{color:#35e0e8}.texture-settings.svelte-4e4ust{border-color:#35e0e81f}.toggle-switch.svelte-4e4ust input:checked+.slider.svelte-4e4ust{background-color:#35e0e8;color:#0b1215}.form-select.svelte-4e4ust{border-color:#35e0e81f}.form-select.svelte-4e4ust:focus{border-color:#35e0e8}.form-select.svelte-4e4ust option.svelte-4e4ust{background-color:#0b1215}.texture-upload-item.svelte-4e4ust{border-color:#35e0e81f}.uploading-badge.svelte-4e4ust{background-color:#35e0e8cc}.texture-image.svelte-4e4ust{border-color:#35e0e81f}.btn-replace.svelte-4e4ust{background-color:#35e0e8cc}.btn-replace.svelte-4e4ust:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.item-wrapper.selected.svelte-1l3mtrv{box-shadow:0 0 0 2px #35e0e8}.news-item.svelte-1ult4vg{border-left-color:#35e0e8}.news-item.svelte-1ult4vg a{color:#35e0e8}.menu-container.svelte-mqcul7{background-color:#070c0f}.menu-item.active.svelte-mqcul7{border-bottom-color:#35e0e847}button.svelte-mqcul7{background-color:#35e0e8;color:#0b1215}button.svelte-mqcul7:hover{box-shadow:0 0 60px #35e0e875}.start-button.svelte-mqcul7{background-color:#35e0e8;color:#0b1215}.start-button[disabled].svelte-mqcul7{background-color:#1d2c32}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7{background-color:#0b1215;border-color:#35e0e8;box-shadow:0 0 #35e0e833}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7:hover{box-shadow:0 0 0 2px #35e0e833}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7:checked{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.paint-container.svelte-10qrqvt{background-color:#151f24bf}.slider-arrow.svelte-10qrqvt{border-color:#35e0e81f}.slider-arrow.left.svelte-10qrqvt .slider-arrow-icon.svelte-10qrqvt{border-right-color:#35e0e847}.slider-arrow.right.svelte-10qrqvt .slider-arrow-icon.svelte-10qrqvt{border-left-color:#35e0e847}.swatch.svelte-10qrqvt{border-color:#35e0e81f}.swatch.locked.selected.svelte-10qrqvt{border-color:#35e0e847}.swatch-fill.svelte-10qrqvt,.btn.svelte-10qrqvt{border-color:#35e0e81f}.inventory-filter.svelte-ga3en0{background-color:#111b1f;border-color:#35e0e81f}.filter-header.svelte-ga3en0{background-color:#111b1f}.reset-btn.svelte-ga3en0,.reset-btn.svelte-ga3en0:hover,.expand-btn.svelte-ga3en0,.expand-btn.svelte-ga3en0:hover{background-color:#24343a}.filter-content.svelte-ga3en0{border-top-color:#35e0e81f}.search-input.svelte-ga3en0,.season-select.svelte-ga3en0,.sort-select.svelte-ga3en0,.category-select.svelte-ga3en0{background-color:#151f24;border-color:#35e0e81f}.filter-tabs.svelte-ga3en0{border-bottom-color:#35e0e81f}.filter-tab.svelte-ga3en0{background-color:#151f24}.filter-tab.svelte-ga3en0:hover{background-color:#182429}.filter-tab.active.svelte-ga3en0{background-color:#35e0e8;color:#0b1215}.toggle-all-btn.svelte-ga3en0{background-color:#1d2c32}.toggle-all-btn.svelte-ga3en0:hover{background-color:#24343a}.filter-panel.svelte-ga3en0{background-color:#111b1f}.filter-item-wrapper.svelte-ga3en0{border-color:#35e0e81f}.filter-item.svelte-ga3en0:hover{background-color:#151f24}.only-btn.svelte-ga3en0{background-color:#1d2c32}.only-btn.svelte-ga3en0:hover{background-color:#24343a}.profile-search-form.svelte-fo44ss{background-color:#0b1215;border-color:#35e0e81f}.profile-search-form.svelte-fo44ss:focus-within{border-color:#35e0e8}.follow-root.svelte-1ef5zjv{background-color:#151f24}.follow-header.svelte-1ef5zjv{border-bottom-color:#35e0e81f;background-color:#111b1f}.follow-back.svelte-1ef5zjv{border-color:#35e0e81f}.follow-header-icon.svelte-1ef5zjv{color:#35e0e8}.follow-tabs.svelte-1ef5zjv{border-bottom-color:#35e0e81f;background-color:#111b1f}.follow-tab.active.svelte-1ef5zjv{border-bottom-color:#35e0e8}.follow-row.svelte-1ef5zjv{background-color:#0b1215cc;border-color:#35e0e81f}.follow-btn.svelte-1ef5zjv{background-color:#35e0e8;color:#0b1215}.follow-btn.following.svelte-1ef5zjv,.price-tag.svelte-1q06uv7{border-color:#35e0e81f}.buy-button.svelte-1q06uv7:disabled{background-color:#24343a}.buy-button.svelte-1q06uv7:disabled:hover{background-color:#24343a}.io-code-display.svelte-owjkr{border-color:#35e0e81f}.music-player.svelte-1ei19qi{background-color:#0b1215f2}.music-btn.svelte-1ei19qi{border-color:#35e0e847}.section-title.svelte-16sjsp2 .material-icons.svelte-16sjsp2{color:#35e0e8}.toggle-switch.svelte-16sjsp2 input:checked+.slider.svelte-16sjsp2{background-color:#35e0e8;color:#0b1215}.form-select.svelte-16sjsp2,.form-input.svelte-16sjsp2{border-color:#35e0e81f}.form-select.svelte-16sjsp2:focus,.form-input.svelte-16sjsp2:focus{border-color:#35e0e8}.form-select.svelte-16sjsp2 option.svelte-16sjsp2{background-color:#0b1215}.texture-upload-item.svelte-16sjsp2{border-color:#35e0e81f}.uploading-badge.svelte-16sjsp2{background-color:#35e0e8cc}.texture-image.svelte-16sjsp2,.post-item-card.svelte-10yvzvw,.post-item-card.svelte-10yvzvw:hover{border-color:#35e0e81f}.post-content-thumb.svelte-10yvzvw{background-color:#0b1215}.post-content-action.svelte-10yvzvw{color:#35e0e8}.post-follow-btn.svelte-10yvzvw{background-color:#35e0e8;color:#0b1215}.post-follow-btn.svelte-10yvzvw:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.postResRo.svelte-10yvzvw,.postResRoD.svelte-10yvzvw{border-bottom-color:#35e0e81f}.post-text.svelte-10yvzvw a{color:#35e0e8}.post-footer.svelte-10yvzvw{border-top-color:#35e0e81f}.vote-btn.svelte-10yvzvw{border-color:#35e0e81f}.vote-btn.svelte-10yvzvw:hover:not(:disabled){border-color:#35e0e847}.vote-btn.svelte-10yvzvw:disabled{border-color:#35e0e81f}.vote-btn-done.svelte-10yvzvw{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.vote-btn-done.svelte-10yvzvw:hover:not(:disabled){background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.owned-count-overlay.svelte-9ff17r{border-color:#35e0e81f}.section-title.svelte-3rvofx .material-icons.svelte-3rvofx{color:#35e0e8}.form-textarea.svelte-3rvofx{border-color:#35e0e81f}.form-textarea.svelte-3rvofx:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.automatic-attributes.svelte-3rvofx{border-color:#35e0e81f}.automatic-attributes-header.svelte-3rvofx{background-color:#35e0e81a;border-bottom-color:#35e0e81f}.automatic-attributes-title.svelte-3rvofx .material-icons.svelte-3rvofx{color:#35e0e8}.loot-updated-name.svelte-1ydnong{color:var(--highlight-color, rgb(53, 224, 232))}.popup.svelte-1wz7ymp{background-color:#151f24}.popup.translucent.svelte-1wz7ymp{background-color:#151f24bf}.popup.slim-border.svelte-1wz7ymp{border-color:#35e0e81f}.sort-select.svelte-111gya4{background-color:#151f24;border-color:#35e0e81f}.sort-select.svelte-111gya4:hover{border-color:#35e0e847}.sort-select.svelte-111gya4:focus{border-color:#35e0e8}.searching-indicator.svelte-111gya4{color:#35e0e8}.searching-indicator.svelte-111gya4:before{border-color:#35e0e8}.clan-view-root.svelte-5j94nj{background-color:#151f24}.clan-view-header-bar.svelte-5j94nj{border-bottom-color:#35e0e81f;background-color:#111b1f}.clan-view-back.svelte-5j94nj{border-color:#35e0e81f}.clan-view-header-icon.svelte-5j94nj{color:#35e0e8}.clan-view-identity.svelte-5j94nj{background-color:#111b1f;border-color:#35e0e81f}.clan-view-logo.svelte-5j94nj,.clan-view-logo-placeholder.svelte-5j94nj{background-color:#111b1f}.clan-view-info.svelte-5j94nj{border-top-color:#35e0e81f}.clan-view-link.svelte-5j94nj{color:#35e0e8}.clan-view-role-header.svelte-5j94nj{color:#35e0e8;border-bottom-color:#35e0e81f}.social-search-input.svelte-1dyc40r{background-color:#0b1215;border-color:#35e0e81f}.social-search-input.svelte-1dyc40r:focus{border-color:#35e0e8}.social-search-btn.svelte-1dyc40r{background-color:#0b1215;border-color:#35e0e81f}.social-search-btn.svelte-1dyc40r:hover{background-color:#111b1f;border-color:#35e0e81f}.social-compose-btn.svelte-1dyc40r,.social-compose-btn.svelte-1dyc40r:hover{background-color:#35e0e8;color:#0b1215}.item-detail-container.svelte-olnzsm{border-left-color:#35e0e81f}.item-detail-header.svelte-olnzsm{border-bottom-color:#35e0e81f}.item-showcase-section.svelte-olnzsm{border-right-color:#35e0e81f}.ownership-count.svelte-olnzsm,.full-details-btn.svelte-olnzsm{border-color:#35e0e81f}.tabs-section.svelte-olnzsm{border-bottom-color:#35e0e81f}.loading-spinner.svelte-olnzsm{border-color:#35e0e81f}.load-more-btn.svelte-olnzsm{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-olnzsm:hover{background-color:#35e0e84d}.load-more-btn.svelte-olnzsm:active{background-color:#35e0e866}.stats-controls.svelte-olnzsm{border-bottom-color:#35e0e81f}.days-back-select.svelte-olnzsm{border-color:#35e0e81f}.days-back-select.svelte-olnzsm:hover:not(:disabled){border-color:#35e0e81f}.days-back-select.svelte-olnzsm:focus{border-color:#35e0e8}.mission-briefing.svelte-1849bws{background-image:linear-gradient(135deg,#0b1215,#111b1f)}.mission-header.svelte-1849bws{background-image:linear-gradient(135deg,#000,#0b1215)}.abort-btn.svelte-1849bws{background-image:linear-gradient(135deg,#151f24,#1d2c32);border-color:#35e0e847}.abort-btn.svelte-1849bws:hover{background-image:linear-gradient(135deg,#1d2c32,#24343a)}.deploy-btn.svelte-1849bws{border-color:#35e0e8}th.svelte-1enb567{color:#35e0e8}td.svelte-1enb567{border-bottom-color:#35e0e81f}.page-button.svelte-1enb567{border-color:#35e0e8}.page-button.svelte-1enb567:hover:not(:disabled){background-color:#35e0e833}.page-button.svelte-1enb567:disabled{border-color:#35e0e84d}.page-indicator.svelte-1enb567{color:#35e0e8}.item-display-container.svelte-1p13km7{border-color:#35e0e81f}.section-title.svelte-sr5bk2 .material-icons.svelte-sr5bk2{color:#35e0e8}.tool-btn.svelte-sr5bk2,.attach-btn.svelte-sr5bk2{border-color:#35e0e81f}.tool-btn.active.svelte-sr5bk2{border-color:#35e0e8;background-color:#35e0e840}.fields.svelte-sr5bk2 input[type=number].svelte-sr5bk2{border-color:#35e0e81f}.wallet-root.svelte-l0gwpc{background-color:#151f24}.wallet-catalog-btn.svelte-l0gwpc{border-color:#35e0e81f}.currency-card.svelte-l0gwpc{background-image:linear-gradient(135deg,#111b1f,#182429);border-color:#35e0e81f}.items-grid.svelte-l0gwpc{background-color:#111b1f}.main-button.svelte-whnh40{background-color:#151f24;border-color:#35e0e81f}.main-button.svelte-whnh40:disabled,.main-button-disabled.svelte-whnh40{background-color:#0b1215}.main-button.svelte-whnh40:disabled:hover,.main-button-disabled.svelte-whnh40:hover{background-color:#0b1215}.main-button.svelte-whnh40:hover:not(:disabled):not(.main-button-disabled){background-color:#182429}.main-button-accept-secondary.svelte-whnh40{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.sort-btn.active.svelte-9t0md3{background-color:#35e0e833;color:#35e0e8;border-color:#35e0e8}.month-select.svelte-9t0md3 option.svelte-9t0md3{background-color:#0b1215}.section-title.svelte-1qb7o10 .material-icons.svelte-1qb7o10{color:#35e0e8}.paint-mode-btn.svelte-1qb7o10{border-color:#35e0e81f}.paint-mode-btn.svelte-1qb7o10:hover:not(:disabled){border-color:#35e0e847}.paint-mode-btn.active.svelte-1qb7o10{background-color:#35e0e826;border-color:#35e0e8;color:#35e0e8}.paint-color-input.svelte-1qb7o10{border-color:#35e0e81f}.paint-preview-base.svelte-1qb7o10{border-top-color:#35e0e81f}.preview-base-input.svelte-1qb7o10{border-color:#35e0e81f}.preview-base-input.svelte-1qb7o10:focus{border-color:#35e0e8}.preview-base-quick.svelte-1qb7o10{border-color:#35e0e81f}.preview-base-quick.svelte-1qb7o10:hover:not(:disabled){border-color:#35e0e8;color:#35e0e8}.buy-button.svelte-1ov1s5h{border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:hover:not(:disabled){border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:disabled{background-image:linear-gradient(135deg,#24343a,#1d2c32);border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:disabled:hover{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.ownership-count.svelte-kchhu3{border-color:#35e0e81f} +void main() { outColor = texture(uLabel, vUv); }`;Gr=new Float32Array(4096),Mu=0});var Au={};A(Au,{FrameRecorder:()=>to,InputProbe:()=>os,TaskProbe:()=>oo});var to,os,oo,yn=w(()=>{"use strict";to=class{constructor(e=12e4){this.samples=new Float32Array(e),this.count=0,this.stored=0,this.last=-1,this.first=-1}frame(e){this.last>=0&&(this.count++,this.storedt[Math.min(t.length-1,Math.floor(p*t.length))],r=n(.5),i=Math.max(4*r,e),a=0,l=0,c=0;for(let p of t)a+=p,p>i&&(l++,c+=p-r);let d=Math.max(.001,a/1e3);return{frames:this.count,seconds:o,fps:this.count/o,meanMs:a/this.stored,p50:r,p95:n(.95),p99:n(.99),p999:n(.999),maxMs:t[t.length-1],hitches:l,hitchesPerSec:l/d,stallMs:c/d}}},os=class{constructor(){this.waits=new Float32Array(16384),this.events=0,this.packets=0,this.onMove=e=>{if(document.pointerLockElement===null)return;let t=e.getCoalescedEvents(),o=t.length>0?t[0].timeStamp:e.timeStamp;this.waits[this.events%this.waits.length]=performance.now()-o,this.events++,this.packets+=Math.max(1,t.length)}}start(){this.events=0,this.packets=0,window.addEventListener("pointermove",this.onMove,{capture:!0,passive:!0})}stop(){window.removeEventListener("pointermove",this.onMove,!0);let e=Math.min(this.events,this.waits.length),t=this.waits.slice(0,e).sort();return{events:this.events,packets:this.packets,p99:e>0?t[Math.min(e-1,Math.floor(e*.99))]:null,max:e>0?t[e-1]:null}}},oo=class{constructor(){this.delays=[],this.timer=0,this.sent=0,this.channel=new MessageChannel,this.channel.port1.onmessage=e=>{this.delays.push(performance.now()-e.data)}}start(){this.delays=[],this.sent=0;let e=performance.now()+10;this.timer=setInterval(()=>{this.sent++;let t=performance.now();this.channel.port2.postMessage(Math.min(t,e)),e=t+10},10)}stop(){clearInterval(this.timer);let e=[...this.delays].sort((t,o)=>t-o);return{sent:this.sent,ran:e.length,p99:e.length?e[Math.min(e.length-1,Math.floor(e.length*.99))]:null,max:e.length?e[e.length-1]:null}}}});var Iu={};function Ze(s,e){let t=Number(xn.get(s));return xn.has(s)&&Number.isFinite(t)?t:e}function Jr(s){window.chrome.webview.postMessage(`bench-finish ${JSON.stringify(s)}`)}function Eb(){let s=document.createElement("canvas");s.style.cssText="position:fixed;inset:0;width:100vw;height:100vh;display:block",document.body.append(s);let e=Lu>0?["Kute is testing this PC",`client test ${kb} of ${Lu}`,"this takes a moment, nothing to do for you"]:[],t=Wr(s,Ru,e);t.resize(window.innerWidth*devicePixelRatio,window.innerHeight*devicePixelRatio);let o=Xr.length>0?Array.from({length:Math.max(1,yb)},()=>Xr).flat():[null],n=[],r=0,i=performance.now(),a=null,l=new oo,c=Ze("cap",0),d=i,p=0,h=!1;s.addEventListener("webglcontextlost",()=>{h=!0});let f=g=>{i=g,a=null;let b=o[r];b!==null&&(c=Sb?b:0,d=g,window.chrome.webview.postMessage(`bench-cap ${b}`))};f(i);let m=g=>{if(c>0){for(;performance.now()0&&t.lost()){p===0&&Jr({ok:!1,error:"webgl context lost"}),t.destroy();return}if(t.render(g),p>0){b-p=v&&(a=new to,r===0&&window.chrome.webview.postMessage("bench-sample-start"),l.start()),a!==null&&(a.frame(b),b-i>=v+vb&&(n.push({cap:o[r]??c,stats:a.stats(wb),otherTasks:l.stop()}),r++,r0?n:void 0,load:Ru,width:s.width,height:s.height,checksum:Vr()})))),requestAnimationFrame(m)};requestAnimationFrame(m)}function Pu(){try{Eb()}catch(s){Jr({ok:!1,error:String(s)})}}var xn,gb,bb,vb,wb,kb,Lu,Xr,yb,xb,Sb,Ru,Zr=w(()=>{"use strict";Yr();yn();xn=new URLSearchParams(location.search);gb=400,bb=Ze("settle",700),vb=Ze("ms",2e3),wb=1e3/Ze("hz",60),kb=Ze("step",0),Lu=Ze("steps",0),Xr=(xn.get("caps")??"").split(".").filter(s=>s!=="").map(Number).filter(Number.isFinite),yb=Ze("rounds",1),xb=Ze("capsettle",700),Sb=xn.get("selfcap")==="1",Ru={draws:Ze("draws",eo.draws),meshSegments:eo.meshSegments,overdraw:Ze("overdraw",eo.overdraw),cpuIterations:Ze("cpu",eo.cpuIterations)};document.body?Pu():document.addEventListener("DOMContentLoaded",Pu,{once:!0})});var _u,Nu=w(()=>{_u=`#guidePopup{background-color:#182429}.guideHeader,.guideSubH{border-bottom-color:#35e0e81f}.guStepS:not(:last-child){border-bottom-color:#35e0e81f}a,a:active,a:visited{color:#35e0e8}#purchaseSelector{background-color:#111b1f}.roundScrV{border-bottom-color:#35e0e847}#reloadMsg,#interactMsg,#mobileUI #interactMsg{border-color:#35e0e847}#instructionsUpdate{background-color:#151f24}.instructionsHeader,.instructionsTabs{background-color:#070c0f}.endTablePfp{border-color:#35e0e847}th,tr{border-bottom-color:#35e0e81f}.followBut{background-color:#35e0e8;color:#0b1215}.lds-ring div{border-color:#35e0e847;border-color:rgba(53,224,232,.28) transparent transparent transparent}#spinItemName{background-image:linear-gradient(to right,#0000,#070c0fb3 40%,#070c0fe6 60%,#0000)}.spinPrevIcon,.spinSprayDiv,#spinPromo,.compClassPItm,.compPLstIcn,.compSwpTmB,.compMenBtnS,.compPlWpIcn{border-color:#35e0e847}.hostHeader{background-color:#070c0f}#bigMFeatHBtn{border-color:#35e0e847}#bigMFeatHBtn:hover,#bigMFeatHBtn:active,#bigMFeatPBtn:hover,#bigMFeatPBtn:active{border-color:#35e0e847!important}.biMFeatInfB{border-color:#35e0e847}.biMFeatInfB:hover{border-color:#35e0e847!important}.mapLICat{background-color:#151f24}.hostPresetBtn,#hostMenuBtn{background-color:#35e0e8;color:#0b1215}.serverHostOp{border-color:#35e0e81f}.hostCBtn{border-color:#35e0e847}#hostActionH{border-top-color:#35e0e847}#stickyHostH{background-color:#070c0f}.loadoutBtn{background-color:#35e0e8;color:#0b1215}#loadoutToolbar{background-color:#111b1f;border-bottom-color:#35e0e81f}.loadoutTab{background-color:#182429}.loadoutTab:hover{background-color:#1d2c32}.loadoutTabSel{background-color:#24343a}#charPreviewSlot{border-right-color:#35e0e81f}#menuWindow.eterno .bigMenTabs{background-color:#111b1fad}.quickJoin{border-color:#35e0e8}.settText{color:#35e0e8}.contactsHeader,.setHed{border-color:#35e0e81f;background-color:#1d2c32}.setHed:hover{background-color:#182429}.setHedS{border-color:#35e0e81f;background-color:#1d2c32}.settName,.settNameSmall{border-bottom-color:#35e0e81f}input:checked+.sliderSml{background-color:#35e0e8;color:#0b1215}input:focus+.sliderSml{box-shadow:0 0 1px #35e0e8}input:checked+.slider{background-color:#35e0e8;color:#0b1215}input:focus+.slider{box-shadow:0 0 1px #35e0e8}.sliderVal{border-color:#35e0e847!important}#modDropper{border-color:#35e0e81f}#profilePicM{background-color:#24343a}.mailFrom{color:#35e0e8;border-bottom-color:#35e0e847}.followFrom{color:#35e0e8}#mailCount{border-color:#35e0e81f}#policePopC{background-color:#151f24}.classXPBar{background-color:#111b1f}.clsXPBarC{background-color:#35e0e8;color:#0b1215}.skinPaintSwatch{border-color:#35e0e847}.sb1:before{border-left-color:#35e0e847;border-top-color:#35e0e847}.skinColorItem,.matchVote{border-color:#35e0e81f}.hostMap,#mobileJoystick .back,#mobileJoystick .front{border-color:#35e0e847}#chargeModalCard{background-color:#111b1f}.chargeModalBtn{background-color:#35e0e8;color:#0b1215}.settingsHeader,.serverHeader{background-color:#151f24}.setSugBox2,.setSugBox2:hover,.setSugBox,.setSugBox:hover{border-color:#35e0e847}.settingsBtn{background-color:#35e0e8;color:#0b1215}.settingTab:hover{border-bottom-color:#35e0e81f}.redVouchBtn,.searchBtn{background-color:#35e0e8;color:#0b1215}.challMapCrd,.challHeadrI{border-color:#35e0e847}.chalCard{background-color:#151f24}.chalRews{border-left-color:#35e0e847}.chalRewSkn{border-color:#35e0e847}.changeText{border-bottom-color:#35e0e81f}.crftRcpeCrd{background-color:#070c0f}.craftRcIcn,.crftRecSml,.crftItmReq{border-color:#35e0e847}.crftTim{background-color:#151f24}.hostToggle{background-color:#35e0e8;color:#0b1215}.titleRowLocked{border-bottom-color:#35e0e81f}input:checked+.optCheck{background-color:#35e0e8;color:#0b1215}.subPassChg,.subPassChg:hover,.updDisN,.updDisN:hover,.lnkTw:hover{background-color:#35e0e8;color:#0b1215}#popupContent{background-color:#151f24}.twitchPop,.nftPop,.confPop,.clientExitPop,#confPurchItemPop{border-color:#35e0e847}#bundlePop,#premiumPop{background-color:#151f24}.metaPop{border-color:#35e0e847}.confPremiumPop,.vouchPop{background-color:#151f24}.polConfPop{border-color:#35e0e847}.rankedPop,.promoPop{background-color:#151f24}.tListN.inv{background-color:#35e0e8;color:#0b1215}.tItemHolder,.dItemHolder,.tCurrencyItem{border-color:#35e0e847}.bigMenTab:hover,.bigMenTabA,.bigMenTabA:hover{border-bottom-color:#35e0e847}.dark .menuTabNew:hover{border-bottom-color:#35e0e81f!important}.dark .tabANew,.dark .tabANew:hover{border-bottom-color:#35e0e847!important}input:checked+.slider2{background-color:#35e0e8;color:#0b1215}input:focus+.slider2{box-shadow:0 0 1px #35e0e8}.tabHeader:hover{border-bottom-color:#35e0e847}#kdLayout,.crStat{border-color:#35e0e81f}.keyIcon{border-left-color:#35e0e81f;border-right-color:#35e0e81f;border-top-color:#35e0e847;border-bottom-color:#35e0e81f}.pfpPop,.dropsPop{background-color:#151f24}.accountCreatePop{background-color:#151f24;border-color:#35e0e847}#pubPfp{background-color:#35e0e8;color:#0b1215}#tradeChatInput,.tradeChatItem{background-color:#111b1f}#partnerProgB{background-color:#35e0e8;color:#0b1215}#partnrUpBtn{background-color:#35e0e8;border-bottom-color:#35e0e8;color:#0b1215}#partnrUpBtn:hover,#partnrUpBtn:active{border-bottom-color:#35e0e8}#partnrUpBtnD,#partnrUpBtnD:hover,#partnrUpBtnD:active{border-bottom-color:#35e0e847}.editLink{color:#35e0e8}.speedRunItem{border-bottom-color:#35e0e81f}#speedRunInfo{border-bottom-color:#35e0e847}#shopMainSellB{border-color:#35e0e847}.custBack:hover{background-color:#24343a85}#itemSearchH{background-color:#151f24}.skinReward{border-color:#35e0e847}.selectedItem{border-color:#35e0e847!important}.custContainer{border-color:#35e0e847}.custSubContainer{border-left-color:#35e0e847;border-bottom-color:#35e0e847}#findGameBtn{background-color:#35e0e8;color:#0b1215}#clanDeclineAll:hover,.logVersionHed,.viewAllUpdates,.viewAllUpdates:hover{border-color:#35e0e847}.followBack{border-color:#35e0e8!important}.followBack:hover{border-color:#35e0e847!important}.joinBtn{background-color:#35e0e8;color:#0b1215}.imagePop,.badgePop,.imageNewPop{background-color:#151f24}.openCollection{background-color:#35e0e8!important;color:#0b1215}.imageListHeader,.imageListFooter{background-color:#070c0f}.importPop,#bindsHeader,.disconnectPop{background-color:#151f24}.tooltip{background-color:#24343a}.tooltip2{background-color:#070c0f}.imageTab:hover{border-bottom-color:#35e0e81f}.tabAIMG,.tabAIMG:hover{border-bottom-color:#35e0e847}input:checked+.advancedSlider{background-color:#35e0e8;color:#0b1215}input:focus+.advancedSlider{box-shadow:0 0 1px #35e0e8}.quickPlayMap{border-color:#35e0e847}#custStreakSelH{border-top-color:#35e0e81f}.winSelH{background-color:#24343a}#spinHistoryBtn{border-color:#35e0e847}#spinHistoryBtn:hover{border-color:#35e0e847!important}#spinMultiToggleBtn{background-color:#35e0e8!important;box-shadow:inset 0 -7px #35e0e8!important;border-color:#35e0e847;color:#0b1215}#spinMultiToggleBtn:hover{border-color:#35e0e847!important}#spinHistoryPop{background-color:#151f24}.spinHistoryHeader{background-color:#070c0f}.clsStatXPBar{background-color:#0b1215}.eventPop{background-color:#151f24}.eventPopHeader,.bSliderBtn,.bSliderBtn:hover,.bSliderBtn:active{border-color:#35e0e847}.bSliderBtn.disabled{border-color:#35e0e81f}.bpLevelNum.completed{background-color:#24343a}.bpLevelNum.active{border-color:#35e0e847}.bpCard,.bpCard.free{border-color:#35e0e81f}.bpCard.free.completed,.bpCard.free.completed.claimed{border-color:#35e0e847}.bpCardSlot{border-color:#35e0e81f}.bpSliderArrow{border-right-color:#35e0e847}.bpInfoBalloon{background-color:#151f24}.bpInfoBalloon:after{background-color:#151f24}.bpClaimB{border-color:#35e0e847;background-color:#151f24}.bp-unlock-header{background-color:#151f24}.bp-generic-pop,.bp-purchase-pop{background-color:#151f24;border-color:#35e0e847}.clanSubmitBtn,.clanSubmitBtn:hover{background-color:#35e0e8;color:#0b1215}.spinErrorPop{background-color:#151f24}.popHeader,.dropsPopHeader{background-color:#070c0f}.charmErrorPop,.spinHistoryStatsPop{background-color:#151f24}#kpdCalls>* td,#kpdCalls>* th{border-bottom-color:#35e0e81f}.loadingPop,.autoLoadPop,.editMapPop,.responsePop{background-color:#151f24}.infoPop,.contPop{background-color:#1d2c32}.ticketPop{background-color:#151f24}.bundleCrd{background-color:#070c0f}.bundleItmReq,.bundleSliderBtn,.bundleSliderBtn:hover,.bundleSliderBtn:active,.bundleSliderBtn.disabled{border-color:#35e0e847}.bundleSliderArrow{border-right-color:#35e0e847}.dxp-pop{background-color:#151f24;border-color:#35e0e847}.dropsSliderBtn,.dropsSliderBtn:hover,.dropsSliderBtn:active,.dropsSliderBtn.disabled{border-color:#35e0e847}.dropsSliderArrow{border-right-color:#35e0e847}.rewItemHolder{border-color:#35e0e847}.abTestsPop{background-color:#151f24}.registerGiftPop{background-color:#151f24;border-color:#35e0e847}.rankedQueueModal{background-color:#151f24;border-color:#35e0e8;box-shadow:0 0 160px #35e0e875}.rankedMenuModal,.communityPopup,.tutorialPopup,.defaultModal,.krunkCupJoinModal,.krunkCupViewModal,.exchangeModal,.itemsModal,.socialModal,.moreKrunkerPopup{background-color:#151f24}.io-button{background-color:#151f24;border-color:#35e0e81f}.io-button:hover{background-color:#182429}.io-button--accept-secondary{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.io-input-field{border-color:#35e0e81f}.io-input-field:focus{border-color:#35e0e8}.io-popup-container{background-color:#111b1f}.io-section-header:after{background-color:#35e0e8;color:#0b1215}.io-card{border-color:#35e0e81f}.io-separator{border-bottom-color:#35e0e81f}.io-separator span{background-color:#111b1f}.strike-timer__info-holder,.strike-timer__timer-bg{background-color:#151f24}.bundle-popup-lmt-offer{background-color:#24343a}.ltm-offer-container__arrow{border-right-color:#35e0e847}.file-drop-target.svelte-145grbc{border-color:#35e0e81f}.file-drop-target.svelte-145grbc:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.file-drop-target.hovered.svelte-145grbc{border-color:#35e0e847}.file-drop-target.drag-over.svelte-145grbc{border-color:#35e0e8;background-color:#35e0e81a}.code-input.svelte-1xwmszg{border-color:#35e0e81f}.code-input.svelte-1xwmszg:focus{border-color:#35e0e8}.qr-code-image.svelte-1xwmszg,.slider-input.svelte-1xwmszg{border-color:#35e0e81f}.slider-input.svelte-1xwmszg::-webkit-slider-thumb{background-image:linear-gradient(145deg,#35e0e8,#3a7dce);border-color:#35e0e847}.slider-input.svelte-1xwmszg::-webkit-slider-runnable-track{background-image:linear-gradient(to right,#245d99,#35e0e8)}.slider-display.svelte-1xwmszg{color:#35e0e8}.info-message.svelte-1xwmszg{border-color:#35e0e8}.password-requirements.svelte-1xwmszg,.motd-input.svelte-15d5v89{border-color:#35e0e81f}.motd-input.svelte-15d5v89:focus{border-color:#35e0e81f}.motd-display.svelte-15d5v89{border-left-color:#35e0e81f}.item-showcase-container.svelte-2tp35a{background-color:#151f24bf}.more-info-btn.svelte-2tp35a,.more-info-btn.svelte-2tp35a:hover,.share-btn.svelte-2tp35a{border-color:#35e0e81f}.md-root.svelte-1kkpw01{background-color:#151f24}.md-header.svelte-1kkpw01{border-bottom-color:#35e0e81f;background-color:#111b1f}.md-back.svelte-1kkpw01{border-color:#35e0e81f}.md-header-icon.svelte-1kkpw01{color:#35e0e8}.md-thumb.svelte-1kkpw01{background-color:#0b1215}.md-info-bar.svelte-1kkpw01{border-bottom-color:#35e0e81f}.md-creator.svelte-1kkpw01{color:#35e0e8}.md-host-btn.svelte-1kkpw01,.md-icon-btn.svelte-1kkpw01{border-color:#35e0e81f}.md-tabs.svelte-1kkpw01{border-bottom-color:#35e0e81f}.md-tab.active.svelte-1kkpw01{color:#35e0e8;border-bottom-color:#35e0e8}.md-lb-name.svelte-1kkpw01{color:#35e0e8}.md-load-more.svelte-1kkpw01{border-color:#35e0e81f}.md-data-section-title.svelte-1kkpw01{color:#35e0e8;border-top-color:#35e0e81f}.md-data-table.svelte-1kkpw01{background-color:#111b1f;border-color:#35e0e81f}.md-data-table-row.svelte-1kkpw01{border-top-color:#35e0e81f}.md-data-header.svelte-1kkpw01{background-color:#111b1f;border-color:#35e0e81f}.md-data-search-btn.svelte-1kkpw01{border-color:#35e0e81f}.md-data-input.svelte-1kkpw01{background-color:#0b1215;border-color:#35e0e81f}.md-data-input.svelte-1kkpw01:focus{border-color:#35e0e8}.md-ver-row.svelte-1kkpw01{border-top-color:#35e0e81f}.md-ver-btn.svelte-1kkpw01{border-color:#35e0e81f}.mod-root.svelte-1v2j2f2{background-color:#151f24}.mod-header.svelte-1v2j2f2{border-bottom-color:#35e0e81f;background-color:#111b1f}.mod-back.svelte-1v2j2f2{border-color:#35e0e81f}.mod-header-icon.svelte-1v2j2f2{color:#35e0e8}.mod-thumb.svelte-1v2j2f2{background-color:#0b1215}.mod-info-bar.svelte-1v2j2f2{border-bottom-color:#35e0e81f}.mod-creator.svelte-1v2j2f2{color:#35e0e8}.mod-use-btn.svelte-1v2j2f2,.mod-use-btn.svelte-1v2j2f2:hover{background-color:#35e0e8;color:#0b1215}.mod-icon-btn.svelte-1v2j2f2{border-color:#35e0e81f}.style-container.svelte-143xo7r{background-color:#151f24bf}.slider-arrow.svelte-143xo7r{border-color:#35e0e81f}.slider-arrow.left.svelte-143xo7r .slider-arrow-icon.svelte-143xo7r{border-right-color:#35e0e847}.slider-arrow.right.svelte-143xo7r .slider-arrow-icon.svelte-143xo7r{border-left-color:#35e0e847}.swatch.svelte-143xo7r,.btn.svelte-143xo7r{border-color:#35e0e81f}.market-card.svelte-r5taai{background-color:#070c0fcc}.trade-label.inv.svelte-1lqen9w{background-color:#35e0e8;color:#0b1215}.trade-inv-item.svelte-1lqen9w{border-color:#35e0e847}.trade-search.svelte-1lqen9w{border-color:#35e0e81f}.trade-search.svelte-1lqen9w:focus{border-color:#35e0e81f}.gift-root.svelte-g5j1wf{background-color:#151f24}.gift-header.svelte-g5j1wf{border-bottom-color:#35e0e81f;background-color:#111b1f}.gift-back.svelte-g5j1wf{border-color:#35e0e81f}.gift-header-icon.svelte-g5j1wf{color:#35e0e8}.gift-input.svelte-g5j1wf{background-color:#0b1215;border-color:#35e0e81f}.gift-input.svelte-g5j1wf:focus{border-color:#35e0e8}.gift-send.svelte-g5j1wf{background-color:#35e0e8;color:#0b1215}.gift-done.svelte-g5j1wf{border-color:#35e0e81f}.buy-button.svelte-r01l8m:disabled{background-color:#24343a}.buy-button.svelte-r01l8m:disabled:hover{background-color:#24343a}.shop-header.svelte-1gtpoav{border-bottom-color:#35e0e81f}.rp-balance.svelte-1gtpoav,.guest-earned-collect__reward-items.svelte-1hb83uo,.guest-earned-collect__register-btn.svelte-1hb83uo,.guest-earned-collect__register-btn.svelte-1hb83uo:hover{border-color:#35e0e81f}.signup-rewards-list.svelte-1v6b0qm{background-color:#070c0fb3}.signup-rewards-register-button.svelte-1v6b0qm{border-color:#35e0e847!important}.product-row.svelte-14104bb{border-color:#35e0e81f}.product-row.svelte-14104bb:hover{border-color:#35e0e847}.gift-button.svelte-14104bb,.for-you-text.svelte-14104bb,.currency-shop-item.svelte-14104bb,.currency-shop-item.svelte-14104bb:hover{border-color:#35e0e81f}.verification-banner.svelte-165vbjp{background-color:#151f24cc}.spinner.svelte-165vbjp{border-color:#35e0e81f;border-top-color:#35e0e847}.section-title.svelte-e65miw .material-icons.svelte-e65miw{color:#35e0e8}.toggle-switch.svelte-e65miw input:checked+.slider.svelte-e65miw{background-color:#35e0e8;color:#0b1215}.texture-upload-item.svelte-e65miw,.texture-image.svelte-e65miw{border-color:#35e0e81f}.btn-generate.svelte-e65miw{background-color:#35e0e8;color:#0b1215}.btn-generate.svelte-e65miw:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.sgNum.svelte-1i1uhp7,.sgHex.svelte-1i1uhp7{border-color:#35e0e81f}.sgNum.svelte-1i1uhp7:focus,.sgHex.svelte-1i1uhp7:focus{border-color:#35e0e8}.sgSlider.svelte-1i1uhp7::-webkit-slider-thumb{background-color:#35e0e8;color:#0b1215}.sgSlider.svelte-1i1uhp7:focus-visible{outline-color:#35e0e8}.sgColorInput.svelte-1i1uhp7{border-color:#35e0e81f}.sgColorInput.svelte-1i1uhp7:focus-visible{outline-color:#35e0e8}.sgPalette.svelte-sxvv3c{background-color:#0b1215fa;border-color:#35e0e81f}.sgPaletteSearch.svelte-sxvv3c{border-color:#35e0e81f}.sgPaletteSearch.svelte-sxvv3c:focus{border-color:#35e0e8}.sgPaletteItem.active.svelte-sxvv3c,.sgPaletteItem.svelte-sxvv3c:focus-visible{background-color:#35e0e840}.sgEditor.svelte-upgo13{border-color:#35e0e81f}.sgToolbar.svelte-upgo13{border-bottom-color:#35e0e81f}.sgBtn.svelte-upgo13{border-color:#35e0e81f}.sgBtn.svelte-upgo13:focus-visible,.sgCanvas.svelte-upgo13:focus-visible,.sgErrorItem.svelte-upgo13:focus-visible,.sgMenuItem.svelte-upgo13:focus-visible{outline-color:#35e0e8}.sgBtnPrimary.svelte-upgo13{background-color:#35e0e840;border-color:#35e0e899;color:#35e0e8}.sgBtnPrimary.svelte-upgo13:hover:not(:disabled){background-color:#35e0e866}.sgMenu.svelte-upgo13{background-color:#0b1215fa;border-color:#35e0e81f}.sgMenuItem.svelte-upgo13:hover{background-color:#35e0e840}.sgCanvas.svelte-upgo13{background-color:#070c0fe6}.sgOverlay.svelte-upgo13{background-color:#070c0ffa;border-color:#35e0e81f}.sgIoText.svelte-upgo13{border-color:#35e0e81f}.sgIoText.svelte-upgo13:focus{border-color:#35e0e8}.sgFooter.svelte-upgo13{border-top-color:#35e0e81f}.io-action-bar-button.svelte-103lu6x{background-color:#35e0e8;color:#0b1215}.search-input.svelte-103lu6x{border-color:#35e0e81f}.search-input.svelte-103lu6x:focus{border-color:#35e0e8}.io-action-bar-button.svelte-103lu6x:hover,.action-btn.test-btn.svelte-103lu6x,.action-btn.test-btn.svelte-103lu6x:hover{background-color:#35e0e8;color:#0b1215}.skin-manager-table.svelte-103lu6x .table thead th{background-color:#0b1215}.tab-navigation.svelte-103lu6x{border-bottom-color:#35e0e81f}.tab-button.active.svelte-103lu6x{color:#35e0e8;background-color:#35e0e81a}.tab-button.active.svelte-103lu6x:after{background-color:#35e0e8;color:#0b1215}.preview-control-btn.svelte-103lu6x{border-color:#35e0e81f}.preview-control-btn.active.svelte-103lu6x{background-color:#35e0e84d;border-color:#35e0e8}.paint-select.svelte-103lu6x{border-color:#35e0e81f}.paint-select.svelte-103lu6x option.svelte-103lu6x{background-color:#0b1215}.connection.svelte-1fenhdo{background-color:#182429}.consequences.svelte-18wpngg{border-color:#35e0e81f}.loading-spinner.svelte-190e6fj{border-color:#35e0e81f;border-top-color:#35e0e847}.retry-button.svelte-190e6fj{background-color:#35e0e8;color:#0b1215}.benefits-card.svelte-190e6fj,.billing-info.svelte-190e6fj,.subscribe-btn.svelte-190e6fj{border-color:#35e0e81f}.subscribe-btn.svelte-190e6fj:hover{border-color:#35e0e847}.disabled-card.svelte-190e6fj .subscribe-btn.svelte-190e6fj{background-image:linear-gradient(135deg,#24343a,#1d2c32);border-color:#35e0e81f}.disabled-card.svelte-190e6fj .subscribe-btn.svelte-190e6fj:hover,.disabled-indicator.svelte-190e6fj{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.subscribed-btn.svelte-190e6fj{border-color:#35e0e81f}.renew-btn.svelte-190e6fj{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);border-color:#35e0e81f;box-shadow:0 8px 24px #35e0e866,0 4px 8px #0000004d,inset 0 1px #ffffff4d}.renew-btn.svelte-190e6fj:hover{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);box-shadow:0 12px 32px #35e0e880,0 6px 12px #0006,inset 0 1px #fff6;border-color:#35e0e847}.cancel-container.svelte-190e6fj,.cancel-btn.svelte-190e6fj,.cancel-btn.svelte-190e6fj:hover{border-color:#35e0e81f}.wild-offer-notification.svelte-1gcqcwy{background-image:linear-gradient(135deg,#000000f2,#070c0ffa)}.shop-btn.svelte-1gcqcwy,.shop-btn.svelte-1gcqcwy:hover,.player-bound-display.svelte-1nzacef,.player-bound-display.svelte-1nzacef:hover,.login-button.svelte-1nzacef,.login-button.svelte-1nzacef:hover{border-color:#35e0e81f}.data-table.svelte-69sryq thead.svelte-69sryq{background-color:#0b1215}.table-header.svelte-69sryq{color:#35e0e8}.table-header.sortable.svelte-69sryq:hover{background-color:#35e0e81a}.table-header.sortable.sort-asc.svelte-69sryq:after{border-bottom-color:#35e0e8}.table-header.sortable.sort-desc.svelte-69sryq:after{border-top-color:#35e0e8}.table-cell.svelte-69sryq{border-bottom-color:#35e0e81f}.qs-window.svelte-1o11rsf{background-color:#111b1f;border-color:#35e0e81f}.qs-item-preview.svelte-1o11rsf,.qs-values.svelte-1o11rsf,.qs-amount-select.svelte-1o11rsf{border-color:#35e0e81f}.qs-amount-select.svelte-1o11rsf:focus{border-color:#35e0e88c}.jy-filter-bar.svelte-1vqzycn{background-color:#111b1f;border-color:#35e0e81f}.jy-search-input.svelte-1vqzycn,.jy-sort-select.svelte-1vqzycn{background-color:#151f24;border-color:#35e0e81f}.sd-root.svelte-a9j4oe{background-color:#151f24}.sd-header.svelte-a9j4oe{border-bottom-color:#35e0e81f;background-color:#111b1f}.sd-back.svelte-a9j4oe{border-color:#35e0e81f}.sd-header-icon.svelte-a9j4oe{color:#35e0e8}.sd-del.svelte-a9j4oe{border-color:#35e0e81f}.sd-tabs.svelte-a9j4oe{border-bottom-color:#35e0e81f}.sd-tab.active.svelte-a9j4oe{color:#35e0e8;border-bottom-color:#35e0e8}.sd-row.svelte-a9j4oe{background-color:#111b1f;border-color:#35e0e81f}.sd-input.svelte-a9j4oe{background-color:#0b1215;border-color:#35e0e81f}.sd-input.svelte-a9j4oe:focus{border-color:#35e0e8}.sd-primary.svelte-a9j4oe{background-color:#35e0e8;color:#0b1215}.sd-mini.svelte-a9j4oe{border-color:#35e0e81f}.sd-kr.svelte-a9j4oe{background-color:#111b1f}.region-btn.svelte-1gdnqq5{border-color:#35e0e81f}.region-btn.active.svelte-1gdnqq5{background-color:#35e0e826;border-color:#35e0e880;color:#35e0e8}.season-select.svelte-1gdnqq5{border-color:#35e0e81f}.season-select.svelte-1gdnqq5 option.svelte-1gdnqq5{background-color:#0b1215}th.svelte-1gdnqq5{color:#35e0e8}td.svelte-1gdnqq5{border-bottom-color:#35e0e81f}.season-select.svelte-81ueoe{border-color:#35e0e81f}.season-select.svelte-81ueoe option.svelte-81ueoe{background-color:#0b1215}.kc-title.svelte-1xp8pv1{color:#35e0e8}.back-btn.svelte-1xp8pv1{border-color:#35e0e84d}.back-btn.svelte-1xp8pv1:hover{background-color:#35e0e81f;color:#35e0e8}.friend-list.svelte-e2g8p2{background-color:#111b1f;border-right-color:#35e0e81f}.friend-presence-dot.svelte-e2g8p2{border-color:#35e0e81f}.friend-presence-dot.offline.svelte-e2g8p2{background-color:#24343a}.friend-unread.svelte-e2g8p2{background-color:#35e0e8;color:#0b1215}.friend-list-search.svelte-e2g8p2{background-color:#111b1f;border-top-color:#35e0e81f}.conversation-root.svelte-128yn5i{background-color:#151f24}.conversation-header.svelte-128yn5i{border-bottom-color:#35e0e81f;background-color:#111b1f}.conversation-presence-dot.svelte-128yn5i{border-color:#35e0e81f}.conversation-presence-dot.offline.svelte-128yn5i{background-color:#24343a}.conversation-compose.svelte-128yn5i{border-top-color:#35e0e81f;background-color:#111b1f}.conversation-load-earlier.svelte-128yn5i{border-color:#35e0e81f}.conversation-input.svelte-128yn5i{background-color:#0b1215;border-color:#35e0e81f}.conversation-input.svelte-128yn5i:focus{border-color:#35e0e8}.conversation-emoji-button.svelte-128yn5i{background-color:#0b1215;border-color:#35e0e81f}.conversation-emoji-button.svelte-128yn5i:hover:not(:disabled){background-color:#111b1f;color:#35e0e8}.conversation-send-button.svelte-128yn5i{background-color:#35e0e8;color:#0b1215}.conversation-send-button.svelte-128yn5i:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.conversation-send-button.svelte-128yn5i:disabled{background-color:#1d2c32}.friends-root.svelte-u33r8v{background-color:#151f24}.friends-status-dot.svelte-u33r8v{background-color:#24343a}.player-card.svelte-dp3rf9{background-color:#0b1215cc;border-color:#35e0e81f}.player-card.svelte-dp3rf9:hover{background-color:#111b1fcc}.player-card.svelte-dp3rf9:focus-visible{outline-color:#35e0e847}.counterBadge.svelte-fgmdj8{background-color:#35e0e8;color:#0b1215}.territory-map-container.svelte-102279m{background-color:#111b1f;border-color:#35e0e81f}.territory-details-panel.svelte-102279m{border-color:#35e0e81f}.panel-header.svelte-102279m,.leaderboard-entry.svelte-102279m{border-bottom-color:#35e0e81f}.clickable-name.svelte-myp8tq:hover{color:var(--highlight-color, rgb(53, 224, 232))}.view-tab.svelte-myp8tq{border-color:#35e0e81f}.view-tab.active.svelte-myp8tq{background-color:#35e0e833;border-color:#35e0e866}.day-arrow.svelte-myp8tq,.day-input.svelte-myp8tq{border-color:#35e0e81f}.payouts-row.svelte-myp8tq,.payouts-row-header.svelte-myp8tq{border-bottom-color:#35e0e81f}.main-title.svelte-1sr7h97,.card-title.svelte-1sr7h97{color:#35e0e8}.map-badge.svelte-1sr7h97,.mode-badge.svelte-1sr7h97{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.section-title.svelte-1sr7h97{color:#35e0e8;border-left-color:#35e0e8}.rule-icon.svelte-1sr7h97,.tip-title.svelte-1sr7h97{color:#35e0e8}.filter-input.svelte-72bcy3{border-color:#35e0e84d}.filter-input.svelte-72bcy3:focus{border-color:#35e0e8}.post-card.svelte-72bcy3{border-color:#35e0e81f}.looking-for-label.svelte-72bcy3{color:#35e0e8}.req-badge.svelte-72bcy3{border-color:#35e0e81f}.player-clan.clickable-clan.svelte-7h12t9:hover{color:var(--highlight-color, rgb(53, 224, 232))}.tab-bar.svelte-7h12t9{border-bottom-color:#35e0e81f}.tab.active.svelte-7h12t9{border-bottom-color:var(--highlight-color, rgb(53, 224, 232))}.day-arrow.svelte-7h12t9,.day-input.svelte-7h12t9{border-color:#35e0e81f}.page-btn.svelte-7h12t9{background-color:#35e0e833;border-color:#35e0e866}.ct-row.svelte-7h12t9,.ct-header.svelte-7h12t9{border-bottom-color:#35e0e81f}.clickable-name.svelte-7h12t9:hover{color:var(--highlight-color, rgb(53, 224, 232))}.rank-display.svelte-19e82s0{border-color:#35e0e81f}.popup-box.svelte-6dkuug{background-color:#151f24}.moreKrunkerOption.svelte-19783yx{border-color:#35e0e847;background-color:#0b1215}.moreKrunkerOption.svelte-19783yx:hover{border-color:#35e0e847}.emoji-panel.svelte-13g6jqo{background-color:#151f24}.emoji-icon.svelte-13g6jqo{color:#35e0e8}.emoji-item.selected.svelte-13g6jqo,.emoji-item.svelte-13g6jqo:hover{border-color:#35e0e81f}.compose-window.svelte-qxxay9{background-color:#0b1215;border-color:#35e0e81f}.compose-input.svelte-qxxay9{border-color:#35e0e81f}.compose-input.svelte-qxxay9:focus{border-color:#35e0e899}.compose-input-num.svelte-qxxay9{border-color:#35e0e81f}.compose-btn-submit.svelte-qxxay9{background-color:#35e0e8;color:#0b1215}.compose-btn-submit.svelte-qxxay9:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.rewards-container.svelte-1sac6ik{border-color:#35e0e81f}.reward-card.flying.svelte-1sac6ik:after{border-color:#35e0e81f}.card-front.svelte-1sac6ik,.card-back.svelte-1sac6ik{background-color:#070c0fe6}.loading-spinner.svelte-172kpk5{border-color:#35e0e81f;border-top-color:#35e0e8}.socialsStickyFooter.svelte-1ley7u4{border-top-color:#35e0e81f}.pollBadge.svelte-1ley7u4,.pollVote.svelte-1ley7u4{background-color:#35e0e8;color:#0b1215}.eventLink.svelte-1ley7u4{color:#35e0e8;background-color:#35e0e81a}.eventLink.svelte-1ley7u4:hover{background-color:#35e0e833}.dm-emoji-panel.svelte-1ni3kfh{background-color:#151f24;border-color:#35e0e81f}.dm-emoji-header.svelte-1ni3kfh{border-bottom-color:#35e0e81f}.dm-emoji-header-icon.svelte-1ni3kfh{color:#35e0e8}.dm-emoji-thumb.svelte-1ni3kfh{background-color:#0b1215;border-color:#35e0e81f}.sub-tab-panel.svelte-lri212{border-color:#35e0e847}.bundle-card.svelte-lri212{background-color:#070c0f}.bundle-item-req.svelte-lri212{border-color:#35e0e847}.detail-window.svelte-h3kymj{background-color:#0b1215;border-color:#35e0e81f}.detail-head.svelte-h3kymj{border-bottom-color:#35e0e81f}.reply-input.svelte-h3kymj{border-color:#35e0e81f}.reply-input.svelte-h3kymj:focus{border-color:#35e0e880}.reply-btn.svelte-h3kymj{background-color:#35e0e8;color:#0b1215}.map-filter-select.svelte-c92dbh{border-color:#35e0e866}.map-filter-select.svelte-c92dbh:hover{border-color:#35e0e8}.map-filter-select.svelte-c92dbh:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.section-title.svelte-c92dbh{color:#35e0e8;border-left-color:#35e0e8}.day-arrow.svelte-c92dbh{border-color:#35e0e866;color:#35e0e8}.day-arrow.svelte-c92dbh:hover:not(:disabled){background-color:#35e0e833;border-color:#35e0e8}.day-input.svelte-c92dbh{border-color:#35e0e866}.day-input.svelte-c92dbh:focus{border-color:#35e0e8}.no-participation-title.svelte-c92dbh{color:#35e0e8}.page-btn.svelte-c92dbh{background-color:#35e0e833;border-color:#35e0e866}.overlay-content.svelte-jxc66d{background-color:#070c0f;border-color:#35e0e81f}.streams-overlay.svelte-60shhe{border-color:#35e0e81f}.hide-button.svelte-60shhe{background-color:#182429}.hide-button.svelte-60shhe:hover{background-color:#1d2c32}.spinner.svelte-60shhe{border-color:#35e0e81f}.featured-section.svelte-60shhe{background-color:#070c0fe6}.stream-card.svelte-60shhe{background-color:#0b1215cc;border-color:#35e0e81f}.thumbnail.svelte-60shhe{background-color:#0b1215}.thumbnail.svelte-60shhe:before{background-color:#0b1215}.tutorialSidebar.svelte-los391{background-image:linear-gradient(180deg,#111b1ff2,#0b1215f2)}.tutorialSidebar.svelte-los391:before{background-image:linear-gradient(180deg,rgba(17,27,31,.95) 0%,transparent 100%)}.tutorialSidebar.svelte-los391:after{background-image:linear-gradient(0deg,rgba(11,18,21,.95) 0%,transparent 100%)}.tutorialNavItem.svelte-los391{border-bottom-color:#35e0e81f}.matchmakingBarImage.svelte-los391,.inviteFriendsURLImage.svelte-los391,.spinsImage.svelte-los391,.matchmakingBarQuickMatchImage.svelte-los391,.hostFindGameImage.svelte-los391,.hostGameSetupImage.svelte-los391,.challengesImage.svelte-los391,.rankedImage.svelte-los391,.clanCreateImage.svelte-los391,.clanManageImage.svelte-los391,.tradingImage.svelte-los391,.challengeModeImage.svelte-los391,.challengeModeDifferenceImage.svelte-los391{border-color:#35e0e81f}.comment-text.svelte-7miv1g a{color:#35e0e8}.guide-section.svelte-4log2q{background-color:#070c0f}.guide-section-title.svelte-4log2q .material-icons.svelte-4log2q{color:#35e0e8}.guide-key.svelte-4log2q{background-color:#111b1f;border-color:#35e0e81f}.guide-rarity.dark.svelte-4log2q{border-color:#35e0e81f}.match-details.svelte-1irqx9a{border-top-color:#35e0e81f}.table-header.svelte-1irqx9a,.table-cell.svelte-1irqx9a{border-bottom-color:#35e0e81f}.page-btn.svelte-1irqx9a{border-color:#35e0e81f}.page-btn.svelte-1irqx9a:hover:not([disabled]){border-color:#35e0e81f}.currency-reward.svelte-1yk8fym,.gift-button.svelte-rew7ag{border-color:#35e0e81f}.modal-content.svelte-1pf0608{background-color:#111b1f;border-color:#35e0e81f}.price-input.svelte-1pf0608,.fee-breakdown.svelte-1pf0608{border-color:#35e0e81f}.season-banner.svelte-17kea4i{background-color:#35e0e8;color:#0b1215}.challenges-link-icon.svelte-17kea4i,.section-title.svelte-1x46pbz .material-icons.svelte-1x46pbz{color:#35e0e8}.param-chip.svelte-1x46pbz{border-color:#35e0e81f}.add-uniform-btn.svelte-1x46pbz{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.add-uniform-btn.svelte-1x46pbz:hover{background-color:#35e0e84d}.part-block.svelte-1x46pbz,.part-name-input.svelte-1x46pbz{border-color:#35e0e81f}.copy-defaults-btn.svelte-1x46pbz{background-color:#35e0e826;border-color:#35e0e84d;color:#35e0e8}.copy-defaults-btn.svelte-1x46pbz:hover:not(:disabled){background-color:#35e0e84d}.apply-btn.svelte-1x46pbz,.apply-btn.svelte-1x46pbz:hover{background-color:#35e0e8;color:#0b1215}.clear-btn.svelte-1x46pbz{border-color:#35e0e81f}.ph-xp-fill.svelte-da3zva{background-image:linear-gradient(to right,#ff6a0b,#35e0e8)}.survey-notification.svelte-1u0qxrf{background-image:linear-gradient(135deg,#000000f2,#070c0ffa)}.answer-btn.svelte-1u0qxrf{border-color:#35e0e81f}.icon-btn.list.svelte-hk8nq9{background-color:#35e0e8;color:#0b1215}.card-title.svelte-1k16b2z,.view-title.svelte-1k16b2z{color:#35e0e8}.trade-item.svelte-z9tzua,.trade-item-empty.svelte-z9tzua{border-color:#35e0e81f}.bm-card.svelte-dbcods{background-color:#070c0f}.bm-card-icon.svelte-dbcods{border-color:#35e0e847}.bm-locked-btn.svelte-dbcods{background-color:#111b1f}.modal-content.svelte-dbcods{background-color:#111b1f;border-color:#35e0e81f}.price-row.total.svelte-dbcods{border-top-color:#35e0e81f}.sma-dialog.svelte-1veg8cv{background-color:#151f24}.sma-header.svelte-1veg8cv{background-color:#111b1f;border-bottom-color:#35e0e81f}.sma-header-icon.svelte-1veg8cv{color:#35e0e8}.sma-rules.svelte-1veg8cv{background-color:#111b1f;border-color:#35e0e81f}.sma-input.svelte-1veg8cv{background-color:#0b1215;border-color:#35e0e81f}.sma-input.svelte-1veg8cv:focus{border-color:#35e0e8}.sma-map.svelte-1veg8cv{border-color:#35e0e81f}.sma-map.active.svelte-1veg8cv{border-color:#35e0e8;color:#35e0e8}.sma-footer.svelte-1veg8cv{border-top-color:#35e0e81f;background-color:#111b1f}.sma-secondary.svelte-1veg8cv{border-color:#35e0e81f}.sma-primary.svelte-1veg8cv{background-color:#35e0e8;color:#0b1215}.usernames-col.svelte-27udiy{border-color:#35e0e81f}.col-header.svelte-27udiy{border-bottom-color:#35e0e81f}.username-row.svelte-27udiy{border-color:#35e0e81f}.username-row.active.svelte-27udiy{border-color:#35e0e8}.leave-note.svelte-27udiy{border-left-color:#35e0e8}.username-active.svelte-27udiy{color:#35e0e8}#menuWindow.eterno .store-tabs.svelte-v85byk{background-color:#111b1fad}.store-tab.svelte-v85byk:hover,.store-tab-active.svelte-v85byk,.store-tab-active.svelte-v85byk:hover{border-bottom-color:#35e0e847}.register-notification.svelte-t1w66d{background-image:linear-gradient(135deg,#000000e6,#070c0ff2)}.table.svelte-12kndpz th.svelte-12kndpz,.table.svelte-12kndpz td.svelte-12kndpz{border-bottom-color:#35e0e81f}.pagination.svelte-12kndpz{border-top-color:#35e0e81f}.pagination-btn.svelte-12kndpz{background-color:#35e0e8;color:#0b1215}.pagination-btn.svelte-12kndpz:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.loading-spinner.svelte-1tteuk0{border-color:#35e0e81f}.load-more-btn.svelte-1tteuk0{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-1tteuk0:hover{background-color:#35e0e84d}.load-more-btn.svelte-1tteuk0:active{background-color:#35e0e866}.modal-content.svelte-1k428dj{background-color:#111b1f;border-color:#35e0e81f}.st-root.svelte-kqehnu{background-color:#151f24}.st-header.svelte-kqehnu{border-bottom-color:#35e0e81f;background-color:#111b1f}.st-back.svelte-kqehnu{border-color:#35e0e81f}.st-header-icon.svelte-kqehnu{color:#35e0e8}.st-row.svelte-kqehnu{background-color:#111b1f;border-color:#35e0e81f}.st-row.svelte-kqehnu:hover{background-color:#151f24}.st-invite.svelte-kqehnu:hover{background-color:#111b1f}.st-mini.svelte-kqehnu{border-color:#35e0e81f}.st-section-title.svelte-kqehnu{color:#35e0e8;border-top-color:#35e0e81f}.st-input.svelte-kqehnu{background-color:#0b1215;border-color:#35e0e81f}.st-input.svelte-kqehnu:focus{border-color:#35e0e8}.st-primary.svelte-kqehnu{background-color:#35e0e8;color:#0b1215}.card-title.svelte-raovk7,.view-title.svelte-raovk7{color:#35e0e8}.profile-detail-root.svelte-1hghrmf{background-color:#151f24}.profile-detail-header-bar.svelte-1hghrmf{border-bottom-color:#35e0e81f;background-color:#111b1f}.profile-detail-back.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-header-icon.svelte-1hghrmf{color:#35e0e8}.profile-detail-identity.svelte-1hghrmf,.profile-detail-avatar.svelte-1hghrmf{background-color:#111b1f;border-color:#35e0e81f}.profile-detail-online-dot.svelte-1hghrmf{background-color:#24343a;border-color:#35e0e81f}.profile-detail-creation-thumb.svelte-1hghrmf{background-color:#0b1215}.profile-detail-clan.svelte-1hghrmf{color:#35e0e8}.profile-detail-info-row.svelte-1hghrmf{border-top-color:#35e0e81f}.profile-detail-follow-box.svelte-1hghrmf{background-color:#111b1f}.profile-detail-follow-box.svelte-1hghrmf:hover{background-color:#151f24}.profile-detail-action.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-action.active.svelte-1hghrmf{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.profile-detail-action.active.svelte-1hghrmf i.svelte-1hghrmf{color:#35e0e8}.profile-detail-xp-strip.svelte-1hghrmf{border-top-color:#35e0e81f}.profile-detail-level-badge.svelte-1hghrmf,.profile-detail-xp-fill.svelte-1hghrmf{background-color:#35e0e8;color:#0b1215}.profile-detail-stat.svelte-1hghrmf,.profile-detail-class.svelte-1hghrmf,.profile-detail-raid-row.svelte-1hghrmf{background-color:#0b1215;border-color:#35e0e81f}.profile-detail-sales-panel.svelte-1hghrmf,.profile-detail-badges-panel.svelte-1hghrmf,.profile-detail-creations-panel.svelte-1hghrmf{background-color:#111b1f;border-color:#35e0e81f}.profile-detail-section-header.svelte-1hghrmf,.profile-detail-sales-header.svelte-1hghrmf{color:#35e0e8}.profile-detail-range-btn.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-range-btn.active.svelte-1hghrmf{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.profile-detail-listing-card.svelte-1hghrmf{background-color:#0b1215}.profile-detail-listing-card.svelte-1hghrmf:hover{background-color:#111b1f}.profile-detail-listing-thumb.svelte-1hghrmf{background-color:#070c0f}.profile-detail-title-item.svelte-1hghrmf,.profile-detail-badge-item.svelte-1hghrmf{background-color:#111b1f}.profile-detail-creation-card.svelte-1hghrmf{background-color:#0b1215}.profile-detail-creation-card.svelte-1hghrmf:hover{background-color:#111b1f}.modal-content.svelte-1ugt6n9{background-color:#111b1f;border-color:#35e0e81f}.section-title.svelte-awmvtb .material-icons.svelte-awmvtb{color:#35e0e8}.sound-info.svelte-awmvtb{border-color:#35e0e81f}.btn-replace.svelte-awmvtb{background-color:#35e0e8cc}.btn-replace.svelte-awmvtb:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.item-preview.svelte-1lii2o,.kid-display-container.svelte-lbi007{border-color:#35e0e81f}.kid-display-benefits.svelte-lbi007 h3.svelte-lbi007:after{background-color:#35e0e8;color:#0b1215}.partnership-info.svelte-lbi007{background-color:#35e0e81a;border-left-color:#35e0e8}.sgNode.svelte-wbsbny{background-color:#0b1215f5;border-color:#35e0e81f}.sgNode.selected.svelte-wbsbny{border-color:#35e0e8;box-shadow:0 0 0 1px #35e0e8,0 2px 10px #00000073}.sgNode.isOutput.svelte-wbsbny .sgNodeHeader.svelte-wbsbny{background-color:#35e0e840}.sgNodeHeader.svelte-wbsbny{border-bottom-color:#35e0e81f}.sgSelect.svelte-wbsbny,.sgText.svelte-wbsbny{border-color:#35e0e81f}.sgSelect.svelte-wbsbny option.svelte-wbsbny{background-color:#0b1215}.sgSelect.svelte-wbsbny:focus,.sgText.svelte-wbsbny:focus{border-color:#35e0e8}.sgCheck.svelte-wbsbny:focus-visible{outline-color:#35e0e8}.sgUnset.svelte-wbsbny{border-color:#35e0e81f}.sgUnset.svelte-wbsbny:hover:not(:disabled){border-color:#35e0e847}.sgUnset.svelte-wbsbny:focus-visible{outline-color:#35e0e8}.simple-tabs.svelte-1oqd18e{border-bottom-color:#35e0e81f}.simple-tab-active.svelte-1oqd18e{border-bottom-color:#35e0e8}.simple-tab-active.svelte-1oqd18e .simple-tab-icon.svelte-1oqd18e,.simple-tab-active.svelte-1oqd18e .simple-tab-label.svelte-1oqd18e{color:#35e0e8}.load-more-button.svelte-23mnz9{background-color:#35e0e833;border-color:#35e0e880;color:#35e0e8}.load-more-button.svelte-23mnz9:hover{background-color:#35e0e84d}.loading-spinner.svelte-gh77t9{border-color:#35e0e81f;border-top-color:#35e0e847}.retry-button.svelte-gh77t9{background-color:#35e0e8;color:#0b1215}.filter-input.svelte-1rpti7l{border-color:#35e0e84d}.filter-input.svelte-1rpti7l:focus{border-color:#35e0e8}.spin-promo-badge.svelte-5s5opu{border-color:#35e0e847}.no-offer-container.svelte-m5s1iy{background-color:#070c0fcc}.refresh-button.svelte-m5s1iy{background-image:linear-gradient(135deg,#ff5722,#ff9800,#35e0e8);border-color:#35e0e81f}.refresh-button.svelte-m5s1iy:hover:not(:disabled){border-color:#35e0e847}.optin__hero-fade.svelte-ga1m1g{background-image:linear-gradient(to top,#070c0ff2,#14141400 45%)}.report-root.svelte-18p16wl{background-color:#151f24}.report-header.svelte-18p16wl{border-bottom-color:#35e0e81f;background-color:#111b1f}.report-back.svelte-18p16wl{border-color:#35e0e81f}.report-input.svelte-18p16wl{background-color:#0b1215;border-color:#35e0e81f}.report-done.svelte-18p16wl{border-color:#35e0e81f}.trade-window.svelte-kfskmv{background-color:#151f24}.trade-message.svelte-kfskmv{border-color:#35e0e81f}.trade-message.svelte-kfskmv:focus{border-color:#35e0e81f}.trade-submit.disabled.svelte-kfskmv{background-color:#1d2c32}.profile-header.svelte-18dbnt3{border-bottom-color:#35e0e81f}.dynamic-shop-item.svelte-dif8c,.dynamic-shop-item.svelte-dif8c:hover,.dynamic-row.svelte-dif8c{border-color:#35e0e81f}.dynamic-row.svelte-dif8c:hover{border-color:#35e0e847}.next-step-hint.svelte-dif8c{color:#35e0e8}.dyn-buy-button.svelte-dif8c{border-color:#35e0e81f}.dyn-buy-button.virtual.svelte-dif8c{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);box-shadow:0 4px 12px #35e0e84d,0 2px 4px #0003,inset 0 1px #fff3}.dyn-buy-button.svelte-dif8c:hover:not(:disabled){border-color:#35e0e81f}.dyn-buy-button.svelte-dif8c:disabled{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.craft-recipe-card.svelte-ggnigm{background-color:#070c0f}.craft-icon.svelte-ggnigm,.craft-item-req.svelte-ggnigm{border-color:#35e0e847}.craft-item-req.missing.svelte-ggnigm{border-color:#35e0e847!important}.craft-timer.svelte-ggnigm{background-color:#151f24}.item-wrapper.selected.svelte-18k2d4k{box-shadow:0 0 0 2px #35e0e8}.section-title.svelte-gygf75 .material-icons.svelte-gygf75{color:#35e0e8}.btn-replace.svelte-gygf75{background-color:#35e0e8cc}.btn-replace.svelte-gygf75:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.highlight-name.svelte-1w0uz1r{background-color:#35e0e81a;border-color:#35e0e84d}.logo-image.svelte-1w0uz1r,.banner-color-swatch.svelte-1w0uz1r,.swatch.svelte-1w0uz1r,.swatch-fill.svelte-1w0uz1r,.text-notification.svelte-nrigjp,.share-btn.svelte-1524ito{border-color:#35e0e81f}.bubble-row.sent.svelte-jj9ljg .bubble.svelte-jj9ljg{background-color:#35e0e8;color:#0b1215}.quantity-button.svelte-jsgxg6:disabled{background-color:#24343a;border-color:#35e0e81f}.section-title.svelte-1rov8jm .material-icons.svelte-1rov8jm{color:#35e0e8}.tool-btn.svelte-1rov8jm,.attach-btn.svelte-1rov8jm{border-color:#35e0e81f}.tool-btn.active.svelte-1rov8jm{border-color:#35e0e8;background-color:#35e0e840}.fields.svelte-1rov8jm input[type=number].svelte-1rov8jm,.fields.svelte-1rov8jm select.svelte-1rov8jm,.fields.svelte-1rov8jm input[type=color].svelte-1rov8jm{border-color:#35e0e81f}.window-header.svelte-4fhlo6{border-bottom-color:#35e0e81f;background-color:#111b1f}.window-header-icon.svelte-4fhlo6,.section-title.svelte-wfs5t6 .material-icons.svelte-wfs5t6{color:#35e0e8}.form-select.svelte-wfs5t6{border-color:#35e0e81f}.form-select.svelte-wfs5t6:focus{border-color:#35e0e8}.form-select.svelte-wfs5t6 option.svelte-wfs5t6{background-color:#0b1215}.dye-color-input.svelte-wfs5t6{border-color:#35e0e81f}.dye-opacity-slider.svelte-wfs5t6::-webkit-slider-thumb{background-color:#35e0e8;border-color:#35e0e81f;color:#0b1215}.form-input.svelte-iy81sy,.form-select.svelte-iy81sy{border-color:#35e0e81f}.form-input.svelte-iy81sy:focus,.form-select.svelte-iy81sy:focus{border-color:#35e0e8}.form-select.svelte-iy81sy option.svelte-iy81sy{background-color:#0b1215}.add-all-button.svelte-1rj22es:disabled{background-color:#24343a;border-color:#35e0e81f}.lottery-window.theme-easter.svelte-1rj22es,.theme-easter.svelte-1rj22es .title-separator.svelte-1rj22es,.theme-easter.svelte-1rj22es .cost-column.themed-box.svelte-1rj22es{outline-color:#35e0e81f}.lottery-window.theme-neutral.svelte-1rj22es:after{border-color:#35e0e81f}.theme-neutral.svelte-1rj22es .draw-timer.svelte-1rj22es{border-color:#35e0e81f;background-color:#182429a6}.theme-neutral.svelte-1rj22es .cost-column.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .grand-prize-container.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .additional-prizes-box.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .last-draw-winners.themed-box.svelte-1rj22es{border-color:#35e0e81f;background-color:#18242980}.painted-badge-swatch.svelte-n0vhtc,.painted-inline-swatch.svelte-n0vhtc{border-color:#35e0e847}.milestone-number.svelte-6hxhl0{background-color:#182429}.milestone-bonus.svelte-6hxhl0{background-color:#151f24}.milestone-bonus.claimable.svelte-6hxhl0{background-color:#182429}.progression-summary.svelte-6hxhl0{border-top-color:#35e0e81f}.progression-details.svelte-6hxhl0{border-color:#35e0e81f}.offer-holder.svelte-1agthf7,.offer-holder.svelte-1agthf7:hover{background-color:#111b1f}.offer-name.svelte-1agthf7{color:#35e0e8}.filter-input.svelte-49w24t,.filter-select.svelte-49w24t{border-color:#35e0e84d}.filter-input.svelte-49w24t:focus,.filter-select.svelte-49w24t:focus{border-color:#35e0e8}.email-change-section.svelte-126q2op{border-top-color:#35e0e81f}.change-email-btn.svelte-126q2op{border-color:#35e0e8}.sidebar-tab.svelte-berov0{background-color:#151f24}.sidebar-tab.svelte-berov0:hover,.sidebar-tab.active.svelte-berov0,.sidebar-tab-badge.svelte-berov0{background-color:#35e0e8;color:#0b1215}.items-detail-root.svelte-dmu4q2{background-color:#151f24}.items-detail-header-bar.svelte-dmu4q2{border-bottom-color:#35e0e81f;background-color:#111b1f}.items-detail-back.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-header-icon.svelte-dmu4q2{color:#35e0e8}.items-detail-header-btn.svelte-dmu4q2,.preview-action-btn.svelte-dmu4q2{border-color:#35e0e81f}.preview-action-btn.svelte-dmu4q2:hover{border-color:#35e0e847}.preview-action-btn.active.svelte-dmu4q2{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.items-detail-wear-slider.svelte-dmu4q2,.items-detail-instance-overlay.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-paint-swatch.svelte-dmu4q2{border-color:#35e0e847}.items-detail-tabs-panel.svelte-dmu4q2{background-color:#111b1f;border-color:#35e0e81f}.items-detail-creator-link.svelte-dmu4q2{color:#35e0e8}.items-detail-stats-section.svelte-dmu4q2{border-top-color:#35e0e81f}.items-detail-stats-header.svelte-dmu4q2{color:#35e0e8}.items-detail-range-btn.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-range-btn.active.svelte-dmu4q2{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.items-detail-owner-row.svelte-dmu4q2{border-bottom-color:#35e0e81f}.items-detail-owner-name.svelte-dmu4q2:hover{color:#35e0e8}.items-detail-instance-table.svelte-dmu4q2 th.svelte-dmu4q2{background-color:#111b1f;border-bottom-color:#35e0e81f}.items-detail-instance-table.svelte-dmu4q2 td.svelte-dmu4q2,.items-detail-listing-row.svelte-dmu4q2{border-bottom-color:#35e0e81f}.items-detail-listing-seller.svelte-dmu4q2:hover,.no-clan-title.svelte-51j5cz,.clan-benefits.svelte-51j5cz h3.svelte-51j5cz{color:#35e0e8}.clan-benefits.svelte-51j5cz li.svelte-51j5cz:before{color:#35e0e8}.map-filter-select.svelte-51j5cz{border-color:#35e0e866}.map-filter-select.svelte-51j5cz:hover{border-color:#35e0e8}.map-filter-select.svelte-51j5cz:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.section-title.svelte-51j5cz{color:#35e0e8;border-left-color:#35e0e8}.day-arrow.svelte-51j5cz{border-color:#35e0e866;color:#35e0e8}.day-arrow.svelte-51j5cz:hover:not(:disabled){background-color:#35e0e833;border-color:#35e0e8}.day-input.svelte-51j5cz{border-color:#35e0e866}.day-input.svelte-51j5cz:focus{border-color:#35e0e8}.view-all-btn.svelte-51j5cz{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.view-all-btn.svelte-51j5cz:hover{background-color:#35e0e84d}.page-btn.svelte-51j5cz{background-color:#35e0e833;border-color:#35e0e866}.historical-day.svelte-51j5cz{border-color:#35e0e81f}.day-header.svelte-51j5cz{border-bottom-color:#35e0e81f}.day-label.svelte-51j5cz{color:#35e0e8}.clan-side.comparison-clan.no-comparison.svelte-51j5cz,.clan-side.svelte-51j5cz .clan-logo-small.svelte-51j5cz{border-color:#35e0e81f}.stat-row.svelte-51j5cz{border-bottom-color:#35e0e81f}.no-participation-title.svelte-51j5cz,.eligible-maps.svelte-51j5cz h3.svelte-51j5cz{color:#35e0e8}.eligible-maps.svelte-51j5cz li.svelte-51j5cz{background-color:#35e0e81a;border-color:#35e0e84d}.game-announcement.svelte-1m80xxc{border-color:#35e0e81f}.game-announcement.svelte-1m80xxc:before{border-bottom-color:#35e0e847}.ga-bundle.svelte-1m80xxc{border-color:#35e0e81f}.ga-bundle.svelte-1m80xxc:hover,.ga-action-btn.svelte-1m80xxc,.ga-action-btn.svelte-1m80xxc:hover,.ga-action-btn.disabled.svelte-1m80xxc:hover{border-color:#35e0e847}.login-button.svelte-16z1lxi{background-color:#070c0f;border-color:#35e0e847}.terms-privacy-notice.svelte-16z1lxi a.svelte-16z1lxi{color:#35e0e8}.item-wrapper.selected.svelte-zhgogl{box-shadow:0 0 0 2px #35e0e8}.loading-spinner.svelte-zhgogl{border-color:#35e0e81f}.load-more-btn.svelte-zhgogl{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-zhgogl:hover{background-color:#35e0e84d}.load-more-btn.svelte-zhgogl:active{background-color:#35e0e866}.tab.svelte-1o3qul6:hover,.tab-active.svelte-1o3qul6,.tab-active.svelte-1o3qul6:hover{border-bottom-color:#35e0e847}.trading-column-header.svelte-1r9fijr{border-bottom-color:#35e0e81f}.confirm-box.svelte-1r9fijr,.start-box.svelte-1r9fijr{background-color:#151f24;border-color:#35e0e81f}.start-input.svelte-1r9fijr{border-color:#35e0e81f}.start-input.svelte-1r9fijr:focus{border-color:#35e0e81f}.section-title.svelte-4e4ust .material-icons.svelte-4e4ust{color:#35e0e8}.texture-settings.svelte-4e4ust{border-color:#35e0e81f}.toggle-switch.svelte-4e4ust input:checked+.slider.svelte-4e4ust{background-color:#35e0e8;color:#0b1215}.form-select.svelte-4e4ust{border-color:#35e0e81f}.form-select.svelte-4e4ust:focus{border-color:#35e0e8}.form-select.svelte-4e4ust option.svelte-4e4ust{background-color:#0b1215}.texture-upload-item.svelte-4e4ust{border-color:#35e0e81f}.uploading-badge.svelte-4e4ust{background-color:#35e0e8cc}.texture-image.svelte-4e4ust{border-color:#35e0e81f}.btn-replace.svelte-4e4ust{background-color:#35e0e8cc}.btn-replace.svelte-4e4ust:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.item-wrapper.selected.svelte-1l3mtrv{box-shadow:0 0 0 2px #35e0e8}.news-item.svelte-1ult4vg{border-left-color:#35e0e8}.news-item.svelte-1ult4vg a{color:#35e0e8}.menu-container.svelte-mqcul7{background-color:#070c0f}.menu-item.active.svelte-mqcul7{border-bottom-color:#35e0e847}button.svelte-mqcul7{background-color:#35e0e8;color:#0b1215}button.svelte-mqcul7:hover{box-shadow:0 0 60px #35e0e875}.start-button.svelte-mqcul7{background-color:#35e0e8;color:#0b1215}.start-button[disabled].svelte-mqcul7{background-color:#1d2c32}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7{background-color:#0b1215;border-color:#35e0e8;box-shadow:0 0 #35e0e833}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7:hover{box-shadow:0 0 0 2px #35e0e833}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7:checked{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.paint-container.svelte-10qrqvt{background-color:#151f24bf}.slider-arrow.svelte-10qrqvt{border-color:#35e0e81f}.slider-arrow.left.svelte-10qrqvt .slider-arrow-icon.svelte-10qrqvt{border-right-color:#35e0e847}.slider-arrow.right.svelte-10qrqvt .slider-arrow-icon.svelte-10qrqvt{border-left-color:#35e0e847}.swatch.svelte-10qrqvt{border-color:#35e0e81f}.swatch.locked.selected.svelte-10qrqvt{border-color:#35e0e847}.swatch-fill.svelte-10qrqvt,.btn.svelte-10qrqvt{border-color:#35e0e81f}.inventory-filter.svelte-ga3en0{background-color:#111b1f;border-color:#35e0e81f}.filter-header.svelte-ga3en0{background-color:#111b1f}.reset-btn.svelte-ga3en0,.reset-btn.svelte-ga3en0:hover,.expand-btn.svelte-ga3en0,.expand-btn.svelte-ga3en0:hover{background-color:#24343a}.filter-content.svelte-ga3en0{border-top-color:#35e0e81f}.search-input.svelte-ga3en0,.season-select.svelte-ga3en0,.sort-select.svelte-ga3en0,.category-select.svelte-ga3en0{background-color:#151f24;border-color:#35e0e81f}.filter-tabs.svelte-ga3en0{border-bottom-color:#35e0e81f}.filter-tab.svelte-ga3en0{background-color:#151f24}.filter-tab.svelte-ga3en0:hover{background-color:#182429}.filter-tab.active.svelte-ga3en0{background-color:#35e0e8;color:#0b1215}.toggle-all-btn.svelte-ga3en0{background-color:#1d2c32}.toggle-all-btn.svelte-ga3en0:hover{background-color:#24343a}.filter-panel.svelte-ga3en0{background-color:#111b1f}.filter-item-wrapper.svelte-ga3en0{border-color:#35e0e81f}.filter-item.svelte-ga3en0:hover{background-color:#151f24}.only-btn.svelte-ga3en0{background-color:#1d2c32}.only-btn.svelte-ga3en0:hover{background-color:#24343a}.profile-search-form.svelte-fo44ss{background-color:#0b1215;border-color:#35e0e81f}.profile-search-form.svelte-fo44ss:focus-within{border-color:#35e0e8}.follow-root.svelte-1ef5zjv{background-color:#151f24}.follow-header.svelte-1ef5zjv{border-bottom-color:#35e0e81f;background-color:#111b1f}.follow-back.svelte-1ef5zjv{border-color:#35e0e81f}.follow-header-icon.svelte-1ef5zjv{color:#35e0e8}.follow-tabs.svelte-1ef5zjv{border-bottom-color:#35e0e81f;background-color:#111b1f}.follow-tab.active.svelte-1ef5zjv{border-bottom-color:#35e0e8}.follow-row.svelte-1ef5zjv{background-color:#0b1215cc;border-color:#35e0e81f}.follow-btn.svelte-1ef5zjv{background-color:#35e0e8;color:#0b1215}.follow-btn.following.svelte-1ef5zjv,.price-tag.svelte-1q06uv7{border-color:#35e0e81f}.buy-button.svelte-1q06uv7:disabled{background-color:#24343a}.buy-button.svelte-1q06uv7:disabled:hover{background-color:#24343a}.io-code-display.svelte-owjkr{border-color:#35e0e81f}.music-player.svelte-1ei19qi{background-color:#0b1215f2}.music-btn.svelte-1ei19qi{border-color:#35e0e847}.section-title.svelte-16sjsp2 .material-icons.svelte-16sjsp2{color:#35e0e8}.toggle-switch.svelte-16sjsp2 input:checked+.slider.svelte-16sjsp2{background-color:#35e0e8;color:#0b1215}.form-select.svelte-16sjsp2,.form-input.svelte-16sjsp2{border-color:#35e0e81f}.form-select.svelte-16sjsp2:focus,.form-input.svelte-16sjsp2:focus{border-color:#35e0e8}.form-select.svelte-16sjsp2 option.svelte-16sjsp2{background-color:#0b1215}.texture-upload-item.svelte-16sjsp2{border-color:#35e0e81f}.uploading-badge.svelte-16sjsp2{background-color:#35e0e8cc}.texture-image.svelte-16sjsp2,.post-item-card.svelte-10yvzvw,.post-item-card.svelte-10yvzvw:hover{border-color:#35e0e81f}.post-content-thumb.svelte-10yvzvw{background-color:#0b1215}.post-content-action.svelte-10yvzvw{color:#35e0e8}.post-follow-btn.svelte-10yvzvw{background-color:#35e0e8;color:#0b1215}.post-follow-btn.svelte-10yvzvw:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.postResRo.svelte-10yvzvw,.postResRoD.svelte-10yvzvw{border-bottom-color:#35e0e81f}.post-text.svelte-10yvzvw a{color:#35e0e8}.post-footer.svelte-10yvzvw{border-top-color:#35e0e81f}.vote-btn.svelte-10yvzvw{border-color:#35e0e81f}.vote-btn.svelte-10yvzvw:hover:not(:disabled){border-color:#35e0e847}.vote-btn.svelte-10yvzvw:disabled{border-color:#35e0e81f}.vote-btn-done.svelte-10yvzvw{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.vote-btn-done.svelte-10yvzvw:hover:not(:disabled){background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.owned-count-overlay.svelte-9ff17r{border-color:#35e0e81f}.section-title.svelte-3rvofx .material-icons.svelte-3rvofx{color:#35e0e8}.form-textarea.svelte-3rvofx{border-color:#35e0e81f}.form-textarea.svelte-3rvofx:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.automatic-attributes.svelte-3rvofx{border-color:#35e0e81f}.automatic-attributes-header.svelte-3rvofx{background-color:#35e0e81a;border-bottom-color:#35e0e81f}.automatic-attributes-title.svelte-3rvofx .material-icons.svelte-3rvofx{color:#35e0e8}.loot-updated-name.svelte-1ydnong{color:var(--highlight-color, rgb(53, 224, 232))}.popup.svelte-1wz7ymp{background-color:#151f24}.popup.translucent.svelte-1wz7ymp{background-color:#151f24bf}.popup.slim-border.svelte-1wz7ymp{border-color:#35e0e81f}.sort-select.svelte-111gya4{background-color:#151f24;border-color:#35e0e81f}.sort-select.svelte-111gya4:hover{border-color:#35e0e847}.sort-select.svelte-111gya4:focus{border-color:#35e0e8}.searching-indicator.svelte-111gya4{color:#35e0e8}.searching-indicator.svelte-111gya4:before{border-color:#35e0e8}.clan-view-root.svelte-5j94nj{background-color:#151f24}.clan-view-header-bar.svelte-5j94nj{border-bottom-color:#35e0e81f;background-color:#111b1f}.clan-view-back.svelte-5j94nj{border-color:#35e0e81f}.clan-view-header-icon.svelte-5j94nj{color:#35e0e8}.clan-view-identity.svelte-5j94nj{background-color:#111b1f;border-color:#35e0e81f}.clan-view-logo.svelte-5j94nj,.clan-view-logo-placeholder.svelte-5j94nj{background-color:#111b1f}.clan-view-info.svelte-5j94nj{border-top-color:#35e0e81f}.clan-view-link.svelte-5j94nj{color:#35e0e8}.clan-view-role-header.svelte-5j94nj{color:#35e0e8;border-bottom-color:#35e0e81f}.social-search-input.svelte-1dyc40r{background-color:#0b1215;border-color:#35e0e81f}.social-search-input.svelte-1dyc40r:focus{border-color:#35e0e8}.social-search-btn.svelte-1dyc40r{background-color:#0b1215;border-color:#35e0e81f}.social-search-btn.svelte-1dyc40r:hover{background-color:#111b1f;border-color:#35e0e81f}.social-compose-btn.svelte-1dyc40r,.social-compose-btn.svelte-1dyc40r:hover{background-color:#35e0e8;color:#0b1215}.item-detail-container.svelte-olnzsm{border-left-color:#35e0e81f}.item-detail-header.svelte-olnzsm{border-bottom-color:#35e0e81f}.item-showcase-section.svelte-olnzsm{border-right-color:#35e0e81f}.ownership-count.svelte-olnzsm,.full-details-btn.svelte-olnzsm{border-color:#35e0e81f}.tabs-section.svelte-olnzsm{border-bottom-color:#35e0e81f}.loading-spinner.svelte-olnzsm{border-color:#35e0e81f}.load-more-btn.svelte-olnzsm{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-olnzsm:hover{background-color:#35e0e84d}.load-more-btn.svelte-olnzsm:active{background-color:#35e0e866}.stats-controls.svelte-olnzsm{border-bottom-color:#35e0e81f}.days-back-select.svelte-olnzsm{border-color:#35e0e81f}.days-back-select.svelte-olnzsm:hover:not(:disabled){border-color:#35e0e81f}.days-back-select.svelte-olnzsm:focus{border-color:#35e0e8}.mission-briefing.svelte-1849bws{background-image:linear-gradient(135deg,#0b1215,#111b1f)}.mission-header.svelte-1849bws{background-image:linear-gradient(135deg,#000,#0b1215)}.abort-btn.svelte-1849bws{background-image:linear-gradient(135deg,#151f24,#1d2c32);border-color:#35e0e847}.abort-btn.svelte-1849bws:hover{background-image:linear-gradient(135deg,#1d2c32,#24343a)}.deploy-btn.svelte-1849bws{border-color:#35e0e8}th.svelte-1enb567{color:#35e0e8}td.svelte-1enb567{border-bottom-color:#35e0e81f}.page-button.svelte-1enb567{border-color:#35e0e8}.page-button.svelte-1enb567:hover:not(:disabled){background-color:#35e0e833}.page-button.svelte-1enb567:disabled{border-color:#35e0e84d}.page-indicator.svelte-1enb567{color:#35e0e8}.item-display-container.svelte-1p13km7{border-color:#35e0e81f}.section-title.svelte-sr5bk2 .material-icons.svelte-sr5bk2{color:#35e0e8}.tool-btn.svelte-sr5bk2,.attach-btn.svelte-sr5bk2{border-color:#35e0e81f}.tool-btn.active.svelte-sr5bk2{border-color:#35e0e8;background-color:#35e0e840}.fields.svelte-sr5bk2 input[type=number].svelte-sr5bk2{border-color:#35e0e81f}.wallet-root.svelte-l0gwpc{background-color:#151f24}.wallet-catalog-btn.svelte-l0gwpc{border-color:#35e0e81f}.currency-card.svelte-l0gwpc{background-image:linear-gradient(135deg,#111b1f,#182429);border-color:#35e0e81f}.items-grid.svelte-l0gwpc{background-color:#111b1f}.main-button.svelte-whnh40{background-color:#151f24;border-color:#35e0e81f}.main-button.svelte-whnh40:disabled,.main-button-disabled.svelte-whnh40{background-color:#0b1215}.main-button.svelte-whnh40:disabled:hover,.main-button-disabled.svelte-whnh40:hover{background-color:#0b1215}.main-button.svelte-whnh40:hover:not(:disabled):not(.main-button-disabled){background-color:#182429}.main-button-accept-secondary.svelte-whnh40{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.sort-btn.active.svelte-9t0md3{background-color:#35e0e833;color:#35e0e8;border-color:#35e0e8}.month-select.svelte-9t0md3 option.svelte-9t0md3{background-color:#0b1215}.section-title.svelte-1qb7o10 .material-icons.svelte-1qb7o10{color:#35e0e8}.paint-mode-btn.svelte-1qb7o10{border-color:#35e0e81f}.paint-mode-btn.svelte-1qb7o10:hover:not(:disabled){border-color:#35e0e847}.paint-mode-btn.active.svelte-1qb7o10{background-color:#35e0e826;border-color:#35e0e8;color:#35e0e8}.paint-color-input.svelte-1qb7o10{border-color:#35e0e81f}.paint-preview-base.svelte-1qb7o10{border-top-color:#35e0e81f}.preview-base-input.svelte-1qb7o10{border-color:#35e0e81f}.preview-base-input.svelte-1qb7o10:focus{border-color:#35e0e8}.preview-base-quick.svelte-1qb7o10{border-color:#35e0e81f}.preview-base-quick.svelte-1qb7o10:hover:not(:disabled){border-color:#35e0e8;color:#35e0e8}.buy-button.svelte-1ov1s5h{border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:hover:not(:disabled){border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:disabled{background-image:linear-gradient(135deg,#24343a,#1d2c32);border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:disabled:hover{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.ownership-count.svelte-kchhu3{border-color:#35e0e81f} `});var zu,Bu=w(()=>{zu=`:root{--kute-cyan: #35e0e8;--kute-cyan-soft: rgba(53, 224, 232, .14);--kute-pink: #f5479b;--kute-pink-soft: rgba(245, 71, 155, .16);--kute-bg: #0b1215;--kute-panel: #111b1f;--kute-raised: #182429;--kute-line: rgba(53, 224, 232, .12);--kute-line-strong: rgba(53, 224, 232, .28);--kute-text: #eaf7f8;--kute-muted: rgba(234, 247, 248, .62);--kute-faint: rgba(234, 247, 248, .38);--kute-radius: 8px;--kute-radius-lg: 14px;--kute-paw: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23f5479b'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-paw-cyan: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%230b1215'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-ears: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 46 14'%3E%3Cpath fill='rgba(11,18,21,.78)' d='M1 14 9 1l8 13Zm28 0 8-13 8 13Z'/%3E%3Cpath fill='rgba(245,71,155,.7)' d='M5.5 14 9 7.5l3.5 6.5Zm28 0 3.5-6.5 3.5 6.5Z'/%3E%3C/svg%3E");--kute-paw-solid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%2335e0e8'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-grad: linear-gradient(90deg, var(--kute-cyan), var(--kute-pink));--div-black: rgba(11, 18, 21, .78);--div-grey: rgba(53, 224, 232, .07);--div-shadow: 0 2px 10px rgba(0, 0, 0, .5);--blue: var(--kute-cyan);--highlight-color: var(--kute-cyan);--highlight-hover-color: #5ce9ef;--card-bg-color: rgba(24, 36, 41, .7);--dark-bg-color: rgba(11, 18, 21, .5);--border-subtle: 1px solid var(--kute-line);--border-radius-sm: 6px;--border-radius-md: var(--kute-radius);--border-radius-lg: var(--kute-radius-lg);--box-shadow-lg: 0 18px 44px rgba(0, 0, 0, .6)}::selection{background:var(--kute-pink);color:#fff}a,a:visited{color:var(--kute-cyan)}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background-color:transparent;box-shadow:none}::-webkit-scrollbar-thumb{background:var(--kute-line-strong);border:3px solid transparent;border-radius:999px;background-clip:padding-box;box-shadow:none}::-webkit-scrollbar-thumb:hover{background-color:var(--kute-cyan)}#windowHolder.popupWin{background-color:#050a0cb8}#menuWindow.dark{background-color:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6,0 0 0 1px #0006}.settingsHeader{background-color:var(--kute-bg);border-bottom:1px solid var(--kute-line)}.setSugBox2{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);transition:background-color .15s,border-color .15s}.setSugBox2:hover{border-width:1px;background-color:var(--kute-raised);border-color:var(--kute-cyan)}.advancedSlider{background-color:#24343a;border-radius:999px}.advancedSlider:before{border-radius:50%;background:#fff var(--kute-paw) center / 20px no-repeat}input:checked+.advancedSlider{background-color:var(--kute-cyan)}input:checked+.advancedSlider:before{background-image:var(--kute-paw-cyan)}input:checked+.advancedSlider:after{color:var(--kute-bg)}.hostPresetBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px}.hostPresetBtn:hover{background-color:var(--kute-pink);color:#fff}#settingsTabLayout{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius);overflow:hidden}.settingTab{background-color:transparent;color:var(--kute-muted);border-bottom:3px solid transparent;transition:color .15s,background-color .15s}#menuWindow.dark .settingTab{color:var(--kute-muted)}.settingTab:hover{border-bottom:3px solid var(--kute-line-strong);background-color:var(--kute-cyan-soft)}#menuWindow.dark .settingTab:hover{color:var(--kute-text)}.dark .tabANew,.dark .tabANew:hover{border-bottom:3px solid var(--kute-cyan)!important;background-color:var(--kute-cyan-soft)}#menuWindow.dark .tabANew{color:var(--kute-cyan)}.setHed,.setHedS{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-left:3px solid var(--kute-cyan);border-radius:var(--kute-radius);transition:background-color .15s,border-color .15s}.setHed:hover,.setHedS:hover{background-color:#1d2c32;border-left-color:var(--kute-pink)}.setHed .plusOrMinus{color:var(--kute-cyan)}.setBodH{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.settName,.settNameSmall{border-bottom:1px solid var(--kute-line);color:var(--kute-muted)!important}.settNameIn:hover{background-color:var(--kute-cyan-soft)!important;color:var(--kute-text)!important}.settingsBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px;transition:background-color .15s,color .15s}#menuWindow.dark .settingsBtn{color:var(--kute-bg)}.settingsBtn:hover,#menuWindow.dark .settingsBtn:hover{background-color:var(--kute-pink);color:#fff}#settSearch,.inputGrey2,.sliderVal,#loadoutName,#loadoutSelect,#itemSearch{background:var(--kute-raised);color:var(--kute-text);border:1px solid var(--kute-line);border-radius:6px;outline:none;transition:border-color .15s}#settSearch:focus,.inputGrey2:focus,.sliderVal:focus,#loadoutName:focus,#loadoutSelect:focus{border-color:var(--kute-cyan)}#loadoutName{background:var(--kute-raised)!important;border:1px solid var(--kute-line)!important}.sliderVal{border-color:var(--kute-line-strong)!important}#settSearch::placeholder,#loadoutName::placeholder{color:var(--kute-faint)}.inputGrey2 option,#loadoutSelect option{background:var(--kute-panel);color:var(--kute-text)}#loadoutToolbar{background-color:var(--kute-panel);border-bottom:1px solid var(--kute-line)}.loadoutTab{background-color:transparent;transition:background-color .15s,color .15s}.loadoutTab:hover{background-color:var(--kute-cyan-soft)}.loadoutTabSel,.loadoutTabSel:hover{background-color:var(--kute-cyan-soft);border-bottom-color:var(--kute-cyan);color:var(--kute-cyan)!important}#charPreviewSlot{background:radial-gradient(circle at 50% 42%,rgba(53,224,232,.1),transparent 62%);border-right:1px solid var(--kute-line)}.custContainer,.custSubContainer{background-color:var(--kute-panel);border-color:var(--kute-line);box-shadow:none}.custContainer{border-radius:var(--kute-radius);transition:border-color .15s,background-color .15s}.custContainer.contCanSelect:hover{background-color:var(--kute-raised);border-color:var(--kute-cyan)}.custSubContainer{border-radius:0 var(--kute-radius) 0 var(--kute-radius)}.custClear{border-radius:6px}.custBack{background:var(--kute-raised);border-radius:6px}.custBack:hover{background:var(--kute-cyan-soft)}.classCard{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-radius:var(--kute-radius);overflow:hidden;transition:border-color .15s}.classCard:hover{border-color:var(--kute-cyan)}.classXPBar{background-color:var(--kute-bg)}.clsXPBarC{background-color:var(--kute-cyan)}.loadoutBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px}.loadoutBtn:hover{background-color:var(--kute-pink);color:#fff}.slider,.slider2{background-color:#24343a;border-radius:999px}.slider:before,.slider2:before{border-radius:50%;width:22px;background-color:#fff;background-image:var(--kute-paw);background-size:14px;background-position:center;background-repeat:no-repeat}.slider:before{left:5px}input:checked+.slider,input:checked+.slider2,input:checked+.sliderSml,input:checked+.sliderCent{background-color:var(--kute-cyan)}input:checked+.slider:before{transform:translate(28px);background-image:var(--kute-paw-cyan)}input:checked+.slider2:before{transform:translate(20px);background-image:var(--kute-paw-cyan)}input:focus+.slider,input:focus+.slider2,input:focus+.sliderSml{box-shadow:0 0 0 2px var(--kute-cyan-soft)}.sliderSml,.sliderCent{background-color:#24343a}.sliderM{background-color:#24343a;height:8px;border-radius:999px;margin-bottom:0}.sliderM::-webkit-slider-thumb{width:22px;height:22px;border-radius:50%;background:#fff var(--kute-paw) center / 14px no-repeat;box-shadow:0 0 0 3px var(--kute-cyan),0 2px 6px #00000080}#playerHeaderEl{background:var(--kute-grad) bottom / 100% 1px no-repeat,linear-gradient(#070c0feb,#070c0fbd)}.ph-item[class*=svelte-],.nav-item[class*=svelte-]{border-radius:12px;transition:background-color .15s}.ph-item[class*=svelte-]:hover,.nav-item[class*=svelte-]:hover{background-color:var(--kute-cyan-soft)}.nav-item[class*=svelte-] .material-icons,.nav-item[class*=svelte-] .material-icons-outlined{color:var(--kute-cyan)}#menuItemContainer .menuItem{position:relative;border-radius:10px;transition:transform .15s,background-color .15s}#menuItemContainer .menuItem:hover{background:linear-gradient(90deg,var(--kute-cyan-soft),transparent 85%);transform:translate(6px)}#menuItemContainer .menuItem:hover .menuItemTitle{color:var(--kute-cyan)}#menuItemContainer .menuItem:not(.bpItem):not(.dsItem):before{content:"";position:absolute;left:-18px;top:50%;width:14px;height:14px;background:var(--kute-paw-solid) center / contain no-repeat;opacity:0;transform:translate(-4px,-50%) rotate(-20deg);transition:opacity .15s,transform .15s;pointer-events:none}#menuItemContainer .menuItem:not(.bpItem):not(.dsItem):hover:before{opacity:1;transform:translateY(-50%) rotate(-20deg)}#menuItemContainer .menuItemIcon{color:var(--kute-cyan)}#menuItemContainer .sidebarDivider{background:linear-gradient(90deg,var(--kute-line-strong),transparent);border:0}@container not style(--kute-classic-menu: 1){#subLogoButtons>.actionCard{background:var(--kute-panel);border-color:rgba(var(--card-rgb),.45);border-radius:var(--kute-radius);box-shadow:none;transition:background-color .15s,border-color .15s}#subLogoButtons>.actionCard:hover{background:var(--kute-raised);border-color:rgb(var(--card-rgb))}#subLogoButtons>.actionCard .cardIcon{color:rgb(var(--card-rgb))}.popRailCard[class*=svelte-]{background:var(--kute-panel);border-color:var(--kute-line-strong);border-radius:var(--kute-radius);transition:background-color .15s,border-color .15s}.popRailCard[class*=svelte-]:hover{background:var(--kute-raised);border-color:var(--kute-cyan)}.popRailPlay[class*=svelte-]{color:var(--kute-cyan)}#customizeButton{border-radius:var(--kute-radius)}}.window-header[class*=svelte-],#loadoutToolbar,.profile-detail-header-bar[class*=svelte-],.instructionsHeader,.settingsHeader{background-image:var(--kute-grad);background-size:100% 1px;background-position:bottom;background-repeat:no-repeat}:is(#windowHolder,#popupHolder,#app) .button{border-radius:var(--kute-radius);background-color:#0b121599}:is(#windowHolder,#popupHolder,#app) .button:hover,:is(#windowHolder,#popupHolder,#app) .button:active{border-color:var(--kute-cyan)!important}:is(#windowHolder,#popupHolder,#app) .button:not([class*=buttonR]):not([class*=buttonG]):not([class*=buttonP]):not([class*=buttonO]):not([class*=buttonB]):not(:hover){border-color:var(--kute-line-strong)}#chatList{background-color:#0b12158c;border-radius:var(--kute-radius) var(--kute-radius) 0 0}#chatInputHolder{border-radius:0 0 var(--kute-radius) var(--kute-radius)}#chatInput{background-color:#182429cc;border:1px solid var(--kute-line);border-radius:6px}#chatInput:focus{border-color:var(--kute-cyan);outline:none}#instructionsUpdate{background:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6;overflow:hidden}.instructionsHeader,.instructionsTabs{background-color:var(--kute-panel);box-shadow:none}.instructionsHeader{border-bottom:1px solid var(--kute-line)}.instructionsTab{border-top:1px solid var(--kute-line);transition:background-color .15s,color .15s}.instructionsTab:hover{background-color:var(--kute-cyan-soft);border-color:var(--kute-line);color:var(--kute-cyan)}#ammoHolder,#bottomLeftPlayer,#timerHolder,.statIcon,#leaderboardHolder,#teamScores,#chatInputHolder{border-radius:var(--kute-radius)}#ammoHolder .greyInner,.statIcon .greyInner,#timerInner,#leaderContainer,#bottomLeftPlayerLeft,#bottomLeftPlayerRight,#bottomLeftTeamType,#bottomLeftTeamName,#bottomLeftHealthBar{border-radius:6px}#bottomLeftPlayerLeft{overflow:hidden}#ammoHolder,#bottomLeftPlayer{box-shadow:inset 0 -2px 0 var(--kute-cyan)}#bottomLeftPlayer{position:relative}#ammoHolder:before,#bottomLeftPlayer:before{content:"";position:absolute;top:-12px;width:46px;height:14px;background:var(--kute-ears) no-repeat center / contain;pointer-events:none}#ammoHolder:before{right:20px}#bottomLeftPlayer:before{left:19px}#reloadMsg{border-radius:6px}#ingameFPS,#pingText{color:var(--kute-cyan)}.bigMenTabs{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.bigMenTab:hover{border-bottom:3px solid var(--kute-line-strong)}.bigMenTabA,.bigMenTabA:hover{border-bottom:3px solid var(--kute-cyan);color:var(--kute-cyan)}#popupContent,#bundlePop,#premiumPop,#policePopC,#guidePopup,#chargeModalCard,#spinHistoryPop,.confPremiumPop,.vouchPop,.rankedPop,.promoPop,.pfpPop,.dropsPop,.accountCreatePop,.imagePop,.badgePop,.imageNewPop,.importPop,.disconnectPop,.eventPop,.bp-generic-pop,.bp-purchase-pop,.spinErrorPop,.charmErrorPop,.spinHistoryStatsPop,.loadingPop,.autoLoadPop,.editMapPop,.responsePop,.ticketPop,.dxp-pop,.abTestsPop,.registerGiftPop,.rankedQueueModal,.rankedMenuModal,.communityPopup,.tutorialPopup,.defaultModal,.krunkCupJoinModal,.krunkCupViewModal,.exchangeModal,.itemsModal,.moreKrunkerPopup,.infoPop,.contPop,.io-popup-container,.wallet-root[class*=svelte-]{background-color:var(--kute-bg);border-radius:var(--kute-radius-lg);box-shadow:0 0 0 1px var(--kute-line),0 24px 60px #000000a6}.twitchPop,.nftPop,.confPop,.clientExitPop,#confPurchItemPop,.metaPop,.polConfPop{border-color:var(--kute-line);border-radius:var(--kute-radius-lg)}.hostHeader,#stickyHostH,.imageListHeader,.imageListFooter,.spinHistoryHeader,.popHeader,.dropsPopHeader,.serverHeader,#itemSearchH,#bindsHeader,.tooltip2,.crftRcpeCrd,.bundleCrd,.bundle-card[class*=svelte-],.moreKrunkerOption[class*=svelte-],.items-grid[class*=svelte-],.filter-panel[class*=svelte-],.territory-map-container[class*=svelte-],.data-table[class*=svelte-] thead{background-color:var(--kute-panel)}#initLoader,.clsStatXPBar,.elo-progress-bar-bg{background-color:var(--kute-bg)}.featured-section[class*=svelte-],.stream-card[class*=svelte-],.emoji-panel[class*=svelte-],.verification-banner[class*=svelte-],.music-player[class*=svelte-],.market-card[class*=svelte-],.rank-popup-content{background-color:var(--kute-panel)}.hide-button[class*=svelte-],.kuteTopButton{background-color:var(--kute-raised)}.hide-button[class*=svelte-]:hover,.kuteTopButton:hover{background-color:#1d2c32}.contactsHeader{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-left:3px solid var(--kute-cyan);border-radius:var(--kute-radius)}.bpInfoBalloon,.bpInfoBalloon:after,.io-separator span{background-color:var(--kute-bg)}.bpClaimB,.bp-unlock-header,.io-button,.mapLICat,#tradeChatInput,.tradeChatItem,.main-button[class*=svelte-]{background-color:var(--kute-raised)}.io-button:hover,.mapLICat:hover,.main-button[class*=svelte-]:hover:not(:disabled):not(.main-button-disabled){background-color:#1d2c32}.main-button[class*=svelte-],.moreKrunkerOption[class*=svelte-],.territory-map-container[class*=svelte-],.territory-details-panel[class*=svelte-],.inventory-filter[class*=svelte-],.filter-item-wrapper[class*=svelte-]{border-color:var(--kute-line)}.moreKrunkerOption[class*=svelte-]:hover{border-color:var(--kute-cyan)}.inventory-filter[class*=svelte-],.filter-header[class*=svelte-]{background-color:var(--kute-panel)}.currency-card[class*=svelte-]{background:var(--kute-panel);border-color:var(--kute-line)}.search-input[class*=svelte-],.season-select[class*=svelte-],.sort-select[class*=svelte-],.category-select[class*=svelte-],.filter-tab[class*=svelte-],.filter-item[class*=svelte-]:hover,.reset-btn[class*=svelte-],.expand-btn[class*=svelte-],.toggle-all-btn[class*=svelte-],.only-btn[class*=svelte-]{background:var(--kute-raised);border-color:var(--kute-line)}.filter-tab[class*=svelte-]:hover,.reset-btn[class*=svelte-]:hover,.expand-btn[class*=svelte-]:hover,.toggle-all-btn[class*=svelte-]:hover,.only-btn[class*=svelte-]:hover{background:#1d2c32}.filter-tab.active[class*=svelte-]{background:var(--kute-cyan);color:var(--kute-bg)}.setSugBox,.viewAllUpdates,.bSliderBtn,.bundleSliderBtn,.dropsSliderBtn,.challHeadrI,.sub-tab-panel[class*=svelte-]{border-color:var(--kute-line-strong)}.challMapCrd:not(.chalCardH){border-color:var(--kute-line-strong)}.guideHeader,.guideSubH,.mailFrom,.speedRunItem,#hostActionH,#custStreakSelH{border-color:var(--kute-line)}.store-tabs[class*=svelte-],.tabs-container[class*=svelte-],#menuWindow.eterno .store-tabs[class*=svelte-]{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.store-tab[class*=svelte-]:hover,.tab[class*=svelte-]:hover{border-bottom-color:var(--kute-line-strong)}.store-tab-active[class*=svelte-],.store-tab-active[class*=svelte-]:hover,.tab-active[class*=svelte-],.tab-active[class*=svelte-]:hover,.tabHeader.selected{border-bottom-color:var(--kute-cyan);color:var(--kute-cyan)}#menuWindow.eterno{background-color:var(--kute-bg);border-color:var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6;animation:none}.followBut,#hostMenuBtn,.chargeModalBtn,.redVouchBtn,.searchBtn,.hostToggle,.subPassChg,.updDisN,#partnerProgB,#partnrUpBtn,#findGameBtn,.joinBtn,.openCollection,#spinMultiToggleBtn,.clanSubmitBtn,.main-button-accept-secondary[class*=svelte-]{background-color:var(--kute-cyan);border-color:var(--kute-cyan);color:var(--kute-bg)}input:checked+.optCheck{background-color:var(--kute-cyan)}.quickJoin,.followBack,.io-input-field:focus{border-color:var(--kute-cyan)}.io-section-header:after{background:var(--kute-cyan)}.counterBadge[class*=svelte-]{background:var(--kute-pink);color:#fff}.wallet-catalog-btn[class*=svelte-] i{color:var(--kute-cyan)}.stack-collapse-fab[class*=svelte-]{background:var(--kute-cyan)}.card-title[class*=svelte-],.view-title[class*=svelte-],.table-header[class*=svelte-],.no-clan-title[class*=svelte-],.no-participation-title[class*=svelte-],.clan-benefits[class*=svelte-] h3,.clan-benefits[class*=svelte-] li:before,.eligible-maps[class*=svelte-] h3,.day-label[class*=svelte-],.day-arrow[class*=svelte-],.view-all-btn[class*=svelte-]{color:var(--kute-cyan)}.section-title[class*=svelte-]{border-left-color:var(--kute-cyan);color:var(--kute-cyan)}.category-card[class*=svelte-],.map-filter-select[class*=svelte-],.day-arrow[class*=svelte-],.day-input[class*=svelte-],.data-table[class*=svelte-] thead tr{border-color:var(--kute-line-strong)}.category-card[class*=svelte-]:hover,.map-filter-select[class*=svelte-]:hover,.map-filter-select[class*=svelte-]:focus,.day-input[class*=svelte-]:focus{border-color:var(--kute-cyan)}.table-header.sortable.sort-asc[class*=svelte-]:after{border-bottom-color:var(--kute-cyan)}.table-header.sortable.sort-desc[class*=svelte-]:after{border-top-color:var(--kute-cyan)}.table-header.sortable[class*=svelte-]:hover,.data-table[class*=svelte-] tbody tr.clickable:hover,.data-table[class*=svelte-] tbody tr.highlight-row,.day-arrow[class*=svelte-]:hover:not(:disabled),.day-map[class*=svelte-],.eligible-maps[class*=svelte-] li,.view-all-btn[class*=svelte-],.page-btn[class*=svelte-],.view-tab.active[class*=svelte-]{background:var(--kute-cyan-soft);border-color:var(--kute-line-strong)}:is(#popupHolder,#app) .socialModal{background-color:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6}:is(#popupHolder,#app) .social-content{border-radius:var(--kute-radius-lg)}:is(#popupHolder,#app) .window-header{background:var(--kute-panel);border-bottom:1px solid var(--kute-line)}:is(#popupHolder,#app) .window-header-icon{color:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab{background:var(--kute-panel);transition:background-color .15s}:is(#popupHolder,#app) .sidebar-tab:hover{background:var(--kute-raised)}:is(#popupHolder,#app) .sidebar-tab:hover .sidebar-tab-icon,:is(#popupHolder,#app) .sidebar-tab:hover .sidebar-tab-label{color:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab.active{background:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab.active .sidebar-tab-icon,:is(#popupHolder,#app) .sidebar-tab.active .sidebar-tab-label{color:var(--kute-bg)}:is(#popupHolder,#app) .simple-tabs{border-bottom-color:var(--kute-line)}:is(#popupHolder,#app) .simple-tab-active{border-bottom-color:var(--kute-cyan)}:is(#popupHolder,#app) .simple-tab-active .simple-tab-icon,:is(#popupHolder,#app) .simple-tab-active .simple-tab-label{color:var(--kute-cyan)}:is(#popupHolder,#app) .social-search-input,:is(#popupHolder,#app) .social-search-btn,:is(#popupHolder,#app) .profile-search-form,:is(#popupHolder,#app) .conversation-input,:is(#popupHolder,#app) .conversation-emoji-button{background:var(--kute-raised);border-color:var(--kute-line);border-radius:6px}:is(#popupHolder,#app) .social-search-input:focus,:is(#popupHolder,#app) .profile-search-form:focus-within,:is(#popupHolder,#app) .conversation-input:focus{border-color:var(--kute-cyan)}:is(#popupHolder,#app) .social-search-btn:hover,:is(#popupHolder,#app) .conversation-emoji-button:hover:not(:disabled){background:#1d2c32;border-color:var(--kute-line-strong);color:var(--kute-cyan)}:is(#popupHolder,#app) .social-compose-btn,:is(#popupHolder,#app) .post-follow-btn,:is(#popupHolder,#app) .conversation-send-button{background:var(--kute-cyan);border-radius:6px;transition:background-color .15s}:is(#popupHolder,#app) .social-compose-btn:hover,:is(#popupHolder,#app) .post-follow-btn:hover:not(:disabled),:is(#popupHolder,#app) .conversation-send-button:hover:not(:disabled){background:var(--kute-pink)}:is(#popupHolder,#app) .social-compose-icon,:is(#popupHolder,#app) .social-compose-label,:is(#popupHolder,#app) .post-follow-btn i,:is(#popupHolder,#app) .conversation-send-button{color:var(--kute-bg)}:is(#popupHolder,#app) .conversation-send-button:disabled{background:#24343a;color:var(--kute-faint)}:is(#popupHolder,#app) .post-card{background:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .post-card-clickable:hover{background:var(--kute-raised)}:is(#popupHolder,#app) .post-item-card{background:#18242999;border-color:var(--kute-line);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .post-item-card:hover{background:var(--kute-raised);border-color:var(--kute-cyan)}:is(#popupHolder,#app) .postGameRes{background-color:var(--kute-bg);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .postResRo,:is(#popupHolder,#app) .postResRoD{border-bottom-color:var(--kute-line)}:is(#popupHolder,#app) .post-content-action{color:var(--kute-cyan)}:is(#popupHolder,#app) .vote-btn,:is(#popupHolder,#app) .share-btn{background:var(--kute-raised);border-color:var(--kute-line)}:is(#popupHolder,#app) .vote-btn:hover:not(:disabled),:is(#popupHolder,#app) .share-btn:hover{background:#1d2c32;border-color:var(--kute-line-strong)}:is(#popupHolder,#app) .comment-btn:hover{background:var(--kute-cyan-soft)}:is(#popupHolder,#app) .vote-btn-done,:is(#popupHolder,#app) .vote-btn-done:hover:not(:disabled){background:var(--kute-cyan);border-color:var(--kute-cyan)}:is(#popupHolder,#app) .vote-btn-done .vote-btn-icon,:is(#popupHolder,#app) .vote-btn-done .vote-btn-label,:is(#popupHolder,#app) .vote-btn-done .vote-btn-count{color:var(--kute-bg)}:is(#popupHolder,#app) .friends-root,:is(#popupHolder,#app) .conversation-root{background:var(--kute-bg)}:is(#popupHolder,#app) .friend-list{background:var(--kute-panel);border-right:1px solid var(--kute-line)}:is(#popupHolder,#app) .friend-item:hover{background:#35e0e80f}:is(#popupHolder,#app) .friend-item.selected{background:var(--kute-cyan-soft);border-left-color:var(--kute-cyan)}:is(#popupHolder,#app) .friend-presence-dot{border-color:var(--kute-panel)}:is(#popupHolder,#app) .friend-unread{background:var(--kute-pink);color:#fff}:is(#popupHolder,#app) .friend-list-search{background:var(--kute-raised);border-top:1px solid var(--kute-line)}:is(#popupHolder,#app) .conversation-header,:is(#popupHolder,#app) .conversation-compose{background:var(--kute-panel);border-color:var(--kute-line)}:is(#popupHolder,#app) .conversation-presence-dot{border-color:var(--kute-panel)}:is(#popupHolder,#app) .conversation-load-earlier{background:var(--kute-raised);border-color:var(--kute-line)}:is(#popupHolder,#app) .conversation-day-divider:before,:is(#popupHolder,#app) .conversation-day-divider:after{background:var(--kute-line)}:is(#popupHolder,#app) .bubble-row.sent .bubble{background:var(--kute-cyan)}:is(#popupHolder,#app) .bubble-row.sent .bubble,:is(#popupHolder,#app) .bubble-row.sent .bubble-time,:is(#popupHolder,#app) .bubble-row.sent .bubble-status-ok{color:var(--kute-bg)}:is(#popupHolder,#app) .bubble-row.received .bubble{background:var(--kute-raised)}#app .profile-detail-root{background:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6}#app .profile-detail-header-bar{background:var(--kute-panel);border-bottom-color:var(--kute-line)}#app .profile-detail-header-icon,#app .profile-detail-section-header,#app .profile-detail-sales-header{color:var(--kute-cyan)}#app .profile-detail-back,#app .profile-detail-action,#app .profile-detail-range-btn{background:var(--kute-raised);border-color:var(--kute-line)}#app .profile-detail-back:hover,#app .profile-detail-action:hover:not(:disabled){background:#1d2c32}#app .profile-detail-action.active,#app .profile-detail-action.active i{background:var(--kute-cyan-soft);border-color:var(--kute-line-strong);color:var(--kute-cyan)}#app .profile-detail-range-btn.active{background:var(--kute-cyan);border-color:var(--kute-cyan);color:var(--kute-bg)}#app .profile-detail-identity,#app .profile-detail-sales-panel,#app .profile-detail-badges-panel,#app .profile-detail-creations-panel{background:var(--kute-panel);border-color:var(--kute-line);border-radius:var(--kute-radius)}#app .profile-detail-avatar{background:var(--kute-raised);border-color:var(--kute-line-strong)}#app .profile-detail-online-dot{border-color:var(--kute-panel)}#app .profile-detail-follow-box,#app .profile-detail-title-item,#app .profile-detail-badge-item{background:var(--kute-raised)}#app .profile-detail-follow-box:hover{background:#1d2c32;border-color:var(--kute-line-strong)}#app .profile-detail-stat,#app .profile-detail-class,#app .profile-detail-raid-row,#app .profile-detail-listing-card,#app .profile-detail-creation-card{background:var(--kute-panel);border-color:var(--kute-line);border-radius:var(--kute-radius)}#app .profile-detail-listing-card:hover,#app .profile-detail-creation-card:hover{background:var(--kute-raised)}#app .profile-detail-level-badge,#app .profile-detail-xp-fill{background:var(--kute-cyan)}#app .profile-detail-level-badge{color:var(--kute-bg)}#app .profile-detail-xp-bar{background:var(--kute-raised)} -`});var Qr={};A(Qr,{default:()=>Tb});var Mb,Zr,Tb,ei=w(()=>{"use strict";F();Nu();Bu();Mb=_u+zu,Zr=class{constructor(){this.sheet=null,d.settings.toggleKuteCss=e=>this.toggle(e),this.toggle(!0)}toggle(e){if(!e){this.sheet?.replaceSync("");return}this.sheet||(this.sheet=new CSSStyleSheet,document.adoptedStyleSheets=[this.sheet,...document.adoptedStyleSheets]),this.sheet.replaceSync(Mb)}},Tb=new Zr});var ii={};A(ii,{setFrameEnd:()=>Cn,takeFrameWorkMs:()=>ni});function ni(){if(os.length<10)return 0;let s=os.sort((t,o)=>t-o);os=[];let e=s.slice(0,Math.ceil(s.length*.9));return e.reduce((t,o)=>t+o,0)/e.length}function Nb(s){return function(e){e!==Hu&&(Hu=e,qu++>0&&(Ku=performance.now(),ju.port2.postMessage(0))),s(e)}}function _b(s,e){Lo<0&&(Lo=e),ss++;let t=e-Lo;if(ts*Lb?ns+1:0,ns>=2&&d.frameLimiter!=="viz"&&(rs=!0),ss=0,Lo=e}function Uu(){!rs||!$n?.hardFlip||(rs=!1,ss=0,ns=0,Lo=-1)}function Bb(s){let e;for(s>200?e=1e3/(s*1.0055):e=1e3/s;performance.now()e?xn=t+e:xn+=e}function zb(s){En=s,ri?.(s)}function Gu(s){if(ri!==null&&!si)return Hb(s);let e=$n===null?0:$n.gameFpsLimit;if(!(e>0)){ti=0;let o=++Ib%Rb;return o>=Pb?Sn(s):(o===0&&(qu=0),Sn(Nb(s)))}let t=Number(e);return Sn(function(o){t!==ti&&(ti=t,rs=!1,ss=0,ns=0,Lo=-1),o!==Ou&&(Ou=o,rs?Bb(t):_b(t,o)),s(o)})}function Hb(s){si=!0;let e=Gu(t=>{En=t,s(t)});return si=!1,Fu===En&&Du(oi),Fu=En,oi=Sn(zb),e}function Cn(s){ri=s,s===null&&Du(oi)}var Sn,Du,Ab,Lb,$n,Rb,Pb,Ib,qu,Hu,Ku,os,ju,xn,Ou,ti,rs,Lo,ss,ns,ri,oi,En,Fu,si,is=w(()=>{"use strict";F();Sn=window.requestAnimationFrame,Du=window.cancelAnimationFrame,Ab=2e3,Lb=1.15,$n=null,Rb=256,Pb=12,Ib=0,qu=0,Hu=-1,Ku=0,os=[],ju=new MessageChannel;ju.port1.onmessage=()=>{os.length<512&&os.push(performance.now()-Ku)};Ne.then(()=>{$n=d.settings.data});xn=0,Ou=-1,ti=0,rs=!1,Lo=-1,ss=0,ns=0;document.addEventListener("pointerlockchange",Uu);window.addEventListener("resize",Uu);ri=null,oi=0,En=-1,Fu=-2,si=!1;window.requestAnimationFrame=Gu});var Mn=we((jx,Ob)=>{Ob.exports="data:image/webp;base64,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"});var li={};A(li,{default:()=>Fb});var Wu,ai,Fb,ci=w(()=>{"use strict";Wu=ue(Mn(),1),ai=class{constructor(){if(!document.querySelector("#mainMenuUIMount"))return;let e=document.createElement("style");e.id="kute_logoBadgeCSS",e.textContent=` +`});var ei={};A(ei,{default:()=>Tb});var Mb,Qr,Tb,ti=w(()=>{"use strict";D();Nu();Bu();Mb=_u+zu,Qr=class{constructor(){this.sheet=null,u.settings.toggleKuteCss=e=>this.toggle(e),this.toggle(!0)}toggle(e){if(!e){this.sheet?.replaceSync("");return}this.sheet||(this.sheet=new CSSStyleSheet,document.adoptedStyleSheets=[this.sheet,...document.adoptedStyleSheets]),this.sheet.replaceSync(Mb)}},Tb=new Qr});var ai={};A(ai,{setFrameEnd:()=>Mn,takeFrameWorkMs:()=>ri});function ri(){if(ss.length<10)return 0;let s=ss.sort((t,o)=>t-o);ss=[];let e=s.slice(0,Math.ceil(s.length*.9));return e.reduce((t,o)=>t+o,0)/e.length}function Nb(s){return function(e){e!==Hu&&(Hu=e,qu++>0&&(Ku=performance.now(),ju.port2.postMessage(0))),s(e)}}function _b(s,e){Lo<0&&(Lo=e),ns++;let t=e-Lo;if(ts*Lb?rs+1:0,rs>=2&&u.frameLimiter!=="viz"&&(is=!0),ns=0,Lo=e}function Uu(){!is||!Cn?.hardFlip||(is=!1,ns=0,rs=0,Lo=-1)}function Bb(s){let e;for(s>200?e=1e3/(s*1.0055):e=1e3/s;performance.now()e?Sn=t+e:Sn+=e}function zb(s){$n=s,ii?.(s)}function Gu(s){if(ii!==null&&!ni)return Hb(s);let e=Cn===null?0:Cn.gameFpsLimit;if(!(e>0)){oi=0;let o=++Ib%Rb;return o>=Pb?En(s):(o===0&&(qu=0),En(Nb(s)))}let t=Number(e);return En(function(o){t!==oi&&(oi=t,is=!1,ns=0,rs=0,Lo=-1),o!==Ou&&(Ou=o,is?Bb(t):_b(t,o)),s(o)})}function Hb(s){ni=!0;let e=Gu(t=>{$n=t,s(t)});return ni=!1,Du===$n&&Fu(si),Du=$n,si=En(zb),e}function Mn(s){ii=s,s===null&&Fu(si)}var En,Fu,Ab,Lb,Cn,Rb,Pb,Ib,qu,Hu,Ku,ss,ju,Sn,Ou,oi,is,Lo,ns,rs,ii,si,$n,Du,ni,as=w(()=>{"use strict";D();En=window.requestAnimationFrame,Fu=window.cancelAnimationFrame,Ab=2e3,Lb=1.15,Cn=null,Rb=256,Pb=12,Ib=0,qu=0,Hu=-1,Ku=0,ss=[],ju=new MessageChannel;ju.port1.onmessage=()=>{ss.length<512&&ss.push(performance.now()-Ku)};Ne.then(()=>{Cn=u.settings.data});Sn=0,Ou=-1,oi=0,is=!1,Lo=-1,ns=0,rs=0;document.addEventListener("pointerlockchange",Uu);window.addEventListener("resize",Uu);ii=null,si=0,$n=-1,Du=-2,ni=!1;window.requestAnimationFrame=Gu});var Tn=we((jx,Ob)=>{Ob.exports="data:image/webp;base64,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"});var ci={};A(ci,{default:()=>Db});var Wu,li,Db,di=w(()=>{"use strict";Wu=ue(Tn(),1),li=class{constructor(){if(!document.querySelector("#mainMenuUIMount"))return;let e=document.createElement("style");e.id="kute_logoBadgeCSS",e.textContent=` #mainLogo { anchor-name: --kute-main-logo; } #gameNameHolder::after { content: ""; @@ -51,9 +51,9 @@ void main() { outColor = texture(uLabel, vUv); }`;Ur=new Float32Array(4096),Mu=0 transform: rotate(-25deg); background: url(${Wu.default}) center / contain no-repeat; pointer-events: none; - }`,document.head.append(e)}},Fb=new ai});var di=we((Ux,Db)=>{Db.exports=`#tlInfHold,#newsHolder,#termsInfo,#bubbleContainer,body .popRail.popRail{display:none!important} -`});var ui=we((Gx,qb)=>{qb.exports=`:root{--kute-classic-menu: 1}#uiBase.onMenu #spectButton{top:calc(48% - 60px)}#instructions{top:50%}#subLogoButtons{right:auto;left:50%;bottom:139px;width:950px;display:grid;grid-template-columns:repeat(6,1fr);gap:10px;transform:translate(-50%) scale(.95);transform-origin:bottom center}#matchInfoHolder{grid-column:1 / -1;position:static;order:-2;box-sizing:border-box;width:100%;flex-wrap:wrap;justify-content:flex-start;row-gap:4px;transform:none;padding:0 0 12px;margin-bottom:10px;font-size:20px;background:none;border:none;border-bottom:5px solid #585858;border-radius:0;box-shadow:none;backdrop-filter:none}#matchInfoHolder>.match-divider:has(+.match-info-actions){flex-basis:100%;height:0;margin:0;border:none;background:none}#matchInfoHolder>.match-info-actions{padding-left:7px}#mapInfo{font-size:20px}#mapInfoHld{padding-left:7px}#subLogoButtons>.actionCard{grid-column:span 2;justify-content:center;box-sizing:border-box;width:auto;height:auto;padding:6px 18px;font-size:27px;text-transform:none;background:#0003;box-shadow:none}#subLogoButtons>.actionCard .cardIcon{display:none}#subLogoButtons>.actionCard .cardLabel{font-size:27px;text-transform:none;letter-spacing:normal}#subLogoButtons>#menuBtnQuickMatch,#subLogoButtons>#menuBtnRanked{grid-column:span 3}#menuBtnHost,#menuBtnBrowser{border-color:#ed4242!important}#subLogoButtons>.popRail{grid-column:1 / -1;order:1;margin-top:10px}#menuClassContainer{left:auto;right:21px;bottom:80px;text-align:right;transform:scale(.7);transform-origin:bottom right}#menuClassContainer:before{display:none}#menuClassFooter{flex-direction:column;align-items:flex-end;margin:0 0 0 auto}#menuClassContainerInner{justify-content:flex-end;width:449px;height:85px;padding:0;gap:0;background:none;border:none}#menuClassContainerInner:hover{background:none;filter:brightness(1.15)}#menuClassContainerInfo{height:85px;justify-content:space-between}#menuClassIcn{width:85px;height:85px;margin-left:10px;border:4px solid #353534;border-radius:4px}#menuClassName{font-size:17px}#menuClassSubtext{font-size:30px;margin-bottom:0}#classPreviewCanvas{margin-bottom:-100px;margin-right:-113px}#customizeButton{box-sizing:border-box;width:449px;padding:15px;font-size:27px!important}#bubbleContainer{right:420px}body #uiBase.onMenu .spectateInfo{top:calc(48% - 150px)} -`});var Vu=we((Wx,Kb)=>{Kb.exports='
'});var jb={};var pi,Yu=w(()=>{"use strict";F();Ae();pi=class{constructor(e,t,o){this.message=e,this.reqUserInput=t,this.duration=o,this.notificationEl=document.createElement("div"),this.notificationEl.id="notification",this.countdown=void 0,this.handlePromise=void 0,t&&(this.promise=new Promise(n=>{this.resolvePromise=n})),this.show()}async createNotificationElement(){let e=await Promise.resolve().then(()=>ue(Vu(),1));this.notificationEl.innerHTML=e.default,U("#notification-content",this.notificationEl).textContent=this.message,U("#notification-timer",this.notificationEl).textContent=String(this.duration),this.reqUserInput&&(U("#notification-actions",this.notificationEl).style.display="block"),document.body.append(this.notificationEl)}startTimer(){this.countdown=setInterval(()=>{this.duration--,U("#notification-timer",this.notificationEl).textContent=String(this.duration),this.duration<=0&&(clearInterval(this.countdown),this.resolvePromise&&this.resolvePromise(!1),this.hide())},1e3)}hide(){clearInterval(this.countdown),this.handlePromise&&document.removeEventListener("keydown",this.handlePromise),this.notificationEl.classList.add("slide-out"),setTimeout(()=>this.notificationEl.remove(),2e3)}show(){this.createNotificationElement(),setTimeout(()=>this.notificationEl.classList.add("slide-in"),10),this.startTimer(),this.reqUserInput&&(this.handlePromise=e=>{if(e.key==="y"||e.key==="n"){let t=e.key==="y";U(`#${e.key}`,this.notificationEl).classList.add("bounce"),this.resolvePromise(t),this.hide()}},document.addEventListener("keydown",this.handlePromise))}};d.showNotification=(s,e,t)=>{let o=new pi(s,e,t);return e?o.promise:o}});var Xu=we((Xx,Ub)=>{Ub.exports='
×

Kute

A high-performance Krunker client with enhanced features - made by [cute]

CREDITS
  • NullDev / NulPing - Main Developer / Maintainer
  • slavcp/glorp - base
  • 6ct/clientpp - flags
  • KraXen72/crankshaft - menu timer css
  • idkr-client/idkr - tweaks
  • bigjakk/Electron-Websocket-Fix - aim-freeze fix
  • bigjakk/Krunker-Civilian-Client - matchmaker, nuke counter
  • PC7 Client and Water Client - ideas
'});var Ju={};async function Gb(){if(document.querySelector("#aboutPopupHost"))return;let[s,e]=await Promise.all([Promise.resolve().then(()=>ue(Xu(),1)),Promise.resolve().then(()=>ue(Mn(),1))]),t=document.createElement("div");t.style=` + }`,document.head.append(e)}},Db=new li});var ui=we((Ux,Fb)=>{Fb.exports=`#tlInfHold,#newsHolder,#termsInfo,#bubbleContainer,body .popRail.popRail{display:none!important} +`});var pi=we((Gx,qb)=>{qb.exports=`:root{--kute-classic-menu: 1}#uiBase.onMenu #spectButton{top:calc(48% - 60px)}#instructions{top:50%}#subLogoButtons{right:auto;left:50%;bottom:139px;width:950px;display:grid;grid-template-columns:repeat(6,1fr);gap:10px;transform:translate(-50%) scale(.95);transform-origin:bottom center}#matchInfoHolder{grid-column:1 / -1;position:static;order:-2;box-sizing:border-box;width:100%;flex-wrap:wrap;justify-content:flex-start;row-gap:4px;transform:none;padding:0 0 12px;margin-bottom:10px;font-size:20px;background:none;border:none;border-bottom:5px solid #585858;border-radius:0;box-shadow:none;backdrop-filter:none}#matchInfoHolder>.match-divider:has(+.match-info-actions){flex-basis:100%;height:0;margin:0;border:none;background:none}#matchInfoHolder>.match-info-actions{padding-left:7px}#mapInfo{font-size:20px}#mapInfoHld{padding-left:7px}#subLogoButtons>.actionCard{grid-column:span 2;justify-content:center;box-sizing:border-box;width:auto;height:auto;padding:6px 18px;font-size:27px;text-transform:none;background:#0003;box-shadow:none}#subLogoButtons>.actionCard .cardIcon{display:none}#subLogoButtons>.actionCard .cardLabel{font-size:27px;text-transform:none;letter-spacing:normal}#subLogoButtons>#menuBtnQuickMatch,#subLogoButtons>#menuBtnRanked{grid-column:span 3}#menuBtnHost,#menuBtnBrowser{border-color:#ed4242!important}#subLogoButtons>.popRail{grid-column:1 / -1;order:1;margin-top:10px}#menuClassContainer{left:auto;right:21px;bottom:80px;text-align:right;transform:scale(.7);transform-origin:bottom right}#menuClassContainer:before{display:none}#menuClassFooter{flex-direction:column;align-items:flex-end;margin:0 0 0 auto}#menuClassContainerInner{justify-content:flex-end;width:449px;height:85px;padding:0;gap:0;background:none;border:none}#menuClassContainerInner:hover{background:none;filter:brightness(1.15)}#menuClassContainerInfo{height:85px;justify-content:space-between}#menuClassIcn{width:85px;height:85px;margin-left:10px;border:4px solid #353534;border-radius:4px}#menuClassName{font-size:17px}#menuClassSubtext{font-size:30px;margin-bottom:0}#classPreviewCanvas{margin-bottom:-100px;margin-right:-113px}#customizeButton{box-sizing:border-box;width:449px;padding:15px;font-size:27px!important}#bubbleContainer{right:420px}body #uiBase.onMenu .spectateInfo{top:calc(48% - 150px)} +`});var Vu=we((Wx,Kb)=>{Kb.exports='
'});var jb={};var hi,Yu=w(()=>{"use strict";D();Ae();hi=class{constructor(e,t,o){this.message=e,this.reqUserInput=t,this.duration=o,this.notificationEl=document.createElement("div"),this.notificationEl.id="notification",this.countdown=void 0,this.handlePromise=void 0,t&&(this.promise=new Promise(n=>{this.resolvePromise=n})),this.show()}async createNotificationElement(){let e=await Promise.resolve().then(()=>ue(Vu(),1));this.notificationEl.innerHTML=e.default,U("#notification-content",this.notificationEl).textContent=this.message,U("#notification-timer",this.notificationEl).textContent=String(this.duration),this.reqUserInput&&(U("#notification-actions",this.notificationEl).style.display="block"),document.body.append(this.notificationEl)}startTimer(){this.countdown=setInterval(()=>{this.duration--,U("#notification-timer",this.notificationEl).textContent=String(this.duration),this.duration<=0&&(clearInterval(this.countdown),this.resolvePromise&&this.resolvePromise(!1),this.hide())},1e3)}hide(){clearInterval(this.countdown),this.handlePromise&&document.removeEventListener("keydown",this.handlePromise),this.notificationEl.classList.add("slide-out"),setTimeout(()=>this.notificationEl.remove(),2e3)}show(){this.createNotificationElement(),setTimeout(()=>this.notificationEl.classList.add("slide-in"),10),this.startTimer(),this.reqUserInput&&(this.handlePromise=e=>{if(e.key==="y"||e.key==="n"){let t=e.key==="y";U(`#${e.key}`,this.notificationEl).classList.add("bounce"),this.resolvePromise(t),this.hide()}},document.addEventListener("keydown",this.handlePromise))}};u.showNotification=(s,e,t)=>{let o=new hi(s,e,t);return e?o.promise:o}});var Xu=we((Xx,Ub)=>{Ub.exports='
×

Kute

A high-performance Krunker client with enhanced features - made by [cute]

CREDITS
  • NullDev / NulPing - Main Developer / Maintainer
  • slavcp/glorp - base
  • 6ct/clientpp - flags
  • KraXen72/crankshaft - menu timer css
  • idkr-client/idkr - tweaks
  • bigjakk/Electron-Websocket-Fix - aim-freeze fix
  • bigjakk/Krunker-Civilian-Client - matchmaker, nuke counter
  • PC7 Client and Water Client - ideas
'});var Ju={};async function Gb(){if(document.querySelector("#aboutPopupHost"))return;let[s,e]=await Promise.all([Promise.resolve().then(()=>ue(Xu(),1)),Promise.resolve().then(()=>ue(Tn(),1))]),t=document.createElement("div");t.style=` position: fixed; top: 0; left: 0; @@ -64,61 +64,61 @@ void main() { outColor = texture(uLabel, vUv); }`;Ur=new Float32Array(4096),Mu=0 display: flex; justify-content: center; align-items: center; - `;let o=document.createElement("div");o.id="aboutPopupHost",t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=s.default;let r=n.querySelector("#aboutLogo");r&&(r.src=e.default);let i=n.querySelector("#aboutVersion");i&&(i.textContent=`Version ${d.version}`);for(let c of n.querySelectorAll("[data-url]"))c.addEventListener("click",()=>window.chrome.webview.postMessage(`open-url, ${c.getAttribute("data-url")}`));let a=new AbortController,l=()=>{a.abort(),t.remove()};n.querySelector("#aboutClose")?.addEventListener("click",l),t.addEventListener("mousedown",c=>{c.target===t&&l()}),document.addEventListener("keydown",c=>{c.key==="Escape"&&l()},{signal:a.signal}),document.body.append(t)}var hi=w(()=>{"use strict";F();d.showAboutPopup=Gb});var gi={};A(gi,{default:()=>Jb});function Zu(){if(!document.getElementById("signedInHeaderBar"))return null;try{return localStorage.getItem("krunker_username")||null}catch{return null}}function mi(){try{return localStorage.getItem(Wb)??""}catch{return""}}var Wb,Vb,Yb,Xb,fi,Jb,bi=w(()=>{"use strict";F();Wb="kro_setngss_endMessage",Vb="slid_endMessage",Yb="playerHeaderEl",Xb=500;fi=class{constructor(){this.account=void 0,this.header=new MutationObserver(()=>this.check()),this.saveTimer=0,this.editedFor=null,this.onInput=e=>{!(e.target instanceof HTMLInputElement)||e.target.id!==Vb||!this.account||(this.editedFor=this.account,clearTimeout(this.saveTimer),this.saveTimer=setTimeout(()=>this.flush(),Xb))},d.settings.toggleAccountEndMessage=e=>this.toggle(e,!0),this.toggle(!!d.settings.data.accountEndMessage,!1)}get messages(){return{...d.settings.data.endMessages}}save(e){d.settings.data.endMessages=e,window.chrome.webview.postMessage(`set-config-json endMessages ${JSON.stringify(e)}`)}remember(e,t){let{messages:o}=this;(o[e]??"")!==t&&(t?o[e]=t:delete o[e],this.save(o))}flush(){clearTimeout(this.saveTimer),this.editedFor&&this.remember(this.editedFor,mi()),this.editedFor=null}check(){let e=Zu();if(e===this.account)return;this.flush(),this.account=e;let t=e?this.messages[e]??"":"";mi()!==t&&window.setSetting("endMessage",t)}toggle(e,t){if(this.header.disconnect(),document.removeEventListener("input",this.onInput,!0),!e){this.flush(),this.account=void 0;return}let o=Zu();if(t&&o){let r=mi();this.remember(o,r),d.showNotification(r?`Kept "${r}" for ${o}. Other accounts send nothing until you give them one`:`End messages are now per account, ${o} has none`,!1,6)}document.addEventListener("input",this.onInput,!0);let n=document.getElementById(Yb);n?this.header.observe(n,{childList:!0}):console.error("[kute] end message: no account header"),this.check()}},Jb=new fi});var Qu=we((Qx,Zb)=>{Zb.exports='

'});var ep={};A(ep,{confirmPopup:()=>Ce});async function Ce(s){let e=await Promise.resolve().then(()=>ue(Qu(),1)),t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default;let r=i=>n.querySelector(`#${i}`);r("confirmTitle").textContent=s.title;for(let i of s.paragraphs){let a=document.createElement("p");a.textContent=i,r("confirmText").append(a)}return r("confirmStay").textContent=s.stay,r("confirmLeave").textContent=s.leave,new Promise(i=>{let a=new AbortController,l=c=>{a.abort(),t.remove(),i(c)};r("confirmStay").onclick=()=>l(!1),r("confirmLeave").onclick=()=>l(!0),t.addEventListener("mousedown",c=>{c.target===t&&l(!1)}),document.addEventListener("keydown",c=>{c.key==="Escape"&&l(!1)},{signal:a.signal}),document.body.append(t)})}var Rt=w(()=>{"use strict"});var op,tp=w(()=>{op='

Hotkeys

Click a key, then press the new one. Escape cancels.
Ctrl, Alt and Shift combinations work too.

Lobby and window

Toggles and windows

Quick account login

Reset to defaults
Done
'});var xi={};A(xi,{bindings:()=>ft,default:()=>pv,matches:()=>as});function sv(){if(d.settings.data.chatLogs===!1||!d.chatLogs){d.showNotification("Chat Logs is off in the settings",!1,3);return}d.chatLogs.toggle()}function nv(s){if(d.settings.data.accountManager===!1||!d.accounts){d.showNotification("Account Manager is off in the settings",!1,3);return}d.accounts.loginSlot(s)}function wi(){return!!d.hostFeatures?.includes(ev)}function ft(){let s=wi()&&d.settings.data.hotkeys||{};return Object.fromEntries(Tn.map(e=>[e.id,s[e.id]??(e.id in s?null:e.fallback)]))}function sp(s,e){return!!e&&s.keyCode===e?.key&&s.ctrlKey===e.ctrl&&s.altKey===e.alt&&s.shiftKey===e.shift}function as(s,e){return sp(s,ft()[e]??null)}function iv(s){let e=(t,o)=>{try{let n=window.localStorage.getItem(t);return n===null?o:Number(n)}catch{return o}};return rv.filter(([t,,o,n])=>e(`cont_${t}`,o)===s||e(`cont_${t}_alt`,n)===s).map(([,t])=>t)}function lv(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`Num ${s-96}`:s>=112&&s<=135?`F${s-111}`:av[s]??`Key ${s}`}function cv(s){let{code:e}=s,t=e;return/^Key[A-Z]$/.test(e)?t=e.slice(3):/^Digit\d$/.test(e)?t=e.slice(5):e.startsWith("Numpad")?t=`Num ${e.slice(6)}`:e.startsWith("Arrow")?t=e.slice(5):e||(t=lv(s.keyCode)),[s.ctrlKey&&"Ctrl",s.altKey&&"Alt",s.shiftKey&&"Shift",t].filter(Boolean).join("+")}function dv(s,e,t){let o=[],n=Tn.filter(i=>{let a=t[i.id];return i.id!==s.id&&a!==null&&a.key===e.key&&a.ctrl===e.ctrl&&a.alt===e.alt&&a.shift===e.shift});n.length>0&&o.push(`Also bound to Kute's ${n.map(i=>i.label).join(", ")}, pick another key.`);let r=iv(e.key);if(r.length>0){let i=r.length>3?` and ${r.length-3} more`:"";o.push(`Krunker uses this key for ${r.slice(0,3).join(", ")}${i}, the game still gets it.`)}return o}function uv(){let s=document.activeElement;for(;s?.shadowRoot?.activeElement;)s=s.shadowRoot.activeElement;return s instanceof HTMLInputElement||s instanceof HTMLTextAreaElement||s instanceof HTMLElement&&s.isContentEditable}var ev,tv,ov,Ro,vi,Tn,rv,av,ki,yi,pv,Po=w(()=>{"use strict";tp();F();Co();ev="hotkeys",tv=131,ov=new Set(["Shift","Control","Alt","Meta","AltGraph"]);Ro=(s,e)=>({key:s,ctrl:!1,alt:!1,shift:!1,name:e}),vi=s=>({id:`account${s}`,label:`Account ${s}`,note:`logs in account ${s} of the Accounts list`,group:"account",fallback:{key:48+s,ctrl:!0,alt:!0,shift:!1,name:`Ctrl+Alt+${s}`},run:()=>nv(s-1)}),Tn=[{id:"newLobby",label:"New lobby",group:"window",fallback:Ro(115,"F4")},{id:"matchmaker",label:"Matchmaker",note:"new lobby while the Matchmaker setting is off",group:"window",fallback:Ro(117,"F6")},{id:"reload",label:"Reload",group:"window",fallback:Ro(116,"F5")},{id:"fullscreen",label:"Fullscreen",group:"window",fallback:Ro(122,"F11")},{id:"devtools",label:"Developer tools",group:"window",fallback:Ro(123,"F12")},{id:"toggleSpotify",label:"Spotify overlay",note:"on and off",group:"toggle",fallback:null,setting:"spotifyOverlay"},{id:"toggleKeystrokes",label:"Keystrokes",note:"on and off",group:"toggle",fallback:null,setting:"keystrokes"},{id:"chatLogs",label:"Chat logs",note:"open and close",group:"toggle",fallback:Ro(112,"F1"),run:sv},vi(1),vi(2),vi(3)],rv=[["0","Forward",87,-1],["1","Back",83,-1],["2","Left",65,-1],["3","Right",68,-1],["jumpKey","Jump",32,-1],["crouchKey","Crouch",16,-1],["reloadKey","Reload",82,-1],["swapKey","Swap weapon",69,-1],["primKey","Primary weapon",84,-1],["meleeKey","Melee",81,-1],["equipKey","Equip",67,-1],["dropKey","Drop",90,-1],["inspKey","Inspect",88,-1],["wepVisKey","Hide weapon",-1,-1],["sprayKey","Spray",70,-1],["sprayWheelKey","Spray wheel",70,-1],["interactKey","Interact",71,-1],["interactSecKey","Second interact",72,-1],["confirmKey","Confirm",75,-1],["resetKey","Reset",66,-1],["resetLastKey","Reset to last",78,-1],["markPositionKey","Mark position",10002,-1],["chatKey","Chat",13,-1],["voiceKey","Voice chat",86,-1],["pListKey","Player list",18,-1],["sBoardKey","Scoreboard",9,-1],["hidePlayersKey","Hide players",-1,-1],["kickVoteYKey","Kick vote yes",49,-1],["kickVoteNKey","Kick vote no",50,-1],["kpdVoteYKey","Vote yes",89,-1],["kpdVoteNKey","Vote no",78,-1],["kpdVisionKey","Vision",187,-1],["specFreeKey","Spectate free camera",70,-1],["specObjKey","Spectate objective",72,-1],["specFirstKey","Spectate first person",82,-1],["specNamesKey","Spectate names",77,-1],["specMiniMap","Spectate minimap",189,-1],["specFocusKey","Spectate focus",190,-1],["propKey","Prop",80,-1],["propRandKey","Random prop",77,-1],["propRotKey","Rotate prop",82,-1],["propRotRKey","Rotate prop back",78,-1],["18","Streak 1",49,-1],["19","Streak 2",50,-1],["20","Streak 3",51,-1],...[0,1,2,3,4,5].map(s=>[`taunt${s}`,`Taunt ${s+1}`,49+s,-1]),...["27","28","29","30","31","32"].map((s,e)=>[s,`Toggle ${e+1}`,-1,-1]),...["43","44","45","46","47","48"].map((s,e)=>[s,`Chat message ${e+1}`,-1,-1])];av={8:"Backspace",9:"Tab",13:"Enter",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",45:"Insert",46:"Delete"};ki=class{constructor(e){this.owner=e,this.waiting=null,this.overlay=document.createElement("div"),this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");this.overlay.append(t),this.shadow=t.attachShadow({mode:"open"}),this.shadow.innerHTML=op,document.body.append(this.overlay),this.onKey=this.onKey.bind(this),window.addEventListener("keydown",this.onKey,!0),this.overlay.addEventListener("click",o=>{o.target===this.overlay&&this.close()}),this.element("hkDone").onclick=()=>this.close(),this.element("hkReset").onclick=()=>{this.owner.save({}),this.stopWaiting(),this.render()},this.render()}element(e){return this.shadow.querySelector(`#${e}`)}startWaiting(e){this.stopWaiting(),this.waiting=e,this.owner.capturing=!0,window.chrome.webview.postMessage("hotkeys-pause, true"),this.render()}stopWaiting(){this.waiting!==null&&(this.waiting=null,this.owner.capturing=!1,window.chrome.webview.postMessage("hotkeys-pause, false"),this.render())}assign(e,t){this.owner.save({...ft(),[e]:t}),this.stopWaiting(),this.render()}row(e,t){let o=t[e.id],n=document.createElement("div");n.className="hkRow";let r=document.createElement("div");if(r.className="hkLabel",r.textContent=e.label,e.note){let p=document.createElement("span");p.className="hkNote",p.textContent=e.note,r.append(p)}let i=this.waiting===e.id,a=document.createElement("div");a.className=`hkKey${i?" hkWaiting":""}${o?"":" hkNone"}`,a.textContent=i?"Press a key":o?.name??"No key",a.title="Click, then press the new key. Escape cancels",a.onclick=()=>this.startWaiting(e.id);let l=document.createElement("div");l.className="hkClear",l.textContent="Clear",l.style.visibility=o?"":"hidden",l.onclick=()=>this.assign(e.id,null),n.append(r,a,l);let c=o?dv(e,o,t):[];if(c.length===0)return n;let u=document.createElement("div");u.className="hkWarn",u.textContent=c.join(" ");let h=document.createElement("div");return h.append(n,u),h}render(){let e=ft();for(let t of["window","toggle","account"]){let o=Tn.filter(n=>n.group===t).map(n=>this.row(n,e));this.element(`hkGroup-${t}`).replaceChildren(...o)}}onKey(e){if(this.waiting===null){e.key==="Escape"&&this.close();return}if(e.preventDefault(),e.stopImmediatePropagation(),e.key==="Escape"){this.stopWaiting();return}ov.has(e.key)||e.keyCode===tv||e.keyCode===0||this.assign(this.waiting,{key:e.keyCode,ctrl:e.ctrlKey,alt:e.altKey,shift:e.shiftKey,name:cv(e)})}close(){this.stopWaiting(),window.removeEventListener("keydown",this.onKey,!0),this.overlay.remove()}},yi=class{constructor(){this.capturing=!1,d.hotkeys={edit:()=>this.edit()},window.addEventListener("keydown",e=>this.onKey(e),!0)}onKey(e){if(this.capturing||e.repeat||uv()||!wi())return;let t=ft();for(let o of Tn)o.group==="window"||!sp(e,t[o.id])||(o.run?o.run():o.setting&&this.flip(o.setting,o.label))}flip(e,t){if($o(d.settings.data,e)){d.showNotification(`${t} is off in performance mode`,!1,3);return}let o=!d.settings.data[e];d.settings.changeSetting(e,o,!1),d.showNotification(`${t} ${o?"on":"off"}`,!1,2)}save(e){d.settings.data.hotkeys=e,window.chrome.webview.postMessage(`set-config-json hotkeys ${JSON.stringify(e)}`)}edit(){if(!wi()){d.showNotification("Hotkeys need a newer Kute",!1,3);return}new ki(this)}},pv=new yi});var np=we((nS,hv)=>{hv.exports='
×

Accounts

Click an account to log in, drag ≡ to reorder
Add account
'});var $i={};A($i,{default:()=>xv});function Pt(s){let e=decodeURIComponent(s),t=e.length;return e.split("").map(o=>String.fromCharCode(o.charCodeAt(0)-t)).join("")}function ap(s){let e=s.length,t=s.split("").map(o=>String.fromCharCode(o.charCodeAt(0)+e)).join("");return encodeURIComponent(t)}function ls(){try{let s=JSON.parse(localStorage.getItem(cs)||"[]");return Array.isArray(s)?s:[]}catch{return[]}}function kv(s){return typeof s=="string"&&/^#[\da-f]{6}$/i.test(s)?s:mv}function yv(s){let e=Number.parseInt(s.slice(1),16),t=e>>16&255,o=e>>8&255,n=e&255;return t*.299+o*.587+n*.114>150?"#111":"#fff"}function lp(s,e,t){let o=kv(e);s.style.background=o,s.style.color=yv(o),s.textContent=t.trim().slice(0,1)||"?"}var cs,mv,Si,fv,rp,gv,bv,vv,wv,ip,Ei,xv,Ci=w(()=>{"use strict";F();Ae();Rt();wn();Po();cs="accounts",mv="#35e0e8",Si="kute_account_switch",fv=12e4,rp=3e4,gv=3e3,bv=2e4,vv=3e3,wv=5e3,ip=s=>new Promise(e=>{setTimeout(e,s)});Ei=class{constructor(){this.button=document.createElement("div"),this.button.textContent="Accounts",this.button.classList.add("button","buttonB","bigShadowT"),this.button.style.cssText="display: block; padding-top: 7px; padding-bottom: 22px; font-size: 25px!important; padding-bottom: 22px; margin-top: 7px; height: 21px; line-height: 35px; width: 162px; font-size:20px!important; margin-left: 3px;",this.headerSeparator=document.createElement("div"),this.headerSeparator.style.cssText="width: 4px; height: 35px; margin: 0 6px; background: rgba(255, 255, 255, 0.12); flex-shrink: 0;",this.headerItem=document.createElement("div"),this.headerItem.style.cssText="display: flex; align-items: center; gap: 8px; padding: 8px 12px; cursor: pointer; color: #fff; font-weight: 700; font-size: 16px; white-space: nowrap;",this.headerItem.innerHTML='switch_accountAccounts',this.headerObserver=new MutationObserver(()=>this.placeButton()),this.overlay=null,this.shadow=null,this.menuController=null,this.asking=!1,this.accounts=[],this.legacy=!1,this.lastQuickLogin=0,this.suppressClick=!1,d.settings.toggleAccountManager=e=>this.toggle(e),d.accounts={loginSlot:e=>this.loginSlot(e)},this.toggle(!0),this.load()}async load(){let e=ls(),t=null;if(e.length>0){let o=e.filter(n=>typeof n?.username=="string"&&typeof n?.password=="string").map(n=>({username:Pt(n.username),password:Pt(n.password),color:n.color}));t=await Te(`accounts-migrate ${JSON.stringify(o)}`,"accounts",5e3),t!==null&&localStorage.removeItem(cs)}else t=await Te("accounts-list","accounts");t===null?(this.legacy=!0,this.accounts=e.map(o=>({username:Pt(o.username),color:o.color}))):this.accounts=t,this.renderAccounts(),this.resumeSwitch()}resumeSwitch(){let e=sessionStorage.getItem(Si);if(e===null)return;sessionStorage.removeItem(Si);let t={};try{t=JSON.parse(e)??{}}catch{return}if(Date.now()-Number(t.at)>fv||localStorage.getItem("krunker_token")!==null)return;let o=this.accounts.find(n=>n.username===t.username);o&&this.login(o)}async send(e,t){let o=await Te(`accounts-${e} ${JSON.stringify(t)}`,"accounts");o!==null&&(this.accounts=o,this.renderAccounts())}gameUpdateListener=e=>{e.data==="game-updated"&&setTimeout(()=>{He()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.button.style.cssText="display: block; padding: 14px 24px 22px; bottom: 0; right: 0; z-index: 9; font-size: 21px !important; position: absolute;",U("#compBtnLst").append(this.button))},2e3)};toggle(e){if(e)if(window.chrome.webview.addEventListener("message",this.gameUpdateListener),this.button.addEventListener("click",this.openMenu),this.headerItem.addEventListener("click",this.openMenu),He())window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.button.style.cssText="display: block; padding: 14px 24px 22px; bottom: 0; right: 0; z-index: 9; font-size: 21px !important; position: absolute;",U("#compBtnLst").append(this.button);else{this.placeButton();let t=document.querySelector("#playerHeaderEl");t&&this.headerObserver.observe(t,{childList:!0,subtree:!0})}else window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.headerObserver.disconnect(),this.button.removeEventListener("click",this.openMenu),this.headerItem.removeEventListener("click",this.openMenu),this.button.remove(),this.headerSeparator.remove(),this.headerItem.remove(),this.closeMenu()}placeButton(){let e=document.querySelector("#playerHeaderEl .headerBarRight");if(e){if(e.firstElementChild!==this.headerItem){let n=[...e.querySelector(".nav-item")?.classList??[]].find(r=>r.startsWith("svelte-"))??"";this.headerItem.style.cssText="",this.headerItem.className=`nav-item ${n}`,this.headerItem.innerHTML=`switch_account Accounts`,this.headerSeparator.className="verticalSeparator",this.headerSeparator.style.cssText="height: 35px;",e.prepend(this.headerItem,this.headerSeparator)}this.button.remove();return}let t=document.querySelector("#signedInHeaderBar");if(t){t.contains(this.headerItem)||t.append(this.headerSeparator,this.headerItem);return}let o=document.querySelector("#signedOutHeaderBar");o&&!o.contains(this.button)&&o.append(this.button)}openMenu=()=>{this.overlay||this.buildMenu().catch(e=>console.error("[kute] accounts:",e))};async buildMenu(){let e=await Promise.resolve().then(()=>ue(np(),1));if(this.overlay)return;let t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default,this.overlay=t,this.shadow=n;let r=new AbortController;this.menuController=r,U("#accClose",n).onclick=()=>this.closeMenu(),U("#accAdd",n).onclick=()=>this.showForm(!0),U("#accCancel",n).onclick=()=>this.showForm(!1),U("#accSave",n).onclick=()=>this.saveAccount(),U("#accFormHint",n).textContent=this.legacy?"Saved on this PC only":"Saved encrypted on this PC, never sent anywhere";let i=ke("#accUsername",n),a=ke("#accColor",n);i.oninput=()=>this.updatePreview(),a.oninput=()=>this.updatePreview();for(let l of[i,ke("#accPassword",n)])l.onkeydown=c=>{c.key==="Enter"&&this.saveAccount()};for(let l of["keydown","keyup","keypress"])n.addEventListener(l,c=>c.stopPropagation());t.addEventListener("mousedown",l=>{l.target===t&&this.closeMenu()}),document.addEventListener("keydown",l=>{l.key!=="Escape"||this.asking||(l.stopPropagation(),U("#accFormView",n).hidden?this.closeMenu():this.showForm(!1))},{signal:r.signal,capture:!0}),this.renderAccounts(),this.resetForm(),document.body.append(t)}closeMenu(){this.menuController?.abort(),this.menuController=null,this.overlay?.remove(),this.overlay=null,this.shadow=null}showForm(e){this.shadow&&(U("#accListView",this.shadow).hidden=e,U("#accFormView",this.shadow).hidden=!e,e&&(this.resetForm(),ke("#accUsername",this.shadow).focus()))}renderAccounts(){let{shadow:e}=this;if(!e)return;let t=U("#accList",e);t.textContent="";for(let n of this.accounts){let r=document.createElement("div");r.className="accRow",r.dataset.username=n.username,r.title=`Log in as ${n.username}`,r.onclick=()=>{this.suppressClick||this.login(n)};let i=document.createElement("div");i.className="accHandle",i.textContent="\u2261",i.title="Drag to reorder",i.onclick=p=>p.stopPropagation(),i.onpointerdown=p=>this.startDrag(p,r);let a=document.createElement("div");a.className="accIndex";let l=document.createElement("div");l.className="accAvatar",lp(l,n.color,n.username);let c=document.createElement("div");c.className="accName",c.textContent=n.username;let u=document.createElement("div");u.className="accRemove",u.textContent="\xD7",u.title="Remove",u.onclick=p=>{p.stopPropagation(),this.removeAccount(n).catch(f=>console.error("[kute] accounts:",f))};let h=document.createElement("div");h.className="accKey",r.append(i,a,l,c,h,u),t.append(r)}this.renumber(t);let o=this.accounts.length===0;U("#accEmpty",e).hidden=!o,U("#accListHint",e).hidden=o}renumber(e){let t=ft();[...e.children].forEach((o,n)=>{U(".accIndex",o).textContent=String(n+1),U(".accKey",o).textContent=t[`account${n+1}`]?.name??""})}canReorder(){return this.legacy||!!d.hostFeatures?.includes("accounts-order")}startDrag(e,t){if(e.button!==0)return;if(e.preventDefault(),!this.canReorder()){d.showNotification("Reordering accounts needs a newer Kute",!1,3);return}let o=t.parentElement,n=[...o.children].map(a=>a.dataset.username);t.classList.add("accDragging");let r=a=>{let l=[...o.children].filter(p=>p!==t),c=l.find(p=>{let f=p.getBoundingClientRect();return a.clientY!!(t.compareDocumentPosition(p)&Node.DOCUMENT_POSITION_PRECEDING)).length;if(u!==h){for(let p of l.slice(0,u))o.insertBefore(p,t);for(let p of l.slice(u))o.append(p);this.renumber(o)}},i=()=>{window.removeEventListener("pointermove",r,!0),window.removeEventListener("pointerup",i,!0),window.removeEventListener("pointercancel",i,!0),t.classList.remove("accDragging"),this.suppressClick=!0,setTimeout(()=>{this.suppressClick=!1});let a=[...o.children].map(l=>l.dataset.username??"");a.some((l,c)=>l!==n[c])&&this.saveOrder(a)};window.addEventListener("pointermove",r,!0),window.addEventListener("pointerup",i,!0),window.addEventListener("pointercancel",i,!0)}saveOrder(e){let t=o=>{let n=e.indexOf(o);return n===-1?e.length:n};if(this.accounts.sort((o,n)=>t(o.username)-t(n.username)),this.legacy){let o=ls().sort((n,r)=>t(Pt(n.username))-t(Pt(r.username)));localStorage.setItem(cs,JSON.stringify(o));return}this.send("order",e)}loginSlot(e){let t=this.accounts[e];if(!t){d.showNotification(`No account saved in slot ${e+1}`,!1,3);return}if(localStorage.getItem("krunker_token")!==null&&localStorage.getItem("krunker_username")===t.username){d.showNotification(`Already logged in as ${t.username}`,!1,2);return}Date.now()-this.lastQuickLoginconsole.error("[kute] accounts:",o)))}updatePreview(){if(!this.shadow)return;let e=ke("#accUsername",this.shadow).value,t=ke("#accColor",this.shadow).value;lp(U("#accPreviewAvatar",this.shadow),t,e),U("#accPreviewName",this.shadow).textContent=e.trim()||"Username"}resetForm(){this.shadow&&(ke("#accColor",this.shadow).value=`#${Math.floor(Math.random()*16777215).toString(16).padStart(6,"0")}`,ke("#accUsername",this.shadow).value="",ke("#accPassword",this.shadow).value="",U("#accError",this.shadow).textContent="",this.updatePreview())}saveAccount(){if(!this.shadow)return;let e=ke("#accUsername",this.shadow).value.trim(),t=ke("#accPassword",this.shadow).value,o=ke("#accColor",this.shadow).value,n=U("#accError",this.shadow);if(e===""){n.textContent="Enter a username";return}if(t===""){n.textContent="Enter a password";return}if(this.accounts.some(r=>r.username===e)){n.textContent=`${e} is already saved`;return}if(this.legacy){let r=ls();r.push({username:ap(e),password:ap(t),color:o}),localStorage.setItem(cs,JSON.stringify(r)),this.accounts.push({username:e,color:o}),this.renderAccounts()}else this.send("add",{username:e,password:t,color:o});this.showForm(!1)}async removeAccount(e){this.asking=!0;let t=await Ce({title:"Remove account",paragraphs:[`${e.username} gets removed from this list.`,"The Krunker account itself is not touched."],stay:"Keep",leave:"Remove"});if(this.asking=!1,!t)return;let o=this.accounts.findIndex(n=>n.username===e.username);o!==-1&&(this.legacy?(localStorage.setItem(cs,JSON.stringify(ls().filter(n=>Pt(n.username)!==e.username))),this.accounts.splice(o,1),this.renderAccounts()):this.send("remove",{username:e.username}))}async login(e){this.closeMenu();let t=window.FRVR?.auth,o=localStorage.getItem("krunker_token")!==null;if(typeof t?.loginAsAnonymous!="function"||typeof t.isLoggedIn!="function"){if(o){sessionStorage.setItem(Si,JSON.stringify({username:e.username,at:Date.now()})),window.logoutAcc(),Ao();return}}else{if(o){vn(rp),window.logoutAcc();for(let n=0;nconsole.error("[kute] accounts:",n))}window.loginOrRegister(),queueMicrotask(()=>{let n=U(".auth-toggle-btn");n.textContent?.includes("username")&&n.click(),queueMicrotask(()=>{if(this.legacy){this.legacyLogin(e.username);return}this.send("login",{username:e.username})})})}async finishSwitch(e){let t=0;for(let o=0;o=vv)){vn(rp),Ao();return}}}legacyLogin(e){let t=ls().find(r=>Pt(r.username)===e);if(!t)return;let o=ke("#accName"),n=ke("#accPass");o.value=e,n.value=Pt(t.password),o.dispatchEvent(new Event("input",{bubbles:!0})),n.dispatchEvent(new Event("input",{bubbles:!0})),U(".io-button").click()}},xv=new Ei});var dp={};A(dp,{default:()=>he});var Sv,Ev,$v,Mi,cp,he,It=w(()=>{"use strict";F();Sv=4e3,Ev=5e3,$v=3,Mi=class{constructor(){this.base=typeof d.apiBase=="string"?d.apiBase:"https://kute.lol/api",this.health=null,this.down=!1,this.failures=0,this.listeners=new Set,d.settings.toggleDisableOnlineFeatures=e=>this.setOffline(e)}offline(){return d.settings?.data?.disableOnlineFeatures===!0}setOffline(e){this.health=e?Promise.resolve(!1):null,this.down=e,this.failures=0;for(let t of this.listeners)t(!e)}available(){return this.health??=this.check(),this.health}retry(){return this.health=null,this.down=!1,this.failures=0,this.available()}async check(){if(await Ne,this.offline())return this.down=!0,!1;try{let e=await fetch(`${this.base}/health`,{cache:"no-store",signal:AbortSignal.timeout(Sv)}),t=e.ok?await e.json():null;this.down=t?.ok!==!0}catch{this.down=!0}return!this.down}async request(e,t={}){let{data:o}=await this.requestStatus(e,t);return o}async requestStatus(e,t={}){if(!await this.available()||this.down||this.offline())return{status:0,data:null};try{let o=AbortSignal.timeout(Ev),n=t.signal?AbortSignal.any([t.signal,o]):o,r=await fetch(this.base+e,{...t,signal:n});r.status>=500?this.failed():r.ok&&(this.failures=0);let i=await r.json().catch(()=>null),a=r.headers.get("Retry-After"),l=0;a!==null&&(l=/^\d+(\.\d+)?$/.test(a)?Date.now()+Number(a)*1e3:Date.parse(a));let c=Number(r.headers.get("X-RateLimit-Reset"))*1e3,u=Math.max(l||0,c||0,Number(i?.resetAt)||0),h=r.status===429?Math.max(Date.now()+1e3,u||Date.now()+6e4):void 0;return{status:r.status,data:r.ok?i:null,error:r.ok?null:i,retryAt:h}}catch{return t.signal?.aborted||this.failed(),{status:0,data:null}}}failed(){this.failures++,this.failures>=$v&&(this.down=!0)}},cp=new Mi;d.api=cp;he=cp});var hp={};var pp,Cv,Mv,up,Ti=w(()=>{"use strict";F();Ae();pp=async s=>{window.openHostWindow(!1,1),await $e(".hostTb0");let e=document.querySelector(`#${s.mapId}`);if(!e){let c=document.querySelectorAll(".hostMap .hostMapName"),u=Array.from(c).find(h=>h.innerText.trim().toLowerCase()===s.mapId.toLowerCase());u&&(e=u.parentElement?.querySelector('input[type="checkbox"]')??null)}if(!e)return;e.checked||e.click(),windows[7].switchTab(2);let t=await $e("#customSnameTeam1");t.value=s.team1Name;let o=await $e("#customSnameTeam2");o.value=s.team2Name;let n=await $e("#customStmSize"),r={"1v1":"0","2v2":"1","3v3":"2","4v4":"3"};if(s.team1Players){let c=await $e("#compRosterT1");c.value=s.team1Players}if(s.team2Players){let c=await $e("#compRosterT2");c.value=s.team2Players}if(s.spectators){let c=await $e("#compRosterSpecs");c.value=s.spectators}let i=await $e("#customSspecSlots");i.value="4";let a=["ak","sniper","smg","lmg","shotgun","rev","semi","rpg","uzi","runner","deagler","crossbow","famas","blaster","survivor","infiltrator"];if(s.classes){let c=JSON.parse(s.classes);for(let[u,h]of Object.entries(c)){let p=a.indexOf(u),f=await $e(`#customSclassLim${p}`);f.value=String(h)}}let l=r[s.teamSize]||s.teamSize;if(n.value=l,s.webhook)try{let c=await $e("#customSwebhook");c.value=decodeURIComponent(s.webhook)}catch{}window.createPrivateRoom()},Cv=async s=>{let e={FRA:"de-fra",SV:"us-ca-sv",SYD:"au-syd",TOK:"jb-hnd",SIN:"sgp",NY:"us-nj",MUM:"as-mb",DAL:"us-tx",BR:"brz",ME:"me-bhn"},t=e[s.toUpperCase()]||s;window.showWindow(1);let o=document.querySelector("select.inputGrey2");if(!o){typeof window.setSetting=="function"&&window.setSetting("defaultRegion",t);return}let n=Object.values(e),r=Array.from(document.querySelectorAll("select.inputGrey2")).find(i=>Array.from(i.options).some(a=>n.includes(a.value)))||o;if(r&&r.value!==t){let i=Array.from(r.options).findIndex(a=>a.value===t);i!==-1&&(r.selectedIndex=i,r.dispatchEvent(new Event("change",{bubbles:!0,cancelable:!0})))}window.showWindow(1)},Mv=s=>{let e=s.includes("?")?s.split("?")[1]:s;return Object.fromEntries(new URLSearchParams(e).entries())},up=sessionStorage.getItem("pendingCompHost");if(up){sessionStorage.removeItem("pendingCompHost");let s=JSON.parse(up);pp(s)}d.parseArgs=async s=>{let e=s.split(" ");for(let t of e)if(t.includes("action=host-comp")){let o=Mv(t);o.region?(sessionStorage.setItem("pendingCompHost",JSON.stringify(o)),await Cv(o.region),window.location.href="https://krunker.io/"):await pp(o)}};window.chrome.webview.addEventListener("message",async s=>{s.data?.args&&await d.parseArgs(s.data.args)})});var fp={};A(fp,{CLOCK_MS:()=>Tv,EXPERIENCE:()=>ds,IMPORTANT_SHARE:()=>us,TARGET_REFRESH_MULTIPLE:()=>bt,accept:()=>vs,atLimit:()=>_o,capCandidates:()=>Bi,choose:()=>ms,chooseCap:()=>Ni,collapses:()=>gs,compare:()=>Ri,experienceHolds:()=>Av,flooding:()=>bs,guard:()=>so,headroom:()=>_i,refineCaps:()=>zi,screen:()=>Pi,stalled:()=>fs,steady:()=>no,steadyLimit:()=>Ii,steadyRungs:()=>An,summarize:()=>ye,unsteady:()=>gt,wins:()=>No});function Li(s){let e=[...s].sort((o,n)=>o-n),t=Math.floor(e.length/2);return e.length%2===1?e[t]:(e[t-1]+e[t])/2}function ye(s){let e=s.filter(o=>!o.invalid),t={};for(let o of Io){let r=e.map(c=>c[o]).filter(c=>typeof c=="number"&&Number.isFinite(c)),i=[Math.min(...r),Math.max(...r)],[a,l]=ps.has(o)?i:i.reverse();t[o]={n:r.length,median:r.length>0?Li(r):null,spread:r.length>1?Math.abs(l-a):null,worst:r.length>0?a:null,best:r.length>0?l:null}}return t}function hs(s){return s==="fps"?0:2*.1}function Ri(s,e,t){let o=e[s],n=t[s];if(o.median===null||n.median===null||o.spread===null||n.spread===null)return"unknown";let r=ps.has(s)?o.median-n.median:n.median-o.median,i=Math.max(o.spread,n.spread,hs(s)),a=Math.max(Math.abs(o.median),Math.abs(n.median))*.1;return Math.abs(r)<=i||Math.abs(r)0?"better":"worse"}function so(s,e,t,o=hs(s)){let n=e[s],r=t[s];if(n.n<2||typeof n.worst!="number"||r.median===null||r.spread===null)return"unknown";let i=ps.has(s)?r.median-n.worst:n.worst-r.median,a=Math.max(Math.abs(n.worst),Math.abs(r.median))*.1;return i>Math.max(r.spread,o)&&i>=a?"worse":"ok"}function No(s,e,t){let o=e[s],n=t[s];if(o.n<2||n.n<2||typeof o.worst!="number"||typeof n.best!="number")return!1;let r=ps.has(s)?o.worst-n.best:n.best-o.worst;return r>hs(s)&&r>=Math.max(Math.abs(o.worst),Math.abs(n.best))*.1}function Pi(s,e){if(s.invalid)return"same";let t=!1;for(let o of Io){let n=s[o],r=e[o];if(typeof n!="number"||r.median===null||r.spread===null)continue;let i=ps.has(o)?n-r.median:r.median-n,a=Math.max(Math.abs(n),Math.abs(r.median))*.1;if(!(Math.abs(i)<=Math.max(r.spread,hs(o))||Math.abs(i)0&&(t=!0)}}return t?"contender":"same"}function ms(s,e,t={}){let o=ye(s.readings),n=e.map(c=>{let u=ye(c.readings),h={};for(let m of Io)h[m]=Ri(m,u,o);let p=ds.some(m=>so(m,u,o)==="worse"),f=ds.find(m=>No(m,u,o))??null;return f===null&&t.fpsCounts!==!1&&No("fps",u,o)&&(f="fps"),{id:c.id,summary:u,verdicts:h,rejected:p,decidedBy:f}}),r=n.length>0&&n.every(c=>Io.every(u=>c.verdicts[u]==="unknown")),i=c=>c.decidedBy===null?Io.length:Io.indexOf(c.decidedBy),l=n.filter(c=>!c.rejected&&c.decidedBy!==null).sort((c,u)=>i(c)-i(u))[0]??null;return{winner:l?.id??s.id,changed:l!==null,inconclusive:r,decidedBy:l?.decidedBy??null,incumbent:o,judged:n}}function fs(s){return!s.invalid&&typeof s.stallMs=="number"&&s.stallMs>1e3*.1}function gt(s,e){return s.some(t=>fs(t)||!t.invalid&&e>0&&typeof t.fps=="number"&&t.fps!t.invalid).length>=2&&!gt(s,e)}function gs(s){return[...s.values()].some(e=>e.filter(fs).length>=2)}function An(s){return Array.from({length:4},(e,t)=>(t+1)*s)}function Ii(s,e){let t=null,o=null;for(let n of An(s)){if(!no(e.get(n)??[],n))break;t=o??n,o=n}return{cap:t,steadyUpTo:o}}function bs(s){let{presentMs:e,p50:t}=s;return typeof e!="number"||typeof t!="number"?!1:e-t>Math.max(2*.1,e*.1)}function _o(s){let e=s.p50,t=r=>typeof r=="number"&&typeof e=="number"?Math.max(0,r-e):null,o=bs(s)?s.presentMs-e:0,n=typeof s.inputP99=="number"?s.inputP99+o:s.inputP99;return{...s,fps:null,p99:t(s.p99),maxMs:t(s.maxMs),inputP99:n}}function mp(s){return s==="p99"||s==="maxMs"?4*.1:hs(s)}function Ni(s,e,t={}){let o=p=>ye((s.get(p)??[]).map(_o)),n=p=>{let f=(s.get(p)??[]).filter(m=>!m.invalid).map(m=>m.p50).filter(m=>typeof m=="number");return f.length>0?Li(f):null},r=o(e),i=n(e),a=new Map,l=[...s.keys()].map(p=>{let f=o(p),m=n(p);if(p===e)return{cap:p,summary:f,frameMs:m,netMs:null,outcome:"yours"};if(gt(s.get(p)??[],p))return{cap:p,summary:f,frameMs:m,netMs:null,outcome:"not steady"};let g=Object.fromEntries(Ai.map(H=>[H,Ri(H,f,r)])),b=e===0||p>0&&pNo(H,f,r)?(r[H].median??0)-(f[H].median??0):0,E=k("taskP99"),L=t.trade===!0&&so("inputP99",f,r)==="worse"?(f.inputP99.median??0)-(r.inputP99.median??0):0,x=g.inputP99==="unknown"?null:k("inputP99")-L,$=E+(x??i-m);a.set(p,E+(x??0));let I=L>0&&E>L,_="not better";return Ai.some(H=>(H!=="inputP99"||!I)&&so(H,f,r,mp(H))==="worse")?_="worse":$>2*.1&&(_="better"),{cap:p,summary:f,frameMs:m,netMs:$,gains:{task:E,input:x},outcome:_}}),c=l.filter(p=>p.outcome==="better").sort((p,f)=>(f.netMs??0)-(p.netMs??0));if(c.length>0)return{winner:c[0].cap,changed:!0,decidedBy:"net",judged:l};let u=l.find(p=>p.cap===t.prefer&&p.cap!==e),h=u!==void 0&&(e===0||u.capu.filter(h=>!h.invalid);if(r(s).length<2)return{keep:!1,failed:"reference"};if(r(e).length<2)return{keep:!1,failed:"result"};let i=ye(s.map(_o)),a=ye(e.map(_o)),l=so("fps",ye(e),ye(s))==="worse";if(gt(e,o)&&!(gt(s,t)&&No("stallMs",a,i)&&!l))return{keep:!1,failed:"unsteady"};let c;for(let u of Ai){let h=so(u,a,i,mp(u));if(h==="worse"&&u==="inputP99"&&n&&No("taskP99",a,i)){let p=(i.taskP99.median??0)-(a.taskP99.median??0),f=(a.inputP99.median??0)-(i.inputP99.median??0);if(p>f){c={task:p,input:f};continue}}if(h==="worse")return{keep:!1,failed:u};if(h==="unknown"&&u!=="inputP99")return{keep:!1,failed:"reference"}}if(so("inputP99",a,i)==="unknown"){let u=p=>Li(r(p).map(f=>f.p50??0));if(u(e)-u(s)>Math.max(2*.1,u(e)*.1))return{keep:!1,failed:"frame"}}return t===o&&l?{keep:!1,failed:"fps"}:{keep:!0,failed:null,...c?{traded:c}:{}}}function _i(s,e){return 1+Math.max(2*Math.abs(1-s),e)}function Av(s,e){let t=1e3/e,o=s.p99.median,n=s.stallMs.median;return(o===null||o<=t)&&(n===null||n<=t)}function Bi({hz:s,capacity:e,current:t}){let o=i=>e===null||i<=e,n=[3*s,2*s,s].filter(o);return e!==null&&n.push(Math.round(e*.9)),t>0&&n.push(t),[0,...[...new Set(n.map(i=>Math.round(i)).filter(i=>i>0))].sort((i,a)=>a-i)]}function zi(s,e,t,o){let n=l=>l===0?t??1/0:l,r=[...new Set(s)].sort((l,c)=>n(l)-n(c)),i=r.indexOf(e),a=[];for(let l of[r[i-1],r[i+1]]){if(l===void 0)continue;let c=(n(e)+n(l))/2;Number.isFinite(c)&&a.push(Math.round(c/o)*o)}return[...new Set(a)].filter(l=>l>0&&l!==e&&!s.includes(l))}var us,bt,Tv,ds,Io,ps,Ai,ws=w(()=>{"use strict";us=.1,bt=3,Tv=.1,ds=["taskP99","inputP99","p99","stallMs","maxMs"],Io=[...ds,"fps"],ps=new Set(["fps"]);Ai=["taskP99","inputP99","p99","stallMs","maxMs"]});var vp={};A(vp,{PIPELINE:()=>Oe,cancel:()=>Oi,currentPipeline:()=>Rn,measureCaps:()=>Di,searchPipeline:()=>Fi});function Rn(){return Object.fromEntries(Oe.map(s=>[s.setting,(d.running?.[s.setting]??d.settings.data[s.setting])!==!1]))}function bp(s,e){return s!=="hardFlip"||!e.hardFlip?null:d.settings.data.obsCapturePlugin===!0?"kept, OBS capture needs it":null}function ct(s,e){let t=Oe.map(r=>`${r.key}=${s[r.setting]?1:0}`),o=Rv.map(r=>`${r.key}=${d.settings.data[r.setting]??r.fallback?1:0}`),n=`limiter=${d.settings.data.patchFrameLimiter===!1?"hook":"viz"}`;return[...t,...o,n,e].filter(r=>r!=="").join(",")}function Hi(s,e,t){let o=n=>typeof n=="number"&&Number.isFinite(n)?n:null;return{fps:o(s?.fps),p50:o(s?.p50),p99:o(s?.p99),maxMs:o(s?.maxMs),stallMs:o(s?.stallMs),taskP99:o(e?.p99),inputP99:null,presentMs:o(t?.p50),invalid:!s||!(s.fps>0)}}function ks(s,e){let t=Date.now()*100+ ++_v%100;return new Promise(o=>{let n={timer:0},r=i=>{i.data?.benchMatrix===void 0||i.data.benchRun!==t||(clearTimeout(n.timer),window.chrome.webview.removeEventListener("message",r),o(i.data.cancelled?null:i.data.benchMatrix))};n.timer=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),window.chrome.webview.postMessage("bench-cancel"),o(null)},e),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(`run-bench-matrix ${t} ${JSON.stringify(s)}`)})}function Oi(){window.chrome.webview.postMessage("bench-cancel")}async function Fi({hz:s,progress:e,cancelled:t}){let o=Rn();e("Testing the client (1 of 4)",0);let n=await ks([ct(o,`hz=${s}`)],Ln),r=Hi(n?.[0]?.page?.stats,n?.[0]?.page?.otherTasks);if(t()||r.invalid||r.fps===null)return null;let i=n?.[0]?.page?.load,a=Math.min(gp[1],Math.max(gp[0],r.fps/(s*3))),l=`hz=${s},draws=${Math.round(i.draws*a)},cpu=${Math.round(i.cpuIterations*a)}`,c=Oe.filter($=>bp($.setting,o)===null).map($=>({entry:$,pipeline:{...o,[$.setting]:!o[$.setting]}}));e("Testing the client (2 of 4)",.15);let u=await ks([ct(o,l),...c.map($=>ct($.pipeline,l)),ct(o,l)],Ln*(c.length+2));if(t()||u===null)return null;let h=$=>Hi($?.page?.stats,$?.page?.otherTasks,$?.present),p=[h(u[0]),h(u[u.length-1])],f=ye(p),m=Lv.some($=>{let{median:I,spread:_}=f[$];return I!==null&&_!==null&&_>Math.abs(I)*.1}),g=[{id:"current",label:"As you had it",pipeline:o,readings:p,outcome:"current"}];for(let $ of Oe){let I=bp($.setting,o);I!==null&&g.push({id:$.setting,label:`${$.label} off`,pipeline:o,readings:[],outcome:I})}let b=[];for(let[$,I]of c.entries()){let _=h(u[$+1]),H=_.invalid?"failed":Pi(_,f);m&&!_.invalid&&(H="contender");let G=`${I.entry.label} ${I.pipeline[I.entry.setting]?"on":"off"}`,J={id:I.entry.setting,label:G,pipeline:I.pipeline,readings:[_],outcome:Nv[H]};g.push(J),H==="contender"&&b.push(J)}if(b.length===0)return{winner:o,changed:!1,decidedBy:null,rows:g,common:l,capacity:f.fps.median};e("Testing the client (3 of 4)",.55);let v=await ks([...b.map($=>ct($.pipeline,l)),ct(o,l)],Ln*(b.length+1));if(t()||v===null)return null;for(let[$,I]of b.entries())I.readings.push(h(v[$]));p.push(h(v[v.length-1]));let k=ms({id:"current",readings:p},b.map($=>({id:$.id,readings:$.readings})));for(let $ of b){let I=k.judged.find(_=>_.id===$.id);$.outcome="not better",I?.rejected?$.outcome="worse":I?.decidedBy&&($.outcome="better")}let E=b.filter($=>$.outcome==="better"),L=g.find($=>$.id===k.winner)??g[0];if(E.length>1){e("Testing the client (4 of 4)",.8);let $={...o};for(let J of E)$[J.id]=J.pipeline[J.id];let I=await ks([ct($,l),ct(o,l),ct($,l)],Ln*3);if(t()||I===null)return null;p.push(h(I[1]));let _={id:"combined",label:E.map(J=>J.label).join(" and "),pipeline:$,readings:[h(I[0]),h(I[2])],outcome:"not better"};g.push(_);let H=ms({id:L.id,readings:L.readings},[{id:_.id,readings:_.readings}]),G=ms({id:"current",readings:p},[{id:_.id,readings:_.readings}]);H.changed&&G.changed&&(_.outcome="better",L=_,k=G)}let x=L.id!=="current";return{winner:L.pipeline,changed:x,decidedBy:x?k.decidedBy:null,rows:g,common:l,capacity:ye(L.readings).fps.median}}async function Di({pipeline:s,common:e,caps:t,cancelled:o}){let n=`${ct(s,e)},caps=${t.join(".")},rounds=2,ms=${Iv}`,i=(await ks([n],Pv))?.[0]?.page?.caps;if(o()||!Array.isArray(i))return null;let a=new Map(t.map(l=>[l,[]]));for(let l of i)a.get(Number(l.cap))?.push(Hi(l.stats,l.otherTasks));return a}var Lv,Oe,Rv,Ln,Pv,Iv,gp,Nv,_v,qi=w(()=>{"use strict";F();ws();Lv=["fps","taskP99","p99"],Oe=[{setting:"hardFlip",key:"hook",label:"DXGI Swapchain Hook"},{setting:"patchFramePacing",key:"pacing",label:"Frame Pacing"},{setting:"patchCanvasBufferCache",key:"canvas",label:"WebGL Buffer Cache"},{setting:"patchHighQoS",key:"qos",label:"Game Process at High QoS"}].filter(s=>d.platform!=="linux"||s.setting!=="hardFlip"&&s.setting!=="patchHighQoS"),Rv=[{setting:"patchInputPriority",key:"inprio",fallback:!0},{setting:"patchRawInputMovement",key:"rawinput",fallback:!0},{setting:"patchAudioParamCoalesce",key:"coalesce",fallback:!0},{setting:"audioFix",key:"panner",fallback:!1},{setting:"uncapFps",key:"uncap",fallback:!0}],Ln=2e4,Pv=7e4,Iv=1500,gp=[.25,16],Nv={contender:"better",same:"not better",worse:"worse",failed:"failed"};_v=0});var kp={};A(kp,{MIN_RESOLUTION:()=>ys,SIGNIFICANT_RESOLUTION:()=>wp,SIGNIFICANT_SETTING:()=>Pn,decide:()=>In});function In({capacity:s,hz:e,headroom:t,halfResolutionGain:o,settings:n}){let r=e*3,i=r*t,a=s>=i,l="unknown";o!==null&&(l=o>=wp?"gpu":"cpu");let c=[],u=s;if(!a){let h=n.filter(p=>p.gain!==null&&p.steady&&p.current!==p.cheap&&p.gain>=Pn).sort((p,f)=>(f.gain??0)-(p.gain??0));for(let p of h){if(u>=i)break;let f=p.gain??1;u*=f,c.push({id:p.id,label:p.label,value:p.cheap,reason:`measured +${Math.round((f-1)*100)} %`})}}return{target:r,needed:i,holds:a,regime:l,predictedFps:u,tuneResolution:!a&&l==="gpu"&&u{"use strict";ws();Pn=1.05,wp=1.1,ys=.75});var Vi={};A(Vi,{ALL_IDS:()=>Ui,GAME_FRAME_CAP:()=>wt,PRESET:()=>ji,RESOLUTION:()=>ro,SETTINGS:()=>vt,label:()=>Gi,opposite:()=>Wi,read:()=>Ss,resetCache:()=>Nn,write:()=>Me});function Gi(s){return vt.find(e=>e.id===s)?.label??s}function Bv(){if(xs)return xs;let s=window.windows[0],e=s.tabIndex,t=s.settingType,o="";try{s.settingType="advanced";for(let n=0;n{"use strict";vt=[{id:"postProcessing",label:"Post Processing",cheap:!1},{id:"shadowsDynamic",label:"Dynamic Shadows",cheap:!1},{id:"softShad",label:"Soft Shadows",cheap:!1,needsReload:!0},{id:"highResShad",label:"High-Res Shadows",cheap:!1,needsReload:!0},{id:"shadows",label:"Shadows",cheap:!1},{id:"antiAlias",label:"Antialiasing",cheap:!1,needsReload:!0},{id:"reflection",label:"Reflection Quality",cheap:"1",needsReload:!0},{id:"lighting",label:"Lighting",cheap:"0",needsReload:!0},{id:"weaponShine",label:"Weapons Shine",cheap:!1},{id:"ambientShading",label:"Old Shading",cheap:!1},{id:"particles",label:"Particles",cheap:!1,fightOnly:!0},{id:"showExplo",label:"Explosions",cheap:!1,fightOnly:!0},{id:"textureAnim",label:"Texture Animations",cheap:!1},{id:"objectAnim",label:"Object Animations",cheap:!1},{id:"bulletCasings",label:"Bullet Casings",cheap:!1,fightOnly:!0},{id:"impactHoles",label:"Bullet Impact Holes",cheap:!1,fightOnly:!0},{id:"noPaintAnim",label:"Disable Animated Paints",cheap:!0,needsReload:!0},{id:"mapDet",label:"Map Details",cheap:!1,needsReload:!0},{id:"lowSpec",label:"Low Spec",cheap:!0}],ji={postProcessing:!1,particles:!1,showExplo:!1,bulletCasings:!1,impactHoles:!1,reflection:"1",lighting:"0",softShad:!1,highResShad:!1,noPaintAnim:!0},ro="resolution",wt="updateRate",Ui=[...vt.map(s=>s.id),ro,wt];xs=null});var xp,yp=w(()=>{xp=`

Auto-Detect

Don't touch mouse or keyboard. Escape cancels
Undo
Details
Advanced
Run now
OK
    `});var Sp={};A(Sp,{activity:()=>_t,hostLobby:()=>Es,inRoom:()=>_n,spawn:()=>$s,spawned:()=>Xi});function _t(){try{return window.getGameActivity?.()??{}}catch{return{}}}function _n(s){let e=_t();return!!s&&!!e.custom&&e.id===s}async function Es(){if(typeof window.openHostWindow!="function"||typeof window.createPrivateRoom!="function")return null;let s=_t().id;for(let e=0;e<4;e++){window.openHostWindow(!1,0),await Nt(800),window.windows[7]?.switchTab?.(0),await Nt(300);let t=[...document.querySelectorAll("#windowHolder input[id^=gameMap]")],o=document.querySelector("#makePrivate");if(t.length===0||!o)return window.closWind?.(),null;for(let r of t)r.checked!==(r.id===Hv)&&r.click();let n=!o.checked;n&&o.click();try{window.createPrivateRoom();for(let r=0;r<32;r++){await Nt(250);let i=_t();if(i.custom&&i.id&&i.id!==s&&i.map)return i.id}}finally{n&&o.checked&&o.click()}window.closWind?.(),await Nt(1500)}return null}function Xi(){let s=document.querySelector("#instructions");return!!document.pointerLockElement||s!==null&&getComputedStyle(s).display==="none"}async function $s(s){for(let o=0;o<40&&!(_t().map&&document.querySelector("#instructions"));o++)await Nt(250);await Nt(500);let e=Math.round(window.innerWidth/2),t=Math.round(window.innerHeight/2);for(let o=0;o<3&&!Xi();o++){if(!_n(s))return!1;window.chrome.webview.postMessage(`click, ${e}, ${t}`),await Nt(1200)}return await Nt(800),Xi()}var Hv,Nt,Bn=w(()=>{"use strict";Hv="gameMap0",Nt=s=>new Promise(e=>{setTimeout(e,s)})});var Cp={};A(Cp,{REPLAY_CIRCLE_MS:()=>Bt,takeInputDiagnostics:()=>zn,takeReading:()=>Ji});function zn(){let s=Ze;return Ze=$p(),s}function Ji({ms:s,hz:e,replay:t}){return new Promise((o,n)=>{let r=new to,i=new oo,a=new ts,l=()=>document.hasFocus()&&document.visibilityState==="visible",c=document.pointerLockElement!==null,u=l()?null:"the window was not in front",h=()=>{l()||(u??="the window lost focus")},p=()=>{document.pointerLockElement!==null!==c&&(u??=c?"the game let go of the mouse":"the game took the mouse")},f=()=>{window.removeEventListener("blur",h),document.removeEventListener("visibilitychange",h),document.removeEventListener("pointerlockchange",p)};window.addEventListener("blur",h),document.addEventListener("visibilitychange",h),document.addEventListener("pointerlockchange",p);let m=setTimeout(()=>{f(),i.stop(),a.stop(),window.chrome.webview.postMessage("input-replay-stop"),n(new Error("the game stopped drawing frames"))},s+5e3);i.start(),a.start(),Ze.readings++,t&&c&&(Ze.asked++,window.chrome.webview.postMessage(`input-replay, ${s}`));let g=performance.now(),b=()=>{let v=performance.now();if(r.frame(v),v-g=Ep&&Ze.withInput++,L===null&&(u??="too few frames"),u!==null&&(Ze.invalid[u]=(Ze.invalid[u]??0)+1),o({fps:L?.fps??null,p50:L?.p50??null,p99:L?.p99??null,maxMs:L?.maxMs??null,stallMs:L?.stallMs??null,taskP99:k.p99,inputP99:E.events>=Ep?E.p99:null,invalid:u!==null,...u===null?{}:{why:u}})};requestAnimationFrame(b)})}var Bt,Ep,$p,Ze,Zi=w(()=>{"use strict";kn();Bt=600,Ep=20,$p=()=>({readings:0,asked:0,withInput:0,pageEvents:0,hostSteps:0,ended:{},invalid:{}}),Ze=$p();window.chrome.webview.addEventListener("message",s=>{let e=s.data?.inputReplay;e&&(Ze.hostSteps+=Number(e.sent)||0,Ze.ended[e.reason]=(Ze.ended[e.reason]??0)+1)})});var ra={};A(ra,{loggedIn:()=>Ts});function zt(){try{return JSON.parse(localStorage.getItem(Dn)??"null")}catch{return null}}function De(s){localStorage.setItem(Dn,JSON.stringify(s))}function Ts(){return document.querySelector("#signedInHeaderBar")!==null}function Ht(s,e){d.settings.data[s]=e,window.chrome.webview.postMessage(`set-config, ${s}, ${e}`);for(let t of[`#${s}`,`#slid_input_${s}`]){let o=document.querySelector(t);o&&(o.type==="checkbox"?o.checked=e===!0:o.value=String(e))}}function ut(s){return s==null?"default":String(s)==="true"?"on":String(s)==="false"?"off":String(s)}function Gv(){let s=/--autodetect-dev=(\S+)/.exec(d.launchArgs??""),e={};for(let t of s?.[1].split(",")??[]){let[o,n]=t.split(":");o==="hz"&&(e.hz=Number(n)),o==="battery"&&(e.battery=!0),o==="laptop"&&(e.laptop=!0),o==="force"&&(e.force=n),o==="collapse"&&(e.collapse=Number(n))}return e}function Pp(s){let e=Math.round((s-1)*100);return`${e>0?"+":""}${e} %`}function yt(s,e=1){return s===null?"?":s.toFixed(e)}function Ft(s){return s>0?`${s} FPS`:"no limit"}function Wv(s,e,t){if(s===null)return"measured as smooth, with fewer frames to draw";let o=`${yt(e[s].median)} to ${yt(t[s].median)}`;return{taskP99:`the game reacts sooner: other work waited up to ${o} ms`,inputP99:`mouse input waits ${o} ms`,p99:`slowest frames ${o} ms`,stallMs:`stutter ${o} ms per second`,maxMs:`longest frame ${o} ms`,fps:`${yt(e.fps.median,0)} to ${yt(t.fps.median,0)} FPS`}[s]}function Ip(s,e=""){return s===null?"-":`${e}${s.toFixed(1)} ms`}function Ot(s,e=""){return s===null?"-":`${e}${s.toFixed(1)}`}function oa(s){return`${yt(s.fps.median,0)}${Ot(s.p99.median)}${Ot(s.taskP99.median)}${Ot(s.inputP99.median)}`}function qn(s){let e=s.filter(o=>typeof o=="number").sort((o,n)=>o-n);if(e.length===0)return null;let t=Math.floor(e.length/2);return e.length%2===1?e[t]:(e[t-1]+e[t])/2}function Vv(s){if(!s||s.readings===0)return"";if(s.withInput>0)return`

    Input test: ${s.withInput} of ${s.readings} readings in the match had mouse input from Kute (${s.hostSteps} steps sent, ${s.pageEvents} seen by the game).

    `;let e=Object.entries(s.ended).filter(([o])=>o!=="done"&&o!=="stopped").map(([o,n])=>`${o}: ${n}x`).join(", "),t="the game did not hold the mouse when the readings started";return s.asked>0&&(t=e||`Kute sent ${s.hostSteps} steps, the game saw ${s.pageEvents} mouse events`),`

    The input test did not reach the game (${t}). Mouse wait and settings that only cost in a fight were not measured.

    `}function dt(s,e){let t=s.filter(r=>typeof r=="number").map(Math.round);if(t.length===0)return"-";let[o,n]=[Math.min(...t),Math.max(...t)];return o===n?`${o} ${e}`:`${o} to ${n} ${e}`}function Yv(s){let e=[[`As you had it (${Ft(s.beforeCap)})`,s.played??[]],["no limit, first readings",s.unlimited??[]],...s.caps.filter(u=>u.where==="test match").map(u=>[Ft(u.cap),u.readings??[]])],{render:t=null,display:o=null}=s.adapters??{},n=t!==null&&o!==null&&t!==o,r=u=>{let h=(u?.nvidia??[]).map(p=>p.clockMhz).filter(p=>typeof p=="number");return h.length>0?Math.max(...h):null},i=u=>{let h=(u?.nvidia??[]).reduce((f,m)=>f|(m.heldBack??0),0),p=[[1,"heat"],[2,"power limit"],[4,"battery"],[16,"weak power supply"]].filter(([f])=>(h&Number(f))!==0).map(([,f])=>f);return p.length>0?p.join(", "):h===0?"no":`yes (${h})`},a=[...s.played??[],...s.unlimited??[]].some(u=>(u.load?.nvidia??[]).length>0),l=e.filter(([,u])=>u.some(h=>h.load)).map(([u,h])=>{let p=h.map(m=>m.load),f=(m,g)=>dt(p.map(b=>m===null?null:b?.gpu?.[m]?.[g]),"%");return`${u}${dt(h.map(m=>m.fps),"")}${dt(p.map(m=>m?.cpuBusy),"%")} - ${dt(p.map(m=>m?.cpuSpeed),"%")}${f(t,"render")}${a?`${dt(p.map(r),"MHz")}`:""} + `;let o=document.createElement("div");o.id="aboutPopupHost",t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=s.default;let r=n.querySelector("#aboutLogo");r&&(r.src=e.default);let i=n.querySelector("#aboutVersion");i&&(i.textContent=`Version ${u.version}`);for(let c of n.querySelectorAll("[data-url]"))c.addEventListener("click",()=>window.chrome.webview.postMessage(`open-url, ${c.getAttribute("data-url")}`));let a=new AbortController,l=()=>{a.abort(),t.remove()};n.querySelector("#aboutClose")?.addEventListener("click",l),t.addEventListener("mousedown",c=>{c.target===t&&l()}),document.addEventListener("keydown",c=>{c.key==="Escape"&&l()},{signal:a.signal}),document.body.append(t)}var mi=w(()=>{"use strict";D();u.showAboutPopup=Gb});var bi={};A(bi,{default:()=>Jb});function Zu(){if(!document.getElementById("signedInHeaderBar"))return null;try{return localStorage.getItem("krunker_username")||null}catch{return null}}function fi(){try{return localStorage.getItem(Wb)??""}catch{return""}}var Wb,Vb,Yb,Xb,gi,Jb,vi=w(()=>{"use strict";D();Wb="kro_setngss_endMessage",Vb="slid_endMessage",Yb="playerHeaderEl",Xb=500;gi=class{constructor(){this.account=void 0,this.header=new MutationObserver(()=>this.check()),this.saveTimer=0,this.editedFor=null,this.onInput=e=>{!(e.target instanceof HTMLInputElement)||e.target.id!==Vb||!this.account||(this.editedFor=this.account,clearTimeout(this.saveTimer),this.saveTimer=setTimeout(()=>this.flush(),Xb))},u.settings.toggleAccountEndMessage=e=>this.toggle(e,!0),this.toggle(!!u.settings.data.accountEndMessage,!1)}get messages(){return{...u.settings.data.endMessages}}save(e){u.settings.data.endMessages=e,window.chrome.webview.postMessage(`set-config-json endMessages ${JSON.stringify(e)}`)}remember(e,t){let{messages:o}=this;(o[e]??"")!==t&&(t?o[e]=t:delete o[e],this.save(o))}flush(){clearTimeout(this.saveTimer),this.editedFor&&this.remember(this.editedFor,fi()),this.editedFor=null}check(){let e=Zu();if(e===this.account)return;this.flush(),this.account=e;let t=e?this.messages[e]??"":"";fi()!==t&&window.setSetting("endMessage",t)}toggle(e,t){if(this.header.disconnect(),document.removeEventListener("input",this.onInput,!0),!e){this.flush(),this.account=void 0;return}let o=Zu();if(t&&o){let r=fi();this.remember(o,r),u.showNotification(r?`Kept "${r}" for ${o}. Other accounts send nothing until you give them one`:`End messages are now per account, ${o} has none`,!1,6)}document.addEventListener("input",this.onInput,!0);let n=document.getElementById(Yb);n?this.header.observe(n,{childList:!0}):console.error("[kute] end message: no account header"),this.check()}},Jb=new gi});var Qu=we((Qx,Zb)=>{Zb.exports='

    '});var ep={};A(ep,{confirmPopup:()=>Ce});async function Ce(s){let e=await Promise.resolve().then(()=>ue(Qu(),1)),t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default;let r=i=>n.querySelector(`#${i}`);r("confirmTitle").textContent=s.title;for(let i of s.paragraphs){let a=document.createElement("p");a.textContent=i,r("confirmText").append(a)}return r("confirmStay").textContent=s.stay,r("confirmLeave").textContent=s.leave,new Promise(i=>{let a=new AbortController,l=c=>{a.abort(),t.remove(),i(c)};r("confirmStay").onclick=()=>l(!1),r("confirmLeave").onclick=()=>l(!0),t.addEventListener("mousedown",c=>{c.target===t&&l(!1)}),document.addEventListener("keydown",c=>{c.key==="Escape"&&l(!1)},{signal:a.signal}),document.body.append(t)})}var Rt=w(()=>{"use strict"});var op,tp=w(()=>{op='

    Hotkeys

    Click a key, then press the new one. Escape cancels.
    Ctrl, Alt and Shift combinations work too.

    Lobby and window

    Toggles and windows

    Quick account login

    Reset to defaults
    Done
    '});var Si={};A(Si,{bindings:()=>ft,default:()=>pv,matches:()=>ls});function sv(){if(u.settings.data.chatLogs===!1||!u.chatLogs){u.showNotification("Chat Logs is off in the settings",!1,3);return}u.chatLogs.toggle()}function nv(s){if(u.settings.data.accountManager===!1||!u.accounts){u.showNotification("Account Manager is off in the settings",!1,3);return}u.accounts.loginSlot(s)}function ki(){return!!u.hostFeatures?.includes(ev)}function ft(){let s=ki()&&u.settings.data.hotkeys||{};return Object.fromEntries(An.map(e=>[e.id,s[e.id]??(e.id in s?null:e.fallback)]))}function sp(s,e){return!!e&&s.keyCode===e?.key&&s.ctrlKey===e.ctrl&&s.altKey===e.alt&&s.shiftKey===e.shift}function ls(s,e){return sp(s,ft()[e]??null)}function iv(s){let e=(t,o)=>{try{let n=window.localStorage.getItem(t);return n===null?o:Number(n)}catch{return o}};return rv.filter(([t,,o,n])=>e(`cont_${t}`,o)===s||e(`cont_${t}_alt`,n)===s).map(([,t])=>t)}function lv(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`Num ${s-96}`:s>=112&&s<=135?`F${s-111}`:av[s]??`Key ${s}`}function cv(s){let{code:e}=s,t=e;return/^Key[A-Z]$/.test(e)?t=e.slice(3):/^Digit\d$/.test(e)?t=e.slice(5):e.startsWith("Numpad")?t=`Num ${e.slice(6)}`:e.startsWith("Arrow")?t=e.slice(5):e||(t=lv(s.keyCode)),[s.ctrlKey&&"Ctrl",s.altKey&&"Alt",s.shiftKey&&"Shift",t].filter(Boolean).join("+")}function dv(s,e,t){let o=[],n=An.filter(i=>{let a=t[i.id];return i.id!==s.id&&a!==null&&a.key===e.key&&a.ctrl===e.ctrl&&a.alt===e.alt&&a.shift===e.shift});n.length>0&&o.push(`Also bound to Kute's ${n.map(i=>i.label).join(", ")}, pick another key.`);let r=iv(e.key);if(r.length>0){let i=r.length>3?` and ${r.length-3} more`:"";o.push(`Krunker uses this key for ${r.slice(0,3).join(", ")}${i}, the game still gets it.`)}return o}function uv(){let s=document.activeElement;for(;s?.shadowRoot?.activeElement;)s=s.shadowRoot.activeElement;return s instanceof HTMLInputElement||s instanceof HTMLTextAreaElement||s instanceof HTMLElement&&s.isContentEditable}var ev,tv,ov,Ro,wi,An,rv,av,yi,xi,pv,Po=w(()=>{"use strict";tp();D();Co();ev="hotkeys",tv=131,ov=new Set(["Shift","Control","Alt","Meta","AltGraph"]);Ro=(s,e)=>({key:s,ctrl:!1,alt:!1,shift:!1,name:e}),wi=s=>({id:`account${s}`,label:`Account ${s}`,note:`logs in account ${s} of the Accounts list`,group:"account",fallback:{key:48+s,ctrl:!0,alt:!0,shift:!1,name:`Ctrl+Alt+${s}`},run:()=>nv(s-1)}),An=[{id:"newLobby",label:"New lobby",group:"window",fallback:Ro(115,"F4")},{id:"matchmaker",label:"Matchmaker",note:"new lobby while the Matchmaker setting is off",group:"window",fallback:Ro(117,"F6")},{id:"reload",label:"Reload",group:"window",fallback:Ro(116,"F5")},{id:"fullscreen",label:"Fullscreen",group:"window",fallback:Ro(122,"F11")},{id:"devtools",label:"Developer tools",group:"window",fallback:Ro(123,"F12")},{id:"toggleSpotify",label:"Spotify overlay",note:"on and off",group:"toggle",fallback:null,setting:"spotifyOverlay"},{id:"toggleKeystrokes",label:"Keystrokes",note:"on and off",group:"toggle",fallback:null,setting:"keystrokes"},{id:"chatLogs",label:"Chat logs",note:"open and close",group:"toggle",fallback:Ro(112,"F1"),run:sv},wi(1),wi(2),wi(3)],rv=[["0","Forward",87,-1],["1","Back",83,-1],["2","Left",65,-1],["3","Right",68,-1],["jumpKey","Jump",32,-1],["crouchKey","Crouch",16,-1],["reloadKey","Reload",82,-1],["swapKey","Swap weapon",69,-1],["primKey","Primary weapon",84,-1],["meleeKey","Melee",81,-1],["equipKey","Equip",67,-1],["dropKey","Drop",90,-1],["inspKey","Inspect",88,-1],["wepVisKey","Hide weapon",-1,-1],["sprayKey","Spray",70,-1],["sprayWheelKey","Spray wheel",70,-1],["interactKey","Interact",71,-1],["interactSecKey","Second interact",72,-1],["confirmKey","Confirm",75,-1],["resetKey","Reset",66,-1],["resetLastKey","Reset to last",78,-1],["markPositionKey","Mark position",10002,-1],["chatKey","Chat",13,-1],["voiceKey","Voice chat",86,-1],["pListKey","Player list",18,-1],["sBoardKey","Scoreboard",9,-1],["hidePlayersKey","Hide players",-1,-1],["kickVoteYKey","Kick vote yes",49,-1],["kickVoteNKey","Kick vote no",50,-1],["kpdVoteYKey","Vote yes",89,-1],["kpdVoteNKey","Vote no",78,-1],["kpdVisionKey","Vision",187,-1],["specFreeKey","Spectate free camera",70,-1],["specObjKey","Spectate objective",72,-1],["specFirstKey","Spectate first person",82,-1],["specNamesKey","Spectate names",77,-1],["specMiniMap","Spectate minimap",189,-1],["specFocusKey","Spectate focus",190,-1],["propKey","Prop",80,-1],["propRandKey","Random prop",77,-1],["propRotKey","Rotate prop",82,-1],["propRotRKey","Rotate prop back",78,-1],["18","Streak 1",49,-1],["19","Streak 2",50,-1],["20","Streak 3",51,-1],...[0,1,2,3,4,5].map(s=>[`taunt${s}`,`Taunt ${s+1}`,49+s,-1]),...["27","28","29","30","31","32"].map((s,e)=>[s,`Toggle ${e+1}`,-1,-1]),...["43","44","45","46","47","48"].map((s,e)=>[s,`Chat message ${e+1}`,-1,-1])];av={8:"Backspace",9:"Tab",13:"Enter",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",45:"Insert",46:"Delete"};yi=class{constructor(e){this.owner=e,this.waiting=null,this.overlay=document.createElement("div"),this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");this.overlay.append(t),this.shadow=t.attachShadow({mode:"open"}),this.shadow.innerHTML=op,document.body.append(this.overlay),this.onKey=this.onKey.bind(this),window.addEventListener("keydown",this.onKey,!0),this.overlay.addEventListener("click",o=>{o.target===this.overlay&&this.close()}),this.element("hkDone").onclick=()=>this.close(),this.element("hkReset").onclick=()=>{this.owner.save({}),this.stopWaiting(),this.render()},this.render()}element(e){return this.shadow.querySelector(`#${e}`)}startWaiting(e){this.stopWaiting(),this.waiting=e,this.owner.capturing=!0,window.chrome.webview.postMessage("hotkeys-pause, true"),this.render()}stopWaiting(){this.waiting!==null&&(this.waiting=null,this.owner.capturing=!1,window.chrome.webview.postMessage("hotkeys-pause, false"),this.render())}assign(e,t){this.owner.save({...ft(),[e]:t}),this.stopWaiting(),this.render()}row(e,t){let o=t[e.id],n=document.createElement("div");n.className="hkRow";let r=document.createElement("div");if(r.className="hkLabel",r.textContent=e.label,e.note){let h=document.createElement("span");h.className="hkNote",h.textContent=e.note,r.append(h)}let i=this.waiting===e.id,a=document.createElement("div");a.className=`hkKey${i?" hkWaiting":""}${o?"":" hkNone"}`,a.textContent=i?"Press a key":o?.name??"No key",a.title="Click, then press the new key. Escape cancels",a.onclick=()=>this.startWaiting(e.id);let l=document.createElement("div");l.className="hkClear",l.textContent="Clear",l.style.visibility=o?"":"hidden",l.onclick=()=>this.assign(e.id,null),n.append(r,a,l);let c=o?dv(e,o,t):[];if(c.length===0)return n;let d=document.createElement("div");d.className="hkWarn",d.textContent=c.join(" ");let p=document.createElement("div");return p.append(n,d),p}render(){let e=ft();for(let t of["window","toggle","account"]){let o=An.filter(n=>n.group===t).map(n=>this.row(n,e));this.element(`hkGroup-${t}`).replaceChildren(...o)}}onKey(e){if(this.waiting===null){e.key==="Escape"&&this.close();return}if(e.preventDefault(),e.stopImmediatePropagation(),e.key==="Escape"){this.stopWaiting();return}ov.has(e.key)||e.keyCode===tv||e.keyCode===0||this.assign(this.waiting,{key:e.keyCode,ctrl:e.ctrlKey,alt:e.altKey,shift:e.shiftKey,name:cv(e)})}close(){this.stopWaiting(),window.removeEventListener("keydown",this.onKey,!0),this.overlay.remove()}},xi=class{constructor(){this.capturing=!1,u.hotkeys={edit:()=>this.edit()},window.addEventListener("keydown",e=>this.onKey(e),!0)}onKey(e){if(this.capturing||e.repeat||uv()||!ki())return;let t=ft();for(let o of An)o.group==="window"||!sp(e,t[o.id])||(o.run?o.run():o.setting&&this.flip(o.setting,o.label))}flip(e,t){if($o(u.settings.data,e)){u.showNotification(`${t} is off in performance mode`,!1,3);return}let o=!u.settings.data[e];u.settings.changeSetting(e,o,!1),u.showNotification(`${t} ${o?"on":"off"}`,!1,2)}save(e){u.settings.data.hotkeys=e,window.chrome.webview.postMessage(`set-config-json hotkeys ${JSON.stringify(e)}`)}edit(){if(!ki()){u.showNotification("Hotkeys need a newer Kute",!1,3);return}new yi(this)}},pv=new xi});var np=we((nS,hv)=>{hv.exports='
    ×

    Accounts

    Click an account to log in, drag ≡ to reorder
    Add account
    '});var Ci={};A(Ci,{default:()=>xv});function Pt(s){let e=decodeURIComponent(s),t=e.length;return e.split("").map(o=>String.fromCharCode(o.charCodeAt(0)-t)).join("")}function ap(s){let e=s.length,t=s.split("").map(o=>String.fromCharCode(o.charCodeAt(0)+e)).join("");return encodeURIComponent(t)}function cs(){try{let s=JSON.parse(localStorage.getItem(ds)||"[]");return Array.isArray(s)?s:[]}catch{return[]}}function kv(s){return typeof s=="string"&&/^#[\da-f]{6}$/i.test(s)?s:mv}function yv(s){let e=Number.parseInt(s.slice(1),16),t=e>>16&255,o=e>>8&255,n=e&255;return t*.299+o*.587+n*.114>150?"#111":"#fff"}function lp(s,e,t){let o=kv(e);s.style.background=o,s.style.color=yv(o),s.textContent=t.trim().slice(0,1)||"?"}var ds,mv,Ei,fv,rp,gv,bv,vv,wv,ip,$i,xv,Mi=w(()=>{"use strict";D();Ae();Rt();kn();Po();ds="accounts",mv="#35e0e8",Ei="kute_account_switch",fv=12e4,rp=3e4,gv=3e3,bv=2e4,vv=3e3,wv=5e3,ip=s=>new Promise(e=>{setTimeout(e,s)});$i=class{constructor(){this.button=document.createElement("div"),this.button.textContent="Accounts",this.button.classList.add("button","buttonB","bigShadowT"),this.button.style.cssText="display: block; padding-top: 7px; padding-bottom: 22px; font-size: 25px!important; padding-bottom: 22px; margin-top: 7px; height: 21px; line-height: 35px; width: 162px; font-size:20px!important; margin-left: 3px;",this.headerSeparator=document.createElement("div"),this.headerSeparator.style.cssText="width: 4px; height: 35px; margin: 0 6px; background: rgba(255, 255, 255, 0.12); flex-shrink: 0;",this.headerItem=document.createElement("div"),this.headerItem.style.cssText="display: flex; align-items: center; gap: 8px; padding: 8px 12px; cursor: pointer; color: #fff; font-weight: 700; font-size: 16px; white-space: nowrap;",this.headerItem.innerHTML='switch_accountAccounts',this.headerObserver=new MutationObserver(()=>this.placeButton()),this.overlay=null,this.shadow=null,this.menuController=null,this.asking=!1,this.accounts=[],this.legacy=!1,this.lastQuickLogin=0,this.suppressClick=!1,u.settings.toggleAccountManager=e=>this.toggle(e),u.accounts={loginSlot:e=>this.loginSlot(e)},this.toggle(!0),this.load()}async load(){let e=cs(),t=null;if(e.length>0){let o=e.filter(n=>typeof n?.username=="string"&&typeof n?.password=="string").map(n=>({username:Pt(n.username),password:Pt(n.password),color:n.color}));t=await Te(`accounts-migrate ${JSON.stringify(o)}`,"accounts",5e3),t!==null&&localStorage.removeItem(ds)}else t=await Te("accounts-list","accounts");t===null?(this.legacy=!0,this.accounts=e.map(o=>({username:Pt(o.username),color:o.color}))):this.accounts=t,this.renderAccounts(),this.resumeSwitch()}resumeSwitch(){let e=sessionStorage.getItem(Ei);if(e===null)return;sessionStorage.removeItem(Ei);let t={};try{t=JSON.parse(e)??{}}catch{return}if(Date.now()-Number(t.at)>fv||localStorage.getItem("krunker_token")!==null)return;let o=this.accounts.find(n=>n.username===t.username);o&&this.login(o)}async send(e,t){let o=await Te(`accounts-${e} ${JSON.stringify(t)}`,"accounts");o!==null&&(this.accounts=o,this.renderAccounts())}gameUpdateListener=e=>{e.data==="game-updated"&&setTimeout(()=>{He()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.button.style.cssText="display: block; padding: 14px 24px 22px; bottom: 0; right: 0; z-index: 9; font-size: 21px !important; position: absolute;",U("#compBtnLst").append(this.button))},2e3)};toggle(e){if(e)if(window.chrome.webview.addEventListener("message",this.gameUpdateListener),this.button.addEventListener("click",this.openMenu),this.headerItem.addEventListener("click",this.openMenu),He())window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.button.style.cssText="display: block; padding: 14px 24px 22px; bottom: 0; right: 0; z-index: 9; font-size: 21px !important; position: absolute;",U("#compBtnLst").append(this.button);else{this.placeButton();let t=document.querySelector("#playerHeaderEl");t&&this.headerObserver.observe(t,{childList:!0,subtree:!0})}else window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.headerObserver.disconnect(),this.button.removeEventListener("click",this.openMenu),this.headerItem.removeEventListener("click",this.openMenu),this.button.remove(),this.headerSeparator.remove(),this.headerItem.remove(),this.closeMenu()}placeButton(){let e=document.querySelector("#playerHeaderEl .headerBarRight");if(e){if(e.firstElementChild!==this.headerItem){let n=[...e.querySelector(".nav-item")?.classList??[]].find(r=>r.startsWith("svelte-"))??"";this.headerItem.style.cssText="",this.headerItem.className=`nav-item ${n}`,this.headerItem.innerHTML=`switch_account Accounts`,this.headerSeparator.className="verticalSeparator",this.headerSeparator.style.cssText="height: 35px;",e.prepend(this.headerItem,this.headerSeparator)}this.button.remove();return}let t=document.querySelector("#signedInHeaderBar");if(t){t.contains(this.headerItem)||t.append(this.headerSeparator,this.headerItem);return}let o=document.querySelector("#signedOutHeaderBar");o&&!o.contains(this.button)&&o.append(this.button)}openMenu=()=>{this.overlay||this.buildMenu().catch(e=>console.error("[kute] accounts:",e))};async buildMenu(){let e=await Promise.resolve().then(()=>ue(np(),1));if(this.overlay)return;let t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default,this.overlay=t,this.shadow=n;let r=new AbortController;this.menuController=r,U("#accClose",n).onclick=()=>this.closeMenu(),U("#accAdd",n).onclick=()=>this.showForm(!0),U("#accCancel",n).onclick=()=>this.showForm(!1),U("#accSave",n).onclick=()=>this.saveAccount(),U("#accFormHint",n).textContent=this.legacy?"Saved on this PC only":"Saved encrypted on this PC, never sent anywhere";let i=ke("#accUsername",n),a=ke("#accColor",n);i.oninput=()=>this.updatePreview(),a.oninput=()=>this.updatePreview();for(let l of[i,ke("#accPassword",n)])l.onkeydown=c=>{c.key==="Enter"&&this.saveAccount()};for(let l of["keydown","keyup","keypress"])n.addEventListener(l,c=>c.stopPropagation());t.addEventListener("mousedown",l=>{l.target===t&&this.closeMenu()}),document.addEventListener("keydown",l=>{l.key!=="Escape"||this.asking||(l.stopPropagation(),U("#accFormView",n).hidden?this.closeMenu():this.showForm(!1))},{signal:r.signal,capture:!0}),this.renderAccounts(),this.resetForm(),document.body.append(t)}closeMenu(){this.menuController?.abort(),this.menuController=null,this.overlay?.remove(),this.overlay=null,this.shadow=null}showForm(e){this.shadow&&(U("#accListView",this.shadow).hidden=e,U("#accFormView",this.shadow).hidden=!e,e&&(this.resetForm(),ke("#accUsername",this.shadow).focus()))}renderAccounts(){let{shadow:e}=this;if(!e)return;let t=U("#accList",e);t.textContent="";for(let n of this.accounts){let r=document.createElement("div");r.className="accRow",r.dataset.username=n.username,r.title=`Log in as ${n.username}`,r.onclick=()=>{this.suppressClick||this.login(n)};let i=document.createElement("div");i.className="accHandle",i.textContent="\u2261",i.title="Drag to reorder",i.onclick=h=>h.stopPropagation(),i.onpointerdown=h=>this.startDrag(h,r);let a=document.createElement("div");a.className="accIndex";let l=document.createElement("div");l.className="accAvatar",lp(l,n.color,n.username);let c=document.createElement("div");c.className="accName",c.textContent=n.username;let d=document.createElement("div");d.className="accRemove",d.textContent="\xD7",d.title="Remove",d.onclick=h=>{h.stopPropagation(),this.removeAccount(n).catch(f=>console.error("[kute] accounts:",f))};let p=document.createElement("div");p.className="accKey",r.append(i,a,l,c,p,d),t.append(r)}this.renumber(t);let o=this.accounts.length===0;U("#accEmpty",e).hidden=!o,U("#accListHint",e).hidden=o}renumber(e){let t=ft();[...e.children].forEach((o,n)=>{U(".accIndex",o).textContent=String(n+1),U(".accKey",o).textContent=t[`account${n+1}`]?.name??""})}canReorder(){return this.legacy||!!u.hostFeatures?.includes("accounts-order")}startDrag(e,t){if(e.button!==0)return;if(e.preventDefault(),!this.canReorder()){u.showNotification("Reordering accounts needs a newer Kute",!1,3);return}let o=t.parentElement,n=[...o.children].map(a=>a.dataset.username);t.classList.add("accDragging");let r=a=>{let l=[...o.children].filter(h=>h!==t),c=l.find(h=>{let f=h.getBoundingClientRect();return a.clientY!!(t.compareDocumentPosition(h)&Node.DOCUMENT_POSITION_PRECEDING)).length;if(d!==p){for(let h of l.slice(0,d))o.insertBefore(h,t);for(let h of l.slice(d))o.append(h);this.renumber(o)}},i=()=>{window.removeEventListener("pointermove",r,!0),window.removeEventListener("pointerup",i,!0),window.removeEventListener("pointercancel",i,!0),t.classList.remove("accDragging"),this.suppressClick=!0,setTimeout(()=>{this.suppressClick=!1});let a=[...o.children].map(l=>l.dataset.username??"");a.some((l,c)=>l!==n[c])&&this.saveOrder(a)};window.addEventListener("pointermove",r,!0),window.addEventListener("pointerup",i,!0),window.addEventListener("pointercancel",i,!0)}saveOrder(e){let t=o=>{let n=e.indexOf(o);return n===-1?e.length:n};if(this.accounts.sort((o,n)=>t(o.username)-t(n.username)),this.legacy){let o=cs().sort((n,r)=>t(Pt(n.username))-t(Pt(r.username)));localStorage.setItem(ds,JSON.stringify(o));return}this.send("order",e)}loginSlot(e){let t=this.accounts[e];if(!t){u.showNotification(`No account saved in slot ${e+1}`,!1,3);return}if(localStorage.getItem("krunker_token")!==null&&localStorage.getItem("krunker_username")===t.username){u.showNotification(`Already logged in as ${t.username}`,!1,2);return}Date.now()-this.lastQuickLoginconsole.error("[kute] accounts:",o)))}updatePreview(){if(!this.shadow)return;let e=ke("#accUsername",this.shadow).value,t=ke("#accColor",this.shadow).value;lp(U("#accPreviewAvatar",this.shadow),t,e),U("#accPreviewName",this.shadow).textContent=e.trim()||"Username"}resetForm(){this.shadow&&(ke("#accColor",this.shadow).value=`#${Math.floor(Math.random()*16777215).toString(16).padStart(6,"0")}`,ke("#accUsername",this.shadow).value="",ke("#accPassword",this.shadow).value="",U("#accError",this.shadow).textContent="",this.updatePreview())}saveAccount(){if(!this.shadow)return;let e=ke("#accUsername",this.shadow).value.trim(),t=ke("#accPassword",this.shadow).value,o=ke("#accColor",this.shadow).value,n=U("#accError",this.shadow);if(e===""){n.textContent="Enter a username";return}if(t===""){n.textContent="Enter a password";return}if(this.accounts.some(r=>r.username===e)){n.textContent=`${e} is already saved`;return}if(this.legacy){let r=cs();r.push({username:ap(e),password:ap(t),color:o}),localStorage.setItem(ds,JSON.stringify(r)),this.accounts.push({username:e,color:o}),this.renderAccounts()}else this.send("add",{username:e,password:t,color:o});this.showForm(!1)}async removeAccount(e){this.asking=!0;let t=await Ce({title:"Remove account",paragraphs:[`${e.username} gets removed from this list.`,"The Krunker account itself is not touched."],stay:"Keep",leave:"Remove"});if(this.asking=!1,!t)return;let o=this.accounts.findIndex(n=>n.username===e.username);o!==-1&&(this.legacy?(localStorage.setItem(ds,JSON.stringify(cs().filter(n=>Pt(n.username)!==e.username))),this.accounts.splice(o,1),this.renderAccounts()):this.send("remove",{username:e.username}))}async login(e){this.closeMenu();let t=window.FRVR?.auth,o=localStorage.getItem("krunker_token")!==null;if(typeof t?.loginAsAnonymous!="function"||typeof t.isLoggedIn!="function"){if(o){sessionStorage.setItem(Ei,JSON.stringify({username:e.username,at:Date.now()})),window.logoutAcc(),Ao();return}}else{if(o){wn(rp),window.logoutAcc();for(let n=0;nconsole.error("[kute] accounts:",n))}window.loginOrRegister(),queueMicrotask(()=>{let n=U(".auth-toggle-btn");n.textContent?.includes("username")&&n.click(),queueMicrotask(()=>{if(this.legacy){this.legacyLogin(e.username);return}this.send("login",{username:e.username})})})}async finishSwitch(e){let t=0;for(let o=0;o=vv)){wn(rp),Ao();return}}}legacyLogin(e){let t=cs().find(r=>Pt(r.username)===e);if(!t)return;let o=ke("#accName"),n=ke("#accPass");o.value=e,n.value=Pt(t.password),o.dispatchEvent(new Event("input",{bubbles:!0})),n.dispatchEvent(new Event("input",{bubbles:!0})),U(".io-button").click()}},xv=new $i});var dp={};A(dp,{default:()=>he});var Sv,Ev,$v,Ti,cp,he,It=w(()=>{"use strict";D();Sv=4e3,Ev=5e3,$v=3,Ti=class{constructor(){this.base=typeof u.apiBase=="string"?u.apiBase:"https://kute.lol/api",this.health=null,this.down=!1,this.failures=0,this.listeners=new Set,u.settings.toggleDisableOnlineFeatures=e=>this.setOffline(e)}offline(){return u.settings?.data?.disableOnlineFeatures===!0}setOffline(e){this.health=e?Promise.resolve(!1):null,this.down=e,this.failures=0;for(let t of this.listeners)t(!e)}available(){return this.health??=this.check(),this.health}retry(){return this.health=null,this.down=!1,this.failures=0,this.available()}async check(){if(await Ne,this.offline())return this.down=!0,!1;try{let e=await fetch(`${this.base}/health`,{cache:"no-store",signal:AbortSignal.timeout(Sv)}),t=e.ok?await e.json():null;this.down=t?.ok!==!0}catch{this.down=!0}return!this.down}async request(e,t={}){let{data:o}=await this.requestStatus(e,t);return o}async requestStatus(e,t={}){if(!await this.available()||this.down||this.offline())return{status:0,data:null};try{let o=AbortSignal.timeout(Ev),n=t.signal?AbortSignal.any([t.signal,o]):o,r=await fetch(this.base+e,{...t,signal:n});r.status>=500?this.failed():r.ok&&(this.failures=0);let i=await r.json().catch(()=>null),a=r.headers.get("Retry-After"),l=0;a!==null&&(l=/^\d+(\.\d+)?$/.test(a)?Date.now()+Number(a)*1e3:Date.parse(a));let c=Number(r.headers.get("X-RateLimit-Reset"))*1e3,d=Math.max(l||0,c||0,Number(i?.resetAt)||0),p=r.status===429?Math.max(Date.now()+1e3,d||Date.now()+6e4):void 0;return{status:r.status,data:r.ok?i:null,error:r.ok?null:i,retryAt:p}}catch{return t.signal?.aborted||this.failed(),{status:0,data:null}}}failed(){this.failures++,this.failures>=$v&&(this.down=!0)}},cp=new Ti;u.api=cp;he=cp});var hp={};var pp,Cv,Mv,up,Ai=w(()=>{"use strict";D();Ae();pp=async s=>{window.openHostWindow(!1,1),await $e(".hostTb0");let e=document.querySelector(`#${s.mapId}`);if(!e){let c=document.querySelectorAll(".hostMap .hostMapName"),d=Array.from(c).find(p=>p.innerText.trim().toLowerCase()===s.mapId.toLowerCase());d&&(e=d.parentElement?.querySelector('input[type="checkbox"]')??null)}if(!e)return;e.checked||e.click(),windows[7].switchTab(2);let t=await $e("#customSnameTeam1");t.value=s.team1Name;let o=await $e("#customSnameTeam2");o.value=s.team2Name;let n=await $e("#customStmSize"),r={"1v1":"0","2v2":"1","3v3":"2","4v4":"3"};if(s.team1Players){let c=await $e("#compRosterT1");c.value=s.team1Players}if(s.team2Players){let c=await $e("#compRosterT2");c.value=s.team2Players}if(s.spectators){let c=await $e("#compRosterSpecs");c.value=s.spectators}let i=await $e("#customSspecSlots");i.value="4";let a=["ak","sniper","smg","lmg","shotgun","rev","semi","rpg","uzi","runner","deagler","crossbow","famas","blaster","survivor","infiltrator"];if(s.classes){let c=JSON.parse(s.classes);for(let[d,p]of Object.entries(c)){let h=a.indexOf(d),f=await $e(`#customSclassLim${h}`);f.value=String(p)}}let l=r[s.teamSize]||s.teamSize;if(n.value=l,s.webhook)try{let c=await $e("#customSwebhook");c.value=decodeURIComponent(s.webhook)}catch{}window.createPrivateRoom()},Cv=async s=>{let e={FRA:"de-fra",SV:"us-ca-sv",SYD:"au-syd",TOK:"jb-hnd",SIN:"sgp",NY:"us-nj",MUM:"as-mb",DAL:"us-tx",BR:"brz",ME:"me-bhn"},t=e[s.toUpperCase()]||s;window.showWindow(1);let o=document.querySelector("select.inputGrey2");if(!o){typeof window.setSetting=="function"&&window.setSetting("defaultRegion",t);return}let n=Object.values(e),r=Array.from(document.querySelectorAll("select.inputGrey2")).find(i=>Array.from(i.options).some(a=>n.includes(a.value)))||o;if(r&&r.value!==t){let i=Array.from(r.options).findIndex(a=>a.value===t);i!==-1&&(r.selectedIndex=i,r.dispatchEvent(new Event("change",{bubbles:!0,cancelable:!0})))}window.showWindow(1)},Mv=s=>{let e=s.includes("?")?s.split("?")[1]:s;return Object.fromEntries(new URLSearchParams(e).entries())},up=sessionStorage.getItem("pendingCompHost");if(up){sessionStorage.removeItem("pendingCompHost");let s=JSON.parse(up);pp(s)}u.parseArgs=async s=>{let e=s.split(" ");for(let t of e)if(t.includes("action=host-comp")){let o=Mv(t);o.region?(sessionStorage.setItem("pendingCompHost",JSON.stringify(o)),await Cv(o.region),window.location.href="https://krunker.io/"):await pp(o)}};window.chrome.webview.addEventListener("message",async s=>{s.data?.args&&await u.parseArgs(s.data.args)})});var fp={};A(fp,{CLOCK_MS:()=>Tv,EXPERIENCE:()=>us,IMPORTANT_SHARE:()=>ps,TARGET_REFRESH_MULTIPLE:()=>bt,accept:()=>ws,atLimit:()=>_o,capCandidates:()=>zi,choose:()=>fs,chooseCap:()=>_i,collapses:()=>bs,compare:()=>Pi,experienceHolds:()=>Av,flooding:()=>vs,guard:()=>so,headroom:()=>Bi,refineCaps:()=>Hi,screen:()=>Ii,stalled:()=>gs,steady:()=>no,steadyLimit:()=>Ni,steadyRungs:()=>Ln,summarize:()=>ye,unsteady:()=>gt,wins:()=>No});function Ri(s){let e=[...s].sort((o,n)=>o-n),t=Math.floor(e.length/2);return e.length%2===1?e[t]:(e[t-1]+e[t])/2}function ye(s){let e=s.filter(o=>!o.invalid),t={};for(let o of Io){let r=e.map(c=>c[o]).filter(c=>typeof c=="number"&&Number.isFinite(c)),i=[Math.min(...r),Math.max(...r)],[a,l]=hs.has(o)?i:i.reverse();t[o]={n:r.length,median:r.length>0?Ri(r):null,spread:r.length>1?Math.abs(l-a):null,worst:r.length>0?a:null,best:r.length>0?l:null}}return t}function ms(s){return s==="fps"?0:2*.1}function Pi(s,e,t){let o=e[s],n=t[s];if(o.median===null||n.median===null||o.spread===null||n.spread===null)return"unknown";let r=hs.has(s)?o.median-n.median:n.median-o.median,i=Math.max(o.spread,n.spread,ms(s)),a=Math.max(Math.abs(o.median),Math.abs(n.median))*.1;return Math.abs(r)<=i||Math.abs(r)0?"better":"worse"}function so(s,e,t,o=ms(s)){let n=e[s],r=t[s];if(n.n<2||typeof n.worst!="number"||r.median===null||r.spread===null)return"unknown";let i=hs.has(s)?r.median-n.worst:n.worst-r.median,a=Math.max(Math.abs(n.worst),Math.abs(r.median))*.1;return i>Math.max(r.spread,o)&&i>=a?"worse":"ok"}function No(s,e,t){let o=e[s],n=t[s];if(o.n<2||n.n<2||typeof o.worst!="number"||typeof n.best!="number")return!1;let r=hs.has(s)?o.worst-n.best:n.best-o.worst;return r>ms(s)&&r>=Math.max(Math.abs(o.worst),Math.abs(n.best))*.1}function Ii(s,e){if(s.invalid)return"same";let t=!1;for(let o of Io){let n=s[o],r=e[o];if(typeof n!="number"||r.median===null||r.spread===null)continue;let i=hs.has(o)?n-r.median:r.median-n,a=Math.max(Math.abs(n),Math.abs(r.median))*.1;if(!(Math.abs(i)<=Math.max(r.spread,ms(o))||Math.abs(i)0&&(t=!0)}}return t?"contender":"same"}function fs(s,e,t={}){let o=ye(s.readings),n=e.map(c=>{let d=ye(c.readings),p={};for(let m of Io)p[m]=Pi(m,d,o);let h=us.some(m=>so(m,d,o)==="worse"),f=us.find(m=>No(m,d,o))??null;return f===null&&t.fpsCounts!==!1&&No("fps",d,o)&&(f="fps"),{id:c.id,summary:d,verdicts:p,rejected:h,decidedBy:f}}),r=n.length>0&&n.every(c=>Io.every(d=>c.verdicts[d]==="unknown")),i=c=>c.decidedBy===null?Io.length:Io.indexOf(c.decidedBy),l=n.filter(c=>!c.rejected&&c.decidedBy!==null).sort((c,d)=>i(c)-i(d))[0]??null;return{winner:l?.id??s.id,changed:l!==null,inconclusive:r,decidedBy:l?.decidedBy??null,incumbent:o,judged:n}}function gs(s){return!s.invalid&&typeof s.stallMs=="number"&&s.stallMs>1e3*.1}function gt(s,e){return s.some(t=>gs(t)||!t.invalid&&e>0&&typeof t.fps=="number"&&t.fps!t.invalid).length>=2&&!gt(s,e)}function bs(s){return[...s.values()].some(e=>e.filter(gs).length>=2)}function Ln(s){return Array.from({length:4},(e,t)=>(t+1)*s)}function Ni(s,e){let t=null,o=null;for(let n of Ln(s)){if(!no(e.get(n)??[],n))break;t=o??n,o=n}return{cap:t,steadyUpTo:o}}function vs(s){let{presentMs:e,p50:t}=s;return typeof e!="number"||typeof t!="number"?!1:e-t>Math.max(2*.1,e*.1)}function _o(s){let e=s.p50,t=r=>typeof r=="number"&&typeof e=="number"?Math.max(0,r-e):null,o=vs(s)?s.presentMs-e:0,n=typeof s.inputP99=="number"?s.inputP99+o:s.inputP99;return{...s,fps:null,p99:t(s.p99),maxMs:t(s.maxMs),inputP99:n}}function mp(s){return s==="p99"||s==="maxMs"?4*.1:ms(s)}function _i(s,e,t={}){let o=h=>ye((s.get(h)??[]).map(_o)),n=h=>{let f=(s.get(h)??[]).filter(m=>!m.invalid).map(m=>m.p50).filter(m=>typeof m=="number");return f.length>0?Ri(f):null},r=o(e),i=n(e),a=new Map,l=[...s.keys()].map(h=>{let f=o(h),m=n(h);if(h===e)return{cap:h,summary:f,frameMs:m,netMs:null,outcome:"yours"};if(gt(s.get(h)??[],h))return{cap:h,summary:f,frameMs:m,netMs:null,outcome:"not steady"};let g=Object.fromEntries(Li.map(H=>[H,Pi(H,f,r)])),b=e===0||h>0&&hNo(H,f,r)?(r[H].median??0)-(f[H].median??0):0,E=k("taskP99"),L=t.trade===!0&&so("inputP99",f,r)==="worse"?(f.inputP99.median??0)-(r.inputP99.median??0):0,x=g.inputP99==="unknown"?null:k("inputP99")-L,$=E+(x??i-m);a.set(h,E+(x??0));let I=L>0&&E>L,_="not better";return Li.some(H=>(H!=="inputP99"||!I)&&so(H,f,r,mp(H))==="worse")?_="worse":$>2*.1&&(_="better"),{cap:h,summary:f,frameMs:m,netMs:$,gains:{task:E,input:x},outcome:_}}),c=l.filter(h=>h.outcome==="better").sort((h,f)=>(f.netMs??0)-(h.netMs??0));if(c.length>0)return{winner:c[0].cap,changed:!0,decidedBy:"net",judged:l};let d=l.find(h=>h.cap===t.prefer&&h.cap!==e),p=d!==void 0&&(e===0||d.capd.filter(p=>!p.invalid);if(r(s).length<2)return{keep:!1,failed:"reference"};if(r(e).length<2)return{keep:!1,failed:"result"};let i=ye(s.map(_o)),a=ye(e.map(_o)),l=so("fps",ye(e),ye(s))==="worse";if(gt(e,o)&&!(gt(s,t)&&No("stallMs",a,i)&&!l))return{keep:!1,failed:"unsteady"};let c;for(let d of Li){let p=so(d,a,i,mp(d));if(p==="worse"&&d==="inputP99"&&n&&No("taskP99",a,i)){let h=(i.taskP99.median??0)-(a.taskP99.median??0),f=(a.inputP99.median??0)-(i.inputP99.median??0);if(h>f){c={task:h,input:f};continue}}if(p==="worse")return{keep:!1,failed:d};if(p==="unknown"&&d!=="inputP99")return{keep:!1,failed:"reference"}}if(so("inputP99",a,i)==="unknown"){let d=h=>Ri(r(h).map(f=>f.p50??0));if(d(e)-d(s)>Math.max(2*.1,d(e)*.1))return{keep:!1,failed:"frame"}}return t===o&&l?{keep:!1,failed:"fps"}:{keep:!0,failed:null,...c?{traded:c}:{}}}function Bi(s,e){return 1+Math.max(2*Math.abs(1-s),e)}function Av(s,e){let t=1e3/e,o=s.p99.median,n=s.stallMs.median;return(o===null||o<=t)&&(n===null||n<=t)}function zi({hz:s,capacity:e,current:t}){let o=i=>e===null||i<=e,n=[3*s,2*s,s].filter(o);return e!==null&&n.push(Math.round(e*.9)),t>0&&n.push(t),[0,...[...new Set(n.map(i=>Math.round(i)).filter(i=>i>0))].sort((i,a)=>a-i)]}function Hi(s,e,t,o){let n=l=>l===0?t??1/0:l,r=[...new Set(s)].sort((l,c)=>n(l)-n(c)),i=r.indexOf(e),a=[];for(let l of[r[i-1],r[i+1]]){if(l===void 0)continue;let c=(n(e)+n(l))/2;Number.isFinite(c)&&a.push(Math.round(c/o)*o)}return[...new Set(a)].filter(l=>l>0&&l!==e&&!s.includes(l))}var ps,bt,Tv,us,Io,hs,Li,ks=w(()=>{"use strict";ps=.1,bt=3,Tv=.1,us=["taskP99","inputP99","p99","stallMs","maxMs"],Io=[...us,"fps"],hs=new Set(["fps"]);Li=["taskP99","inputP99","p99","stallMs","maxMs"]});var vp={};A(vp,{PIPELINE:()=>Oe,cancel:()=>Di,currentPipeline:()=>Pn,measureCaps:()=>qi,searchPipeline:()=>Fi});function Pn(){return Object.fromEntries(Oe.map(s=>[s.setting,(u.running?.[s.setting]??u.settings.data[s.setting])!==!1]))}function bp(s,e){return s!=="hardFlip"||!e.hardFlip?null:u.settings.data.obsCapturePlugin===!0?"kept, OBS capture needs it":null}function ct(s,e){let t=Oe.map(r=>`${r.key}=${s[r.setting]?1:0}`),o=Rv.map(r=>`${r.key}=${u.settings.data[r.setting]??r.fallback?1:0}`),n=`limiter=${u.settings.data.patchFrameLimiter===!1?"hook":"viz"}`;return[...t,...o,n,e].filter(r=>r!=="").join(",")}function Oi(s,e,t){let o=n=>typeof n=="number"&&Number.isFinite(n)?n:null;return{fps:o(s?.fps),p50:o(s?.p50),p99:o(s?.p99),maxMs:o(s?.maxMs),stallMs:o(s?.stallMs),taskP99:o(e?.p99),inputP99:null,presentMs:o(t?.p50),invalid:!s||!(s.fps>0)}}function ys(s,e){let t=Date.now()*100+ ++_v%100;return new Promise(o=>{let n={timer:0},r=i=>{i.data?.benchMatrix===void 0||i.data.benchRun!==t||(clearTimeout(n.timer),window.chrome.webview.removeEventListener("message",r),o(i.data.cancelled?null:i.data.benchMatrix))};n.timer=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),window.chrome.webview.postMessage("bench-cancel"),o(null)},e),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(`run-bench-matrix ${t} ${JSON.stringify(s)}`)})}function Di(){window.chrome.webview.postMessage("bench-cancel")}async function Fi({hz:s,progress:e,cancelled:t}){let o=Pn();e("Testing the client (1 of 4)",0);let n=await ys([ct(o,`hz=${s}`)],Rn),r=Oi(n?.[0]?.page?.stats,n?.[0]?.page?.otherTasks);if(t()||r.invalid||r.fps===null)return null;let i=n?.[0]?.page?.load,a=Math.min(gp[1],Math.max(gp[0],r.fps/(s*3))),l=`hz=${s},draws=${Math.round(i.draws*a)},cpu=${Math.round(i.cpuIterations*a)}`,c=Oe.filter($=>bp($.setting,o)===null).map($=>({entry:$,pipeline:{...o,[$.setting]:!o[$.setting]}}));e("Testing the client (2 of 4)",.15);let d=await ys([ct(o,l),...c.map($=>ct($.pipeline,l)),ct(o,l)],Rn*(c.length+2));if(t()||d===null)return null;let p=$=>Oi($?.page?.stats,$?.page?.otherTasks,$?.present),h=[p(d[0]),p(d[d.length-1])],f=ye(h),m=Lv.some($=>{let{median:I,spread:_}=f[$];return I!==null&&_!==null&&_>Math.abs(I)*.1}),g=[{id:"current",label:"As you had it",pipeline:o,readings:h,outcome:"current"}];for(let $ of Oe){let I=bp($.setting,o);I!==null&&g.push({id:$.setting,label:`${$.label} off`,pipeline:o,readings:[],outcome:I})}let b=[];for(let[$,I]of c.entries()){let _=p(d[$+1]),H=_.invalid?"failed":Ii(_,f);m&&!_.invalid&&(H="contender");let G=`${I.entry.label} ${I.pipeline[I.entry.setting]?"on":"off"}`,J={id:I.entry.setting,label:G,pipeline:I.pipeline,readings:[_],outcome:Nv[H]};g.push(J),H==="contender"&&b.push(J)}if(b.length===0)return{winner:o,changed:!1,decidedBy:null,rows:g,common:l,capacity:f.fps.median};e("Testing the client (3 of 4)",.55);let v=await ys([...b.map($=>ct($.pipeline,l)),ct(o,l)],Rn*(b.length+1));if(t()||v===null)return null;for(let[$,I]of b.entries())I.readings.push(p(v[$]));h.push(p(v[v.length-1]));let k=fs({id:"current",readings:h},b.map($=>({id:$.id,readings:$.readings})));for(let $ of b){let I=k.judged.find(_=>_.id===$.id);$.outcome="not better",I?.rejected?$.outcome="worse":I?.decidedBy&&($.outcome="better")}let E=b.filter($=>$.outcome==="better"),L=g.find($=>$.id===k.winner)??g[0];if(E.length>1){e("Testing the client (4 of 4)",.8);let $={...o};for(let J of E)$[J.id]=J.pipeline[J.id];let I=await ys([ct($,l),ct(o,l),ct($,l)],Rn*3);if(t()||I===null)return null;h.push(p(I[1]));let _={id:"combined",label:E.map(J=>J.label).join(" and "),pipeline:$,readings:[p(I[0]),p(I[2])],outcome:"not better"};g.push(_);let H=fs({id:L.id,readings:L.readings},[{id:_.id,readings:_.readings}]),G=fs({id:"current",readings:h},[{id:_.id,readings:_.readings}]);H.changed&&G.changed&&(_.outcome="better",L=_,k=G)}let x=L.id!=="current";return{winner:L.pipeline,changed:x,decidedBy:x?k.decidedBy:null,rows:g,common:l,capacity:ye(L.readings).fps.median}}async function qi({pipeline:s,common:e,caps:t,cancelled:o}){let n=`${ct(s,e)},caps=${t.join(".")},rounds=2,ms=${Iv}`,i=(await ys([n],Pv))?.[0]?.page?.caps;if(o()||!Array.isArray(i))return null;let a=new Map(t.map(l=>[l,[]]));for(let l of i)a.get(Number(l.cap))?.push(Oi(l.stats,l.otherTasks));return a}var Lv,Oe,Rv,Rn,Pv,Iv,gp,Nv,_v,Ki=w(()=>{"use strict";D();ks();Lv=["fps","taskP99","p99"],Oe=[{setting:"hardFlip",key:"hook",label:"DXGI Swapchain Hook"},{setting:"patchFramePacing",key:"pacing",label:"Frame Pacing"},{setting:"patchCanvasBufferCache",key:"canvas",label:"WebGL Buffer Cache"},{setting:"patchHighQoS",key:"qos",label:"Game Process at High QoS"}].filter(s=>u.platform!=="linux"||s.setting!=="hardFlip"&&s.setting!=="patchHighQoS"),Rv=[{setting:"patchInputPriority",key:"inprio",fallback:!0},{setting:"patchRawInputMovement",key:"rawinput",fallback:!0},{setting:"patchAudioParamCoalesce",key:"coalesce",fallback:!0},{setting:"audioFix",key:"panner",fallback:!1},{setting:"uncapFps",key:"uncap",fallback:!0}],Rn=2e4,Pv=7e4,Iv=1500,gp=[.25,16],Nv={contender:"better",same:"not better",worse:"worse",failed:"failed"};_v=0});var kp={};A(kp,{MIN_RESOLUTION:()=>xs,SIGNIFICANT_RESOLUTION:()=>wp,SIGNIFICANT_SETTING:()=>In,decide:()=>Nn});function Nn({capacity:s,hz:e,headroom:t,halfResolutionGain:o,settings:n}){let r=e*3,i=r*t,a=s>=i,l="unknown";o!==null&&(l=o>=wp?"gpu":"cpu");let c=[],d=s;if(!a){let p=n.filter(h=>h.gain!==null&&h.steady&&h.current!==h.cheap&&h.gain>=In).sort((h,f)=>(f.gain??0)-(h.gain??0));for(let h of p){if(d>=i)break;let f=h.gain??1;d*=f,c.push({id:h.id,label:h.label,value:h.cheap,reason:`measured +${Math.round((f-1)*100)} %`})}}return{target:r,needed:i,holds:a,regime:l,predictedFps:d,tuneResolution:!a&&l==="gpu"&&d{"use strict";ks();In=1.05,wp=1.1,xs=.75});var Yi={};A(Yi,{ALL_IDS:()=>Gi,GAME_FRAME_CAP:()=>wt,PRESET:()=>Ui,RESOLUTION:()=>ro,SETTINGS:()=>vt,label:()=>Wi,opposite:()=>Vi,read:()=>Es,resetCache:()=>_n,write:()=>Me});function Wi(s){return vt.find(e=>e.id===s)?.label??s}function Bv(){if(Ss)return Ss;let s=window.windows[0],e=s.tabIndex,t=s.settingType,o="";try{s.settingType="advanced";for(let n=0;n{"use strict";vt=[{id:"postProcessing",label:"Post Processing",cheap:!1},{id:"shadowsDynamic",label:"Dynamic Shadows",cheap:!1},{id:"softShad",label:"Soft Shadows",cheap:!1,needsReload:!0},{id:"highResShad",label:"High-Res Shadows",cheap:!1,needsReload:!0},{id:"shadows",label:"Shadows",cheap:!1},{id:"antiAlias",label:"Antialiasing",cheap:!1,needsReload:!0},{id:"reflection",label:"Reflection Quality",cheap:"1",needsReload:!0},{id:"lighting",label:"Lighting",cheap:"0",needsReload:!0},{id:"weaponShine",label:"Weapons Shine",cheap:!1},{id:"ambientShading",label:"Old Shading",cheap:!1},{id:"particles",label:"Particles",cheap:!1,fightOnly:!0},{id:"showExplo",label:"Explosions",cheap:!1,fightOnly:!0},{id:"textureAnim",label:"Texture Animations",cheap:!1},{id:"objectAnim",label:"Object Animations",cheap:!1},{id:"bulletCasings",label:"Bullet Casings",cheap:!1,fightOnly:!0},{id:"impactHoles",label:"Bullet Impact Holes",cheap:!1,fightOnly:!0},{id:"noPaintAnim",label:"Disable Animated Paints",cheap:!0,needsReload:!0},{id:"mapDet",label:"Map Details",cheap:!1,needsReload:!0},{id:"lowSpec",label:"Low Spec",cheap:!0}],Ui={postProcessing:!1,particles:!1,showExplo:!1,bulletCasings:!1,impactHoles:!1,reflection:"1",lighting:"0",softShad:!1,highResShad:!1,noPaintAnim:!0},ro="resolution",wt="updateRate",Gi=[...vt.map(s=>s.id),ro,wt];Ss=null});var xp,yp=w(()=>{xp=`

    Auto-Detect

    Don't touch mouse or keyboard. Escape cancels
    Undo
    Details
    Advanced
    Run now
    OK
      `});var Sp={};A(Sp,{activity:()=>_t,hostLobby:()=>$s,inRoom:()=>Bn,spawn:()=>Cs,spawned:()=>Ji});function _t(){try{return window.getGameActivity?.()??{}}catch{return{}}}function Bn(s){let e=_t();return!!s&&!!e.custom&&e.id===s}async function $s(){if(typeof window.openHostWindow!="function"||typeof window.createPrivateRoom!="function")return null;let s=_t().id;for(let e=0;e<4;e++){window.openHostWindow(!1,0),await Nt(800),window.windows[7]?.switchTab?.(0),await Nt(300);let t=[...document.querySelectorAll("#windowHolder input[id^=gameMap]")],o=document.querySelector("#makePrivate");if(t.length===0||!o)return window.closWind?.(),null;for(let r of t)r.checked!==(r.id===Hv)&&r.click();let n=!o.checked;n&&o.click();try{window.createPrivateRoom();for(let r=0;r<32;r++){await Nt(250);let i=_t();if(i.custom&&i.id&&i.id!==s&&i.map)return i.id}}finally{n&&o.checked&&o.click()}window.closWind?.(),await Nt(1500)}return null}function Ji(){let s=document.querySelector("#instructions");return!!document.pointerLockElement||s!==null&&getComputedStyle(s).display==="none"}async function Cs(s){for(let o=0;o<40&&!(_t().map&&document.querySelector("#instructions"));o++)await Nt(250);await Nt(500);let e=Math.round(window.innerWidth/2),t=Math.round(window.innerHeight/2);for(let o=0;o<3&&!Ji();o++){if(!Bn(s))return!1;window.chrome.webview.postMessage(`click, ${e}, ${t}`),await Nt(1200)}return await Nt(800),Ji()}var Hv,Nt,zn=w(()=>{"use strict";Hv="gameMap0",Nt=s=>new Promise(e=>{setTimeout(e,s)})});var Cp={};A(Cp,{REPLAY_CIRCLE_MS:()=>Bt,takeInputDiagnostics:()=>Hn,takeReading:()=>Zi});function Hn(){let s=Qe;return Qe=$p(),s}function Zi({ms:s,hz:e,replay:t}){return new Promise((o,n)=>{let r=new to,i=new oo,a=new os,l=()=>document.hasFocus()&&document.visibilityState==="visible",c=document.pointerLockElement!==null,d=l()?null:"the window was not in front",p=()=>{l()||(d??="the window lost focus")},h=()=>{document.pointerLockElement!==null!==c&&(d??=c?"the game let go of the mouse":"the game took the mouse")},f=()=>{window.removeEventListener("blur",p),document.removeEventListener("visibilitychange",p),document.removeEventListener("pointerlockchange",h)};window.addEventListener("blur",p),document.addEventListener("visibilitychange",p),document.addEventListener("pointerlockchange",h);let m=setTimeout(()=>{f(),i.stop(),a.stop(),window.chrome.webview.postMessage("input-replay-stop"),n(new Error("the game stopped drawing frames"))},s+5e3);i.start(),a.start(),Qe.readings++,t&&c&&(Qe.asked++,window.chrome.webview.postMessage(`input-replay, ${s}`));let g=performance.now(),b=()=>{let v=performance.now();if(r.frame(v),v-g=Ep&&Qe.withInput++,L===null&&(d??="too few frames"),d!==null&&(Qe.invalid[d]=(Qe.invalid[d]??0)+1),o({fps:L?.fps??null,p50:L?.p50??null,p99:L?.p99??null,maxMs:L?.maxMs??null,stallMs:L?.stallMs??null,taskP99:k.p99,inputP99:E.events>=Ep?E.p99:null,invalid:d!==null,...d===null?{}:{why:d}})};requestAnimationFrame(b)})}var Bt,Ep,$p,Qe,Qi=w(()=>{"use strict";yn();Bt=600,Ep=20,$p=()=>({readings:0,asked:0,withInput:0,pageEvents:0,hostSteps:0,ended:{},invalid:{}}),Qe=$p();window.chrome.webview.addEventListener("message",s=>{let e=s.data?.inputReplay;e&&(Qe.hostSteps+=Number(e.sent)||0,Qe.ended[e.reason]=(Qe.ended[e.reason]??0)+1)})});var ia={};A(ia,{loggedIn:()=>As});function zt(){try{return JSON.parse(localStorage.getItem(qn)??"null")}catch{return null}}function Fe(s){localStorage.setItem(qn,JSON.stringify(s))}function As(){return document.querySelector("#signedInHeaderBar")!==null}function Ht(s,e){u.settings.data[s]=e,window.chrome.webview.postMessage(`set-config, ${s}, ${e}`);for(let t of[`#${s}`,`#slid_input_${s}`]){let o=document.querySelector(t);o&&(o.type==="checkbox"?o.checked=e===!0:o.value=String(e))}}function ut(s){return s==null?"default":String(s)==="true"?"on":String(s)==="false"?"off":String(s)}function Gv(){let s=/--autodetect-dev=(\S+)/.exec(u.launchArgs??""),e={};for(let t of s?.[1].split(",")??[]){let[o,n]=t.split(":");o==="hz"&&(e.hz=Number(n)),o==="battery"&&(e.battery=!0),o==="laptop"&&(e.laptop=!0),o==="force"&&(e.force=n),o==="collapse"&&(e.collapse=Number(n))}return e}function Pp(s){let e=Math.round((s-1)*100);return`${e>0?"+":""}${e} %`}function yt(s,e=1){return s===null?"?":s.toFixed(e)}function Dt(s){return s>0?`${s} FPS`:"no limit"}function Wv(s,e,t){if(s===null)return"measured as smooth, with fewer frames to draw";let o=`${yt(e[s].median)} to ${yt(t[s].median)}`;return{taskP99:`the game reacts sooner: other work waited up to ${o} ms`,inputP99:`mouse input waits ${o} ms`,p99:`slowest frames ${o} ms`,stallMs:`stutter ${o} ms per second`,maxMs:`longest frame ${o} ms`,fps:`${yt(e.fps.median,0)} to ${yt(t.fps.median,0)} FPS`}[s]}function Ip(s,e=""){return s===null?"-":`${e}${s.toFixed(1)} ms`}function Ot(s,e=""){return s===null?"-":`${e}${s.toFixed(1)}`}function sa(s){return`${yt(s.fps.median,0)}${Ot(s.p99.median)}${Ot(s.taskP99.median)}${Ot(s.inputP99.median)}`}function Kn(s){let e=s.filter(o=>typeof o=="number").sort((o,n)=>o-n);if(e.length===0)return null;let t=Math.floor(e.length/2);return e.length%2===1?e[t]:(e[t-1]+e[t])/2}function Vv(s){if(!s||s.readings===0)return"";if(s.withInput>0)return`

      Input test: ${s.withInput} of ${s.readings} readings in the match had mouse input from Kute (${s.hostSteps} steps sent, ${s.pageEvents} seen by the game).

      `;let e=Object.entries(s.ended).filter(([o])=>o!=="done"&&o!=="stopped").map(([o,n])=>`${o}: ${n}x`).join(", "),t="the game did not hold the mouse when the readings started";return s.asked>0&&(t=e||`Kute sent ${s.hostSteps} steps, the game saw ${s.pageEvents} mouse events`),`

      The input test did not reach the game (${t}). Mouse wait and settings that only cost in a fight were not measured.

      `}function dt(s,e){let t=s.filter(r=>typeof r=="number").map(Math.round);if(t.length===0)return"-";let[o,n]=[Math.min(...t),Math.max(...t)];return o===n?`${o} ${e}`:`${o} to ${n} ${e}`}function Yv(s){let e=[[`As you had it (${Dt(s.beforeCap)})`,s.played??[]],["no limit, first readings",s.unlimited??[]],...s.caps.filter(d=>d.where==="test match").map(d=>[Dt(d.cap),d.readings??[]])],{render:t=null,display:o=null}=s.adapters??{},n=t!==null&&o!==null&&t!==o,r=d=>{let p=(d?.nvidia??[]).map(h=>h.clockMhz).filter(h=>typeof h=="number");return p.length>0?Math.max(...p):null},i=d=>{let p=(d?.nvidia??[]).reduce((f,m)=>f|(m.heldBack??0),0),h=[[1,"heat"],[2,"power limit"],[4,"battery"],[16,"weak power supply"]].filter(([f])=>(p&Number(f))!==0).map(([,f])=>f);return h.length>0?h.join(", "):p===0?"no":`yes (${p})`},a=[...s.played??[],...s.unlimited??[]].some(d=>(d.load?.nvidia??[]).length>0),l=e.filter(([,d])=>d.some(p=>p.load)).map(([d,p])=>{let h=p.map(m=>m.load),f=(m,g)=>dt(h.map(b=>m===null?null:b?.gpu?.[m]?.[g]),"%");return`${d}${dt(p.map(m=>m.fps),"")}${dt(h.map(m=>m?.cpuBusy),"%")} + ${dt(h.map(m=>m?.cpuSpeed),"%")}${f(t,"render")}${a?`${dt(h.map(r),"MHz")}`:""} ${n?`${f(o,"render")}${f(o,"copy")}`:""} - ${dt(p.map(m=>m?.temperature),"C")}${dt(p.map(m=>m?.thermalLimit),"%")}`});if(l.length===0)return"";let c=(s.trace??[]).map(u=>`${(u.ms/1e3).toFixed(1)} s${u.fps}${dt([u.load?.cpuSpeed],"%")} - ${dt([t===null?null:u.load?.gpu?.[t]?.render],"%")}${dt([r(u.load)],"MHz")}${i(u.load)}`);return`
      ${a?"":""} + `});if(l.length===0)return"";let c=(s.trace??[]).map(d=>` + `);return`
      FPSProcessor busyProcessor speedGraphics card busyGraphics clock${dt(h.map(m=>m?.temperature),"C")}${dt(h.map(m=>m?.thermalLimit),"%")}
      ${(d.ms/1e3).toFixed(1)} s${d.fps}${dt([d.load?.cpuSpeed],"%")}${dt([t===null?null:d.load?.gpu?.[t]?.render],"%")}${dt([r(d.load)],"MHz")}${i(d.load)}
      ${a?"":""} ${n?"":""}${l.join("")}
      FPSProcessor busyProcessor speedGraphics card busyGraphics clockScreen's chip busyScreen's chip copyingHottestHeat limit

      Processor speed is its share of the nominal clock: above 100 % with turbo, far below while the PC throttles it. A heat limit under 100 % means the firmware slows the PC down. A graphics clock that drops while the frame rate drops means the graphics driver is saving power.

      - ${c.length>0?`

      Without a limit, step by step

      ${c.join("")}
      TimeFPSProcessor speedGraphics card busyGraphics clockDriver holds it back
      `:""}`}function Xv(s){if(s.outcome!=="not steady")return"";let e=Math.max(0,...(s.readings??[]).map(t=>t.stallMs??0));return e>0?` (stood still ${Math.round(e/10)} % of the time)`:" (did not reach it)"}function Np(s,e=""){return`${s}${e}`}function Bo(s,e,{wide:t=!1,unit:o=""}={}){return`

      ${s}${o?`${o}`:""}

      ${e}
      `}function On(s,e,t="adNum"){return`
      ${s}${e.join("")}
      `}function Jv(s){let e=new Set(s.plan.changes.map(x=>x.id)),t=x=>x.gain===null&&!e.has(x.id)&&!!x.note,o=s.settings.filter(x=>!t(x)).map(x=>{let $=x.note??"";x.gain!==null&&($=x.steady?`${Pp(x.gain)} when ${ut(x.cheap)}`:"unsteady, not used");let I=e.has(x.id)?`set to ${ut(x.cheap)}`:'kept';return`${x.label}${ut(x.current)}${$}${I}`}),n=s.pipeline.map(x=>`${x.label}${oa(ye(x.readings))}${Np(x.outcome)}`),r='LimitFrame timeSlowest 1 %Other work waitsMouse waitsGainResult',i=["client test","test match"].map(x=>{let $=s.caps.filter(I=>I.where===x).map(I=>`${Ft(I.cap)}${Ot(I.frameMs)} + ${c.length>0?`

      Without a limit, step by step

      ${c.join("")}
      TimeFPSProcessor speedGraphics card busyGraphics clockDriver holds it back
      `:""}`}function Xv(s){if(s.outcome!=="not steady")return"";let e=Math.max(0,...(s.readings??[]).map(t=>t.stallMs??0));return e>0?` (stood still ${Math.round(e/10)} % of the time)`:" (did not reach it)"}function Np(s,e=""){return`${s}${e}`}function Bo(s,e,{wide:t=!1,unit:o=""}={}){return`

      ${s}${o?`${o}`:""}

      ${e}
      `}function Dn(s,e,t="adNum"){return`
      ${s}${e.join("")}
      `}function Jv(s){let e=new Set(s.plan.changes.map(x=>x.id)),t=x=>x.gain===null&&!e.has(x.id)&&!!x.note,o=s.settings.filter(x=>!t(x)).map(x=>{let $=x.note??"";x.gain!==null&&($=x.steady?`${Pp(x.gain)} when ${ut(x.cheap)}`:"unsteady, not used");let I=e.has(x.id)?`set to ${ut(x.cheap)}`:'kept';return`${x.label}${ut(x.current)}${$}${I}`}),n=s.pipeline.map(x=>`${x.label}${sa(ye(x.readings))}${Np(x.outcome)}`),r='LimitFrame timeSlowest 1 %Other work waitsMouse waitsGainResult',i=["client test","test match"].map(x=>{let $=s.caps.filter(I=>I.where===x).map(I=>`${Dt(I.cap)}${Ot(I.frameMs)} ${Ot(I.summary.p99.median,"+")}${Ot(I.summary.taskP99.median)}${Ot(I.summary.inputP99.median)} - ${I.netMs===null?"":Ot(I.netMs,I.netMs>0?"+":"")}${Np(I.outcome,Xv(I))}`);return{where:x,html:$.length>0?On(r,$):""}}).filter(x=>x.html),a={cpu:"the processor",gpu:"the graphics card",unknown:null}[s.plan.regime],l="Not measured whether the processor or the graphics card holds the frame rate back.";a&&(l=`Limited by ${a}${s.halfResolutionGain===null?"":` (half the resolution: ${Pp(s.halfResolutionGain)})`}.`);let c=new Map;for(let x of s.settings.filter(t)){let $=x.note??"";c.set($,[...c.get($)??[],`${x.label} ${ut(x.current)}`])}let u=[...c].map(([x,$])=>`

      ${x.charAt(0).toUpperCase()}${x.slice(1)}, kept as they were: ${$.join(", ")}.

      `),h=(o.length>0?On('SettingWasMeasuredResult',o,""):"")+u.join(""),p="";s.hybrid===!0?p=" Two graphics chips: frames get copied from one to the other.":s.hybrid===null&&(p=" Could not tell which graphics chip drives the screen.");let f="FPSSlowest 1 %Other work waitsMouse waits",m=`

      Without an FPS limit this PC ran ${Math.round(s.capacity)} FPS in the test match. Kute aims for at least ${s.plan.target} FPS + ${I.netMs===null?"":Ot(I.netMs,I.netMs>0?"+":"")}${Np(I.outcome,Xv(I))}`);return{where:x,html:$.length>0?Dn(r,$):""}}).filter(x=>x.html),a={cpu:"the processor",gpu:"the graphics card",unknown:null}[s.plan.regime],l="Not measured whether the processor or the graphics card holds the frame rate back.";a&&(l=`Limited by ${a}${s.halfResolutionGain===null?"":` (half the resolution: ${Pp(s.halfResolutionGain)})`}.`);let c=new Map;for(let x of s.settings.filter(t)){let $=x.note??"";c.set($,[...c.get($)??[],`${x.label} ${ut(x.current)}`])}let d=[...c].map(([x,$])=>`

      ${x.charAt(0).toUpperCase()}${x.slice(1)}, kept as they were: ${$.join(", ")}.

      `),p=(o.length>0?Dn('SettingWasMeasuredResult',o,""):"")+d.join(""),h="";s.hybrid===!0?h=" Two graphics chips: frames get copied from one to the other.":s.hybrid===null&&(h=" Could not tell which graphics chip drives the screen.");let f="FPSSlowest 1 %Other work waitsMouse waits",m=`

      Without an FPS limit this PC ran ${Math.round(s.capacity)} FPS in the test match. Kute aims for at least ${s.plan.target} FPS (${3}x your ${s.hz} Hz screen), and this PC needs ${Math.round(s.plan.needed)} to keep that in a fight: samples of the same settings differ by ${Math.round(s.noise*100)} %, and it ended the run at ${Math.round(s.drift*100)} % of its starting speed.

      `;if(s.pushed){let x=(s.unlimited??[]).map(H=>yt(H.fps,0)).join(", "),{limit:$,steadyUpTo:I}=s.pushed,_=`No limit ran steadily, not even your screen's ${s.hz} FPS, so there was no limit to offer.`;$!==null&&I!==null&&(_=`Up to ${I} FPS it ran steadily in the empty test match. A real match is heavier than that, so the limit with room is the highest multiple of your ${s.hz} Hz that has ${I>$?"one more steady step above it":"run steadily"}: ${$} FPS. A limit of your own that runs steadily is kept, a lower one would make the mouse wait longer.`),m=`

      This PC does not run steadily without an FPS limit: it stood still ${Math.round(s.pushed.stoodStill*100)} % of the time (readings without a limit: ${x} FPS). That happens when a PC throttles itself under full load, common on laptops.

      -

      ${_} Game settings were not measured, their gain is read without a limit.

      `}let g=s.played??[],b=g.some(bs)?`

      The game drew more frames than reached the screen: one every ${Ip(qn(g.map(x=>x.p50)))}, shown one every ${Ip(qn(g.map(x=>x.presentMs)))}.

      `:"",v=Yv(s),k=s.pushed?"On a PC that does not run steadily without a limit, the limits are not compared with each other: each one only has to run steadily.":"A limit is taken when the game reacts sooner or the mouse waits less with it than with yours (gain above zero), and never when anything measures worse. A lower limit's longer frames are in the mouse wait. Slowest 1 % counts beyond the frame time.",E=i.map((x,$)=>Bo(`${x.where}: FPS limits`,`${x.html}${$===i.length-1?`

      ${k}

      `:""}`,{unit:"times in ms"}));return`
      ${[Bo("This PC",`

      ${s.gpu}
      ${s.cpu}${s.laptop?" (laptop)":""}, ${s.hz} Hz${s.powerOverlay?`, Windows power mode: ${s.powerOverlay}`:""}.${p}

      - ${m}${s.rolledBack?`

      ${s.rolledBack}

      `:""}${s.pipelineRefused?`

      ${s.pipelineRefused}

      `:""}${Vv(s.input)}${b}`),Bo("Before and after",`${On(`${f}`,[`Before (${Ft(s.beforeCap)})${oa(s.before)}`,s.after?`After (${Ft(s.afterCap)})${oa(s.after)}`:""])}${s.after?"":'

      Your setup stayed as it was, so there is no after to measure.

      '}`,{unit:"times in ms"}),Bo("Client test: setup",n.length>0?On(`Setup${f}Result`,n,"adNum adWrap"):"

      The client test did not run, the client's own setup was left alone.

      ",{unit:"times in ms"}),...E,Bo("Test match: game settings",`

      ${l}

      ${h} +

      ${_} Game settings were not measured, their gain is read without a limit.

      `}let g=s.played??[],b=g.some(vs)?`

      The game drew more frames than reached the screen: one every ${Ip(Kn(g.map(x=>x.p50)))}, shown one every ${Ip(Kn(g.map(x=>x.presentMs)))}.

      `:"",v=Yv(s),k=s.pushed?"On a PC that does not run steadily without a limit, the limits are not compared with each other: each one only has to run steadily.":"A limit is taken when the game reacts sooner or the mouse waits less with it than with yours (gain above zero), and never when anything measures worse. A lower limit's longer frames are in the mouse wait. Slowest 1 % counts beyond the frame time.",E=i.map((x,$)=>Bo(`${x.where}: FPS limits`,`${x.html}${$===i.length-1?`

      ${k}

      `:""}`,{unit:"times in ms"}));return`
      ${[Bo("This PC",`

      ${s.gpu}
      ${s.cpu}${s.laptop?" (laptop)":""}, ${s.hz} Hz${s.powerOverlay?`, Windows power mode: ${s.powerOverlay}`:""}.${h}

      + ${m}${s.rolledBack?`

      ${s.rolledBack}

      `:""}${s.pipelineRefused?`

      ${s.pipelineRefused}

      `:""}${Vv(s.input)}${b}`),Bo("Before and after",`${Dn(`${f}`,[`Before (${Dt(s.beforeCap)})${sa(s.before)}`,s.after?`After (${Dt(s.afterCap)})${sa(s.after)}`:""])}${s.after?"":'

      Your setup stayed as it was, so there is no after to measure.

      '}`,{unit:"times in ms"}),Bo("Client test: setup",n.length>0?Dn(`Setup${f}Result`,n,"adNum adWrap"):"

      The client test did not run, the client's own setup was left alone.

      ",{unit:"times in ms"}),...E,Bo("Test match: game settings",`

      ${l}

      ${p}

      Settings that need a reload cannot be measured in one test match, they were not changed.

      `),v?Bo("What the PC did",v,{wide:!0}):""].join("")}

      The run took ${s.seconds.toFixed(0)} s. A difference only counts when it is bigger than the spread between two samples of the same setup, - and a setup that measures worse anywhere is never taken.

      Copy this report
      `}function sa(s,e,t,o,n=!1){let r=Ni(s,e,{prefer:o,inputRequired:t==="test match",trade:n}),i=r.judged.map(u=>({cap:u.cap,where:t,summary:u.summary,frameMs:u.frameMs,netMs:u.netMs,outcome:u.outcome})),a=r.judged.find(u=>u.cap===r.winner),l="measures as smooth as before, with fewer frames to draw";if(r.decidedBy==="net"){let{task:u=0,input:h=null}=a?.gains??{},p=[];u>0&&p.push(`the game reacts ${yt(u)} ms sooner`),h!==null&&h>0&&p.push(`the mouse waits ${yt(h)} ms less`),h!==null&&h<0&&p.push(`the mouse waits ${yt(-h)} ms longer, which the sooner reaction outweighs on a PC below its target`),l=p.length>0?p.join(", "):"frames come sooner and nothing waits longer"}let c=r.judged.filter(u=>u.cap!==e&&u.outcome!=="worse"&&u.outcome!=="not steady").sort((u,h)=>(h.netMs??-1/0)-(u.netMs??-1/0)).map(u=>u.cap);return{rows:i,winner:r.winner,reason:l,order:c}}function _p(s){d.hostFeatures?.includes("mute")&&window.chrome.webview.postMessage(`mute, ${s}`)}function Bp(){return`Takes about two minutes. Don't touch mouse or keyboard meanwhile: a test window opens and closes a few times, then Kute plays a private match by itself, turning the view and firing.${d.hostFeatures?.includes("mute")?" The game is muted meanwhile.":""}`}function Ms(){return Oe.some(s=>d.settings.data[s.setting]!==!1!=(d.running?.[s.setting]!==!1))}function zp(s){return s.report?.version===2?s.report:void 0}function Hp(s){return new Promise(e=>{let t=performance.now(),o={frames:0,done:!1,watchdog:0},n=()=>{o.frames++;let r=performance.now()-t;if(r{o.done||e(null)},s+2e3)})}async function Zv(s){if(s===0)return!0;let e=performance.now()+Dv;for(;performance.now()typeof t=="number"?Math.round(t*100)/100:null;return{fps:e(s.fps),p50:e(s.p50),p99:e(s.p99),maxMs:e(s.maxMs),stallMs:e(s.stallMs),taskP99:e(s.taskP99),inputP99:e(s.inputP99),...typeof s.presentMs=="number"?{presentMs:e(s.presentMs)}:{},...s.invalid?{invalid:!0,why:s.why}:{},...s.load?{load:s.load}:{}}}function io(s){return ye(s).fps.median??0}var Dn,Mp,Tp,Qi,Ov,Fv,ea,Hn,Ap,Dv,Cs,qv,Kv,jv,Lp,Rp,ta,Uv,Fe,kt,na,Op,ia=w(()=>{"use strict";yp();F();Bn();Ae();qi();Ki();ws();Zi();Yi();Dn="kute_autodetect",Mp="kute_autodetect_asked",Tp=250,Qi=1500,Ov=3e5,Fv=2e4,ea=3*Bt,Hn=2*Bt,Ap=6*Bt,Dv=6e3,Cs=450,qv=700,Kv=.08,jv=["gameFpsLimit","throttle",...Oe.map(s=>s.setting)],Lp="autodetect-v2",Rp="https://krunker.io/",ta="kute_autodetect_stopped",Uv={taskP99:"the game reacted later",inputP99:"the mouse waited longer",p99:"slow frames came later",stallMs:"more stutter",maxMs:"a longer freeze",frame:"frames took longer, and the mouse wait could not be measured",unsteady:"it did not run steadily"},Fe=s=>new Promise(e=>{setTimeout(e,s)});kt=class{constructor(){document.querySelector("#adPanelHost")?.parentElement?.remove(),this.overlay=document.createElement("div"),this.onEscape=void 0,this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.93)";let e=document.createElement("div");e.id="adPanelHost",this.overlay.append(e),this.root=e.attachShadow({mode:"open"}),this.root.innerHTML=xp,document.body.append(this.overlay)}element(e){return this.root.querySelector(`#${e}`)}progress(e,t){this.element("adStatus").textContent=e,this.element("adBarFill").style.width=`${Math.round(t*100)}%`}choose(e,t,o,n){let r=o.find(l=>l.cancel);this.dismissWith(r?()=>r.onPick():void 0),this.element("adTitle").textContent=e,this.element("adStatus").textContent=t;let i=this.element("adNote");i.textContent=n??"",i.style.display=n?"block":"none",this.element("adBar").style.display="none",this.element("adHint").style.display="none";let a=this.element("adActions");a.style.display="flex",a.innerHTML="";for(let l of o){let c=document.createElement("div");c.className="adButton",c.textContent=l.label,c.onclick=()=>l.onPick(),a.append(c)}}result(e,t={}){this.dismissWith(()=>this.close()),this.element("adTitle").textContent=e.title,this.element("adStatus").textContent=e.line,this.element("adNote").style.display="none",this.element("adBar").style.display="none",this.element("adHint").style.display="none",this.element("adActions").style.display="flex",this.element("adDetailsButton").style.display="none",this.element("adUndo").style.display=e.changed&&t.onUndo?"":"none",this.element("adRun").style.display=t.onRun?"":"none",this.element("adRestart").style.display=e.needsRestart?"":"none",this.element("adRestart").onclick=()=>window.chrome.webview.postMessage("restart"),this.element("adAdvancedButton").style.display=t.report?"":"none";let o=this.element("adDetails");if(o.innerHTML=e.details.map(n=>`
    • ${n}
    • `).join(""),o.style.display=e.details.length>0?"block":"none",t.report){let n=this.element("adAdvanced");n.innerHTML=Jv(t.report);let r=this.element("adAdvancedButton");r.textContent="Advanced",r.onclick=()=>{let i=n.style.display!=="block";n.style.display=i?"block":"none",this.element("adPanel").classList.toggle("adWide",i),r.textContent=i?"Hide advanced":"Advanced"},this.element("adCopy").onclick=()=>{let i=JSON.stringify({kute:d.version,...t.report},null,2);navigator.clipboard.writeText(i).then(()=>{this.element("adCopy").textContent="Copied"},()=>{this.element("adCopy").textContent="Copying failed"})}}this.element("adOk").onclick=()=>this.close(),this.element("adUndo").onclick=()=>{this.close(),t.onUndo?.()},this.element("adRun").onclick=()=>{this.close(),t.onRun?.()}}clickThrough(e){this.overlay.style.pointerEvents=e?"none":""}dismissWith(e){this.unbindEscape(),this.overlay.onclick=e?t=>{t.target===this.overlay&&e()}:null,e&&(this.onEscape=t=>{t.key==="Escape"&&(t.stopPropagation(),e())},document.addEventListener("keydown",this.onEscape,!0))}unbindEscape(){this.onEscape&&document.removeEventListener("keydown",this.onEscape,!0),this.onEscape=void 0}close(){this.unbindEscape(),this.overlay.remove()}};na=class{constructor(){this.running=!1,this.cancelled=!1}snapshot(){return{client:Object.fromEntries(jv.map(e=>[e,d.settings.data[e]])),game:Object.fromEntries(Ui.map(e=>[e,Ss(e)]))}}restore(e){Nn();for(let[t,o]of Object.entries(e.game))o!==null&&Ss(t)!==o&&Me(t,o);for(let[t,o]of Object.entries(e.client))o!==void 0&&d.settings.data[t]!==o&&Ht(t,o)}undo(){let e=zt();if(!e?.undoable){d.showNotification("Nothing to undo",!1,3);return}let t=new Set(vt.filter(i=>i.needsReload).map(i=>i.id)),o=Object.entries(e.snapshot.game).some(([i,a])=>t.has(i)&&a!==null&&Ss(i)!==a);this.restore(e.snapshot);let n=Ms();e.undoable=!1;let r="Your previous settings are back.";o&&(r="Your previous settings are back, the game reloads once to apply them."),n&&(r+=" Restart Kute to finish."),e.summary={title:"Undone",line:r,details:[],changed:!1,needsRestart:n},De(e),d.showNotification(`Auto-detect undone. ${r.replace("Your previous settings are back","Your settings are back")}`,!1,5),o&&setTimeout(()=>location.reload(),1200)}dropUndo(){let e=zt();e?.undoable&&(e.undoable=!1,De(e))}showLast(){let e=zt();if(!e?.summary){d.showNotification("Auto-detect has not run yet",!1,3);return}new kt().result(e.summary,{onUndo:e.undoable?()=>this.undo():void 0,report:zp(e)})}async start(e={}){if(this.running)return;if(!d.hostFeatures?.includes(Lp)){d.showNotification("Auto-detect needs a newer Kute, update the client to use it",!1,6);return}if(d.recovery){d.showNotification("Auto-detect can't run in safe mode or while Kute looks for the cause of a crash",!1,6);return}if(!Ts()){d.showNotification("Log in first: auto-detect measures in a private test match, and hosting one needs an account",!1,6);return}if(document.pointerLockElement||He()){d.showNotification("Open the menu outside of a competitive match first",!1,4);return}if(!e.resume&&Ms()){d.showNotification("Restart Kute first: a setting you changed only applies after a restart, auto-detect would test the old one",!1,7);return}this.running=!0,this.cancelled=!1,window.closWind?.();let t,o;if(e.resume)t=e.resume,o=t.previous??null;else{o=zt(),o&&(delete o.wizard,delete o.wizardDetails);let l=this.snapshot();t={status:"running",at:Date.now(),snapshot:e.snapshot??l,baseline:l,previous:o,details:e.details??[]},De(t)}let n=new kt,r=l=>{l.key==="Escape"&&(this.cancelled=!0,Oi())};document.addEventListener("keydown",r,!0);let i={inMatch:!1},a=()=>{window.chrome.webview.postMessage("input-replay-stop"),this.restore(t.snapshot),De(o||{status:"prompted",at:Date.now(),snapshot:t.snapshot}),n.close(),Ms()&&d.showNotification("Your settings are back. Restart Kute to finish",!1,7),i.inMatch&&(document.exitPointerLock(),location.href=Rp)};try{let l=await this.run(n,t,i);if(l==="restarting")return;if(l===null){a();return}t.status="done",t.summary=l.summary,t.report=l.report,t.undoable=l.summary.changed,!l.summary.changed&&o?.undoable&&(t.snapshot=o.snapshot,t.undoable=!0),delete t.previous,delete t.baseline,delete t.carry,delete t.details,t.showSummary=!0,De(t),n.progress("Leaving the test match",1),document.exitPointerLock(),await Fe(800),location.href=Rp}catch(l){let c=`Auto-detect stopped: ${l instanceof Error?l.message:String(l)}`;i.inMatch&&sessionStorage.setItem(ta,c),a(),d.showNotification(c,!1,7)}finally{document.removeEventListener("keydown",r,!0),_p(!1),window.chrome.webview.postMessage("throttle, menu"),this.running=!1}}async run(e,t,o){let n=Gv(),r=t.baseline??t.snapshot,i=t.details??[],a=performance.now()-(t.carry?.elapsedMs??0),l=!!t.carry;e.progress("Reading your hardware",.02);let c=await Te("get-specs","specs");if(c===null)throw new Error("this needs a newer version of the client");let u=c.displays??[],h=u.find(M=>M.hostsWindow)??u[0],p=n.hz??(h?.hz>1?h.hz:60),f=(c.gpus??[]).filter(M=>!M.software),m=c.renderAdapter?.name??[...f].sort((M,D)=>D.vramMb-M.vramMb)[0]?.name??"unknown graphics card",g=n.battery??!!c.onBattery,b=n.laptop??(!!c.laptop||c.hybrid===!0),v=p*3,k=d.hostFeatures?.includes("load-sample")===!0,E=d.running?.hardFlip!==!1,L=Number(r.game[wt])||0,x=Number(r.client.gameFpsLimit)||0,$=Number(r.client.throttle)||1,I=[x,L].filter(M=>M>0),_=I.length>0?Math.min(...I):0,H=Rn(),G=null,J=[],B=[];if(!l){if(G=await Fi({hz:p,hybrid:c.hybrid===!0,progress:(M,D)=>e.progress(M,.03+.27*D),cancelled:()=>this.cancelled}),this.cancelled)return null;if(G&&n.force&&n.force in H&&(G={...G,winner:{...H,[n.force]:!H[n.force]},changed:!0,decidedBy:"p99"}),G){e.progress("Testing FPS limits",.31);let M=[...new Set([0,v,2*p,p,_])].sort((q,ee)=>ee-q),D=await Di({pipeline:G.winner,common:G.common,caps:M,cancelled:()=>this.cancelled});if(this.cancelled)return null;if(D){let q=sa(D,_,"client test",b?v:void 0);J=q.rows,B=q.order}}}e.progress("Opening a private test match",.38),_p(!0),e.clickThrough(!0);let re=await Es(),je=!1;if(re&&(e.progress("Joining the test match",.41),je=await $s(re)),e.clickThrough(!1),!je)throw window.closWind?.(),new Error("could not open a private test match (is a host slot free?)");o.inMatch=!0;let be=()=>{if(!_n(re))throw new Error("left the private test match")};if(this.cancelled)return null;L>0&&l&&Me(wt,"0");let Ee=Number(d.settings.data.gameFpsLimit)||0,j=!0;zn(),window.chrome.webview.postMessage("throttle, game"),await Fe(2500),await Fe(300),window.chrome.webview.postMessage("bring-to-front");let X=async(M,D=ea)=>{M!==Ee&&(Ht("gameFpsLimit",M),Ee=M,await Fe(qv),j=await Zv(M)),be(),k&&await Te("load-sample","loadSample",500),E&&await Te("get-present-intervals","presentIntervals",400);let q=await Ji({ms:D,hz:p,replay:!0});if(E){let ee=await Te("get-present-intervals","presentIntervals",400);ee&&ee.samples>0&&(q.presentMs=ee.p50)}if(k&&(q.load=await Te("load-sample","loadSample",500)),be(),!j&&!q.invalid&&(q.invalid=!0,q.why="nothing held the FPS limit"),n.collapse!==void 0&&(M===0||M>=n.collapse)){let ee=(te,O)=>(te??0)+O;return{...q,fps:(q.fps??0)/2,stallMs:400,p99:ee(q.p99,25),maxMs:ee(q.maxMs,40),taskP99:ee(q.taskP99,40),inputP99:ee(q.inputP99,30)}}return q},Y=async()=>{if(!k)return[];await X(0,Bt),window.chrome.webview.postMessage(`input-replay, ${10*Bt}`);let M=[],D=performance.now();for(await Te("load-sample","loadSample",500);performance.now()-D<10*Bt&&!this.cancelled;){let q=await Hp(300);if(q===null)break;M.push({ms:Math.round(performance.now()-D),fps:Math.round(q),load:await Te("load-sample","loadSample",500)})}return window.chrome.webview.postMessage("input-replay-stop"),M},y=async(M,D=ea)=>{let q=[];for(let ee=0;ee<5&&q.length<2&&!this.cancelled;ee++){let te=await X(M,D);te.invalid||q.push(te)}return q},C=async M=>{for(let D=0;D<4&&!this.cancelled;D++)if(!gt([await X(M,Hn)],M))return},R=async M=>{let D=new Map(M.map(q=>[q,[]]));for(let q=0;q<2;q++)for(let ee of M){if(this.cancelled)return D;D.get(ee)?.push(await X(ee))}return D},{carry:K}=t;if(!K){e.progress("Measuring how the game runs now",.45),await X(Ee);let M=await y(Ee);if(this.cancelled)return null;if(M.length<2)throw new Error("the game could not be measured, the Kute window has to stay in front during the test");L>0&&Me(wt,"0"),$>1&&(Ht("throttle",1),window.chrome.webview.postMessage("throttle, game"),await Fe(Cs)),e.progress("Measuring what this PC can do",.5);let q=_===0&&$<=1?[...M,await X(0)]:[await X(0),await X(0),await X(0)];if(this.cancelled)return null;if(K={asPlayed:M,uncapped:q,playedCap:_,pipelineBefore:H,pipelineAfter:G?.winner??H,pipelineChanged:!!G?.changed,decidedBy:G?.decidedBy??null,rows:G?.rows??[],benchCaps:J,capOrder:B,elapsedMs:performance.now()-a},K.pipelineChanged){t.carry=K,De(t),L>0&&Me(wt,String(L)),Ee!==x&&Ht("gameFpsLimit",x);for(let ee of Oe)K.pipelineAfter[ee.setting]!==H[ee.setting]&&Ht(ee.setting,K.pipelineAfter[ee.setting]);return document.exitPointerLock(),e.choose("Kute restarts once","The client test found a setup that runs better on this PC. Kute restarts with it and checks it in the game, the test goes on by itself.",[]),await Fe(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}}let{playedCap:z}=K,N=K,V=M=>({version:2,gpu:m,cpu:`${c.cpu?.name??"unknown processor"}, ${c.cpu?.threads??"?"} threads`,hz:p,laptop:!!c.laptop,hybrid:typeof c.hybrid=="boolean"?c.hybrid:null,powerOverlay:c.powerOverlay??null,capacity:io(N.uncapped),unlimited:N.uncapped.map(Fn),played:N.asPlayed.map(Fn),adapters:{render:c.renderAdapter?.luid??null,display:h?.adapter??null},hybridSource:c.hybridSource??null,client:{...Object.fromEntries(["gameFpsLimit","throttle","inMenuThrottle","uncapFps","patchFrameLimiter","obsCapturePlugin","renderStats","performanceMode","webviewPriority",...Oe.map(D=>D.setting)].map(D=>[D,r.client[D]??d.settings.data[D]??null])),gameFrameCap:L,hook:c.hook??null,limiter:d.frameLimiter??null,running:d.running??null},noise:0,drift:1,headroom:1,beforeCap:z,before:ye(N.asPlayed),afterCap:z,after:null,pipeline:N.rows,caps:N.benchCaps,halfResolutionGain:null,settings:[],plan:In({capacity:io(N.uncapped),hz:p,headroom:1,halfResolutionGain:null,settings:[]}),input:zn(),rolledBack:null,pipelineRefused:N.pipelineRefused??null,recheck:N.recheck??[],seconds:(performance.now()-a)/1e3,...M}),de=(M,D={})=>{this.restore(t.snapshot);let q=Ms();return{summary:{title:"Nothing changed",line:q?`${M} Restart Kute to finish.`:M,details:[],changed:!1,needsRestart:q},report:V({...D,rolledBack:M})}},Z=io(N.uncapped){let{keep:ee,failed:te}=vs(M,D,{capBefore:z,capAfter:q,trade:Z});return ee?null:te==="reference"?"Kute could not measure the game with your own settings well enough to compare (its window has to stay in front), so it put yours back.":te==="result"?"Kute could not measure the result (its window has to stay in front), so it put your settings back.":`The new settings measured worse than yours (${te==="fps"?`${Math.round(io(D))} FPS, ${Math.round(io(M))} before`:Uv[te??""]}), so Kute put yours back.`},le=[...i];if($>1&&le.push(`CPU Throttling: ${$} \u2192 off (it slows the game down on purpose, the result is checked against how the game ran with it)`),l&&N.pipelineChanged&&!N.pipelineRefused){e.progress("Checking the new setup in the game",.5);let M=await y(z);if(this.cancelled)return null;let D={recheck:M.map(Fn)},q=gt(N.asPlayed,z)&>(M,z)?null:ge(N.asPlayed,M,z);if(q&&vs(N.asPlayed,M,{capBefore:z,capAfter:z,trade:Z}).failed==="result")return de(q.replace("The new settings","The setup that won the client test"),D);if(q){for(let O of Oe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&Ht(O.setting,N.pipelineBefore[O.setting]);return L>0&&Me(wt,String(L)),Ee!==x&&Ht("gameFpsLimit",x),t.carry={...N,pipelineRefused:q.replace("The new settings","The setup that won the client test"),...D,elapsedMs:performance.now()-a,resumed:!1},De(t),document.exitPointerLock(),e.choose("Kute restarts once more","The setup from the client test ran worse in the game, so Kute goes back to yours and tests the FPS limits on it.",[]),await Fe(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}let ee=N.rows.find(O=>Oe.every(ve=>O.pipeline[ve.setting]===N.pipelineAfter[ve.setting])),te=ee?Wv(N.decidedBy,ye(N.rows[0].readings),ye(ee.readings)):"measured better";for(let O of Oe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&le.push(`${O.label}: ${ut(N.pipelineBefore[O.setting])} \u2192 ${ut(N.pipelineAfter[O.setting])} (${te})`)}e.progress("Finding the FPS limit that runs best",.56);let Be=io(N.uncapped),Yt=Be>=v?v:p,xo=M=>!g||M===z||M!==0&&M<=v,zg=N.uncapped.filter(bs).length>=2,Tr=(b||zg)&&Be>=v?v:void 0,ze=new Map,Xt=[],se=z,Uo="",Ie=Be,at=gs(new Map([[0,N.uncapped]]));if(!at){let M=N.capOrder.length>0?N.capOrder.slice(0,2):Bi({hz:p,capacity:Be,current:z}).slice(1,3),D=[...new Set([z,0,...M,...Tr?[Tr]:[],...g?[Yt]:[]])].filter(xo);if(ze=await R(D),this.cancelled)return null;at=gs(ze);let q=sa(ze,z,"test match",Tr,Z);if(Xt=q.rows,!at){se=q.winner,Uo=q.reason,Ie=io(ze.get(0)??[])||Be;let ee=zi([...ze.keys()],se,Ie,p).filter(te=>xo(te)&&te0){e.progress("Fine tuning the FPS limit",.64);let te=await R(ee);if(this.cancelled)return null;let O=sa(new Map([[se,ze.get(se)??[]],...te]),se,"test match",void 0,Z);Xt.push(...O.rows.filter(ve=>ve.cap!==se));for(let[ve,Ve]of te)ze.set(ve,Ve);O.winner!==se&&(se=O.winner,Uo=O.reason),at=gs(ze)}}}let Go;if(at){e.progress("Finding the FPS limit this PC holds steadily",.62);let M=new Map;await C(p);for(let te of An(p)){if(this.cancelled)return null;let O=await y(te,Ap);if(M.set(te,O),!no(O,te))break}if(this.cancelled)return null;let D=Ii(p,M),q=(qn([...N.uncapped,...ze.get(0)??[]].filter(fs).map(te=>te.stallMs))??0)/1e3;Go={stoodStill:q,steadyUpTo:D.steadyUpTo,limit:D.cap};for(let te of Xt)te.outcome==="better"&&(te.outcome="not used");for(let[te,O]of M){let ve=no(O,te)?"steady":"not steady";Xt.push({cap:te,where:"test match",summary:ye(O.map(_o)),frameMs:qn(O.map(Ve=>Ve.p50)),netMs:null,outcome:ve}),ze.set(te,O)}let ee=z>0&&no(N.asPlayed,z);se=z,ee||(se=[...new Set([D.cap,D.steadyUpTo])].filter(O=>O!==null).find(O=>vs(N.asPlayed,M.get(O)??[],{capBefore:z,capAfter:O}).keep)??z),Uo=`without a limit this PC stood still ${Math.round(q*100)} % of the time. Up to ${D.steadyUpTo} FPS it ran steadily in the empty test match, ${se} FPS ${(D.steadyUpTo??0)>se?"leaves a step of room for a real match":"is the highest that did"}`}let Wo=Xt.find(M=>M.cap===Yt),Hg=Wo!==void 0&&(Wo.outcome==="steady"||Wo.netMs!==null&&(Wo.outcome==="better"||Wo.outcome==="not better"));g&&(se===0||se>v)&&Hg&&(se=Yt,Uo="on battery");for(let M of Xt)M.cap===se&&M.cap!==z&&M.outcome!=="not steady"&&(M.outcome="chosen"),M.readings=(ze.get(M.cap)??[]).map(Fn);let an=N.uncapped.map(M=>M.fps).filter(M=>typeof M=="number"),Jd=an.length>1?(Math.max(...an)-Math.min(...an))/Math.max(1,...an):0,Ar=1,ln=1,Lr=null;if(!at){Lr=await X(0);let M=(l?ze.get(0)?.[0]:N.uncapped[0])?.fps??Ie;Ar=(Lr.fps??Ie)/Math.max(1,M),ln=_i(Ar,Jd)}let Og=v*ln,So=[],Rr=null,Vo=Number(r.game[ro])||1;if(at)for(let M of vt)So.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC does not run steadily without a limit)"});else if(IeO.inputP99!==null),D=Lr?.fps??Ie,q=async(O,ve)=>{let Ve=D;O(),await Fe(Cs);let lt=async()=>{let ru=await X(0,Hn);return ru.invalid?null:ru.fps},Jt=await lt();ve(),await Fe(Cs);let Ye=await lt();if(Jt===null||Ye===null)return{ratio:1,steady:!1,raw:[Ve,Jt??0,Ye??0]};D=Ye;let nu=(Ve+Ye)/2;return{ratio:Jt/Math.max(1,nu),steady:Math.abs(Ve-Ye)/Math.max(1,nu)<=Kv,raw:[Ve,Jt,Ye]}},ee=vt.filter(O=>!O.needsReload&&(M||!O.fightOnly));for(let O of vt){let ve=r.game[O.id],Ve=String(O.cheap),lt={id:O.id,label:O.label,current:ve??"default",cheap:Ve,gain:null,steady:!0};if(So.push(lt),O.needsReload){lt.note="not tested (needs a reload)";continue}if(O.fightOnly&&!M){lt.note="not tested (only costs in a fight)";continue}if(ve===null){lt.note="value unknown";continue}if(this.cancelled)return null;e.progress(`Measuring ${O.label}`,.68+.17*ee.indexOf(O)/ee.length);let Jt=Wi(ve),Ye=await q(()=>Me(O.id,Jt),()=>Me(O.id,ve));lt.gain=Jt===Ve?Ye.ratio:1/Math.max(.01,Ye.ratio),lt.steady=Ye.steady,lt.raw=Ye.raw}for(let O of So){if(O.gain===null||!O.steady||O.current===O.cheap||O.gainMe(O.id,O.cheap),()=>Me(O.id,O.current));O.confirmGain=ve.ratio,O.gain=Math.min(O.gain,ve.ratio),O.steady=ve.steady}e.progress("Checking the graphics card",.88);let te=await q(()=>Me(ro,String(Math.max(.1,Vo*.5))),()=>Me(ro,String(Vo)));Rr=te.steady&&te.ratio>.92?te.ratio:null}else for(let M of vt)So.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC reaches its target)"});if(this.cancelled)return null;let Ct=In({capacity:Ie,hz:p,headroom:ln,halfResolutionGain:Rr,settings:So});for(let M of Ct.changes)le.push(`${M.label}: ${ut(r.game[M.id])} \u2192 ${ut(M.value)} (${M.reason})`),Me(M.id,String(M.value));let Mt=null;if((Ct.changes.length>0||Ct.tuneResolution)&&(await Fe(Cs),Mt=(await X(0,Hn)).fps),Ct.tuneResolution&&Mt!==null){let M=Vo;for(let D=0;D<2&&Mt!==null&&Mtys&&!this.cancelled;D++){let q=D===0?M*Math.sqrt(Mt/Ct.needed):ys;M=Math.min(M,Math.max(ys,Math.floor(q*20)/20)),e.progress(`Trying resolution ${M}`,.9+D*.01),Me(ro,String(M)),await Fe(Cs),Mt=(await X(0,Hn)).fps}M!==Vo&&le.push(`Resolution: ${Vo} \u2192 ${M} (the graphics card is the limit)`)}if(this.cancelled)return null;e.progress("Checking the result",.94),Ct.changes.length>0&&await X(se);let Zd=at?await Y():[];at&&await C(se);let Qd=await y(se,at?Ap:ea);if(this.cancelled)return null;let Pr={capacity:Ie,noise:Jd,drift:Ar,headroom:ln,afterCap:se,after:ye(Qd),caps:[...N.benchCaps,...Xt],halfResolutionGain:Rr,settings:So,plan:Ct,pushed:Go,...Zd.length>0?{trace:Zd}:{}},Ir=se!==z,Fg=!Ir&&L>0&&(x===0||LFPS Limit: ${Ft(z)} \u2192 ${Ft(se)} (${Uo})`):Fg&&le.push(`FPS Limit: ${Ft(se)}, now held by Kute instead of the game's frame cap (the game's cap keeps the processor busy while it waits)`);let cn=le.length>0,eu=le.length>i.length;if(eu){let M=(ze.get(z)??[]).filter(ee=>!ee.invalid),D=l||L>0||$>1,q=ge(!D&&M.length>=2?M:N.asPlayed,Qd,se);if(q)return de(q,Pr)}else L>0&&Me(wt,String(L)),Ee!==x&&Ht("gameFpsLimit",x);Nn();let dn=`${v} FPS (${3}x your ${p} Hz screen)`,tu=`${le.length} setting${le.length===1?"":"s"} changed.`,mt=`Your PC ran ${Math.round(Ie)} FPS in the test match, above the ${dn} Kute aims for. Nothing needed changing.`;cn&&Mt!==null?mt=`${tu} Test match without a limit: ${Math.round(Ie)} FPS before, ${Math.round(Mt)} after. Kute aims for at least ${dn} with no stutter.`:cn?mt=`${tu} Without a limit your PC runs ${Math.round(Ie)} FPS in the test match, Kute aims for at least ${dn} with no stutter.`:Iese?" with room to spare":""}.`;else if(se>0&&no(N.asPlayed,se)){let ee=D!==null&&DsetTimeout(()=>this.offer(),1500),{once:!0});return}sessionStorage.setItem(Mp,"1");let e=new kt;e.choose("Set Kute up for this PC?","Kute can set the game up for what this PC can do: it measures in a private test match, and everything it changes can be undone. You have to be logged in for that.",[{label:"Yes",onPick:()=>{this.setUp(e)}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"No",cancel:!0,onPick:()=>this.decline(e)}],Bp())}decline(e){e.close(),this.remember("declined"),d.showNotification("Got it. You can always start the setup from Settings, Client",!1,5)}async signedIn(){if(Ts())return!0;if(!localStorage.getItem("krunker_token"))return!1;let e=Date.now()+Fv;for(;Date.now(){e.close(),window.loginOrRegister(),this.waitForLogin()}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}])}waitForLogin(){let e=Date.now()+Ov,t=setInterval(()=>{if(Ts()){clearInterval(t),this.askSettings();return}Date.now()>e&&clearInterval(t)},1e3)}askSettings(e=new kt){this.remember("settings"),e.choose("Where should your game settings come from?","Kute measures this PC either way and sets what it finds. This is only about the settings it starts from.",[{label:"Import a settings.txt",onPick:()=>{e.close(),this.remember("import"),window.importSettingsPopup()}},{label:"Kute's preset",onPick:()=>{e.close(),this.applyPreset()}},{label:"Keep my settings",onPick:()=>{e.close(),this.start()}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}],Bp())}afterImport(){if(zt()?.wizard!=="import")return;let e=this.snapshot();this.remember("run",e,[]),setTimeout(()=>{zt()?.wizard==="run"&&this.start({snapshot:e})},1500)}applyPreset(){let e=this.snapshot(),t=[];for(let[o,n]of Object.entries(ji))String(e.game[o])!==String(n)&&(Me(o,n),t.push(`${Gi(o)}: ${ut(e.game[o])} \u2192 ${ut(n)} (Kute's preset)`));this.remember("run",e,t),d.showNotification("Applying Kute's preset, the game reloads once",!1,4),setTimeout(()=>location.reload(),1200)}resume(){let e=zt();if(e?.status==="running"){if(e.carry&&!e.carry.resumed){e.carry.resumed=!0,De(e),setTimeout(async()=>{if(await this.signedIn()){this.start({resume:e});return}this.restore(e.snapshot),e.previous?De(e.previous):localStorage.removeItem(Dn),d.showNotification("Auto-detect could not go on (not logged in). Your settings are back, restart Kute to finish",!1,8)},Qi);return}this.restore(e.snapshot),e.previous?De(e.previous):localStorage.removeItem(Dn);return}let t=sessionStorage.getItem(ta);if(t&&(sessionStorage.removeItem(ta),setTimeout(()=>d.showNotification(t,!1,12),Qi)),e?.showSummary&&e.summary){e.showSummary=!1,De(e),new kt().result(e.summary,{onUndo:()=>this.undo(),report:zp(e)});return}if(e?.wizard==="run"){setTimeout(async()=>{await this.signedIn()&&this.start({snapshot:e.snapshot,details:e.wizardDetails??[]})},Qi);return}if(e?.wizard==="login"||e?.wizard==="settings"||e?.wizard==="import"){setTimeout(()=>this.setUp(),Tp);return}e&&e.wizard!=="later"||setTimeout(()=>this.offer(),Tp)}},Op=new na;d.autoDetect=Op;Op.resume()});var Dp={};A(Dp,{clanTag:()=>As,default:()=>pt});function As(s){for(let e of s.children){if(e.tagName!=="SPAN")continue;let t=Qv.exec(e.textContent??"");if(t)return{span:e,tag:t[1]}}return null}function o0(s){let e="";for(let t of s.childNodes)t.nodeType===Node.TEXT_NODE&&(e+=t.textContent??"");return e.trim()}var Qv,Fp,e0,t0,aa,pt,Kn=w(()=>{"use strict";Qv=/^\s*\[(.+)\]\s*$/;Fp=[{list:"leaderContainer",kind:"leader",root:"leaderboardHolder"},{list:"ingameTable",kind:"ingame",root:"centerLeaderDisplay"},{list:"endTable",kind:"end",root:"endUI"},{list:"playerListH",kind:"alt",root:"menuWindow"}],e0=1e3,t0='.pListName, [class^="newLeaderName"], [class^="leaderName"], .endTableN';aa=class{constructor(){this.decorators=new Map,this.watched=[],this.timer=0}add(e,t){this.decorators.set(e,t),this.watched.length===0&&this.observe(),this.refresh()}remove(e){if(this.decorators.delete(e),!(this.decorators.size>0)){for(let{observer:t}of this.watched)t.disconnect();this.watched=[],clearInterval(this.timer),this.timer=0}}observe(){for(let{root:e,list:t,kind:o}of Fp){let n=document.getElementById(e);n&&this.watch(n,t,o)}this.timer=setInterval(()=>this.discover(),e0)}watch(e,t,o){let n={observer:new MutationObserver(()=>this.walk(n)),target:e,list:t,kind:o};n.observer.observe(e,{childList:!0,subtree:!0}),this.watched.push(n),this.walk(n)}discover(){this.watched=this.watched.filter(e=>e.target.isConnected?!0:(e.observer.disconnect(),!1));for(let{list:e,kind:t}of Fp){let o=document.getElementById(e);o&&!this.watched.some(n=>n.target.contains(o))&&this.watch(o,e,t)}}refresh(){for(let e of this.watched)this.walk(e)}walk(e){let t=document.querySelectorAll(`#${e.list}`);if(t.length>0){for(let o of t)for(let n of o.querySelectorAll(t0)){let r={element:n,name:o0(n),kind:e.kind};for(let i of this.decorators.keys())i(r)}for(let o of this.decorators.values())o?.(e.kind)}e.observer.takeRecords()}},pt=new aa});var Kp={};A(Kp,{default:()=>Qe,playerHash:()=>jn});function a0(){if(document.getElementById("signedInHeaderBar")===null)return"";let s=window.getGameActivity?.()?.id;return typeof s=="string"?s:""}function l0(){let s=window.getGameActivity?.()?.user;if(typeof s!="string")return"";if(localStorage.getItem("kro_setngss_premiumBadge")==="false"){let e=localStorage.getItem("krunker_username");if(e)return e}return s}async function jn(s,e){let t=new TextEncoder().encode(s+` -`+e),o=new Uint8Array(await crypto.subtle.digest("SHA-256",t));return Array.from(o.subarray(0,16),n=>n.toString(16).padStart(2,"0")).join("")}function c0(s,e,t){return new Promise(o=>{let n=0,r=i=>{let a=i?.data?.devProof;a?.nonce===s&&(clearTimeout(n),window.chrome.webview.removeEventListener("message",r),o(typeof a.user=="string"&&typeof a.proof=="string"?{user:a.user,proof:a.proof}:null))};n=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),o(null)},i0),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(`dev-proof, ${s}, ${e}, ${t}`)})}var s0,n0,r0,i0,la,qp,Qe,ca=w(()=>{"use strict";F();It();s0=[2,4,8,16,30],n0=2e3,r0=3e4,i0=1e3;la=class{constructor(){this.game="",this.roster=new Set,this.devs=new Map,this.nonce="",this.listeners=new Set,this.socket=null,this.failures=0,this.timer=0,this.joined="",he.available().then(e=>{e&&this.open()}),he.listeners.add(e=>{if(!e){this.socket?.close();return}this.failures=0,he.available().then(t=>{t&&!this.socket&&this.open()})})}open(){if(he.down||he.offline())return;let e=new WebSocket(he.base.replace(/^http/,"ws")+"/ws");this.socket=e,e.addEventListener("open",()=>{setTimeout(()=>{this.socket===e&&(this.failures=0)},r0),e.send(JSON.stringify(d.settings.data.counted===!0?{t:"hi"}:{t:"hi",first:!0})),this.sync(),this.timer=setInterval(()=>this.sync(),n0)}),e.addEventListener("message",t=>this.receive(t.data)),e.addEventListener("close",()=>{clearInterval(this.timer),this.socket=null,this.joined="",this.nonce="",this.setRoster("",[]);let t=s0[this.failures++];t!==void 0&&setTimeout(()=>this.open(),t*1e3)})}async sync(){let e=a0(),t=e?l0():"",o=e&&t?e+` -`+t:"";if(o===this.joined)return;if(this.joined=o,!o){this.send({t:"leave"}),this.setRoster("",[]);return}let n=await jn(e,t);if(this.joined!==o)return;let r=d.dev===!0&&this.nonce?await c0(this.nonce,e,n):null;this.joined===o&&this.send(r?{t:"join",game:e,hash:n,dev:r}:{t:"join",game:e,hash:n})}send(e){this.socket?.readyState===WebSocket.OPEN&&this.socket.send(JSON.stringify(e))}receive(e){let t;try{t=JSON.parse(String(e))}catch{return}t?.t==="hello"&&typeof t.nonce=="string"?this.nonce=t.nonce:t?.t==="roster"&&typeof t.game=="string"&&Array.isArray(t.players)?this.joined.startsWith(t.game+` -`)&&this.setRoster(t.game,t.players):t?.t==="+"&&typeof t.h=="string"?(this.remember(t.h,t.d===1?t.c:void 0),this.changed()):t?.t==="-"&&typeof t.h=="string"?(this.roster.delete(t.h),this.devs.delete(t.h),this.changed()):t?.t==="counted"&&(d.settings.data.counted=!0,window.chrome.webview.postMessage("set-config, counted, true"))}remember(e,t){this.roster.add(e),typeof t=="string"&&t!==""?this.devs.set(e,t):this.devs.delete(e)}setRoster(e,t){if(!(e===this.game&&t.length===0&&this.roster.size===0)){this.game=e,this.roster=new Set,this.devs=new Map;for(let o of t)Array.isArray(o)&&typeof o[0]=="string"&&this.remember(o[0],o[1]===1?o[2]?.c:void 0);this.changed()}}changed(){for(let e of this.listeners)e()}},qp=new la;d.presence=qp;Qe=qp});var Up,jp=w(()=>{Up="data:image/webp;base64,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"});var Wp,Gp=w(()=>{Wp="data:image/webp;base64,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"});var ua={};A(ua,{default:()=>g0});function Vp(s){let e=s?`[data-kute-badge="${s}"]`:"[data-kute-badge]";for(let o of document.querySelectorAll(e))o.remove();let t=s?`[data-kute-badged="${s}"]`:"[data-kute-badged]";for(let o of document.querySelectorAll(t))o.removeAttribute("data-kute-badged")}function Yp(s){(s.querySelector("[data-kute-badge]")??s.parentElement?.querySelector("[data-kute-badge]"))?.remove(),s.removeAttribute("data-kute-badged")}var p0,h0,m0,f0,da,Xp,g0,pa=w(()=>{"use strict";F();Kn();ca();jp();Gp();p0="2px",h0={leader:"margin-top:5px;vertical-align:middle;height:21px;margin-left:2px",ingame:"margin-top:3px;vertical-align:middle;height:21px;margin-left:2px",end:"margin-top:-12px;vertical-align:middle;width:26px;margin-left:2px",alt:"vertical-align:middle;height:21px;margin-left:6px;position:relative;top:-0.35em"},m0={kute:Up,dev:Wp},f0={kute:"Kute",dev:"Kute Developer"};da=class{constructor(){this.game="",this.hashes=new Map,this.pending=new Set,this.found=!1,this.candidates=[],this.enabled=d.settings.data.cuteBadge!==!1,this.decorator=e=>this.decorate(e),this.finisher=()=>this.finish(),d.settings.toggleCuteBadge=e=>this.toggle(e),Qe.listeners.add(()=>this.rosterChanged())}toggle(e){this.enabled=e,e||Vp("kute"),pt.refresh()}rosterChanged(){if(Qe.game!==this.game&&(this.game=Qe.game,this.hashes.clear(),this.pending.clear()),Vp(),Qe.roster.size===0){pt.remove(this.decorator);return}pt.add(this.decorator,this.finisher)}decorate(e){if(Qe.roster.size===0||e.name==="")return;let t=this.hashes.get(e.name);if(t===void 0){this.learn(e.name);return}if(Qe.devs.has(t)){this.candidates.push({row:e,hash:t,tag:As(e.element)?.tag});return}this.enabled&&!e.element.hasAttribute("data-kute-badged")&&Qe.roster.has(t)&&this.insert(e,"kute")}finish(){if(this.candidates.length===0)return;let e=new Map;for(let t of this.candidates){let o=e.get(t.hash);o?o.push(t):e.set(t.hash,[t])}for(let[t,o]of e){let n=o.filter(i=>i.tag===Qe.devs.get(t)),r=null;n.length===1?r=n[0].row:n.length===0&&o.length===1&&(r=o[0].row);for(let i of o){let a=i.row.element.getAttribute("data-kute-badged");if(i.row!==r){a&&Yp(i.row.element);continue}a!=="dev"&&(a&&Yp(i.row.element),this.insert(i.row,"dev"))}}this.candidates.length=0}async learn(e){if(this.pending.has(e))return;this.pending.add(e);let{game:t}=this,o=await jn(t,e);t===this.game&&(this.pending.delete(e),this.hashes.set(e,o),Qe.roster.has(o)&&(this.found=!0),!(this.pending.size>0||!this.found)&&(this.found=!1,pt.refresh()))}insert(e,t){let{element:o}=e,n=o.parentElement;if(!n)return;let r=document.createElement("img");r.src=m0[t],r.setAttribute("data-kute-badge",t),r.alt="",r.title=f0[t],r.style.cssText=h0[e.kind],e.kind==="alt"?o.append(r):e.kind==="end"?n.insertBefore(r,o.nextSibling):n.insertBefore(r,n.firstElementChild?.nextSibling??o),r.nextElementSibling?.tagName==="I"&&(r.style.marginRight=p0),o.setAttribute("data-kute-badged",t)}},Xp=new da;d.badges=Xp;g0=Xp});var Jp=we((_S,b0)=>{b0.exports=`#chatList>*{display:block!important}#chatInputHolder{opacity:1;transition:opacity .2s ease-in-out,transform .2s ease-in-out}#chatList::-webkit-scrollbar{display:none}#chatList{transition:margin-bottom .2s ease-in-out}#uiBase.onGame #chatList{margin-bottom:-50px}#uiBase.onMenu #chatInputHolder{transition:none}#uiBase.onGame #chatInputHolder{opacity:0;transform:translateY(50px)}#uiBase.onGame #chatHolder:focus-within #chatInputHolder{opacity:1;transform:translateY(0)}#uiBase.onGame #chatHolder:focus-within #chatList{margin-bottom:0}#uiBase.onSpect #chatInputHolder{opacity:1;transform:translateY(0)}#uiBase.onSpect #chatList{margin-bottom:0} -`});var ma={};A(ma,{default:()=>v0});var ha,v0,fa=w(()=>{"use strict";F();Ae();ha=class{constructor(){this.teamModes=new Set(["Team Deathmatch","Hardpoint","Capture the Flag","Hide & Seek","Infected","Last Man Standing","Simon Says","Prop Hunt","Boss Hunt","Deposit","Stalker","Kill Confirmed","Defuse","Traitor","Blitz","Domination","Squad Deathmatch","Team Defender"]),this.styles=document.createElement("style"),Promise.resolve().then(()=>ue(Jp(),1)).then(e=>{this.styles.innerHTML=e.default}),d.settings.toggleBetterChat=e=>this.toggle(e),this.chatHolder=U("#chatHolder"),this.chatList=U("#chatList"),this.chatInput=ke("#chatInput"),this.chatSwitch=U("#chatSwitch"),this.channelT=document.createElement("div"),this.channelA=document.createElement("div"),this.channelT.style.cssText="float: left; display: inline-block; margin-right: 5px; color: #9eeb56;",this.channelT.textContent="[T]",this.channelA.style.cssText="float: left; display: inline-block; margin-right: 5px; color: #eb5656;",this.channelA.textContent="[M]",this.observer=new MutationObserver(e=>this.parseMessages(e)),this.toggle(!0)}switchChat=e=>{e.key==="Tab"&&(window.switchChat(this.chatSwitch),e.preventDefault())};parseMessages(e){let t=!1;for(let o of e)for(let n of o.addedNodes){if(!(n instanceof HTMLElement))continue;let r=n.querySelector(".chatItem");if(!r)continue;let i=r.querySelector(".chatMsg");if(!i)continue;if(i.textContent.includes("Text & Voice Chat")){n.remove();continue}let{tab:a}=n.dataset;!a||!r.textContent.includes("\u200E:")||!this.teamModes.has(window.getGameActivity().mode)||(a==="0"?i.insertBefore(this.channelA.cloneNode(!0),i.firstChild):a==="1"&&i.insertBefore(this.channelT.cloneNode(!0),i.firstChild),t=!0)}t&&(this.chatList.scrollTop=1e9)}toggle(e){e?(document.head.append(this.styles),this.chatInput.addEventListener("keydown",this.switchChat,{capture:!0}),this.observer.observe(this.chatList,{childList:!0})):(this.styles.remove(),this.chatInput.removeEventListener("keydown",this.switchChat,{capture:!0}),this.observer.disconnect())}},v0=new ha});var eh={};function Zp(){return Array.from(document.querySelectorAll(".bpClaimB")).filter(s=>s.offsetParent!==null&&s.textContent.trim()==="Claim")}function Qp(){let s=Zp().length>0;s?Dt.classList.remove("disabled"):Dt.classList.add("disabled"),Dt.textContent=s?"Claim All":"Nothing to Claim"}async function w0(){let s=Zp();if(s.length!==0){for(let e of s)e.getAttribute("onclick")?.includes("windows[5].claimItem(")&&e.click(),await new Promise(o=>setTimeout(o,200));Qp()}}function k0(){let s=document.querySelector(".bpBotH");s&&(s.append(Dt),Qp())}var Dt,y0,ga=w(()=>{"use strict";Dt=document.createElement("div");Dt.className="bpBtn skip";Dt.id="claimAllBtn";Dt.textContent="Claim All";Dt.onclick=()=>{window.playSelect?.(.1),w0()};y0=window.showWindow;window.showWindow=(...s)=>(s[0]===6&&queueMicrotask(()=>k0()),y0(...s))});function ka(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function dh(s){co=s}function zo(s){let e=[];return t=>{let o=Math.max(0,Math.min(3,t-1)),n=e[o];return n||(n=s(o),e[o]=n),n}}function Q(s,e=""){let t=typeof s=="string"?s:s.source,o={replace:(n,r)=>{let i=typeof r=="string"?r:r.source;return i=i.replace(Le.caret,"$1"),t=t.replace(n,i),o},getRegex:()=>new RegExp(t,e)};return o}function qe(s,e){if(e){if(Le.escapeTest.test(s))return s.replace(Le.escapeReplace,nh)}else if(Le.escapeTestNoEncode.test(s))return s.replace(Le.escapeReplaceNoEncode,nh);return s}function rh(s){try{s=encodeURI(s).replace(Le.percentDecode,"%")}catch{return null}return s}function ih(s,e){let t=s.replace(Le.findPipe,(r,i,a)=>{let l=!1,c=i;for(;--c>=0&&a[c]==="\\";)l=!l;return l?"|":" |"}),o=t.split(Le.splitPipe),n=0;if(o[0].trim()||o.shift(),o.length>0&&!o.at(-1)?.trim()&&o.pop(),e)if(o.length>e)o.splice(e);else for(;o.length
      Copy this report
      `}function na(s,e,t,o,n=!1){let r=_i(s,e,{prefer:o,inputRequired:t==="test match",trade:n}),i=r.judged.map(d=>({cap:d.cap,where:t,summary:d.summary,frameMs:d.frameMs,netMs:d.netMs,outcome:d.outcome})),a=r.judged.find(d=>d.cap===r.winner),l="measures as smooth as before, with fewer frames to draw";if(r.decidedBy==="net"){let{task:d=0,input:p=null}=a?.gains??{},h=[];d>0&&h.push(`the game reacts ${yt(d)} ms sooner`),p!==null&&p>0&&h.push(`the mouse waits ${yt(p)} ms less`),p!==null&&p<0&&h.push(`the mouse waits ${yt(-p)} ms longer, which the sooner reaction outweighs on a PC below its target`),l=h.length>0?h.join(", "):"frames come sooner and nothing waits longer"}let c=r.judged.filter(d=>d.cap!==e&&d.outcome!=="worse"&&d.outcome!=="not steady").sort((d,p)=>(p.netMs??-1/0)-(d.netMs??-1/0)).map(d=>d.cap);return{rows:i,winner:r.winner,reason:l,order:c}}function _p(s){u.hostFeatures?.includes("mute")&&window.chrome.webview.postMessage(`mute, ${s}`)}function Bp(){return`Takes about two minutes. Don't touch mouse or keyboard meanwhile: a test window opens and closes a few times, then Kute plays a private match by itself, turning the view and firing.${u.hostFeatures?.includes("mute")?" The game is muted meanwhile.":""}`}function Ts(){return Oe.some(s=>u.settings.data[s.setting]!==!1!=(u.running?.[s.setting]!==!1))}function zp(s){return s.report?.version===2?s.report:void 0}function Hp(s){return new Promise(e=>{let t=performance.now(),o={frames:0,done:!1,watchdog:0},n=()=>{o.frames++;let r=performance.now()-t;if(r{o.done||e(null)},s+2e3)})}async function Zv(s){if(s===0)return!0;let e=performance.now()+Fv;for(;performance.now()typeof t=="number"?Math.round(t*100)/100:null;return{fps:e(s.fps),p50:e(s.p50),p99:e(s.p99),maxMs:e(s.maxMs),stallMs:e(s.stallMs),taskP99:e(s.taskP99),inputP99:e(s.inputP99),...typeof s.presentMs=="number"?{presentMs:e(s.presentMs)}:{},...s.invalid?{invalid:!0,why:s.why}:{},...s.load?{load:s.load}:{}}}function io(s){return ye(s).fps.median??0}var qn,Mp,Tp,ea,Ov,Dv,ta,On,Ap,Fv,Ms,qv,Kv,jv,Lp,Rp,oa,Uv,De,kt,ra,Op,aa=w(()=>{"use strict";yp();D();zn();Ae();Ki();ji();ks();Qi();Xi();qn="kute_autodetect",Mp="kute_autodetect_asked",Tp=250,ea=1500,Ov=3e5,Dv=2e4,ta=3*Bt,On=2*Bt,Ap=6*Bt,Fv=6e3,Ms=450,qv=700,Kv=.08,jv=["gameFpsLimit","throttle",...Oe.map(s=>s.setting)],Lp="autodetect-v2",Rp="https://krunker.io/",oa="kute_autodetect_stopped",Uv={taskP99:"the game reacted later",inputP99:"the mouse waited longer",p99:"slow frames came later",stallMs:"more stutter",maxMs:"a longer freeze",frame:"frames took longer, and the mouse wait could not be measured",unsteady:"it did not run steadily"},De=s=>new Promise(e=>{setTimeout(e,s)});kt=class{constructor(){document.querySelector("#adPanelHost")?.parentElement?.remove(),this.overlay=document.createElement("div"),this.onEscape=void 0,this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.93)";let e=document.createElement("div");e.id="adPanelHost",this.overlay.append(e),this.root=e.attachShadow({mode:"open"}),this.root.innerHTML=xp,document.body.append(this.overlay)}element(e){return this.root.querySelector(`#${e}`)}progress(e,t){this.element("adStatus").textContent=e,this.element("adBarFill").style.width=`${Math.round(t*100)}%`}choose(e,t,o,n){let r=o.find(l=>l.cancel);this.dismissWith(r?()=>r.onPick():void 0),this.element("adTitle").textContent=e,this.element("adStatus").textContent=t;let i=this.element("adNote");i.textContent=n??"",i.style.display=n?"block":"none",this.element("adBar").style.display="none",this.element("adHint").style.display="none";let a=this.element("adActions");a.style.display="flex",a.innerHTML="";for(let l of o){let c=document.createElement("div");c.className="adButton",c.textContent=l.label,c.onclick=()=>l.onPick(),a.append(c)}}result(e,t={}){this.dismissWith(()=>this.close()),this.element("adTitle").textContent=e.title,this.element("adStatus").textContent=e.line,this.element("adNote").style.display="none",this.element("adBar").style.display="none",this.element("adHint").style.display="none",this.element("adActions").style.display="flex",this.element("adDetailsButton").style.display="none",this.element("adUndo").style.display=e.changed&&t.onUndo?"":"none",this.element("adRun").style.display=t.onRun?"":"none",this.element("adRestart").style.display=e.needsRestart?"":"none",this.element("adRestart").onclick=()=>window.chrome.webview.postMessage("restart"),this.element("adAdvancedButton").style.display=t.report?"":"none";let o=this.element("adDetails");if(o.innerHTML=e.details.map(n=>`
    • ${n}
    • `).join(""),o.style.display=e.details.length>0?"block":"none",t.report){let n=this.element("adAdvanced");n.innerHTML=Jv(t.report);let r=this.element("adAdvancedButton");r.textContent="Advanced",r.onclick=()=>{let i=n.style.display!=="block";n.style.display=i?"block":"none",this.element("adPanel").classList.toggle("adWide",i),r.textContent=i?"Hide advanced":"Advanced"},this.element("adCopy").onclick=()=>{let i=JSON.stringify({kute:u.version,...t.report},null,2);navigator.clipboard.writeText(i).then(()=>{this.element("adCopy").textContent="Copied"},()=>{this.element("adCopy").textContent="Copying failed"})}}this.element("adOk").onclick=()=>this.close(),this.element("adUndo").onclick=()=>{this.close(),t.onUndo?.()},this.element("adRun").onclick=()=>{this.close(),t.onRun?.()}}clickThrough(e){this.overlay.style.pointerEvents=e?"none":""}dismissWith(e){this.unbindEscape(),this.overlay.onclick=e?t=>{t.target===this.overlay&&e()}:null,e&&(this.onEscape=t=>{t.key==="Escape"&&(t.stopPropagation(),e())},document.addEventListener("keydown",this.onEscape,!0))}unbindEscape(){this.onEscape&&document.removeEventListener("keydown",this.onEscape,!0),this.onEscape=void 0}close(){this.unbindEscape(),this.overlay.remove()}};ra=class{constructor(){this.running=!1,this.cancelled=!1}snapshot(){return{client:Object.fromEntries(jv.map(e=>[e,u.settings.data[e]])),game:Object.fromEntries(Gi.map(e=>[e,Es(e)]))}}restore(e){_n();for(let[t,o]of Object.entries(e.game))o!==null&&Es(t)!==o&&Me(t,o);for(let[t,o]of Object.entries(e.client))o!==void 0&&u.settings.data[t]!==o&&Ht(t,o)}undo(){let e=zt();if(!e?.undoable){u.showNotification("Nothing to undo",!1,3);return}let t=new Set(vt.filter(i=>i.needsReload).map(i=>i.id)),o=Object.entries(e.snapshot.game).some(([i,a])=>t.has(i)&&a!==null&&Es(i)!==a);this.restore(e.snapshot);let n=Ts();e.undoable=!1;let r="Your previous settings are back.";o&&(r="Your previous settings are back, the game reloads once to apply them."),n&&(r+=" Restart Kute to finish."),e.summary={title:"Undone",line:r,details:[],changed:!1,needsRestart:n},Fe(e),u.showNotification(`Auto-detect undone. ${r.replace("Your previous settings are back","Your settings are back")}`,!1,5),o&&setTimeout(()=>location.reload(),1200)}dropUndo(){let e=zt();e?.undoable&&(e.undoable=!1,Fe(e))}showLast(){let e=zt();if(!e?.summary){u.showNotification("Auto-detect has not run yet",!1,3);return}new kt().result(e.summary,{onUndo:e.undoable?()=>this.undo():void 0,report:zp(e)})}async start(e={}){if(this.running)return;if(!u.hostFeatures?.includes(Lp)){u.showNotification("Auto-detect needs a newer Kute, update the client to use it",!1,6);return}if(u.recovery){u.showNotification("Auto-detect can't run in safe mode or while Kute looks for the cause of a crash",!1,6);return}if(!As()){u.showNotification("Log in first: auto-detect measures in a private test match, and hosting one needs an account",!1,6);return}if(document.pointerLockElement||He()){u.showNotification("Open the menu outside of a competitive match first",!1,4);return}if(!e.resume&&Ts()){u.showNotification("Restart Kute first: a setting you changed only applies after a restart, auto-detect would test the old one",!1,7);return}this.running=!0,this.cancelled=!1,window.closWind?.();let t,o;if(e.resume)t=e.resume,o=t.previous??null;else{o=zt(),o&&(delete o.wizard,delete o.wizardDetails);let l=this.snapshot();t={status:"running",at:Date.now(),snapshot:e.snapshot??l,baseline:l,previous:o,details:e.details??[]},Fe(t)}let n=new kt,r=l=>{l.key==="Escape"&&(this.cancelled=!0,Di())};document.addEventListener("keydown",r,!0);let i={inMatch:!1},a=()=>{window.chrome.webview.postMessage("input-replay-stop"),this.restore(t.snapshot),Fe(o||{status:"prompted",at:Date.now(),snapshot:t.snapshot}),n.close(),Ts()&&u.showNotification("Your settings are back. Restart Kute to finish",!1,7),i.inMatch&&(document.exitPointerLock(),location.href=Rp)};try{let l=await this.run(n,t,i);if(l==="restarting")return;if(l===null){a();return}t.status="done",t.summary=l.summary,t.report=l.report,t.undoable=l.summary.changed,!l.summary.changed&&o?.undoable&&(t.snapshot=o.snapshot,t.undoable=!0),delete t.previous,delete t.baseline,delete t.carry,delete t.details,t.showSummary=!0,Fe(t),n.progress("Leaving the test match",1),document.exitPointerLock(),await De(800),location.href=Rp}catch(l){let c=`Auto-detect stopped: ${l instanceof Error?l.message:String(l)}`;i.inMatch&&sessionStorage.setItem(oa,c),a(),u.showNotification(c,!1,7)}finally{document.removeEventListener("keydown",r,!0),_p(!1),window.chrome.webview.postMessage("throttle, menu"),this.running=!1}}async run(e,t,o){let n=Gv(),r=t.baseline??t.snapshot,i=t.details??[],a=performance.now()-(t.carry?.elapsedMs??0),l=!!t.carry;e.progress("Reading your hardware",.02);let c=await Te("get-specs","specs");if(c===null)throw new Error("this needs a newer version of the client");let d=c.displays??[],p=d.find(M=>M.hostsWindow)??d[0],h=n.hz??(p?.hz>1?p.hz:60),f=(c.gpus??[]).filter(M=>!M.software),m=c.renderAdapter?.name??[...f].sort((M,F)=>F.vramMb-M.vramMb)[0]?.name??"unknown graphics card",g=n.battery??!!c.onBattery,b=n.laptop??(!!c.laptop||c.hybrid===!0),v=h*3,k=u.hostFeatures?.includes("load-sample")===!0,E=u.running?.hardFlip!==!1,L=Number(r.game[wt])||0,x=Number(r.client.gameFpsLimit)||0,$=Number(r.client.throttle)||1,I=[x,L].filter(M=>M>0),_=I.length>0?Math.min(...I):0,H=Pn(),G=null,J=[],B=[];if(!l){if(G=await Fi({hz:h,hybrid:c.hybrid===!0,progress:(M,F)=>e.progress(M,.03+.27*F),cancelled:()=>this.cancelled}),this.cancelled)return null;if(G&&n.force&&n.force in H&&(G={...G,winner:{...H,[n.force]:!H[n.force]},changed:!0,decidedBy:"p99"}),G){e.progress("Testing FPS limits",.31);let M=[...new Set([0,v,2*h,h,_])].sort((q,ee)=>ee-q),F=await qi({pipeline:G.winner,common:G.common,caps:M,cancelled:()=>this.cancelled});if(this.cancelled)return null;if(F){let q=na(F,_,"client test",b?v:void 0);J=q.rows,B=q.order}}}e.progress("Opening a private test match",.38),_p(!0),e.clickThrough(!0);let re=await $s(),je=!1;if(re&&(e.progress("Joining the test match",.41),je=await Cs(re)),e.clickThrough(!1),!je)throw window.closWind?.(),new Error("could not open a private test match (is a host slot free?)");o.inMatch=!0;let be=()=>{if(!Bn(re))throw new Error("left the private test match")};if(this.cancelled)return null;L>0&&l&&Me(wt,"0");let Ee=Number(u.settings.data.gameFpsLimit)||0,j=!0;Hn(),window.chrome.webview.postMessage("throttle, game"),await De(2500),await De(300),window.chrome.webview.postMessage("bring-to-front");let X=async(M,F=ta)=>{M!==Ee&&(Ht("gameFpsLimit",M),Ee=M,await De(qv),j=await Zv(M)),be(),k&&await Te("load-sample","loadSample",500),E&&await Te("get-present-intervals","presentIntervals",400);let q=await Zi({ms:F,hz:h,replay:!0});if(E){let ee=await Te("get-present-intervals","presentIntervals",400);ee&&ee.samples>0&&(q.presentMs=ee.p50)}if(k&&(q.load=await Te("load-sample","loadSample",500)),be(),!j&&!q.invalid&&(q.invalid=!0,q.why="nothing held the FPS limit"),n.collapse!==void 0&&(M===0||M>=n.collapse)){let ee=(te,O)=>(te??0)+O;return{...q,fps:(q.fps??0)/2,stallMs:400,p99:ee(q.p99,25),maxMs:ee(q.maxMs,40),taskP99:ee(q.taskP99,40),inputP99:ee(q.inputP99,30)}}return q},Y=async()=>{if(!k)return[];await X(0,Bt),window.chrome.webview.postMessage(`input-replay, ${10*Bt}`);let M=[],F=performance.now();for(await Te("load-sample","loadSample",500);performance.now()-F<10*Bt&&!this.cancelled;){let q=await Hp(300);if(q===null)break;M.push({ms:Math.round(performance.now()-F),fps:Math.round(q),load:await Te("load-sample","loadSample",500)})}return window.chrome.webview.postMessage("input-replay-stop"),M},y=async(M,F=ta)=>{let q=[];for(let ee=0;ee<5&&q.length<2&&!this.cancelled;ee++){let te=await X(M,F);te.invalid||q.push(te)}return q},C=async M=>{for(let F=0;F<4&&!this.cancelled;F++)if(!gt([await X(M,On)],M))return},R=async M=>{let F=new Map(M.map(q=>[q,[]]));for(let q=0;q<2;q++)for(let ee of M){if(this.cancelled)return F;F.get(ee)?.push(await X(ee))}return F},{carry:K}=t;if(!K){e.progress("Measuring how the game runs now",.45),await X(Ee);let M=await y(Ee);if(this.cancelled)return null;if(M.length<2)throw new Error("the game could not be measured, the Kute window has to stay in front during the test");L>0&&Me(wt,"0"),$>1&&(Ht("throttle",1),window.chrome.webview.postMessage("throttle, game"),await De(Ms)),e.progress("Measuring what this PC can do",.5);let q=_===0&&$<=1?[...M,await X(0)]:[await X(0),await X(0),await X(0)];if(this.cancelled)return null;if(K={asPlayed:M,uncapped:q,playedCap:_,pipelineBefore:H,pipelineAfter:G?.winner??H,pipelineChanged:!!G?.changed,decidedBy:G?.decidedBy??null,rows:G?.rows??[],benchCaps:J,capOrder:B,elapsedMs:performance.now()-a},K.pipelineChanged){t.carry=K,Fe(t),L>0&&Me(wt,String(L)),Ee!==x&&Ht("gameFpsLimit",x);for(let ee of Oe)K.pipelineAfter[ee.setting]!==H[ee.setting]&&Ht(ee.setting,K.pipelineAfter[ee.setting]);return document.exitPointerLock(),e.choose("Kute restarts once","The client test found a setup that runs better on this PC. Kute restarts with it and checks it in the game, the test goes on by itself.",[]),await De(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}}let{playedCap:z}=K,N=K,V=M=>({version:2,gpu:m,cpu:`${c.cpu?.name??"unknown processor"}, ${c.cpu?.threads??"?"} threads`,hz:h,laptop:!!c.laptop,hybrid:typeof c.hybrid=="boolean"?c.hybrid:null,powerOverlay:c.powerOverlay??null,capacity:io(N.uncapped),unlimited:N.uncapped.map(Fn),played:N.asPlayed.map(Fn),adapters:{render:c.renderAdapter?.luid??null,display:p?.adapter??null},hybridSource:c.hybridSource??null,client:{...Object.fromEntries(["gameFpsLimit","throttle","inMenuThrottle","uncapFps","patchFrameLimiter","obsCapturePlugin","renderStats","performanceMode","webviewPriority",...Oe.map(F=>F.setting)].map(F=>[F,r.client[F]??u.settings.data[F]??null])),gameFrameCap:L,hook:c.hook??null,limiter:u.frameLimiter??null,running:u.running??null},noise:0,drift:1,headroom:1,beforeCap:z,before:ye(N.asPlayed),afterCap:z,after:null,pipeline:N.rows,caps:N.benchCaps,halfResolutionGain:null,settings:[],plan:Nn({capacity:io(N.uncapped),hz:h,headroom:1,halfResolutionGain:null,settings:[]}),input:Hn(),rolledBack:null,pipelineRefused:N.pipelineRefused??null,recheck:N.recheck??[],seconds:(performance.now()-a)/1e3,...M}),de=(M,F={})=>{this.restore(t.snapshot);let q=Ts();return{summary:{title:"Nothing changed",line:q?`${M} Restart Kute to finish.`:M,details:[],changed:!1,needsRestart:q},report:V({...F,rolledBack:M})}},Z=io(N.uncapped){let{keep:ee,failed:te}=ws(M,F,{capBefore:z,capAfter:q,trade:Z});return ee?null:te==="reference"?"Kute could not measure the game with your own settings well enough to compare (its window has to stay in front), so it put yours back.":te==="result"?"Kute could not measure the result (its window has to stay in front), so it put your settings back.":`The new settings measured worse than yours (${te==="fps"?`${Math.round(io(F))} FPS, ${Math.round(io(M))} before`:Uv[te??""]}), so Kute put yours back.`},le=[...i];if($>1&&le.push(`CPU Throttling: ${$} \u2192 off (it slows the game down on purpose, the result is checked against how the game ran with it)`),l&&N.pipelineChanged&&!N.pipelineRefused){e.progress("Checking the new setup in the game",.5);let M=await y(z);if(this.cancelled)return null;let F={recheck:M.map(Fn)},q=gt(N.asPlayed,z)&>(M,z)?null:ge(N.asPlayed,M,z);if(q&&ws(N.asPlayed,M,{capBefore:z,capAfter:z,trade:Z}).failed==="result")return de(q.replace("The new settings","The setup that won the client test"),F);if(q){for(let O of Oe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&Ht(O.setting,N.pipelineBefore[O.setting]);return L>0&&Me(wt,String(L)),Ee!==x&&Ht("gameFpsLimit",x),t.carry={...N,pipelineRefused:q.replace("The new settings","The setup that won the client test"),...F,elapsedMs:performance.now()-a,resumed:!1},Fe(t),document.exitPointerLock(),e.choose("Kute restarts once more","The setup from the client test ran worse in the game, so Kute goes back to yours and tests the FPS limits on it.",[]),await De(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}let ee=N.rows.find(O=>Oe.every(ve=>O.pipeline[ve.setting]===N.pipelineAfter[ve.setting])),te=ee?Wv(N.decidedBy,ye(N.rows[0].readings),ye(ee.readings)):"measured better";for(let O of Oe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&le.push(`${O.label}: ${ut(N.pipelineBefore[O.setting])} \u2192 ${ut(N.pipelineAfter[O.setting])} (${te})`)}e.progress("Finding the FPS limit that runs best",.56);let Be=io(N.uncapped),Yt=Be>=v?v:h,xo=M=>!g||M===z||M!==0&&M<=v,zg=N.uncapped.filter(vs).length>=2,Ar=(b||zg)&&Be>=v?v:void 0,ze=new Map,Xt=[],se=z,Go="",Ie=Be,at=bs(new Map([[0,N.uncapped]]));if(!at){let M=N.capOrder.length>0?N.capOrder.slice(0,2):zi({hz:h,capacity:Be,current:z}).slice(1,3),F=[...new Set([z,0,...M,...Ar?[Ar]:[],...g?[Yt]:[]])].filter(xo);if(ze=await R(F),this.cancelled)return null;at=bs(ze);let q=na(ze,z,"test match",Ar,Z);if(Xt=q.rows,!at){se=q.winner,Go=q.reason,Ie=io(ze.get(0)??[])||Be;let ee=Hi([...ze.keys()],se,Ie,h).filter(te=>xo(te)&&te0){e.progress("Fine tuning the FPS limit",.64);let te=await R(ee);if(this.cancelled)return null;let O=na(new Map([[se,ze.get(se)??[]],...te]),se,"test match",void 0,Z);Xt.push(...O.rows.filter(ve=>ve.cap!==se));for(let[ve,Ye]of te)ze.set(ve,Ye);O.winner!==se&&(se=O.winner,Go=O.reason),at=bs(ze)}}}let Wo;if(at){e.progress("Finding the FPS limit this PC holds steadily",.62);let M=new Map;await C(h);for(let te of Ln(h)){if(this.cancelled)return null;let O=await y(te,Ap);if(M.set(te,O),!no(O,te))break}if(this.cancelled)return null;let F=Ni(h,M),q=(Kn([...N.uncapped,...ze.get(0)??[]].filter(gs).map(te=>te.stallMs))??0)/1e3;Wo={stoodStill:q,steadyUpTo:F.steadyUpTo,limit:F.cap};for(let te of Xt)te.outcome==="better"&&(te.outcome="not used");for(let[te,O]of M){let ve=no(O,te)?"steady":"not steady";Xt.push({cap:te,where:"test match",summary:ye(O.map(_o)),frameMs:Kn(O.map(Ye=>Ye.p50)),netMs:null,outcome:ve}),ze.set(te,O)}let ee=z>0&&no(N.asPlayed,z);se=z,ee||(se=[...new Set([F.cap,F.steadyUpTo])].filter(O=>O!==null).find(O=>ws(N.asPlayed,M.get(O)??[],{capBefore:z,capAfter:O}).keep)??z),Go=`without a limit this PC stood still ${Math.round(q*100)} % of the time. Up to ${F.steadyUpTo} FPS it ran steadily in the empty test match, ${se} FPS ${(F.steadyUpTo??0)>se?"leaves a step of room for a real match":"is the highest that did"}`}let Vo=Xt.find(M=>M.cap===Yt),Hg=Vo!==void 0&&(Vo.outcome==="steady"||Vo.netMs!==null&&(Vo.outcome==="better"||Vo.outcome==="not better"));g&&(se===0||se>v)&&Hg&&(se=Yt,Go="on battery");for(let M of Xt)M.cap===se&&M.cap!==z&&M.outcome!=="not steady"&&(M.outcome="chosen"),M.readings=(ze.get(M.cap)??[]).map(Fn);let ln=N.uncapped.map(M=>M.fps).filter(M=>typeof M=="number"),Jd=ln.length>1?(Math.max(...ln)-Math.min(...ln))/Math.max(1,...ln):0,Lr=1,cn=1,Rr=null;if(!at){Rr=await X(0);let M=(l?ze.get(0)?.[0]:N.uncapped[0])?.fps??Ie;Lr=(Rr.fps??Ie)/Math.max(1,M),cn=Bi(Lr,Jd)}let Og=v*cn,So=[],Pr=null,Yo=Number(r.game[ro])||1;if(at)for(let M of vt)So.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC does not run steadily without a limit)"});else if(IeO.inputP99!==null),F=Rr?.fps??Ie,q=async(O,ve)=>{let Ye=F;O(),await De(Ms);let lt=async()=>{let ru=await X(0,On);return ru.invalid?null:ru.fps},Jt=await lt();ve(),await De(Ms);let Xe=await lt();if(Jt===null||Xe===null)return{ratio:1,steady:!1,raw:[Ye,Jt??0,Xe??0]};F=Xe;let nu=(Ye+Xe)/2;return{ratio:Jt/Math.max(1,nu),steady:Math.abs(Ye-Xe)/Math.max(1,nu)<=Kv,raw:[Ye,Jt,Xe]}},ee=vt.filter(O=>!O.needsReload&&(M||!O.fightOnly));for(let O of vt){let ve=r.game[O.id],Ye=String(O.cheap),lt={id:O.id,label:O.label,current:ve??"default",cheap:Ye,gain:null,steady:!0};if(So.push(lt),O.needsReload){lt.note="not tested (needs a reload)";continue}if(O.fightOnly&&!M){lt.note="not tested (only costs in a fight)";continue}if(ve===null){lt.note="value unknown";continue}if(this.cancelled)return null;e.progress(`Measuring ${O.label}`,.68+.17*ee.indexOf(O)/ee.length);let Jt=Vi(ve),Xe=await q(()=>Me(O.id,Jt),()=>Me(O.id,ve));lt.gain=Jt===Ye?Xe.ratio:1/Math.max(.01,Xe.ratio),lt.steady=Xe.steady,lt.raw=Xe.raw}for(let O of So){if(O.gain===null||!O.steady||O.current===O.cheap||O.gainMe(O.id,O.cheap),()=>Me(O.id,O.current));O.confirmGain=ve.ratio,O.gain=Math.min(O.gain,ve.ratio),O.steady=ve.steady}e.progress("Checking the graphics card",.88);let te=await q(()=>Me(ro,String(Math.max(.1,Yo*.5))),()=>Me(ro,String(Yo)));Pr=te.steady&&te.ratio>.92?te.ratio:null}else for(let M of vt)So.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC reaches its target)"});if(this.cancelled)return null;let Ct=Nn({capacity:Ie,hz:h,headroom:cn,halfResolutionGain:Pr,settings:So});for(let M of Ct.changes)le.push(`${M.label}: ${ut(r.game[M.id])} \u2192 ${ut(M.value)} (${M.reason})`),Me(M.id,String(M.value));let Mt=null;if((Ct.changes.length>0||Ct.tuneResolution)&&(await De(Ms),Mt=(await X(0,On)).fps),Ct.tuneResolution&&Mt!==null){let M=Yo;for(let F=0;F<2&&Mt!==null&&Mtxs&&!this.cancelled;F++){let q=F===0?M*Math.sqrt(Mt/Ct.needed):xs;M=Math.min(M,Math.max(xs,Math.floor(q*20)/20)),e.progress(`Trying resolution ${M}`,.9+F*.01),Me(ro,String(M)),await De(Ms),Mt=(await X(0,On)).fps}M!==Yo&&le.push(`Resolution: ${Yo} \u2192 ${M} (the graphics card is the limit)`)}if(this.cancelled)return null;e.progress("Checking the result",.94),Ct.changes.length>0&&await X(se);let Zd=at?await Y():[];at&&await C(se);let Qd=await y(se,at?Ap:ta);if(this.cancelled)return null;let Ir={capacity:Ie,noise:Jd,drift:Lr,headroom:cn,afterCap:se,after:ye(Qd),caps:[...N.benchCaps,...Xt],halfResolutionGain:Pr,settings:So,plan:Ct,pushed:Wo,...Zd.length>0?{trace:Zd}:{}},Nr=se!==z,Dg=!Nr&&L>0&&(x===0||LFPS Limit: ${Dt(z)} \u2192 ${Dt(se)} (${Go})`):Dg&&le.push(`FPS Limit: ${Dt(se)}, now held by Kute instead of the game's frame cap (the game's cap keeps the processor busy while it waits)`);let dn=le.length>0,eu=le.length>i.length;if(eu){let M=(ze.get(z)??[]).filter(ee=>!ee.invalid),F=l||L>0||$>1,q=ge(!F&&M.length>=2?M:N.asPlayed,Qd,se);if(q)return de(q,Ir)}else L>0&&Me(wt,String(L)),Ee!==x&&Ht("gameFpsLimit",x);_n();let un=`${v} FPS (${3}x your ${h} Hz screen)`,tu=`${le.length} setting${le.length===1?"":"s"} changed.`,mt=`Your PC ran ${Math.round(Ie)} FPS in the test match, above the ${un} Kute aims for. Nothing needed changing.`;dn&&Mt!==null?mt=`${tu} Test match without a limit: ${Math.round(Ie)} FPS before, ${Math.round(Mt)} after. Kute aims for at least ${un} with no stutter.`:dn?mt=`${tu} Without a limit your PC runs ${Math.round(Ie)} FPS in the test match, Kute aims for at least ${un} with no stutter.`:Iese?" with room to spare":""}.`;else if(se>0&&no(N.asPlayed,se)){let ee=F!==null&&FsetTimeout(()=>this.offer(),1500),{once:!0});return}sessionStorage.setItem(Mp,"1");let e=new kt;e.choose("Set Kute up for this PC?","Kute can set the game up for what this PC can do: it measures in a private test match, and everything it changes can be undone. You have to be logged in for that.",[{label:"Yes",onPick:()=>{this.setUp(e)}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"No",cancel:!0,onPick:()=>this.decline(e)}],Bp())}decline(e){e.close(),this.remember("declined"),u.showNotification("Got it. You can always start the setup from Settings, Client",!1,5)}async signedIn(){if(As())return!0;if(!localStorage.getItem("krunker_token"))return!1;let e=Date.now()+Dv;for(;Date.now(){e.close(),window.loginOrRegister(),this.waitForLogin()}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}])}waitForLogin(){let e=Date.now()+Ov,t=setInterval(()=>{if(As()){clearInterval(t),this.askSettings();return}Date.now()>e&&clearInterval(t)},1e3)}askSettings(e=new kt){this.remember("settings"),e.choose("Where should your game settings come from?","Kute measures this PC either way and sets what it finds. This is only about the settings it starts from.",[{label:"Import a settings.txt",onPick:()=>{e.close(),this.remember("import"),window.importSettingsPopup()}},{label:"Kute's preset",onPick:()=>{e.close(),this.applyPreset()}},{label:"Keep my settings",onPick:()=>{e.close(),this.start()}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}],Bp())}afterImport(){if(zt()?.wizard!=="import")return;let e=this.snapshot();this.remember("run",e,[]),setTimeout(()=>{zt()?.wizard==="run"&&this.start({snapshot:e})},1500)}applyPreset(){let e=this.snapshot(),t=[];for(let[o,n]of Object.entries(Ui))String(e.game[o])!==String(n)&&(Me(o,n),t.push(`${Wi(o)}: ${ut(e.game[o])} \u2192 ${ut(n)} (Kute's preset)`));this.remember("run",e,t),u.showNotification("Applying Kute's preset, the game reloads once",!1,4),setTimeout(()=>location.reload(),1200)}resume(){let e=zt();if(e?.status==="running"){if(e.carry&&!e.carry.resumed){e.carry.resumed=!0,Fe(e),setTimeout(async()=>{if(await this.signedIn()){this.start({resume:e});return}this.restore(e.snapshot),e.previous?Fe(e.previous):localStorage.removeItem(qn),u.showNotification("Auto-detect could not go on (not logged in). Your settings are back, restart Kute to finish",!1,8)},ea);return}this.restore(e.snapshot),e.previous?Fe(e.previous):localStorage.removeItem(qn);return}let t=sessionStorage.getItem(oa);if(t&&(sessionStorage.removeItem(oa),setTimeout(()=>u.showNotification(t,!1,12),ea)),e?.showSummary&&e.summary){e.showSummary=!1,Fe(e),new kt().result(e.summary,{onUndo:()=>this.undo(),report:zp(e)});return}if(e?.wizard==="run"){setTimeout(async()=>{await this.signedIn()&&this.start({snapshot:e.snapshot,details:e.wizardDetails??[]})},ea);return}if(e?.wizard==="login"||e?.wizard==="settings"||e?.wizard==="import"){setTimeout(()=>this.setUp(),Tp);return}e&&e.wizard!=="later"||setTimeout(()=>this.offer(),Tp)}},Op=new ra;u.autoDetect=Op;Op.resume()});var Fp={};A(Fp,{clanTag:()=>Ls,default:()=>pt});function Ls(s){for(let e of s.children){if(e.tagName!=="SPAN")continue;let t=Qv.exec(e.textContent??"");if(t)return{span:e,tag:t[1]}}return null}function o0(s){let e="";for(let t of s.childNodes)t.nodeType===Node.TEXT_NODE&&(e+=t.textContent??"");return e.trim()}var Qv,Dp,e0,t0,la,pt,jn=w(()=>{"use strict";Qv=/^\s*\[(.+)\]\s*$/;Dp=[{list:"leaderContainer",kind:"leader",root:"leaderboardHolder"},{list:"ingameTable",kind:"ingame",root:"centerLeaderDisplay"},{list:"endTable",kind:"end",root:"endUI"},{list:"playerListH",kind:"alt",root:"menuWindow"}],e0=1e3,t0='.pListName, [class^="newLeaderName"], [class^="leaderName"], .endTableN';la=class{constructor(){this.decorators=new Map,this.watched=[],this.timer=0}add(e,t){this.decorators.set(e,t),this.watched.length===0&&this.observe(),this.refresh()}remove(e){if(this.decorators.delete(e),!(this.decorators.size>0)){for(let{observer:t}of this.watched)t.disconnect();this.watched=[],clearInterval(this.timer),this.timer=0}}observe(){for(let{root:e,list:t,kind:o}of Dp){let n=document.getElementById(e);n&&this.watch(n,t,o)}this.timer=setInterval(()=>this.discover(),e0)}watch(e,t,o){let n={observer:new MutationObserver(()=>this.walk(n)),target:e,list:t,kind:o};n.observer.observe(e,{childList:!0,subtree:!0}),this.watched.push(n),this.walk(n)}discover(){this.watched=this.watched.filter(e=>e.target.isConnected?!0:(e.observer.disconnect(),!1));for(let{list:e,kind:t}of Dp){let o=document.getElementById(e);o&&!this.watched.some(n=>n.target.contains(o))&&this.watch(o,e,t)}}refresh(){for(let e of this.watched)this.walk(e)}walk(e){let t=document.querySelectorAll(`#${e.list}`);if(t.length>0){for(let o of t)for(let n of o.querySelectorAll(t0)){let r={element:n,name:o0(n),kind:e.kind};for(let i of this.decorators.keys())i(r)}for(let o of this.decorators.values())o?.(e.kind)}e.observer.takeRecords()}},pt=new la});var Kp={};A(Kp,{default:()=>et,playerHash:()=>Un});function a0(){if(document.getElementById("signedInHeaderBar")===null)return"";let s=window.getGameActivity?.()?.id;return typeof s=="string"?s:""}function l0(){let s=window.getGameActivity?.()?.user;if(typeof s!="string")return"";if(localStorage.getItem("kro_setngss_premiumBadge")==="false"){let e=localStorage.getItem("krunker_username");if(e)return e}return s}async function Un(s,e){let t=new TextEncoder().encode(s+` +`+e),o=new Uint8Array(await crypto.subtle.digest("SHA-256",t));return Array.from(o.subarray(0,16),n=>n.toString(16).padStart(2,"0")).join("")}function c0(s,e,t){return new Promise(o=>{let n=0,r=i=>{let a=i?.data?.devProof;a?.nonce===s&&(clearTimeout(n),window.chrome.webview.removeEventListener("message",r),o(typeof a.user=="string"&&typeof a.proof=="string"?{user:a.user,proof:a.proof}:null))};n=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),o(null)},i0),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(`dev-proof, ${s}, ${e}, ${t}`)})}var s0,n0,r0,i0,ca,qp,et,da=w(()=>{"use strict";D();It();s0=[2,4,8,16,30],n0=2e3,r0=3e4,i0=1e3;ca=class{constructor(){this.game="",this.roster=new Set,this.devs=new Map,this.nonce="",this.listeners=new Set,this.socket=null,this.failures=0,this.timer=0,this.joined="",he.available().then(e=>{e&&this.open()}),he.listeners.add(e=>{if(!e){this.socket?.close();return}this.failures=0,he.available().then(t=>{t&&!this.socket&&this.open()})})}open(){if(he.down||he.offline())return;let e=new WebSocket(he.base.replace(/^http/,"ws")+"/ws");this.socket=e,e.addEventListener("open",()=>{setTimeout(()=>{this.socket===e&&(this.failures=0)},r0),e.send(JSON.stringify(u.settings.data.counted===!0?{t:"hi"}:{t:"hi",first:!0})),this.sync(),this.timer=setInterval(()=>this.sync(),n0)}),e.addEventListener("message",t=>this.receive(t.data)),e.addEventListener("close",()=>{clearInterval(this.timer),this.socket=null,this.joined="",this.nonce="",this.setRoster("",[]);let t=s0[this.failures++];t!==void 0&&setTimeout(()=>this.open(),t*1e3)})}async sync(){let e=a0(),t=e?l0():"",o=e&&t?e+` +`+t:"";if(o===this.joined)return;if(this.joined=o,!o){this.send({t:"leave"}),this.setRoster("",[]);return}let n=await Un(e,t);if(this.joined!==o)return;let r=u.dev===!0&&this.nonce?await c0(this.nonce,e,n):null;this.joined===o&&this.send(r?{t:"join",game:e,hash:n,dev:r}:{t:"join",game:e,hash:n})}send(e){this.socket?.readyState===WebSocket.OPEN&&this.socket.send(JSON.stringify(e))}receive(e){let t;try{t=JSON.parse(String(e))}catch{return}t?.t==="hello"&&typeof t.nonce=="string"?this.nonce=t.nonce:t?.t==="roster"&&typeof t.game=="string"&&Array.isArray(t.players)?this.joined.startsWith(t.game+` +`)&&this.setRoster(t.game,t.players):t?.t==="+"&&typeof t.h=="string"?(this.remember(t.h,t.d===1?t.c:void 0),this.changed()):t?.t==="-"&&typeof t.h=="string"?(this.roster.delete(t.h),this.devs.delete(t.h),this.changed()):t?.t==="counted"&&(u.settings.data.counted=!0,window.chrome.webview.postMessage("set-config, counted, true"))}remember(e,t){this.roster.add(e),typeof t=="string"&&t!==""?this.devs.set(e,t):this.devs.delete(e)}setRoster(e,t){if(!(e===this.game&&t.length===0&&this.roster.size===0)){this.game=e,this.roster=new Set,this.devs=new Map;for(let o of t)Array.isArray(o)&&typeof o[0]=="string"&&this.remember(o[0],o[1]===1?o[2]?.c:void 0);this.changed()}}changed(){for(let e of this.listeners)e()}},qp=new ca;u.presence=qp;et=qp});var Up,jp=w(()=>{Up="data:image/webp;base64,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"});var Wp,Gp=w(()=>{Wp="data:image/webp;base64,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"});var pa={};A(pa,{default:()=>g0});function Vp(s){let e=s?`[data-kute-badge="${s}"]`:"[data-kute-badge]";for(let o of document.querySelectorAll(e))o.remove();let t=s?`[data-kute-badged="${s}"]`:"[data-kute-badged]";for(let o of document.querySelectorAll(t))o.removeAttribute("data-kute-badged")}function Yp(s){(s.querySelector("[data-kute-badge]")??s.parentElement?.querySelector("[data-kute-badge]"))?.remove(),s.removeAttribute("data-kute-badged")}var p0,h0,m0,f0,ua,Xp,g0,ha=w(()=>{"use strict";D();jn();da();jp();Gp();p0="2px",h0={leader:"margin-top:5px;vertical-align:middle;height:21px;margin-left:2px",ingame:"margin-top:3px;vertical-align:middle;height:21px;margin-left:2px",end:"margin-top:-12px;vertical-align:middle;width:26px;margin-left:2px",alt:"vertical-align:middle;height:21px;margin-left:6px;position:relative;top:-0.35em"},m0={kute:Up,dev:Wp},f0={kute:"Kute",dev:"Kute Developer"};ua=class{constructor(){this.game="",this.hashes=new Map,this.pending=new Set,this.found=!1,this.candidates=[],this.enabled=u.settings.data.cuteBadge!==!1,this.decorator=e=>this.decorate(e),this.finisher=()=>this.finish(),u.settings.toggleCuteBadge=e=>this.toggle(e),et.listeners.add(()=>this.rosterChanged())}toggle(e){this.enabled=e,e||Vp("kute"),pt.refresh()}rosterChanged(){if(et.game!==this.game&&(this.game=et.game,this.hashes.clear(),this.pending.clear()),Vp(),et.roster.size===0){pt.remove(this.decorator);return}pt.add(this.decorator,this.finisher)}decorate(e){if(et.roster.size===0||e.name==="")return;let t=this.hashes.get(e.name);if(t===void 0){this.learn(e.name);return}if(et.devs.has(t)){this.candidates.push({row:e,hash:t,tag:Ls(e.element)?.tag});return}this.enabled&&!e.element.hasAttribute("data-kute-badged")&&et.roster.has(t)&&this.insert(e,"kute")}finish(){if(this.candidates.length===0)return;let e=new Map;for(let t of this.candidates){let o=e.get(t.hash);o?o.push(t):e.set(t.hash,[t])}for(let[t,o]of e){let n=o.filter(i=>i.tag===et.devs.get(t)),r=null;n.length===1?r=n[0].row:n.length===0&&o.length===1&&(r=o[0].row);for(let i of o){let a=i.row.element.getAttribute("data-kute-badged");if(i.row!==r){a&&Yp(i.row.element);continue}a!=="dev"&&(a&&Yp(i.row.element),this.insert(i.row,"dev"))}}this.candidates.length=0}async learn(e){if(this.pending.has(e))return;this.pending.add(e);let{game:t}=this,o=await Un(t,e);t===this.game&&(this.pending.delete(e),this.hashes.set(e,o),et.roster.has(o)&&(this.found=!0),!(this.pending.size>0||!this.found)&&(this.found=!1,pt.refresh()))}insert(e,t){let{element:o}=e,n=o.parentElement;if(!n)return;let r=document.createElement("img");r.src=m0[t],r.setAttribute("data-kute-badge",t),r.alt="",r.title=f0[t],r.style.cssText=h0[e.kind],e.kind==="alt"?o.append(r):e.kind==="end"?n.insertBefore(r,o.nextSibling):n.insertBefore(r,n.firstElementChild?.nextSibling??o),r.nextElementSibling?.tagName==="I"&&(r.style.marginRight=p0),o.setAttribute("data-kute-badged",t)}},Xp=new ua;u.badges=Xp;g0=Xp});var Jp=we((_S,b0)=>{b0.exports=`#chatList>*{display:block!important}#chatInputHolder{opacity:1;transition:opacity .2s ease-in-out,transform .2s ease-in-out}#chatList::-webkit-scrollbar{display:none}#chatList{transition:margin-bottom .2s ease-in-out}#uiBase.onGame #chatList{margin-bottom:-50px}#uiBase.onMenu #chatInputHolder{transition:none}#uiBase.onGame #chatInputHolder{opacity:0;transform:translateY(50px)}#uiBase.onGame #chatHolder:focus-within #chatInputHolder{opacity:1;transform:translateY(0)}#uiBase.onGame #chatHolder:focus-within #chatList{margin-bottom:0}#uiBase.onSpect #chatInputHolder{opacity:1;transform:translateY(0)}#uiBase.onSpect #chatList{margin-bottom:0} +`});var fa={};A(fa,{default:()=>v0});var ma,v0,ga=w(()=>{"use strict";D();Ae();ma=class{constructor(){this.teamModes=new Set(["Team Deathmatch","Hardpoint","Capture the Flag","Hide & Seek","Infected","Last Man Standing","Simon Says","Prop Hunt","Boss Hunt","Deposit","Stalker","Kill Confirmed","Defuse","Traitor","Blitz","Domination","Squad Deathmatch","Team Defender"]),this.styles=document.createElement("style"),Promise.resolve().then(()=>ue(Jp(),1)).then(e=>{this.styles.innerHTML=e.default}),u.settings.toggleBetterChat=e=>this.toggle(e),this.chatHolder=U("#chatHolder"),this.chatList=U("#chatList"),this.chatInput=ke("#chatInput"),this.chatSwitch=U("#chatSwitch"),this.channelT=document.createElement("div"),this.channelA=document.createElement("div"),this.channelT.style.cssText="float: left; display: inline-block; margin-right: 5px; color: #9eeb56;",this.channelT.textContent="[T]",this.channelA.style.cssText="float: left; display: inline-block; margin-right: 5px; color: #eb5656;",this.channelA.textContent="[M]",this.observer=new MutationObserver(e=>this.parseMessages(e)),this.toggle(!0)}switchChat=e=>{e.key==="Tab"&&(window.switchChat(this.chatSwitch),e.preventDefault())};parseMessages(e){let t=!1;for(let o of e)for(let n of o.addedNodes){if(!(n instanceof HTMLElement))continue;let r=n.querySelector(".chatItem");if(!r)continue;let i=r.querySelector(".chatMsg");if(!i)continue;if(i.textContent.includes("Text & Voice Chat")){n.remove();continue}let{tab:a}=n.dataset;!a||!r.textContent.includes("\u200E:")||!this.teamModes.has(window.getGameActivity().mode)||(a==="0"?i.insertBefore(this.channelA.cloneNode(!0),i.firstChild):a==="1"&&i.insertBefore(this.channelT.cloneNode(!0),i.firstChild),t=!0)}t&&(this.chatList.scrollTop=1e9)}toggle(e){e?(document.head.append(this.styles),this.chatInput.addEventListener("keydown",this.switchChat,{capture:!0}),this.observer.observe(this.chatList,{childList:!0})):(this.styles.remove(),this.chatInput.removeEventListener("keydown",this.switchChat,{capture:!0}),this.observer.disconnect())}},v0=new ma});var eh={};function Zp(){return Array.from(document.querySelectorAll(".bpClaimB")).filter(s=>s.offsetParent!==null&&s.textContent.trim()==="Claim")}function Qp(){let s=Zp().length>0;s?Ft.classList.remove("disabled"):Ft.classList.add("disabled"),Ft.textContent=s?"Claim All":"Nothing to Claim"}async function w0(){let s=Zp();if(s.length!==0){for(let e of s)e.getAttribute("onclick")?.includes("windows[5].claimItem(")&&e.click(),await new Promise(o=>setTimeout(o,200));Qp()}}function k0(){let s=document.querySelector(".bpBotH");s&&(s.append(Ft),Qp())}var Ft,y0,ba=w(()=>{"use strict";Ft=document.createElement("div");Ft.className="bpBtn skip";Ft.id="claimAllBtn";Ft.textContent="Claim All";Ft.onclick=()=>{window.playSelect?.(.1),w0()};y0=window.showWindow;window.showWindow=(...s)=>(s[0]===6&&queueMicrotask(()=>k0()),y0(...s))});function ya(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function dh(s){co=s}function zo(s){let e=[];return t=>{let o=Math.max(0,Math.min(3,t-1)),n=e[o];return n||(n=s(o),e[o]=n),n}}function Q(s,e=""){let t=typeof s=="string"?s:s.source,o={replace:(n,r)=>{let i=typeof r=="string"?r:r.source;return i=i.replace(Le.caret,"$1"),t=t.replace(n,i),o},getRegex:()=>new RegExp(t,e)};return o}function qe(s,e){if(e){if(Le.escapeTest.test(s))return s.replace(Le.escapeReplace,nh)}else if(Le.escapeTestNoEncode.test(s))return s.replace(Le.escapeReplaceNoEncode,nh);return s}function rh(s){try{s=encodeURI(s).replace(Le.percentDecode,"%")}catch{return null}return s}function ih(s,e){let t=s.replace(Le.findPipe,(r,i,a)=>{let l=!1,c=i;for(;--c>=0&&a[c]==="\\";)l=!l;return l?"|":" |"}),o=t.split(Le.splitPipe),n=0;if(o[0].trim()||o.shift(),o.length>0&&!o.at(-1)?.trim()&&o.pop(),e)if(o.length>e)o.splice(e);else for(;o.length=0&&Le.blankLine.test(e[t]);)t--;return e.length-t<=2?s:e.slice(0,t+1).join(` -`)}function Wn(s){return s.toLowerCase().toUpperCase().toLowerCase()}function bw(s,e){if(s.indexOf(e[1])===-1)return-1;let t=0;for(let o=0;o0?-2:-1}function vw(s,e=0){let t=e,o="";for(let n of s)if(n===" "){let r=4-t%4;o+=" ".repeat(r),t+=r}else o+=n,t++;return o}function lh(s,e,t,o,n){let r=e.href,i=e.title||null,a=s[1].replace(n.other.outputLinkReplace,"$1"),l=s[0].charAt(0)==="!";o.state.inLink=!0;let c=o.state.linkEmitted,u=o.state.inRawBlock;o.state.linkEmitted=!1;let h=o.inlineTokens(a),p=o.state.linkEmitted;if(o.state.linkEmitted=c,o.state.inLink=!1,!l){if(p){o.state.inRawBlock=u;return}o.state.linkEmitted=!0}return{type:l?"image":"link",raw:t,href:r,title:i,text:a,tokens:h}}function ww(s,e,t){let o=s.match(t.other.indentCodeCompensation);if(o===null)return e;let n=o[1];return e.split(` +`)}function Vn(s){return s.toLowerCase().toUpperCase().toLowerCase()}function bw(s,e){if(s.indexOf(e[1])===-1)return-1;let t=0;for(let o=0;o0?-2:-1}function vw(s,e=0){let t=e,o="";for(let n of s)if(n===" "){let r=4-t%4;o+=" ".repeat(r),t+=r}else o+=n,t++;return o}function lh(s,e,t,o,n){let r=e.href,i=e.title||null,a=s[1].replace(n.other.outputLinkReplace,"$1"),l=s[0].charAt(0)==="!";o.state.inLink=!0;let c=o.state.linkEmitted,d=o.state.inRawBlock;o.state.linkEmitted=!1;let p=o.inlineTokens(a),h=o.state.linkEmitted;if(o.state.linkEmitted=c,o.state.inLink=!1,!l){if(h){o.state.inRawBlock=d;return}o.state.linkEmitted=!0}return{type:l?"image":"link",raw:t,href:r,title:i,text:a,tokens:p}}function ww(s,e,t){let o=s.match(t.other.indentCodeCompensation);if(o===null)return e;let n=o[1];return e.split(` `).map(r=>{let i=r.match(t.other.beginningSpace);if(i===null)return r;let[a]=i;return r.slice(Math.min(a.length,n.length))}).join(` -`)}function ch(s,e,t,o){if(!e.includes("<"))return!1;for(let n=0;ne.length-n)return!0;n+=i[0].length-1}}return!1}function ie(s,e){return lo.parse(s,e)}function yw(...s){return lo.use(...s),ie.defaults=lo.defaults,dh(ie.defaults),ie}var co,ao,x0,Le,S0,E0,$0,Ps,C0,ya,uh,ph,M0,xa,T0,Sa,A0,L0,Is,Ea,R0,hh,P0,I0,N0,$a,th,_0,B0,z0,H0,mh,O0,xt,Ho,Ns,F0,D0,fh,q0,K0,j0,gh,U0,G0,W0,V0,bh,Y0,X0,J0,Z0,Q0,ew,tw,ow,sw,nw,rw,iw,aw,lw,vh,Gn,cw,dw,uw,oh,pw,hw,sh,Ca,mw,ba,fw,Un,Ls,gw,nh,Vn,et,Yn,Ma,tt,Rs,kw,lo,HS,OS,FS,DS,qS,KS,wh=w(()=>{co=ka();ao={exec:()=>null};x0=((s="")=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:s=>new RegExp(`^( {0,3}${s})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:zo(s=>new RegExp(`^ {0,${s}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:zo(s=>new RegExp(`^ {0,${s}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)),fencesBeginRegex:zo(s=>new RegExp(`^ {0,${s}}(?:\`\`\`|~~~)`)),headingBeginRegex:zo(s=>new RegExp(`^ {0,${s}}#`)),htmlBeginRegex:zo(s=>new RegExp(`^ {0,${s}}(?:)|<(?:script|pre|style|textarea|!--))`,"i")),blockquoteBeginRegex:zo(s=>new RegExp(`^ {0,${s}}>`))},S0=/^(?:[ \t]*(?:\n|$))+/,E0=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,$0=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Ps=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,C0=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,ya=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,uh=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,ph=Q(uh).replace(/bull/g,ya).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),M0=Q(uh).replace(/bull/g,ya).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),xa=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,T0=/^[^\n]+/,Sa=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,A0=Q(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Sa).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),L0=Q(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,ya).getRegex(),Is="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Ea=/|$))/,R0=Q("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Ea).replace("tag",Is).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),hh=s=>Q(xa).replace("hr",Ps).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",s).replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Is).getRegex(),P0=hh(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),I0=hh(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),N0=Q(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",I0).getRegex(),$a={blockquote:N0,code:E0,def:A0,fences:$0,heading:C0,hr:Ps,html:R0,lheading:ph,list:L0,newline:S0,paragraph:P0,table:ao,text:T0},th=Q("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Ps).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Is).getRegex(),_0={...$a,lheading:M0,table:th,paragraph:Q(xa).replace("hr",Ps).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",th).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Is).getRegex()},B0={...$a,html:Q(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Ea).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:ao,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Q(xa).replace("hr",Ps).replace("heading",` *#{1,6} *[^ -]`).replace("lheading",ph).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},z0=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,H0=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,mh=/^( {2,}|\\)\n(?!\s*$)[ \t]*/,O0=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",x0?"(?`+)[^`]+\k(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),gh=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,U0=Q(gh,"u").replace(/punct/g,xt).getRegex(),G0=Q(gh,"u").replace(/punct/g,fh).getRegex(),W0=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,V0=Q(W0,"u").replace(/openQuote/g,D0).replace(/punct/g,xt).getRegex(),bh="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Y0=Q(bh,"gu").replace(/notPunctSpace/g,Ns).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),X0=Q(bh,"gu").replace(/notPunctSpace/g,K0).replace(/punctSpace/g,q0).replace(/punct/g,fh).getRegex(),J0="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",Z0=Q(J0,"gu").replace(/notPunctSpace/g,Ns).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),Q0=Q("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Ns).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),ew="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",tw=Q(ew,"gu").replace(/notPunctSpace/g,Ns).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),ow=Q(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,xt).getRegex(),sw="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",nw=Q(sw,"gu").replace(/notPunctSpace/g,Ns).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),rw=Q(/\\(punct)/,"gu").replace(/punct/g,xt).getRegex(),iw=Q(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),aw=Q(Ea).replace("(?:-->|$)","-->").getRegex(),lw=Q("^comment|^|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",aw).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),vh=/\[(?:\\[\s\S]|[^\[\]\\])*\]/,Gn=Q(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets",vh).getRegex(),cw=Q(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",Gn).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),dw=Q(/^!?\[(label)\]\[(ref)\]/).replace("label",Gn).replace("ref",Sa).getRegex(),uw=Q(/^!?\[(ref)\](?:\[\])?/).replace("ref",Sa).getRegex(),oh=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/,pw=Q(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets",vh).getRegex(),hw=Q("reflink|nolink(?!\\()","g").replace("reflink",Q(/^!?\[(label)\]\[(ref)\]/).replace("label",pw).replace("ref",oh).getRegex()).replace("nolink",Q(/^!?\[(ref)\](?:\[\])?/).replace("ref",oh).getRegex()).getRegex(),sh=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Ca={_backpedal:ao,anyPunctuation:rw,autolink:iw,blockSkip:j0,br:mh,code:H0,del:ao,delLDelim:ao,delRDelim:ao,emStrongLDelim:U0,emStrongRDelimAst:Y0,emStrongRDelimUnd:Q0,escape:z0,link:cw,nolink:uw,punctuation:F0,reflink:dw,reflinkSearch:hw,tag:lw,text:O0,url:ao},mw={...Ca,emStrongLDelim:V0,emStrongRDelimAst:Z0,emStrongRDelimUnd:tw,link:Q(/^!?\[(label)\]\((.*?)\)/).replace("label",Gn).getRegex(),reflink:Q(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Gn).getRegex()},ba={...Ca,emStrongRDelimAst:X0,emStrongLDelim:G0,delLDelim:ow,delRDelim:nw,url:Q(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",sh).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:Q(/^(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},nh=s=>gw[s];Vn=class{options;rules;lexer;constructor(s){this.options=s||co}space(s){let e=this.rules.block.newline.exec(s);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(s){let e=this.rules.block.code.exec(s);if(e){let t=this.options.pedantic?e[0]:ah(e[0]),o=t.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t,codeBlockStyle:"indented",text:o}}}fences(s){let e=this.rules.block.fences.exec(s);if(e){let t=e[0],o=ww(t,e[3]||"",this.rules);return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:o}}}heading(s){let e=this.rules.block.heading.exec(s);if(e){let t=e[2].trim();if(this.rules.other.endingHash.test(t)){let o=qt(t,"#");(this.options.pedantic||!o||this.rules.other.endingSpaceTabChar.test(o))&&(t=o.trim())}return{type:"heading",raw:qt(e[0],` +`)}function ch(s,e,t,o){if(!e.includes("<"))return!1;for(let n=0;ne.length-n)return!0;n+=i[0].length-1}}return!1}function ie(s,e){return lo.parse(s,e)}function yw(...s){return lo.use(...s),ie.defaults=lo.defaults,dh(ie.defaults),ie}var co,ao,x0,Le,S0,E0,$0,Is,C0,xa,uh,ph,M0,Sa,T0,Ea,A0,L0,Ns,$a,R0,hh,P0,I0,N0,Ca,th,_0,B0,z0,H0,mh,O0,xt,Ho,_s,D0,F0,fh,q0,K0,j0,gh,U0,G0,W0,V0,bh,Y0,X0,J0,Z0,Q0,ew,tw,ow,sw,nw,rw,iw,aw,lw,vh,Wn,cw,dw,uw,oh,pw,hw,sh,Ma,mw,va,fw,Gn,Rs,gw,nh,Yn,tt,Xn,Ta,ot,Ps,kw,lo,HS,OS,DS,FS,qS,KS,wh=w(()=>{co=ya();ao={exec:()=>null};x0=((s="")=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:s=>new RegExp(`^( {0,3}${s})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:zo(s=>new RegExp(`^ {0,${s}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:zo(s=>new RegExp(`^ {0,${s}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)),fencesBeginRegex:zo(s=>new RegExp(`^ {0,${s}}(?:\`\`\`|~~~)`)),headingBeginRegex:zo(s=>new RegExp(`^ {0,${s}}#`)),htmlBeginRegex:zo(s=>new RegExp(`^ {0,${s}}(?:)|<(?:script|pre|style|textarea|!--))`,"i")),blockquoteBeginRegex:zo(s=>new RegExp(`^ {0,${s}}>`))},S0=/^(?:[ \t]*(?:\n|$))+/,E0=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,$0=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Is=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,C0=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,xa=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,uh=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,ph=Q(uh).replace(/bull/g,xa).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),M0=Q(uh).replace(/bull/g,xa).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Sa=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,T0=/^[^\n]+/,Ea=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,A0=Q(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Ea).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),L0=Q(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,xa).getRegex(),Ns="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",$a=/|$))/,R0=Q("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",$a).replace("tag",Ns).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),hh=s=>Q(Sa).replace("hr",Is).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",s).replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Ns).getRegex(),P0=hh(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),I0=hh(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),N0=Q(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",I0).getRegex(),Ca={blockquote:N0,code:E0,def:A0,fences:$0,heading:C0,hr:Is,html:R0,lheading:ph,list:L0,newline:S0,paragraph:P0,table:ao,text:T0},th=Q("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Is).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Ns).getRegex(),_0={...Ca,lheading:M0,table:th,paragraph:Q(Sa).replace("hr",Is).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",th).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Ns).getRegex()},B0={...Ca,html:Q(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",$a).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:ao,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Q(Sa).replace("hr",Is).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",ph).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},z0=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,H0=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,mh=/^( {2,}|\\)\n(?!\s*$)[ \t]*/,O0=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",x0?"(?`+)[^`]+\k(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),gh=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,U0=Q(gh,"u").replace(/punct/g,xt).getRegex(),G0=Q(gh,"u").replace(/punct/g,fh).getRegex(),W0=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,V0=Q(W0,"u").replace(/openQuote/g,F0).replace(/punct/g,xt).getRegex(),bh="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Y0=Q(bh,"gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),X0=Q(bh,"gu").replace(/notPunctSpace/g,K0).replace(/punctSpace/g,q0).replace(/punct/g,fh).getRegex(),J0="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",Z0=Q(J0,"gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),Q0=Q("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),ew="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",tw=Q(ew,"gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),ow=Q(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,xt).getRegex(),sw="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",nw=Q(sw,"gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),rw=Q(/\\(punct)/,"gu").replace(/punct/g,xt).getRegex(),iw=Q(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),aw=Q($a).replace("(?:-->|$)","-->").getRegex(),lw=Q("^comment|^|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",aw).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),vh=/\[(?:\\[\s\S]|[^\[\]\\])*\]/,Wn=Q(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets",vh).getRegex(),cw=Q(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",Wn).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),dw=Q(/^!?\[(label)\]\[(ref)\]/).replace("label",Wn).replace("ref",Ea).getRegex(),uw=Q(/^!?\[(ref)\](?:\[\])?/).replace("ref",Ea).getRegex(),oh=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/,pw=Q(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets",vh).getRegex(),hw=Q("reflink|nolink(?!\\()","g").replace("reflink",Q(/^!?\[(label)\]\[(ref)\]/).replace("label",pw).replace("ref",oh).getRegex()).replace("nolink",Q(/^!?\[(ref)\](?:\[\])?/).replace("ref",oh).getRegex()).getRegex(),sh=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Ma={_backpedal:ao,anyPunctuation:rw,autolink:iw,blockSkip:j0,br:mh,code:H0,del:ao,delLDelim:ao,delRDelim:ao,emStrongLDelim:U0,emStrongRDelimAst:Y0,emStrongRDelimUnd:Q0,escape:z0,link:cw,nolink:uw,punctuation:D0,reflink:dw,reflinkSearch:hw,tag:lw,text:O0,url:ao},mw={...Ma,emStrongLDelim:V0,emStrongRDelimAst:Z0,emStrongRDelimUnd:tw,link:Q(/^!?\[(label)\]\((.*?)\)/).replace("label",Wn).getRegex(),reflink:Q(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Wn).getRegex()},va={...Ma,emStrongRDelimAst:X0,emStrongLDelim:G0,delLDelim:ow,delRDelim:nw,url:Q(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",sh).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:Q(/^(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},nh=s=>gw[s];Yn=class{options;rules;lexer;constructor(s){this.options=s||co}space(s){let e=this.rules.block.newline.exec(s);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(s){let e=this.rules.block.code.exec(s);if(e){let t=this.options.pedantic?e[0]:ah(e[0]),o=t.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t,codeBlockStyle:"indented",text:o}}}fences(s){let e=this.rules.block.fences.exec(s);if(e){let t=e[0],o=ww(t,e[3]||"",this.rules);return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:o}}}heading(s){let e=this.rules.block.heading.exec(s);if(e){let t=e[2].trim();if(this.rules.other.endingHash.test(t)){let o=qt(t,"#");(this.options.pedantic||!o||this.rules.other.endingSpaceTabChar.test(o))&&(t=o.trim())}return{type:"heading",raw:qt(e[0],` `),depth:e[1].length,text:t,tokens:this.lexer.inline(t)}}}hr(s){let e=this.rules.block.hr.exec(s);if(e)return{type:"hr",raw:qt(e[0],` `)}}blockquote(s){let e=this.rules.block.blockquote.exec(s);if(e){let t=qt(e[0],` `).split(` `),o="",n="",r=[];for(;t.length>0;){let i=!1,a=[],l;for(l=0;l1,n={type:"list",raw:"",ordered:o,start:o?+t.slice(0,-1):"",loose:!1,items:[]};t=o?`\\d{1,9}\\${t.slice(-1)}`:`\\${t}`,this.options.pedantic&&(t=o?t:"[*+-]");let r=this.rules.other.listItemRegex(t),i=!1;for(;s;){let l=!1,c="",u="";if(!(e=r.exec(s))||this.rules.block.hr.test(s))break;c=e[0],s=s.substring(c.length);let h=vw(e[2].split(` -`,1)[0],e[1].length),p=s.split(` -`,1)[0],f=!h.trim(),m=0;if(this.options.pedantic?(m=2,u=h.trimStart()):f?m=e[1].length+1:(m=h.search(this.rules.other.nonSpaceChar),m=m>4?1:m,u=h.slice(m),m+=e[1].length),f&&this.rules.other.blankLine.test(p)&&(c+=p+` -`,s=s.substring(p.length+1),l=!0),!l){let g=this.rules.other.nextBulletRegex(m),b=this.rules.other.hrRegex(m),v=this.rules.other.fencesBeginRegex(m),k=this.rules.other.headingBeginRegex(m),E=this.rules.other.htmlBeginRegex(m),L=this.rules.other.blockquoteBeginRegex(m);for(;s;){let x=s.split(` -`,1)[0],$;if(p=x,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting," "),$=p):$=p.replace(this.rules.other.tabCharGlobal," "),v.test(p)||k.test(p)||E.test(p)||L.test(p)||g.test(p)||b.test(p))break;if($.search(this.rules.other.nonSpaceChar)>=m||!p.trim())u+=` -`+$.slice(m);else{if(f||h.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||v.test(h)||k.test(h)||b.test(h))break;u+=` -`+p}f=!p.trim(),c+=x+` -`,s=s.substring(x.length+1),h=$.slice(m)}}n.loose||(i?n.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(i=!0)),n.items.push({type:"list_item",raw:c,task:!!this.options.gfm&&this.rules.other.listIsTask.test(u),loose:!1,text:u,tokens:[]}),n.raw+=c}let a=n.items.at(-1);if(a)a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd();else return;n.raw=n.raw.trimEnd();for(let l of n.items)if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),!n.loose){let c=l.tokens.filter(h=>h.type==="space"),u=c.length>0&&c.some(h=>this.rules.other.anyLine.test(h.raw));n.loose=u}for(let l of n.items){let c=l.tokens[0];if(l.task&&(c?.type==="text"||c?.type==="paragraph")){l.text=l.text.replace(this.rules.other.listReplaceTask,""),c.raw=c.raw.replace(this.rules.other.listReplaceTask,""),c.text=c.text.replace(this.rules.other.listReplaceTask,"");for(let h=this.lexer.inlineQueue.length-1;h>=0;h--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[h].src)){this.lexer.inlineQueue[h].src=this.lexer.inlineQueue[h].src.replace(this.rules.other.listReplaceTask,"");break}let u=this.rules.other.listTaskCheckbox.exec(l.raw);if(u){let h={type:"checkbox",raw:u[0]+" ",checked:u[0]!=="[ ]"};l.checked=h.checked,n.loose?l.tokens[0]&&["paragraph","text"].includes(l.tokens[0].type)&&"tokens"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=h.raw+l.tokens[0].raw,l.tokens[0].text=h.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(h)):l.tokens.unshift({type:"paragraph",raw:h.raw,text:h.raw,tokens:[h]}):l.tokens.unshift(h)}}else l.task&&(l.task=!1)}if(n.loose)for(let l of n.items){l.loose=!0;for(let c of l.tokens)c.type==="text"&&(c.type="paragraph")}return n}}html(s){let e=this.rules.block.html.exec(s);if(e){let t=ah(e[0]);return{type:"html",block:!0,raw:t,pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:t}}}def(s){let e=this.rules.block.def.exec(s);if(e){let t=Wn(e[1]).replace(this.rules.other.multipleSpaceGlobal," "),o=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",n=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:t,raw:qt(e[0],` +`),g=this.list(m);r[r.length-1]=g,o=o.substring(0,o.length-h.raw.length)+g.raw,n=n.substring(0,n.length-f.raw.length)+g.raw,t=m.substring(r.at(-1).raw.length).split(` +`);continue}}return{type:"blockquote",raw:o,tokens:r,text:n}}}list(s){let e=this.rules.block.list.exec(s);if(e){let t=e[1].trim(),o=t.length>1,n={type:"list",raw:"",ordered:o,start:o?+t.slice(0,-1):"",loose:!1,items:[]};t=o?`\\d{1,9}\\${t.slice(-1)}`:`\\${t}`,this.options.pedantic&&(t=o?t:"[*+-]");let r=this.rules.other.listItemRegex(t),i=!1;for(;s;){let l=!1,c="",d="";if(!(e=r.exec(s))||this.rules.block.hr.test(s))break;c=e[0],s=s.substring(c.length);let p=vw(e[2].split(` +`,1)[0],e[1].length),h=s.split(` +`,1)[0],f=!p.trim(),m=0;if(this.options.pedantic?(m=2,d=p.trimStart()):f?m=e[1].length+1:(m=p.search(this.rules.other.nonSpaceChar),m=m>4?1:m,d=p.slice(m),m+=e[1].length),f&&this.rules.other.blankLine.test(h)&&(c+=h+` +`,s=s.substring(h.length+1),l=!0),!l){let g=this.rules.other.nextBulletRegex(m),b=this.rules.other.hrRegex(m),v=this.rules.other.fencesBeginRegex(m),k=this.rules.other.headingBeginRegex(m),E=this.rules.other.htmlBeginRegex(m),L=this.rules.other.blockquoteBeginRegex(m);for(;s;){let x=s.split(` +`,1)[0],$;if(h=x,this.options.pedantic?(h=h.replace(this.rules.other.listReplaceNesting," "),$=h):$=h.replace(this.rules.other.tabCharGlobal," "),v.test(h)||k.test(h)||E.test(h)||L.test(h)||g.test(h)||b.test(h))break;if($.search(this.rules.other.nonSpaceChar)>=m||!h.trim())d+=` +`+$.slice(m);else{if(f||p.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||v.test(p)||k.test(p)||b.test(p))break;d+=` +`+h}f=!h.trim(),c+=x+` +`,s=s.substring(x.length+1),p=$.slice(m)}}n.loose||(i?n.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(i=!0)),n.items.push({type:"list_item",raw:c,task:!!this.options.gfm&&this.rules.other.listIsTask.test(d),loose:!1,text:d,tokens:[]}),n.raw+=c}let a=n.items.at(-1);if(a)a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd();else return;n.raw=n.raw.trimEnd();for(let l of n.items)if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),!n.loose){let c=l.tokens.filter(p=>p.type==="space"),d=c.length>0&&c.some(p=>this.rules.other.anyLine.test(p.raw));n.loose=d}for(let l of n.items){let c=l.tokens[0];if(l.task&&(c?.type==="text"||c?.type==="paragraph")){l.text=l.text.replace(this.rules.other.listReplaceTask,""),c.raw=c.raw.replace(this.rules.other.listReplaceTask,""),c.text=c.text.replace(this.rules.other.listReplaceTask,"");for(let p=this.lexer.inlineQueue.length-1;p>=0;p--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[p].src)){this.lexer.inlineQueue[p].src=this.lexer.inlineQueue[p].src.replace(this.rules.other.listReplaceTask,"");break}let d=this.rules.other.listTaskCheckbox.exec(l.raw);if(d){let p={type:"checkbox",raw:d[0]+" ",checked:d[0]!=="[ ]"};l.checked=p.checked,n.loose?l.tokens[0]&&["paragraph","text"].includes(l.tokens[0].type)&&"tokens"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=p.raw+l.tokens[0].raw,l.tokens[0].text=p.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(p)):l.tokens.unshift({type:"paragraph",raw:p.raw,text:p.raw,tokens:[p]}):l.tokens.unshift(p)}}else l.task&&(l.task=!1)}if(n.loose)for(let l of n.items){l.loose=!0;for(let c of l.tokens)c.type==="text"&&(c.type="paragraph")}return n}}html(s){let e=this.rules.block.html.exec(s);if(e){let t=ah(e[0]);return{type:"html",block:!0,raw:t,pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:t}}}def(s){let e=this.rules.block.def.exec(s);if(e){let t=Vn(e[1]).replace(this.rules.other.multipleSpaceGlobal," "),o=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",n=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:t,raw:qt(e[0],` `),href:o,title:n}}}table(s){let e=this.rules.block.table.exec(s);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let t=ih(e[1]),o=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),n=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(` `):[],r={type:"table",raw:qt(e[0],` `),header:[],align:[],rows:[]};if(t.length===o.length){for(let i of o)this.rules.other.tableAlignRight.test(i)?r.align.push("right"):this.rules.other.tableAlignCenter.test(i)?r.align.push("center"):this.rules.other.tableAlignLeft.test(i)?r.align.push("left"):r.align.push(null);for(let i=0;i({text:a,tokens:this.lexer.inline(a),header:!1,align:r.align[l]})));return r}}lheading(s){let e=this.rules.block.lheading.exec(s);if(e){let t=e[1].trim();return{type:"heading",raw:qt(e[0],` `),depth:e[2].charAt(0)==="="?1:2,text:t,tokens:this.lexer.inline(t)}}}paragraph(s){let e=this.rules.block.paragraph.exec(s);if(e){let t=e[1].charAt(e[1].length-1)===` -`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(s){let e=this.rules.block.text.exec(s);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(s){let e=this.rules.inline.escape.exec(s);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(s){let e=this.rules.inline.tag.exec(s);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(s){let e=this.rules.inline.link.exec(s);if(e){let t=e[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&ch(s,e[1],t,this.rules))return;let o=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(o)){if(!this.rules.other.endAngleBracket.test(o))return;let i=qt(o.slice(0,-1),"\\");if((o.length-i.length)%2===0)return}else{let i=bw(e[2],"()");if(i===-2)return;if(i>-1){let a=(e[0].indexOf("!")===0?5:4)+e[1].length+i;e[2]=e[2].substring(0,i),e[0]=e[0].substring(0,a).trim(),e[3]=""}}let n=e[2],r="";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(n);i&&(n=i[1],r=i[3])}else r=e[3]?e[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(o)?n=n.slice(1):n=n.slice(1,-1)),lh(e,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(s,e){let t;if((t=this.rules.inline.reflink.exec(s))||(t=this.rules.inline.nolink.exec(s))){let o=t[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&ch(s,t[1],o,this.rules))return;let n=(t[2]||t[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=e[Wn(n)];if(!r){let i=t[0].charAt(0);return{type:"text",raw:i,text:i}}return lh(t,r,t[0],this.lexer,this.rules)}}emStrong(s,e,t=""){let o=this.rules.inline.emStrongLDelim.exec(s);if(!(!o||!o[1]&&!o[2]&&!o[3]&&!o[4]||o[4]&&t.match(this.rules.other.unicodeAlphaNumeric))&&(!(o[1]||o[3])||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=0,c=o[0][0],u=t===c,h=c==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(h.lastIndex=0,e=e.slice(-1*s.length+n);(o=h.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r)continue;if(i=[...r].length,o[3]||o[4]){a+=i;continue}else if(o[5]||o[6]){if(n%3&&!((n+i)%3)){l+=i;continue}if(u)break}if(a-=i,a>0)continue;i=Math.min(i,i+a+l);let p=[...o[0]][0].length,f=s.slice(0,n+o.index+p+i);if(Math.min(n,i)%2){let g=f.slice(1,-1);return{type:"em",raw:f,text:g,tokens:this.lexer.inlineTokens(g)}}let m=f.slice(2,-2);return{type:"strong",raw:f,text:m,tokens:this.lexer.inlineTokens(m)}}}}codespan(s){let e=this.rules.inline.code.exec(s);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," "),o=this.rules.other.nonSpaceChar.test(t),n=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return o&&n&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(s){let e=this.rules.inline.br.exec(s);if(e)return{type:"br",raw:e[0]}}del(s,e,t=""){let o=this.rules.inline.delLDelim.exec(s);if(o&&(!o[1]||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=this.rules.inline.delRDelim;for(l.lastIndex=0,e=e.slice(-1*s.length+n);(o=l.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r||(i=[...r].length,i!==n))continue;if(o[3]||o[4]){a+=i;continue}if(a-=i,a>0)continue;i=Math.min(i,i+a);let c=[...o[0]][0].length,u=s.slice(0,n+o.index+c+i),h=u.slice(n,-n);return{type:"del",raw:u,text:h,tokens:this.lexer.inlineTokens(h)}}}}autolink(s){let e=this.rules.inline.autolink.exec(s);if(e){let t,o;return e[2]==="@"?(t=e[1],o="mailto:"+t):(t=e[1],o=t),{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}url(s){let e;if(e=this.rules.inline.url.exec(s)){let t,o;if(e[2]==="@")t=e[0],o="mailto:"+t;else{let n;do n=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(n!==e[0]);t=e[0],e[1]==="www."?o="http://"+e[0]:o=e[0]}return{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}inlineText(s){let e=this.rules.inline.text.exec(s);if(e){let t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:t}}}},et=class va{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||co,this.options.tokenizer=this.options.tokenizer||new Vn,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let t={other:Le,block:Un.normal,inline:Ls.normal};this.options.pedantic?(t.block=Un.pedantic,t.inline=Ls.pedantic):this.options.gfm&&(t.block=Un.gfm,this.options.breaks?t.inline=Ls.breaks:t.inline=Ls.gfm),this.tokenizer.rules=t}static get rules(){return{block:Un,inline:Ls}}static lex(e,t){return new va(t).lex(e)}static lexInline(e,t){return new va(t).inlineTokens(e)}lex(e){e=e.replace(Le.carriageReturn,` +`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(s){let e=this.rules.block.text.exec(s);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(s){let e=this.rules.inline.escape.exec(s);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(s){let e=this.rules.inline.tag.exec(s);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(s){let e=this.rules.inline.link.exec(s);if(e){let t=e[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&ch(s,e[1],t,this.rules))return;let o=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(o)){if(!this.rules.other.endAngleBracket.test(o))return;let i=qt(o.slice(0,-1),"\\");if((o.length-i.length)%2===0)return}else{let i=bw(e[2],"()");if(i===-2)return;if(i>-1){let a=(e[0].indexOf("!")===0?5:4)+e[1].length+i;e[2]=e[2].substring(0,i),e[0]=e[0].substring(0,a).trim(),e[3]=""}}let n=e[2],r="";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(n);i&&(n=i[1],r=i[3])}else r=e[3]?e[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(o)?n=n.slice(1):n=n.slice(1,-1)),lh(e,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(s,e){let t;if((t=this.rules.inline.reflink.exec(s))||(t=this.rules.inline.nolink.exec(s))){let o=t[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&ch(s,t[1],o,this.rules))return;let n=(t[2]||t[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=e[Vn(n)];if(!r){let i=t[0].charAt(0);return{type:"text",raw:i,text:i}}return lh(t,r,t[0],this.lexer,this.rules)}}emStrong(s,e,t=""){let o=this.rules.inline.emStrongLDelim.exec(s);if(!(!o||!o[1]&&!o[2]&&!o[3]&&!o[4]||o[4]&&t.match(this.rules.other.unicodeAlphaNumeric))&&(!(o[1]||o[3])||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=0,c=o[0][0],d=t===c,p=c==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(p.lastIndex=0,e=e.slice(-1*s.length+n);(o=p.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r)continue;if(i=[...r].length,o[3]||o[4]){a+=i;continue}else if(o[5]||o[6]){if(n%3&&!((n+i)%3)){l+=i;continue}if(d)break}if(a-=i,a>0)continue;i=Math.min(i,i+a+l);let h=[...o[0]][0].length,f=s.slice(0,n+o.index+h+i);if(Math.min(n,i)%2){let g=f.slice(1,-1);return{type:"em",raw:f,text:g,tokens:this.lexer.inlineTokens(g)}}let m=f.slice(2,-2);return{type:"strong",raw:f,text:m,tokens:this.lexer.inlineTokens(m)}}}}codespan(s){let e=this.rules.inline.code.exec(s);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," "),o=this.rules.other.nonSpaceChar.test(t),n=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return o&&n&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(s){let e=this.rules.inline.br.exec(s);if(e)return{type:"br",raw:e[0]}}del(s,e,t=""){let o=this.rules.inline.delLDelim.exec(s);if(o&&(!o[1]||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=this.rules.inline.delRDelim;for(l.lastIndex=0,e=e.slice(-1*s.length+n);(o=l.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r||(i=[...r].length,i!==n))continue;if(o[3]||o[4]){a+=i;continue}if(a-=i,a>0)continue;i=Math.min(i,i+a);let c=[...o[0]][0].length,d=s.slice(0,n+o.index+c+i),p=d.slice(n,-n);return{type:"del",raw:d,text:p,tokens:this.lexer.inlineTokens(p)}}}}autolink(s){let e=this.rules.inline.autolink.exec(s);if(e){let t,o;return e[2]==="@"?(t=e[1],o="mailto:"+t):(t=e[1],o=t),{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}url(s){let e;if(e=this.rules.inline.url.exec(s)){let t,o;if(e[2]==="@")t=e[0],o="mailto:"+t;else{let n;do n=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(n!==e[0]);t=e[0],e[1]==="www."?o="http://"+e[0]:o=e[0]}return{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}inlineText(s){let e=this.rules.inline.text.exec(s);if(e){let t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:t}}}},tt=class wa{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||co,this.options.tokenizer=this.options.tokenizer||new Yn,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let t={other:Le,block:Gn.normal,inline:Rs.normal};this.options.pedantic?(t.block=Gn.pedantic,t.inline=Rs.pedantic):this.options.gfm&&(t.block=Gn.gfm,this.options.breaks?t.inline=Rs.breaks:t.inline=Rs.gfm),this.tokenizer.rules=t}static get rules(){return{block:Gn,inline:Rs}}static lex(e,t){return new wa(t).lex(e)}static lexInline(e,t){return new wa(t).inlineTokens(e)}lex(e){e=e.replace(Le.carriageReturn,` `),this.blockTokens(e,this.tokens);for(let t=0;t(r=a.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let a=t.at(-1);r.raw.length===1&&a!==void 0?a.raw+=` `:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let a=t.at(-1);a?.type==="paragraph"||a?.type==="text"?(a.raw+=(a.raw.endsWith(` `)?"":` @@ -126,13 +126,13 @@ ${m}`,n=n.substring(0,n.length-f.text.length)+b.text;break}else if(p?.type==="li `+r.text,this.inlineQueue.at(-1).src=a.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let a=t.at(-1);a?.type==="paragraph"||a?.type==="text"?(a.raw+=(a.raw.endsWith(` `)?"":` `)+r.raw,a.text+=` -`+r.raw,this.inlineQueue.at(-1).src=a.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let a=1/0,l=e.slice(1),c;this.options.extensions.startBlock.forEach(u=>{c=u.call({lexer:this},l),typeof c=="number"&&c>=0&&(a=Math.min(a,c))}),a<1/0&&a>=0&&(i=e.substring(0,a+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let a=t.at(-1);o&&a?.type==="paragraph"?(a.raw+=(a.raw.endsWith(` +`+r.raw,this.inlineQueue.at(-1).src=a.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let a=1/0,l=e.slice(1),c;this.options.extensions.startBlock.forEach(d=>{c=d.call({lexer:this},l),typeof c=="number"&&c>=0&&(a=Math.min(a,c))}),a<1/0&&a>=0&&(i=e.substring(0,a+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let a=t.at(-1);o&&a?.type==="paragraph"?(a.raw+=(a.raw.endsWith(` `)?"":` `)+r.raw,a.text+=` `+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):t.push(r),o=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let a=t.at(-1);a?.type==="text"?(a.raw+=(a.raw.endsWith(` `)?"":` `)+r.raw,a.text+=` -`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):t.push(r);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}linkInText(e){if(!e.includes("["))return!1;let t=this.tokenizer.rules.inline.link;for(let o of e.matchAll(this.tokenizer.rules.inline.blockSkip))if(t.test(o[0])&&e.charAt(o.index-1)!=="!")return!0;for(let o of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let n=o[0],r=n.lastIndexOf("[");if(!(n.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,Wn(n.slice(r+1,-1))))&&!(r>1&&this.linkInText(n.slice(1,r-1))))return!0}return!1}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let o=e;if(this.tokens.links&&e.includes("[")){let a=this.tokenizer.rules.inline.reflinkSearch,l=c=>{let u=c.lastIndexOf("[");if(!Object.hasOwn(this.tokens.links,Wn(c.slice(u+1,-1))))return c;if(u>1&&c.charAt(0)!=="!"){let h=c.slice(1,u-1);if(this.linkInText(h))return"["+h.replace(a,l)+"]["+"a".repeat(c.length-u-2)+"]"}return"["+"a".repeat(c.length-2)+"]"};o=o.replace(a,l)}o=o.replace(this.tokenizer.rules.inline.anyPunctuation,a=>"+".repeat(a.length)),o=o.replace(this.tokenizer.rules.inline.blockSkip,(a,l,c)=>{let u=c?c.length:0;return a.slice(0,u)+"["+"a".repeat(a.length-u-2)+"]"}),o=this.options.hooks?.emStrongMask?.call({lexer:this},o)??o;let n=!1,r="",i=1/0;for(;e;){if(e.length(a=c.call({lexer:this},e,t))?(e=e.substring(a.raw.length),t.push(a),!0):!1))continue;if(a=this.tokenizer.escape(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.tag(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.link(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(a.raw.length);let c=t.at(-1);a.type==="text"&&c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):t.push(a);continue}if(a=this.tokenizer.emStrong(e,o,r)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.codespan(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.br(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.del(e,o,r)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.autolink(e)){e=e.substring(a.raw.length),t.push(a);continue}if(!this.state.inLink&&(a=this.tokenizer.url(e))){e=e.substring(a.raw.length),t.push(a);continue}let l=e;if(this.options.extensions?.startInline){let c=1/0,u=e.slice(1),h;this.options.extensions.startInline.forEach(p=>{h=p.call({lexer:this},u),typeof h=="number"&&h>=0&&(c=Math.min(c,h))}),c<1/0&&c>=0&&(l=e.substring(0,c+1))}if(a=this.tokenizer.inlineText(l)){e=e.substring(a.raw.length),a.raw.slice(-1)!=="_"&&(r=a.raw.slice(-1)),n=!0;let c=t.at(-1);c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):t.push(a);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t="Infinite loop on byte: "+e;if(this.options.silent)console.error(t);else throw new Error(t)}},Yn=class{options;parser;constructor(s){this.options=s||co}space(s){return""}code({text:s,lang:e,escaped:t}){let o=(e||"").match(Le.notSpaceStart)?.[0],n=s?s.replace(Le.endingNewline,"")+` +`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):t.push(r);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}linkInText(e){if(!e.includes("["))return!1;let t=this.tokenizer.rules.inline.link;for(let o of e.matchAll(this.tokenizer.rules.inline.blockSkip))if(t.test(o[0])&&e.charAt(o.index-1)!=="!")return!0;for(let o of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let n=o[0],r=n.lastIndexOf("[");if(!(n.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,Vn(n.slice(r+1,-1))))&&!(r>1&&this.linkInText(n.slice(1,r-1))))return!0}return!1}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let o=e;if(this.tokens.links&&e.includes("[")){let a=this.tokenizer.rules.inline.reflinkSearch,l=c=>{let d=c.lastIndexOf("[");if(!Object.hasOwn(this.tokens.links,Vn(c.slice(d+1,-1))))return c;if(d>1&&c.charAt(0)!=="!"){let p=c.slice(1,d-1);if(this.linkInText(p))return"["+p.replace(a,l)+"]["+"a".repeat(c.length-d-2)+"]"}return"["+"a".repeat(c.length-2)+"]"};o=o.replace(a,l)}o=o.replace(this.tokenizer.rules.inline.anyPunctuation,a=>"+".repeat(a.length)),o=o.replace(this.tokenizer.rules.inline.blockSkip,(a,l,c)=>{let d=c?c.length:0;return a.slice(0,d)+"["+"a".repeat(a.length-d-2)+"]"}),o=this.options.hooks?.emStrongMask?.call({lexer:this},o)??o;let n=!1,r="",i=1/0;for(;e;){if(e.length(a=c.call({lexer:this},e,t))?(e=e.substring(a.raw.length),t.push(a),!0):!1))continue;if(a=this.tokenizer.escape(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.tag(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.link(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(a.raw.length);let c=t.at(-1);a.type==="text"&&c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):t.push(a);continue}if(a=this.tokenizer.emStrong(e,o,r)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.codespan(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.br(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.del(e,o,r)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.autolink(e)){e=e.substring(a.raw.length),t.push(a);continue}if(!this.state.inLink&&(a=this.tokenizer.url(e))){e=e.substring(a.raw.length),t.push(a);continue}let l=e;if(this.options.extensions?.startInline){let c=1/0,d=e.slice(1),p;this.options.extensions.startInline.forEach(h=>{p=h.call({lexer:this},d),typeof p=="number"&&p>=0&&(c=Math.min(c,p))}),c<1/0&&c>=0&&(l=e.substring(0,c+1))}if(a=this.tokenizer.inlineText(l)){e=e.substring(a.raw.length),a.raw.slice(-1)!=="_"&&(r=a.raw.slice(-1)),n=!0;let c=t.at(-1);c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):t.push(a);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t="Infinite loop on byte: "+e;if(this.options.silent)console.error(t);else throw new Error(t)}},Xn=class{options;parser;constructor(s){this.options=s||co}space(s){return""}code({text:s,lang:e,escaped:t}){let o=(e||"").match(Le.notSpaceStart)?.[0],n=s?s.replace(Le.endingNewline,"")+` `:"";return o?'
      '+(t?n:qe(n,!0))+`
      `:"
      "+(t?n:qe(n,!0))+`
      `}blockquote({tokens:s}){return`
      @@ -150,8 +150,8 @@ ${this.parser.parse(s)}
      `}tablerow({text:s}){return` ${s} `}tablecell(s){let e=this.parser.parseInline(s.tokens),t=s.header?"th":"td";return(s.align?`<${t} align="${s.align}">`:`<${t}>`)+e+` -`}strong({tokens:s}){return`${this.parser.parseInline(s)}`}em({tokens:s}){return`${this.parser.parseInline(s)}`}codespan({text:s}){return`${qe(s,!0)}`}br(s){return"
      "}del({tokens:s}){return`${this.parser.parseInline(s)}`}link({href:s,title:e,text:t,tokens:o,autolink:n}){let r=n?qe(t,!0):this.parser.parseInline(o),i=rh(s);if(i===null)return r;s=qe(i,n);let a='
      ",a}image({href:s,title:e,text:t,tokens:o}){o&&(t=this.parser.parseInline(o,this.parser.textRenderer));let n=rh(s);if(n===null)return qe(t);s=n;let r=`${qe(t)}{let i=n[r].flat(1/0);t=t.concat(this.walkTokens(i,e))}):n.tokens&&(t=t.concat(this.walkTokens(n.tokens,e)))}}return t}use(...s){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return s.forEach(t=>{let o={...t};if(o.async=this.defaults.async||o.async||!1,t.extensions&&(t.extensions.forEach(n=>{if(!n.name)throw new Error("extension name required");if("renderer"in n){let r=e.renderers[n.name];r?e.renderers[n.name]=function(...i){let a=n.renderer.apply(this,i);return a===!1&&(a=r.apply(this,i)),a}:e.renderers[n.name]=n.renderer}if("tokenizer"in n){if(!n.level||n.level!=="block"&&n.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let r=e[n.level];r?r.unshift(n.tokenizer):e[n.level]=[n.tokenizer],n.start&&(n.level==="block"?e.startBlock?e.startBlock.push(n.start):e.startBlock=[n.start]:n.level==="inline"&&(e.startInline?e.startInline.push(n.start):e.startInline=[n.start]))}"childTokens"in n&&n.childTokens&&(e.childTokens[n.name]=n.childTokens)}),o.extensions=e),t.renderer){let n=this.defaults.renderer||new Yn(this.defaults);for(let r in t.renderer){if(!(r in n))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let i=r,a=t.renderer[i],l=n[i];n[i]=(...c)=>{let u=a.apply(n,c);return u===!1&&(u=l.apply(n,c)),u||""}}o.renderer=n}if(t.tokenizer){let n=this.defaults.tokenizer||new Vn(this.defaults);for(let r in t.tokenizer){if(!(r in n))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let i=r,a=t.tokenizer[i],l=n[i];n[i]=(...c)=>{let u=a.apply(n,c);return u===!1&&(u=l.apply(n,c)),u}}o.tokenizer=n}if(t.hooks){let n=this.defaults.hooks||new Rs;for(let r in t.hooks){if(!(r in n))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let i=r,a=t.hooks[i],l=n[i];Rs.passThroughHooks.has(r)?n[i]=c=>{if(this.defaults.async&&Rs.passThroughHooksRespectAsync.has(r))return(async()=>{let h=await a.call(n,c);return l.call(n,h)})();let u=a.call(n,c);return l.call(n,u)}:n[i]=(...c)=>{if(this.defaults.async)return(async()=>{let h=await a.apply(n,c);return h===!1&&(h=await l.apply(n,c)),h})();let u=a.apply(n,c);return u===!1&&(u=l.apply(n,c)),u}}o.hooks=n}if(t.walkTokens){let n=this.defaults.walkTokens,r=t.walkTokens;o.walkTokens=function(i){let a=[];return a.push(r.call(this,i)),n&&(a=a.concat(n.call(this,i))),a}}this.defaults={...this.defaults,...o}}),this}setOptions(s){return this.defaults={...this.defaults,...s},this}lexer(s,e){return et.lex(s,e??this.defaults)}parser(s,e){return tt.parse(s,e??this.defaults)}parseMarkdown(s){return(e,t)=>{let o={...t},n={...this.defaults,...o},r=this.onError(!!n.silent,!!n.async);if(this.defaults.async===!0&&o.async===!1)return r(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return r(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return r(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(n.hooks&&(n.hooks.options=n,n.hooks.block=s),n.async)return(async()=>{let i=n.hooks?await n.hooks.preprocess(e):e,a=await(n.hooks?await n.hooks.provideLexer(s):s?et.lex:et.lexInline)(i,n),l=n.hooks?await n.hooks.processAllTokens(a):a;n.walkTokens&&await Promise.all(this.walkTokens(l,n.walkTokens));let c=await(n.hooks?await n.hooks.provideParser(s):s?tt.parse:tt.parseInline)(l,n);return n.hooks?await n.hooks.postprocess(c):c})().catch(r);try{n.hooks&&(e=n.hooks.preprocess(e));let i=(n.hooks?n.hooks.provideLexer(s):s?et.lex:et.lexInline)(e,n);n.hooks&&(i=n.hooks.processAllTokens(i)),n.walkTokens&&this.walkTokens(i,n.walkTokens);let a=(n.hooks?n.hooks.provideParser(s):s?tt.parse:tt.parseInline)(i,n);return n.hooks&&(a=n.hooks.postprocess(a)),a}catch(i){return r(i)}}}onError(s,e){return t=>{if(t.message+=` -Please report this to https://github.com/markedjs/marked.`,s){let o="

      An error occurred:

      "+qe(t.message+"",!0)+"
      ";return e?Promise.resolve(o):o}if(e)return Promise.reject(t);throw t}}},lo=new kw;ie.options=ie.setOptions=function(s){return lo.setOptions(s),ie.defaults=lo.defaults,dh(ie.defaults),ie};ie.getDefaults=ka;ie.defaults=co;ie.use=yw;ie.walkTokens=function(s,e){return lo.walkTokens(s,e)};ie.parseInline=lo.parseInline;ie.Parser=tt;ie.parser=tt.parse;ie.Renderer=Yn;ie.TextRenderer=Ma;ie.Lexer=et;ie.lexer=et.lex;ie.Tokenizer=Vn;ie.Hooks=Rs;ie.parse=ie;HS=ie.options,OS=ie.setOptions,FS=ie.walkTokens,DS=ie.parseInline,qS=tt.parse,KS=et.lex});var kh=we((XS,xw)=>{xw.exports=`
      ×
      [ WHAT'S NEW ]

      Kute

      View on GitHub
      Done
      `});var xh={};function yh(s,e){return s.localeCompare(e,void 0,{numeric:!0,sensitivity:"case",caseFirst:"upper"})}function Aa(s){let e=Ta.get(s);return e||(e=fetch(`${Sw}/releases?per_page=1&page=${s}`).then(async t=>{if(!t.ok)throw new Error(`github ${t.status}`);let o=await t.json(),n=(t.headers.get("link")??"").match(/[?&]page=(\d+)>; rel="last"/);n?uo=Number(n[1]):o.length>0&&(uo=Math.max(uo??0,s));let[r]=o;return r?{tag:String(r.tag_name),body:String(r.body??""),date:String(r.published_at??"").slice(0,10)}:null}).catch(()=>(Ta.delete(s),null)),Ta.set(s,e)),e}async function Ew(s){let e=await Aa(1);if(!e||e.tag===s||uo===null)return 1;let t=2,o=uo;for(;t<=o;){let n=Math.floor((t+o)/2),r=await Aa(n);if(!r)return 1;let i=yh(r.tag,s);if(i===0)return n;i>0?t=n+1:o=n-1}return 1}var Sw,Ta,uo,La=w(()=>{"use strict";wh();F();Sw="https://api.github.com/repos/NullDev/Kute",Ta=new Map,uo=null;(async()=>{async function s(n){let[r,i]=await Promise.all([Promise.resolve().then(()=>ue(kh(),1)),Promise.resolve().then(()=>ue(Mn(),1))]),a=document.createElement("div");a.style=` +`}strong({tokens:s}){return`${this.parser.parseInline(s)}`}em({tokens:s}){return`${this.parser.parseInline(s)}`}codespan({text:s}){return`${qe(s,!0)}`}br(s){return"
      "}del({tokens:s}){return`${this.parser.parseInline(s)}`}link({href:s,title:e,text:t,tokens:o,autolink:n}){let r=n?qe(t,!0):this.parser.parseInline(o),i=rh(s);if(i===null)return r;s=qe(i,n);let a='
      ",a}image({href:s,title:e,text:t,tokens:o}){o&&(t=this.parser.parseInline(o,this.parser.textRenderer));let n=rh(s);if(n===null)return qe(t);s=n;let r=`${qe(t)}{let i=n[r].flat(1/0);t=t.concat(this.walkTokens(i,e))}):n.tokens&&(t=t.concat(this.walkTokens(n.tokens,e)))}}return t}use(...s){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return s.forEach(t=>{let o={...t};if(o.async=this.defaults.async||o.async||!1,t.extensions&&(t.extensions.forEach(n=>{if(!n.name)throw new Error("extension name required");if("renderer"in n){let r=e.renderers[n.name];r?e.renderers[n.name]=function(...i){let a=n.renderer.apply(this,i);return a===!1&&(a=r.apply(this,i)),a}:e.renderers[n.name]=n.renderer}if("tokenizer"in n){if(!n.level||n.level!=="block"&&n.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let r=e[n.level];r?r.unshift(n.tokenizer):e[n.level]=[n.tokenizer],n.start&&(n.level==="block"?e.startBlock?e.startBlock.push(n.start):e.startBlock=[n.start]:n.level==="inline"&&(e.startInline?e.startInline.push(n.start):e.startInline=[n.start]))}"childTokens"in n&&n.childTokens&&(e.childTokens[n.name]=n.childTokens)}),o.extensions=e),t.renderer){let n=this.defaults.renderer||new Xn(this.defaults);for(let r in t.renderer){if(!(r in n))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let i=r,a=t.renderer[i],l=n[i];n[i]=(...c)=>{let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d||""}}o.renderer=n}if(t.tokenizer){let n=this.defaults.tokenizer||new Yn(this.defaults);for(let r in t.tokenizer){if(!(r in n))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let i=r,a=t.tokenizer[i],l=n[i];n[i]=(...c)=>{let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d}}o.tokenizer=n}if(t.hooks){let n=this.defaults.hooks||new Ps;for(let r in t.hooks){if(!(r in n))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let i=r,a=t.hooks[i],l=n[i];Ps.passThroughHooks.has(r)?n[i]=c=>{if(this.defaults.async&&Ps.passThroughHooksRespectAsync.has(r))return(async()=>{let p=await a.call(n,c);return l.call(n,p)})();let d=a.call(n,c);return l.call(n,d)}:n[i]=(...c)=>{if(this.defaults.async)return(async()=>{let p=await a.apply(n,c);return p===!1&&(p=await l.apply(n,c)),p})();let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d}}o.hooks=n}if(t.walkTokens){let n=this.defaults.walkTokens,r=t.walkTokens;o.walkTokens=function(i){let a=[];return a.push(r.call(this,i)),n&&(a=a.concat(n.call(this,i))),a}}this.defaults={...this.defaults,...o}}),this}setOptions(s){return this.defaults={...this.defaults,...s},this}lexer(s,e){return tt.lex(s,e??this.defaults)}parser(s,e){return ot.parse(s,e??this.defaults)}parseMarkdown(s){return(e,t)=>{let o={...t},n={...this.defaults,...o},r=this.onError(!!n.silent,!!n.async);if(this.defaults.async===!0&&o.async===!1)return r(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return r(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return r(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(n.hooks&&(n.hooks.options=n,n.hooks.block=s),n.async)return(async()=>{let i=n.hooks?await n.hooks.preprocess(e):e,a=await(n.hooks?await n.hooks.provideLexer(s):s?tt.lex:tt.lexInline)(i,n),l=n.hooks?await n.hooks.processAllTokens(a):a;n.walkTokens&&await Promise.all(this.walkTokens(l,n.walkTokens));let c=await(n.hooks?await n.hooks.provideParser(s):s?ot.parse:ot.parseInline)(l,n);return n.hooks?await n.hooks.postprocess(c):c})().catch(r);try{n.hooks&&(e=n.hooks.preprocess(e));let i=(n.hooks?n.hooks.provideLexer(s):s?tt.lex:tt.lexInline)(e,n);n.hooks&&(i=n.hooks.processAllTokens(i)),n.walkTokens&&this.walkTokens(i,n.walkTokens);let a=(n.hooks?n.hooks.provideParser(s):s?ot.parse:ot.parseInline)(i,n);return n.hooks&&(a=n.hooks.postprocess(a)),a}catch(i){return r(i)}}}onError(s,e){return t=>{if(t.message+=` +Please report this to https://github.com/markedjs/marked.`,s){let o="

      An error occurred:

      "+qe(t.message+"",!0)+"
      ";return e?Promise.resolve(o):o}if(e)return Promise.reject(t);throw t}}},lo=new kw;ie.options=ie.setOptions=function(s){return lo.setOptions(s),ie.defaults=lo.defaults,dh(ie.defaults),ie};ie.getDefaults=ya;ie.defaults=co;ie.use=yw;ie.walkTokens=function(s,e){return lo.walkTokens(s,e)};ie.parseInline=lo.parseInline;ie.Parser=ot;ie.parser=ot.parse;ie.Renderer=Xn;ie.TextRenderer=Ta;ie.Lexer=tt;ie.lexer=tt.lex;ie.Tokenizer=Yn;ie.Hooks=Ps;ie.parse=ie;HS=ie.options,OS=ie.setOptions,DS=ie.walkTokens,FS=ie.parseInline,qS=ot.parse,KS=tt.lex});var kh=we((XS,xw)=>{xw.exports=`
      ×
      [ WHAT'S NEW ]

      Kute

      View on GitHub
      Done
      `});var xh={};function yh(s,e){return s.localeCompare(e,void 0,{numeric:!0,sensitivity:"case",caseFirst:"upper"})}function La(s){let e=Aa.get(s);return e||(e=fetch(`${Sw}/releases?per_page=1&page=${s}`).then(async t=>{if(!t.ok)throw new Error(`github ${t.status}`);let o=await t.json(),n=(t.headers.get("link")??"").match(/[?&]page=(\d+)>; rel="last"/);n?uo=Number(n[1]):o.length>0&&(uo=Math.max(uo??0,s));let[r]=o;return r?{tag:String(r.tag_name),body:String(r.body??""),date:String(r.published_at??"").slice(0,10)}:null}).catch(()=>(Aa.delete(s),null)),Aa.set(s,e)),e}async function Ew(s){let e=await La(1);if(!e||e.tag===s||uo===null)return 1;let t=2,o=uo;for(;t<=o;){let n=Math.floor((t+o)/2),r=await La(n);if(!r)return 1;let i=yh(r.tag,s);if(i===0)return n;i>0?t=n+1:o=n-1}return 1}var Sw,Aa,uo,Ra=w(()=>{"use strict";wh();D();Sw="https://api.github.com/repos/NullDev/Kute",Aa=new Map,uo=null;(async()=>{async function s(n){let[r,i]=await Promise.all([Promise.resolve().then(()=>ue(kh(),1)),Promise.resolve().then(()=>ue(Tn(),1))]),a=document.createElement("div");a.style=` position: fixed; top: 0; left: 0; @@ -162,17 +162,17 @@ Please report this to https://github.com/markedjs/marked.`,s){let o="

      An error display: flex; justify-content: center; align-items: center; - `,document.body.append(a);let l=document.createElement("div");l.id="changelogPopupHost",a.append(l);let c=l.attachShadow({mode:"open"}),u=document.createElement("div");for(u.innerHTML=r.default;u.firstChild;)c.append(u.firstChild);let h=_=>c.getElementById(_),p=h("changelogLogo");p&&(p.src=i.default);let f=h("changelogContent");f&&(f.textContent="Loading release notes...");let m=h("changelogVersion");m&&(m.textContent=n);let g=new AbortController,b=()=>{g.abort(),a.remove()};for(let _ of["changelogClose","changelogDone"]){let H=h(_);H&&(H.onclick=b)}a.addEventListener("mousedown",_=>{_.target===a&&b()});let v=1,k=0,E=()=>{let _=uo??1,H=h("changelogPosition");H&&(H.textContent=`${v} / ${_}`),h("changelogNewer")?.classList.toggle("changelogDisabled",v<=1),h("changelogOlder")?.classList.toggle("changelogDisabled",v>=_);let G=h("changelogNav");G&&(G.style.display=_>1?"":"none")},L=async _=>{v=Math.min(Math.max(_,1),uo??1);let H=++k;E();let G=await Aa(v);if(H!==k||!f)return;if(!G){f.innerHTML="Could not load the release notes. View them on GitHub instead.";let be=h("changelogGithub");be&&(be.onclick=()=>window.chrome.webview.postMessage(`open-url, https://github.com/NullDev/Kute/releases/tag/${n}`));return}let J=`https://github.com/NullDev/Kute/releases/tag/${G.tag}`;m&&(m.textContent=G.tag);let B=h("changelogEyebrow");B&&(B.textContent=G.tag===n?"[ WHAT'S NEW ]":`[ RELEASED ${G.date} ]`);let re=h("changelogGithub");re&&(re.onclick=()=>window.chrome.webview.postMessage(`open-url, ${J}`));let je=await ie.parse(G.body||"No release notes found.",{breaks:!0,async:!0});if(H===k){f.innerHTML=je,h("changelogContentWrapper")?.scrollTo(0,0);for(let be of f.querySelectorAll("a"))be.getAttribute("href")?.startsWith("#")&&be.setAttribute("href",J+be.getAttribute("href")),be.setAttribute("target","_blank"),be.setAttribute("rel","noopener")}},x=h("changelogOlder");x&&(x.onclick=()=>L(v+1));let $=h("changelogNewer");$&&($.onclick=()=>L(v-1)),document.addEventListener("keydown",_=>{if(_.key==="Escape")b();else if(_.key==="ArrowLeft")L(v-1);else if(_.key==="ArrowRight")L(v+1);else return;_.stopPropagation()},{signal:g.signal,capture:!0});let I=await Ew(n);g.signal.aborted||await L(I)}let e=d?.version,t=window.localStorage.getItem("kute_lastSeenVersion"),o=t!==null&&yh(e,t)>0;window.localStorage.setItem("kute_lastSeenVersion",e),d?.settings.data?.showChangelog&&t&&e&&o&&await s(e),d.showChangelogPopup=s})()});var Pa={};A(Pa,{default:()=>$w});var Ra,$w,Ia=w(()=>{"use strict";Ra=class{tracked=new WeakSet;draft=null;observer=null;pending=null;sentAt=0;constructor(){document.addEventListener("focusin",e=>{let t=e.target;t instanceof HTMLTextAreaElement&&t.classList.contains("conversation-input")&&this.track(t)})}friendOf(e){return e.closest(".conversation-root")?.querySelector(".conversation-header-name")?.textContent??""}track(e){this.tracked.has(e)||(this.tracked.add(e),e.addEventListener("input",()=>this.save(e)),e.addEventListener("keydown",t=>{t.key==="Enter"&&!t.shiftKey&&!t.isComposing&&(this.sentAt=performance.now())}),e.closest(".conversation-compose")?.querySelector(".conversation-send-button")?.addEventListener("click",()=>{this.sentAt=performance.now()}),e.value&&this.save(e))}save(e){if(!e.value){this.stop();return}if(this.draft={input:e,friend:this.friendOf(e),text:e.value,start:e.selectionStart,end:e.selectionEnd},this.observer)return;let t=e.closest(".conversation-root");t&&(this.observer=new MutationObserver(()=>this.schedule()),this.observer.observe(t,{childList:!0,subtree:!0,characterData:!0}))}schedule(){this.pending===null&&(this.pending=setTimeout(()=>this.check(),0))}check(){this.pending=null;let{draft:e}=this;if(!e)return;let{input:t}=e;if(!t.isConnected||this.friendOf(t)!==e.friend){this.stop();return}if(t.value){this.save(t);return}if(performance.now()-this.sentAt<250){this.stop();return}t.value=e.text,document.activeElement===t&&t.setSelectionRange(e.start,e.end),t.dispatchEvent(new Event("input",{bubbles:!0}))}stop(){this.draft=null,this.observer?.disconnect(),this.observer=null}},$w=new Ra});var Eh,Sh=w(()=>{Eh='

      Chat Logs

      Copy
      Clear
      Close
      '});var _a={};A(_a,{default:()=>Nw});function Lw(s){if(!s.hasAttribute("data-tab"))return"kill";let e=s.querySelector(".chatItem"),t=e?.querySelector(".chatMsg");return!e||!(t instanceof HTMLElement)||e.querySelector(".tradeMsg")?"event":e.firstChild!==t?"player":t.style.color?"server":"event"}function Rw(s){let e="",t=!1,o=[];for(let n of s.querySelector(".chatMsg")?.childNodes??[]){if(!(n instanceof HTMLImageElement)){e+=n.textContent??"";continue}let r=n.getAttribute("src")??"";r.includes("headshot")?o.push("headshot"):r.includes("wallbang")?o.push("wallbang"):t||(t=!0,e+=" \u25B8 ")}return o.length>0?`${e.trim()} (${o.join(", ")})`:e}function $h(s){let e=new Date(s);return[e.getHours(),e.getMinutes(),e.getSeconds()].map(t=>String(t).padStart(2,"0")).join(":")}function Pw(){try{let s=JSON.parse(window.sessionStorage.getItem(Ch)??"[]");return Array.isArray(s)?s.slice(-Xn):[]}catch{return[]}}function Iw(){try{let{mode:s,map:e}=window.getGameActivity();if(s&&e)return`${s} on ${e}`}catch{}return"New lobby"}var Xn,Ch,Mw,Tw,Aw,Na,Nw,Ba=w(()=>{"use strict";Sh();F();Po();Xn=2e3,Ch="kute_chat_logs",Mw="\u200E",Tw=[["player","Players"],["kill","Kills"],["event","Events"],["server","Server"]],Aw={player:"",kill:"clKill",event:"clEvent",server:"clServer",lobby:"clLobby"};Na=class{constructor(){this.entries=Pw(),this.entries.length>0&&this.entries[this.entries.length-1].cat!=="lobby"&&this.entries.push({t:Date.now(),cat:"lobby",text:Iw()}),this.shown=new Set,this.view=null,this.stick=!0,this.observer=new MutationObserver(e=>{for(let t of e)for(let o of t.addedNodes)this.add(o)}),this.save=()=>{try{window.sessionStorage.setItem(Ch,JSON.stringify(this.entries))}catch{}},d.chatLogs={open:()=>this.open(),toggle:()=>this.toggle()},d.settings.toggleChatLogs=e=>this.setEnabled(e),this.setEnabled(!0)}setEnabled(e){if(this.observer.disconnect(),window.removeEventListener("pagehide",this.save),!e){this.close();return}let t=document.getElementById("chatList");if(t){for(let o of t.children)this.add(o);this.observer.observe(t,{childList:!0}),window.addEventListener("pagehide",this.save)}}add(e){if(!(e instanceof HTMLElement))return;let t=Lw(e),o=(t==="kill"?Rw(e):e.textContent??"").replaceAll(Mw,"").trim();if(!o)return;let n={t:Date.now(),cat:t,text:o};if(this.entries.push(n),this.entries.length>Xn&&this.entries.splice(0,this.entries.length-Xn),!this.view||!this.visible(n))return;let{list:r}=this.view;r.querySelector(".clEmpty")?.remove(),r.append(this.row(n)),r.childElementCount>Xn&&r.firstElementChild?.remove(),this.stick&&(r.scrollTop=1e9)}visible(e){let t=this.view?.search.value.trim().toLowerCase()??"";return e.cat==="lobby"?this.shown.size===0&&!t:this.shown.size>0&&!this.shown.has(e.cat)?!1:!t||e.text.toLowerCase().includes(t)}row(e){let t=document.createElement("div");t.className=`clRow ${Aw[e.cat]??""}`;let o=document.createElement("span");return o.className="clTime",o.textContent=$h(e.t),t.append(o,e.text),t}render(){if(!this.view)return;let e=this.entries.filter(t=>this.visible(t)).map(t=>this.row(t));if(e.length===0){let t=document.createElement("div");t.className="clEmpty",t.textContent=this.entries.length===0?"Nothing in the chat yet":"No line matches",e.push(t)}this.view.list.replaceChildren(...e),this.view.list.scrollTop=1e9,this.stick=!0,this.renderFilters()}renderFilters(){if(!this.view)return;let e=(n,r,i)=>{let a=document.createElement("div");return a.className=`clFilter${r?" clOn":""}`,a.textContent=n,a.onclick=i,a},t=e("All",this.shown.size===0,()=>{this.shown.clear(),this.render()}),o=Tw.map(([n,r])=>e(r,this.shown.has(n),()=>{this.shown.has(n)?this.shown.delete(n):this.shown.add(n),this.render()}));this.view.shadow.querySelector("#clFilters").replaceChildren(t,...o)}open(){if(this.view)return;document.pointerLockElement&&document.exitPointerLock();let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=Eh;let n=l=>o.querySelector(`#${l}`),r=n("clList"),i=n("clSearch");this.view={overlay:e,shadow:o,list:r,search:i};let a=ft().chatLogs;n("clHint").textContent=`${a?`${a.name} opens and closes this. `:""}Select lines and copy with Ctrl+C`,e.addEventListener("click",l=>{l.target===e&&this.close()});for(let l of["keydown","keyup","keypress"])t.addEventListener(l,c=>{let u=c;l==="keydown"&&!u.repeat&&(u.key==="Escape"||as(u,"chatLogs"))&&this.close(),c.stopPropagation()});r.addEventListener("scroll",()=>{this.stick=r.scrollTop+r.clientHeight>=r.scrollHeight-30},{passive:!0}),i.addEventListener("input",()=>this.render()),n("clCopy").onclick=()=>{let l=this.entries.filter(c=>this.visible(c)).map(c=>`${$h(c.t)} ${c.text}`).join(` -`);navigator.clipboard.writeText(l).then(()=>d.showNotification("Chat log copied",!1,2),()=>d.showNotification("Could not copy the chat log",!1,3))},n("clClear").onclick=()=>{this.entries=[],this.save(),this.render()},n("clClose").onclick=()=>this.close(),document.body.append(e),this.render(),i.focus()}close(){this.view?.overlay.remove(),this.view=null}toggle(){this.view?this.close():this.open()}},Nw=new Na});var Ha={};A(Ha,{default:()=>zw});function Bw(s){return s.split(";").map(e=>e.trim()).filter(e=>{let t=e.split(":")[0]?.trim().toLowerCase();return!!t&&e.includes(":")&&_w.has(t)}).join(";")}var _w,za,Mh,zw,Oa=w(()=>{"use strict";F();Kn();It();_w=new Set(["background","background-image","background-color","background-clip","-webkit-background-clip","background-size","background-position","color","-webkit-text-fill-color","-webkit-text-stroke","text-shadow","text-decoration","filter","opacity","animation"]);za=class{constructor(){this.styles={},this.fetched={},this.watching=!1,this.decorator=e=>this.restyle(e),d.settings.toggleClanColors=e=>this.toggle(e),this.load()}toggle(e){if(e){Object.keys(this.fetched).length>0?this.apply(this.fetched):this.load();return}pt.remove(this.decorator),this.watching=!1,this.styles={};for(let t of document.querySelectorAll("[data-kute-clan]"))t.setAttribute("style",t.getAttribute("data-kute-style")??""),t.removeAttribute("data-kute-clan"),t.removeAttribute("data-kute-style")}async load(){let e=await he.request("/meta");typeof e?.clanTagColors=="object"&&e.clanTagColors!==null&&(this.fetched=e.clanTagColors),d.settings.data.clanColors!==!1&&this.apply(this.fetched)}apply(e){if(!(typeof e!="object"||e===null)){this.styles={};for(let[t,o]of Object.entries(e)){if(typeof o!="string"||t.length===0||t.length>16)continue;let n=Bw(o);n&&(this.styles[t]=n)}Object.keys(this.styles).length!==0&&(this.watching?pt.refresh():pt.add(this.decorator),this.watching=!0)}}restyle(e){let t=As(e.element);if(!t)return;let o=this.styles[t.tag];!o||t.span.getAttribute("data-kute-clan")===t.tag||(t.span.hasAttribute("data-kute-style")||t.span.setAttribute("data-kute-style",t.span.getAttribute("style")??""),t.span.setAttribute("style",o),t.span.setAttribute("data-kute-clan",t.tag))}},Mh=new za;d.clanColors=Mh;zw=Mh});var Th=we((i3,Hw)=>{Hw.exports='

      Custom Sky

      Replaces the sky of every map. It applies from the next match
      Gradient
      Image
      Open folder
      Refresh
      Put PNG, JPG or WEBP images into Documents\\kute\\skies
      Done
      '});var Da={};A(Da,{default:()=>qw});var Ow,Ah,Fw,Dw,Fa,qw,qa=w(()=>{"use strict";F();Ow={mode:"gradient",zenith:"#1E5AA8",horizon:"#9FD0F0",image:""},Ah="preset:",Fw=[["Vaporwave","#ff00aa","#00ffcc"],["Kute","#0b2e3a","#35e0e8"],["Sunset","#2b1055","#ff8a4c"],["Midnight","#03040f","#243b73"],["Toxic","#0a2a12","#a6ff3b"],["Blood Moon","#120006","#b3122e"],["Cotton Candy","#8fb8ff","#ffc2e2"]],Dw={starfield:"Starfield",aurora:"Aurora",nebula:"Nebula",synthwave:"Synthwave",sunset:"Sunset",candy:"Cotton Clouds"},Fa=class{constructor(){d.customSky={showOptions:()=>this.showOptions()}}get config(){return{...Ow,...d.settings.data.customSkyConfig}}saveConfig(e){d.settings.data.customSkyConfig=e,window.chrome.webview.postMessage(`set-config-json customSkyConfig ${JSON.stringify(e)}`)}listImages(){return new Promise(e=>{let t=0,o=n=>{Array.isArray(n.data?.skies)&&(window.chrome.webview.removeEventListener("message",o),clearTimeout(t),e({files:n.data.skies,presets:Array.isArray(n.data.skyPresets)?n.data.skyPresets:[]}))};t=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",o),e({files:[],presets:[]})},3e3),window.chrome.webview.addEventListener("message",o),window.chrome.webview.postMessage("sky-list")})}async showOptions(){let e=await Promise.resolve().then(()=>ue(Th(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=i("skZenith"),l=i("skHorizon"),c=i("skImage"),u=()=>{i("skModeGradient").classList.toggle("active",t.mode==="gradient"),i("skModeImage").classList.toggle("active",t.mode==="image"),i("skGradientPane").hidden=t.mode!=="gradient",i("skImagePane").hidden=t.mode!=="image",i("skPreview").style.background=`linear-gradient(${t.zenith}, ${t.horizon})`},h=async()=>{let{files:g,presets:b}=await this.listImages(),v=(E,L)=>{let x=document.createElement("optgroup");return x.label=E,x.append(...L.map(([$,I])=>new Option(I,$))),x},k=[...b.map(E=>Ah+E),...g];c.replaceChildren(...b.length?[v("Kute",b.map(E=>[Ah+E,Dw[E]??E]))]:[],...g.length?[v("Your images",g.map(E=>[E,E]))]:[]),k.length>0&&!k.includes(t.image)&&(t.image=k[0]),c.value=t.image,c.disabled=k.length===0,i("skImageHint").textContent=g.length===0?"Add your own: put PNG, JPG or WEBP images into Documents\\kute\\skies, then press Refresh":"Put PNG, JPG or WEBP images into Documents\\kute\\skies"},p=i("skSwatches");for(let[g,b,v]of Fw){let k=document.createElement("div");k.className="skSwatch",k.title=g,k.style.background=`linear-gradient(${b}, ${v})`,k.onclick=()=>{t.zenith=b,t.horizon=v,a.value=b,l.value=v,u()},p.append(k)}a.value=t.zenith.toLowerCase(),l.value=t.horizon.toLowerCase(),a.oninput=()=>{t.zenith=a.value,u()},l.oninput=()=>{t.horizon=l.value,u()},c.onchange=()=>{t.image=c.value},i("skModeGradient").onclick=()=>{t.mode="gradient",u()},i("skModeImage").onclick=()=>{t.mode="image",u()},i("skOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, skies"),i("skRefresh").onclick=()=>h();let f=new AbortController,m=()=>{f.abort(),o.remove(),this.saveConfig(t)};i("skDone").onclick=m,o.addEventListener("mousedown",g=>{g.target===o&&m()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),m())},{signal:f.signal,capture:!0}),u(),document.body.append(o),await h()}},qw=new Fa});var Rh,Lh=w(()=>{Rh='

      Diagnostics Report

      These are all the files that will be included. You can choose what to exclude, but keeping all of them is recommended.
      Collecting...
      Close
      Save dump
      '});var Ih={};A(Ih,{createCodeEditor:()=>Ph,createEditorView:()=>po,highlight:()=>Zn,languageFor:()=>Ka});function Zn(s,e="js"){if(e==="text")return Jn(s);let t=e==="css",o="",n=0;for(let r of s.matchAll(t?Ww:Gw)){let i=r.index??0,[a]=r,l="";if(t){let[,c,u,h,p,f]=r;if(c)l="c";else if(u)l="s";else if(h)l="k";else if(p)l="n";else if(f){let m=i+f.length;s[m]==="("?l="f":(f.startsWith("--")||Vw(s,m))&&(l="l")}}else{let[,c,u,h,p]=r;c?l="c":u?l=e==="json"&&/^\s*:/.test(s.slice(i+a.length,i+a.length+20))?"p":"s":h?l="n":p&&(jw.has(p)?l="k":Uw.has(p)?l="l":/^\s*\(/.test(s.slice(i+p.length,i+p.length+40))&&(l="f"))}l&&(o+=Jn(s.slice(n,i))+`${Jn(a)}`,n=i+a.length)}return o+Jn(s.slice(n))}function Ph(s,e,{onSave:t,onDirtyChange:o,onChange:n,language:r="js"}){s.innerHTML=`
      -
      `;let i=s.querySelector(".editorGutter"),a=s.querySelector("pre"),l=s.querySelector("code"),c=s.querySelector("textarea");c.value=e;let u=e,h=!1,p=0,f=0,m=()=>{a.scrollTop=c.scrollTop,a.scrollLeft=c.scrollLeft,i.scrollTop=c.scrollTop},g=()=>{f=0;let{value:k}=c;l.innerHTML=`${Zn(k,r)} + `,document.body.append(a);let l=document.createElement("div");l.id="changelogPopupHost",a.append(l);let c=l.attachShadow({mode:"open"}),d=document.createElement("div");for(d.innerHTML=r.default;d.firstChild;)c.append(d.firstChild);let p=_=>c.getElementById(_),h=p("changelogLogo");h&&(h.src=i.default);let f=p("changelogContent");f&&(f.textContent="Loading release notes...");let m=p("changelogVersion");m&&(m.textContent=n);let g=new AbortController,b=()=>{g.abort(),a.remove()};for(let _ of["changelogClose","changelogDone"]){let H=p(_);H&&(H.onclick=b)}a.addEventListener("mousedown",_=>{_.target===a&&b()});let v=1,k=0,E=()=>{let _=uo??1,H=p("changelogPosition");H&&(H.textContent=`${v} / ${_}`),p("changelogNewer")?.classList.toggle("changelogDisabled",v<=1),p("changelogOlder")?.classList.toggle("changelogDisabled",v>=_);let G=p("changelogNav");G&&(G.style.display=_>1?"":"none")},L=async _=>{v=Math.min(Math.max(_,1),uo??1);let H=++k;E();let G=await La(v);if(H!==k||!f)return;if(!G){f.innerHTML="Could not load the release notes. View them on GitHub instead.";let be=p("changelogGithub");be&&(be.onclick=()=>window.chrome.webview.postMessage(`open-url, https://github.com/NullDev/Kute/releases/tag/${n}`));return}let J=`https://github.com/NullDev/Kute/releases/tag/${G.tag}`;m&&(m.textContent=G.tag);let B=p("changelogEyebrow");B&&(B.textContent=G.tag===n?"[ WHAT'S NEW ]":`[ RELEASED ${G.date} ]`);let re=p("changelogGithub");re&&(re.onclick=()=>window.chrome.webview.postMessage(`open-url, ${J}`));let je=await ie.parse(G.body||"No release notes found.",{breaks:!0,async:!0});if(H===k){f.innerHTML=je,p("changelogContentWrapper")?.scrollTo(0,0);for(let be of f.querySelectorAll("a"))be.getAttribute("href")?.startsWith("#")&&be.setAttribute("href",J+be.getAttribute("href")),be.setAttribute("target","_blank"),be.setAttribute("rel","noopener")}},x=p("changelogOlder");x&&(x.onclick=()=>L(v+1));let $=p("changelogNewer");$&&($.onclick=()=>L(v-1)),document.addEventListener("keydown",_=>{if(_.key==="Escape")b();else if(_.key==="ArrowLeft")L(v-1);else if(_.key==="ArrowRight")L(v+1);else return;_.stopPropagation()},{signal:g.signal,capture:!0});let I=await Ew(n);g.signal.aborted||await L(I)}let e=u?.version,t=window.localStorage.getItem("kute_lastSeenVersion"),o=t!==null&&yh(e,t)>0;window.localStorage.setItem("kute_lastSeenVersion",e),u?.settings.data?.showChangelog&&t&&e&&o&&await s(e),u.showChangelogPopup=s})()});var Ia={};A(Ia,{default:()=>$w});var Pa,$w,Na=w(()=>{"use strict";Pa=class{tracked=new WeakSet;draft=null;observer=null;pending=null;sentAt=0;constructor(){document.addEventListener("focusin",e=>{let t=e.target;t instanceof HTMLTextAreaElement&&t.classList.contains("conversation-input")&&this.track(t)})}friendOf(e){return e.closest(".conversation-root")?.querySelector(".conversation-header-name")?.textContent??""}track(e){this.tracked.has(e)||(this.tracked.add(e),e.addEventListener("input",()=>this.save(e)),e.addEventListener("keydown",t=>{t.key==="Enter"&&!t.shiftKey&&!t.isComposing&&(this.sentAt=performance.now())}),e.closest(".conversation-compose")?.querySelector(".conversation-send-button")?.addEventListener("click",()=>{this.sentAt=performance.now()}),e.value&&this.save(e))}save(e){if(!e.value){this.stop();return}if(this.draft={input:e,friend:this.friendOf(e),text:e.value,start:e.selectionStart,end:e.selectionEnd},this.observer)return;let t=e.closest(".conversation-root");t&&(this.observer=new MutationObserver(()=>this.schedule()),this.observer.observe(t,{childList:!0,subtree:!0,characterData:!0}))}schedule(){this.pending===null&&(this.pending=setTimeout(()=>this.check(),0))}check(){this.pending=null;let{draft:e}=this;if(!e)return;let{input:t}=e;if(!t.isConnected||this.friendOf(t)!==e.friend){this.stop();return}if(t.value){this.save(t);return}if(performance.now()-this.sentAt<250){this.stop();return}t.value=e.text,document.activeElement===t&&t.setSelectionRange(e.start,e.end),t.dispatchEvent(new Event("input",{bubbles:!0}))}stop(){this.draft=null,this.observer?.disconnect(),this.observer=null}},$w=new Pa});var Eh,Sh=w(()=>{Eh='

      Chat Logs

      Copy
      Clear
      Close
      '});var Ba={};A(Ba,{default:()=>Nw});function Lw(s){if(!s.hasAttribute("data-tab"))return"kill";let e=s.querySelector(".chatItem"),t=e?.querySelector(".chatMsg");return!e||!(t instanceof HTMLElement)||e.querySelector(".tradeMsg")?"event":e.firstChild!==t?"player":t.style.color?"server":"event"}function Rw(s){let e="",t=!1,o=[];for(let n of s.querySelector(".chatMsg")?.childNodes??[]){if(!(n instanceof HTMLImageElement)){e+=n.textContent??"";continue}let r=n.getAttribute("src")??"";r.includes("headshot")?o.push("headshot"):r.includes("wallbang")?o.push("wallbang"):t||(t=!0,e+=" \u25B8 ")}return o.length>0?`${e.trim()} (${o.join(", ")})`:e}function $h(s){let e=new Date(s);return[e.getHours(),e.getMinutes(),e.getSeconds()].map(t=>String(t).padStart(2,"0")).join(":")}function Pw(){try{let s=JSON.parse(window.sessionStorage.getItem(Ch)??"[]");return Array.isArray(s)?s.slice(-Jn):[]}catch{return[]}}function Iw(){try{let{mode:s,map:e}=window.getGameActivity();if(s&&e)return`${s} on ${e}`}catch{}return"New lobby"}var Jn,Ch,Mw,Tw,Aw,_a,Nw,za=w(()=>{"use strict";Sh();D();Po();Jn=2e3,Ch="kute_chat_logs",Mw="\u200E",Tw=[["player","Players"],["kill","Kills"],["event","Events"],["server","Server"]],Aw={player:"",kill:"clKill",event:"clEvent",server:"clServer",lobby:"clLobby"};_a=class{constructor(){this.entries=Pw(),this.entries.length>0&&this.entries[this.entries.length-1].cat!=="lobby"&&this.entries.push({t:Date.now(),cat:"lobby",text:Iw()}),this.shown=new Set,this.view=null,this.stick=!0,this.observer=new MutationObserver(e=>{for(let t of e)for(let o of t.addedNodes)this.add(o)}),this.save=()=>{try{window.sessionStorage.setItem(Ch,JSON.stringify(this.entries))}catch{}},u.chatLogs={open:()=>this.open(),toggle:()=>this.toggle()},u.settings.toggleChatLogs=e=>this.setEnabled(e),this.setEnabled(!0)}setEnabled(e){if(this.observer.disconnect(),window.removeEventListener("pagehide",this.save),!e){this.close();return}let t=document.getElementById("chatList");if(t){for(let o of t.children)this.add(o);this.observer.observe(t,{childList:!0}),window.addEventListener("pagehide",this.save)}}add(e){if(!(e instanceof HTMLElement))return;let t=Lw(e),o=(t==="kill"?Rw(e):e.textContent??"").replaceAll(Mw,"").trim();if(!o)return;let n={t:Date.now(),cat:t,text:o};if(this.entries.push(n),this.entries.length>Jn&&this.entries.splice(0,this.entries.length-Jn),!this.view||!this.visible(n))return;let{list:r}=this.view;r.querySelector(".clEmpty")?.remove(),r.append(this.row(n)),r.childElementCount>Jn&&r.firstElementChild?.remove(),this.stick&&(r.scrollTop=1e9)}visible(e){let t=this.view?.search.value.trim().toLowerCase()??"";return e.cat==="lobby"?this.shown.size===0&&!t:this.shown.size>0&&!this.shown.has(e.cat)?!1:!t||e.text.toLowerCase().includes(t)}row(e){let t=document.createElement("div");t.className=`clRow ${Aw[e.cat]??""}`;let o=document.createElement("span");return o.className="clTime",o.textContent=$h(e.t),t.append(o,e.text),t}render(){if(!this.view)return;let e=this.entries.filter(t=>this.visible(t)).map(t=>this.row(t));if(e.length===0){let t=document.createElement("div");t.className="clEmpty",t.textContent=this.entries.length===0?"Nothing in the chat yet":"No line matches",e.push(t)}this.view.list.replaceChildren(...e),this.view.list.scrollTop=1e9,this.stick=!0,this.renderFilters()}renderFilters(){if(!this.view)return;let e=(n,r,i)=>{let a=document.createElement("div");return a.className=`clFilter${r?" clOn":""}`,a.textContent=n,a.onclick=i,a},t=e("All",this.shown.size===0,()=>{this.shown.clear(),this.render()}),o=Tw.map(([n,r])=>e(r,this.shown.has(n),()=>{this.shown.has(n)?this.shown.delete(n):this.shown.add(n),this.render()}));this.view.shadow.querySelector("#clFilters").replaceChildren(t,...o)}open(){if(this.view)return;document.pointerLockElement&&document.exitPointerLock();let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=Eh;let n=l=>o.querySelector(`#${l}`),r=n("clList"),i=n("clSearch");this.view={overlay:e,shadow:o,list:r,search:i};let a=ft().chatLogs;n("clHint").textContent=`${a?`${a.name} opens and closes this. `:""}Select lines and copy with Ctrl+C`,e.addEventListener("click",l=>{l.target===e&&this.close()});for(let l of["keydown","keyup","keypress"])t.addEventListener(l,c=>{let d=c;l==="keydown"&&!d.repeat&&(d.key==="Escape"||ls(d,"chatLogs"))&&this.close(),c.stopPropagation()});r.addEventListener("scroll",()=>{this.stick=r.scrollTop+r.clientHeight>=r.scrollHeight-30},{passive:!0}),i.addEventListener("input",()=>this.render()),n("clCopy").onclick=()=>{let l=this.entries.filter(c=>this.visible(c)).map(c=>`${$h(c.t)} ${c.text}`).join(` +`);navigator.clipboard.writeText(l).then(()=>u.showNotification("Chat log copied",!1,2),()=>u.showNotification("Could not copy the chat log",!1,3))},n("clClear").onclick=()=>{this.entries=[],this.save(),this.render()},n("clClose").onclick=()=>this.close(),document.body.append(e),this.render(),i.focus()}close(){this.view?.overlay.remove(),this.view=null}toggle(){this.view?this.close():this.open()}},Nw=new _a});var Oa={};A(Oa,{default:()=>zw});function Bw(s){return s.split(";").map(e=>e.trim()).filter(e=>{let t=e.split(":")[0]?.trim().toLowerCase();return!!t&&e.includes(":")&&_w.has(t)}).join(";")}var _w,Ha,Mh,zw,Da=w(()=>{"use strict";D();jn();It();_w=new Set(["background","background-image","background-color","background-clip","-webkit-background-clip","background-size","background-position","color","-webkit-text-fill-color","-webkit-text-stroke","text-shadow","text-decoration","filter","opacity","animation"]);Ha=class{constructor(){this.styles={},this.fetched={},this.watching=!1,this.decorator=e=>this.restyle(e),u.settings.toggleClanColors=e=>this.toggle(e),this.load()}toggle(e){if(e){Object.keys(this.fetched).length>0?this.apply(this.fetched):this.load();return}pt.remove(this.decorator),this.watching=!1,this.styles={};for(let t of document.querySelectorAll("[data-kute-clan]"))t.setAttribute("style",t.getAttribute("data-kute-style")??""),t.removeAttribute("data-kute-clan"),t.removeAttribute("data-kute-style")}async load(){let e=await he.request("/meta");typeof e?.clanTagColors=="object"&&e.clanTagColors!==null&&(this.fetched=e.clanTagColors),u.settings.data.clanColors!==!1&&this.apply(this.fetched)}apply(e){if(!(typeof e!="object"||e===null)){this.styles={};for(let[t,o]of Object.entries(e)){if(typeof o!="string"||t.length===0||t.length>16)continue;let n=Bw(o);n&&(this.styles[t]=n)}Object.keys(this.styles).length!==0&&(this.watching?pt.refresh():pt.add(this.decorator),this.watching=!0)}}restyle(e){let t=Ls(e.element);if(!t)return;let o=this.styles[t.tag];!o||t.span.getAttribute("data-kute-clan")===t.tag||(t.span.hasAttribute("data-kute-style")||t.span.setAttribute("data-kute-style",t.span.getAttribute("style")??""),t.span.setAttribute("style",o),t.span.setAttribute("data-kute-clan",t.tag))}},Mh=new Ha;u.clanColors=Mh;zw=Mh});var Th=we((i3,Hw)=>{Hw.exports='

      Custom Sky

      Replaces the sky of every map. It applies from the next match
      Gradient
      Image
      Open folder
      Refresh
      Put PNG, JPG or WEBP images into Documents\\kute\\skies
      Done
      '});var qa={};A(qa,{default:()=>qw});var Ow,Ah,Dw,Fw,Fa,qw,Ka=w(()=>{"use strict";D();Ow={mode:"gradient",zenith:"#1E5AA8",horizon:"#9FD0F0",image:""},Ah="preset:",Dw=[["Vaporwave","#ff00aa","#00ffcc"],["Kute","#0b2e3a","#35e0e8"],["Sunset","#2b1055","#ff8a4c"],["Midnight","#03040f","#243b73"],["Toxic","#0a2a12","#a6ff3b"],["Blood Moon","#120006","#b3122e"],["Cotton Candy","#8fb8ff","#ffc2e2"]],Fw={starfield:"Starfield",aurora:"Aurora",nebula:"Nebula",synthwave:"Synthwave",sunset:"Sunset",candy:"Cotton Clouds"},Fa=class{constructor(){u.customSky={showOptions:()=>this.showOptions()}}get config(){return{...Ow,...u.settings.data.customSkyConfig}}saveConfig(e){u.settings.data.customSkyConfig=e,window.chrome.webview.postMessage(`set-config-json customSkyConfig ${JSON.stringify(e)}`)}listImages(){return new Promise(e=>{let t=0,o=n=>{Array.isArray(n.data?.skies)&&(window.chrome.webview.removeEventListener("message",o),clearTimeout(t),e({files:n.data.skies,presets:Array.isArray(n.data.skyPresets)?n.data.skyPresets:[]}))};t=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",o),e({files:[],presets:[]})},3e3),window.chrome.webview.addEventListener("message",o),window.chrome.webview.postMessage("sky-list")})}async showOptions(){let e=await Promise.resolve().then(()=>ue(Th(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=i("skZenith"),l=i("skHorizon"),c=i("skImage"),d=()=>{i("skModeGradient").classList.toggle("active",t.mode==="gradient"),i("skModeImage").classList.toggle("active",t.mode==="image"),i("skGradientPane").hidden=t.mode!=="gradient",i("skImagePane").hidden=t.mode!=="image",i("skPreview").style.background=`linear-gradient(${t.zenith}, ${t.horizon})`},p=async()=>{let{files:g,presets:b}=await this.listImages(),v=(E,L)=>{let x=document.createElement("optgroup");return x.label=E,x.append(...L.map(([$,I])=>new Option(I,$))),x},k=[...b.map(E=>Ah+E),...g];c.replaceChildren(...b.length?[v("Kute",b.map(E=>[Ah+E,Fw[E]??E]))]:[],...g.length?[v("Your images",g.map(E=>[E,E]))]:[]),k.length>0&&!k.includes(t.image)&&(t.image=k[0]),c.value=t.image,c.disabled=k.length===0,i("skImageHint").textContent=g.length===0?"Add your own: put PNG, JPG or WEBP images into Documents\\kute\\skies, then press Refresh":"Put PNG, JPG or WEBP images into Documents\\kute\\skies"},h=i("skSwatches");for(let[g,b,v]of Dw){let k=document.createElement("div");k.className="skSwatch",k.title=g,k.style.background=`linear-gradient(${b}, ${v})`,k.onclick=()=>{t.zenith=b,t.horizon=v,a.value=b,l.value=v,d()},h.append(k)}a.value=t.zenith.toLowerCase(),l.value=t.horizon.toLowerCase(),a.oninput=()=>{t.zenith=a.value,d()},l.oninput=()=>{t.horizon=l.value,d()},c.onchange=()=>{t.image=c.value},i("skModeGradient").onclick=()=>{t.mode="gradient",d()},i("skModeImage").onclick=()=>{t.mode="image",d()},i("skOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, skies"),i("skRefresh").onclick=()=>p();let f=new AbortController,m=()=>{f.abort(),o.remove(),this.saveConfig(t)};i("skDone").onclick=m,o.addEventListener("mousedown",g=>{g.target===o&&m()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),m())},{signal:f.signal,capture:!0}),d(),document.body.append(o),await p()}},qw=new Fa});var Rh,Lh=w(()=>{Rh='

      Diagnostics Report

      These are all the files that will be included. You can choose what to exclude, but keeping all of them is recommended.
      Collecting...
      Close
      Save dump
      '});var Ih={};A(Ih,{createCodeEditor:()=>Ph,createEditorView:()=>po,highlight:()=>Qn,languageFor:()=>ja});function Qn(s,e="js"){if(e==="text")return Zn(s);let t=e==="css",o="",n=0;for(let r of s.matchAll(t?Ww:Gw)){let i=r.index??0,[a]=r,l="";if(t){let[,c,d,p,h,f]=r;if(c)l="c";else if(d)l="s";else if(p)l="k";else if(h)l="n";else if(f){let m=i+f.length;s[m]==="("?l="f":(f.startsWith("--")||Vw(s,m))&&(l="l")}}else{let[,c,d,p,h]=r;c?l="c":d?l=e==="json"&&/^\s*:/.test(s.slice(i+a.length,i+a.length+20))?"p":"s":p?l="n":h&&(jw.has(h)?l="k":Uw.has(h)?l="l":/^\s*\(/.test(s.slice(i+h.length,i+h.length+40))&&(l="f"))}l&&(o+=Zn(s.slice(n,i))+`${Zn(a)}`,n=i+a.length)}return o+Zn(s.slice(n))}function Ph(s,e,{onSave:t,onDirtyChange:o,onChange:n,language:r="js"}){s.innerHTML=`
      +
      `;let i=s.querySelector(".editorGutter"),a=s.querySelector("pre"),l=s.querySelector("code"),c=s.querySelector("textarea");c.value=e;let d=e,p=!1,h=0,f=0,m=()=>{a.scrollTop=c.scrollTop,a.scrollLeft=c.scrollLeft,i.scrollTop=c.scrollTop},g=()=>{f=0;let{value:k}=c;l.innerHTML=`${Qn(k,r)} `;let E=k.split(` -`).length;E!==p&&(p=E,i.textContent=Array.from({length:E},(x,$)=>$+1).join(` -`)),m();let L=k!==u;L!==h&&(h=L,o(h))},b=k=>{document.execCommand("insertText",!1,k)},v=()=>{g(),n?.(c.value)};return c.addEventListener("input",()=>{c.value.length<15e4?v():f||(f=setTimeout(v,150))}),c.addEventListener("scroll",m),c.addEventListener("keydown",k=>{if((k.ctrlKey||k.metaKey)&&k.key.toLowerCase()==="s"){k.preventDefault(),t();return}if(k.key==="Tab"&&!k.ctrlKey&&!k.altKey){k.preventDefault();let{selectionStart:E,selectionEnd:L,value:x}=c,$=x.lastIndexOf(` +`).length;E!==h&&(h=E,i.textContent=Array.from({length:E},(x,$)=>$+1).join(` +`)),m();let L=k!==d;L!==p&&(p=L,o(p))},b=k=>{document.execCommand("insertText",!1,k)},v=()=>{g(),n?.(c.value)};return c.addEventListener("input",()=>{c.value.length<15e4?v():f||(f=setTimeout(v,150))}),c.addEventListener("scroll",m),c.addEventListener("keydown",k=>{if((k.ctrlKey||k.metaKey)&&k.key.toLowerCase()==="s"){k.preventDefault(),t();return}if(k.key==="Tab"&&!k.ctrlKey&&!k.altKey){k.preventDefault();let{selectionStart:E,selectionEnd:L,value:x}=c,$=x.lastIndexOf(` `,E-1)+1;if(k.shiftKey){let I=/^ {1,4}/.exec(x.slice($))?.[0].length??0;if(!I)return;c.setSelectionRange($,$+I),document.execCommand("delete"),c.setSelectionRange(Math.max($,E-I),Math.max($,L-I));return}b(" ");return}if(k.key==="Enter"&&!k.ctrlKey&&!k.altKey&&!k.shiftKey){k.preventDefault();let{selectionStart:E,value:L}=c,x=L.lastIndexOf(` `,E-1)+1,$=L.slice(x,E),I=/^\s*/.exec($)?.[0]??"",_=r!=="text"&&/[{[(]\s*$/.test($)?" ":"";b(` -${I}${_}`)}}),g(),{getValue:()=>c.value,isDirty:()=>h,markSaved(k=c.value){u=k,g()},focus(){c.focus(),c.setSelectionRange(0,0)}}}function po(s,{title:e,content:t,language:o,isNew:n=!1,onSave:r,onClose:i,onChange:a}){s.textContent="";let l=St("div","editorView"),c=St("div","editorBar"),u=St("div","editorFile",e),h=St("span","dirty",n?" (new, not saved yet)":"");u.append(h);let p=St("div","btn primary","Save"),f=St("div","btn","Save & close"),m=St("div","btn","Close");p.onclick=()=>r(!1),f.onclick=()=>r(!0),m.onclick=i,c.append(u,p,f,m);let g=St("div","");g.style.cssText="display:flex;flex:1 1 auto;min-height:0",l.append(c,g,St("div","editorKeys","Ctrl+S save \xB7 Ctrl+Z / Ctrl+Y undo, redo \xB7 Tab / Shift+Tab indent \xB7 Esc close")),s.append(l);let b=Ph(g,t,{language:o,onChange:a,onSave:()=>r(!1),onDirtyChange:v=>{h.textContent=v?" \u25CF unsaved":""}});return b.focus(),{editor:b,bar:c,saveButton:p}}var jw,Uw,Gw,Jn,Ww,Ka,Vw,St,Oo=w(()=>{"use strict";jw=new Set("async await break case catch class const continue debugger default delete do else export extends finally for function if import in instanceof let new of return static super switch throw try typeof var void while with yield get set".split(" ")),Uw=new Set(["true","false","null","undefined","this","NaN","Infinity"]),Gw=/(\/\/[^\n]*|\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?|`(?:[^`\\]|\\[\s\S])*`?)|(\b\d[\d_]*(?:\.[\d_]+)?(?:e[+-]?\d+)?n?\b|\b0x[\da-fA-F_]+n?\b)|([A-Za-z_$][\w$]*)/g,Jn=s=>s.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">"),Ww=/(\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?)|(@[\w-]+|!\s*important\b)|(#[\da-fA-F]{3,8}\b|-?(?:\d*\.)?\d+(?:e[+-]?\d+)?(?:%|[a-zA-Z]+)?)|(-?-?[a-zA-Z_][\w-]*)/g,Ka=s=>{let e=s.slice(s.lastIndexOf(".")+1).toLowerCase();return e==="css"?"css":e==="json"?"json":["js","mjs"].includes(e)?"js":"text"},Vw=(s,e)=>/^\s*:[^{};]*(?:[;}]|$)/.test(s.slice(e,e+400));St=(s,e,t="")=>{let o=document.createElement(s);return o.className=e,o.textContent=t,o}});var Ga={};A(Ga,{default:()=>tk});function ja(s){return s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`}function Zw(){let s=new Date;return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}function Qw(){let s=document.createElement("canvas").getContext("webgl2");if(!s)return null;let e=s.getExtension("WEBGL_debug_renderer_info"),t=e?{vendor:String(s.getParameter(e.UNMASKED_VENDOR_WEBGL)),renderer:String(s.getParameter(e.UNMASKED_RENDERER_WEBGL))}:null;return s.getExtension("WEBGL_lose_context")?.loseContext(),t}function ek(){let s={};for(let n=0;n{"use strict";Lh();F();Oo();Yw="diagnostics",Xw="kro_setngss_",Jw=256*1024;Ua=class{constructor(){this.overlay=null,this.shadow=null,this.entries=[],this.excluded=new Set,this.compressed=0,this.onMessage=e=>this.receive(e.data),this.onKey=e=>{e.key==="Escape"&&this.close()},d.diagnostics={open:()=>this.open()}}open(){if(!d.hostFeatures?.includes(Yw)){d.showNotification("The Diagnostics Report needs a newer Kute",!1,4);return}if(this.overlay)return;this.entries=[],this.excluded.clear(),this.overlay=document.createElement("div"),this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let e=document.createElement("div");this.overlay.append(e),this.shadow=e.attachShadow({mode:"open"}),this.shadow.innerHTML=Rh,this.element("dgClose").onclick=()=>this.close(),this.element("dgSave").onclick=()=>this.save(),this.overlay.addEventListener("mousedown",t=>{t.target===this.overlay&&this.close()}),document.addEventListener("keydown",this.onKey),window.chrome.webview.addEventListener("message",this.onMessage),document.body.append(this.overlay),window.chrome.webview.postMessage(`diagnostics-collect ${JSON.stringify(ek())}`)}close(){window.chrome.webview.removeEventListener("message",this.onMessage),document.removeEventListener("keydown",this.onKey),this.overlay?.remove(),this.overlay=null,this.shadow=null,this.entries=[]}element(e){return this.shadow?.querySelector(`#${e}`)}receive(e){if(this.shadow){if(e?.diagnostics)this.entries=e.diagnostics.entries??[],this.compressed=e.diagnostics.compressed??0,this.element("dgSave").classList.remove("dgBusy"),this.renderList(),this.select(this.entries.find(t=>t.name!=="manifest.json")?.name??"manifest.json");else if(e?.diagnosticsSaved){let{file:t,error:o}=e.diagnosticsSaved;if(this.element("dgSave").classList.remove("dgBusy"),o){d.showNotification(`Could not save the report: ${o}`,!1,5);return}d.showNotification(`Saved ${t} to your Downloads folder`,!1,5),this.close()}}}renderList(){let e=this.element("dgEntries");e.replaceChildren();for(let t of this.entries){let o=document.createElement("div");o.className="dgEntry",o.dataset.name=t.name;let n=document.createElement("input");n.type="checkbox",n.checked=!this.excluded.has(t.name),n.disabled=t.name==="manifest.json",n.onclick=l=>{l.stopPropagation(),n.checked?this.excluded.delete(t.name):this.excluded.add(t.name),o.classList.toggle("dgOff",!n.checked),this.renderTotal()};let r=document.createElement("div"),i=document.createElement("span");i.className="dgName",i.textContent=t.name;let a=document.createElement("span");a.className="dgSize",a.textContent=ja(t.bytes),r.append(i,a),o.append(n,r),o.onclick=()=>this.select(t.name),e.append(o)}this.renderTotal()}select(e){let t=this.entries.find(n=>n.name===e);if(!t)return;for(let n of this.element("dgEntries").querySelectorAll(".dgEntry"))n.classList.toggle("dgSelected",n.dataset.name===e);this.element("dgNote").textContent=t.note;let o=this.element("dgText");t.kind==="binary"?o.textContent=`${t.name}: ${ja(t.bytes)} of binary data, goes into the file as it is.`:t.kind==="json"&&!t.truncated&&(t.text??"").length<=Jw?o.innerHTML=Zn(t.text??"","json"):o.textContent=t.truncated?`${t.text} +${I}${_}`)}}),g(),{getValue:()=>c.value,isDirty:()=>p,markSaved(k=c.value){d=k,g()},focus(){c.focus(),c.setSelectionRange(0,0)}}}function po(s,{title:e,content:t,language:o,isNew:n=!1,onSave:r,onClose:i,onChange:a}){s.textContent="";let l=St("div","editorView"),c=St("div","editorBar"),d=St("div","editorFile",e),p=St("span","dirty",n?" (new, not saved yet)":"");d.append(p);let h=St("div","btn primary","Save"),f=St("div","btn","Save & close"),m=St("div","btn","Close");h.onclick=()=>r(!1),f.onclick=()=>r(!0),m.onclick=i,c.append(d,h,f,m);let g=St("div","");g.style.cssText="display:flex;flex:1 1 auto;min-height:0",l.append(c,g,St("div","editorKeys","Ctrl+S save \xB7 Ctrl+Z / Ctrl+Y undo, redo \xB7 Tab / Shift+Tab indent \xB7 Esc close")),s.append(l);let b=Ph(g,t,{language:o,onChange:a,onSave:()=>r(!1),onDirtyChange:v=>{p.textContent=v?" \u25CF unsaved":""}});return b.focus(),{editor:b,bar:c,saveButton:h}}var jw,Uw,Gw,Zn,Ww,ja,Vw,St,Oo=w(()=>{"use strict";jw=new Set("async await break case catch class const continue debugger default delete do else export extends finally for function if import in instanceof let new of return static super switch throw try typeof var void while with yield get set".split(" ")),Uw=new Set(["true","false","null","undefined","this","NaN","Infinity"]),Gw=/(\/\/[^\n]*|\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?|`(?:[^`\\]|\\[\s\S])*`?)|(\b\d[\d_]*(?:\.[\d_]+)?(?:e[+-]?\d+)?n?\b|\b0x[\da-fA-F_]+n?\b)|([A-Za-z_$][\w$]*)/g,Zn=s=>s.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">"),Ww=/(\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?)|(@[\w-]+|!\s*important\b)|(#[\da-fA-F]{3,8}\b|-?(?:\d*\.)?\d+(?:e[+-]?\d+)?(?:%|[a-zA-Z]+)?)|(-?-?[a-zA-Z_][\w-]*)/g,ja=s=>{let e=s.slice(s.lastIndexOf(".")+1).toLowerCase();return e==="css"?"css":e==="json"?"json":["js","mjs"].includes(e)?"js":"text"},Vw=(s,e)=>/^\s*:[^{};]*(?:[;}]|$)/.test(s.slice(e,e+400));St=(s,e,t="")=>{let o=document.createElement(s);return o.className=e,o.textContent=t,o}});var Wa={};A(Wa,{default:()=>tk});function Ua(s){return s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`}function Zw(){let s=new Date;return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}function Qw(){let s=document.createElement("canvas").getContext("webgl2");if(!s)return null;let e=s.getExtension("WEBGL_debug_renderer_info"),t=e?{vendor:String(s.getParameter(e.UNMASKED_VENDOR_WEBGL)),renderer:String(s.getParameter(e.UNMASKED_RENDERER_WEBGL))}:null;return s.getExtension("WEBGL_lose_context")?.loseContext(),t}function ek(){let s={};for(let n=0;n{"use strict";Lh();D();Oo();Yw="diagnostics",Xw="kro_setngss_",Jw=256*1024;Ga=class{constructor(){this.overlay=null,this.shadow=null,this.entries=[],this.excluded=new Set,this.compressed=0,this.onMessage=e=>this.receive(e.data),this.onKey=e=>{e.key==="Escape"&&this.close()},u.diagnostics={open:()=>this.open()}}open(){if(!u.hostFeatures?.includes(Yw)){u.showNotification("The Diagnostics Report needs a newer Kute",!1,4);return}if(this.overlay)return;this.entries=[],this.excluded.clear(),this.overlay=document.createElement("div"),this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let e=document.createElement("div");this.overlay.append(e),this.shadow=e.attachShadow({mode:"open"}),this.shadow.innerHTML=Rh,this.element("dgClose").onclick=()=>this.close(),this.element("dgSave").onclick=()=>this.save(),this.overlay.addEventListener("mousedown",t=>{t.target===this.overlay&&this.close()}),document.addEventListener("keydown",this.onKey),window.chrome.webview.addEventListener("message",this.onMessage),document.body.append(this.overlay),window.chrome.webview.postMessage(`diagnostics-collect ${JSON.stringify(ek())}`)}close(){window.chrome.webview.removeEventListener("message",this.onMessage),document.removeEventListener("keydown",this.onKey),this.overlay?.remove(),this.overlay=null,this.shadow=null,this.entries=[]}element(e){return this.shadow?.querySelector(`#${e}`)}receive(e){if(this.shadow){if(e?.diagnostics)this.entries=e.diagnostics.entries??[],this.compressed=e.diagnostics.compressed??0,this.element("dgSave").classList.remove("dgBusy"),this.renderList(),this.select(this.entries.find(t=>t.name!=="manifest.json")?.name??"manifest.json");else if(e?.diagnosticsSaved){let{file:t,error:o}=e.diagnosticsSaved;if(this.element("dgSave").classList.remove("dgBusy"),o){u.showNotification(`Could not save the report: ${o}`,!1,5);return}u.showNotification(`Saved ${t} to your Downloads folder`,!1,5),this.close()}}}renderList(){let e=this.element("dgEntries");e.replaceChildren();for(let t of this.entries){let o=document.createElement("div");o.className="dgEntry",o.dataset.name=t.name;let n=document.createElement("input");n.type="checkbox",n.checked=!this.excluded.has(t.name),n.disabled=t.name==="manifest.json",n.onclick=l=>{l.stopPropagation(),n.checked?this.excluded.delete(t.name):this.excluded.add(t.name),o.classList.toggle("dgOff",!n.checked),this.renderTotal()};let r=document.createElement("div"),i=document.createElement("span");i.className="dgName",i.textContent=t.name;let a=document.createElement("span");a.className="dgSize",a.textContent=Ua(t.bytes),r.append(i,a),o.append(n,r),o.onclick=()=>this.select(t.name),e.append(o)}this.renderTotal()}select(e){let t=this.entries.find(n=>n.name===e);if(!t)return;for(let n of this.element("dgEntries").querySelectorAll(".dgEntry"))n.classList.toggle("dgSelected",n.dataset.name===e);this.element("dgNote").textContent=t.note;let o=this.element("dgText");t.kind==="binary"?o.textContent=`${t.name}: ${Ua(t.bytes)} of binary data, goes into the file as it is.`:t.kind==="json"&&!t.truncated&&(t.text??"").length<=Jw?o.innerHTML=Qn(t.text??"","json"):o.textContent=t.truncated?`${t.text} -... (the preview ends here, the file holds all of it)`:t.text??"",o.scrollTop=0}renderTotal(){let e=this.entries.filter(r=>!this.excluded.has(r.name)),t=e.reduce((r,i)=>r+i.bytes,0),o=this.entries.reduce((r,i)=>r+i.bytes,0),n=o>0?this.compressed*t/o:0;this.element("dgTotal").textContent=`${e.length} of ${this.entries.length} files, about ${ja(Math.round(n))} as a file`}save(){this.element("dgSave").classList.add("dgBusy"),window.chrome.webview.postMessage(`diagnostics-save ${JSON.stringify([...this.excluded])}`)}},tk=new Ua});var Nh={};A(Nh,{OFFICIAL_MAPS:()=>Qn,mapImageUrl:()=>_s,mapLabel:()=>Ya,officialMaps:()=>Xa});function Xa(){return Va??=fetch(ok,{signal:AbortSignal.timeout(4e3)}).then(s=>s.json()).then(s=>{let e=[];for(let t of Array.isArray(s?.data)?s.data:[])Number.isInteger(t?.id)&&t.id>=0&&typeof t?.name=="string"&&e.push([t.id,t.name]);if(e.length===0)throw new Error("empty map list");return e}).catch(()=>(Va=null,Qn.map((s,e)=>[e,s]))),Va}var Qn,ok,_s,Ya,Va,er=w(()=>{"use strict";Qn=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Shipment","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Bureau","Tortuga","Tropicano","Krunk_Plaza","Arena","Habitat","Atomic","Old_Burg","Throwback","Stockade","Facility","Clockwork","Laboratory","Shipyard","Soul Sanctum","Bazaar","Erupt","HQ","Khepri","Lush","Vivo","Slide Moonlight","Eterno Simulator","Stalk Factory","Eterno Jump","Frontier","Bastion","Piazza","Barnyard"],ok="https://gapi.svc.krunker.io/maps",_s=s=>`https://assets.krunker.io/img/maps/map_${s}.png`,Ya=s=>s.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),Va=null});var _h=we((p3,sk)=>{sk.exports="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"});var Bh=we((h3,nk)=>{nk.exports=`

      Match Found Sound

      Plays in Kute's queue window when it finds a match
      Play
      Open folder
      Refresh
      Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds
      Done
      `});var Fh={};A(Fh,{chosenSound:()=>Za,default:()=>ak,kuteSound:()=>Bs,volume:()=>mo});function Hh(s,e){return new Promise(t=>{let o=0,n=r=>{let i=e(r.data);i!==void 0&&(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(i))};o=setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},ik),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(s)})}async function Za(){let s=String(d.settings.data.queueSoundFile??ho);if(s!==ho&&zh()){let e=await Oh(s);if(e?.data)return e.data}return Bs()}var ho,rk,ik,zh,mo,Bs,Oh,Ja,ak,Qa=w(()=>{"use strict";F();ho="",rk=40,ik=5e3,zh=()=>d.hostFeatures?.includes("custom-sounds")??!1,mo=()=>Math.min(1,Math.max(0,Number(d.settings.data.queueSoundVolume??rk)/100||0));Bs=()=>Promise.resolve().then(()=>ue(_h(),1)).then(s=>s.default),Oh=s=>Hh(`sound-get ${JSON.stringify({name:s})}`,e=>e?.sound?.name===s?e.sound:void 0);Ja=class{constructor(){this.context=null,this.playing=null,this.gain=null,d.queueSound={showOptions:()=>this.showOptions()}}async play(e){this.stop(),this.context??=new AudioContext,this.context.state==="suspended"&&await this.context.resume();let t=Uint8Array.from(atob(e),i=>i.charCodeAt(0)),o=await this.context.decodeAudioData(t.buffer),n=this.context.createGain();n.gain.value=mo(),n.connect(this.context.destination);let r=this.context.createBufferSource();r.buffer=o,r.connect(n),r.onended=()=>{this.playing===r&&(this.playing=null),r.disconnect(),n.disconnect()},r.start(),this.playing=r,this.gain=n}stop(){this.playing?.stop(),this.playing=null}async showOptions(){let e=await Promise.resolve().then(()=>ue(Bh(),1)),t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default;let r=b=>n.querySelector(`#${b}`),i=r("qsSound"),a=r("qsVolume"),l=Math.round(mo()*100),c=r("qsError"),u=String(d.settings.data.queueSoundFile??ho),h=b=>{c.textContent=b,c.hidden=!b},p=async()=>{let b=zh(),v=b?await Hh("sound-list",L=>Array.isArray(L?.sounds)?L.sounds:void 0)??[]:[],k=[new Option("Kute's sound",ho)];if(v.length){let L=document.createElement("optgroup");L.label="Your sounds",L.append(...v.map(x=>new Option(x,x))),k.push(L)}u!==ho&&!v.includes(u)&&k.push(new Option(`${u} (missing)`,u)),i.replaceChildren(...k),i.value=u,r("qsOpenFolder").hidden=!b,r("qsRefresh").hidden=!b;let E="Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds";b?v.length===0&&(E="Add your own: put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds, then press Refresh"):E="Your own sounds need a newer Kute. Update Kute to use them.",r("qsFileHint").textContent=E},f=()=>{r("qsVolumeValue").textContent=`${a.value} %`};a.value=String(l),f(),a.oninput=()=>{d.settings.data.queueSoundVolume=Number(a.value),f(),this.playing&&this.gain&&(this.gain.gain.value=mo())},i.onchange=()=>{u=i.value,h("")},r("qsPlay").onclick=async()=>{h(""),mo()===0&&h("The volume is at 0.");try{if(u===ho){await this.play(await Bs());return}let b=await Oh(u);if(!b?.data){h(b?.error??"Kute did not answer.");return}await this.play(b.data)}catch{h("This file cannot be played. Try MP3, OGG or WAV.")}},r("qsOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, sounds"),r("qsRefresh").onclick=()=>p();let m=new AbortController,g=()=>{m.abort(),this.stop(),t.remove(),Number(a.value)!==l&&window.chrome.webview.postMessage(`set-config-json queueSoundVolume ${Number(a.value)}`),u!==String(d.settings.data.queueSoundFile??ho)&&(d.settings.data.queueSoundFile=u,window.chrome.webview.postMessage(`set-config-json queueSoundFile ${JSON.stringify(u)}`))};r("qsDone").onclick=g,t.addEventListener("mousedown",b=>{b.target===t&&g()}),document.addEventListener("keydown",b=>{b.key==="Escape"&&(b.stopPropagation(),g())},{signal:m.signal,capture:!0}),document.body.append(t),await p()}},ak=new Ja});var Dh=we((f3,lk)=>{lk.exports=' External Queue
      Ready
      00:00:00

      Select Maps

      '});var qh=we((g3,ck)=>{ck.exports='(()=>{const{info:r}=window;function o(e){const n=document.querySelector(e);if(!n)throw new Error(`queue window: ${e} is missing`);return n}const y=r.maps,R={na:"North America",eu:"Europe",as:"Asia"},T=60,O=o("#queueStatus"),D=o("#statusArea"),q=o("#queueTimerDisplay"),A=o("#regionCheckboxes"),k=o("#matchPopupOverlay"),B=o("#countDownTimer"),$=o("#foundRegion"),_=o("#mapSelectorButton"),p=o("#mapSelectorOverlay"),j=o("#closeMapSelector"),I=o("#mapGrid"),s=o("#queueButton"),G=o("#closeButton");let m=!1,g=!1,N=0,E=0,v=0,w=null,l=null,S=null,u=null;const i=new Set,h=window.opener?.localStorage??window.localStorage;function x(){const e=Array.from(A.querySelectorAll("input:checked"),n=>n.id);h.setItem("queue_selectedRegions",JSON.stringify(e)),h.setItem("queue_newSelectedMaps",JSON.stringify(Array.from(i)))}function J(){try{for(const n of JSON.parse(h.getItem("queue_selectedRegions")??"[]")){const t=document.getElementById(n);t&&(t.checked=!0)}const e=h.getItem("queue_newSelectedMaps");for(const n of e?JSON.parse(e):Object.values(y).map(t=>t.number))i.add(Number(n))}catch{for(const e of Object.values(y))i.add(e.number)}}function C(e){const n=t=>String(Math.floor(t)).padStart(2,"0");return`${n(e/3600)}:${n(e%3600/60)}:${n(e%60)}`}function b(e,n){O.textContent=n,O.classList.toggle("active",e),D.classList.toggle("active",e)}function d(e="Ready"){m=!1,g=!1,clearInterval(E),s.textContent="Start Queue",s.classList.remove("in-queue"),s.disabled=!1,q.textContent="00:00:00",b(!1,e)}async function Q(){l=new AudioContext,l.state==="suspended"&&await l.resume();const e=n=>l.decodeAudioData(Uint8Array.from(atob(n),t=>t.charCodeAt(0)).buffer);try{S=await e(r.sound)}catch{S=await e(r.fallbackSound??r.sound)}}function L(){u&&(u.stop(),u.disconnect(),u=null)}function P(){if(!S||l?.state!=="running")return;L();let e=1;try{e=r.volume?.()??1}catch{}if(!(e>0))return;const n=l.createGain();n.gain.value=e,n.connect(l.destination);const t=l.createBufferSource();t.buffer=S,t.connect(n),t.start(0),u=t,t.onended=()=>{u===t&&(u=null),t.disconnect(),n.disconnect()}}function U(e){const n=Date.now()+e,t=()=>{const a=Math.ceil((n-Date.now())/1e3);if(a<=0){b(!1,"Ready"),s.disabled=!1;return}b(!1,`Cooldown: ${C(a)}`),s.disabled=!0,setTimeout(t,1e3)};t()}function z(e,n){P(),k.classList.add("active");const t=Object.entries(y).find(([,f])=>f.number===Number.parseInt(e,10))?.[0]??"unknown",a=R[n.slice(2)]??n.slice(2);$.textContent=`${a}, ${t}`;const c=Date.now();clearInterval(v),v=setInterval(()=>{const f=Math.max(0,T-Math.floor((Date.now()-c)/1e3));B.textContent=C(f),f<=0&&(clearInterval(v),k.classList.remove("active"))},1e3),d()}function W(){const e=Array.from(A.querySelectorAll("input:checked"),a=>a.value);if(e.length===0||i.size===0){d(e.length===0?"Select at least one region":"Select at least one map");return}const n=`wss://gamefrontend.svc.krunker.io/v1/matchmaking/queue?token=${r.token}&maps=${Array.from(i).join(",")}®ions=${e.join(",")}`;let t;try{t=new WebSocket(n)}catch{d("Connection failed");return}w=t,t.onerror=()=>d("Connection error"),t.onclose=()=>{(m||g)&&d()},t.onopen=()=>{m=!0,g=!1,N=Date.now(),s.textContent="Leave Queue",s.classList.add("in-queue"),s.disabled=!1,b(!0,"In queue"),q.textContent=C(0),E=setInterval(()=>{q.textContent=C((Date.now()-N)/1e3)},1e3)},t.onmessage=a=>{const c=JSON.parse(a.data);if(c.type==="QUEUE_STATUS"&&c.payload?.status==="MATCHED"){const f=c.payload.assignment.extensions;z(String(f.map).trim(),String(f.region))}else c.type==="ERROR"&&c.payload?.code==="COOLDOWN"?(d(),t.close(),U(Number(c.payload.payload.cooldown))):c.type==="INTERNAL_ERROR"&&(d(),t.close())}}function F(e){const n=!i.has(e);n?i.add(e):i.delete(e),I.querySelector(`.map-item[data-map="${e}"]`)?.classList.toggle("selected",n),m&&w?.close(),x()}function H(){I.replaceChildren();for(const[e,n]of Object.entries(y)){const t=document.createElement("div");t.className="map-item",t.dataset.map=String(n.number),t.classList.toggle("selected",i.has(n.number));const a=document.createElement("img");a.src=n.url,a.loading="lazy";const c=document.createElement("span");c.textContent=e,t.append(a,c),t.onclick=()=>F(n.number),I.append(t)}}J();const M=r.region?document.getElementById(r.region):null;M&&(M.checked=!0),H(),_.onclick=()=>p.classList.add("active"),j.onclick=()=>p.classList.remove("active"),p.onclick=e=>{e.target===p&&p.classList.remove("active")},s.onclick=async()=>{if(!g){if(m){w?.close();return}s.disabled=!0,g=!0;try{S||await Q()}catch{}W()}},G.onclick=()=>{clearInterval(v),k.classList.remove("active"),L()};const K=()=>{m&&w?.close(),x()};for(const e of A.querySelectorAll("input"))e.onclick=K})();\n'});var Kh={};function uk(){let s=window.screen.width,e=window.screen.height,t=850,o=350,n=(s-t)/2,r=(e-o)/2,i=window.open("about:blank","_blank",`width=${t},height=${o},left=${n},top=${r}`);if(!i)return;let a=(U(".region-indicator").textContent??"").split(": ")[1];switch(a){case"North America":a="na";break;case"Europe":a="eu";break;case"Asia":a="as";break;default:break}let l=localStorage.getItem("__FRVR_auth_access_token")??"";l=l.replace(/"/g,""),l=l.replace("/","");let c=localStorage.getItem("s_rankedAllRegions")==="true";Promise.all([Promise.resolve().then(()=>ue(Dh(),1)),Promise.resolve().then(()=>ue(qh(),1)),Za(),Bs(),Xa()]).then(([u,h,p,f,m])=>{let g=Object.fromEntries(m.map(([k,E])=>[Ya(E),{url:_s(k),number:k}]));i.info={allRegions:c,token:l,region:a,sound:p,fallbackSound:f,volume:mo,maps:g};let b=new DOMParser().parseFromString(u.default,"text/html");i.document.head.append(...Array.from(b.head.children,k=>i.document.importNode(k,!0))),i.document.body.append(...Array.from(b.body.children,k=>i.document.importNode(k,!0)));let v=i.document.createElement("script");v.textContent=h.default,i.document.head.append(v)})}var tr,dk,el=w(()=>{"use strict";Ae();er();Qa();tr=document.createElement("button");tr.textContent="open_in_new";tr.style=`background-color: #5ce05a; +... (the preview ends here, the file holds all of it)`:t.text??"",o.scrollTop=0}renderTotal(){let e=this.entries.filter(r=>!this.excluded.has(r.name)),t=e.reduce((r,i)=>r+i.bytes,0),o=this.entries.reduce((r,i)=>r+i.bytes,0),n=o>0?this.compressed*t/o:0;this.element("dgTotal").textContent=`${e.length} of ${this.entries.length} files, about ${Ua(Math.round(n))} as a file`}save(){this.element("dgSave").classList.add("dgBusy"),window.chrome.webview.postMessage(`diagnostics-save ${JSON.stringify([...this.excluded])}`)}},tk=new Ga});var Nh={};A(Nh,{OFFICIAL_MAPS:()=>er,mapImageUrl:()=>Bs,mapLabel:()=>Xa,officialMaps:()=>Ja});function Ja(){return Ya??=fetch(ok,{signal:AbortSignal.timeout(4e3)}).then(s=>s.json()).then(s=>{let e=[];for(let t of Array.isArray(s?.data)?s.data:[])Number.isInteger(t?.id)&&t.id>=0&&typeof t?.name=="string"&&e.push([t.id,t.name]);if(e.length===0)throw new Error("empty map list");return e}).catch(()=>(Ya=null,er.map((s,e)=>[e,s]))),Ya}var er,ok,Bs,Xa,Ya,tr=w(()=>{"use strict";er=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Shipment","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Bureau","Tortuga","Tropicano","Krunk_Plaza","Arena","Habitat","Atomic","Old_Burg","Throwback","Stockade","Facility","Clockwork","Laboratory","Shipyard","Soul Sanctum","Bazaar","Erupt","HQ","Khepri","Lush","Vivo","Slide Moonlight","Eterno Simulator","Stalk Factory","Eterno Jump","Frontier","Bastion","Piazza","Barnyard"],ok="https://gapi.svc.krunker.io/maps",Bs=s=>`https://assets.krunker.io/img/maps/map_${s}.png`,Xa=s=>s.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),Ya=null});var _h=we((p3,sk)=>{sk.exports="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"});var Bh=we((h3,nk)=>{nk.exports=`

      Match Found Sound

      Plays in Kute's queue window when it finds a match
      Play
      Open folder
      Refresh
      Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds
      Done
      `});var Dh={};A(Dh,{chosenSound:()=>Qa,default:()=>ak,kuteSound:()=>zs,volume:()=>mo});function Hh(s,e){return new Promise(t=>{let o=0,n=r=>{let i=e(r.data);i!==void 0&&(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(i))};o=setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},ik),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(s)})}async function Qa(){let s=String(u.settings.data.queueSoundFile??ho);if(s!==ho&&zh()){let e=await Oh(s);if(e?.data)return e.data}return zs()}var ho,rk,ik,zh,mo,zs,Oh,Za,ak,el=w(()=>{"use strict";D();ho="",rk=40,ik=5e3,zh=()=>u.hostFeatures?.includes("custom-sounds")??!1,mo=()=>Math.min(1,Math.max(0,Number(u.settings.data.queueSoundVolume??rk)/100||0));zs=()=>Promise.resolve().then(()=>ue(_h(),1)).then(s=>s.default),Oh=s=>Hh(`sound-get ${JSON.stringify({name:s})}`,e=>e?.sound?.name===s?e.sound:void 0);Za=class{constructor(){this.context=null,this.playing=null,this.gain=null,u.queueSound={showOptions:()=>this.showOptions()}}async play(e){this.stop(),this.context??=new AudioContext,this.context.state==="suspended"&&await this.context.resume();let t=Uint8Array.from(atob(e),i=>i.charCodeAt(0)),o=await this.context.decodeAudioData(t.buffer),n=this.context.createGain();n.gain.value=mo(),n.connect(this.context.destination);let r=this.context.createBufferSource();r.buffer=o,r.connect(n),r.onended=()=>{this.playing===r&&(this.playing=null),r.disconnect(),n.disconnect()},r.start(),this.playing=r,this.gain=n}stop(){this.playing?.stop(),this.playing=null}async showOptions(){let e=await Promise.resolve().then(()=>ue(Bh(),1)),t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default;let r=b=>n.querySelector(`#${b}`),i=r("qsSound"),a=r("qsVolume"),l=Math.round(mo()*100),c=r("qsError"),d=String(u.settings.data.queueSoundFile??ho),p=b=>{c.textContent=b,c.hidden=!b},h=async()=>{let b=zh(),v=b?await Hh("sound-list",L=>Array.isArray(L?.sounds)?L.sounds:void 0)??[]:[],k=[new Option("Kute's sound",ho)];if(v.length){let L=document.createElement("optgroup");L.label="Your sounds",L.append(...v.map(x=>new Option(x,x))),k.push(L)}d!==ho&&!v.includes(d)&&k.push(new Option(`${d} (missing)`,d)),i.replaceChildren(...k),i.value=d,r("qsOpenFolder").hidden=!b,r("qsRefresh").hidden=!b;let E="Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds";b?v.length===0&&(E="Add your own: put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds, then press Refresh"):E="Your own sounds need a newer Kute. Update Kute to use them.",r("qsFileHint").textContent=E},f=()=>{r("qsVolumeValue").textContent=`${a.value} %`};a.value=String(l),f(),a.oninput=()=>{u.settings.data.queueSoundVolume=Number(a.value),f(),this.playing&&this.gain&&(this.gain.gain.value=mo())},i.onchange=()=>{d=i.value,p("")},r("qsPlay").onclick=async()=>{p(""),mo()===0&&p("The volume is at 0.");try{if(d===ho){await this.play(await zs());return}let b=await Oh(d);if(!b?.data){p(b?.error??"Kute did not answer.");return}await this.play(b.data)}catch{p("This file cannot be played. Try MP3, OGG or WAV.")}},r("qsOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, sounds"),r("qsRefresh").onclick=()=>h();let m=new AbortController,g=()=>{m.abort(),this.stop(),t.remove(),Number(a.value)!==l&&window.chrome.webview.postMessage(`set-config-json queueSoundVolume ${Number(a.value)}`),d!==String(u.settings.data.queueSoundFile??ho)&&(u.settings.data.queueSoundFile=d,window.chrome.webview.postMessage(`set-config-json queueSoundFile ${JSON.stringify(d)}`))};r("qsDone").onclick=g,t.addEventListener("mousedown",b=>{b.target===t&&g()}),document.addEventListener("keydown",b=>{b.key==="Escape"&&(b.stopPropagation(),g())},{signal:m.signal,capture:!0}),document.body.append(t),await h()}},ak=new Za});var Fh=we((f3,lk)=>{lk.exports=' External Queue
      Ready
      00:00:00

      Select Maps

      '});var qh=we((g3,ck)=>{ck.exports='(()=>{const{info:r}=window;function o(e){const n=document.querySelector(e);if(!n)throw new Error(`queue window: ${e} is missing`);return n}const y=r.maps,R={na:"North America",eu:"Europe",as:"Asia"},T=60,O=o("#queueStatus"),D=o("#statusArea"),q=o("#queueTimerDisplay"),A=o("#regionCheckboxes"),k=o("#matchPopupOverlay"),B=o("#countDownTimer"),$=o("#foundRegion"),_=o("#mapSelectorButton"),p=o("#mapSelectorOverlay"),j=o("#closeMapSelector"),I=o("#mapGrid"),s=o("#queueButton"),G=o("#closeButton");let m=!1,g=!1,N=0,E=0,v=0,w=null,l=null,S=null,u=null;const i=new Set,h=window.opener?.localStorage??window.localStorage;function x(){const e=Array.from(A.querySelectorAll("input:checked"),n=>n.id);h.setItem("queue_selectedRegions",JSON.stringify(e)),h.setItem("queue_newSelectedMaps",JSON.stringify(Array.from(i)))}function J(){try{for(const n of JSON.parse(h.getItem("queue_selectedRegions")??"[]")){const t=document.getElementById(n);t&&(t.checked=!0)}const e=h.getItem("queue_newSelectedMaps");for(const n of e?JSON.parse(e):Object.values(y).map(t=>t.number))i.add(Number(n))}catch{for(const e of Object.values(y))i.add(e.number)}}function C(e){const n=t=>String(Math.floor(t)).padStart(2,"0");return`${n(e/3600)}:${n(e%3600/60)}:${n(e%60)}`}function b(e,n){O.textContent=n,O.classList.toggle("active",e),D.classList.toggle("active",e)}function d(e="Ready"){m=!1,g=!1,clearInterval(E),s.textContent="Start Queue",s.classList.remove("in-queue"),s.disabled=!1,q.textContent="00:00:00",b(!1,e)}async function Q(){l=new AudioContext,l.state==="suspended"&&await l.resume();const e=n=>l.decodeAudioData(Uint8Array.from(atob(n),t=>t.charCodeAt(0)).buffer);try{S=await e(r.sound)}catch{S=await e(r.fallbackSound??r.sound)}}function L(){u&&(u.stop(),u.disconnect(),u=null)}function P(){if(!S||l?.state!=="running")return;L();let e=1;try{e=r.volume?.()??1}catch{}if(!(e>0))return;const n=l.createGain();n.gain.value=e,n.connect(l.destination);const t=l.createBufferSource();t.buffer=S,t.connect(n),t.start(0),u=t,t.onended=()=>{u===t&&(u=null),t.disconnect(),n.disconnect()}}function U(e){const n=Date.now()+e,t=()=>{const a=Math.ceil((n-Date.now())/1e3);if(a<=0){b(!1,"Ready"),s.disabled=!1;return}b(!1,`Cooldown: ${C(a)}`),s.disabled=!0,setTimeout(t,1e3)};t()}function z(e,n){P(),k.classList.add("active");const t=Object.entries(y).find(([,f])=>f.number===Number.parseInt(e,10))?.[0]??"unknown",a=R[n.slice(2)]??n.slice(2);$.textContent=`${a}, ${t}`;const c=Date.now();clearInterval(v),v=setInterval(()=>{const f=Math.max(0,T-Math.floor((Date.now()-c)/1e3));B.textContent=C(f),f<=0&&(clearInterval(v),k.classList.remove("active"))},1e3),d()}function W(){const e=Array.from(A.querySelectorAll("input:checked"),a=>a.value);if(e.length===0||i.size===0){d(e.length===0?"Select at least one region":"Select at least one map");return}const n=`wss://gamefrontend.svc.krunker.io/v1/matchmaking/queue?token=${r.token}&maps=${Array.from(i).join(",")}®ions=${e.join(",")}`;let t;try{t=new WebSocket(n)}catch{d("Connection failed");return}w=t,t.onerror=()=>d("Connection error"),t.onclose=()=>{(m||g)&&d()},t.onopen=()=>{m=!0,g=!1,N=Date.now(),s.textContent="Leave Queue",s.classList.add("in-queue"),s.disabled=!1,b(!0,"In queue"),q.textContent=C(0),E=setInterval(()=>{q.textContent=C((Date.now()-N)/1e3)},1e3)},t.onmessage=a=>{const c=JSON.parse(a.data);if(c.type==="QUEUE_STATUS"&&c.payload?.status==="MATCHED"){const f=c.payload.assignment.extensions;z(String(f.map).trim(),String(f.region))}else c.type==="ERROR"&&c.payload?.code==="COOLDOWN"?(d(),t.close(),U(Number(c.payload.payload.cooldown))):c.type==="INTERNAL_ERROR"&&(d(),t.close())}}function F(e){const n=!i.has(e);n?i.add(e):i.delete(e),I.querySelector(`.map-item[data-map="${e}"]`)?.classList.toggle("selected",n),m&&w?.close(),x()}function H(){I.replaceChildren();for(const[e,n]of Object.entries(y)){const t=document.createElement("div");t.className="map-item",t.dataset.map=String(n.number),t.classList.toggle("selected",i.has(n.number));const a=document.createElement("img");a.src=n.url,a.loading="lazy";const c=document.createElement("span");c.textContent=e,t.append(a,c),t.onclick=()=>F(n.number),I.append(t)}}J();const M=r.region?document.getElementById(r.region):null;M&&(M.checked=!0),H(),_.onclick=()=>p.classList.add("active"),j.onclick=()=>p.classList.remove("active"),p.onclick=e=>{e.target===p&&p.classList.remove("active")},s.onclick=async()=>{if(!g){if(m){w?.close();return}s.disabled=!0,g=!0;try{S||await Q()}catch{}W()}},G.onclick=()=>{clearInterval(v),k.classList.remove("active"),L()};const K=()=>{m&&w?.close(),x()};for(const e of A.querySelectorAll("input"))e.onclick=K})();\n'});var Kh={};function uk(){let s=window.screen.width,e=window.screen.height,t=850,o=350,n=(s-t)/2,r=(e-o)/2,i=window.open("about:blank","_blank",`width=${t},height=${o},left=${n},top=${r}`);if(!i)return;let a=(U(".region-indicator").textContent??"").split(": ")[1];switch(a){case"North America":a="na";break;case"Europe":a="eu";break;case"Asia":a="as";break;default:break}let l=localStorage.getItem("__FRVR_auth_access_token")??"";l=l.replace(/"/g,""),l=l.replace("/","");let c=localStorage.getItem("s_rankedAllRegions")==="true";Promise.all([Promise.resolve().then(()=>ue(Fh(),1)),Promise.resolve().then(()=>ue(qh(),1)),Qa(),zs(),Ja()]).then(([d,p,h,f,m])=>{let g=Object.fromEntries(m.map(([k,E])=>[Xa(E),{url:Bs(k),number:k}]));i.info={allRegions:c,token:l,region:a,sound:h,fallbackSound:f,volume:mo,maps:g};let b=new DOMParser().parseFromString(d.default,"text/html");i.document.head.append(...Array.from(b.head.children,k=>i.document.importNode(k,!0))),i.document.body.append(...Array.from(b.body.children,k=>i.document.importNode(k,!0)));let v=i.document.createElement("script");v.textContent=p.default,i.document.head.append(v)})}var or,dk,tl=w(()=>{"use strict";Ae();tr();el();or=document.createElement("button");or.textContent="open_in_new";or.style=`background-color: #5ce05a; color: #ffffff; border-radius: 9px; padding: 20px 21px; @@ -180,20 +180,20 @@ ${I}${_}`)}}),g(),{getValue:()=>c.value,isDirty:()=>h,markSaved(k=c.value){u=k,g cursor: pointer; font-size: 20px; text-shadow: 2px 2px 0px black !important; - margin-left: 2px;`;dk=window.openRankedMenu;window.openRankedMenu=()=>{dk();let s=U(".footer-controls"),e=s.lastElementChild;s.insertBefore(tr,e)};tr.onclick=uk});var jh={};var pk,hk,mk,tl=w(()=>{"use strict";F();fn();window.chrome.webview.postMessage("drag, true");window.chrome.webview.postMessage("throttle, menu");pk=window.exportSettings;window.exportSettings=s=>(s||d.showNotification("Settings exported to Downloads!",!1,3),pk(s));hk=window.showWindow;window.showWindow=(...s)=>{switch(s[0]){case 3:case 53:window.chrome.webview.postMessage("throttle, game");break;case 15:case 26:case 52:case 9:case 44:case 43:case 40:case 38:case 50:case 17:case 39:case 51:case 16:case 34:window.chrome.webview.postMessage("throttle, menu");break;default:break}return hk(...s)};mk=window.closWind;window.closWind=(...s)=>(window.chrome.webview.postMessage("drag, true"),window.chrome.webview.postMessage("throttle, menu"),mk(...s));d.bindShoot=()=>{if(Or()){window.changeCont("shoot",1,void 0);let s={key:"F20",code:"F20",keyCode:131,which:131,bubbles:!0,cancelable:!0};window.dispatchEvent(new KeyboardEvent("keydown",s)),window.dispatchEvent(new KeyboardEvent("keyup",s))}Jo()}});var sl={};A(sl,{default:()=>fk});var ol,fk,nl=w(()=>{"use strict";F();Ae();ol=class{constructor(){this.numberDisplay=document.createElement("div"),this.numberDisplay.id="hpEnemyCounter",this.numberDisplay.classList.add("statIcon"),this.numberDisplay.style.cssText="transform: translate(0, -2.7px);",this.numberDisplay.innerHTML=` + margin-left: 2px;`;dk=window.openRankedMenu;window.openRankedMenu=()=>{dk();let s=U(".footer-controls"),e=s.lastElementChild;s.insertBefore(or,e)};or.onclick=uk});var jh={};var pk,hk,mk,ol=w(()=>{"use strict";D();gn();window.chrome.webview.postMessage("drag, true");window.chrome.webview.postMessage("throttle, menu");pk=window.exportSettings;window.exportSettings=s=>(s||u.showNotification("Settings exported to Downloads!",!1,3),pk(s));hk=window.showWindow;window.showWindow=(...s)=>{switch(s[0]){case 3:case 53:window.chrome.webview.postMessage("throttle, game");break;case 15:case 26:case 52:case 9:case 44:case 43:case 40:case 38:case 50:case 17:case 39:case 51:case 16:case 34:window.chrome.webview.postMessage("throttle, menu");break;default:break}return hk(...s)};mk=window.closWind;window.closWind=(...s)=>(window.chrome.webview.postMessage("drag, true"),window.chrome.webview.postMessage("throttle, menu"),mk(...s));u.bindShoot=()=>{if(Dr()){window.changeCont("shoot",1,void 0);let s={key:"F20",code:"F20",keyCode:131,which:131,bubbles:!0,cancelable:!0};window.dispatchEvent(new KeyboardEvent("keydown",s)),window.dispatchEvent(new KeyboardEvent("keyup",s))}Zo()}});var nl={};A(nl,{default:()=>fk});var sl,fk,rl=w(()=>{"use strict";D();Ae();sl=class{constructor(){this.numberDisplay=document.createElement("div"),this.numberDisplay.id="hpEnemyCounter",this.numberDisplay.classList.add("statIcon"),this.numberDisplay.style.cssText="transform: translate(0, -2.7px);",this.numberDisplay.innerHTML=`
      on 0 -
      `,this.enemyOBJ=0,this.enemyTimeout=null,this.observer=null,this.pointCounter=null,this.gameUpdateListener=e=>{e.data==="game-updated"&&setTimeout(()=>{He()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.setupDisplay())},2e3)},d.settings.toggleHpEnemyCounter=e=>this.toggle(e),this.toggle(!0)}toggle(e){e?(window.chrome.webview.addEventListener("message",this.gameUpdateListener),He()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.setupDisplay())):(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.observer?.disconnect(),this.numberDisplay.remove())}processTeamScores=()=>{let{pointCounter:e}=this;if(e){for(let t of document.querySelectorAll("#tScoreC1, #tScoreC2"))if(t&&!t.className.includes("you")){let o=t.nextElementSibling;if(!o)continue;let n=Number.parseInt(o.textContent??"",10);if(Number.isNaN(n))continue;n>this.enemyOBJ&&(e.textContent=String((n-this.enemyOBJ)/10),this.enemyTimeout&&clearTimeout(this.enemyTimeout),this.enemyTimeout=setTimeout(()=>{e.textContent="0",this.enemyTimeout=null},1600)),this.enemyOBJ=n}}};setupDisplay(){let e=U(".pointVal",this.numberDisplay);this.pointCounter=e,U(".topRightCounters").append(this.numberDisplay),this.observer?.disconnect(),this.observer=new MutationObserver(this.processTeamScores),this.observer.observe(U("#teamScores"),{childList:!0,subtree:!0})}},fk=new ol});var il={};A(il,{default:()=>gk});var rl,gk,al=w(()=>{"use strict";F();rl=class{constructor(){this.originalPlay=()=>{},this.observer=new MutationObserver(e=>this.parseChat(e)),d.settings.toggleHsSound=e=>this.toggle(e),this.setupSoundHook()}setupSoundHook(){window.SOUND?.play?(this.originalPlay=window.SOUND.play,this.toggle(!0)):setTimeout(()=>this.setupSoundHook(),100)}toggle(e){if(e){let t=document.querySelector("#chatList");t&&this.observer.observe(t,{childList:!0});let o=this;window.SOUND.play=function(n,r,i){if(!(n==="headshot_0"&&r===void 0))return o.originalPlay.call(window.SOUND,n,r,i)}}else window.SOUND.play=this.originalPlay,this.observer.disconnect()}parseChat(e){for(let t of e)if(t.type==="childList")for(let o of t.addedNodes){if(!(o instanceof HTMLElement)||o.tagName!=="DIV")continue;let n=o.querySelector("span.chatMsg");if(!n)continue;let r=n.querySelectorAll("span[style*='color:#'], span[style*='color: rgb']");if(r.length<=0)continue;let i=r[0],a=i.style.color.trim().toLowerCase(),l=i.textContent.trim();a==="rgb(255, 255, 255)"&&l==="You"&&n.querySelector("img")&&window.SOUND.play("headshot_0",1,!1)}}},gk=new rl});var Gh,Uh=w(()=>{Gh=`html.kuteHudEdit #app,html.kuteHudEdit #fullMenHider{opacity:.1!important;pointer-events:none!important}html.kuteHudEdit #kuteHudEditor{position:fixed;inset:0;z-index:2147483000;background:#00000073;font-family:Consolas,monospace;color:#fff}.hudBox{position:absolute;box-sizing:border-box;border:1px solid rgba(53,224,232,.65);border-radius:4px;background:#35e0e81a;cursor:grab;touch-action:none}.hudBox:hover,.hudBox.hudActive{border-color:#35e0e8;background:#35e0e840}.hudBox.hudDragging{cursor:grabbing}.hudBox.hudEmpty{border-style:dashed}.hudBox.hudOff{border-color:#ffffff4d;background:#ffffff0f}.hudLabel{position:absolute;bottom:100%;left:-1px;padding:0 .35em;border-radius:3px 3px 0 0;background:#35e0e8d9;color:#05201f;font-size:11px;line-height:1.5;white-space:nowrap;pointer-events:none}.hudBox.hudLabelBelow .hudLabel{top:100%;bottom:auto;border-radius:0 0 3px 3px}.hudBox.hudOff .hudLabel{background:#fff6;color:#111}.hudGuide{position:absolute;background:#ffc147;pointer-events:none}.hudGuide.hudGuideV{top:0;width:1px;height:100%}.hudGuide.hudGuideH{left:0;width:100%;height:1px} -`});var Vh,Wh=w(()=>{Vh='
      HUD Layout
      Boxes are where things sit in the match.
      Drag to move, wheel to resize, arrows nudge
      Reset all
      Done
      '});var Yh={};A(Yh,{HUD_ELEMENTS:()=>Kt,gameSettingOn:()=>ll});function ll(s){try{return window.localStorage.getItem(`kro_setngss_${s}`)!=="false"}catch{return!0}}var Kt,or=w(()=>{"use strict";Kt=[{key:"timer",name:"Timer",group:"Match",selector:"#timerHolder",size:[188,77]},{key:"matchInfo",name:"Mode and map",group:"Match",selector:"#matchInfo",size:[110,50]},{key:"teamScores",name:"Team scores",group:"Match",selector:"#teamScores",display:"block",size:[220,40],note:"team modes"},{key:"rounds",name:"Rounds",group:"Match",selector:"#roundsDisplay",display:"inline-block",size:[200,60],note:"round based"},{key:"zoneCount",name:"Zone count",group:"Match",selector:"#scoreZoneCount",display:"inline-block",size:[57,43],note:"hardpoint"},{key:"lives",name:"Lives",group:"Match",selector:"#livesCount",display:"inline-block",size:[57,43],note:"LMS, infected"},{key:"gameMessage",name:"Match message",group:"Match",selector:"#gameMessage",size:[400,30]},{key:"roundMessage",name:"Round message",group:"Match",selector:"#roundMessage",size:[400,30]},{key:"challenge",name:"Challenge banner",group:"Match",selector:"#chalDisplay",size:[300,30]},{key:"fps",name:"FPS",group:"Stats",selector:"#fpsDisplay",setting:"showFPS",display:"block",size:[72,23]},{key:"ping",name:"Ping",group:"Stats",selector:"#pingDisplay",setting:"showPing",display:"block",size:[72,23]},{key:"kills",name:"Kills",group:"Stats",selector:"#killCount",setting:"showKillC",display:"inline-block",size:[57,43]},{key:"deaths",name:"Deaths",group:"Stats",selector:"#deathCount",setting:"showDeaths",display:"inline-block",size:[57,43]},{key:"streak",name:"Streak",group:"Stats",selector:"#streakCount",setting:"showStreak",display:"inline-block",size:[57,43]},{key:"kd",name:"K/D",group:"Stats",selector:"#kdCount",setting:"showKD",display:"inline-block",size:[77,43]},{key:"score",name:"Score",group:"Stats",selector:"#scoreCount",setting:"showScore",display:"inline-block",size:[57,43]},{key:"speedRun",name:"Parkour timer",group:"Stats",selector:"#speedRunHolder",display:"block",size:[200,60],note:"parkour"},{key:"leaderboard",name:"Leaderboard",group:"Feed",selector:"#leaderboardHolder",size:[327,54]},{key:"centerLeader",name:"Center leaderboard",group:"Feed",selector:"#centerLeaderDisplay",display:"block",size:[300,120],note:"comp"},{key:"killFeed",name:"Kill feed",group:"Feed",selector:"#killFeed",setting:"showKills",display:"inline-grid",size:[240,120]},{key:"chat",name:"Chat",group:"Feed",selector:"#chatHolder",rule:"#uiBase.onGame #chatHolder",size:[386,248]},{key:"weapons",name:"Weapons",group:"Combat",selector:"#weapHolder",size:[127,203]},{key:"ammo",name:"Ammo",group:"Combat",selector:"#ammoHolder",size:[148,63]},{key:"perks",name:"Perks",group:"Combat",selector:"#perkHolder",size:[65,40]},{key:"krTag",name:"Deposit coins",group:"Combat",selector:"#krTagHolder",size:[71,65],note:"deposit"},{key:"giftTag",name:"Gift drops",group:"Combat",selector:"#giftTagHolder",size:[65,65]},{key:"powerUps",name:"Powerups",group:"Combat",selector:"#powerUpHolder",size:[65,65]},{key:"killStreak",name:"Kill streak",group:"Combat",selector:"#killStreakHolder",size:[65,65]},{key:"player",name:"Health and class",group:"Player",selector:"#bottomLeftPlayer",size:[376,90]},{key:"zPerks",name:"Class perks",group:"Player",selector:"#zPerksHolder",size:[65,40]},{key:"nuke",name:"Nuke counter",group:"Kute",selector:"#kuteNukeCounter",clientSetting:"nukeCounter",display:"flex",size:[90,56]},{key:"keystrokes",name:"Keystrokes",group:"Kute",selector:"#kuteKeystrokes",clientSetting:"keystrokes",display:"flex",size:[190,82]},{key:"spotify",name:"Spotify",group:"Kute",selector:"#kuteSpotifyOverlay",clientSetting:"spotifyOverlay",display:"flex",size:[320,82]},{key:"menuTimer",name:"Menu timer",group:"Kute",selector:"#uiBase.onMenu .spectateInfo",clientSetting:"menuTimer",size:[150,60],note:"menu",menu:(s,e)=>[s/2,e*.4-105]}]});var cl={};A(cl,{HudEditor:()=>sr,default:()=>Sk,implicitShift:()=>zs});function zs(s,e){if(s!=="spotify"||!d.settings.data.keystrokes)return 0;let t=e.spotify??{},o=e.keystrokes??{};if(t.x||t.y||o.x||o.y)return 0;let n=kk*(1+(o.s??1))/2,r=yk*(1-(t.s??1))/2;return Math.round(n+xk-r)}var wk,Xh,kk,yk,xk,sr,Sk,nr=w(()=>{"use strict";F();or();Rt();Bn();wk="kute_hudLayoutCSS",Xh="kute_hud_geometry",kk=190,yk=320,xk=12;sr=class{constructor(){this.style=null,this.open=!1,this.menuRects={},d.hudEditor={edit:()=>this.edit(),apply:()=>this.apply()},this.migrateNukeCounter(),this.apply(),Object.keys(this.measureMenuWidgets()).length===0&&setTimeout(()=>this.measureMenuWidgets(),3e3)}get layout(){return{...d.settings.data.hudLayout}}save(e){d.settings.data.hudLayout=e,window.chrome.webview.postMessage(`set-config-json hudLayout ${JSON.stringify(e)}`),this.apply()}migrateNukeCounter(){let e=d.settings.data.nukeCounterConfig;if(!e||e.x===void 0&&e.y===void 0&&e.scale===void 0)return;let{layout:t}=this;t.nuke??={x:Math.round(((e.x??94)-94)*100)/100,y:Math.round(((e.y??50)-50)*100)/100,s:e.scale??1};let o={goal:e.goal??0,background:e.background??!0};d.settings.data.nukeCounterConfig=o,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(o)}`),this.save(t)}apply(){let{layout:e}=this,t="";for(let o of Kt){let n=e[o.key]??{},r=(n.x??0)!==0||(n.y??0)!==0,i=(n.s??1)!==1,a=zs(o.key,e);if(!r&&!i&&!a)continue;let l=[];r?l.push(`translate:${n.x??0}vw ${n.y??0}vh`):a&&l.push(`translate:${a}px 0`),i&&l.push(`scale:${n.s}`),t+=`${o.rule??o.selector}{${l.join(";")}}`}this.style||(this.style=document.createElement("style"),this.style.id=wk,document.head.append(this.style)),this.style.textContent=t}inMatch(){let e=document.querySelector("#inGameUI");return!!e&&window.getComputedStyle(e).display!=="none"}snapshot(){if(!this.inMatch())return null;let e=[];for(let i of Kt){if(i.menu)continue;let a=document.querySelector(i.selector);a&&e.push({def:i,element:a,visible:window.getComputedStyle(a).display!=="none"})}let t={vw:window.innerWidth,vh:window.innerHeight,factor:1,game:_t().id??"",rects:{}},o=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let{def:i,element:a,visible:l}of e){if(!l)continue;let c=a.getBoundingClientRect();c.width<=0||(t.rects[i.key]=[c.x,c.y,c.width,c.height,1],c.width>60&&a.offsetWidth>0&&(t.factor=c.width/a.offsetWidth))}let n=e.filter(({def:i})=>!t.rects[i.key]&&i.display);if(n.length>0){let i=document.createElement("style");i.textContent=n.map(({def:a})=>`${a.selector}{display:${a.display}!important}`).join(""),document.head.append(i);for(let{def:a,element:l}of n){let c=l.getBoundingClientRect();c.width>0&&(t.rects[a.key]=[c.x,c.y,c.width,c.height,0])}i.remove()}for(let{def:i,element:a}of e){if(t.rects[i.key])continue;let l=a.getBoundingClientRect();t.rects[i.key]=[l.x,l.y,l.width,l.height,0]}let r=this.menuRects[`${t.vw}x${t.vh}`]??{};for(let i of Kt){if(!i.menu)continue;if(r[i.key]){t.rects[i.key]=r[i.key];continue}let[a,l]=i.menu(t.vw,t.vh),[c,u]=i.size??[0,0];t.rects[i.key]=[a-c/2,l-u/2,c,u,1]}this.style&&(this.style.textContent=o);try{window.localStorage.setItem(Xh,JSON.stringify(t))}catch{}return t}geometry(){if(this.inMatch())return this.snapshot();let e=null;try{e=JSON.parse(window.localStorage.getItem(Xh)??"null")}catch{e=null}return!e?.rects||e.vw!==window.innerWidth||e.vh!==window.innerHeight?null:this.withMenuWidgets(e)}measureMenuWidgets(){let e={},t=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let o of Kt){if(!o.menu)continue;let n=document.querySelector(o.selector)?.getBoundingClientRect();n&&n.width>0&&(e[o.key]=[n.x,n.y,n.width,n.height,1])}return this.style&&(this.style.textContent=t),Object.keys(e).length>0&&(this.menuRects[`${window.innerWidth}x${window.innerHeight}`]=e),e}withMenuWidgets(e){return{...e,rects:{...e.rects,...this.measureMenuWidgets()}}}async edit(){if(this.open)return;if(this.inMatch()){this.show(this.snapshot());return}let e=this.geometry();if(e?.game&&e.game===_t().id){this.show(e);return}if(!await Ce({title:"Set up your HUD",paragraphs:["The editor places everything exactly where it sits in a match, so it needs a match to measure.","Kute opens a private one for you, nobody else can join it. If you are in a game right now, you leave it."],stay:"Not now",leave:"Open a private match"})||this.open)return;if(document.querySelector("#signedInHeaderBar")===null){d.showNotification?.("Log in first, a private match needs an account",!1,5);return}this.open=!0,d.showNotification?.("Opening a private match",!1,4);let o=await Es();if(!(o!==null&&await $s(o))){this.open=!1,d.showNotification?.("Could not open a private match. Is a host slot free?",!1,6);return}await new Promise(r=>{setTimeout(r,1500)}),this.open=!1,this.show(this.snapshot()??this.geometry())}show(e){if(!e){d.showNotification?.("Could not measure the HUD, try again",!1,6);return}this.open=!0,Promise.resolve().then(()=>(ul(),dl)).then(t=>t.openEditor(this,e)).catch(t=>{this.open=!1,console.error("[kute] hud editor:",t)})}closed(){this.open=!1}},Sk=new sr});var dl={};A(dl,{openEditor:()=>Ek});async function Ek(s,e){document.pointerLockElement&&document.exitPointerLock(),await new Promise(y=>setTimeout(y,0));let{layout:t}=s,o=document.createElement("style");o.id="kute_hudEditorCSS",o.textContent=Gh,document.head.append(o),document.documentElement.classList.add("kuteHudEdit");let n=document.createElement("div");n.id="kuteHudEditor",document.body.append(n);let r=(y,C)=>{let[R,K,z,N,V]=C,de=!V||z<=0||N<=0,Z=z>window.innerWidth*.5,ge=N>window.innerHeight*.5,le=de?rr:z,Be=de?rr:N,Yt=R,xo=K;return!de&&Z&&(le=y.size?.[0]??rr,Yt=R+z/2-le/2),!de&&ge&&(Be=y.size?.[1]??rr,xo=K+N/2-Be/2),de&&R>window.innerWidth/2&&(Yt=R-le),de&&K>window.innerHeight/2&&(xo=K-Be),le=Math.min(le,window.innerWidth),Be=Math.min(Be,window.innerHeight),{x:ir(Yt,0,window.innerWidth-le),y:ir(xo,0,window.innerHeight-Be),w:le,h:Be,empty:de}},i=y=>{let C=y.filter(R=>!R.empty);for(let R of y)if(R.empty){for(let K=0;K<12;K++){let z=C.find(V=>R.xV.x&&R.yV.y);if(!z)break;R.y+R.h+2+R.h<=window.innerHeight?R.y=Math.min(z.y+z.h+2,window.innerHeight-R.h):R.x=ir(z.x+z.w+2,0,window.innerWidth-R.w)}C.push(R)}},a=[];for(let y of Kt){let C=e.rects[y.key];if(!C||y.clientSetting&&$o(d.settings.data,y.clientSetting))continue;let R=document.createElement("div");R.className="hudBox";let K=document.createElement("div");K.className="hudLabel",K.textContent=y.name,R.append(K),n.append(R),a.push({def:y,box:R,...r(y,C),drawn:null})}i(a);let l=!1;for(let y of a){y.w>60&&(l=!1);let C=l&&y.y+y.h+2060?!1:!l}let c=[];for(let y of["hudGuideV","hudGuideH"]){let C=document.createElement("div");C.className=`hudGuide ${y}`,C.style.display="none",n.append(C),c.push(C)}let u=y=>y.setting?ll(y.setting):y.clientSetting?d.settings.data[y.clientSetting]!==!1:!0,h=y=>t[y]??={},p=y=>{let C={...h(y)},R=zs(y,t);return R&&(C.x=ar(R/window.innerWidth*100)),C},f=(y,C)=>[y/100*window.innerWidth*e.factor,C/100*window.innerHeight*e.factor],m=y=>{let C=t[y.def.key]??{},[R,K]=f(C.x??0,C.y??0),z=R+zs(y.def.key,t)*e.factor,N=C.s??1,V=y.w*N,de=y.h*N,Z=y.x+y.w/2+z-V/2,ge=y.y+y.h/2+K-de/2;y.box.style.left=`${Math.round(Z)}px`,y.box.style.top=`${Math.round(ge)}px`,y.box.style.width=`${Math.round(V)}px`,y.box.style.height=`${Math.round(de)}px`,y.box.classList.toggle("hudOff",!u(y.def)),y.box.classList.toggle("hudEmpty",y.empty),y.drawn=new DOMRect(Z,ge,V,de)},g=()=>{for(let y of a)m(y)},b=()=>{d.settings.data.hudLayout=t,s.apply()},v=new Map,k=new Map,E=()=>{for(let y of a){let C=v.get(y.def.key);if(!C)continue;let R=t[y.def.key],K=R?.s??1,z=!!R&&((R.x??0)!==0||(R.y??0)!==0||K!==1);C.classList.toggle("hpChanged",z);let N=C.querySelector(".hpMoved");N&&(N.textContent=K===1?"":`${Math.round(K*100)}%`);let V=k.get(y.def.key);V&&(V.checked=u(y.def))}},L=null,x=(y,C)=>y.box.classList.toggle("hudActive",C||L===y),$=y=>{L=y;for(let C of a)C.box.classList.toggle("hudActive",C===y)},I=(y,C,R,K)=>{let z=h(y.def.key),N=e.factor||1;z.x=ar((K.x??0)+C/(window.innerWidth*N)*100),z.y=ar((K.y??0)+R/(window.innerHeight*N)*100),b()},_=(y,C,R,K)=>{let z=[0,window.innerWidth/2,window.innerWidth],N=[0,window.innerHeight/2,window.innerHeight];for(let Z of a)Z===y||!Z.drawn||(z.push(Z.drawn.left,Z.drawn.left+Z.drawn.width/2,Z.drawn.right),N.push(Z.drawn.top,Z.drawn.top+Z.drawn.height/2,Z.drawn.bottom));let V=null,de=null;for(let Z of[C.left+R,C.left+R+C.width/2,C.right+R])for(let ge of z){let le=ge-Z;Math.abs(le)<=Jh&&(V===null||Math.abs(le){z.preventDefault(),$(y),C.setPointerCapture(z.pointerId),C.classList.add("hudDragging"),R={x:z.clientX,y:z.clientY,rect:y.drawn??C.getBoundingClientRect(),from:p(y.def.key)}},C.onpointermove=z=>{if(!R||!C.hasPointerCapture(z.pointerId))return;let[N,V]=_(y,R.rect,z.clientX-R.x,z.clientY-R.y);I(y,N,V,R.from),g()};let K=()=>{R&&(R=null,C.classList.remove("hudDragging"),c[0].style.display="none",c[1].style.display="none",E())};C.onpointerup=K,C.onpointercancel=K,C.onwheel=z=>{z.preventDefault(),$(y);let N=h(y.def.key);N.s=ar(ir((N.s??1)+(z.deltaY<0?.05:-.05),.3,3)),b(),g(),E()}}let H=document.createElement("div");H.style.cssText="position:fixed;top:50%;left:50%;transform:translate(-50%, -50%)",n.append(H);let G=H.attachShadow({mode:"open"});G.innerHTML=Vh;let J=y=>G.querySelector(`#${y}`),B=(y,C)=>{if(y.setting)window.setSetting(y.setting,C);else if(y.clientSetting){let R=y.clientSetting;d.settings.data[R]=C,window.chrome.webview.postMessage(`set-config, ${R}, ${C}`);let K=`toggle${R.charAt(0).toUpperCase()}${R.slice(1)}`;typeof d.settings[K]=="function"&&d.settings[K](C);let z=document.querySelector(`#${R}`);z&&(z.checked=C)}g(),E()},re=J("hpList"),je="";for(let y of a){let{def:C}=y;if(C.group!==je){({group:je}=C);let V=document.createElement("div");V.className="hpGroup",V.textContent=je.toUpperCase(),re.append(V)}let R=document.createElement("label");R.className="hpRow";let K=document.createElement("span");if(K.className="hpName",K.textContent=C.name,C.note){let V=document.createElement("span");V.className="hpNote",V.textContent=` ${C.note}`,K.append(V)}let z=document.createElement("span");z.className="hpMoved";let N=document.createElement("span");if(N.className="hpReset",N.textContent="reset",N.title="Put it back where Krunker had it",N.onclick=V=>{V.preventDefault(),delete t[C.key],b(),g(),E()},R.append(K,z,N),C.setting||C.clientSetting){let V=document.createElement("input");V.type="checkbox",V.checked=u(C),V.onchange=()=>B(C,V.checked),R.append(V),k.set(C.key,V)}R.onpointerenter=()=>x(y,!0),R.onpointerleave=()=>x(y,!1),re.append(R),v.set(C.key,R)}let be=J("hpPanel"),Ee=J("hpHead"),j=null;Ee.onpointerdown=y=>{let C=H.getBoundingClientRect();H.style.cssText=`position:fixed;left:${Math.round(C.left)}px;top:${Math.round(C.top)}px`,Ee.setPointerCapture(y.pointerId),j={x:y.clientX-C.left,y:y.clientY-C.top},be.classList.add("hpBusy")},Ee.onpointermove=y=>{j&&(H.style.left=`${Math.round(y.clientX-j.x)}px`,H.style.top=`${Math.round(y.clientY-j.y)}px`)},Ee.onpointerup=()=>{j=null,be.classList.remove("hpBusy")};let X=new AbortController,Y=()=>{X.abort(),n.remove(),o.remove(),document.documentElement.classList.remove("kuteHudEdit"),s.save(t),s.closed()};J("hpDone").onclick=Y,window.addEventListener("resize",()=>{Y(),d.showNotification?.("The window changed size, open the HUD editor again",!1,5)},{signal:X.signal}),J("hpReset").onclick=()=>{for(let y of Object.keys(t))delete t[y];b(),g(),E()},document.addEventListener("keydown",y=>{if(y.key==="Escape"){y.preventDefault(),y.stopPropagation(),Y();return}if(!L||!y.key.startsWith("Arrow"))return;y.preventDefault(),y.stopPropagation();let C=y.shiftKey?10:1,R=(y.key==="ArrowRight"?C:0)-(y.key==="ArrowLeft"?C:0),K=(y.key==="ArrowDown"?C:0)-(y.key==="ArrowUp"?C:0);I(L,R,K,p(L.def.key)),g(),E()},{signal:X.signal,capture:!0}),g(),E()}var Jh,rr,ir,ar,ul=w(()=>{"use strict";Uh();Wh();F();or();nr();Co();Jh=6,rr=24,ir=(s,e,t)=>Math.min(t,Math.max(e,s)),ar=s=>Math.round(s*100)/100});var tm={};function Mk(){document.querySelector("#settSearch")&&(window.closWind?.(Qh),window.showWindow?.(Qh))}var lr,Zh,em,$k,Ck,Qh,pl=w(()=>{"use strict";F();Ae();lr=document.createElement("div");lr.className="settName";lr.style.cssText="display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px 12px;margin-top:10px";Zh={Keybinds:localStorage.getItem("kute_Keybinds")==="true"||localStorage.getItem("kute_Keybinds")===null,Sensitivity:localStorage.getItem("kute_Sensitivity")==="true"||localStorage.getItem("kute_Sensitivity")===null,Sound:localStorage.getItem("kute_Sound")==="true"||localStorage.getItem("kute_Sound")===null},em="";for(let s in Zh)em+=`Import ${s} +
      `,this.enemyOBJ=0,this.enemyTimeout=null,this.observer=null,this.pointCounter=null,this.gameUpdateListener=e=>{e.data==="game-updated"&&setTimeout(()=>{He()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.setupDisplay())},2e3)},u.settings.toggleHpEnemyCounter=e=>this.toggle(e),this.toggle(!0)}toggle(e){e?(window.chrome.webview.addEventListener("message",this.gameUpdateListener),He()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.setupDisplay())):(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.observer?.disconnect(),this.numberDisplay.remove())}processTeamScores=()=>{let{pointCounter:e}=this;if(e){for(let t of document.querySelectorAll("#tScoreC1, #tScoreC2"))if(t&&!t.className.includes("you")){let o=t.nextElementSibling;if(!o)continue;let n=Number.parseInt(o.textContent??"",10);if(Number.isNaN(n))continue;n>this.enemyOBJ&&(e.textContent=String((n-this.enemyOBJ)/10),this.enemyTimeout&&clearTimeout(this.enemyTimeout),this.enemyTimeout=setTimeout(()=>{e.textContent="0",this.enemyTimeout=null},1600)),this.enemyOBJ=n}}};setupDisplay(){let e=U(".pointVal",this.numberDisplay);this.pointCounter=e,U(".topRightCounters").append(this.numberDisplay),this.observer?.disconnect(),this.observer=new MutationObserver(this.processTeamScores),this.observer.observe(U("#teamScores"),{childList:!0,subtree:!0})}},fk=new sl});var al={};A(al,{default:()=>gk});var il,gk,ll=w(()=>{"use strict";D();il=class{constructor(){this.originalPlay=()=>{},this.observer=new MutationObserver(e=>this.parseChat(e)),u.settings.toggleHsSound=e=>this.toggle(e),this.setupSoundHook()}setupSoundHook(){window.SOUND?.play?(this.originalPlay=window.SOUND.play,this.toggle(!0)):setTimeout(()=>this.setupSoundHook(),100)}toggle(e){if(e){let t=document.querySelector("#chatList");t&&this.observer.observe(t,{childList:!0});let o=this;window.SOUND.play=function(n,r,i){if(!(n==="headshot_0"&&r===void 0))return o.originalPlay.call(window.SOUND,n,r,i)}}else window.SOUND.play=this.originalPlay,this.observer.disconnect()}parseChat(e){for(let t of e)if(t.type==="childList")for(let o of t.addedNodes){if(!(o instanceof HTMLElement)||o.tagName!=="DIV")continue;let n=o.querySelector("span.chatMsg");if(!n)continue;let r=n.querySelectorAll("span[style*='color:#'], span[style*='color: rgb']");if(r.length<=0)continue;let i=r[0],a=i.style.color.trim().toLowerCase(),l=i.textContent.trim();a==="rgb(255, 255, 255)"&&l==="You"&&n.querySelector("img")&&window.SOUND.play("headshot_0",1,!1)}}},gk=new il});var Gh,Uh=w(()=>{Gh=`html.kuteHudEdit #app,html.kuteHudEdit #fullMenHider{opacity:.1!important;pointer-events:none!important}html.kuteHudEdit #kuteHudEditor{position:fixed;inset:0;z-index:2147483000;background:#00000073;font-family:Consolas,monospace;color:#fff}.hudBox{position:absolute;box-sizing:border-box;border:1px solid rgba(53,224,232,.65);border-radius:4px;background:#35e0e81a;cursor:grab;touch-action:none}.hudBox:hover,.hudBox.hudActive{border-color:#35e0e8;background:#35e0e840}.hudBox.hudDragging{cursor:grabbing}.hudBox.hudEmpty{border-style:dashed}.hudBox.hudOff{border-color:#ffffff4d;background:#ffffff0f}.hudLabel{position:absolute;bottom:100%;left:-1px;padding:0 .35em;border-radius:3px 3px 0 0;background:#35e0e8d9;color:#05201f;font-size:11px;line-height:1.5;white-space:nowrap;pointer-events:none}.hudBox.hudLabelBelow .hudLabel{top:100%;bottom:auto;border-radius:0 0 3px 3px}.hudBox.hudOff .hudLabel{background:#fff6;color:#111}.hudGuide{position:absolute;background:#ffc147;pointer-events:none}.hudGuide.hudGuideV{top:0;width:1px;height:100%}.hudGuide.hudGuideH{left:0;width:100%;height:1px} +`});var Vh,Wh=w(()=>{Vh='
      HUD Layout
      Boxes are where things sit in the match.
      Drag to move, wheel to resize, arrows nudge
      Reset all
      Done
      '});var Yh={};A(Yh,{HUD_ELEMENTS:()=>Kt,gameSettingOn:()=>cl});function cl(s){try{return window.localStorage.getItem(`kro_setngss_${s}`)!=="false"}catch{return!0}}var Kt,sr=w(()=>{"use strict";Kt=[{key:"timer",name:"Timer",group:"Match",selector:"#timerHolder",size:[188,77]},{key:"matchInfo",name:"Mode and map",group:"Match",selector:"#matchInfo",size:[110,50]},{key:"teamScores",name:"Team scores",group:"Match",selector:"#teamScores",display:"block",size:[220,40],note:"team modes"},{key:"rounds",name:"Rounds",group:"Match",selector:"#roundsDisplay",display:"inline-block",size:[200,60],note:"round based"},{key:"zoneCount",name:"Zone count",group:"Match",selector:"#scoreZoneCount",display:"inline-block",size:[57,43],note:"hardpoint"},{key:"lives",name:"Lives",group:"Match",selector:"#livesCount",display:"inline-block",size:[57,43],note:"LMS, infected"},{key:"gameMessage",name:"Match message",group:"Match",selector:"#gameMessage",size:[400,30]},{key:"roundMessage",name:"Round message",group:"Match",selector:"#roundMessage",size:[400,30]},{key:"challenge",name:"Challenge banner",group:"Match",selector:"#chalDisplay",size:[300,30]},{key:"fps",name:"FPS",group:"Stats",selector:"#fpsDisplay",setting:"showFPS",display:"block",size:[72,23]},{key:"ping",name:"Ping",group:"Stats",selector:"#pingDisplay",setting:"showPing",display:"block",size:[72,23]},{key:"kills",name:"Kills",group:"Stats",selector:"#killCount",setting:"showKillC",display:"inline-block",size:[57,43]},{key:"deaths",name:"Deaths",group:"Stats",selector:"#deathCount",setting:"showDeaths",display:"inline-block",size:[57,43]},{key:"streak",name:"Streak",group:"Stats",selector:"#streakCount",setting:"showStreak",display:"inline-block",size:[57,43]},{key:"kd",name:"K/D",group:"Stats",selector:"#kdCount",setting:"showKD",display:"inline-block",size:[77,43]},{key:"score",name:"Score",group:"Stats",selector:"#scoreCount",setting:"showScore",display:"inline-block",size:[57,43]},{key:"speedRun",name:"Parkour timer",group:"Stats",selector:"#speedRunHolder",display:"block",size:[200,60],note:"parkour"},{key:"leaderboard",name:"Leaderboard",group:"Feed",selector:"#leaderboardHolder",size:[327,54]},{key:"centerLeader",name:"Center leaderboard",group:"Feed",selector:"#centerLeaderDisplay",display:"block",size:[300,120],note:"comp"},{key:"killFeed",name:"Kill feed",group:"Feed",selector:"#killFeed",setting:"showKills",display:"inline-grid",size:[240,120]},{key:"chat",name:"Chat",group:"Feed",selector:"#chatHolder",rule:"#uiBase.onGame #chatHolder",size:[386,248]},{key:"weapons",name:"Weapons",group:"Combat",selector:"#weapHolder",size:[127,203]},{key:"ammo",name:"Ammo",group:"Combat",selector:"#ammoHolder",size:[148,63]},{key:"perks",name:"Perks",group:"Combat",selector:"#perkHolder",size:[65,40]},{key:"krTag",name:"Deposit coins",group:"Combat",selector:"#krTagHolder",size:[71,65],note:"deposit"},{key:"giftTag",name:"Gift drops",group:"Combat",selector:"#giftTagHolder",size:[65,65]},{key:"powerUps",name:"Powerups",group:"Combat",selector:"#powerUpHolder",size:[65,65]},{key:"killStreak",name:"Kill streak",group:"Combat",selector:"#killStreakHolder",size:[65,65]},{key:"player",name:"Health and class",group:"Player",selector:"#bottomLeftPlayer",size:[376,90]},{key:"zPerks",name:"Class perks",group:"Player",selector:"#zPerksHolder",size:[65,40]},{key:"nuke",name:"Nuke counter",group:"Kute",selector:"#kuteNukeCounter",clientSetting:"nukeCounter",display:"flex",size:[90,56]},{key:"keystrokes",name:"Keystrokes",group:"Kute",selector:"#kuteKeystrokes",clientSetting:"keystrokes",display:"flex",size:[190,82]},{key:"spotify",name:"Spotify",group:"Kute",selector:"#kuteSpotifyOverlay",clientSetting:"spotifyOverlay",display:"flex",size:[320,82]},{key:"menuTimer",name:"Menu timer",group:"Kute",selector:"#uiBase.onMenu .spectateInfo",clientSetting:"menuTimer",size:[150,60],note:"menu",menu:(s,e)=>[s/2,e*.4-105]}]});var dl={};A(dl,{HudEditor:()=>nr,default:()=>Sk,implicitShift:()=>Hs});function Hs(s,e){if(s!=="spotify"||!u.settings.data.keystrokes)return 0;let t=e.spotify??{},o=e.keystrokes??{};if(t.x||t.y||o.x||o.y)return 0;let n=kk*(1+(o.s??1))/2,r=yk*(1-(t.s??1))/2;return Math.round(n+xk-r)}var wk,Xh,kk,yk,xk,nr,Sk,rr=w(()=>{"use strict";D();sr();Rt();zn();wk="kute_hudLayoutCSS",Xh="kute_hud_geometry",kk=190,yk=320,xk=12;nr=class{constructor(){this.style=null,this.open=!1,this.menuRects={},u.hudEditor={edit:()=>this.edit(),apply:()=>this.apply()},this.migrateNukeCounter(),this.apply(),Object.keys(this.measureMenuWidgets()).length===0&&setTimeout(()=>this.measureMenuWidgets(),3e3)}get layout(){return{...u.settings.data.hudLayout}}save(e){u.settings.data.hudLayout=e,window.chrome.webview.postMessage(`set-config-json hudLayout ${JSON.stringify(e)}`),this.apply()}migrateNukeCounter(){let e=u.settings.data.nukeCounterConfig;if(!e||e.x===void 0&&e.y===void 0&&e.scale===void 0)return;let{layout:t}=this;t.nuke??={x:Math.round(((e.x??94)-94)*100)/100,y:Math.round(((e.y??50)-50)*100)/100,s:e.scale??1};let o={goal:e.goal??0,background:e.background??!0};u.settings.data.nukeCounterConfig=o,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(o)}`),this.save(t)}apply(){let{layout:e}=this,t="";for(let o of Kt){let n=e[o.key]??{},r=(n.x??0)!==0||(n.y??0)!==0,i=(n.s??1)!==1,a=Hs(o.key,e);if(!r&&!i&&!a)continue;let l=[];r?l.push(`translate:${n.x??0}vw ${n.y??0}vh`):a&&l.push(`translate:${a}px 0`),i&&l.push(`scale:${n.s}`),t+=`${o.rule??o.selector}{${l.join(";")}}`}this.style||(this.style=document.createElement("style"),this.style.id=wk,document.head.append(this.style)),this.style.textContent=t}inMatch(){let e=document.querySelector("#inGameUI");return!!e&&window.getComputedStyle(e).display!=="none"}snapshot(){if(!this.inMatch())return null;let e=[];for(let i of Kt){if(i.menu)continue;let a=document.querySelector(i.selector);a&&e.push({def:i,element:a,visible:window.getComputedStyle(a).display!=="none"})}let t={vw:window.innerWidth,vh:window.innerHeight,factor:1,game:_t().id??"",rects:{}},o=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let{def:i,element:a,visible:l}of e){if(!l)continue;let c=a.getBoundingClientRect();c.width<=0||(t.rects[i.key]=[c.x,c.y,c.width,c.height,1],c.width>60&&a.offsetWidth>0&&(t.factor=c.width/a.offsetWidth))}let n=e.filter(({def:i})=>!t.rects[i.key]&&i.display);if(n.length>0){let i=document.createElement("style");i.textContent=n.map(({def:a})=>`${a.selector}{display:${a.display}!important}`).join(""),document.head.append(i);for(let{def:a,element:l}of n){let c=l.getBoundingClientRect();c.width>0&&(t.rects[a.key]=[c.x,c.y,c.width,c.height,0])}i.remove()}for(let{def:i,element:a}of e){if(t.rects[i.key])continue;let l=a.getBoundingClientRect();t.rects[i.key]=[l.x,l.y,l.width,l.height,0]}let r=this.menuRects[`${t.vw}x${t.vh}`]??{};for(let i of Kt){if(!i.menu)continue;if(r[i.key]){t.rects[i.key]=r[i.key];continue}let[a,l]=i.menu(t.vw,t.vh),[c,d]=i.size??[0,0];t.rects[i.key]=[a-c/2,l-d/2,c,d,1]}this.style&&(this.style.textContent=o);try{window.localStorage.setItem(Xh,JSON.stringify(t))}catch{}return t}geometry(){if(this.inMatch())return this.snapshot();let e=null;try{e=JSON.parse(window.localStorage.getItem(Xh)??"null")}catch{e=null}return!e?.rects||e.vw!==window.innerWidth||e.vh!==window.innerHeight?null:this.withMenuWidgets(e)}measureMenuWidgets(){let e={},t=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let o of Kt){if(!o.menu)continue;let n=document.querySelector(o.selector)?.getBoundingClientRect();n&&n.width>0&&(e[o.key]=[n.x,n.y,n.width,n.height,1])}return this.style&&(this.style.textContent=t),Object.keys(e).length>0&&(this.menuRects[`${window.innerWidth}x${window.innerHeight}`]=e),e}withMenuWidgets(e){return{...e,rects:{...e.rects,...this.measureMenuWidgets()}}}async edit(){if(this.open)return;if(this.inMatch()){this.show(this.snapshot());return}let e=this.geometry();if(e?.game&&e.game===_t().id){this.show(e);return}if(!await Ce({title:"Set up your HUD",paragraphs:["The editor places everything exactly where it sits in a match, so it needs a match to measure.","Kute opens a private one for you, nobody else can join it. If you are in a game right now, you leave it."],stay:"Not now",leave:"Open a private match"})||this.open)return;if(document.querySelector("#signedInHeaderBar")===null){u.showNotification?.("Log in first, a private match needs an account",!1,5);return}this.open=!0,u.showNotification?.("Opening a private match",!1,4);let o=await $s();if(!(o!==null&&await Cs(o))){this.open=!1,u.showNotification?.("Could not open a private match. Is a host slot free?",!1,6);return}await new Promise(r=>{setTimeout(r,1500)}),this.open=!1,this.show(this.snapshot()??this.geometry())}show(e){if(!e){u.showNotification?.("Could not measure the HUD, try again",!1,6);return}this.open=!0,Promise.resolve().then(()=>(pl(),ul)).then(t=>t.openEditor(this,e)).catch(t=>{this.open=!1,console.error("[kute] hud editor:",t)})}closed(){this.open=!1}},Sk=new nr});var ul={};A(ul,{openEditor:()=>Ek});async function Ek(s,e){document.pointerLockElement&&document.exitPointerLock(),await new Promise(y=>setTimeout(y,0));let{layout:t}=s,o=document.createElement("style");o.id="kute_hudEditorCSS",o.textContent=Gh,document.head.append(o),document.documentElement.classList.add("kuteHudEdit");let n=document.createElement("div");n.id="kuteHudEditor",document.body.append(n);let r=(y,C)=>{let[R,K,z,N,V]=C,de=!V||z<=0||N<=0,Z=z>window.innerWidth*.5,ge=N>window.innerHeight*.5,le=de?ir:z,Be=de?ir:N,Yt=R,xo=K;return!de&&Z&&(le=y.size?.[0]??ir,Yt=R+z/2-le/2),!de&&ge&&(Be=y.size?.[1]??ir,xo=K+N/2-Be/2),de&&R>window.innerWidth/2&&(Yt=R-le),de&&K>window.innerHeight/2&&(xo=K-Be),le=Math.min(le,window.innerWidth),Be=Math.min(Be,window.innerHeight),{x:ar(Yt,0,window.innerWidth-le),y:ar(xo,0,window.innerHeight-Be),w:le,h:Be,empty:de}},i=y=>{let C=y.filter(R=>!R.empty);for(let R of y)if(R.empty){for(let K=0;K<12;K++){let z=C.find(V=>R.xV.x&&R.yV.y);if(!z)break;R.y+R.h+2+R.h<=window.innerHeight?R.y=Math.min(z.y+z.h+2,window.innerHeight-R.h):R.x=ar(z.x+z.w+2,0,window.innerWidth-R.w)}C.push(R)}},a=[];for(let y of Kt){let C=e.rects[y.key];if(!C||y.clientSetting&&$o(u.settings.data,y.clientSetting))continue;let R=document.createElement("div");R.className="hudBox";let K=document.createElement("div");K.className="hudLabel",K.textContent=y.name,R.append(K),n.append(R),a.push({def:y,box:R,...r(y,C),drawn:null})}i(a);let l=!1;for(let y of a){y.w>60&&(l=!1);let C=l&&y.y+y.h+2060?!1:!l}let c=[];for(let y of["hudGuideV","hudGuideH"]){let C=document.createElement("div");C.className=`hudGuide ${y}`,C.style.display="none",n.append(C),c.push(C)}let d=y=>y.setting?cl(y.setting):y.clientSetting?u.settings.data[y.clientSetting]!==!1:!0,p=y=>t[y]??={},h=y=>{let C={...p(y)},R=Hs(y,t);return R&&(C.x=lr(R/window.innerWidth*100)),C},f=(y,C)=>[y/100*window.innerWidth*e.factor,C/100*window.innerHeight*e.factor],m=y=>{let C=t[y.def.key]??{},[R,K]=f(C.x??0,C.y??0),z=R+Hs(y.def.key,t)*e.factor,N=C.s??1,V=y.w*N,de=y.h*N,Z=y.x+y.w/2+z-V/2,ge=y.y+y.h/2+K-de/2;y.box.style.left=`${Math.round(Z)}px`,y.box.style.top=`${Math.round(ge)}px`,y.box.style.width=`${Math.round(V)}px`,y.box.style.height=`${Math.round(de)}px`,y.box.classList.toggle("hudOff",!d(y.def)),y.box.classList.toggle("hudEmpty",y.empty),y.drawn=new DOMRect(Z,ge,V,de)},g=()=>{for(let y of a)m(y)},b=()=>{u.settings.data.hudLayout=t,s.apply()},v=new Map,k=new Map,E=()=>{for(let y of a){let C=v.get(y.def.key);if(!C)continue;let R=t[y.def.key],K=R?.s??1,z=!!R&&((R.x??0)!==0||(R.y??0)!==0||K!==1);C.classList.toggle("hpChanged",z);let N=C.querySelector(".hpMoved");N&&(N.textContent=K===1?"":`${Math.round(K*100)}%`);let V=k.get(y.def.key);V&&(V.checked=d(y.def))}},L=null,x=(y,C)=>y.box.classList.toggle("hudActive",C||L===y),$=y=>{L=y;for(let C of a)C.box.classList.toggle("hudActive",C===y)},I=(y,C,R,K)=>{let z=p(y.def.key),N=e.factor||1;z.x=lr((K.x??0)+C/(window.innerWidth*N)*100),z.y=lr((K.y??0)+R/(window.innerHeight*N)*100),b()},_=(y,C,R,K)=>{let z=[0,window.innerWidth/2,window.innerWidth],N=[0,window.innerHeight/2,window.innerHeight];for(let Z of a)Z===y||!Z.drawn||(z.push(Z.drawn.left,Z.drawn.left+Z.drawn.width/2,Z.drawn.right),N.push(Z.drawn.top,Z.drawn.top+Z.drawn.height/2,Z.drawn.bottom));let V=null,de=null;for(let Z of[C.left+R,C.left+R+C.width/2,C.right+R])for(let ge of z){let le=ge-Z;Math.abs(le)<=Jh&&(V===null||Math.abs(le){z.preventDefault(),$(y),C.setPointerCapture(z.pointerId),C.classList.add("hudDragging"),R={x:z.clientX,y:z.clientY,rect:y.drawn??C.getBoundingClientRect(),from:h(y.def.key)}},C.onpointermove=z=>{if(!R||!C.hasPointerCapture(z.pointerId))return;let[N,V]=_(y,R.rect,z.clientX-R.x,z.clientY-R.y);I(y,N,V,R.from),g()};let K=()=>{R&&(R=null,C.classList.remove("hudDragging"),c[0].style.display="none",c[1].style.display="none",E())};C.onpointerup=K,C.onpointercancel=K,C.onwheel=z=>{z.preventDefault(),$(y);let N=p(y.def.key);N.s=lr(ar((N.s??1)+(z.deltaY<0?.05:-.05),.3,3)),b(),g(),E()}}let H=document.createElement("div");H.style.cssText="position:fixed;top:50%;left:50%;transform:translate(-50%, -50%)",n.append(H);let G=H.attachShadow({mode:"open"});G.innerHTML=Vh;let J=y=>G.querySelector(`#${y}`),B=(y,C)=>{if(y.setting)window.setSetting(y.setting,C);else if(y.clientSetting){let R=y.clientSetting;u.settings.data[R]=C,window.chrome.webview.postMessage(`set-config, ${R}, ${C}`);let K=`toggle${R.charAt(0).toUpperCase()}${R.slice(1)}`;typeof u.settings[K]=="function"&&u.settings[K](C);let z=document.querySelector(`#${R}`);z&&(z.checked=C)}g(),E()},re=J("hpList"),je="";for(let y of a){let{def:C}=y;if(C.group!==je){({group:je}=C);let V=document.createElement("div");V.className="hpGroup",V.textContent=je.toUpperCase(),re.append(V)}let R=document.createElement("label");R.className="hpRow";let K=document.createElement("span");if(K.className="hpName",K.textContent=C.name,C.note){let V=document.createElement("span");V.className="hpNote",V.textContent=` ${C.note}`,K.append(V)}let z=document.createElement("span");z.className="hpMoved";let N=document.createElement("span");if(N.className="hpReset",N.textContent="reset",N.title="Put it back where Krunker had it",N.onclick=V=>{V.preventDefault(),delete t[C.key],b(),g(),E()},R.append(K,z,N),C.setting||C.clientSetting){let V=document.createElement("input");V.type="checkbox",V.checked=d(C),V.onchange=()=>B(C,V.checked),R.append(V),k.set(C.key,V)}R.onpointerenter=()=>x(y,!0),R.onpointerleave=()=>x(y,!1),re.append(R),v.set(C.key,R)}let be=J("hpPanel"),Ee=J("hpHead"),j=null;Ee.onpointerdown=y=>{let C=H.getBoundingClientRect();H.style.cssText=`position:fixed;left:${Math.round(C.left)}px;top:${Math.round(C.top)}px`,Ee.setPointerCapture(y.pointerId),j={x:y.clientX-C.left,y:y.clientY-C.top},be.classList.add("hpBusy")},Ee.onpointermove=y=>{j&&(H.style.left=`${Math.round(y.clientX-j.x)}px`,H.style.top=`${Math.round(y.clientY-j.y)}px`)},Ee.onpointerup=()=>{j=null,be.classList.remove("hpBusy")};let X=new AbortController,Y=()=>{X.abort(),n.remove(),o.remove(),document.documentElement.classList.remove("kuteHudEdit"),s.save(t),s.closed()};J("hpDone").onclick=Y,window.addEventListener("resize",()=>{Y(),u.showNotification?.("The window changed size, open the HUD editor again",!1,5)},{signal:X.signal}),J("hpReset").onclick=()=>{for(let y of Object.keys(t))delete t[y];b(),g(),E()},document.addEventListener("keydown",y=>{if(y.key==="Escape"){y.preventDefault(),y.stopPropagation(),Y();return}if(!L||!y.key.startsWith("Arrow"))return;y.preventDefault(),y.stopPropagation();let C=y.shiftKey?10:1,R=(y.key==="ArrowRight"?C:0)-(y.key==="ArrowLeft"?C:0),K=(y.key==="ArrowDown"?C:0)-(y.key==="ArrowUp"?C:0);I(L,R,K,h(L.def.key)),g(),E()},{signal:X.signal,capture:!0}),g(),E()}var Jh,ir,ar,lr,pl=w(()=>{"use strict";Uh();Wh();D();sr();rr();Co();Jh=6,ir=24,ar=(s,e,t)=>Math.min(t,Math.max(e,s)),lr=s=>Math.round(s*100)/100});var tm={};function Mk(){document.querySelector("#settSearch")&&(window.closWind?.(Qh),window.showWindow?.(Qh))}var cr,Zh,em,$k,Ck,Qh,hl=w(()=>{"use strict";D();Ae();cr=document.createElement("div");cr.className="settName";cr.style.cssText="display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px 12px;margin-top:10px";Zh={Keybinds:localStorage.getItem("kute_Keybinds")==="true"||localStorage.getItem("kute_Keybinds")===null,Sensitivity:localStorage.getItem("kute_Sensitivity")==="true"||localStorage.getItem("kute_Sensitivity")===null,Sound:localStorage.getItem("kute_Sound")==="true"||localStorage.getItem("kute_Sound")===null},em="";for(let s in Zh)em+=`Import ${s} `;lr.innerHTML=em;$k=window.importSettingsPopup,Ck=window.importSettings,Qh=1;window.importSettingsPopup=()=>{$k(),queueMicrotask(()=>{U("#importTxt").after(lr)})};window.importSettings=()=>{let s=U("#importTxt"),e=JSON.parse(s.value);localStorage.getItem("kute_Sensitivity")==="false"&&(e.sensitivityX=localStorage.getItem("kro_setngss_sensitivityX"),e.sensitivityY=localStorage.getItem("kro_setngss_sensitivityY"),e.aimSensitivityX=localStorage.getItem("kro_setngss_aimSensitivityX"),e.aimSensitivityY=localStorage.getItem("kro_setngss_aimSensitivityY")),localStorage.getItem("kute_Sound")==="false"&&(e.sound=localStorage.getItem("kro_setngss_sound"),e.ambientVolume=localStorage.getItem("kro_setngss_ambientVolume"),e.dialogueVolume=localStorage.getItem("kro_setngss_dialogueVolume"),e.micVolume=localStorage.getItem("kro_setngss_micVolume"),e.voiceVolume=localStorage.getItem("kro_setngss_voiceVolume"),e.voiceDistance=localStorage.getItem("kro_setngss_voiceDistance"),e.gunsVolume=localStorage.getItem("kro_setngss_gunsVolume"),e.playerVolume=localStorage.getItem("kro_setngss_playerVolume"),e.skinVolume=localStorage.getItem("kro_setngss_skinVolume"),e.uiVolume=localStorage.getItem("kro_setngss_uiVolume"),e.assetVolume=localStorage.getItem("kro_setngss_assetVolume")),localStorage.getItem("kute_Keybinds")==="false"&&delete e.controls,s.value=JSON.stringify(e),Ck(),d.bindShoot(),Mk(),d.kuteIcons?.refresh(),d.autoDetect?.dropUndo(),d.autoDetect?.afterImport()}});var ml={};A(ml,{default:()=>Rk});function Ak(s){let e=s.nextElementSibling;return e instanceof HTMLElement&&e.matches(".market-grid-sentinel")?e:null}async function om(s){for(let e=0;e{"use strict";Tk=".view-stack-overlay, .modal-overlay";Lk=()=>new Promise(s=>{requestAnimationFrame(()=>s())});hl=class{constructor(){this.watched=new WeakSet,this.popupClickAt=-1/0,this.lastTop=0,this.lastHeight=0,this.restore=null,this.onWheel=()=>this.finish(!1),document.addEventListener("scroll",e=>this.onScroll(e),{capture:!0,passive:!0}),document.addEventListener("click",e=>{e.target instanceof Element&&e.target.closest(Tk)&&(this.popupClickAt=performance.now())},{capture:!0,passive:!0})}onScroll(e){let t=e.target;if(!(t instanceof HTMLElement))return;if(this.restore){t===this.restore.scroller&&t.scrollTop!==this.restore.top&&(t.scrollTop=this.restore.top);return}let o=t.querySelector(":scope > .market-grid");o instanceof HTMLElement&&(this.watch(t,o),this.lastTop=t.scrollTop,this.lastHeight=o.offsetHeight)}watch(e,t){if(this.watched.has(t))return;this.watched.add(t);let o=t.children.length;new MutationObserver(n=>{let r=n.reduce((l,c)=>l+c.removedNodes.length,0),i=o;if(o=t.children.length,this.restore?.grid===t){o>i&&this.pageArrived();return}i>0&&r>=i&&this.lastTop>e.clientHeight&&performance.now()-this.popupClickAt<5e3&&this.start(e,t,i,n.flatMap(l=>[...l.removedNodes]))}).observe(t,{childList:!0})}start(e,t,o,n){let r=document.createElement("div");r.className=t.className,r.style.cssText=t.style.cssText,r.append(...n),this.restore={scroller:e,grid:t,sentinels:new Set,top:this.lastTop,count:o,until:performance.now()+1e4,pageTimer:0,picture:r},t.style.minHeight=`${this.lastHeight}px`,t.style.alignContent="start",Object.assign(r.style,{position:"absolute",top:`${t.offsetTop}px`,left:`${t.offsetLeft}px`,width:`${t.offsetWidth}px`,margin:"0",zIndex:"1",pointerEvents:"none"}),e.append(r),e.style.overflowAnchor="none",e.scrollTop=this.lastTop,e.addEventListener("wheel",this.onWheel,{passive:!0}),this.waitForPage(),this.blink(this.restore).catch(i=>console.error("[kute] inventory scroll:",i))}pageArrived(){let{restore:e}=this;e&&(e.grid.children.length>=e.count-1||performance.now()>e.until?this.finish(!0):this.waitForPage())}waitForPage(){let{restore:e}=this;e&&(clearTimeout(e.pageTimer),e.pageTimer=window.setTimeout(()=>this.finish(!0),1500))}async blink(e){for(;this.restore===e;){let t=Ak(e.grid);t&&(e.sentinels.add(t),t.style.position="sticky",t.style.bottom="0",t.style.display="none",await om(2),t.style.display=""),await om(2)}}finish(e){let{restore:t}=this;if(t){this.restore=null,clearTimeout(t.pageTimer),t.scroller.removeEventListener("wheel",this.onWheel),t.picture.remove(),t.grid.style.minHeight="",t.grid.style.alignContent="",t.scroller.style.overflowAnchor="";for(let o of t.sentinels)o.style.position="",o.style.bottom="",o.style.display="";e&&(t.scroller.scrollTop=t.top),this.lastTop=t.scroller.scrollTop,this.lastHeight=t.grid.offsetHeight}}},Rk=new hl});var nm,sm=w(()=>{nm=`#kuteKeystrokes{position:absolute;left:463px;bottom:23px;z-index:10;display:flex;align-items:center;gap:12px;box-sizing:border-box;width:190px;height:82px;padding:5px 10px;border:1px solid rgba(53,224,232,.7);border-radius:8px;background:#0a1416e0;box-shadow:0 4px 18px #00000059;color:#cfeff1;font-family:Arial,sans-serif;font-weight:700;pointer-events:none}#kuteKeystrokesKeys{display:grid;grid-template-columns:repeat(4,24px);grid-template-rows:repeat(3,20px);gap:4px}.kuteKey{display:flex;justify-content:center;align-items:center;overflow:hidden;border:1px solid rgba(53,224,232,.35);border-radius:4px;background:#35e0e814;font-size:10px;white-space:nowrap}.kuteKey.on,#kuteMouse>.on,#kuteWheel>.on{border-color:#35e0e8;background:#35e0e8;color:#0a1416;box-shadow:0 0 8px #35e0e8cc}#kuteKeyMelee{grid-area:1 / 1}#kuteKeyForward{grid-area:1 / 2}#kuteKeySwap{grid-area:1 / 3}#kuteKeyReload{grid-area:1 / 4}#kuteKeyLeft{grid-area:2 / 1}#kuteKeyBack{grid-area:2 / 2}#kuteKeyRight{grid-area:2 / 3}#kuteKeyCrouch{grid-area:3 / 1 / 4 / 3}#kuteKeyJump{grid-area:3 / 3 / 4 / 5}#kuteMouseBox{position:relative;padding:5px}.kuteMove{--arc: rgba(53, 224, 232, .14);position:absolute;inset:0;box-sizing:border-box;border:2px solid transparent;border-radius:24px 24px 19px 19px}.kuteMove.on{--arc: rgba(53, 224, 232, .6)}.kuteMove.fast{--arc: #35e0e8}#kuteMoveLeft{border-left-color:var(--arc)}#kuteMoveRight{border-right-color:var(--arc)}#kuteMoveUp{border-top-color:var(--arc)}#kuteMoveDown{border-bottom-color:var(--arc)}#kuteMouse{position:relative;width:38px;height:58px;box-sizing:border-box;border:1px solid rgba(53,224,232,.35);border-radius:19px 19px 14px 14px;overflow:hidden}#kuteMouseLeft,#kuteMouseRight{position:absolute;top:0;width:50%;height:45%;border-bottom:1px solid rgba(53,224,232,.35);box-sizing:border-box;background:#35e0e814}#kuteMouseLeft{left:0}#kuteMouseRight{right:0}#kuteMouseSplit{position:absolute;top:0;left:calc(50% - .5px);width:1px;height:45%;background:#35e0e859}#kuteWheel{position:absolute;top:6px;left:50%;z-index:1;display:flex;flex-direction:column;box-sizing:border-box;width:10px;height:18px;margin-left:-5px;overflow:hidden;border:1px solid rgba(53,224,232,.5);border-radius:5px;background:#0a1416}#kuteWheel.on{border-color:#35e0e8;background:#35e0e8;box-shadow:0 0 8px #35e0e8cc}#kuteWheelUp,#kuteWheelDown{flex:1 1 0}#kuteWheelUp{border-bottom:1px solid rgba(53,224,232,.35)} -`});var im,rm=w(()=>{im='
      '});var wl={};A(wl,{default:()=>Kk});function pm(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`N${s-96}`:s>=112&&s<=123?`F${s-111}`:Dk[s]??"?"}function qk(s,e){let t=[],o=[[`cont_${s}_alt`,-1],[`cont_${s}`,e]];for(let[n,r]of o){let i=null;try{i=window.localStorage.getItem(n)}catch{i=null}let a=i===null?r:Number(i);a>0&&a<1e4&&t.push(a)}return t}var Nk,_k,am,lm,gl,Bk,zk,bl,cm,dm,Hk,um,Ok,Fk,Dk,vl,Kk,kl=w(()=>{"use strict";sm();rm();F();Nk=131,_k=120,am=32,lm=80,gl=.02,Bk=.35,zk=20,bl=80,cm=3,dm=3e3,Hk=3,um="kute_keystrokes_speed",Ok=120,Fk=[["kuteKeyForward","0",87],["kuteKeyBack","1",83],["kuteKeyLeft","2",65],["kuteKeyRight","3",68],["kuteKeyJump","jumpKey",32],["kuteKeyCrouch","crouchKey",16],["kuteKeyReload","reloadKey",82],["kuteKeyMelee","meleeKey",81],["kuteKeySwap","swapKey",69]],Dk={8:"BKSP",9:"TAB",13:"ENT",16:"SHIFT",17:"CTRL",18:"ALT",20:"CAPS",32:"SPACE",37:"\u2190",38:"\u2191",39:"\u2192",40:"\u2193",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"};vl=class{constructor(){this.widget=null,this.byCode=new Map,this.wheelTimers=new Map,this.rampWheelAt=-1/0,this.spaceDownAt=-1/0,this.spaceIgnored=!1,this.arcs=[],this.moveX=0,this.moveY=0,this.lastMove=-1/0,this.moveTimer=0,this.typical=Hk,this.typicalMs=0,this.fastUntil=[0,0,0,0],this.onKeyDown=e=>this.key(e.keyCode,!0),this.onKeyUp=e=>this.key(e.keyCode,!1),this.onMouseDown=e=>this.button(e.button,!0),this.onMouseUp=e=>this.button(e.button,!1),this.onWheel=e=>this.wheel(e.deltaY<0),this.onMouseMove=e=>this.move(e),this.onMoveIdle=()=>{this.moveTimer=0;let e=performance.now()-this.lastMove;if(e{let{data:t}=e;typeof t?.wheel=="number"&&t.wheel!==0?this.wheel(t.wheel>0):typeof t?.rampWheel=="number"&&t.rampWheel!==0&&this.rampWheel(t.rampWheel>0)},this.releaseAll=()=>{for(let e of this.widget?.querySelectorAll(".on")??[])e.classList.remove("on");this.moveX=0,this.moveY=0,this.fastUntil.fill(0),this.drawMove()},this.onPointerLockChange=()=>{if(document.pointerLockElement){this.readBinds();return}this.releaseAll();try{window.localStorage.setItem(um,this.typical.toFixed(3))}catch{}},d.settings.toggleKeystrokes=e=>this.toggle(e),this.toggle(!!d.settings.data.keystrokes)}toggle(e){if(queueMicrotask(()=>d.hudEditor?.apply()),!e){this.remove();return}if(this.widget)return;let t=document.createElement("style");t.id="kuteKeystrokesCSS",t.textContent=nm,document.head.append(t),this.widget=document.createElement("div"),this.widget.id="kuteKeystrokes",this.widget.innerHTML=im,(document.querySelector("#uiBase")??document.body).append(this.widget),this.readBinds(),this.loadTypical();let{widget:o}=this,n=[["kuteMoveLeft",-1,0],["kuteMoveRight",1,0],["kuteMoveUp",0,-1],["kuteMoveDown",0,1]];this.arcs=n.map(([r,i,a])=>[o.querySelector(`#${r}`),i,a]),window.addEventListener("keydown",this.onKeyDown,!0),window.addEventListener("keyup",this.onKeyUp,!0),window.addEventListener("mousedown",this.onMouseDown,!0),window.addEventListener("mouseup",this.onMouseUp,!0),window.addEventListener("mousemove",this.onMouseMove,{capture:!0,passive:!0}),window.addEventListener("wheel",this.onWheel,{capture:!0,passive:!0}),window.addEventListener("blur",this.releaseAll),document.addEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.addEventListener("message",this.onHostMessage)}remove(){window.removeEventListener("keydown",this.onKeyDown,!0),window.removeEventListener("keyup",this.onKeyUp,!0),window.removeEventListener("mousedown",this.onMouseDown,!0),window.removeEventListener("mouseup",this.onMouseUp,!0),window.removeEventListener("mousemove",this.onMouseMove,!0),window.removeEventListener("wheel",this.onWheel,!0),window.removeEventListener("blur",this.releaseAll),document.removeEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.removeEventListener("message",this.onHostMessage);for(let e of this.wheelTimers.values())clearTimeout(e);this.wheelTimers.clear(),clearTimeout(this.moveTimer),this.moveTimer=0,this.arcs=[],this.widget?.remove(),this.widget=null,this.byCode.clear(),document.querySelector("#kuteKeystrokesCSS")?.remove()}readBinds(){if(this.widget){this.byCode.clear();for(let[e,t,o]of Fk){let n=this.widget.querySelector(`#${e}`);if(!n)continue;let r=qk(t,o);n.textContent=r.length>0?pm(r[0]):"",n.title=r.map(pm).join(" / ");for(let i of r){let a=this.byCode.get(i)??[];a.push(n),this.byCode.set(i,a)}}}}key(e,t){if(e===Nk){this.button(0,t);return}if(e===am){t&&(this.spaceDownAt=performance.now(),this.spaceIgnored=this.spaceDownAt-this.rampWheelAt=100,n=Math.min(t-this.lastMove,100);if(this.lastMove=t,!(n>0))return;let r=Math.exp(-n/zk);this.moveX=this.moveX*r+e.movementX/n*(1-r),this.moveY=this.moveY*r+e.movementY/n*(1-r);let i=Math.hypot(this.moveX,this.moveY);!o&&i>gl&&(this.typicalMs=Math.min(this.typicalMs+n,dm),this.typical+=(Math.min(i,this.typical*cm)-this.typical)*(n/this.typicalMs)),this.drawMove(t),this.moveTimer||(this.moveTimer=window.setTimeout(this.onMoveIdle,bl))}loadTypical(){let e=NaN;try{e=Number(window.localStorage.getItem(um))}catch{e=NaN}e>0&&(this.typical=e,this.typicalMs=dm)}drawMove(e=performance.now()){let t=Math.hypot(this.moveX,this.moveY),o=Math.max(this.typical,gl)*cm;this.arcs.forEach(([n,r,i],a)=>{let l=this.moveX*r+this.moveY*i;l>o&&(this.fastUntil[a]=e+Ok);let c="kuteMove";this.fastUntil[a]>e?c="kuteMove on fast":t>gl&&l>=t*Bk&&(c="kuteMove on"),n.className!==c&&(n.className=c)})}rampWheel(e){if(this.rampWheelAt=performance.now(),this.rampWheelAt-this.spaceDownAt{this.widget?.querySelector(`#${t}`)?.classList.remove("on"),this.wheelTimers.delete(t)},_k))}},Kk=new vl});var mm,hm=w(()=>{mm='

      Kute Icons

      Tick all
      Done
      '});var Sl={};A(Sl,{default:()=>Gk});function km(){let s=d.settings.data[yl];return s&&typeof s=="object"?s:{}}function fm(){return d.hostFeatures?.includes("kute-icons")??!1}function gm(s){return km()[s.id]!==!1}function bm(s){return s.hiddenBy.filter(e=>{let t=null;try{t=localStorage.getItem(`kro_setngss_${e.id}`)}catch{return!1}return t===null?!1:e.kind==="checkbox"?t==="false":Number(t)===0})}function vm(s){return s.kind==="checkbox"?`${s.name} is off`:`${s.name} is 0`}async function wm(s){await Ce({title:"Reload the game?",paragraphs:[s,"The game keeps the images it already loaded, so this shows after a reload. Nothing else changes, and you can do it later."],stay:"Later",leave:"Reload now"})&&window.chrome.webview.postMessage("hard-reload")}var Uk,yl,xl,Gk,El=w(()=>{"use strict";hm();F();Rt();gn();Uk="https://krunker.io/kute-icons/",yl="kuteIconSlots";xl=class{constructor(){this.asking=!1,this.watched=new WeakSet,d.kuteIcons={customize:()=>this.customize(),refresh:()=>this.refresh()},d.settings.toggleKuteIcons=e=>this.onToggle(!!e),this.refresh(),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&setTimeout(()=>this.refresh(),1500)})}refresh(){for(let e of Mo){let t=e.element?document.getElementById(e.element):null;!t||this.watched.has(t)||(this.watched.add(t),new MutationObserver(()=>Qt()).observe(t,{attributes:!0,attributeFilter:["src"]}))}Qt()}async onToggle(e){if(Qt(),!fm()){e&&d.showNotification("Kute icons need a newer Kute, update the client",!1,4);return}e&&await this.warnHidden(Mo.filter(gm)),await wm(e?"Kute icons are on.":"Kute icons are off, your own icons are back.")}async warnHidden(e){let t=new Map,o=[];for(let r of e){let i=bm(r);if(i.length!==0){for(let a of i)t.set(a.id,a);o.push(`${r.name}: ${i.map(a=>vm(a)).join(", ")}`)}}if(o.length===0||(this.asking=!0,!await Ce({title:"Hidden by your Krunker settings",paragraphs:[o.length===1?"This Kute icon will not show:":"These Kute icons will not show:",...o,"Switch those Krunker settings on for you?"],stay:"Leave them",leave:"Switch on"}).finally(()=>{this.asking=!1})))return!1;for(let r of t.values())window.setSetting(r.id,r.kind==="checkbox"?!0:"1");return d.showNotification("Switched on in your Krunker settings",!1,3),!0}customize(){let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=mm;let n=m=>o.querySelector(`#${m}`),r=fm(),i=d.settings.data.kuteIcons===!0,a="Ticked icons show Kute's version. Your Krunker settings stay as they are.";i||(a="Use Kute Icons is off, so none of these show yet."),r||(a="This needs a newer Kute. Update the client to use Kute icons."),n("kiHint").textContent=a;let l=!1,c=[],u=()=>{for(let{slot:m,box:g,note:b}of c){let v=g.checked?bm(m):[];if(b.replaceChildren(),v.length===0)continue;b.append(`Hidden: ${v.map(E=>vm(E)).join(", ")} `);let k=document.createElement("span");k.className="kiShow",k.textContent="Show it",k.onclick=async E=>{E.preventDefault(),E.stopPropagation(),await this.warnHidden([m]),u()},b.append(k)}},h=(m,g)=>{l=!0;let b={...km(),[m.id]:g};d.settings.data[yl]=b,window.chrome.webview.postMessage(`set-config-json ${yl} ${JSON.stringify(b)}`)};for(let m of Mo){let g=document.createElement("label");g.className="kiRow";let b=document.createElement("img");b.src=Uk+m.file,b.alt="";let v=document.createElement("span");v.textContent=m.name;let k=document.createElement("span");k.className="kiHidden",v.append(k);let E=document.createElement("input");E.type="checkbox",E.checked=gm(m),E.onchange=async()=>{h(m,E.checked),E.checked&&await this.warnHidden([m]),u()},g.append(b,v,E),n("kiRows").append(g),c.push({slot:m,box:E,note:k})}u(),n("kiAll").onclick=async()=>{let m=c.filter(({box:g})=>!g.checked);for(let{slot:g,box:b}of m)b.checked=!0,h(g,!0);await this.warnHidden(m.map(({slot:g})=>g)),u()};let p=new AbortController,f=()=>{p.abort(),e.remove(),l&&r&&d.settings.data.kuteIcons===!0&&wm("Your Kute icons changed.")};n("kiDone").onclick=f,e.addEventListener("mousedown",m=>{m.target===e&&f()}),document.addEventListener("keydown",m=>{m.key!=="Escape"||this.asking||(m.stopPropagation(),f())},{signal:p.signal,capture:!0}),document.body.append(e)}},Gk=new xl});var Ml={};A(Ml,{default:()=>Vk});var ym,xm,$l,Sm,Wk,Cl,Vk,Tl=w(()=>{"use strict";F();Rt();ym="kute_update_asked",xm="kute_update_ready",$l=[.25,.5,.75],Sm=()=>new Promise(s=>{let e=()=>{document.pointerLockElement?setTimeout(e,2e3):s()};e()}),Wk=s=>`${Math.round(s/1048576)} MB`,Cl=class{constructor(){this.step=0,this.busy=!1,!(d.platform!=="linux"||!d.hostFeatures?.includes("appimage-update"))&&(window.chrome.webview.addEventListener("message",e=>{let t=e.data?.update;t&&typeof t=="object"&&this.receive(t).catch(()=>{})}),window.chrome.webview.postMessage("update-state"))}async receive(e){e.stage==="offer"?await this.offer(e):e.stage==="downloading"?this.progress(e):e.stage==="ready"?await this.ready(e):e.stage==="failed"&&d.showNotification(`The update to Kute ${e.version} failed: ${e.error??"unknown error"}`,!1,8)}async offer(e){if(this.busy||sessionStorage.getItem(ym)===e.version)return;this.busy=!0,await Sm(),sessionStorage.setItem(ym,e.version);let t=e.install===!0,o=await Ce({title:`Kute ${e.version} is out`,paragraphs:t?[`You have ${e.current}. The update${e.size?` (${Wk(e.size)})`:""} downloads while you play.`,"It replaces your Kute AppImage and starts the next time you open Kute."]:[`You have ${e.current}.`,"This copy of Kute does not run as an AppImage and cannot update itself. The download page has the new version."],stay:"Later",leave:t?"Update":"Open download page"});this.busy=!1,o&&(window.chrome.webview.postMessage(t?"update-install":"update-page"),t&&d.showNotification(`Downloading Kute ${e.version}`,!1,4))}progress(e){if(!e.total||!e.done)return;let t=e.done/e.total;for(;this.step<$l.length&&t>=$l[this.step];)d.showNotification(`Downloading Kute ${e.version}: ${Math.round($l[this.step]*100)} %`,!1,3),this.step++}async ready(e){if(sessionStorage.getItem(xm)===e.version)return;await Sm(),sessionStorage.setItem(xm,e.version),await Ce({title:`Kute ${e.version} is ready`,paragraphs:["It starts the next time you open Kute. Restart now to use it right away."],stay:"Later",leave:"Restart now"})&&window.chrome.webview.postMessage("update-restart")}},Vk=new Cl});var $m,Em=w(()=>{$m=`

      CSS Manager

      visibilityHold to peek
      folder_openShow folder
      ×
      One file is active at a time and loads after all of Krunker's styles, so a rule with the same selector wins. Krunker's inline styles and its own !important rules still need !important here. Files live in Documents\\kute\\css.
      Your CSS
      Click a file to edit it, the circle makes it active
      addNew
      content_pastePaste
      upload_fileImport
      `});var Mm,Cm=w(()=>{Mm=`:host{--accent: #35e0e8;--bg: #1e1e1e;--panel: #252525;--line: #333;--muted: #999;--ok: #5ce05a;--warn: #ffb74d;--bad: #eb5656}.managerPopup{position:relative;box-sizing:border-box;display:flex;flex-direction:column;width:min(1020px,94vw);height:min(760px,90vh);background:var(--bg);color:#fff;border-radius:14px;box-shadow:0 8px 48px #000c;font-family:Consolas,monospace;font-size:14px;overflow:hidden}.managerHeader{display:flex;align-items:center;gap:.6em;padding:1em 1.2em .8em 1.4em;border-bottom:1px solid var(--line)}.managerTitle{margin:0 auto 0 0;font-size:1.6em;letter-spacing:1px;color:var(--accent)}.managerClose{margin-left:.4em;font-size:1.6em;line-height:1;color:var(--muted);cursor:pointer}.managerClose:hover{color:#fff}.managerHint{padding:.7em 1.4em;color:var(--muted);line-height:1.5;border-bottom:1px solid var(--line)}.managerHint code{padding:.05em .35em;border-radius:4px;background:#181818;color:var(--accent)}.managerBody{flex:1 1 auto;min-height:0;overflow-y:auto;padding:1em 1.4em}.managerError,.managerNotice{margin:.8em 1.4em 0;padding:.6em .9em;border-radius:8px;white-space:pre-wrap;line-height:1.5}.managerError{background:#4a1d1d;color:#ffb4b4}.managerNotice{display:flex;align-items:center;gap:1em;background:#173a52;color:#cfe8ff}.managerNotice span{flex:1}[hidden]{display:none!important}.btn{display:inline-flex;align-items:center;gap:.4em;padding:.45em .9em;border-radius:7px;background:#2d2d2d;color:#fff;cursor:pointer;user-select:none;white-space:nowrap}.btn:hover{background:#383838;color:var(--accent)}.btn.primary{background:#1b5e63}.btn.primary:hover{background:#23777d;color:#fff}.btn.small{padding:.25em .55em;font-size:.92em}.iconBtn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:var(--muted);cursor:pointer;user-select:none}.iconBtn:hover{background:#333;color:#fff}.iconBtn.danger:hover{color:var(--bad)}.mi{font-family:Material Icons;font-weight:400;font-style:normal;font-size:18px;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;font-feature-settings:"liga"}.group{margin-bottom:1.2em;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.groupHead{display:flex;align-items:center;gap:.7em;padding:.7em .9em;border-bottom:1px solid var(--line)}.groupTitle{font-size:1.15em;color:#fff}.groupRuns{margin-right:auto;color:var(--muted);font-size:.9em}.empty{padding:.9em;color:var(--muted)}.dropZone{margin:.7em;padding:.8em;border:2px dashed #444;border-radius:8px;color:#777;text-align:center}.dropHover{border-color:var(--accent)!important;background:#35e0e814!important;color:var(--accent)}.toggle{position:relative;flex:0 0 auto;width:38px;height:20px;border-radius:10px;background:#444;cursor:pointer;transition:background .15s}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#ddd;transition:left .15s}.toggle.on{background:#1b8f96}.toggle.on:after{left:21px;background:#fff}.state{flex:0 0 auto;padding:.1em .5em;border-radius:5px;font-size:.85em;background:#333;color:var(--muted)}.state.ok{background:#1f3d1f;color:var(--ok)}.state.warn{background:#3d321f;color:var(--warn)}.state.bad{background:#3d1f1f;color:var(--bad);cursor:help}.askBackdrop{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background:#0009}.askBox{width:min(480px,90%);padding:1.3em 1.4em;border-radius:12px;background:#262626;box-shadow:0 8px 32px #000c}.askTitle{margin-bottom:.8em;font-size:1.1em;color:var(--accent)}.askInput,.field{box-sizing:border-box;width:100%;padding:.5em .7em;border:1px solid #444;border-radius:6px;background:#181818;color:#fff;font:inherit;outline:none}.askInput:focus,.field:focus{border-color:var(--accent)}.askHint{margin-top:.5em;color:var(--muted);font-size:.9em;line-height:1.4}.askActions{display:flex;justify-content:flex-end;gap:.6em;margin-top:1em}.editor{position:relative;display:flex;flex:1 1 auto;min-height:0;border:1px solid var(--line);border-radius:8px;background:#181818;overflow:hidden;font-family:Consolas,Cascadia Mono,monospace;font-size:13.5px;line-height:1.5;tab-size:4}.editorGutter{flex:0 0 auto;padding:.6em .6em .6em .8em;overflow:hidden;color:#555;text-align:right;white-space:pre;user-select:none;border-right:1px solid #2a2a2a}.editorCode{position:relative;flex:1 1 auto;min-width:0}.editorCode pre,.editorCode textarea{position:absolute;inset:0;box-sizing:border-box;margin:0;padding:.6em .8em;border:0;font:inherit;line-height:inherit;tab-size:inherit;white-space:pre;overflow-wrap:normal;letter-spacing:normal}.editorCode pre{overflow:hidden;color:#d4d4d4;pointer-events:none}.editorCode textarea{resize:none;overflow:auto;background:transparent;color:transparent;caret-color:#fff;outline:none}.editorCode textarea::selection{background:#3578c873;color:transparent}.tk-c{color:#6a9955}.tk-s{color:#ce9178}.tk-n{color:#b5cea8}.tk-k{color:#c586c0}.tk-l{color:#569cd6}.tk-f{color:#dcdcaa}.tk-p{color:#9cdcfe}.editorBar{display:flex;align-items:center;gap:.6em;margin-bottom:.7em}.editorFile{margin-right:auto;color:#fff;font-size:1.05em}.editorFile .dirty{color:var(--warn)}.editorView{display:flex;flex-direction:column;height:100%}.editorKeys{margin-top:.5em;color:#666;font-size:.85em} -`});var Tm={};A(Tm,{askConfirm:()=>Re,askText:()=>st,formatSize:()=>go,hostSupportsManagers:()=>Hs,makeDropTarget:()=>ot,openManagerPopup:()=>fo,readBase64:()=>Ll});function ot(s,e){Al.set(s,e)}function Zk(s){let e=[...s.items].filter(n=>n.kind==="file").map(n=>n.webkitGetAsEntry()).filter(n=>n!==null);if(!e.length)return Promise.resolve([...s.files].map(n=>({path:n.name,file:n})));let t=[],o=async n=>{if(t.length>=Jk)return;if(n.isFile){let i=await new Promise((a,l)=>n.file(a,l));t.push({path:n.fullPath.replace(/^\/+/,""),file:i});return}let r=n.createReader();for(;;){let i=await new Promise((a,l)=>r.readEntries(a,l));if(!i.length)break;for(let a of i)await o(a)}};return Promise.all(e.map(o)).then(()=>t)}function fo(s,{onMessage:e,canClose:t,onEscape:o}){let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let r=document.createElement("div");n.append(r);let i=r.attachShadow({mode:"open"});i.innerHTML=`${s}`;let a=new AbortController,{signal:l}=a,c=v=>{v.data&&typeof v.data=="object"&&e(v.data)};window.chrome.webview.addEventListener("message",c);let u=()=>{l.aborted||t&&!t()||(a.abort(),window.chrome.webview.removeEventListener("message",c),n.remove())};for(let v of["keydown","keyup","keypress"])i.addEventListener(v,k=>k.stopPropagation());document.addEventListener("keydown",v=>{if(v.key!=="Escape")return;v.stopPropagation();let k=i.querySelector(".askBackdrop [data-cancel]");k?k.click():o?.()||u()},{signal:l,capture:!0}),n.addEventListener("mousedown",v=>{v.target===n&&u()});let h=i.querySelector("[data-error]"),p=0,f=v=>{h&&(h.textContent=v,h.hidden=!1,clearTimeout(p),p=setTimeout(()=>{h.hidden=!0},8e3))},m=null,g=v=>{m!==v&&(m?.classList.remove("dropHover"),m=v,v?.classList.add("dropHover"))},b=v=>{for(let k of v.composedPath()){if(k===n)break;if(k instanceof HTMLElement&&Al.has(k))return k}return null};return n.addEventListener("dragover",v=>{v.preventDefault();let k=b(v);g(k),v.dataTransfer&&(v.dataTransfer.dropEffect=k?"copy":"none")}),n.addEventListener("dragleave",v=>{v.relatedTarget||g(null)}),n.addEventListener("drop",v=>{v.preventDefault();let k=b(v);g(null);let E=k&&Al.get(k);!E||!v.dataTransfer||Zk(v.dataTransfer).then(L=>{L.length&&E(L)}).catch(L=>f(`Could not read the dropped files: ${L?.message??L}`))}),i.querySelector("[data-close]")?.addEventListener("click",u),document.body.append(n),{shadow:i,close:u,signal:l,showError:f}}function st(s,e,t,o=""){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
      -
      Cancel
      OK
      `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=o;let r=n.querySelector(".askInput");r.value=t,(s.querySelector(".managerPopup")??s).append(n),r.focus();let a=t.lastIndexOf(".");return r.setSelectionRange(t.lastIndexOf("/")+1,a>0?a:t.length),new Promise(l=>{let c=u=>{n.remove(),l(u)};n.querySelector("[data-ok]").onclick=()=>c(r.value.trim()||null),n.querySelector("[data-cancel]").onclick=()=>c(null),r.onkeydown=u=>{u.key==="Enter"&&c(r.value.trim()||null)}})}function Re(s,e,t,o){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
      -
      Cancel
      `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=t;let r=n.querySelector("[data-ok]");return r.textContent=o,(s.querySelector(".managerPopup")??s).append(n),new Promise(i=>{let a=l=>{n.remove(),i(l)};r.onclick=()=>a(!0),n.querySelector("[data-cancel]").onclick=()=>a(!1)})}var Hs,Al,Jk,Ll,go,Os=w(()=>{"use strict";F();Cm();Hs=()=>d.hostFeatures?.includes("script-manager")??!1,Al=new WeakMap,Jk=5e3;Ll=s=>new Promise((e,t)=>{let o=new FileReader;o.onload=()=>e(String(o.result).slice(String(o.result).indexOf(",")+1)),o.onerror=()=>t(o.error),o.readAsDataURL(s)});go=s=>s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`});var Nl={};A(Nl,{open:()=>sy});var Qk,ey,Rl,ty,Pl,nt,Il,oy,sy,_l=w(()=>{"use strict";F();Em();bn();Os();Oo();Qk=120,ey=4*1024*1024,Rl="custom.css",ty=()=>d.hostFeatures?.includes("css-manager")??!1,Pl=s=>/\.css$/i.test(s)?s:`${s}.css`,nt=(s,e)=>window.chrome.webview.postMessage(e?`css-${s} ${JSON.stringify(e)}`:`css-${s}`),Il=class{constructor(){this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.files=[],this.active=null,this.listed=!1,this.saving=null,this.savingName=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.closeAfterSave=!1,this.forceClose=!1,this.legacy=!1,this.live=!0,this.previewTimer=0}open(){if(this.popup)return;if(!es()){d.showNotification("The CSS Manager needs a newer Kute. Update Kute to use it.",!1,6);return}this.legacy=!ty(),this.popup=fo($m,{onMessage:i=>this.receive(i),canClose:()=>this.canClose()});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{clearTimeout(this.previewTimer),Lt.revert(),this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.listed=!1,this.saving=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.forceClose=!1}),this.$("#ccFolder").onclick=()=>nt("reveal",{name:this.editing??""}),this.$("#ccOff").hidden=d.settings.data.customCss!==!1;let o=this.$("#ccLive");o.checked=this.live,o.onchange=()=>{this.live=o.checked,this.preview()};let n=e.host.parentElement;if(this.$("#ccPeek").onpointerdown=i=>{i.preventDefault(),n.style.opacity="0",window.addEventListener("pointerup",()=>{n.style.opacity=""},{once:!0,signal:t})},this.legacy){this.$(".managerPopup").classList.add("legacy"),this.$("#ccHint").textContent="Loaded after all of Krunker's styles, so a rule with the same selector wins. Saved as Documents\\kute\\custom.css. Update Kute to keep several CSS files and switch between them.",this.$("#ccEditor").textContent="Loading...",nt("read");return}this.$("#ccNew").onclick=()=>this.create(),this.$("#ccPaste").onclick=()=>this.paste();let r=this.$("#ccImportInput");this.$("#ccImport").onclick=()=>r.click(),r.onchange=()=>{this.importFiles([...r.files??[]]),r.value=""},ot(this.$("#ccFiles"),i=>this.importFiles(i.map(a=>a.file))),this.$("#ccEditor").textContent="Loading...",nt("list")}$(e){return this.popup?.shadow.querySelector(e)}receive(e){if(typeof e.managerError=="string"&&this.popup?.showError(e.managerError),this.legacy){typeof e.customCss?.content=="string"&&!this.editor&&(this.active=Rl,this.showEditor(Rl,e.customCss.content)),e.customCssSaved&&this.saving!==null&&this.saved(e.customCssSaved.error,Rl);return}e.cssFiles&&this.updateList(e.cssFiles),e.cssFile&&e.cssFile.name===this.loading&&(this.loading=null,typeof e.cssFile.content=="string"?this.showEditor(e.cssFile.name,e.cssFile.content):this.popup?.showError(`Could not read ${e.cssFile.name}`)),e.cssSaved&&this.saving!==null&&e.cssSaved.name===this.savingName&&this.saved(e.cssSaved.error,e.cssSaved.name),e.cssImported&&this.imported(e.cssImported),e.cssActivated&&(this.activating=!1,e.cssActivated.error?this.popup?.showError(`Could not switch: ${e.cssActivated.error}`):Lt.markSaved(String(e.cssActivated.content??"")),this.preview())}updateList(e){this.files=Array.isArray(e.files)?e.files:[];let t=this.active;this.active=e.active??null,t&&!this.active&&!this.activating&&(Lt.markSaved(""),this.preview());let o=new Set(this.files.map(n=>n.name));if(this.renaming&&this.editing===this.renaming.from&&o.has(this.renaming.to)){this.editing=this.renaming.to;let n=this.popup?.shadow.querySelector(".editorFile")?.firstChild;n&&(n.textContent=this.editing)}if(this.renaming=null,this.editing&&!o.has(this.editing)&&this.closeEditor(),!this.listed){this.listed=!0;let n=this.active??this.files[0]?.name;n?this.load(n):this.closeEditor()}this.renderList()}renderList(){let e=this.$("#ccList");if(e){if(e.textContent="",!this.files.length){let t=document.createElement("div");t.className="empty",t.textContent="No CSS files yet. Make one with New, paste one, or import .css files.",e.append(t)}for(let t of this.files)e.append(this.row(t));e.append(this.row(null))}}row(e){let t=e?.name??"",o=document.createElement("div");o.className="cssRow",o.classList.toggle("none",!e),o.classList.toggle("active",(this.active??"")===t),o.classList.toggle("editing",!!e&&this.editing===t);let n=document.createElement("div");n.className="cssRadio",n.title=e?"Use this one":"No CSS",n.onclick=l=>{l.stopPropagation(),this.activate(t)};let r=document.createElement("div");if(r.className="cssName",r.textContent=e?t:"None",o.append(n,r),!e)return o.onclick=()=>this.activate(""),o;let i=document.createElement("div");i.className="cssSize",i.textContent=go(e.size);let a=document.createElement("div");a.className="cssActions";for(let[l,c,u,h]of[["edit","Rename",()=>this.rename(t),!1],["delete","Delete",()=>this.remove(t),!0]]){let p=document.createElement("div");p.className=h?"iconBtn danger":"iconBtn",p.title=c,p.innerHTML=`${l}`,p.onclick=f=>{f.stopPropagation(),u()},a.append(p)}return o.append(i,a),o.onclick=()=>this.load(t),o}async load(e){e===this.editing&&this.editor||await this.discardChanges()&&(this.loading=e,nt("get",{name:e}))}showEditor(e,t){let o=this.$("#ccEditor");if(!o)return;let{editor:n}=po(o,{title:e,content:t,language:"css",onSave:r=>this.save(r),onClose:()=>this.popup?.close(),onChange:()=>{clearTimeout(this.previewTimer),this.previewTimer=setTimeout(()=>this.preview(),Qk)}});this.editor=n,this.editing=e,this.renderList(),this.preview()}closeEditor(){this.editor=null,this.editing=null;let e=this.$("#ccEditor");e&&(e.innerHTML='
      Pick a file below to edit it.
      '),this.preview()}preview(){let{editor:e}=this;this.live&&e&&(this.editing===this.active||e.isDirty())?Lt.apply(e.getValue()):Lt.revert()}async discardChanges(){return!this.editor?.isDirty()||!this.popup?!0:Re(this.popup.shadow,"Unsaved changes",`Throw the changes to ${this.editing} away?`,"Discard")}save(e){!this.editor||!this.editing||this.saving!==null||(this.closeAfterSave=e,this.saving=this.editor.getValue(),this.savingName=this.editing,this.legacy?window.chrome.webview.postMessage(`css-write ${JSON.stringify({content:this.saving})}`):nt("save",{name:this.editing,content:this.saving}))}saved(e,t){let o=this.saving??"";if(this.saving=null,e){this.popup?.showError(`Could not save: ${e}`);return}t===this.active&&Lt.markSaved(o),t===this.editing&&this.editor?.markSaved(o),this.preview(),this.closeAfterSave&&this.popup?.close()}activate(e){e===(this.active??"")||this.activating||(this.activating=!0,nt("activate",{name:e}))}async create(){if(!this.popup)return;let e=await st(this.popup.shadow,"New CSS file","theme.css","Ends in .css");e&&(this.openAfterImport=Pl(e),nt("import",{name:this.openAfterImport,content:""}))}async paste(){if(!this.popup)return;let e="";try{e=await navigator.clipboard.readText()}catch{this.popup.showError("Could not read the clipboard.");return}if(!e.trim()){this.popup.showError("The clipboard has no text in it. Copy the CSS first.");return}let t=await st(this.popup.shadow,"Name for the pasted CSS","pasted.css","Ends in .css");t&&(this.openAfterImport=Pl(t),nt("import",{name:this.openAfterImport,content:e}))}async importFiles(e){let t=[];for(let o of e){if(!/\.css$/i.test(o.name)||o.size>ey){t.push(o.name);continue}nt("import",{name:o.name,content:await o.text()})}t.length&&this.popup?.showError(`Not imported (only .css files up to 4 MB): ${t.join(", ")}`)}imported(e){if(e.error){this.popup?.showError(`Could not add ${e.requested}: ${e.error}`);return}this.active||this.activate(e.name),e.requested===this.openAfterImport?(this.openAfterImport=null,this.load(e.name)):this.editing||this.load(e.name)}async rename(e){if(!this.popup)return;let t=await st(this.popup.shadow,`Rename ${e}`,e,"Ends in .css");if(!t)return;let o=Pl(t);o!==e&&(this.renaming={from:e,to:o},nt("rename",{from:e,to:o}))}async remove(e){!this.popup||!await Re(this.popup.shadow,`Delete ${e}?`,"It goes to the recycle bin.","Delete")||nt("delete",{name:e})}canClose(){return this.forceClose||!this.editor?.isDirty()||!this.popup?!0:(Re(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},oy=new Il,sy=()=>oy.open()});var Am={};A(Am,{hostWatchesSwapper:()=>cr,reloadStylesheets:()=>Fs});var cr,Fs,dr=w(()=>{"use strict";F();cr=()=>d.hostFeatures?.includes("swapper-watch")??!1,Fs=s=>{for(let e of document.querySelectorAll('link[rel="stylesheet"]')){if(!(e instanceof HTMLLinkElement)||!e.href)continue;let t=new URL(e.href);if(!/(^|\.)krunker\.io$/.test(t.hostname)||!s.has(t.pathname.slice(1).toLowerCase()))continue;t.searchParams.set("kuteSwap",String(Date.now()));let o=e.cloneNode();o.href=t.href,o.addEventListener("load",()=>e.remove(),{once:!0}),o.addEventListener("error",()=>o.remove(),{once:!0}),e.after(o)}}});var Rm,Lm=w(()=>{Rm='

      Userscripts

      Userscripts off
      folder_openOpen scripts folder
      ×
      Scripts run inside Krunker. Only add scripts you trust, and never anything that breaks krunker.io/docs/terms.txt. Drop .js files onto a group, or create one with New script.
      '});var zl={};A(zl,{open:()=>ly});var ry,iy,oe,Ds,Bl,ay,ly,Hl=w(()=>{"use strict";F();Lm();Qo();Os();Oo();ry=4*1024*1024,iy=`// ==UserScript== + `;cr.innerHTML=em;$k=window.importSettingsPopup,Ck=window.importSettings,Qh=1;window.importSettingsPopup=()=>{$k(),queueMicrotask(()=>{U("#importTxt").after(cr)})};window.importSettings=()=>{let s=U("#importTxt"),e=JSON.parse(s.value);localStorage.getItem("kute_Sensitivity")==="false"&&(e.sensitivityX=localStorage.getItem("kro_setngss_sensitivityX"),e.sensitivityY=localStorage.getItem("kro_setngss_sensitivityY"),e.aimSensitivityX=localStorage.getItem("kro_setngss_aimSensitivityX"),e.aimSensitivityY=localStorage.getItem("kro_setngss_aimSensitivityY")),localStorage.getItem("kute_Sound")==="false"&&(e.sound=localStorage.getItem("kro_setngss_sound"),e.ambientVolume=localStorage.getItem("kro_setngss_ambientVolume"),e.dialogueVolume=localStorage.getItem("kro_setngss_dialogueVolume"),e.micVolume=localStorage.getItem("kro_setngss_micVolume"),e.voiceVolume=localStorage.getItem("kro_setngss_voiceVolume"),e.voiceDistance=localStorage.getItem("kro_setngss_voiceDistance"),e.gunsVolume=localStorage.getItem("kro_setngss_gunsVolume"),e.playerVolume=localStorage.getItem("kro_setngss_playerVolume"),e.skinVolume=localStorage.getItem("kro_setngss_skinVolume"),e.uiVolume=localStorage.getItem("kro_setngss_uiVolume"),e.assetVolume=localStorage.getItem("kro_setngss_assetVolume")),localStorage.getItem("kute_Keybinds")==="false"&&delete e.controls,s.value=JSON.stringify(e),Ck(),u.bindShoot(),Mk(),u.kuteIcons?.refresh(),u.autoDetect?.dropUndo(),u.autoDetect?.afterImport()}});var fl={};A(fl,{default:()=>Rk});function Ak(s){let e=s.nextElementSibling;return e instanceof HTMLElement&&e.matches(".market-grid-sentinel")?e:null}async function om(s){for(let e=0;e{"use strict";Tk=".view-stack-overlay, .modal-overlay";Lk=()=>new Promise(s=>{requestAnimationFrame(()=>s())});ml=class{constructor(){this.watched=new WeakSet,this.popupClickAt=-1/0,this.lastTop=0,this.lastHeight=0,this.restore=null,this.onWheel=()=>this.finish(!1),document.addEventListener("scroll",e=>this.onScroll(e),{capture:!0,passive:!0}),document.addEventListener("click",e=>{e.target instanceof Element&&e.target.closest(Tk)&&(this.popupClickAt=performance.now())},{capture:!0,passive:!0})}onScroll(e){let t=e.target;if(!(t instanceof HTMLElement))return;if(this.restore){t===this.restore.scroller&&t.scrollTop!==this.restore.top&&(t.scrollTop=this.restore.top);return}let o=t.querySelector(":scope > .market-grid");o instanceof HTMLElement&&(this.watch(t,o),this.lastTop=t.scrollTop,this.lastHeight=o.offsetHeight)}watch(e,t){if(this.watched.has(t))return;this.watched.add(t);let o=t.children.length;new MutationObserver(n=>{let r=n.reduce((l,c)=>l+c.removedNodes.length,0),i=o;if(o=t.children.length,this.restore?.grid===t){o>i&&this.pageArrived();return}i>0&&r>=i&&this.lastTop>e.clientHeight&&performance.now()-this.popupClickAt<5e3&&this.start(e,t,i,n.flatMap(l=>[...l.removedNodes]))}).observe(t,{childList:!0})}start(e,t,o,n){let r=document.createElement("div");r.className=t.className,r.style.cssText=t.style.cssText,r.append(...n),this.restore={scroller:e,grid:t,sentinels:new Set,top:this.lastTop,count:o,until:performance.now()+1e4,pageTimer:0,picture:r},t.style.minHeight=`${this.lastHeight}px`,t.style.alignContent="start",Object.assign(r.style,{position:"absolute",top:`${t.offsetTop}px`,left:`${t.offsetLeft}px`,width:`${t.offsetWidth}px`,margin:"0",zIndex:"1",pointerEvents:"none"}),e.append(r),e.style.overflowAnchor="none",e.scrollTop=this.lastTop,e.addEventListener("wheel",this.onWheel,{passive:!0}),this.waitForPage(),this.blink(this.restore).catch(i=>console.error("[kute] inventory scroll:",i))}pageArrived(){let{restore:e}=this;e&&(e.grid.children.length>=e.count-1||performance.now()>e.until?this.finish(!0):this.waitForPage())}waitForPage(){let{restore:e}=this;e&&(clearTimeout(e.pageTimer),e.pageTimer=window.setTimeout(()=>this.finish(!0),1500))}async blink(e){for(;this.restore===e;){let t=Ak(e.grid);t&&(e.sentinels.add(t),t.style.position="sticky",t.style.bottom="0",t.style.display="none",await om(2),t.style.display=""),await om(2)}}finish(e){let{restore:t}=this;if(t){this.restore=null,clearTimeout(t.pageTimer),t.scroller.removeEventListener("wheel",this.onWheel),t.picture.remove(),t.grid.style.minHeight="",t.grid.style.alignContent="",t.scroller.style.overflowAnchor="";for(let o of t.sentinels)o.style.position="",o.style.bottom="",o.style.display="";e&&(t.scroller.scrollTop=t.top),this.lastTop=t.scroller.scrollTop,this.lastHeight=t.grid.offsetHeight}}},Rk=new ml});var nm,sm=w(()=>{nm=`#kuteKeystrokes{position:absolute;left:463px;bottom:23px;z-index:10;display:flex;align-items:center;gap:12px;box-sizing:border-box;width:190px;height:82px;padding:5px 10px;border:1px solid rgba(53,224,232,.7);border-radius:8px;background:#0a1416e0;box-shadow:0 4px 18px #00000059;color:#cfeff1;font-family:Arial,sans-serif;font-weight:700;pointer-events:none}#kuteKeystrokesKeys{display:grid;grid-template-columns:repeat(4,24px);grid-template-rows:repeat(3,20px);gap:4px}.kuteKey{display:flex;justify-content:center;align-items:center;overflow:hidden;border:1px solid rgba(53,224,232,.35);border-radius:4px;background:#35e0e814;font-size:10px;white-space:nowrap}.kuteKey.on,#kuteMouse>.on,#kuteWheel>.on{border-color:#35e0e8;background:#35e0e8;color:#0a1416;box-shadow:0 0 8px #35e0e8cc}#kuteKeyMelee{grid-area:1 / 1}#kuteKeyForward{grid-area:1 / 2}#kuteKeySwap{grid-area:1 / 3}#kuteKeyReload{grid-area:1 / 4}#kuteKeyLeft{grid-area:2 / 1}#kuteKeyBack{grid-area:2 / 2}#kuteKeyRight{grid-area:2 / 3}#kuteKeyCrouch{grid-area:3 / 1 / 4 / 3}#kuteKeyJump{grid-area:3 / 3 / 4 / 5}#kuteMouseBox{position:relative;padding:5px}.kuteMove{--arc: rgba(53, 224, 232, .14);position:absolute;inset:0;box-sizing:border-box;border:2px solid transparent;border-radius:24px 24px 19px 19px}.kuteMove.on{--arc: rgba(53, 224, 232, .6)}.kuteMove.fast{--arc: #35e0e8}#kuteMoveLeft{border-left-color:var(--arc)}#kuteMoveRight{border-right-color:var(--arc)}#kuteMoveUp{border-top-color:var(--arc)}#kuteMoveDown{border-bottom-color:var(--arc)}#kuteMouse{position:relative;width:38px;height:58px;box-sizing:border-box;border:1px solid rgba(53,224,232,.35);border-radius:19px 19px 14px 14px;overflow:hidden}#kuteMouseLeft,#kuteMouseRight{position:absolute;top:0;width:50%;height:45%;border-bottom:1px solid rgba(53,224,232,.35);box-sizing:border-box;background:#35e0e814}#kuteMouseLeft{left:0}#kuteMouseRight{right:0}#kuteMouseSplit{position:absolute;top:0;left:calc(50% - .5px);width:1px;height:45%;background:#35e0e859}#kuteWheel{position:absolute;top:6px;left:50%;z-index:1;display:flex;flex-direction:column;box-sizing:border-box;width:10px;height:18px;margin-left:-5px;overflow:hidden;border:1px solid rgba(53,224,232,.5);border-radius:5px;background:#0a1416}#kuteWheel.on{border-color:#35e0e8;background:#35e0e8;box-shadow:0 0 8px #35e0e8cc}#kuteWheelUp,#kuteWheelDown{flex:1 1 0}#kuteWheelUp{border-bottom:1px solid rgba(53,224,232,.35)} +`});var im,rm=w(()=>{im='
      '});var kl={};A(kl,{default:()=>Kk});function pm(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`N${s-96}`:s>=112&&s<=123?`F${s-111}`:Fk[s]??"?"}function qk(s,e){let t=[],o=[[`cont_${s}_alt`,-1],[`cont_${s}`,e]];for(let[n,r]of o){let i=null;try{i=window.localStorage.getItem(n)}catch{i=null}let a=i===null?r:Number(i);a>0&&a<1e4&&t.push(a)}return t}var Nk,_k,am,lm,bl,Bk,zk,vl,cm,dm,Hk,um,Ok,Dk,Fk,wl,Kk,yl=w(()=>{"use strict";sm();rm();D();Nk=131,_k=120,am=32,lm=80,bl=.02,Bk=.35,zk=20,vl=80,cm=3,dm=3e3,Hk=3,um="kute_keystrokes_speed",Ok=120,Dk=[["kuteKeyForward","0",87],["kuteKeyBack","1",83],["kuteKeyLeft","2",65],["kuteKeyRight","3",68],["kuteKeyJump","jumpKey",32],["kuteKeyCrouch","crouchKey",16],["kuteKeyReload","reloadKey",82],["kuteKeyMelee","meleeKey",81],["kuteKeySwap","swapKey",69]],Fk={8:"BKSP",9:"TAB",13:"ENT",16:"SHIFT",17:"CTRL",18:"ALT",20:"CAPS",32:"SPACE",37:"\u2190",38:"\u2191",39:"\u2192",40:"\u2193",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"};wl=class{constructor(){this.widget=null,this.byCode=new Map,this.wheelTimers=new Map,this.rampWheelAt=-1/0,this.spaceDownAt=-1/0,this.spaceIgnored=!1,this.arcs=[],this.moveX=0,this.moveY=0,this.lastMove=-1/0,this.moveTimer=0,this.typical=Hk,this.typicalMs=0,this.fastUntil=[0,0,0,0],this.onKeyDown=e=>this.key(e.keyCode,!0),this.onKeyUp=e=>this.key(e.keyCode,!1),this.onMouseDown=e=>this.button(e.button,!0),this.onMouseUp=e=>this.button(e.button,!1),this.onWheel=e=>this.wheel(e.deltaY<0),this.onMouseMove=e=>this.move(e),this.onMoveIdle=()=>{this.moveTimer=0;let e=performance.now()-this.lastMove;if(e{let{data:t}=e;typeof t?.wheel=="number"&&t.wheel!==0?this.wheel(t.wheel>0):typeof t?.rampWheel=="number"&&t.rampWheel!==0&&this.rampWheel(t.rampWheel>0)},this.releaseAll=()=>{for(let e of this.widget?.querySelectorAll(".on")??[])e.classList.remove("on");this.moveX=0,this.moveY=0,this.fastUntil.fill(0),this.drawMove()},this.onPointerLockChange=()=>{if(document.pointerLockElement){this.readBinds();return}this.releaseAll();try{window.localStorage.setItem(um,this.typical.toFixed(3))}catch{}},u.settings.toggleKeystrokes=e=>this.toggle(e),this.toggle(!!u.settings.data.keystrokes)}toggle(e){if(queueMicrotask(()=>u.hudEditor?.apply()),!e){this.remove();return}if(this.widget)return;let t=document.createElement("style");t.id="kuteKeystrokesCSS",t.textContent=nm,document.head.append(t),this.widget=document.createElement("div"),this.widget.id="kuteKeystrokes",this.widget.innerHTML=im,(document.querySelector("#uiBase")??document.body).append(this.widget),this.readBinds(),this.loadTypical();let{widget:o}=this,n=[["kuteMoveLeft",-1,0],["kuteMoveRight",1,0],["kuteMoveUp",0,-1],["kuteMoveDown",0,1]];this.arcs=n.map(([r,i,a])=>[o.querySelector(`#${r}`),i,a]),window.addEventListener("keydown",this.onKeyDown,!0),window.addEventListener("keyup",this.onKeyUp,!0),window.addEventListener("mousedown",this.onMouseDown,!0),window.addEventListener("mouseup",this.onMouseUp,!0),window.addEventListener("mousemove",this.onMouseMove,{capture:!0,passive:!0}),window.addEventListener("wheel",this.onWheel,{capture:!0,passive:!0}),window.addEventListener("blur",this.releaseAll),document.addEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.addEventListener("message",this.onHostMessage)}remove(){window.removeEventListener("keydown",this.onKeyDown,!0),window.removeEventListener("keyup",this.onKeyUp,!0),window.removeEventListener("mousedown",this.onMouseDown,!0),window.removeEventListener("mouseup",this.onMouseUp,!0),window.removeEventListener("mousemove",this.onMouseMove,!0),window.removeEventListener("wheel",this.onWheel,!0),window.removeEventListener("blur",this.releaseAll),document.removeEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.removeEventListener("message",this.onHostMessage);for(let e of this.wheelTimers.values())clearTimeout(e);this.wheelTimers.clear(),clearTimeout(this.moveTimer),this.moveTimer=0,this.arcs=[],this.widget?.remove(),this.widget=null,this.byCode.clear(),document.querySelector("#kuteKeystrokesCSS")?.remove()}readBinds(){if(this.widget){this.byCode.clear();for(let[e,t,o]of Dk){let n=this.widget.querySelector(`#${e}`);if(!n)continue;let r=qk(t,o);n.textContent=r.length>0?pm(r[0]):"",n.title=r.map(pm).join(" / ");for(let i of r){let a=this.byCode.get(i)??[];a.push(n),this.byCode.set(i,a)}}}}key(e,t){if(e===Nk){this.button(0,t);return}if(e===am){t&&(this.spaceDownAt=performance.now(),this.spaceIgnored=this.spaceDownAt-this.rampWheelAt=100,n=Math.min(t-this.lastMove,100);if(this.lastMove=t,!(n>0))return;let r=Math.exp(-n/zk);this.moveX=this.moveX*r+e.movementX/n*(1-r),this.moveY=this.moveY*r+e.movementY/n*(1-r);let i=Math.hypot(this.moveX,this.moveY);!o&&i>bl&&(this.typicalMs=Math.min(this.typicalMs+n,dm),this.typical+=(Math.min(i,this.typical*cm)-this.typical)*(n/this.typicalMs)),this.drawMove(t),this.moveTimer||(this.moveTimer=window.setTimeout(this.onMoveIdle,vl))}loadTypical(){let e=NaN;try{e=Number(window.localStorage.getItem(um))}catch{e=NaN}e>0&&(this.typical=e,this.typicalMs=dm)}drawMove(e=performance.now()){let t=Math.hypot(this.moveX,this.moveY),o=Math.max(this.typical,bl)*cm;this.arcs.forEach(([n,r,i],a)=>{let l=this.moveX*r+this.moveY*i;l>o&&(this.fastUntil[a]=e+Ok);let c="kuteMove";this.fastUntil[a]>e?c="kuteMove on fast":t>bl&&l>=t*Bk&&(c="kuteMove on"),n.className!==c&&(n.className=c)})}rampWheel(e){if(this.rampWheelAt=performance.now(),this.rampWheelAt-this.spaceDownAt{this.widget?.querySelector(`#${t}`)?.classList.remove("on"),this.wheelTimers.delete(t)},_k))}},Kk=new wl});var mm,hm=w(()=>{mm='

      Kute Icons

      Tick all
      Done
      '});var El={};A(El,{default:()=>Gk});function km(){let s=u.settings.data[xl];return s&&typeof s=="object"?s:{}}function fm(){return u.hostFeatures?.includes("kute-icons")??!1}function gm(s){return km()[s.id]!==!1}function bm(s){return s.hiddenBy.filter(e=>{let t=null;try{t=localStorage.getItem(`kro_setngss_${e.id}`)}catch{return!1}return t===null?!1:e.kind==="checkbox"?t==="false":Number(t)===0})}function vm(s){return s.kind==="checkbox"?`${s.name} is off`:`${s.name} is 0`}async function wm(s){await Ce({title:"Reload the game?",paragraphs:[s,"The game keeps the images it already loaded, so this shows after a reload. Nothing else changes, and you can do it later."],stay:"Later",leave:"Reload now"})&&window.chrome.webview.postMessage("hard-reload")}var Uk,xl,Sl,Gk,$l=w(()=>{"use strict";hm();D();Rt();bn();Uk="https://krunker.io/kute-icons/",xl="kuteIconSlots";Sl=class{constructor(){this.asking=!1,this.watched=new WeakSet,u.kuteIcons={customize:()=>this.customize(),refresh:()=>this.refresh()},u.settings.toggleKuteIcons=e=>this.onToggle(!!e),this.refresh(),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&setTimeout(()=>this.refresh(),1500)})}refresh(){for(let e of Mo){let t=e.element?document.getElementById(e.element):null;!t||this.watched.has(t)||(this.watched.add(t),new MutationObserver(()=>Qt()).observe(t,{attributes:!0,attributeFilter:["src"]}))}Qt()}async onToggle(e){if(Qt(),!fm()){e&&u.showNotification("Kute icons need a newer Kute, update the client",!1,4);return}e&&await this.warnHidden(Mo.filter(gm)),await wm(e?"Kute icons are on.":"Kute icons are off, your own icons are back.")}async warnHidden(e){let t=new Map,o=[];for(let r of e){let i=bm(r);if(i.length!==0){for(let a of i)t.set(a.id,a);o.push(`${r.name}: ${i.map(a=>vm(a)).join(", ")}`)}}if(o.length===0||(this.asking=!0,!await Ce({title:"Hidden by your Krunker settings",paragraphs:[o.length===1?"This Kute icon will not show:":"These Kute icons will not show:",...o,"Switch those Krunker settings on for you?"],stay:"Leave them",leave:"Switch on"}).finally(()=>{this.asking=!1})))return!1;for(let r of t.values())window.setSetting(r.id,r.kind==="checkbox"?!0:"1");return u.showNotification("Switched on in your Krunker settings",!1,3),!0}customize(){let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=mm;let n=m=>o.querySelector(`#${m}`),r=fm(),i=u.settings.data.kuteIcons===!0,a="Ticked icons show Kute's version. Your Krunker settings stay as they are.";i||(a="Use Kute Icons is off, so none of these show yet."),r||(a="This needs a newer Kute. Update the client to use Kute icons."),n("kiHint").textContent=a;let l=!1,c=[],d=()=>{for(let{slot:m,box:g,note:b}of c){let v=g.checked?bm(m):[];if(b.replaceChildren(),v.length===0)continue;b.append(`Hidden: ${v.map(E=>vm(E)).join(", ")} `);let k=document.createElement("span");k.className="kiShow",k.textContent="Show it",k.onclick=async E=>{E.preventDefault(),E.stopPropagation(),await this.warnHidden([m]),d()},b.append(k)}},p=(m,g)=>{l=!0;let b={...km(),[m.id]:g};u.settings.data[xl]=b,window.chrome.webview.postMessage(`set-config-json ${xl} ${JSON.stringify(b)}`)};for(let m of Mo){let g=document.createElement("label");g.className="kiRow";let b=document.createElement("img");b.src=Uk+m.file,b.alt="";let v=document.createElement("span");v.textContent=m.name;let k=document.createElement("span");k.className="kiHidden",v.append(k);let E=document.createElement("input");E.type="checkbox",E.checked=gm(m),E.onchange=async()=>{p(m,E.checked),E.checked&&await this.warnHidden([m]),d()},g.append(b,v,E),n("kiRows").append(g),c.push({slot:m,box:E,note:k})}d(),n("kiAll").onclick=async()=>{let m=c.filter(({box:g})=>!g.checked);for(let{slot:g,box:b}of m)b.checked=!0,p(g,!0);await this.warnHidden(m.map(({slot:g})=>g)),d()};let h=new AbortController,f=()=>{h.abort(),e.remove(),l&&r&&u.settings.data.kuteIcons===!0&&wm("Your Kute icons changed.")};n("kiDone").onclick=f,e.addEventListener("mousedown",m=>{m.target===e&&f()}),document.addEventListener("keydown",m=>{m.key!=="Escape"||this.asking||(m.stopPropagation(),f())},{signal:h.signal,capture:!0}),document.body.append(e)}},Gk=new Sl});var Tl={};A(Tl,{default:()=>Vk});var ym,xm,Cl,Sm,Wk,Ml,Vk,Al=w(()=>{"use strict";D();Rt();ym="kute_update_asked",xm="kute_update_ready",Cl=[.25,.5,.75],Sm=()=>new Promise(s=>{let e=()=>{document.pointerLockElement?setTimeout(e,2e3):s()};e()}),Wk=s=>`${Math.round(s/1048576)} MB`,Ml=class{constructor(){this.step=0,this.busy=!1,!(u.platform!=="linux"||!u.hostFeatures?.includes("appimage-update"))&&(window.chrome.webview.addEventListener("message",e=>{let t=e.data?.update;t&&typeof t=="object"&&this.receive(t).catch(()=>{})}),window.chrome.webview.postMessage("update-state"))}async receive(e){e.stage==="offer"?await this.offer(e):e.stage==="downloading"?this.progress(e):e.stage==="ready"?await this.ready(e):e.stage==="failed"&&u.showNotification(`The update to Kute ${e.version} failed: ${e.error??"unknown error"}`,!1,8)}async offer(e){if(this.busy||sessionStorage.getItem(ym)===e.version)return;this.busy=!0,await Sm(),sessionStorage.setItem(ym,e.version);let t=e.install===!0,o=await Ce({title:`Kute ${e.version} is out`,paragraphs:t?[`You have ${e.current}. The update${e.size?` (${Wk(e.size)})`:""} downloads while you play.`,"It replaces your Kute AppImage and starts the next time you open Kute."]:[`You have ${e.current}.`,"This copy of Kute does not run as an AppImage and cannot update itself. The download page has the new version."],stay:"Later",leave:t?"Update":"Open download page"});this.busy=!1,o&&(window.chrome.webview.postMessage(t?"update-install":"update-page"),t&&u.showNotification(`Downloading Kute ${e.version}`,!1,4))}progress(e){if(!e.total||!e.done)return;let t=e.done/e.total;for(;this.step=Cl[this.step];)u.showNotification(`Downloading Kute ${e.version}: ${Math.round(Cl[this.step]*100)} %`,!1,3),this.step++}async ready(e){if(sessionStorage.getItem(xm)===e.version)return;await Sm(),sessionStorage.setItem(xm,e.version),await Ce({title:`Kute ${e.version} is ready`,paragraphs:["It starts the next time you open Kute. Restart now to use it right away."],stay:"Later",leave:"Restart now"})&&window.chrome.webview.postMessage("update-restart")}},Vk=new Ml});var $m,Em=w(()=>{$m=`

      CSS Manager

      visibilityHold to peek
      folder_openShow folder
      storeCSS Store
      ×
      One file is active at a time and loads after all of Krunker's styles, so a rule with the same selector wins. Krunker's inline styles and its own !important rules still need !important here. Files live in Documents\\kute\\css.
      Your CSS
      Click a file to edit it, the circle makes it active
      addNew
      content_pastePaste
      upload_fileImport
      `});var Mm,Cm=w(()=>{Mm=`:host{--accent: #35e0e8;--bg: #1e1e1e;--panel: #252525;--line: #333;--muted: #999;--ok: #5ce05a;--warn: #ffb74d;--bad: #eb5656}.managerPopup{position:relative;box-sizing:border-box;display:flex;flex-direction:column;width:min(1020px,94vw);height:min(760px,90vh);background:var(--bg);color:#fff;border-radius:14px;box-shadow:0 8px 48px #000c;font-family:Consolas,monospace;font-size:14px;overflow:hidden}.managerHeader{display:flex;align-items:center;gap:.6em;padding:1em 1.2em .8em 1.4em;border-bottom:1px solid var(--line)}.managerTitle{margin:0 auto 0 0;font-size:1.6em;letter-spacing:1px;color:var(--accent)}.managerClose{margin-left:.4em;font-size:1.6em;line-height:1;color:var(--muted);cursor:pointer}.managerClose:hover{color:#fff}.managerHint{padding:.7em 1.4em;color:var(--muted);line-height:1.5;border-bottom:1px solid var(--line)}.managerHint code{padding:.05em .35em;border-radius:4px;background:#181818;color:var(--accent)}.managerBody{flex:1 1 auto;min-height:0;overflow-y:auto;padding:1em 1.4em}.managerError,.managerNotice{margin:.8em 1.4em 0;padding:.6em .9em;border-radius:8px;white-space:pre-wrap;line-height:1.5}.managerError{background:#4a1d1d;color:#ffb4b4}.managerNotice{display:flex;align-items:center;gap:1em;background:#173a52;color:#cfe8ff}.managerNotice span{flex:1}[hidden]{display:none!important}.btn{display:inline-flex;align-items:center;gap:.4em;padding:.45em .9em;border-radius:7px;background:#2d2d2d;color:#fff;cursor:pointer;user-select:none;white-space:nowrap}.btn:hover{background:#383838;color:var(--accent)}.btn.primary{background:#1b5e63}.btn.primary:hover{background:#23777d;color:#fff}.btn.small{padding:.25em .55em;font-size:.92em}.iconBtn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:var(--muted);cursor:pointer;user-select:none}.iconBtn:hover{background:#333;color:#fff}.iconBtn.danger:hover{color:var(--bad)}.mi{font-family:Material Icons;font-weight:400;font-style:normal;font-size:18px;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;font-feature-settings:"liga"}.group{margin-bottom:1.2em;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.groupHead{display:flex;align-items:center;gap:.7em;padding:.7em .9em;border-bottom:1px solid var(--line)}.groupTitle{font-size:1.15em;color:#fff}.groupRuns{margin-right:auto;color:var(--muted);font-size:.9em}.empty{padding:.9em;color:var(--muted)}.dropZone{margin:.7em;padding:.8em;border:2px dashed #444;border-radius:8px;color:#777;text-align:center}.dropHover{border-color:var(--accent)!important;background:#35e0e814!important;color:var(--accent)}.toggle{position:relative;flex:0 0 auto;width:38px;height:20px;border-radius:10px;background:#444;cursor:pointer;transition:background .15s}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#ddd;transition:left .15s}.toggle.on{background:#1b8f96}.toggle.on:after{left:21px;background:#fff}.state{flex:0 0 auto;padding:.1em .5em;border-radius:5px;font-size:.85em;background:#333;color:var(--muted)}.state.ok{background:#1f3d1f;color:var(--ok)}.state.warn{background:#3d321f;color:var(--warn)}.state.bad{background:#3d1f1f;color:var(--bad);cursor:help}.askBackdrop{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background:#0009}.askBox{width:min(480px,90%);padding:1.3em 1.4em;border-radius:12px;background:#262626;box-shadow:0 8px 32px #000c}.askTitle{margin-bottom:.8em;font-size:1.1em;color:var(--accent)}.askInput,.field{box-sizing:border-box;width:100%;padding:.5em .7em;border:1px solid #444;border-radius:6px;background:#181818;color:#fff;font:inherit;outline:none}.askInput:focus,.field:focus{border-color:var(--accent)}.askHint{margin-top:.5em;color:var(--muted);font-size:.9em;line-height:1.4}.askActions{display:flex;justify-content:flex-end;gap:.6em;margin-top:1em}.editor{position:relative;display:flex;flex:1 1 auto;min-height:0;border:1px solid var(--line);border-radius:8px;background:#181818;overflow:hidden;font-family:Consolas,Cascadia Mono,monospace;font-size:13.5px;line-height:1.5;tab-size:4}.editorGutter{flex:0 0 auto;padding:.6em .6em .6em .8em;overflow:hidden;color:#555;text-align:right;white-space:pre;user-select:none;border-right:1px solid #2a2a2a}.editorCode{position:relative;flex:1 1 auto;min-width:0}.editorCode pre,.editorCode textarea{position:absolute;inset:0;box-sizing:border-box;margin:0;padding:.6em .8em;border:0;font:inherit;line-height:inherit;tab-size:inherit;white-space:pre;overflow-wrap:normal;letter-spacing:normal}.editorCode pre{overflow:hidden;color:#d4d4d4;pointer-events:none}.editorCode textarea{resize:none;overflow:auto;background:transparent;color:transparent;caret-color:#fff;outline:none}.editorCode textarea::selection{background:#3578c873;color:transparent}.tk-c{color:#6a9955}.tk-s{color:#ce9178}.tk-n{color:#b5cea8}.tk-k{color:#c586c0}.tk-l{color:#569cd6}.tk-f{color:#dcdcaa}.tk-p{color:#9cdcfe}.editorBar{display:flex;align-items:center;gap:.6em;margin-bottom:.7em}.editorFile{margin-right:auto;color:#fff;font-size:1.05em}.editorFile .dirty{color:var(--warn)}.editorView{display:flex;flex-direction:column;height:100%}.editorKeys{margin-top:.5em;color:#666;font-size:.85em} +`});var Tm={};A(Tm,{askConfirm:()=>Re,askText:()=>nt,formatSize:()=>go,hostSupportsManagers:()=>Os,makeDropTarget:()=>st,openManagerPopup:()=>fo,readBase64:()=>Rl});function st(s,e){Ll.set(s,e)}function Zk(s){let e=[...s.items].filter(n=>n.kind==="file").map(n=>n.webkitGetAsEntry()).filter(n=>n!==null);if(!e.length)return Promise.resolve([...s.files].map(n=>({path:n.name,file:n})));let t=[],o=async n=>{if(t.length>=Jk)return;if(n.isFile){let i=await new Promise((a,l)=>n.file(a,l));t.push({path:n.fullPath.replace(/^\/+/,""),file:i});return}let r=n.createReader();for(;;){let i=await new Promise((a,l)=>r.readEntries(a,l));if(!i.length)break;for(let a of i)await o(a)}};return Promise.all(e.map(o)).then(()=>t)}function fo(s,{onMessage:e,canClose:t,onEscape:o}){let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let r=document.createElement("div");n.append(r);let i=r.attachShadow({mode:"open"});i.innerHTML=`${s}`;let a=new AbortController,{signal:l}=a,c=v=>{v.data&&typeof v.data=="object"&&e(v.data)};window.chrome.webview.addEventListener("message",c);let d=()=>{l.aborted||t&&!t()||(a.abort(),window.chrome.webview.removeEventListener("message",c),n.remove())};for(let v of["keydown","keyup","keypress"])i.addEventListener(v,k=>k.stopPropagation());document.addEventListener("keydown",v=>{if(v.key!=="Escape")return;v.stopPropagation();let k=i.querySelector(".askBackdrop [data-cancel]");k?k.click():o?.()||d()},{signal:l,capture:!0}),n.addEventListener("mousedown",v=>{v.target===n&&d()});let p=i.querySelector("[data-error]"),h=0,f=v=>{p&&(p.textContent=v,p.hidden=!1,clearTimeout(h),h=setTimeout(()=>{p.hidden=!0},8e3))},m=null,g=v=>{m!==v&&(m?.classList.remove("dropHover"),m=v,v?.classList.add("dropHover"))},b=v=>{for(let k of v.composedPath()){if(k===n)break;if(k instanceof HTMLElement&&Ll.has(k))return k}return null};return n.addEventListener("dragover",v=>{v.preventDefault();let k=b(v);g(k),v.dataTransfer&&(v.dataTransfer.dropEffect=k?"copy":"none")}),n.addEventListener("dragleave",v=>{v.relatedTarget||g(null)}),n.addEventListener("drop",v=>{v.preventDefault();let k=b(v);g(null);let E=k&&Ll.get(k);!E||!v.dataTransfer||Zk(v.dataTransfer).then(L=>{L.length&&E(L)}).catch(L=>f(`Could not read the dropped files: ${L?.message??L}`))}),i.querySelector("[data-close]")?.addEventListener("click",d),document.body.append(n),{shadow:i,close:d,signal:l,showError:f}}function nt(s,e,t,o=""){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
      +
      Cancel
      OK
      `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=o;let r=n.querySelector(".askInput");r.value=t,(s.querySelector(".managerPopup")??s).append(n),r.focus();let a=t.lastIndexOf(".");return r.setSelectionRange(t.lastIndexOf("/")+1,a>0?a:t.length),new Promise(l=>{let c=d=>{n.remove(),l(d)};n.querySelector("[data-ok]").onclick=()=>c(r.value.trim()||null),n.querySelector("[data-cancel]").onclick=()=>c(null),r.onkeydown=d=>{d.key==="Enter"&&c(r.value.trim()||null)}})}function Re(s,e,t,o){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
      +
      Cancel
      `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=t;let r=n.querySelector("[data-ok]");return r.textContent=o,(s.querySelector(".managerPopup")??s).append(n),new Promise(i=>{let a=l=>{n.remove(),i(l)};r.onclick=()=>a(!0),n.querySelector("[data-cancel]").onclick=()=>a(!1)})}var Os,Ll,Jk,Rl,go,Ds=w(()=>{"use strict";D();Cm();Os=()=>u.hostFeatures?.includes("script-manager")??!1,Ll=new WeakMap,Jk=5e3;Rl=s=>new Promise((e,t)=>{let o=new FileReader;o.onload=()=>e(String(o.result).slice(String(o.result).indexOf(",")+1)),o.onerror=()=>t(o.error),o.readAsDataURL(s)});go=s=>s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`});var Nl={};A(Nl,{open:()=>sy});var Qk,ey,Pl,ty,Do,Ge,Il,oy,sy,_l=w(()=>{"use strict";D();Em();vn();Ds();Oo();Qk=120,ey=4*1024*1024,Pl="custom.css",ty=()=>u.hostFeatures?.includes("css-manager")??!1,Do=s=>/\.css$/i.test(s)?s:`${s}.css`,Ge=(s,e)=>window.chrome.webview.postMessage(e?`css-${s} ${JSON.stringify(e)}`:`css-${s}`),Il=class{constructor(){this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.files=[],this.active=null,this.listed=!1,this.saving=null,this.savingName=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.closeAfterSave=!1,this.forceClose=!1,this.legacy=!1,this.live=!0,this.previewTimer=0}open(){if(this.popup)return;if(!ts()){u.showNotification("The CSS Manager needs a newer Kute. Update Kute to use it.",!1,6);return}this.legacy=!ty(),this.popup=fo($m,{onMessage:i=>this.receive(i),canClose:()=>this.canClose()});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{clearTimeout(this.previewTimer),Lt.revert(),this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.listed=!1,this.saving=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.forceClose=!1}),this.$("#ccFolder").onclick=()=>Ge("reveal",{name:this.editing??""}),this.$("#ccOff").hidden=u.settings.data.customCss!==!1,this.$("#ccStore").onclick=()=>this.openStore(),this.$("#ccStoreBack").onclick=()=>{this.$("#ccStorePanel").hidden=!0,this.$(".managerBody").classList.remove("storeOpen")};let o=this.$("#ccLive");o.checked=this.live,o.onchange=()=>{this.live=o.checked,this.preview()};let n=e.host.parentElement;if(this.$("#ccPeek").onpointerdown=i=>{i.preventDefault(),n.style.opacity="0",window.addEventListener("pointerup",()=>{n.style.opacity=""},{once:!0,signal:t})},this.legacy){this.$(".managerPopup").classList.add("legacy"),this.$("#ccHint").textContent="Loaded after all of Krunker's styles, so a rule with the same selector wins. Saved as Documents\\kute\\custom.css. Update Kute to keep several CSS files and switch between them.",this.$("#ccEditor").textContent="Loading...",Ge("read");return}this.$("#ccNew").onclick=()=>this.create(),this.$("#ccPaste").onclick=()=>this.paste();let r=this.$("#ccImportInput");this.$("#ccImport").onclick=()=>r.click(),r.onchange=()=>{this.importFiles([...r.files??[]]),r.value=""},st(this.$("#ccFiles"),i=>this.importFiles(i.map(a=>a.file))),this.$("#ccEditor").textContent="Loading...",Ge("list")}async openStore(){let e=this.$("#ccStorePanel"),t=this.$("#ccStoreList");this.$(".managerBody").classList.add("storeOpen"),e.hidden=!1,t.replaceChildren();let o=document.createElement("p");o.textContent="Loading the CSS Store...",t.append(o);try{let n=await fetch("https://raw.githubusercontent.com/Liamoulee/KSS/main/index.json");if(!n.ok)throw new Error(`HTTP ${n.status}`);let r=await n.json();t.replaceChildren();for(let i of r){let a=document.createElement("div");if(a.className="storeCard",i.preview){let m=document.createElement("img");m.src=i.preview.startsWith("https://")?i.preview:"https://raw.githubusercontent.com/Liamoulee/KSS/main/"+i.preview.split("/").map(encodeURIComponent).join("/"),m.alt=`${i.name} preview`,m.onerror=()=>m.remove(),a.append(m)}let l=document.createElement("h3");l.textContent=i.name;let c=document.createElement("p");c.textContent=`By ${i.author}`;let d=document.createElement("p");d.textContent=i.description??"";let p=document.createElement("button");p.className="storeDownloadBtn";let h=this.files.some(m=>m.name.toLowerCase()===Do(i.name).toLowerCase()),f=m=>{p.textContent=m};f(h?"Already downloaded":"Download the CSS"),h&&(p.classList.add("installed"),p.disabled=!0),p.onclick=async()=>{if(h=this.files.some(m=>m.name.toLowerCase()===Do(i.name).toLowerCase()),h){f("Already downloaded"),p.classList.add("installed"),p.disabled=!0;return}p.disabled=!0,f("Downloading...");try{let m=await fetch("https://raw.githubusercontent.com/Liamoulee/KSS/main/"+i.file.split("/").map(encodeURIComponent).join("/"));if(!m.ok)throw new Error(`HTTP ${m.status}`);let g=await m.text();Ge("import",{name:Do(i.name),content:g}),h=!0,f("Already downloaded"),p.classList.add("installed"),p.disabled=!0}catch(m){console.error("CSS Store import failed:",m),p.disabled=!1,f("Try again")}},a.append(l,c,d,p),t.append(a)}r.length===0&&(t.textContent="No CSS available.")}catch(n){console.error("CSS Store failed to load:",n),t.replaceChildren();let r=document.createElement("p");r.textContent="Unable to load the CSS Store. Please try again later.",t.append(r)}}$(e){return this.popup?.shadow.querySelector(e)}receive(e){if(typeof e.managerError=="string"&&this.popup?.showError(e.managerError),this.legacy){typeof e.customCss?.content=="string"&&!this.editor&&(this.active=Pl,this.showEditor(Pl,e.customCss.content)),e.customCssSaved&&this.saving!==null&&this.saved(e.customCssSaved.error,Pl);return}e.cssFiles&&this.updateList(e.cssFiles),e.cssFile&&e.cssFile.name===this.loading&&(this.loading=null,typeof e.cssFile.content=="string"?this.showEditor(e.cssFile.name,e.cssFile.content):this.popup?.showError(`Could not read ${e.cssFile.name}`)),e.cssSaved&&this.saving!==null&&e.cssSaved.name===this.savingName&&this.saved(e.cssSaved.error,e.cssSaved.name),e.cssImported&&this.imported(e.cssImported),e.cssActivated&&(this.activating=!1,e.cssActivated.error?this.popup?.showError(`Could not switch: ${e.cssActivated.error}`):Lt.markSaved(String(e.cssActivated.content??"")),this.preview())}updateList(e){this.files=Array.isArray(e.files)?e.files:[];let t=this.active;this.active=e.active??null,t&&!this.active&&!this.activating&&(Lt.markSaved(""),this.preview());let o=new Set(this.files.map(n=>n.name));if(this.renaming&&this.editing===this.renaming.from&&o.has(this.renaming.to)){this.editing=this.renaming.to;let n=this.popup?.shadow.querySelector(".editorFile")?.firstChild;n&&(n.textContent=this.editing)}if(this.renaming=null,this.editing&&!o.has(this.editing)&&this.closeEditor(),!this.listed){this.listed=!0;let n=this.active??this.files[0]?.name;n?this.load(n):this.closeEditor()}this.renderList()}renderList(){let e=this.$("#ccList");if(e){if(e.textContent="",!this.files.length){let t=document.createElement("div");t.className="empty",t.textContent="No CSS files yet. Make one with New, paste one, or import .css files.",e.append(t)}for(let t of this.files)e.append(this.row(t));e.append(this.row(null))}}row(e){let t=e?.name??"",o=document.createElement("div");o.className="cssRow",o.classList.toggle("none",!e),o.classList.toggle("active",(this.active??"")===t),o.classList.toggle("editing",!!e&&this.editing===t);let n=document.createElement("div");n.className="cssRadio",n.title=e?"Use this one":"No CSS",n.onclick=l=>{l.stopPropagation(),this.activate(t)};let r=document.createElement("div");if(r.className="cssName",r.textContent=e?t:"None",o.append(n,r),!e)return o.onclick=()=>this.activate(""),o;let i=document.createElement("div");i.className="cssSize",i.textContent=go(e.size);let a=document.createElement("div");a.className="cssActions";for(let[l,c,d,p]of[["edit","Rename",()=>this.rename(t),!1],["delete","Delete",()=>this.remove(t),!0]]){let h=document.createElement("div");h.className=p?"iconBtn danger":"iconBtn",h.title=c,h.innerHTML=`${l}`,h.onclick=f=>{f.stopPropagation(),d()},a.append(h)}return o.append(i,a),o.onclick=()=>this.load(t),o}async load(e){e===this.editing&&this.editor||await this.discardChanges()&&(this.loading=e,Ge("get",{name:e}))}showEditor(e,t){let o=this.$("#ccEditor");if(!o)return;let{editor:n}=po(o,{title:e,content:t,language:"css",onSave:r=>this.save(r),onClose:()=>this.popup?.close(),onChange:()=>{clearTimeout(this.previewTimer),this.previewTimer=setTimeout(()=>this.preview(),Qk)}});this.editor=n,this.editing=e,this.renderList(),this.preview()}closeEditor(){this.editor=null,this.editing=null;let e=this.$("#ccEditor");e&&(e.innerHTML='
      Pick a file below to edit it.
      '),this.preview()}preview(){let{editor:e}=this;this.live&&e&&(this.editing===this.active||e.isDirty())?Lt.apply(e.getValue()):Lt.revert()}async discardChanges(){return!this.editor?.isDirty()||!this.popup?!0:Re(this.popup.shadow,"Unsaved changes",`Throw the changes to ${this.editing} away?`,"Discard")}save(e){!this.editor||!this.editing||this.saving!==null||(this.closeAfterSave=e,this.saving=this.editor.getValue(),this.savingName=this.editing,this.legacy?window.chrome.webview.postMessage(`css-write ${JSON.stringify({content:this.saving})}`):Ge("save",{name:this.editing,content:this.saving}))}saved(e,t){let o=this.saving??"";if(this.saving=null,e){this.popup?.showError(`Could not save: ${e}`);return}t===this.active&&Lt.markSaved(o),t===this.editing&&this.editor?.markSaved(o),this.preview(),this.closeAfterSave&&this.popup?.close()}activate(e){e===(this.active??"")||this.activating||(this.activating=!0,Ge("activate",{name:e}))}async create(){if(!this.popup)return;let e=await nt(this.popup.shadow,"New CSS file","theme.css","Ends in .css");e&&(this.openAfterImport=Do(e),Ge("import",{name:this.openAfterImport,content:""}))}async paste(){if(!this.popup)return;let e="";try{e=await navigator.clipboard.readText()}catch{this.popup.showError("Could not read the clipboard.");return}if(!e.trim()){this.popup.showError("The clipboard has no text in it. Copy the CSS first.");return}let t=await nt(this.popup.shadow,"Name for the pasted CSS","pasted.css","Ends in .css");t&&(this.openAfterImport=Do(t),Ge("import",{name:this.openAfterImport,content:e}))}async importFiles(e){let t=[];for(let o of e){if(!/\.css$/i.test(o.name)||o.size>ey){t.push(o.name);continue}Ge("import",{name:o.name,content:await o.text()})}t.length&&this.popup?.showError(`Not imported (only .css files up to 4 MB): ${t.join(", ")}`)}imported(e){if(e.error){this.popup?.showError(`Could not add ${e.requested}: ${e.error}`);return}this.active||this.activate(e.name),e.requested===this.openAfterImport?(this.openAfterImport=null,this.load(e.name)):this.editing||this.load(e.name)}async rename(e){if(!this.popup)return;let t=await nt(this.popup.shadow,`Rename ${e}`,e,"Ends in .css");if(!t)return;let o=Do(t);o!==e&&(this.renaming={from:e,to:o},Ge("rename",{from:e,to:o}))}async remove(e){!this.popup||!await Re(this.popup.shadow,`Delete ${e}?`,"It goes to the recycle bin.","Delete")||Ge("delete",{name:e})}canClose(){return this.forceClose||!this.editor?.isDirty()||!this.popup?!0:(Re(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},oy=new Il,sy=()=>oy.open()});var Am={};A(Am,{hostWatchesSwapper:()=>dr,reloadStylesheets:()=>Fs});var dr,Fs,ur=w(()=>{"use strict";D();dr=()=>u.hostFeatures?.includes("swapper-watch")??!1,Fs=s=>{for(let e of document.querySelectorAll('link[rel="stylesheet"]')){if(!(e instanceof HTMLLinkElement)||!e.href)continue;let t=new URL(e.href);if(!/(^|\.)krunker\.io$/.test(t.hostname)||!s.has(t.pathname.slice(1).toLowerCase()))continue;t.searchParams.set("kuteSwap",String(Date.now()));let o=e.cloneNode();o.href=t.href,o.addEventListener("load",()=>e.remove(),{once:!0}),o.addEventListener("error",()=>o.remove(),{once:!0}),e.after(o)}}});var Rm,Lm=w(()=>{Rm='

      Userscripts

      Userscripts off
      folder_openOpen scripts folder
      ×
      Scripts run inside Krunker. Only add scripts you trust, and never anything that breaks krunker.io/docs/terms.txt. Drop .js files onto a group, or create one with New script.
      '});var zl={};A(zl,{open:()=>ly});var ry,iy,oe,qs,Bl,ay,ly,Hl=w(()=>{"use strict";D();Lm();es();Ds();Oo();ry=4*1024*1024,iy=`// ==UserScript== // @name {{name}} // @author // @version 1.0 @@ -207,11 +207,11 @@ this._console.log("{{name}} is running"); this.unload = () => {}; return this; -`,oe=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},Ds=(s,e,t,o="")=>{let n=oe("div",`iconBtn ${o}`);return n.title=e,n.append(oe("span","mi",s)),n.onclick=t,n},Bl=class{constructor(){this.popup=null,this.groups=[],this.openSettings=new Set,this.editing=null,this.pendingRead=null,this.pendingSave=null,this.needsRefresh=!1,this.renderQueued=!1,this.forceClose=!1,this.prefsTimers=new Map,Xe&&(Xe.onChange=()=>this.queueRender()),d.userscriptManager.masterChanged=e=>this.onMasterChanged(e)}masterOn(){return d.settings?.data?.userscripts!==!1}onMasterChanged(e){if(e&&!Xe)this.needsRefresh=!0;else if(e&&!At())for(let t of this.groups.filter(o=>o.id==="game").flatMap(o=>o.scripts)){let o=this.entryFor(t.key);!o||!t.enabled||(o.start(),(o.tainted||o.state!=="running"&&o.state!=="waiting"&&o.state!=="error")&&(this.needsRefresh=!0))}this.updateNotice(),this.editing||this.render()}reload(e){return e.length?At()?(To(e,!0,this.masterOn()),!0):!1:!0}applyMaster(){let e=this.popup?.shadow;if(!e)return;let t=this.masterOn();e.querySelector(".managerPopup")?.classList.toggle("scriptsOff",!t);let o=e.querySelector("#usMaster");o&&(o.classList.toggle("on",t),o.querySelector(".toggle")?.classList.toggle("on",t),o.querySelector("span").textContent=t?"Userscripts on":"Userscripts off")}open(){if(this.popup)return;if(!Hs()){window.chrome.webview.postMessage("open, userscripts"),d.showNotification("This Kute version can only open the scripts folder. Update Kute for the script manager.",!1,6);return}this.popup=fo(Rm,{onMessage:t=>this.receive(t),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1}),this.popup.signal.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.forceClose=!1});let{shadow:e}=this.popup;e.querySelector("#usFolder").onclick=()=>this.send("reveal",{}),e.querySelector("#usRefreshNow").onclick=()=>location.reload(),e.querySelector("#usMaster").onclick=()=>d.settings.changeSetting("userscripts",!this.masterOn(),!1),this.applyMaster(),this.body().textContent="Loading...",this.send("list",{})}send(e,t){window.chrome.webview.postMessage(`scripts-${e} ${JSON.stringify(t)}`)}body(){return this.popup?.shadow.querySelector("#usBody")}receive(e){if(e.managerError&&(this.popup?.showError(e.managerError),this.pendingSave&&(this.pendingSave=null)),e.userscripts){if(this.groups=e.userscripts.groups??[],this.pendingSave&&this.editing){let{closeAfter:t}=this.pendingSave;this.pendingSave=null,this.editing.editor.markSaved(),this.editing.group==="game"&&!this.reload([this.editing.file])&&(this.needsRefresh=!0),t&&(this.editing=null)}this.editing||this.render(),this.updateNotice()}if(e.userscriptSource&&e.userscriptSource.key===this.pendingRead){this.pendingRead=null;let t=this.findScript(e.userscriptSource.key);t&&typeof e.userscriptSource.content=="string"?this.showEditor(t.group,t.file,e.userscriptSource.content):this.popup?.showError("The script could not be read.")}}findScript(e){for(let t of this.groups){let o=t.scripts.find(n=>n.key===e);if(o)return o}}entryFor(e){return Xe?.entries?.find(t=>t.key===e)}queueRender(){!this.popup||this.renderQueued||(this.renderQueued=!0,queueMicrotask(()=>{this.renderQueued=!1,this.updateNotice(),this.popup&&!this.editing&&this.render()}))}updateNotice(){let e=this.popup?.shadow.querySelector("#usRefresh");if(!e)return;let t=this.masterOn(),o=Xe?.entries?.some(n=>n.outdated||!t&&n.state==="running");e.hidden=!this.needsRefresh&&!o}render(){let e=this.body();if(!(!e||!this.popup)){this.applyMaster(),e.textContent="";for(let t of this.groups)e.append(this.renderGroup(t))}}renderGroup(e){let t=oe("div","group"),o=oe("div","groupHead");o.append(oe("div","groupTitle",e.label),oe("div","groupRuns",`runs in ${e.runs}`));let n=oe("div","btn small");n.append(oe("span","mi","add"),"New script"),n.onclick=()=>this.createScript(e.id),o.append(n),t.append(o),e.scripts.length===0&&t.append(oe("div","empty","No scripts yet."));for(let r of e.scripts)this.renderScript(t,e,r);return t.append(oe("div","dropZone",`Drop .js files here to add them to ${e.label}`)),ot(t,r=>this.importFiles(e,r)),t}async importFiles(e,t){if(!this.popup)return;let o=[],n=t.filter(({file:a})=>{if(!/\.js$/i.test(a.name))o.push(`${a.name}: not a .js file`);else if(a.size>ry)o.push(`${a.name}: larger than 4 MB`);else return!0;return!1}),r=new Set(e.scripts.map(a=>a.file.toLowerCase())),i=n.filter(({file:a})=>r.has(a.name.toLowerCase())).map(({file:a})=>a.name);if(i.length){let a=`${i.join(", ")} already exist in ${e.label}. Replace them with the dropped files?`;if(!await Re(this.popup.shadow,"Replace scripts?",a,"Replace"))return}for(let{file:a}of n)this.send("write",{group:e.id,file:a.name,content:await a.text(),noList:!0});this.send("list",{}),e.id==="game"&&!this.reload(n.map(({file:a})=>a.name))&&(this.needsRefresh=!0),this.updateNotice(),o.length&&this.popup?.showError(o.join(` -`))}stateOf(e,t,o){return t?.state==="error"?["Error","bad",t.error]:t?.outdated?["Old version","warn","Your changes apply after a refresh, this script has no unload to stop the running version"]:this.masterOn()?o||!Xe?e.enabled?["On","ok",""]:["Off","",""]:e.enabled?t?.state==="running"?["Running","ok",t.late?"Started after the page loaded. It is a document-start script, refresh if it misses something":""]:t?.state==="waiting"?["Starting","ok","Starts once the page has loaded"]:!t&&At()?["Starting","ok",""]:["After refresh","warn","On, starts with the next page load"]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:["Off","",""]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:e.enabled?["On","","Runs once userscripts are on"]:["Off","",""]}renderScript(e,t,o){let n=t.id!=="game",r=n?void 0:this.entryFor(o.key),i=r?.meta??o.meta,a=oe("div","scriptRow"),l=oe("div",`toggle${o.enabled?" on":""}`);l.title=o.enabled?"Turn off":"Turn on",l.onclick=()=>this.toggle(o,r,n);let c=oe("div","scriptInfo"),u=oe("div","scriptName",i.name||o.file);i.version&&u.append(oe("span","version",`v${i.version}`)),i.author&&u.append(oe("span","author",`by ${i.author}`)),c.append(u);let h=[i.desc,i.name?o.file:"",go(o.size)].filter(Boolean).join(" \xB7 ");c.append(oe("div","scriptDesc",h)),c.title=[i.desc,`${o.file}, ${o.runAt}${o.priority?`, priority ${o.priority}`:""}`].filter(Boolean).join(` -`);let[p,f,m]=this.stateOf(o,r,n),g=oe("div",`state ${f}`,p);m&&(g.title=m);let b=oe("div","scriptActions");r?.settings&&Object.keys(r.settings).length&&b.append(Ds("tune","Script settings",()=>{this.openSettings.has(o.key)?this.openSettings.delete(o.key):this.openSettings.add(o.key),this.render()})),b.append(Ds("edit","Edit",()=>{this.pendingRead=o.key,this.send("read",{key:o.key})}),Ds("swap_horiz",`Move to ${n?"Game":"Social"}`,()=>this.move(o,r,n)),Ds("folder_open","Show in folder",()=>this.send("reveal",{key:o.key})),Ds("delete","Delete (goes to the recycle bin)",()=>this.deleteScript(o,r),"danger")),a.append(l,c,g,b),e.append(a),r?.settings&&this.openSettings.has(o.key)&&e.append(this.renderSettings(o,r))}toggle(e,t,o){e.enabled=!e.enabled,this.send("toggle",{key:e.key,enabled:e.enabled}),o||this.masterOn()&&(t?e.enabled?(t.start(),(t.tainted||t.state!=="running"&&t.state!=="waiting"&&t.state!=="error")&&(this.needsRefresh=!0)):t.stop()||(this.needsRefresh=!0):e.enabled&&At()?To([e.key],!1,!0):e.enabled&&(this.needsRefresh=!0)),this.updateNotice(),this.render()}move(e,t,o){t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("move",{key:e.key,group:o?"game":"social"}),o&&!this.reload([e.file])&&(this.needsRefresh=!0),this.updateNotice()}async deleteScript(e,t){!this.popup||!await Re(this.popup.shadow,`Delete ${e.file}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||(t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("delete",{key:e.key}))}async createScript(e){if(!this.popup)return;let t=await st(this.popup.shadow,"New script","my-script.js","The file name. It ends up in the scripts folder of this group.");if(!t)return;let o=/\.js$/i.test(t)?t:`${t}.js`;if(this.groups.some(r=>r.id===e&&r.scripts.some(i=>i.file.toLowerCase()===o.toLowerCase()))){this.popup.showError(`${o} already exists in this group.`);return}this.showEditor(e,o,iy.replaceAll("{{name}}",o.replace(/\.js$/i,"")),!0)}renderSettings(e,t){let o=oe("div","scriptSettings"),n=t.settings??{},r=()=>{clearTimeout(this.prefsTimers.get(e.key)),this.prefsTimers.set(e.key,setTimeout(()=>{this.prefsTimers.delete(e.key);let a=Object.fromEntries(Object.entries(n).map(([l,c])=>[l,c.value]));this.send("prefs",{key:e.key,prefs:a})},300))},i=(a,l)=>{t.setPref(a,l),r()};for(let[a,l]of Object.entries(n)){let c=oe("div","settingRow"),u=oe("div","settingLabel",l.title||a);l.desc&&u.append(oe("small","",l.desc)),c.append(u,this.settingControl(a,l,i)),o.append(c)}return o}settingControl(e,t,o){switch(t.type){case"bool":{let n=oe("div",`toggle${t.value?" on":""}`);return n.onclick=()=>{o(e,!t.value),n.classList.toggle("on",!!t.value)},n}case"num":{let n=oe("div");n.style.cssText="display:flex;gap:.6em;align-items:center";let r=oe("input");if(r.type="number",r.style.width="90px",r.value=String(t.value),t.min!==void 0&&(r.min=String(t.min)),t.max!==void 0&&(r.max=String(t.max)),r.step=String(t.step??"any"),t.min!==void 0&&t.max!==void 0){let i=oe("input");i.type="range",i.min=String(t.min),i.max=String(t.max),i.step=String(t.step??"any"),i.value=String(t.value),i.oninput=()=>{r.value=i.value,o(e,Number(i.value))},r.onchange=()=>{i.value=r.value},n.append(i)}return r.addEventListener("change",()=>{r.value!==""&&Number.isFinite(Number(r.value))&&o(e,Number(r.value))}),n.append(r),n}case"sel":{let n=oe("select");for(let r of t.opts??[]){let i=oe("option","",String(r));i.value=String(r),i.selected=r===t.value,n.append(i)}return n.onchange=()=>{let r=(t.opts??[]).find(i=>String(i)===n.value);o(e,r??n.value)},n}case"color":{let n=oe("input");return n.type="color",n.value=String(t.value),n.onchange=()=>o(e,n.value),n}case"text":{let n=oe("input");return n.type="text",n.value=String(t.value??""),n.onchange=()=>o(e,n.value),n}case"keybind":{let n=i=>[i?.ctrl&&"Ctrl",i?.alt&&"Alt",i?.shift&&"Shift",i?.key||"none"].filter(Boolean).join(" + "),r=oe("div","btn small",n(t.value));return r.onclick=()=>{r.textContent="Press a key...";let i=a=>{if(["Control","Alt","Shift","Meta"].includes(a.key))return;a.preventDefault(),a.stopPropagation(),window.removeEventListener("keydown",i,!0);let l={key:a.key.toLowerCase(),ctrl:a.ctrlKey,alt:a.altKey,shift:a.shiftKey};o(e,l),r.textContent=n(l)};window.addEventListener("keydown",i,!0)},r}default:return oe("div","scriptFile",`unsupported type "${t.type}"`)}}showEditor(e,t,o,n=!1){let r=this.body();if(!r)return;let{editor:i}=po(r,{title:t,content:o,language:"js",isNew:n,onSave:a=>{this.editing&&(this.pendingSave={closeAfter:a},this.editing.closeAfterSave=a,this.send("write",{group:e,file:t,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={group:e,file:t,editor:i,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Re(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||(this.editing=null,this.render())}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Re(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},ay=new Bl,ly=()=>ay.open()});var Im,Pm=w(()=>{Im=`

      Swapper

      refreshReload list
      folder_openOpen swapper folder
      ×
      A file in the swapper folder replaces the game's file with the same path: swapper/textures/pistol.png replaces krunker.io/textures/pistol.png. Easiest way: drop your file onto the game file it should replace (right side), it gets the right folder and name. Folder names do not care about case. Text files like CSS can be written right here: New file, or the edit button on a game file to start from a copy.
      Your swaps
      note_addNew file
      create_new_folderNew folder
      Drop files or folders here to put them into the swapper folder as they are
      Game files
      `});var ql={};A(ql,{open:()=>my});var dy,uy,Nm,ur,py,Ol,ce,rt,qs,Bm,_m,Fl,Dl,hy,my,Kl=w(()=>{"use strict";F();Pm();Os();Oo();dr();dy=new Set(["css","js","mjs","json","txt","html","htm","svg","xml","obj","mtl","glsl","frag","vert","md","csv"]),uy=4*1024*1024,Nm=s=>dy.has(s.slice(s.lastIndexOf(".")+1).toLowerCase()),ur=()=>d.hostFeatures?.includes("swapper-editor")??!1,py=32*1024*1024,Ol=400,ce=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},rt=(s,e,t,o="")=>{let n=ce("div",`iconBtn ${o}`);return n.title=e,n.append(ce("span","mi",s)),n.onclick=r=>{r.stopPropagation(),t()},n},qs=s=>s.slice(s.lastIndexOf("/")+1),Bm=s=>s.includes("/")?s.slice(0,s.lastIndexOf("/")):"",_m=(s,e)=>{let t={name:"",path:"",folders:new Map,files:[]},o=n=>{let r=t;for(let i of n.split("/").filter(Boolean)){let a=r.folders.get(i);a||(a={name:i,path:r.path?`${r.path}/${i}`:i,folders:new Map,files:[]},r.folders.set(i,a)),r=a}return r};for(let n of e)o(n);for(let n of s)o(Bm(n.path)).files.push({name:qs(n.path),path:n.path,size:n.size});return t},Fl=s=>s.files.length+[...s.folders.values()].reduce((e,t)=>e+Fl(t),0),Dl=class{constructor(){this.popup=null,this.list=null,this.collapsedOwn=new Set,this.expandedGame=new Set,this.search="",this.touched=new Set,this.stale=new Set,this.uploadDone=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1}open(){if(this.popup)return;if(!Hs()){window.chrome.webview.postMessage("open, swapper"),d.showNotification("This Kute version can only open the swapper folder. Update Kute for the swapper manager.",!1,6);return}this.popup=fo(Im,{onMessage:r=>this.receive(r),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1,this.uploadDone?.(null),this.uploadDone=null}),e.querySelector("#swFolder").onclick=()=>this.send("reveal",{path:""}),e.querySelector("#swReload").onclick=()=>this.send("list",{}),e.querySelector("#swRefreshNow").onclick=()=>location.reload(),e.querySelector("#swNewFolder").onclick=()=>this.newFolder("");let o=e.querySelector("#swNewFile");ur()||(o.style.display="none"),o.onclick=()=>this.newFile(""),ot(e.querySelector("#swOwnColumn"),r=>this.drop("",r));let n=e.querySelector("#swSearch");n.value=this.search,n.oninput=()=>{this.search=n.value.trim().toLowerCase(),this.renderGame()},e.querySelector("#swOwnTree").textContent="Loading...",this.send("list",{}),cr()||window.addEventListener("focus",()=>{!this.editing&&!this.uploadDone&&this.send("list",{})},{signal:t})}send(e,t){window.chrome.webview.postMessage(`swapper-${e} ${JSON.stringify(t)}`)}async drop(e,t){let o=t;!e&&o.every(({path:n})=>n.toLowerCase().startsWith("swapper/"))&&(o=o.map(({path:n,file:r})=>({path:n.slice(8),file:r}))),await this.upload(o.map(({path:n,file:r})=>({path:e?`${e}/${n}`:n,file:r})))}async replace(e,t){if(!this.popup)return;if(t.length!==1){this.popup.showError("Drop exactly one file onto a game file. Drop several onto a folder instead.");return}let[{file:o}]=t,n=r=>r.slice(r.lastIndexOf(".")+1).toLowerCase();if(n(o.name)!==n(e)){let r=`${o.name} is saved as ${qs(e)}, the game will read it as .${n(e)}. Go ahead?`;if(!await Re(this.popup.shadow,"Different file type",r,"Save anyway"))return}await this.upload([{path:e,file:o}])}async upload(e){let t=[];for(let{path:o,file:n}of e){if(!this.popup)return;if(n.size>py){t.push(`${o}: larger than 32 MB, put it in with Open swapper folder`);continue}let r=await Ll(n),i=await new Promise(a=>{this.uploadDone=a,this.send("upload",{path:o,data:r})});i?t.push(i):this.touched.add(o.toLowerCase())}this.send("list",{}),t.length&&this.popup?.showError(t.join(` -`))}receive(e){if(e.managerError&&this.popup?.showError(e.managerError),e.swapperUploaded){let o=this.uploadDone;this.uploadDone=null,o?.(e.swapperUploaded.error??null)}if(e.swapperSource&&e.swapperSource.path===this.pendingRead&&(this.pendingRead=null,typeof e.swapperSource.content=="string"?this.showEditor(e.swapperSource.path,e.swapperSource.content):this.popup?.showError(`${e.swapperSource.path} could not be read as text.`)),e.swapperWritten&&this.saving&&(this.saving=!1,e.swapperWritten.error?this.popup?.showError(e.swapperWritten.error):this.editing&&(this.touched.add(this.editing.path.toLowerCase()),this.editing.editor.markSaved(),this.editing.closeAfterSave&&this.closeEditor())),e.swapperChanged&&!this.editing&&!this.uploadDone&&this.send("list",{}),!e.swapper)return;let t=this.list;this.list=e.swapper,t&&this.applyChanges(t,e.swapper),this.render()}applyChanges(e,t){let o=c=>new Map(c.files.map(u=>[u.path.toLowerCase(),u.size])),n=o(e),r=o(t),i=new Set(this.touched);if(this.touched.clear(),e.enabled!==t.enabled)for(let c of[...n.keys(),...r.keys()])i.add(c);for(let[c,u]of r)n.get(c)!==u&&i.add(c);for(let c of n.keys())r.has(c)||i.add(c);if(!i.size)return;let a=new Set([...i].filter(c=>c.endsWith(".css")));a.size&&!cr()&&Fs(a);let l=new Set(t.seen.map(c=>c.toLowerCase()));for(let c of i)!a.has(c)&&l.has(c)&&this.stale.add(c)}get(e){return this.popup?.shadow.querySelector(e)}render(){if(!this.popup||!this.list)return;let e=this.get("#swNotice"),t=this.list.enabled===!1;e.hidden=!t&&!this.stale.size;let o=this.stale.size;e.querySelector("span").textContent=t?"The swapper is switched off (Settings, Customization), none of these files are used.":`The game already loaded ${o===1?"1 changed file":`${o} changed files`}, ${o===1?"it changes":"they change"} after a page refresh.`,this.renderOwn(),this.renderGame()}renderOwn(){if(!this.list)return;let e=this.get("#swOwnTree");e.textContent="";let t=_m(this.list.files,this.list.dirs);if(this.get("#swOwnCount").textContent=`${this.list.files.length} file${this.list.files.length===1?"":"s"}`,!this.list.files.length&&!this.list.dirs.length){e.append(ce("div","treeNote","Nothing swapped yet. Drop a file onto one of the game files on the right, or drop a whole swapper pack here."));return}let o=new Map(this.list.seen.map(i=>[i.toLowerCase(),i])),n=new Map;for(let i of this.list.seen){let a=qs(i).toLowerCase();n.set(a,[...n.get(a)??[],i])}let r=(i,a)=>{for(let l of[...i.folders.values()].sort((c,u)=>c.name.localeCompare(u.name))){let c=this.collapsedOwn.has(l.path),u=this.folderRow(l.name,a,!c,`${Fl(l)}`);u.onclick=()=>{c?this.collapsedOwn.delete(l.path):this.collapsedOwn.add(l.path),this.renderOwn()};let h=u.querySelector(".scriptActions");ur()&&h?.append(rt("note_add","New file inside",()=>this.newFile(l.path))),h?.append(rt("create_new_folder","New folder inside",()=>this.newFolder(l.path)),rt("drive_file_rename_outline","Rename or move",()=>this.move(l.path)),rt("folder_open","Open in Explorer",()=>this.send("reveal",{path:l.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(l.path),"danger")),ot(u,p=>this.drop(l.path,p)),e.append(u),c||r(l,a+1)}for(let l of[...i.files].sort((c,u)=>c.name.localeCompare(u.name)))e.append(this.ownFileRow(l,a,o,n))};r(t,0)}folderRow(e,t,o,n){let r=ce("div","node folder");return r.style.setProperty("--depth",String(t)),r.append(ce("span","mi",o?"expand_more":"chevron_right"),ce("span","mi kind",o?"folder_open":"folder")),r.append(ce("span","nodeName",e),ce("span","nodeSize",n),ce("div","scriptActions")),r}ownFileRow(e,t,o,n){let r=ce("div","node");r.style.setProperty("--depth",String(t+1)),r.append(ce("span","mi","description"),ce("span","nodeName",e.name),ce("span","nodeSize",go(e.size)));let i=o.get(e.path.toLowerCase()),a=(n.get(e.name.toLowerCase())??[]).filter(c=>c.toLowerCase()!==e.path.toLowerCase());if(i){let c=ce("span","state ok","Used");c.title=`The game loaded krunker.io/${i} this session, this file replaced it.`,r.append(c)}else if(a.length){let[c]=a,u=ce("span","state warn","Wrong folder?");u.title=`The game asks for this file as ${a.join(", ")}`;let h=ce("div","btn small","Move there");h.title=`Move to ${c}`,h.onclick=()=>this.send("move",{from:e.path,to:c}),r.append(u,h)}else{let c=ce("span","state","Not requested");c.title="The game did not ask for this path in this session. It may still come (another map, a skin), or the path does not match any game file.",r.append(c)}let l=ce("div","scriptActions");return ur()&&Nm(e.path)&&e.size<=uy&&(l.append(rt("edit","Edit",()=>this.edit(e.path))),r.ondblclick=()=>this.edit(e.path)),l.append(rt("drive_file_rename_outline","Rename or move",()=>this.move(e.path)),rt("folder_open","Show in Explorer",()=>this.send("reveal",{path:e.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(e.path),"danger")),r.append(l),ot(r,c=>this.drop(Bm(e.path),c)),r}renderGame(){if(!this.list||!this.popup)return;let e=this.get("#swGameTree");e.textContent="";let{seen:t}=this.list;this.get("#swGameCount").textContent=`${t.length} loaded this session`;let o=new Set(this.list.files.map(a=>a.path.toLowerCase()));if(!t.length){e.append(ce("div","treeNote","The game has not loaded any files yet. Play a round or open a menu, then Reload list."));return}let n=(a,l)=>{let c=ce("div","node");if(c.style.setProperty("--depth",String(l)),c.title=`krunker.io/${a} -Drop a file here to replace it`,c.append(ce("span","mi","insert_drive_file"),ce("span","nodeName",l?qs(a):a)),o.has(a.toLowerCase())&&c.append(ce("span","swapped","swapped")),ur()&&Nm(a)){let u=this.list?.files.find(p=>p.path.toLowerCase()===a.toLowerCase()),h=ce("div","scriptActions");u?h.append(rt("edit","Edit your swap",()=>this.edit(u.path))):h.append(rt("edit_note","Edit a copy, saving it swaps the file",()=>this.editCopy(a))),c.append(h)}return ot(c,u=>this.replace(a,u)),c};if(this.search){let a=t.filter(l=>l.toLowerCase().includes(this.search));for(let l of a.slice(0,Ol))e.append(n(l,0));a.length||e.append(ce("div","treeNote","No game file matches.")),a.length>Ol&&e.append(ce("div","treeNote",`${a.length-Ol} more, search for something longer.`));return}let r=_m(t.map(a=>({path:a,size:0})),[]),i=(a,l)=>{for(let c of[...a.folders.values()].sort((u,h)=>u.name.localeCompare(h.name))){let u=this.expandedGame.has(c.path),h=this.folderRow(c.name,l,u,`${Fl(c)}`);h.title="Drop files here to put them into this folder",h.onclick=()=>{u?this.expandedGame.delete(c.path):this.expandedGame.add(c.path),this.renderGame()},ot(h,p=>this.drop(c.path,p)),e.append(h),u&&i(c,l+1)}for(let c of[...a.files].sort((u,h)=>u.name.localeCompare(h.name)))e.append(n(c.path,l+1))};i(r,0)}async newFile(e){if(!this.popup)return;let t=await st(this.popup.shadow,"New file",e?`${e}/new.css`:"css/new.css","A path inside the swapper folder, the same path the game loads the file from");if(!t)return;let o=t.replace(/^\/+/,"");if(this.list?.files.some(n=>n.path.toLowerCase()===o.toLowerCase())){this.popup.showError(`${o} already exists, edit it instead.`);return}this.showEditor(o,"",!0)}edit(e){this.pendingRead||this.editing||(this.pendingRead=e,this.send("read",{path:e}))}async editCopy(e){if(this.pendingRead||this.editing)return;this.pendingRead=e;let t=null;for(let o of["https://krunker.io","https://assets.krunker.io"])try{let n=await fetch(`${o}/${e}`);if(n.ok){t=await n.text();break}}catch{}this.pendingRead===e&&(this.pendingRead=null,t===null&&(this.popup?.showError(`Could not download krunker.io/${e}, starting with an empty file.`),t=""),this.showEditor(e,t,!0))}showEditor(e,t,o=!1){if(!this.popup)return;let n=this.get("#swEditor");this.get(".swapColumns").style.display="none",n.style.display="";let{editor:r}=po(n,{title:e,content:t,language:Ka(e),isNew:o,onSave:i=>{!this.editing||this.saving||(this.saving=!0,this.editing.closeAfterSave=i,this.send("write",{path:e,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={path:e,editor:r,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Re(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||this.closeEditor()}closeEditor(){if(this.editing=null,!this.popup)return;let e=this.get("#swEditor");e.textContent="",e.style.display="none",this.get(".swapColumns").style.display="",this.render()}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Re(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}async newFolder(e){if(!this.popup)return;let t=await st(this.popup.shadow,"New folder",e?`${e}/`:"textures","A path inside the swapper folder, for example textures/weapons");t&&this.send("mkdir",{path:t})}async move(e){if(!this.popup)return;let t=await st(this.popup.shadow,"Rename or move",e,"The new path inside the swapper folder. Change the folders in front to move it.");!t||t===e||this.send("move",{from:e,to:t})}async remove(e){!this.popup||!await Re(this.popup.shadow,`Delete ${qs(e)}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||this.send("delete",{path:e})}},hy=new Dl,my=()=>hy.open()});var zm={};var jl=w(()=>{"use strict";F();Qo();dr();d.userscriptManager={open:()=>{Promise.resolve().then(()=>(Hl(),zl)).then(s=>s.open()).catch(s=>console.error("[kute] userscript manager:",s))}};d.settings.toggleUserscripts=s=>{if(d.settings.data.userscripts=s,s)At()?To(null,!1,!0):d.userscriptManager.masterChanged||d.showNotification("Refresh the page to start your userscripts.",!1,5);else{let e=(Xe?.entries??[]).filter(t=>(t.state==="running"||t.state==="waiting")&&!t.stop()).map(t=>t.meta.name||t.key);e.length&&d.showNotification(`${e.join(", ")} cannot be stopped and keeps running until the next refresh.`,!1,6)}d.userscriptManager.masterChanged?.(s)};window.chrome.webview.addEventListener("message",s=>{let e=s.data?.swapperChanged?.css;Array.isArray(e)&&e.length&&Fs(new Set(e.map(String)))});d.swapperManager={open:()=>{Promise.resolve().then(()=>(Kl(),ql)).then(s=>s.open()).catch(s=>console.error("[kute] swapper manager:",s))}};d.customCss={open:()=>{Promise.resolve().then(()=>(_l(),Nl)).then(s=>s.open()).catch(s=>console.error("[kute] custom css:",s))}}});var Om={};A(Om,{default:()=>W});var Ul,fy,gy,Hm,Gl,by,W,xe=w(()=>{"use strict";F();It();Ul="kute_market_session",fy="x-kute-session",gy=3e3,Hm=3600*1e3,Gl=class{constructor(){this.sessionPromise=null,this.memorySession=null,this.cache=new Map,this.lastError="",this.retryAt=0}loggedIn(){try{return localStorage.getItem("krunker_token")!==null}catch{return!1}}hostSupported(){return d.hostFeatures?.includes("market-attest")===!0}stored(){if(this.memorySession&&Date.now()t.expiresAt-Hm?null:t}catch{return null}}forget(e){if(this.stored()?.session===e){try{localStorage.removeItem(Ul)}catch{}this.memorySession=null}}attest(e){return new Promise(t=>{let o=0,n=r=>{let i=null;try{i=typeof r.data=="string"?JSON.parse(r.data):r.data}catch{return}let a=i?.marketAttest;!a||a.challenge!==e||(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(a))};o=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},gy),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(`market-attest, ${e}, ${this.loggedIn()}`)})}session(){let e=this.stored();return e?Promise.resolve(e.session):(this.sessionPromise??=this.newSession().finally(()=>{this.sessionPromise=null}),this.sessionPromise)}async newSession(){if(this.lastError="",!this.loggedIn())return this.lastError="log in to Krunker to use the market",null;if(!this.hostSupported())return this.lastError="this Kute version cannot sign in to the market, update Kute",null;let e=await he.requestStatus("/market/session",{method:"POST"});if(!e.data?.challenge)return this.lastError=e.status===503?"the market is not available right now":"could not reach the market",e.status===429&&this.limited(e.retryAt),null;let t=await this.attest(e.data.challenge);if(!t)return this.lastError="Kute did not answer the sign in",null;let o=await he.requestStatus("/market/session/confirm",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({challenge:t.challenge,sig:t.sig,version:t.version,loggedIn:t.loggedIn})});if(!o.data?.session)return this.lastError=typeof o.error?.error=="string"?o.error.error:"the market refused the sign in",o.status===429&&this.limited(o.retryAt),null;this.memorySession={session:o.data.session,expiresAt:o.data.expiresAt};try{localStorage.setItem(Ul,JSON.stringify(this.memorySession))}catch{}return o.data.session}async request(e,t={},o=!1){return(await this.requestStatus(e,t,o)).data}async requestStatus(e,t={},o=!1){if(Date.now()this.request(e)){let n=Date.now(),r=this.cache.get(e);if(r&&n-r.at(a===null&&this.cache.delete(e),a));if(this.cache.set(e,{at:n,ttl:t,value:i}),this.cache.size>500){let a=this.cache.keys().next();a.done||this.cache.delete(a.value)}return i}retry(){return Date.now(){let n=await this.requestStatus(o);if(n.status!==404)return n.data;let r=await this.cached(`/market/item/${e}`,3e5);if(!r)return null;let[i,a]=await Promise.all([this.cached(`/market/item/${e}/history?range=${t}`,3e5),this.cached(`/market/item/${e}/listings`,6e4)]);return{item:r,history:i,listings:a}})}async values(e){let t=[...new Set(e)].sort((n,r)=>n-r),o={};for(let n=0;nKs,RARITIES:()=>bo,formatAge:()=>Ge,formatKr:()=>Pe,formatPercent:()=>it});function Pe(s){return Number.isFinite(s)?Math.abs(s)>=1e6?`${(s/1e6).toFixed(s%1e6===0?0:1)}M`:Math.round(s).toLocaleString("en-US"):"?"}function it(s){if(s==null||!Number.isFinite(s))return"\u2013";let e=s*100;return`${e>0?"+":""}${Math.abs(e)>=100?e.toFixed(0):e.toFixed(1)} %`}function Ge(s){if(!Number.isFinite(s)||s<0)return"\u2013";let e=s/6e4;if(e<60)return`${Math.max(1,Math.round(e))} min`;let t=e/60;return t<48?`${Math.round(t)} h`:`${Math.round(t/24)} d`}var bo,Ks,We=w(()=>{"use strict";bo=[{name:"Uncommon",color:"#b2f252"},{name:"Rare",color:"#2196F3"},{name:"Epic",color:"#E040FB"},{name:"Legendary",color:"#FBC02D"},{name:"Relic",color:"#ff5722"},{name:"Contraband",color:"#f44336"},{name:"Unobtainable",color:"#ffffff"},{name:"NFT",color:"#9e9e9e"}],Ks={A:"#5ce05a",B:"#9ccc65",C:"#fbc02d",D:"#ff9800",F:"#f44336"}});var Dm={};A(Dm,{TRADE_VERDICTS:()=>jt,TYPE_NAMES:()=>Et,activityLabel:()=>Wl,change:()=>ae,empty:()=>fe,esc:()=>S,evidenceLabel:()=>Us,identity:()=>me,money:()=>T,stat:()=>ne,verdictOf:()=>js});var Et,jt,js,S,T,ae,Us,Wl,me,fe,ne,pe=w(()=>{"use strict";We();Et=["Weapons","Hats","Bodies","Melee","Sprays","Dyes","Waists","Faces","Charms","Emotes","Stickers","Skydomes","Poses","Spin tickets","Capes","Heads","Paints","Backs","Consumables"],jt={good:{label:"Favorable trade",detail:"More estimated value coming in"},fair:{label:"Fair trade",detail:"Similar estimated value"},bad:{label:"Unfavorable trade",detail:"More estimated value going out"},uncertain:{label:"Not enough evidence",detail:"Estimates are too uncertain for a verdict"}},js=s=>Object.hasOwn(jt,s)?s:"uncertain",S=s=>String(s??"").replace(/[&<>"']/g,e=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[e]??e),T=s=>s==null?"Unavailable":Pe(s),ae=s=>{if(s==null)return'No trend yet';let e="muted";return s>.005&&(e="positive"),s<-.005&&(e="negative"),`${S(it(s))}`},Us=s=>s.method?.includes("trades")?s.method.startsWith("sales")?"Sales + private trades":"Private-trade estimate":s.method?.startsWith("sales")?(s.sales7d??0)>=5?"Recent sales":"Sparse sales":"Limited evidence",Wl=s=>s.privateTrading?.trades7d?`${s.privateTrading.trades7d} private trade${s.privateTrading.trades7d===1?"":"s"} this week${s.sales7d?` + ${s.sales7d} sales`:""}`:(s.sales7d??0)>=7?"Active this week":(s.sales7d??0)>0?"Traded this week":"No reported sales this week",me=s=>`${s.thumbnail?``:'K'}${S(s.name)}${S(bo[s.rarity??-1]?.name??"Item")}`,fe=(s,e,t="")=>`
      ◇

      ${S(s)}

      ${S(e)}

      ${t}
      `,ne=(s,e,t)=>`
      ${S(s)}${e}${t}
      `});var Km={};A(Km,{default:()=>pr});var vy,vo,Ke,qm,wy,ky,yy,Vl,xy,Yl,Sy,pr,Xl=w(()=>{"use strict";F();xe();We();pe();vy=1500,vo="data-kute-market",Ke="kuteMarketLine",qm="kuteMarketCardStyle",wy=".market-card, .market-item-card",ky=` +`,oe=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},qs=(s,e,t,o="")=>{let n=oe("div",`iconBtn ${o}`);return n.title=e,n.append(oe("span","mi",s)),n.onclick=t,n},Bl=class{constructor(){this.popup=null,this.groups=[],this.openSettings=new Set,this.editing=null,this.pendingRead=null,this.pendingSave=null,this.needsRefresh=!1,this.renderQueued=!1,this.forceClose=!1,this.prefsTimers=new Map,Je&&(Je.onChange=()=>this.queueRender()),u.userscriptManager.masterChanged=e=>this.onMasterChanged(e)}masterOn(){return u.settings?.data?.userscripts!==!1}onMasterChanged(e){if(e&&!Je)this.needsRefresh=!0;else if(e&&!At())for(let t of this.groups.filter(o=>o.id==="game").flatMap(o=>o.scripts)){let o=this.entryFor(t.key);!o||!t.enabled||(o.start(),(o.tainted||o.state!=="running"&&o.state!=="waiting"&&o.state!=="error")&&(this.needsRefresh=!0))}this.updateNotice(),this.editing||this.render()}reload(e){return e.length?At()?(To(e,!0,this.masterOn()),!0):!1:!0}applyMaster(){let e=this.popup?.shadow;if(!e)return;let t=this.masterOn();e.querySelector(".managerPopup")?.classList.toggle("scriptsOff",!t);let o=e.querySelector("#usMaster");o&&(o.classList.toggle("on",t),o.querySelector(".toggle")?.classList.toggle("on",t),o.querySelector("span").textContent=t?"Userscripts on":"Userscripts off")}open(){if(this.popup)return;if(!Os()){window.chrome.webview.postMessage("open, userscripts"),u.showNotification("This Kute version can only open the scripts folder. Update Kute for the script manager.",!1,6);return}this.popup=fo(Rm,{onMessage:t=>this.receive(t),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1}),this.popup.signal.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.forceClose=!1});let{shadow:e}=this.popup;e.querySelector("#usFolder").onclick=()=>this.send("reveal",{}),e.querySelector("#usRefreshNow").onclick=()=>location.reload(),e.querySelector("#usMaster").onclick=()=>u.settings.changeSetting("userscripts",!this.masterOn(),!1),this.applyMaster(),this.body().textContent="Loading...",this.send("list",{})}send(e,t){window.chrome.webview.postMessage(`scripts-${e} ${JSON.stringify(t)}`)}body(){return this.popup?.shadow.querySelector("#usBody")}receive(e){if(e.managerError&&(this.popup?.showError(e.managerError),this.pendingSave&&(this.pendingSave=null)),e.userscripts){if(this.groups=e.userscripts.groups??[],this.pendingSave&&this.editing){let{closeAfter:t}=this.pendingSave;this.pendingSave=null,this.editing.editor.markSaved(),this.editing.group==="game"&&!this.reload([this.editing.file])&&(this.needsRefresh=!0),t&&(this.editing=null)}this.editing||this.render(),this.updateNotice()}if(e.userscriptSource&&e.userscriptSource.key===this.pendingRead){this.pendingRead=null;let t=this.findScript(e.userscriptSource.key);t&&typeof e.userscriptSource.content=="string"?this.showEditor(t.group,t.file,e.userscriptSource.content):this.popup?.showError("The script could not be read.")}}findScript(e){for(let t of this.groups){let o=t.scripts.find(n=>n.key===e);if(o)return o}}entryFor(e){return Je?.entries?.find(t=>t.key===e)}queueRender(){!this.popup||this.renderQueued||(this.renderQueued=!0,queueMicrotask(()=>{this.renderQueued=!1,this.updateNotice(),this.popup&&!this.editing&&this.render()}))}updateNotice(){let e=this.popup?.shadow.querySelector("#usRefresh");if(!e)return;let t=this.masterOn(),o=Je?.entries?.some(n=>n.outdated||!t&&n.state==="running");e.hidden=!this.needsRefresh&&!o}render(){let e=this.body();if(!(!e||!this.popup)){this.applyMaster(),e.textContent="";for(let t of this.groups)e.append(this.renderGroup(t))}}renderGroup(e){let t=oe("div","group"),o=oe("div","groupHead");o.append(oe("div","groupTitle",e.label),oe("div","groupRuns",`runs in ${e.runs}`));let n=oe("div","btn small");n.append(oe("span","mi","add"),"New script"),n.onclick=()=>this.createScript(e.id),o.append(n),t.append(o),e.scripts.length===0&&t.append(oe("div","empty","No scripts yet."));for(let r of e.scripts)this.renderScript(t,e,r);return t.append(oe("div","dropZone",`Drop .js files here to add them to ${e.label}`)),st(t,r=>this.importFiles(e,r)),t}async importFiles(e,t){if(!this.popup)return;let o=[],n=t.filter(({file:a})=>{if(!/\.js$/i.test(a.name))o.push(`${a.name}: not a .js file`);else if(a.size>ry)o.push(`${a.name}: larger than 4 MB`);else return!0;return!1}),r=new Set(e.scripts.map(a=>a.file.toLowerCase())),i=n.filter(({file:a})=>r.has(a.name.toLowerCase())).map(({file:a})=>a.name);if(i.length){let a=`${i.join(", ")} already exist in ${e.label}. Replace them with the dropped files?`;if(!await Re(this.popup.shadow,"Replace scripts?",a,"Replace"))return}for(let{file:a}of n)this.send("write",{group:e.id,file:a.name,content:await a.text(),noList:!0});this.send("list",{}),e.id==="game"&&!this.reload(n.map(({file:a})=>a.name))&&(this.needsRefresh=!0),this.updateNotice(),o.length&&this.popup?.showError(o.join(` +`))}stateOf(e,t,o){return t?.state==="error"?["Error","bad",t.error]:t?.outdated?["Old version","warn","Your changes apply after a refresh, this script has no unload to stop the running version"]:this.masterOn()?o||!Je?e.enabled?["On","ok",""]:["Off","",""]:e.enabled?t?.state==="running"?["Running","ok",t.late?"Started after the page loaded. It is a document-start script, refresh if it misses something":""]:t?.state==="waiting"?["Starting","ok","Starts once the page has loaded"]:!t&&At()?["Starting","ok",""]:["After refresh","warn","On, starts with the next page load"]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:["Off","",""]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:e.enabled?["On","","Runs once userscripts are on"]:["Off","",""]}renderScript(e,t,o){let n=t.id!=="game",r=n?void 0:this.entryFor(o.key),i=r?.meta??o.meta,a=oe("div","scriptRow"),l=oe("div",`toggle${o.enabled?" on":""}`);l.title=o.enabled?"Turn off":"Turn on",l.onclick=()=>this.toggle(o,r,n);let c=oe("div","scriptInfo"),d=oe("div","scriptName",i.name||o.file);i.version&&d.append(oe("span","version",`v${i.version}`)),i.author&&d.append(oe("span","author",`by ${i.author}`)),c.append(d);let p=[i.desc,i.name?o.file:"",go(o.size)].filter(Boolean).join(" \xB7 ");c.append(oe("div","scriptDesc",p)),c.title=[i.desc,`${o.file}, ${o.runAt}${o.priority?`, priority ${o.priority}`:""}`].filter(Boolean).join(` +`);let[h,f,m]=this.stateOf(o,r,n),g=oe("div",`state ${f}`,h);m&&(g.title=m);let b=oe("div","scriptActions");r?.settings&&Object.keys(r.settings).length&&b.append(qs("tune","Script settings",()=>{this.openSettings.has(o.key)?this.openSettings.delete(o.key):this.openSettings.add(o.key),this.render()})),b.append(qs("edit","Edit",()=>{this.pendingRead=o.key,this.send("read",{key:o.key})}),qs("swap_horiz",`Move to ${n?"Game":"Social"}`,()=>this.move(o,r,n)),qs("folder_open","Show in folder",()=>this.send("reveal",{key:o.key})),qs("delete","Delete (goes to the recycle bin)",()=>this.deleteScript(o,r),"danger")),a.append(l,c,g,b),e.append(a),r?.settings&&this.openSettings.has(o.key)&&e.append(this.renderSettings(o,r))}toggle(e,t,o){e.enabled=!e.enabled,this.send("toggle",{key:e.key,enabled:e.enabled}),o||this.masterOn()&&(t?e.enabled?(t.start(),(t.tainted||t.state!=="running"&&t.state!=="waiting"&&t.state!=="error")&&(this.needsRefresh=!0)):t.stop()||(this.needsRefresh=!0):e.enabled&&At()?To([e.key],!1,!0):e.enabled&&(this.needsRefresh=!0)),this.updateNotice(),this.render()}move(e,t,o){t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("move",{key:e.key,group:o?"game":"social"}),o&&!this.reload([e.file])&&(this.needsRefresh=!0),this.updateNotice()}async deleteScript(e,t){!this.popup||!await Re(this.popup.shadow,`Delete ${e.file}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||(t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("delete",{key:e.key}))}async createScript(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New script","my-script.js","The file name. It ends up in the scripts folder of this group.");if(!t)return;let o=/\.js$/i.test(t)?t:`${t}.js`;if(this.groups.some(r=>r.id===e&&r.scripts.some(i=>i.file.toLowerCase()===o.toLowerCase()))){this.popup.showError(`${o} already exists in this group.`);return}this.showEditor(e,o,iy.replaceAll("{{name}}",o.replace(/\.js$/i,"")),!0)}renderSettings(e,t){let o=oe("div","scriptSettings"),n=t.settings??{},r=()=>{clearTimeout(this.prefsTimers.get(e.key)),this.prefsTimers.set(e.key,setTimeout(()=>{this.prefsTimers.delete(e.key);let a=Object.fromEntries(Object.entries(n).map(([l,c])=>[l,c.value]));this.send("prefs",{key:e.key,prefs:a})},300))},i=(a,l)=>{t.setPref(a,l),r()};for(let[a,l]of Object.entries(n)){let c=oe("div","settingRow"),d=oe("div","settingLabel",l.title||a);l.desc&&d.append(oe("small","",l.desc)),c.append(d,this.settingControl(a,l,i)),o.append(c)}return o}settingControl(e,t,o){switch(t.type){case"bool":{let n=oe("div",`toggle${t.value?" on":""}`);return n.onclick=()=>{o(e,!t.value),n.classList.toggle("on",!!t.value)},n}case"num":{let n=oe("div");n.style.cssText="display:flex;gap:.6em;align-items:center";let r=oe("input");if(r.type="number",r.style.width="90px",r.value=String(t.value),t.min!==void 0&&(r.min=String(t.min)),t.max!==void 0&&(r.max=String(t.max)),r.step=String(t.step??"any"),t.min!==void 0&&t.max!==void 0){let i=oe("input");i.type="range",i.min=String(t.min),i.max=String(t.max),i.step=String(t.step??"any"),i.value=String(t.value),i.oninput=()=>{r.value=i.value,o(e,Number(i.value))},r.onchange=()=>{i.value=r.value},n.append(i)}return r.addEventListener("change",()=>{r.value!==""&&Number.isFinite(Number(r.value))&&o(e,Number(r.value))}),n.append(r),n}case"sel":{let n=oe("select");for(let r of t.opts??[]){let i=oe("option","",String(r));i.value=String(r),i.selected=r===t.value,n.append(i)}return n.onchange=()=>{let r=(t.opts??[]).find(i=>String(i)===n.value);o(e,r??n.value)},n}case"color":{let n=oe("input");return n.type="color",n.value=String(t.value),n.onchange=()=>o(e,n.value),n}case"text":{let n=oe("input");return n.type="text",n.value=String(t.value??""),n.onchange=()=>o(e,n.value),n}case"keybind":{let n=i=>[i?.ctrl&&"Ctrl",i?.alt&&"Alt",i?.shift&&"Shift",i?.key||"none"].filter(Boolean).join(" + "),r=oe("div","btn small",n(t.value));return r.onclick=()=>{r.textContent="Press a key...";let i=a=>{if(["Control","Alt","Shift","Meta"].includes(a.key))return;a.preventDefault(),a.stopPropagation(),window.removeEventListener("keydown",i,!0);let l={key:a.key.toLowerCase(),ctrl:a.ctrlKey,alt:a.altKey,shift:a.shiftKey};o(e,l),r.textContent=n(l)};window.addEventListener("keydown",i,!0)},r}default:return oe("div","scriptFile",`unsupported type "${t.type}"`)}}showEditor(e,t,o,n=!1){let r=this.body();if(!r)return;let{editor:i}=po(r,{title:t,content:o,language:"js",isNew:n,onSave:a=>{this.editing&&(this.pendingSave={closeAfter:a},this.editing.closeAfterSave=a,this.send("write",{group:e,file:t,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={group:e,file:t,editor:i,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Re(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||(this.editing=null,this.render())}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Re(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},ay=new Bl,ly=()=>ay.open()});var Im,Pm=w(()=>{Im=`

      Swapper

      refreshReload list
      folder_openOpen swapper folder
      ×
      A file in the swapper folder replaces the game's file with the same path: swapper/textures/pistol.png replaces krunker.io/textures/pistol.png. Easiest way: drop your file onto the game file it should replace (right side), it gets the right folder and name. Folder names do not care about case. Text files like CSS can be written right here: New file, or the edit button on a game file to start from a copy.
      Your swaps
      note_addNew file
      create_new_folderNew folder
      Drop files or folders here to put them into the swapper folder as they are
      Game files
      `});var ql={};A(ql,{open:()=>my});var dy,uy,Nm,pr,py,Ol,ce,rt,Ks,Bm,_m,Dl,Fl,hy,my,Kl=w(()=>{"use strict";D();Pm();Ds();Oo();ur();dy=new Set(["css","js","mjs","json","txt","html","htm","svg","xml","obj","mtl","glsl","frag","vert","md","csv"]),uy=4*1024*1024,Nm=s=>dy.has(s.slice(s.lastIndexOf(".")+1).toLowerCase()),pr=()=>u.hostFeatures?.includes("swapper-editor")??!1,py=32*1024*1024,Ol=400,ce=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},rt=(s,e,t,o="")=>{let n=ce("div",`iconBtn ${o}`);return n.title=e,n.append(ce("span","mi",s)),n.onclick=r=>{r.stopPropagation(),t()},n},Ks=s=>s.slice(s.lastIndexOf("/")+1),Bm=s=>s.includes("/")?s.slice(0,s.lastIndexOf("/")):"",_m=(s,e)=>{let t={name:"",path:"",folders:new Map,files:[]},o=n=>{let r=t;for(let i of n.split("/").filter(Boolean)){let a=r.folders.get(i);a||(a={name:i,path:r.path?`${r.path}/${i}`:i,folders:new Map,files:[]},r.folders.set(i,a)),r=a}return r};for(let n of e)o(n);for(let n of s)o(Bm(n.path)).files.push({name:Ks(n.path),path:n.path,size:n.size});return t},Dl=s=>s.files.length+[...s.folders.values()].reduce((e,t)=>e+Dl(t),0),Fl=class{constructor(){this.popup=null,this.list=null,this.collapsedOwn=new Set,this.expandedGame=new Set,this.search="",this.touched=new Set,this.stale=new Set,this.uploadDone=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1}open(){if(this.popup)return;if(!Os()){window.chrome.webview.postMessage("open, swapper"),u.showNotification("This Kute version can only open the swapper folder. Update Kute for the swapper manager.",!1,6);return}this.popup=fo(Im,{onMessage:r=>this.receive(r),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1,this.uploadDone?.(null),this.uploadDone=null}),e.querySelector("#swFolder").onclick=()=>this.send("reveal",{path:""}),e.querySelector("#swReload").onclick=()=>this.send("list",{}),e.querySelector("#swRefreshNow").onclick=()=>location.reload(),e.querySelector("#swNewFolder").onclick=()=>this.newFolder("");let o=e.querySelector("#swNewFile");pr()||(o.style.display="none"),o.onclick=()=>this.newFile(""),st(e.querySelector("#swOwnColumn"),r=>this.drop("",r));let n=e.querySelector("#swSearch");n.value=this.search,n.oninput=()=>{this.search=n.value.trim().toLowerCase(),this.renderGame()},e.querySelector("#swOwnTree").textContent="Loading...",this.send("list",{}),dr()||window.addEventListener("focus",()=>{!this.editing&&!this.uploadDone&&this.send("list",{})},{signal:t})}send(e,t){window.chrome.webview.postMessage(`swapper-${e} ${JSON.stringify(t)}`)}async drop(e,t){let o=t;!e&&o.every(({path:n})=>n.toLowerCase().startsWith("swapper/"))&&(o=o.map(({path:n,file:r})=>({path:n.slice(8),file:r}))),await this.upload(o.map(({path:n,file:r})=>({path:e?`${e}/${n}`:n,file:r})))}async replace(e,t){if(!this.popup)return;if(t.length!==1){this.popup.showError("Drop exactly one file onto a game file. Drop several onto a folder instead.");return}let[{file:o}]=t,n=r=>r.slice(r.lastIndexOf(".")+1).toLowerCase();if(n(o.name)!==n(e)){let r=`${o.name} is saved as ${Ks(e)}, the game will read it as .${n(e)}. Go ahead?`;if(!await Re(this.popup.shadow,"Different file type",r,"Save anyway"))return}await this.upload([{path:e,file:o}])}async upload(e){let t=[];for(let{path:o,file:n}of e){if(!this.popup)return;if(n.size>py){t.push(`${o}: larger than 32 MB, put it in with Open swapper folder`);continue}let r=await Rl(n),i=await new Promise(a=>{this.uploadDone=a,this.send("upload",{path:o,data:r})});i?t.push(i):this.touched.add(o.toLowerCase())}this.send("list",{}),t.length&&this.popup?.showError(t.join(` +`))}receive(e){if(e.managerError&&this.popup?.showError(e.managerError),e.swapperUploaded){let o=this.uploadDone;this.uploadDone=null,o?.(e.swapperUploaded.error??null)}if(e.swapperSource&&e.swapperSource.path===this.pendingRead&&(this.pendingRead=null,typeof e.swapperSource.content=="string"?this.showEditor(e.swapperSource.path,e.swapperSource.content):this.popup?.showError(`${e.swapperSource.path} could not be read as text.`)),e.swapperWritten&&this.saving&&(this.saving=!1,e.swapperWritten.error?this.popup?.showError(e.swapperWritten.error):this.editing&&(this.touched.add(this.editing.path.toLowerCase()),this.editing.editor.markSaved(),this.editing.closeAfterSave&&this.closeEditor())),e.swapperChanged&&!this.editing&&!this.uploadDone&&this.send("list",{}),!e.swapper)return;let t=this.list;this.list=e.swapper,t&&this.applyChanges(t,e.swapper),this.render()}applyChanges(e,t){let o=c=>new Map(c.files.map(d=>[d.path.toLowerCase(),d.size])),n=o(e),r=o(t),i=new Set(this.touched);if(this.touched.clear(),e.enabled!==t.enabled)for(let c of[...n.keys(),...r.keys()])i.add(c);for(let[c,d]of r)n.get(c)!==d&&i.add(c);for(let c of n.keys())r.has(c)||i.add(c);if(!i.size)return;let a=new Set([...i].filter(c=>c.endsWith(".css")));a.size&&!dr()&&Fs(a);let l=new Set(t.seen.map(c=>c.toLowerCase()));for(let c of i)!a.has(c)&&l.has(c)&&this.stale.add(c)}get(e){return this.popup?.shadow.querySelector(e)}render(){if(!this.popup||!this.list)return;let e=this.get("#swNotice"),t=this.list.enabled===!1;e.hidden=!t&&!this.stale.size;let o=this.stale.size;e.querySelector("span").textContent=t?"The swapper is switched off (Settings, Customization), none of these files are used.":`The game already loaded ${o===1?"1 changed file":`${o} changed files`}, ${o===1?"it changes":"they change"} after a page refresh.`,this.renderOwn(),this.renderGame()}renderOwn(){if(!this.list)return;let e=this.get("#swOwnTree");e.textContent="";let t=_m(this.list.files,this.list.dirs);if(this.get("#swOwnCount").textContent=`${this.list.files.length} file${this.list.files.length===1?"":"s"}`,!this.list.files.length&&!this.list.dirs.length){e.append(ce("div","treeNote","Nothing swapped yet. Drop a file onto one of the game files on the right, or drop a whole swapper pack here."));return}let o=new Map(this.list.seen.map(i=>[i.toLowerCase(),i])),n=new Map;for(let i of this.list.seen){let a=Ks(i).toLowerCase();n.set(a,[...n.get(a)??[],i])}let r=(i,a)=>{for(let l of[...i.folders.values()].sort((c,d)=>c.name.localeCompare(d.name))){let c=this.collapsedOwn.has(l.path),d=this.folderRow(l.name,a,!c,`${Dl(l)}`);d.onclick=()=>{c?this.collapsedOwn.delete(l.path):this.collapsedOwn.add(l.path),this.renderOwn()};let p=d.querySelector(".scriptActions");pr()&&p?.append(rt("note_add","New file inside",()=>this.newFile(l.path))),p?.append(rt("create_new_folder","New folder inside",()=>this.newFolder(l.path)),rt("drive_file_rename_outline","Rename or move",()=>this.move(l.path)),rt("folder_open","Open in Explorer",()=>this.send("reveal",{path:l.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(l.path),"danger")),st(d,h=>this.drop(l.path,h)),e.append(d),c||r(l,a+1)}for(let l of[...i.files].sort((c,d)=>c.name.localeCompare(d.name)))e.append(this.ownFileRow(l,a,o,n))};r(t,0)}folderRow(e,t,o,n){let r=ce("div","node folder");return r.style.setProperty("--depth",String(t)),r.append(ce("span","mi",o?"expand_more":"chevron_right"),ce("span","mi kind",o?"folder_open":"folder")),r.append(ce("span","nodeName",e),ce("span","nodeSize",n),ce("div","scriptActions")),r}ownFileRow(e,t,o,n){let r=ce("div","node");r.style.setProperty("--depth",String(t+1)),r.append(ce("span","mi","description"),ce("span","nodeName",e.name),ce("span","nodeSize",go(e.size)));let i=o.get(e.path.toLowerCase()),a=(n.get(e.name.toLowerCase())??[]).filter(c=>c.toLowerCase()!==e.path.toLowerCase());if(i){let c=ce("span","state ok","Used");c.title=`The game loaded krunker.io/${i} this session, this file replaced it.`,r.append(c)}else if(a.length){let[c]=a,d=ce("span","state warn","Wrong folder?");d.title=`The game asks for this file as ${a.join(", ")}`;let p=ce("div","btn small","Move there");p.title=`Move to ${c}`,p.onclick=()=>this.send("move",{from:e.path,to:c}),r.append(d,p)}else{let c=ce("span","state","Not requested");c.title="The game did not ask for this path in this session. It may still come (another map, a skin), or the path does not match any game file.",r.append(c)}let l=ce("div","scriptActions");return pr()&&Nm(e.path)&&e.size<=uy&&(l.append(rt("edit","Edit",()=>this.edit(e.path))),r.ondblclick=()=>this.edit(e.path)),l.append(rt("drive_file_rename_outline","Rename or move",()=>this.move(e.path)),rt("folder_open","Show in Explorer",()=>this.send("reveal",{path:e.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(e.path),"danger")),r.append(l),st(r,c=>this.drop(Bm(e.path),c)),r}renderGame(){if(!this.list||!this.popup)return;let e=this.get("#swGameTree");e.textContent="";let{seen:t}=this.list;this.get("#swGameCount").textContent=`${t.length} loaded this session`;let o=new Set(this.list.files.map(a=>a.path.toLowerCase()));if(!t.length){e.append(ce("div","treeNote","The game has not loaded any files yet. Play a round or open a menu, then Reload list."));return}let n=(a,l)=>{let c=ce("div","node");if(c.style.setProperty("--depth",String(l)),c.title=`krunker.io/${a} +Drop a file here to replace it`,c.append(ce("span","mi","insert_drive_file"),ce("span","nodeName",l?Ks(a):a)),o.has(a.toLowerCase())&&c.append(ce("span","swapped","swapped")),pr()&&Nm(a)){let d=this.list?.files.find(h=>h.path.toLowerCase()===a.toLowerCase()),p=ce("div","scriptActions");d?p.append(rt("edit","Edit your swap",()=>this.edit(d.path))):p.append(rt("edit_note","Edit a copy, saving it swaps the file",()=>this.editCopy(a))),c.append(p)}return st(c,d=>this.replace(a,d)),c};if(this.search){let a=t.filter(l=>l.toLowerCase().includes(this.search));for(let l of a.slice(0,Ol))e.append(n(l,0));a.length||e.append(ce("div","treeNote","No game file matches.")),a.length>Ol&&e.append(ce("div","treeNote",`${a.length-Ol} more, search for something longer.`));return}let r=_m(t.map(a=>({path:a,size:0})),[]),i=(a,l)=>{for(let c of[...a.folders.values()].sort((d,p)=>d.name.localeCompare(p.name))){let d=this.expandedGame.has(c.path),p=this.folderRow(c.name,l,d,`${Dl(c)}`);p.title="Drop files here to put them into this folder",p.onclick=()=>{d?this.expandedGame.delete(c.path):this.expandedGame.add(c.path),this.renderGame()},st(p,h=>this.drop(c.path,h)),e.append(p),d&&i(c,l+1)}for(let c of[...a.files].sort((d,p)=>d.name.localeCompare(p.name)))e.append(n(c.path,l+1))};i(r,0)}async newFile(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New file",e?`${e}/new.css`:"css/new.css","A path inside the swapper folder, the same path the game loads the file from");if(!t)return;let o=t.replace(/^\/+/,"");if(this.list?.files.some(n=>n.path.toLowerCase()===o.toLowerCase())){this.popup.showError(`${o} already exists, edit it instead.`);return}this.showEditor(o,"",!0)}edit(e){this.pendingRead||this.editing||(this.pendingRead=e,this.send("read",{path:e}))}async editCopy(e){if(this.pendingRead||this.editing)return;this.pendingRead=e;let t=null;for(let o of["https://krunker.io","https://assets.krunker.io"])try{let n=await fetch(`${o}/${e}`);if(n.ok){t=await n.text();break}}catch{}this.pendingRead===e&&(this.pendingRead=null,t===null&&(this.popup?.showError(`Could not download krunker.io/${e}, starting with an empty file.`),t=""),this.showEditor(e,t,!0))}showEditor(e,t,o=!1){if(!this.popup)return;let n=this.get("#swEditor");this.get(".swapColumns").style.display="none",n.style.display="";let{editor:r}=po(n,{title:e,content:t,language:ja(e),isNew:o,onSave:i=>{!this.editing||this.saving||(this.saving=!0,this.editing.closeAfterSave=i,this.send("write",{path:e,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={path:e,editor:r,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Re(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||this.closeEditor()}closeEditor(){if(this.editing=null,!this.popup)return;let e=this.get("#swEditor");e.textContent="",e.style.display="none",this.get(".swapColumns").style.display="",this.render()}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Re(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}async newFolder(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New folder",e?`${e}/`:"textures","A path inside the swapper folder, for example textures/weapons");t&&this.send("mkdir",{path:t})}async move(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"Rename or move",e,"The new path inside the swapper folder. Change the folders in front to move it.");!t||t===e||this.send("move",{from:e,to:t})}async remove(e){!this.popup||!await Re(this.popup.shadow,`Delete ${Ks(e)}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||this.send("delete",{path:e})}},hy=new Fl,my=()=>hy.open()});var zm={};var jl=w(()=>{"use strict";D();es();ur();u.userscriptManager={open:()=>{Promise.resolve().then(()=>(Hl(),zl)).then(s=>s.open()).catch(s=>console.error("[kute] userscript manager:",s))}};u.settings.toggleUserscripts=s=>{if(u.settings.data.userscripts=s,s)At()?To(null,!1,!0):u.userscriptManager.masterChanged||u.showNotification("Refresh the page to start your userscripts.",!1,5);else{let e=(Je?.entries??[]).filter(t=>(t.state==="running"||t.state==="waiting")&&!t.stop()).map(t=>t.meta.name||t.key);e.length&&u.showNotification(`${e.join(", ")} cannot be stopped and keeps running until the next refresh.`,!1,6)}u.userscriptManager.masterChanged?.(s)};window.chrome.webview.addEventListener("message",s=>{let e=s.data?.swapperChanged?.css;Array.isArray(e)&&e.length&&Fs(new Set(e.map(String)))});u.swapperManager={open:()=>{Promise.resolve().then(()=>(Kl(),ql)).then(s=>s.open()).catch(s=>console.error("[kute] swapper manager:",s))}};u.customCss={open:()=>{Promise.resolve().then(()=>(_l(),Nl)).then(s=>s.open()).catch(s=>console.error("[kute] custom css:",s))}}});var Om={};A(Om,{default:()=>W});var Ul,fy,gy,Hm,Gl,by,W,xe=w(()=>{"use strict";D();It();Ul="kute_market_session",fy="x-kute-session",gy=3e3,Hm=3600*1e3,Gl=class{constructor(){this.sessionPromise=null,this.memorySession=null,this.cache=new Map,this.lastError="",this.retryAt=0}loggedIn(){try{return localStorage.getItem("krunker_token")!==null}catch{return!1}}hostSupported(){return u.hostFeatures?.includes("market-attest")===!0}stored(){if(this.memorySession&&Date.now()t.expiresAt-Hm?null:t}catch{return null}}forget(e){if(this.stored()?.session===e){try{localStorage.removeItem(Ul)}catch{}this.memorySession=null}}attest(e){return new Promise(t=>{let o=0,n=r=>{let i=null;try{i=typeof r.data=="string"?JSON.parse(r.data):r.data}catch{return}let a=i?.marketAttest;!a||a.challenge!==e||(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(a))};o=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},gy),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(`market-attest, ${e}, ${this.loggedIn()}`)})}session(){let e=this.stored();return e?Promise.resolve(e.session):(this.sessionPromise??=this.newSession().finally(()=>{this.sessionPromise=null}),this.sessionPromise)}async newSession(){if(this.lastError="",!this.loggedIn())return this.lastError="log in to Krunker to use the market",null;if(!this.hostSupported())return this.lastError="this Kute version cannot sign in to the market, update Kute",null;let e=await he.requestStatus("/market/session",{method:"POST"});if(!e.data?.challenge)return this.lastError=e.status===503?"the market is not available right now":"could not reach the market",e.status===429&&this.limited(e.retryAt),null;let t=await this.attest(e.data.challenge);if(!t)return this.lastError="Kute did not answer the sign in",null;let o=await he.requestStatus("/market/session/confirm",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({challenge:t.challenge,sig:t.sig,version:t.version,loggedIn:t.loggedIn})});if(!o.data?.session)return this.lastError=typeof o.error?.error=="string"?o.error.error:"the market refused the sign in",o.status===429&&this.limited(o.retryAt),null;this.memorySession={session:o.data.session,expiresAt:o.data.expiresAt};try{localStorage.setItem(Ul,JSON.stringify(this.memorySession))}catch{}return o.data.session}async request(e,t={},o=!1){return(await this.requestStatus(e,t,o)).data}async requestStatus(e,t={},o=!1){if(Date.now()this.request(e)){let n=Date.now(),r=this.cache.get(e);if(r&&n-r.at(a===null&&this.cache.delete(e),a));if(this.cache.set(e,{at:n,ttl:t,value:i}),this.cache.size>500){let a=this.cache.keys().next();a.done||this.cache.delete(a.value)}return i}retry(){return Date.now(){let n=await this.requestStatus(o);if(n.status!==404)return n.data;let r=await this.cached(`/market/item/${e}`,3e5);if(!r)return null;let[i,a]=await Promise.all([this.cached(`/market/item/${e}/history?range=${t}`,3e5),this.cached(`/market/item/${e}/listings`,6e4)]);return{item:r,history:i,listings:a}})}async values(e){let t=[...new Set(e)].sort((n,r)=>n-r),o={};for(let n=0;njs,RARITIES:()=>bo,formatAge:()=>We,formatKr:()=>Pe,formatPercent:()=>it});function Pe(s){return Number.isFinite(s)?Math.abs(s)>=1e6?`${(s/1e6).toFixed(s%1e6===0?0:1)}M`:Math.round(s).toLocaleString("en-US"):"?"}function it(s){if(s==null||!Number.isFinite(s))return"\u2013";let e=s*100;return`${e>0?"+":""}${Math.abs(e)>=100?e.toFixed(0):e.toFixed(1)} %`}function We(s){if(!Number.isFinite(s)||s<0)return"\u2013";let e=s/6e4;if(e<60)return`${Math.max(1,Math.round(e))} min`;let t=e/60;return t<48?`${Math.round(t)} h`:`${Math.round(t/24)} d`}var bo,js,Ve=w(()=>{"use strict";bo=[{name:"Uncommon",color:"#b2f252"},{name:"Rare",color:"#2196F3"},{name:"Epic",color:"#E040FB"},{name:"Legendary",color:"#FBC02D"},{name:"Relic",color:"#ff5722"},{name:"Contraband",color:"#f44336"},{name:"Unobtainable",color:"#ffffff"},{name:"NFT",color:"#9e9e9e"}],js={A:"#5ce05a",B:"#9ccc65",C:"#fbc02d",D:"#ff9800",F:"#f44336"}});var Fm={};A(Fm,{TRADE_VERDICTS:()=>jt,TYPE_NAMES:()=>Et,activityLabel:()=>Wl,change:()=>ae,empty:()=>fe,esc:()=>S,evidenceLabel:()=>Gs,identity:()=>me,money:()=>T,stat:()=>ne,verdictOf:()=>Us});var Et,jt,Us,S,T,ae,Gs,Wl,me,fe,ne,pe=w(()=>{"use strict";Ve();Et=["Weapons","Hats","Bodies","Melee","Sprays","Dyes","Waists","Faces","Charms","Emotes","Stickers","Skydomes","Poses","Spin tickets","Capes","Heads","Paints","Backs","Consumables"],jt={good:{label:"Favorable trade",detail:"More estimated value coming in"},fair:{label:"Fair trade",detail:"Similar estimated value"},bad:{label:"Unfavorable trade",detail:"More estimated value going out"},uncertain:{label:"Not enough evidence",detail:"Estimates are too uncertain for a verdict"}},Us=s=>Object.hasOwn(jt,s)?s:"uncertain",S=s=>String(s??"").replace(/[&<>"']/g,e=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[e]??e),T=s=>s==null?"Unavailable":Pe(s),ae=s=>{if(s==null)return'No trend yet';let e="muted";return s>.005&&(e="positive"),s<-.005&&(e="negative"),`${S(it(s))}`},Gs=s=>s.method?.includes("trades")?s.method.startsWith("sales")?"Sales + private trades":"Private-trade estimate":s.method?.startsWith("sales")?(s.sales7d??0)>=5?"Recent sales":"Sparse sales":"Limited evidence",Wl=s=>s.privateTrading?.trades7d?`${s.privateTrading.trades7d} private trade${s.privateTrading.trades7d===1?"":"s"} this week${s.sales7d?` + ${s.sales7d} sales`:""}`:(s.sales7d??0)>=7?"Active this week":(s.sales7d??0)>0?"Traded this week":"No reported sales this week",me=s=>`${s.thumbnail?``:'K'}${S(s.name)}${S(bo[s.rarity??-1]?.name??"Item")}`,fe=(s,e,t="")=>`
      ◇

      ${S(s)}

      ${S(e)}

      ${t}
      `,ne=(s,e,t)=>`
      ${S(s)}${e}${t}
      `});var Km={};A(Km,{default:()=>hr});var vy,vo,Ke,qm,wy,ky,yy,Vl,xy,Yl,Sy,hr,Xl=w(()=>{"use strict";D();xe();Ve();pe();vy=1500,vo="data-kute-market",Ke="kuteMarketLine",qm="kuteMarketCardStyle",wy=".market-card, .market-item-card",ky=` .market-card,.market-item-card{position:relative} .${Ke}{display:inline-flex!important;align-items:center;gap:.35em;white-space:nowrap;cursor:pointer;pointer-events:auto} .${Ke}:hover{filter:brightness(1.25)} @@ -222,9 +222,9 @@ Drop a file here to replace it`,c.append(ce("span","mi","insert_drive_file"),ce( .${Ke} .kuteDelta.kuteDeal{color:#5ce05a} .${Ke} .kuteDelta.kuteOver{color:#f44336} .kuteDetailBtn .kuteMark{color:#f5479b;font-weight:900;margin-right:2px} -`,yy=".item-detail-container, .items-detail-root",Vl="kuteDetailBtn",xy=5e3,Yl=class s{constructor(){this.timer=void 0,this.busy=!1,this.pick=null,this.onPick=e=>{if(document.pointerLockElement||!(e.target instanceof Element))return;let t=e.target.closest("[id^='trd_'], .trade-inv-item[data-index]");if(!t)return;let o=/^trd_(?:sel_|inv_)?\d+_(\d+)/.exec(t.id),n=o?o[1]:t.getAttribute("data-index");if(n===null||!/^\d+$/.test(n))return;let r=t.querySelector(".tItemN")?.textContent?.trim()??"";this.pick={skin:Number(n),name:r,at:Date.now()}}}start(){if(this.timer===void 0){if(!document.getElementById(qm)){let e=document.createElement("style");e.id=qm,e.textContent=ky,document.head.append(e)}this.timer=window.setInterval(()=>this.tick(),vy),document.addEventListener("pointerdown",this.onPick,!0)}}stop(){clearInterval(this.timer),this.timer=void 0,document.removeEventListener("pointerdown",this.onPick,!0),this.pick=null;for(let e of document.querySelectorAll(`.${Ke}, .${Vl}`))e.remove();for(let e of document.querySelectorAll(`[${vo}]`))e.removeAttribute(vo)}static thumbPath(e){let t=/\/textures\/previews\/([^?#]+)/.exec(e);return t?t[1]:null}static askOf(e){let t=e.querySelector(".inline-price");if(t){let o=Number((t.textContent??"").replace(/[^\d.]/g,""));return Number.isFinite(o)&&o>0?o:null}for(let o of e.querySelectorAll("span, div")){if(o.classList.contains(Ke)||o.children.length)continue;let n=o.textContent?.trim()??"";if(/^~/.test(n))continue;let r=/^([\d,.]+)\s*KR$/i.exec(n)??/^([\d,.]+)$/.exec(n);if(r&&o.closest(".estimate-badge")===null){let i=Number(r[1].replace(/,/g,""));if(Number.isFinite(i)&&i>0)return i}}return null}async tick(){if(this.busy||document.pointerLockElement)return;let e=document.querySelector(yy),t=e?.getAttribute("aria-label")??"1";e&&e.getAttribute(vo)!==t&&(e.setAttribute(vo,t),e.querySelector(`.${Vl}`)?.remove(),await this.detailButton(e,t));let o=[...document.querySelectorAll(wy)].filter(n=>!n.hasAttribute(vo));if(o.length){this.busy=!0;try{let n=new Map;for(let i of o){i.setAttribute(vo,"1");let a=i.querySelector("img"),l=a instanceof HTMLImageElement?s.thumbPath(a.currentSrc||a.src):null;if(!l)continue;let c=n.get(l)??[];c.push(i),n.set(l,c)}if(!n.size)return;let r=await W.valuesByThumbnails([...n.keys()]);for(let[i,a]of n){let l=r[i];for(let c of a)c.isConnected&&this.draw(c,l??null)}}finally{this.busy=!1}}}async detailValue(e,t){let{pick:o}=this;if(o&&Date.now()-o.atc.name.toLowerCase()===t.toLowerCase())??[];return l.length===1?l[0]:null}async detailButton(e,t){let o=e.querySelector(".full-details-container, .items-detail-header-actions");if(!o)return;let n=document.createElement("button");n.type="button";let r=o.querySelector("button");n.className=`${r?.className??""} ${Vl}`.trim();let i=r?.querySelector("i")?.className??"material-icons";n.innerHTML=`candlestick_chart Kute Market`,n.title="K value, liquidity, price history, depth and owners in Kute Market",o.append(n);let a=await this.detailValue(e,t);if(!a||e.getAttribute(vo)!==t){n.remove();return}let l=n.querySelector("span");l&&(l.textContent=`Kute Market \xB7 K ${Pe(a.fair)} ${a.grade}`),n.addEventListener("click",c=>{c.stopPropagation(),d.market?.open("item",a.skin)})}draw(e,t){if(e.querySelector(`.${Ke}`)?.remove(),!t)return;let o=document.createElement("div"),n=e.querySelector(".estimate-badge");o.className=n?`${n.className} ${Ke}`:`${Ke} kuteFloating`;let r=s.askOf(e),i="";if(r!==null&&t.fair>0){let a=r/t.fair-1,l="";a<=-.1&&t.confidence>=40?l="kuteDeal":a>=.25&&(l="kuteOver");let c=Math.round(Math.abs(a)*100);i=`${a<0?"\u2212":"+"}${c}%`}o.innerHTML=`K ${Pe(t.fair)}${S(t.grade)}${i}`,o.title=`Kute fair value ${Pe(t.fair)} kr, evidence score ${t.confidence}/100, public-market activity grade ${t.grade}`+(t.privateTrading?.trades7d?`, ${t.privateTrading.trades7d} reported private trades this week`:"")+(t.exchange?.status==="applied"?", includes private exchange evidence":"")+(r!==null?`, this ask ${it(r/t.fair-1)} against it`:"")+". Click for the item in Kute Market",o.addEventListener("click",a=>{a.stopPropagation(),a.preventDefault(),d.market?.open("item",t.skin)}),n?n.after(o):e.append(o)}},Sy=new Yl,pr=Sy});var Um,jm=w(()=>{Um='
      '});var Gm={};A(Gm,{default:()=>hr});var $y,Jl,Cy,hr,Zl=w(()=>{"use strict";xe();We();pe();jm();$y=1200,Jl=class s{constructor(){this.timer=void 0,this.lastKey="",this.retryAt=0,this.failures=0,this.generation=0,this.busy=!1,this.expanded=!1,this.dismiss=e=>{let t=this.box?.shadowRoot?.querySelector("details");if(t?.open){if(e instanceof KeyboardEvent){if(e.key!=="Escape")return;e.preventDefault(),e.stopPropagation(),t.querySelector("summary")?.focus()}else if(e.target instanceof Node&&this.box?.contains(e.target))return;t.open=!1,this.expanded=!1}},this.box=null}start(){this.timer===void 0&&(this.timer=window.setInterval(()=>this.tick(),$y),window.addEventListener("pointerdown",this.dismiss,!0),window.addEventListener("keydown",this.dismiss,!0))}stop(){clearInterval(this.timer),this.timer=void 0,this.generation++,window.removeEventListener("pointerdown",this.dismiss,!0),window.removeEventListener("keydown",this.dismiss,!0),this.clear()}clear(){this.box?.remove(),this.box=null,this.lastKey="",this.expanded=!1}static kr(e){let t=/([\d,.]+)/.exec(e.replace(/[~\s]/g,""));return t&&Number(t[1].replace(/,/g,""))||0}static row(e,t){let o=e.parentElement;for(;o&&!o.contains(t);)o=o.parentElement;return o&&o!==document.body?o:null}snapshot(){let e=[...document.querySelectorAll(".trade-window .trade-side")].filter(u=>u.getClientRects().length);if(e.length>=2){let u=s.row(e[0],e[1]);if(!u)return null;let h=m=>[...m.querySelectorAll(".trade-offer-scroll .trade-inv-item")].map(g=>{let b=g.getAttribute("data-index"),v=b!==null&&/^\d+$/.test(b)?Number(b):-1,k=g.querySelector("img")?.getAttribute("src")??"",E={skin:v,count:s.kr(g.querySelector(".trade-item-count")?.textContent??"1")||1};v<0&&(E.path=/\/textures\/previews\/([^?#]+)/.exec(k)?.[1]??"");for(let[L,x]of[["serial","data-serial"],["wear","data-wear-float"],["style","data-style"]]){let $=g.getAttribute(x);$!==null&&$!==""&&Number.isFinite(Number($))&&(E[L]=Number($))}return E}),p=h(e[0]),f=h(e[1]);return{give:p,get:f,giveKr:0,getKr:0,anchor:u,key:JSON.stringify([p,f])}}let t=[document.getElementById("tradeList0"),document.getElementById("tradeList1")];if(!t[0]?.getClientRects().length||!t[1]?.getClientRects().length)return null;let o=s.row(t[0],t[1]);if(!o)return null;let n=u=>[...u.querySelectorAll("[id^='trd_']")].flatMap(h=>{let p=/^trd_(?:sel_)?\d+_(\d+)(?:_\d+)?$/.exec(h.id);return p?[{skin:Number(p[1]),count:s.kr(h.querySelector(".tItemCnt")?.textContent??"1")||1}]:[]}),r=u=>Math.max(0,s.kr(document.getElementById(`currency_item_${u}_1`)?.querySelector(".tCurrencyAmount")?.textContent??"0")),i=n(t[0]),a=n(t[1]),l=r(0),c=r(1);return{give:i,get:a,giveKr:l,getKr:c,anchor:o,key:JSON.stringify([i,a,l,c])}}current(e,t){if(this.timer===void 0||t!==this.generation||document.pointerLockElement||document.hidden)return!1;let o=this.snapshot();return o?.anchor===e.anchor&&o.key===e.key}async tick(){if(this.busy||this.timer===void 0||document.pointerLockElement||document.hidden)return;this.busy=!0;let{generation:e}=this;try{let t=this.snapshot();if(!t){this.clear();return}if(Date.now()p.skin<0&&p.path).map(p=>p.path),r=n.length?await W.valuesByThumbnails(n):{};if(!this.current(t,e))return;let i=p=>p.map(({path:f,...m})=>({...m,skin:m.skin<0?r[f??""]?.skin??-1:m.skin})),a=i(t.give),l=i(t.get);if([...a,...l].some(p=>p.skin<0)){this.render(t,null,"An item could not be identified. A complete comparison is unavailable.");return}let c=await W.analyzeStatus({give:a,get:l,giveKr:t.giveKr,getKr:t.getKr}),u=c.data;if(u?(this.failures=0,this.retryAt=0):(this.failures++,this.retryAt=c.status===429?c.retryAt??Date.now()+6e4:Date.now()+Math.min(6e4,5e3*2**(this.failures-1)),this.lastKey=""),!this.current(t,e))return;let h=c.status===429?`Request limit reached. Estimates resume after ${new Date(this.retryAt).toLocaleTimeString()}.`:"Estimates unavailable. Retrying with a longer delay.";this.render(t,u,h)}finally{this.busy=!1}}render(e,t,o){this.box||(this.box=document.createElement("div"),this.box.className="kuteTradeBox",this.box.style.cssText="all:initial;display:block;box-sizing:border-box;width:100%;min-width:0;margin:0 0 10px;",this.box.attachShadow({mode:"open"}).innerHTML=Um);let n=this.box.shadowRoot?.querySelector(".panel");if(!n)return;n.className=`panel${e.give.length||e.get.length||e.giveKr||e.getKr?" filled":""}`,this.expanded=n.querySelector("details")?.open??this.expanded;let r='
      Kute trade insight';if(!t)r+=`

      ${S(o)}

      `;else{let i=!e.give.length&&!e.giveKr||!e.get.length&&!e.getKr,a=[...t.give.items,...t.get.items].some(m=>m.unknown),l=js(t.verdict),c=i?"Add items on both sides to compare":jt[l].detail,u=jt[l].label;a&&(u="Incomplete comparison"),i&&(u="Add both sides"),r+=`${c}`;let h=(m,g)=>{let b=m.items.reduce((k,E)=>k+E.count,0),v=m.items.some(k=>k.unknown);return`
      ${g}${Pe(m.value)}${v?"+":""} KR${b} ${b===1?"item":"items"}${m.kr?` + ${Pe(m.kr)} KR`:""} · ${v?"Partial estimate":"Estimated value"}
      `},p=i||a?'–Incomplete comparison':`${t.difference>0?"+":""}${Pe(t.difference)} KR${S(it(t.differenceShare))} of the larger side`;r+=`
      ${h(t.give,"You give")}
      ${u}${p}
      ${h(t.get,"You receive")}
      `;let f=(m,g)=>`

      ${g}

      ${m.items.map(b=>`
      ${b.count>1?`${b.count} × `:""}${S(b.name)}${b.serial!==void 0?` #${S(b.serial)}`:""}${b.wear!==void 0?` · wear ${b.wear.toFixed(4)}`:""}${b.unknown?"":`${S(b.grade)}`}${b.unknown?"Unvalued":`${Pe(b.lineValue)} KR`}
      `).join("")}${m.kr?`
      Added KR${Pe(m.kr)} KR
      `:""}${!m.items.length&&!m.kr?'No items added':""}
      `;r+=`Item breakdown & evidenceHide item breakdown & evidence
      ${f(t.give,"You give")}${f(t.get,"You receive")}
      • Estimates describe market data, not guaranteed sale prices. Activity grades do not guarantee a selling time.
      • ${t.drivers.filter(m=>!m.startsWith("Liquidity adjustments")).map(m=>`
      • ${S(m)}
      • `).join("")}
      `}n.innerHTML=r,this.box.nextElementSibling!==e.anchor&&e.anchor.before(this.box)}},Cy=new Jl,hr=Cy});var Vm={};A(Vm,{readWatchlist:()=>Se,saveWatchlist:()=>wo,toggleWatch:()=>Ql});function Se(){try{let s=JSON.parse(localStorage.getItem(Wm)??"[]");if(!Array.isArray(s))return[];let e=new Set;return s.filter(t=>!t||!Number.isInteger(t.skin)||t.skin<0||e.has(t.skin)||typeof t.name!="string"?!1:(e.add(t.skin),!0)).slice(0,100).map(t=>({skin:t.skin,name:t.name,rarity:Number.isInteger(t.rarity)?t.rarity:void 0,thumbnail:typeof t.thumbnail=="string"?t.thumbnail:null,target:Number.isFinite(t.target)&&t.target>0?t.target:null}))}catch{return[]}}function wo(s){try{return localStorage.setItem(Wm,JSON.stringify(s.slice(0,100))),window.dispatchEvent(new Event("kute-market-watch-changed")),!0}catch{return!1}}function Ql(s){let e=Se(),t=e.some(o=>o.skin===s.skin);return!t&&e.length>=100?!1:wo(t?e.filter(o=>o.skin!==s.skin):[...e,{skin:s.skin,name:s.name,rarity:s.rarity,thumbnail:s.thumbnail??null,target:null}])}var Wm,Ut=w(()=>{"use strict";Wm="kute_market_watch"});var Zm={};A(Zm,{UNREAD_EVENT:()=>Gs,default:()=>$t});var My,Ty,Ym,Xm,Jm,Gs,Ay,ec,Ly,$t,mr=w(()=>{"use strict";F();It();xe();Ut();We();My=5*6e4,Ty=3*36e5,Ym="kute_market_alerts",Xm="kute_market_watch_report",Jm="kute_market_alerts_unread",Gs="kute-market-alerts-unread",Ay=2*36e5,ec=class{constructor(){this.timer=0,this.busy=!1,this.seen=new Map;try{let e=JSON.parse(localStorage.getItem(Ym)??"[]");if(Array.isArray(e))for(let[t,o]of e.slice(0,100))Number.isInteger(t)&&Number.isFinite(o?.target)&&typeof o?.reached=="boolean"&&this.seen.set(t,o)}catch{this.seen.clear()}this.unread=new Set;try{let e=JSON.parse(localStorage.getItem(Jm)??"[]");if(Array.isArray(e))for(let t of e.slice(0,100))Number.isInteger(t)&&this.unread.add(t)}catch{this.unread.clear()}this.onChange=()=>{this.check(),this.report()}}start(){this.timer||(this.timer=window.setInterval(()=>{this.check()},My),window.addEventListener("kute-market-watch-changed",this.onChange),this.check(),this.report())}async report(){if(!this.active())return;let e=Se().map(n=>n.skin).sort((n,r)=>n-r),t=e.join(","),o={};try{o=JSON.parse(localStorage.getItem(Xm)??"{}")??{}}catch{}if(!(o.key===t&&Date.now()-(o.at??0)o.target!==null);for(let o of this.seen.keys())e.some(n=>n.skin===o)||this.seen.delete(o);this.save();let t=this.unread.size;for(let o of this.unread)e.some(n=>n.skin===o)||this.unread.delete(o);if(this.unread.size!==t&&this.saveUnread(),!!e.length){this.busy=!0;try{let o=await W.values(e.map(i=>i.skin));if(!this.active())return;let n=Se(),r=[];for(let i of e){if(i.target===null||!n.some(u=>u.skin===i.skin&&u.target===i.target))continue;let a=o[i.skin];if(!a||!a.bookAt||!a.valuedAt||Date.now()-Math.min(a.bookAt,a.valuedAt)>Ty||a.lowest===null)continue;let l=a.lowest<=i.target,c=this.seen.get(i.skin);l&&(!c?.reached||c.target!==i.target)&&(r.push({name:i.name,price:a.lowest}),this.unread.add(i.skin)),this.seen.set(i.skin,{target:i.target,reached:l})}if(r.length){this.saveUnread();let i=r[0],a=r.length>1?` and ${r.length-1} more`:"";d.showNotification(`Watchlist: ${i.name} at ${Pe(i.price)} KR${a}. Observed ask reached your target.`,!1,8)}this.save()}catch{}finally{this.busy=!1}}}},Ly=new ec,$t=Ly});var ef={};A(ef,{contributedItem:()=>tc,contributedSale:()=>sc,contributedTrade:()=>oc});function Ws(s){let e=s;if(typeof e=="string")try{e=JSON.parse(e)}catch{return null}return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function tc(s){let e=typeof s=="number"?{ind:s}:Ws(s);if(!e)return null;let t=e.ind??e.skinindex??e.skin_index??e.i??e.index,o=e.count??e.cnt??e.c??1;if(!ht(t)||!ht(o,1)||o>1e4)return null;let n=Ws(e.m??e.metadata??e.meta)??{},r={skin:t,count:o};for(let i of["serial","wear","style","paint","instance"]){let a=e[i]??n[i];if(a!=null){if(i==="wear"?typeof a!="number"||!Number.isFinite(a)||a<0||a>1:!ht(a))return null;r[i]=a}}return r}function Qm(s){if(typeof s=="number")return ht(s)?[{id:1,amount:s}]:null;if(!Array.isArray(s)||s.length>64)return null;let e=new Map;for(let t of s){let o=Ws(t);if(!o||!ht(o.cid,1)||typeof o.amt!="number"||!Number.isFinite(o.amt)||o.amt<0||o.amt>1e9||o.cid===1&&!ht(o.amt))return null;let n=(e.get(o.cid)??0)+o.amt;if(!Number.isFinite(n)||n>1e9)return null;e.set(o.cid,n)}return[...e].filter(([,t])=>t>0).map(([t,o])=>({id:t,amount:o}))}function oc(s,e){let t=Ws(s);if(!t||!ht(t.trid,1,Number.MAX_SAFE_INTEGER)||t.status&&t.status!=="completed")return null;let o=Date.parse(t.dte??t.date??"");if(!Number.isFinite(o)||oe||!Array.isArray(t.sksell)||!Array.isArray(t.skbuy)||t.sksell.length+t.skbuy.length>40)return null;let n=t.sksell.map(tc),r=t.skbuy.map(tc);if([...n,...r].some(l=>!l)||!n.length&&!r.length)return null;let i=Qm(t.csell??[]),a=Qm(t.cbuy??[]);return!i||!a?null:{trid:t.trid,at:o,context:"history",give:n,get:r,giveCurrencies:i,getCurrencies:a,giveKr:i.find(l=>l.id===1)?.amount??0,getKr:a.find(l=>l.id===1)?.amount??0}}function sc(s,e){let t=Ws(s);if(!t||t.status!=="completed"||!ht(t.marketid,1,Number.MAX_SAFE_INTEGER)||!ht(t.skinindex)||!ht(t.amount,1))return null;let o=Date.parse(t.date);return!Number.isFinite(o)||oe||!["buy","sell"].includes(t.type)?null:{marketid:t.marketid,type:t.type,skinindex:t.skinindex,amount:t.amount,date:new Date(o).toISOString()}}var ht,nc=w(()=>{"use strict";ht=(s,e=0,t=1e9)=>typeof s=="number"&&Number.isSafeInteger(s)&&s>=e&&s<=t});var nf={};A(nf,{default:()=>fr});function tf(s){let e=2166136261,t=84696351;for(let o=0;o>>0,t=Math.imul(t^s.charCodeAt(o),16777619)>>>0;return e.toString(36)+t.toString(36)}function Ry(){try{let s=JSON.parse(localStorage.getItem(of)??"[]");return new Set(Array.isArray(s)?s.filter(e=>typeof e=="string").slice(-sf):[])}catch{return new Set}}var of,sf,rc,Py,fr,ic=w(()=>{"use strict";F();It();xe();nc();of="kute_market_sent",sf=2e3;rc=class{constructor(){this.running=!1,this.generation=0,this.nextPostAt=0,this.failures=0,this.account="",this.queue=new Map,this.sent=Ry(),this.timer=void 0,this.controller=null,this.listings=new Map,this.openTrades=new Map,this.seen=new Set,this.listener=e=>this.receive(e)}start(){this.running||!d.hostFeatures?.includes("history-capture")||(this.running=!0,this.generation++,window.chrome.webview.addEventListener("message",this.listener))}stop(){this.running&&window.chrome.webview.removeEventListener("message",this.listener),this.running=!1,this.generation++,clearTimeout(this.timer),this.controller?.abort(),this.controller=null,this.queue.clear(),this.forgetCaptured()}useAccount(e){this.account!==e&&(this.queue.clear(),this.forgetCaptured(),this.account=e)}forgetCaptured(){this.listings.clear(),this.openTrades.clear(),this.seen.clear()}active(){return this.running&&!document.hidden&&!document.pointerLockElement&&!he.down&&!he.offline()&&W.loggedIn()}currentAccount(){try{return localStorage.getItem("krunker_username")??""}catch{return""}}current(e,t){return this.active()&&e===this.generation&&t===this.currentAccount()}receive(e){let t=null;try{t=typeof e.data=="string"?JSON.parse(e.data):e.data}catch{return}if(d.hostFeatures?.includes("market-capture")){t?.marketCapture&&this.captured(t.marketCapture);return}let o=t?.marketHistory;!o||o.kind!=="sales"&&o.kind!=="trades"||this.capture(o.data,o.kind)}captured(e){if(typeof e.path!="string"||e.data?.error)return;let t=e.path.split(/[?#]/)[0],o=e.data?.data;if(e.method==="GET"){if(t==="/market/history")this.capture(e.data,"sales");else if(t==="/trades/history"){if(Array.isArray(o?.open)){this.openTrades.clear();for(let i of o.open.slice(0,100))Number.isSafeInteger(i?.trid)&&this.openTrades.set(i.trid,i)}this.capture(e.data,"trades")}else t==="/market/listings"&&Array.isArray(o?.listings)&&this.listed(o.listings);return}if(e.method!=="POST")return;if(t==="/market/purchase"){let i=this.listings.get(o?.mid);if(i&&i.skin===o?.skn){let a={marketid:o.mid,type:"buy",date:new Date().toISOString(),skinindex:o.skn,amount:i.price,status:"completed"};this.capture({history:[a]},"sales")}return}let n=/^\/trades\/(\d+)\/accept$/.exec(t),r=n&&this.openTrades.get(Number(n[1]));r&&this.capture({completed:[r]},"trades")}listed(e){if(this.active()){this.useAccount(this.currentAccount());for(let t of e.slice(0,200))!Number.isSafeInteger(t?.marketid)||!Number.isSafeInteger(t?.skinindex)||!Number.isSafeInteger(t?.funds)||(this.listings.delete(t.marketid),this.listings.set(t.marketid,{skin:t.skinindex,price:t.funds}),this.seen.size<200&&this.seen.add(t.skinindex));for(;this.listings.size>3e3;)this.listings.delete(this.listings.keys().next().value??0);this.schedule()}}capture(e,t){if(!this.active()||e?.error)return;let o=this.currentAccount(),n=e?.data??e,r=t==="trades"?n?.completed:n?.history;if(!Array.isArray(r))return;this.useAccount(o);let i=Date.now();for(let a of r.slice(0,500)){let l=t==="trades"?oc(a,i):sc(a,i);if(!l)continue;let c=t+JSON.stringify(l);this.sent.has(tf(`${o} +`,yy=".item-detail-container, .items-detail-root",Vl="kuteDetailBtn",xy=5e3,Yl=class s{constructor(){this.timer=void 0,this.busy=!1,this.pick=null,this.onPick=e=>{if(document.pointerLockElement||!(e.target instanceof Element))return;let t=e.target.closest("[id^='trd_'], .trade-inv-item[data-index]");if(!t)return;let o=/^trd_(?:sel_|inv_)?\d+_(\d+)/.exec(t.id),n=o?o[1]:t.getAttribute("data-index");if(n===null||!/^\d+$/.test(n))return;let r=t.querySelector(".tItemN")?.textContent?.trim()??"";this.pick={skin:Number(n),name:r,at:Date.now()}}}start(){if(this.timer===void 0){if(!document.getElementById(qm)){let e=document.createElement("style");e.id=qm,e.textContent=ky,document.head.append(e)}this.timer=window.setInterval(()=>this.tick(),vy),document.addEventListener("pointerdown",this.onPick,!0)}}stop(){clearInterval(this.timer),this.timer=void 0,document.removeEventListener("pointerdown",this.onPick,!0),this.pick=null;for(let e of document.querySelectorAll(`.${Ke}, .${Vl}`))e.remove();for(let e of document.querySelectorAll(`[${vo}]`))e.removeAttribute(vo)}static thumbPath(e){let t=/\/textures\/previews\/([^?#]+)/.exec(e);return t?t[1]:null}static askOf(e){let t=e.querySelector(".inline-price");if(t){let o=Number((t.textContent??"").replace(/[^\d.]/g,""));return Number.isFinite(o)&&o>0?o:null}for(let o of e.querySelectorAll("span, div")){if(o.classList.contains(Ke)||o.children.length)continue;let n=o.textContent?.trim()??"";if(/^~/.test(n))continue;let r=/^([\d,.]+)\s*KR$/i.exec(n)??/^([\d,.]+)$/.exec(n);if(r&&o.closest(".estimate-badge")===null){let i=Number(r[1].replace(/,/g,""));if(Number.isFinite(i)&&i>0)return i}}return null}async tick(){if(this.busy||document.pointerLockElement)return;let e=document.querySelector(yy),t=e?.getAttribute("aria-label")??"1";e&&e.getAttribute(vo)!==t&&(e.setAttribute(vo,t),e.querySelector(`.${Vl}`)?.remove(),await this.detailButton(e,t));let o=[...document.querySelectorAll(wy)].filter(n=>!n.hasAttribute(vo));if(o.length){this.busy=!0;try{let n=new Map;for(let i of o){i.setAttribute(vo,"1");let a=i.querySelector("img"),l=a instanceof HTMLImageElement?s.thumbPath(a.currentSrc||a.src):null;if(!l)continue;let c=n.get(l)??[];c.push(i),n.set(l,c)}if(!n.size)return;let r=await W.valuesByThumbnails([...n.keys()]);for(let[i,a]of n){let l=r[i];for(let c of a)c.isConnected&&this.draw(c,l??null)}}finally{this.busy=!1}}}async detailValue(e,t){let{pick:o}=this;if(o&&Date.now()-o.atc.name.toLowerCase()===t.toLowerCase())??[];return l.length===1?l[0]:null}async detailButton(e,t){let o=e.querySelector(".full-details-container, .items-detail-header-actions");if(!o)return;let n=document.createElement("button");n.type="button";let r=o.querySelector("button");n.className=`${r?.className??""} ${Vl}`.trim();let i=r?.querySelector("i")?.className??"material-icons";n.innerHTML=`candlestick_chart Kute Market`,n.title="K value, liquidity, price history, depth and owners in Kute Market",o.append(n);let a=await this.detailValue(e,t);if(!a||e.getAttribute(vo)!==t){n.remove();return}let l=n.querySelector("span");l&&(l.textContent=`Kute Market \xB7 K ${Pe(a.fair)} ${a.grade}`),n.addEventListener("click",c=>{c.stopPropagation(),u.market?.open("item",a.skin)})}draw(e,t){if(e.querySelector(`.${Ke}`)?.remove(),!t)return;let o=document.createElement("div"),n=e.querySelector(".estimate-badge");o.className=n?`${n.className} ${Ke}`:`${Ke} kuteFloating`;let r=s.askOf(e),i="";if(r!==null&&t.fair>0){let a=r/t.fair-1,l="";a<=-.1&&t.confidence>=40?l="kuteDeal":a>=.25&&(l="kuteOver");let c=Math.round(Math.abs(a)*100);i=`${a<0?"\u2212":"+"}${c}%`}o.innerHTML=`K ${Pe(t.fair)}${S(t.grade)}${i}`,o.title=`Kute fair value ${Pe(t.fair)} kr, evidence score ${t.confidence}/100, public-market activity grade ${t.grade}`+(t.privateTrading?.trades7d?`, ${t.privateTrading.trades7d} reported private trades this week`:"")+(t.exchange?.status==="applied"?", includes private exchange evidence":"")+(r!==null?`, this ask ${it(r/t.fair-1)} against it`:"")+". Click for the item in Kute Market",o.addEventListener("click",a=>{a.stopPropagation(),a.preventDefault(),u.market?.open("item",t.skin)}),n?n.after(o):e.append(o)}},Sy=new Yl,hr=Sy});var Um,jm=w(()=>{Um='
      '});var Gm={};A(Gm,{default:()=>mr});var $y,Jl,Cy,mr,Zl=w(()=>{"use strict";xe();Ve();pe();jm();$y=1200,Jl=class s{constructor(){this.timer=void 0,this.lastKey="",this.retryAt=0,this.failures=0,this.generation=0,this.busy=!1,this.expanded=!1,this.dismiss=e=>{let t=this.box?.shadowRoot?.querySelector("details");if(t?.open){if(e instanceof KeyboardEvent){if(e.key!=="Escape")return;e.preventDefault(),e.stopPropagation(),t.querySelector("summary")?.focus()}else if(e.target instanceof Node&&this.box?.contains(e.target))return;t.open=!1,this.expanded=!1}},this.box=null}start(){this.timer===void 0&&(this.timer=window.setInterval(()=>this.tick(),$y),window.addEventListener("pointerdown",this.dismiss,!0),window.addEventListener("keydown",this.dismiss,!0))}stop(){clearInterval(this.timer),this.timer=void 0,this.generation++,window.removeEventListener("pointerdown",this.dismiss,!0),window.removeEventListener("keydown",this.dismiss,!0),this.clear()}clear(){this.box?.remove(),this.box=null,this.lastKey="",this.expanded=!1}static kr(e){let t=/([\d,.]+)/.exec(e.replace(/[~\s]/g,""));return t&&Number(t[1].replace(/,/g,""))||0}static row(e,t){let o=e.parentElement;for(;o&&!o.contains(t);)o=o.parentElement;return o&&o!==document.body?o:null}snapshot(){let e=[...document.querySelectorAll(".trade-window .trade-side")].filter(d=>d.getClientRects().length);if(e.length>=2){let d=s.row(e[0],e[1]);if(!d)return null;let p=m=>[...m.querySelectorAll(".trade-offer-scroll .trade-inv-item")].map(g=>{let b=g.getAttribute("data-index"),v=b!==null&&/^\d+$/.test(b)?Number(b):-1,k=g.querySelector("img")?.getAttribute("src")??"",E={skin:v,count:s.kr(g.querySelector(".trade-item-count")?.textContent??"1")||1};v<0&&(E.path=/\/textures\/previews\/([^?#]+)/.exec(k)?.[1]??"");for(let[L,x]of[["serial","data-serial"],["wear","data-wear-float"],["style","data-style"]]){let $=g.getAttribute(x);$!==null&&$!==""&&Number.isFinite(Number($))&&(E[L]=Number($))}return E}),h=p(e[0]),f=p(e[1]);return{give:h,get:f,giveKr:0,getKr:0,anchor:d,key:JSON.stringify([h,f])}}let t=[document.getElementById("tradeList0"),document.getElementById("tradeList1")];if(!t[0]?.getClientRects().length||!t[1]?.getClientRects().length)return null;let o=s.row(t[0],t[1]);if(!o)return null;let n=d=>[...d.querySelectorAll("[id^='trd_']")].flatMap(p=>{let h=/^trd_(?:sel_)?\d+_(\d+)(?:_\d+)?$/.exec(p.id);return h?[{skin:Number(h[1]),count:s.kr(p.querySelector(".tItemCnt")?.textContent??"1")||1}]:[]}),r=d=>Math.max(0,s.kr(document.getElementById(`currency_item_${d}_1`)?.querySelector(".tCurrencyAmount")?.textContent??"0")),i=n(t[0]),a=n(t[1]),l=r(0),c=r(1);return{give:i,get:a,giveKr:l,getKr:c,anchor:o,key:JSON.stringify([i,a,l,c])}}current(e,t){if(this.timer===void 0||t!==this.generation||document.pointerLockElement||document.hidden)return!1;let o=this.snapshot();return o?.anchor===e.anchor&&o.key===e.key}async tick(){if(this.busy||this.timer===void 0||document.pointerLockElement||document.hidden)return;this.busy=!0;let{generation:e}=this;try{let t=this.snapshot();if(!t){this.clear();return}if(Date.now()h.skin<0&&h.path).map(h=>h.path),r=n.length?await W.valuesByThumbnails(n):{};if(!this.current(t,e))return;let i=h=>h.map(({path:f,...m})=>({...m,skin:m.skin<0?r[f??""]?.skin??-1:m.skin})),a=i(t.give),l=i(t.get);if([...a,...l].some(h=>h.skin<0)){this.render(t,null,"An item could not be identified. A complete comparison is unavailable.");return}let c=await W.analyzeStatus({give:a,get:l,giveKr:t.giveKr,getKr:t.getKr}),d=c.data;if(d?(this.failures=0,this.retryAt=0):(this.failures++,this.retryAt=c.status===429?c.retryAt??Date.now()+6e4:Date.now()+Math.min(6e4,5e3*2**(this.failures-1)),this.lastKey=""),!this.current(t,e))return;let p=c.status===429?`Request limit reached. Estimates resume after ${new Date(this.retryAt).toLocaleTimeString()}.`:"Estimates unavailable. Retrying with a longer delay.";this.render(t,d,p)}finally{this.busy=!1}}render(e,t,o){this.box||(this.box=document.createElement("div"),this.box.className="kuteTradeBox",this.box.style.cssText="all:initial;display:block;box-sizing:border-box;width:100%;min-width:0;margin:0 0 10px;",this.box.attachShadow({mode:"open"}).innerHTML=Um);let n=this.box.shadowRoot?.querySelector(".panel");if(!n)return;n.className=`panel${e.give.length||e.get.length||e.giveKr||e.getKr?" filled":""}`,this.expanded=n.querySelector("details")?.open??this.expanded;let r='
      Kute trade insight';if(!t)r+=`

      ${S(o)}

      `;else{let i=!e.give.length&&!e.giveKr||!e.get.length&&!e.getKr,a=[...t.give.items,...t.get.items].some(m=>m.unknown),l=Us(t.verdict),c=i?"Add items on both sides to compare":jt[l].detail,d=jt[l].label;a&&(d="Incomplete comparison"),i&&(d="Add both sides"),r+=`${c}`;let p=(m,g)=>{let b=m.items.reduce((k,E)=>k+E.count,0),v=m.items.some(k=>k.unknown);return`
      ${g}${Pe(m.value)}${v?"+":""} KR${b} ${b===1?"item":"items"}${m.kr?` + ${Pe(m.kr)} KR`:""} · ${v?"Partial estimate":"Estimated value"}
      `},h=i||a?'–Incomplete comparison':`${t.difference>0?"+":""}${Pe(t.difference)} KR${S(it(t.differenceShare))} of the larger side`;r+=`
      ${p(t.give,"You give")}
      ${d}${h}
      ${p(t.get,"You receive")}
      `;let f=(m,g)=>`

      ${g}

      ${m.items.map(b=>`
      ${b.count>1?`${b.count} × `:""}${S(b.name)}${b.serial!==void 0?` #${S(b.serial)}`:""}${b.wear!==void 0?` · wear ${b.wear.toFixed(4)}`:""}${b.unknown?"":`${S(b.grade)}`}${b.unknown?"Unvalued":`${Pe(b.lineValue)} KR`}
      `).join("")}${m.kr?`
      Added KR${Pe(m.kr)} KR
      `:""}${!m.items.length&&!m.kr?'No items added':""}
      `;r+=`Item breakdown & evidenceHide item breakdown & evidence
      ${f(t.give,"You give")}${f(t.get,"You receive")}
      • Estimates describe market data, not guaranteed sale prices. Activity grades do not guarantee a selling time.
      • ${t.drivers.filter(m=>!m.startsWith("Liquidity adjustments")).map(m=>`
      • ${S(m)}
      • `).join("")}
      `}n.innerHTML=r,this.box.nextElementSibling!==e.anchor&&e.anchor.before(this.box)}},Cy=new Jl,mr=Cy});var Vm={};A(Vm,{readWatchlist:()=>Se,saveWatchlist:()=>wo,toggleWatch:()=>Ql});function Se(){try{let s=JSON.parse(localStorage.getItem(Wm)??"[]");if(!Array.isArray(s))return[];let e=new Set;return s.filter(t=>!t||!Number.isInteger(t.skin)||t.skin<0||e.has(t.skin)||typeof t.name!="string"?!1:(e.add(t.skin),!0)).slice(0,100).map(t=>({skin:t.skin,name:t.name,rarity:Number.isInteger(t.rarity)?t.rarity:void 0,thumbnail:typeof t.thumbnail=="string"?t.thumbnail:null,target:Number.isFinite(t.target)&&t.target>0?t.target:null}))}catch{return[]}}function wo(s){try{return localStorage.setItem(Wm,JSON.stringify(s.slice(0,100))),window.dispatchEvent(new Event("kute-market-watch-changed")),!0}catch{return!1}}function Ql(s){let e=Se(),t=e.some(o=>o.skin===s.skin);return!t&&e.length>=100?!1:wo(t?e.filter(o=>o.skin!==s.skin):[...e,{skin:s.skin,name:s.name,rarity:s.rarity,thumbnail:s.thumbnail??null,target:null}])}var Wm,Ut=w(()=>{"use strict";Wm="kute_market_watch"});var Zm={};A(Zm,{UNREAD_EVENT:()=>Ws,default:()=>$t});var My,Ty,Ym,Xm,Jm,Ws,Ay,ec,Ly,$t,fr=w(()=>{"use strict";D();It();xe();Ut();Ve();My=5*6e4,Ty=3*36e5,Ym="kute_market_alerts",Xm="kute_market_watch_report",Jm="kute_market_alerts_unread",Ws="kute-market-alerts-unread",Ay=2*36e5,ec=class{constructor(){this.timer=0,this.busy=!1,this.seen=new Map;try{let e=JSON.parse(localStorage.getItem(Ym)??"[]");if(Array.isArray(e))for(let[t,o]of e.slice(0,100))Number.isInteger(t)&&Number.isFinite(o?.target)&&typeof o?.reached=="boolean"&&this.seen.set(t,o)}catch{this.seen.clear()}this.unread=new Set;try{let e=JSON.parse(localStorage.getItem(Jm)??"[]");if(Array.isArray(e))for(let t of e.slice(0,100))Number.isInteger(t)&&this.unread.add(t)}catch{this.unread.clear()}this.onChange=()=>{this.check(),this.report()}}start(){this.timer||(this.timer=window.setInterval(()=>{this.check()},My),window.addEventListener("kute-market-watch-changed",this.onChange),this.check(),this.report())}async report(){if(!this.active())return;let e=Se().map(n=>n.skin).sort((n,r)=>n-r),t=e.join(","),o={};try{o=JSON.parse(localStorage.getItem(Xm)??"{}")??{}}catch{}if(!(o.key===t&&Date.now()-(o.at??0)o.target!==null);for(let o of this.seen.keys())e.some(n=>n.skin===o)||this.seen.delete(o);this.save();let t=this.unread.size;for(let o of this.unread)e.some(n=>n.skin===o)||this.unread.delete(o);if(this.unread.size!==t&&this.saveUnread(),!!e.length){this.busy=!0;try{let o=await W.values(e.map(i=>i.skin));if(!this.active())return;let n=Se(),r=[];for(let i of e){if(i.target===null||!n.some(d=>d.skin===i.skin&&d.target===i.target))continue;let a=o[i.skin];if(!a||!a.bookAt||!a.valuedAt||Date.now()-Math.min(a.bookAt,a.valuedAt)>Ty||a.lowest===null)continue;let l=a.lowest<=i.target,c=this.seen.get(i.skin);l&&(!c?.reached||c.target!==i.target)&&(r.push({name:i.name,price:a.lowest}),this.unread.add(i.skin)),this.seen.set(i.skin,{target:i.target,reached:l})}if(r.length){this.saveUnread();let i=r[0],a=r.length>1?` and ${r.length-1} more`:"";u.showNotification(`Watchlist: ${i.name} at ${Pe(i.price)} KR${a}. Observed ask reached your target.`,!1,8)}this.save()}catch{}finally{this.busy=!1}}}},Ly=new ec,$t=Ly});var ef={};A(ef,{contributedItem:()=>tc,contributedSale:()=>sc,contributedTrade:()=>oc});function Vs(s){let e=s;if(typeof e=="string")try{e=JSON.parse(e)}catch{return null}return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function tc(s){let e=typeof s=="number"?{ind:s}:Vs(s);if(!e)return null;let t=e.ind??e.skinindex??e.skin_index??e.i??e.index,o=e.count??e.cnt??e.c??1;if(!ht(t)||!ht(o,1)||o>1e4)return null;let n=Vs(e.m??e.metadata??e.meta)??{},r={skin:t,count:o};for(let i of["serial","wear","style","paint","instance"]){let a=e[i]??n[i];if(a!=null){if(i==="wear"?typeof a!="number"||!Number.isFinite(a)||a<0||a>1:!ht(a))return null;r[i]=a}}return r}function Qm(s){if(typeof s=="number")return ht(s)?[{id:1,amount:s}]:null;if(!Array.isArray(s)||s.length>64)return null;let e=new Map;for(let t of s){let o=Vs(t);if(!o||!ht(o.cid,1)||typeof o.amt!="number"||!Number.isFinite(o.amt)||o.amt<0||o.amt>1e9||o.cid===1&&!ht(o.amt))return null;let n=(e.get(o.cid)??0)+o.amt;if(!Number.isFinite(n)||n>1e9)return null;e.set(o.cid,n)}return[...e].filter(([,t])=>t>0).map(([t,o])=>({id:t,amount:o}))}function oc(s,e){let t=Vs(s);if(!t||!ht(t.trid,1,Number.MAX_SAFE_INTEGER)||t.status&&t.status!=="completed")return null;let o=Date.parse(t.dte??t.date??"");if(!Number.isFinite(o)||oe||!Array.isArray(t.sksell)||!Array.isArray(t.skbuy)||t.sksell.length+t.skbuy.length>40)return null;let n=t.sksell.map(tc),r=t.skbuy.map(tc);if([...n,...r].some(l=>!l)||!n.length&&!r.length)return null;let i=Qm(t.csell??[]),a=Qm(t.cbuy??[]);return!i||!a?null:{trid:t.trid,at:o,context:"history",give:n,get:r,giveCurrencies:i,getCurrencies:a,giveKr:i.find(l=>l.id===1)?.amount??0,getKr:a.find(l=>l.id===1)?.amount??0}}function sc(s,e){let t=Vs(s);if(!t||t.status!=="completed"||!ht(t.marketid,1,Number.MAX_SAFE_INTEGER)||!ht(t.skinindex)||!ht(t.amount,1))return null;let o=Date.parse(t.date);return!Number.isFinite(o)||oe||!["buy","sell"].includes(t.type)?null:{marketid:t.marketid,type:t.type,skinindex:t.skinindex,amount:t.amount,date:new Date(o).toISOString()}}var ht,nc=w(()=>{"use strict";ht=(s,e=0,t=1e9)=>typeof s=="number"&&Number.isSafeInteger(s)&&s>=e&&s<=t});var nf={};A(nf,{default:()=>gr});function tf(s){let e=2166136261,t=84696351;for(let o=0;o>>0,t=Math.imul(t^s.charCodeAt(o),16777619)>>>0;return e.toString(36)+t.toString(36)}function Ry(){try{let s=JSON.parse(localStorage.getItem(of)??"[]");return new Set(Array.isArray(s)?s.filter(e=>typeof e=="string").slice(-sf):[])}catch{return new Set}}var of,sf,rc,Py,gr,ic=w(()=>{"use strict";D();It();xe();nc();of="kute_market_sent",sf=2e3;rc=class{constructor(){this.running=!1,this.generation=0,this.nextPostAt=0,this.failures=0,this.account="",this.queue=new Map,this.sent=Ry(),this.timer=void 0,this.controller=null,this.listings=new Map,this.openTrades=new Map,this.seen=new Set,this.listener=e=>this.receive(e)}start(){this.running||!u.hostFeatures?.includes("history-capture")||(this.running=!0,this.generation++,window.chrome.webview.addEventListener("message",this.listener))}stop(){this.running&&window.chrome.webview.removeEventListener("message",this.listener),this.running=!1,this.generation++,clearTimeout(this.timer),this.controller?.abort(),this.controller=null,this.queue.clear(),this.forgetCaptured()}useAccount(e){this.account!==e&&(this.queue.clear(),this.forgetCaptured(),this.account=e)}forgetCaptured(){this.listings.clear(),this.openTrades.clear(),this.seen.clear()}active(){return this.running&&!document.hidden&&!document.pointerLockElement&&!he.down&&!he.offline()&&W.loggedIn()}currentAccount(){try{return localStorage.getItem("krunker_username")??""}catch{return""}}current(e,t){return this.active()&&e===this.generation&&t===this.currentAccount()}receive(e){let t=null;try{t=typeof e.data=="string"?JSON.parse(e.data):e.data}catch{return}if(u.hostFeatures?.includes("market-capture")){t?.marketCapture&&this.captured(t.marketCapture);return}let o=t?.marketHistory;!o||o.kind!=="sales"&&o.kind!=="trades"||this.capture(o.data,o.kind)}captured(e){if(typeof e.path!="string"||e.data?.error)return;let t=e.path.split(/[?#]/)[0],o=e.data?.data;if(e.method==="GET"){if(t==="/market/history")this.capture(e.data,"sales");else if(t==="/trades/history"){if(Array.isArray(o?.open)){this.openTrades.clear();for(let i of o.open.slice(0,100))Number.isSafeInteger(i?.trid)&&this.openTrades.set(i.trid,i)}this.capture(e.data,"trades")}else t==="/market/listings"&&Array.isArray(o?.listings)&&this.listed(o.listings);return}if(e.method!=="POST")return;if(t==="/market/purchase"){let i=this.listings.get(o?.mid);if(i&&i.skin===o?.skn){let a={marketid:o.mid,type:"buy",date:new Date().toISOString(),skinindex:o.skn,amount:i.price,status:"completed"};this.capture({history:[a]},"sales")}return}let n=/^\/trades\/(\d+)\/accept$/.exec(t),r=n&&this.openTrades.get(Number(n[1]));r&&this.capture({completed:[r]},"trades")}listed(e){if(this.active()){this.useAccount(this.currentAccount());for(let t of e.slice(0,200))!Number.isSafeInteger(t?.marketid)||!Number.isSafeInteger(t?.skinindex)||!Number.isSafeInteger(t?.funds)||(this.listings.delete(t.marketid),this.listings.set(t.marketid,{skin:t.skinindex,price:t.funds}),this.seen.size<200&&this.seen.add(t.skinindex));for(;this.listings.size>3e3;)this.listings.delete(this.listings.keys().next().value??0);this.schedule()}}capture(e,t){if(!this.active()||e?.error)return;let o=this.currentAccount(),n=e?.data??e,r=t==="trades"?n?.completed:n?.history;if(!Array.isArray(r))return;this.useAccount(o);let i=Date.now();for(let a of r.slice(0,500)){let l=t==="trades"?oc(a,i):sc(a,i);if(!l)continue;let c=t+JSON.stringify(l);this.sent.has(tf(`${o} ${c}`))||this.queue.set(c,{kind:t,row:l})}for(;this.queue.size>300;)this.queue.delete(this.queue.keys().next().value??"");this.schedule()}schedule(){if(clearTimeout(this.timer),!this.running||!this.queue.size&&!this.seen.size)return;let e=Math.max(100,this.nextPostAt-Date.now(),W.retryAt-Date.now());this.timer=window.setTimeout(()=>{this.flush()},e)}async flush(){if(!this.running||this.controller||!this.queue.size&&!this.seen.size)return;if(this.account!==this.currentAccount()){this.queue.clear(),this.seen.clear();return}if(!this.active()||Date.now()sf;)this.sent.delete(this.sent.values().next().value??"");try{localStorage.setItem(of,JSON.stringify([...this.sent]))}catch{}this.failures=0}catch{e===this.generation&&(this.failures++,this.nextPostAt=Date.now()+Math.min(6e4,5e3*2**Math.min(this.failures-1,4)))}finally{this.controller===i&&(this.controller=null,this.schedule())}}},Py=new rc,fr=Py});var rf={};A(rf,{DISCOVERY_TABS:()=>gr,TITLES:()=>Vs});var Vs,gr,br=w(()=>{"use strict";Vs={overview:"Market",intelligence:"Discover",search:"Discover",active:"Discover",movers:"Discover",deals:"Discover",indices:"Market",watchlist:"Watchlist",portfolio:"Inventory",analyze:"Trade",help:"How it works",item:"Item overview"},gr=["search","active","deals","movers","intelligence"]});var af={};A(af,{element:()=>Fo,html:()=>P,markup:()=>Ys});function Fo(s,e,...t){let o=Object.entries(e).filter(([,r])=>r!==!1&&r!==null).map(([r,i])=>i===!0?` ${r}`:` ${r}="${S(String(i))}"`).join(""),n=t.map(r=>typeof r=="object"?r.html:S(String(r))).join("");return`<${s}${o}>${n}`}var Ys,P,_e=w(()=>{"use strict";pe();Ys=s=>({html:s});P=(s,...e)=>s.reduce((t,o,n)=>t+String(e[n-1])+o)});var cf={};A(cf,{itemDesk:()=>ac,marketDesk:()=>lc});function ac(s){let e=s.analytics;if(!e)return'

      Advanced analytics unavailable

      This server does not yet provide the detailed metrics for this item.

      ';let{book:t}=e,o=!!t.observedAt&&Date.now()-t.observedAt<=3*36e5,n=a=>e.latest!==null&&a!==null?`${ae(e.latest/a-1)} latest daily mean vs average`:"Needs consecutive daily sale prices",{position:r}=e.range90,i=t.ladder.length?`
      ${t.ladder.map(a=>``).join("")}
      Ask ceilingListingsTotal asks / KR
      ${T(a.price)} KR${a.premium?`Within +${Math.round(a.premium*100)}% of lowest`:"At the lowest ask"}
      ${a.count}
      ${T(a.kr)}
      `:'

      The next successful book observation will populate the ask ladder.

      ';return`
      ADVANCED / TRADING DESK

      Price, activity & supply

      Completed daily means through ${S(e.throughDay)} UTC. ${e.observedDays30} of 30 days have observed sale prices.

      Descriptive analytics
      Sale-price return / 7D ${ae(e.change7d)}30D ${ae(e.change30d)}Latest daily mean ${Xs(e.latest)}
      ${ne("Sales-weighted price / 30D",Xs(e.weightedPrice30),e.weightedPrice30===null?"No completed sale-price observations":`${ae(e.estimateVsWeighted)} Kute estimate vs benchmark`)}${ne("Simple moving average / 7D",Xs(e.sma7),n(e.sma7))}${ne("Simple moving average / 30D",Xs(e.sma30),n(e.sma30))}${ne("RSI / 14 periods",Zs(e.rsi14),e.rsi14===null?`Needs 15 consecutive priced days; ${e.consecutiveDays} available`:"Wilder smoothing of daily sale means; scale 0 to 100")}${ne("Daily volatility / 30D",Gt(e.dailyVolatility30),`${e.returnPairs30} adjacent daily returns; needs 10; not annualized`)}${ne("Max drawdown / 90D",Gt(e.maxDrawdown90),`${e.observedDays90} priced days; gaps can hide larger declines`)}${ne("Range position / 90D",Gt(r),e.range90.low!==null?`${T(e.range90.low)} to ${T(e.range90.high)} KR in daily means`:"Needs at least 5 observed price days")}${ne("Reported turnover / 30D",Xs(e.turnover30d),"Daily mean price multiplied by units sold")}

      Activity & supply pressure

      Supply ${lf(e.statsAt)}
      `+Js("Weekly sales",e.reportedDays7?`${T(e.sales7d)} units`:"No reports",`${e.priorReportedDays7?T(e.priorSales7d):"No reports"} in the prior week; reports on ${e.reportedDays7}/7 and ${e.priorReportedDays7}/7 days`)+Js("Relative weekly volume",Zs(e.activityRatio,"x"),"Latest 7 days / prior 7; requires reports for both full weeks")+Js("Listed supply / daily sales",Zs(e.daysListedAtRecentPace," days"),"Reported listings / recent daily sales; a supply ratio, not time to sell")+Js("Circulating supply listed",Gt(e.listedShare),`${T(e.reportedListed)} reported listed / ${T(e.circulation)} circulating`)+Js("30D turnover / circulation",Gt(e.turnoverShare),"Reported units sold / current supply; an item can trade more than once")+'

      Ask-side depth ladder

      '+lf(t.observedAt)+"
      "+(o?"":'

      This book needs a fresh observation. The ladder describes the stored sample.

      ')+i+`

      Cumulative counts in ${t.sampled} sampled listings; ${e.reportedListed} reported listed. These rows overlap. ${t.belowEstimate} sampled asks are below the Kute estimate.

      Largest observed seller${t.sellers} identified sellers; identity available for ${t.knownSellerListings}/${t.sampled} listings
      ${Gt(t.largestSellerShare)}
      Read the metrics

      All technical indicators use completed daily average sale prices, not exchange closing prices or individual transactions. Moving averages require every day in their window. RSI resets at a missing price day; a flat sequence is shown as 50. A high or low RSI describes past momentum and does not establish a buy or sell signal.

      Volatility is the sample standard deviation of log returns between adjacent observed days. Drawdown is the largest observed peak-to-trough decline. The sales-weighted benchmark weights each daily mean by its reported sale count. Missing days are excluded, never treated as zero-price trades.

      The ladder contains asking prices only. We have no bid book, so it cannot measure bid/ask spread, execution slippage, or buyer demand. Supply ratios require a supply observation within 24 hours. These metrics do not enable unvalidated forecasts.

      `}function lc(s){let e=s.diagnostics,t=s.breadth;return!e||!t?"":`
      ADVANCED / MARKET DIAGNOSTICS

      How broad is the move?

      ${t.eligible} eligible items
      ${ne("Advance / decline ratio",Zs(e.advanceDeclineRatio,"x"),`${t.rising} rising / ${t.falling} falling; 0.5% movement threshold`)}${ne("Median item return / 7D",ae(e.medianChange),"Equal item weighting among eligible estimates")}${ne("Middle half of returns",`${ae(e.lowerQuartile)} to ${ae(e.upperQuartile)}`,"25th to 75th percentile; dispersion across items")}${ne("Top 10 turnover share",Gt(e.top10VolumeShare),"Concentration of 30D KR turnover in eligible items")}
      ${(s.categories??[]).map(o=>``).join("")}
      CategoryEligible7D medianRising / falling30D KR turnoverTurnover share
      ${S(Et[o.type]??"Other")}${o.items}${ae(o.change)}${o.rising??"?"} / ${o.falling??"?"}${T(o.volume)}${Gt(e.eligibleVolume>0?o.volume/e.eligibleVolume:null)}

      Coverage: ${t.eligible} of ${T(t.total)} tradable items. Requires a sales-based estimate updated within 24 hours, at least 5 sales in 7 days, and a measured 7D trend. Turnover shares describe this eligible set, not the entire market. Price changes use Kute estimates.

      `}var Zs,Gt,Xs,lf,Js,vr=w(()=>{"use strict";pe();We();Zs=(s,e="")=>s==null?"Unavailable":s.toFixed(1)+e,Gt=s=>s==null?"Unavailable":Zs(s*100,"%"),Xs=s=>s==null?"Unavailable":`${T(s)} KR`,lf=s=>s?`${Ge(Math.max(0,Date.now()-s))} ago`:"freshness unknown",Js=(s,e,t)=>`
      ${s}${t}
      ${e}
      `});var uf={};A(uf,{overviewView:()=>cc});async function cc(s){let[e,t]=await Promise.all([W.cached("/market/overview",5*df),W.cached("/market/indices",60*df)]);if(!e)return s.unavailable();let o=new Date().toISOString().slice(0,10),n=e.days.filter(f=>f.dayf.name==="kute-100"),l=Se().slice(0,4),c=l.length?await W.values(l.map(f=>f.skin)):{},u=l.length?P` +${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.delete(this.sent.values().next().value??"");try{localStorage.setItem(of,JSON.stringify([...this.sent]))}catch{}this.failures=0}catch{e===this.generation&&(this.failures++,this.nextPostAt=Date.now()+Math.min(6e4,5e3*2**Math.min(this.failures-1,4)))}finally{this.controller===i&&(this.controller=null,this.schedule())}}},Py=new rc,gr=Py});var rf={};A(rf,{DISCOVERY_TABS:()=>br,TITLES:()=>Ys});var Ys,br,vr=w(()=>{"use strict";Ys={overview:"Market",intelligence:"Discover",search:"Discover",active:"Discover",movers:"Discover",deals:"Discover",indices:"Market",watchlist:"Watchlist",portfolio:"Inventory",analyze:"Trade",help:"How it works",item:"Item overview"},br=["search","active","deals","movers","intelligence"]});var af={};A(af,{element:()=>Fo,html:()=>P,markup:()=>Xs});function Fo(s,e,...t){let o=Object.entries(e).filter(([,r])=>r!==!1&&r!==null).map(([r,i])=>i===!0?` ${r}`:` ${r}="${S(String(i))}"`).join(""),n=t.map(r=>typeof r=="object"?r.html:S(String(r))).join("");return`<${s}${o}>${n}`}var Xs,P,_e=w(()=>{"use strict";pe();Xs=s=>({html:s});P=(s,...e)=>s.reduce((t,o,n)=>t+String(e[n-1])+o)});var cf={};A(cf,{itemDesk:()=>ac,marketDesk:()=>lc});function ac(s){let e=s.analytics;if(!e)return'

      Advanced analytics unavailable

      This server does not yet provide the detailed metrics for this item.

      ';let{book:t}=e,o=!!t.observedAt&&Date.now()-t.observedAt<=3*36e5,n=a=>e.latest!==null&&a!==null?`${ae(e.latest/a-1)} latest daily mean vs average`:"Needs consecutive daily sale prices",{position:r}=e.range90,i=t.ladder.length?`
      ${t.ladder.map(a=>``).join("")}
      Ask ceilingListingsTotal asks / KR
      ${T(a.price)} KR${a.premium?`Within +${Math.round(a.premium*100)}% of lowest`:"At the lowest ask"}
      ${a.count}
      ${T(a.kr)}
      `:'

      The next successful book observation will populate the ask ladder.

      ';return`
      ADVANCED / TRADING DESK

      Price, activity & supply

      Completed daily means through ${S(e.throughDay)} UTC. ${e.observedDays30} of 30 days have observed sale prices.

      Descriptive analytics
      Sale-price return / 7D ${ae(e.change7d)}30D ${ae(e.change30d)}Latest daily mean ${Js(e.latest)}
      ${ne("Sales-weighted price / 30D",Js(e.weightedPrice30),e.weightedPrice30===null?"No completed sale-price observations":`${ae(e.estimateVsWeighted)} Kute estimate vs benchmark`)}${ne("Simple moving average / 7D",Js(e.sma7),n(e.sma7))}${ne("Simple moving average / 30D",Js(e.sma30),n(e.sma30))}${ne("RSI / 14 periods",Qs(e.rsi14),e.rsi14===null?`Needs 15 consecutive priced days; ${e.consecutiveDays} available`:"Wilder smoothing of daily sale means; scale 0 to 100")}${ne("Daily volatility / 30D",Gt(e.dailyVolatility30),`${e.returnPairs30} adjacent daily returns; needs 10; not annualized`)}${ne("Max drawdown / 90D",Gt(e.maxDrawdown90),`${e.observedDays90} priced days; gaps can hide larger declines`)}${ne("Range position / 90D",Gt(r),e.range90.low!==null?`${T(e.range90.low)} to ${T(e.range90.high)} KR in daily means`:"Needs at least 5 observed price days")}${ne("Reported turnover / 30D",Js(e.turnover30d),"Daily mean price multiplied by units sold")}

      Activity & supply pressure

      Supply ${lf(e.statsAt)}
      `+Zs("Weekly sales",e.reportedDays7?`${T(e.sales7d)} units`:"No reports",`${e.priorReportedDays7?T(e.priorSales7d):"No reports"} in the prior week; reports on ${e.reportedDays7}/7 and ${e.priorReportedDays7}/7 days`)+Zs("Relative weekly volume",Qs(e.activityRatio,"x"),"Latest 7 days / prior 7; requires reports for both full weeks")+Zs("Listed supply / daily sales",Qs(e.daysListedAtRecentPace," days"),"Reported listings / recent daily sales; a supply ratio, not time to sell")+Zs("Circulating supply listed",Gt(e.listedShare),`${T(e.reportedListed)} reported listed / ${T(e.circulation)} circulating`)+Zs("30D turnover / circulation",Gt(e.turnoverShare),"Reported units sold / current supply; an item can trade more than once")+'

      Ask-side depth ladder

      '+lf(t.observedAt)+"
      "+(o?"":'

      This book needs a fresh observation. The ladder describes the stored sample.

      ')+i+`

      Cumulative counts in ${t.sampled} sampled listings; ${e.reportedListed} reported listed. These rows overlap. ${t.belowEstimate} sampled asks are below the Kute estimate.

      Largest observed seller${t.sellers} identified sellers; identity available for ${t.knownSellerListings}/${t.sampled} listings
      ${Gt(t.largestSellerShare)}
      Read the metrics

      All technical indicators use completed daily average sale prices, not exchange closing prices or individual transactions. Moving averages require every day in their window. RSI resets at a missing price day; a flat sequence is shown as 50. A high or low RSI describes past momentum and does not establish a buy or sell signal.

      Volatility is the sample standard deviation of log returns between adjacent observed days. Drawdown is the largest observed peak-to-trough decline. The sales-weighted benchmark weights each daily mean by its reported sale count. Missing days are excluded, never treated as zero-price trades.

      The ladder contains asking prices only. We have no bid book, so it cannot measure bid/ask spread, execution slippage, or buyer demand. Supply ratios require a supply observation within 24 hours. These metrics do not enable unvalidated forecasts.

      `}function lc(s){let e=s.diagnostics,t=s.breadth;return!e||!t?"":`
      ADVANCED / MARKET DIAGNOSTICS

      How broad is the move?

      ${t.eligible} eligible items
      ${ne("Advance / decline ratio",Qs(e.advanceDeclineRatio,"x"),`${t.rising} rising / ${t.falling} falling; 0.5% movement threshold`)}${ne("Median item return / 7D",ae(e.medianChange),"Equal item weighting among eligible estimates")}${ne("Middle half of returns",`${ae(e.lowerQuartile)} to ${ae(e.upperQuartile)}`,"25th to 75th percentile; dispersion across items")}${ne("Top 10 turnover share",Gt(e.top10VolumeShare),"Concentration of 30D KR turnover in eligible items")}
      ${(s.categories??[]).map(o=>``).join("")}
      CategoryEligible7D medianRising / falling30D KR turnoverTurnover share
      ${S(Et[o.type]??"Other")}${o.items}${ae(o.change)}${o.rising??"?"} / ${o.falling??"?"}${T(o.volume)}${Gt(e.eligibleVolume>0?o.volume/e.eligibleVolume:null)}

      Coverage: ${t.eligible} of ${T(t.total)} tradable items. Requires a sales-based estimate updated within 24 hours, at least 5 sales in 7 days, and a measured 7D trend. Turnover shares describe this eligible set, not the entire market. Price changes use Kute estimates.

      `}var Qs,Gt,Js,lf,Zs,wr=w(()=>{"use strict";pe();Ve();Qs=(s,e="")=>s==null?"Unavailable":s.toFixed(1)+e,Gt=s=>s==null?"Unavailable":Qs(s*100,"%"),Js=s=>s==null?"Unavailable":`${T(s)} KR`,lf=s=>s?`${We(Math.max(0,Date.now()-s))} ago`:"freshness unknown",Zs=(s,e,t)=>`
      ${s}${t}
      ${e}
      `});var uf={};A(uf,{overviewView:()=>cc});async function cc(s){let[e,t]=await Promise.all([W.cached("/market/overview",5*df),W.cached("/market/indices",60*df)]);if(!e)return s.unavailable();let o=new Date().toISOString().slice(0,10),n=e.days.filter(f=>f.dayf.name==="kute-100"),l=Se().slice(0,4),c=l.length?await W.values(l.map(f=>f.skin)):{},d=l.length?P`
      ${l.map(f=>{let m=c[f.skin];return P` `}).join("")}
      - `:fe("Make this market yours","Watch items to follow their price and set a target.",''),h=(e.categories??[]).slice(0,6),p=i?.eligible?P` + `:fe("Make this market yours","Watch items to follow their price and set a target.",''),p=(e.categories??[]).slice(0,6),h=i?.eligible?P`
      @@ -277,7 +277,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del

      Market direction

      7-day breadth
      - ${p} + ${h}
      OBSERVED ON THE MARKET

      ${T(e.listingsLive)} sampled listings

      @@ -293,9 +293,9 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del

      Across the categories

      Median 7D change
      - ${h.length?P` + ${p.length?P`
      - ${h.map(f=>P` + ${p.map(f=>P`
      - ${u} + ${d}
      `+P` @@ -322,7 +322,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
      ${s.compactList(e.active??[])} - `,points:n.map(f=>({t:Date.parse(f.day+"T00:00:00Z"),values:[f.volume]})),series:[{label:"KR traded",color:"#f580b4"}]}}var df,dc=w(()=>{"use strict";_e();xe();pe();Ut();vr();df=6e4});var pf={};A(pf,{default:()=>Do,itemSearch:()=>ko});var ko,Do,qo=w(()=>{"use strict";xe();pe();ko=(s,e,t,o="")=>`
      `,Do=class{constructor(e,t,o,n,r){this.root=e,this.select=o,this.browse=n,this.holdings=r,this.input=null,this.list=null,this.items=[],this.active=-1,this.sequence=0,this.timer=0,e.addEventListener("input",i=>{i.target instanceof HTMLInputElement&&i.target.dataset.itemSearch&&this.search(i.target)},{signal:t}),e.addEventListener("focusin",i=>{i.target!==this.input&&!(i.target instanceof Element&&this.list?.contains(i.target))&&this.dismiss()},{signal:t}),e.addEventListener("pointerdown",i=>{i.target instanceof Element&&(this.list?.contains(i.target)?i.preventDefault():i.target!==this.input&&this.dismiss())},{signal:t}),e.addEventListener("click",i=>{let a=i.target instanceof Element?i.target.closest("[data-suggestion],[data-search-all]"):null;if(!(!(a instanceof HTMLElement)||!this.list?.contains(a)))if(a.dataset.suggestion!==void 0)this.choose(Number(a.dataset.suggestion));else{let l=this.input?.value.trim()??"",c=this.input?.dataset.itemSearch??"global";this.dismiss(),this.browse(l,c)}},{signal:t}),t.addEventListener("abort",()=>this.dismiss(),{once:!0})}dismiss(){clearTimeout(this.timer),this.sequence++,this.list&&(this.list.hidden=!0),this.input?.setAttribute("aria-expanded","false"),this.input?.removeAttribute("aria-activedescendant"),this.input=null,this.list=null,this.items=[],this.active=-1}search(e){this.dismiss();let t=e.value.trim();if(!t)return;let o=this.root.getElementById(`${e.id}List`);if(!o)return;this.input=e,this.list=o,o.hidden=!1,o.innerHTML=`
      Searching items...
      `,e.setAttribute("aria-expanded","true");let{sequence:n}=this;this.timer=window.setTimeout(async()=>{let r=null;try{e.dataset.itemSearch==="holdings"?r=this.holdings().filter(c=>c.name.toLocaleLowerCase().includes(t.toLocaleLowerCase())):r=(await W.cached(`/market/search?q=${encodeURIComponent(t)}&sort=volume&page=1`,6e4))?.items??null}catch{r=null}if(n!==this.sequence||!e.isConnected||e.value.trim()!==t)return;this.items=r?.slice(0,8)??[];let i=e.dataset.itemSearch,a=i==="holdings"?"Your holdings":"All items",l=i==="give"||i==="get"?"Add":"Open";o.innerHTML=`
      ${a}${l} an item
      ${this.items.map((c,u)=>``).join("")}
      ${!r||!r.length?`
      ${r?"No matching items":"Search unavailable. Try typing again."}
      `:""}${i==="global"||i==="discover"?'':""}`},250)}choose(e){let t=this.items[e],o=this.input?.dataset.itemSearch;!t||!o||(this.dismiss(),this.select(t,o))}key(e){if(e.isComposing)return!1;let t=this.root.activeElement;if(!(t instanceof HTMLInputElement)||!t.dataset.itemSearch)return!1;if(e.key==="Tab")return this.dismiss(),!1;if(e.key==="Escape"&&this.input)return this.dismiss(),e.preventDefault(),!0;if(e.key==="Enter"&&this.active>=0)return this.choose(this.active),e.preventDefault(),!0;if(e.key!=="ArrowDown"&&e.key!=="ArrowUp")return!1;if(e.preventDefault(),this.input!==t)return this.search(t),!0;if(!this.items.length)return!0;let o=this.active+(e.key==="ArrowDown"?1:-1);this.active<0&&e.key==="ArrowUp"&&(o=this.items.length-1),this.active=(o+this.items.length)%this.items.length,this.list?.querySelectorAll("[data-suggestion]").forEach((r,i)=>r.setAttribute("aria-selected",String(i===this.active)));let n=`${t.id}Option${this.active}`;return t.setAttribute("aria-activedescendant",n),this.root.getElementById(n)?.scrollIntoView({block:"nearest"}),!0}}});var hf={};A(hf,{searchView:()=>uc});async function uc(s){let e=s.searchState(),t=new URLSearchParams({sort:e.sort,page:String(e.page)});for(let[i,a]of Object.entries({q:e.q,rarity:e.rarity,type:e.type,budget:e.budget,[s.tab==="active"?"min_activity":"min_sales"]:e.minSales}))a!==""&&t.set(i,a);let o=await W.cached(`/market/search?${t}`,Iy);if(!o)return s.unavailable();let n=(i,a)=>i.map((l,c)=>P` + `,points:n.map(f=>({t:Date.parse(f.day+"T00:00:00Z"),values:[f.volume]})),series:[{label:"KR traded",color:"#f580b4"}]}}var df,dc=w(()=>{"use strict";_e();xe();pe();Ut();wr();df=6e4});var pf={};A(pf,{default:()=>qo,itemSearch:()=>ko});var ko,qo,Ko=w(()=>{"use strict";xe();pe();ko=(s,e,t,o="")=>`
      `,qo=class{constructor(e,t,o,n,r){this.root=e,this.select=o,this.browse=n,this.holdings=r,this.input=null,this.list=null,this.items=[],this.active=-1,this.sequence=0,this.timer=0,e.addEventListener("input",i=>{i.target instanceof HTMLInputElement&&i.target.dataset.itemSearch&&this.search(i.target)},{signal:t}),e.addEventListener("focusin",i=>{i.target!==this.input&&!(i.target instanceof Element&&this.list?.contains(i.target))&&this.dismiss()},{signal:t}),e.addEventListener("pointerdown",i=>{i.target instanceof Element&&(this.list?.contains(i.target)?i.preventDefault():i.target!==this.input&&this.dismiss())},{signal:t}),e.addEventListener("click",i=>{let a=i.target instanceof Element?i.target.closest("[data-suggestion],[data-search-all]"):null;if(!(!(a instanceof HTMLElement)||!this.list?.contains(a)))if(a.dataset.suggestion!==void 0)this.choose(Number(a.dataset.suggestion));else{let l=this.input?.value.trim()??"",c=this.input?.dataset.itemSearch??"global";this.dismiss(),this.browse(l,c)}},{signal:t}),t.addEventListener("abort",()=>this.dismiss(),{once:!0})}dismiss(){clearTimeout(this.timer),this.sequence++,this.list&&(this.list.hidden=!0),this.input?.setAttribute("aria-expanded","false"),this.input?.removeAttribute("aria-activedescendant"),this.input=null,this.list=null,this.items=[],this.active=-1}search(e){this.dismiss();let t=e.value.trim();if(!t)return;let o=this.root.getElementById(`${e.id}List`);if(!o)return;this.input=e,this.list=o,o.hidden=!1,o.innerHTML=`
      Searching items...
      `,e.setAttribute("aria-expanded","true");let{sequence:n}=this;this.timer=window.setTimeout(async()=>{let r=null;try{e.dataset.itemSearch==="holdings"?r=this.holdings().filter(c=>c.name.toLocaleLowerCase().includes(t.toLocaleLowerCase())):r=(await W.cached(`/market/search?q=${encodeURIComponent(t)}&sort=volume&page=1`,6e4))?.items??null}catch{r=null}if(n!==this.sequence||!e.isConnected||e.value.trim()!==t)return;this.items=r?.slice(0,8)??[];let i=e.dataset.itemSearch,a=i==="holdings"?"Your holdings":"All items",l=i==="give"||i==="get"?"Add":"Open";o.innerHTML=`
      ${a}${l} an item
      ${this.items.map((c,d)=>``).join("")}
      ${!r||!r.length?`
      ${r?"No matching items":"Search unavailable. Try typing again."}
      `:""}${i==="global"||i==="discover"?'':""}`},250)}choose(e){let t=this.items[e],o=this.input?.dataset.itemSearch;!t||!o||(this.dismiss(),this.select(t,o))}key(e){if(e.isComposing)return!1;let t=this.root.activeElement;if(!(t instanceof HTMLInputElement)||!t.dataset.itemSearch)return!1;if(e.key==="Tab")return this.dismiss(),!1;if(e.key==="Escape"&&this.input)return this.dismiss(),e.preventDefault(),!0;if(e.key==="Enter"&&this.active>=0)return this.choose(this.active),e.preventDefault(),!0;if(e.key!=="ArrowDown"&&e.key!=="ArrowUp")return!1;if(e.preventDefault(),this.input!==t)return this.search(t),!0;if(!this.items.length)return!0;let o=this.active+(e.key==="ArrowDown"?1:-1);this.active<0&&e.key==="ArrowUp"&&(o=this.items.length-1),this.active=(o+this.items.length)%this.items.length,this.list?.querySelectorAll("[data-suggestion]").forEach((r,i)=>r.setAttribute("aria-selected",String(i===this.active)));let n=`${t.id}Option${this.active}`;return t.setAttribute("aria-activedescendant",n),this.root.getElementById(n)?.scrollIntoView({block:"nearest"}),!0}}});var hf={};A(hf,{searchView:()=>uc});async function uc(s){let e=s.searchState(),t=new URLSearchParams({sort:e.sort,page:String(e.page)});for(let[i,a]of Object.entries({q:e.q,rarity:e.rarity,type:e.type,budget:e.budget,[s.tab==="active"?"min_activity":"min_sales"]:e.minSales}))a!==""&&t.set(i,a);let o=await W.cached(`/market/search?${t}`,Iy);if(!o)return s.unavailable();let n=(i,a)=>i.map((l,c)=>P` `).join(""),r=Math.max(1,Math.ceil(o.total/o.perPage));return{asOf:o.asOf,html:s.intro(s.tab==="active"?"Find items that are trading.":"Find your next item.",s.tab==="active"?`At least ${e.minSales} public sales or reported private exchanges in seven days. Private activity is shown separately from cash-sale liquidity.`:"Browse by budget, recent activity, or the items you already have in mind.",'')+P`
      @@ -370,7 +370,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
      - `}}var Iy,pc=w(()=>{"use strict";_e();xe();We();pe();qo();Iy=6e4});var mf={};A(mf,{dealEvidence:()=>hc,intelligenceView:()=>fc,itemIntelligence:()=>mc});function hc(s){let{assessment:e}=s;if(!e)return"";let t=e.risks[0]??"Supported by recent sales";return`{"use strict";_e();xe();Ve();pe();Ko();Iy=6e4});var mf={};A(mf,{dealEvidence:()=>hc,intelligenceView:()=>fc,itemIntelligence:()=>mc});function hc(s){let{assessment:e}=s;if(!e)return"";let t=e.risks[0]??"Supported by recent sales";return`${S(t)}${e.risks.length>1?` +${e.risks.length-1} risk${e.risks.length>2?"s":""}`:""}`}function mc(s,e=!1){if(!s)return"";let{outlook:t}=s,o=s.signals.slice(0,e?2:4);if(!o.length&&t.state!=="published")return"";let n="";return t.state==="published"&&(n=`
      sf;)this.sent.del ${S(r.title)}

      ${S(r.detail)}

      -
      `).join(""):'

      No observation to highlight.

      '}${n}`}function fc(s,e,t,o){let{model:n}=s,r=n?.historical,i=n?.forward,a=r?.skill??null,l=[["","All signals"],["activity","Activity"],["supply","Supply"],["relative","Relative value"],["risk","Risks"],["availability","Availability"]],c=[...s.items].sort((h,p)=>Number(o.includes(p.skin))-Number(o.includes(h.skin))),u=h=>`${T(h.samples)} -${h.weeks} -${h.modelError===null?"Pending":h.modelError.toFixed(3)} -${h.skill===null?"Pending":wr(h.skill)} -${h.coverage===null?"Pending":wr(h.coverage)}`;return`
      +
      `).join(""):'

      No observation to highlight.

      '}${n}`}function fc(s,e,t,o){let{model:n}=s,r=n?.historical,i=n?.forward,a=r?.skill??null,l=[["","All signals"],["activity","Activity"],["supply","Supply"],["relative","Relative value"],["risk","Risks"],["availability","Availability"]],c=[...s.items].sort((p,h)=>Number(o.includes(h.skin))-Number(o.includes(p.skin))),d=p=>`${T(p.samples)} +${p.weeks} +${p.modelError===null?"Pending":p.modelError.toFixed(3)} +${p.skill===null?"Pending":kr(p.skill)} +${p.coverage===null?"Pending":kr(p.coverage)}`;return`
      KUTE INTELLIGENCE

      Read the market.

      @@ -415,7 +415,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del class="intelligenceProof"> Historical error reduction ${a===null?"Pending":wr(a)} + class="${a!==null&&a>0?"positive":"muted"}">${a===null?"Pending":kr(a)} vs the better of two baselines
      ${T(r?.samples??0)} held-out predictions
      ${T(i?.samples??0)} forward outcomes @@ -423,14 +423,14 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
      ${l.map(([h,p])=>``).join("")}
      `+(c.length?`
      ${c.map(h=>{let f=h.intelligence.signals.filter(g=>!e||g.kind===e)[0],m=h.intelligence.signals.find(g=>g!==f&&g.kind==="risk");return`
      ${l.map(([p,h])=>``).join("")}
      `+(c.length?`
      ${c.map(p=>{let f=p.intelligence.signals.filter(g=>!e||g.kind===e)[0],m=p.intelligence.signals.find(g=>g!==f&&g.kind==="risk");return`
      ${o.includes(h.skin)?'Watching':""}
      + data-skin="${S(p.skin)}">${me(p)}${o.includes(p.skin)?'Watching':""}
      ${S(f?.kind??"signal")}

      ${S(f?.title)}

      @@ -438,11 +438,11 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del class="sub">${S(f?.detail)}

      ${m?`

      ${S(m.title)}

      `:""}
      -${T(h.fair)} KR estimate · ${h.sales7d} sales / 7D +${T(p.fair)} KR estimate · ${p.sales7d} sales / 7D + data-skin="${S(p.skin)}">Inspect item →
      `}).join("")}
      `:`
      ${fe("No supported signals in this category","Signals need enough observations to support a comparison. New evidence appears as the collector runs.")}
      `)+`

      Signals are descriptive threshold checks. False-alert rates and predictive usefulness have not been measured; these observations are not trade recommendations. Sales reporting can be incomplete. Quote changes do not prove a sale. Dates are UTC.

      sf;)this.sent.del -Historical holdouts${u(r)} +Historical holdouts${d(r)} -Actually issued${u(i)} +Actually issued${d(i)}

      Lower log error is better. Error reduction compares with the better of unchanged last price and the existing valuation baseline. Historical mean range width: ${wr(r.width)} of the predicted price. Forward publication requires 200 outcomes, 20 items, four issue weeks, at least 5% lower error, 85-95% range coverage and mean range width no greater than the predicted price.

      `:""}
      Lower log error is better. Error reduction compares with the better of unchanged last price and the existing valuation baseline. Historical mean range width: ${kr(r.width)} of the predicted price. Forward publication requires 200 outcomes, 20 items, four issue weeks, at least 5% lower error, 85-95% range coverage and mean range width no greater than the predicted price.

      `:""}
      ${T(s.coverage.dailyRows)} daily observations @@ -479,11 +479,11 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${T(s.coverage.items)} items with sales history

      Sales history: ${S(s.coverage.firstDay??"Pending")} to ${S(s.coverage.lastDay??"Pending")}. Supply observations since ${s.coverage.supplySince?S(new Date(s.coverage.supplySince).toISOString().slice(0,16).replace("T"," ")):"collection began"}. ${n?`Model trained ${S(Ge(Date.now()-n.trainedAt))} ago.`:""}

      ${s.sources.length?`
      ${s.sources.map(h=>`${S(h.source)}: ${h.records} records · ${S(Ge(Date.now()-h.observedAt))} ago`).join("")}
      `:'

      News and catalog feeds have not been collected yet.

      '}`+(s.news.length?`
      Sales history: ${S(s.coverage.firstDay??"Pending")} to ${S(s.coverage.lastDay??"Pending")}. Supply observations since ${s.coverage.supplySince?S(new Date(s.coverage.supplySince).toISOString().slice(0,16).replace("T"," ")):"collection began"}. ${n?`Model trained ${S(We(Date.now()-n.trainedAt))} ago.`:""}

      ${s.sources.length?`
      ${s.sources.map(p=>`${S(p.source)}: ${p.records} records · ${S(We(Date.now()-p.observedAt))} ago`).join("")}
      `:'

      News and catalog feeds have not been collected yet.

      '}`+(s.news.length?`
      -

      Official news

      ${s.news.map(h=>`

      ${h.url?``:S(h.title)}

      `).join("")}
      `:"")}var wr,Qs=w(()=>{"use strict";pe();We();wr=s=>s===null?"Not available":`${(s*100).toFixed(1)}%`});var ff={};A(ff,{contributionEvidence:()=>gc});function gc(s){if(!s||!s.trades30d&&!s.sales30d)return"";let{cash:e,sales:t,swaps:o}=s;return`
      +

      Official news

      ${s.news.map(p=>`

      ${p.url?``:S(p.title)}

      `).join("")}
      `:"")}var kr,en=w(()=>{"use strict";pe();Ve();kr=s=>s===null?"Not available":`${(s*100).toFixed(1)}%`});var ff={};A(ff,{contributionEvidence:()=>gc});function gc(s){if(!s||!s.trades30d&&!s.sales30d)return"";let{cash:e,sales:t,swaps:o}=s;return`

      Completed trade reports

      30 days

      ${T(s.trades30d)} reported private trades involved this item. ${T(s.matchedSales30d)} of ${T(s.sales30d)} contributed market sales match independently sampled listings and fit official daily totals.

      @@ -512,7 +512,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
      `:""}

      Client reports can be incomplete or inaccurate. A verdict needs sufficient combined public and private evidence. Private trading does not establish cash-sale liquidity. The letter grade still describes public-market activity.

      - `}var Ny,wc=w(()=>{"use strict";pe();Ny={sales7d:"7-day public sales",sales30d:"30-day public sales",sales90d:"90-day public sales",ask:"Sampled asking prices",krunker:"Krunker estimate",floor:"Fallback estimate"}});var vf={};A(vf,{candleSeries:()=>yc,lineSegments:()=>kc});function kc(s,e,t){let o=[],n=null,r=!1;for(let i of s){let a=i.values[e];if(a==null||!Number.isFinite(a)){r=!0;continue}n&&o.push({from:n,to:i,gap:r||i.t-n.t>t*1.5}),n=i,r=!1}return o}function bf(s,e,t){let o=new Map,n=e===7*864e5?4*864e5:0;for(let a of[...s].sort((l,c)=>l.t-c.t)){let l=Math.floor((a.t-n)/e)*e+n,c=o.get(l);c||(c={t:l,end:l+e,values:[],volume:null,ask:null,partial:!1},o.set(l,c));for(let[h,p]of a.values.entries())p!==null&&Number.isFinite(p)&&(c.values[h]=p);a.volume!==null&&a.volume!==void 0&&Number.isFinite(a.volume)&&(c.volume=(c.volume??0)+a.volume);let u=a.ask;u&&(c.ask?(c.ask.high=Math.max(c.ask.high,u.high),c.ask.low=Math.min(c.ask.low,u.low),c.ask.close=u.close,c.ask.samples+=u.samples):c.ask={...u})}let r=Math.min(...s.map(a=>a.t)),i=Math.max(...s.map(a=>a.t+t));for(let a of o.values())a.partial=a.ti||(a.end??0)>Date.now();return[...o.values()]}function yc(s,e){let t=e,o=bf(s,t,e),n=a=>{let l=a.filter(c=>c.ask);return{count:l.length,share:l.filter(c=>(c.ask?.samples??0)>1).length/Math.max(1,l.length)}},r=n(o);for(let a of _y.filter(l=>l>e)){if(r.share>=.6||r.count<2)break;let l=bf(s,a,e),c=n(l);c.count<2||c.share<=r.share||(t=a,o=l,r=c)}let i=t>=864e5?`${t/864e5}D`:`${t/36e5}h`;return{points:o,stepMs:t,label:i}}var _y,kr=w(()=>{"use strict";_y=[36e5,144e5,432e5,864e5,6048e5]});var wf={};A(wf,{itemView:()=>xc});async function xc(s){let e=s.itemState(),t=!e.candles&&e.range==="7D"?"1M":e.range,o=await W.itemDesk(e.skin,t);t!==e.range&&o?.history&&!o.history.points.some(B=>B.t>=Date.now()-7*864e5&&B.avg!==null)&&(t=e.range,o=await W.itemDesk(e.skin,t)??o);let{item:n,history:r,listings:i}=o??{};if(!n)return s.unavailable();let a=n.skin,l=n.evidence,c=Se().some(B=>B.skin===a.skin),u=l?.dailyRange,h=l?`${l.sales} sales across ${l.days} trading days in 30D`:`${n.liquidity.sales30d} sales in 30 days`,p=a.exchange?.status==="applied"?`${a.exchange.reports} eligible private exchanges${a.method.startsWith("sales")?" + public sales":"; tentative when sparse"}`:h,f=l?.reasons??[p,`The estimate is based on ${a.method.startsWith("sales")?"historical sales aggregates":"limited market evidence"}.`],m=[{label:r?.resolution==="hour"?"Lowest observed ask":"Daily average sale",color:"#f580b4"}];e.overlay!=="none"&&m.push({label:{fair:"Kute estimate",lowest:"Lowest observed ask",krunker:"Krunker estimate"}[e.overlay]??"Comparison",color:"#87b8f7"});let g=(r?.points??[]).filter(B=>t===e.range||B.t>=Date.now()-7*864e5).map(B=>({t:B.t,values:[r?.resolution==="hour"?B.lowest:B.avg,...m.length>1?[{fair:B.fair,lowest:B.lowest,krunker:B.krunker}[e.overlay]??null]:[]],volume:r?.resolution==="day"&&B.salesObserved!==!1?B.sales:null,ask:B.ask})),b=r?.resolution==="hour"?36e5:864e5,v=e.candles?yc(g,b):null;v&&({points:g,stepMs:b}=v);let k="Daily average completed-sale prices. Today's point, when present, is incomplete. Dashed connections cross missing observations; they do not supply prices for those dates.";r?.resolution==="hour"&&(k="Intraday lines show sampled asks. Dashed connections cross unsampled periods. Official sales data is daily; individual transaction timing is unavailable."),v&&(k=`Auto interval: ${v.label}. Sparse quotes use larger intervals when they can support multiple candles. Green and red show rising and falling sampled asks; gray ticks show one quote or an unchanged close. Empty intervals remain empty. These are asking-price candles, not transaction candles.`);let E=Math.max(8,Math.ceil(g.length/e.zoom)),L=Math.max(1,Math.floor(E/2)),x=(i?.listings??[]).slice(0,s.advanced?250:5),$=i?.observedAt??l?.bookAt,I=!$||Date.now()-$>3*36e5,_=i?.highest,H="Unavailable",G="No available quote";_===null?H="None observed":_!==void 0&&(H=P` + `}var Ny,wc=w(()=>{"use strict";pe();Ny={sales7d:"7-day public sales",sales30d:"30-day public sales",sales90d:"90-day public sales",ask:"Sampled asking prices",krunker:"Krunker estimate",floor:"Fallback estimate"}});var vf={};A(vf,{candleSeries:()=>yc,lineSegments:()=>kc});function kc(s,e,t){let o=[],n=null,r=!1;for(let i of s){let a=i.values[e];if(a==null||!Number.isFinite(a)){r=!0;continue}n&&o.push({from:n,to:i,gap:r||i.t-n.t>t*1.5}),n=i,r=!1}return o}function bf(s,e,t){let o=new Map,n=e===7*864e5?4*864e5:0;for(let a of[...s].sort((l,c)=>l.t-c.t)){let l=Math.floor((a.t-n)/e)*e+n,c=o.get(l);c||(c={t:l,end:l+e,values:[],volume:null,ask:null,partial:!1},o.set(l,c));for(let[p,h]of a.values.entries())h!==null&&Number.isFinite(h)&&(c.values[p]=h);a.volume!==null&&a.volume!==void 0&&Number.isFinite(a.volume)&&(c.volume=(c.volume??0)+a.volume);let d=a.ask;d&&(c.ask?(c.ask.high=Math.max(c.ask.high,d.high),c.ask.low=Math.min(c.ask.low,d.low),c.ask.close=d.close,c.ask.samples+=d.samples):c.ask={...d})}let r=Math.min(...s.map(a=>a.t)),i=Math.max(...s.map(a=>a.t+t));for(let a of o.values())a.partial=a.ti||(a.end??0)>Date.now();return[...o.values()]}function yc(s,e){let t=e,o=bf(s,t,e),n=a=>{let l=a.filter(c=>c.ask);return{count:l.length,share:l.filter(c=>(c.ask?.samples??0)>1).length/Math.max(1,l.length)}},r=n(o);for(let a of _y.filter(l=>l>e)){if(r.share>=.6||r.count<2)break;let l=bf(s,a,e),c=n(l);c.count<2||c.share<=r.share||(t=a,o=l,r=c)}let i=t>=864e5?`${t/864e5}D`:`${t/36e5}h`;return{points:o,stepMs:t,label:i}}var _y,yr=w(()=>{"use strict";_y=[36e5,144e5,432e5,864e5,6048e5]});var wf={};A(wf,{itemView:()=>xc});async function xc(s){let e=s.itemState(),t=!e.candles&&e.range==="7D"?"1M":e.range,o=await W.itemDesk(e.skin,t);t!==e.range&&o?.history&&!o.history.points.some(B=>B.t>=Date.now()-7*864e5&&B.avg!==null)&&(t=e.range,o=await W.itemDesk(e.skin,t)??o);let{item:n,history:r,listings:i}=o??{};if(!n)return s.unavailable();let a=n.skin,l=n.evidence,c=Se().some(B=>B.skin===a.skin),d=l?.dailyRange,p=l?`${l.sales} sales across ${l.days} trading days in 30D`:`${n.liquidity.sales30d} sales in 30 days`,h=a.exchange?.status==="applied"?`${a.exchange.reports} eligible private exchanges${a.method.startsWith("sales")?" + public sales":"; tentative when sparse"}`:p,f=l?.reasons??[h,`The estimate is based on ${a.method.startsWith("sales")?"historical sales aggregates":"limited market evidence"}.`],m=[{label:r?.resolution==="hour"?"Lowest observed ask":"Daily average sale",color:"#f580b4"}];e.overlay!=="none"&&m.push({label:{fair:"Kute estimate",lowest:"Lowest observed ask",krunker:"Krunker estimate"}[e.overlay]??"Comparison",color:"#87b8f7"});let g=(r?.points??[]).filter(B=>t===e.range||B.t>=Date.now()-7*864e5).map(B=>({t:B.t,values:[r?.resolution==="hour"?B.lowest:B.avg,...m.length>1?[{fair:B.fair,lowest:B.lowest,krunker:B.krunker}[e.overlay]??null]:[]],volume:r?.resolution==="day"&&B.salesObserved!==!1?B.sales:null,ask:B.ask})),b=r?.resolution==="hour"?36e5:864e5,v=e.candles?yc(g,b):null;v&&({points:g,stepMs:b}=v);let k="Daily average completed-sale prices. Today's point, when present, is incomplete. Dashed connections cross missing observations; they do not supply prices for those dates.";r?.resolution==="hour"&&(k="Intraday lines show sampled asks. Dashed connections cross unsampled periods. Official sales data is daily; individual transaction timing is unavailable."),v&&(k=`Auto interval: ${v.label}. Sparse quotes use larger intervals when they can support multiple candles. Green and red show rising and falling sampled asks; gray ticks show one quote or an unchanged close. Empty intervals remain empty. These are asking-price candles, not transaction candles.`);let E=Math.max(8,Math.ceil(g.length/e.zoom)),L=Math.max(1,Math.floor(E/2)),x=(i?.listings??[]).slice(0,s.advanced?250:5),$=i?.observedAt??l?.bookAt,I=!$||Date.now()-$>3*36e5,_=i?.highest,H="Unavailable",G="No available quote";_===null?H="None observed":_!==void 0&&(H=P` ${T(_)} KR `,G=`Sampled ask, not a sale price${I?" · quote needs updating":""}`);let J=B=>P` @@ -538,7 +538,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del `;return{item:n,listings:i,asOf:a.valuedAt??n.asOf,points:r?g:void 0,series:m,chartOptions:{candles:e.candles,volume:r?.resolution==="day",zoom:e.zoom,stepMs:b,connectGaps:!0,offset:e.offset},html:P`
      @@ -555,7 +555,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del

      ${S(Wl(a))} · - ${S(Us(a))} + ${S(Gs(a))}

      @@ -569,7 +569,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${ne("Kute estimate",P` ${T(a.fair)} KR - `,S(p))}${ne("Lowest observed ask",a.lowest===null?"None listed":P` + `,S(h))}${ne("Lowest observed ask",a.lowest===null?"None listed":P` ${T(a.lowest)} KR `,a.spread!==null?ae(a.spread)+` vs estimate${I?" · quote needs updating":""}`:"No available quote")}${ne("Highest observed ask",H,G)}${ne("Sales in the last 7 days",String(a.sales7d),`${a.onS} currently listed · ${T(a.inC)} in circulation`)} @@ -655,20 +655,20 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
      RECENT SALE-PRICE RANGE
      -

      ${u?`${T(u.low)} to ${T(u.high)} KR`:"More trading history needed"}

      +

      ${d?`${T(d.low)} to ${T(d.high)} KR`:"More trading history needed"}

      - ${u?"Central range of observed daily average prices over 30 days. This is historical context, not a forecast.":"A useful range needs several completed trading days."} + ${d?"Central range of observed daily average prices over 30 days. This is historical context, not a forecast.":"A useful range needs several completed trading days."}

      - ${u?P` + ${d?P`
      - ${T(u.low)} + ${T(d.low)} Current estimate - ${T(u.high)} + ${T(d.high)}
      `:""}

      @@ -707,7 +707,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del

      Available listings

      ${i?i.total:"Unknown total"} reported - listed${$?` · observed ${Ge(Date.now()-$)} ago`:" · freshness unknown"} + listed${$?` · observed ${We(Date.now()-$)} ago`:" · freshness unknown"}
      ${I?'
      These quotes need a fresh market observation. A listing may have changed or sold since it was last seen.
      ':""}${s.advanced?P` @@ -770,7 +770,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${ae(B.price/a.fair-1)} ${S(B.seller??"Unavailable")} ${s.advanced?P` - ${B.ageMs===null?"Unknown":Ge(B.ageMs)} + ${B.ageMs===null?"Unknown":We(B.ageMs)} ${B.serial!==null?`#${S(B.serial)}`:""}${B.wear!==null?` · wear ${B.wear.toFixed(3)}`:""} @@ -842,7 +842,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del

      ${J(n.instances.serial)}${J(n.instances.wear)}
      - `:"")}}var By,Sc=w(()=>{"use strict";_e();xe();br();We();pe();Ut();vr();Qs();bc();wc();kr();By=["1D","7D","1M","3M","1Y","ALL"]});var kf={};A(kf,{watchlistView:()=>Ec});async function Ec(s){let e=Se(),t=s.intro("Your eye on the market.","Watch prices and set targets. Your list is saved only on this device.",'');if(!e.length)return{html:t+'
      '+fe("Start with something you like","Open an item and choose Watch item. It will appear here with its latest estimate and asking price.",'')+"
      "};let o=e.filter(a=>a.rarity===void 0);if(o.length){let a=await Promise.all(o.map(l=>W.cached(`/market/item/${l.skin}`,3e5)));o.forEach((l,c)=>{let u=a[c]?.skin?.rarity;Number.isInteger(u)&&(l.rarity=u)}),o.some(l=>l.rarity!==void 0)&&wo(e)}let n=await W.values(e.map(a=>a.skin)),r=new Set($t.unread);queueMicrotask(()=>$t.markRead());let i=Math.min(...Object.values(n).flatMap(a=>a.valuedAt?[a.valuedAt]:[]));return{asOf:Number.isFinite(i)?i:void 0,html:t+P` + `:"")}}var By,Sc=w(()=>{"use strict";_e();xe();vr();Ve();pe();Ut();wr();en();bc();wc();yr();By=["1D","7D","1M","3M","1Y","ALL"]});var kf={};A(kf,{watchlistView:()=>Ec});async function Ec(s){let e=Se(),t=s.intro("Your eye on the market.","Watch prices and set targets. Your list is saved only on this device.",'');if(!e.length)return{html:t+'
      '+fe("Start with something you like","Open an item and choose Watch item. It will appear here with its latest estimate and asking price.",'')+"
      "};let o=e.filter(a=>a.rarity===void 0);if(o.length){let a=await Promise.all(o.map(l=>W.cached(`/market/item/${l.skin}`,3e5)));o.forEach((l,c)=>{let d=a[c]?.skin?.rarity;Number.isInteger(d)&&(l.rarity=d)}),o.some(l=>l.rarity!==void 0)&&wo(e)}let n=await W.values(e.map(a=>a.skin)),r=new Set($t.unread);queueMicrotask(()=>$t.markRead());let i=Math.min(...Object.values(n).flatMap(a=>a.valuedAt?[a.valuedAt]:[]));return{asOf:Number.isFinite(i)?i:void 0,html:t+P`
      @@ -893,7 +893,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del Targets compare against the latest observed ask. Check the item page for listing freshness. Target alerts are checked in the menu, never during gameplay.

      - `}}var $c=w(()=>{"use strict";_e();xe();pe();Ut();mr()});var yf={};A(yf,{moversView:()=>Cc});async function Cc(s){let e=typeof s.arg=="string"?s.arg:"7D",t=await W.cached(`/market/movers?window=${e}`,5*zy);if(!t)return s.unavailable();let o=n=>P` + `}}var $c=w(()=>{"use strict";_e();xe();pe();Ut();fr()});var yf={};A(yf,{moversView:()=>Cc});async function Cc(s){let e=typeof s.arg=="string"?s.arg:"7D",t=await W.cached(`/market/movers?window=${e}`,5*zy);if(!t)return s.unavailable();let o=n=>P`
      ${n.slice(0,10).map(r=>P` ')+"")}:s.unavailable()}var Hy,Ac=w(()=>{"use strict";_e();xe();pe();Qs();Hy=6e4});var Sf={};A(Sf,{indicesView:()=>Lc});async function Lc(s){let e=await W.cached("/market/indices",60*Oy);if(!e)return s.unavailable();let t=e.indices.find(o=>o.name===s.arg)??e.indices.find(o=>o.name==="kute-100")??e.indices[0];return{asOf:e.asOf,html:s.intro("The wider picture.","Equal-weighted indices of eligible items. Base 100 at launch, rebalanced monthly.",'')+P` + `:'
      '+fe("No supported candidates right now","The scanner only includes sales-based estimates with sufficient activity and a meaningful discount. Your watchlist can track specific items in the meantime.",'')+"
      ")}:s.unavailable()}var Hy,Ac=w(()=>{"use strict";_e();xe();pe();en();Hy=6e4});var Sf={};A(Sf,{indicesView:()=>Lc});async function Lc(s){let e=await W.cached("/market/indices",60*Oy);if(!e)return s.unavailable();let t=e.indices.find(o=>o.name===s.arg)??e.indices.find(o=>o.name==="kute-100")??e.indices[0];return{asOf:e.asOf,html:s.intro("The wider picture.","Equal-weighted indices of eligible items. Base 100 at launch, rebalanced monthly.",'')+P`

      ${S(t?.name??"Index history")}

      @@ -1009,7 +1009,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
      - `;if(!e)return{html:t+o+fe("Choose an inventory","Enter a username to value its public inventory.")};let n=await W.cached(`/market/portfolio?name=${encodeURIComponent(e)}`,5*Fy);if(!n)return{html:t+o+fe("Inventory is unavailable","The player may not exist, or their inventory could not be loaded.",'')};let r=new Map(n.historyCoverage?.map(h=>[h.day,h])??[]),i=n.historyBasket,a=i?.series??n.series,l=i&&i.itemsTry again')};let r=new Map(n.historyCoverage?.map(p=>[p.day,p])??[]),i=n.historyBasket,a=i?.series??n.series,l=i&&i.items

      ${S(c)} Historical prices applied to what you own today; this is not personal profit. Marks expire after @@ -1041,7 +1041,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del

      ${l}

      90 days - ${u} + ${d}
      ${ko("kmHoldingFilter","holdings","Filter your holdings",s.portfolioFilter)} @@ -1060,47 +1060,47 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
      - ${n.items.map(h=>P` - - - - - - + ${n.items.map(p=>P` + + + + + + ${s.advanced?P` - + `:""} `).join("")}
      ${me(h)}${h.count}${T(h.fair)}${T(h.value)}${ae(h.trend7d)}
      ${me(p)}${p.count}${T(p.fair)}${T(p.value)}${ae(p.trend7d)}${S(h.grade)}${S(p.grade)}
      - `,points:a.map(h=>({t:Date.parse(h.day+"T00:00:00Z"),values:[!i&&r.has(h.day)&&r.get(h.day)?.priced!==r.get(h.day)?.total?null:h.value]})),series:[{label:"Covered holdings at historical prices",color:"#f580b4"}]}}var Fy,Ic=w(()=>{"use strict";_e();xe();pe();qo();Fy=6e4});var $f={};A($f,{analyzeView:()=>Nc});async function Nc(s){let{analyzer:e}=s,t=!!(e.give.length||e.get.length||e.giveKr||e.getKr),o=t?await W.analyze({give:e.give.map(({skin:i,count:a})=>({skin:i,count:a})),get:e.get.map(({skin:i,count:a})=>({skin:i,count:a})),giveKr:e.giveKr,getKr:e.getKr}):null,n=i=>{let a=o?.[i],l=i==="give"?e.giveKr:e.getKr,c=a?.items.some(p=>p.unknown)??!1,u=e[i].reduce((p,f)=>p+f.count,0),h=t?"Unavailable":"0";return a&&(h=T(a.value)),P` + `,points:a.map(p=>({t:Date.parse(p.day+"T00:00:00Z"),values:[!i&&r.has(p.day)&&r.get(p.day)?.priced!==r.get(p.day)?.total?null:p.value]})),series:[{label:"Covered holdings at historical prices",color:"#f580b4"}]}}var Dy,Ic=w(()=>{"use strict";_e();xe();pe();Ko();Dy=6e4});var $f={};A($f,{analyzeView:()=>Nc});async function Nc(s){let{analyzer:e}=s,t=!!(e.give.length||e.get.length||e.giveKr||e.getKr),o=t?await W.analyze({give:e.give.map(({skin:i,count:a})=>({skin:i,count:a})),get:e.get.map(({skin:i,count:a})=>({skin:i,count:a})),giveKr:e.giveKr,getKr:e.getKr}):null,n=i=>{let a=o?.[i],l=i==="give"?e.giveKr:e.getKr,c=a?.items.some(h=>h.unknown)??!1,d=e[i].reduce((h,f)=>h+f.count,0),p=t?"Unavailable":"0";return a&&(p=T(a.value)),P`

      ${i==="give"?"You give":"You receive"}

      - ${u} item${u===1?"":"s"} + ${d} item${d===1?"":"s"}
      - ${h} + ${p} KR ${c?"Partial estimate. Unvalued items excluded.":"Estimated value, including KR"}
      ${ko(`kmPick${i}`,i,"Add an item...")}
      - ${e[i].length?e[i].map((p,f)=>{let m=a?.items.find(b=>b.skin===p.skin),g=m&&!m.unknown?T(m.lineValue)+" KR":"Value unavailable";return P` + ${e[i].length?e[i].map((h,f)=>{let m=a?.items.find(b=>b.skin===h.skin),g=m&&!m.unknown?T(m.lineValue)+" KR":"Value unavailable";return P`
      - ${me(p)} + ${me(h)}
      ${g} @@ -1113,10 +1113,10 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del type="number" min="1" max="10000" - value="${p.count}" + value="${h.count}" data-count="${f}" data-side="${i}" - aria-label="Quantity of ${S(p.name)} on ${i==="give"?"your side":"their side"}" + aria-label="Quantity of ${S(h.name)} on ${i==="give"?"your side":"their side"}" />
      @@ -1138,7 +1138,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${S(W.lastError||"Analysis unavailable.")} Your selected items are preserved.
      - `),o){let i=js(o.verdict),a=jt[i].label,l={good:"positive",bad:"negative",fair:"",uncertain:""}[i];r=P` + `),o){let i=Us(o.verdict),a=jt[i].label,l={good:"positive",bad:"negative",fair:"",uncertain:""}[i];r=P`
      THE DIFFERENCE
      @@ -1177,7 +1177,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del `}return{asOf:o?.asOf,html:s.intro("Compare the trade.","Your items on the left, theirs on the right. Add KR to either side.",'')+P`
      ${n("give")}${n("get")}
      ${r}
      - `}}var _c=w(()=>{"use strict";_e();xe();pe();qo()});var Cf={};A(Cf,{researchView:()=>Bc});async function Bc(s){let e=typeof s.arg=="string"?s.arg:"",t=await W.cached(`/market/intelligence?kind=${encodeURIComponent(e)}`,Dy);return t?{asOf:t.asOf,asOfLabel:"Analyzed",html:fc(t,e,s.advanced,Se().map(o=>o.skin))}:s.unavailable()}var Dy,zc=w(()=>{"use strict";xe();Ut();Qs();Dy=6e4});var Mf={};A(Mf,{introView:()=>en});function en(s,e,t,o=""){let n=Fo("h1",{},e),r=Fo("p",{class:"sub"},t);return Fo("div",{class:"pageIntro"},Ys(Fo("div",{},Ys(n+r))),Ys(o))}var yr=w(()=>{"use strict";_e()});var Tf={};A(Tf,{tableView:()=>Hc});function Hc(s,e){return e.length?P` + `}}var _c=w(()=>{"use strict";_e();xe();pe();Ko()});var Cf={};A(Cf,{researchView:()=>Bc});async function Bc(s){let e=typeof s.arg=="string"?s.arg:"",t=await W.cached(`/market/intelligence?kind=${encodeURIComponent(e)}`,Fy);return t?{asOf:t.asOf,asOfLabel:"Analyzed",html:fc(t,e,s.advanced,Se().map(o=>o.skin))}:s.unavailable()}var Fy,zc=w(()=>{"use strict";xe();Ut();en();Fy=6e4});var Mf={};A(Mf,{introView:()=>tn});function tn(s,e,t,o=""){let n=Fo("h1",{},e),r=Fo("p",{class:"sub"},t);return Fo("div",{class:"pageIntro"},Xs(Fo("div",{},Xs(n+r))),Xs(o))}var xr=w(()=>{"use strict";_e()});var Tf={};A(Tf,{tableView:()=>Hc});function Hc(s,e){return e.length?P`
      @@ -1210,14 +1210,14 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${s.advanced?P` - + `:""} `).join("")}
      ${t.onS}${S(Us(t))}${S(Gs(t))}
      - `:fe("No matching items","Try a wider budget or fewer filters.")}var Oc=w(()=>{"use strict";_e();We();pe()});var Af={};A(Af,{compactListView:()=>Fc});function Fc(s,e){return P` + `:fe("No matching items","Try a wider budget or fewer filters.")}var Oc=w(()=>{"use strict";_e();Ve();pe()});var Af={};A(Af,{compactListView:()=>Dc});function Dc(s,e){return P`
      ${e.map(t=>P` `).join("")}
      - `}var Dc=w(()=>{"use strict";_e();pe()});var Rf,Lf=w(()=>{Rf=`

      The numbers

      K
      Kute estimate

      What the item is worth, from recent sales and trades.

      Ask
      Lowest ask

      The cheapest listing right now.

      %
      Ask vs estimate

      Plus means the ask is above the estimate, minus means below.

      0-100
      Evidence score

      How much data backs the estimate. Low means take it with a grain of salt.

      Activity grades

      A
      Very active

      Sells often, easy to get rid of.

      B
      Active

      Sells regularly.

      C
      Moderate

      Might take a while or a lower price.

      D
      Thin

      Few sales, hard to sell.

      F
      Very limited

      Barely trades, the estimate is a rough guess.

      Trade verdicts

      +
      Favorable

      You get more value than you give.

      =
      Fair

      Both sides are about even.

      -
      Unfavorable

      You give more value than you get.

      ?
      Not enough evidence

      Some items can't be valued well enough to say.

      Estimates, not promises. Kute never buys, sells or trades for you.

      `});var Pf={};A(Pf,{helpView:()=>qc});function qc(s){return{html:en(s,"How it works.","What the numbers mean.")+Rf}}var Kc=w(()=>{"use strict";Lf();yr()});var If={};A(If,{default:()=>Ko});var Ko,jc=w(()=>{"use strict";pe();kr();Ko=class{constructor(e,t,o,n={}){this.host=e,this.points=t,this.series=o,this.options=n,this.observer=new ResizeObserver(r=>this.draw(r[0]?.contentRect.width??700)),this.observer.observe(e),this.draw(e.clientWidth||700)}destroy(){this.observer.disconnect(),this.host.replaceChildren()}draw(e){let{host:t,series:o,options:n}=this,r=Math.max(8,Math.ceil(this.points.length/(n.zoom??1))),i=Math.max(Math.min(r,this.points.length),this.points.length-(n.offset??0)),a=this.points.slice(Math.max(0,i-r),i),l=!!n.candles,c=a.flatMap(j=>l?[...j.ask?[j.ask.low,j.ask.high]:[],...j.values.slice(1)]:j.values).flatMap(j=>j!==null&&Number.isFinite(j)?[j]:[]);if(!c.length){t.innerHTML=`
      ${l?"No sampled asking-price candles in this period. Try a longer range or switch to the line chart.":"No price observations in this period. Try a longer range."}
      `;return}let u=Math.max(280,e),h=270,p=62,f=u-16,m=20,g=n.volume?196:230,b=Math.min(...c),v=Math.max(...c),k=v-b||Math.max(1,v*.1),E=Math.max(0,b-k*.12),L=v+k*.12,x=a[0].t,I=((l?a.at(-1)?.end:a.at(-1)?.t)??x)-x||864e5,_=j=>p+(j-x)/I*(f-p),H=j=>g-(j-E)/(L-E)*(g-m),G=j=>l&&j.end?(j.t+j.end)/2:j.t,J=n.stepMs??864e5,B=o.map((j,X)=>kc(a,X,J)),re="";for(let j=0;j<=4;j++){let X=E+(L-E)*j/4,Y=L-E<10?X.toFixed(2):T(X);re+=`${S(Y)}`}for(let j=0;j<=4;j++){let X=x+I*j/4,Y=new Date(X),y=I<=2*864e5?Y.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",timeZone:"UTC"}):Y.toLocaleDateString([],{month:"short",day:"numeric",timeZone:"UTC"}),C="middle";j===0&&(C="start"),j===4&&(C="end"),re+=`${S(y)}`}if(n.volume){let j=Math.max(1,...a.map(Y=>Y.volume??0)),X=Math.max(1,Math.min(14,(f-p)/Math.max(1,a.length)*.6));re+=a.filter(Y=>Y.volume!==null&&Y.volume!==void 0).map(Y=>``).join("")}if(l){let j=Math.max(3,Math.min(14,(f-p)*J/I*.65));for(let X of a){let Y=X.ask;if(!Y)continue;let y="flat",C="#9698a7";Y.samples<=1?y="single":Y.close!==Y.open&&(y=Y.close>Y.open?"up":"down",C=Y.close>Y.open?"#71d9b0":"#f68c9b");let R=_(G(X));re+=``,Y.samples>1&&(re+=``),y==="single"||y==="flat"?re+=``:re+=``,re+=""}}for(let[j,X]of o.entries()){if(l&&j===0)continue;let Y="",y="";for(let C of B[j]){let R=`M${_(G(C.from))},${H(C.from.values[j])} L${_(G(C.to))},${H(C.to.values[j])} `;C.gap?n.connectGaps&&(y+=R):Y+=R}for(let C of a){let R=C.values[j];R==null||!Number.isFinite(R)||(re+=``)}re+=``,y&&(re+=``)}t.innerHTML=`j.label).join(", "))}">${re}`;let je=t.querySelector("svg"),be=t.querySelector(".chartTooltip"),Ee=t.querySelector(".crosshair");je.addEventListener("pointermove",j=>{let X=je.getBoundingClientRect(),Y=(j.clientX-X.left)*u/X.width,y=x+(Y-p)/(f-p)*I,C=a.find(Z=>l&&Z.end&&y>=Z.t&&yMath.abs(G(ge)-y)Z.gap&&_(Z.from.t)+5=C.end),z=C.ask,N=o.map((Z,ge)=>`${S(Z.label)} ${T(C.values[ge])}`).join("
      ");l&&(N="No quote in this bucket",z?.samples===1&&!K?N=`Observed ask ${T(z.close)}
      1 sampled quote; direction unknown`:z&&!K&&(N=`Open ${T(z.open)} · High ${T(z.high)}
      Low ${T(z.low)} · Close ${T(z.close)}
      ${S(z.samples)} sampled quotes`),C.partial&&!K&&(N+="
      Partial interval")),l&&!K&&o.length>1&&(N+="
      Last observed in interval:
      "+o.slice(1).map((Z,ge)=>`${S(Z.label)} ${T(C.values[ge+1])}`).join("
      ")),R&&(N="No price observation in this gap.
      Dashed line connects recorded values.");let V=Z=>new Date(Z).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",timeZone:"UTC"}),de=V(R||K?y:C.t);l&&C.end&&!K&&(de=`${V(C.t)} to ${V(C.end)}`),be.innerHTML=`${S(de)} UTC
      ${N}${!R&&!K&&n.volume&&C.volume!==null&&C.volume!==void 0?`
      Reported sales ${C.volume}`:""}`,be.hidden=!1,be.style.left=`${Math.max(0,Math.min(Y+14,u-240))}px`,Ee.setAttribute("x1",String(R||K?Y:_(G(C)))),Ee.setAttribute("x2",String(R||K?Y:_(G(C)))),Ee.setAttribute("visibility","visible")}),je.addEventListener("pointerleave",()=>{be.hidden=!0,Ee.setAttribute("visibility","hidden")})}}});var Nf=we((oE,Ky)=>{Ky.exports=' '});var Uc={};A(Uc,{Terminal:()=>Sr,default:()=>Uy});var _f,Bf,xr,zf,Hf,yo,Sr,jy,Uy,Gc=w(()=>{"use strict";F();br();dc();pc();Sc();$c();Mc();Ac();Rc();Ic();_c();zc();yr();Oc();Dc();Kc();xe();We();pe();Ut();jc();qo();_f="kute_market_advanced",Bf="kute_market_layout",xr=[.8,.9,1,1.1,1.2,1.35,1.5],zf=480,Hf=360,yo=()=>({q:"",rarity:"",type:"",sort:"volume",page:1,budget:"",minSales:""}),Sr=class{constructor(){this.overlay=null,this.shadow=null,this.controller=null,this.chart=null,this.returnFocus=null,this.tab="overview",this.discoveryTab="search",this.arg=void 0,this.generation=0,this.advanced=!1,this.view=null,this.saved=new Map,this.previous="search",this.portfolioFilter="",this.itemSearch=null,this.holdings=[],this.tradeRevision=0,this.analyzer={give:[],get:[],giveKr:0,getKr:0};try{this.advanced=localStorage.getItem(_f)==="1"}catch{this.advanced=!1}this.layout={width:0,height:0,scale:1,maximized:!1};try{let e=JSON.parse(localStorage.getItem(Bf)??"{}");Number.isFinite(e.width)&&(this.layout.width=e.width),Number.isFinite(e.height)&&(this.layout.height=e.height),xr.includes(e.scale)&&(this.layout.scale=e.scale),this.layout.maximized=e.maximized===!0}catch{}}frame(){return this.shadow?.querySelector("#km")??null}applyLayout(){let e=this.frame();if(!e)return;let{scale:t,maximized:o}=this.layout,n=window.innerWidth-(o?0:16),r=window.innerHeight-(o?0:16),i=o?n:Math.max(Math.min(zf,n),Math.min(this.layout.width||Math.min(1320,window.innerWidth*.96),n)),a=o?r:Math.max(Math.min(Hf,r),Math.min(this.layout.height||Math.min(880,window.innerHeight*.92),r));e.style.zoom=String(t),e.style.width=`${i/t}px`,e.style.height=`${a/t}px`,e.classList.toggle("maximized",o);let l=this.shadow?.querySelector("#kmMaximize");l?.setAttribute("aria-pressed",String(o)),l?.setAttribute("title",o?"Restore size (double-click the header)":"Maximize (double-click the header)");let c=this.shadow?.querySelector("#kmScaleValue");c&&(c.textContent=`${Math.round(t*100)}%`)}saveLayout(){this.applyLayout();try{localStorage.setItem(Bf,JSON.stringify(this.layout))}catch{}}rescale(e){let t=xr.indexOf(this.layout.scale);this.layout.scale=e?xr[Math.max(0,Math.min(xr.length-1,t+e))]:1,this.saveLayout()}toggleMaximized(){this.layout.maximized=!this.layout.maximized,this.saveLayout()}startResize(e){let{target:t}=e,o=this.frame();if(!(t instanceof HTMLElement)||!o||e.button!==0)return;let{grip:n}=t.dataset;if(!n)return;e.preventDefault(),t.setPointerCapture(e.pointerId);let r=o.getBoundingClientRect(),{clientX:i,clientY:a}=e,l=Number(n.includes("e"))-Number(n.includes("w")),c=Number(n.includes("s"))-Number(n.includes("n"));o.classList.add("resizing");let u=p=>{l&&(this.layout.width=Math.max(zf,r.width+2*l*(p.clientX-i))),c&&(this.layout.height=Math.max(Hf,r.height+2*c*(p.clientY-a))),this.applyLayout()},h=()=>{t.removeEventListener("pointermove",u),o.classList.remove("resizing"),this.layout.width=Math.round(Math.min(this.layout.width,window.innerWidth-16)),this.layout.height=Math.round(Math.min(this.layout.height,window.innerHeight-16)),this.saveLayout()};t.addEventListener("pointermove",u),t.addEventListener("lostpointercapture",h,{once:!0})}async open(e,t){if(!document.pointerLockElement){if(!this.overlay){let o=await Promise.resolve().then(()=>ue(Nf(),1)).catch(()=>null);if(!o||document.pointerLockElement)return;if(this.overlay){await this.show(e??this.tab,t);return}this.returnFocus=document.activeElement instanceof HTMLElement?document.activeElement:null;let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483647;display:grid;place-items:center;background:rgba(7,8,13,.78)";let r=document.createElement("div");n.append(r),this.shadow=r.attachShadow({mode:"open"}),this.shadow.innerHTML=o.default,this.overlay=n,this.controller=new AbortController;let{signal:i}=this.controller;document.body.append(n),this.applyLayout(),window.addEventListener("resize",()=>this.applyLayout(),{signal:i}),this.shadow.addEventListener("pointerdown",l=>this.startResize(l),{signal:i}),this.shadow.querySelector(".kmHead")?.addEventListener("dblclick",l=>{l.target instanceof Element&&!l.target.closest("button,input,label,form")&&this.toggleMaximized()},{signal:i}),this.itemSearch=new Do(this.shadow,i,(l,c)=>this.selectItem(l,c),(l,c)=>this.show(c==="discover"?this.searchTab():"search",{...c==="discover"?this.readFilters(1):yo(),q:l,page:1}),()=>this.holdings),this.shadow.addEventListener("click",l=>this.click(l),{signal:i}),this.shadow.addEventListener("change",l=>this.changed(l),{signal:i}),this.shadow.addEventListener("input",l=>this.input(l),{signal:i}),this.shadow.querySelector("#kmSearchForm")?.addEventListener("submit",l=>{l.preventDefault(),this.show("search",{...yo(),q:this.value("#kmGlobalSearch")})},{signal:i}),n.addEventListener("click",l=>{l.target===n&&this.close()},{signal:i}),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&this.close()},{signal:i}),document.addEventListener("keydown",l=>this.key(l),{signal:i,capture:!0});let a=this.shadow.querySelector("#kmAdvanced");a.checked=this.advanced,this.shadow.querySelector("#kmGlobalSearch")?.focus()}await this.show(e??this.tab,t)}}close(){this.remember(),this.controller?.abort(),this.controller=null,this.itemSearch=null,this.chart?.destroy(),this.chart=null,this.overlay?.remove(),this.overlay=null,this.shadow=null,this.generation++,this.returnFocus?.focus({preventScroll:!0})}remember(){let e=this.shadow?.querySelector("#kmBody");this.tab==="item"&&(this.arg=this.itemState()),(this.tab==="search"||this.tab==="active")&&this.shadow?.querySelector("#kmQ")&&(this.arg=this.readFilters(this.searchState().page)),this.tab==="deals"&&this.shadow?.querySelector("#kmDealBudget")&&(this.arg={budget:this.value("#kmDealBudget")}),e&&this.saved.set(this.tab,{arg:this.arg,scroll:e.scrollTop})}value(e){return this.shadow?.querySelector(e)?.value??""}searchState(){let e={...yo(),...this.tab==="active"?{minSales:"1",sort:"liquidity"}:{},...typeof this.arg=="object"&&this.arg?this.arg:{}};return this.tab==="active"&&(e.minSales=String(Math.max(1,Number(e.minSales)||1))),e}searchTab(){return this.tab==="active"?"active":"search"}itemState(){let e={skin:typeof this.arg=="number"?this.arg:0,range:"1M",candles:!1,overlay:"none",zoom:1,offset:0,...typeof this.arg=="object"&&this.arg?this.arg:{}};if(this.view?.item?.skin.skin===e.skin)for(let[t,o]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"}))this.shadow?.querySelector("#"+o)&&Object.assign(e,{[t]:this.value("#"+o)});return e}async show(e,t,o=!1){if(!this.shadow)return;this.remember(),e==="item"&&this.tab!=="item"&&(this.previous=this.tab);let n=this.saved.get(this.tab)?.scroll??0,r=this.saved.get(e);this.tab=e,this.arg=t===void 0?r?.arg:t;let i=++this.generation;this.itemSearch?.dismiss(),this.chart?.destroy(),this.chart=null;let a=this.shadow.querySelector("#kmBody"),l=gr.includes(e);l&&(this.discoveryTab=e);let c=this.shadow.querySelector("#kmDiscoverTabs");c.hidden=!l;for(let p of c.querySelectorAll("button")){let f=p.dataset.discover===e;p.setAttribute("aria-selected",String(f)),p.tabIndex=f?0:-1}l?(a.setAttribute("role","tabpanel"),a.setAttribute("aria-labelledby",`kmDiscover-${e}`)):(a.removeAttribute("role"),a.removeAttribute("aria-labelledby")),a.setAttribute("aria-busy","true"),a.innerHTML=fe("Loading market data","Fetching the latest available observations.");let u=this.shadow.querySelector("#kmTitle");u&&(u.textContent=Vs[e]??"Market");let h=e==="item"?this.previous:e;gr.includes(h)&&(h="search"),h==="indices"&&(h="overview");for(let p of this.shadow.querySelectorAll("[data-nav]")){let f=p.dataset.nav===h;p.classList.toggle("on",f),f?p.setAttribute("aria-current","page"):p.removeAttribute("aria-current")}this.updateWatchCount();try{let p=await this.render(e);if(i!==this.generation||!this.shadow)return;this.view=p,this.holdings=p.holdings??[],a.innerHTML=p.html,a.scrollTop=t===void 0?r?.scroll??0:0,o&&(a.scrollTop=n);let f=this.shadow.querySelector("#kmFootRight");f&&(f.textContent=p.asOf?`${p.asOfLabel??"Estimates calculated"} ${Ge(Math.max(0,Date.now()-p.asOf))} ago`:"Estimates from observed market data");let m=a.querySelector(".chart");if(m&&p.points&&p.series&&(this.chart=new Ko(m,p.points,p.series,p.chartOptions)),e==="portfolio"&&this.filterHoldings(),e==="item"){let g=this.arg;for(let[b,v]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"})){let k=a.querySelector("#"+v),E=g?.[b];k&&typeof E=="string"&&(k.value=E)}this.updatePlanner(),this.filterListings()}}catch{if(i!==this.generation)return;a.innerHTML=fe("Market data is unavailable","Try again in a moment. Your saved watchlist stays on this device.",'')}finally{i===this.generation&&a.setAttribute("aria-busy","false")}}updateWatchCount(){let e=this.shadow?.querySelector("#kmWatchCount");e&&(e.textContent=String(Se().length))}async render(e){switch(e){case"overview":return this.overview();case"intelligence":return this.intelligence();case"search":return this.search();case"active":return this.search();case"item":return this.item();case"watchlist":return this.watchlist();case"movers":return this.movers();case"deals":return this.deals();case"indices":return this.indices();case"portfolio":return this.portfolio();case"analyze":return this.analyze();default:return this.help()}}intelligence(){return Bc(this)}unavailable(){return{html:fe("Market data is unavailable",W.lastError||"The market server could not be reached. Try again in a moment.",'')}}intro(e,t,o=""){return en(this,e,t,o)}table(e){return Hc(this,e)}compactList(e){return Fc(this,e)}overview(){return cc(this)}search(){return uc(this)}item(){return xc(this)}watchlist(){return Ec(this)}movers(){return Cc(this)}deals(){return Tc(this)}indices(){return Lc(this)}portfolio(){return Pc(this)}async selectItem(e,t){if(t!=="give"&&t!=="get"){this.show("item",e.skin);return}let o=this.analyzer[t].find(n=>n.skin===e.skin);o?o.count=Math.min(1e4,o.count+1):this.analyzer[t].push({...e,count:1}),await this.show("analyze",this.arg,!0),this.tab==="analyze"&&this.shadow?.querySelector(`#kmPick${t}`)?.focus({preventScroll:!0})}analyze(){return Nc(this)}async refreshTrade(){let{generation:e}=this,t=++this.tradeRevision;this.shadow?.querySelector("#kmTradeOutcome")?.setAttribute("aria-busy","true");let n=this.shadow?.querySelector("#kmFootRight");n&&(n.textContent="Updating trade estimates...");let r=await this.analyze();if(e!==this.generation||t!==this.tradeRevision||!this.shadow)return;let i=document.createElement("div");i.innerHTML=r.html;for(let a of[".tradeSideHead>span",".tradeTotal",".tradeItemValue","#kmTradeOutcome"]){let l=i.querySelectorAll(a);this.shadow.querySelectorAll(a).forEach((c,u)=>{l[u]&&c.replaceWith(l[u])})}n&&(n.textContent=r.asOf?`Estimates calculated ${Ge(Math.max(0,Date.now()-r.asOf))} ago`:"Estimates from observed market data"),this.view=r}help(){return qc(this)}updatePlanner(){let e=this.shadow?.querySelector("#kmPlannerResult");if(!e||!this.view?.item)return;let t=Number(this.value("#kmSellPrice")),o=Number(this.value("#kmSellQuantity"));if(!Number.isFinite(t)||t<=0||!Number.isInteger(o)||o<1||o>1e4){e.textContent="Enter a positive asking price and a quantity from 1 to 10,000.";return}let n=this.view.listings;if(!n){e.textContent="Competing listings are unavailable. Try again when market data is available.";return}let r=n?.listings.filter(a=>a.pricen.listings.length;e.innerHTML=`${i?"At least ":""}${r} cheaper listing${r===1?"":"s"} observed${n?"":" (listing data unavailable)"}.
      + `}var Fc=w(()=>{"use strict";_e();pe()});var Rf,Lf=w(()=>{Rf=`

      The numbers

      K
      Kute estimate

      What the item is worth, from recent sales and trades.

      Ask
      Lowest ask

      The cheapest listing right now.

      %
      Ask vs estimate

      Plus means the ask is above the estimate, minus means below.

      0-100
      Evidence score

      How much data backs the estimate. Low means take it with a grain of salt.

      Activity grades

      A
      Very active

      Sells often, easy to get rid of.

      B
      Active

      Sells regularly.

      C
      Moderate

      Might take a while or a lower price.

      D
      Thin

      Few sales, hard to sell.

      F
      Very limited

      Barely trades, the estimate is a rough guess.

      Trade verdicts

      +
      Favorable

      You get more value than you give.

      =
      Fair

      Both sides are about even.

      -
      Unfavorable

      You give more value than you get.

      ?
      Not enough evidence

      Some items can't be valued well enough to say.

      Estimates, not promises. Kute never buys, sells or trades for you.

      `});var Pf={};A(Pf,{helpView:()=>qc});function qc(s){return{html:tn(s,"How it works.","What the numbers mean.")+Rf}}var Kc=w(()=>{"use strict";Lf();xr()});var If={};A(If,{default:()=>jo});var jo,jc=w(()=>{"use strict";pe();yr();jo=class{constructor(e,t,o,n={}){this.host=e,this.points=t,this.series=o,this.options=n,this.observer=new ResizeObserver(r=>this.draw(r[0]?.contentRect.width??700)),this.observer.observe(e),this.draw(e.clientWidth||700)}destroy(){this.observer.disconnect(),this.host.replaceChildren()}draw(e){let{host:t,series:o,options:n}=this,r=Math.max(8,Math.ceil(this.points.length/(n.zoom??1))),i=Math.max(Math.min(r,this.points.length),this.points.length-(n.offset??0)),a=this.points.slice(Math.max(0,i-r),i),l=!!n.candles,c=a.flatMap(j=>l?[...j.ask?[j.ask.low,j.ask.high]:[],...j.values.slice(1)]:j.values).flatMap(j=>j!==null&&Number.isFinite(j)?[j]:[]);if(!c.length){t.innerHTML=`
      ${l?"No sampled asking-price candles in this period. Try a longer range or switch to the line chart.":"No price observations in this period. Try a longer range."}
      `;return}let d=Math.max(280,e),p=270,h=62,f=d-16,m=20,g=n.volume?196:230,b=Math.min(...c),v=Math.max(...c),k=v-b||Math.max(1,v*.1),E=Math.max(0,b-k*.12),L=v+k*.12,x=a[0].t,I=((l?a.at(-1)?.end:a.at(-1)?.t)??x)-x||864e5,_=j=>h+(j-x)/I*(f-h),H=j=>g-(j-E)/(L-E)*(g-m),G=j=>l&&j.end?(j.t+j.end)/2:j.t,J=n.stepMs??864e5,B=o.map((j,X)=>kc(a,X,J)),re="";for(let j=0;j<=4;j++){let X=E+(L-E)*j/4,Y=L-E<10?X.toFixed(2):T(X);re+=`${S(Y)}`}for(let j=0;j<=4;j++){let X=x+I*j/4,Y=new Date(X),y=I<=2*864e5?Y.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",timeZone:"UTC"}):Y.toLocaleDateString([],{month:"short",day:"numeric",timeZone:"UTC"}),C="middle";j===0&&(C="start"),j===4&&(C="end"),re+=`${S(y)}`}if(n.volume){let j=Math.max(1,...a.map(Y=>Y.volume??0)),X=Math.max(1,Math.min(14,(f-h)/Math.max(1,a.length)*.6));re+=a.filter(Y=>Y.volume!==null&&Y.volume!==void 0).map(Y=>``).join("")}if(l){let j=Math.max(3,Math.min(14,(f-h)*J/I*.65));for(let X of a){let Y=X.ask;if(!Y)continue;let y="flat",C="#9698a7";Y.samples<=1?y="single":Y.close!==Y.open&&(y=Y.close>Y.open?"up":"down",C=Y.close>Y.open?"#71d9b0":"#f68c9b");let R=_(G(X));re+=``,Y.samples>1&&(re+=``),y==="single"||y==="flat"?re+=``:re+=``,re+=""}}for(let[j,X]of o.entries()){if(l&&j===0)continue;let Y="",y="";for(let C of B[j]){let R=`M${_(G(C.from))},${H(C.from.values[j])} L${_(G(C.to))},${H(C.to.values[j])} `;C.gap?n.connectGaps&&(y+=R):Y+=R}for(let C of a){let R=C.values[j];R==null||!Number.isFinite(R)||(re+=``)}re+=``,y&&(re+=``)}t.innerHTML=`j.label).join(", "))}">${re}`;let je=t.querySelector("svg"),be=t.querySelector(".chartTooltip"),Ee=t.querySelector(".crosshair");je.addEventListener("pointermove",j=>{let X=je.getBoundingClientRect(),Y=(j.clientX-X.left)*d/X.width,y=x+(Y-h)/(f-h)*I,C=a.find(Z=>l&&Z.end&&y>=Z.t&&yMath.abs(G(ge)-y)Z.gap&&_(Z.from.t)+5=C.end),z=C.ask,N=o.map((Z,ge)=>`${S(Z.label)} ${T(C.values[ge])}`).join("
      ");l&&(N="No quote in this bucket",z?.samples===1&&!K?N=`Observed ask ${T(z.close)}
      1 sampled quote; direction unknown`:z&&!K&&(N=`Open ${T(z.open)} · High ${T(z.high)}
      Low ${T(z.low)} · Close ${T(z.close)}
      ${S(z.samples)} sampled quotes`),C.partial&&!K&&(N+="
      Partial interval")),l&&!K&&o.length>1&&(N+="
      Last observed in interval:
      "+o.slice(1).map((Z,ge)=>`${S(Z.label)} ${T(C.values[ge+1])}`).join("
      ")),R&&(N="No price observation in this gap.
      Dashed line connects recorded values.");let V=Z=>new Date(Z).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",timeZone:"UTC"}),de=V(R||K?y:C.t);l&&C.end&&!K&&(de=`${V(C.t)} to ${V(C.end)}`),be.innerHTML=`${S(de)} UTC
      ${N}${!R&&!K&&n.volume&&C.volume!==null&&C.volume!==void 0?`
      Reported sales ${C.volume}`:""}`,be.hidden=!1,be.style.left=`${Math.max(0,Math.min(Y+14,d-240))}px`,Ee.setAttribute("x1",String(R||K?Y:_(G(C)))),Ee.setAttribute("x2",String(R||K?Y:_(G(C)))),Ee.setAttribute("visibility","visible")}),je.addEventListener("pointerleave",()=>{be.hidden=!0,Ee.setAttribute("visibility","hidden")})}}});var Nf=we((oE,Ky)=>{Ky.exports=' '});var Uc={};A(Uc,{Terminal:()=>Er,default:()=>Uy});var _f,Bf,Sr,zf,Hf,yo,Er,jy,Uy,Gc=w(()=>{"use strict";D();vr();dc();pc();Sc();$c();Mc();Ac();Rc();Ic();_c();zc();xr();Oc();Fc();Kc();xe();Ve();pe();Ut();jc();Ko();_f="kute_market_advanced",Bf="kute_market_layout",Sr=[.8,.9,1,1.1,1.2,1.35,1.5],zf=480,Hf=360,yo=()=>({q:"",rarity:"",type:"",sort:"volume",page:1,budget:"",minSales:""}),Er=class{constructor(){this.overlay=null,this.shadow=null,this.controller=null,this.chart=null,this.returnFocus=null,this.tab="overview",this.discoveryTab="search",this.arg=void 0,this.generation=0,this.advanced=!1,this.view=null,this.saved=new Map,this.previous="search",this.portfolioFilter="",this.itemSearch=null,this.holdings=[],this.tradeRevision=0,this.analyzer={give:[],get:[],giveKr:0,getKr:0};try{this.advanced=localStorage.getItem(_f)==="1"}catch{this.advanced=!1}this.layout={width:0,height:0,scale:1,maximized:!1};try{let e=JSON.parse(localStorage.getItem(Bf)??"{}");Number.isFinite(e.width)&&(this.layout.width=e.width),Number.isFinite(e.height)&&(this.layout.height=e.height),Sr.includes(e.scale)&&(this.layout.scale=e.scale),this.layout.maximized=e.maximized===!0}catch{}}frame(){return this.shadow?.querySelector("#km")??null}applyLayout(){let e=this.frame();if(!e)return;let{scale:t,maximized:o}=this.layout,n=window.innerWidth-(o?0:16),r=window.innerHeight-(o?0:16),i=o?n:Math.max(Math.min(zf,n),Math.min(this.layout.width||Math.min(1320,window.innerWidth*.96),n)),a=o?r:Math.max(Math.min(Hf,r),Math.min(this.layout.height||Math.min(880,window.innerHeight*.92),r));e.style.zoom=String(t),e.style.width=`${i/t}px`,e.style.height=`${a/t}px`,e.classList.toggle("maximized",o);let l=this.shadow?.querySelector("#kmMaximize");l?.setAttribute("aria-pressed",String(o)),l?.setAttribute("title",o?"Restore size (double-click the header)":"Maximize (double-click the header)");let c=this.shadow?.querySelector("#kmScaleValue");c&&(c.textContent=`${Math.round(t*100)}%`)}saveLayout(){this.applyLayout();try{localStorage.setItem(Bf,JSON.stringify(this.layout))}catch{}}rescale(e){let t=Sr.indexOf(this.layout.scale);this.layout.scale=e?Sr[Math.max(0,Math.min(Sr.length-1,t+e))]:1,this.saveLayout()}toggleMaximized(){this.layout.maximized=!this.layout.maximized,this.saveLayout()}startResize(e){let{target:t}=e,o=this.frame();if(!(t instanceof HTMLElement)||!o||e.button!==0)return;let{grip:n}=t.dataset;if(!n)return;e.preventDefault(),t.setPointerCapture(e.pointerId);let r=o.getBoundingClientRect(),{clientX:i,clientY:a}=e,l=Number(n.includes("e"))-Number(n.includes("w")),c=Number(n.includes("s"))-Number(n.includes("n"));o.classList.add("resizing");let d=h=>{l&&(this.layout.width=Math.max(zf,r.width+2*l*(h.clientX-i))),c&&(this.layout.height=Math.max(Hf,r.height+2*c*(h.clientY-a))),this.applyLayout()},p=()=>{t.removeEventListener("pointermove",d),o.classList.remove("resizing"),this.layout.width=Math.round(Math.min(this.layout.width,window.innerWidth-16)),this.layout.height=Math.round(Math.min(this.layout.height,window.innerHeight-16)),this.saveLayout()};t.addEventListener("pointermove",d),t.addEventListener("lostpointercapture",p,{once:!0})}async open(e,t){if(!document.pointerLockElement){if(!this.overlay){let o=await Promise.resolve().then(()=>ue(Nf(),1)).catch(()=>null);if(!o||document.pointerLockElement)return;if(this.overlay){await this.show(e??this.tab,t);return}this.returnFocus=document.activeElement instanceof HTMLElement?document.activeElement:null;let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483647;display:grid;place-items:center;background:rgba(7,8,13,.78)";let r=document.createElement("div");n.append(r),this.shadow=r.attachShadow({mode:"open"}),this.shadow.innerHTML=o.default,this.overlay=n,this.controller=new AbortController;let{signal:i}=this.controller;document.body.append(n),this.applyLayout(),window.addEventListener("resize",()=>this.applyLayout(),{signal:i}),this.shadow.addEventListener("pointerdown",l=>this.startResize(l),{signal:i}),this.shadow.querySelector(".kmHead")?.addEventListener("dblclick",l=>{l.target instanceof Element&&!l.target.closest("button,input,label,form")&&this.toggleMaximized()},{signal:i}),this.itemSearch=new qo(this.shadow,i,(l,c)=>this.selectItem(l,c),(l,c)=>this.show(c==="discover"?this.searchTab():"search",{...c==="discover"?this.readFilters(1):yo(),q:l,page:1}),()=>this.holdings),this.shadow.addEventListener("click",l=>this.click(l),{signal:i}),this.shadow.addEventListener("change",l=>this.changed(l),{signal:i}),this.shadow.addEventListener("input",l=>this.input(l),{signal:i}),this.shadow.querySelector("#kmSearchForm")?.addEventListener("submit",l=>{l.preventDefault(),this.show("search",{...yo(),q:this.value("#kmGlobalSearch")})},{signal:i}),n.addEventListener("click",l=>{l.target===n&&this.close()},{signal:i}),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&this.close()},{signal:i}),document.addEventListener("keydown",l=>this.key(l),{signal:i,capture:!0});let a=this.shadow.querySelector("#kmAdvanced");a.checked=this.advanced,this.shadow.querySelector("#kmGlobalSearch")?.focus()}await this.show(e??this.tab,t)}}close(){this.remember(),this.controller?.abort(),this.controller=null,this.itemSearch=null,this.chart?.destroy(),this.chart=null,this.overlay?.remove(),this.overlay=null,this.shadow=null,this.generation++,this.returnFocus?.focus({preventScroll:!0})}remember(){let e=this.shadow?.querySelector("#kmBody");this.tab==="item"&&(this.arg=this.itemState()),(this.tab==="search"||this.tab==="active")&&this.shadow?.querySelector("#kmQ")&&(this.arg=this.readFilters(this.searchState().page)),this.tab==="deals"&&this.shadow?.querySelector("#kmDealBudget")&&(this.arg={budget:this.value("#kmDealBudget")}),e&&this.saved.set(this.tab,{arg:this.arg,scroll:e.scrollTop})}value(e){return this.shadow?.querySelector(e)?.value??""}searchState(){let e={...yo(),...this.tab==="active"?{minSales:"1",sort:"liquidity"}:{},...typeof this.arg=="object"&&this.arg?this.arg:{}};return this.tab==="active"&&(e.minSales=String(Math.max(1,Number(e.minSales)||1))),e}searchTab(){return this.tab==="active"?"active":"search"}itemState(){let e={skin:typeof this.arg=="number"?this.arg:0,range:"1M",candles:!1,overlay:"none",zoom:1,offset:0,...typeof this.arg=="object"&&this.arg?this.arg:{}};if(this.view?.item?.skin.skin===e.skin)for(let[t,o]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"}))this.shadow?.querySelector("#"+o)&&Object.assign(e,{[t]:this.value("#"+o)});return e}async show(e,t,o=!1){if(!this.shadow)return;this.remember(),e==="item"&&this.tab!=="item"&&(this.previous=this.tab);let n=this.saved.get(this.tab)?.scroll??0,r=this.saved.get(e);this.tab=e,this.arg=t===void 0?r?.arg:t;let i=++this.generation;this.itemSearch?.dismiss(),this.chart?.destroy(),this.chart=null;let a=this.shadow.querySelector("#kmBody"),l=br.includes(e);l&&(this.discoveryTab=e);let c=this.shadow.querySelector("#kmDiscoverTabs");c.hidden=!l;for(let h of c.querySelectorAll("button")){let f=h.dataset.discover===e;h.setAttribute("aria-selected",String(f)),h.tabIndex=f?0:-1}l?(a.setAttribute("role","tabpanel"),a.setAttribute("aria-labelledby",`kmDiscover-${e}`)):(a.removeAttribute("role"),a.removeAttribute("aria-labelledby")),a.setAttribute("aria-busy","true"),a.innerHTML=fe("Loading market data","Fetching the latest available observations.");let d=this.shadow.querySelector("#kmTitle");d&&(d.textContent=Ys[e]??"Market");let p=e==="item"?this.previous:e;br.includes(p)&&(p="search"),p==="indices"&&(p="overview");for(let h of this.shadow.querySelectorAll("[data-nav]")){let f=h.dataset.nav===p;h.classList.toggle("on",f),f?h.setAttribute("aria-current","page"):h.removeAttribute("aria-current")}this.updateWatchCount();try{let h=await this.render(e);if(i!==this.generation||!this.shadow)return;this.view=h,this.holdings=h.holdings??[],a.innerHTML=h.html,a.scrollTop=t===void 0?r?.scroll??0:0,o&&(a.scrollTop=n);let f=this.shadow.querySelector("#kmFootRight");f&&(f.textContent=h.asOf?`${h.asOfLabel??"Estimates calculated"} ${We(Math.max(0,Date.now()-h.asOf))} ago`:"Estimates from observed market data");let m=a.querySelector(".chart");if(m&&h.points&&h.series&&(this.chart=new jo(m,h.points,h.series,h.chartOptions)),e==="portfolio"&&this.filterHoldings(),e==="item"){let g=this.arg;for(let[b,v]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"})){let k=a.querySelector("#"+v),E=g?.[b];k&&typeof E=="string"&&(k.value=E)}this.updatePlanner(),this.filterListings()}}catch{if(i!==this.generation)return;a.innerHTML=fe("Market data is unavailable","Try again in a moment. Your saved watchlist stays on this device.",'')}finally{i===this.generation&&a.setAttribute("aria-busy","false")}}updateWatchCount(){let e=this.shadow?.querySelector("#kmWatchCount");e&&(e.textContent=String(Se().length))}async render(e){switch(e){case"overview":return this.overview();case"intelligence":return this.intelligence();case"search":return this.search();case"active":return this.search();case"item":return this.item();case"watchlist":return this.watchlist();case"movers":return this.movers();case"deals":return this.deals();case"indices":return this.indices();case"portfolio":return this.portfolio();case"analyze":return this.analyze();default:return this.help()}}intelligence(){return Bc(this)}unavailable(){return{html:fe("Market data is unavailable",W.lastError||"The market server could not be reached. Try again in a moment.",'')}}intro(e,t,o=""){return tn(this,e,t,o)}table(e){return Hc(this,e)}compactList(e){return Dc(this,e)}overview(){return cc(this)}search(){return uc(this)}item(){return xc(this)}watchlist(){return Ec(this)}movers(){return Cc(this)}deals(){return Tc(this)}indices(){return Lc(this)}portfolio(){return Pc(this)}async selectItem(e,t){if(t!=="give"&&t!=="get"){this.show("item",e.skin);return}let o=this.analyzer[t].find(n=>n.skin===e.skin);o?o.count=Math.min(1e4,o.count+1):this.analyzer[t].push({...e,count:1}),await this.show("analyze",this.arg,!0),this.tab==="analyze"&&this.shadow?.querySelector(`#kmPick${t}`)?.focus({preventScroll:!0})}analyze(){return Nc(this)}async refreshTrade(){let{generation:e}=this,t=++this.tradeRevision;this.shadow?.querySelector("#kmTradeOutcome")?.setAttribute("aria-busy","true");let n=this.shadow?.querySelector("#kmFootRight");n&&(n.textContent="Updating trade estimates...");let r=await this.analyze();if(e!==this.generation||t!==this.tradeRevision||!this.shadow)return;let i=document.createElement("div");i.innerHTML=r.html;for(let a of[".tradeSideHead>span",".tradeTotal",".tradeItemValue","#kmTradeOutcome"]){let l=i.querySelectorAll(a);this.shadow.querySelectorAll(a).forEach((c,d)=>{l[d]&&c.replaceWith(l[d])})}n&&(n.textContent=r.asOf?`Estimates calculated ${We(Math.max(0,Date.now()-r.asOf))} ago`:"Estimates from observed market data"),this.view=r}help(){return qc(this)}updatePlanner(){let e=this.shadow?.querySelector("#kmPlannerResult");if(!e||!this.view?.item)return;let t=Number(this.value("#kmSellPrice")),o=Number(this.value("#kmSellQuantity"));if(!Number.isFinite(t)||t<=0||!Number.isInteger(o)||o<1||o>1e4){e.textContent="Enter a positive asking price and a quantity from 1 to 10,000.";return}let n=this.view.listings;if(!n){e.textContent="Competing listings are unavailable. Try again when market data is available.";return}let r=n?.listings.filter(a=>a.pricen.listings.length;e.innerHTML=`${i?"At least ":""}${r} cheaper listing${r===1?"":"s"} observed${n?"":" (listing data unavailable)"}.
      ${T(t*o)} KR gross if all ${o} sell · ${it(t/this.view.item.skin.fair-1)} vs estimate.`}filterHoldings(){let e=this.portfolioFilter.toLocaleLowerCase().trim();for(let t of this.shadow?.querySelectorAll("tr[data-skin]")??[]){let o=t;o.hidden=!o.querySelector(".itemIdentity")?.textContent?.toLocaleLowerCase().includes(e)}}filterListings(){let e=this.value("#kmListingMax"),t=this.value("#kmSerialMax"),o=this.value("#kmWearMax"),n=this.value("#kmAgeMax"),r=this.value("#kmSellerMax");for(let c of this.shadow?.querySelectorAll("#kmListingRows tr")??[]){let u=c;u.hidden=!!(e&&Number(u.dataset.price)>Number(e))||!!(t&&(!u.dataset.serial||Number(u.dataset.serial)>Number(t)))||!!(o&&(!u.dataset.wear||Number(u.dataset.wear)>Number(o)))||!!(n&&(!u.dataset.age||Number(u.dataset.age)>Number(n)))||!!(r&&(!u.dataset.sellerCount||Number(u.dataset.sellerCount)>Number(r)))}let i=this.shadow?.querySelector("#kmListingCount"),l=[...this.shadow?.querySelectorAll("#kmListingRows tr")??[]].filter(c=>!c.hidden).length;i&&(i.textContent=`${l} sampled listings shown; ${this.view?.listings?.total??"unknown"} reported listed.`)}applyFilters(e=1){this.show(this.searchTab(),this.readFilters(e))}readFilters(e){return{q:this.value("#kmQ").trim(),rarity:this.value("#kmRarity"),type:this.value("#kmType"),sort:this.value("#kmSort"),budget:this.value("#kmBudget"),minSales:this.value("#kmSales"),page:e}}click(e){let t=e.target instanceof Element?e.target.closest("button,tr[data-skin],tr[data-index-name],tr[data-category]"):null;if(!t||t.hasAttribute("disabled"))return;let o=t.dataset;if(o.externalUrl){e.preventDefault();try{let n=new URL(o.externalUrl);if(n.protocol!=="https:"||n.username||n.password||n.port)return;if(!(["github.com","kute.lol","krunker.io"].includes(n.hostname)||n.hostname==="discord.com"&&n.pathname.startsWith("/invite/"))){d.showNotification("This news link is not supported by Kute.",!1,6);return}if(n.hostname==="krunker.io"&&!d.hostFeatures?.includes("krunker-links")){d.showNotification("Update the Kute application to open Krunker news links.",!1,6);return}window.chrome.webview.postMessage(`open-url, ${n.href}`)}catch{}return}if(o.intelKind!==void 0){this.show("intelligence",o.intelKind);return}if(t.id==="kmClose"){this.close();return}if(t.id==="kmMaximize"){this.toggleMaximized();return}if(o.scale!==void 0){this.rescale(Number(o.scale));return}if(o.discover){if(o.discover===this.tab)return;o.discover==="deals"&&!this.saved.has("deals")&&(this.tab==="search"||this.tab==="active")?this.show("deals",{budget:this.value("#kmBudget")}):this.show(o.discover);return}if(o.nav==="search"){this.show(this.discoveryTab);return}if(o.nav){this.show(o.nav);return}if(o.skin){this.show("item",Number(o.skin));return}if(o.category){this.show("search",{...yo(),type:o.category,minSales:"1"});return}if(o.page){this.applyFilters(Number(o.page));return}if(o.range){this.show("item",{...this.itemState(),range:o.range,zoom:1,offset:0},!0);return}if(o.chartMode){this.show("item",{...this.itemState(),candles:o.chartMode==="candles"},!0);return}if(o.pan!==void 0){this.show("item",{...this.itemState(),offset:Number(o.pan)},!0);return}if(o.zoom){this.show("item",{...this.itemState(),zoom:Number(o.zoom),offset:o.zoom==="1"?0:this.itemState().offset},!0);return}if(o.window){this.show("movers",o.window);return}if(o.indexName){this.show("indices",o.indexName);return}if(o.unwatch){if(!wo(Se().filter(n=>n.skin!==Number(o.unwatch)))){this.storageError();return}this.show("watchlist",this.arg,!0);return}if(o.remove!==void 0&&o.side){this.analyzer[o.side].splice(Number(o.remove),1),this.show("analyze",this.arg,!0);return}switch(o.action){case"discover":this.show("search",yo());break;case"reset-search":this.show(this.searchTab(),this.tab==="active"?{...yo(),minSales:"1",sort:"liquidity"}:yo());break;case"back":this.show(this.previous);break;case"retry":this.retry();break;case"filters":this.applyFilters();break;case"deal-budget":this.show("deals",{budget:this.value("#kmDealBudget")});break;case"inventory":this.show("portfolio",this.value("#kmName").trim());break;case"analyze":this.show("analyze",this.arg,!0);break;case"clear-trade":this.analyzer={give:[],get:[],giveKr:0,getKr:0},this.show("analyze");break;case"watch":if(this.view?.item){if(!Ql(this.view.item.skin)){this.storageError();return}this.show("item",this.arg,!0)}break;default:break}}storageError(){let e=this.shadow?.querySelector("#kmFootRight");e&&(e.textContent="Could not save on this device. The watchlist holds up to 100 items.")}async retry(){let{generation:e}=this;await W.retry(),e===this.generation&&await this.show(this.tab,this.arg)}changed(e){let t=e.target;if(t instanceof HTMLInputElement||t instanceof HTMLSelectElement)if(t.id==="kmAdvanced"){this.advanced=t.checked;try{localStorage.setItem(_f,this.advanced?"1":"0")}catch{this.storageError()}this.show(this.tab,void 0,!0)}else if(t.id==="kmOverlay")this.show("item",{...this.itemState(),overlay:t.value},!0);else if(t.dataset.target){let o=Number(t.value),n=Se().map(r=>r.skin===Number(t.dataset.target)?{...r,target:o>0&&Number.isFinite(o)?o:null}:r);if(!wo(n)){this.storageError();return}this.show("watchlist",this.arg,!0)}else if(t.dataset.count!==void 0&&t.dataset.side){let o=this.analyzer[t.dataset.side][Number(t.dataset.count)];o&&(o.count=Math.min(1e4,Math.max(1,Math.floor(Number(t.value)||1))),t.value=String(o.count)),this.refreshTrade()}else if(t.dataset.kr){let o=Math.max(0,Math.min(1e9,Math.floor(Number(t.value)||0)));t.dataset.kr==="give"?this.analyzer.giveKr=o:this.analyzer.getKr=o,t.value=String(o),this.refreshTrade()}else t.closest("#kmFilters")&&t instanceof HTMLSelectElement&&this.applyFilters()}input(e){let t=e.target;if(t instanceof HTMLInputElement){if(t.id==="kmSellPrice"||t.id==="kmSellQuantity"){this.updatePlanner();return}if(["kmListingMax","kmSerialMax","kmWearMax","kmAgeMax","kmSellerMax"].includes(t.id)){this.filterListings();return}if(t.id==="kmHoldingFilter"){this.portfolioFilter=t.value,this.filterHoldings();return}}}key(e){if(!this.shadow||(e.stopImmediatePropagation(),this.itemSearch?.key(e))||e.isComposing)return;if(e.key==="Escape"){e.stopImmediatePropagation(),e.preventDefault(),this.close();return}if(e.ctrlKey&&!e.altKey&&["+","=","-","0"].includes(e.key)){e.preventDefault(),this.rescale({"-":-1,0:0}[e.key]??1);return}let t=this.shadow.activeElement;if(t?.matches("[data-discover]")&&["ArrowLeft","ArrowRight","Home","End"].includes(e.key)){e.preventDefault();let i=[...this.shadow.querySelectorAll("#kmDiscoverTabs button")],l=(i.indexOf(t)+(e.key==="ArrowRight"?1:-1)+i.length)%i.length;e.key==="Home"&&(l=0),e.key==="End"&&(l=i.length-1);let c=i[l];c.focus(),c.click();return}if(e.key==="Enter"&&t&&(t.closest("#kmFilters")?(e.preventDefault(),this.applyFilters()):t.id==="kmName"?(e.preventDefault(),this.show("portfolio",this.value("#kmName").trim())):t.matches("tr[data-skin],tr[data-index-name],tr[data-category]")&&(e.preventDefault(),t.click())),e.key!=="Tab")return;let o=[...this.shadow.querySelectorAll("button:not(:disabled):not([tabindex='-1']),input:not([type=hidden]),select,summary,[tabindex='0']")].filter(i=>i instanceof HTMLElement&&i.getClientRects().length&&!i.closest("[hidden]")),n=o[0],r=o.at(-1);e.shiftKey&&(t===n||!t)?(e.preventDefault(),r?.focus()):!e.shiftKey&&(t===r||!t)&&(e.preventDefault(),n?.focus())}},jy=new Sr,Uy=jy});var Vc={};A(Vc,{default:()=>Wy});var Wc,Gy,Wy,Er=w(()=>{"use strict";F();It();xe();Xl();Zl();mr();ic();Wc=class{constructor(){this.headerItem=document.createElement("div"),this.headerSeparator=document.createElement("div"),this.headerObserver=new MutationObserver(()=>this.placeButton()),this.onUnread=()=>this.updateBadge(),this.terminal=null,this.running=!1,this.warned=!1,d.settings.toggleMarket=e=>this.toggle(e),d.market={open:(e,t)=>this.open(e,t),toggle:e=>this.toggle(e)},this.toggle(!0)}toggle(e){if(e!==this.running)if(this.running=e,e){if(!W.hostSupported()){this.warned||(this.warned=!0,d.showNotification("The Kute Market needs a newer Kute. Update Kute to use it.",!1,8)),this.running=!1;return}if(he.offline()){this.running=!1;return}this.placeButton();let t=document.querySelector("#playerHeaderEl");t&&this.headerObserver.observe(t,{childList:!0,subtree:!0}),window.addEventListener(Gs,this.onUnread),pr.start(),hr.start(),$t.start(),fr.start()}else this.headerObserver.disconnect(),window.removeEventListener(Gs,this.onUnread),this.headerItem.remove(),this.headerSeparator.remove(),pr.stop(),hr.stop(),$t.stop(),fr.stop(),this.terminal?.close()}placeButton(){let e=document.querySelector("#playerHeaderEl .headerBarRight");if(!e||e.contains(this.headerItem))return;let t=[...e.querySelector(".nav-item")?.classList??[]].find(o=>o.startsWith("svelte-"))??"";this.headerItem.className=`nav-item ${t}`,this.headerItem.innerHTML=` Kute Market `,this.headerItem.onclick=()=>this.open($t.unread.size?"watchlist":void 0),this.headerSeparator.className="verticalSeparator",this.headerSeparator.style.cssText="height: 35px;",e.prepend(this.headerItem,this.headerSeparator),this.updateBadge()}updateBadge(){let e=this.headerItem.querySelector(".nav-badge");if(!e)return;let t=$t.unread.size;e.textContent=String(Math.min(99,t)),e.style.display=t?"inline-block":"none"}async open(e,t){if(this.running){if(!this.terminal){let o=await Promise.resolve().then(()=>(Gc(),Uc)).catch(()=>null);if(!o)return;this.terminal=o.default}await this.terminal.open(e,t)}}},Gy=new Wc,Wy=Gy});var Vy={};var Of=w(()=>{"use strict";Er()});var Df,Ff=w(()=>{Df=`@keyframes kuteMmSlideDown{0%{transform:translate(-50%,-500%)}to{transform:translate(-50%)}}#kuteMatchmaker{position:absolute;top:8em;left:50%;z-index:2147482000;box-sizing:border-box;width:24em;padding:18px 22px;border-radius:14px;overflow:hidden;pointer-events:all;background:#12121699;backdrop-filter:blur(14px) saturate(120%);box-shadow:0 8px 48px #000c;display:flex;flex-direction:column;color:#fff;animation:kuteMmSlideDown .4s cubic-bezier(.16,1,.3,1) forwards}#kuteMmStatus{font-size:1.4em;color:#35e0e8;margin-bottom:.6em;text-align:center}#kuteMmStatus.mm-fail{color:#eb5656}#kuteMmFeed{display:flex;flex-direction:column;gap:.15em;overflow:hidden;min-height:5.6em;margin-bottom:.6em}#kuteMmFeed.mm-result{justify-content:center}@keyframes kuteMmFeedIn{0%{opacity:0;transform:translate(1em)}to{opacity:1;transform:translate(0)}}@keyframes kuteMmGrow{0%{opacity:0;transform:scale(.55)}65%{opacity:1;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}.mm-entry{display:flex;gap:.8em;padding:.2em .5em;font-size:.95em;font-family:GameFont,monospace;border-radius:.2em;animation:kuteMmFeedIn .12s ease forwards}.mm-entry:last-child:before{content:"\\25b8";color:#ffc147}.mm-entry.mm-pass{background:#4caf501a}.mm-entry.mm-pass .mm-region{color:#35e0e8}.mm-entry.mm-pass .mm-map{color:#ffffffe6}.mm-entry.mm-pass .mm-players{color:#4caf50}.mm-entry.mm-skip{background:#ffffff05}.mm-entry.mm-skip .mm-region{color:#ffffff4d}.mm-entry.mm-skip .mm-map{color:#ffffff80}.mm-entry.mm-skip .mm-players{color:#eb5656}.mm-entry.mm-skip .mm-icon{opacity:.45}.mm-region{min-width:2.5em;font-weight:700}.mm-map{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mm-players{min-width:3em;text-align:right;font-weight:600}.mm-icon{width:1.7em;height:1.7em;flex:none;object-fit:cover;border-radius:.25em;align-self:center;background:#ffffff0f}.mm-entry.mm-landed{box-shadow:inset 0 0 0 2px #35e0e8}.mm-entry.mm-found,.mm-entry.mm-none{justify-content:center;transform-origin:center;animation:kuteMmGrow .34s cubic-bezier(.2,.85,.3,1.25) forwards}.mm-entry.mm-found{font-size:1.25em;gap:.7em}.mm-entry.mm-found .mm-icon{width:2.4em;height:2.4em;border-radius:.3em}.mm-entry.mm-none{font-size:1.2em;color:#ffffff8c;background:#ffffff08}.mm-entry.mm-found:before,.mm-entry.mm-none:before{content:none}#kuteMmCounter{font-size:.85em;color:#ffc147;text-align:center;margin-bottom:.5em}#kuteMmCancel{text-align:center;border:.2em solid #eb5656;border-radius:.3em;font-size:1.1em;background:#0000004d;padding:.2em 1.2em;cursor:pointer;margin:0 auto;width:fit-content;transition:all .08s}#kuteMmCancel:hover{border-color:#fff;transform:scale(.95)}#kuteMmCancel:active{transform:scale(.85)} -`});var qf=we((NE,Xy)=>{Xy.exports='

      Matchmaker Filters

      F6 joins the best lobby for these. Nothing picked in a group means all of it

      Regions

      Modes \u2605 on a mode to prefer it

      Preferred first, then any other mode. Modes rank above maps
      Drag to reorder, click to move to the top

      Maps \u2605 on a map to prefer it

      Preferred first, then any other map
      Drag to reorder, click to move to the top

      Lobby

      Reset
      Done
      '});var Zc={};A(Zc,{default:()=>u1});function Yf(s){let e=e1.get(Wt(s));return e===void 0?null:_s(e)}function d1(s,e){let t=Yf(s);if(!t)return null;let o=document.createElement("img");return o.className=e,o.src=t,o.alt="",o.loading="lazy",o.onerror=()=>o.remove(),o}function sn(s,e){let t=document.createElement("span");return t.className=s,t.textContent=e,t}function Xc(s,e){let t=document.createElement("div");t.className=`mm-entry ${e}`;let o=d1(s.map,"mm-icon");return o&&t.append(o),t.append(sn("mm-region",s.region),sn("mm-map",s.map),sn("mm-players",`${s.players}/${s.limit}`)),t}async function Uf(){let e=await(await fetch(n1,{signal:AbortSignal.timeout(Vf)})).json();return Array.isArray(e?.games)?e.games:[]}function Gf(s,e){let t=e.maps.length>0?new Set(e.maps.map(Wt)):t1;return s.map(o=>{let n=String(o[0]),r=o[4]??{},i=r.c===0||r.oc===1,a=String(r.i??""),l=Wt(a),c={id:n,region:n.split(":")[0],server:String(o[1]),players:Number(o[2]),limit:Number(o[3]),map:a,mode:Jy[r.g]??"Unknown",timeLeft:Number(o[5]),passes:!1};return c.passes=i&&!s1.test(n)&&(e.regions.length===0||e.regions.includes(c.region))&&(e.modes.length===0||e.modes.includes(c.mode))&&t.has(l)&&c.players>=e.minPlayers&&c.players<=e.maxPlayers&&c.players0?c.timeLeft>=e.minTime:o1.has(l))&&!location.href.includes(n),c})}var Jy,Zy,Kf,Wf,Qy,Wt,e1,t1,o1,s1,n1,Vf,r1,jf,Yc,i1,a1,l1,c1,tn,on,Jc,u1,Qc=w(()=>{"use strict";Ff();F();Ae();Po();er();Jy=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Hide & Seek","Infected","Race","Last Man Standing","Simon Says","Gun Game","Prop Hunt","Boss Hunt","Classic FFA","Deposit","Stalker","King of the Hill","One in the Chamber","Trade","Kill Confirmed","Defuse","Sharp Shooter","Traitor","Raid","Blitz","Domination","Squad Deathmatch","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],Zy=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Gun Game","Classic FFA","Deposit","Kill Confirmed","Sharp Shooter","Domination","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],Kf={SV:"Silicon Valley",TOK:"Tokyo",FRA:"Frankfurt",MBI:"Mumbai",SYD:"Sydney",SIN:"Singapore",DAL:"Dallas",BHN:"Bahrain",BRZ:"Brazil",NY:"New York"},Wf=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Tropicano","Habitat","Atomic","Old_Burg","Throwback","Clockwork","Bazaar","Erupt","HQ","Lush","Vivo","Slide Moonlight","Eterno Simulator","Eterno Jump","Frontier","Piazza","Barnyard"],Qy={SkyTemple:"Sky Temple",Krunk_Plaza:"Krunk Plaza",Old_Burg:"Old Burg"},Wt=s=>s.toLowerCase().replace(/[^a-z0-9]/g,""),e1=new Map(Qn.map((s,e)=>[Wt(s),e])),t1=new Set(Wf.map(Wt)),o1=new Set(["Eterno Jump","Slide Moonlight"].map(Wt)),s1=/[\s&#?/%\\]/,n1="https://matchmaker.krunker.io/game-list?hostname=krunker.io",Vf=1e4,r1=4,jf=1100,Yc=80,i1=20,a1=180,l1=1200,c1=1100,tn={regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[],minPlayers:1,maxPlayers:6,minTime:120,sortByPlayers:!1,serverBrowser:!0,animation:!0,searchAfterMatch:!1},on=s=>new Promise(e=>setTimeout(e,s));Jc=class{constructor(){this.activeRun=0,this.runCounter=0,this.candidates=[],this.popup=document.createElement("div"),this.popup.id="kuteMatchmaker",this.status=document.createElement("div"),this.status.id="kuteMmStatus",this.feed=document.createElement("div"),this.feed.id="kuteMmFeed",this.counter=document.createElement("div"),this.counter.id="kuteMmCounter";let e=document.createElement("div");e.id="kuteMmCancel",e.textContent="Cancel",e.onmouseenter=()=>window.SOUND?.play("tick_0",.1),e.onclick=()=>this.abort(),this.popup.append(this.status,this.feed,this.counter,e),this.cancelKey=t=>{t.key!=="Escape"||document.pointerLockElement||(t.preventDefault(),t.stopPropagation(),this.abort())},d.matchmaker={showFilters:()=>this.showFilters()},d.settings.toggleMatchmaker=()=>{},d.hostFeatures?.includes("matchmaker")&&(window.addEventListener("keydown",t=>{!as(t,"matchmaker")||t.repeat||!d.settings.data.matchmaker||document.activeElement?.tagName!=="INPUT"&&this.start().catch(o=>console.error("[kute] matchmaker:",o))},!0),this.watchEndScreen())}watchEndScreen(){let e=document.getElementById("endUI");if(!e)return;let t=!1,o=e.style.display!=="none";document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&(t=!0)}),new MutationObserver(()=>{let n=e.style.display!=="none";n!==o&&(o=n,!(!n||!t)&&(t=!1,!(!d.settings.data.matchmaker||!this.filter.searchAfterMatch||window.getGameActivity?.()?.custom)&&this.start().catch(r=>console.error("[kute] matchmaker:",r))))}).observe(e,{attributes:!0,attributeFilter:["style"]})}get filter(){return{...tn,...d.settings.data.matchmakerFilter}}saveFilter(e){d.settings.data.matchmakerFilter=e,window.chrome.webview.postMessage(`set-config-json matchmakerFilter ${JSON.stringify(e)}`)}cancelled(e){return e!==this.activeRun}abort(){this.activeRun=0,window.playSelect?.(),this.dismiss()}dismiss(){document.removeEventListener("keydown",this.cancelKey,!0),this.popup.remove()}showPopup(){if(!document.querySelector("#kuteMatchmakerCSS")){let e=document.createElement("style");e.id="kuteMatchmakerCSS",e.textContent=Df,document.head.append(e)}this.status.textContent="Connecting...",this.status.classList.remove("mm-fail"),this.feed.replaceChildren(),this.feed.classList.remove("mm-result"),this.counter.textContent="",document.addEventListener("keydown",this.cancelKey,!0),(document.querySelector("#uiBase")??document.body).append(this.popup)}pushEntry(e){for(this.feed.append(e);this.feed.children.length>r1;)this.feed.firstElementChild?.remove()}async animateScan(e,t,o){let n=t.length;if(n===0)return;this.status.textContent="Scanning lobbies...";let r=Math.floor(jf/Yc),i=n>r?n/r:1,a=n>r?Yc:Math.max(i1,Math.min(Yc,jf/n));for(let l=0;l[l.id,l])),a=[t,...this.candidates.filter(l=>l!==t)].find(l=>r.get(l.id)?.passes);a?this.join(a.id):this.openServerBrowser(o)}async start(){if(this.activeRun!==0)return;let e=++this.runCounter;this.activeRun=e;try{await this.search(e)}finally{this.activeRun===e&&(this.activeRun=0)}}async search(e){let{filter:t}=this;t.animation&&this.showPopup();let o,n;try{let[p,f]=await Promise.all([Uf(),Te("ping-regions","regionPings",Vf)]);o=Gf(p,t),n=f??{}}catch(p){if(console.error("[kute] matchmaker: no lobby list",p),this.cancelled(e)||!t.animation)return;this.status.textContent="Failed to fetch lobbies",this.status.classList.add("mm-fail"),await on(2e3),this.cancelled(e)||this.dismiss();return}if(this.cancelled(e))return;let r=p=>n[p.server]??999,i=new Map(t.preferredMaps.map((p,f)=>[Wt(p),f])),a=new Map(t.preferredModes.map((p,f)=>[p,f])),l=p=>(a.get(p.mode)??a.size)*(i.size+1)+(i.get(Wt(p.map))??i.size),c=p=>p.limit-p.players<=1?1:0,u=o.filter(p=>p.passes);u.sort((p,f)=>{let m=l(p)-l(f),g=c(p)-c(f),b=r(p)-r(f),v=f.players-p.players;return t.sortByPlayers?m||g||v||b:m||g||b||v}),this.candidates=u;let h;if(u.length>0){let p=u[0],f=u.filter(m=>l(m)===l(p)&&c(m)===c(p)&&Math.abs(r(m)-r(p))<=20&&p.players-m.players<=2);h=f[Math.floor(Math.random()*f.length)]}if(t.animation&&await this.animateScan(e,o,h),!this.cancelled(e)){if(!h){if(t.animation){this.status.textContent="No Lobby Found",this.status.classList.add("mm-fail"),this.feed.classList.add("mm-result");let p=document.createElement("div");if(p.className="mm-entry mm-none",p.textContent="No matching lobbies",this.feed.replaceChildren(p),this.counter.textContent=t.serverBrowser?"Opening server browser...":"",await on(c1),this.cancelled(e))return}this.openServerBrowser(t);return}if(t.animation){this.status.textContent="Lobby Found!",this.feed.classList.add("mm-result"),this.feed.replaceChildren(Xc(h,"mm-pass mm-found"));let p=n[h.server]===void 0?"?":String(n[h.server]);if(this.counter.textContent=`${h.mode} \xB7 ${Kf[h.region]??h.region} \xB7 ${p}ms`,await on(l1),this.cancelled(e))return}await this.verifyAndJoin(e,h,t)}}async showFilters(){let e=await Promise.resolve().then(()=>ue(qf(),1)),{filter:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=(g,b,v)=>{let k=i(g);k.replaceChildren();for(let E of b){let L=document.createElement("div");if(L.className=`mmChip${v.includes(E.value)?" on":""}`,E.icon){let x=document.createElement("img");x.src=E.icon,x.alt="",x.loading="lazy",x.onerror=()=>x.remove(),L.append(x)}L.append(E.label),L.onclick=()=>{let x=v.indexOf(E.value);x===-1?v.push(E.value):v.splice(x,1),L.classList.toggle("on",x===-1)},k.append(L)}},l=(g,b,v)=>{if(!g)return;let k=document.createElement("img");k.src=g,k.alt="",v?k.loading="lazy":k.draggable=!1,k.onerror=()=>k.remove(),b.append(k)},c=g=>{let{preferred:b}=g,v=i(g.boxId);v.hidden=b.length===0;let k=v.querySelector(".mmGrid");k.replaceChildren();let E=()=>k.querySelectorAll(".mmNum").forEach((L,x)=>L.textContent=String(x+1));for(let L of b){let x=document.createElement("div");x.className="mmChip on mmRank",x.append(sn("mmNum","")),l(g.icon(L),x,!1),x.append(g.label(L));let $=null;x.onpointerdown=I=>{x.setPointerCapture(I.pointerId),$={x:I.clientX,y:I.clientY,moved:!1}},x.onpointermove=I=>{if(!$||!$.moved&&Math.hypot(I.clientX-$.x,I.clientY-$.y)<5)return;$.moved=!0,x.classList.add("dragging");let _=[...k.children],H=_.findIndex(J=>{let B=J.getBoundingClientRect();return I.clientX>=B.left&&I.clientX<=B.right&&I.clientY>=B.top&&I.clientY<=B.bottom}),G=_.indexOf(x);H===-1||H===G||(b.splice(H,0,...b.splice(G,1)),x.remove(),k.insertBefore(x,k.children[H]??null),E())},x.onpointerup=()=>{x.classList.remove("dragging"),$&&!$.moved&&(b.unshift(...b.splice(b.indexOf(L),1)),window.SOUND?.play("tick_0",.1),c(g)),$=null},x.onpointercancel=x.onpointerup,k.append(x)}E()},u=g=>{let{picked:b,preferred:v}=g,k=i(g.gridId);k.replaceChildren();for(let E of g.values){let L=v.includes(E),x=document.createElement("div");x.className=`mmChip${b.includes(E)?" on":""}${L?" preferred":""}`,l(g.icon(E),x,!0),x.append(g.label(E));let $=sn("mmStar","\u2605");$.title=L?"Preferred, click to remove":`Prefer this ${g.noun}`,$.onclick=I=>{I.stopPropagation(),L?v.splice(v.indexOf(E),1):(v.push(E),b.length>0&&!b.includes(E)&&b.push(E)),u(g)},x.append($),x.onclick=()=>{let I=b.indexOf(E);I!==-1?(b.splice(I,1),L&&v.splice(v.indexOf(E),1)):b.length===0?b.push(...new Set([...v,E])):b.push(E),u(g)},k.append(x)}c(g)},h=()=>{a("mmRegions",Object.entries(Kf).map(([g,b])=>({value:g,label:b})),t.regions),u({gridId:"mmModes",boxId:"mmModeRanks",noun:"mode",values:Zy,picked:t.modes,preferred:t.preferredModes,label:g=>g,icon:()=>null}),u({gridId:"mmMaps",boxId:"mmMapRanks",noun:"map",values:Wf,picked:t.maps,preferred:t.preferredMaps,label:g=>Qy[g]??g,icon:Yf}),i("mmMinPlayers").value=String(t.minPlayers),i("mmMaxPlayers").value=String(t.maxPlayers),i("mmMinTime").value=String(t.minTime),i("mmSortByPlayers").checked=t.sortByPlayers,i("mmServerBrowser").checked=t.serverBrowser,i("mmAnimation").checked=t.animation,i("mmSearchAfterMatch").checked=t.searchAfterMatch};t.regions=[...t.regions],t.modes=[...t.modes],t.maps=[...t.maps],t.preferredMaps=[...t.preferredMaps],t.preferredModes=[...t.preferredModes],h();let p=(g,b,v,k)=>{let E=Number.parseInt(i(g).value,10);return Number.isNaN(E)?k:Math.min(v,Math.max(b,E))},f=new AbortController,m=()=>{f.abort(),o.remove(),this.saveFilter({...t,minPlayers:p("mmMinPlayers",0,7,tn.minPlayers),maxPlayers:p("mmMaxPlayers",0,7,tn.maxPlayers),minTime:p("mmMinTime",0,480,tn.minTime),sortByPlayers:i("mmSortByPlayers").checked,serverBrowser:i("mmServerBrowser").checked,animation:i("mmAnimation").checked,searchAfterMatch:i("mmSearchAfterMatch").checked})};i("mmDone").onclick=m,i("mmReset").onclick=()=>{Object.assign(t,tn,{regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[]}),h()},o.addEventListener("mousedown",g=>{g.target===o&&m()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),m())},{signal:f.signal,capture:!0}),document.body.append(o)}},u1=new Jc});var ed=we((FE,p1)=>{p1.exports=`#uiBase.onMenu #spectateUI{display:block!important}#uiBase.onCompMenu.onMenu #specTimer,#uiBase.onMenu #specGMessage,#uiBase.onMenu #spec1,#uiBase.onMenu #specGameInfo,#uiBase.onMenu #spec0,#uiBase.onMenu #specControlHolder,#uiBase.onMenu #specNames{display:none!important}#uiBase.onMenu #spectateUI>#spectateHUD{box-sizing:border-box;display:flex!important;justify-content:center;height:.5rem;white-space:nowrap;width:max-content;position:fixed;top:calc(50% + 140px)}#uiBase.onMenu #spectateHUD #specGMessage{top:0}#uiBase.onMenu #spectateUI>#spectateHUD{z-index:1;transform:unset}#uiBase.onMenu .spectateInfo{position:fixed;top:calc(40% - 105px);left:50%;transform:translate(-50%,-50%)}#uiBase.onMenu #spectateUI div .spectateInfo #specTimer{background-color:#0000;padding:0 25px;font-size:42px;border-radius:.5em}#uiBase.onMenu #specKPDContr{display:none}#uiBase.onMenu #spectateUI div#specStats{position:absolute;top:calc(50% + 13em);left:50%;transform:translate(-50%);z-index:1}#uiBase.onMenu #spectateUI div#specStats:before{content:"Spectating";position:absolute;bottom:100%;left:50%;transform:translate(-50%);font-size:1.2em;padding-bottom:.5em} -`});var od={};A(od,{default:()=>h1});var Jf,Xf,td,h1,sd=w(()=>{"use strict";Jf=ue(ed(),1);F();Xf="kute_menuTimerCSS",td=class{constructor(){d.settings.toggleMenuTimer=e=>this.toggle(e),this.toggle(d.settings.data.menuTimer!==!1)}toggle(e){let t=document.getElementById(Xf);if(!e){t?.remove();return}if(t)return;let o=document.createElement("style");o.id=Xf,o.textContent=Jf.default,document.head.append(o)}},h1=new td});var id={};A(id,{default:()=>y1});function Qf(s){let e=/loadUserMod\(\s*(["`])(.*?)\1\s*,\s*(["`])(.*?)\3/.exec(s);return e?{name:e[2],url:e[4]}:null}function eg(s){try{let e=new URL(s);return e.protocol!=="https:"?null:e.hostname==="krunker.io"||e.hostname.endsWith(".krunker.io")?e.href:e.hostname==="dropbox.com"||e.hostname==="www.dropbox.com"?(e.hostname="dl.dropboxusercontent.com",e.search="",e.href):null}catch{return null}}function v1(s){return`${s.replace(/[\u0000-\u001f<>:"/\\|?*]/g,"").replace(/\s+/g," ").trim().replace(/[ .]+$/,"").slice(0,80)||"mod"}.zip`}async function w1(s){let e=await fetch(s);if(e.status===403||e.status===404)throw new Error("This mod's file is gone, its creator removed it");if(!e.ok)throw new Error(`The mod server answered ${e.status}`);if(Number(e.headers.get("content-length")??0)>Zf)throw new Error("That mod is too large");let t=await e.blob();if(t.size>Zf)throw new Error("That mod is too large");let o=new Uint8Array(await t.slice(0,2).arrayBuffer());if(o[0]!==80||o[1]!==75)throw new Error("That mod is not a zip file");return t}function k1(s,e){let t=document.createElement("a");t.href=URL.createObjectURL(s),t.download=e,t.click(),setTimeout(()=>URL.revokeObjectURL(t.href),6e4)}function tg(s,e,t,o){let n=!1;s.addEventListener("click",r=>{if(r.stopPropagation(),n)return;n=!0,e.style.color=nd.busy,e.textContent="hourglass_top";let i=v1(t);w1(o).then(a=>{k1(a,i),e.style.color=nd.done,e.textContent="download_done",d.showNotification(`Saved ${i} to your Downloads folder`,!1,4)}).catch(a=>{e.style.color=nd.failed,e.textContent="error_outline",d.showNotification(a instanceof TypeError?"Could not download the mod":a.message,!1,4)}).finally(()=>{n=!1})})}function og(s){let e=document.createElement("span");return e.className="material-icons",e.style.cssText=s,e.textContent="download",e}var nn,Zf,m1,f1,g1,b1,nd,rd,y1,ad=w(()=>{"use strict";F();nn="data-kute-mod",Zf=300*1024*1024,m1='[onclick^="downloadPack"]',f1="font-size:70px;color:#fff;",g1="position:absolute;right:30px;bottom:92px;box-sizing:content-box;width:240px;height:37px;padding:10px 6px 6px;border:3px solid #35e0e8;border-radius:6px;background:rgba(0,0,0,0.6);color:#fff;font-size:21px;text-align:center;cursor:pointer;",b1="font-size:32px;color:#fff;vertical-align:top;margin-top:-3px;margin-left:5px;",nd={busy:"#777",done:"#35e0e8",failed:"#ff7a7a"};rd=class{constructor(){this.pending=null,this.observer=new MutationObserver(()=>{this.pending===null&&(this.pending=setTimeout(()=>this.scan(),150))});let e=document.getElementById("menuWindow");e&&(this.observer.observe(e,{childList:!0,subtree:!0}),this.scan())}scan(){this.pending=null;let e=document.getElementById("menuWindow");if(!e)return;let t=[];for(let r of e.querySelectorAll('.mapActionB[onclick^="loadUserMod"]')){let i=r.parentElement;if(!i||i.querySelector(`[${nn}], ${m1}`))continue;let a=Qf(r.getAttribute("onclick")??""),l=a&&eg(a.url);a&&l&&t.push([i,this.listButton(a.name,l)])}let o=document.getElementById("bigMFeatPBtn"),n=o?.parentElement;if(o&&n&&!n.querySelector(`[${nn}]`)){let r=Qf(o.getAttribute("onclick")??""),i=r&&eg(r.url);r&&i&&t.push([n,[this.featuredButton(r.name,i)]])}if(t.length!==0){this.observer.disconnect();for(let[r,i]of t)r.append(...i);this.observer.observe(e,{childList:!0,subtree:!0})}}listButton(e,t){let o=document.createElement("div");o.className="mapActionSep",o.setAttribute(nn,"");let n=document.createElement("div");n.className="mapActionB",n.title="Download",n.setAttribute(nn,"");let r=og(f1);return n.append(r),tg(n,r,e,t),[o,n]}featuredButton(e,t){let o=document.createElement("div");o.setAttribute(nn,""),o.style.cssText=g1;let n=og(b1);return o.append("Download ",n),tg(o,n,e,t),o}},y1=new rd});var dd={};A(dd,{default:()=>A1});function $r(s,e,t){return Math.min(t,Math.max(e,s))}function ld(s,e){let t=parseFloat(localStorage.getItem("kro_setngss_"+s)??"");return Number.isFinite(t)&&t>0?t:e}function ig(s,e){let t=s.createProgram();for(let[o,n]of[[s.VERTEX_SHADER,C1],[s.FRAGMENT_SHADER,e]]){let r=s.createShader(o);if(!r)return null;s.shaderSource(r,n),s.compileShader(r),s.attachShader(t,r)}return s.linkProgram(t),s.getProgramParameter(t,s.LINK_STATUS)?t:null}var x1,sg,S1,E1,ng,$1,rg,C1,M1,T1,cd,A1,ud=w(()=>{"use strict";F();is();x1="kuteMotionBlur",sg=1e3/60,S1=.4,E1=.002,ng=.2,$1=2,rg=.0024,C1=`#version 300 es + class="muted">${T(t*o)} KR gross if all ${o} sell · ${it(t/this.view.item.skin.fair-1)} vs estimate.`}filterHoldings(){let e=this.portfolioFilter.toLocaleLowerCase().trim();for(let t of this.shadow?.querySelectorAll("tr[data-skin]")??[]){let o=t;o.hidden=!o.querySelector(".itemIdentity")?.textContent?.toLocaleLowerCase().includes(e)}}filterListings(){let e=this.value("#kmListingMax"),t=this.value("#kmSerialMax"),o=this.value("#kmWearMax"),n=this.value("#kmAgeMax"),r=this.value("#kmSellerMax");for(let c of this.shadow?.querySelectorAll("#kmListingRows tr")??[]){let d=c;d.hidden=!!(e&&Number(d.dataset.price)>Number(e))||!!(t&&(!d.dataset.serial||Number(d.dataset.serial)>Number(t)))||!!(o&&(!d.dataset.wear||Number(d.dataset.wear)>Number(o)))||!!(n&&(!d.dataset.age||Number(d.dataset.age)>Number(n)))||!!(r&&(!d.dataset.sellerCount||Number(d.dataset.sellerCount)>Number(r)))}let i=this.shadow?.querySelector("#kmListingCount"),l=[...this.shadow?.querySelectorAll("#kmListingRows tr")??[]].filter(c=>!c.hidden).length;i&&(i.textContent=`${l} sampled listings shown; ${this.view?.listings?.total??"unknown"} reported listed.`)}applyFilters(e=1){this.show(this.searchTab(),this.readFilters(e))}readFilters(e){return{q:this.value("#kmQ").trim(),rarity:this.value("#kmRarity"),type:this.value("#kmType"),sort:this.value("#kmSort"),budget:this.value("#kmBudget"),minSales:this.value("#kmSales"),page:e}}click(e){let t=e.target instanceof Element?e.target.closest("button,tr[data-skin],tr[data-index-name],tr[data-category]"):null;if(!t||t.hasAttribute("disabled"))return;let o=t.dataset;if(o.externalUrl){e.preventDefault();try{let n=new URL(o.externalUrl);if(n.protocol!=="https:"||n.username||n.password||n.port)return;if(!(["github.com","kute.lol","krunker.io"].includes(n.hostname)||n.hostname==="discord.com"&&n.pathname.startsWith("/invite/"))){u.showNotification("This news link is not supported by Kute.",!1,6);return}if(n.hostname==="krunker.io"&&!u.hostFeatures?.includes("krunker-links")){u.showNotification("Update the Kute application to open Krunker news links.",!1,6);return}window.chrome.webview.postMessage(`open-url, ${n.href}`)}catch{}return}if(o.intelKind!==void 0){this.show("intelligence",o.intelKind);return}if(t.id==="kmClose"){this.close();return}if(t.id==="kmMaximize"){this.toggleMaximized();return}if(o.scale!==void 0){this.rescale(Number(o.scale));return}if(o.discover){if(o.discover===this.tab)return;o.discover==="deals"&&!this.saved.has("deals")&&(this.tab==="search"||this.tab==="active")?this.show("deals",{budget:this.value("#kmBudget")}):this.show(o.discover);return}if(o.nav==="search"){this.show(this.discoveryTab);return}if(o.nav){this.show(o.nav);return}if(o.skin){this.show("item",Number(o.skin));return}if(o.category){this.show("search",{...yo(),type:o.category,minSales:"1"});return}if(o.page){this.applyFilters(Number(o.page));return}if(o.range){this.show("item",{...this.itemState(),range:o.range,zoom:1,offset:0},!0);return}if(o.chartMode){this.show("item",{...this.itemState(),candles:o.chartMode==="candles"},!0);return}if(o.pan!==void 0){this.show("item",{...this.itemState(),offset:Number(o.pan)},!0);return}if(o.zoom){this.show("item",{...this.itemState(),zoom:Number(o.zoom),offset:o.zoom==="1"?0:this.itemState().offset},!0);return}if(o.window){this.show("movers",o.window);return}if(o.indexName){this.show("indices",o.indexName);return}if(o.unwatch){if(!wo(Se().filter(n=>n.skin!==Number(o.unwatch)))){this.storageError();return}this.show("watchlist",this.arg,!0);return}if(o.remove!==void 0&&o.side){this.analyzer[o.side].splice(Number(o.remove),1),this.show("analyze",this.arg,!0);return}switch(o.action){case"discover":this.show("search",yo());break;case"reset-search":this.show(this.searchTab(),this.tab==="active"?{...yo(),minSales:"1",sort:"liquidity"}:yo());break;case"back":this.show(this.previous);break;case"retry":this.retry();break;case"filters":this.applyFilters();break;case"deal-budget":this.show("deals",{budget:this.value("#kmDealBudget")});break;case"inventory":this.show("portfolio",this.value("#kmName").trim());break;case"analyze":this.show("analyze",this.arg,!0);break;case"clear-trade":this.analyzer={give:[],get:[],giveKr:0,getKr:0},this.show("analyze");break;case"watch":if(this.view?.item){if(!Ql(this.view.item.skin)){this.storageError();return}this.show("item",this.arg,!0)}break;default:break}}storageError(){let e=this.shadow?.querySelector("#kmFootRight");e&&(e.textContent="Could not save on this device. The watchlist holds up to 100 items.")}async retry(){let{generation:e}=this;await W.retry(),e===this.generation&&await this.show(this.tab,this.arg)}changed(e){let t=e.target;if(t instanceof HTMLInputElement||t instanceof HTMLSelectElement)if(t.id==="kmAdvanced"){this.advanced=t.checked;try{localStorage.setItem(_f,this.advanced?"1":"0")}catch{this.storageError()}this.show(this.tab,void 0,!0)}else if(t.id==="kmOverlay")this.show("item",{...this.itemState(),overlay:t.value},!0);else if(t.dataset.target){let o=Number(t.value),n=Se().map(r=>r.skin===Number(t.dataset.target)?{...r,target:o>0&&Number.isFinite(o)?o:null}:r);if(!wo(n)){this.storageError();return}this.show("watchlist",this.arg,!0)}else if(t.dataset.count!==void 0&&t.dataset.side){let o=this.analyzer[t.dataset.side][Number(t.dataset.count)];o&&(o.count=Math.min(1e4,Math.max(1,Math.floor(Number(t.value)||1))),t.value=String(o.count)),this.refreshTrade()}else if(t.dataset.kr){let o=Math.max(0,Math.min(1e9,Math.floor(Number(t.value)||0)));t.dataset.kr==="give"?this.analyzer.giveKr=o:this.analyzer.getKr=o,t.value=String(o),this.refreshTrade()}else t.closest("#kmFilters")&&t instanceof HTMLSelectElement&&this.applyFilters()}input(e){let t=e.target;if(t instanceof HTMLInputElement){if(t.id==="kmSellPrice"||t.id==="kmSellQuantity"){this.updatePlanner();return}if(["kmListingMax","kmSerialMax","kmWearMax","kmAgeMax","kmSellerMax"].includes(t.id)){this.filterListings();return}if(t.id==="kmHoldingFilter"){this.portfolioFilter=t.value,this.filterHoldings();return}}}key(e){if(!this.shadow||(e.stopImmediatePropagation(),this.itemSearch?.key(e))||e.isComposing)return;if(e.key==="Escape"){e.stopImmediatePropagation(),e.preventDefault(),this.close();return}if(e.ctrlKey&&!e.altKey&&["+","=","-","0"].includes(e.key)){e.preventDefault(),this.rescale({"-":-1,0:0}[e.key]??1);return}let t=this.shadow.activeElement;if(t?.matches("[data-discover]")&&["ArrowLeft","ArrowRight","Home","End"].includes(e.key)){e.preventDefault();let i=[...this.shadow.querySelectorAll("#kmDiscoverTabs button")],l=(i.indexOf(t)+(e.key==="ArrowRight"?1:-1)+i.length)%i.length;e.key==="Home"&&(l=0),e.key==="End"&&(l=i.length-1);let c=i[l];c.focus(),c.click();return}if(e.key==="Enter"&&t&&(t.closest("#kmFilters")?(e.preventDefault(),this.applyFilters()):t.id==="kmName"?(e.preventDefault(),this.show("portfolio",this.value("#kmName").trim())):t.matches("tr[data-skin],tr[data-index-name],tr[data-category]")&&(e.preventDefault(),t.click())),e.key!=="Tab")return;let o=[...this.shadow.querySelectorAll("button:not(:disabled):not([tabindex='-1']),input:not([type=hidden]),select,summary,[tabindex='0']")].filter(i=>i instanceof HTMLElement&&i.getClientRects().length&&!i.closest("[hidden]")),n=o[0],r=o.at(-1);e.shiftKey&&(t===n||!t)?(e.preventDefault(),r?.focus()):!e.shiftKey&&(t===r||!t)&&(e.preventDefault(),n?.focus())}},jy=new Er,Uy=jy});var Vc={};A(Vc,{default:()=>Wy});var Wc,Gy,Wy,$r=w(()=>{"use strict";D();It();xe();Xl();Zl();fr();ic();Wc=class{constructor(){this.headerItem=document.createElement("div"),this.headerSeparator=document.createElement("div"),this.headerObserver=new MutationObserver(()=>this.placeButton()),this.onUnread=()=>this.updateBadge(),this.terminal=null,this.running=!1,this.warned=!1,u.settings.toggleMarket=e=>this.toggle(e),u.market={open:(e,t)=>this.open(e,t),toggle:e=>this.toggle(e)},this.toggle(!0)}toggle(e){if(e!==this.running)if(this.running=e,e){if(!W.hostSupported()){this.warned||(this.warned=!0,u.showNotification("The Kute Market needs a newer Kute. Update Kute to use it.",!1,8)),this.running=!1;return}if(he.offline()){this.running=!1;return}this.placeButton();let t=document.querySelector("#playerHeaderEl");t&&this.headerObserver.observe(t,{childList:!0,subtree:!0}),window.addEventListener(Ws,this.onUnread),hr.start(),mr.start(),$t.start(),gr.start()}else this.headerObserver.disconnect(),window.removeEventListener(Ws,this.onUnread),this.headerItem.remove(),this.headerSeparator.remove(),hr.stop(),mr.stop(),$t.stop(),gr.stop(),this.terminal?.close()}placeButton(){let e=document.querySelector("#playerHeaderEl .headerBarRight");if(!e||e.contains(this.headerItem))return;let t=[...e.querySelector(".nav-item")?.classList??[]].find(o=>o.startsWith("svelte-"))??"";this.headerItem.className=`nav-item ${t}`,this.headerItem.innerHTML=` Kute Market `,this.headerItem.onclick=()=>this.open($t.unread.size?"watchlist":void 0),this.headerSeparator.className="verticalSeparator",this.headerSeparator.style.cssText="height: 35px;",e.prepend(this.headerItem,this.headerSeparator),this.updateBadge()}updateBadge(){let e=this.headerItem.querySelector(".nav-badge");if(!e)return;let t=$t.unread.size;e.textContent=String(Math.min(99,t)),e.style.display=t?"inline-block":"none"}async open(e,t){if(this.running){if(!this.terminal){let o=await Promise.resolve().then(()=>(Gc(),Uc)).catch(()=>null);if(!o)return;this.terminal=o.default}await this.terminal.open(e,t)}}},Gy=new Wc,Wy=Gy});var Vy={};var Of=w(()=>{"use strict";$r()});var Ff,Df=w(()=>{Ff=`@keyframes kuteMmSlideDown{0%{transform:translate(-50%,-500%)}to{transform:translate(-50%)}}#kuteMatchmaker{position:absolute;top:8em;left:50%;z-index:2147482000;box-sizing:border-box;width:24em;padding:18px 22px;border-radius:14px;overflow:hidden;pointer-events:all;background:#12121699;backdrop-filter:blur(14px) saturate(120%);box-shadow:0 8px 48px #000c;display:flex;flex-direction:column;color:#fff;animation:kuteMmSlideDown .4s cubic-bezier(.16,1,.3,1) forwards}#kuteMmStatus{font-size:1.4em;color:#35e0e8;margin-bottom:.6em;text-align:center}#kuteMmStatus.mm-fail{color:#eb5656}#kuteMmFeed{display:flex;flex-direction:column;gap:.15em;overflow:hidden;min-height:5.6em;margin-bottom:.6em}#kuteMmFeed.mm-result{justify-content:center}@keyframes kuteMmFeedIn{0%{opacity:0;transform:translate(1em)}to{opacity:1;transform:translate(0)}}@keyframes kuteMmGrow{0%{opacity:0;transform:scale(.55)}65%{opacity:1;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}.mm-entry{display:flex;gap:.8em;padding:.2em .5em;font-size:.95em;font-family:GameFont,monospace;border-radius:.2em;animation:kuteMmFeedIn .12s ease forwards}.mm-entry:last-child:before{content:"\\25b8";color:#ffc147}.mm-entry.mm-pass{background:#4caf501a}.mm-entry.mm-pass .mm-region{color:#35e0e8}.mm-entry.mm-pass .mm-map{color:#ffffffe6}.mm-entry.mm-pass .mm-players{color:#4caf50}.mm-entry.mm-skip{background:#ffffff05}.mm-entry.mm-skip .mm-region{color:#ffffff4d}.mm-entry.mm-skip .mm-map{color:#ffffff80}.mm-entry.mm-skip .mm-players{color:#eb5656}.mm-entry.mm-skip .mm-icon{opacity:.45}.mm-region{min-width:2.5em;font-weight:700}.mm-map{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mm-players{min-width:3em;text-align:right;font-weight:600}.mm-icon{width:1.7em;height:1.7em;flex:none;object-fit:cover;border-radius:.25em;align-self:center;background:#ffffff0f}.mm-entry.mm-landed{box-shadow:inset 0 0 0 2px #35e0e8}.mm-entry.mm-found,.mm-entry.mm-none{justify-content:center;transform-origin:center;animation:kuteMmGrow .34s cubic-bezier(.2,.85,.3,1.25) forwards}.mm-entry.mm-found{font-size:1.25em;gap:.7em}.mm-entry.mm-found .mm-icon{width:2.4em;height:2.4em;border-radius:.3em}.mm-entry.mm-none{font-size:1.2em;color:#ffffff8c;background:#ffffff08}.mm-entry.mm-found:before,.mm-entry.mm-none:before{content:none}#kuteMmCounter{font-size:.85em;color:#ffc147;text-align:center;margin-bottom:.5em}#kuteMmCancel{text-align:center;border:.2em solid #eb5656;border-radius:.3em;font-size:1.1em;background:#0000004d;padding:.2em 1.2em;cursor:pointer;margin:0 auto;width:fit-content;transition:all .08s}#kuteMmCancel:hover{border-color:#fff;transform:scale(.95)}#kuteMmCancel:active{transform:scale(.85)} +`});var qf=we((NE,Xy)=>{Xy.exports='

      Matchmaker Filters

      F6 joins the best lobby for these. Nothing picked in a group means all of it

      Regions

      Modes \u2605 on a mode to prefer it

      Preferred first, then any other mode. Modes rank above maps
      Drag to reorder, click to move to the top

      Maps \u2605 on a map to prefer it

      Preferred first, then any other map
      Drag to reorder, click to move to the top

      Lobby

      Reset
      Done
      '});var Zc={};A(Zc,{default:()=>u1});function Yf(s){let e=e1.get(Wt(s));return e===void 0?null:Bs(e)}function d1(s,e){let t=Yf(s);if(!t)return null;let o=document.createElement("img");return o.className=e,o.src=t,o.alt="",o.loading="lazy",o.onerror=()=>o.remove(),o}function nn(s,e){let t=document.createElement("span");return t.className=s,t.textContent=e,t}function Xc(s,e){let t=document.createElement("div");t.className=`mm-entry ${e}`;let o=d1(s.map,"mm-icon");return o&&t.append(o),t.append(nn("mm-region",s.region),nn("mm-map",s.map),nn("mm-players",`${s.players}/${s.limit}`)),t}async function Uf(){let e=await(await fetch(n1,{signal:AbortSignal.timeout(Vf)})).json();return Array.isArray(e?.games)?e.games:[]}function Gf(s,e){let t=e.maps.length>0?new Set(e.maps.map(Wt)):t1;return s.map(o=>{let n=String(o[0]),r=o[4]??{},i=r.c===0||r.oc===1,a=String(r.i??""),l=Wt(a),c={id:n,region:n.split(":")[0],server:String(o[1]),players:Number(o[2]),limit:Number(o[3]),map:a,mode:Jy[r.g]??"Unknown",timeLeft:Number(o[5]),passes:!1};return c.passes=i&&!s1.test(n)&&(e.regions.length===0||e.regions.includes(c.region))&&(e.modes.length===0||e.modes.includes(c.mode))&&t.has(l)&&c.players>=e.minPlayers&&c.players<=e.maxPlayers&&c.players0?c.timeLeft>=e.minTime:o1.has(l))&&!location.href.includes(n),c})}var Jy,Zy,Kf,Wf,Qy,Wt,e1,t1,o1,s1,n1,Vf,r1,jf,Yc,i1,a1,l1,c1,on,sn,Jc,u1,Qc=w(()=>{"use strict";Df();D();Ae();Po();tr();Jy=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Hide & Seek","Infected","Race","Last Man Standing","Simon Says","Gun Game","Prop Hunt","Boss Hunt","Classic FFA","Deposit","Stalker","King of the Hill","One in the Chamber","Trade","Kill Confirmed","Defuse","Sharp Shooter","Traitor","Raid","Blitz","Domination","Squad Deathmatch","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],Zy=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Gun Game","Classic FFA","Deposit","Kill Confirmed","Sharp Shooter","Domination","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],Kf={SV:"Silicon Valley",TOK:"Tokyo",FRA:"Frankfurt",MBI:"Mumbai",SYD:"Sydney",SIN:"Singapore",DAL:"Dallas",BHN:"Bahrain",BRZ:"Brazil",NY:"New York"},Wf=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Tropicano","Habitat","Atomic","Old_Burg","Throwback","Clockwork","Bazaar","Erupt","HQ","Lush","Vivo","Slide Moonlight","Eterno Simulator","Eterno Jump","Frontier","Piazza","Barnyard"],Qy={SkyTemple:"Sky Temple",Krunk_Plaza:"Krunk Plaza",Old_Burg:"Old Burg"},Wt=s=>s.toLowerCase().replace(/[^a-z0-9]/g,""),e1=new Map(er.map((s,e)=>[Wt(s),e])),t1=new Set(Wf.map(Wt)),o1=new Set(["Eterno Jump","Slide Moonlight"].map(Wt)),s1=/[\s&#?/%\\]/,n1="https://matchmaker.krunker.io/game-list?hostname=krunker.io",Vf=1e4,r1=4,jf=1100,Yc=80,i1=20,a1=180,l1=1200,c1=1100,on={regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[],minPlayers:1,maxPlayers:6,minTime:120,sortByPlayers:!1,serverBrowser:!0,animation:!0,searchAfterMatch:!1},sn=s=>new Promise(e=>setTimeout(e,s));Jc=class{constructor(){this.activeRun=0,this.runCounter=0,this.candidates=[],this.popup=document.createElement("div"),this.popup.id="kuteMatchmaker",this.status=document.createElement("div"),this.status.id="kuteMmStatus",this.feed=document.createElement("div"),this.feed.id="kuteMmFeed",this.counter=document.createElement("div"),this.counter.id="kuteMmCounter";let e=document.createElement("div");e.id="kuteMmCancel",e.textContent="Cancel",e.onmouseenter=()=>window.SOUND?.play("tick_0",.1),e.onclick=()=>this.abort(),this.popup.append(this.status,this.feed,this.counter,e),this.cancelKey=t=>{t.key!=="Escape"||document.pointerLockElement||(t.preventDefault(),t.stopPropagation(),this.abort())},u.matchmaker={showFilters:()=>this.showFilters()},u.settings.toggleMatchmaker=()=>{},u.hostFeatures?.includes("matchmaker")&&(window.addEventListener("keydown",t=>{!ls(t,"matchmaker")||t.repeat||!u.settings.data.matchmaker||document.activeElement?.tagName!=="INPUT"&&this.start().catch(o=>console.error("[kute] matchmaker:",o))},!0),this.watchEndScreen())}watchEndScreen(){let e=document.getElementById("endUI");if(!e)return;let t=!1,o=e.style.display!=="none";document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&(t=!0)}),new MutationObserver(()=>{let n=e.style.display!=="none";n!==o&&(o=n,!(!n||!t)&&(t=!1,!(!u.settings.data.matchmaker||!this.filter.searchAfterMatch||window.getGameActivity?.()?.custom)&&this.start().catch(r=>console.error("[kute] matchmaker:",r))))}).observe(e,{attributes:!0,attributeFilter:["style"]})}get filter(){return{...on,...u.settings.data.matchmakerFilter}}saveFilter(e){u.settings.data.matchmakerFilter=e,window.chrome.webview.postMessage(`set-config-json matchmakerFilter ${JSON.stringify(e)}`)}cancelled(e){return e!==this.activeRun}abort(){this.activeRun=0,window.playSelect?.(),this.dismiss()}dismiss(){document.removeEventListener("keydown",this.cancelKey,!0),this.popup.remove()}showPopup(){if(!document.querySelector("#kuteMatchmakerCSS")){let e=document.createElement("style");e.id="kuteMatchmakerCSS",e.textContent=Ff,document.head.append(e)}this.status.textContent="Connecting...",this.status.classList.remove("mm-fail"),this.feed.replaceChildren(),this.feed.classList.remove("mm-result"),this.counter.textContent="",document.addEventListener("keydown",this.cancelKey,!0),(document.querySelector("#uiBase")??document.body).append(this.popup)}pushEntry(e){for(this.feed.append(e);this.feed.children.length>r1;)this.feed.firstElementChild?.remove()}async animateScan(e,t,o){let n=t.length;if(n===0)return;this.status.textContent="Scanning lobbies...";let r=Math.floor(jf/Yc),i=n>r?n/r:1,a=n>r?Yc:Math.max(i1,Math.min(Yc,jf/n));for(let l=0;l[l.id,l])),a=[t,...this.candidates.filter(l=>l!==t)].find(l=>r.get(l.id)?.passes);a?this.join(a.id):this.openServerBrowser(o)}async start(){if(this.activeRun!==0)return;let e=++this.runCounter;this.activeRun=e;try{await this.search(e)}finally{this.activeRun===e&&(this.activeRun=0)}}async search(e){let{filter:t}=this;t.animation&&this.showPopup();let o,n;try{let[h,f]=await Promise.all([Uf(),Te("ping-regions","regionPings",Vf)]);o=Gf(h,t),n=f??{}}catch(h){if(console.error("[kute] matchmaker: no lobby list",h),this.cancelled(e)||!t.animation)return;this.status.textContent="Failed to fetch lobbies",this.status.classList.add("mm-fail"),await sn(2e3),this.cancelled(e)||this.dismiss();return}if(this.cancelled(e))return;let r=h=>n[h.server]??999,i=new Map(t.preferredMaps.map((h,f)=>[Wt(h),f])),a=new Map(t.preferredModes.map((h,f)=>[h,f])),l=h=>(a.get(h.mode)??a.size)*(i.size+1)+(i.get(Wt(h.map))??i.size),c=h=>h.limit-h.players<=1?1:0,d=o.filter(h=>h.passes);d.sort((h,f)=>{let m=l(h)-l(f),g=c(h)-c(f),b=r(h)-r(f),v=f.players-h.players;return t.sortByPlayers?m||g||v||b:m||g||b||v}),this.candidates=d;let p;if(d.length>0){let h=d[0],f=d.filter(m=>l(m)===l(h)&&c(m)===c(h)&&Math.abs(r(m)-r(h))<=20&&h.players-m.players<=2);p=f[Math.floor(Math.random()*f.length)]}if(t.animation&&await this.animateScan(e,o,p),!this.cancelled(e)){if(!p){if(t.animation){this.status.textContent="No Lobby Found",this.status.classList.add("mm-fail"),this.feed.classList.add("mm-result");let h=document.createElement("div");if(h.className="mm-entry mm-none",h.textContent="No matching lobbies",this.feed.replaceChildren(h),this.counter.textContent=t.serverBrowser?"Opening server browser...":"",await sn(c1),this.cancelled(e))return}this.openServerBrowser(t);return}if(t.animation){this.status.textContent="Lobby Found!",this.feed.classList.add("mm-result"),this.feed.replaceChildren(Xc(p,"mm-pass mm-found"));let h=n[p.server]===void 0?"?":String(n[p.server]);if(this.counter.textContent=`${p.mode} \xB7 ${Kf[p.region]??p.region} \xB7 ${h}ms`,await sn(l1),this.cancelled(e))return}await this.verifyAndJoin(e,p,t)}}async showFilters(){let e=await Promise.resolve().then(()=>ue(qf(),1)),{filter:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=(g,b,v)=>{let k=i(g);k.replaceChildren();for(let E of b){let L=document.createElement("div");if(L.className=`mmChip${v.includes(E.value)?" on":""}`,E.icon){let x=document.createElement("img");x.src=E.icon,x.alt="",x.loading="lazy",x.onerror=()=>x.remove(),L.append(x)}L.append(E.label),L.onclick=()=>{let x=v.indexOf(E.value);x===-1?v.push(E.value):v.splice(x,1),L.classList.toggle("on",x===-1)},k.append(L)}},l=(g,b,v)=>{if(!g)return;let k=document.createElement("img");k.src=g,k.alt="",v?k.loading="lazy":k.draggable=!1,k.onerror=()=>k.remove(),b.append(k)},c=g=>{let{preferred:b}=g,v=i(g.boxId);v.hidden=b.length===0;let k=v.querySelector(".mmGrid");k.replaceChildren();let E=()=>k.querySelectorAll(".mmNum").forEach((L,x)=>L.textContent=String(x+1));for(let L of b){let x=document.createElement("div");x.className="mmChip on mmRank",x.append(nn("mmNum","")),l(g.icon(L),x,!1),x.append(g.label(L));let $=null;x.onpointerdown=I=>{x.setPointerCapture(I.pointerId),$={x:I.clientX,y:I.clientY,moved:!1}},x.onpointermove=I=>{if(!$||!$.moved&&Math.hypot(I.clientX-$.x,I.clientY-$.y)<5)return;$.moved=!0,x.classList.add("dragging");let _=[...k.children],H=_.findIndex(J=>{let B=J.getBoundingClientRect();return I.clientX>=B.left&&I.clientX<=B.right&&I.clientY>=B.top&&I.clientY<=B.bottom}),G=_.indexOf(x);H===-1||H===G||(b.splice(H,0,...b.splice(G,1)),x.remove(),k.insertBefore(x,k.children[H]??null),E())},x.onpointerup=()=>{x.classList.remove("dragging"),$&&!$.moved&&(b.unshift(...b.splice(b.indexOf(L),1)),window.SOUND?.play("tick_0",.1),c(g)),$=null},x.onpointercancel=x.onpointerup,k.append(x)}E()},d=g=>{let{picked:b,preferred:v}=g,k=i(g.gridId);k.replaceChildren();for(let E of g.values){let L=v.includes(E),x=document.createElement("div");x.className=`mmChip${b.includes(E)?" on":""}${L?" preferred":""}`,l(g.icon(E),x,!0),x.append(g.label(E));let $=nn("mmStar","\u2605");$.title=L?"Preferred, click to remove":`Prefer this ${g.noun}`,$.onclick=I=>{I.stopPropagation(),L?v.splice(v.indexOf(E),1):(v.push(E),b.length>0&&!b.includes(E)&&b.push(E)),d(g)},x.append($),x.onclick=()=>{let I=b.indexOf(E);I!==-1?(b.splice(I,1),L&&v.splice(v.indexOf(E),1)):b.length===0?b.push(...new Set([...v,E])):b.push(E),d(g)},k.append(x)}c(g)},p=()=>{a("mmRegions",Object.entries(Kf).map(([g,b])=>({value:g,label:b})),t.regions),d({gridId:"mmModes",boxId:"mmModeRanks",noun:"mode",values:Zy,picked:t.modes,preferred:t.preferredModes,label:g=>g,icon:()=>null}),d({gridId:"mmMaps",boxId:"mmMapRanks",noun:"map",values:Wf,picked:t.maps,preferred:t.preferredMaps,label:g=>Qy[g]??g,icon:Yf}),i("mmMinPlayers").value=String(t.minPlayers),i("mmMaxPlayers").value=String(t.maxPlayers),i("mmMinTime").value=String(t.minTime),i("mmSortByPlayers").checked=t.sortByPlayers,i("mmServerBrowser").checked=t.serverBrowser,i("mmAnimation").checked=t.animation,i("mmSearchAfterMatch").checked=t.searchAfterMatch};t.regions=[...t.regions],t.modes=[...t.modes],t.maps=[...t.maps],t.preferredMaps=[...t.preferredMaps],t.preferredModes=[...t.preferredModes],p();let h=(g,b,v,k)=>{let E=Number.parseInt(i(g).value,10);return Number.isNaN(E)?k:Math.min(v,Math.max(b,E))},f=new AbortController,m=()=>{f.abort(),o.remove(),this.saveFilter({...t,minPlayers:h("mmMinPlayers",0,7,on.minPlayers),maxPlayers:h("mmMaxPlayers",0,7,on.maxPlayers),minTime:h("mmMinTime",0,480,on.minTime),sortByPlayers:i("mmSortByPlayers").checked,serverBrowser:i("mmServerBrowser").checked,animation:i("mmAnimation").checked,searchAfterMatch:i("mmSearchAfterMatch").checked})};i("mmDone").onclick=m,i("mmReset").onclick=()=>{Object.assign(t,on,{regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[]}),p()},o.addEventListener("mousedown",g=>{g.target===o&&m()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),m())},{signal:f.signal,capture:!0}),document.body.append(o)}},u1=new Jc});var ed=we((DE,p1)=>{p1.exports=`#uiBase.onMenu #spectateUI{display:block!important}#uiBase.onCompMenu.onMenu #specTimer,#uiBase.onMenu #specGMessage,#uiBase.onMenu #spec1,#uiBase.onMenu #specGameInfo,#uiBase.onMenu #spec0,#uiBase.onMenu #specControlHolder,#uiBase.onMenu #specNames{display:none!important}#uiBase.onMenu #spectateUI>#spectateHUD{box-sizing:border-box;display:flex!important;justify-content:center;height:.5rem;white-space:nowrap;width:max-content;position:fixed;top:calc(50% + 140px)}#uiBase.onMenu #spectateHUD #specGMessage{top:0}#uiBase.onMenu #spectateUI>#spectateHUD{z-index:1;transform:unset}#uiBase.onMenu .spectateInfo{position:fixed;top:calc(40% - 105px);left:50%;transform:translate(-50%,-50%)}#uiBase.onMenu #spectateUI div .spectateInfo #specTimer{background-color:#0000;padding:0 25px;font-size:42px;border-radius:.5em}#uiBase.onMenu #specKPDContr{display:none}#uiBase.onMenu #spectateUI div#specStats{position:absolute;top:calc(50% + 13em);left:50%;transform:translate(-50%);z-index:1}#uiBase.onMenu #spectateUI div#specStats:before{content:"Spectating";position:absolute;bottom:100%;left:50%;transform:translate(-50%);font-size:1.2em;padding-bottom:.5em} +`});var od={};A(od,{default:()=>h1});var Jf,Xf,td,h1,sd=w(()=>{"use strict";Jf=ue(ed(),1);D();Xf="kute_menuTimerCSS",td=class{constructor(){u.settings.toggleMenuTimer=e=>this.toggle(e),this.toggle(u.settings.data.menuTimer!==!1)}toggle(e){let t=document.getElementById(Xf);if(!e){t?.remove();return}if(t)return;let o=document.createElement("style");o.id=Xf,o.textContent=Jf.default,document.head.append(o)}},h1=new td});var id={};A(id,{default:()=>y1});function Qf(s){let e=/loadUserMod\(\s*(["`])(.*?)\1\s*,\s*(["`])(.*?)\3/.exec(s);return e?{name:e[2],url:e[4]}:null}function eg(s){try{let e=new URL(s);return e.protocol!=="https:"?null:e.hostname==="krunker.io"||e.hostname.endsWith(".krunker.io")?e.href:e.hostname==="dropbox.com"||e.hostname==="www.dropbox.com"?(e.hostname="dl.dropboxusercontent.com",e.search="",e.href):null}catch{return null}}function v1(s){return`${s.replace(/[\u0000-\u001f<>:"/\\|?*]/g,"").replace(/\s+/g," ").trim().replace(/[ .]+$/,"").slice(0,80)||"mod"}.zip`}async function w1(s){let e=await fetch(s);if(e.status===403||e.status===404)throw new Error("This mod's file is gone, its creator removed it");if(!e.ok)throw new Error(`The mod server answered ${e.status}`);if(Number(e.headers.get("content-length")??0)>Zf)throw new Error("That mod is too large");let t=await e.blob();if(t.size>Zf)throw new Error("That mod is too large");let o=new Uint8Array(await t.slice(0,2).arrayBuffer());if(o[0]!==80||o[1]!==75)throw new Error("That mod is not a zip file");return t}function k1(s,e){let t=document.createElement("a");t.href=URL.createObjectURL(s),t.download=e,t.click(),setTimeout(()=>URL.revokeObjectURL(t.href),6e4)}function tg(s,e,t,o){let n=!1;s.addEventListener("click",r=>{if(r.stopPropagation(),n)return;n=!0,e.style.color=nd.busy,e.textContent="hourglass_top";let i=v1(t);w1(o).then(a=>{k1(a,i),e.style.color=nd.done,e.textContent="download_done",u.showNotification(`Saved ${i} to your Downloads folder`,!1,4)}).catch(a=>{e.style.color=nd.failed,e.textContent="error_outline",u.showNotification(a instanceof TypeError?"Could not download the mod":a.message,!1,4)}).finally(()=>{n=!1})})}function og(s){let e=document.createElement("span");return e.className="material-icons",e.style.cssText=s,e.textContent="download",e}var rn,Zf,m1,f1,g1,b1,nd,rd,y1,ad=w(()=>{"use strict";D();rn="data-kute-mod",Zf=300*1024*1024,m1='[onclick^="downloadPack"]',f1="font-size:70px;color:#fff;",g1="position:absolute;right:30px;bottom:92px;box-sizing:content-box;width:240px;height:37px;padding:10px 6px 6px;border:3px solid #35e0e8;border-radius:6px;background:rgba(0,0,0,0.6);color:#fff;font-size:21px;text-align:center;cursor:pointer;",b1="font-size:32px;color:#fff;vertical-align:top;margin-top:-3px;margin-left:5px;",nd={busy:"#777",done:"#35e0e8",failed:"#ff7a7a"};rd=class{constructor(){this.pending=null,this.observer=new MutationObserver(()=>{this.pending===null&&(this.pending=setTimeout(()=>this.scan(),150))});let e=document.getElementById("menuWindow");e&&(this.observer.observe(e,{childList:!0,subtree:!0}),this.scan())}scan(){this.pending=null;let e=document.getElementById("menuWindow");if(!e)return;let t=[];for(let r of e.querySelectorAll('.mapActionB[onclick^="loadUserMod"]')){let i=r.parentElement;if(!i||i.querySelector(`[${rn}], ${m1}`))continue;let a=Qf(r.getAttribute("onclick")??""),l=a&&eg(a.url);a&&l&&t.push([i,this.listButton(a.name,l)])}let o=document.getElementById("bigMFeatPBtn"),n=o?.parentElement;if(o&&n&&!n.querySelector(`[${rn}]`)){let r=Qf(o.getAttribute("onclick")??""),i=r&&eg(r.url);r&&i&&t.push([n,[this.featuredButton(r.name,i)]])}if(t.length!==0){this.observer.disconnect();for(let[r,i]of t)r.append(...i);this.observer.observe(e,{childList:!0,subtree:!0})}}listButton(e,t){let o=document.createElement("div");o.className="mapActionSep",o.setAttribute(rn,"");let n=document.createElement("div");n.className="mapActionB",n.title="Download",n.setAttribute(rn,"");let r=og(f1);return n.append(r),tg(n,r,e,t),[o,n]}featuredButton(e,t){let o=document.createElement("div");o.setAttribute(rn,""),o.style.cssText=g1;let n=og(b1);return o.append("Download ",n),tg(o,n,e,t),o}},y1=new rd});var dd={};A(dd,{default:()=>A1});function Cr(s,e,t){return Math.min(t,Math.max(e,s))}function ld(s,e){let t=parseFloat(localStorage.getItem("kro_setngss_"+s)??"");return Number.isFinite(t)&&t>0?t:e}function ig(s,e){let t=s.createProgram();for(let[o,n]of[[s.VERTEX_SHADER,C1],[s.FRAGMENT_SHADER,e]]){let r=s.createShader(o);if(!r)return null;s.shaderSource(r,n),s.compileShader(r),s.attachShader(t,r)}return s.linkProgram(t),s.getProgramParameter(t,s.LINK_STATUS)?t:null}var x1,sg,S1,E1,ng,$1,rg,C1,M1,T1,cd,A1,ud=w(()=>{"use strict";D();as();x1="kuteMotionBlur",sg=1e3/60,S1=.4,E1=.002,ng=.2,$1=2,rg=.0024,C1=`#version 300 es void main(){ vec2 p = vec2((gl_VertexID << 1) & 2, gl_VertexID & 2); gl_Position = vec4(p * 2.0 - 1.0, 0.0, 1.0); @@ -1253,9 +1253,9 @@ uniform sampler2D history; out vec4 color; void main(){ color = vec4(pow(texelFetch(history, ivec2(gl_FragCoord.xy), 0).rgb, vec3(1.0 / ${s})), 1.0); -}`;cd=class{constructor(){this.enabled=!1,this.running=!1,this.moveX=0,this.moveY=0,this.scaleX=0,this.scaleY=0,this.weight=0,this.lastFrame=0,this.hasHistory=!1,this.game=null,this.overlay=null,this.gl=null,this.accumulate=null,this.present=null,this.source=null,this.history=null,this.historyBuffer=null,this.historyFormat=0,this.unsupported=!1,this.onMouseMove=e=>{document.pointerLockElement!==null&&(this.moveX+=e.movementX,this.moveY+=e.movementY,this.running||(this.running=!0,this.lastFrame=0,this.readScale(),Cn(this.onFrameEnd)))},this.onPointerLockChange=()=>this.stop(),this.onFrameEnd=e=>this.frame(e),this.onContextLost=()=>this.release(),d.settings.toggleMotionBlur=e=>this.toggle(e),this.toggle(!!d.settings.data.motionBlur)}toggle(e){if(e!==this.enabled){if(this.enabled=e,e){window.addEventListener("mousemove",this.onMouseMove,!0),document.addEventListener("pointerlockchange",this.onPointerLockChange);return}window.removeEventListener("mousemove",this.onMouseMove,!0),document.removeEventListener("pointerlockchange",this.onPointerLockChange),this.stop(),this.unsupported=!1,this.gl?.getExtension("WEBGL_lose_context")?.loseContext(),this.release(),this.game=null}}stop(){this.running&&Cn(null),this.running=!1,this.moveX=0,this.moveY=0,this.weight=0,this.hasHistory=!1,this.overlay&&(this.overlay.style.display="none")}release(){this.overlay?.removeEventListener("webglcontextlost",this.onContextLost),this.overlay?.remove(),this.overlay=null,this.gl=null,this.accumulate=null,this.present=null,this.source=null,this.history=null,this.historyBuffer=null,this.hasHistory=!1}readScale(){let e=$r(ld("fov",100),10,170)*Math.PI/180,t=.5/Math.tan(e/2);this.scaleX=rg*ld("sensitivityX",1)*t,this.scaleY=rg*ld("sensitivityY",1)*t}createContext(){let e=document.createElement("canvas");e.id=x1,e.style.cssText="position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;contain:strict;display:none";let t=e.getContext("webgl2",{alpha:!1,antialias:!1,depth:!1,stencil:!1,preserveDrawingBuffer:!1});if(!t)return!1;let o=!!(t.getExtension("EXT_color_buffer_float")||t.getExtension("EXT_color_buffer_half_float")),n=o?"2.2":"1.0",r=ig(t,M1(n)),i=ig(t,T1(n));if(!r||!i)return!1;t.useProgram(r),t.uniform1i(t.getUniformLocation(r,"source"),0),t.useProgram(i),t.uniform1i(t.getUniformLocation(i,"history"),1);let a=t.createTexture();t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,a),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let l=t.createTexture();t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,l),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let c=t.createFramebuffer();return t.blendFunc(t.CONSTANT_ALPHA,t.ONE_MINUS_CONSTANT_ALPHA),e.addEventListener("webglcontextlost",this.onContextLost),this.overlay=e,this.gl=t,this.accumulate=r,this.present=i,this.source=a,this.history=l,this.historyBuffer=c,this.historyFormat=o?t.RGBA16F:t.RGBA8,!0}attach(){this.game?.isConnected||(this.game=document.querySelector("body > canvas:not([id])"));let{game:e}=this;if(!e)return!1;if(!this.overlay&&(this.unsupported||!this.createContext()))return this.unsupported=!0,!1;let{overlay:t,gl:o}=this;return!t||!o?!1:(t.previousElementSibling!==e&&e.after(t),(t.width!==e.width||t.height!==e.height)&&(t.width=e.width,t.height=e.height,o.viewport(0,0,e.width,e.height),o.activeTexture(o.TEXTURE1),o.texImage2D(o.TEXTURE_2D,0,this.historyFormat,e.width,e.height,0,o.RGBA,this.historyFormat===o.RGBA8?o.UNSIGNED_BYTE:o.HALF_FLOAT,null),o.bindFramebuffer(o.FRAMEBUFFER,this.historyBuffer),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,this.history,0),this.hasHistory=!1),!0)}frame(e){let t=this.lastFrame?$r(e-this.lastFrame,1,100):sg;this.lastFrame=e;let o=Math.hypot(this.moveX*this.scaleX,this.moveY*this.scaleY)*(1e3/t);this.moveX=0,this.moveY=0;let n=$r((o-ng)/($1-ng),0,1),i=$r(Number(d.settings.data.motionBlurStrength)||0,0,100)/100*S1*n*n*(3-2*n);if(this.weight+=(i-this.weight)*(1-Math.exp(-t/(i>this.weight?6:12))),this.weight{lg=`#kuteNukeCounter{position:absolute;left:94%;top:50%;transform:translate(-50%,-50%);z-index:10;display:flex;align-items:center;gap:.3em;font-family:GameFont,monospace;font-size:26px;color:#fff;white-space:nowrap;pointer-events:none;text-shadow:1px 1px 3px rgba(0,0,0,.9)}#uiBase.onMenu #kuteNukeCounter{display:none}#kuteNukeCounter.nukeBg{padding:.2em .5em;border-radius:.25em;background:#00000059}.nukeIcon{color:#ffc147}.nukeGoal{color:#fff9}#kuteNukeCounter.nukeGoalMet .nukeCount{color:#9eeb56}@keyframes kuteNukeGain{0%{opacity:0;transform:scale(.6)}12%{opacity:1;transform:scale(1)}80%{opacity:1}to{opacity:0}}.nukeGain{color:#9eeb56;animation:kuteNukeGain 8s ease forwards} -`});var cg=we((GE,R1)=>{R1.exports='

      Nuke Counter

      Your nuke total, in game. It updates when a match ends
      Where it sits and how big it is belongs to the HUD editor
      Place it
      Done
      '});var md={};A(md,{default:()=>H1});function z1(s,e,t){return Math.min(t,Math.max(e,Number(s)||0))}function pd(s){return s.toLocaleString("en-US")}var P1,I1,N1,_1,dg,B1,hd,H1,fd=w(()=>{"use strict";ag();F();P1={goal:0,background:!0},I1="https://gapi.svc.krunker.io/players/",N1=2e3,_1=3e4,dg=[5e3,2e4],B1=8e3;hd=class{constructor(){this.overlay=null,this.nukes=null,this.nukesFor="",this.noStat=!1,this.fetching=!1,this.lastTry=0,this.endWasUp=!1,this.tick=null,this.commitTimers=[],d.nukeCounter={showOptions:()=>this.showOptions()},d.settings.toggleNukeCounter=e=>this.toggle(e),this.toggle(!!d.settings.data.nukeCounter)}accountName(){try{return window.localStorage.getItem("krunker_username")??""}catch{return""}}get config(){return{...P1,...d.settings.data.nukeCounterConfig}}saveConfig(e){d.settings.data.nukeCounterConfig=e,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(e)}`)}toggle(e){if(!e){this.destroy();return}if(!document.querySelector("#kuteNukeCounterCSS")){let t=document.createElement("style");t.id="kuteNukeCounterCSS",t.textContent=lg,document.head.append(t)}this.inject(),this.nukes===null&&this.refresh(),this.tick??=setInterval(()=>this.onTick(),N1)}destroy(){this.tick!==null&&(clearInterval(this.tick),this.tick=null);for(let e of this.commitTimers)clearTimeout(e);this.commitTimers=[],this.overlay?.remove(),this.overlay=null,document.querySelector("#kuteNukeCounterCSS")?.remove(),this.endWasUp=!1}inject(){if(!this.accountName()||this.overlay?.isConnected)return;this.overlay?.remove();let e=document.createElement("div");e.id="kuteNukeCounter",e.innerHTML='\u2622\u2014',(document.querySelector("#uiBase")??document.body).append(e),this.overlay=e,this.applyConfig(),this.render()}applyConfig(){this.overlay?.classList.toggle("nukeBg",this.config.background)}render(){let{overlay:e}=this;if(!e)return;let{goal:t}=this.config,o=e.querySelector(".nukeCount"),n=e.querySelector(".nukeGoal");o&&(o.textContent=this.nukes===null?"\u2014":pd(this.nukes)),n&&(n.style.display=t>0?"":"none",n.textContent=`/ ${pd(t)}`),e.classList.toggle("nukeGoalMet",t>0&&this.nukes!==null&&this.nukes>=t)}showGain(e){let{overlay:t}=this;if(!t||e<=0)return;t.querySelector(".nukeGain")?.remove();let o=document.createElement("span");o.className="nukeGain",o.textContent=`+${pd(e)}`,t.append(o),setTimeout(()=>o.remove(),B1)}refresh(){let e=this.accountName();!e||this.fetching||(this.fetching=!0,this.lastTry=Date.now(),window.fetch(I1+encodeURIComponent(e),{credentials:"omit",signal:AbortSignal.timeout(1e4)}).then(t=>t.ok?t.json():null).then(t=>{let o=t?.data?.player_stats?.n;if(typeof o=="number"){let n=this.nukes===null||this.nukesFor!==e?0:o-this.nukes;this.nukes=o,this.noStat=!1,this.nukesFor=e,this.render(),this.showGain(n)}else t&&(this.noStat=!0,this.nukesFor=e)}).catch(()=>{}).finally(()=>{this.fetching=!1}))}onTick(){this.inject(),this.accountName()!==this.nukesFor&&(this.nukes!==null||this.noStat)&&(this.nukes=null,this.noStat=!1,this.lastTry=0,this.render()),this.nukes===null&&!this.noStat&&Date.now()-this.lastTry>_1&&this.refresh();let t=document.querySelector("#endUI"),o=!!t&&t.style.display!=="none";o&&!this.endWasUp&&this.commitTimers.length===0&&(this.commitTimers=dg.map((n,r)=>setTimeout(()=>{r===dg.length-1&&(this.commitTimers=[]),this.refresh()},n))),this.endWasUp=o}async showOptions(){let e=await Promise.resolve().then(()=>ue(cg(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=u=>r.querySelector(`#${u}`),a=()=>{d.settings.data.nukeCounterConfig=t,this.applyConfig(),this.render()};i("nkGoalInput").value=String(t.goal),i("nkBackground").checked=t.background,i("nkGoalInput").oninput=u=>{let h=Number.parseInt(u.target.value,10);t.goal=Number.isNaN(h)?0:z1(h,0,1e6),a()},i("nkBackground").onchange=u=>{t.background=u.target.checked,a()};let l=new AbortController,c=()=>{l.abort(),o.remove(),this.saveConfig(t)};i("nkDone").onclick=c,i("nkPlace").onclick=()=>{c(),d.hudEditor?.edit()},o.addEventListener("mousedown",u=>{u.target===o&&c()}),document.addEventListener("keydown",u=>{u.key==="Escape"&&(u.stopPropagation(),c())},{signal:l.signal,capture:!0}),document.body.append(o)}},H1=new hd});var ug=we((YE,O1)=>{O1.exports=`#kute-rank-list-btn{position:absolute;top:15px;right:30px;background-color:#5ce05a;color:#000;font-family:GameFont,sans-serif;font-size:14px;font-weight:700;padding:5px 15px;border-radius:4px;letter-spacing:1px;cursor:pointer;transition:transform .2s,background-color .2s;display:flex;align-items:center;z-index:10;text-transform:uppercase;box-shadow:0 2px 4px #0006}#kute-rank-list-btn:hover{transform:scale(1.05);background-color:#6efc6c;color:#000}#kute-rank-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000d9;z-index:99999;display:flex;justify-content:center;align-items:center;backdrop-filter:blur(4px)}.rank-popup-content{background:#151515;border:2px solid #333;border-top:4px solid #5ce05a;width:700px;max-width:90%;max-height:85vh;border-radius:8px;box-shadow:0 10px 40px #000c;display:flex;flex-direction:column;overflow:hidden;animation:popIn .3s cubic-bezier(.18,.89,.32,1.28)}@keyframes popIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.rank-popup-header{padding:20px;background:#ffffff08;border-bottom:2px solid rgba(255,255,255,.05);display:flex;justify-content:space-between;align-items:center}.rank-popup-header h2{margin:0;color:#fff;font-family:GameFont,sans-serif;font-size:24px;letter-spacing:1px}.rank-popup-close{font-size:24px;color:#aaa;cursor:pointer;font-weight:700;line-height:1}.rank-popup-close:hover{color:#eb5656}.rank-grid-container{padding:20px;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.rank-grid-item{background:#ffffff0d;padding:10px;border-radius:6px;display:flex;align-items:center;gap:12px;border:1px solid transparent}.rank-grid-item:hover{background:#ffffff1a;border-color:#fff3}.rank-grid-item img{height:45px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5))}.r-details{display:flex;flex-direction:column}.r-name{font-family:GameFont,sans-serif;font-size:16px;font-weight:700;margin-bottom:2px;text-shadow:1px 1px 0 #000}.r-elo{font-family:monospace;color:#888;font-size:13px;background:#0000004d;padding:2px 6px;border-radius:4px;display:inline-block;width:max-content}.rank-grid-container::-webkit-scrollbar{width:8px}.rank-grid-container::-webkit-scrollbar-thumb{background:#444;border-radius:4px}.rank-grid-container::-webkit-scrollbar-thumb:hover{background:#5ce05a}#kute-elo-tracker{width:100%;margin-top:5px;margin-bottom:10px;background:#0006;padding:8px 12px;border-radius:6px;border:1px solid rgba(255,255,255,.08);box-sizing:border-box}.elo-info-row{display:flex;align-items:center;gap:15px;justify-content:space-between}.elo-rank-img{height:28px;width:auto;display:block;margin-bottom:2px;filter:drop-shadow(0px 0px 3px rgba(0,0,0,.5))}.rank-current-container,.rank-next-container{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#bbb;font-family:GameFont,sans-serif;font-size:10px;line-height:1;min-width:50px}.rank-next-container span,.rank-current-container span{color:#fff;text-transform:uppercase;font-weight:700;letter-spacing:.5px}#kute-rank-list-btn span{font-size:16px!important;vertical-align:middle;margin-right:4px}.elo-progress-bar-bg{flex-grow:1;height:22px;background:#151515;border-radius:4px;position:relative;overflow:hidden;box-shadow:inset 0 2px 5px #00000080;border:1px solid #333}.elo-progress-bar-fill{height:100%;background-color:#fb8c00;background-image:linear-gradient(180deg,#fff3,#fff0);transition:width .8s cubic-bezier(.22,1,.36,1);box-shadow:0 0 10px #fb8c0066;position:relative}.elo-progress-bar-fill:after{content:"";position:absolute;right:0;top:0;bottom:0;width:1px;background:#fff;opacity:.7;box-shadow:0 0 5px #fff}.rank-name{margin-bottom:2px!important}.elo-progress-text{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;align-items:center;justify-content:center;color:#fff;text-shadow:1px 1px 2px #000,0 0 4px #000;font-weight:700;font-family:GameFont,sans-serif;font-size:14px;z-index:5;letter-spacing:1px}.rank-and-stats{justify-content:flex-start;gap:5px}.season-banner.svelte-s4rbwd{right:150px!important} -`});var bd={};A(bd,{default:()=>F1});var gd,F1,vd=w(()=>{"use strict";Ae();gd=class{constructor(){this.ranks=[{rank:"Unranked",elo:null,color:"#FFFFFF",image:"rank_unranked.svg"},{rank:"Bronze 1",elo:0,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Bronze 2",elo:200,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Bronze 3",elo:400,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Silver 1",elo:700,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Silver 2",elo:900,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Silver 3",elo:1100,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Gold 1",elo:1300,color:"#FFD700",image:"rank_gold.svg"},{rank:"Gold 2",elo:1600,color:"#FFD700",image:"rank_gold.svg"},{rank:"Gold 3",elo:2e3,color:"#FFD700",image:"rank_gold.svg"},{rank:"Platinum",elo:2300,color:"#4B69FF",image:"rank_platinum.svg"},{rank:"Diamond",elo:3e3,color:"#4B69FF",image:"rank_diamond.svg"},{rank:"Master",elo:3300,color:"#EE7032",image:"rank_master.svg"},{rank:"Kracked",elo:4700,color:"#FF0000",image:"rank_kracked.svg"}],this.observer=new MutationObserver(()=>this.checkForMenu());let e=window.openRankedMenu;window.openRankedMenu=()=>{e(),this.observer.observe(U(".rankedMenuModal"),{childList:!0,subtree:!0});let t=setInterval(()=>{document.querySelector(".rankedMenuModal")||(clearInterval(t),this.observer.disconnect())},5e3)},Promise.resolve().then(()=>ue(ug(),1)).then(t=>{let o=document.createElement("style");o.textContent=t.default,document.head.append(o)})}checkForMenu(){let e=document.querySelector(".rank-card"),t=document.querySelector(".rank-and-stats");e&&t&&(t.querySelector("#kute-elo-tracker")||this.injectBar(t),e.querySelector("#kute-rank-list-btn")||this.injectRankListButton(e))}injectRankListButton(e){let t=document.createElement("div");t.id="kute-rank-list-btn",t.className="season-banner",t.innerHTML='list Ranks',t.onclick=()=>this.openPopup(),window.getComputedStyle(e).position==="static"&&(e.style.position="relative"),e.appendChild(t)}openPopup(){if(document.getElementById("kute-rank-overlay"))return;let e="";for(let o of this.ranks)e+=` +}`;cd=class{constructor(){this.enabled=!1,this.running=!1,this.moveX=0,this.moveY=0,this.scaleX=0,this.scaleY=0,this.weight=0,this.lastFrame=0,this.hasHistory=!1,this.game=null,this.overlay=null,this.gl=null,this.accumulate=null,this.present=null,this.source=null,this.history=null,this.historyBuffer=null,this.historyFormat=0,this.unsupported=!1,this.onMouseMove=e=>{document.pointerLockElement!==null&&(this.moveX+=e.movementX,this.moveY+=e.movementY,this.running||(this.running=!0,this.lastFrame=0,this.readScale(),Mn(this.onFrameEnd)))},this.onPointerLockChange=()=>this.stop(),this.onFrameEnd=e=>this.frame(e),this.onContextLost=()=>this.release(),u.settings.toggleMotionBlur=e=>this.toggle(e),this.toggle(!!u.settings.data.motionBlur)}toggle(e){if(e!==this.enabled){if(this.enabled=e,e){window.addEventListener("mousemove",this.onMouseMove,!0),document.addEventListener("pointerlockchange",this.onPointerLockChange);return}window.removeEventListener("mousemove",this.onMouseMove,!0),document.removeEventListener("pointerlockchange",this.onPointerLockChange),this.stop(),this.unsupported=!1,this.gl?.getExtension("WEBGL_lose_context")?.loseContext(),this.release(),this.game=null}}stop(){this.running&&Mn(null),this.running=!1,this.moveX=0,this.moveY=0,this.weight=0,this.hasHistory=!1,this.overlay&&(this.overlay.style.display="none")}release(){this.overlay?.removeEventListener("webglcontextlost",this.onContextLost),this.overlay?.remove(),this.overlay=null,this.gl=null,this.accumulate=null,this.present=null,this.source=null,this.history=null,this.historyBuffer=null,this.hasHistory=!1}readScale(){let e=Cr(ld("fov",100),10,170)*Math.PI/180,t=.5/Math.tan(e/2);this.scaleX=rg*ld("sensitivityX",1)*t,this.scaleY=rg*ld("sensitivityY",1)*t}createContext(){let e=document.createElement("canvas");e.id=x1,e.style.cssText="position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;contain:strict;display:none";let t=e.getContext("webgl2",{alpha:!1,antialias:!1,depth:!1,stencil:!1,preserveDrawingBuffer:!1});if(!t)return!1;let o=!!(t.getExtension("EXT_color_buffer_float")||t.getExtension("EXT_color_buffer_half_float")),n=o?"2.2":"1.0",r=ig(t,M1(n)),i=ig(t,T1(n));if(!r||!i)return!1;t.useProgram(r),t.uniform1i(t.getUniformLocation(r,"source"),0),t.useProgram(i),t.uniform1i(t.getUniformLocation(i,"history"),1);let a=t.createTexture();t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,a),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let l=t.createTexture();t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,l),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let c=t.createFramebuffer();return t.blendFunc(t.CONSTANT_ALPHA,t.ONE_MINUS_CONSTANT_ALPHA),e.addEventListener("webglcontextlost",this.onContextLost),this.overlay=e,this.gl=t,this.accumulate=r,this.present=i,this.source=a,this.history=l,this.historyBuffer=c,this.historyFormat=o?t.RGBA16F:t.RGBA8,!0}attach(){this.game?.isConnected||(this.game=document.querySelector("body > canvas:not([id])"));let{game:e}=this;if(!e)return!1;if(!this.overlay&&(this.unsupported||!this.createContext()))return this.unsupported=!0,!1;let{overlay:t,gl:o}=this;return!t||!o?!1:(t.previousElementSibling!==e&&e.after(t),(t.width!==e.width||t.height!==e.height)&&(t.width=e.width,t.height=e.height,o.viewport(0,0,e.width,e.height),o.activeTexture(o.TEXTURE1),o.texImage2D(o.TEXTURE_2D,0,this.historyFormat,e.width,e.height,0,o.RGBA,this.historyFormat===o.RGBA8?o.UNSIGNED_BYTE:o.HALF_FLOAT,null),o.bindFramebuffer(o.FRAMEBUFFER,this.historyBuffer),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,this.history,0),this.hasHistory=!1),!0)}frame(e){let t=this.lastFrame?Cr(e-this.lastFrame,1,100):sg;this.lastFrame=e;let o=Math.hypot(this.moveX*this.scaleX,this.moveY*this.scaleY)*(1e3/t);this.moveX=0,this.moveY=0;let n=Cr((o-ng)/($1-ng),0,1),i=Cr(Number(u.settings.data.motionBlurStrength)||0,0,100)/100*S1*n*n*(3-2*n);if(this.weight+=(i-this.weight)*(1-Math.exp(-t/(i>this.weight?6:12))),this.weight{lg=`#kuteNukeCounter{position:absolute;left:94%;top:50%;transform:translate(-50%,-50%);z-index:10;display:flex;align-items:center;gap:.3em;font-family:GameFont,monospace;font-size:26px;color:#fff;white-space:nowrap;pointer-events:none;text-shadow:1px 1px 3px rgba(0,0,0,.9)}#uiBase.onMenu #kuteNukeCounter{display:none}#kuteNukeCounter.nukeBg{padding:.2em .5em;border-radius:.25em;background:#00000059}.nukeIcon{color:#ffc147}.nukeGoal{color:#fff9}#kuteNukeCounter.nukeGoalMet .nukeCount{color:#9eeb56}@keyframes kuteNukeGain{0%{opacity:0;transform:scale(.6)}12%{opacity:1;transform:scale(1)}80%{opacity:1}to{opacity:0}}.nukeGain{color:#9eeb56;animation:kuteNukeGain 8s ease forwards} +`});var cg=we((GE,R1)=>{R1.exports='

      Nuke Counter

      Your nuke total, in game. It updates when a match ends
      Where it sits and how big it is belongs to the HUD editor
      Place it
      Done
      '});var md={};A(md,{default:()=>H1});function z1(s,e,t){return Math.min(t,Math.max(e,Number(s)||0))}function pd(s){return s.toLocaleString("en-US")}var P1,I1,N1,_1,dg,B1,hd,H1,fd=w(()=>{"use strict";ag();D();P1={goal:0,background:!0},I1="https://gapi.svc.krunker.io/players/",N1=2e3,_1=3e4,dg=[5e3,2e4],B1=8e3;hd=class{constructor(){this.overlay=null,this.nukes=null,this.nukesFor="",this.noStat=!1,this.fetching=!1,this.lastTry=0,this.endWasUp=!1,this.tick=null,this.commitTimers=[],u.nukeCounter={showOptions:()=>this.showOptions()},u.settings.toggleNukeCounter=e=>this.toggle(e),this.toggle(!!u.settings.data.nukeCounter)}accountName(){try{return window.localStorage.getItem("krunker_username")??""}catch{return""}}get config(){return{...P1,...u.settings.data.nukeCounterConfig}}saveConfig(e){u.settings.data.nukeCounterConfig=e,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(e)}`)}toggle(e){if(!e){this.destroy();return}if(!document.querySelector("#kuteNukeCounterCSS")){let t=document.createElement("style");t.id="kuteNukeCounterCSS",t.textContent=lg,document.head.append(t)}this.inject(),this.nukes===null&&this.refresh(),this.tick??=setInterval(()=>this.onTick(),N1)}destroy(){this.tick!==null&&(clearInterval(this.tick),this.tick=null);for(let e of this.commitTimers)clearTimeout(e);this.commitTimers=[],this.overlay?.remove(),this.overlay=null,document.querySelector("#kuteNukeCounterCSS")?.remove(),this.endWasUp=!1}inject(){if(!this.accountName()||this.overlay?.isConnected)return;this.overlay?.remove();let e=document.createElement("div");e.id="kuteNukeCounter",e.innerHTML='\u2622\u2014',(document.querySelector("#uiBase")??document.body).append(e),this.overlay=e,this.applyConfig(),this.render()}applyConfig(){this.overlay?.classList.toggle("nukeBg",this.config.background)}render(){let{overlay:e}=this;if(!e)return;let{goal:t}=this.config,o=e.querySelector(".nukeCount"),n=e.querySelector(".nukeGoal");o&&(o.textContent=this.nukes===null?"\u2014":pd(this.nukes)),n&&(n.style.display=t>0?"":"none",n.textContent=`/ ${pd(t)}`),e.classList.toggle("nukeGoalMet",t>0&&this.nukes!==null&&this.nukes>=t)}showGain(e){let{overlay:t}=this;if(!t||e<=0)return;t.querySelector(".nukeGain")?.remove();let o=document.createElement("span");o.className="nukeGain",o.textContent=`+${pd(e)}`,t.append(o),setTimeout(()=>o.remove(),B1)}refresh(){let e=this.accountName();!e||this.fetching||(this.fetching=!0,this.lastTry=Date.now(),window.fetch(I1+encodeURIComponent(e),{credentials:"omit",signal:AbortSignal.timeout(1e4)}).then(t=>t.ok?t.json():null).then(t=>{let o=t?.data?.player_stats?.n;if(typeof o=="number"){let n=this.nukes===null||this.nukesFor!==e?0:o-this.nukes;this.nukes=o,this.noStat=!1,this.nukesFor=e,this.render(),this.showGain(n)}else t&&(this.noStat=!0,this.nukesFor=e)}).catch(()=>{}).finally(()=>{this.fetching=!1}))}onTick(){this.inject(),this.accountName()!==this.nukesFor&&(this.nukes!==null||this.noStat)&&(this.nukes=null,this.noStat=!1,this.lastTry=0,this.render()),this.nukes===null&&!this.noStat&&Date.now()-this.lastTry>_1&&this.refresh();let t=document.querySelector("#endUI"),o=!!t&&t.style.display!=="none";o&&!this.endWasUp&&this.commitTimers.length===0&&(this.commitTimers=dg.map((n,r)=>setTimeout(()=>{r===dg.length-1&&(this.commitTimers=[]),this.refresh()},n))),this.endWasUp=o}async showOptions(){let e=await Promise.resolve().then(()=>ue(cg(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=d=>r.querySelector(`#${d}`),a=()=>{u.settings.data.nukeCounterConfig=t,this.applyConfig(),this.render()};i("nkGoalInput").value=String(t.goal),i("nkBackground").checked=t.background,i("nkGoalInput").oninput=d=>{let p=Number.parseInt(d.target.value,10);t.goal=Number.isNaN(p)?0:z1(p,0,1e6),a()},i("nkBackground").onchange=d=>{t.background=d.target.checked,a()};let l=new AbortController,c=()=>{l.abort(),o.remove(),this.saveConfig(t)};i("nkDone").onclick=c,i("nkPlace").onclick=()=>{c(),u.hudEditor?.edit()},o.addEventListener("mousedown",d=>{d.target===o&&c()}),document.addEventListener("keydown",d=>{d.key==="Escape"&&(d.stopPropagation(),c())},{signal:l.signal,capture:!0}),document.body.append(o)}},H1=new hd});var ug=we((YE,O1)=>{O1.exports=`#kute-rank-list-btn{position:absolute;top:15px;right:30px;background-color:#5ce05a;color:#000;font-family:GameFont,sans-serif;font-size:14px;font-weight:700;padding:5px 15px;border-radius:4px;letter-spacing:1px;cursor:pointer;transition:transform .2s,background-color .2s;display:flex;align-items:center;z-index:10;text-transform:uppercase;box-shadow:0 2px 4px #0006}#kute-rank-list-btn:hover{transform:scale(1.05);background-color:#6efc6c;color:#000}#kute-rank-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000d9;z-index:99999;display:flex;justify-content:center;align-items:center;backdrop-filter:blur(4px)}.rank-popup-content{background:#151515;border:2px solid #333;border-top:4px solid #5ce05a;width:700px;max-width:90%;max-height:85vh;border-radius:8px;box-shadow:0 10px 40px #000c;display:flex;flex-direction:column;overflow:hidden;animation:popIn .3s cubic-bezier(.18,.89,.32,1.28)}@keyframes popIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.rank-popup-header{padding:20px;background:#ffffff08;border-bottom:2px solid rgba(255,255,255,.05);display:flex;justify-content:space-between;align-items:center}.rank-popup-header h2{margin:0;color:#fff;font-family:GameFont,sans-serif;font-size:24px;letter-spacing:1px}.rank-popup-close{font-size:24px;color:#aaa;cursor:pointer;font-weight:700;line-height:1}.rank-popup-close:hover{color:#eb5656}.rank-grid-container{padding:20px;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.rank-grid-item{background:#ffffff0d;padding:10px;border-radius:6px;display:flex;align-items:center;gap:12px;border:1px solid transparent}.rank-grid-item:hover{background:#ffffff1a;border-color:#fff3}.rank-grid-item img{height:45px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5))}.r-details{display:flex;flex-direction:column}.r-name{font-family:GameFont,sans-serif;font-size:16px;font-weight:700;margin-bottom:2px;text-shadow:1px 1px 0 #000}.r-elo{font-family:monospace;color:#888;font-size:13px;background:#0000004d;padding:2px 6px;border-radius:4px;display:inline-block;width:max-content}.rank-grid-container::-webkit-scrollbar{width:8px}.rank-grid-container::-webkit-scrollbar-thumb{background:#444;border-radius:4px}.rank-grid-container::-webkit-scrollbar-thumb:hover{background:#5ce05a}#kute-elo-tracker{width:100%;margin-top:5px;margin-bottom:10px;background:#0006;padding:8px 12px;border-radius:6px;border:1px solid rgba(255,255,255,.08);box-sizing:border-box}.elo-info-row{display:flex;align-items:center;gap:15px;justify-content:space-between}.elo-rank-img{height:28px;width:auto;display:block;margin-bottom:2px;filter:drop-shadow(0px 0px 3px rgba(0,0,0,.5))}.rank-current-container,.rank-next-container{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#bbb;font-family:GameFont,sans-serif;font-size:10px;line-height:1;min-width:50px}.rank-next-container span,.rank-current-container span{color:#fff;text-transform:uppercase;font-weight:700;letter-spacing:.5px}#kute-rank-list-btn span{font-size:16px!important;vertical-align:middle;margin-right:4px}.elo-progress-bar-bg{flex-grow:1;height:22px;background:#151515;border-radius:4px;position:relative;overflow:hidden;box-shadow:inset 0 2px 5px #00000080;border:1px solid #333}.elo-progress-bar-fill{height:100%;background-color:#fb8c00;background-image:linear-gradient(180deg,#fff3,#fff0);transition:width .8s cubic-bezier(.22,1,.36,1);box-shadow:0 0 10px #fb8c0066;position:relative}.elo-progress-bar-fill:after{content:"";position:absolute;right:0;top:0;bottom:0;width:1px;background:#fff;opacity:.7;box-shadow:0 0 5px #fff}.rank-name{margin-bottom:2px!important}.elo-progress-text{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;align-items:center;justify-content:center;color:#fff;text-shadow:1px 1px 2px #000,0 0 4px #000;font-weight:700;font-family:GameFont,sans-serif;font-size:14px;z-index:5;letter-spacing:1px}.rank-and-stats{justify-content:flex-start;gap:5px}.season-banner.svelte-s4rbwd{right:150px!important} +`});var bd={};A(bd,{default:()=>D1});var gd,D1,vd=w(()=>{"use strict";Ae();gd=class{constructor(){this.ranks=[{rank:"Unranked",elo:null,color:"#FFFFFF",image:"rank_unranked.svg"},{rank:"Bronze 1",elo:0,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Bronze 2",elo:200,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Bronze 3",elo:400,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Silver 1",elo:700,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Silver 2",elo:900,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Silver 3",elo:1100,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Gold 1",elo:1300,color:"#FFD700",image:"rank_gold.svg"},{rank:"Gold 2",elo:1600,color:"#FFD700",image:"rank_gold.svg"},{rank:"Gold 3",elo:2e3,color:"#FFD700",image:"rank_gold.svg"},{rank:"Platinum",elo:2300,color:"#4B69FF",image:"rank_platinum.svg"},{rank:"Diamond",elo:3e3,color:"#4B69FF",image:"rank_diamond.svg"},{rank:"Master",elo:3300,color:"#EE7032",image:"rank_master.svg"},{rank:"Kracked",elo:4700,color:"#FF0000",image:"rank_kracked.svg"}],this.observer=new MutationObserver(()=>this.checkForMenu());let e=window.openRankedMenu;window.openRankedMenu=()=>{e(),this.observer.observe(U(".rankedMenuModal"),{childList:!0,subtree:!0});let t=setInterval(()=>{document.querySelector(".rankedMenuModal")||(clearInterval(t),this.observer.disconnect())},5e3)},Promise.resolve().then(()=>ue(ug(),1)).then(t=>{let o=document.createElement("style");o.textContent=t.default,document.head.append(o)})}checkForMenu(){let e=document.querySelector(".rank-card"),t=document.querySelector(".rank-and-stats");e&&t&&(t.querySelector("#kute-elo-tracker")||this.injectBar(t),e.querySelector("#kute-rank-list-btn")||this.injectRankListButton(e))}injectRankListButton(e){let t=document.createElement("div");t.id="kute-rank-list-btn",t.className="season-banner",t.innerHTML='list Ranks',t.onclick=()=>this.openPopup(),window.getComputedStyle(e).position==="static"&&(e.style.position="relative"),e.appendChild(t)}openPopup(){if(document.getElementById("kute-rank-overlay"))return;let e="";for(let o of this.ranks)e+=`
      @@ -1288,25 +1288,25 @@ void main(){
      ${i}
      - `;let l=e.querySelector(".quick-stats");l?e.insertBefore(r,l):e.append(r)}},F1=new gd});var kd={};A(kd,{default:()=>K1});var D1,q1,wd,K1,yd=w(()=>{"use strict";F();D1=".ranked-matchmaking-status",q1="Match found!",wd=class{constructor(){this.found=!1,this.status=null,this.observer=new MutationObserver(()=>this.check()),d.settings.toggleRankedAlert=e=>this.toggle(e),this.toggle(!0)}toggle(e){this.observer.disconnect(),e&&(this.status=document.querySelector(D1),this.status&&(this.observer.observe(this.status,{attributes:!0,attributeFilter:["class"],childList:!0,characterData:!0,subtree:!0}),this.found=this.shown()))}shown(){return!!this.status?.classList.contains("show")&&this.status?.textContent===q1}check(){let e=this.shown();e&&!this.found&&window.chrome.webview.postMessage("bring-to-front"),this.found=e}},K1=new wd});var Sd={};A(Sd,{default:()=>j1});var xd,j1,Ed=w(()=>{"use strict";F();Ae();xd=class{constructor(){this.ingamePing=null,this.menuPing=null,this.interval=null,this.listener=null,d.settings.toggleRealPing=e=>this.toggle(e),this.toggle(!0)}applyPingDisplay(e){e&&Object.defineProperty(e,"textContent",{set:()=>{},configurable:!0})}async toggle(e){let[t,o]=await Promise.all([$e("#pingText"),$e("#menuPingText")]);this.ingamePing=t,this.menuPing=o,e?(this.applyPingDisplay(t),this.applyPingDisplay(o),this.interval=setInterval(()=>{window.chrome.webview.postMessage("ping")},3e3),this.listener=n=>{let r=n.data?.pingInfo;r&&(t.innerText=r,o.innerText=r)},window.chrome.webview.addEventListener("message",this.listener)):(this.interval!==null&&clearInterval(this.interval),this.listener&&window.chrome.webview.removeEventListener("message",this.listener),this.interval=null,this.listener=null,Reflect.deleteProperty(t,"textContent"),Reflect.deleteProperty(o,"textContent"))}},j1=new xd});var hg,pg=w(()=>{hg='
      '});var Cd={};A(Cd,{default:()=>G1});var Cr,$d,G1,Md=w(()=>{"use strict";pg();F();Rt();Cr=s=>window.chrome.webview.postMessage(`recovery-${s}`),$d=class{constructor(){this.host=null,this.shadow=null,document.addEventListener("pointerlockchange",()=>{this.host&&(this.host.style.display=document.pointerLockElement?"none":"flex")}),window.chrome.webview.addEventListener("message",e=>{e.data?.recovery&&this.show(e.data.recovery)}),d.recovery&&this.show(d.recovery)}banner(e,t,o){this.host||(this.host=document.createElement("div"),this.host.style.cssText="position:fixed;top:12px;left:0;right:0;display:flex;justify-content:center;pointer-events:none;z-index:2147482000",this.shadow=this.host.attachShadow({mode:"open"}),this.shadow.innerHTML=hg,document.body.append(this.host));let{shadow:n}=this;n.querySelector("#rcTitle").textContent=e,n.querySelector("#rcBody").textContent=t;let r=n.querySelector("#rcActions");r.replaceChildren();for(let[i,a,l]of o){let c=document.createElement("div");c.className=l?"rcButton rcMain":"rcButton",c.textContent=i,c.onclick=()=>Cr(a),r.append(c)}}show(e){if(e.mode==="safe"){let t=[["Restart normally","normal",!e.canFind]];e.canFind&&t.unshift(["Find the cause","find",!0]),this.banner("Safe mode:","your userscripts, swaps, custom CSS, flags and engine tweaks are off for this start. Nothing of yours was changed.",t)}else if(e.mode==="test"){let t=`${e.suspects} ${e.suspects===1?"thing":"things"} left to check.`;e.ranFine?this.banner(`Finding the cause, test ${e.step}:`,`this test passed, ${t} Restart for the next one.`,[["Next test","next",!0],["Stop","stop"]]):e.kind==="startup"?this.banner(`Finding the cause, test ${e.step}:`,`${t} Kute restarts by itself, nothing to do.`,[["Stop","stop"]]):this.banner(`Finding the cause, test ${e.step}:`,`${t} Play as usual. After ${e.minutes} min without a crash this test passes.`,[["Stop","stop"]])}else e.mode==="result"?this.result(e).catch(t=>console.error("[kute] recovery:",t)):e.mode==="offer"&&this.offer().catch(t=>console.error("[kute] recovery:",t))}async result(e){let t=`${e.tests?.crashed??0} tests crashed, ${e.tests?.ranFine??0} ran fine.`;if(e.verdict==="notTheSetup"){let i=!await Ce({title:"Not your setup",paragraphs:["Kute crashed even with everything of yours switched off, so it is most likely a driver, the PC or another program.","A Diagnostics Report (About settings) helps us look into it.",t],stay:"Create a report",leave:"Close"});Cr("dismiss"),i&&d.diagnostics?.open();return}let o=e.culprits??[],n=o.every(i=>i.fixable),r=!await Ce({title:"Found the cause",paragraphs:[`Kute crashed with ${o.length===1?"this":"these together"} and ran fine without:`,...o.map(i=>i.label),n?"It is off for this start. Switch it off for good, or keep it and Kute starts with it again next time.":"It is off for this start. To keep it off, remove it from the file in Documents\\kute.",t],stay:n?"Switch it off":"OK",leave:"Keep it"});Cr(r&&n?"apply":"dismiss"),r&&n&&d.showNotification("Switched off",!1,3)}async offer(){let e=!await Ce({title:"Kute crashed the last times it ran",paragraphs:["Safe mode starts without your userscripts, swaps, custom CSS, flags and engine tweaks, and can find which one causes it. Nothing of yours gets changed."],stay:"Restart in safe mode",leave:"Not now"});Cr(e?"safe":"dismiss")}},G1=new $d});var Ad={};A(Ad,{default:()=>Z1});var W1,V1,Y1,X1,J1,Td,Z1,Ld=w(()=>{"use strict";F();Ae();is();W1=2e3,V1=.25,Y1=60,X1=3e3,J1=.3,Td=class{constructor(){this.ingameFPS=null,this.menuFPS=null,this.listener=null,this.gameFPS=null,this.rawGameFPS=null,this.potentialFps=0,this.presentEnabled=!!d.settings?.data?.renderStats,this.presentFps=0,this.presentAt=0,this.showPresent=!0,this.disagreeSince=0,this.shown="",d.settings.toggleRenderFps=e=>this.toggle(e),this.toggle(!0)}presentUsable(){if(performance.now()-this.presentAt>W1)return!1;let e=Number.parseFloat(this.rawGameFPS??"");return!Number.isFinite(e)||e<=0?!0:!(this.presentFps=X1&&(this.showPresent=!this.showPresent,this.disagreeSince=0,this.showPresent||this.explainOnce()):this.disagreeSince=e,this.render()}explainOnce(){try{if(sessionStorage.getItem("kute_presentFpsHidden"))return;sessionStorage.setItem("kute_presentFpsHidden","1")}catch{return}d.showNotification?.(d.settings?.data?.hardFlip===!1?"Present FPS needs the DXGI Swapchain Hook (Settings, Engine), which is off. Showing the game's FPS":"Present FPS is hidden: the swap chain hook does not see the game's frames on this PC, its number would be wrong. Showing the game's FPS",!1,8)}render(){let e=this.showPresent&&this.presentAt>0?`${this.gameFPS??""} ${this.presentFps}`:this.gameFPS??"";e!==this.shown&&(this.shown=e,this.ingameFPS&&(this.ingameFPS.innerText=e),this.menuFPS&&(this.menuFPS.innerText=e))}withPotential(e){let t=Number.parseFloat(e),o=ni();if(!Number.isFinite(t)||t<=0||Number(d.settings?.data?.gameFpsLimit)>0)return e;if(o>0){let n=1e3/t,r=1e3/Math.max(o,n-o);this.potentialFps=this.potentialFps?this.potentialFps+(r-this.potentialFps)*J1:r}return this.potentialFps>t?String(Math.round(this.potentialFps)):e}applyFpsDisplay(e){e&&Object.defineProperty(e,"textContent",{set:t=>{this.rawGameFPS=t,this.gameFPS=this.withPotential(t),this.evaluate()},configurable:!0})}async toggle(e){let[t,o]=await Promise.all([$e("#ingameFPS"),$e("#menuFPS")]);this.ingameFPS=t,this.menuFPS=o,e?(this.applyFpsDisplay(t),this.applyFpsDisplay(o),this.listener=n=>{let r=n.data?.fpsInfo;typeof r=="number"&&(this.presentFps=r,this.presentAt=performance.now(),this.showPresent&&this.render())},window.chrome.webview.addEventListener("message",this.listener)):(this.listener&&(window.chrome.webview.removeEventListener("message",this.listener),this.listener=null),Reflect.deleteProperty(t,"textContent"),Reflect.deleteProperty(o,"textContent"))}},Z1=new Td});var Pd={};A(Pd,{default:()=>nx});var jo,Q1,ex,tx,ox,sx,mg,Rd,nx,Id=w(()=>{"use strict";Ae();jo="data-kute-ping",Q1=6e4,ex=1e4,tx={FRA:"de-fra",NY:"us-nj",DAL:"us-tx",SV:"us-ca-sv",BRZ:"brz",SIN:"sgp",TOK:"jb-hnd",SYD:"au-syd",MBI:"as-mb",BHN:"me-bhn",SSS:"sss"},ox={"New York":"us-nj",Dallas:"us-tx",Frankfurt:"de-fra","Silicon Valley":"us-ca-sv",Sydney:"au-syd",Tokyo:"jb-hnd",Singapore:"sgp",Mumbai:"as-mb",Brazil:"brz","Middle East":"me-bhn","EU Super Secret Servers":"sss"},sx=` + `;let l=e.querySelector(".quick-stats");l?e.insertBefore(r,l):e.append(r)}},D1=new gd});var kd={};A(kd,{default:()=>K1});var F1,q1,wd,K1,yd=w(()=>{"use strict";D();F1=".ranked-matchmaking-status",q1="Match found!",wd=class{constructor(){this.found=!1,this.status=null,this.observer=new MutationObserver(()=>this.check()),u.settings.toggleRankedAlert=e=>this.toggle(e),this.toggle(!0)}toggle(e){this.observer.disconnect(),e&&(this.status=document.querySelector(F1),this.status&&(this.observer.observe(this.status,{attributes:!0,attributeFilter:["class"],childList:!0,characterData:!0,subtree:!0}),this.found=this.shown()))}shown(){return!!this.status?.classList.contains("show")&&this.status?.textContent===q1}check(){let e=this.shown();e&&!this.found&&window.chrome.webview.postMessage("bring-to-front"),this.found=e}},K1=new wd});var Sd={};A(Sd,{default:()=>j1});var xd,j1,Ed=w(()=>{"use strict";D();Ae();xd=class{constructor(){this.ingamePing=null,this.menuPing=null,this.interval=null,this.listener=null,u.settings.toggleRealPing=e=>this.toggle(e),this.toggle(!0)}applyPingDisplay(e){e&&Object.defineProperty(e,"textContent",{set:()=>{},configurable:!0})}async toggle(e){let[t,o]=await Promise.all([$e("#pingText"),$e("#menuPingText")]);this.ingamePing=t,this.menuPing=o,e?(this.applyPingDisplay(t),this.applyPingDisplay(o),this.interval=setInterval(()=>{window.chrome.webview.postMessage("ping")},3e3),this.listener=n=>{let r=n.data?.pingInfo;r&&(t.innerText=r,o.innerText=r)},window.chrome.webview.addEventListener("message",this.listener)):(this.interval!==null&&clearInterval(this.interval),this.listener&&window.chrome.webview.removeEventListener("message",this.listener),this.interval=null,this.listener=null,Reflect.deleteProperty(t,"textContent"),Reflect.deleteProperty(o,"textContent"))}},j1=new xd});var hg,pg=w(()=>{hg='
      '});var Cd={};A(Cd,{default:()=>G1});var Mr,$d,G1,Md=w(()=>{"use strict";pg();D();Rt();Mr=s=>window.chrome.webview.postMessage(`recovery-${s}`),$d=class{constructor(){this.host=null,this.shadow=null,document.addEventListener("pointerlockchange",()=>{this.host&&(this.host.style.display=document.pointerLockElement?"none":"flex")}),window.chrome.webview.addEventListener("message",e=>{e.data?.recovery&&this.show(e.data.recovery)}),u.recovery&&this.show(u.recovery)}banner(e,t,o){this.host||(this.host=document.createElement("div"),this.host.style.cssText="position:fixed;top:12px;left:0;right:0;display:flex;justify-content:center;pointer-events:none;z-index:2147482000",this.shadow=this.host.attachShadow({mode:"open"}),this.shadow.innerHTML=hg,document.body.append(this.host));let{shadow:n}=this;n.querySelector("#rcTitle").textContent=e,n.querySelector("#rcBody").textContent=t;let r=n.querySelector("#rcActions");r.replaceChildren();for(let[i,a,l]of o){let c=document.createElement("div");c.className=l?"rcButton rcMain":"rcButton",c.textContent=i,c.onclick=()=>Mr(a),r.append(c)}}show(e){if(e.mode==="safe"){let t=[["Restart normally","normal",!e.canFind]];e.canFind&&t.unshift(["Find the cause","find",!0]),this.banner("Safe mode:","your userscripts, swaps, custom CSS, flags and engine tweaks are off for this start. Nothing of yours was changed.",t)}else if(e.mode==="test"){let t=`${e.suspects} ${e.suspects===1?"thing":"things"} left to check.`;e.ranFine?this.banner(`Finding the cause, test ${e.step}:`,`this test passed, ${t} Restart for the next one.`,[["Next test","next",!0],["Stop","stop"]]):e.kind==="startup"?this.banner(`Finding the cause, test ${e.step}:`,`${t} Kute restarts by itself, nothing to do.`,[["Stop","stop"]]):this.banner(`Finding the cause, test ${e.step}:`,`${t} Play as usual. After ${e.minutes} min without a crash this test passes.`,[["Stop","stop"]])}else e.mode==="result"?this.result(e).catch(t=>console.error("[kute] recovery:",t)):e.mode==="offer"&&this.offer().catch(t=>console.error("[kute] recovery:",t))}async result(e){let t=`${e.tests?.crashed??0} tests crashed, ${e.tests?.ranFine??0} ran fine.`;if(e.verdict==="notTheSetup"){let i=!await Ce({title:"Not your setup",paragraphs:["Kute crashed even with everything of yours switched off, so it is most likely a driver, the PC or another program.","A Diagnostics Report (About settings) helps us look into it.",t],stay:"Create a report",leave:"Close"});Mr("dismiss"),i&&u.diagnostics?.open();return}let o=e.culprits??[],n=o.every(i=>i.fixable),r=!await Ce({title:"Found the cause",paragraphs:[`Kute crashed with ${o.length===1?"this":"these together"} and ran fine without:`,...o.map(i=>i.label),n?"It is off for this start. Switch it off for good, or keep it and Kute starts with it again next time.":"It is off for this start. To keep it off, remove it from the file in Documents\\kute.",t],stay:n?"Switch it off":"OK",leave:"Keep it"});Mr(r&&n?"apply":"dismiss"),r&&n&&u.showNotification("Switched off",!1,3)}async offer(){let e=!await Ce({title:"Kute crashed the last times it ran",paragraphs:["Safe mode starts without your userscripts, swaps, custom CSS, flags and engine tweaks, and can find which one causes it. Nothing of yours gets changed."],stay:"Restart in safe mode",leave:"Not now"});Mr(e?"safe":"dismiss")}},G1=new $d});var Ad={};A(Ad,{default:()=>Z1});var W1,V1,Y1,X1,J1,Td,Z1,Ld=w(()=>{"use strict";D();Ae();as();W1=2e3,V1=.25,Y1=60,X1=3e3,J1=.3,Td=class{constructor(){this.ingameFPS=null,this.menuFPS=null,this.listener=null,this.gameFPS=null,this.rawGameFPS=null,this.potentialFps=0,this.presentEnabled=!!u.settings?.data?.renderStats,this.presentFps=0,this.presentAt=0,this.showPresent=!0,this.disagreeSince=0,this.shown="",u.settings.toggleRenderFps=e=>this.toggle(e),this.toggle(!0)}presentUsable(){if(performance.now()-this.presentAt>W1)return!1;let e=Number.parseFloat(this.rawGameFPS??"");return!Number.isFinite(e)||e<=0?!0:!(this.presentFps=X1&&(this.showPresent=!this.showPresent,this.disagreeSince=0,this.showPresent||this.explainOnce()):this.disagreeSince=e,this.render()}explainOnce(){try{if(sessionStorage.getItem("kute_presentFpsHidden"))return;sessionStorage.setItem("kute_presentFpsHidden","1")}catch{return}u.showNotification?.(u.settings?.data?.hardFlip===!1?"Present FPS needs the DXGI Swapchain Hook (Settings, Engine), which is off. Showing the game's FPS":"Present FPS is hidden: the swap chain hook does not see the game's frames on this PC, its number would be wrong. Showing the game's FPS",!1,8)}render(){let e=this.showPresent&&this.presentAt>0?`${this.gameFPS??""} ${this.presentFps}`:this.gameFPS??"";e!==this.shown&&(this.shown=e,this.ingameFPS&&(this.ingameFPS.innerText=e),this.menuFPS&&(this.menuFPS.innerText=e))}withPotential(e){let t=Number.parseFloat(e),o=ri();if(!Number.isFinite(t)||t<=0||Number(u.settings?.data?.gameFpsLimit)>0)return e;if(o>0){let n=1e3/t,r=1e3/Math.max(o,n-o);this.potentialFps=this.potentialFps?this.potentialFps+(r-this.potentialFps)*J1:r}return this.potentialFps>t?String(Math.round(this.potentialFps)):e}applyFpsDisplay(e){e&&Object.defineProperty(e,"textContent",{set:t=>{this.rawGameFPS=t,this.gameFPS=this.withPotential(t),this.evaluate()},configurable:!0})}async toggle(e){let[t,o]=await Promise.all([$e("#ingameFPS"),$e("#menuFPS")]);this.ingameFPS=t,this.menuFPS=o,e?(this.applyFpsDisplay(t),this.applyFpsDisplay(o),this.listener=n=>{let r=n.data?.fpsInfo;typeof r=="number"&&(this.presentFps=r,this.presentAt=performance.now(),this.showPresent&&this.render())},window.chrome.webview.addEventListener("message",this.listener)):(this.listener&&(window.chrome.webview.removeEventListener("message",this.listener),this.listener=null),Reflect.deleteProperty(t,"textContent"),Reflect.deleteProperty(o,"textContent"))}},Z1=new Td});var Pd={};A(Pd,{default:()=>nx});var Uo,Q1,ex,tx,ox,sx,mg,Rd,nx,Id=w(()=>{"use strict";Ae();Uo="data-kute-ping",Q1=6e4,ex=1e4,tx={FRA:"de-fra",NY:"us-nj",DAL:"us-tx",SV:"us-ca-sv",BRZ:"brz",SIN:"sgp",TOK:"jb-hnd",SYD:"au-syd",MBI:"as-mb",BHN:"me-bhn",SSS:"sss"},ox={"New York":"us-nj",Dallas:"us-tx",Frankfurt:"de-fra","Silicon Valley":"us-ca-sv",Sydney:"au-syd",Tokyo:"jb-hnd",Singapore:"sgp",Mumbai:"as-mb",Brazil:"brz","Middle East":"me-bhn","EU Super Secret Servers":"sss"},sx=` #serverHolder .settNameIn .kutePing { float: right; margin-right: 8px; color: #35e0e8; font-size: 13px; line-height: 44px; } #serverHolder .setHed .kutePing { float: right; margin-right: 14px; color: #35e0e8; font-size: 0.75em; line-height: 42px; } -`,mg=s=>s===void 0?"":`${s} ms`,Rd=class{constructor(){this.pings={},this.fetchedAt=0,this.fetching=!1,this.pending=null,this.observer=new MutationObserver(()=>{this.pending===null&&(this.pending=setTimeout(()=>this.scan(),150))});let e=document.createElement("style");e.textContent=sx,document.head.append(e);let t=document.getElementById("menuWindow");t&&(this.menu=t,this.observer.observe(t,{childList:!0,subtree:!0}))}refresh(){this.fetching||Date.now()-this.fetchedAt{this.fetching=!1,this.fetchedAt=Date.now(),e&&(this.pings=e,this.menu?.querySelectorAll(".kutePing").forEach(t=>t.remove()),this.menu?.querySelectorAll(`[${jo}]`).forEach(t=>t.removeAttribute(jo)),this.scan())}))}scan(){this.pending=null;let e=document.getElementById("serverHolder");e&&(this.refresh(),Object.keys(this.pings).length!==0&&(this.observer.disconnect(),this.labelRows(e),this.sortRegions(e),this.menu&&this.observer.observe(this.menu,{childList:!0,subtree:!0})))}labelRows(e){for(let t of e.querySelectorAll(`.settNameIn:not([${jo}])`)){t.setAttribute(jo,"");let o=/checkedSwitchServer\("([A-Z]+):/.exec(t.getAttribute("onclick")??"")?.[1],n=o?this.pings[tx[o]]:void 0,r=t.querySelector(".serverPing");if(n===void 0||!r)continue;let i=document.createElement("span");i.className="kutePing",i.textContent=mg(n),r.after(i)}}sortRegions(e){let t=[];for(let n of e.children)if(n.classList.contains("setHed")){let r=Array.from(n.childNodes,a=>a.nodeType===Node.TEXT_NODE?a.textContent:"").join("").trim(),i=this.pings[ox[r]];if(i!==void 0&&!n.hasAttribute(jo)){n.setAttribute(jo,"");let a=document.createElement("span");a.className="kutePing",a.textContent=mg(i),n.querySelector(".quickJoin")?.before(a)}t.push({nodes:[n],ping:i??-1})}else t.at(-1)?.nodes.push(n);if(t.length<2)return;let o=t.map((n,r)=>({...n,index:r})).sort((n,r)=>n.ping-r.ping||n.index-r.index);if(!o.every((n,r)=>n.index===r))for(let n of o)e.append(...n.nodes)}},nx=new Rd});var _d={};A(_d,{default:()=>lx});function ax(s,e){if(JSON.stringify(e)?.length>ix)return!1;if(vg.includes(s))return e===null||typeof e=="object"&&!Array.isArray(e);let t=wg.find(o=>o.id===s);return!t||typeof e!=typeof t.defaultValue||t.options&&!t.options.includes(e)?!1:typeof e!="number"||Number.isFinite(e)}function bg(){let s=new Date;return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}var fg,gg,rx,ix,vg,wg,Nd,lx,Bd=w(()=>{"use strict";Yo();F();Co();Rt();fg="kute-settings",gg=1,rx=256*1024,ix=16*1024,vg=["hudLayout","matchmakerFilter","hotkeys","nukeCounterConfig","customSkyConfig","kuteIconSlots","kuteIconUrls"],wg=Object.values(Tt).filter(s=>"defaultValue"in s);Nd=class{constructor(){d.settingsTransfer={exportFile:()=>this.export(),importFile:()=>this.pick()}}export(){let e=cu(d.settings.data),t=[...wg.map(i=>i.id),...vg],o=Object.fromEntries(t.filter(i=>e[i]!==void 0).map(i=>[i,e[i]])),n={format:fg,version:gg,kute:d.version,exported:bg(),settings:o},r=document.createElement("a");r.href=URL.createObjectURL(new Blob([JSON.stringify(n,null,2)],{type:"application/json"})),r.download=`kute-settings-${bg()}.json`,r.click(),setTimeout(()=>URL.revokeObjectURL(r.href),1e4),d.showNotification(`Exported ${Object.keys(o).length} settings to your Downloads folder`,!1,4)}pick(){let e=document.createElement("input");e.type="file",e.accept=".json,application/json",e.onchange=()=>{let t=e.files?.[0];t&&this.read(t).catch(o=>console.error("[kute] settings import:",o))},e.click()}async read(e){if(e.size>rx){d.showNotification("That file is too big for a Kute settings file",!1,4);return}let t=null;try{t=JSON.parse(await e.text())}catch{t=null}if(t?.format!==fg||typeof t.settings!="object"||t.settings===null){d.showNotification("That is not a Kute settings file",!1,4);return}if(typeof t.version!="number"||t.version>gg){d.showNotification("That file comes from a newer Kute, update first",!1,4);return}let o=Object.entries(t.settings).filter(([i,a])=>ax(i,a));if(o.length===0){d.showNotification("That file holds no settings this Kute knows",!1,4);return}let n=typeof t.kute=="string"?` from Kute ${t.kute}`:"";if(await Ce({title:"Import Kute settings",paragraphs:[`${o.length} settings${n} in ${e.name}.`,"They replace your client settings, HUD positions, matchmaker filters and hotkeys. Kute restarts to apply them.","Userscripts, swapper files, custom CSS and your own sky images are files in Documents\\kute and are not part of it."],stay:"Cancel",leave:"Import and restart"})){for(let[i,a]of o)d.settings.data[i]=a,window.chrome.webview.postMessage(`set-config-json ${i} ${JSON.stringify(a)}`);window.chrome.webview.postMessage("restart")}}},lx=new Nd});var Hd={};A(Hd,{default:()=>cx});var zd,cx,Od=w(()=>{"use strict";F();zd=class{constructor(){this.originalGenList=window.windows[22].genList,this.template=document.createElement("template"),d.settings.toggleShowPing=e=>this.toggle(e),this.toggle(!0)}toggle(e){let t=this;e?window.windows[22].genList=function(){return t.modifiedGenList(this)}:window.windows[22].genList=this.originalGenList}modifiedGenList(e){let t=this.originalGenList.call(e);this.template.innerHTML=t;let o=this.template.content.querySelectorAll(".pListPing.material-icons");for(let n of o){let r=n.getAttribute("title");n.classList.remove("pListPing","material-icons"),n.removeAttribute("title"),n.textContent=`${r||"N/A"} `}return this.template.innerHTML}},cx=new zd});var yg,kg=w(()=>{yg=`#kuteSpotifyOverlay{position:absolute;left:463px;bottom:23px;z-index:10;display:flex;align-items:center;gap:12px;box-sizing:border-box;width:320px;min-height:82px;padding:10px;border:1px solid rgba(29,185,84,.7);border-radius:8px;background:#0c120fe0;box-shadow:0 4px 18px #00000059;color:#fff;font-family:Arial,sans-serif;pointer-events:none}#kuteSpotifyOverlay[hidden]{display:none}#kuteSpotifyOverlay.paused{opacity:.72}#kuteSpotifyArtwork{width:60px;height:60px;flex:0 0 60px;border-radius:4px;background:#26302a;object-fit:cover}#kuteSpotifyInfo{min-width:0;flex:1 1 auto}#kuteSpotifyTitle,#kuteSpotifyArtist{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#kuteSpotifyTitle{font-size:14px;font-weight:700}#kuteSpotifyArtist{margin-top:3px;color:#b8c8bc;font-size:12px}#kuteSpotifyProgress{height:3px;margin-top:9px;border-radius:2px;background:#536258;overflow:hidden}#kuteSpotifyProgress>div{height:100%;background:#1db954;transform:scaleX(0);transform-origin:left} -`});var Sg,xg=w(()=>{Sg='
      '});var Dd={};A(Dd,{default:()=>hx});var px,Fd,hx,qd=w(()=>{"use strict";kg();xg();F();px=1e3,Fd=class{constructor(){this.overlay=null,this.playback=null,this.timer=null,this.artwork=null,this.listener=e=>{let{data:t}=e;typeof t!="object"||t===null||("spotify"in t?this.song(t.spotify):"spotifyState"in t&&this.state(t.spotifyState))},d.settings.toggleSpotifyOverlay=e=>this.toggle(e),this.toggle(!!d.settings.data.spotifyOverlay)}toggle(e){if(!e){window.chrome.webview.removeEventListener("message",this.listener),window.chrome.webview.postMessage("spotify-stop"),this.stopProgress(),this.overlay?.remove(),this.overlay=null,this.artwork=null,document.querySelector("#kuteSpotifyOverlayCSS")?.remove();return}if(this.overlay)return;let t=document.createElement("style");t.id="kuteSpotifyOverlayCSS",t.textContent=yg,document.head.append(t),this.overlay=document.createElement("div"),this.overlay.id="kuteSpotifyOverlay",this.overlay.hidden=!0,this.overlay.innerHTML=Sg,(document.querySelector("#uiBase")??document.body).append(this.overlay),window.chrome.webview.addEventListener("message",this.listener),window.chrome.webview.postMessage("spotify-start")}song(e){if(!this.overlay||(this.overlay.hidden=!e,!e))return;let t=this.overlay.querySelector("#kuteSpotifyArtwork");e.artwork!==this.artwork&&(this.artwork=e.artwork,t.src=e.artwork??""),t.alt=e.album,this.overlay.querySelector("#kuteSpotifyTitle").textContent=e.title,this.overlay.querySelector("#kuteSpotifyArtist").textContent=e.artist,this.state(e)}state({playing:e,position:t,duration:o}){this.overlay&&(this.overlay.classList.toggle("paused",!e),this.playback={playing:e,position:t,duration:o,at:performance.now()},this.drawProgress(),e&&this.timer===null?this.timer=window.setInterval(()=>this.drawProgress(),px):e||this.stopProgress())}drawProgress(){let e=this.overlay?.querySelector("#kuteSpotifyProgress > div")??null;if(!e||!this.playback)return;let{playing:t,position:o,duration:n,at:r}=this.playback,i=o+(t?performance.now()-r:0);e.style.transform=`scaleX(${n>0?Math.min(1,i/n).toFixed(4):0})`}stopProgress(){this.timer!==null&&window.clearInterval(this.timer),this.timer=null}},hx=new Fd});var jd={};A(jd,{default:()=>mx});var Kd,mx,Ud=w(()=>{"use strict";F();Kd=class{constructor(){if(!d.version)return;let e=document.createElement("style");e.id="kute_versionTagCSS",e.textContent=` +`,mg=s=>s===void 0?"":`${s} ms`,Rd=class{constructor(){this.pings={},this.fetchedAt=0,this.fetching=!1,this.pending=null,this.observer=new MutationObserver(()=>{this.pending===null&&(this.pending=setTimeout(()=>this.scan(),150))});let e=document.createElement("style");e.textContent=sx,document.head.append(e);let t=document.getElementById("menuWindow");t&&(this.menu=t,this.observer.observe(t,{childList:!0,subtree:!0}))}refresh(){this.fetching||Date.now()-this.fetchedAt{this.fetching=!1,this.fetchedAt=Date.now(),e&&(this.pings=e,this.menu?.querySelectorAll(".kutePing").forEach(t=>t.remove()),this.menu?.querySelectorAll(`[${Uo}]`).forEach(t=>t.removeAttribute(Uo)),this.scan())}))}scan(){this.pending=null;let e=document.getElementById("serverHolder");e&&(this.refresh(),Object.keys(this.pings).length!==0&&(this.observer.disconnect(),this.labelRows(e),this.sortRegions(e),this.menu&&this.observer.observe(this.menu,{childList:!0,subtree:!0})))}labelRows(e){for(let t of e.querySelectorAll(`.settNameIn:not([${Uo}])`)){t.setAttribute(Uo,"");let o=/checkedSwitchServer\("([A-Z]+):/.exec(t.getAttribute("onclick")??"")?.[1],n=o?this.pings[tx[o]]:void 0,r=t.querySelector(".serverPing");if(n===void 0||!r)continue;let i=document.createElement("span");i.className="kutePing",i.textContent=mg(n),r.after(i)}}sortRegions(e){let t=[];for(let n of e.children)if(n.classList.contains("setHed")){let r=Array.from(n.childNodes,a=>a.nodeType===Node.TEXT_NODE?a.textContent:"").join("").trim(),i=this.pings[ox[r]];if(i!==void 0&&!n.hasAttribute(Uo)){n.setAttribute(Uo,"");let a=document.createElement("span");a.className="kutePing",a.textContent=mg(i),n.querySelector(".quickJoin")?.before(a)}t.push({nodes:[n],ping:i??-1})}else t.at(-1)?.nodes.push(n);if(t.length<2)return;let o=t.map((n,r)=>({...n,index:r})).sort((n,r)=>n.ping-r.ping||n.index-r.index);if(!o.every((n,r)=>n.index===r))for(let n of o)e.append(...n.nodes)}},nx=new Rd});var _d={};A(_d,{default:()=>lx});function ax(s,e){if(JSON.stringify(e)?.length>ix)return!1;if(vg.includes(s))return e===null||typeof e=="object"&&!Array.isArray(e);let t=wg.find(o=>o.id===s);return!t||typeof e!=typeof t.defaultValue||t.options&&!t.options.includes(e)?!1:typeof e!="number"||Number.isFinite(e)}function bg(){let s=new Date;return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}var fg,gg,rx,ix,vg,wg,Nd,lx,Bd=w(()=>{"use strict";Xo();D();Co();Rt();fg="kute-settings",gg=1,rx=256*1024,ix=16*1024,vg=["hudLayout","matchmakerFilter","hotkeys","nukeCounterConfig","customSkyConfig","kuteIconSlots","kuteIconUrls"],wg=Object.values(Tt).filter(s=>"defaultValue"in s);Nd=class{constructor(){u.settingsTransfer={exportFile:()=>this.export(),importFile:()=>this.pick()}}export(){let e=cu(u.settings.data),t=[...wg.map(i=>i.id),...vg],o=Object.fromEntries(t.filter(i=>e[i]!==void 0).map(i=>[i,e[i]])),n={format:fg,version:gg,kute:u.version,exported:bg(),settings:o},r=document.createElement("a");r.href=URL.createObjectURL(new Blob([JSON.stringify(n,null,2)],{type:"application/json"})),r.download=`kute-settings-${bg()}.json`,r.click(),setTimeout(()=>URL.revokeObjectURL(r.href),1e4),u.showNotification(`Exported ${Object.keys(o).length} settings to your Downloads folder`,!1,4)}pick(){let e=document.createElement("input");e.type="file",e.accept=".json,application/json",e.onchange=()=>{let t=e.files?.[0];t&&this.read(t).catch(o=>console.error("[kute] settings import:",o))},e.click()}async read(e){if(e.size>rx){u.showNotification("That file is too big for a Kute settings file",!1,4);return}let t=null;try{t=JSON.parse(await e.text())}catch{t=null}if(t?.format!==fg||typeof t.settings!="object"||t.settings===null){u.showNotification("That is not a Kute settings file",!1,4);return}if(typeof t.version!="number"||t.version>gg){u.showNotification("That file comes from a newer Kute, update first",!1,4);return}let o=Object.entries(t.settings).filter(([i,a])=>ax(i,a));if(o.length===0){u.showNotification("That file holds no settings this Kute knows",!1,4);return}let n=typeof t.kute=="string"?` from Kute ${t.kute}`:"";if(await Ce({title:"Import Kute settings",paragraphs:[`${o.length} settings${n} in ${e.name}.`,"They replace your client settings, HUD positions, matchmaker filters and hotkeys. Kute restarts to apply them.","Userscripts, swapper files, custom CSS and your own sky images are files in Documents\\kute and are not part of it."],stay:"Cancel",leave:"Import and restart"})){for(let[i,a]of o)u.settings.data[i]=a,window.chrome.webview.postMessage(`set-config-json ${i} ${JSON.stringify(a)}`);window.chrome.webview.postMessage("restart")}}},lx=new Nd});var Hd={};A(Hd,{default:()=>cx});var zd,cx,Od=w(()=>{"use strict";D();zd=class{constructor(){this.originalGenList=window.windows[22].genList,this.template=document.createElement("template"),u.settings.toggleShowPing=e=>this.toggle(e),this.toggle(!0)}toggle(e){let t=this;e?window.windows[22].genList=function(){return t.modifiedGenList(this)}:window.windows[22].genList=this.originalGenList}modifiedGenList(e){let t=this.originalGenList.call(e);this.template.innerHTML=t;let o=this.template.content.querySelectorAll(".pListPing.material-icons");for(let n of o){let r=n.getAttribute("title");n.classList.remove("pListPing","material-icons"),n.removeAttribute("title"),n.textContent=`${r||"N/A"} `}return this.template.innerHTML}},cx=new zd});var yg,kg=w(()=>{yg=`#kuteSpotifyOverlay{position:absolute;left:463px;bottom:23px;z-index:10;display:flex;align-items:center;gap:12px;box-sizing:border-box;width:320px;min-height:82px;padding:10px;border:1px solid rgba(29,185,84,.7);border-radius:8px;background:#0c120fe0;box-shadow:0 4px 18px #00000059;color:#fff;font-family:Arial,sans-serif;pointer-events:none}#kuteSpotifyOverlay[hidden]{display:none}#kuteSpotifyOverlay.paused{opacity:.72}#kuteSpotifyArtwork{width:60px;height:60px;flex:0 0 60px;border-radius:4px;background:#26302a;object-fit:cover}#kuteSpotifyInfo{min-width:0;flex:1 1 auto}#kuteSpotifyTitle,#kuteSpotifyArtist{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#kuteSpotifyTitle{font-size:14px;font-weight:700}#kuteSpotifyArtist{margin-top:3px;color:#b8c8bc;font-size:12px}#kuteSpotifyProgress{height:3px;margin-top:9px;border-radius:2px;background:#536258;overflow:hidden}#kuteSpotifyProgress>div{height:100%;background:#1db954;transform:scaleX(0);transform-origin:left} +`});var Sg,xg=w(()=>{Sg='
      '});var Fd={};A(Fd,{default:()=>hx});var px,Dd,hx,qd=w(()=>{"use strict";kg();xg();D();px=1e3,Dd=class{constructor(){this.overlay=null,this.playback=null,this.timer=null,this.artwork=null,this.listener=e=>{let{data:t}=e;typeof t!="object"||t===null||("spotify"in t?this.song(t.spotify):"spotifyState"in t&&this.state(t.spotifyState))},u.settings.toggleSpotifyOverlay=e=>this.toggle(e),this.toggle(!!u.settings.data.spotifyOverlay)}toggle(e){if(!e){window.chrome.webview.removeEventListener("message",this.listener),window.chrome.webview.postMessage("spotify-stop"),this.stopProgress(),this.overlay?.remove(),this.overlay=null,this.artwork=null,document.querySelector("#kuteSpotifyOverlayCSS")?.remove();return}if(this.overlay)return;let t=document.createElement("style");t.id="kuteSpotifyOverlayCSS",t.textContent=yg,document.head.append(t),this.overlay=document.createElement("div"),this.overlay.id="kuteSpotifyOverlay",this.overlay.hidden=!0,this.overlay.innerHTML=Sg,(document.querySelector("#uiBase")??document.body).append(this.overlay),window.chrome.webview.addEventListener("message",this.listener),window.chrome.webview.postMessage("spotify-start")}song(e){if(!this.overlay||(this.overlay.hidden=!e,!e))return;let t=this.overlay.querySelector("#kuteSpotifyArtwork");e.artwork!==this.artwork&&(this.artwork=e.artwork,t.src=e.artwork??""),t.alt=e.album,this.overlay.querySelector("#kuteSpotifyTitle").textContent=e.title,this.overlay.querySelector("#kuteSpotifyArtist").textContent=e.artist,this.state(e)}state({playing:e,position:t,duration:o}){this.overlay&&(this.overlay.classList.toggle("paused",!e),this.playback={playing:e,position:t,duration:o,at:performance.now()},this.drawProgress(),e&&this.timer===null?this.timer=window.setInterval(()=>this.drawProgress(),px):e||this.stopProgress())}drawProgress(){let e=this.overlay?.querySelector("#kuteSpotifyProgress > div")??null;if(!e||!this.playback)return;let{playing:t,position:o,duration:n,at:r}=this.playback,i=o+(t?performance.now()-r:0);e.style.transform=`scaleX(${n>0?Math.min(1,i/n).toFixed(4):0})`}stopProgress(){this.timer!==null&&window.clearInterval(this.timer),this.timer=null}},hx=new Dd});var jd={};A(jd,{default:()=>mx});var Kd,mx,Ud=w(()=>{"use strict";D();Kd=class{constructor(){if(!u.version)return;let e=document.createElement("style");e.id="kute_versionTagCSS",e.textContent=` #matchInfo > div:first-of-type::before { - content: ${JSON.stringify(`Kute v${d.version}`)}; + content: ${JSON.stringify(`Kute v${u.version}`)}; display: block; color: #35e0e8; - }`,document.head.append(e)}},mx=new Kd});var Cg={};var fx,Eg,gx,$g,Gd,Wd=w(()=>{"use strict";fx=[{key:"scoreboardName.js",name:"Scoreboard Name",author:"Kute"}],Eg="kute_withdrawn",gx=1e4,$g=localStorage.getItem(Eg)??"",Gd=fx.filter(s=>!$g.split(",").includes(s.key));if(Gd.length>0){let s=0,e=t=>{let o=t.data?.userscripts?.groups;if(!Array.isArray(o))return;window.chrome.webview.removeEventListener("message",e),clearTimeout(s);let n=o.flatMap(r=>r.scripts??[]);for(let r of Gd)n.find(a=>a.key===r.key&&a.meta?.name===r.name&&a.meta?.author===r.author)&&(window.chrome.webview.postMessage(`scripts-toggle ${JSON.stringify({key:r.key,enabled:!1})}`),window.chrome.webview.postMessage(`scripts-delete ${JSON.stringify({key:r.key})}`));localStorage.setItem(Eg,[...$g.split(",").filter(Boolean),...Gd.map(r=>r.key)].join(","))};s=setTimeout(()=>window.chrome.webview.removeEventListener("message",e),gx),window.chrome.webview.addEventListener("message",e),window.chrome.webview.postMessage("scripts-list {}")}});var Lg,Vd=w(()=>{Lg=iu({"./modules/about.js":()=>Promise.resolve().then(()=>(hi(),Ju)),"./modules/accountEndMessage.js":()=>Promise.resolve().then(()=>(bi(),gi)),"./modules/accountManager.js":()=>Promise.resolve().then(()=>(Ci(),$i)),"./modules/api.js":()=>Promise.resolve().then(()=>(It(),dp)),"./modules/args.js":()=>Promise.resolve().then(()=>(Ti(),hp)),"./modules/autoDetect/bench.js":()=>Promise.resolve().then(()=>(Jr(),Iu)),"./modules/autoDetect/clientBench.js":()=>Promise.resolve().then(()=>(qi(),vp)),"./modules/autoDetect/decide.js":()=>Promise.resolve().then(()=>(Ki(),kp)),"./modules/autoDetect/gameSettings.js":()=>Promise.resolve().then(()=>(Yi(),Vi)),"./modules/autoDetect/index.js":()=>Promise.resolve().then(()=>(ia(),ra)),"./modules/autoDetect/metrics.js":()=>Promise.resolve().then(()=>(kn(),Au)),"./modules/autoDetect/policy.js":()=>Promise.resolve().then(()=>(ws(),fp)),"./modules/autoDetect/sample.js":()=>Promise.resolve().then(()=>(Zi(),Cp)),"./modules/autoDetect/scene.js":()=>Promise.resolve().then(()=>(Vr(),Tu)),"./modules/badges.js":()=>Promise.resolve().then(()=>(pa(),ua)),"./modules/betterChat.js":()=>Promise.resolve().then(()=>(fa(),ma)),"./modules/bpClaimAll.js":()=>Promise.resolve().then(()=>(ga(),eh)),"./modules/changelog.js":()=>Promise.resolve().then(()=>(La(),xh)),"./modules/chatDraft.js":()=>Promise.resolve().then(()=>(Ia(),Pa)),"./modules/chatLogs.js":()=>Promise.resolve().then(()=>(Ba(),_a)),"./modules/clanColors.js":()=>Promise.resolve().then(()=>(Oa(),Ha)),"./modules/confirmPopup.js":()=>Promise.resolve().then(()=>(Rt(),ep)),"./modules/customCss.js":()=>Promise.resolve().then(()=>(bn(),ku)),"./modules/customSky.js":()=>Promise.resolve().then(()=>(qa(),Da)),"./modules/diagnostics.js":()=>Promise.resolve().then(()=>(Wa(),Ga)),"./modules/externalQueue.js":()=>Promise.resolve().then(()=>(el(),Kh)),"./modules/fixes.js":()=>Promise.resolve().then(()=>(tl(),jh)),"./modules/gameFpsLimit.js":()=>Promise.resolve().then(()=>(is(),ii)),"./modules/hotkeys.js":()=>Promise.resolve().then(()=>(Po(),xi)),"./modules/hpEnemyCounter.js":()=>Promise.resolve().then(()=>(nl(),sl)),"./modules/hsSound.js":()=>Promise.resolve().then(()=>(al(),il)),"./modules/hudEditor/editor.js":()=>Promise.resolve().then(()=>(ul(),dl)),"./modules/hudEditor/elements.js":()=>Promise.resolve().then(()=>(or(),Yh)),"./modules/hudEditor/index.js":()=>Promise.resolve().then(()=>(nr(),cl)),"./modules/importSettings.js":()=>Promise.resolve().then(()=>(pl(),tm)),"./modules/inventoryScroll.js":()=>Promise.resolve().then(()=>(fl(),ml)),"./modules/keystrokes.js":()=>Promise.resolve().then(()=>(kl(),wl)),"./modules/kuteCss.js":()=>Promise.resolve().then(()=>(ei(),Qr)),"./modules/kuteIcons/index.js":()=>Promise.resolve().then(()=>(El(),Sl)),"./modules/kuteIcons/slots.js":()=>Promise.resolve().then(()=>(gn(),bu)),"./modules/leftClick.js":()=>Promise.resolve().then(()=>(fn(),fu)),"./modules/linuxUpdate.js":()=>Promise.resolve().then(()=>(Tl(),Ml)),"./modules/logoBadge.js":()=>Promise.resolve().then(()=>(ci(),li)),"./modules/managers/customCss.js":()=>Promise.resolve().then(()=>(_l(),Nl)),"./modules/managers/editor.js":()=>Promise.resolve().then(()=>(Oo(),Ih)),"./modules/managers/index.js":()=>Promise.resolve().then(()=>(jl(),zm)),"./modules/managers/popup.js":()=>Promise.resolve().then(()=>(Os(),Tm)),"./modules/managers/registry.js":()=>Promise.resolve().then(()=>(Qo(),vu)),"./modules/managers/stylesheets.js":()=>Promise.resolve().then(()=>(dr(),Am)),"./modules/managers/swapper.js":()=>Promise.resolve().then(()=>(Kl(),ql)),"./modules/managers/userscripts.js":()=>Promise.resolve().then(()=>(Hl(),zl)),"./modules/maps.js":()=>Promise.resolve().then(()=>(er(),Nh)),"./modules/market.js":()=>Promise.resolve().then(()=>(Of(),Vy)),"./modules/market/alerts.js":()=>Promise.resolve().then(()=>(mr(),Zm)),"./modules/market/analytics.js":()=>Promise.resolve().then(()=>(vr(),cf)),"./modules/market/api.js":()=>Promise.resolve().then(()=>(xe(),Om)),"./modules/market/cards.js":()=>Promise.resolve().then(()=>(Xl(),Km)),"./modules/market/chart.js":()=>Promise.resolve().then(()=>(jc(),If)),"./modules/market/chartData.js":()=>Promise.resolve().then(()=>(kr(),vf)),"./modules/market/contrib.js":()=>Promise.resolve().then(()=>(ic(),nf)),"./modules/market/contributionData.js":()=>Promise.resolve().then(()=>(nc(),ef)),"./modules/market/contributionEvidence.js":()=>Promise.resolve().then(()=>(bc(),ff)),"./modules/market/element.js":()=>Promise.resolve().then(()=>(_e(),af)),"./modules/market/exchangeEvidence.js":()=>Promise.resolve().then(()=>(wc(),gf)),"./modules/market/index.js":()=>Promise.resolve().then(()=>(Er(),Vc)),"./modules/market/intelligence.js":()=>Promise.resolve().then(()=>(Qs(),mf)),"./modules/market/itemSearch.js":()=>Promise.resolve().then(()=>(qo(),pf)),"./modules/market/navigation.js":()=>Promise.resolve().then(()=>(br(),rf)),"./modules/market/presentation.js":()=>Promise.resolve().then(()=>(pe(),Dm)),"./modules/market/terminal.js":()=>Promise.resolve().then(()=>(Gc(),Uc)),"./modules/market/trade.js":()=>Promise.resolve().then(()=>(Zl(),Gm)),"./modules/market/types.js":()=>Promise.resolve().then(()=>(We(),Fm)),"./modules/market/views/analyze.js":()=>Promise.resolve().then(()=>(_c(),$f)),"./modules/market/views/compactList.js":()=>Promise.resolve().then(()=>(Dc(),Af)),"./modules/market/views/deals.js":()=>Promise.resolve().then(()=>(Ac(),xf)),"./modules/market/views/help.js":()=>Promise.resolve().then(()=>(Kc(),Pf)),"./modules/market/views/indices.js":()=>Promise.resolve().then(()=>(Rc(),Sf)),"./modules/market/views/intelligence.js":()=>Promise.resolve().then(()=>(zc(),Cf)),"./modules/market/views/intro.js":()=>Promise.resolve().then(()=>(yr(),Mf)),"./modules/market/views/item.js":()=>Promise.resolve().then(()=>(Sc(),wf)),"./modules/market/views/movers.js":()=>Promise.resolve().then(()=>(Mc(),yf)),"./modules/market/views/overview.js":()=>Promise.resolve().then(()=>(dc(),uf)),"./modules/market/views/portfolio.js":()=>Promise.resolve().then(()=>(Ic(),Ef)),"./modules/market/views/search.js":()=>Promise.resolve().then(()=>(pc(),hf)),"./modules/market/views/table.js":()=>Promise.resolve().then(()=>(Oc(),Tf)),"./modules/market/views/watchlist.js":()=>Promise.resolve().then(()=>($c(),kf)),"./modules/market/watchlist.js":()=>Promise.resolve().then(()=>(Ut(),Vm)),"./modules/matchmaker.js":()=>Promise.resolve().then(()=>(Qc(),Zc)),"./modules/menuTimer.js":()=>Promise.resolve().then(()=>(sd(),od)),"./modules/modDownload.js":()=>Promise.resolve().then(()=>(ad(),id)),"./modules/motionBlur.js":()=>Promise.resolve().then(()=>(ud(),dd)),"./modules/nukeCounter.js":()=>Promise.resolve().then(()=>(fd(),md)),"./modules/playerLists.js":()=>Promise.resolve().then(()=>(Kn(),Dp)),"./modules/presence.js":()=>Promise.resolve().then(()=>(ca(),Kp)),"./modules/privateMatch.js":()=>Promise.resolve().then(()=>(Bn(),Sp)),"./modules/queueSound.js":()=>Promise.resolve().then(()=>(Qa(),Fh)),"./modules/rampBoost.js":()=>Promise.resolve().then(()=>(pn(),pu)),"./modules/rankProgress.js":()=>Promise.resolve().then(()=>(vd(),bd)),"./modules/rankedAlert.js":()=>Promise.resolve().then(()=>(yd(),kd)),"./modules/realPing.js":()=>Promise.resolve().then(()=>(Ed(),Sd)),"./modules/recovery.js":()=>Promise.resolve().then(()=>(Md(),Cd)),"./modules/renderFps.js":()=>Promise.resolve().then(()=>(Ld(),Ad)),"./modules/serverPings.js":()=>Promise.resolve().then(()=>(Id(),Pd)),"./modules/sessionRecovery.js":()=>Promise.resolve().then(()=>(wn(),$u)),"./modules/settingsTransfer.js":()=>Promise.resolve().then(()=>(Bd(),_d)),"./modules/showPing.js":()=>Promise.resolve().then(()=>(Od(),Hd)),"./modules/spotifyOverlay.js":()=>Promise.resolve().then(()=>(qd(),Dd)),"./modules/versionTag.js":()=>Promise.resolve().then(()=>(Ud(),jd)),"./modules/withdrawn.js":()=>Promise.resolve().then(()=>(Wd(),Cg))})});var Ng={};A(Ng,{default:()=>xx});function Rg(s){return`toggle${s.charAt(0).toUpperCase()+s.slice(1)}`}function Mg(s){let e=s.disabledBy?Vt[s.disabledBy]:null;return e&&d.settings.data[e.id]===!0?e:null}function Pg(s,e){let t=d.settings[Rg(s)];if(typeof t=="function"){t(e);return}if(e)try{Lg(`./modules/${s}.js`).catch(()=>{})}catch{}}function Ig(s,e){switch(s){case"exitButton":U("#clientExit").style.display=`${e?"flex":"none"}`;break;case"menuTimer":e?Promise.resolve().then(()=>ue(ed(),1)).then(t=>{let o=document.createElement("style");o.id="kute_menuTimerCSS",o.textContent=t.default,document.head.append(o)}):document.querySelector("#kute_menuTimerCSS")?.remove();break;case"classicMenu":e?Promise.resolve().then(()=>ue(ui(),1)).then(t=>{let o=document.createElement("style");o.id="kute_classicMenuCSS",o.textContent=t.default,document.head.append(o)}):document.querySelector("#kute_classicMenuCSS")?.remove();break;case"cleanUI":{e?Promise.resolve().then(()=>ue(di(),1)).then(t=>{let o=document.createElement("style");o.id="kute_cleanCSS",o.textContent=t.default,document.head.append(o)}):document.querySelector("#kute_cleanCSS")?.remove();break}case"textSelect":{if(e){let t=document.createElement("style");t.id="kute_textSelectCSS",t.textContent="#chatHolder * { user-select: text }",document.head.append(t)}else document.querySelector("#kute_textSelectCSS")?.remove();break}default:break}}function kx(s,e){for(let t of Object.values(Vt)){if(t.disabledBy!==s)continue;let o=!e&&!!d.settings.data[t.id],n=document.querySelector(`#${t.id}`);if(n instanceof HTMLInputElement){n.checked=o,n.disabled=e;let r=n.closest("label");r&&(r.style.cssText=e?Mr:"",r.title=e?`Off while ${Vt[s].name} is on`:"")}Pg(t.id,o)}}var Yd,Mr,bx,vx,wx,Vt,Tg,Ag,yx,Xd,xx,_g=w(()=>{"use strict";Yo();F();Ae();Co();pn();Vd();Yd=new Map,Mr="opacity: 0.35; cursor: not-allowed",bx='window.setSetting("rawMouse"',vx="Controlled by Kute's Raw Input setting",wx="Not available on Linux",Vt=Tt;d.settings.changeSetting=(s,e,t)=>{if(e==="")return;let o=document.querySelector(`#${s}`);o instanceof HTMLInputElement&&(o.value=String(e),o.type==="checkbox"&&(o.checked=e===!0));let n=e;typeof n=="string"&&/^-?\d*\.?\d+$/.test(n)&&(n.includes(".")?n=Number.parseFloat(n):n=Number.parseInt(n,10));let r=document.querySelector(`#slid_input_${s}`);if(r&&t){r.value=String(n),clearTimeout(Yd.get(s)),Yd.set(s,setTimeout(()=>{d.settings.data[s]=n,window.chrome.webview.postMessage(`set-config, ${s}, ${n}`),Yd.delete(s)},500));return}switch(s){case"obsCapturePlugin":if(n&&!confirm("Install the Kute Capture plugin into OBS? OBS must be closed, and Windows may ask for administrator permission.")){ke("#obsCapturePlugin").checked=!1;return}window.chrome.webview.postMessage(`obs-plugin, ${n}`);break;case"rampBoost":n?He()||Zt(!0):Zt(!1);break;default:Ig(s,n);break}let i=Rg(s);if(typeof d.settings[i]!="function")try{Lg(`./modules/${s}.js`).catch(()=>{})}catch{}else d.settings[i](n);d.settings.data[s]=n,window.chrome.webview.postMessage(`set-config, ${s}, ${n}`),kx(s,n===!0)};Tg=' *',Ag=' *',yx=()=>{let s=e=>`window.chrome.webview.postMessage('open-url, ${e}')`;return[["About","info","kuteTopBlue",`${Ue}.showAboutPopup()`],["Website","language","kuteTopBlue",s("https://kute.lol")],["Source Code","code","kuteTopPink",s("https://github.com/NullDev/Kute")],["Report Issue","bug_report","kuteTopPink",s("https://github.com/NullDev/Kute/issues/choose")],["Manage Swapper","swap_horiz","kuteTopOrange",`${Ue}.swapperManager.open()`],["Manage Userscripts","extension","kuteTopOrange",`${Ue}.userscriptManager.open()`]]},Xd=class{constructor(){this.settingsWindow=window.windows[0],this.init()}init(){let e=this.settingsWindow.getSettings;this.settingsWindow.getSettings=(...t)=>{let o=this.lockRawMouse(e.call(this.settingsWindow,...t)),n=this.getCSettings();if(!n)return o;let r=o.startsWith("
      ");return(r?o.slice(6):o)+n+(r?"
      ":"")},this.settingsWindow.getCSettings=()=>this.getCSettings(),d.settings.togglePerformanceMode=t=>{for(let o of un(d.settings.data,t)){let n=d.settings.data[o];Ig(o,n),Pg(o,n===!0&&!Mg(Vt[o]))}setTimeout(()=>this.rerender(),0)},d.openKuteSettings=()=>{window.showWindow(1),this.settingsWindow.changeTab(this.settingsWindow.tabs[this.settingsWindow.settingType].length-1)},window.chrome.webview.addEventListener("message",t=>{let o=t.data;if(o?.type==="obs-plugin"){if(!o.ok){d.settings.data.obsCapturePlugin=!1;let n=document.querySelector("#obsCapturePlugin");n&&(n.checked=!1)}d.showNotification(o.message,!1,5)}})}rerender(){let e=this.settingsWindow.tabs[this.settingsWindow.settingType];(this.settingsWindow.tabIndex===e.length-1||this.settingsWindow.settingSearch)&&this.settingsWindow.changeTab(this.settingsWindow.tabIndex)}lockRawMouse(e){let t=e.indexOf(bx);if(t<0)return e;let o=e.lastIndexOf("",t),r=e.lastIndexOf("",r);if(i<0||i>o)return e;let a=e.slice(o,n).replace(/\s+checked\b/,"")+(d.settings.data.rawInput&&d.platform!=="linux"?" checked":"")+" disabled>",l=d.platform==="linux"?wx:vx;return e.slice(0,i)+` title="${l}">`+e.slice(i+1,o)+a+e.slice(n+1)}searchMatches(e){let t=this.settingsWindow.settingSearch.toLowerCase()||"";return[e.name,e.category,e.description??""].some(o=>o.toLowerCase().includes(t))}generateHtml(e){let t=d.settings.data[e.id],o=e.buttonAction?.replaceAll("{{kute}}",Ue).replaceAll('"',""")??"",n=e.requiresLogin&&document.querySelector("#signedInHeaderBar")===null,r="",i=e.type==="checkbox"?"margin-right: 8px; ":"";switch(e.button&&n?r=`
      ${e.button}
      `:e.button&&(r=`
      ${e.button}
      `),e.type){case"checkbox":{let a=Mg(e);if(a)return`
      ");return(r?o.slice(6):o)+n+(r?"
      ":"")},this.settingsWindow.getCSettings=()=>this.getCSettings(),u.settings.togglePerformanceMode=t=>{for(let o of pn(u.settings.data,t)){let n=u.settings.data[o];Ig(o,n),Pg(o,n===!0&&!Mg(Vt[o]))}setTimeout(()=>this.rerender(),0)},u.openKuteSettings=()=>{window.showWindow(1),this.settingsWindow.changeTab(this.settingsWindow.tabs[this.settingsWindow.settingType].length-1)},window.chrome.webview.addEventListener("message",t=>{let o=t.data;if(o?.type==="obs-plugin"){if(!o.ok){u.settings.data.obsCapturePlugin=!1;let n=document.querySelector("#obsCapturePlugin");n&&(n.checked=!1)}u.showNotification(o.message,!1,5)}})}rerender(){let e=this.settingsWindow.tabs[this.settingsWindow.settingType];(this.settingsWindow.tabIndex===e.length-1||this.settingsWindow.settingSearch)&&this.settingsWindow.changeTab(this.settingsWindow.tabIndex)}lockRawMouse(e){let t=e.indexOf(bx);if(t<0)return e;let o=e.lastIndexOf("",t),r=e.lastIndexOf("",r);if(i<0||i>o)return e;let a=e.slice(o,n).replace(/\s+checked\b/,"")+(u.settings.data.rawInput&&u.platform!=="linux"?" checked":"")+" disabled>",l=u.platform==="linux"?wx:vx;return e.slice(0,i)+` title="${l}">`+e.slice(i+1,o)+a+e.slice(n+1)}searchMatches(e){let t=this.settingsWindow.settingSearch.toLowerCase()||"";return[e.name,e.category,e.description??""].some(o=>o.toLowerCase().includes(t))}generateHtml(e){let t=u.settings.data[e.id],o=e.buttonAction?.replaceAll("{{kute}}",Ue).replaceAll('"',""")??"",n=e.requiresLogin&&document.querySelector("#signedInHeaderBar")===null,r="",i=e.type==="checkbox"?"margin-right: 8px; ":"";switch(e.button&&n?r=`
      ${e.button}
      `:e.button&&(r=`
      ${e.button}
      `),e.type){case"checkbox":{let a=Mg(e);if(a)return` - ${r}`;if(n)return`
      `}function na(s,e,t,o,n=!1){let r=_i(s,e,{prefer:o,inputRequired:t==="test match",trade:n}),i=r.judged.map(d=>({cap:d.cap,where:t,summary:d.summary,frameMs:d.frameMs,netMs:d.netMs,outcome:d.outcome})),a=r.judged.find(d=>d.cap===r.winner),l="measures as smooth as before, with fewer frames to draw";if(r.decidedBy==="net"){let{task:d=0,input:h=null}=a?.gains??{},p=[];d>0&&p.push(`the game reacts ${yt(d)} ms sooner`),h!==null&&h>0&&p.push(`the mouse waits ${yt(h)} ms less`),h!==null&&h<0&&p.push(`the mouse waits ${yt(-h)} ms longer, which the sooner reaction outweighs on a PC below its target`),l=p.length>0?p.join(", "):"frames come sooner and nothing waits longer"}let c=r.judged.filter(d=>d.cap!==e&&d.outcome!=="worse"&&d.outcome!=="not steady").sort((d,h)=>(h.netMs??-1/0)-(d.netMs??-1/0)).map(d=>d.cap);return{rows:i,winner:r.winner,reason:l,order:c}}function _p(s){u.hostFeatures?.includes("mute")&&window.chrome.webview.postMessage(`mute, ${s}`)}function Bp(){return`Takes about two minutes. Don't touch mouse or keyboard meanwhile: a test window opens and closes a few times, then Kute plays a private match by itself, turning the view and firing.${u.hostFeatures?.includes("mute")?" The game is muted meanwhile.":""}`}function Ts(){return Oe.some(s=>u.settings.data[s.setting]!==!1!=(u.running?.[s.setting]!==!1))}function zp(s){return s.report?.version===2?s.report:void 0}function Hp(s){return new Promise(e=>{let t=performance.now(),o={frames:0,done:!1,watchdog:0},n=()=>{o.frames++;let r=performance.now()-t;if(r{o.done||e(null)},s+2e3)})}async function Zv(s){if(s===0)return!0;let e=performance.now()+Fv;for(;performance.now()typeof t=="number"?Math.round(t*100)/100:null;return{fps:e(s.fps),p50:e(s.p50),p99:e(s.p99),maxMs:e(s.maxMs),stallMs:e(s.stallMs),taskP99:e(s.taskP99),inputP99:e(s.inputP99),...typeof s.presentMs=="number"?{presentMs:e(s.presentMs)}:{},...s.invalid?{invalid:!0,why:s.why}:{},...s.load?{load:s.load}:{}}}function io(s){return ye(s).fps.median??0}var qn,Mp,Tp,ea,Ov,Dv,ta,On,Ap,Fv,Ms,qv,Kv,jv,Lp,Rp,oa,Uv,De,kt,ra,Op,aa=w(()=>{"use strict";yp();D();zn();Ae();Ki();ji();ks();Qi();Xi();qn="kute_autodetect",Mp="kute_autodetect_asked",Tp=250,ea=1500,Ov=3e5,Dv=2e4,ta=3*Bt,On=2*Bt,Ap=6*Bt,Fv=6e3,Ms=450,qv=700,Kv=.08,jv=["gameFpsLimit","throttle",...Oe.map(s=>s.setting)],Lp="autodetect-v2",Rp="https://krunker.io/",oa="kute_autodetect_stopped",Uv={taskP99:"the game reacted later",inputP99:"the mouse waited longer",p99:"slow frames came later",stallMs:"more stutter",maxMs:"a longer freeze",frame:"frames took longer, and the mouse wait could not be measured",unsteady:"it did not run steadily"},De=s=>new Promise(e=>{setTimeout(e,s)});kt=class{constructor(){document.querySelector("#adPanelHost")?.parentElement?.remove(),this.overlay=document.createElement("div"),this.onEscape=void 0,this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.93)";let e=document.createElement("div");e.id="adPanelHost",this.overlay.append(e),this.root=e.attachShadow({mode:"open"}),this.root.innerHTML=xp,document.body.append(this.overlay)}element(e){return this.root.querySelector(`#${e}`)}progress(e,t){this.element("adStatus").textContent=e,this.element("adBarFill").style.width=`${Math.round(t*100)}%`}choose(e,t,o,n){let r=o.find(l=>l.cancel);this.dismissWith(r?()=>r.onPick():void 0),this.element("adTitle").textContent=e,this.element("adStatus").textContent=t;let i=this.element("adNote");i.textContent=n??"",i.style.display=n?"block":"none",this.element("adBar").style.display="none",this.element("adHint").style.display="none";let a=this.element("adActions");a.style.display="flex",a.innerHTML="";for(let l of o){let c=document.createElement("div");c.className="adButton",c.textContent=l.label,c.onclick=()=>l.onPick(),a.append(c)}}result(e,t={}){this.dismissWith(()=>this.close()),this.element("adTitle").textContent=e.title,this.element("adStatus").textContent=e.line,this.element("adNote").style.display="none",this.element("adBar").style.display="none",this.element("adHint").style.display="none",this.element("adActions").style.display="flex",this.element("adDetailsButton").style.display="none",this.element("adUndo").style.display=e.changed&&t.onUndo?"":"none",this.element("adRun").style.display=t.onRun?"":"none",this.element("adRestart").style.display=e.needsRestart?"":"none",this.element("adRestart").onclick=()=>window.chrome.webview.postMessage("restart"),this.element("adAdvancedButton").style.display=t.report?"":"none";let o=this.element("adDetails");if(o.innerHTML=e.details.map(n=>`
    • ${n}
    • `).join(""),o.style.display=e.details.length>0?"block":"none",t.report){let n=this.element("adAdvanced");n.innerHTML=Jv(t.report);let r=this.element("adAdvancedButton");r.textContent="Advanced",r.onclick=()=>{let i=n.style.display!=="block";n.style.display=i?"block":"none",this.element("adPanel").classList.toggle("adWide",i),r.textContent=i?"Hide advanced":"Advanced"},this.element("adCopy").onclick=()=>{let i=JSON.stringify({kute:u.version,...t.report},null,2);navigator.clipboard.writeText(i).then(()=>{this.element("adCopy").textContent="Copied"},()=>{this.element("adCopy").textContent="Copying failed"})}}this.element("adOk").onclick=()=>this.close(),this.element("adUndo").onclick=()=>{this.close(),t.onUndo?.()},this.element("adRun").onclick=()=>{this.close(),t.onRun?.()}}clickThrough(e){this.overlay.style.pointerEvents=e?"none":""}dismissWith(e){this.unbindEscape(),this.overlay.onclick=e?t=>{t.target===this.overlay&&e()}:null,e&&(this.onEscape=t=>{t.key==="Escape"&&(t.stopPropagation(),e())},document.addEventListener("keydown",this.onEscape,!0))}unbindEscape(){this.onEscape&&document.removeEventListener("keydown",this.onEscape,!0),this.onEscape=void 0}close(){this.unbindEscape(),this.overlay.remove()}};ra=class{constructor(){this.running=!1,this.cancelled=!1}snapshot(){return{client:Object.fromEntries(jv.map(e=>[e,u.settings.data[e]])),game:Object.fromEntries(Gi.map(e=>[e,Es(e)]))}}restore(e){_n();for(let[t,o]of Object.entries(e.game))o!==null&&Es(t)!==o&&Me(t,o);for(let[t,o]of Object.entries(e.client))o!==void 0&&u.settings.data[t]!==o&&Ht(t,o)}undo(){let e=zt();if(!e?.undoable){u.showNotification("Nothing to undo",!1,3);return}let t=new Set(vt.filter(i=>i.needsReload).map(i=>i.id)),o=Object.entries(e.snapshot.game).some(([i,a])=>t.has(i)&&a!==null&&Es(i)!==a);this.restore(e.snapshot);let n=Ts();e.undoable=!1;let r="Your previous settings are back.";o&&(r="Your previous settings are back, the game reloads once to apply them."),n&&(r+=" Restart Kute to finish."),e.summary={title:"Undone",line:r,details:[],changed:!1,needsRestart:n},Fe(e),u.showNotification(`Auto-detect undone. ${r.replace("Your previous settings are back","Your settings are back")}`,!1,5),o&&setTimeout(()=>location.reload(),1200)}dropUndo(){let e=zt();e?.undoable&&(e.undoable=!1,Fe(e))}showLast(){let e=zt();if(!e?.summary){u.showNotification("Auto-detect has not run yet",!1,3);return}new kt().result(e.summary,{onUndo:e.undoable?()=>this.undo():void 0,report:zp(e)})}async start(e={}){if(this.running)return;if(!u.hostFeatures?.includes(Lp)){u.showNotification("Auto-detect needs a newer Kute, update the client to use it",!1,6);return}if(u.recovery){u.showNotification("Auto-detect can't run in safe mode or while Kute looks for the cause of a crash",!1,6);return}if(!As()){u.showNotification("Log in first: auto-detect measures in a private test match, and hosting one needs an account",!1,6);return}if(document.pointerLockElement||He()){u.showNotification("Open the menu outside of a competitive match first",!1,4);return}if(!e.resume&&Ts()){u.showNotification("Restart Kute first: a setting you changed only applies after a restart, auto-detect would test the old one",!1,7);return}this.running=!0,this.cancelled=!1,window.closWind?.();let t,o;if(e.resume)t=e.resume,o=t.previous??null;else{o=zt(),o&&(delete o.wizard,delete o.wizardDetails);let l=this.snapshot();t={status:"running",at:Date.now(),snapshot:e.snapshot??l,baseline:l,previous:o,details:e.details??[]},Fe(t)}let n=new kt,r=l=>{l.key==="Escape"&&(this.cancelled=!0,Di())};document.addEventListener("keydown",r,!0);let i={inMatch:!1},a=()=>{window.chrome.webview.postMessage("input-replay-stop"),this.restore(t.snapshot),Fe(o||{status:"prompted",at:Date.now(),snapshot:t.snapshot}),n.close(),Ts()&&u.showNotification("Your settings are back. Restart Kute to finish",!1,7),i.inMatch&&(document.exitPointerLock(),location.href=Rp)};try{let l=await this.run(n,t,i);if(l==="restarting")return;if(l===null){a();return}t.status="done",t.summary=l.summary,t.report=l.report,t.undoable=l.summary.changed,!l.summary.changed&&o?.undoable&&(t.snapshot=o.snapshot,t.undoable=!0),delete t.previous,delete t.baseline,delete t.carry,delete t.details,t.showSummary=!0,Fe(t),n.progress("Leaving the test match",1),document.exitPointerLock(),await De(800),location.href=Rp}catch(l){let c=`Auto-detect stopped: ${l instanceof Error?l.message:String(l)}`;i.inMatch&&sessionStorage.setItem(oa,c),a(),u.showNotification(c,!1,7)}finally{document.removeEventListener("keydown",r,!0),_p(!1),window.chrome.webview.postMessage("throttle, menu"),this.running=!1}}async run(e,t,o){let n=Gv(),r=t.baseline??t.snapshot,i=t.details??[],a=performance.now()-(t.carry?.elapsedMs??0),l=!!t.carry;e.progress("Reading your hardware",.02);let c=await Te("get-specs","specs");if(c===null)throw new Error("this needs a newer version of the client");let d=c.displays??[],h=d.find(M=>M.hostsWindow)??d[0],p=n.hz??(h?.hz>1?h.hz:60),m=(c.gpus??[]).filter(M=>!M.software),f=c.renderAdapter?.name??[...m].sort((M,F)=>F.vramMb-M.vramMb)[0]?.name??"unknown graphics card",g=n.battery??!!c.onBattery,b=n.laptop??(!!c.laptop||c.hybrid===!0),v=p*3,k=u.hostFeatures?.includes("load-sample")===!0,E=u.running?.hardFlip!==!1,L=Number(r.game[wt])||0,x=Number(r.client.gameFpsLimit)||0,$=Number(r.client.throttle)||1,I=[x,L].filter(M=>M>0),_=I.length>0?Math.min(...I):0,H=Pn(),G=null,J=[],B=[];if(!l){if(G=await Fi({hz:p,hybrid:c.hybrid===!0,progress:(M,F)=>e.progress(M,.03+.27*F),cancelled:()=>this.cancelled}),this.cancelled)return null;if(G&&n.force&&n.force in H&&(G={...G,winner:{...H,[n.force]:!H[n.force]},changed:!0,decidedBy:"p99"}),G){e.progress("Testing FPS limits",.31);let M=[...new Set([0,v,2*p,p,_])].sort((q,ee)=>ee-q),F=await qi({pipeline:G.winner,common:G.common,caps:M,cancelled:()=>this.cancelled});if(this.cancelled)return null;if(F){let q=na(F,_,"client test",b?v:void 0);J=q.rows,B=q.order}}}e.progress("Opening a private test match",.38),_p(!0),e.clickThrough(!0);let re=await $s(),je=!1;if(re&&(e.progress("Joining the test match",.41),je=await Cs(re)),e.clickThrough(!1),!je)throw window.closWind?.(),new Error("could not open a private test match (is a host slot free?)");o.inMatch=!0;let be=()=>{if(!Bn(re))throw new Error("left the private test match")};if(this.cancelled)return null;L>0&&l&&Me(wt,"0");let Ee=Number(u.settings.data.gameFpsLimit)||0,j=!0;Hn(),window.chrome.webview.postMessage("throttle, game"),await De(2500),await De(300),window.chrome.webview.postMessage("bring-to-front");let X=async(M,F=ta)=>{M!==Ee&&(Ht("gameFpsLimit",M),Ee=M,await De(qv),j=await Zv(M)),be(),k&&await Te("load-sample","loadSample",500),E&&await Te("get-present-intervals","presentIntervals",400);let q=await Zi({ms:F,hz:p,replay:!0});if(E){let ee=await Te("get-present-intervals","presentIntervals",400);ee&&ee.samples>0&&(q.presentMs=ee.p50)}if(k&&(q.load=await Te("load-sample","loadSample",500)),be(),!j&&!q.invalid&&(q.invalid=!0,q.why="nothing held the FPS limit"),n.collapse!==void 0&&(M===0||M>=n.collapse)){let ee=(te,O)=>(te??0)+O;return{...q,fps:(q.fps??0)/2,stallMs:400,p99:ee(q.p99,25),maxMs:ee(q.maxMs,40),taskP99:ee(q.taskP99,40),inputP99:ee(q.inputP99,30)}}return q},Y=async()=>{if(!k)return[];await X(0,Bt),window.chrome.webview.postMessage(`input-replay, ${10*Bt}`);let M=[],F=performance.now();for(await Te("load-sample","loadSample",500);performance.now()-F<10*Bt&&!this.cancelled;){let q=await Hp(300);if(q===null)break;M.push({ms:Math.round(performance.now()-F),fps:Math.round(q),load:await Te("load-sample","loadSample",500)})}return window.chrome.webview.postMessage("input-replay-stop"),M},y=async(M,F=ta)=>{let q=[];for(let ee=0;ee<5&&q.length<2&&!this.cancelled;ee++){let te=await X(M,F);te.invalid||q.push(te)}return q},C=async M=>{for(let F=0;F<4&&!this.cancelled;F++)if(!gt([await X(M,On)],M))return},R=async M=>{let F=new Map(M.map(q=>[q,[]]));for(let q=0;q<2;q++)for(let ee of M){if(this.cancelled)return F;F.get(ee)?.push(await X(ee))}return F},{carry:K}=t;if(!K){e.progress("Measuring how the game runs now",.45),await X(Ee);let M=await y(Ee);if(this.cancelled)return null;if(M.length<2)throw new Error("the game could not be measured, the Kute window has to stay in front during the test");L>0&&Me(wt,"0"),$>1&&(Ht("throttle",1),window.chrome.webview.postMessage("throttle, game"),await De(Ms)),e.progress("Measuring what this PC can do",.5);let q=_===0&&$<=1?[...M,await X(0)]:[await X(0),await X(0),await X(0)];if(this.cancelled)return null;if(K={asPlayed:M,uncapped:q,playedCap:_,pipelineBefore:H,pipelineAfter:G?.winner??H,pipelineChanged:!!G?.changed,decidedBy:G?.decidedBy??null,rows:G?.rows??[],benchCaps:J,capOrder:B,elapsedMs:performance.now()-a},K.pipelineChanged){t.carry=K,Fe(t),L>0&&Me(wt,String(L)),Ee!==x&&Ht("gameFpsLimit",x);for(let ee of Oe)K.pipelineAfter[ee.setting]!==H[ee.setting]&&Ht(ee.setting,K.pipelineAfter[ee.setting]);return document.exitPointerLock(),e.choose("Kute restarts once","The client test found a setup that runs better on this PC. Kute restarts with it and checks it in the game, the test goes on by itself.",[]),await De(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}}let{playedCap:z}=K,N=K,V=M=>({version:2,gpu:f,cpu:`${c.cpu?.name??"unknown processor"}, ${c.cpu?.threads??"?"} threads`,hz:p,laptop:!!c.laptop,hybrid:typeof c.hybrid=="boolean"?c.hybrid:null,powerOverlay:c.powerOverlay??null,capacity:io(N.uncapped),unlimited:N.uncapped.map(Fn),played:N.asPlayed.map(Fn),adapters:{render:c.renderAdapter?.luid??null,display:h?.adapter??null},hybridSource:c.hybridSource??null,client:{...Object.fromEntries(["gameFpsLimit","throttle","inMenuThrottle","uncapFps","patchFrameLimiter","obsCapturePlugin","renderStats","performanceMode","webviewPriority",...Oe.map(F=>F.setting)].map(F=>[F,r.client[F]??u.settings.data[F]??null])),gameFrameCap:L,hook:c.hook??null,limiter:u.frameLimiter??null,running:u.running??null},noise:0,drift:1,headroom:1,beforeCap:z,before:ye(N.asPlayed),afterCap:z,after:null,pipeline:N.rows,caps:N.benchCaps,halfResolutionGain:null,settings:[],plan:Nn({capacity:io(N.uncapped),hz:p,headroom:1,halfResolutionGain:null,settings:[]}),input:Hn(),rolledBack:null,pipelineRefused:N.pipelineRefused??null,recheck:N.recheck??[],seconds:(performance.now()-a)/1e3,...M}),de=(M,F={})=>{this.restore(t.snapshot);let q=Ts();return{summary:{title:"Nothing changed",line:q?`${M} Restart Kute to finish.`:M,details:[],changed:!1,needsRestart:q},report:V({...F,rolledBack:M})}},Z=io(N.uncapped){let{keep:ee,failed:te}=ws(M,F,{capBefore:z,capAfter:q,trade:Z});return ee?null:te==="reference"?"Kute could not measure the game with your own settings well enough to compare (its window has to stay in front), so it put yours back.":te==="result"?"Kute could not measure the result (its window has to stay in front), so it put your settings back.":`The new settings measured worse than yours (${te==="fps"?`${Math.round(io(F))} FPS, ${Math.round(io(M))} before`:Uv[te??""]}), so Kute put yours back.`},le=[...i];if($>1&&le.push(`CPU Throttling: ${$} \u2192 off (it slows the game down on purpose, the result is checked against how the game ran with it)`),l&&N.pipelineChanged&&!N.pipelineRefused){e.progress("Checking the new setup in the game",.5);let M=await y(z);if(this.cancelled)return null;let F={recheck:M.map(Fn)},q=gt(N.asPlayed,z)&>(M,z)?null:ge(N.asPlayed,M,z);if(q&&ws(N.asPlayed,M,{capBefore:z,capAfter:z,trade:Z}).failed==="result")return de(q.replace("The new settings","The setup that won the client test"),F);if(q){for(let O of Oe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&Ht(O.setting,N.pipelineBefore[O.setting]);return L>0&&Me(wt,String(L)),Ee!==x&&Ht("gameFpsLimit",x),t.carry={...N,pipelineRefused:q.replace("The new settings","The setup that won the client test"),...F,elapsedMs:performance.now()-a,resumed:!1},Fe(t),document.exitPointerLock(),e.choose("Kute restarts once more","The setup from the client test ran worse in the game, so Kute goes back to yours and tests the FPS limits on it.",[]),await De(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}let ee=N.rows.find(O=>Oe.every(ve=>O.pipeline[ve.setting]===N.pipelineAfter[ve.setting])),te=ee?Wv(N.decidedBy,ye(N.rows[0].readings),ye(ee.readings)):"measured better";for(let O of Oe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&le.push(`${O.label}: ${ut(N.pipelineBefore[O.setting])} \u2192 ${ut(N.pipelineAfter[O.setting])} (${te})`)}e.progress("Finding the FPS limit that runs best",.56);let Be=io(N.uncapped),Yt=Be>=v?v:p,xo=M=>!g||M===z||M!==0&&M<=v,zg=N.uncapped.filter(vs).length>=2,Ar=(b||zg)&&Be>=v?v:void 0,ze=new Map,Xt=[],se=z,Go="",Ie=Be,at=bs(new Map([[0,N.uncapped]]));if(!at){let M=N.capOrder.length>0?N.capOrder.slice(0,2):zi({hz:p,capacity:Be,current:z}).slice(1,3),F=[...new Set([z,0,...M,...Ar?[Ar]:[],...g?[Yt]:[]])].filter(xo);if(ze=await R(F),this.cancelled)return null;at=bs(ze);let q=na(ze,z,"test match",Ar,Z);if(Xt=q.rows,!at){se=q.winner,Go=q.reason,Ie=io(ze.get(0)??[])||Be;let ee=Hi([...ze.keys()],se,Ie,p).filter(te=>xo(te)&&te0){e.progress("Fine tuning the FPS limit",.64);let te=await R(ee);if(this.cancelled)return null;let O=na(new Map([[se,ze.get(se)??[]],...te]),se,"test match",void 0,Z);Xt.push(...O.rows.filter(ve=>ve.cap!==se));for(let[ve,Ye]of te)ze.set(ve,Ye);O.winner!==se&&(se=O.winner,Go=O.reason),at=bs(ze)}}}let Wo;if(at){e.progress("Finding the FPS limit this PC holds steadily",.62);let M=new Map;await C(p);for(let te of Ln(p)){if(this.cancelled)return null;let O=await y(te,Ap);if(M.set(te,O),!no(O,te))break}if(this.cancelled)return null;let F=Ni(p,M),q=(Kn([...N.uncapped,...ze.get(0)??[]].filter(gs).map(te=>te.stallMs))??0)/1e3;Wo={stoodStill:q,steadyUpTo:F.steadyUpTo,limit:F.cap};for(let te of Xt)te.outcome==="better"&&(te.outcome="not used");for(let[te,O]of M){let ve=no(O,te)?"steady":"not steady";Xt.push({cap:te,where:"test match",summary:ye(O.map(_o)),frameMs:Kn(O.map(Ye=>Ye.p50)),netMs:null,outcome:ve}),ze.set(te,O)}let ee=z>0&&no(N.asPlayed,z);se=z,ee||(se=[...new Set([F.cap,F.steadyUpTo])].filter(O=>O!==null).find(O=>ws(N.asPlayed,M.get(O)??[],{capBefore:z,capAfter:O}).keep)??z),Go=`without a limit this PC stood still ${Math.round(q*100)} % of the time. Up to ${F.steadyUpTo} FPS it ran steadily in the empty test match, ${se} FPS ${(F.steadyUpTo??0)>se?"leaves a step of room for a real match":"is the highest that did"}`}let Vo=Xt.find(M=>M.cap===Yt),Hg=Vo!==void 0&&(Vo.outcome==="steady"||Vo.netMs!==null&&(Vo.outcome==="better"||Vo.outcome==="not better"));g&&(se===0||se>v)&&Hg&&(se=Yt,Go="on battery");for(let M of Xt)M.cap===se&&M.cap!==z&&M.outcome!=="not steady"&&(M.outcome="chosen"),M.readings=(ze.get(M.cap)??[]).map(Fn);let ln=N.uncapped.map(M=>M.fps).filter(M=>typeof M=="number"),Jd=ln.length>1?(Math.max(...ln)-Math.min(...ln))/Math.max(1,...ln):0,Lr=1,cn=1,Rr=null;if(!at){Rr=await X(0);let M=(l?ze.get(0)?.[0]:N.uncapped[0])?.fps??Ie;Lr=(Rr.fps??Ie)/Math.max(1,M),cn=Bi(Lr,Jd)}let Og=v*cn,So=[],Pr=null,Yo=Number(r.game[ro])||1;if(at)for(let M of vt)So.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC does not run steadily without a limit)"});else if(IeO.inputP99!==null),F=Rr?.fps??Ie,q=async(O,ve)=>{let Ye=F;O(),await De(Ms);let lt=async()=>{let ru=await X(0,On);return ru.invalid?null:ru.fps},Jt=await lt();ve(),await De(Ms);let Xe=await lt();if(Jt===null||Xe===null)return{ratio:1,steady:!1,raw:[Ye,Jt??0,Xe??0]};F=Xe;let nu=(Ye+Xe)/2;return{ratio:Jt/Math.max(1,nu),steady:Math.abs(Ye-Xe)/Math.max(1,nu)<=Kv,raw:[Ye,Jt,Xe]}},ee=vt.filter(O=>!O.needsReload&&(M||!O.fightOnly));for(let O of vt){let ve=r.game[O.id],Ye=String(O.cheap),lt={id:O.id,label:O.label,current:ve??"default",cheap:Ye,gain:null,steady:!0};if(So.push(lt),O.needsReload){lt.note="not tested (needs a reload)";continue}if(O.fightOnly&&!M){lt.note="not tested (only costs in a fight)";continue}if(ve===null){lt.note="value unknown";continue}if(this.cancelled)return null;e.progress(`Measuring ${O.label}`,.68+.17*ee.indexOf(O)/ee.length);let Jt=Vi(ve),Xe=await q(()=>Me(O.id,Jt),()=>Me(O.id,ve));lt.gain=Jt===Ye?Xe.ratio:1/Math.max(.01,Xe.ratio),lt.steady=Xe.steady,lt.raw=Xe.raw}for(let O of So){if(O.gain===null||!O.steady||O.current===O.cheap||O.gainMe(O.id,O.cheap),()=>Me(O.id,O.current));O.confirmGain=ve.ratio,O.gain=Math.min(O.gain,ve.ratio),O.steady=ve.steady}e.progress("Checking the graphics card",.88);let te=await q(()=>Me(ro,String(Math.max(.1,Yo*.5))),()=>Me(ro,String(Yo)));Pr=te.steady&&te.ratio>.92?te.ratio:null}else for(let M of vt)So.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC reaches its target)"});if(this.cancelled)return null;let Ct=Nn({capacity:Ie,hz:p,headroom:cn,halfResolutionGain:Pr,settings:So});for(let M of Ct.changes)le.push(`${M.label}: ${ut(r.game[M.id])} \u2192 ${ut(M.value)} (${M.reason})`),Me(M.id,String(M.value));let Mt=null;if((Ct.changes.length>0||Ct.tuneResolution)&&(await De(Ms),Mt=(await X(0,On)).fps),Ct.tuneResolution&&Mt!==null){let M=Yo;for(let F=0;F<2&&Mt!==null&&Mtxs&&!this.cancelled;F++){let q=F===0?M*Math.sqrt(Mt/Ct.needed):xs;M=Math.min(M,Math.max(xs,Math.floor(q*20)/20)),e.progress(`Trying resolution ${M}`,.9+F*.01),Me(ro,String(M)),await De(Ms),Mt=(await X(0,On)).fps}M!==Yo&&le.push(`Resolution: ${Yo} \u2192 ${M} (the graphics card is the limit)`)}if(this.cancelled)return null;e.progress("Checking the result",.94),Ct.changes.length>0&&await X(se);let Zd=at?await Y():[];at&&await C(se);let Qd=await y(se,at?Ap:ta);if(this.cancelled)return null;let Ir={capacity:Ie,noise:Jd,drift:Lr,headroom:cn,afterCap:se,after:ye(Qd),caps:[...N.benchCaps,...Xt],halfResolutionGain:Pr,settings:So,plan:Ct,pushed:Wo,...Zd.length>0?{trace:Zd}:{}},Nr=se!==z,Dg=!Nr&&L>0&&(x===0||LFPS Limit
      ${[Bo("This PC",`

      ${s.gpu}
      ${s.cpu}${s.laptop?" (laptop)":""}, ${s.hz} Hz${s.powerOverlay?`, Windows power mode: ${s.powerOverlay}`:""}.${h}

      - ${m}${s.rolledBack?`

      ${s.rolledBack}

      `:""}${s.pipelineRefused?`

      ${s.pipelineRefused}

      `:""}${Vv(s.input)}${b}`),Bo("Before and after",`${Dn(`${f}`,[`Before (${Dt(s.beforeCap)})${sa(s.before)}`,s.after?`After (${Dt(s.afterCap)})${sa(s.after)}`:""])}${s.after?"":'

      Your setup stayed as it was, so there is no after to measure.

      '}`,{unit:"times in ms"}),Bo("Client test: setup",n.length>0?Dn(`Setup${f}Result`,n,"adNum adWrap"):"

      The client test did not run, the client's own setup was left alone.

      ",{unit:"times in ms"}),...E,Bo("Test match: game settings",`

      ${l}

      ${p} +

      ${_} Game settings were not measured, their gain is read without a limit.

      `}let g=s.played??[],b=g.some(vs)?`

      The game drew more frames than reached the screen: one every ${Ip(Kn(g.map(x=>x.p50)))}, shown one every ${Ip(Kn(g.map(x=>x.presentMs)))}.

      `:"",v=Yv(s),k=s.pushed?"On a PC that does not run steadily without a limit, the limits are not compared with each other: each one only has to run steadily.":"A limit is taken when the game reacts sooner or the mouse waits less with it than with yours (gain above zero), and never when anything measures worse. A lower limit's longer frames are in the mouse wait. Slowest 1 % counts beyond the frame time.",E=i.map((x,$)=>Bo(`${x.where}: FPS limits`,`${x.html}${$===i.length-1?`

      ${k}

      `:""}`,{unit:"times in ms"}));return`
      ${[Bo("This PC",`

      ${s.gpu}
      ${s.cpu}${s.laptop?" (laptop)":""}, ${s.hz} Hz${s.powerOverlay?`, Windows power mode: ${s.powerOverlay}`:""}.${p}

      + ${f}${s.rolledBack?`

      ${s.rolledBack}

      `:""}${s.pipelineRefused?`

      ${s.pipelineRefused}

      `:""}${Vv(s.input)}${b}`),Bo("Before and after",`${Dn(`${m}`,[`Before (${Dt(s.beforeCap)})${sa(s.before)}`,s.after?`After (${Dt(s.afterCap)})${sa(s.after)}`:""])}${s.after?"":'

      Your setup stayed as it was, so there is no after to measure.

      '}`,{unit:"times in ms"}),Bo("Client test: setup",n.length>0?Dn(`Setup${m}Result`,n,"adNum adWrap"):"

      The client test did not run, the client's own setup was left alone.

      ",{unit:"times in ms"}),...E,Bo("Test match: game settings",`

      ${l}

      ${h}

      Settings that need a reload cannot be measured in one test match, they were not changed.

      `),v?Bo("What the PC did",v,{wide:!0}):""].join("")}

      The run took ${s.seconds.toFixed(0)} s. A difference only counts when it is bigger than the spread between two samples of the same setup, - and a setup that measures worse anywhere is never taken.

      Copy this report
      `}function na(s,e,t,o,n=!1){let r=_i(s,e,{prefer:o,inputRequired:t==="test match",trade:n}),i=r.judged.map(d=>({cap:d.cap,where:t,summary:d.summary,frameMs:d.frameMs,netMs:d.netMs,outcome:d.outcome})),a=r.judged.find(d=>d.cap===r.winner),l="measures as smooth as before, with fewer frames to draw";if(r.decidedBy==="net"){let{task:d=0,input:p=null}=a?.gains??{},h=[];d>0&&h.push(`the game reacts ${yt(d)} ms sooner`),p!==null&&p>0&&h.push(`the mouse waits ${yt(p)} ms less`),p!==null&&p<0&&h.push(`the mouse waits ${yt(-p)} ms longer, which the sooner reaction outweighs on a PC below its target`),l=h.length>0?h.join(", "):"frames come sooner and nothing waits longer"}let c=r.judged.filter(d=>d.cap!==e&&d.outcome!=="worse"&&d.outcome!=="not steady").sort((d,p)=>(p.netMs??-1/0)-(d.netMs??-1/0)).map(d=>d.cap);return{rows:i,winner:r.winner,reason:l,order:c}}function _p(s){u.hostFeatures?.includes("mute")&&window.chrome.webview.postMessage(`mute, ${s}`)}function Bp(){return`Takes about two minutes. Don't touch mouse or keyboard meanwhile: a test window opens and closes a few times, then Kute plays a private match by itself, turning the view and firing.${u.hostFeatures?.includes("mute")?" The game is muted meanwhile.":""}`}function Ts(){return Oe.some(s=>u.settings.data[s.setting]!==!1!=(u.running?.[s.setting]!==!1))}function zp(s){return s.report?.version===2?s.report:void 0}function Hp(s){return new Promise(e=>{let t=performance.now(),o={frames:0,done:!1,watchdog:0},n=()=>{o.frames++;let r=performance.now()-t;if(r{o.done||e(null)},s+2e3)})}async function Zv(s){if(s===0)return!0;let e=performance.now()+Fv;for(;performance.now()typeof t=="number"?Math.round(t*100)/100:null;return{fps:e(s.fps),p50:e(s.p50),p99:e(s.p99),maxMs:e(s.maxMs),stallMs:e(s.stallMs),taskP99:e(s.taskP99),inputP99:e(s.inputP99),...typeof s.presentMs=="number"?{presentMs:e(s.presentMs)}:{},...s.invalid?{invalid:!0,why:s.why}:{},...s.load?{load:s.load}:{}}}function io(s){return ye(s).fps.median??0}var qn,Mp,Tp,ea,Ov,Dv,ta,On,Ap,Fv,Ms,qv,Kv,jv,Lp,Rp,oa,Uv,De,kt,ra,Op,aa=w(()=>{"use strict";yp();D();zn();Ae();Ki();ji();ks();Qi();Xi();qn="kute_autodetect",Mp="kute_autodetect_asked",Tp=250,ea=1500,Ov=3e5,Dv=2e4,ta=3*Bt,On=2*Bt,Ap=6*Bt,Fv=6e3,Ms=450,qv=700,Kv=.08,jv=["gameFpsLimit","throttle",...Oe.map(s=>s.setting)],Lp="autodetect-v2",Rp="https://krunker.io/",oa="kute_autodetect_stopped",Uv={taskP99:"the game reacted later",inputP99:"the mouse waited longer",p99:"slow frames came later",stallMs:"more stutter",maxMs:"a longer freeze",frame:"frames took longer, and the mouse wait could not be measured",unsteady:"it did not run steadily"},De=s=>new Promise(e=>{setTimeout(e,s)});kt=class{constructor(){document.querySelector("#adPanelHost")?.parentElement?.remove(),this.overlay=document.createElement("div"),this.onEscape=void 0,this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.93)";let e=document.createElement("div");e.id="adPanelHost",this.overlay.append(e),this.root=e.attachShadow({mode:"open"}),this.root.innerHTML=xp,document.body.append(this.overlay)}element(e){return this.root.querySelector(`#${e}`)}progress(e,t){this.element("adStatus").textContent=e,this.element("adBarFill").style.width=`${Math.round(t*100)}%`}choose(e,t,o,n){let r=o.find(l=>l.cancel);this.dismissWith(r?()=>r.onPick():void 0),this.element("adTitle").textContent=e,this.element("adStatus").textContent=t;let i=this.element("adNote");i.textContent=n??"",i.style.display=n?"block":"none",this.element("adBar").style.display="none",this.element("adHint").style.display="none";let a=this.element("adActions");a.style.display="flex",a.innerHTML="";for(let l of o){let c=document.createElement("div");c.className="adButton",c.textContent=l.label,c.onclick=()=>l.onPick(),a.append(c)}}result(e,t={}){this.dismissWith(()=>this.close()),this.element("adTitle").textContent=e.title,this.element("adStatus").textContent=e.line,this.element("adNote").style.display="none",this.element("adBar").style.display="none",this.element("adHint").style.display="none",this.element("adActions").style.display="flex",this.element("adDetailsButton").style.display="none",this.element("adUndo").style.display=e.changed&&t.onUndo?"":"none",this.element("adRun").style.display=t.onRun?"":"none",this.element("adRestart").style.display=e.needsRestart?"":"none",this.element("adRestart").onclick=()=>window.chrome.webview.postMessage("restart"),this.element("adAdvancedButton").style.display=t.report?"":"none";let o=this.element("adDetails");if(o.innerHTML=e.details.map(n=>`
    • ${n}
    • `).join(""),o.style.display=e.details.length>0?"block":"none",t.report){let n=this.element("adAdvanced");n.innerHTML=Jv(t.report);let r=this.element("adAdvancedButton");r.textContent="Advanced",r.onclick=()=>{let i=n.style.display!=="block";n.style.display=i?"block":"none",this.element("adPanel").classList.toggle("adWide",i),r.textContent=i?"Hide advanced":"Advanced"},this.element("adCopy").onclick=()=>{let i=JSON.stringify({kute:u.version,...t.report},null,2);navigator.clipboard.writeText(i).then(()=>{this.element("adCopy").textContent="Copied"},()=>{this.element("adCopy").textContent="Copying failed"})}}this.element("adOk").onclick=()=>this.close(),this.element("adUndo").onclick=()=>{this.close(),t.onUndo?.()},this.element("adRun").onclick=()=>{this.close(),t.onRun?.()}}clickThrough(e){this.overlay.style.pointerEvents=e?"none":""}dismissWith(e){this.unbindEscape(),this.overlay.onclick=e?t=>{t.target===this.overlay&&e()}:null,e&&(this.onEscape=t=>{t.key==="Escape"&&(t.stopPropagation(),e())},document.addEventListener("keydown",this.onEscape,!0))}unbindEscape(){this.onEscape&&document.removeEventListener("keydown",this.onEscape,!0),this.onEscape=void 0}close(){this.unbindEscape(),this.overlay.remove()}};ra=class{constructor(){this.running=!1,this.cancelled=!1}snapshot(){return{client:Object.fromEntries(jv.map(e=>[e,u.settings.data[e]])),game:Object.fromEntries(Gi.map(e=>[e,Es(e)]))}}restore(e){_n();for(let[t,o]of Object.entries(e.game))o!==null&&Es(t)!==o&&Me(t,o);for(let[t,o]of Object.entries(e.client))o!==void 0&&u.settings.data[t]!==o&&Ht(t,o)}undo(){let e=zt();if(!e?.undoable){u.showNotification("Nothing to undo",!1,3);return}let t=new Set(vt.filter(i=>i.needsReload).map(i=>i.id)),o=Object.entries(e.snapshot.game).some(([i,a])=>t.has(i)&&a!==null&&Es(i)!==a);this.restore(e.snapshot);let n=Ts();e.undoable=!1;let r="Your previous settings are back.";o&&(r="Your previous settings are back, the game reloads once to apply them."),n&&(r+=" Restart Kute to finish."),e.summary={title:"Undone",line:r,details:[],changed:!1,needsRestart:n},Fe(e),u.showNotification(`Auto-detect undone. ${r.replace("Your previous settings are back","Your settings are back")}`,!1,5),o&&setTimeout(()=>location.reload(),1200)}dropUndo(){let e=zt();e?.undoable&&(e.undoable=!1,Fe(e))}showLast(){let e=zt();if(!e?.summary){u.showNotification("Auto-detect has not run yet",!1,3);return}new kt().result(e.summary,{onUndo:e.undoable?()=>this.undo():void 0,report:zp(e)})}async start(e={}){if(this.running)return;if(!u.hostFeatures?.includes(Lp)){u.showNotification("Auto-detect needs a newer Kute, update the client to use it",!1,6);return}if(u.recovery){u.showNotification("Auto-detect can't run in safe mode or while Kute looks for the cause of a crash",!1,6);return}if(!As()){u.showNotification("Log in first: auto-detect measures in a private test match, and hosting one needs an account",!1,6);return}if(document.pointerLockElement||He()){u.showNotification("Open the menu outside of a competitive match first",!1,4);return}if(!e.resume&&Ts()){u.showNotification("Restart Kute first: a setting you changed only applies after a restart, auto-detect would test the old one",!1,7);return}this.running=!0,this.cancelled=!1,window.closWind?.();let t,o;if(e.resume)t=e.resume,o=t.previous??null;else{o=zt(),o&&(delete o.wizard,delete o.wizardDetails);let l=this.snapshot();t={status:"running",at:Date.now(),snapshot:e.snapshot??l,baseline:l,previous:o,details:e.details??[]},Fe(t)}let n=new kt,r=l=>{l.key==="Escape"&&(this.cancelled=!0,Di())};document.addEventListener("keydown",r,!0);let i={inMatch:!1},a=()=>{window.chrome.webview.postMessage("input-replay-stop"),this.restore(t.snapshot),Fe(o||{status:"prompted",at:Date.now(),snapshot:t.snapshot}),n.close(),Ts()&&u.showNotification("Your settings are back. Restart Kute to finish",!1,7),i.inMatch&&(document.exitPointerLock(),location.href=Rp)};try{let l=await this.run(n,t,i);if(l==="restarting")return;if(l===null){a();return}t.status="done",t.summary=l.summary,t.report=l.report,t.undoable=l.summary.changed,!l.summary.changed&&o?.undoable&&(t.snapshot=o.snapshot,t.undoable=!0),delete t.previous,delete t.baseline,delete t.carry,delete t.details,t.showSummary=!0,Fe(t),n.progress("Leaving the test match",1),document.exitPointerLock(),await De(800),location.href=Rp}catch(l){let c=`Auto-detect stopped: ${l instanceof Error?l.message:String(l)}`;i.inMatch&&sessionStorage.setItem(oa,c),a(),u.showNotification(c,!1,7)}finally{document.removeEventListener("keydown",r,!0),_p(!1),window.chrome.webview.postMessage("throttle, menu"),this.running=!1}}async run(e,t,o){let n=Gv(),r=t.baseline??t.snapshot,i=t.details??[],a=performance.now()-(t.carry?.elapsedMs??0),l=!!t.carry;e.progress("Reading your hardware",.02);let c=await Te("get-specs","specs");if(c===null)throw new Error("this needs a newer version of the client");let d=c.displays??[],p=d.find(M=>M.hostsWindow)??d[0],h=n.hz??(p?.hz>1?p.hz:60),f=(c.gpus??[]).filter(M=>!M.software),m=c.renderAdapter?.name??[...f].sort((M,F)=>F.vramMb-M.vramMb)[0]?.name??"unknown graphics card",g=n.battery??!!c.onBattery,b=n.laptop??(!!c.laptop||c.hybrid===!0),v=h*3,k=u.hostFeatures?.includes("load-sample")===!0,E=u.running?.hardFlip!==!1,L=Number(r.game[wt])||0,x=Number(r.client.gameFpsLimit)||0,$=Number(r.client.throttle)||1,I=[x,L].filter(M=>M>0),_=I.length>0?Math.min(...I):0,H=Pn(),G=null,J=[],B=[];if(!l){if(G=await Fi({hz:h,hybrid:c.hybrid===!0,progress:(M,F)=>e.progress(M,.03+.27*F),cancelled:()=>this.cancelled}),this.cancelled)return null;if(G&&n.force&&n.force in H&&(G={...G,winner:{...H,[n.force]:!H[n.force]},changed:!0,decidedBy:"p99"}),G){e.progress("Testing FPS limits",.31);let M=[...new Set([0,v,2*h,h,_])].sort((q,ee)=>ee-q),F=await qi({pipeline:G.winner,common:G.common,caps:M,cancelled:()=>this.cancelled});if(this.cancelled)return null;if(F){let q=na(F,_,"client test",b?v:void 0);J=q.rows,B=q.order}}}e.progress("Opening a private test match",.38),_p(!0),e.clickThrough(!0);let re=await $s(),je=!1;if(re&&(e.progress("Joining the test match",.41),je=await Cs(re)),e.clickThrough(!1),!je)throw window.closWind?.(),new Error("could not open a private test match (is a host slot free?)");o.inMatch=!0;let be=()=>{if(!Bn(re))throw new Error("left the private test match")};if(this.cancelled)return null;L>0&&l&&Me(wt,"0");let Ee=Number(u.settings.data.gameFpsLimit)||0,j=!0;Hn(),window.chrome.webview.postMessage("throttle, game"),await De(2500),await De(300),window.chrome.webview.postMessage("bring-to-front");let X=async(M,F=ta)=>{M!==Ee&&(Ht("gameFpsLimit",M),Ee=M,await De(qv),j=await Zv(M)),be(),k&&await Te("load-sample","loadSample",500),E&&await Te("get-present-intervals","presentIntervals",400);let q=await Zi({ms:F,hz:h,replay:!0});if(E){let ee=await Te("get-present-intervals","presentIntervals",400);ee&&ee.samples>0&&(q.presentMs=ee.p50)}if(k&&(q.load=await Te("load-sample","loadSample",500)),be(),!j&&!q.invalid&&(q.invalid=!0,q.why="nothing held the FPS limit"),n.collapse!==void 0&&(M===0||M>=n.collapse)){let ee=(te,O)=>(te??0)+O;return{...q,fps:(q.fps??0)/2,stallMs:400,p99:ee(q.p99,25),maxMs:ee(q.maxMs,40),taskP99:ee(q.taskP99,40),inputP99:ee(q.inputP99,30)}}return q},Y=async()=>{if(!k)return[];await X(0,Bt),window.chrome.webview.postMessage(`input-replay, ${10*Bt}`);let M=[],F=performance.now();for(await Te("load-sample","loadSample",500);performance.now()-F<10*Bt&&!this.cancelled;){let q=await Hp(300);if(q===null)break;M.push({ms:Math.round(performance.now()-F),fps:Math.round(q),load:await Te("load-sample","loadSample",500)})}return window.chrome.webview.postMessage("input-replay-stop"),M},y=async(M,F=ta)=>{let q=[];for(let ee=0;ee<5&&q.length<2&&!this.cancelled;ee++){let te=await X(M,F);te.invalid||q.push(te)}return q},C=async M=>{for(let F=0;F<4&&!this.cancelled;F++)if(!gt([await X(M,On)],M))return},R=async M=>{let F=new Map(M.map(q=>[q,[]]));for(let q=0;q<2;q++)for(let ee of M){if(this.cancelled)return F;F.get(ee)?.push(await X(ee))}return F},{carry:K}=t;if(!K){e.progress("Measuring how the game runs now",.45),await X(Ee);let M=await y(Ee);if(this.cancelled)return null;if(M.length<2)throw new Error("the game could not be measured, the Kute window has to stay in front during the test");L>0&&Me(wt,"0"),$>1&&(Ht("throttle",1),window.chrome.webview.postMessage("throttle, game"),await De(Ms)),e.progress("Measuring what this PC can do",.5);let q=_===0&&$<=1?[...M,await X(0)]:[await X(0),await X(0),await X(0)];if(this.cancelled)return null;if(K={asPlayed:M,uncapped:q,playedCap:_,pipelineBefore:H,pipelineAfter:G?.winner??H,pipelineChanged:!!G?.changed,decidedBy:G?.decidedBy??null,rows:G?.rows??[],benchCaps:J,capOrder:B,elapsedMs:performance.now()-a},K.pipelineChanged){t.carry=K,Fe(t),L>0&&Me(wt,String(L)),Ee!==x&&Ht("gameFpsLimit",x);for(let ee of Oe)K.pipelineAfter[ee.setting]!==H[ee.setting]&&Ht(ee.setting,K.pipelineAfter[ee.setting]);return document.exitPointerLock(),e.choose("Kute restarts once","The client test found a setup that runs better on this PC. Kute restarts with it and checks it in the game, the test goes on by itself.",[]),await De(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}}let{playedCap:z}=K,N=K,V=M=>({version:2,gpu:m,cpu:`${c.cpu?.name??"unknown processor"}, ${c.cpu?.threads??"?"} threads`,hz:h,laptop:!!c.laptop,hybrid:typeof c.hybrid=="boolean"?c.hybrid:null,powerOverlay:c.powerOverlay??null,capacity:io(N.uncapped),unlimited:N.uncapped.map(Fn),played:N.asPlayed.map(Fn),adapters:{render:c.renderAdapter?.luid??null,display:p?.adapter??null},hybridSource:c.hybridSource??null,client:{...Object.fromEntries(["gameFpsLimit","throttle","inMenuThrottle","uncapFps","patchFrameLimiter","obsCapturePlugin","renderStats","performanceMode","webviewPriority",...Oe.map(F=>F.setting)].map(F=>[F,r.client[F]??u.settings.data[F]??null])),gameFrameCap:L,hook:c.hook??null,limiter:u.frameLimiter??null,running:u.running??null},noise:0,drift:1,headroom:1,beforeCap:z,before:ye(N.asPlayed),afterCap:z,after:null,pipeline:N.rows,caps:N.benchCaps,halfResolutionGain:null,settings:[],plan:Nn({capacity:io(N.uncapped),hz:h,headroom:1,halfResolutionGain:null,settings:[]}),input:Hn(),rolledBack:null,pipelineRefused:N.pipelineRefused??null,recheck:N.recheck??[],seconds:(performance.now()-a)/1e3,...M}),de=(M,F={})=>{this.restore(t.snapshot);let q=Ts();return{summary:{title:"Nothing changed",line:q?`${M} Restart Kute to finish.`:M,details:[],changed:!1,needsRestart:q},report:V({...F,rolledBack:M})}},Z=io(N.uncapped){let{keep:ee,failed:te}=ws(M,F,{capBefore:z,capAfter:q,trade:Z});return ee?null:te==="reference"?"Kute could not measure the game with your own settings well enough to compare (its window has to stay in front), so it put yours back.":te==="result"?"Kute could not measure the result (its window has to stay in front), so it put your settings back.":`The new settings measured worse than yours (${te==="fps"?`${Math.round(io(F))} FPS, ${Math.round(io(M))} before`:Uv[te??""]}), so Kute put yours back.`},le=[...i];if($>1&&le.push(`CPU Throttling: ${$} \u2192 off (it slows the game down on purpose, the result is checked against how the game ran with it)`),l&&N.pipelineChanged&&!N.pipelineRefused){e.progress("Checking the new setup in the game",.5);let M=await y(z);if(this.cancelled)return null;let F={recheck:M.map(Fn)},q=gt(N.asPlayed,z)&>(M,z)?null:ge(N.asPlayed,M,z);if(q&&ws(N.asPlayed,M,{capBefore:z,capAfter:z,trade:Z}).failed==="result")return de(q.replace("The new settings","The setup that won the client test"),F);if(q){for(let O of Oe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&Ht(O.setting,N.pipelineBefore[O.setting]);return L>0&&Me(wt,String(L)),Ee!==x&&Ht("gameFpsLimit",x),t.carry={...N,pipelineRefused:q.replace("The new settings","The setup that won the client test"),...F,elapsedMs:performance.now()-a,resumed:!1},Fe(t),document.exitPointerLock(),e.choose("Kute restarts once more","The setup from the client test ran worse in the game, so Kute goes back to yours and tests the FPS limits on it.",[]),await De(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}let ee=N.rows.find(O=>Oe.every(ve=>O.pipeline[ve.setting]===N.pipelineAfter[ve.setting])),te=ee?Wv(N.decidedBy,ye(N.rows[0].readings),ye(ee.readings)):"measured better";for(let O of Oe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&le.push(`${O.label}: ${ut(N.pipelineBefore[O.setting])} \u2192 ${ut(N.pipelineAfter[O.setting])} (${te})`)}e.progress("Finding the FPS limit that runs best",.56);let Be=io(N.uncapped),Yt=Be>=v?v:h,xo=M=>!g||M===z||M!==0&&M<=v,zg=N.uncapped.filter(vs).length>=2,Ar=(b||zg)&&Be>=v?v:void 0,ze=new Map,Xt=[],se=z,Go="",Ie=Be,at=bs(new Map([[0,N.uncapped]]));if(!at){let M=N.capOrder.length>0?N.capOrder.slice(0,2):zi({hz:h,capacity:Be,current:z}).slice(1,3),F=[...new Set([z,0,...M,...Ar?[Ar]:[],...g?[Yt]:[]])].filter(xo);if(ze=await R(F),this.cancelled)return null;at=bs(ze);let q=na(ze,z,"test match",Ar,Z);if(Xt=q.rows,!at){se=q.winner,Go=q.reason,Ie=io(ze.get(0)??[])||Be;let ee=Hi([...ze.keys()],se,Ie,h).filter(te=>xo(te)&&te0){e.progress("Fine tuning the FPS limit",.64);let te=await R(ee);if(this.cancelled)return null;let O=na(new Map([[se,ze.get(se)??[]],...te]),se,"test match",void 0,Z);Xt.push(...O.rows.filter(ve=>ve.cap!==se));for(let[ve,Ye]of te)ze.set(ve,Ye);O.winner!==se&&(se=O.winner,Go=O.reason),at=bs(ze)}}}let Wo;if(at){e.progress("Finding the FPS limit this PC holds steadily",.62);let M=new Map;await C(h);for(let te of Ln(h)){if(this.cancelled)return null;let O=await y(te,Ap);if(M.set(te,O),!no(O,te))break}if(this.cancelled)return null;let F=Ni(h,M),q=(Kn([...N.uncapped,...ze.get(0)??[]].filter(gs).map(te=>te.stallMs))??0)/1e3;Wo={stoodStill:q,steadyUpTo:F.steadyUpTo,limit:F.cap};for(let te of Xt)te.outcome==="better"&&(te.outcome="not used");for(let[te,O]of M){let ve=no(O,te)?"steady":"not steady";Xt.push({cap:te,where:"test match",summary:ye(O.map(_o)),frameMs:Kn(O.map(Ye=>Ye.p50)),netMs:null,outcome:ve}),ze.set(te,O)}let ee=z>0&&no(N.asPlayed,z);se=z,ee||(se=[...new Set([F.cap,F.steadyUpTo])].filter(O=>O!==null).find(O=>ws(N.asPlayed,M.get(O)??[],{capBefore:z,capAfter:O}).keep)??z),Go=`without a limit this PC stood still ${Math.round(q*100)} % of the time. Up to ${F.steadyUpTo} FPS it ran steadily in the empty test match, ${se} FPS ${(F.steadyUpTo??0)>se?"leaves a step of room for a real match":"is the highest that did"}`}let Vo=Xt.find(M=>M.cap===Yt),Hg=Vo!==void 0&&(Vo.outcome==="steady"||Vo.netMs!==null&&(Vo.outcome==="better"||Vo.outcome==="not better"));g&&(se===0||se>v)&&Hg&&(se=Yt,Go="on battery");for(let M of Xt)M.cap===se&&M.cap!==z&&M.outcome!=="not steady"&&(M.outcome="chosen"),M.readings=(ze.get(M.cap)??[]).map(Fn);let ln=N.uncapped.map(M=>M.fps).filter(M=>typeof M=="number"),Jd=ln.length>1?(Math.max(...ln)-Math.min(...ln))/Math.max(1,...ln):0,Lr=1,cn=1,Rr=null;if(!at){Rr=await X(0);let M=(l?ze.get(0)?.[0]:N.uncapped[0])?.fps??Ie;Lr=(Rr.fps??Ie)/Math.max(1,M),cn=Bi(Lr,Jd)}let Og=v*cn,So=[],Pr=null,Yo=Number(r.game[ro])||1;if(at)for(let M of vt)So.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC does not run steadily without a limit)"});else if(IeO.inputP99!==null),F=Rr?.fps??Ie,q=async(O,ve)=>{let Ye=F;O(),await De(Ms);let lt=async()=>{let ru=await X(0,On);return ru.invalid?null:ru.fps},Jt=await lt();ve(),await De(Ms);let Xe=await lt();if(Jt===null||Xe===null)return{ratio:1,steady:!1,raw:[Ye,Jt??0,Xe??0]};F=Xe;let nu=(Ye+Xe)/2;return{ratio:Jt/Math.max(1,nu),steady:Math.abs(Ye-Xe)/Math.max(1,nu)<=Kv,raw:[Ye,Jt,Xe]}},ee=vt.filter(O=>!O.needsReload&&(M||!O.fightOnly));for(let O of vt){let ve=r.game[O.id],Ye=String(O.cheap),lt={id:O.id,label:O.label,current:ve??"default",cheap:Ye,gain:null,steady:!0};if(So.push(lt),O.needsReload){lt.note="not tested (needs a reload)";continue}if(O.fightOnly&&!M){lt.note="not tested (only costs in a fight)";continue}if(ve===null){lt.note="value unknown";continue}if(this.cancelled)return null;e.progress(`Measuring ${O.label}`,.68+.17*ee.indexOf(O)/ee.length);let Jt=Vi(ve),Xe=await q(()=>Me(O.id,Jt),()=>Me(O.id,ve));lt.gain=Jt===Ye?Xe.ratio:1/Math.max(.01,Xe.ratio),lt.steady=Xe.steady,lt.raw=Xe.raw}for(let O of So){if(O.gain===null||!O.steady||O.current===O.cheap||O.gainMe(O.id,O.cheap),()=>Me(O.id,O.current));O.confirmGain=ve.ratio,O.gain=Math.min(O.gain,ve.ratio),O.steady=ve.steady}e.progress("Checking the graphics card",.88);let te=await q(()=>Me(ro,String(Math.max(.1,Yo*.5))),()=>Me(ro,String(Yo)));Pr=te.steady&&te.ratio>.92?te.ratio:null}else for(let M of vt)So.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC reaches its target)"});if(this.cancelled)return null;let Ct=Nn({capacity:Ie,hz:h,headroom:cn,halfResolutionGain:Pr,settings:So});for(let M of Ct.changes)le.push(`${M.label}: ${ut(r.game[M.id])} \u2192 ${ut(M.value)} (${M.reason})`),Me(M.id,String(M.value));let Mt=null;if((Ct.changes.length>0||Ct.tuneResolution)&&(await De(Ms),Mt=(await X(0,On)).fps),Ct.tuneResolution&&Mt!==null){let M=Yo;for(let F=0;F<2&&Mt!==null&&Mtxs&&!this.cancelled;F++){let q=F===0?M*Math.sqrt(Mt/Ct.needed):xs;M=Math.min(M,Math.max(xs,Math.floor(q*20)/20)),e.progress(`Trying resolution ${M}`,.9+F*.01),Me(ro,String(M)),await De(Ms),Mt=(await X(0,On)).fps}M!==Yo&&le.push(`Resolution: ${Yo} \u2192 ${M} (the graphics card is the limit)`)}if(this.cancelled)return null;e.progress("Checking the result",.94),Ct.changes.length>0&&await X(se);let Zd=at?await Y():[];at&&await C(se);let Qd=await y(se,at?Ap:ta);if(this.cancelled)return null;let Ir={capacity:Ie,noise:Jd,drift:Lr,headroom:cn,afterCap:se,after:ye(Qd),caps:[...N.benchCaps,...Xt],halfResolutionGain:Pr,settings:So,plan:Ct,pushed:Wo,...Zd.length>0?{trace:Zd}:{}},Nr=se!==z,Dg=!Nr&&L>0&&(x===0||LFPS Limit
      : ${Dt(z)} \u2192 ${Dt(se)} (${Go})`):Dg&&le.push(`FPS Limit: ${Dt(se)}, now held by Kute instead of the game's frame cap (the game's cap keeps the processor busy while it waits)`);let dn=le.length>0,eu=le.length>i.length;if(eu){let M=(ze.get(z)??[]).filter(ee=>!ee.invalid),F=l||L>0||$>1,q=ge(!F&&M.length>=2?M:N.asPlayed,Qd,se);if(q)return de(q,Ir)}else L>0&&Me(wt,String(L)),Ee!==x&&Ht("gameFpsLimit",x);_n();let un=`${v} FPS (${3}x your ${h} Hz screen)`,tu=`${le.length} setting${le.length===1?"":"s"} changed.`,mt=`Your PC ran ${Math.round(Ie)} FPS in the test match, above the ${un} Kute aims for. Nothing needed changing.`;dn&&Mt!==null?mt=`${tu} Test match without a limit: ${Math.round(Ie)} FPS before, ${Math.round(Mt)} after. Kute aims for at least ${un} with no stutter.`:dn?mt=`${tu} Without a limit your PC runs ${Math.round(Ie)} FPS in the test match, Kute aims for at least ${un} with no stutter.`:Iese?" with room to spare":""}.`;else if(se>0&&no(N.asPlayed,se)){let ee=F!==null&&FsetTimeout(()=>this.offer(),1500),{once:!0});return}sessionStorage.setItem(Mp,"1");let e=new kt;e.choose("Set Kute up for this PC?","Kute can set the game up for what this PC can do: it measures in a private test match, and everything it changes can be undone. You have to be logged in for that.",[{label:"Yes",onPick:()=>{this.setUp(e)}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"No",cancel:!0,onPick:()=>this.decline(e)}],Bp())}decline(e){e.close(),this.remember("declined"),u.showNotification("Got it. You can always start the setup from Settings, Client",!1,5)}async signedIn(){if(As())return!0;if(!localStorage.getItem("krunker_token"))return!1;let e=Date.now()+Dv;for(;Date.now(){e.close(),window.loginOrRegister(),this.waitForLogin()}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}])}waitForLogin(){let e=Date.now()+Ov,t=setInterval(()=>{if(As()){clearInterval(t),this.askSettings();return}Date.now()>e&&clearInterval(t)},1e3)}askSettings(e=new kt){this.remember("settings"),e.choose("Where should your game settings come from?","Kute measures this PC either way and sets what it finds. This is only about the settings it starts from.",[{label:"Import a settings.txt",onPick:()=>{e.close(),this.remember("import"),window.importSettingsPopup()}},{label:"Kute's preset",onPick:()=>{e.close(),this.applyPreset()}},{label:"Keep my settings",onPick:()=>{e.close(),this.start()}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}],Bp())}afterImport(){if(zt()?.wizard!=="import")return;let e=this.snapshot();this.remember("run",e,[]),setTimeout(()=>{zt()?.wizard==="run"&&this.start({snapshot:e})},1500)}applyPreset(){let e=this.snapshot(),t=[];for(let[o,n]of Object.entries(Ui))String(e.game[o])!==String(n)&&(Me(o,n),t.push(`${Wi(o)}: ${ut(e.game[o])} \u2192 ${ut(n)} (Kute's preset)`));this.remember("run",e,t),u.showNotification("Applying Kute's preset, the game reloads once",!1,4),setTimeout(()=>location.reload(),1200)}resume(){let e=zt();if(e?.status==="running"){if(e.carry&&!e.carry.resumed){e.carry.resumed=!0,Fe(e),setTimeout(async()=>{if(await this.signedIn()){this.start({resume:e});return}this.restore(e.snapshot),e.previous?Fe(e.previous):localStorage.removeItem(qn),u.showNotification("Auto-detect could not go on (not logged in). Your settings are back, restart Kute to finish",!1,8)},ea);return}this.restore(e.snapshot),e.previous?Fe(e.previous):localStorage.removeItem(qn);return}let t=sessionStorage.getItem(oa);if(t&&(sessionStorage.removeItem(oa),setTimeout(()=>u.showNotification(t,!1,12),ea)),e?.showSummary&&e.summary){e.showSummary=!1,Fe(e),new kt().result(e.summary,{onUndo:()=>this.undo(),report:zp(e)});return}if(e?.wizard==="run"){setTimeout(async()=>{await this.signedIn()&&this.start({snapshot:e.snapshot,details:e.wizardDetails??[]})},ea);return}if(e?.wizard==="login"||e?.wizard==="settings"||e?.wizard==="import"){setTimeout(()=>this.setUp(),Tp);return}e&&e.wizard!=="later"||setTimeout(()=>this.offer(),Tp)}},Op=new ra;u.autoDetect=Op;Op.resume()});var Fp={};A(Fp,{clanTag:()=>Ls,default:()=>pt});function Ls(s){for(let e of s.children){if(e.tagName!=="SPAN")continue;let t=Qv.exec(e.textContent??"");if(t)return{span:e,tag:t[1]}}return null}function o0(s){let e="";for(let t of s.childNodes)t.nodeType===Node.TEXT_NODE&&(e+=t.textContent??"");return e.trim()}var Qv,Dp,e0,t0,la,pt,jn=w(()=>{"use strict";Qv=/^\s*\[(.+)\]\s*$/;Dp=[{list:"leaderContainer",kind:"leader",root:"leaderboardHolder"},{list:"ingameTable",kind:"ingame",root:"centerLeaderDisplay"},{list:"endTable",kind:"end",root:"endUI"},{list:"playerListH",kind:"alt",root:"menuWindow"}],e0=1e3,t0='.pListName, [class^="newLeaderName"], [class^="leaderName"], .endTableN';la=class{constructor(){this.decorators=new Map,this.watched=[],this.timer=0}add(e,t){this.decorators.set(e,t),this.watched.length===0&&this.observe(),this.refresh()}remove(e){if(this.decorators.delete(e),!(this.decorators.size>0)){for(let{observer:t}of this.watched)t.disconnect();this.watched=[],clearInterval(this.timer),this.timer=0}}observe(){for(let{root:e,list:t,kind:o}of Dp){let n=document.getElementById(e);n&&this.watch(n,t,o)}this.timer=setInterval(()=>this.discover(),e0)}watch(e,t,o){let n={observer:new MutationObserver(()=>this.walk(n)),target:e,list:t,kind:o};n.observer.observe(e,{childList:!0,subtree:!0}),this.watched.push(n),this.walk(n)}discover(){this.watched=this.watched.filter(e=>e.target.isConnected?!0:(e.observer.disconnect(),!1));for(let{list:e,kind:t}of Dp){let o=document.getElementById(e);o&&!this.watched.some(n=>n.target.contains(o))&&this.watch(o,e,t)}}refresh(){for(let e of this.watched)this.walk(e)}walk(e){let t=document.querySelectorAll(`#${e.list}`);if(t.length>0){for(let o of t)for(let n of o.querySelectorAll(t0)){let r={element:n,name:o0(n),kind:e.kind};for(let i of this.decorators.keys())i(r)}for(let o of this.decorators.values())o?.(e.kind)}e.observer.takeRecords()}},pt=new la});var Kp={};A(Kp,{default:()=>et,playerHash:()=>Un});function a0(){if(document.getElementById("signedInHeaderBar")===null)return"";let s=window.getGameActivity?.()?.id;return typeof s=="string"?s:""}function l0(){let s=window.getGameActivity?.()?.user;if(typeof s!="string")return"";if(localStorage.getItem("kro_setngss_premiumBadge")==="false"){let e=localStorage.getItem("krunker_username");if(e)return e}return s}async function Un(s,e){let t=new TextEncoder().encode(s+` + and a setup that measures worse anywhere is never taken.

      Copy this report
      : ${Dt(z)} \u2192 ${Dt(se)} (${Go})`):Dg&&le.push(`FPS Limit: ${Dt(se)}, now held by Kute instead of the game's frame cap (the game's cap keeps the processor busy while it waits)`);let dn=le.length>0,eu=le.length>i.length;if(eu){let M=(ze.get(z)??[]).filter(ee=>!ee.invalid),F=l||L>0||$>1,q=ge(!F&&M.length>=2?M:N.asPlayed,Qd,se);if(q)return de(q,Ir)}else L>0&&Me(wt,String(L)),Ee!==x&&Ht("gameFpsLimit",x);_n();let un=`${v} FPS (${3}x your ${p} Hz screen)`,tu=`${le.length} setting${le.length===1?"":"s"} changed.`,mt=`Your PC ran ${Math.round(Ie)} FPS in the test match, above the ${un} Kute aims for. Nothing needed changing.`;dn&&Mt!==null?mt=`${tu} Test match without a limit: ${Math.round(Ie)} FPS before, ${Math.round(Mt)} after. Kute aims for at least ${un} with no stutter.`:dn?mt=`${tu} Without a limit your PC runs ${Math.round(Ie)} FPS in the test match, Kute aims for at least ${un} with no stutter.`:Iese?" with room to spare":""}.`;else if(se>0&&no(N.asPlayed,se)){let ee=F!==null&&FsetTimeout(()=>this.offer(),1500),{once:!0});return}sessionStorage.setItem(Mp,"1");let e=new kt;e.choose("Set Kute up for this PC?","Kute can set the game up for what this PC can do: it measures in a private test match, and everything it changes can be undone. You have to be logged in for that.",[{label:"Yes",onPick:()=>{this.setUp(e)}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"No",cancel:!0,onPick:()=>this.decline(e)}],Bp())}decline(e){e.close(),this.remember("declined"),u.showNotification("Got it. You can always start the setup from Settings, Client",!1,5)}async signedIn(){if(As())return!0;if(!localStorage.getItem("krunker_token"))return!1;let e=Date.now()+Dv;for(;Date.now(){e.close(),window.loginOrRegister(),this.waitForLogin()}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}])}waitForLogin(){let e=Date.now()+Ov,t=setInterval(()=>{if(As()){clearInterval(t),this.askSettings();return}Date.now()>e&&clearInterval(t)},1e3)}askSettings(e=new kt){this.remember("settings"),e.choose("Where should your game settings come from?","Kute measures this PC either way and sets what it finds. This is only about the settings it starts from.",[{label:"Import a settings.txt",onPick:()=>{e.close(),this.remember("import"),window.importSettingsPopup()}},{label:"Kute's preset",onPick:()=>{e.close(),this.applyPreset()}},{label:"Keep my settings",onPick:()=>{e.close(),this.start()}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}],Bp())}afterImport(){if(zt()?.wizard!=="import")return;let e=this.snapshot();this.remember("run",e,[]),setTimeout(()=>{zt()?.wizard==="run"&&this.start({snapshot:e})},1500)}applyPreset(){let e=this.snapshot(),t=[];for(let[o,n]of Object.entries(Ui))String(e.game[o])!==String(n)&&(Me(o,n),t.push(`${Wi(o)}: ${ut(e.game[o])} \u2192 ${ut(n)} (Kute's preset)`));this.remember("run",e,t),u.showNotification("Applying Kute's preset, the game reloads once",!1,4),setTimeout(()=>location.reload(),1200)}resume(){let e=zt();if(e?.status==="running"){if(e.carry&&!e.carry.resumed){e.carry.resumed=!0,Fe(e),setTimeout(async()=>{if(await this.signedIn()){this.start({resume:e});return}this.restore(e.snapshot),e.previous?Fe(e.previous):localStorage.removeItem(qn),u.showNotification("Auto-detect could not go on (not logged in). Your settings are back, restart Kute to finish",!1,8)},ea);return}this.restore(e.snapshot),e.previous?Fe(e.previous):localStorage.removeItem(qn);return}let t=sessionStorage.getItem(oa);if(t&&(sessionStorage.removeItem(oa),setTimeout(()=>u.showNotification(t,!1,12),ea)),e?.showSummary&&e.summary){e.showSummary=!1,Fe(e),new kt().result(e.summary,{onUndo:()=>this.undo(),report:zp(e)});return}if(e?.wizard==="run"){setTimeout(async()=>{await this.signedIn()&&this.start({snapshot:e.snapshot,details:e.wizardDetails??[]})},ea);return}if(e?.wizard==="login"||e?.wizard==="settings"||e?.wizard==="import"){setTimeout(()=>this.setUp(),Tp);return}e&&e.wizard!=="later"||setTimeout(()=>this.offer(),Tp)}},Op=new ra;u.autoDetect=Op;Op.resume()});var Fp={};A(Fp,{clanTag:()=>Ls,default:()=>pt});function Ls(s){for(let e of s.children){if(e.tagName!=="SPAN")continue;let t=Qv.exec(e.textContent??"");if(t)return{span:e,tag:t[1]}}return null}function o0(s){let e="";for(let t of s.childNodes)t.nodeType===Node.TEXT_NODE&&(e+=t.textContent??"");return e.trim()}var Qv,Dp,e0,t0,la,pt,jn=w(()=>{"use strict";Qv=/^\s*\[(.+)\]\s*$/;Dp=[{list:"leaderContainer",kind:"leader",root:"leaderboardHolder"},{list:"ingameTable",kind:"ingame",root:"centerLeaderDisplay"},{list:"endTable",kind:"end",root:"endUI"},{list:"playerListH",kind:"alt",root:"menuWindow"}],e0=1e3,t0='.pListName, [class^="newLeaderName"], [class^="leaderName"], .endTableN';la=class{constructor(){this.decorators=new Map,this.watched=[],this.timer=0}add(e,t){this.decorators.set(e,t),this.watched.length===0&&this.observe(),this.refresh()}remove(e){if(this.decorators.delete(e),!(this.decorators.size>0)){for(let{observer:t}of this.watched)t.disconnect();this.watched=[],clearInterval(this.timer),this.timer=0}}observe(){for(let{root:e,list:t,kind:o}of Dp){let n=document.getElementById(e);n&&this.watch(n,t,o)}this.timer=setInterval(()=>this.discover(),e0)}watch(e,t,o){let n={observer:new MutationObserver(()=>this.walk(n)),target:e,list:t,kind:o};n.observer.observe(e,{childList:!0,subtree:!0}),this.watched.push(n),this.walk(n)}discover(){this.watched=this.watched.filter(e=>e.target.isConnected?!0:(e.observer.disconnect(),!1));for(let{list:e,kind:t}of Dp){let o=document.getElementById(e);o&&!this.watched.some(n=>n.target.contains(o))&&this.watch(o,e,t)}}refresh(){for(let e of this.watched)this.walk(e)}walk(e){let t=document.querySelectorAll(`#${e.list}`);if(t.length>0){for(let o of t)for(let n of o.querySelectorAll(t0)){let r={element:n,name:o0(n),kind:e.kind};for(let i of this.decorators.keys())i(r)}for(let o of this.decorators.values())o?.(e.kind)}e.observer.takeRecords()}},pt=new la});var Kp={};A(Kp,{default:()=>et,playerHash:()=>Un});function a0(){if(document.getElementById("signedInHeaderBar")===null)return"";let s=window.getGameActivity?.()?.id;return typeof s=="string"?s:""}function l0(){let s=window.getGameActivity?.()?.user;if(typeof s!="string")return"";if(localStorage.getItem("kro_setngss_premiumBadge")==="false"){let e=localStorage.getItem("krunker_username");if(e)return e}return s}async function Un(s,e){let t=new TextEncoder().encode(s+` `+e),o=new Uint8Array(await crypto.subtle.digest("SHA-256",t));return Array.from(o.subarray(0,16),n=>n.toString(16).padStart(2,"0")).join("")}function c0(s,e,t){return new Promise(o=>{let n=0,r=i=>{let a=i?.data?.devProof;a?.nonce===s&&(clearTimeout(n),window.chrome.webview.removeEventListener("message",r),o(typeof a.user=="string"&&typeof a.proof=="string"?{user:a.user,proof:a.proof}:null))};n=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),o(null)},i0),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(`dev-proof, ${s}, ${e}, ${t}`)})}var s0,n0,r0,i0,ca,qp,et,da=w(()=>{"use strict";D();It();s0=[2,4,8,16,30],n0=2e3,r0=3e4,i0=1e3;ca=class{constructor(){this.game="",this.roster=new Set,this.devs=new Map,this.nonce="",this.listeners=new Set,this.socket=null,this.failures=0,this.timer=0,this.joined="",he.available().then(e=>{e&&this.open()}),he.listeners.add(e=>{if(!e){this.socket?.close();return}this.failures=0,he.available().then(t=>{t&&!this.socket&&this.open()})})}open(){if(he.down||he.offline())return;let e=new WebSocket(he.base.replace(/^http/,"ws")+"/ws");this.socket=e,e.addEventListener("open",()=>{setTimeout(()=>{this.socket===e&&(this.failures=0)},r0),e.send(JSON.stringify(u.settings.data.counted===!0?{t:"hi"}:{t:"hi",first:!0})),this.sync(),this.timer=setInterval(()=>this.sync(),n0)}),e.addEventListener("message",t=>this.receive(t.data)),e.addEventListener("close",()=>{clearInterval(this.timer),this.socket=null,this.joined="",this.nonce="",this.setRoster("",[]);let t=s0[this.failures++];t!==void 0&&setTimeout(()=>this.open(),t*1e3)})}async sync(){let e=a0(),t=e?l0():"",o=e&&t?e+` `+t:"";if(o===this.joined)return;if(this.joined=o,!o){this.send({t:"leave"}),this.setRoster("",[]);return}let n=await Un(e,t);if(this.joined!==o)return;let r=u.dev===!0&&this.nonce?await c0(this.nonce,e,n):null;this.joined===o&&this.send(r?{t:"join",game:e,hash:n,dev:r}:{t:"join",game:e,hash:n})}send(e){this.socket?.readyState===WebSocket.OPEN&&this.socket.send(JSON.stringify(e))}receive(e){let t;try{t=JSON.parse(String(e))}catch{return}t?.t==="hello"&&typeof t.nonce=="string"?this.nonce=t.nonce:t?.t==="roster"&&typeof t.game=="string"&&Array.isArray(t.players)?this.joined.startsWith(t.game+` `)&&this.setRoster(t.game,t.players):t?.t==="+"&&typeof t.h=="string"?(this.remember(t.h,t.d===1?t.c:void 0),this.changed()):t?.t==="-"&&typeof t.h=="string"?(this.roster.delete(t.h),this.devs.delete(t.h),this.changed()):t?.t==="counted"&&(u.settings.data.counted=!0,window.chrome.webview.postMessage("set-config, counted, true"))}remember(e,t){this.roster.add(e),typeof t=="string"&&t!==""?this.devs.set(e,t):this.devs.delete(e)}setRoster(e,t){if(!(e===this.game&&t.length===0&&this.roster.size===0)){this.game=e,this.roster=new Set,this.devs=new Map;for(let o of t)Array.isArray(o)&&typeof o[0]=="string"&&this.remember(o[0],o[1]===1?o[2]?.c:void 0);this.changed()}}changed(){for(let e of this.listeners)e()}},qp=new ca;u.presence=qp;et=qp});var Up,jp=w(()=>{Up="data:image/webp;base64,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"});var Wp,Gp=w(()=>{Wp="data:image/webp;base64,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"});var pa={};A(pa,{default:()=>g0});function Vp(s){let e=s?`[data-kute-badge="${s}"]`:"[data-kute-badge]";for(let o of document.querySelectorAll(e))o.remove();let t=s?`[data-kute-badged="${s}"]`:"[data-kute-badged]";for(let o of document.querySelectorAll(t))o.removeAttribute("data-kute-badged")}function Yp(s){(s.querySelector("[data-kute-badge]")??s.parentElement?.querySelector("[data-kute-badge]"))?.remove(),s.removeAttribute("data-kute-badged")}var p0,h0,m0,f0,ua,Xp,g0,ha=w(()=>{"use strict";D();jn();da();jp();Gp();p0="2px",h0={leader:"margin-top:5px;vertical-align:middle;height:21px;margin-left:2px",ingame:"margin-top:3px;vertical-align:middle;height:21px;margin-left:2px",end:"margin-top:-12px;vertical-align:middle;width:26px;margin-left:2px",alt:"vertical-align:middle;height:21px;margin-left:6px;position:relative;top:-0.35em"},m0={kute:Up,dev:Wp},f0={kute:"Kute",dev:"Kute Developer"};ua=class{constructor(){this.game="",this.hashes=new Map,this.pending=new Set,this.found=!1,this.candidates=[],this.enabled=u.settings.data.cuteBadge!==!1,this.decorator=e=>this.decorate(e),this.finisher=()=>this.finish(),u.settings.toggleCuteBadge=e=>this.toggle(e),et.listeners.add(()=>this.rosterChanged())}toggle(e){this.enabled=e,e||Vp("kute"),pt.refresh()}rosterChanged(){if(et.game!==this.game&&(this.game=et.game,this.hashes.clear(),this.pending.clear()),Vp(),et.roster.size===0){pt.remove(this.decorator);return}pt.add(this.decorator,this.finisher)}decorate(e){if(et.roster.size===0||e.name==="")return;let t=this.hashes.get(e.name);if(t===void 0){this.learn(e.name);return}if(et.devs.has(t)){this.candidates.push({row:e,hash:t,tag:Ls(e.element)?.tag});return}this.enabled&&!e.element.hasAttribute("data-kute-badged")&&et.roster.has(t)&&this.insert(e,"kute")}finish(){if(this.candidates.length===0)return;let e=new Map;for(let t of this.candidates){let o=e.get(t.hash);o?o.push(t):e.set(t.hash,[t])}for(let[t,o]of e){let n=o.filter(i=>i.tag===et.devs.get(t)),r=null;n.length===1?r=n[0].row:n.length===0&&o.length===1&&(r=o[0].row);for(let i of o){let a=i.row.element.getAttribute("data-kute-badged");if(i.row!==r){a&&Yp(i.row.element);continue}a!=="dev"&&(a&&Yp(i.row.element),this.insert(i.row,"dev"))}}this.candidates.length=0}async learn(e){if(this.pending.has(e))return;this.pending.add(e);let{game:t}=this,o=await Un(t,e);t===this.game&&(this.pending.delete(e),this.hashes.set(e,o),et.roster.has(o)&&(this.found=!0),!(this.pending.size>0||!this.found)&&(this.found=!1,pt.refresh()))}insert(e,t){let{element:o}=e,n=o.parentElement;if(!n)return;let r=document.createElement("img");r.src=m0[t],r.setAttribute("data-kute-badge",t),r.alt="",r.title=f0[t],r.style.cssText=h0[e.kind],e.kind==="alt"?o.append(r):e.kind==="end"?n.insertBefore(r,o.nextSibling):n.insertBefore(r,n.firstElementChild?.nextSibling??o),r.nextElementSibling?.tagName==="I"&&(r.style.marginRight=p0),o.setAttribute("data-kute-badged",t)}},Xp=new ua;u.badges=Xp;g0=Xp});var Jp=we((_S,b0)=>{b0.exports=`#chatList>*{display:block!important}#chatInputHolder{opacity:1;transition:opacity .2s ease-in-out,transform .2s ease-in-out}#chatList::-webkit-scrollbar{display:none}#chatList{transition:margin-bottom .2s ease-in-out}#uiBase.onGame #chatList{margin-bottom:-50px}#uiBase.onMenu #chatInputHolder{transition:none}#uiBase.onGame #chatInputHolder{opacity:0;transform:translateY(50px)}#uiBase.onGame #chatHolder:focus-within #chatInputHolder{opacity:1;transform:translateY(0)}#uiBase.onGame #chatHolder:focus-within #chatList{margin-bottom:0}#uiBase.onSpect #chatInputHolder{opacity:1;transform:translateY(0)}#uiBase.onSpect #chatList{margin-bottom:0} `});var fa={};A(fa,{default:()=>v0});var ma,v0,ga=w(()=>{"use strict";D();Ae();ma=class{constructor(){this.teamModes=new Set(["Team Deathmatch","Hardpoint","Capture the Flag","Hide & Seek","Infected","Last Man Standing","Simon Says","Prop Hunt","Boss Hunt","Deposit","Stalker","Kill Confirmed","Defuse","Traitor","Blitz","Domination","Squad Deathmatch","Team Defender"]),this.styles=document.createElement("style"),Promise.resolve().then(()=>ue(Jp(),1)).then(e=>{this.styles.innerHTML=e.default}),u.settings.toggleBetterChat=e=>this.toggle(e),this.chatHolder=U("#chatHolder"),this.chatList=U("#chatList"),this.chatInput=ke("#chatInput"),this.chatSwitch=U("#chatSwitch"),this.channelT=document.createElement("div"),this.channelA=document.createElement("div"),this.channelT.style.cssText="float: left; display: inline-block; margin-right: 5px; color: #9eeb56;",this.channelT.textContent="[T]",this.channelA.style.cssText="float: left; display: inline-block; margin-right: 5px; color: #eb5656;",this.channelA.textContent="[M]",this.observer=new MutationObserver(e=>this.parseMessages(e)),this.toggle(!0)}switchChat=e=>{e.key==="Tab"&&(window.switchChat(this.chatSwitch),e.preventDefault())};parseMessages(e){let t=!1;for(let o of e)for(let n of o.addedNodes){if(!(n instanceof HTMLElement))continue;let r=n.querySelector(".chatItem");if(!r)continue;let i=r.querySelector(".chatMsg");if(!i)continue;if(i.textContent.includes("Text & Voice Chat")){n.remove();continue}let{tab:a}=n.dataset;!a||!r.textContent.includes("\u200E:")||!this.teamModes.has(window.getGameActivity().mode)||(a==="0"?i.insertBefore(this.channelA.cloneNode(!0),i.firstChild):a==="1"&&i.insertBefore(this.channelT.cloneNode(!0),i.firstChild),t=!0)}t&&(this.chatList.scrollTop=1e9)}toggle(e){e?(document.head.append(this.styles),this.chatInput.addEventListener("keydown",this.switchChat,{capture:!0}),this.observer.observe(this.chatList,{childList:!0})):(this.styles.remove(),this.chatInput.removeEventListener("keydown",this.switchChat,{capture:!0}),this.observer.disconnect())}},v0=new ma});var eh={};function Zp(){return Array.from(document.querySelectorAll(".bpClaimB")).filter(s=>s.offsetParent!==null&&s.textContent.trim()==="Claim")}function Qp(){let s=Zp().length>0;s?Ft.classList.remove("disabled"):Ft.classList.add("disabled"),Ft.textContent=s?"Claim All":"Nothing to Claim"}async function w0(){let s=Zp();if(s.length!==0){for(let e of s)e.getAttribute("onclick")?.includes("windows[5].claimItem(")&&e.click(),await new Promise(o=>setTimeout(o,200));Qp()}}function k0(){let s=document.querySelector(".bpBotH");s&&(s.append(Ft),Qp())}var Ft,y0,ba=w(()=>{"use strict";Ft=document.createElement("div");Ft.className="bpBtn skip";Ft.id="claimAllBtn";Ft.textContent="Claim All";Ft.onclick=()=>{window.playSelect?.(.1),w0()};y0=window.showWindow;window.showWindow=(...s)=>(s[0]===6&&queueMicrotask(()=>k0()),y0(...s))});function ya(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function dh(s){co=s}function zo(s){let e=[];return t=>{let o=Math.max(0,Math.min(3,t-1)),n=e[o];return n||(n=s(o),e[o]=n),n}}function Q(s,e=""){let t=typeof s=="string"?s:s.source,o={replace:(n,r)=>{let i=typeof r=="string"?r:r.source;return i=i.replace(Le.caret,"$1"),t=t.replace(n,i),o},getRegex:()=>new RegExp(t,e)};return o}function qe(s,e){if(e){if(Le.escapeTest.test(s))return s.replace(Le.escapeReplace,nh)}else if(Le.escapeTestNoEncode.test(s))return s.replace(Le.escapeReplaceNoEncode,nh);return s}function rh(s){try{s=encodeURI(s).replace(Le.percentDecode,"%")}catch{return null}return s}function ih(s,e){let t=s.replace(Le.findPipe,(r,i,a)=>{let l=!1,c=i;for(;--c>=0&&a[c]==="\\";)l=!l;return l?"|":" |"}),o=t.split(Le.splitPipe),n=0;if(o[0].trim()||o.shift(),o.length>0&&!o.at(-1)?.trim()&&o.pop(),e)if(o.length>e)o.splice(e);else for(;o.length=0&&Le.blankLine.test(e[t]);)t--;return e.length-t<=2?s:e.slice(0,t+1).join(` -`)}function Vn(s){return s.toLowerCase().toUpperCase().toLowerCase()}function bw(s,e){if(s.indexOf(e[1])===-1)return-1;let t=0;for(let o=0;o0?-2:-1}function vw(s,e=0){let t=e,o="";for(let n of s)if(n===" "){let r=4-t%4;o+=" ".repeat(r),t+=r}else o+=n,t++;return o}function lh(s,e,t,o,n){let r=e.href,i=e.title||null,a=s[1].replace(n.other.outputLinkReplace,"$1"),l=s[0].charAt(0)==="!";o.state.inLink=!0;let c=o.state.linkEmitted,d=o.state.inRawBlock;o.state.linkEmitted=!1;let p=o.inlineTokens(a),h=o.state.linkEmitted;if(o.state.linkEmitted=c,o.state.inLink=!1,!l){if(h){o.state.inRawBlock=d;return}o.state.linkEmitted=!0}return{type:l?"image":"link",raw:t,href:r,title:i,text:a,tokens:p}}function ww(s,e,t){let o=s.match(t.other.indentCodeCompensation);if(o===null)return e;let n=o[1];return e.split(` +`)}function Vn(s){return s.toLowerCase().toUpperCase().toLowerCase()}function bw(s,e){if(s.indexOf(e[1])===-1)return-1;let t=0;for(let o=0;o0?-2:-1}function vw(s,e=0){let t=e,o="";for(let n of s)if(n===" "){let r=4-t%4;o+=" ".repeat(r),t+=r}else o+=n,t++;return o}function lh(s,e,t,o,n){let r=e.href,i=e.title||null,a=s[1].replace(n.other.outputLinkReplace,"$1"),l=s[0].charAt(0)==="!";o.state.inLink=!0;let c=o.state.linkEmitted,d=o.state.inRawBlock;o.state.linkEmitted=!1;let h=o.inlineTokens(a),p=o.state.linkEmitted;if(o.state.linkEmitted=c,o.state.inLink=!1,!l){if(p){o.state.inRawBlock=d;return}o.state.linkEmitted=!0}return{type:l?"image":"link",raw:t,href:r,title:i,text:a,tokens:h}}function ww(s,e,t){let o=s.match(t.other.indentCodeCompensation);if(o===null)return e;let n=o[1];return e.split(` `).map(r=>{let i=r.match(t.other.beginningSpace);if(i===null)return r;let[a]=i;return r.slice(Math.min(a.length,n.length))}).join(` `)}function ch(s,e,t,o){if(!e.includes("<"))return!1;for(let n=0;ne.length-n)return!0;n+=i[0].length-1}}return!1}function ie(s,e){return lo.parse(s,e)}function yw(...s){return lo.use(...s),ie.defaults=lo.defaults,dh(ie.defaults),ie}var co,ao,x0,Le,S0,E0,$0,Is,C0,xa,uh,ph,M0,Sa,T0,Ea,A0,L0,Ns,$a,R0,hh,P0,I0,N0,Ca,th,_0,B0,z0,H0,mh,O0,xt,Ho,_s,D0,F0,fh,q0,K0,j0,gh,U0,G0,W0,V0,bh,Y0,X0,J0,Z0,Q0,ew,tw,ow,sw,nw,rw,iw,aw,lw,vh,Wn,cw,dw,uw,oh,pw,hw,sh,Ma,mw,va,fw,Gn,Rs,gw,nh,Yn,tt,Xn,Ta,ot,Ps,kw,lo,HS,OS,DS,FS,qS,KS,wh=w(()=>{co=ya();ao={exec:()=>null};x0=((s="")=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:s=>new RegExp(`^( {0,3}${s})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:zo(s=>new RegExp(`^ {0,${s}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:zo(s=>new RegExp(`^ {0,${s}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)),fencesBeginRegex:zo(s=>new RegExp(`^ {0,${s}}(?:\`\`\`|~~~)`)),headingBeginRegex:zo(s=>new RegExp(`^ {0,${s}}#`)),htmlBeginRegex:zo(s=>new RegExp(`^ {0,${s}}(?:)|<(?:script|pre|style|textarea|!--))`,"i")),blockquoteBeginRegex:zo(s=>new RegExp(`^ {0,${s}}>`))},S0=/^(?:[ \t]*(?:\n|$))+/,E0=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,$0=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Is=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,C0=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,xa=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,uh=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,ph=Q(uh).replace(/bull/g,xa).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),M0=Q(uh).replace(/bull/g,xa).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Sa=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,T0=/^[^\n]+/,Ea=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,A0=Q(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Ea).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),L0=Q(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,xa).getRegex(),Ns="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",$a=/|$))/,R0=Q("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",$a).replace("tag",Ns).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),hh=s=>Q(Sa).replace("hr",Is).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",s).replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Ns).getRegex(),P0=hh(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),I0=hh(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),N0=Q(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",I0).getRegex(),Ca={blockquote:N0,code:E0,def:A0,fences:$0,heading:C0,hr:Is,html:R0,lheading:ph,list:L0,newline:S0,paragraph:P0,table:ao,text:T0},th=Q("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Is).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Ns).getRegex(),_0={...Ca,lheading:M0,table:th,paragraph:Q(Sa).replace("hr",Is).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",th).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Ns).getRegex()},B0={...Ca,html:Q(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",$a).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:ao,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Q(Sa).replace("hr",Is).replace("heading",` *#{1,6} *[^ ]`).replace("lheading",ph).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},z0=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,H0=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,mh=/^( {2,}|\\)\n(?!\s*$)[ \t]*/,O0=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",x0?"(?`+)[^`]+\k(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),gh=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,U0=Q(gh,"u").replace(/punct/g,xt).getRegex(),G0=Q(gh,"u").replace(/punct/g,fh).getRegex(),W0=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,V0=Q(W0,"u").replace(/openQuote/g,F0).replace(/punct/g,xt).getRegex(),bh="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Y0=Q(bh,"gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),X0=Q(bh,"gu").replace(/notPunctSpace/g,K0).replace(/punctSpace/g,q0).replace(/punct/g,fh).getRegex(),J0="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",Z0=Q(J0,"gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),Q0=Q("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),ew="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",tw=Q(ew,"gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),ow=Q(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,xt).getRegex(),sw="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",nw=Q(sw,"gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),rw=Q(/\\(punct)/,"gu").replace(/punct/g,xt).getRegex(),iw=Q(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),aw=Q($a).replace("(?:-->|$)","-->").getRegex(),lw=Q("^comment|^|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",aw).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),vh=/\[(?:\\[\s\S]|[^\[\]\\])*\]/,Wn=Q(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets",vh).getRegex(),cw=Q(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",Wn).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),dw=Q(/^!?\[(label)\]\[(ref)\]/).replace("label",Wn).replace("ref",Ea).getRegex(),uw=Q(/^!?\[(ref)\](?:\[\])?/).replace("ref",Ea).getRegex(),oh=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/,pw=Q(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets",vh).getRegex(),hw=Q("reflink|nolink(?!\\()","g").replace("reflink",Q(/^!?\[(label)\]\[(ref)\]/).replace("label",pw).replace("ref",oh).getRegex()).replace("nolink",Q(/^!?\[(ref)\](?:\[\])?/).replace("ref",oh).getRegex()).getRegex(),sh=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Ma={_backpedal:ao,anyPunctuation:rw,autolink:iw,blockSkip:j0,br:mh,code:H0,del:ao,delLDelim:ao,delRDelim:ao,emStrongLDelim:U0,emStrongRDelimAst:Y0,emStrongRDelimUnd:Q0,escape:z0,link:cw,nolink:uw,punctuation:D0,reflink:dw,reflinkSearch:hw,tag:lw,text:O0,url:ao},mw={...Ma,emStrongLDelim:V0,emStrongRDelimAst:Z0,emStrongRDelimUnd:tw,link:Q(/^!?\[(label)\]\((.*?)\)/).replace("label",Wn).getRegex(),reflink:Q(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Wn).getRegex()},va={...Ma,emStrongRDelimAst:X0,emStrongLDelim:G0,delLDelim:ow,delRDelim:nw,url:Q(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",sh).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:Q(/^(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},nh=s=>gw[s];Yn=class{options;rules;lexer;constructor(s){this.options=s||co}space(s){let e=this.rules.block.newline.exec(s);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(s){let e=this.rules.block.code.exec(s);if(e){let t=this.options.pedantic?e[0]:ah(e[0]),o=t.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t,codeBlockStyle:"indented",text:o}}}fences(s){let e=this.rules.block.fences.exec(s);if(e){let t=e[0],o=ww(t,e[3]||"",this.rules);return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:o}}}heading(s){let e=this.rules.block.heading.exec(s);if(e){let t=e[2].trim();if(this.rules.other.endingHash.test(t)){let o=qt(t,"#");(this.options.pedantic||!o||this.rules.other.endingSpaceTabChar.test(o))&&(t=o.trim())}return{type:"heading",raw:qt(e[0],` @@ -100,25 +100,25 @@ void main() { outColor = texture(uLabel, vUv); }`;Gr=new Float32Array(4096),Mu=0 `),d=c.replace(this.rules.other.blockquoteSetextReplace,` $1`).replace(this.rules.other.blockquoteSetextReplace2,"");o=o?`${o} ${c}`:c,n=n?`${n} -${d}`:d;let p=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(d,r,!0),this.lexer.state.top=p,t.length===0)break;let h=r.at(-1);if(h?.type==="code")break;if(h?.type==="blockquote"){let f=h,m=t.join(` -`),g=f.raw+` -`+m.replace(this.rules.other.blockquoteSetextReplace2,""),b=this.blockquote(g);r[r.length-1]=b,o=`${o} -${m}`,n=n.substring(0,n.length-f.text.length)+b.text;break}else if(h?.type==="list"){let f=h,m=f.raw+` +${d}`:d;let h=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(d,r,!0),this.lexer.state.top=h,t.length===0)break;let p=r.at(-1);if(p?.type==="code")break;if(p?.type==="blockquote"){let m=p,f=t.join(` +`),g=m.raw+` +`+f.replace(this.rules.other.blockquoteSetextReplace2,""),b=this.blockquote(g);r[r.length-1]=b,o=`${o} +${f}`,n=n.substring(0,n.length-m.text.length)+b.text;break}else if(p?.type==="list"){let m=p,f=m.raw+` `+t.join(` -`),g=this.list(m);r[r.length-1]=g,o=o.substring(0,o.length-h.raw.length)+g.raw,n=n.substring(0,n.length-f.raw.length)+g.raw,t=m.substring(r.at(-1).raw.length).split(` -`);continue}}return{type:"blockquote",raw:o,tokens:r,text:n}}}list(s){let e=this.rules.block.list.exec(s);if(e){let t=e[1].trim(),o=t.length>1,n={type:"list",raw:"",ordered:o,start:o?+t.slice(0,-1):"",loose:!1,items:[]};t=o?`\\d{1,9}\\${t.slice(-1)}`:`\\${t}`,this.options.pedantic&&(t=o?t:"[*+-]");let r=this.rules.other.listItemRegex(t),i=!1;for(;s;){let l=!1,c="",d="";if(!(e=r.exec(s))||this.rules.block.hr.test(s))break;c=e[0],s=s.substring(c.length);let p=vw(e[2].split(` -`,1)[0],e[1].length),h=s.split(` -`,1)[0],f=!p.trim(),m=0;if(this.options.pedantic?(m=2,d=p.trimStart()):f?m=e[1].length+1:(m=p.search(this.rules.other.nonSpaceChar),m=m>4?1:m,d=p.slice(m),m+=e[1].length),f&&this.rules.other.blankLine.test(h)&&(c+=h+` -`,s=s.substring(h.length+1),l=!0),!l){let g=this.rules.other.nextBulletRegex(m),b=this.rules.other.hrRegex(m),v=this.rules.other.fencesBeginRegex(m),k=this.rules.other.headingBeginRegex(m),E=this.rules.other.htmlBeginRegex(m),L=this.rules.other.blockquoteBeginRegex(m);for(;s;){let x=s.split(` -`,1)[0],$;if(h=x,this.options.pedantic?(h=h.replace(this.rules.other.listReplaceNesting," "),$=h):$=h.replace(this.rules.other.tabCharGlobal," "),v.test(h)||k.test(h)||E.test(h)||L.test(h)||g.test(h)||b.test(h))break;if($.search(this.rules.other.nonSpaceChar)>=m||!h.trim())d+=` -`+$.slice(m);else{if(f||p.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||v.test(p)||k.test(p)||b.test(p))break;d+=` -`+h}f=!h.trim(),c+=x+` -`,s=s.substring(x.length+1),p=$.slice(m)}}n.loose||(i?n.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(i=!0)),n.items.push({type:"list_item",raw:c,task:!!this.options.gfm&&this.rules.other.listIsTask.test(d),loose:!1,text:d,tokens:[]}),n.raw+=c}let a=n.items.at(-1);if(a)a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd();else return;n.raw=n.raw.trimEnd();for(let l of n.items)if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),!n.loose){let c=l.tokens.filter(p=>p.type==="space"),d=c.length>0&&c.some(p=>this.rules.other.anyLine.test(p.raw));n.loose=d}for(let l of n.items){let c=l.tokens[0];if(l.task&&(c?.type==="text"||c?.type==="paragraph")){l.text=l.text.replace(this.rules.other.listReplaceTask,""),c.raw=c.raw.replace(this.rules.other.listReplaceTask,""),c.text=c.text.replace(this.rules.other.listReplaceTask,"");for(let p=this.lexer.inlineQueue.length-1;p>=0;p--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[p].src)){this.lexer.inlineQueue[p].src=this.lexer.inlineQueue[p].src.replace(this.rules.other.listReplaceTask,"");break}let d=this.rules.other.listTaskCheckbox.exec(l.raw);if(d){let p={type:"checkbox",raw:d[0]+" ",checked:d[0]!=="[ ]"};l.checked=p.checked,n.loose?l.tokens[0]&&["paragraph","text"].includes(l.tokens[0].type)&&"tokens"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=p.raw+l.tokens[0].raw,l.tokens[0].text=p.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(p)):l.tokens.unshift({type:"paragraph",raw:p.raw,text:p.raw,tokens:[p]}):l.tokens.unshift(p)}}else l.task&&(l.task=!1)}if(n.loose)for(let l of n.items){l.loose=!0;for(let c of l.tokens)c.type==="text"&&(c.type="paragraph")}return n}}html(s){let e=this.rules.block.html.exec(s);if(e){let t=ah(e[0]);return{type:"html",block:!0,raw:t,pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:t}}}def(s){let e=this.rules.block.def.exec(s);if(e){let t=Vn(e[1]).replace(this.rules.other.multipleSpaceGlobal," "),o=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",n=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:t,raw:qt(e[0],` +`),g=this.list(f);r[r.length-1]=g,o=o.substring(0,o.length-p.raw.length)+g.raw,n=n.substring(0,n.length-m.raw.length)+g.raw,t=f.substring(r.at(-1).raw.length).split(` +`);continue}}return{type:"blockquote",raw:o,tokens:r,text:n}}}list(s){let e=this.rules.block.list.exec(s);if(e){let t=e[1].trim(),o=t.length>1,n={type:"list",raw:"",ordered:o,start:o?+t.slice(0,-1):"",loose:!1,items:[]};t=o?`\\d{1,9}\\${t.slice(-1)}`:`\\${t}`,this.options.pedantic&&(t=o?t:"[*+-]");let r=this.rules.other.listItemRegex(t),i=!1;for(;s;){let l=!1,c="",d="";if(!(e=r.exec(s))||this.rules.block.hr.test(s))break;c=e[0],s=s.substring(c.length);let h=vw(e[2].split(` +`,1)[0],e[1].length),p=s.split(` +`,1)[0],m=!h.trim(),f=0;if(this.options.pedantic?(f=2,d=h.trimStart()):m?f=e[1].length+1:(f=h.search(this.rules.other.nonSpaceChar),f=f>4?1:f,d=h.slice(f),f+=e[1].length),m&&this.rules.other.blankLine.test(p)&&(c+=p+` +`,s=s.substring(p.length+1),l=!0),!l){let g=this.rules.other.nextBulletRegex(f),b=this.rules.other.hrRegex(f),v=this.rules.other.fencesBeginRegex(f),k=this.rules.other.headingBeginRegex(f),E=this.rules.other.htmlBeginRegex(f),L=this.rules.other.blockquoteBeginRegex(f);for(;s;){let x=s.split(` +`,1)[0],$;if(p=x,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting," "),$=p):$=p.replace(this.rules.other.tabCharGlobal," "),v.test(p)||k.test(p)||E.test(p)||L.test(p)||g.test(p)||b.test(p))break;if($.search(this.rules.other.nonSpaceChar)>=f||!p.trim())d+=` +`+$.slice(f);else{if(m||h.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||v.test(h)||k.test(h)||b.test(h))break;d+=` +`+p}m=!p.trim(),c+=x+` +`,s=s.substring(x.length+1),h=$.slice(f)}}n.loose||(i?n.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(i=!0)),n.items.push({type:"list_item",raw:c,task:!!this.options.gfm&&this.rules.other.listIsTask.test(d),loose:!1,text:d,tokens:[]}),n.raw+=c}let a=n.items.at(-1);if(a)a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd();else return;n.raw=n.raw.trimEnd();for(let l of n.items)if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),!n.loose){let c=l.tokens.filter(h=>h.type==="space"),d=c.length>0&&c.some(h=>this.rules.other.anyLine.test(h.raw));n.loose=d}for(let l of n.items){let c=l.tokens[0];if(l.task&&(c?.type==="text"||c?.type==="paragraph")){l.text=l.text.replace(this.rules.other.listReplaceTask,""),c.raw=c.raw.replace(this.rules.other.listReplaceTask,""),c.text=c.text.replace(this.rules.other.listReplaceTask,"");for(let h=this.lexer.inlineQueue.length-1;h>=0;h--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[h].src)){this.lexer.inlineQueue[h].src=this.lexer.inlineQueue[h].src.replace(this.rules.other.listReplaceTask,"");break}let d=this.rules.other.listTaskCheckbox.exec(l.raw);if(d){let h={type:"checkbox",raw:d[0]+" ",checked:d[0]!=="[ ]"};l.checked=h.checked,n.loose?l.tokens[0]&&["paragraph","text"].includes(l.tokens[0].type)&&"tokens"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=h.raw+l.tokens[0].raw,l.tokens[0].text=h.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(h)):l.tokens.unshift({type:"paragraph",raw:h.raw,text:h.raw,tokens:[h]}):l.tokens.unshift(h)}}else l.task&&(l.task=!1)}if(n.loose)for(let l of n.items){l.loose=!0;for(let c of l.tokens)c.type==="text"&&(c.type="paragraph")}return n}}html(s){let e=this.rules.block.html.exec(s);if(e){let t=ah(e[0]);return{type:"html",block:!0,raw:t,pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:t}}}def(s){let e=this.rules.block.def.exec(s);if(e){let t=Vn(e[1]).replace(this.rules.other.multipleSpaceGlobal," "),o=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",n=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:t,raw:qt(e[0],` `),href:o,title:n}}}table(s){let e=this.rules.block.table.exec(s);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let t=ih(e[1]),o=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),n=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(` `):[],r={type:"table",raw:qt(e[0],` `),header:[],align:[],rows:[]};if(t.length===o.length){for(let i of o)this.rules.other.tableAlignRight.test(i)?r.align.push("right"):this.rules.other.tableAlignCenter.test(i)?r.align.push("center"):this.rules.other.tableAlignLeft.test(i)?r.align.push("left"):r.align.push(null);for(let i=0;i({text:a,tokens:this.lexer.inline(a),header:!1,align:r.align[l]})));return r}}lheading(s){let e=this.rules.block.lheading.exec(s);if(e){let t=e[1].trim();return{type:"heading",raw:qt(e[0],` `),depth:e[2].charAt(0)==="="?1:2,text:t,tokens:this.lexer.inline(t)}}}paragraph(s){let e=this.rules.block.paragraph.exec(s);if(e){let t=e[1].charAt(e[1].length-1)===` -`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(s){let e=this.rules.block.text.exec(s);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(s){let e=this.rules.inline.escape.exec(s);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(s){let e=this.rules.inline.tag.exec(s);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(s){let e=this.rules.inline.link.exec(s);if(e){let t=e[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&ch(s,e[1],t,this.rules))return;let o=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(o)){if(!this.rules.other.endAngleBracket.test(o))return;let i=qt(o.slice(0,-1),"\\");if((o.length-i.length)%2===0)return}else{let i=bw(e[2],"()");if(i===-2)return;if(i>-1){let a=(e[0].indexOf("!")===0?5:4)+e[1].length+i;e[2]=e[2].substring(0,i),e[0]=e[0].substring(0,a).trim(),e[3]=""}}let n=e[2],r="";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(n);i&&(n=i[1],r=i[3])}else r=e[3]?e[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(o)?n=n.slice(1):n=n.slice(1,-1)),lh(e,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(s,e){let t;if((t=this.rules.inline.reflink.exec(s))||(t=this.rules.inline.nolink.exec(s))){let o=t[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&ch(s,t[1],o,this.rules))return;let n=(t[2]||t[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=e[Vn(n)];if(!r){let i=t[0].charAt(0);return{type:"text",raw:i,text:i}}return lh(t,r,t[0],this.lexer,this.rules)}}emStrong(s,e,t=""){let o=this.rules.inline.emStrongLDelim.exec(s);if(!(!o||!o[1]&&!o[2]&&!o[3]&&!o[4]||o[4]&&t.match(this.rules.other.unicodeAlphaNumeric))&&(!(o[1]||o[3])||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=0,c=o[0][0],d=t===c,p=c==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(p.lastIndex=0,e=e.slice(-1*s.length+n);(o=p.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r)continue;if(i=[...r].length,o[3]||o[4]){a+=i;continue}else if(o[5]||o[6]){if(n%3&&!((n+i)%3)){l+=i;continue}if(d)break}if(a-=i,a>0)continue;i=Math.min(i,i+a+l);let h=[...o[0]][0].length,f=s.slice(0,n+o.index+h+i);if(Math.min(n,i)%2){let g=f.slice(1,-1);return{type:"em",raw:f,text:g,tokens:this.lexer.inlineTokens(g)}}let m=f.slice(2,-2);return{type:"strong",raw:f,text:m,tokens:this.lexer.inlineTokens(m)}}}}codespan(s){let e=this.rules.inline.code.exec(s);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," "),o=this.rules.other.nonSpaceChar.test(t),n=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return o&&n&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(s){let e=this.rules.inline.br.exec(s);if(e)return{type:"br",raw:e[0]}}del(s,e,t=""){let o=this.rules.inline.delLDelim.exec(s);if(o&&(!o[1]||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=this.rules.inline.delRDelim;for(l.lastIndex=0,e=e.slice(-1*s.length+n);(o=l.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r||(i=[...r].length,i!==n))continue;if(o[3]||o[4]){a+=i;continue}if(a-=i,a>0)continue;i=Math.min(i,i+a);let c=[...o[0]][0].length,d=s.slice(0,n+o.index+c+i),p=d.slice(n,-n);return{type:"del",raw:d,text:p,tokens:this.lexer.inlineTokens(p)}}}}autolink(s){let e=this.rules.inline.autolink.exec(s);if(e){let t,o;return e[2]==="@"?(t=e[1],o="mailto:"+t):(t=e[1],o=t),{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}url(s){let e;if(e=this.rules.inline.url.exec(s)){let t,o;if(e[2]==="@")t=e[0],o="mailto:"+t;else{let n;do n=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(n!==e[0]);t=e[0],e[1]==="www."?o="http://"+e[0]:o=e[0]}return{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}inlineText(s){let e=this.rules.inline.text.exec(s);if(e){let t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:t}}}},tt=class wa{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||co,this.options.tokenizer=this.options.tokenizer||new Yn,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let t={other:Le,block:Gn.normal,inline:Rs.normal};this.options.pedantic?(t.block=Gn.pedantic,t.inline=Rs.pedantic):this.options.gfm&&(t.block=Gn.gfm,this.options.breaks?t.inline=Rs.breaks:t.inline=Rs.gfm),this.tokenizer.rules=t}static get rules(){return{block:Gn,inline:Rs}}static lex(e,t){return new wa(t).lex(e)}static lexInline(e,t){return new wa(t).inlineTokens(e)}lex(e){e=e.replace(Le.carriageReturn,` +`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(s){let e=this.rules.block.text.exec(s);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(s){let e=this.rules.inline.escape.exec(s);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(s){let e=this.rules.inline.tag.exec(s);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(s){let e=this.rules.inline.link.exec(s);if(e){let t=e[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&ch(s,e[1],t,this.rules))return;let o=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(o)){if(!this.rules.other.endAngleBracket.test(o))return;let i=qt(o.slice(0,-1),"\\");if((o.length-i.length)%2===0)return}else{let i=bw(e[2],"()");if(i===-2)return;if(i>-1){let a=(e[0].indexOf("!")===0?5:4)+e[1].length+i;e[2]=e[2].substring(0,i),e[0]=e[0].substring(0,a).trim(),e[3]=""}}let n=e[2],r="";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(n);i&&(n=i[1],r=i[3])}else r=e[3]?e[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(o)?n=n.slice(1):n=n.slice(1,-1)),lh(e,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(s,e){let t;if((t=this.rules.inline.reflink.exec(s))||(t=this.rules.inline.nolink.exec(s))){let o=t[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&ch(s,t[1],o,this.rules))return;let n=(t[2]||t[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=e[Vn(n)];if(!r){let i=t[0].charAt(0);return{type:"text",raw:i,text:i}}return lh(t,r,t[0],this.lexer,this.rules)}}emStrong(s,e,t=""){let o=this.rules.inline.emStrongLDelim.exec(s);if(!(!o||!o[1]&&!o[2]&&!o[3]&&!o[4]||o[4]&&t.match(this.rules.other.unicodeAlphaNumeric))&&(!(o[1]||o[3])||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=0,c=o[0][0],d=t===c,h=c==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(h.lastIndex=0,e=e.slice(-1*s.length+n);(o=h.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r)continue;if(i=[...r].length,o[3]||o[4]){a+=i;continue}else if(o[5]||o[6]){if(n%3&&!((n+i)%3)){l+=i;continue}if(d)break}if(a-=i,a>0)continue;i=Math.min(i,i+a+l);let p=[...o[0]][0].length,m=s.slice(0,n+o.index+p+i);if(Math.min(n,i)%2){let g=m.slice(1,-1);return{type:"em",raw:m,text:g,tokens:this.lexer.inlineTokens(g)}}let f=m.slice(2,-2);return{type:"strong",raw:m,text:f,tokens:this.lexer.inlineTokens(f)}}}}codespan(s){let e=this.rules.inline.code.exec(s);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," "),o=this.rules.other.nonSpaceChar.test(t),n=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return o&&n&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(s){let e=this.rules.inline.br.exec(s);if(e)return{type:"br",raw:e[0]}}del(s,e,t=""){let o=this.rules.inline.delLDelim.exec(s);if(o&&(!o[1]||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=this.rules.inline.delRDelim;for(l.lastIndex=0,e=e.slice(-1*s.length+n);(o=l.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r||(i=[...r].length,i!==n))continue;if(o[3]||o[4]){a+=i;continue}if(a-=i,a>0)continue;i=Math.min(i,i+a);let c=[...o[0]][0].length,d=s.slice(0,n+o.index+c+i),h=d.slice(n,-n);return{type:"del",raw:d,text:h,tokens:this.lexer.inlineTokens(h)}}}}autolink(s){let e=this.rules.inline.autolink.exec(s);if(e){let t,o;return e[2]==="@"?(t=e[1],o="mailto:"+t):(t=e[1],o=t),{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}url(s){let e;if(e=this.rules.inline.url.exec(s)){let t,o;if(e[2]==="@")t=e[0],o="mailto:"+t;else{let n;do n=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(n!==e[0]);t=e[0],e[1]==="www."?o="http://"+e[0]:o=e[0]}return{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}inlineText(s){let e=this.rules.inline.text.exec(s);if(e){let t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:t}}}},tt=class wa{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||co,this.options.tokenizer=this.options.tokenizer||new Yn,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let t={other:Le,block:Gn.normal,inline:Rs.normal};this.options.pedantic?(t.block=Gn.pedantic,t.inline=Rs.pedantic):this.options.gfm&&(t.block=Gn.gfm,this.options.breaks?t.inline=Rs.breaks:t.inline=Rs.gfm),this.tokenizer.rules=t}static get rules(){return{block:Gn,inline:Rs}}static lex(e,t){return new wa(t).lex(e)}static lexInline(e,t){return new wa(t).inlineTokens(e)}lex(e){e=e.replace(Le.carriageReturn,` `),this.blockTokens(e,this.tokens);for(let t=0;t(r=a.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let a=t.at(-1);r.raw.length===1&&a!==void 0?a.raw+=` `:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let a=t.at(-1);a?.type==="paragraph"||a?.type==="text"?(a.raw+=(a.raw.endsWith(` `)?"":` @@ -132,7 +132,7 @@ ${m}`,n=n.substring(0,n.length-f.text.length)+b.text;break}else if(h?.type==="li `+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):t.push(r),o=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let a=t.at(-1);a?.type==="text"?(a.raw+=(a.raw.endsWith(` `)?"":` `)+r.raw,a.text+=` -`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):t.push(r);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}linkInText(e){if(!e.includes("["))return!1;let t=this.tokenizer.rules.inline.link;for(let o of e.matchAll(this.tokenizer.rules.inline.blockSkip))if(t.test(o[0])&&e.charAt(o.index-1)!=="!")return!0;for(let o of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let n=o[0],r=n.lastIndexOf("[");if(!(n.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,Vn(n.slice(r+1,-1))))&&!(r>1&&this.linkInText(n.slice(1,r-1))))return!0}return!1}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let o=e;if(this.tokens.links&&e.includes("[")){let a=this.tokenizer.rules.inline.reflinkSearch,l=c=>{let d=c.lastIndexOf("[");if(!Object.hasOwn(this.tokens.links,Vn(c.slice(d+1,-1))))return c;if(d>1&&c.charAt(0)!=="!"){let p=c.slice(1,d-1);if(this.linkInText(p))return"["+p.replace(a,l)+"]["+"a".repeat(c.length-d-2)+"]"}return"["+"a".repeat(c.length-2)+"]"};o=o.replace(a,l)}o=o.replace(this.tokenizer.rules.inline.anyPunctuation,a=>"+".repeat(a.length)),o=o.replace(this.tokenizer.rules.inline.blockSkip,(a,l,c)=>{let d=c?c.length:0;return a.slice(0,d)+"["+"a".repeat(a.length-d-2)+"]"}),o=this.options.hooks?.emStrongMask?.call({lexer:this},o)??o;let n=!1,r="",i=1/0;for(;e;){if(e.length(a=c.call({lexer:this},e,t))?(e=e.substring(a.raw.length),t.push(a),!0):!1))continue;if(a=this.tokenizer.escape(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.tag(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.link(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(a.raw.length);let c=t.at(-1);a.type==="text"&&c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):t.push(a);continue}if(a=this.tokenizer.emStrong(e,o,r)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.codespan(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.br(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.del(e,o,r)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.autolink(e)){e=e.substring(a.raw.length),t.push(a);continue}if(!this.state.inLink&&(a=this.tokenizer.url(e))){e=e.substring(a.raw.length),t.push(a);continue}let l=e;if(this.options.extensions?.startInline){let c=1/0,d=e.slice(1),p;this.options.extensions.startInline.forEach(h=>{p=h.call({lexer:this},d),typeof p=="number"&&p>=0&&(c=Math.min(c,p))}),c<1/0&&c>=0&&(l=e.substring(0,c+1))}if(a=this.tokenizer.inlineText(l)){e=e.substring(a.raw.length),a.raw.slice(-1)!=="_"&&(r=a.raw.slice(-1)),n=!0;let c=t.at(-1);c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):t.push(a);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t="Infinite loop on byte: "+e;if(this.options.silent)console.error(t);else throw new Error(t)}},Xn=class{options;parser;constructor(s){this.options=s||co}space(s){return""}code({text:s,lang:e,escaped:t}){let o=(e||"").match(Le.notSpaceStart)?.[0],n=s?s.replace(Le.endingNewline,"")+` +`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):t.push(r);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}linkInText(e){if(!e.includes("["))return!1;let t=this.tokenizer.rules.inline.link;for(let o of e.matchAll(this.tokenizer.rules.inline.blockSkip))if(t.test(o[0])&&e.charAt(o.index-1)!=="!")return!0;for(let o of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let n=o[0],r=n.lastIndexOf("[");if(!(n.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,Vn(n.slice(r+1,-1))))&&!(r>1&&this.linkInText(n.slice(1,r-1))))return!0}return!1}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let o=e;if(this.tokens.links&&e.includes("[")){let a=this.tokenizer.rules.inline.reflinkSearch,l=c=>{let d=c.lastIndexOf("[");if(!Object.hasOwn(this.tokens.links,Vn(c.slice(d+1,-1))))return c;if(d>1&&c.charAt(0)!=="!"){let h=c.slice(1,d-1);if(this.linkInText(h))return"["+h.replace(a,l)+"]["+"a".repeat(c.length-d-2)+"]"}return"["+"a".repeat(c.length-2)+"]"};o=o.replace(a,l)}o=o.replace(this.tokenizer.rules.inline.anyPunctuation,a=>"+".repeat(a.length)),o=o.replace(this.tokenizer.rules.inline.blockSkip,(a,l,c)=>{let d=c?c.length:0;return a.slice(0,d)+"["+"a".repeat(a.length-d-2)+"]"}),o=this.options.hooks?.emStrongMask?.call({lexer:this},o)??o;let n=!1,r="",i=1/0;for(;e;){if(e.length(a=c.call({lexer:this},e,t))?(e=e.substring(a.raw.length),t.push(a),!0):!1))continue;if(a=this.tokenizer.escape(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.tag(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.link(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(a.raw.length);let c=t.at(-1);a.type==="text"&&c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):t.push(a);continue}if(a=this.tokenizer.emStrong(e,o,r)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.codespan(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.br(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.del(e,o,r)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.autolink(e)){e=e.substring(a.raw.length),t.push(a);continue}if(!this.state.inLink&&(a=this.tokenizer.url(e))){e=e.substring(a.raw.length),t.push(a);continue}let l=e;if(this.options.extensions?.startInline){let c=1/0,d=e.slice(1),h;this.options.extensions.startInline.forEach(p=>{h=p.call({lexer:this},d),typeof h=="number"&&h>=0&&(c=Math.min(c,h))}),c<1/0&&c>=0&&(l=e.substring(0,c+1))}if(a=this.tokenizer.inlineText(l)){e=e.substring(a.raw.length),a.raw.slice(-1)!=="_"&&(r=a.raw.slice(-1)),n=!0;let c=t.at(-1);c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):t.push(a);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t="Infinite loop on byte: "+e;if(this.options.silent)console.error(t);else throw new Error(t)}},Xn=class{options;parser;constructor(s){this.options=s||co}space(s){return""}code({text:s,lang:e,escaped:t}){let o=(e||"").match(Le.notSpaceStart)?.[0],n=s?s.replace(Le.endingNewline,"")+` `:"";return o?'
      '+(t?n:qe(n,!0))+`
      `:"
      "+(t?n:qe(n,!0))+`
      `}blockquote({tokens:s}){return`
      @@ -150,7 +150,7 @@ ${this.parser.parse(s)}
      `}tablerow({text:s}){return` ${s} `}tablecell(s){let e=this.parser.parseInline(s.tokens),t=s.header?"th":"td";return(s.align?`<${t} align="${s.align}">`:`<${t}>`)+e+` -`}strong({tokens:s}){return`${this.parser.parseInline(s)}`}em({tokens:s}){return`${this.parser.parseInline(s)}`}codespan({text:s}){return`${qe(s,!0)}`}br(s){return"
      "}del({tokens:s}){return`${this.parser.parseInline(s)}`}link({href:s,title:e,text:t,tokens:o,autolink:n}){let r=n?qe(t,!0):this.parser.parseInline(o),i=rh(s);if(i===null)return r;s=qe(i,n);let a='
      ",a}image({href:s,title:e,text:t,tokens:o}){o&&(t=this.parser.parseInline(o,this.parser.textRenderer));let n=rh(s);if(n===null)return qe(t);s=n;let r=`${qe(t)}{let i=n[r].flat(1/0);t=t.concat(this.walkTokens(i,e))}):n.tokens&&(t=t.concat(this.walkTokens(n.tokens,e)))}}return t}use(...s){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return s.forEach(t=>{let o={...t};if(o.async=this.defaults.async||o.async||!1,t.extensions&&(t.extensions.forEach(n=>{if(!n.name)throw new Error("extension name required");if("renderer"in n){let r=e.renderers[n.name];r?e.renderers[n.name]=function(...i){let a=n.renderer.apply(this,i);return a===!1&&(a=r.apply(this,i)),a}:e.renderers[n.name]=n.renderer}if("tokenizer"in n){if(!n.level||n.level!=="block"&&n.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let r=e[n.level];r?r.unshift(n.tokenizer):e[n.level]=[n.tokenizer],n.start&&(n.level==="block"?e.startBlock?e.startBlock.push(n.start):e.startBlock=[n.start]:n.level==="inline"&&(e.startInline?e.startInline.push(n.start):e.startInline=[n.start]))}"childTokens"in n&&n.childTokens&&(e.childTokens[n.name]=n.childTokens)}),o.extensions=e),t.renderer){let n=this.defaults.renderer||new Xn(this.defaults);for(let r in t.renderer){if(!(r in n))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let i=r,a=t.renderer[i],l=n[i];n[i]=(...c)=>{let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d||""}}o.renderer=n}if(t.tokenizer){let n=this.defaults.tokenizer||new Yn(this.defaults);for(let r in t.tokenizer){if(!(r in n))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let i=r,a=t.tokenizer[i],l=n[i];n[i]=(...c)=>{let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d}}o.tokenizer=n}if(t.hooks){let n=this.defaults.hooks||new Ps;for(let r in t.hooks){if(!(r in n))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let i=r,a=t.hooks[i],l=n[i];Ps.passThroughHooks.has(r)?n[i]=c=>{if(this.defaults.async&&Ps.passThroughHooksRespectAsync.has(r))return(async()=>{let p=await a.call(n,c);return l.call(n,p)})();let d=a.call(n,c);return l.call(n,d)}:n[i]=(...c)=>{if(this.defaults.async)return(async()=>{let p=await a.apply(n,c);return p===!1&&(p=await l.apply(n,c)),p})();let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d}}o.hooks=n}if(t.walkTokens){let n=this.defaults.walkTokens,r=t.walkTokens;o.walkTokens=function(i){let a=[];return a.push(r.call(this,i)),n&&(a=a.concat(n.call(this,i))),a}}this.defaults={...this.defaults,...o}}),this}setOptions(s){return this.defaults={...this.defaults,...s},this}lexer(s,e){return tt.lex(s,e??this.defaults)}parser(s,e){return ot.parse(s,e??this.defaults)}parseMarkdown(s){return(e,t)=>{let o={...t},n={...this.defaults,...o},r=this.onError(!!n.silent,!!n.async);if(this.defaults.async===!0&&o.async===!1)return r(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return r(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return r(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(n.hooks&&(n.hooks.options=n,n.hooks.block=s),n.async)return(async()=>{let i=n.hooks?await n.hooks.preprocess(e):e,a=await(n.hooks?await n.hooks.provideLexer(s):s?tt.lex:tt.lexInline)(i,n),l=n.hooks?await n.hooks.processAllTokens(a):a;n.walkTokens&&await Promise.all(this.walkTokens(l,n.walkTokens));let c=await(n.hooks?await n.hooks.provideParser(s):s?ot.parse:ot.parseInline)(l,n);return n.hooks?await n.hooks.postprocess(c):c})().catch(r);try{n.hooks&&(e=n.hooks.preprocess(e));let i=(n.hooks?n.hooks.provideLexer(s):s?tt.lex:tt.lexInline)(e,n);n.hooks&&(i=n.hooks.processAllTokens(i)),n.walkTokens&&this.walkTokens(i,n.walkTokens);let a=(n.hooks?n.hooks.provideParser(s):s?ot.parse:ot.parseInline)(i,n);return n.hooks&&(a=n.hooks.postprocess(a)),a}catch(i){return r(i)}}}onError(s,e){return t=>{if(t.message+=` +`}strong({tokens:s}){return`${this.parser.parseInline(s)}`}em({tokens:s}){return`${this.parser.parseInline(s)}`}codespan({text:s}){return`${qe(s,!0)}`}br(s){return"
      "}del({tokens:s}){return`${this.parser.parseInline(s)}`}link({href:s,title:e,text:t,tokens:o,autolink:n}){let r=n?qe(t,!0):this.parser.parseInline(o),i=rh(s);if(i===null)return r;s=qe(i,n);let a='
      ",a}image({href:s,title:e,text:t,tokens:o}){o&&(t=this.parser.parseInline(o,this.parser.textRenderer));let n=rh(s);if(n===null)return qe(t);s=n;let r=`${qe(t)}{let i=n[r].flat(1/0);t=t.concat(this.walkTokens(i,e))}):n.tokens&&(t=t.concat(this.walkTokens(n.tokens,e)))}}return t}use(...s){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return s.forEach(t=>{let o={...t};if(o.async=this.defaults.async||o.async||!1,t.extensions&&(t.extensions.forEach(n=>{if(!n.name)throw new Error("extension name required");if("renderer"in n){let r=e.renderers[n.name];r?e.renderers[n.name]=function(...i){let a=n.renderer.apply(this,i);return a===!1&&(a=r.apply(this,i)),a}:e.renderers[n.name]=n.renderer}if("tokenizer"in n){if(!n.level||n.level!=="block"&&n.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let r=e[n.level];r?r.unshift(n.tokenizer):e[n.level]=[n.tokenizer],n.start&&(n.level==="block"?e.startBlock?e.startBlock.push(n.start):e.startBlock=[n.start]:n.level==="inline"&&(e.startInline?e.startInline.push(n.start):e.startInline=[n.start]))}"childTokens"in n&&n.childTokens&&(e.childTokens[n.name]=n.childTokens)}),o.extensions=e),t.renderer){let n=this.defaults.renderer||new Xn(this.defaults);for(let r in t.renderer){if(!(r in n))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let i=r,a=t.renderer[i],l=n[i];n[i]=(...c)=>{let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d||""}}o.renderer=n}if(t.tokenizer){let n=this.defaults.tokenizer||new Yn(this.defaults);for(let r in t.tokenizer){if(!(r in n))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let i=r,a=t.tokenizer[i],l=n[i];n[i]=(...c)=>{let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d}}o.tokenizer=n}if(t.hooks){let n=this.defaults.hooks||new Ps;for(let r in t.hooks){if(!(r in n))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let i=r,a=t.hooks[i],l=n[i];Ps.passThroughHooks.has(r)?n[i]=c=>{if(this.defaults.async&&Ps.passThroughHooksRespectAsync.has(r))return(async()=>{let h=await a.call(n,c);return l.call(n,h)})();let d=a.call(n,c);return l.call(n,d)}:n[i]=(...c)=>{if(this.defaults.async)return(async()=>{let h=await a.apply(n,c);return h===!1&&(h=await l.apply(n,c)),h})();let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d}}o.hooks=n}if(t.walkTokens){let n=this.defaults.walkTokens,r=t.walkTokens;o.walkTokens=function(i){let a=[];return a.push(r.call(this,i)),n&&(a=a.concat(n.call(this,i))),a}}this.defaults={...this.defaults,...o}}),this}setOptions(s){return this.defaults={...this.defaults,...s},this}lexer(s,e){return tt.lex(s,e??this.defaults)}parser(s,e){return ot.parse(s,e??this.defaults)}parseMarkdown(s){return(e,t)=>{let o={...t},n={...this.defaults,...o},r=this.onError(!!n.silent,!!n.async);if(this.defaults.async===!0&&o.async===!1)return r(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return r(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return r(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(n.hooks&&(n.hooks.options=n,n.hooks.block=s),n.async)return(async()=>{let i=n.hooks?await n.hooks.preprocess(e):e,a=await(n.hooks?await n.hooks.provideLexer(s):s?tt.lex:tt.lexInline)(i,n),l=n.hooks?await n.hooks.processAllTokens(a):a;n.walkTokens&&await Promise.all(this.walkTokens(l,n.walkTokens));let c=await(n.hooks?await n.hooks.provideParser(s):s?ot.parse:ot.parseInline)(l,n);return n.hooks?await n.hooks.postprocess(c):c})().catch(r);try{n.hooks&&(e=n.hooks.preprocess(e));let i=(n.hooks?n.hooks.provideLexer(s):s?tt.lex:tt.lexInline)(e,n);n.hooks&&(i=n.hooks.processAllTokens(i)),n.walkTokens&&this.walkTokens(i,n.walkTokens);let a=(n.hooks?n.hooks.provideParser(s):s?ot.parse:ot.parseInline)(i,n);return n.hooks&&(a=n.hooks.postprocess(a)),a}catch(i){return r(i)}}}onError(s,e){return t=>{if(t.message+=` Please report this to https://github.com/markedjs/marked.`,s){let o="

      An error occurred:

      "+qe(t.message+"",!0)+"
      ";return e?Promise.resolve(o):o}if(e)return Promise.reject(t);throw t}}},lo=new kw;ie.options=ie.setOptions=function(s){return lo.setOptions(s),ie.defaults=lo.defaults,dh(ie.defaults),ie};ie.getDefaults=ya;ie.defaults=co;ie.use=yw;ie.walkTokens=function(s,e){return lo.walkTokens(s,e)};ie.parseInline=lo.parseInline;ie.Parser=ot;ie.parser=ot.parse;ie.Renderer=Xn;ie.TextRenderer=Ta;ie.Lexer=tt;ie.lexer=tt.lex;ie.Tokenizer=Yn;ie.Hooks=Ps;ie.parse=ie;HS=ie.options,OS=ie.setOptions,DS=ie.walkTokens,FS=ie.parseInline,qS=ot.parse,KS=tt.lex});var kh=we((XS,xw)=>{xw.exports=`
      ×
      [ WHAT'S NEW ]

      Kute

      View on GitHub
      Done
      `});var xh={};function yh(s,e){return s.localeCompare(e,void 0,{numeric:!0,sensitivity:"case",caseFirst:"upper"})}function La(s){let e=Aa.get(s);return e||(e=fetch(`${Sw}/releases?per_page=1&page=${s}`).then(async t=>{if(!t.ok)throw new Error(`github ${t.status}`);let o=await t.json(),n=(t.headers.get("link")??"").match(/[?&]page=(\d+)>; rel="last"/);n?uo=Number(n[1]):o.length>0&&(uo=Math.max(uo??0,s));let[r]=o;return r?{tag:String(r.tag_name),body:String(r.body??""),date:String(r.published_at??"").slice(0,10)}:null}).catch(()=>(Aa.delete(s),null)),Aa.set(s,e)),e}async function Ew(s){let e=await La(1);if(!e||e.tag===s||uo===null)return 1;let t=2,o=uo;for(;t<=o;){let n=Math.floor((t+o)/2),r=await La(n);if(!r)return 1;let i=yh(r.tag,s);if(i===0)return n;i>0?t=n+1:o=n-1}return 1}var Sw,Aa,uo,Ra=w(()=>{"use strict";wh();D();Sw="https://api.github.com/repos/NullDev/Kute",Aa=new Map,uo=null;(async()=>{async function s(n){let[r,i]=await Promise.all([Promise.resolve().then(()=>ue(kh(),1)),Promise.resolve().then(()=>ue(Tn(),1))]),a=document.createElement("div");a.style=` position: fixed; top: 0; @@ -162,17 +162,17 @@ Please report this to https://github.com/markedjs/marked.`,s){let o="

      An error display: flex; justify-content: center; align-items: center; - `,document.body.append(a);let l=document.createElement("div");l.id="changelogPopupHost",a.append(l);let c=l.attachShadow({mode:"open"}),d=document.createElement("div");for(d.innerHTML=r.default;d.firstChild;)c.append(d.firstChild);let p=_=>c.getElementById(_),h=p("changelogLogo");h&&(h.src=i.default);let f=p("changelogContent");f&&(f.textContent="Loading release notes...");let m=p("changelogVersion");m&&(m.textContent=n);let g=new AbortController,b=()=>{g.abort(),a.remove()};for(let _ of["changelogClose","changelogDone"]){let H=p(_);H&&(H.onclick=b)}a.addEventListener("mousedown",_=>{_.target===a&&b()});let v=1,k=0,E=()=>{let _=uo??1,H=p("changelogPosition");H&&(H.textContent=`${v} / ${_}`),p("changelogNewer")?.classList.toggle("changelogDisabled",v<=1),p("changelogOlder")?.classList.toggle("changelogDisabled",v>=_);let G=p("changelogNav");G&&(G.style.display=_>1?"":"none")},L=async _=>{v=Math.min(Math.max(_,1),uo??1);let H=++k;E();let G=await La(v);if(H!==k||!f)return;if(!G){f.innerHTML="Could not load the release notes. View them on GitHub instead.";let be=p("changelogGithub");be&&(be.onclick=()=>window.chrome.webview.postMessage(`open-url, https://github.com/NullDev/Kute/releases/tag/${n}`));return}let J=`https://github.com/NullDev/Kute/releases/tag/${G.tag}`;m&&(m.textContent=G.tag);let B=p("changelogEyebrow");B&&(B.textContent=G.tag===n?"[ WHAT'S NEW ]":`[ RELEASED ${G.date} ]`);let re=p("changelogGithub");re&&(re.onclick=()=>window.chrome.webview.postMessage(`open-url, ${J}`));let je=await ie.parse(G.body||"No release notes found.",{breaks:!0,async:!0});if(H===k){f.innerHTML=je,p("changelogContentWrapper")?.scrollTo(0,0);for(let be of f.querySelectorAll("a"))be.getAttribute("href")?.startsWith("#")&&be.setAttribute("href",J+be.getAttribute("href")),be.setAttribute("target","_blank"),be.setAttribute("rel","noopener")}},x=p("changelogOlder");x&&(x.onclick=()=>L(v+1));let $=p("changelogNewer");$&&($.onclick=()=>L(v-1)),document.addEventListener("keydown",_=>{if(_.key==="Escape")b();else if(_.key==="ArrowLeft")L(v-1);else if(_.key==="ArrowRight")L(v+1);else return;_.stopPropagation()},{signal:g.signal,capture:!0});let I=await Ew(n);g.signal.aborted||await L(I)}let e=u?.version,t=window.localStorage.getItem("kute_lastSeenVersion"),o=t!==null&&yh(e,t)>0;window.localStorage.setItem("kute_lastSeenVersion",e),u?.settings.data?.showChangelog&&t&&e&&o&&await s(e),u.showChangelogPopup=s})()});var Ia={};A(Ia,{default:()=>$w});var Pa,$w,Na=w(()=>{"use strict";Pa=class{tracked=new WeakSet;draft=null;observer=null;pending=null;sentAt=0;constructor(){document.addEventListener("focusin",e=>{let t=e.target;t instanceof HTMLTextAreaElement&&t.classList.contains("conversation-input")&&this.track(t)})}friendOf(e){return e.closest(".conversation-root")?.querySelector(".conversation-header-name")?.textContent??""}track(e){this.tracked.has(e)||(this.tracked.add(e),e.addEventListener("input",()=>this.save(e)),e.addEventListener("keydown",t=>{t.key==="Enter"&&!t.shiftKey&&!t.isComposing&&(this.sentAt=performance.now())}),e.closest(".conversation-compose")?.querySelector(".conversation-send-button")?.addEventListener("click",()=>{this.sentAt=performance.now()}),e.value&&this.save(e))}save(e){if(!e.value){this.stop();return}if(this.draft={input:e,friend:this.friendOf(e),text:e.value,start:e.selectionStart,end:e.selectionEnd},this.observer)return;let t=e.closest(".conversation-root");t&&(this.observer=new MutationObserver(()=>this.schedule()),this.observer.observe(t,{childList:!0,subtree:!0,characterData:!0}))}schedule(){this.pending===null&&(this.pending=setTimeout(()=>this.check(),0))}check(){this.pending=null;let{draft:e}=this;if(!e)return;let{input:t}=e;if(!t.isConnected||this.friendOf(t)!==e.friend){this.stop();return}if(t.value){this.save(t);return}if(performance.now()-this.sentAt<250){this.stop();return}t.value=e.text,document.activeElement===t&&t.setSelectionRange(e.start,e.end),t.dispatchEvent(new Event("input",{bubbles:!0}))}stop(){this.draft=null,this.observer?.disconnect(),this.observer=null}},$w=new Pa});var Eh,Sh=w(()=>{Eh='

      Chat Logs

      Copy
      Clear
      Close
      '});var Ba={};A(Ba,{default:()=>Nw});function Lw(s){if(!s.hasAttribute("data-tab"))return"kill";let e=s.querySelector(".chatItem"),t=e?.querySelector(".chatMsg");return!e||!(t instanceof HTMLElement)||e.querySelector(".tradeMsg")?"event":e.firstChild!==t?"player":t.style.color?"server":"event"}function Rw(s){let e="",t=!1,o=[];for(let n of s.querySelector(".chatMsg")?.childNodes??[]){if(!(n instanceof HTMLImageElement)){e+=n.textContent??"";continue}let r=n.getAttribute("src")??"";r.includes("headshot")?o.push("headshot"):r.includes("wallbang")?o.push("wallbang"):t||(t=!0,e+=" \u25B8 ")}return o.length>0?`${e.trim()} (${o.join(", ")})`:e}function $h(s){let e=new Date(s);return[e.getHours(),e.getMinutes(),e.getSeconds()].map(t=>String(t).padStart(2,"0")).join(":")}function Pw(){try{let s=JSON.parse(window.sessionStorage.getItem(Ch)??"[]");return Array.isArray(s)?s.slice(-Jn):[]}catch{return[]}}function Iw(){try{let{mode:s,map:e}=window.getGameActivity();if(s&&e)return`${s} on ${e}`}catch{}return"New lobby"}var Jn,Ch,Mw,Tw,Aw,_a,Nw,za=w(()=>{"use strict";Sh();D();Po();Jn=2e3,Ch="kute_chat_logs",Mw="\u200E",Tw=[["player","Players"],["kill","Kills"],["event","Events"],["server","Server"]],Aw={player:"",kill:"clKill",event:"clEvent",server:"clServer",lobby:"clLobby"};_a=class{constructor(){this.entries=Pw(),this.entries.length>0&&this.entries[this.entries.length-1].cat!=="lobby"&&this.entries.push({t:Date.now(),cat:"lobby",text:Iw()}),this.shown=new Set,this.view=null,this.stick=!0,this.observer=new MutationObserver(e=>{for(let t of e)for(let o of t.addedNodes)this.add(o)}),this.save=()=>{try{window.sessionStorage.setItem(Ch,JSON.stringify(this.entries))}catch{}},u.chatLogs={open:()=>this.open(),toggle:()=>this.toggle()},u.settings.toggleChatLogs=e=>this.setEnabled(e),this.setEnabled(!0)}setEnabled(e){if(this.observer.disconnect(),window.removeEventListener("pagehide",this.save),!e){this.close();return}let t=document.getElementById("chatList");if(t){for(let o of t.children)this.add(o);this.observer.observe(t,{childList:!0}),window.addEventListener("pagehide",this.save)}}add(e){if(!(e instanceof HTMLElement))return;let t=Lw(e),o=(t==="kill"?Rw(e):e.textContent??"").replaceAll(Mw,"").trim();if(!o)return;let n={t:Date.now(),cat:t,text:o};if(this.entries.push(n),this.entries.length>Jn&&this.entries.splice(0,this.entries.length-Jn),!this.view||!this.visible(n))return;let{list:r}=this.view;r.querySelector(".clEmpty")?.remove(),r.append(this.row(n)),r.childElementCount>Jn&&r.firstElementChild?.remove(),this.stick&&(r.scrollTop=1e9)}visible(e){let t=this.view?.search.value.trim().toLowerCase()??"";return e.cat==="lobby"?this.shown.size===0&&!t:this.shown.size>0&&!this.shown.has(e.cat)?!1:!t||e.text.toLowerCase().includes(t)}row(e){let t=document.createElement("div");t.className=`clRow ${Aw[e.cat]??""}`;let o=document.createElement("span");return o.className="clTime",o.textContent=$h(e.t),t.append(o,e.text),t}render(){if(!this.view)return;let e=this.entries.filter(t=>this.visible(t)).map(t=>this.row(t));if(e.length===0){let t=document.createElement("div");t.className="clEmpty",t.textContent=this.entries.length===0?"Nothing in the chat yet":"No line matches",e.push(t)}this.view.list.replaceChildren(...e),this.view.list.scrollTop=1e9,this.stick=!0,this.renderFilters()}renderFilters(){if(!this.view)return;let e=(n,r,i)=>{let a=document.createElement("div");return a.className=`clFilter${r?" clOn":""}`,a.textContent=n,a.onclick=i,a},t=e("All",this.shown.size===0,()=>{this.shown.clear(),this.render()}),o=Tw.map(([n,r])=>e(r,this.shown.has(n),()=>{this.shown.has(n)?this.shown.delete(n):this.shown.add(n),this.render()}));this.view.shadow.querySelector("#clFilters").replaceChildren(t,...o)}open(){if(this.view)return;document.pointerLockElement&&document.exitPointerLock();let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=Eh;let n=l=>o.querySelector(`#${l}`),r=n("clList"),i=n("clSearch");this.view={overlay:e,shadow:o,list:r,search:i};let a=ft().chatLogs;n("clHint").textContent=`${a?`${a.name} opens and closes this. `:""}Select lines and copy with Ctrl+C`,e.addEventListener("click",l=>{l.target===e&&this.close()});for(let l of["keydown","keyup","keypress"])t.addEventListener(l,c=>{let d=c;l==="keydown"&&!d.repeat&&(d.key==="Escape"||ls(d,"chatLogs"))&&this.close(),c.stopPropagation()});r.addEventListener("scroll",()=>{this.stick=r.scrollTop+r.clientHeight>=r.scrollHeight-30},{passive:!0}),i.addEventListener("input",()=>this.render()),n("clCopy").onclick=()=>{let l=this.entries.filter(c=>this.visible(c)).map(c=>`${$h(c.t)} ${c.text}`).join(` -`);navigator.clipboard.writeText(l).then(()=>u.showNotification("Chat log copied",!1,2),()=>u.showNotification("Could not copy the chat log",!1,3))},n("clClear").onclick=()=>{this.entries=[],this.save(),this.render()},n("clClose").onclick=()=>this.close(),document.body.append(e),this.render(),i.focus()}close(){this.view?.overlay.remove(),this.view=null}toggle(){this.view?this.close():this.open()}},Nw=new _a});var Oa={};A(Oa,{default:()=>zw});function Bw(s){return s.split(";").map(e=>e.trim()).filter(e=>{let t=e.split(":")[0]?.trim().toLowerCase();return!!t&&e.includes(":")&&_w.has(t)}).join(";")}var _w,Ha,Mh,zw,Da=w(()=>{"use strict";D();jn();It();_w=new Set(["background","background-image","background-color","background-clip","-webkit-background-clip","background-size","background-position","color","-webkit-text-fill-color","-webkit-text-stroke","text-shadow","text-decoration","filter","opacity","animation"]);Ha=class{constructor(){this.styles={},this.fetched={},this.watching=!1,this.decorator=e=>this.restyle(e),u.settings.toggleClanColors=e=>this.toggle(e),this.load()}toggle(e){if(e){Object.keys(this.fetched).length>0?this.apply(this.fetched):this.load();return}pt.remove(this.decorator),this.watching=!1,this.styles={};for(let t of document.querySelectorAll("[data-kute-clan]"))t.setAttribute("style",t.getAttribute("data-kute-style")??""),t.removeAttribute("data-kute-clan"),t.removeAttribute("data-kute-style")}async load(){let e=await he.request("/meta");typeof e?.clanTagColors=="object"&&e.clanTagColors!==null&&(this.fetched=e.clanTagColors),u.settings.data.clanColors!==!1&&this.apply(this.fetched)}apply(e){if(!(typeof e!="object"||e===null)){this.styles={};for(let[t,o]of Object.entries(e)){if(typeof o!="string"||t.length===0||t.length>16)continue;let n=Bw(o);n&&(this.styles[t]=n)}Object.keys(this.styles).length!==0&&(this.watching?pt.refresh():pt.add(this.decorator),this.watching=!0)}}restyle(e){let t=Ls(e.element);if(!t)return;let o=this.styles[t.tag];!o||t.span.getAttribute("data-kute-clan")===t.tag||(t.span.hasAttribute("data-kute-style")||t.span.setAttribute("data-kute-style",t.span.getAttribute("style")??""),t.span.setAttribute("style",o),t.span.setAttribute("data-kute-clan",t.tag))}},Mh=new Ha;u.clanColors=Mh;zw=Mh});var Th=we((i3,Hw)=>{Hw.exports='

      Custom Sky

      Replaces the sky of every map. It applies from the next match
      Gradient
      Image
      Open folder
      Refresh
      Put PNG, JPG or WEBP images into Documents\\kute\\skies
      Done
      '});var qa={};A(qa,{default:()=>qw});var Ow,Ah,Dw,Fw,Fa,qw,Ka=w(()=>{"use strict";D();Ow={mode:"gradient",zenith:"#1E5AA8",horizon:"#9FD0F0",image:""},Ah="preset:",Dw=[["Vaporwave","#ff00aa","#00ffcc"],["Kute","#0b2e3a","#35e0e8"],["Sunset","#2b1055","#ff8a4c"],["Midnight","#03040f","#243b73"],["Toxic","#0a2a12","#a6ff3b"],["Blood Moon","#120006","#b3122e"],["Cotton Candy","#8fb8ff","#ffc2e2"]],Fw={starfield:"Starfield",aurora:"Aurora",nebula:"Nebula",synthwave:"Synthwave",sunset:"Sunset",candy:"Cotton Clouds"},Fa=class{constructor(){u.customSky={showOptions:()=>this.showOptions()}}get config(){return{...Ow,...u.settings.data.customSkyConfig}}saveConfig(e){u.settings.data.customSkyConfig=e,window.chrome.webview.postMessage(`set-config-json customSkyConfig ${JSON.stringify(e)}`)}listImages(){return new Promise(e=>{let t=0,o=n=>{Array.isArray(n.data?.skies)&&(window.chrome.webview.removeEventListener("message",o),clearTimeout(t),e({files:n.data.skies,presets:Array.isArray(n.data.skyPresets)?n.data.skyPresets:[]}))};t=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",o),e({files:[],presets:[]})},3e3),window.chrome.webview.addEventListener("message",o),window.chrome.webview.postMessage("sky-list")})}async showOptions(){let e=await Promise.resolve().then(()=>ue(Th(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=i("skZenith"),l=i("skHorizon"),c=i("skImage"),d=()=>{i("skModeGradient").classList.toggle("active",t.mode==="gradient"),i("skModeImage").classList.toggle("active",t.mode==="image"),i("skGradientPane").hidden=t.mode!=="gradient",i("skImagePane").hidden=t.mode!=="image",i("skPreview").style.background=`linear-gradient(${t.zenith}, ${t.horizon})`},p=async()=>{let{files:g,presets:b}=await this.listImages(),v=(E,L)=>{let x=document.createElement("optgroup");return x.label=E,x.append(...L.map(([$,I])=>new Option(I,$))),x},k=[...b.map(E=>Ah+E),...g];c.replaceChildren(...b.length?[v("Kute",b.map(E=>[Ah+E,Fw[E]??E]))]:[],...g.length?[v("Your images",g.map(E=>[E,E]))]:[]),k.length>0&&!k.includes(t.image)&&(t.image=k[0]),c.value=t.image,c.disabled=k.length===0,i("skImageHint").textContent=g.length===0?"Add your own: put PNG, JPG or WEBP images into Documents\\kute\\skies, then press Refresh":"Put PNG, JPG or WEBP images into Documents\\kute\\skies"},h=i("skSwatches");for(let[g,b,v]of Dw){let k=document.createElement("div");k.className="skSwatch",k.title=g,k.style.background=`linear-gradient(${b}, ${v})`,k.onclick=()=>{t.zenith=b,t.horizon=v,a.value=b,l.value=v,d()},h.append(k)}a.value=t.zenith.toLowerCase(),l.value=t.horizon.toLowerCase(),a.oninput=()=>{t.zenith=a.value,d()},l.oninput=()=>{t.horizon=l.value,d()},c.onchange=()=>{t.image=c.value},i("skModeGradient").onclick=()=>{t.mode="gradient",d()},i("skModeImage").onclick=()=>{t.mode="image",d()},i("skOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, skies"),i("skRefresh").onclick=()=>p();let f=new AbortController,m=()=>{f.abort(),o.remove(),this.saveConfig(t)};i("skDone").onclick=m,o.addEventListener("mousedown",g=>{g.target===o&&m()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),m())},{signal:f.signal,capture:!0}),d(),document.body.append(o),await p()}},qw=new Fa});var Rh,Lh=w(()=>{Rh='

      Diagnostics Report

      These are all the files that will be included. You can choose what to exclude, but keeping all of them is recommended.
      Collecting...
      Close
      Save dump
      '});var Ih={};A(Ih,{createCodeEditor:()=>Ph,createEditorView:()=>po,highlight:()=>Qn,languageFor:()=>ja});function Qn(s,e="js"){if(e==="text")return Zn(s);let t=e==="css",o="",n=0;for(let r of s.matchAll(t?Ww:Gw)){let i=r.index??0,[a]=r,l="";if(t){let[,c,d,p,h,f]=r;if(c)l="c";else if(d)l="s";else if(p)l="k";else if(h)l="n";else if(f){let m=i+f.length;s[m]==="("?l="f":(f.startsWith("--")||Vw(s,m))&&(l="l")}}else{let[,c,d,p,h]=r;c?l="c":d?l=e==="json"&&/^\s*:/.test(s.slice(i+a.length,i+a.length+20))?"p":"s":p?l="n":h&&(jw.has(h)?l="k":Uw.has(h)?l="l":/^\s*\(/.test(s.slice(i+h.length,i+h.length+40))&&(l="f"))}l&&(o+=Zn(s.slice(n,i))+`${Zn(a)}`,n=i+a.length)}return o+Zn(s.slice(n))}function Ph(s,e,{onSave:t,onDirtyChange:o,onChange:n,language:r="js"}){s.innerHTML=`
      -
      `;let i=s.querySelector(".editorGutter"),a=s.querySelector("pre"),l=s.querySelector("code"),c=s.querySelector("textarea");c.value=e;let d=e,p=!1,h=0,f=0,m=()=>{a.scrollTop=c.scrollTop,a.scrollLeft=c.scrollLeft,i.scrollTop=c.scrollTop},g=()=>{f=0;let{value:k}=c;l.innerHTML=`${Qn(k,r)} + `,document.body.append(a);let l=document.createElement("div");l.id="changelogPopupHost",a.append(l);let c=l.attachShadow({mode:"open"}),d=document.createElement("div");for(d.innerHTML=r.default;d.firstChild;)c.append(d.firstChild);let h=_=>c.getElementById(_),p=h("changelogLogo");p&&(p.src=i.default);let m=h("changelogContent");m&&(m.textContent="Loading release notes...");let f=h("changelogVersion");f&&(f.textContent=n);let g=new AbortController,b=()=>{g.abort(),a.remove()};for(let _ of["changelogClose","changelogDone"]){let H=h(_);H&&(H.onclick=b)}a.addEventListener("mousedown",_=>{_.target===a&&b()});let v=1,k=0,E=()=>{let _=uo??1,H=h("changelogPosition");H&&(H.textContent=`${v} / ${_}`),h("changelogNewer")?.classList.toggle("changelogDisabled",v<=1),h("changelogOlder")?.classList.toggle("changelogDisabled",v>=_);let G=h("changelogNav");G&&(G.style.display=_>1?"":"none")},L=async _=>{v=Math.min(Math.max(_,1),uo??1);let H=++k;E();let G=await La(v);if(H!==k||!m)return;if(!G){m.innerHTML="Could not load the release notes. View them on GitHub instead.";let be=h("changelogGithub");be&&(be.onclick=()=>window.chrome.webview.postMessage(`open-url, https://github.com/NullDev/Kute/releases/tag/${n}`));return}let J=`https://github.com/NullDev/Kute/releases/tag/${G.tag}`;f&&(f.textContent=G.tag);let B=h("changelogEyebrow");B&&(B.textContent=G.tag===n?"[ WHAT'S NEW ]":`[ RELEASED ${G.date} ]`);let re=h("changelogGithub");re&&(re.onclick=()=>window.chrome.webview.postMessage(`open-url, ${J}`));let je=await ie.parse(G.body||"No release notes found.",{breaks:!0,async:!0});if(H===k){m.innerHTML=je,h("changelogContentWrapper")?.scrollTo(0,0);for(let be of m.querySelectorAll("a"))be.getAttribute("href")?.startsWith("#")&&be.setAttribute("href",J+be.getAttribute("href")),be.setAttribute("target","_blank"),be.setAttribute("rel","noopener")}},x=h("changelogOlder");x&&(x.onclick=()=>L(v+1));let $=h("changelogNewer");$&&($.onclick=()=>L(v-1)),document.addEventListener("keydown",_=>{if(_.key==="Escape")b();else if(_.key==="ArrowLeft")L(v-1);else if(_.key==="ArrowRight")L(v+1);else return;_.stopPropagation()},{signal:g.signal,capture:!0});let I=await Ew(n);g.signal.aborted||await L(I)}let e=u?.version,t=window.localStorage.getItem("kute_lastSeenVersion"),o=t!==null&&yh(e,t)>0;window.localStorage.setItem("kute_lastSeenVersion",e),u?.settings.data?.showChangelog&&t&&e&&o&&await s(e),u.showChangelogPopup=s})()});var Ia={};A(Ia,{default:()=>$w});var Pa,$w,Na=w(()=>{"use strict";Pa=class{tracked=new WeakSet;draft=null;observer=null;pending=null;sentAt=0;constructor(){document.addEventListener("focusin",e=>{let t=e.target;t instanceof HTMLTextAreaElement&&t.classList.contains("conversation-input")&&this.track(t)})}friendOf(e){return e.closest(".conversation-root")?.querySelector(".conversation-header-name")?.textContent??""}track(e){this.tracked.has(e)||(this.tracked.add(e),e.addEventListener("input",()=>this.save(e)),e.addEventListener("keydown",t=>{t.key==="Enter"&&!t.shiftKey&&!t.isComposing&&(this.sentAt=performance.now())}),e.closest(".conversation-compose")?.querySelector(".conversation-send-button")?.addEventListener("click",()=>{this.sentAt=performance.now()}),e.value&&this.save(e))}save(e){if(!e.value){this.stop();return}if(this.draft={input:e,friend:this.friendOf(e),text:e.value,start:e.selectionStart,end:e.selectionEnd},this.observer)return;let t=e.closest(".conversation-root");t&&(this.observer=new MutationObserver(()=>this.schedule()),this.observer.observe(t,{childList:!0,subtree:!0,characterData:!0}))}schedule(){this.pending===null&&(this.pending=setTimeout(()=>this.check(),0))}check(){this.pending=null;let{draft:e}=this;if(!e)return;let{input:t}=e;if(!t.isConnected||this.friendOf(t)!==e.friend){this.stop();return}if(t.value){this.save(t);return}if(performance.now()-this.sentAt<250){this.stop();return}t.value=e.text,document.activeElement===t&&t.setSelectionRange(e.start,e.end),t.dispatchEvent(new Event("input",{bubbles:!0}))}stop(){this.draft=null,this.observer?.disconnect(),this.observer=null}},$w=new Pa});var Eh,Sh=w(()=>{Eh='

      Chat Logs

      Copy
      Clear
      Close
      '});var Ba={};A(Ba,{default:()=>Nw});function Lw(s){if(!s.hasAttribute("data-tab"))return"kill";let e=s.querySelector(".chatItem"),t=e?.querySelector(".chatMsg");return!e||!(t instanceof HTMLElement)||e.querySelector(".tradeMsg")?"event":e.firstChild!==t?"player":t.style.color?"server":"event"}function Rw(s){let e="",t=!1,o=[];for(let n of s.querySelector(".chatMsg")?.childNodes??[]){if(!(n instanceof HTMLImageElement)){e+=n.textContent??"";continue}let r=n.getAttribute("src")??"";r.includes("headshot")?o.push("headshot"):r.includes("wallbang")?o.push("wallbang"):t||(t=!0,e+=" \u25B8 ")}return o.length>0?`${e.trim()} (${o.join(", ")})`:e}function $h(s){let e=new Date(s);return[e.getHours(),e.getMinutes(),e.getSeconds()].map(t=>String(t).padStart(2,"0")).join(":")}function Pw(){try{let s=JSON.parse(window.sessionStorage.getItem(Ch)??"[]");return Array.isArray(s)?s.slice(-Jn):[]}catch{return[]}}function Iw(){try{let{mode:s,map:e}=window.getGameActivity();if(s&&e)return`${s} on ${e}`}catch{}return"New lobby"}var Jn,Ch,Mw,Tw,Aw,_a,Nw,za=w(()=>{"use strict";Sh();D();Po();Jn=2e3,Ch="kute_chat_logs",Mw="\u200E",Tw=[["player","Players"],["kill","Kills"],["event","Events"],["server","Server"]],Aw={player:"",kill:"clKill",event:"clEvent",server:"clServer",lobby:"clLobby"};_a=class{constructor(){this.entries=Pw(),this.entries.length>0&&this.entries[this.entries.length-1].cat!=="lobby"&&this.entries.push({t:Date.now(),cat:"lobby",text:Iw()}),this.shown=new Set,this.view=null,this.stick=!0,this.observer=new MutationObserver(e=>{for(let t of e)for(let o of t.addedNodes)this.add(o)}),this.save=()=>{try{window.sessionStorage.setItem(Ch,JSON.stringify(this.entries))}catch{}},u.chatLogs={open:()=>this.open(),toggle:()=>this.toggle()},u.settings.toggleChatLogs=e=>this.setEnabled(e),this.setEnabled(!0)}setEnabled(e){if(this.observer.disconnect(),window.removeEventListener("pagehide",this.save),!e){this.close();return}let t=document.getElementById("chatList");if(t){for(let o of t.children)this.add(o);this.observer.observe(t,{childList:!0}),window.addEventListener("pagehide",this.save)}}add(e){if(!(e instanceof HTMLElement))return;let t=Lw(e),o=(t==="kill"?Rw(e):e.textContent??"").replaceAll(Mw,"").trim();if(!o)return;let n={t:Date.now(),cat:t,text:o};if(this.entries.push(n),this.entries.length>Jn&&this.entries.splice(0,this.entries.length-Jn),!this.view||!this.visible(n))return;let{list:r}=this.view;r.querySelector(".clEmpty")?.remove(),r.append(this.row(n)),r.childElementCount>Jn&&r.firstElementChild?.remove(),this.stick&&(r.scrollTop=1e9)}visible(e){let t=this.view?.search.value.trim().toLowerCase()??"";return e.cat==="lobby"?this.shown.size===0&&!t:this.shown.size>0&&!this.shown.has(e.cat)?!1:!t||e.text.toLowerCase().includes(t)}row(e){let t=document.createElement("div");t.className=`clRow ${Aw[e.cat]??""}`;let o=document.createElement("span");return o.className="clTime",o.textContent=$h(e.t),t.append(o,e.text),t}render(){if(!this.view)return;let e=this.entries.filter(t=>this.visible(t)).map(t=>this.row(t));if(e.length===0){let t=document.createElement("div");t.className="clEmpty",t.textContent=this.entries.length===0?"Nothing in the chat yet":"No line matches",e.push(t)}this.view.list.replaceChildren(...e),this.view.list.scrollTop=1e9,this.stick=!0,this.renderFilters()}renderFilters(){if(!this.view)return;let e=(n,r,i)=>{let a=document.createElement("div");return a.className=`clFilter${r?" clOn":""}`,a.textContent=n,a.onclick=i,a},t=e("All",this.shown.size===0,()=>{this.shown.clear(),this.render()}),o=Tw.map(([n,r])=>e(r,this.shown.has(n),()=>{this.shown.has(n)?this.shown.delete(n):this.shown.add(n),this.render()}));this.view.shadow.querySelector("#clFilters").replaceChildren(t,...o)}open(){if(this.view)return;document.pointerLockElement&&document.exitPointerLock();let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=Eh;let n=l=>o.querySelector(`#${l}`),r=n("clList"),i=n("clSearch");this.view={overlay:e,shadow:o,list:r,search:i};let a=ft().chatLogs;n("clHint").textContent=`${a?`${a.name} opens and closes this. `:""}Select lines and copy with Ctrl+C`,e.addEventListener("click",l=>{l.target===e&&this.close()});for(let l of["keydown","keyup","keypress"])t.addEventListener(l,c=>{let d=c;l==="keydown"&&!d.repeat&&(d.key==="Escape"||ls(d,"chatLogs"))&&this.close(),c.stopPropagation()});r.addEventListener("scroll",()=>{this.stick=r.scrollTop+r.clientHeight>=r.scrollHeight-30},{passive:!0}),i.addEventListener("input",()=>this.render()),n("clCopy").onclick=()=>{let l=this.entries.filter(c=>this.visible(c)).map(c=>`${$h(c.t)} ${c.text}`).join(` +`);navigator.clipboard.writeText(l).then(()=>u.showNotification("Chat log copied",!1,2),()=>u.showNotification("Could not copy the chat log",!1,3))},n("clClear").onclick=()=>{this.entries=[],this.save(),this.render()},n("clClose").onclick=()=>this.close(),document.body.append(e),this.render(),i.focus()}close(){this.view?.overlay.remove(),this.view=null}toggle(){this.view?this.close():this.open()}},Nw=new _a});var Oa={};A(Oa,{default:()=>zw});function Bw(s){return s.split(";").map(e=>e.trim()).filter(e=>{let t=e.split(":")[0]?.trim().toLowerCase();return!!t&&e.includes(":")&&_w.has(t)}).join(";")}var _w,Ha,Mh,zw,Da=w(()=>{"use strict";D();jn();It();_w=new Set(["background","background-image","background-color","background-clip","-webkit-background-clip","background-size","background-position","color","-webkit-text-fill-color","-webkit-text-stroke","text-shadow","text-decoration","filter","opacity","animation"]);Ha=class{constructor(){this.styles={},this.fetched={},this.watching=!1,this.decorator=e=>this.restyle(e),u.settings.toggleClanColors=e=>this.toggle(e),this.load()}toggle(e){if(e){Object.keys(this.fetched).length>0?this.apply(this.fetched):this.load();return}pt.remove(this.decorator),this.watching=!1,this.styles={};for(let t of document.querySelectorAll("[data-kute-clan]"))t.setAttribute("style",t.getAttribute("data-kute-style")??""),t.removeAttribute("data-kute-clan"),t.removeAttribute("data-kute-style")}async load(){let e=await he.request("/meta");typeof e?.clanTagColors=="object"&&e.clanTagColors!==null&&(this.fetched=e.clanTagColors),u.settings.data.clanColors!==!1&&this.apply(this.fetched)}apply(e){if(!(typeof e!="object"||e===null)){this.styles={};for(let[t,o]of Object.entries(e)){if(typeof o!="string"||t.length===0||t.length>16)continue;let n=Bw(o);n&&(this.styles[t]=n)}Object.keys(this.styles).length!==0&&(this.watching?pt.refresh():pt.add(this.decorator),this.watching=!0)}}restyle(e){let t=Ls(e.element);if(!t)return;let o=this.styles[t.tag];!o||t.span.getAttribute("data-kute-clan")===t.tag||(t.span.hasAttribute("data-kute-style")||t.span.setAttribute("data-kute-style",t.span.getAttribute("style")??""),t.span.setAttribute("style",o),t.span.setAttribute("data-kute-clan",t.tag))}},Mh=new Ha;u.clanColors=Mh;zw=Mh});var Th=we((i3,Hw)=>{Hw.exports='

      Custom Sky

      Replaces the sky of every map. It applies from the next match
      Gradient
      Image
      Open folder
      Refresh
      Put PNG, JPG or WEBP images into Documents\\kute\\skies
      Done
      '});var qa={};A(qa,{default:()=>qw});var Ow,Ah,Dw,Fw,Fa,qw,Ka=w(()=>{"use strict";D();Ow={mode:"gradient",zenith:"#1E5AA8",horizon:"#9FD0F0",image:""},Ah="preset:",Dw=[["Vaporwave","#ff00aa","#00ffcc"],["Kute","#0b2e3a","#35e0e8"],["Sunset","#2b1055","#ff8a4c"],["Midnight","#03040f","#243b73"],["Toxic","#0a2a12","#a6ff3b"],["Blood Moon","#120006","#b3122e"],["Cotton Candy","#8fb8ff","#ffc2e2"]],Fw={starfield:"Starfield",aurora:"Aurora",nebula:"Nebula",synthwave:"Synthwave",sunset:"Sunset",candy:"Cotton Clouds"},Fa=class{constructor(){u.customSky={showOptions:()=>this.showOptions()}}get config(){return{...Ow,...u.settings.data.customSkyConfig}}saveConfig(e){u.settings.data.customSkyConfig=e,window.chrome.webview.postMessage(`set-config-json customSkyConfig ${JSON.stringify(e)}`)}listImages(){return new Promise(e=>{let t=0,o=n=>{Array.isArray(n.data?.skies)&&(window.chrome.webview.removeEventListener("message",o),clearTimeout(t),e({files:n.data.skies,presets:Array.isArray(n.data.skyPresets)?n.data.skyPresets:[]}))};t=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",o),e({files:[],presets:[]})},3e3),window.chrome.webview.addEventListener("message",o),window.chrome.webview.postMessage("sky-list")})}async showOptions(){let e=await Promise.resolve().then(()=>ue(Th(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=i("skZenith"),l=i("skHorizon"),c=i("skImage"),d=()=>{i("skModeGradient").classList.toggle("active",t.mode==="gradient"),i("skModeImage").classList.toggle("active",t.mode==="image"),i("skGradientPane").hidden=t.mode!=="gradient",i("skImagePane").hidden=t.mode!=="image",i("skPreview").style.background=`linear-gradient(${t.zenith}, ${t.horizon})`},h=async()=>{let{files:g,presets:b}=await this.listImages(),v=(E,L)=>{let x=document.createElement("optgroup");return x.label=E,x.append(...L.map(([$,I])=>new Option(I,$))),x},k=[...b.map(E=>Ah+E),...g];c.replaceChildren(...b.length?[v("Kute",b.map(E=>[Ah+E,Fw[E]??E]))]:[],...g.length?[v("Your images",g.map(E=>[E,E]))]:[]),k.length>0&&!k.includes(t.image)&&(t.image=k[0]),c.value=t.image,c.disabled=k.length===0,i("skImageHint").textContent=g.length===0?"Add your own: put PNG, JPG or WEBP images into Documents\\kute\\skies, then press Refresh":"Put PNG, JPG or WEBP images into Documents\\kute\\skies"},p=i("skSwatches");for(let[g,b,v]of Dw){let k=document.createElement("div");k.className="skSwatch",k.title=g,k.style.background=`linear-gradient(${b}, ${v})`,k.onclick=()=>{t.zenith=b,t.horizon=v,a.value=b,l.value=v,d()},p.append(k)}a.value=t.zenith.toLowerCase(),l.value=t.horizon.toLowerCase(),a.oninput=()=>{t.zenith=a.value,d()},l.oninput=()=>{t.horizon=l.value,d()},c.onchange=()=>{t.image=c.value},i("skModeGradient").onclick=()=>{t.mode="gradient",d()},i("skModeImage").onclick=()=>{t.mode="image",d()},i("skOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, skies"),i("skRefresh").onclick=()=>h();let m=new AbortController,f=()=>{m.abort(),o.remove(),this.saveConfig(t)};i("skDone").onclick=f,o.addEventListener("mousedown",g=>{g.target===o&&f()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),f())},{signal:m.signal,capture:!0}),d(),document.body.append(o),await h()}},qw=new Fa});var Rh,Lh=w(()=>{Rh='

      Diagnostics Report

      These are all the files that will be included. You can choose what to exclude, but keeping all of them is recommended.
      Collecting...
      Close
      Save dump
      '});var Ih={};A(Ih,{createCodeEditor:()=>Ph,createEditorView:()=>po,highlight:()=>Qn,languageFor:()=>ja});function Qn(s,e="js"){if(e==="text")return Zn(s);let t=e==="css",o="",n=0;for(let r of s.matchAll(t?Ww:Gw)){let i=r.index??0,[a]=r,l="";if(t){let[,c,d,h,p,m]=r;if(c)l="c";else if(d)l="s";else if(h)l="k";else if(p)l="n";else if(m){let f=i+m.length;s[f]==="("?l="f":(m.startsWith("--")||Vw(s,f))&&(l="l")}}else{let[,c,d,h,p]=r;c?l="c":d?l=e==="json"&&/^\s*:/.test(s.slice(i+a.length,i+a.length+20))?"p":"s":h?l="n":p&&(jw.has(p)?l="k":Uw.has(p)?l="l":/^\s*\(/.test(s.slice(i+p.length,i+p.length+40))&&(l="f"))}l&&(o+=Zn(s.slice(n,i))+`${Zn(a)}`,n=i+a.length)}return o+Zn(s.slice(n))}function Ph(s,e,{onSave:t,onDirtyChange:o,onChange:n,language:r="js"}){s.innerHTML=`
      +
      `;let i=s.querySelector(".editorGutter"),a=s.querySelector("pre"),l=s.querySelector("code"),c=s.querySelector("textarea");c.value=e;let d=e,h=!1,p=0,m=0,f=()=>{a.scrollTop=c.scrollTop,a.scrollLeft=c.scrollLeft,i.scrollTop=c.scrollTop},g=()=>{m=0;let{value:k}=c;l.innerHTML=`${Qn(k,r)} `;let E=k.split(` -`).length;E!==h&&(h=E,i.textContent=Array.from({length:E},(x,$)=>$+1).join(` -`)),m();let L=k!==d;L!==p&&(p=L,o(p))},b=k=>{document.execCommand("insertText",!1,k)},v=()=>{g(),n?.(c.value)};return c.addEventListener("input",()=>{c.value.length<15e4?v():f||(f=setTimeout(v,150))}),c.addEventListener("scroll",m),c.addEventListener("keydown",k=>{if((k.ctrlKey||k.metaKey)&&k.key.toLowerCase()==="s"){k.preventDefault(),t();return}if(k.key==="Tab"&&!k.ctrlKey&&!k.altKey){k.preventDefault();let{selectionStart:E,selectionEnd:L,value:x}=c,$=x.lastIndexOf(` +`).length;E!==p&&(p=E,i.textContent=Array.from({length:E},(x,$)=>$+1).join(` +`)),f();let L=k!==d;L!==h&&(h=L,o(h))},b=k=>{document.execCommand("insertText",!1,k)},v=()=>{g(),n?.(c.value)};return c.addEventListener("input",()=>{c.value.length<15e4?v():m||(m=setTimeout(v,150))}),c.addEventListener("scroll",f),c.addEventListener("keydown",k=>{if((k.ctrlKey||k.metaKey)&&k.key.toLowerCase()==="s"){k.preventDefault(),t();return}if(k.key==="Tab"&&!k.ctrlKey&&!k.altKey){k.preventDefault();let{selectionStart:E,selectionEnd:L,value:x}=c,$=x.lastIndexOf(` `,E-1)+1;if(k.shiftKey){let I=/^ {1,4}/.exec(x.slice($))?.[0].length??0;if(!I)return;c.setSelectionRange($,$+I),document.execCommand("delete"),c.setSelectionRange(Math.max($,E-I),Math.max($,L-I));return}b(" ");return}if(k.key==="Enter"&&!k.ctrlKey&&!k.altKey&&!k.shiftKey){k.preventDefault();let{selectionStart:E,value:L}=c,x=L.lastIndexOf(` `,E-1)+1,$=L.slice(x,E),I=/^\s*/.exec($)?.[0]??"",_=r!=="text"&&/[{[(]\s*$/.test($)?" ":"";b(` -${I}${_}`)}}),g(),{getValue:()=>c.value,isDirty:()=>p,markSaved(k=c.value){d=k,g()},focus(){c.focus(),c.setSelectionRange(0,0)}}}function po(s,{title:e,content:t,language:o,isNew:n=!1,onSave:r,onClose:i,onChange:a}){s.textContent="";let l=St("div","editorView"),c=St("div","editorBar"),d=St("div","editorFile",e),p=St("span","dirty",n?" (new, not saved yet)":"");d.append(p);let h=St("div","btn primary","Save"),f=St("div","btn","Save & close"),m=St("div","btn","Close");h.onclick=()=>r(!1),f.onclick=()=>r(!0),m.onclick=i,c.append(d,h,f,m);let g=St("div","");g.style.cssText="display:flex;flex:1 1 auto;min-height:0",l.append(c,g,St("div","editorKeys","Ctrl+S save \xB7 Ctrl+Z / Ctrl+Y undo, redo \xB7 Tab / Shift+Tab indent \xB7 Esc close")),s.append(l);let b=Ph(g,t,{language:o,onChange:a,onSave:()=>r(!1),onDirtyChange:v=>{p.textContent=v?" \u25CF unsaved":""}});return b.focus(),{editor:b,bar:c,saveButton:h}}var jw,Uw,Gw,Zn,Ww,ja,Vw,St,Oo=w(()=>{"use strict";jw=new Set("async await break case catch class const continue debugger default delete do else export extends finally for function if import in instanceof let new of return static super switch throw try typeof var void while with yield get set".split(" ")),Uw=new Set(["true","false","null","undefined","this","NaN","Infinity"]),Gw=/(\/\/[^\n]*|\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?|`(?:[^`\\]|\\[\s\S])*`?)|(\b\d[\d_]*(?:\.[\d_]+)?(?:e[+-]?\d+)?n?\b|\b0x[\da-fA-F_]+n?\b)|([A-Za-z_$][\w$]*)/g,Zn=s=>s.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">"),Ww=/(\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?)|(@[\w-]+|!\s*important\b)|(#[\da-fA-F]{3,8}\b|-?(?:\d*\.)?\d+(?:e[+-]?\d+)?(?:%|[a-zA-Z]+)?)|(-?-?[a-zA-Z_][\w-]*)/g,ja=s=>{let e=s.slice(s.lastIndexOf(".")+1).toLowerCase();return e==="css"?"css":e==="json"?"json":["js","mjs"].includes(e)?"js":"text"},Vw=(s,e)=>/^\s*:[^{};]*(?:[;}]|$)/.test(s.slice(e,e+400));St=(s,e,t="")=>{let o=document.createElement(s);return o.className=e,o.textContent=t,o}});var Wa={};A(Wa,{default:()=>tk});function Ua(s){return s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`}function Zw(){let s=new Date;return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}function Qw(){let s=document.createElement("canvas").getContext("webgl2");if(!s)return null;let e=s.getExtension("WEBGL_debug_renderer_info"),t=e?{vendor:String(s.getParameter(e.UNMASKED_VENDOR_WEBGL)),renderer:String(s.getParameter(e.UNMASKED_RENDERER_WEBGL))}:null;return s.getExtension("WEBGL_lose_context")?.loseContext(),t}function ek(){let s={};for(let n=0;n{"use strict";Lh();D();Oo();Yw="diagnostics",Xw="kro_setngss_",Jw=256*1024;Ga=class{constructor(){this.overlay=null,this.shadow=null,this.entries=[],this.excluded=new Set,this.compressed=0,this.onMessage=e=>this.receive(e.data),this.onKey=e=>{e.key==="Escape"&&this.close()},u.diagnostics={open:()=>this.open()}}open(){if(!u.hostFeatures?.includes(Yw)){u.showNotification("The Diagnostics Report needs a newer Kute",!1,4);return}if(this.overlay)return;this.entries=[],this.excluded.clear(),this.overlay=document.createElement("div"),this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let e=document.createElement("div");this.overlay.append(e),this.shadow=e.attachShadow({mode:"open"}),this.shadow.innerHTML=Rh,this.element("dgClose").onclick=()=>this.close(),this.element("dgSave").onclick=()=>this.save(),this.overlay.addEventListener("mousedown",t=>{t.target===this.overlay&&this.close()}),document.addEventListener("keydown",this.onKey),window.chrome.webview.addEventListener("message",this.onMessage),document.body.append(this.overlay),window.chrome.webview.postMessage(`diagnostics-collect ${JSON.stringify(ek())}`)}close(){window.chrome.webview.removeEventListener("message",this.onMessage),document.removeEventListener("keydown",this.onKey),this.overlay?.remove(),this.overlay=null,this.shadow=null,this.entries=[]}element(e){return this.shadow?.querySelector(`#${e}`)}receive(e){if(this.shadow){if(e?.diagnostics)this.entries=e.diagnostics.entries??[],this.compressed=e.diagnostics.compressed??0,this.element("dgSave").classList.remove("dgBusy"),this.renderList(),this.select(this.entries.find(t=>t.name!=="manifest.json")?.name??"manifest.json");else if(e?.diagnosticsSaved){let{file:t,error:o}=e.diagnosticsSaved;if(this.element("dgSave").classList.remove("dgBusy"),o){u.showNotification(`Could not save the report: ${o}`,!1,5);return}u.showNotification(`Saved ${t} to your Downloads folder`,!1,5),this.close()}}}renderList(){let e=this.element("dgEntries");e.replaceChildren();for(let t of this.entries){let o=document.createElement("div");o.className="dgEntry",o.dataset.name=t.name;let n=document.createElement("input");n.type="checkbox",n.checked=!this.excluded.has(t.name),n.disabled=t.name==="manifest.json",n.onclick=l=>{l.stopPropagation(),n.checked?this.excluded.delete(t.name):this.excluded.add(t.name),o.classList.toggle("dgOff",!n.checked),this.renderTotal()};let r=document.createElement("div"),i=document.createElement("span");i.className="dgName",i.textContent=t.name;let a=document.createElement("span");a.className="dgSize",a.textContent=Ua(t.bytes),r.append(i,a),o.append(n,r),o.onclick=()=>this.select(t.name),e.append(o)}this.renderTotal()}select(e){let t=this.entries.find(n=>n.name===e);if(!t)return;for(let n of this.element("dgEntries").querySelectorAll(".dgEntry"))n.classList.toggle("dgSelected",n.dataset.name===e);this.element("dgNote").textContent=t.note;let o=this.element("dgText");t.kind==="binary"?o.textContent=`${t.name}: ${Ua(t.bytes)} of binary data, goes into the file as it is.`:t.kind==="json"&&!t.truncated&&(t.text??"").length<=Jw?o.innerHTML=Qn(t.text??"","json"):o.textContent=t.truncated?`${t.text} +${I}${_}`)}}),g(),{getValue:()=>c.value,isDirty:()=>h,markSaved(k=c.value){d=k,g()},focus(){c.focus(),c.setSelectionRange(0,0)}}}function po(s,{title:e,content:t,language:o,isNew:n=!1,onSave:r,onClose:i,onChange:a}){s.textContent="";let l=St("div","editorView"),c=St("div","editorBar"),d=St("div","editorFile",e),h=St("span","dirty",n?" (new, not saved yet)":"");d.append(h);let p=St("div","btn primary","Save"),m=St("div","btn","Save & close"),f=St("div","btn","Close");p.onclick=()=>r(!1),m.onclick=()=>r(!0),f.onclick=i,c.append(d,p,m,f);let g=St("div","");g.style.cssText="display:flex;flex:1 1 auto;min-height:0",l.append(c,g,St("div","editorKeys","Ctrl+S save \xB7 Ctrl+Z / Ctrl+Y undo, redo \xB7 Tab / Shift+Tab indent \xB7 Esc close")),s.append(l);let b=Ph(g,t,{language:o,onChange:a,onSave:()=>r(!1),onDirtyChange:v=>{h.textContent=v?" \u25CF unsaved":""}});return b.focus(),{editor:b,bar:c,saveButton:p}}var jw,Uw,Gw,Zn,Ww,ja,Vw,St,Oo=w(()=>{"use strict";jw=new Set("async await break case catch class const continue debugger default delete do else export extends finally for function if import in instanceof let new of return static super switch throw try typeof var void while with yield get set".split(" ")),Uw=new Set(["true","false","null","undefined","this","NaN","Infinity"]),Gw=/(\/\/[^\n]*|\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?|`(?:[^`\\]|\\[\s\S])*`?)|(\b\d[\d_]*(?:\.[\d_]+)?(?:e[+-]?\d+)?n?\b|\b0x[\da-fA-F_]+n?\b)|([A-Za-z_$][\w$]*)/g,Zn=s=>s.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">"),Ww=/(\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?)|(@[\w-]+|!\s*important\b)|(#[\da-fA-F]{3,8}\b|-?(?:\d*\.)?\d+(?:e[+-]?\d+)?(?:%|[a-zA-Z]+)?)|(-?-?[a-zA-Z_][\w-]*)/g,ja=s=>{let e=s.slice(s.lastIndexOf(".")+1).toLowerCase();return e==="css"?"css":e==="json"?"json":["js","mjs"].includes(e)?"js":"text"},Vw=(s,e)=>/^\s*:[^{};]*(?:[;}]|$)/.test(s.slice(e,e+400));St=(s,e,t="")=>{let o=document.createElement(s);return o.className=e,o.textContent=t,o}});var Wa={};A(Wa,{default:()=>tk});function Ua(s){return s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`}function Zw(){let s=new Date;return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}function Qw(){let s=document.createElement("canvas").getContext("webgl2");if(!s)return null;let e=s.getExtension("WEBGL_debug_renderer_info"),t=e?{vendor:String(s.getParameter(e.UNMASKED_VENDOR_WEBGL)),renderer:String(s.getParameter(e.UNMASKED_RENDERER_WEBGL))}:null;return s.getExtension("WEBGL_lose_context")?.loseContext(),t}function ek(){let s={};for(let n=0;n{"use strict";Lh();D();Oo();Yw="diagnostics",Xw="kro_setngss_",Jw=256*1024;Ga=class{constructor(){this.overlay=null,this.shadow=null,this.entries=[],this.excluded=new Set,this.compressed=0,this.onMessage=e=>this.receive(e.data),this.onKey=e=>{e.key==="Escape"&&this.close()},u.diagnostics={open:()=>this.open()}}open(){if(!u.hostFeatures?.includes(Yw)){u.showNotification("The Diagnostics Report needs a newer Kute",!1,4);return}if(this.overlay)return;this.entries=[],this.excluded.clear(),this.overlay=document.createElement("div"),this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let e=document.createElement("div");this.overlay.append(e),this.shadow=e.attachShadow({mode:"open"}),this.shadow.innerHTML=Rh,this.element("dgClose").onclick=()=>this.close(),this.element("dgSave").onclick=()=>this.save(),this.overlay.addEventListener("mousedown",t=>{t.target===this.overlay&&this.close()}),document.addEventListener("keydown",this.onKey),window.chrome.webview.addEventListener("message",this.onMessage),document.body.append(this.overlay),window.chrome.webview.postMessage(`diagnostics-collect ${JSON.stringify(ek())}`)}close(){window.chrome.webview.removeEventListener("message",this.onMessage),document.removeEventListener("keydown",this.onKey),this.overlay?.remove(),this.overlay=null,this.shadow=null,this.entries=[]}element(e){return this.shadow?.querySelector(`#${e}`)}receive(e){if(this.shadow){if(e?.diagnostics)this.entries=e.diagnostics.entries??[],this.compressed=e.diagnostics.compressed??0,this.element("dgSave").classList.remove("dgBusy"),this.renderList(),this.select(this.entries.find(t=>t.name!=="manifest.json")?.name??"manifest.json");else if(e?.diagnosticsSaved){let{file:t,error:o}=e.diagnosticsSaved;if(this.element("dgSave").classList.remove("dgBusy"),o){u.showNotification(`Could not save the report: ${o}`,!1,5);return}u.showNotification(`Saved ${t} to your Downloads folder`,!1,5),this.close()}}}renderList(){let e=this.element("dgEntries");e.replaceChildren();for(let t of this.entries){let o=document.createElement("div");o.className="dgEntry",o.dataset.name=t.name;let n=document.createElement("input");n.type="checkbox",n.checked=!this.excluded.has(t.name),n.disabled=t.name==="manifest.json",n.onclick=l=>{l.stopPropagation(),n.checked?this.excluded.delete(t.name):this.excluded.add(t.name),o.classList.toggle("dgOff",!n.checked),this.renderTotal()};let r=document.createElement("div"),i=document.createElement("span");i.className="dgName",i.textContent=t.name;let a=document.createElement("span");a.className="dgSize",a.textContent=Ua(t.bytes),r.append(i,a),o.append(n,r),o.onclick=()=>this.select(t.name),e.append(o)}this.renderTotal()}select(e){let t=this.entries.find(n=>n.name===e);if(!t)return;for(let n of this.element("dgEntries").querySelectorAll(".dgEntry"))n.classList.toggle("dgSelected",n.dataset.name===e);this.element("dgNote").textContent=t.note;let o=this.element("dgText");t.kind==="binary"?o.textContent=`${t.name}: ${Ua(t.bytes)} of binary data, goes into the file as it is.`:t.kind==="json"&&!t.truncated&&(t.text??"").length<=Jw?o.innerHTML=Qn(t.text??"","json"):o.textContent=t.truncated?`${t.text} -... (the preview ends here, the file holds all of it)`:t.text??"",o.scrollTop=0}renderTotal(){let e=this.entries.filter(r=>!this.excluded.has(r.name)),t=e.reduce((r,i)=>r+i.bytes,0),o=this.entries.reduce((r,i)=>r+i.bytes,0),n=o>0?this.compressed*t/o:0;this.element("dgTotal").textContent=`${e.length} of ${this.entries.length} files, about ${Ua(Math.round(n))} as a file`}save(){this.element("dgSave").classList.add("dgBusy"),window.chrome.webview.postMessage(`diagnostics-save ${JSON.stringify([...this.excluded])}`)}},tk=new Ga});var Nh={};A(Nh,{OFFICIAL_MAPS:()=>er,mapImageUrl:()=>Bs,mapLabel:()=>Xa,officialMaps:()=>Ja});function Ja(){return Ya??=fetch(ok,{signal:AbortSignal.timeout(4e3)}).then(s=>s.json()).then(s=>{let e=[];for(let t of Array.isArray(s?.data)?s.data:[])Number.isInteger(t?.id)&&t.id>=0&&typeof t?.name=="string"&&e.push([t.id,t.name]);if(e.length===0)throw new Error("empty map list");return e}).catch(()=>(Ya=null,er.map((s,e)=>[e,s]))),Ya}var er,ok,Bs,Xa,Ya,tr=w(()=>{"use strict";er=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Shipment","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Bureau","Tortuga","Tropicano","Krunk_Plaza","Arena","Habitat","Atomic","Old_Burg","Throwback","Stockade","Facility","Clockwork","Laboratory","Shipyard","Soul Sanctum","Bazaar","Erupt","HQ","Khepri","Lush","Vivo","Slide Moonlight","Eterno Simulator","Stalk Factory","Eterno Jump","Frontier","Bastion","Piazza","Barnyard"],ok="https://gapi.svc.krunker.io/maps",Bs=s=>`https://assets.krunker.io/img/maps/map_${s}.png`,Xa=s=>s.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),Ya=null});var _h=we((p3,sk)=>{sk.exports="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"});var Bh=we((h3,nk)=>{nk.exports=`

      Match Found Sound

      Plays in Kute's queue window when it finds a match
      Play
      Open folder
      Refresh
      Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds
      Done
      `});var Dh={};A(Dh,{chosenSound:()=>Qa,default:()=>ak,kuteSound:()=>zs,volume:()=>mo});function Hh(s,e){return new Promise(t=>{let o=0,n=r=>{let i=e(r.data);i!==void 0&&(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(i))};o=setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},ik),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(s)})}async function Qa(){let s=String(u.settings.data.queueSoundFile??ho);if(s!==ho&&zh()){let e=await Oh(s);if(e?.data)return e.data}return zs()}var ho,rk,ik,zh,mo,zs,Oh,Za,ak,el=w(()=>{"use strict";D();ho="",rk=40,ik=5e3,zh=()=>u.hostFeatures?.includes("custom-sounds")??!1,mo=()=>Math.min(1,Math.max(0,Number(u.settings.data.queueSoundVolume??rk)/100||0));zs=()=>Promise.resolve().then(()=>ue(_h(),1)).then(s=>s.default),Oh=s=>Hh(`sound-get ${JSON.stringify({name:s})}`,e=>e?.sound?.name===s?e.sound:void 0);Za=class{constructor(){this.context=null,this.playing=null,this.gain=null,u.queueSound={showOptions:()=>this.showOptions()}}async play(e){this.stop(),this.context??=new AudioContext,this.context.state==="suspended"&&await this.context.resume();let t=Uint8Array.from(atob(e),i=>i.charCodeAt(0)),o=await this.context.decodeAudioData(t.buffer),n=this.context.createGain();n.gain.value=mo(),n.connect(this.context.destination);let r=this.context.createBufferSource();r.buffer=o,r.connect(n),r.onended=()=>{this.playing===r&&(this.playing=null),r.disconnect(),n.disconnect()},r.start(),this.playing=r,this.gain=n}stop(){this.playing?.stop(),this.playing=null}async showOptions(){let e=await Promise.resolve().then(()=>ue(Bh(),1)),t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default;let r=b=>n.querySelector(`#${b}`),i=r("qsSound"),a=r("qsVolume"),l=Math.round(mo()*100),c=r("qsError"),d=String(u.settings.data.queueSoundFile??ho),p=b=>{c.textContent=b,c.hidden=!b},h=async()=>{let b=zh(),v=b?await Hh("sound-list",L=>Array.isArray(L?.sounds)?L.sounds:void 0)??[]:[],k=[new Option("Kute's sound",ho)];if(v.length){let L=document.createElement("optgroup");L.label="Your sounds",L.append(...v.map(x=>new Option(x,x))),k.push(L)}d!==ho&&!v.includes(d)&&k.push(new Option(`${d} (missing)`,d)),i.replaceChildren(...k),i.value=d,r("qsOpenFolder").hidden=!b,r("qsRefresh").hidden=!b;let E="Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds";b?v.length===0&&(E="Add your own: put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds, then press Refresh"):E="Your own sounds need a newer Kute. Update Kute to use them.",r("qsFileHint").textContent=E},f=()=>{r("qsVolumeValue").textContent=`${a.value} %`};a.value=String(l),f(),a.oninput=()=>{u.settings.data.queueSoundVolume=Number(a.value),f(),this.playing&&this.gain&&(this.gain.gain.value=mo())},i.onchange=()=>{d=i.value,p("")},r("qsPlay").onclick=async()=>{p(""),mo()===0&&p("The volume is at 0.");try{if(d===ho){await this.play(await zs());return}let b=await Oh(d);if(!b?.data){p(b?.error??"Kute did not answer.");return}await this.play(b.data)}catch{p("This file cannot be played. Try MP3, OGG or WAV.")}},r("qsOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, sounds"),r("qsRefresh").onclick=()=>h();let m=new AbortController,g=()=>{m.abort(),this.stop(),t.remove(),Number(a.value)!==l&&window.chrome.webview.postMessage(`set-config-json queueSoundVolume ${Number(a.value)}`),d!==String(u.settings.data.queueSoundFile??ho)&&(u.settings.data.queueSoundFile=d,window.chrome.webview.postMessage(`set-config-json queueSoundFile ${JSON.stringify(d)}`))};r("qsDone").onclick=g,t.addEventListener("mousedown",b=>{b.target===t&&g()}),document.addEventListener("keydown",b=>{b.key==="Escape"&&(b.stopPropagation(),g())},{signal:m.signal,capture:!0}),document.body.append(t),await h()}},ak=new Za});var Fh=we((f3,lk)=>{lk.exports=' External Queue
      Ready
      00:00:00

      Select Maps

      '});var qh=we((g3,ck)=>{ck.exports='(()=>{const{info:r}=window;function o(e){const n=document.querySelector(e);if(!n)throw new Error(`queue window: ${e} is missing`);return n}const y=r.maps,R={na:"North America",eu:"Europe",as:"Asia"},T=60,O=o("#queueStatus"),D=o("#statusArea"),q=o("#queueTimerDisplay"),A=o("#regionCheckboxes"),k=o("#matchPopupOverlay"),B=o("#countDownTimer"),$=o("#foundRegion"),_=o("#mapSelectorButton"),p=o("#mapSelectorOverlay"),j=o("#closeMapSelector"),I=o("#mapGrid"),s=o("#queueButton"),G=o("#closeButton");let m=!1,g=!1,N=0,E=0,v=0,w=null,l=null,S=null,u=null;const i=new Set,h=window.opener?.localStorage??window.localStorage;function x(){const e=Array.from(A.querySelectorAll("input:checked"),n=>n.id);h.setItem("queue_selectedRegions",JSON.stringify(e)),h.setItem("queue_newSelectedMaps",JSON.stringify(Array.from(i)))}function J(){try{for(const n of JSON.parse(h.getItem("queue_selectedRegions")??"[]")){const t=document.getElementById(n);t&&(t.checked=!0)}const e=h.getItem("queue_newSelectedMaps");for(const n of e?JSON.parse(e):Object.values(y).map(t=>t.number))i.add(Number(n))}catch{for(const e of Object.values(y))i.add(e.number)}}function C(e){const n=t=>String(Math.floor(t)).padStart(2,"0");return`${n(e/3600)}:${n(e%3600/60)}:${n(e%60)}`}function b(e,n){O.textContent=n,O.classList.toggle("active",e),D.classList.toggle("active",e)}function d(e="Ready"){m=!1,g=!1,clearInterval(E),s.textContent="Start Queue",s.classList.remove("in-queue"),s.disabled=!1,q.textContent="00:00:00",b(!1,e)}async function Q(){l=new AudioContext,l.state==="suspended"&&await l.resume();const e=n=>l.decodeAudioData(Uint8Array.from(atob(n),t=>t.charCodeAt(0)).buffer);try{S=await e(r.sound)}catch{S=await e(r.fallbackSound??r.sound)}}function L(){u&&(u.stop(),u.disconnect(),u=null)}function P(){if(!S||l?.state!=="running")return;L();let e=1;try{e=r.volume?.()??1}catch{}if(!(e>0))return;const n=l.createGain();n.gain.value=e,n.connect(l.destination);const t=l.createBufferSource();t.buffer=S,t.connect(n),t.start(0),u=t,t.onended=()=>{u===t&&(u=null),t.disconnect(),n.disconnect()}}function U(e){const n=Date.now()+e,t=()=>{const a=Math.ceil((n-Date.now())/1e3);if(a<=0){b(!1,"Ready"),s.disabled=!1;return}b(!1,`Cooldown: ${C(a)}`),s.disabled=!0,setTimeout(t,1e3)};t()}function z(e,n){P(),k.classList.add("active");const t=Object.entries(y).find(([,f])=>f.number===Number.parseInt(e,10))?.[0]??"unknown",a=R[n.slice(2)]??n.slice(2);$.textContent=`${a}, ${t}`;const c=Date.now();clearInterval(v),v=setInterval(()=>{const f=Math.max(0,T-Math.floor((Date.now()-c)/1e3));B.textContent=C(f),f<=0&&(clearInterval(v),k.classList.remove("active"))},1e3),d()}function W(){const e=Array.from(A.querySelectorAll("input:checked"),a=>a.value);if(e.length===0||i.size===0){d(e.length===0?"Select at least one region":"Select at least one map");return}const n=`wss://gamefrontend.svc.krunker.io/v1/matchmaking/queue?token=${r.token}&maps=${Array.from(i).join(",")}®ions=${e.join(",")}`;let t;try{t=new WebSocket(n)}catch{d("Connection failed");return}w=t,t.onerror=()=>d("Connection error"),t.onclose=()=>{(m||g)&&d()},t.onopen=()=>{m=!0,g=!1,N=Date.now(),s.textContent="Leave Queue",s.classList.add("in-queue"),s.disabled=!1,b(!0,"In queue"),q.textContent=C(0),E=setInterval(()=>{q.textContent=C((Date.now()-N)/1e3)},1e3)},t.onmessage=a=>{const c=JSON.parse(a.data);if(c.type==="QUEUE_STATUS"&&c.payload?.status==="MATCHED"){const f=c.payload.assignment.extensions;z(String(f.map).trim(),String(f.region))}else c.type==="ERROR"&&c.payload?.code==="COOLDOWN"?(d(),t.close(),U(Number(c.payload.payload.cooldown))):c.type==="INTERNAL_ERROR"&&(d(),t.close())}}function F(e){const n=!i.has(e);n?i.add(e):i.delete(e),I.querySelector(`.map-item[data-map="${e}"]`)?.classList.toggle("selected",n),m&&w?.close(),x()}function H(){I.replaceChildren();for(const[e,n]of Object.entries(y)){const t=document.createElement("div");t.className="map-item",t.dataset.map=String(n.number),t.classList.toggle("selected",i.has(n.number));const a=document.createElement("img");a.src=n.url,a.loading="lazy";const c=document.createElement("span");c.textContent=e,t.append(a,c),t.onclick=()=>F(n.number),I.append(t)}}J();const M=r.region?document.getElementById(r.region):null;M&&(M.checked=!0),H(),_.onclick=()=>p.classList.add("active"),j.onclick=()=>p.classList.remove("active"),p.onclick=e=>{e.target===p&&p.classList.remove("active")},s.onclick=async()=>{if(!g){if(m){w?.close();return}s.disabled=!0,g=!0;try{S||await Q()}catch{}W()}},G.onclick=()=>{clearInterval(v),k.classList.remove("active"),L()};const K=()=>{m&&w?.close(),x()};for(const e of A.querySelectorAll("input"))e.onclick=K})();\n'});var Kh={};function uk(){let s=window.screen.width,e=window.screen.height,t=850,o=350,n=(s-t)/2,r=(e-o)/2,i=window.open("about:blank","_blank",`width=${t},height=${o},left=${n},top=${r}`);if(!i)return;let a=(U(".region-indicator").textContent??"").split(": ")[1];switch(a){case"North America":a="na";break;case"Europe":a="eu";break;case"Asia":a="as";break;default:break}let l=localStorage.getItem("__FRVR_auth_access_token")??"";l=l.replace(/"/g,""),l=l.replace("/","");let c=localStorage.getItem("s_rankedAllRegions")==="true";Promise.all([Promise.resolve().then(()=>ue(Fh(),1)),Promise.resolve().then(()=>ue(qh(),1)),Qa(),zs(),Ja()]).then(([d,p,h,f,m])=>{let g=Object.fromEntries(m.map(([k,E])=>[Xa(E),{url:Bs(k),number:k}]));i.info={allRegions:c,token:l,region:a,sound:h,fallbackSound:f,volume:mo,maps:g};let b=new DOMParser().parseFromString(d.default,"text/html");i.document.head.append(...Array.from(b.head.children,k=>i.document.importNode(k,!0))),i.document.body.append(...Array.from(b.body.children,k=>i.document.importNode(k,!0)));let v=i.document.createElement("script");v.textContent=p.default,i.document.head.append(v)})}var or,dk,tl=w(()=>{"use strict";Ae();tr();el();or=document.createElement("button");or.textContent="open_in_new";or.style=`background-color: #5ce05a; +... (the preview ends here, the file holds all of it)`:t.text??"",o.scrollTop=0}renderTotal(){let e=this.entries.filter(r=>!this.excluded.has(r.name)),t=e.reduce((r,i)=>r+i.bytes,0),o=this.entries.reduce((r,i)=>r+i.bytes,0),n=o>0?this.compressed*t/o:0;this.element("dgTotal").textContent=`${e.length} of ${this.entries.length} files, about ${Ua(Math.round(n))} as a file`}save(){this.element("dgSave").classList.add("dgBusy"),window.chrome.webview.postMessage(`diagnostics-save ${JSON.stringify([...this.excluded])}`)}},tk=new Ga});var Nh={};A(Nh,{OFFICIAL_MAPS:()=>er,mapImageUrl:()=>Bs,mapLabel:()=>Xa,officialMaps:()=>Ja});function Ja(){return Ya??=fetch(ok,{signal:AbortSignal.timeout(4e3)}).then(s=>s.json()).then(s=>{let e=[];for(let t of Array.isArray(s?.data)?s.data:[])Number.isInteger(t?.id)&&t.id>=0&&typeof t?.name=="string"&&e.push([t.id,t.name]);if(e.length===0)throw new Error("empty map list");return e}).catch(()=>(Ya=null,er.map((s,e)=>[e,s]))),Ya}var er,ok,Bs,Xa,Ya,tr=w(()=>{"use strict";er=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Shipment","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Bureau","Tortuga","Tropicano","Krunk_Plaza","Arena","Habitat","Atomic","Old_Burg","Throwback","Stockade","Facility","Clockwork","Laboratory","Shipyard","Soul Sanctum","Bazaar","Erupt","HQ","Khepri","Lush","Vivo","Slide Moonlight","Eterno Simulator","Stalk Factory","Eterno Jump","Frontier","Bastion","Piazza","Barnyard"],ok="https://gapi.svc.krunker.io/maps",Bs=s=>`https://assets.krunker.io/img/maps/map_${s}.png`,Xa=s=>s.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),Ya=null});var _h=we((p3,sk)=>{sk.exports="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"});var Bh=we((h3,nk)=>{nk.exports=`

      Match Found Sound

      Plays in Kute's queue window when it finds a match
      Play
      Open folder
      Refresh
      Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds
      Done
      `});var Dh={};A(Dh,{chosenSound:()=>Qa,default:()=>ak,kuteSound:()=>zs,volume:()=>mo});function Hh(s,e){return new Promise(t=>{let o=0,n=r=>{let i=e(r.data);i!==void 0&&(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(i))};o=setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},ik),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(s)})}async function Qa(){let s=String(u.settings.data.queueSoundFile??ho);if(s!==ho&&zh()){let e=await Oh(s);if(e?.data)return e.data}return zs()}var ho,rk,ik,zh,mo,zs,Oh,Za,ak,el=w(()=>{"use strict";D();ho="",rk=40,ik=5e3,zh=()=>u.hostFeatures?.includes("custom-sounds")??!1,mo=()=>Math.min(1,Math.max(0,Number(u.settings.data.queueSoundVolume??rk)/100||0));zs=()=>Promise.resolve().then(()=>ue(_h(),1)).then(s=>s.default),Oh=s=>Hh(`sound-get ${JSON.stringify({name:s})}`,e=>e?.sound?.name===s?e.sound:void 0);Za=class{constructor(){this.context=null,this.playing=null,this.gain=null,u.queueSound={showOptions:()=>this.showOptions()}}async play(e){this.stop(),this.context??=new AudioContext,this.context.state==="suspended"&&await this.context.resume();let t=Uint8Array.from(atob(e),i=>i.charCodeAt(0)),o=await this.context.decodeAudioData(t.buffer),n=this.context.createGain();n.gain.value=mo(),n.connect(this.context.destination);let r=this.context.createBufferSource();r.buffer=o,r.connect(n),r.onended=()=>{this.playing===r&&(this.playing=null),r.disconnect(),n.disconnect()},r.start(),this.playing=r,this.gain=n}stop(){this.playing?.stop(),this.playing=null}async showOptions(){let e=await Promise.resolve().then(()=>ue(Bh(),1)),t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default;let r=b=>n.querySelector(`#${b}`),i=r("qsSound"),a=r("qsVolume"),l=Math.round(mo()*100),c=r("qsError"),d=String(u.settings.data.queueSoundFile??ho),h=b=>{c.textContent=b,c.hidden=!b},p=async()=>{let b=zh(),v=b?await Hh("sound-list",L=>Array.isArray(L?.sounds)?L.sounds:void 0)??[]:[],k=[new Option("Kute's sound",ho)];if(v.length){let L=document.createElement("optgroup");L.label="Your sounds",L.append(...v.map(x=>new Option(x,x))),k.push(L)}d!==ho&&!v.includes(d)&&k.push(new Option(`${d} (missing)`,d)),i.replaceChildren(...k),i.value=d,r("qsOpenFolder").hidden=!b,r("qsRefresh").hidden=!b;let E="Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds";b?v.length===0&&(E="Add your own: put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds, then press Refresh"):E="Your own sounds need a newer Kute. Update Kute to use them.",r("qsFileHint").textContent=E},m=()=>{r("qsVolumeValue").textContent=`${a.value} %`};a.value=String(l),m(),a.oninput=()=>{u.settings.data.queueSoundVolume=Number(a.value),m(),this.playing&&this.gain&&(this.gain.gain.value=mo())},i.onchange=()=>{d=i.value,h("")},r("qsPlay").onclick=async()=>{h(""),mo()===0&&h("The volume is at 0.");try{if(d===ho){await this.play(await zs());return}let b=await Oh(d);if(!b?.data){h(b?.error??"Kute did not answer.");return}await this.play(b.data)}catch{h("This file cannot be played. Try MP3, OGG or WAV.")}},r("qsOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, sounds"),r("qsRefresh").onclick=()=>p();let f=new AbortController,g=()=>{f.abort(),this.stop(),t.remove(),Number(a.value)!==l&&window.chrome.webview.postMessage(`set-config-json queueSoundVolume ${Number(a.value)}`),d!==String(u.settings.data.queueSoundFile??ho)&&(u.settings.data.queueSoundFile=d,window.chrome.webview.postMessage(`set-config-json queueSoundFile ${JSON.stringify(d)}`))};r("qsDone").onclick=g,t.addEventListener("mousedown",b=>{b.target===t&&g()}),document.addEventListener("keydown",b=>{b.key==="Escape"&&(b.stopPropagation(),g())},{signal:f.signal,capture:!0}),document.body.append(t),await p()}},ak=new Za});var Fh=we((f3,lk)=>{lk.exports=' External Queue
      Ready
      00:00:00

      Select Maps

      '});var qh=we((g3,ck)=>{ck.exports='(()=>{const{info:r}=window;function o(e){const n=document.querySelector(e);if(!n)throw new Error(`queue window: ${e} is missing`);return n}const y=r.maps,R={na:"North America",eu:"Europe",as:"Asia"},T=60,O=o("#queueStatus"),D=o("#statusArea"),q=o("#queueTimerDisplay"),A=o("#regionCheckboxes"),k=o("#matchPopupOverlay"),B=o("#countDownTimer"),$=o("#foundRegion"),_=o("#mapSelectorButton"),p=o("#mapSelectorOverlay"),j=o("#closeMapSelector"),I=o("#mapGrid"),s=o("#queueButton"),G=o("#closeButton");let m=!1,g=!1,N=0,E=0,v=0,w=null,l=null,S=null,u=null;const i=new Set,h=window.opener?.localStorage??window.localStorage;function x(){const e=Array.from(A.querySelectorAll("input:checked"),n=>n.id);h.setItem("queue_selectedRegions",JSON.stringify(e)),h.setItem("queue_newSelectedMaps",JSON.stringify(Array.from(i)))}function J(){try{for(const n of JSON.parse(h.getItem("queue_selectedRegions")??"[]")){const t=document.getElementById(n);t&&(t.checked=!0)}const e=h.getItem("queue_newSelectedMaps");for(const n of e?JSON.parse(e):Object.values(y).map(t=>t.number))i.add(Number(n))}catch{for(const e of Object.values(y))i.add(e.number)}}function C(e){const n=t=>String(Math.floor(t)).padStart(2,"0");return`${n(e/3600)}:${n(e%3600/60)}:${n(e%60)}`}function b(e,n){O.textContent=n,O.classList.toggle("active",e),D.classList.toggle("active",e)}function d(e="Ready"){m=!1,g=!1,clearInterval(E),s.textContent="Start Queue",s.classList.remove("in-queue"),s.disabled=!1,q.textContent="00:00:00",b(!1,e)}async function Q(){l=new AudioContext,l.state==="suspended"&&await l.resume();const e=n=>l.decodeAudioData(Uint8Array.from(atob(n),t=>t.charCodeAt(0)).buffer);try{S=await e(r.sound)}catch{S=await e(r.fallbackSound??r.sound)}}function L(){u&&(u.stop(),u.disconnect(),u=null)}function P(){if(!S||l?.state!=="running")return;L();let e=1;try{e=r.volume?.()??1}catch{}if(!(e>0))return;const n=l.createGain();n.gain.value=e,n.connect(l.destination);const t=l.createBufferSource();t.buffer=S,t.connect(n),t.start(0),u=t,t.onended=()=>{u===t&&(u=null),t.disconnect(),n.disconnect()}}function U(e){const n=Date.now()+e,t=()=>{const a=Math.ceil((n-Date.now())/1e3);if(a<=0){b(!1,"Ready"),s.disabled=!1;return}b(!1,`Cooldown: ${C(a)}`),s.disabled=!0,setTimeout(t,1e3)};t()}function z(e,n){P(),k.classList.add("active");const t=Object.entries(y).find(([,f])=>f.number===Number.parseInt(e,10))?.[0]??"unknown",a=R[n.slice(2)]??n.slice(2);$.textContent=`${a}, ${t}`;const c=Date.now();clearInterval(v),v=setInterval(()=>{const f=Math.max(0,T-Math.floor((Date.now()-c)/1e3));B.textContent=C(f),f<=0&&(clearInterval(v),k.classList.remove("active"))},1e3),d()}function W(){const e=Array.from(A.querySelectorAll("input:checked"),a=>a.value);if(e.length===0||i.size===0){d(e.length===0?"Select at least one region":"Select at least one map");return}const n=`wss://gamefrontend.svc.krunker.io/v1/matchmaking/queue?token=${r.token}&maps=${Array.from(i).join(",")}®ions=${e.join(",")}`;let t;try{t=new WebSocket(n)}catch{d("Connection failed");return}w=t,t.onerror=()=>d("Connection error"),t.onclose=()=>{(m||g)&&d()},t.onopen=()=>{m=!0,g=!1,N=Date.now(),s.textContent="Leave Queue",s.classList.add("in-queue"),s.disabled=!1,b(!0,"In queue"),q.textContent=C(0),E=setInterval(()=>{q.textContent=C((Date.now()-N)/1e3)},1e3)},t.onmessage=a=>{const c=JSON.parse(a.data);if(c.type==="QUEUE_STATUS"&&c.payload?.status==="MATCHED"){const f=c.payload.assignment.extensions;z(String(f.map).trim(),String(f.region))}else c.type==="ERROR"&&c.payload?.code==="COOLDOWN"?(d(),t.close(),U(Number(c.payload.payload.cooldown))):c.type==="INTERNAL_ERROR"&&(d(),t.close())}}function F(e){const n=!i.has(e);n?i.add(e):i.delete(e),I.querySelector(`.map-item[data-map="${e}"]`)?.classList.toggle("selected",n),m&&w?.close(),x()}function H(){I.replaceChildren();for(const[e,n]of Object.entries(y)){const t=document.createElement("div");t.className="map-item",t.dataset.map=String(n.number),t.classList.toggle("selected",i.has(n.number));const a=document.createElement("img");a.src=n.url,a.loading="lazy";const c=document.createElement("span");c.textContent=e,t.append(a,c),t.onclick=()=>F(n.number),I.append(t)}}J();const M=r.region?document.getElementById(r.region):null;M&&(M.checked=!0),H(),_.onclick=()=>p.classList.add("active"),j.onclick=()=>p.classList.remove("active"),p.onclick=e=>{e.target===p&&p.classList.remove("active")},s.onclick=async()=>{if(!g){if(m){w?.close();return}s.disabled=!0,g=!0;try{S||await Q()}catch{}W()}},G.onclick=()=>{clearInterval(v),k.classList.remove("active"),L()};const K=()=>{m&&w?.close(),x()};for(const e of A.querySelectorAll("input"))e.onclick=K})();\n'});var Kh={};function uk(){let s=window.screen.width,e=window.screen.height,t=850,o=350,n=(s-t)/2,r=(e-o)/2,i=window.open("about:blank","_blank",`width=${t},height=${o},left=${n},top=${r}`);if(!i)return;let a=(U(".region-indicator").textContent??"").split(": ")[1];switch(a){case"North America":a="na";break;case"Europe":a="eu";break;case"Asia":a="as";break;default:break}let l=localStorage.getItem("__FRVR_auth_access_token")??"";l=l.replace(/"/g,""),l=l.replace("/","");let c=localStorage.getItem("s_rankedAllRegions")==="true";Promise.all([Promise.resolve().then(()=>ue(Fh(),1)),Promise.resolve().then(()=>ue(qh(),1)),Qa(),zs(),Ja()]).then(([d,h,p,m,f])=>{let g=Object.fromEntries(f.map(([k,E])=>[Xa(E),{url:Bs(k),number:k}]));i.info={allRegions:c,token:l,region:a,sound:p,fallbackSound:m,volume:mo,maps:g};let b=new DOMParser().parseFromString(d.default,"text/html");i.document.head.append(...Array.from(b.head.children,k=>i.document.importNode(k,!0))),i.document.body.append(...Array.from(b.body.children,k=>i.document.importNode(k,!0)));let v=i.document.createElement("script");v.textContent=h.default,i.document.head.append(v)})}var or,dk,tl=w(()=>{"use strict";Ae();tr();el();or=document.createElement("button");or.textContent="open_in_new";or.style=`background-color: #5ce05a; color: #ffffff; border-radius: 9px; padding: 20px 21px; @@ -185,15 +185,15 @@ ${I}${_}`)}}),g(),{getValue:()=>c.value,isDirty:()=>p,markSaved(k=c.value){d=k,g on 0 `,this.enemyOBJ=0,this.enemyTimeout=null,this.observer=null,this.pointCounter=null,this.gameUpdateListener=e=>{e.data==="game-updated"&&setTimeout(()=>{He()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.setupDisplay())},2e3)},u.settings.toggleHpEnemyCounter=e=>this.toggle(e),this.toggle(!0)}toggle(e){e?(window.chrome.webview.addEventListener("message",this.gameUpdateListener),He()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.setupDisplay())):(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.observer?.disconnect(),this.numberDisplay.remove())}processTeamScores=()=>{let{pointCounter:e}=this;if(e){for(let t of document.querySelectorAll("#tScoreC1, #tScoreC2"))if(t&&!t.className.includes("you")){let o=t.nextElementSibling;if(!o)continue;let n=Number.parseInt(o.textContent??"",10);if(Number.isNaN(n))continue;n>this.enemyOBJ&&(e.textContent=String((n-this.enemyOBJ)/10),this.enemyTimeout&&clearTimeout(this.enemyTimeout),this.enemyTimeout=setTimeout(()=>{e.textContent="0",this.enemyTimeout=null},1600)),this.enemyOBJ=n}}};setupDisplay(){let e=U(".pointVal",this.numberDisplay);this.pointCounter=e,U(".topRightCounters").append(this.numberDisplay),this.observer?.disconnect(),this.observer=new MutationObserver(this.processTeamScores),this.observer.observe(U("#teamScores"),{childList:!0,subtree:!0})}},fk=new sl});var al={};A(al,{default:()=>gk});var il,gk,ll=w(()=>{"use strict";D();il=class{constructor(){this.originalPlay=()=>{},this.observer=new MutationObserver(e=>this.parseChat(e)),u.settings.toggleHsSound=e=>this.toggle(e),this.setupSoundHook()}setupSoundHook(){window.SOUND?.play?(this.originalPlay=window.SOUND.play,this.toggle(!0)):setTimeout(()=>this.setupSoundHook(),100)}toggle(e){if(e){let t=document.querySelector("#chatList");t&&this.observer.observe(t,{childList:!0});let o=this;window.SOUND.play=function(n,r,i){if(!(n==="headshot_0"&&r===void 0))return o.originalPlay.call(window.SOUND,n,r,i)}}else window.SOUND.play=this.originalPlay,this.observer.disconnect()}parseChat(e){for(let t of e)if(t.type==="childList")for(let o of t.addedNodes){if(!(o instanceof HTMLElement)||o.tagName!=="DIV")continue;let n=o.querySelector("span.chatMsg");if(!n)continue;let r=n.querySelectorAll("span[style*='color:#'], span[style*='color: rgb']");if(r.length<=0)continue;let i=r[0],a=i.style.color.trim().toLowerCase(),l=i.textContent.trim();a==="rgb(255, 255, 255)"&&l==="You"&&n.querySelector("img")&&window.SOUND.play("headshot_0",1,!1)}}},gk=new il});var Gh,Uh=w(()=>{Gh=`html.kuteHudEdit #app,html.kuteHudEdit #fullMenHider{opacity:.1!important;pointer-events:none!important}html.kuteHudEdit #kuteHudEditor{position:fixed;inset:0;z-index:2147483000;background:#00000073;font-family:Consolas,monospace;color:#fff}.hudBox{position:absolute;box-sizing:border-box;border:1px solid rgba(53,224,232,.65);border-radius:4px;background:#35e0e81a;cursor:grab;touch-action:none}.hudBox:hover,.hudBox.hudActive{border-color:#35e0e8;background:#35e0e840}.hudBox.hudDragging{cursor:grabbing}.hudBox.hudEmpty{border-style:dashed}.hudBox.hudOff{border-color:#ffffff4d;background:#ffffff0f}.hudLabel{position:absolute;bottom:100%;left:-1px;padding:0 .35em;border-radius:3px 3px 0 0;background:#35e0e8d9;color:#05201f;font-size:11px;line-height:1.5;white-space:nowrap;pointer-events:none}.hudBox.hudLabelBelow .hudLabel{top:100%;bottom:auto;border-radius:0 0 3px 3px}.hudBox.hudOff .hudLabel{background:#fff6;color:#111}.hudGuide{position:absolute;background:#ffc147;pointer-events:none}.hudGuide.hudGuideV{top:0;width:1px;height:100%}.hudGuide.hudGuideH{left:0;width:100%;height:1px} -`});var Vh,Wh=w(()=>{Vh='
      HUD Layout
      Boxes are where things sit in the match.
      Drag to move, wheel to resize, arrows nudge
      Reset all
      Done
      '});var Yh={};A(Yh,{HUD_ELEMENTS:()=>Kt,gameSettingOn:()=>cl});function cl(s){try{return window.localStorage.getItem(`kro_setngss_${s}`)!=="false"}catch{return!0}}var Kt,sr=w(()=>{"use strict";Kt=[{key:"timer",name:"Timer",group:"Match",selector:"#timerHolder",size:[188,77]},{key:"matchInfo",name:"Mode and map",group:"Match",selector:"#matchInfo",size:[110,50]},{key:"teamScores",name:"Team scores",group:"Match",selector:"#teamScores",display:"block",size:[220,40],note:"team modes"},{key:"rounds",name:"Rounds",group:"Match",selector:"#roundsDisplay",display:"inline-block",size:[200,60],note:"round based"},{key:"zoneCount",name:"Zone count",group:"Match",selector:"#scoreZoneCount",display:"inline-block",size:[57,43],note:"hardpoint"},{key:"lives",name:"Lives",group:"Match",selector:"#livesCount",display:"inline-block",size:[57,43],note:"LMS, infected"},{key:"gameMessage",name:"Match message",group:"Match",selector:"#gameMessage",size:[400,30]},{key:"roundMessage",name:"Round message",group:"Match",selector:"#roundMessage",size:[400,30]},{key:"challenge",name:"Challenge banner",group:"Match",selector:"#chalDisplay",size:[300,30]},{key:"fps",name:"FPS",group:"Stats",selector:"#fpsDisplay",setting:"showFPS",display:"block",size:[72,23]},{key:"ping",name:"Ping",group:"Stats",selector:"#pingDisplay",setting:"showPing",display:"block",size:[72,23]},{key:"kills",name:"Kills",group:"Stats",selector:"#killCount",setting:"showKillC",display:"inline-block",size:[57,43]},{key:"deaths",name:"Deaths",group:"Stats",selector:"#deathCount",setting:"showDeaths",display:"inline-block",size:[57,43]},{key:"streak",name:"Streak",group:"Stats",selector:"#streakCount",setting:"showStreak",display:"inline-block",size:[57,43]},{key:"kd",name:"K/D",group:"Stats",selector:"#kdCount",setting:"showKD",display:"inline-block",size:[77,43]},{key:"score",name:"Score",group:"Stats",selector:"#scoreCount",setting:"showScore",display:"inline-block",size:[57,43]},{key:"speedRun",name:"Parkour timer",group:"Stats",selector:"#speedRunHolder",display:"block",size:[200,60],note:"parkour"},{key:"leaderboard",name:"Leaderboard",group:"Feed",selector:"#leaderboardHolder",size:[327,54]},{key:"centerLeader",name:"Center leaderboard",group:"Feed",selector:"#centerLeaderDisplay",display:"block",size:[300,120],note:"comp"},{key:"killFeed",name:"Kill feed",group:"Feed",selector:"#killFeed",setting:"showKills",display:"inline-grid",size:[240,120]},{key:"chat",name:"Chat",group:"Feed",selector:"#chatHolder",rule:"#uiBase.onGame #chatHolder",size:[386,248]},{key:"weapons",name:"Weapons",group:"Combat",selector:"#weapHolder",size:[127,203]},{key:"ammo",name:"Ammo",group:"Combat",selector:"#ammoHolder",size:[148,63]},{key:"perks",name:"Perks",group:"Combat",selector:"#perkHolder",size:[65,40]},{key:"krTag",name:"Deposit coins",group:"Combat",selector:"#krTagHolder",size:[71,65],note:"deposit"},{key:"giftTag",name:"Gift drops",group:"Combat",selector:"#giftTagHolder",size:[65,65]},{key:"powerUps",name:"Powerups",group:"Combat",selector:"#powerUpHolder",size:[65,65]},{key:"killStreak",name:"Kill streak",group:"Combat",selector:"#killStreakHolder",size:[65,65]},{key:"player",name:"Health and class",group:"Player",selector:"#bottomLeftPlayer",size:[376,90]},{key:"zPerks",name:"Class perks",group:"Player",selector:"#zPerksHolder",size:[65,40]},{key:"nuke",name:"Nuke counter",group:"Kute",selector:"#kuteNukeCounter",clientSetting:"nukeCounter",display:"flex",size:[90,56]},{key:"keystrokes",name:"Keystrokes",group:"Kute",selector:"#kuteKeystrokes",clientSetting:"keystrokes",display:"flex",size:[190,82]},{key:"spotify",name:"Spotify",group:"Kute",selector:"#kuteSpotifyOverlay",clientSetting:"spotifyOverlay",display:"flex",size:[320,82]},{key:"menuTimer",name:"Menu timer",group:"Kute",selector:"#uiBase.onMenu .spectateInfo",clientSetting:"menuTimer",size:[150,60],note:"menu",menu:(s,e)=>[s/2,e*.4-105]}]});var dl={};A(dl,{HudEditor:()=>nr,default:()=>Sk,implicitShift:()=>Hs});function Hs(s,e){if(s!=="spotify"||!u.settings.data.keystrokes)return 0;let t=e.spotify??{},o=e.keystrokes??{};if(t.x||t.y||o.x||o.y)return 0;let n=kk*(1+(o.s??1))/2,r=yk*(1-(t.s??1))/2;return Math.round(n+xk-r)}var wk,Xh,kk,yk,xk,nr,Sk,rr=w(()=>{"use strict";D();sr();Rt();zn();wk="kute_hudLayoutCSS",Xh="kute_hud_geometry",kk=190,yk=320,xk=12;nr=class{constructor(){this.style=null,this.open=!1,this.menuRects={},u.hudEditor={edit:()=>this.edit(),apply:()=>this.apply()},this.migrateNukeCounter(),this.apply(),Object.keys(this.measureMenuWidgets()).length===0&&setTimeout(()=>this.measureMenuWidgets(),3e3)}get layout(){return{...u.settings.data.hudLayout}}save(e){u.settings.data.hudLayout=e,window.chrome.webview.postMessage(`set-config-json hudLayout ${JSON.stringify(e)}`),this.apply()}migrateNukeCounter(){let e=u.settings.data.nukeCounterConfig;if(!e||e.x===void 0&&e.y===void 0&&e.scale===void 0)return;let{layout:t}=this;t.nuke??={x:Math.round(((e.x??94)-94)*100)/100,y:Math.round(((e.y??50)-50)*100)/100,s:e.scale??1};let o={goal:e.goal??0,background:e.background??!0};u.settings.data.nukeCounterConfig=o,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(o)}`),this.save(t)}apply(){let{layout:e}=this,t="";for(let o of Kt){let n=e[o.key]??{},r=(n.x??0)!==0||(n.y??0)!==0,i=(n.s??1)!==1,a=Hs(o.key,e);if(!r&&!i&&!a)continue;let l=[];r?l.push(`translate:${n.x??0}vw ${n.y??0}vh`):a&&l.push(`translate:${a}px 0`),i&&l.push(`scale:${n.s}`),t+=`${o.rule??o.selector}{${l.join(";")}}`}this.style||(this.style=document.createElement("style"),this.style.id=wk,document.head.append(this.style)),this.style.textContent=t}inMatch(){let e=document.querySelector("#inGameUI");return!!e&&window.getComputedStyle(e).display!=="none"}snapshot(){if(!this.inMatch())return null;let e=[];for(let i of Kt){if(i.menu)continue;let a=document.querySelector(i.selector);a&&e.push({def:i,element:a,visible:window.getComputedStyle(a).display!=="none"})}let t={vw:window.innerWidth,vh:window.innerHeight,factor:1,game:_t().id??"",rects:{}},o=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let{def:i,element:a,visible:l}of e){if(!l)continue;let c=a.getBoundingClientRect();c.width<=0||(t.rects[i.key]=[c.x,c.y,c.width,c.height,1],c.width>60&&a.offsetWidth>0&&(t.factor=c.width/a.offsetWidth))}let n=e.filter(({def:i})=>!t.rects[i.key]&&i.display);if(n.length>0){let i=document.createElement("style");i.textContent=n.map(({def:a})=>`${a.selector}{display:${a.display}!important}`).join(""),document.head.append(i);for(let{def:a,element:l}of n){let c=l.getBoundingClientRect();c.width>0&&(t.rects[a.key]=[c.x,c.y,c.width,c.height,0])}i.remove()}for(let{def:i,element:a}of e){if(t.rects[i.key])continue;let l=a.getBoundingClientRect();t.rects[i.key]=[l.x,l.y,l.width,l.height,0]}let r=this.menuRects[`${t.vw}x${t.vh}`]??{};for(let i of Kt){if(!i.menu)continue;if(r[i.key]){t.rects[i.key]=r[i.key];continue}let[a,l]=i.menu(t.vw,t.vh),[c,d]=i.size??[0,0];t.rects[i.key]=[a-c/2,l-d/2,c,d,1]}this.style&&(this.style.textContent=o);try{window.localStorage.setItem(Xh,JSON.stringify(t))}catch{}return t}geometry(){if(this.inMatch())return this.snapshot();let e=null;try{e=JSON.parse(window.localStorage.getItem(Xh)??"null")}catch{e=null}return!e?.rects||e.vw!==window.innerWidth||e.vh!==window.innerHeight?null:this.withMenuWidgets(e)}measureMenuWidgets(){let e={},t=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let o of Kt){if(!o.menu)continue;let n=document.querySelector(o.selector)?.getBoundingClientRect();n&&n.width>0&&(e[o.key]=[n.x,n.y,n.width,n.height,1])}return this.style&&(this.style.textContent=t),Object.keys(e).length>0&&(this.menuRects[`${window.innerWidth}x${window.innerHeight}`]=e),e}withMenuWidgets(e){return{...e,rects:{...e.rects,...this.measureMenuWidgets()}}}async edit(){if(this.open)return;if(this.inMatch()){this.show(this.snapshot());return}let e=this.geometry();if(e?.game&&e.game===_t().id){this.show(e);return}if(!await Ce({title:"Set up your HUD",paragraphs:["The editor places everything exactly where it sits in a match, so it needs a match to measure.","Kute opens a private one for you, nobody else can join it. If you are in a game right now, you leave it."],stay:"Not now",leave:"Open a private match"})||this.open)return;if(document.querySelector("#signedInHeaderBar")===null){u.showNotification?.("Log in first, a private match needs an account",!1,5);return}this.open=!0,u.showNotification?.("Opening a private match",!1,4);let o=await $s();if(!(o!==null&&await Cs(o))){this.open=!1,u.showNotification?.("Could not open a private match. Is a host slot free?",!1,6);return}await new Promise(r=>{setTimeout(r,1500)}),this.open=!1,this.show(this.snapshot()??this.geometry())}show(e){if(!e){u.showNotification?.("Could not measure the HUD, try again",!1,6);return}this.open=!0,Promise.resolve().then(()=>(pl(),ul)).then(t=>t.openEditor(this,e)).catch(t=>{this.open=!1,console.error("[kute] hud editor:",t)})}closed(){this.open=!1}},Sk=new nr});var ul={};A(ul,{openEditor:()=>Ek});async function Ek(s,e){document.pointerLockElement&&document.exitPointerLock(),await new Promise(y=>setTimeout(y,0));let{layout:t}=s,o=document.createElement("style");o.id="kute_hudEditorCSS",o.textContent=Gh,document.head.append(o),document.documentElement.classList.add("kuteHudEdit");let n=document.createElement("div");n.id="kuteHudEditor",document.body.append(n);let r=(y,C)=>{let[R,K,z,N,V]=C,de=!V||z<=0||N<=0,Z=z>window.innerWidth*.5,ge=N>window.innerHeight*.5,le=de?ir:z,Be=de?ir:N,Yt=R,xo=K;return!de&&Z&&(le=y.size?.[0]??ir,Yt=R+z/2-le/2),!de&&ge&&(Be=y.size?.[1]??ir,xo=K+N/2-Be/2),de&&R>window.innerWidth/2&&(Yt=R-le),de&&K>window.innerHeight/2&&(xo=K-Be),le=Math.min(le,window.innerWidth),Be=Math.min(Be,window.innerHeight),{x:ar(Yt,0,window.innerWidth-le),y:ar(xo,0,window.innerHeight-Be),w:le,h:Be,empty:de}},i=y=>{let C=y.filter(R=>!R.empty);for(let R of y)if(R.empty){for(let K=0;K<12;K++){let z=C.find(V=>R.xV.x&&R.yV.y);if(!z)break;R.y+R.h+2+R.h<=window.innerHeight?R.y=Math.min(z.y+z.h+2,window.innerHeight-R.h):R.x=ar(z.x+z.w+2,0,window.innerWidth-R.w)}C.push(R)}},a=[];for(let y of Kt){let C=e.rects[y.key];if(!C||y.clientSetting&&$o(u.settings.data,y.clientSetting))continue;let R=document.createElement("div");R.className="hudBox";let K=document.createElement("div");K.className="hudLabel",K.textContent=y.name,R.append(K),n.append(R),a.push({def:y,box:R,...r(y,C),drawn:null})}i(a);let l=!1;for(let y of a){y.w>60&&(l=!1);let C=l&&y.y+y.h+2060?!1:!l}let c=[];for(let y of["hudGuideV","hudGuideH"]){let C=document.createElement("div");C.className=`hudGuide ${y}`,C.style.display="none",n.append(C),c.push(C)}let d=y=>y.setting?cl(y.setting):y.clientSetting?u.settings.data[y.clientSetting]!==!1:!0,p=y=>t[y]??={},h=y=>{let C={...p(y)},R=Hs(y,t);return R&&(C.x=lr(R/window.innerWidth*100)),C},f=(y,C)=>[y/100*window.innerWidth*e.factor,C/100*window.innerHeight*e.factor],m=y=>{let C=t[y.def.key]??{},[R,K]=f(C.x??0,C.y??0),z=R+Hs(y.def.key,t)*e.factor,N=C.s??1,V=y.w*N,de=y.h*N,Z=y.x+y.w/2+z-V/2,ge=y.y+y.h/2+K-de/2;y.box.style.left=`${Math.round(Z)}px`,y.box.style.top=`${Math.round(ge)}px`,y.box.style.width=`${Math.round(V)}px`,y.box.style.height=`${Math.round(de)}px`,y.box.classList.toggle("hudOff",!d(y.def)),y.box.classList.toggle("hudEmpty",y.empty),y.drawn=new DOMRect(Z,ge,V,de)},g=()=>{for(let y of a)m(y)},b=()=>{u.settings.data.hudLayout=t,s.apply()},v=new Map,k=new Map,E=()=>{for(let y of a){let C=v.get(y.def.key);if(!C)continue;let R=t[y.def.key],K=R?.s??1,z=!!R&&((R.x??0)!==0||(R.y??0)!==0||K!==1);C.classList.toggle("hpChanged",z);let N=C.querySelector(".hpMoved");N&&(N.textContent=K===1?"":`${Math.round(K*100)}%`);let V=k.get(y.def.key);V&&(V.checked=d(y.def))}},L=null,x=(y,C)=>y.box.classList.toggle("hudActive",C||L===y),$=y=>{L=y;for(let C of a)C.box.classList.toggle("hudActive",C===y)},I=(y,C,R,K)=>{let z=p(y.def.key),N=e.factor||1;z.x=lr((K.x??0)+C/(window.innerWidth*N)*100),z.y=lr((K.y??0)+R/(window.innerHeight*N)*100),b()},_=(y,C,R,K)=>{let z=[0,window.innerWidth/2,window.innerWidth],N=[0,window.innerHeight/2,window.innerHeight];for(let Z of a)Z===y||!Z.drawn||(z.push(Z.drawn.left,Z.drawn.left+Z.drawn.width/2,Z.drawn.right),N.push(Z.drawn.top,Z.drawn.top+Z.drawn.height/2,Z.drawn.bottom));let V=null,de=null;for(let Z of[C.left+R,C.left+R+C.width/2,C.right+R])for(let ge of z){let le=ge-Z;Math.abs(le)<=Jh&&(V===null||Math.abs(le){z.preventDefault(),$(y),C.setPointerCapture(z.pointerId),C.classList.add("hudDragging"),R={x:z.clientX,y:z.clientY,rect:y.drawn??C.getBoundingClientRect(),from:h(y.def.key)}},C.onpointermove=z=>{if(!R||!C.hasPointerCapture(z.pointerId))return;let[N,V]=_(y,R.rect,z.clientX-R.x,z.clientY-R.y);I(y,N,V,R.from),g()};let K=()=>{R&&(R=null,C.classList.remove("hudDragging"),c[0].style.display="none",c[1].style.display="none",E())};C.onpointerup=K,C.onpointercancel=K,C.onwheel=z=>{z.preventDefault(),$(y);let N=p(y.def.key);N.s=lr(ar((N.s??1)+(z.deltaY<0?.05:-.05),.3,3)),b(),g(),E()}}let H=document.createElement("div");H.style.cssText="position:fixed;top:50%;left:50%;transform:translate(-50%, -50%)",n.append(H);let G=H.attachShadow({mode:"open"});G.innerHTML=Vh;let J=y=>G.querySelector(`#${y}`),B=(y,C)=>{if(y.setting)window.setSetting(y.setting,C);else if(y.clientSetting){let R=y.clientSetting;u.settings.data[R]=C,window.chrome.webview.postMessage(`set-config, ${R}, ${C}`);let K=`toggle${R.charAt(0).toUpperCase()}${R.slice(1)}`;typeof u.settings[K]=="function"&&u.settings[K](C);let z=document.querySelector(`#${R}`);z&&(z.checked=C)}g(),E()},re=J("hpList"),je="";for(let y of a){let{def:C}=y;if(C.group!==je){({group:je}=C);let V=document.createElement("div");V.className="hpGroup",V.textContent=je.toUpperCase(),re.append(V)}let R=document.createElement("label");R.className="hpRow";let K=document.createElement("span");if(K.className="hpName",K.textContent=C.name,C.note){let V=document.createElement("span");V.className="hpNote",V.textContent=` ${C.note}`,K.append(V)}let z=document.createElement("span");z.className="hpMoved";let N=document.createElement("span");if(N.className="hpReset",N.textContent="reset",N.title="Put it back where Krunker had it",N.onclick=V=>{V.preventDefault(),delete t[C.key],b(),g(),E()},R.append(K,z,N),C.setting||C.clientSetting){let V=document.createElement("input");V.type="checkbox",V.checked=d(C),V.onchange=()=>B(C,V.checked),R.append(V),k.set(C.key,V)}R.onpointerenter=()=>x(y,!0),R.onpointerleave=()=>x(y,!1),re.append(R),v.set(C.key,R)}let be=J("hpPanel"),Ee=J("hpHead"),j=null;Ee.onpointerdown=y=>{let C=H.getBoundingClientRect();H.style.cssText=`position:fixed;left:${Math.round(C.left)}px;top:${Math.round(C.top)}px`,Ee.setPointerCapture(y.pointerId),j={x:y.clientX-C.left,y:y.clientY-C.top},be.classList.add("hpBusy")},Ee.onpointermove=y=>{j&&(H.style.left=`${Math.round(y.clientX-j.x)}px`,H.style.top=`${Math.round(y.clientY-j.y)}px`)},Ee.onpointerup=()=>{j=null,be.classList.remove("hpBusy")};let X=new AbortController,Y=()=>{X.abort(),n.remove(),o.remove(),document.documentElement.classList.remove("kuteHudEdit"),s.save(t),s.closed()};J("hpDone").onclick=Y,window.addEventListener("resize",()=>{Y(),u.showNotification?.("The window changed size, open the HUD editor again",!1,5)},{signal:X.signal}),J("hpReset").onclick=()=>{for(let y of Object.keys(t))delete t[y];b(),g(),E()},document.addEventListener("keydown",y=>{if(y.key==="Escape"){y.preventDefault(),y.stopPropagation(),Y();return}if(!L||!y.key.startsWith("Arrow"))return;y.preventDefault(),y.stopPropagation();let C=y.shiftKey?10:1,R=(y.key==="ArrowRight"?C:0)-(y.key==="ArrowLeft"?C:0),K=(y.key==="ArrowDown"?C:0)-(y.key==="ArrowUp"?C:0);I(L,R,K,h(L.def.key)),g(),E()},{signal:X.signal,capture:!0}),g(),E()}var Jh,ir,ar,lr,pl=w(()=>{"use strict";Uh();Wh();D();sr();rr();Co();Jh=6,ir=24,ar=(s,e,t)=>Math.min(t,Math.max(e,s)),lr=s=>Math.round(s*100)/100});var tm={};function Mk(){document.querySelector("#settSearch")&&(window.closWind?.(Qh),window.showWindow?.(Qh))}var cr,Zh,em,$k,Ck,Qh,hl=w(()=>{"use strict";D();Ae();cr=document.createElement("div");cr.className="settName";cr.style.cssText="display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px 12px;margin-top:10px";Zh={Keybinds:localStorage.getItem("kute_Keybinds")==="true"||localStorage.getItem("kute_Keybinds")===null,Sensitivity:localStorage.getItem("kute_Sensitivity")==="true"||localStorage.getItem("kute_Sensitivity")===null,Sound:localStorage.getItem("kute_Sound")==="true"||localStorage.getItem("kute_Sound")===null},em="";for(let s in Zh)em+=`Import ${s} +`});var Vh,Wh=w(()=>{Vh='
      HUD Layout
      Boxes are where things sit in the match.
      Drag to move, wheel to resize, arrows nudge
      Reset all
      Done
      '});var Yh={};A(Yh,{HUD_ELEMENTS:()=>Kt,gameSettingOn:()=>cl});function cl(s){try{return window.localStorage.getItem(`kro_setngss_${s}`)!=="false"}catch{return!0}}var Kt,sr=w(()=>{"use strict";Kt=[{key:"timer",name:"Timer",group:"Match",selector:"#timerHolder",size:[188,77]},{key:"matchInfo",name:"Mode and map",group:"Match",selector:"#matchInfo",size:[110,50]},{key:"teamScores",name:"Team scores",group:"Match",selector:"#teamScores",display:"block",size:[220,40],note:"team modes"},{key:"rounds",name:"Rounds",group:"Match",selector:"#roundsDisplay",display:"inline-block",size:[200,60],note:"round based"},{key:"zoneCount",name:"Zone count",group:"Match",selector:"#scoreZoneCount",display:"inline-block",size:[57,43],note:"hardpoint"},{key:"lives",name:"Lives",group:"Match",selector:"#livesCount",display:"inline-block",size:[57,43],note:"LMS, infected"},{key:"gameMessage",name:"Match message",group:"Match",selector:"#gameMessage",size:[400,30]},{key:"roundMessage",name:"Round message",group:"Match",selector:"#roundMessage",size:[400,30]},{key:"challenge",name:"Challenge banner",group:"Match",selector:"#chalDisplay",size:[300,30]},{key:"fps",name:"FPS",group:"Stats",selector:"#fpsDisplay",setting:"showFPS",display:"block",size:[72,23]},{key:"ping",name:"Ping",group:"Stats",selector:"#pingDisplay",setting:"showPing",display:"block",size:[72,23]},{key:"kills",name:"Kills",group:"Stats",selector:"#killCount",setting:"showKillC",display:"inline-block",size:[57,43]},{key:"deaths",name:"Deaths",group:"Stats",selector:"#deathCount",setting:"showDeaths",display:"inline-block",size:[57,43]},{key:"streak",name:"Streak",group:"Stats",selector:"#streakCount",setting:"showStreak",display:"inline-block",size:[57,43]},{key:"kd",name:"K/D",group:"Stats",selector:"#kdCount",setting:"showKD",display:"inline-block",size:[77,43]},{key:"score",name:"Score",group:"Stats",selector:"#scoreCount",setting:"showScore",display:"inline-block",size:[57,43]},{key:"speedRun",name:"Parkour timer",group:"Stats",selector:"#speedRunHolder",display:"block",size:[200,60],note:"parkour"},{key:"leaderboard",name:"Leaderboard",group:"Feed",selector:"#leaderboardHolder",size:[327,54]},{key:"centerLeader",name:"Center leaderboard",group:"Feed",selector:"#centerLeaderDisplay",display:"block",size:[300,120],note:"comp"},{key:"killFeed",name:"Kill feed",group:"Feed",selector:"#killFeed",setting:"showKills",display:"inline-grid",size:[240,120]},{key:"chat",name:"Chat",group:"Feed",selector:"#chatHolder",rule:"#uiBase.onGame #chatHolder",size:[386,248]},{key:"weapons",name:"Weapons",group:"Combat",selector:"#weapHolder",size:[127,203]},{key:"ammo",name:"Ammo",group:"Combat",selector:"#ammoHolder",size:[148,63]},{key:"perks",name:"Perks",group:"Combat",selector:"#perkHolder",size:[65,40]},{key:"krTag",name:"Deposit coins",group:"Combat",selector:"#krTagHolder",size:[71,65],note:"deposit"},{key:"giftTag",name:"Gift drops",group:"Combat",selector:"#giftTagHolder",size:[65,65]},{key:"powerUps",name:"Powerups",group:"Combat",selector:"#powerUpHolder",size:[65,65]},{key:"killStreak",name:"Kill streak",group:"Combat",selector:"#killStreakHolder",size:[65,65]},{key:"player",name:"Health and class",group:"Player",selector:"#bottomLeftPlayer",size:[376,90]},{key:"zPerks",name:"Class perks",group:"Player",selector:"#zPerksHolder",size:[65,40]},{key:"nuke",name:"Nuke counter",group:"Kute",selector:"#kuteNukeCounter",clientSetting:"nukeCounter",display:"flex",size:[90,56]},{key:"keystrokes",name:"Keystrokes",group:"Kute",selector:"#kuteKeystrokes",clientSetting:"keystrokes",display:"flex",size:[190,82]},{key:"spotify",name:"Spotify",group:"Kute",selector:"#kuteSpotifyOverlay",clientSetting:"spotifyOverlay",display:"flex",size:[320,82]},{key:"menuTimer",name:"Menu timer",group:"Kute",selector:"#uiBase.onMenu .spectateInfo",clientSetting:"menuTimer",size:[150,60],note:"menu",menu:(s,e)=>[s/2,e*.4-105]}]});var dl={};A(dl,{HudEditor:()=>nr,default:()=>Sk,implicitShift:()=>Hs});function Hs(s,e){if(s!=="spotify"||!u.settings.data.keystrokes)return 0;let t=e.spotify??{},o=e.keystrokes??{};if(t.x||t.y||o.x||o.y)return 0;let n=kk*(1+(o.s??1))/2,r=yk*(1-(t.s??1))/2;return Math.round(n+xk-r)}var wk,Xh,kk,yk,xk,nr,Sk,rr=w(()=>{"use strict";D();sr();Rt();zn();wk="kute_hudLayoutCSS",Xh="kute_hud_geometry",kk=190,yk=320,xk=12;nr=class{constructor(){this.style=null,this.open=!1,this.menuRects={},u.hudEditor={edit:()=>this.edit(),apply:()=>this.apply()},this.migrateNukeCounter(),this.apply(),Object.keys(this.measureMenuWidgets()).length===0&&setTimeout(()=>this.measureMenuWidgets(),3e3)}get layout(){return{...u.settings.data.hudLayout}}save(e){u.settings.data.hudLayout=e,window.chrome.webview.postMessage(`set-config-json hudLayout ${JSON.stringify(e)}`),this.apply()}migrateNukeCounter(){let e=u.settings.data.nukeCounterConfig;if(!e||e.x===void 0&&e.y===void 0&&e.scale===void 0)return;let{layout:t}=this;t.nuke??={x:Math.round(((e.x??94)-94)*100)/100,y:Math.round(((e.y??50)-50)*100)/100,s:e.scale??1};let o={goal:e.goal??0,background:e.background??!0};u.settings.data.nukeCounterConfig=o,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(o)}`),this.save(t)}apply(){let{layout:e}=this,t="";for(let o of Kt){let n=e[o.key]??{},r=(n.x??0)!==0||(n.y??0)!==0,i=(n.s??1)!==1,a=Hs(o.key,e);if(!r&&!i&&!a)continue;let l=[];r?l.push(`translate:${n.x??0}vw ${n.y??0}vh`):a&&l.push(`translate:${a}px 0`),i&&l.push(`scale:${n.s}`),t+=`${o.rule??o.selector}{${l.join(";")}}`}this.style||(this.style=document.createElement("style"),this.style.id=wk,document.head.append(this.style)),this.style.textContent=t}inMatch(){let e=document.querySelector("#inGameUI");return!!e&&window.getComputedStyle(e).display!=="none"}snapshot(){if(!this.inMatch())return null;let e=[];for(let i of Kt){if(i.menu)continue;let a=document.querySelector(i.selector);a&&e.push({def:i,element:a,visible:window.getComputedStyle(a).display!=="none"})}let t={vw:window.innerWidth,vh:window.innerHeight,factor:1,game:_t().id??"",rects:{}},o=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let{def:i,element:a,visible:l}of e){if(!l)continue;let c=a.getBoundingClientRect();c.width<=0||(t.rects[i.key]=[c.x,c.y,c.width,c.height,1],c.width>60&&a.offsetWidth>0&&(t.factor=c.width/a.offsetWidth))}let n=e.filter(({def:i})=>!t.rects[i.key]&&i.display);if(n.length>0){let i=document.createElement("style");i.textContent=n.map(({def:a})=>`${a.selector}{display:${a.display}!important}`).join(""),document.head.append(i);for(let{def:a,element:l}of n){let c=l.getBoundingClientRect();c.width>0&&(t.rects[a.key]=[c.x,c.y,c.width,c.height,0])}i.remove()}for(let{def:i,element:a}of e){if(t.rects[i.key])continue;let l=a.getBoundingClientRect();t.rects[i.key]=[l.x,l.y,l.width,l.height,0]}let r=this.menuRects[`${t.vw}x${t.vh}`]??{};for(let i of Kt){if(!i.menu)continue;if(r[i.key]){t.rects[i.key]=r[i.key];continue}let[a,l]=i.menu(t.vw,t.vh),[c,d]=i.size??[0,0];t.rects[i.key]=[a-c/2,l-d/2,c,d,1]}this.style&&(this.style.textContent=o);try{window.localStorage.setItem(Xh,JSON.stringify(t))}catch{}return t}geometry(){if(this.inMatch())return this.snapshot();let e=null;try{e=JSON.parse(window.localStorage.getItem(Xh)??"null")}catch{e=null}return!e?.rects||e.vw!==window.innerWidth||e.vh!==window.innerHeight?null:this.withMenuWidgets(e)}measureMenuWidgets(){let e={},t=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let o of Kt){if(!o.menu)continue;let n=document.querySelector(o.selector)?.getBoundingClientRect();n&&n.width>0&&(e[o.key]=[n.x,n.y,n.width,n.height,1])}return this.style&&(this.style.textContent=t),Object.keys(e).length>0&&(this.menuRects[`${window.innerWidth}x${window.innerHeight}`]=e),e}withMenuWidgets(e){return{...e,rects:{...e.rects,...this.measureMenuWidgets()}}}async edit(){if(this.open)return;if(this.inMatch()){this.show(this.snapshot());return}let e=this.geometry();if(e?.game&&e.game===_t().id){this.show(e);return}if(!await Ce({title:"Set up your HUD",paragraphs:["The editor places everything exactly where it sits in a match, so it needs a match to measure.","Kute opens a private one for you, nobody else can join it. If you are in a game right now, you leave it."],stay:"Not now",leave:"Open a private match"})||this.open)return;if(document.querySelector("#signedInHeaderBar")===null){u.showNotification?.("Log in first, a private match needs an account",!1,5);return}this.open=!0,u.showNotification?.("Opening a private match",!1,4);let o=await $s();if(!(o!==null&&await Cs(o))){this.open=!1,u.showNotification?.("Could not open a private match. Is a host slot free?",!1,6);return}await new Promise(r=>{setTimeout(r,1500)}),this.open=!1,this.show(this.snapshot()??this.geometry())}show(e){if(!e){u.showNotification?.("Could not measure the HUD, try again",!1,6);return}this.open=!0,Promise.resolve().then(()=>(pl(),ul)).then(t=>t.openEditor(this,e)).catch(t=>{this.open=!1,console.error("[kute] hud editor:",t)})}closed(){this.open=!1}},Sk=new nr});var ul={};A(ul,{openEditor:()=>Ek});async function Ek(s,e){document.pointerLockElement&&document.exitPointerLock(),await new Promise(y=>setTimeout(y,0));let{layout:t}=s,o=document.createElement("style");o.id="kute_hudEditorCSS",o.textContent=Gh,document.head.append(o),document.documentElement.classList.add("kuteHudEdit");let n=document.createElement("div");n.id="kuteHudEditor",document.body.append(n);let r=(y,C)=>{let[R,K,z,N,V]=C,de=!V||z<=0||N<=0,Z=z>window.innerWidth*.5,ge=N>window.innerHeight*.5,le=de?ir:z,Be=de?ir:N,Yt=R,xo=K;return!de&&Z&&(le=y.size?.[0]??ir,Yt=R+z/2-le/2),!de&&ge&&(Be=y.size?.[1]??ir,xo=K+N/2-Be/2),de&&R>window.innerWidth/2&&(Yt=R-le),de&&K>window.innerHeight/2&&(xo=K-Be),le=Math.min(le,window.innerWidth),Be=Math.min(Be,window.innerHeight),{x:ar(Yt,0,window.innerWidth-le),y:ar(xo,0,window.innerHeight-Be),w:le,h:Be,empty:de}},i=y=>{let C=y.filter(R=>!R.empty);for(let R of y)if(R.empty){for(let K=0;K<12;K++){let z=C.find(V=>R.xV.x&&R.yV.y);if(!z)break;R.y+R.h+2+R.h<=window.innerHeight?R.y=Math.min(z.y+z.h+2,window.innerHeight-R.h):R.x=ar(z.x+z.w+2,0,window.innerWidth-R.w)}C.push(R)}},a=[];for(let y of Kt){let C=e.rects[y.key];if(!C||y.clientSetting&&$o(u.settings.data,y.clientSetting))continue;let R=document.createElement("div");R.className="hudBox";let K=document.createElement("div");K.className="hudLabel",K.textContent=y.name,R.append(K),n.append(R),a.push({def:y,box:R,...r(y,C),drawn:null})}i(a);let l=!1;for(let y of a){y.w>60&&(l=!1);let C=l&&y.y+y.h+2060?!1:!l}let c=[];for(let y of["hudGuideV","hudGuideH"]){let C=document.createElement("div");C.className=`hudGuide ${y}`,C.style.display="none",n.append(C),c.push(C)}let d=y=>y.setting?cl(y.setting):y.clientSetting?u.settings.data[y.clientSetting]!==!1:!0,h=y=>t[y]??={},p=y=>{let C={...h(y)},R=Hs(y,t);return R&&(C.x=lr(R/window.innerWidth*100)),C},m=(y,C)=>[y/100*window.innerWidth*e.factor,C/100*window.innerHeight*e.factor],f=y=>{let C=t[y.def.key]??{},[R,K]=m(C.x??0,C.y??0),z=R+Hs(y.def.key,t)*e.factor,N=C.s??1,V=y.w*N,de=y.h*N,Z=y.x+y.w/2+z-V/2,ge=y.y+y.h/2+K-de/2;y.box.style.left=`${Math.round(Z)}px`,y.box.style.top=`${Math.round(ge)}px`,y.box.style.width=`${Math.round(V)}px`,y.box.style.height=`${Math.round(de)}px`,y.box.classList.toggle("hudOff",!d(y.def)),y.box.classList.toggle("hudEmpty",y.empty),y.drawn=new DOMRect(Z,ge,V,de)},g=()=>{for(let y of a)f(y)},b=()=>{u.settings.data.hudLayout=t,s.apply()},v=new Map,k=new Map,E=()=>{for(let y of a){let C=v.get(y.def.key);if(!C)continue;let R=t[y.def.key],K=R?.s??1,z=!!R&&((R.x??0)!==0||(R.y??0)!==0||K!==1);C.classList.toggle("hpChanged",z);let N=C.querySelector(".hpMoved");N&&(N.textContent=K===1?"":`${Math.round(K*100)}%`);let V=k.get(y.def.key);V&&(V.checked=d(y.def))}},L=null,x=(y,C)=>y.box.classList.toggle("hudActive",C||L===y),$=y=>{L=y;for(let C of a)C.box.classList.toggle("hudActive",C===y)},I=(y,C,R,K)=>{let z=h(y.def.key),N=e.factor||1;z.x=lr((K.x??0)+C/(window.innerWidth*N)*100),z.y=lr((K.y??0)+R/(window.innerHeight*N)*100),b()},_=(y,C,R,K)=>{let z=[0,window.innerWidth/2,window.innerWidth],N=[0,window.innerHeight/2,window.innerHeight];for(let Z of a)Z===y||!Z.drawn||(z.push(Z.drawn.left,Z.drawn.left+Z.drawn.width/2,Z.drawn.right),N.push(Z.drawn.top,Z.drawn.top+Z.drawn.height/2,Z.drawn.bottom));let V=null,de=null;for(let Z of[C.left+R,C.left+R+C.width/2,C.right+R])for(let ge of z){let le=ge-Z;Math.abs(le)<=Jh&&(V===null||Math.abs(le){z.preventDefault(),$(y),C.setPointerCapture(z.pointerId),C.classList.add("hudDragging"),R={x:z.clientX,y:z.clientY,rect:y.drawn??C.getBoundingClientRect(),from:p(y.def.key)}},C.onpointermove=z=>{if(!R||!C.hasPointerCapture(z.pointerId))return;let[N,V]=_(y,R.rect,z.clientX-R.x,z.clientY-R.y);I(y,N,V,R.from),g()};let K=()=>{R&&(R=null,C.classList.remove("hudDragging"),c[0].style.display="none",c[1].style.display="none",E())};C.onpointerup=K,C.onpointercancel=K,C.onwheel=z=>{z.preventDefault(),$(y);let N=h(y.def.key);N.s=lr(ar((N.s??1)+(z.deltaY<0?.05:-.05),.3,3)),b(),g(),E()}}let H=document.createElement("div");H.style.cssText="position:fixed;top:50%;left:50%;transform:translate(-50%, -50%)",n.append(H);let G=H.attachShadow({mode:"open"});G.innerHTML=Vh;let J=y=>G.querySelector(`#${y}`),B=(y,C)=>{if(y.setting)window.setSetting(y.setting,C);else if(y.clientSetting){let R=y.clientSetting;u.settings.data[R]=C,window.chrome.webview.postMessage(`set-config, ${R}, ${C}`);let K=`toggle${R.charAt(0).toUpperCase()}${R.slice(1)}`;typeof u.settings[K]=="function"&&u.settings[K](C);let z=document.querySelector(`#${R}`);z&&(z.checked=C)}g(),E()},re=J("hpList"),je="";for(let y of a){let{def:C}=y;if(C.group!==je){({group:je}=C);let V=document.createElement("div");V.className="hpGroup",V.textContent=je.toUpperCase(),re.append(V)}let R=document.createElement("label");R.className="hpRow";let K=document.createElement("span");if(K.className="hpName",K.textContent=C.name,C.note){let V=document.createElement("span");V.className="hpNote",V.textContent=` ${C.note}`,K.append(V)}let z=document.createElement("span");z.className="hpMoved";let N=document.createElement("span");if(N.className="hpReset",N.textContent="reset",N.title="Put it back where Krunker had it",N.onclick=V=>{V.preventDefault(),delete t[C.key],b(),g(),E()},R.append(K,z,N),C.setting||C.clientSetting){let V=document.createElement("input");V.type="checkbox",V.checked=d(C),V.onchange=()=>B(C,V.checked),R.append(V),k.set(C.key,V)}R.onpointerenter=()=>x(y,!0),R.onpointerleave=()=>x(y,!1),re.append(R),v.set(C.key,R)}let be=J("hpPanel"),Ee=J("hpHead"),j=null;Ee.onpointerdown=y=>{let C=H.getBoundingClientRect();H.style.cssText=`position:fixed;left:${Math.round(C.left)}px;top:${Math.round(C.top)}px`,Ee.setPointerCapture(y.pointerId),j={x:y.clientX-C.left,y:y.clientY-C.top},be.classList.add("hpBusy")},Ee.onpointermove=y=>{j&&(H.style.left=`${Math.round(y.clientX-j.x)}px`,H.style.top=`${Math.round(y.clientY-j.y)}px`)},Ee.onpointerup=()=>{j=null,be.classList.remove("hpBusy")};let X=new AbortController,Y=()=>{X.abort(),n.remove(),o.remove(),document.documentElement.classList.remove("kuteHudEdit"),s.save(t),s.closed()};J("hpDone").onclick=Y,window.addEventListener("resize",()=>{Y(),u.showNotification?.("The window changed size, open the HUD editor again",!1,5)},{signal:X.signal}),J("hpReset").onclick=()=>{for(let y of Object.keys(t))delete t[y];b(),g(),E()},document.addEventListener("keydown",y=>{if(y.key==="Escape"){y.preventDefault(),y.stopPropagation(),Y();return}if(!L||!y.key.startsWith("Arrow"))return;y.preventDefault(),y.stopPropagation();let C=y.shiftKey?10:1,R=(y.key==="ArrowRight"?C:0)-(y.key==="ArrowLeft"?C:0),K=(y.key==="ArrowDown"?C:0)-(y.key==="ArrowUp"?C:0);I(L,R,K,p(L.def.key)),g(),E()},{signal:X.signal,capture:!0}),g(),E()}var Jh,ir,ar,lr,pl=w(()=>{"use strict";Uh();Wh();D();sr();rr();Co();Jh=6,ir=24,ar=(s,e,t)=>Math.min(t,Math.max(e,s)),lr=s=>Math.round(s*100)/100});var tm={};function Mk(){document.querySelector("#settSearch")&&(window.closWind?.(Qh),window.showWindow?.(Qh))}var cr,Zh,em,$k,Ck,Qh,hl=w(()=>{"use strict";D();Ae();cr=document.createElement("div");cr.className="settName";cr.style.cssText="display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px 12px;margin-top:10px";Zh={Keybinds:localStorage.getItem("kute_Keybinds")==="true"||localStorage.getItem("kute_Keybinds")===null,Sensitivity:localStorage.getItem("kute_Sensitivity")==="true"||localStorage.getItem("kute_Sensitivity")===null,Sound:localStorage.getItem("kute_Sound")==="true"||localStorage.getItem("kute_Sound")===null},em="";for(let s in Zh)em+=`Import ${s} `;cr.innerHTML=em;$k=window.importSettingsPopup,Ck=window.importSettings,Qh=1;window.importSettingsPopup=()=>{$k(),queueMicrotask(()=>{U("#importTxt").after(cr)})};window.importSettings=()=>{let s=U("#importTxt"),e=JSON.parse(s.value);localStorage.getItem("kute_Sensitivity")==="false"&&(e.sensitivityX=localStorage.getItem("kro_setngss_sensitivityX"),e.sensitivityY=localStorage.getItem("kro_setngss_sensitivityY"),e.aimSensitivityX=localStorage.getItem("kro_setngss_aimSensitivityX"),e.aimSensitivityY=localStorage.getItem("kro_setngss_aimSensitivityY")),localStorage.getItem("kute_Sound")==="false"&&(e.sound=localStorage.getItem("kro_setngss_sound"),e.ambientVolume=localStorage.getItem("kro_setngss_ambientVolume"),e.dialogueVolume=localStorage.getItem("kro_setngss_dialogueVolume"),e.micVolume=localStorage.getItem("kro_setngss_micVolume"),e.voiceVolume=localStorage.getItem("kro_setngss_voiceVolume"),e.voiceDistance=localStorage.getItem("kro_setngss_voiceDistance"),e.gunsVolume=localStorage.getItem("kro_setngss_gunsVolume"),e.playerVolume=localStorage.getItem("kro_setngss_playerVolume"),e.skinVolume=localStorage.getItem("kro_setngss_skinVolume"),e.uiVolume=localStorage.getItem("kro_setngss_uiVolume"),e.assetVolume=localStorage.getItem("kro_setngss_assetVolume")),localStorage.getItem("kute_Keybinds")==="false"&&delete e.controls,s.value=JSON.stringify(e),Ck(),u.bindShoot(),Mk(),u.kuteIcons?.refresh(),u.autoDetect?.dropUndo(),u.autoDetect?.afterImport()}});var fl={};A(fl,{default:()=>Rk});function Ak(s){let e=s.nextElementSibling;return e instanceof HTMLElement&&e.matches(".market-grid-sentinel")?e:null}async function om(s){for(let e=0;e{"use strict";Tk=".view-stack-overlay, .modal-overlay";Lk=()=>new Promise(s=>{requestAnimationFrame(()=>s())});ml=class{constructor(){this.watched=new WeakSet,this.popupClickAt=-1/0,this.lastTop=0,this.lastHeight=0,this.restore=null,this.onWheel=()=>this.finish(!1),document.addEventListener("scroll",e=>this.onScroll(e),{capture:!0,passive:!0}),document.addEventListener("click",e=>{e.target instanceof Element&&e.target.closest(Tk)&&(this.popupClickAt=performance.now())},{capture:!0,passive:!0})}onScroll(e){let t=e.target;if(!(t instanceof HTMLElement))return;if(this.restore){t===this.restore.scroller&&t.scrollTop!==this.restore.top&&(t.scrollTop=this.restore.top);return}let o=t.querySelector(":scope > .market-grid");o instanceof HTMLElement&&(this.watch(t,o),this.lastTop=t.scrollTop,this.lastHeight=o.offsetHeight)}watch(e,t){if(this.watched.has(t))return;this.watched.add(t);let o=t.children.length;new MutationObserver(n=>{let r=n.reduce((l,c)=>l+c.removedNodes.length,0),i=o;if(o=t.children.length,this.restore?.grid===t){o>i&&this.pageArrived();return}i>0&&r>=i&&this.lastTop>e.clientHeight&&performance.now()-this.popupClickAt<5e3&&this.start(e,t,i,n.flatMap(l=>[...l.removedNodes]))}).observe(t,{childList:!0})}start(e,t,o,n){let r=document.createElement("div");r.className=t.className,r.style.cssText=t.style.cssText,r.append(...n),this.restore={scroller:e,grid:t,sentinels:new Set,top:this.lastTop,count:o,until:performance.now()+1e4,pageTimer:0,picture:r},t.style.minHeight=`${this.lastHeight}px`,t.style.alignContent="start",Object.assign(r.style,{position:"absolute",top:`${t.offsetTop}px`,left:`${t.offsetLeft}px`,width:`${t.offsetWidth}px`,margin:"0",zIndex:"1",pointerEvents:"none"}),e.append(r),e.style.overflowAnchor="none",e.scrollTop=this.lastTop,e.addEventListener("wheel",this.onWheel,{passive:!0}),this.waitForPage(),this.blink(this.restore).catch(i=>console.error("[kute] inventory scroll:",i))}pageArrived(){let{restore:e}=this;e&&(e.grid.children.length>=e.count-1||performance.now()>e.until?this.finish(!0):this.waitForPage())}waitForPage(){let{restore:e}=this;e&&(clearTimeout(e.pageTimer),e.pageTimer=window.setTimeout(()=>this.finish(!0),1500))}async blink(e){for(;this.restore===e;){let t=Ak(e.grid);t&&(e.sentinels.add(t),t.style.position="sticky",t.style.bottom="0",t.style.display="none",await om(2),t.style.display=""),await om(2)}}finish(e){let{restore:t}=this;if(t){this.restore=null,clearTimeout(t.pageTimer),t.scroller.removeEventListener("wheel",this.onWheel),t.picture.remove(),t.grid.style.minHeight="",t.grid.style.alignContent="",t.scroller.style.overflowAnchor="";for(let o of t.sentinels)o.style.position="",o.style.bottom="",o.style.display="";e&&(t.scroller.scrollTop=t.top),this.lastTop=t.scroller.scrollTop,this.lastHeight=t.grid.offsetHeight}}},Rk=new ml});var nm,sm=w(()=>{nm=`#kuteKeystrokes{position:absolute;left:463px;bottom:23px;z-index:10;display:flex;align-items:center;gap:12px;box-sizing:border-box;width:190px;height:82px;padding:5px 10px;border:1px solid rgba(53,224,232,.7);border-radius:8px;background:#0a1416e0;box-shadow:0 4px 18px #00000059;color:#cfeff1;font-family:Arial,sans-serif;font-weight:700;pointer-events:none}#kuteKeystrokesKeys{display:grid;grid-template-columns:repeat(4,24px);grid-template-rows:repeat(3,20px);gap:4px}.kuteKey{display:flex;justify-content:center;align-items:center;overflow:hidden;border:1px solid rgba(53,224,232,.35);border-radius:4px;background:#35e0e814;font-size:10px;white-space:nowrap}.kuteKey.on,#kuteMouse>.on,#kuteWheel>.on{border-color:#35e0e8;background:#35e0e8;color:#0a1416;box-shadow:0 0 8px #35e0e8cc}#kuteKeyMelee{grid-area:1 / 1}#kuteKeyForward{grid-area:1 / 2}#kuteKeySwap{grid-area:1 / 3}#kuteKeyReload{grid-area:1 / 4}#kuteKeyLeft{grid-area:2 / 1}#kuteKeyBack{grid-area:2 / 2}#kuteKeyRight{grid-area:2 / 3}#kuteKeyCrouch{grid-area:3 / 1 / 4 / 3}#kuteKeyJump{grid-area:3 / 3 / 4 / 5}#kuteMouseBox{position:relative;padding:5px}.kuteMove{--arc: rgba(53, 224, 232, .14);position:absolute;inset:0;box-sizing:border-box;border:2px solid transparent;border-radius:24px 24px 19px 19px}.kuteMove.on{--arc: rgba(53, 224, 232, .6)}.kuteMove.fast{--arc: #35e0e8}#kuteMoveLeft{border-left-color:var(--arc)}#kuteMoveRight{border-right-color:var(--arc)}#kuteMoveUp{border-top-color:var(--arc)}#kuteMoveDown{border-bottom-color:var(--arc)}#kuteMouse{position:relative;width:38px;height:58px;box-sizing:border-box;border:1px solid rgba(53,224,232,.35);border-radius:19px 19px 14px 14px;overflow:hidden}#kuteMouseLeft,#kuteMouseRight{position:absolute;top:0;width:50%;height:45%;border-bottom:1px solid rgba(53,224,232,.35);box-sizing:border-box;background:#35e0e814}#kuteMouseLeft{left:0}#kuteMouseRight{right:0}#kuteMouseSplit{position:absolute;top:0;left:calc(50% - .5px);width:1px;height:45%;background:#35e0e859}#kuteWheel{position:absolute;top:6px;left:50%;z-index:1;display:flex;flex-direction:column;box-sizing:border-box;width:10px;height:18px;margin-left:-5px;overflow:hidden;border:1px solid rgba(53,224,232,.5);border-radius:5px;background:#0a1416}#kuteWheel.on{border-color:#35e0e8;background:#35e0e8;box-shadow:0 0 8px #35e0e8cc}#kuteWheelUp,#kuteWheelDown{flex:1 1 0}#kuteWheelUp{border-bottom:1px solid rgba(53,224,232,.35)} -`});var im,rm=w(()=>{im='
      '});var kl={};A(kl,{default:()=>Kk});function pm(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`N${s-96}`:s>=112&&s<=123?`F${s-111}`:Fk[s]??"?"}function qk(s,e){let t=[],o=[[`cont_${s}_alt`,-1],[`cont_${s}`,e]];for(let[n,r]of o){let i=null;try{i=window.localStorage.getItem(n)}catch{i=null}let a=i===null?r:Number(i);a>0&&a<1e4&&t.push(a)}return t}var Nk,_k,am,lm,bl,Bk,zk,vl,cm,dm,Hk,um,Ok,Dk,Fk,wl,Kk,yl=w(()=>{"use strict";sm();rm();D();Nk=131,_k=120,am=32,lm=80,bl=.02,Bk=.35,zk=20,vl=80,cm=3,dm=3e3,Hk=3,um="kute_keystrokes_speed",Ok=120,Dk=[["kuteKeyForward","0",87],["kuteKeyBack","1",83],["kuteKeyLeft","2",65],["kuteKeyRight","3",68],["kuteKeyJump","jumpKey",32],["kuteKeyCrouch","crouchKey",16],["kuteKeyReload","reloadKey",82],["kuteKeyMelee","meleeKey",81],["kuteKeySwap","swapKey",69]],Fk={8:"BKSP",9:"TAB",13:"ENT",16:"SHIFT",17:"CTRL",18:"ALT",20:"CAPS",32:"SPACE",37:"\u2190",38:"\u2191",39:"\u2192",40:"\u2193",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"};wl=class{constructor(){this.widget=null,this.byCode=new Map,this.wheelTimers=new Map,this.rampWheelAt=-1/0,this.spaceDownAt=-1/0,this.spaceIgnored=!1,this.arcs=[],this.moveX=0,this.moveY=0,this.lastMove=-1/0,this.moveTimer=0,this.typical=Hk,this.typicalMs=0,this.fastUntil=[0,0,0,0],this.onKeyDown=e=>this.key(e.keyCode,!0),this.onKeyUp=e=>this.key(e.keyCode,!1),this.onMouseDown=e=>this.button(e.button,!0),this.onMouseUp=e=>this.button(e.button,!1),this.onWheel=e=>this.wheel(e.deltaY<0),this.onMouseMove=e=>this.move(e),this.onMoveIdle=()=>{this.moveTimer=0;let e=performance.now()-this.lastMove;if(e{let{data:t}=e;typeof t?.wheel=="number"&&t.wheel!==0?this.wheel(t.wheel>0):typeof t?.rampWheel=="number"&&t.rampWheel!==0&&this.rampWheel(t.rampWheel>0)},this.releaseAll=()=>{for(let e of this.widget?.querySelectorAll(".on")??[])e.classList.remove("on");this.moveX=0,this.moveY=0,this.fastUntil.fill(0),this.drawMove()},this.onPointerLockChange=()=>{if(document.pointerLockElement){this.readBinds();return}this.releaseAll();try{window.localStorage.setItem(um,this.typical.toFixed(3))}catch{}},u.settings.toggleKeystrokes=e=>this.toggle(e),this.toggle(!!u.settings.data.keystrokes)}toggle(e){if(queueMicrotask(()=>u.hudEditor?.apply()),!e){this.remove();return}if(this.widget)return;let t=document.createElement("style");t.id="kuteKeystrokesCSS",t.textContent=nm,document.head.append(t),this.widget=document.createElement("div"),this.widget.id="kuteKeystrokes",this.widget.innerHTML=im,(document.querySelector("#uiBase")??document.body).append(this.widget),this.readBinds(),this.loadTypical();let{widget:o}=this,n=[["kuteMoveLeft",-1,0],["kuteMoveRight",1,0],["kuteMoveUp",0,-1],["kuteMoveDown",0,1]];this.arcs=n.map(([r,i,a])=>[o.querySelector(`#${r}`),i,a]),window.addEventListener("keydown",this.onKeyDown,!0),window.addEventListener("keyup",this.onKeyUp,!0),window.addEventListener("mousedown",this.onMouseDown,!0),window.addEventListener("mouseup",this.onMouseUp,!0),window.addEventListener("mousemove",this.onMouseMove,{capture:!0,passive:!0}),window.addEventListener("wheel",this.onWheel,{capture:!0,passive:!0}),window.addEventListener("blur",this.releaseAll),document.addEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.addEventListener("message",this.onHostMessage)}remove(){window.removeEventListener("keydown",this.onKeyDown,!0),window.removeEventListener("keyup",this.onKeyUp,!0),window.removeEventListener("mousedown",this.onMouseDown,!0),window.removeEventListener("mouseup",this.onMouseUp,!0),window.removeEventListener("mousemove",this.onMouseMove,!0),window.removeEventListener("wheel",this.onWheel,!0),window.removeEventListener("blur",this.releaseAll),document.removeEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.removeEventListener("message",this.onHostMessage);for(let e of this.wheelTimers.values())clearTimeout(e);this.wheelTimers.clear(),clearTimeout(this.moveTimer),this.moveTimer=0,this.arcs=[],this.widget?.remove(),this.widget=null,this.byCode.clear(),document.querySelector("#kuteKeystrokesCSS")?.remove()}readBinds(){if(this.widget){this.byCode.clear();for(let[e,t,o]of Dk){let n=this.widget.querySelector(`#${e}`);if(!n)continue;let r=qk(t,o);n.textContent=r.length>0?pm(r[0]):"",n.title=r.map(pm).join(" / ");for(let i of r){let a=this.byCode.get(i)??[];a.push(n),this.byCode.set(i,a)}}}}key(e,t){if(e===Nk){this.button(0,t);return}if(e===am){t&&(this.spaceDownAt=performance.now(),this.spaceIgnored=this.spaceDownAt-this.rampWheelAt=100,n=Math.min(t-this.lastMove,100);if(this.lastMove=t,!(n>0))return;let r=Math.exp(-n/zk);this.moveX=this.moveX*r+e.movementX/n*(1-r),this.moveY=this.moveY*r+e.movementY/n*(1-r);let i=Math.hypot(this.moveX,this.moveY);!o&&i>bl&&(this.typicalMs=Math.min(this.typicalMs+n,dm),this.typical+=(Math.min(i,this.typical*cm)-this.typical)*(n/this.typicalMs)),this.drawMove(t),this.moveTimer||(this.moveTimer=window.setTimeout(this.onMoveIdle,vl))}loadTypical(){let e=NaN;try{e=Number(window.localStorage.getItem(um))}catch{e=NaN}e>0&&(this.typical=e,this.typicalMs=dm)}drawMove(e=performance.now()){let t=Math.hypot(this.moveX,this.moveY),o=Math.max(this.typical,bl)*cm;this.arcs.forEach(([n,r,i],a)=>{let l=this.moveX*r+this.moveY*i;l>o&&(this.fastUntil[a]=e+Ok);let c="kuteMove";this.fastUntil[a]>e?c="kuteMove on fast":t>bl&&l>=t*Bk&&(c="kuteMove on"),n.className!==c&&(n.className=c)})}rampWheel(e){if(this.rampWheelAt=performance.now(),this.rampWheelAt-this.spaceDownAt{this.widget?.querySelector(`#${t}`)?.classList.remove("on"),this.wheelTimers.delete(t)},_k))}},Kk=new wl});var mm,hm=w(()=>{mm='

      Kute Icons

      Tick all
      Done
      '});var El={};A(El,{default:()=>Gk});function km(){let s=u.settings.data[xl];return s&&typeof s=="object"?s:{}}function fm(){return u.hostFeatures?.includes("kute-icons")??!1}function gm(s){return km()[s.id]!==!1}function bm(s){return s.hiddenBy.filter(e=>{let t=null;try{t=localStorage.getItem(`kro_setngss_${e.id}`)}catch{return!1}return t===null?!1:e.kind==="checkbox"?t==="false":Number(t)===0})}function vm(s){return s.kind==="checkbox"?`${s.name} is off`:`${s.name} is 0`}async function wm(s){await Ce({title:"Reload the game?",paragraphs:[s,"The game keeps the images it already loaded, so this shows after a reload. Nothing else changes, and you can do it later."],stay:"Later",leave:"Reload now"})&&window.chrome.webview.postMessage("hard-reload")}var Uk,xl,Sl,Gk,$l=w(()=>{"use strict";hm();D();Rt();bn();Uk="https://krunker.io/kute-icons/",xl="kuteIconSlots";Sl=class{constructor(){this.asking=!1,this.watched=new WeakSet,u.kuteIcons={customize:()=>this.customize(),refresh:()=>this.refresh()},u.settings.toggleKuteIcons=e=>this.onToggle(!!e),this.refresh(),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&setTimeout(()=>this.refresh(),1500)})}refresh(){for(let e of Mo){let t=e.element?document.getElementById(e.element):null;!t||this.watched.has(t)||(this.watched.add(t),new MutationObserver(()=>Qt()).observe(t,{attributes:!0,attributeFilter:["src"]}))}Qt()}async onToggle(e){if(Qt(),!fm()){e&&u.showNotification("Kute icons need a newer Kute, update the client",!1,4);return}e&&await this.warnHidden(Mo.filter(gm)),await wm(e?"Kute icons are on.":"Kute icons are off, your own icons are back.")}async warnHidden(e){let t=new Map,o=[];for(let r of e){let i=bm(r);if(i.length!==0){for(let a of i)t.set(a.id,a);o.push(`${r.name}: ${i.map(a=>vm(a)).join(", ")}`)}}if(o.length===0||(this.asking=!0,!await Ce({title:"Hidden by your Krunker settings",paragraphs:[o.length===1?"This Kute icon will not show:":"These Kute icons will not show:",...o,"Switch those Krunker settings on for you?"],stay:"Leave them",leave:"Switch on"}).finally(()=>{this.asking=!1})))return!1;for(let r of t.values())window.setSetting(r.id,r.kind==="checkbox"?!0:"1");return u.showNotification("Switched on in your Krunker settings",!1,3),!0}customize(){let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=mm;let n=m=>o.querySelector(`#${m}`),r=fm(),i=u.settings.data.kuteIcons===!0,a="Ticked icons show Kute's version. Your Krunker settings stay as they are.";i||(a="Use Kute Icons is off, so none of these show yet."),r||(a="This needs a newer Kute. Update the client to use Kute icons."),n("kiHint").textContent=a;let l=!1,c=[],d=()=>{for(let{slot:m,box:g,note:b}of c){let v=g.checked?bm(m):[];if(b.replaceChildren(),v.length===0)continue;b.append(`Hidden: ${v.map(E=>vm(E)).join(", ")} `);let k=document.createElement("span");k.className="kiShow",k.textContent="Show it",k.onclick=async E=>{E.preventDefault(),E.stopPropagation(),await this.warnHidden([m]),d()},b.append(k)}},p=(m,g)=>{l=!0;let b={...km(),[m.id]:g};u.settings.data[xl]=b,window.chrome.webview.postMessage(`set-config-json ${xl} ${JSON.stringify(b)}`)};for(let m of Mo){let g=document.createElement("label");g.className="kiRow";let b=document.createElement("img");b.src=Uk+m.file,b.alt="";let v=document.createElement("span");v.textContent=m.name;let k=document.createElement("span");k.className="kiHidden",v.append(k);let E=document.createElement("input");E.type="checkbox",E.checked=gm(m),E.onchange=async()=>{p(m,E.checked),E.checked&&await this.warnHidden([m]),d()},g.append(b,v,E),n("kiRows").append(g),c.push({slot:m,box:E,note:k})}d(),n("kiAll").onclick=async()=>{let m=c.filter(({box:g})=>!g.checked);for(let{slot:g,box:b}of m)b.checked=!0,p(g,!0);await this.warnHidden(m.map(({slot:g})=>g)),d()};let h=new AbortController,f=()=>{h.abort(),e.remove(),l&&r&&u.settings.data.kuteIcons===!0&&wm("Your Kute icons changed.")};n("kiDone").onclick=f,e.addEventListener("mousedown",m=>{m.target===e&&f()}),document.addEventListener("keydown",m=>{m.key!=="Escape"||this.asking||(m.stopPropagation(),f())},{signal:h.signal,capture:!0}),document.body.append(e)}},Gk=new Sl});var Tl={};A(Tl,{default:()=>Vk});var ym,xm,Cl,Sm,Wk,Ml,Vk,Al=w(()=>{"use strict";D();Rt();ym="kute_update_asked",xm="kute_update_ready",Cl=[.25,.5,.75],Sm=()=>new Promise(s=>{let e=()=>{document.pointerLockElement?setTimeout(e,2e3):s()};e()}),Wk=s=>`${Math.round(s/1048576)} MB`,Ml=class{constructor(){this.step=0,this.busy=!1,!(u.platform!=="linux"||!u.hostFeatures?.includes("appimage-update"))&&(window.chrome.webview.addEventListener("message",e=>{let t=e.data?.update;t&&typeof t=="object"&&this.receive(t).catch(()=>{})}),window.chrome.webview.postMessage("update-state"))}async receive(e){e.stage==="offer"?await this.offer(e):e.stage==="downloading"?this.progress(e):e.stage==="ready"?await this.ready(e):e.stage==="failed"&&u.showNotification(`The update to Kute ${e.version} failed: ${e.error??"unknown error"}`,!1,8)}async offer(e){if(this.busy||sessionStorage.getItem(ym)===e.version)return;this.busy=!0,await Sm(),sessionStorage.setItem(ym,e.version);let t=e.install===!0,o=await Ce({title:`Kute ${e.version} is out`,paragraphs:t?[`You have ${e.current}. The update${e.size?` (${Wk(e.size)})`:""} downloads while you play.`,"It replaces your Kute AppImage and starts the next time you open Kute."]:[`You have ${e.current}.`,"This copy of Kute does not run as an AppImage and cannot update itself. The download page has the new version."],stay:"Later",leave:t?"Update":"Open download page"});this.busy=!1,o&&(window.chrome.webview.postMessage(t?"update-install":"update-page"),t&&u.showNotification(`Downloading Kute ${e.version}`,!1,4))}progress(e){if(!e.total||!e.done)return;let t=e.done/e.total;for(;this.step=Cl[this.step];)u.showNotification(`Downloading Kute ${e.version}: ${Math.round(Cl[this.step]*100)} %`,!1,3),this.step++}async ready(e){if(sessionStorage.getItem(xm)===e.version)return;await Sm(),sessionStorage.setItem(xm,e.version),await Ce({title:`Kute ${e.version} is ready`,paragraphs:["It starts the next time you open Kute. Restart now to use it right away."],stay:"Later",leave:"Restart now"})&&window.chrome.webview.postMessage("update-restart")}},Vk=new Ml});var $m,Em=w(()=>{$m=`

      CSS Manager

      visibilityHold to peek
      folder_openShow folder
      storeCSS Store
      ×
      One file is active at a time and loads after all of Krunker's styles, so a rule with the same selector wins. Krunker's inline styles and its own !important rules still need !important here. Files live in Documents\\kute\\css.
      Your CSS
      Click a file to edit it, the circle makes it active
      addNew
      content_pastePaste
      upload_fileImport
      `});var Mm,Cm=w(()=>{Mm=`:host{--accent: #35e0e8;--bg: #1e1e1e;--panel: #252525;--line: #333;--muted: #999;--ok: #5ce05a;--warn: #ffb74d;--bad: #eb5656}.managerPopup{position:relative;box-sizing:border-box;display:flex;flex-direction:column;width:min(1020px,94vw);height:min(760px,90vh);background:var(--bg);color:#fff;border-radius:14px;box-shadow:0 8px 48px #000c;font-family:Consolas,monospace;font-size:14px;overflow:hidden}.managerHeader{display:flex;align-items:center;gap:.6em;padding:1em 1.2em .8em 1.4em;border-bottom:1px solid var(--line)}.managerTitle{margin:0 auto 0 0;font-size:1.6em;letter-spacing:1px;color:var(--accent)}.managerClose{margin-left:.4em;font-size:1.6em;line-height:1;color:var(--muted);cursor:pointer}.managerClose:hover{color:#fff}.managerHint{padding:.7em 1.4em;color:var(--muted);line-height:1.5;border-bottom:1px solid var(--line)}.managerHint code{padding:.05em .35em;border-radius:4px;background:#181818;color:var(--accent)}.managerBody{flex:1 1 auto;min-height:0;overflow-y:auto;padding:1em 1.4em}.managerError,.managerNotice{margin:.8em 1.4em 0;padding:.6em .9em;border-radius:8px;white-space:pre-wrap;line-height:1.5}.managerError{background:#4a1d1d;color:#ffb4b4}.managerNotice{display:flex;align-items:center;gap:1em;background:#173a52;color:#cfe8ff}.managerNotice span{flex:1}[hidden]{display:none!important}.btn{display:inline-flex;align-items:center;gap:.4em;padding:.45em .9em;border-radius:7px;background:#2d2d2d;color:#fff;cursor:pointer;user-select:none;white-space:nowrap}.btn:hover{background:#383838;color:var(--accent)}.btn.primary{background:#1b5e63}.btn.primary:hover{background:#23777d;color:#fff}.btn.small{padding:.25em .55em;font-size:.92em}.iconBtn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:var(--muted);cursor:pointer;user-select:none}.iconBtn:hover{background:#333;color:#fff}.iconBtn.danger:hover{color:var(--bad)}.mi{font-family:Material Icons;font-weight:400;font-style:normal;font-size:18px;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;font-feature-settings:"liga"}.group{margin-bottom:1.2em;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.groupHead{display:flex;align-items:center;gap:.7em;padding:.7em .9em;border-bottom:1px solid var(--line)}.groupTitle{font-size:1.15em;color:#fff}.groupRuns{margin-right:auto;color:var(--muted);font-size:.9em}.empty{padding:.9em;color:var(--muted)}.dropZone{margin:.7em;padding:.8em;border:2px dashed #444;border-radius:8px;color:#777;text-align:center}.dropHover{border-color:var(--accent)!important;background:#35e0e814!important;color:var(--accent)}.toggle{position:relative;flex:0 0 auto;width:38px;height:20px;border-radius:10px;background:#444;cursor:pointer;transition:background .15s}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#ddd;transition:left .15s}.toggle.on{background:#1b8f96}.toggle.on:after{left:21px;background:#fff}.state{flex:0 0 auto;padding:.1em .5em;border-radius:5px;font-size:.85em;background:#333;color:var(--muted)}.state.ok{background:#1f3d1f;color:var(--ok)}.state.warn{background:#3d321f;color:var(--warn)}.state.bad{background:#3d1f1f;color:var(--bad);cursor:help}.askBackdrop{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background:#0009}.askBox{width:min(480px,90%);padding:1.3em 1.4em;border-radius:12px;background:#262626;box-shadow:0 8px 32px #000c}.askTitle{margin-bottom:.8em;font-size:1.1em;color:var(--accent)}.askInput,.field{box-sizing:border-box;width:100%;padding:.5em .7em;border:1px solid #444;border-radius:6px;background:#181818;color:#fff;font:inherit;outline:none}.askInput:focus,.field:focus{border-color:var(--accent)}.askHint{margin-top:.5em;color:var(--muted);font-size:.9em;line-height:1.4}.askActions{display:flex;justify-content:flex-end;gap:.6em;margin-top:1em}.editor{position:relative;display:flex;flex:1 1 auto;min-height:0;border:1px solid var(--line);border-radius:8px;background:#181818;overflow:hidden;font-family:Consolas,Cascadia Mono,monospace;font-size:13.5px;line-height:1.5;tab-size:4}.editorGutter{flex:0 0 auto;padding:.6em .6em .6em .8em;overflow:hidden;color:#555;text-align:right;white-space:pre;user-select:none;border-right:1px solid #2a2a2a}.editorCode{position:relative;flex:1 1 auto;min-width:0}.editorCode pre,.editorCode textarea{position:absolute;inset:0;box-sizing:border-box;margin:0;padding:.6em .8em;border:0;font:inherit;line-height:inherit;tab-size:inherit;white-space:pre;overflow-wrap:normal;letter-spacing:normal}.editorCode pre{overflow:hidden;color:#d4d4d4;pointer-events:none}.editorCode textarea{resize:none;overflow:auto;background:transparent;color:transparent;caret-color:#fff;outline:none}.editorCode textarea::selection{background:#3578c873;color:transparent}.tk-c{color:#6a9955}.tk-s{color:#ce9178}.tk-n{color:#b5cea8}.tk-k{color:#c586c0}.tk-l{color:#569cd6}.tk-f{color:#dcdcaa}.tk-p{color:#9cdcfe}.editorBar{display:flex;align-items:center;gap:.6em;margin-bottom:.7em}.editorFile{margin-right:auto;color:#fff;font-size:1.05em}.editorFile .dirty{color:var(--warn)}.editorView{display:flex;flex-direction:column;height:100%}.editorKeys{margin-top:.5em;color:#666;font-size:.85em} -`});var Tm={};A(Tm,{askConfirm:()=>Re,askText:()=>nt,formatSize:()=>go,hostSupportsManagers:()=>Os,makeDropTarget:()=>st,openManagerPopup:()=>fo,readBase64:()=>Rl});function st(s,e){Ll.set(s,e)}function Zk(s){let e=[...s.items].filter(n=>n.kind==="file").map(n=>n.webkitGetAsEntry()).filter(n=>n!==null);if(!e.length)return Promise.resolve([...s.files].map(n=>({path:n.name,file:n})));let t=[],o=async n=>{if(t.length>=Jk)return;if(n.isFile){let i=await new Promise((a,l)=>n.file(a,l));t.push({path:n.fullPath.replace(/^\/+/,""),file:i});return}let r=n.createReader();for(;;){let i=await new Promise((a,l)=>r.readEntries(a,l));if(!i.length)break;for(let a of i)await o(a)}};return Promise.all(e.map(o)).then(()=>t)}function fo(s,{onMessage:e,canClose:t,onEscape:o}){let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let r=document.createElement("div");n.append(r);let i=r.attachShadow({mode:"open"});i.innerHTML=`${s}`;let a=new AbortController,{signal:l}=a,c=v=>{v.data&&typeof v.data=="object"&&e(v.data)};window.chrome.webview.addEventListener("message",c);let d=()=>{l.aborted||t&&!t()||(a.abort(),window.chrome.webview.removeEventListener("message",c),n.remove())};for(let v of["keydown","keyup","keypress"])i.addEventListener(v,k=>k.stopPropagation());document.addEventListener("keydown",v=>{if(v.key!=="Escape")return;v.stopPropagation();let k=i.querySelector(".askBackdrop [data-cancel]");k?k.click():o?.()||d()},{signal:l,capture:!0}),n.addEventListener("mousedown",v=>{v.target===n&&d()});let p=i.querySelector("[data-error]"),h=0,f=v=>{p&&(p.textContent=v,p.hidden=!1,clearTimeout(h),h=setTimeout(()=>{p.hidden=!0},8e3))},m=null,g=v=>{m!==v&&(m?.classList.remove("dropHover"),m=v,v?.classList.add("dropHover"))},b=v=>{for(let k of v.composedPath()){if(k===n)break;if(k instanceof HTMLElement&&Ll.has(k))return k}return null};return n.addEventListener("dragover",v=>{v.preventDefault();let k=b(v);g(k),v.dataTransfer&&(v.dataTransfer.dropEffect=k?"copy":"none")}),n.addEventListener("dragleave",v=>{v.relatedTarget||g(null)}),n.addEventListener("drop",v=>{v.preventDefault();let k=b(v);g(null);let E=k&&Ll.get(k);!E||!v.dataTransfer||Zk(v.dataTransfer).then(L=>{L.length&&E(L)}).catch(L=>f(`Could not read the dropped files: ${L?.message??L}`))}),i.querySelector("[data-close]")?.addEventListener("click",d),document.body.append(n),{shadow:i,close:d,signal:l,showError:f}}function nt(s,e,t,o=""){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
      +`});var im,rm=w(()=>{im='
      '});var kl={};A(kl,{default:()=>Kk});function pm(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`N${s-96}`:s>=112&&s<=123?`F${s-111}`:Fk[s]??"?"}function qk(s,e){let t=[],o=[[`cont_${s}_alt`,-1],[`cont_${s}`,e]];for(let[n,r]of o){let i=null;try{i=window.localStorage.getItem(n)}catch{i=null}let a=i===null?r:Number(i);a>0&&a<1e4&&t.push(a)}return t}var Nk,_k,am,lm,bl,Bk,zk,vl,cm,dm,Hk,um,Ok,Dk,Fk,wl,Kk,yl=w(()=>{"use strict";sm();rm();D();Nk=131,_k=120,am=32,lm=80,bl=.02,Bk=.35,zk=20,vl=80,cm=3,dm=3e3,Hk=3,um="kute_keystrokes_speed",Ok=120,Dk=[["kuteKeyForward","0",87],["kuteKeyBack","1",83],["kuteKeyLeft","2",65],["kuteKeyRight","3",68],["kuteKeyJump","jumpKey",32],["kuteKeyCrouch","crouchKey",16],["kuteKeyReload","reloadKey",82],["kuteKeyMelee","meleeKey",81],["kuteKeySwap","swapKey",69]],Fk={8:"BKSP",9:"TAB",13:"ENT",16:"SHIFT",17:"CTRL",18:"ALT",20:"CAPS",32:"SPACE",37:"\u2190",38:"\u2191",39:"\u2192",40:"\u2193",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"};wl=class{constructor(){this.widget=null,this.byCode=new Map,this.wheelTimers=new Map,this.rampWheelAt=-1/0,this.spaceDownAt=-1/0,this.spaceIgnored=!1,this.arcs=[],this.moveX=0,this.moveY=0,this.lastMove=-1/0,this.moveTimer=0,this.typical=Hk,this.typicalMs=0,this.fastUntil=[0,0,0,0],this.onKeyDown=e=>this.key(e.keyCode,!0),this.onKeyUp=e=>this.key(e.keyCode,!1),this.onMouseDown=e=>this.button(e.button,!0),this.onMouseUp=e=>this.button(e.button,!1),this.onWheel=e=>this.wheel(e.deltaY<0),this.onMouseMove=e=>this.move(e),this.onMoveIdle=()=>{this.moveTimer=0;let e=performance.now()-this.lastMove;if(e{let{data:t}=e;typeof t?.wheel=="number"&&t.wheel!==0?this.wheel(t.wheel>0):typeof t?.rampWheel=="number"&&t.rampWheel!==0&&this.rampWheel(t.rampWheel>0)},this.releaseAll=()=>{for(let e of this.widget?.querySelectorAll(".on")??[])e.classList.remove("on");this.moveX=0,this.moveY=0,this.fastUntil.fill(0),this.drawMove()},this.onPointerLockChange=()=>{if(document.pointerLockElement){this.readBinds();return}this.releaseAll();try{window.localStorage.setItem(um,this.typical.toFixed(3))}catch{}},u.settings.toggleKeystrokes=e=>this.toggle(e),this.toggle(!!u.settings.data.keystrokes)}toggle(e){if(queueMicrotask(()=>u.hudEditor?.apply()),!e){this.remove();return}if(this.widget)return;let t=document.createElement("style");t.id="kuteKeystrokesCSS",t.textContent=nm,document.head.append(t),this.widget=document.createElement("div"),this.widget.id="kuteKeystrokes",this.widget.innerHTML=im,(document.querySelector("#uiBase")??document.body).append(this.widget),this.readBinds(),this.loadTypical();let{widget:o}=this,n=[["kuteMoveLeft",-1,0],["kuteMoveRight",1,0],["kuteMoveUp",0,-1],["kuteMoveDown",0,1]];this.arcs=n.map(([r,i,a])=>[o.querySelector(`#${r}`),i,a]),window.addEventListener("keydown",this.onKeyDown,!0),window.addEventListener("keyup",this.onKeyUp,!0),window.addEventListener("mousedown",this.onMouseDown,!0),window.addEventListener("mouseup",this.onMouseUp,!0),window.addEventListener("mousemove",this.onMouseMove,{capture:!0,passive:!0}),window.addEventListener("wheel",this.onWheel,{capture:!0,passive:!0}),window.addEventListener("blur",this.releaseAll),document.addEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.addEventListener("message",this.onHostMessage)}remove(){window.removeEventListener("keydown",this.onKeyDown,!0),window.removeEventListener("keyup",this.onKeyUp,!0),window.removeEventListener("mousedown",this.onMouseDown,!0),window.removeEventListener("mouseup",this.onMouseUp,!0),window.removeEventListener("mousemove",this.onMouseMove,!0),window.removeEventListener("wheel",this.onWheel,!0),window.removeEventListener("blur",this.releaseAll),document.removeEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.removeEventListener("message",this.onHostMessage);for(let e of this.wheelTimers.values())clearTimeout(e);this.wheelTimers.clear(),clearTimeout(this.moveTimer),this.moveTimer=0,this.arcs=[],this.widget?.remove(),this.widget=null,this.byCode.clear(),document.querySelector("#kuteKeystrokesCSS")?.remove()}readBinds(){if(this.widget){this.byCode.clear();for(let[e,t,o]of Dk){let n=this.widget.querySelector(`#${e}`);if(!n)continue;let r=qk(t,o);n.textContent=r.length>0?pm(r[0]):"",n.title=r.map(pm).join(" / ");for(let i of r){let a=this.byCode.get(i)??[];a.push(n),this.byCode.set(i,a)}}}}key(e,t){if(e===Nk){this.button(0,t);return}if(e===am){t&&(this.spaceDownAt=performance.now(),this.spaceIgnored=this.spaceDownAt-this.rampWheelAt=100,n=Math.min(t-this.lastMove,100);if(this.lastMove=t,!(n>0))return;let r=Math.exp(-n/zk);this.moveX=this.moveX*r+e.movementX/n*(1-r),this.moveY=this.moveY*r+e.movementY/n*(1-r);let i=Math.hypot(this.moveX,this.moveY);!o&&i>bl&&(this.typicalMs=Math.min(this.typicalMs+n,dm),this.typical+=(Math.min(i,this.typical*cm)-this.typical)*(n/this.typicalMs)),this.drawMove(t),this.moveTimer||(this.moveTimer=window.setTimeout(this.onMoveIdle,vl))}loadTypical(){let e=NaN;try{e=Number(window.localStorage.getItem(um))}catch{e=NaN}e>0&&(this.typical=e,this.typicalMs=dm)}drawMove(e=performance.now()){let t=Math.hypot(this.moveX,this.moveY),o=Math.max(this.typical,bl)*cm;this.arcs.forEach(([n,r,i],a)=>{let l=this.moveX*r+this.moveY*i;l>o&&(this.fastUntil[a]=e+Ok);let c="kuteMove";this.fastUntil[a]>e?c="kuteMove on fast":t>bl&&l>=t*Bk&&(c="kuteMove on"),n.className!==c&&(n.className=c)})}rampWheel(e){if(this.rampWheelAt=performance.now(),this.rampWheelAt-this.spaceDownAt{this.widget?.querySelector(`#${t}`)?.classList.remove("on"),this.wheelTimers.delete(t)},_k))}},Kk=new wl});var mm,hm=w(()=>{mm='

      Kute Icons

      Tick all
      Done
      '});var El={};A(El,{default:()=>Gk});function km(){let s=u.settings.data[xl];return s&&typeof s=="object"?s:{}}function fm(){return u.hostFeatures?.includes("kute-icons")??!1}function gm(s){return km()[s.id]!==!1}function bm(s){return s.hiddenBy.filter(e=>{let t=null;try{t=localStorage.getItem(`kro_setngss_${e.id}`)}catch{return!1}return t===null?!1:e.kind==="checkbox"?t==="false":Number(t)===0})}function vm(s){return s.kind==="checkbox"?`${s.name} is off`:`${s.name} is 0`}async function wm(s){await Ce({title:"Reload the game?",paragraphs:[s,"The game keeps the images it already loaded, so this shows after a reload. Nothing else changes, and you can do it later."],stay:"Later",leave:"Reload now"})&&window.chrome.webview.postMessage("hard-reload")}var Uk,xl,Sl,Gk,$l=w(()=>{"use strict";hm();D();Rt();bn();Uk="https://krunker.io/kute-icons/",xl="kuteIconSlots";Sl=class{constructor(){this.asking=!1,this.watched=new WeakSet,u.kuteIcons={customize:()=>this.customize(),refresh:()=>this.refresh()},u.settings.toggleKuteIcons=e=>this.onToggle(!!e),this.refresh(),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&setTimeout(()=>this.refresh(),1500)})}refresh(){for(let e of Mo){let t=e.element?document.getElementById(e.element):null;!t||this.watched.has(t)||(this.watched.add(t),new MutationObserver(()=>Qt()).observe(t,{attributes:!0,attributeFilter:["src"]}))}Qt()}async onToggle(e){if(Qt(),!fm()){e&&u.showNotification("Kute icons need a newer Kute, update the client",!1,4);return}e&&await this.warnHidden(Mo.filter(gm)),await wm(e?"Kute icons are on.":"Kute icons are off, your own icons are back.")}async warnHidden(e){let t=new Map,o=[];for(let r of e){let i=bm(r);if(i.length!==0){for(let a of i)t.set(a.id,a);o.push(`${r.name}: ${i.map(a=>vm(a)).join(", ")}`)}}if(o.length===0||(this.asking=!0,!await Ce({title:"Hidden by your Krunker settings",paragraphs:[o.length===1?"This Kute icon will not show:":"These Kute icons will not show:",...o,"Switch those Krunker settings on for you?"],stay:"Leave them",leave:"Switch on"}).finally(()=>{this.asking=!1})))return!1;for(let r of t.values())window.setSetting(r.id,r.kind==="checkbox"?!0:"1");return u.showNotification("Switched on in your Krunker settings",!1,3),!0}customize(){let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=mm;let n=f=>o.querySelector(`#${f}`),r=fm(),i=u.settings.data.kuteIcons===!0,a="Ticked icons show Kute's version. Your Krunker settings stay as they are.";i||(a="Use Kute Icons is off, so none of these show yet."),r||(a="This needs a newer Kute. Update the client to use Kute icons."),n("kiHint").textContent=a;let l=!1,c=[],d=()=>{for(let{slot:f,box:g,note:b}of c){let v=g.checked?bm(f):[];if(b.replaceChildren(),v.length===0)continue;b.append(`Hidden: ${v.map(E=>vm(E)).join(", ")} `);let k=document.createElement("span");k.className="kiShow",k.textContent="Show it",k.onclick=async E=>{E.preventDefault(),E.stopPropagation(),await this.warnHidden([f]),d()},b.append(k)}},h=(f,g)=>{l=!0;let b={...km(),[f.id]:g};u.settings.data[xl]=b,window.chrome.webview.postMessage(`set-config-json ${xl} ${JSON.stringify(b)}`)};for(let f of Mo){let g=document.createElement("label");g.className="kiRow";let b=document.createElement("img");b.src=Uk+f.file,b.alt="";let v=document.createElement("span");v.textContent=f.name;let k=document.createElement("span");k.className="kiHidden",v.append(k);let E=document.createElement("input");E.type="checkbox",E.checked=gm(f),E.onchange=async()=>{h(f,E.checked),E.checked&&await this.warnHidden([f]),d()},g.append(b,v,E),n("kiRows").append(g),c.push({slot:f,box:E,note:k})}d(),n("kiAll").onclick=async()=>{let f=c.filter(({box:g})=>!g.checked);for(let{slot:g,box:b}of f)b.checked=!0,h(g,!0);await this.warnHidden(f.map(({slot:g})=>g)),d()};let p=new AbortController,m=()=>{p.abort(),e.remove(),l&&r&&u.settings.data.kuteIcons===!0&&wm("Your Kute icons changed.")};n("kiDone").onclick=m,e.addEventListener("mousedown",f=>{f.target===e&&m()}),document.addEventListener("keydown",f=>{f.key!=="Escape"||this.asking||(f.stopPropagation(),m())},{signal:p.signal,capture:!0}),document.body.append(e)}},Gk=new Sl});var Tl={};A(Tl,{default:()=>Vk});var ym,xm,Cl,Sm,Wk,Ml,Vk,Al=w(()=>{"use strict";D();Rt();ym="kute_update_asked",xm="kute_update_ready",Cl=[.25,.5,.75],Sm=()=>new Promise(s=>{let e=()=>{document.pointerLockElement?setTimeout(e,2e3):s()};e()}),Wk=s=>`${Math.round(s/1048576)} MB`,Ml=class{constructor(){this.step=0,this.busy=!1,!(u.platform!=="linux"||!u.hostFeatures?.includes("appimage-update"))&&(window.chrome.webview.addEventListener("message",e=>{let t=e.data?.update;t&&typeof t=="object"&&this.receive(t).catch(()=>{})}),window.chrome.webview.postMessage("update-state"))}async receive(e){e.stage==="offer"?await this.offer(e):e.stage==="downloading"?this.progress(e):e.stage==="ready"?await this.ready(e):e.stage==="failed"&&u.showNotification(`The update to Kute ${e.version} failed: ${e.error??"unknown error"}`,!1,8)}async offer(e){if(this.busy||sessionStorage.getItem(ym)===e.version)return;this.busy=!0,await Sm(),sessionStorage.setItem(ym,e.version);let t=e.install===!0,o=await Ce({title:`Kute ${e.version} is out`,paragraphs:t?[`You have ${e.current}. The update${e.size?` (${Wk(e.size)})`:""} downloads while you play.`,"It replaces your Kute AppImage and starts the next time you open Kute."]:[`You have ${e.current}.`,"This copy of Kute does not run as an AppImage and cannot update itself. The download page has the new version."],stay:"Later",leave:t?"Update":"Open download page"});this.busy=!1,o&&(window.chrome.webview.postMessage(t?"update-install":"update-page"),t&&u.showNotification(`Downloading Kute ${e.version}`,!1,4))}progress(e){if(!e.total||!e.done)return;let t=e.done/e.total;for(;this.step=Cl[this.step];)u.showNotification(`Downloading Kute ${e.version}: ${Math.round(Cl[this.step]*100)} %`,!1,3),this.step++}async ready(e){if(sessionStorage.getItem(xm)===e.version)return;await Sm(),sessionStorage.setItem(xm,e.version),await Ce({title:`Kute ${e.version} is ready`,paragraphs:["It starts the next time you open Kute. Restart now to use it right away."],stay:"Later",leave:"Restart now"})&&window.chrome.webview.postMessage("update-restart")}},Vk=new Ml});var $m,Em=w(()=>{$m=`

      CSS Manager

      visibilityHold to peek
      folder_openShow folder
      storeCSS Store
      ×
      One file is active at a time and loads after all of Krunker's styles, so a rule with the same selector wins. Krunker's inline styles and its own !important rules still need !important here. Files live in Documents\\kute\\css.
      Your CSS
      Click a file to edit it, the circle makes it active
      addNew
      content_pastePaste
      upload_fileImport
      `});var Mm,Cm=w(()=>{Mm=`:host{--accent: #35e0e8;--bg: #1e1e1e;--panel: #252525;--line: #333;--muted: #999;--ok: #5ce05a;--warn: #ffb74d;--bad: #eb5656}.managerPopup{position:relative;box-sizing:border-box;display:flex;flex-direction:column;width:min(1020px,94vw);height:min(760px,90vh);background:var(--bg);color:#fff;border-radius:14px;box-shadow:0 8px 48px #000c;font-family:Consolas,monospace;font-size:14px;overflow:hidden}.managerHeader{display:flex;align-items:center;gap:.6em;padding:1em 1.2em .8em 1.4em;border-bottom:1px solid var(--line)}.managerTitle{margin:0 auto 0 0;font-size:1.6em;letter-spacing:1px;color:var(--accent)}.managerClose{margin-left:.4em;font-size:1.6em;line-height:1;color:var(--muted);cursor:pointer}.managerClose:hover{color:#fff}.managerHint{padding:.7em 1.4em;color:var(--muted);line-height:1.5;border-bottom:1px solid var(--line)}.managerHint code{padding:.05em .35em;border-radius:4px;background:#181818;color:var(--accent)}.managerBody{flex:1 1 auto;min-height:0;overflow-y:auto;padding:1em 1.4em}.managerError,.managerNotice{margin:.8em 1.4em 0;padding:.6em .9em;border-radius:8px;white-space:pre-wrap;line-height:1.5}.managerError{background:#4a1d1d;color:#ffb4b4}.managerNotice{display:flex;align-items:center;gap:1em;background:#173a52;color:#cfe8ff}.managerNotice span{flex:1}[hidden]{display:none!important}.btn{display:inline-flex;align-items:center;gap:.4em;padding:.45em .9em;border-radius:7px;background:#2d2d2d;color:#fff;cursor:pointer;user-select:none;white-space:nowrap}.btn:hover{background:#383838;color:var(--accent)}.btn.primary{background:#1b5e63}.btn.primary:hover{background:#23777d;color:#fff}.btn.small{padding:.25em .55em;font-size:.92em}.iconBtn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:var(--muted);cursor:pointer;user-select:none}.iconBtn:hover{background:#333;color:#fff}.iconBtn.danger:hover{color:var(--bad)}.mi{font-family:Material Icons;font-weight:400;font-style:normal;font-size:18px;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;font-feature-settings:"liga"}.group{margin-bottom:1.2em;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.groupHead{display:flex;align-items:center;gap:.7em;padding:.7em .9em;border-bottom:1px solid var(--line)}.groupTitle{font-size:1.15em;color:#fff}.groupRuns{margin-right:auto;color:var(--muted);font-size:.9em}.empty{padding:.9em;color:var(--muted)}.dropZone{margin:.7em;padding:.8em;border:2px dashed #444;border-radius:8px;color:#777;text-align:center}.dropHover{border-color:var(--accent)!important;background:#35e0e814!important;color:var(--accent)}.toggle{position:relative;flex:0 0 auto;width:38px;height:20px;border-radius:10px;background:#444;cursor:pointer;transition:background .15s}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#ddd;transition:left .15s}.toggle.on{background:#1b8f96}.toggle.on:after{left:21px;background:#fff}.state{flex:0 0 auto;padding:.1em .5em;border-radius:5px;font-size:.85em;background:#333;color:var(--muted)}.state.ok{background:#1f3d1f;color:var(--ok)}.state.warn{background:#3d321f;color:var(--warn)}.state.bad{background:#3d1f1f;color:var(--bad);cursor:help}.askBackdrop{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background:#0009}.askBox{width:min(480px,90%);padding:1.3em 1.4em;border-radius:12px;background:#262626;box-shadow:0 8px 32px #000c}.askTitle{margin-bottom:.8em;font-size:1.1em;color:var(--accent)}.askInput,.field{box-sizing:border-box;width:100%;padding:.5em .7em;border:1px solid #444;border-radius:6px;background:#181818;color:#fff;font:inherit;outline:none}.askInput:focus,.field:focus{border-color:var(--accent)}.askHint{margin-top:.5em;color:var(--muted);font-size:.9em;line-height:1.4}.askActions{display:flex;justify-content:flex-end;gap:.6em;margin-top:1em}.editor{position:relative;display:flex;flex:1 1 auto;min-height:0;border:1px solid var(--line);border-radius:8px;background:#181818;overflow:hidden;font-family:Consolas,Cascadia Mono,monospace;font-size:13.5px;line-height:1.5;tab-size:4}.editorGutter{flex:0 0 auto;padding:.6em .6em .6em .8em;overflow:hidden;color:#555;text-align:right;white-space:pre;user-select:none;border-right:1px solid #2a2a2a}.editorCode{position:relative;flex:1 1 auto;min-width:0}.editorCode pre,.editorCode textarea{position:absolute;inset:0;box-sizing:border-box;margin:0;padding:.6em .8em;border:0;font:inherit;line-height:inherit;tab-size:inherit;white-space:pre;overflow-wrap:normal;letter-spacing:normal}.editorCode pre{overflow:hidden;color:#d4d4d4;pointer-events:none}.editorCode textarea{resize:none;overflow:auto;background:transparent;color:transparent;caret-color:#fff;outline:none}.editorCode textarea::selection{background:#3578c873;color:transparent}.tk-c{color:#6a9955}.tk-s{color:#ce9178}.tk-n{color:#b5cea8}.tk-k{color:#c586c0}.tk-l{color:#569cd6}.tk-f{color:#dcdcaa}.tk-p{color:#9cdcfe}.editorBar{display:flex;align-items:center;gap:.6em;margin-bottom:.7em}.editorFile{margin-right:auto;color:#fff;font-size:1.05em}.editorFile .dirty{color:var(--warn)}.editorView{display:flex;flex-direction:column;height:100%}.editorKeys{margin-top:.5em;color:#666;font-size:.85em} +`});var Tm={};A(Tm,{askConfirm:()=>Re,askText:()=>nt,formatSize:()=>go,hostSupportsManagers:()=>Os,makeDropTarget:()=>st,openManagerPopup:()=>fo,readBase64:()=>Rl});function st(s,e){Ll.set(s,e)}function Zk(s){let e=[...s.items].filter(n=>n.kind==="file").map(n=>n.webkitGetAsEntry()).filter(n=>n!==null);if(!e.length)return Promise.resolve([...s.files].map(n=>({path:n.name,file:n})));let t=[],o=async n=>{if(t.length>=Jk)return;if(n.isFile){let i=await new Promise((a,l)=>n.file(a,l));t.push({path:n.fullPath.replace(/^\/+/,""),file:i});return}let r=n.createReader();for(;;){let i=await new Promise((a,l)=>r.readEntries(a,l));if(!i.length)break;for(let a of i)await o(a)}};return Promise.all(e.map(o)).then(()=>t)}function fo(s,{onMessage:e,canClose:t,onEscape:o}){let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let r=document.createElement("div");n.append(r);let i=r.attachShadow({mode:"open"});i.innerHTML=`${s}`;let a=new AbortController,{signal:l}=a,c=v=>{v.data&&typeof v.data=="object"&&e(v.data)};window.chrome.webview.addEventListener("message",c);let d=()=>{l.aborted||t&&!t()||(a.abort(),window.chrome.webview.removeEventListener("message",c),n.remove())};for(let v of["keydown","keyup","keypress"])i.addEventListener(v,k=>k.stopPropagation());document.addEventListener("keydown",v=>{if(v.key!=="Escape")return;v.stopPropagation();let k=i.querySelector(".askBackdrop [data-cancel]");k?k.click():o?.()||d()},{signal:l,capture:!0}),n.addEventListener("mousedown",v=>{v.target===n&&d()});let h=i.querySelector("[data-error]"),p=0,m=v=>{h&&(h.textContent=v,h.hidden=!1,clearTimeout(p),p=setTimeout(()=>{h.hidden=!0},8e3))},f=null,g=v=>{f!==v&&(f?.classList.remove("dropHover"),f=v,v?.classList.add("dropHover"))},b=v=>{for(let k of v.composedPath()){if(k===n)break;if(k instanceof HTMLElement&&Ll.has(k))return k}return null};return n.addEventListener("dragover",v=>{v.preventDefault();let k=b(v);g(k),v.dataTransfer&&(v.dataTransfer.dropEffect=k?"copy":"none")}),n.addEventListener("dragleave",v=>{v.relatedTarget||g(null)}),n.addEventListener("drop",v=>{v.preventDefault();let k=b(v);g(null);let E=k&&Ll.get(k);!E||!v.dataTransfer||Zk(v.dataTransfer).then(L=>{L.length&&E(L)}).catch(L=>m(`Could not read the dropped files: ${L?.message??L}`))}),i.querySelector("[data-close]")?.addEventListener("click",d),document.body.append(n),{shadow:i,close:d,signal:l,showError:m}}function nt(s,e,t,o=""){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
      Cancel
      OK
      `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=o;let r=n.querySelector(".askInput");r.value=t,(s.querySelector(".managerPopup")??s).append(n),r.focus();let a=t.lastIndexOf(".");return r.setSelectionRange(t.lastIndexOf("/")+1,a>0?a:t.length),new Promise(l=>{let c=d=>{n.remove(),l(d)};n.querySelector("[data-ok]").onclick=()=>c(r.value.trim()||null),n.querySelector("[data-cancel]").onclick=()=>c(null),r.onkeydown=d=>{d.key==="Enter"&&c(r.value.trim()||null)}})}function Re(s,e,t,o){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
      -
      Cancel
      `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=t;let r=n.querySelector("[data-ok]");return r.textContent=o,(s.querySelector(".managerPopup")??s).append(n),new Promise(i=>{let a=l=>{n.remove(),i(l)};r.onclick=()=>a(!0),n.querySelector("[data-cancel]").onclick=()=>a(!1)})}var Os,Ll,Jk,Rl,go,Ds=w(()=>{"use strict";D();Cm();Os=()=>u.hostFeatures?.includes("script-manager")??!1,Ll=new WeakMap,Jk=5e3;Rl=s=>new Promise((e,t)=>{let o=new FileReader;o.onload=()=>e(String(o.result).slice(String(o.result).indexOf(",")+1)),o.onerror=()=>t(o.error),o.readAsDataURL(s)});go=s=>s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`});var Nl={};A(Nl,{open:()=>sy});var Qk,ey,Pl,ty,Do,Ge,Il,oy,sy,_l=w(()=>{"use strict";D();Em();vn();Ds();Oo();Qk=120,ey=4*1024*1024,Pl="custom.css",ty=()=>u.hostFeatures?.includes("css-manager")??!1,Do=s=>/\.css$/i.test(s)?s:`${s}.css`,Ge=(s,e)=>window.chrome.webview.postMessage(e?`css-${s} ${JSON.stringify(e)}`:`css-${s}`),Il=class{constructor(){this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.files=[],this.active=null,this.listed=!1,this.saving=null,this.savingName=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.closeAfterSave=!1,this.forceClose=!1,this.legacy=!1,this.live=!0,this.previewTimer=0}open(){if(this.popup)return;if(!ts()){u.showNotification("The CSS Manager needs a newer Kute. Update Kute to use it.",!1,6);return}this.legacy=!ty(),this.popup=fo($m,{onMessage:i=>this.receive(i),canClose:()=>this.canClose()});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{clearTimeout(this.previewTimer),Lt.revert(),this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.listed=!1,this.saving=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.forceClose=!1}),this.$("#ccFolder").onclick=()=>Ge("reveal",{name:this.editing??""}),this.$("#ccOff").hidden=u.settings.data.customCss!==!1,this.$("#ccStore").onclick=()=>this.openStore(),this.$("#ccStoreBack").onclick=()=>{this.$("#ccStorePanel").hidden=!0,this.$(".managerBody").classList.remove("storeOpen")};let o=this.$("#ccLive");o.checked=this.live,o.onchange=()=>{this.live=o.checked,this.preview()};let n=e.host.parentElement;if(this.$("#ccPeek").onpointerdown=i=>{i.preventDefault(),n.style.opacity="0",window.addEventListener("pointerup",()=>{n.style.opacity=""},{once:!0,signal:t})},this.legacy){this.$(".managerPopup").classList.add("legacy"),this.$("#ccHint").textContent="Loaded after all of Krunker's styles, so a rule with the same selector wins. Saved as Documents\\kute\\custom.css. Update Kute to keep several CSS files and switch between them.",this.$("#ccEditor").textContent="Loading...",Ge("read");return}this.$("#ccNew").onclick=()=>this.create(),this.$("#ccPaste").onclick=()=>this.paste();let r=this.$("#ccImportInput");this.$("#ccImport").onclick=()=>r.click(),r.onchange=()=>{this.importFiles([...r.files??[]]),r.value=""},st(this.$("#ccFiles"),i=>this.importFiles(i.map(a=>a.file))),this.$("#ccEditor").textContent="Loading...",Ge("list")}async openStore(){let e=this.$("#ccStorePanel"),t=this.$("#ccStoreList");this.$(".managerBody").classList.add("storeOpen"),e.hidden=!1,t.replaceChildren();let o=document.createElement("p");o.textContent="Loading the CSS Store...",t.append(o);try{let n=await fetch("https://raw.githubusercontent.com/Liamoulee/KSS/main/index.json");if(!n.ok)throw new Error(`HTTP ${n.status}`);let r=await n.json();t.replaceChildren();for(let i of r){let a=document.createElement("div");if(a.className="storeCard",i.preview){let m=document.createElement("img");m.src=i.preview.startsWith("https://")?i.preview:"https://raw.githubusercontent.com/Liamoulee/KSS/main/"+i.preview.split("/").map(encodeURIComponent).join("/"),m.alt=`${i.name} preview`,m.onerror=()=>m.remove(),a.append(m)}let l=document.createElement("h3");l.textContent=i.name;let c=document.createElement("p");c.textContent=`By ${i.author}`;let d=document.createElement("p");d.textContent=i.description??"";let p=document.createElement("button");p.className="storeDownloadBtn";let h=this.files.some(m=>m.name.toLowerCase()===Do(i.name).toLowerCase()),f=m=>{p.textContent=m};f(h?"Already downloaded":"Download the CSS"),h&&(p.classList.add("installed"),p.disabled=!0),p.onclick=async()=>{if(h=this.files.some(m=>m.name.toLowerCase()===Do(i.name).toLowerCase()),h){f("Already downloaded"),p.classList.add("installed"),p.disabled=!0;return}p.disabled=!0,f("Downloading...");try{let m=await fetch("https://raw.githubusercontent.com/Liamoulee/KSS/main/"+i.file.split("/").map(encodeURIComponent).join("/"));if(!m.ok)throw new Error(`HTTP ${m.status}`);let g=await m.text();Ge("import",{name:Do(i.name),content:g}),h=!0,f("Already downloaded"),p.classList.add("installed"),p.disabled=!0}catch(m){console.error("CSS Store import failed:",m),p.disabled=!1,f("Try again")}},a.append(l,c,d,p),t.append(a)}r.length===0&&(t.textContent="No CSS available.")}catch(n){console.error("CSS Store failed to load:",n),t.replaceChildren();let r=document.createElement("p");r.textContent="Unable to load the CSS Store. Please try again later.",t.append(r)}}$(e){return this.popup?.shadow.querySelector(e)}receive(e){if(typeof e.managerError=="string"&&this.popup?.showError(e.managerError),this.legacy){typeof e.customCss?.content=="string"&&!this.editor&&(this.active=Pl,this.showEditor(Pl,e.customCss.content)),e.customCssSaved&&this.saving!==null&&this.saved(e.customCssSaved.error,Pl);return}e.cssFiles&&this.updateList(e.cssFiles),e.cssFile&&e.cssFile.name===this.loading&&(this.loading=null,typeof e.cssFile.content=="string"?this.showEditor(e.cssFile.name,e.cssFile.content):this.popup?.showError(`Could not read ${e.cssFile.name}`)),e.cssSaved&&this.saving!==null&&e.cssSaved.name===this.savingName&&this.saved(e.cssSaved.error,e.cssSaved.name),e.cssImported&&this.imported(e.cssImported),e.cssActivated&&(this.activating=!1,e.cssActivated.error?this.popup?.showError(`Could not switch: ${e.cssActivated.error}`):Lt.markSaved(String(e.cssActivated.content??"")),this.preview())}updateList(e){this.files=Array.isArray(e.files)?e.files:[];let t=this.active;this.active=e.active??null,t&&!this.active&&!this.activating&&(Lt.markSaved(""),this.preview());let o=new Set(this.files.map(n=>n.name));if(this.renaming&&this.editing===this.renaming.from&&o.has(this.renaming.to)){this.editing=this.renaming.to;let n=this.popup?.shadow.querySelector(".editorFile")?.firstChild;n&&(n.textContent=this.editing)}if(this.renaming=null,this.editing&&!o.has(this.editing)&&this.closeEditor(),!this.listed){this.listed=!0;let n=this.active??this.files[0]?.name;n?this.load(n):this.closeEditor()}this.renderList()}renderList(){let e=this.$("#ccList");if(e){if(e.textContent="",!this.files.length){let t=document.createElement("div");t.className="empty",t.textContent="No CSS files yet. Make one with New, paste one, or import .css files.",e.append(t)}for(let t of this.files)e.append(this.row(t));e.append(this.row(null))}}row(e){let t=e?.name??"",o=document.createElement("div");o.className="cssRow",o.classList.toggle("none",!e),o.classList.toggle("active",(this.active??"")===t),o.classList.toggle("editing",!!e&&this.editing===t);let n=document.createElement("div");n.className="cssRadio",n.title=e?"Use this one":"No CSS",n.onclick=l=>{l.stopPropagation(),this.activate(t)};let r=document.createElement("div");if(r.className="cssName",r.textContent=e?t:"None",o.append(n,r),!e)return o.onclick=()=>this.activate(""),o;let i=document.createElement("div");i.className="cssSize",i.textContent=go(e.size);let a=document.createElement("div");a.className="cssActions";for(let[l,c,d,p]of[["edit","Rename",()=>this.rename(t),!1],["delete","Delete",()=>this.remove(t),!0]]){let h=document.createElement("div");h.className=p?"iconBtn danger":"iconBtn",h.title=c,h.innerHTML=`${l}`,h.onclick=f=>{f.stopPropagation(),d()},a.append(h)}return o.append(i,a),o.onclick=()=>this.load(t),o}async load(e){e===this.editing&&this.editor||await this.discardChanges()&&(this.loading=e,Ge("get",{name:e}))}showEditor(e,t){let o=this.$("#ccEditor");if(!o)return;let{editor:n}=po(o,{title:e,content:t,language:"css",onSave:r=>this.save(r),onClose:()=>this.popup?.close(),onChange:()=>{clearTimeout(this.previewTimer),this.previewTimer=setTimeout(()=>this.preview(),Qk)}});this.editor=n,this.editing=e,this.renderList(),this.preview()}closeEditor(){this.editor=null,this.editing=null;let e=this.$("#ccEditor");e&&(e.innerHTML='
      Pick a file below to edit it.
      '),this.preview()}preview(){let{editor:e}=this;this.live&&e&&(this.editing===this.active||e.isDirty())?Lt.apply(e.getValue()):Lt.revert()}async discardChanges(){return!this.editor?.isDirty()||!this.popup?!0:Re(this.popup.shadow,"Unsaved changes",`Throw the changes to ${this.editing} away?`,"Discard")}save(e){!this.editor||!this.editing||this.saving!==null||(this.closeAfterSave=e,this.saving=this.editor.getValue(),this.savingName=this.editing,this.legacy?window.chrome.webview.postMessage(`css-write ${JSON.stringify({content:this.saving})}`):Ge("save",{name:this.editing,content:this.saving}))}saved(e,t){let o=this.saving??"";if(this.saving=null,e){this.popup?.showError(`Could not save: ${e}`);return}t===this.active&&Lt.markSaved(o),t===this.editing&&this.editor?.markSaved(o),this.preview(),this.closeAfterSave&&this.popup?.close()}activate(e){e===(this.active??"")||this.activating||(this.activating=!0,Ge("activate",{name:e}))}async create(){if(!this.popup)return;let e=await nt(this.popup.shadow,"New CSS file","theme.css","Ends in .css");e&&(this.openAfterImport=Do(e),Ge("import",{name:this.openAfterImport,content:""}))}async paste(){if(!this.popup)return;let e="";try{e=await navigator.clipboard.readText()}catch{this.popup.showError("Could not read the clipboard.");return}if(!e.trim()){this.popup.showError("The clipboard has no text in it. Copy the CSS first.");return}let t=await nt(this.popup.shadow,"Name for the pasted CSS","pasted.css","Ends in .css");t&&(this.openAfterImport=Do(t),Ge("import",{name:this.openAfterImport,content:e}))}async importFiles(e){let t=[];for(let o of e){if(!/\.css$/i.test(o.name)||o.size>ey){t.push(o.name);continue}Ge("import",{name:o.name,content:await o.text()})}t.length&&this.popup?.showError(`Not imported (only .css files up to 4 MB): ${t.join(", ")}`)}imported(e){if(e.error){this.popup?.showError(`Could not add ${e.requested}: ${e.error}`);return}this.active||this.activate(e.name),e.requested===this.openAfterImport?(this.openAfterImport=null,this.load(e.name)):this.editing||this.load(e.name)}async rename(e){if(!this.popup)return;let t=await nt(this.popup.shadow,`Rename ${e}`,e,"Ends in .css");if(!t)return;let o=Do(t);o!==e&&(this.renaming={from:e,to:o},Ge("rename",{from:e,to:o}))}async remove(e){!this.popup||!await Re(this.popup.shadow,`Delete ${e}?`,"It goes to the recycle bin.","Delete")||Ge("delete",{name:e})}canClose(){return this.forceClose||!this.editor?.isDirty()||!this.popup?!0:(Re(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},oy=new Il,sy=()=>oy.open()});var Am={};A(Am,{hostWatchesSwapper:()=>dr,reloadStylesheets:()=>Fs});var dr,Fs,ur=w(()=>{"use strict";D();dr=()=>u.hostFeatures?.includes("swapper-watch")??!1,Fs=s=>{for(let e of document.querySelectorAll('link[rel="stylesheet"]')){if(!(e instanceof HTMLLinkElement)||!e.href)continue;let t=new URL(e.href);if(!/(^|\.)krunker\.io$/.test(t.hostname)||!s.has(t.pathname.slice(1).toLowerCase()))continue;t.searchParams.set("kuteSwap",String(Date.now()));let o=e.cloneNode();o.href=t.href,o.addEventListener("load",()=>e.remove(),{once:!0}),o.addEventListener("error",()=>o.remove(),{once:!0}),e.after(o)}}});var Rm,Lm=w(()=>{Rm='

      Userscripts

      Userscripts off
      folder_openOpen scripts folder
      ×
      Scripts run inside Krunker. Only add scripts you trust, and never anything that breaks krunker.io/docs/terms.txt. Drop .js files onto a group, or create one with New script.
      '});var zl={};A(zl,{open:()=>ly});var ry,iy,oe,qs,Bl,ay,ly,Hl=w(()=>{"use strict";D();Lm();es();Ds();Oo();ry=4*1024*1024,iy=`// ==UserScript== +
      Cancel
      `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=t;let r=n.querySelector("[data-ok]");return r.textContent=o,(s.querySelector(".managerPopup")??s).append(n),new Promise(i=>{let a=l=>{n.remove(),i(l)};r.onclick=()=>a(!0),n.querySelector("[data-cancel]").onclick=()=>a(!1)})}var Os,Ll,Jk,Rl,go,Ds=w(()=>{"use strict";D();Cm();Os=()=>u.hostFeatures?.includes("script-manager")??!1,Ll=new WeakMap,Jk=5e3;Rl=s=>new Promise((e,t)=>{let o=new FileReader;o.onload=()=>e(String(o.result).slice(String(o.result).indexOf(",")+1)),o.onerror=()=>t(o.error),o.readAsDataURL(s)});go=s=>s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`});var Nl={};A(Nl,{open:()=>sy});var Qk,ey,Pl,ty,Do,Ge,Il,oy,sy,_l=w(()=>{"use strict";D();Em();vn();Ds();Oo();Qk=120,ey=4*1024*1024,Pl="custom.css",ty=()=>u.hostFeatures?.includes("css-manager")??!1,Do=s=>/\.css$/i.test(s)?s:`${s}.css`,Ge=(s,e)=>window.chrome.webview.postMessage(e?`css-${s} ${JSON.stringify(e)}`:`css-${s}`),Il=class{constructor(){this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.files=[],this.active=null,this.listed=!1,this.saving=null,this.savingName=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.closeAfterSave=!1,this.forceClose=!1,this.legacy=!1,this.live=!0,this.previewTimer=0}open(){if(this.popup)return;if(!ts()){u.showNotification("The CSS Manager needs a newer Kute. Update Kute to use it.",!1,6);return}this.legacy=!ty(),this.popup=fo($m,{onMessage:i=>this.receive(i),canClose:()=>this.canClose()});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{clearTimeout(this.previewTimer),Lt.revert(),this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.listed=!1,this.saving=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.forceClose=!1}),this.$("#ccFolder").onclick=()=>Ge("reveal",{name:this.editing??""}),this.$("#ccOff").hidden=u.settings.data.customCss!==!1,this.$("#ccStore").onclick=()=>this.openStore(),this.$("#ccStoreBack").onclick=()=>{this.$("#ccStorePanel").hidden=!0,this.$(".managerBody").classList.remove("storeOpen")};let o=this.$("#ccLive");o.checked=this.live,o.onchange=()=>{this.live=o.checked,this.preview()};let n=e.host.parentElement;if(this.$("#ccPeek").onpointerdown=i=>{i.preventDefault(),n.style.opacity="0",window.addEventListener("pointerup",()=>{n.style.opacity=""},{once:!0,signal:t})},this.legacy){this.$(".managerPopup").classList.add("legacy"),this.$("#ccHint").textContent="Loaded after all of Krunker's styles, so a rule with the same selector wins. Saved as Documents\\kute\\custom.css. Update Kute to keep several CSS files and switch between them.",this.$("#ccEditor").textContent="Loading...",Ge("read");return}this.$("#ccNew").onclick=()=>this.create(),this.$("#ccPaste").onclick=()=>this.paste();let r=this.$("#ccImportInput");this.$("#ccImport").onclick=()=>r.click(),r.onchange=()=>{this.importFiles([...r.files??[]]),r.value=""},st(this.$("#ccFiles"),i=>this.importFiles(i.map(a=>a.file))),this.$("#ccEditor").textContent="Loading...",Ge("list")}async openStore(){let e=this.$("#ccStorePanel"),t=this.$("#ccStoreList");this.$(".managerBody").classList.add("storeOpen"),e.hidden=!1,t.replaceChildren();let o=document.createElement("p");o.textContent="Loading the CSS Store...",t.append(o);try{let n=await fetch("https://raw.githubusercontent.com/Liamoulee/KSS/main/index.json");if(!n.ok)throw new Error(`HTTP ${n.status}`);let r=await n.json();t.replaceChildren();for(let i of r){let a=document.createElement("div");if(a.className="storeCard",i.preview){let m=document.createElement("img");m.src=i.preview.startsWith("https://")?i.preview:"https://raw.githubusercontent.com/Liamoulee/KSS/main/"+i.preview.split("/").map(encodeURIComponent).join("/"),m.alt=`${i.name} preview`,m.onerror=()=>m.remove(),a.append(m)}let l=document.createElement("h3");l.textContent=i.name;let c=document.createElement("p");c.textContent=`By ${i.author}`;let d=document.createElement("button");d.className="storeDownloadBtn";let h=this.files.some(m=>m.name.toLowerCase()===Do(i.name).toLowerCase()),p=m=>{d.textContent=m};p(h?"Already downloaded":"Download the CSS"),h&&(d.classList.add("installed"),d.disabled=!0),d.onclick=async()=>{if(h=this.files.some(m=>m.name.toLowerCase()===Do(i.name).toLowerCase()),h){p("Already downloaded"),d.classList.add("installed"),d.disabled=!0;return}d.disabled=!0,p("Downloading...");try{let m=await fetch("https://raw.githubusercontent.com/Liamoulee/KSS/main/"+i.file.split("/").map(encodeURIComponent).join("/"));if(!m.ok)throw new Error(`HTTP ${m.status}`);let f=await m.text();Ge("import",{name:Do(i.name),content:f}),h=!0,p("Already downloaded"),d.classList.add("installed"),d.disabled=!0}catch(m){console.error("CSS Store import failed:",m),d.disabled=!1,p("Try again")}},a.append(l,c,d),t.append(a)}r.length===0&&(t.textContent="No CSS available.")}catch(n){console.error("CSS Store failed to load:",n),t.replaceChildren();let r=document.createElement("p");r.textContent="Unable to load the CSS Store. Please try again later.",t.append(r)}}$(e){return this.popup?.shadow.querySelector(e)}receive(e){if(typeof e.managerError=="string"&&this.popup?.showError(e.managerError),this.legacy){typeof e.customCss?.content=="string"&&!this.editor&&(this.active=Pl,this.showEditor(Pl,e.customCss.content)),e.customCssSaved&&this.saving!==null&&this.saved(e.customCssSaved.error,Pl);return}e.cssFiles&&this.updateList(e.cssFiles),e.cssFile&&e.cssFile.name===this.loading&&(this.loading=null,typeof e.cssFile.content=="string"?this.showEditor(e.cssFile.name,e.cssFile.content):this.popup?.showError(`Could not read ${e.cssFile.name}`)),e.cssSaved&&this.saving!==null&&e.cssSaved.name===this.savingName&&this.saved(e.cssSaved.error,e.cssSaved.name),e.cssImported&&this.imported(e.cssImported),e.cssActivated&&(this.activating=!1,e.cssActivated.error?this.popup?.showError(`Could not switch: ${e.cssActivated.error}`):Lt.markSaved(String(e.cssActivated.content??"")),this.preview())}updateList(e){this.files=Array.isArray(e.files)?e.files:[];let t=this.active;this.active=e.active??null,t&&!this.active&&!this.activating&&(Lt.markSaved(""),this.preview());let o=new Set(this.files.map(n=>n.name));if(this.renaming&&this.editing===this.renaming.from&&o.has(this.renaming.to)){this.editing=this.renaming.to;let n=this.popup?.shadow.querySelector(".editorFile")?.firstChild;n&&(n.textContent=this.editing)}if(this.renaming=null,this.editing&&!o.has(this.editing)&&this.closeEditor(),!this.listed){this.listed=!0;let n=this.active??this.files[0]?.name;n?this.load(n):this.closeEditor()}this.renderList()}renderList(){let e=this.$("#ccList");if(e){if(e.textContent="",!this.files.length){let t=document.createElement("div");t.className="empty",t.textContent="No CSS files yet. Make one with New, paste one, or import .css files.",e.append(t)}for(let t of this.files)e.append(this.row(t));e.append(this.row(null))}}row(e){let t=e?.name??"",o=document.createElement("div");o.className="cssRow",o.classList.toggle("none",!e),o.classList.toggle("active",(this.active??"")===t),o.classList.toggle("editing",!!e&&this.editing===t);let n=document.createElement("div");n.className="cssRadio",n.title=e?"Use this one":"No CSS",n.onclick=l=>{l.stopPropagation(),this.activate(t)};let r=document.createElement("div");if(r.className="cssName",r.textContent=e?t:"None",o.append(n,r),!e)return o.onclick=()=>this.activate(""),o;let i=document.createElement("div");i.className="cssSize",i.textContent=go(e.size);let a=document.createElement("div");a.className="cssActions";for(let[l,c,d,h]of[["edit","Rename",()=>this.rename(t),!1],["delete","Delete",()=>this.remove(t),!0]]){let p=document.createElement("div");p.className=h?"iconBtn danger":"iconBtn",p.title=c,p.innerHTML=`${l}`,p.onclick=m=>{m.stopPropagation(),d()},a.append(p)}return o.append(i,a),o.onclick=()=>this.load(t),o}async load(e){e===this.editing&&this.editor||await this.discardChanges()&&(this.loading=e,Ge("get",{name:e}))}showEditor(e,t){let o=this.$("#ccEditor");if(!o)return;let{editor:n}=po(o,{title:e,content:t,language:"css",onSave:r=>this.save(r),onClose:()=>this.popup?.close(),onChange:()=>{clearTimeout(this.previewTimer),this.previewTimer=setTimeout(()=>this.preview(),Qk)}});this.editor=n,this.editing=e,this.renderList(),this.preview()}closeEditor(){this.editor=null,this.editing=null;let e=this.$("#ccEditor");e&&(e.innerHTML='
      Pick a file below to edit it.
      '),this.preview()}preview(){let{editor:e}=this;this.live&&e&&(this.editing===this.active||e.isDirty())?Lt.apply(e.getValue()):Lt.revert()}async discardChanges(){return!this.editor?.isDirty()||!this.popup?!0:Re(this.popup.shadow,"Unsaved changes",`Throw the changes to ${this.editing} away?`,"Discard")}save(e){!this.editor||!this.editing||this.saving!==null||(this.closeAfterSave=e,this.saving=this.editor.getValue(),this.savingName=this.editing,this.legacy?window.chrome.webview.postMessage(`css-write ${JSON.stringify({content:this.saving})}`):Ge("save",{name:this.editing,content:this.saving}))}saved(e,t){let o=this.saving??"";if(this.saving=null,e){this.popup?.showError(`Could not save: ${e}`);return}t===this.active&&Lt.markSaved(o),t===this.editing&&this.editor?.markSaved(o),this.preview(),this.closeAfterSave&&this.popup?.close()}activate(e){e===(this.active??"")||this.activating||(this.activating=!0,Ge("activate",{name:e}))}async create(){if(!this.popup)return;let e=await nt(this.popup.shadow,"New CSS file","theme.css","Ends in .css");e&&(this.openAfterImport=Do(e),Ge("import",{name:this.openAfterImport,content:""}))}async paste(){if(!this.popup)return;let e="";try{e=await navigator.clipboard.readText()}catch{this.popup.showError("Could not read the clipboard.");return}if(!e.trim()){this.popup.showError("The clipboard has no text in it. Copy the CSS first.");return}let t=await nt(this.popup.shadow,"Name for the pasted CSS","pasted.css","Ends in .css");t&&(this.openAfterImport=Do(t),Ge("import",{name:this.openAfterImport,content:e}))}async importFiles(e){let t=[];for(let o of e){if(!/\.css$/i.test(o.name)||o.size>ey){t.push(o.name);continue}Ge("import",{name:o.name,content:await o.text()})}t.length&&this.popup?.showError(`Not imported (only .css files up to 4 MB): ${t.join(", ")}`)}imported(e){if(e.error){this.popup?.showError(`Could not add ${e.requested}: ${e.error}`);return}this.active||this.activate(e.name),e.requested===this.openAfterImport?(this.openAfterImport=null,this.load(e.name)):this.editing||this.load(e.name)}async rename(e){if(!this.popup)return;let t=await nt(this.popup.shadow,`Rename ${e}`,e,"Ends in .css");if(!t)return;let o=Do(t);o!==e&&(this.renaming={from:e,to:o},Ge("rename",{from:e,to:o}))}async remove(e){!this.popup||!await Re(this.popup.shadow,`Delete ${e}?`,"It goes to the recycle bin.","Delete")||Ge("delete",{name:e})}canClose(){return this.forceClose||!this.editor?.isDirty()||!this.popup?!0:(Re(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},oy=new Il,sy=()=>oy.open()});var Am={};A(Am,{hostWatchesSwapper:()=>dr,reloadStylesheets:()=>Fs});var dr,Fs,ur=w(()=>{"use strict";D();dr=()=>u.hostFeatures?.includes("swapper-watch")??!1,Fs=s=>{for(let e of document.querySelectorAll('link[rel="stylesheet"]')){if(!(e instanceof HTMLLinkElement)||!e.href)continue;let t=new URL(e.href);if(!/(^|\.)krunker\.io$/.test(t.hostname)||!s.has(t.pathname.slice(1).toLowerCase()))continue;t.searchParams.set("kuteSwap",String(Date.now()));let o=e.cloneNode();o.href=t.href,o.addEventListener("load",()=>e.remove(),{once:!0}),o.addEventListener("error",()=>o.remove(),{once:!0}),e.after(o)}}});var Rm,Lm=w(()=>{Rm='

      Userscripts

      Userscripts off
      folder_openOpen scripts folder
      ×
      Scripts run inside Krunker. Only add scripts you trust, and never anything that breaks krunker.io/docs/terms.txt. Drop .js files onto a group, or create one with New script.
      '});var zl={};A(zl,{open:()=>ly});var ry,iy,oe,qs,Bl,ay,ly,Hl=w(()=>{"use strict";D();Lm();es();Ds();Oo();ry=4*1024*1024,iy=`// ==UserScript== // @name {{name}} // @author // @version 1.0 @@ -208,10 +208,10 @@ this.unload = () => {}; return this; `,oe=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},qs=(s,e,t,o="")=>{let n=oe("div",`iconBtn ${o}`);return n.title=e,n.append(oe("span","mi",s)),n.onclick=t,n},Bl=class{constructor(){this.popup=null,this.groups=[],this.openSettings=new Set,this.editing=null,this.pendingRead=null,this.pendingSave=null,this.needsRefresh=!1,this.renderQueued=!1,this.forceClose=!1,this.prefsTimers=new Map,Je&&(Je.onChange=()=>this.queueRender()),u.userscriptManager.masterChanged=e=>this.onMasterChanged(e)}masterOn(){return u.settings?.data?.userscripts!==!1}onMasterChanged(e){if(e&&!Je)this.needsRefresh=!0;else if(e&&!At())for(let t of this.groups.filter(o=>o.id==="game").flatMap(o=>o.scripts)){let o=this.entryFor(t.key);!o||!t.enabled||(o.start(),(o.tainted||o.state!=="running"&&o.state!=="waiting"&&o.state!=="error")&&(this.needsRefresh=!0))}this.updateNotice(),this.editing||this.render()}reload(e){return e.length?At()?(To(e,!0,this.masterOn()),!0):!1:!0}applyMaster(){let e=this.popup?.shadow;if(!e)return;let t=this.masterOn();e.querySelector(".managerPopup")?.classList.toggle("scriptsOff",!t);let o=e.querySelector("#usMaster");o&&(o.classList.toggle("on",t),o.querySelector(".toggle")?.classList.toggle("on",t),o.querySelector("span").textContent=t?"Userscripts on":"Userscripts off")}open(){if(this.popup)return;if(!Os()){window.chrome.webview.postMessage("open, userscripts"),u.showNotification("This Kute version can only open the scripts folder. Update Kute for the script manager.",!1,6);return}this.popup=fo(Rm,{onMessage:t=>this.receive(t),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1}),this.popup.signal.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.forceClose=!1});let{shadow:e}=this.popup;e.querySelector("#usFolder").onclick=()=>this.send("reveal",{}),e.querySelector("#usRefreshNow").onclick=()=>location.reload(),e.querySelector("#usMaster").onclick=()=>u.settings.changeSetting("userscripts",!this.masterOn(),!1),this.applyMaster(),this.body().textContent="Loading...",this.send("list",{})}send(e,t){window.chrome.webview.postMessage(`scripts-${e} ${JSON.stringify(t)}`)}body(){return this.popup?.shadow.querySelector("#usBody")}receive(e){if(e.managerError&&(this.popup?.showError(e.managerError),this.pendingSave&&(this.pendingSave=null)),e.userscripts){if(this.groups=e.userscripts.groups??[],this.pendingSave&&this.editing){let{closeAfter:t}=this.pendingSave;this.pendingSave=null,this.editing.editor.markSaved(),this.editing.group==="game"&&!this.reload([this.editing.file])&&(this.needsRefresh=!0),t&&(this.editing=null)}this.editing||this.render(),this.updateNotice()}if(e.userscriptSource&&e.userscriptSource.key===this.pendingRead){this.pendingRead=null;let t=this.findScript(e.userscriptSource.key);t&&typeof e.userscriptSource.content=="string"?this.showEditor(t.group,t.file,e.userscriptSource.content):this.popup?.showError("The script could not be read.")}}findScript(e){for(let t of this.groups){let o=t.scripts.find(n=>n.key===e);if(o)return o}}entryFor(e){return Je?.entries?.find(t=>t.key===e)}queueRender(){!this.popup||this.renderQueued||(this.renderQueued=!0,queueMicrotask(()=>{this.renderQueued=!1,this.updateNotice(),this.popup&&!this.editing&&this.render()}))}updateNotice(){let e=this.popup?.shadow.querySelector("#usRefresh");if(!e)return;let t=this.masterOn(),o=Je?.entries?.some(n=>n.outdated||!t&&n.state==="running");e.hidden=!this.needsRefresh&&!o}render(){let e=this.body();if(!(!e||!this.popup)){this.applyMaster(),e.textContent="";for(let t of this.groups)e.append(this.renderGroup(t))}}renderGroup(e){let t=oe("div","group"),o=oe("div","groupHead");o.append(oe("div","groupTitle",e.label),oe("div","groupRuns",`runs in ${e.runs}`));let n=oe("div","btn small");n.append(oe("span","mi","add"),"New script"),n.onclick=()=>this.createScript(e.id),o.append(n),t.append(o),e.scripts.length===0&&t.append(oe("div","empty","No scripts yet."));for(let r of e.scripts)this.renderScript(t,e,r);return t.append(oe("div","dropZone",`Drop .js files here to add them to ${e.label}`)),st(t,r=>this.importFiles(e,r)),t}async importFiles(e,t){if(!this.popup)return;let o=[],n=t.filter(({file:a})=>{if(!/\.js$/i.test(a.name))o.push(`${a.name}: not a .js file`);else if(a.size>ry)o.push(`${a.name}: larger than 4 MB`);else return!0;return!1}),r=new Set(e.scripts.map(a=>a.file.toLowerCase())),i=n.filter(({file:a})=>r.has(a.name.toLowerCase())).map(({file:a})=>a.name);if(i.length){let a=`${i.join(", ")} already exist in ${e.label}. Replace them with the dropped files?`;if(!await Re(this.popup.shadow,"Replace scripts?",a,"Replace"))return}for(let{file:a}of n)this.send("write",{group:e.id,file:a.name,content:await a.text(),noList:!0});this.send("list",{}),e.id==="game"&&!this.reload(n.map(({file:a})=>a.name))&&(this.needsRefresh=!0),this.updateNotice(),o.length&&this.popup?.showError(o.join(` -`))}stateOf(e,t,o){return t?.state==="error"?["Error","bad",t.error]:t?.outdated?["Old version","warn","Your changes apply after a refresh, this script has no unload to stop the running version"]:this.masterOn()?o||!Je?e.enabled?["On","ok",""]:["Off","",""]:e.enabled?t?.state==="running"?["Running","ok",t.late?"Started after the page loaded. It is a document-start script, refresh if it misses something":""]:t?.state==="waiting"?["Starting","ok","Starts once the page has loaded"]:!t&&At()?["Starting","ok",""]:["After refresh","warn","On, starts with the next page load"]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:["Off","",""]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:e.enabled?["On","","Runs once userscripts are on"]:["Off","",""]}renderScript(e,t,o){let n=t.id!=="game",r=n?void 0:this.entryFor(o.key),i=r?.meta??o.meta,a=oe("div","scriptRow"),l=oe("div",`toggle${o.enabled?" on":""}`);l.title=o.enabled?"Turn off":"Turn on",l.onclick=()=>this.toggle(o,r,n);let c=oe("div","scriptInfo"),d=oe("div","scriptName",i.name||o.file);i.version&&d.append(oe("span","version",`v${i.version}`)),i.author&&d.append(oe("span","author",`by ${i.author}`)),c.append(d);let p=[i.desc,i.name?o.file:"",go(o.size)].filter(Boolean).join(" \xB7 ");c.append(oe("div","scriptDesc",p)),c.title=[i.desc,`${o.file}, ${o.runAt}${o.priority?`, priority ${o.priority}`:""}`].filter(Boolean).join(` -`);let[h,f,m]=this.stateOf(o,r,n),g=oe("div",`state ${f}`,h);m&&(g.title=m);let b=oe("div","scriptActions");r?.settings&&Object.keys(r.settings).length&&b.append(qs("tune","Script settings",()=>{this.openSettings.has(o.key)?this.openSettings.delete(o.key):this.openSettings.add(o.key),this.render()})),b.append(qs("edit","Edit",()=>{this.pendingRead=o.key,this.send("read",{key:o.key})}),qs("swap_horiz",`Move to ${n?"Game":"Social"}`,()=>this.move(o,r,n)),qs("folder_open","Show in folder",()=>this.send("reveal",{key:o.key})),qs("delete","Delete (goes to the recycle bin)",()=>this.deleteScript(o,r),"danger")),a.append(l,c,g,b),e.append(a),r?.settings&&this.openSettings.has(o.key)&&e.append(this.renderSettings(o,r))}toggle(e,t,o){e.enabled=!e.enabled,this.send("toggle",{key:e.key,enabled:e.enabled}),o||this.masterOn()&&(t?e.enabled?(t.start(),(t.tainted||t.state!=="running"&&t.state!=="waiting"&&t.state!=="error")&&(this.needsRefresh=!0)):t.stop()||(this.needsRefresh=!0):e.enabled&&At()?To([e.key],!1,!0):e.enabled&&(this.needsRefresh=!0)),this.updateNotice(),this.render()}move(e,t,o){t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("move",{key:e.key,group:o?"game":"social"}),o&&!this.reload([e.file])&&(this.needsRefresh=!0),this.updateNotice()}async deleteScript(e,t){!this.popup||!await Re(this.popup.shadow,`Delete ${e.file}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||(t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("delete",{key:e.key}))}async createScript(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New script","my-script.js","The file name. It ends up in the scripts folder of this group.");if(!t)return;let o=/\.js$/i.test(t)?t:`${t}.js`;if(this.groups.some(r=>r.id===e&&r.scripts.some(i=>i.file.toLowerCase()===o.toLowerCase()))){this.popup.showError(`${o} already exists in this group.`);return}this.showEditor(e,o,iy.replaceAll("{{name}}",o.replace(/\.js$/i,"")),!0)}renderSettings(e,t){let o=oe("div","scriptSettings"),n=t.settings??{},r=()=>{clearTimeout(this.prefsTimers.get(e.key)),this.prefsTimers.set(e.key,setTimeout(()=>{this.prefsTimers.delete(e.key);let a=Object.fromEntries(Object.entries(n).map(([l,c])=>[l,c.value]));this.send("prefs",{key:e.key,prefs:a})},300))},i=(a,l)=>{t.setPref(a,l),r()};for(let[a,l]of Object.entries(n)){let c=oe("div","settingRow"),d=oe("div","settingLabel",l.title||a);l.desc&&d.append(oe("small","",l.desc)),c.append(d,this.settingControl(a,l,i)),o.append(c)}return o}settingControl(e,t,o){switch(t.type){case"bool":{let n=oe("div",`toggle${t.value?" on":""}`);return n.onclick=()=>{o(e,!t.value),n.classList.toggle("on",!!t.value)},n}case"num":{let n=oe("div");n.style.cssText="display:flex;gap:.6em;align-items:center";let r=oe("input");if(r.type="number",r.style.width="90px",r.value=String(t.value),t.min!==void 0&&(r.min=String(t.min)),t.max!==void 0&&(r.max=String(t.max)),r.step=String(t.step??"any"),t.min!==void 0&&t.max!==void 0){let i=oe("input");i.type="range",i.min=String(t.min),i.max=String(t.max),i.step=String(t.step??"any"),i.value=String(t.value),i.oninput=()=>{r.value=i.value,o(e,Number(i.value))},r.onchange=()=>{i.value=r.value},n.append(i)}return r.addEventListener("change",()=>{r.value!==""&&Number.isFinite(Number(r.value))&&o(e,Number(r.value))}),n.append(r),n}case"sel":{let n=oe("select");for(let r of t.opts??[]){let i=oe("option","",String(r));i.value=String(r),i.selected=r===t.value,n.append(i)}return n.onchange=()=>{let r=(t.opts??[]).find(i=>String(i)===n.value);o(e,r??n.value)},n}case"color":{let n=oe("input");return n.type="color",n.value=String(t.value),n.onchange=()=>o(e,n.value),n}case"text":{let n=oe("input");return n.type="text",n.value=String(t.value??""),n.onchange=()=>o(e,n.value),n}case"keybind":{let n=i=>[i?.ctrl&&"Ctrl",i?.alt&&"Alt",i?.shift&&"Shift",i?.key||"none"].filter(Boolean).join(" + "),r=oe("div","btn small",n(t.value));return r.onclick=()=>{r.textContent="Press a key...";let i=a=>{if(["Control","Alt","Shift","Meta"].includes(a.key))return;a.preventDefault(),a.stopPropagation(),window.removeEventListener("keydown",i,!0);let l={key:a.key.toLowerCase(),ctrl:a.ctrlKey,alt:a.altKey,shift:a.shiftKey};o(e,l),r.textContent=n(l)};window.addEventListener("keydown",i,!0)},r}default:return oe("div","scriptFile",`unsupported type "${t.type}"`)}}showEditor(e,t,o,n=!1){let r=this.body();if(!r)return;let{editor:i}=po(r,{title:t,content:o,language:"js",isNew:n,onSave:a=>{this.editing&&(this.pendingSave={closeAfter:a},this.editing.closeAfterSave=a,this.send("write",{group:e,file:t,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={group:e,file:t,editor:i,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Re(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||(this.editing=null,this.render())}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Re(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},ay=new Bl,ly=()=>ay.open()});var Im,Pm=w(()=>{Im=`

      Swapper

      refreshReload list
      folder_openOpen swapper folder
      ×
      A file in the swapper folder replaces the game's file with the same path: swapper/textures/pistol.png replaces krunker.io/textures/pistol.png. Easiest way: drop your file onto the game file it should replace (right side), it gets the right folder and name. Folder names do not care about case. Text files like CSS can be written right here: New file, or the edit button on a game file to start from a copy.
      Your swaps
      note_addNew file
      create_new_folderNew folder
      Drop files or folders here to put them into the swapper folder as they are
      Game files
      `});var ql={};A(ql,{open:()=>my});var dy,uy,Nm,pr,py,Ol,ce,rt,Ks,Bm,_m,Dl,Fl,hy,my,Kl=w(()=>{"use strict";D();Pm();Ds();Oo();ur();dy=new Set(["css","js","mjs","json","txt","html","htm","svg","xml","obj","mtl","glsl","frag","vert","md","csv"]),uy=4*1024*1024,Nm=s=>dy.has(s.slice(s.lastIndexOf(".")+1).toLowerCase()),pr=()=>u.hostFeatures?.includes("swapper-editor")??!1,py=32*1024*1024,Ol=400,ce=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},rt=(s,e,t,o="")=>{let n=ce("div",`iconBtn ${o}`);return n.title=e,n.append(ce("span","mi",s)),n.onclick=r=>{r.stopPropagation(),t()},n},Ks=s=>s.slice(s.lastIndexOf("/")+1),Bm=s=>s.includes("/")?s.slice(0,s.lastIndexOf("/")):"",_m=(s,e)=>{let t={name:"",path:"",folders:new Map,files:[]},o=n=>{let r=t;for(let i of n.split("/").filter(Boolean)){let a=r.folders.get(i);a||(a={name:i,path:r.path?`${r.path}/${i}`:i,folders:new Map,files:[]},r.folders.set(i,a)),r=a}return r};for(let n of e)o(n);for(let n of s)o(Bm(n.path)).files.push({name:Ks(n.path),path:n.path,size:n.size});return t},Dl=s=>s.files.length+[...s.folders.values()].reduce((e,t)=>e+Dl(t),0),Fl=class{constructor(){this.popup=null,this.list=null,this.collapsedOwn=new Set,this.expandedGame=new Set,this.search="",this.touched=new Set,this.stale=new Set,this.uploadDone=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1}open(){if(this.popup)return;if(!Os()){window.chrome.webview.postMessage("open, swapper"),u.showNotification("This Kute version can only open the swapper folder. Update Kute for the swapper manager.",!1,6);return}this.popup=fo(Im,{onMessage:r=>this.receive(r),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1,this.uploadDone?.(null),this.uploadDone=null}),e.querySelector("#swFolder").onclick=()=>this.send("reveal",{path:""}),e.querySelector("#swReload").onclick=()=>this.send("list",{}),e.querySelector("#swRefreshNow").onclick=()=>location.reload(),e.querySelector("#swNewFolder").onclick=()=>this.newFolder("");let o=e.querySelector("#swNewFile");pr()||(o.style.display="none"),o.onclick=()=>this.newFile(""),st(e.querySelector("#swOwnColumn"),r=>this.drop("",r));let n=e.querySelector("#swSearch");n.value=this.search,n.oninput=()=>{this.search=n.value.trim().toLowerCase(),this.renderGame()},e.querySelector("#swOwnTree").textContent="Loading...",this.send("list",{}),dr()||window.addEventListener("focus",()=>{!this.editing&&!this.uploadDone&&this.send("list",{})},{signal:t})}send(e,t){window.chrome.webview.postMessage(`swapper-${e} ${JSON.stringify(t)}`)}async drop(e,t){let o=t;!e&&o.every(({path:n})=>n.toLowerCase().startsWith("swapper/"))&&(o=o.map(({path:n,file:r})=>({path:n.slice(8),file:r}))),await this.upload(o.map(({path:n,file:r})=>({path:e?`${e}/${n}`:n,file:r})))}async replace(e,t){if(!this.popup)return;if(t.length!==1){this.popup.showError("Drop exactly one file onto a game file. Drop several onto a folder instead.");return}let[{file:o}]=t,n=r=>r.slice(r.lastIndexOf(".")+1).toLowerCase();if(n(o.name)!==n(e)){let r=`${o.name} is saved as ${Ks(e)}, the game will read it as .${n(e)}. Go ahead?`;if(!await Re(this.popup.shadow,"Different file type",r,"Save anyway"))return}await this.upload([{path:e,file:o}])}async upload(e){let t=[];for(let{path:o,file:n}of e){if(!this.popup)return;if(n.size>py){t.push(`${o}: larger than 32 MB, put it in with Open swapper folder`);continue}let r=await Rl(n),i=await new Promise(a=>{this.uploadDone=a,this.send("upload",{path:o,data:r})});i?t.push(i):this.touched.add(o.toLowerCase())}this.send("list",{}),t.length&&this.popup?.showError(t.join(` -`))}receive(e){if(e.managerError&&this.popup?.showError(e.managerError),e.swapperUploaded){let o=this.uploadDone;this.uploadDone=null,o?.(e.swapperUploaded.error??null)}if(e.swapperSource&&e.swapperSource.path===this.pendingRead&&(this.pendingRead=null,typeof e.swapperSource.content=="string"?this.showEditor(e.swapperSource.path,e.swapperSource.content):this.popup?.showError(`${e.swapperSource.path} could not be read as text.`)),e.swapperWritten&&this.saving&&(this.saving=!1,e.swapperWritten.error?this.popup?.showError(e.swapperWritten.error):this.editing&&(this.touched.add(this.editing.path.toLowerCase()),this.editing.editor.markSaved(),this.editing.closeAfterSave&&this.closeEditor())),e.swapperChanged&&!this.editing&&!this.uploadDone&&this.send("list",{}),!e.swapper)return;let t=this.list;this.list=e.swapper,t&&this.applyChanges(t,e.swapper),this.render()}applyChanges(e,t){let o=c=>new Map(c.files.map(d=>[d.path.toLowerCase(),d.size])),n=o(e),r=o(t),i=new Set(this.touched);if(this.touched.clear(),e.enabled!==t.enabled)for(let c of[...n.keys(),...r.keys()])i.add(c);for(let[c,d]of r)n.get(c)!==d&&i.add(c);for(let c of n.keys())r.has(c)||i.add(c);if(!i.size)return;let a=new Set([...i].filter(c=>c.endsWith(".css")));a.size&&!dr()&&Fs(a);let l=new Set(t.seen.map(c=>c.toLowerCase()));for(let c of i)!a.has(c)&&l.has(c)&&this.stale.add(c)}get(e){return this.popup?.shadow.querySelector(e)}render(){if(!this.popup||!this.list)return;let e=this.get("#swNotice"),t=this.list.enabled===!1;e.hidden=!t&&!this.stale.size;let o=this.stale.size;e.querySelector("span").textContent=t?"The swapper is switched off (Settings, Customization), none of these files are used.":`The game already loaded ${o===1?"1 changed file":`${o} changed files`}, ${o===1?"it changes":"they change"} after a page refresh.`,this.renderOwn(),this.renderGame()}renderOwn(){if(!this.list)return;let e=this.get("#swOwnTree");e.textContent="";let t=_m(this.list.files,this.list.dirs);if(this.get("#swOwnCount").textContent=`${this.list.files.length} file${this.list.files.length===1?"":"s"}`,!this.list.files.length&&!this.list.dirs.length){e.append(ce("div","treeNote","Nothing swapped yet. Drop a file onto one of the game files on the right, or drop a whole swapper pack here."));return}let o=new Map(this.list.seen.map(i=>[i.toLowerCase(),i])),n=new Map;for(let i of this.list.seen){let a=Ks(i).toLowerCase();n.set(a,[...n.get(a)??[],i])}let r=(i,a)=>{for(let l of[...i.folders.values()].sort((c,d)=>c.name.localeCompare(d.name))){let c=this.collapsedOwn.has(l.path),d=this.folderRow(l.name,a,!c,`${Dl(l)}`);d.onclick=()=>{c?this.collapsedOwn.delete(l.path):this.collapsedOwn.add(l.path),this.renderOwn()};let p=d.querySelector(".scriptActions");pr()&&p?.append(rt("note_add","New file inside",()=>this.newFile(l.path))),p?.append(rt("create_new_folder","New folder inside",()=>this.newFolder(l.path)),rt("drive_file_rename_outline","Rename or move",()=>this.move(l.path)),rt("folder_open","Open in Explorer",()=>this.send("reveal",{path:l.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(l.path),"danger")),st(d,h=>this.drop(l.path,h)),e.append(d),c||r(l,a+1)}for(let l of[...i.files].sort((c,d)=>c.name.localeCompare(d.name)))e.append(this.ownFileRow(l,a,o,n))};r(t,0)}folderRow(e,t,o,n){let r=ce("div","node folder");return r.style.setProperty("--depth",String(t)),r.append(ce("span","mi",o?"expand_more":"chevron_right"),ce("span","mi kind",o?"folder_open":"folder")),r.append(ce("span","nodeName",e),ce("span","nodeSize",n),ce("div","scriptActions")),r}ownFileRow(e,t,o,n){let r=ce("div","node");r.style.setProperty("--depth",String(t+1)),r.append(ce("span","mi","description"),ce("span","nodeName",e.name),ce("span","nodeSize",go(e.size)));let i=o.get(e.path.toLowerCase()),a=(n.get(e.name.toLowerCase())??[]).filter(c=>c.toLowerCase()!==e.path.toLowerCase());if(i){let c=ce("span","state ok","Used");c.title=`The game loaded krunker.io/${i} this session, this file replaced it.`,r.append(c)}else if(a.length){let[c]=a,d=ce("span","state warn","Wrong folder?");d.title=`The game asks for this file as ${a.join(", ")}`;let p=ce("div","btn small","Move there");p.title=`Move to ${c}`,p.onclick=()=>this.send("move",{from:e.path,to:c}),r.append(d,p)}else{let c=ce("span","state","Not requested");c.title="The game did not ask for this path in this session. It may still come (another map, a skin), or the path does not match any game file.",r.append(c)}let l=ce("div","scriptActions");return pr()&&Nm(e.path)&&e.size<=uy&&(l.append(rt("edit","Edit",()=>this.edit(e.path))),r.ondblclick=()=>this.edit(e.path)),l.append(rt("drive_file_rename_outline","Rename or move",()=>this.move(e.path)),rt("folder_open","Show in Explorer",()=>this.send("reveal",{path:e.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(e.path),"danger")),r.append(l),st(r,c=>this.drop(Bm(e.path),c)),r}renderGame(){if(!this.list||!this.popup)return;let e=this.get("#swGameTree");e.textContent="";let{seen:t}=this.list;this.get("#swGameCount").textContent=`${t.length} loaded this session`;let o=new Set(this.list.files.map(a=>a.path.toLowerCase()));if(!t.length){e.append(ce("div","treeNote","The game has not loaded any files yet. Play a round or open a menu, then Reload list."));return}let n=(a,l)=>{let c=ce("div","node");if(c.style.setProperty("--depth",String(l)),c.title=`krunker.io/${a} -Drop a file here to replace it`,c.append(ce("span","mi","insert_drive_file"),ce("span","nodeName",l?Ks(a):a)),o.has(a.toLowerCase())&&c.append(ce("span","swapped","swapped")),pr()&&Nm(a)){let d=this.list?.files.find(h=>h.path.toLowerCase()===a.toLowerCase()),p=ce("div","scriptActions");d?p.append(rt("edit","Edit your swap",()=>this.edit(d.path))):p.append(rt("edit_note","Edit a copy, saving it swaps the file",()=>this.editCopy(a))),c.append(p)}return st(c,d=>this.replace(a,d)),c};if(this.search){let a=t.filter(l=>l.toLowerCase().includes(this.search));for(let l of a.slice(0,Ol))e.append(n(l,0));a.length||e.append(ce("div","treeNote","No game file matches.")),a.length>Ol&&e.append(ce("div","treeNote",`${a.length-Ol} more, search for something longer.`));return}let r=_m(t.map(a=>({path:a,size:0})),[]),i=(a,l)=>{for(let c of[...a.folders.values()].sort((d,p)=>d.name.localeCompare(p.name))){let d=this.expandedGame.has(c.path),p=this.folderRow(c.name,l,d,`${Dl(c)}`);p.title="Drop files here to put them into this folder",p.onclick=()=>{d?this.expandedGame.delete(c.path):this.expandedGame.add(c.path),this.renderGame()},st(p,h=>this.drop(c.path,h)),e.append(p),d&&i(c,l+1)}for(let c of[...a.files].sort((d,p)=>d.name.localeCompare(p.name)))e.append(n(c.path,l+1))};i(r,0)}async newFile(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New file",e?`${e}/new.css`:"css/new.css","A path inside the swapper folder, the same path the game loads the file from");if(!t)return;let o=t.replace(/^\/+/,"");if(this.list?.files.some(n=>n.path.toLowerCase()===o.toLowerCase())){this.popup.showError(`${o} already exists, edit it instead.`);return}this.showEditor(o,"",!0)}edit(e){this.pendingRead||this.editing||(this.pendingRead=e,this.send("read",{path:e}))}async editCopy(e){if(this.pendingRead||this.editing)return;this.pendingRead=e;let t=null;for(let o of["https://krunker.io","https://assets.krunker.io"])try{let n=await fetch(`${o}/${e}`);if(n.ok){t=await n.text();break}}catch{}this.pendingRead===e&&(this.pendingRead=null,t===null&&(this.popup?.showError(`Could not download krunker.io/${e}, starting with an empty file.`),t=""),this.showEditor(e,t,!0))}showEditor(e,t,o=!1){if(!this.popup)return;let n=this.get("#swEditor");this.get(".swapColumns").style.display="none",n.style.display="";let{editor:r}=po(n,{title:e,content:t,language:ja(e),isNew:o,onSave:i=>{!this.editing||this.saving||(this.saving=!0,this.editing.closeAfterSave=i,this.send("write",{path:e,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={path:e,editor:r,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Re(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||this.closeEditor()}closeEditor(){if(this.editing=null,!this.popup)return;let e=this.get("#swEditor");e.textContent="",e.style.display="none",this.get(".swapColumns").style.display="",this.render()}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Re(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}async newFolder(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New folder",e?`${e}/`:"textures","A path inside the swapper folder, for example textures/weapons");t&&this.send("mkdir",{path:t})}async move(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"Rename or move",e,"The new path inside the swapper folder. Change the folders in front to move it.");!t||t===e||this.send("move",{from:e,to:t})}async remove(e){!this.popup||!await Re(this.popup.shadow,`Delete ${Ks(e)}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||this.send("delete",{path:e})}},hy=new Fl,my=()=>hy.open()});var zm={};var jl=w(()=>{"use strict";D();es();ur();u.userscriptManager={open:()=>{Promise.resolve().then(()=>(Hl(),zl)).then(s=>s.open()).catch(s=>console.error("[kute] userscript manager:",s))}};u.settings.toggleUserscripts=s=>{if(u.settings.data.userscripts=s,s)At()?To(null,!1,!0):u.userscriptManager.masterChanged||u.showNotification("Refresh the page to start your userscripts.",!1,5);else{let e=(Je?.entries??[]).filter(t=>(t.state==="running"||t.state==="waiting")&&!t.stop()).map(t=>t.meta.name||t.key);e.length&&u.showNotification(`${e.join(", ")} cannot be stopped and keeps running until the next refresh.`,!1,6)}u.userscriptManager.masterChanged?.(s)};window.chrome.webview.addEventListener("message",s=>{let e=s.data?.swapperChanged?.css;Array.isArray(e)&&e.length&&Fs(new Set(e.map(String)))});u.swapperManager={open:()=>{Promise.resolve().then(()=>(Kl(),ql)).then(s=>s.open()).catch(s=>console.error("[kute] swapper manager:",s))}};u.customCss={open:()=>{Promise.resolve().then(()=>(_l(),Nl)).then(s=>s.open()).catch(s=>console.error("[kute] custom css:",s))}}});var Om={};A(Om,{default:()=>W});var Ul,fy,gy,Hm,Gl,by,W,xe=w(()=>{"use strict";D();It();Ul="kute_market_session",fy="x-kute-session",gy=3e3,Hm=3600*1e3,Gl=class{constructor(){this.sessionPromise=null,this.memorySession=null,this.cache=new Map,this.lastError="",this.retryAt=0}loggedIn(){try{return localStorage.getItem("krunker_token")!==null}catch{return!1}}hostSupported(){return u.hostFeatures?.includes("market-attest")===!0}stored(){if(this.memorySession&&Date.now()t.expiresAt-Hm?null:t}catch{return null}}forget(e){if(this.stored()?.session===e){try{localStorage.removeItem(Ul)}catch{}this.memorySession=null}}attest(e){return new Promise(t=>{let o=0,n=r=>{let i=null;try{i=typeof r.data=="string"?JSON.parse(r.data):r.data}catch{return}let a=i?.marketAttest;!a||a.challenge!==e||(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(a))};o=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},gy),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(`market-attest, ${e}, ${this.loggedIn()}`)})}session(){let e=this.stored();return e?Promise.resolve(e.session):(this.sessionPromise??=this.newSession().finally(()=>{this.sessionPromise=null}),this.sessionPromise)}async newSession(){if(this.lastError="",!this.loggedIn())return this.lastError="log in to Krunker to use the market",null;if(!this.hostSupported())return this.lastError="this Kute version cannot sign in to the market, update Kute",null;let e=await he.requestStatus("/market/session",{method:"POST"});if(!e.data?.challenge)return this.lastError=e.status===503?"the market is not available right now":"could not reach the market",e.status===429&&this.limited(e.retryAt),null;let t=await this.attest(e.data.challenge);if(!t)return this.lastError="Kute did not answer the sign in",null;let o=await he.requestStatus("/market/session/confirm",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({challenge:t.challenge,sig:t.sig,version:t.version,loggedIn:t.loggedIn})});if(!o.data?.session)return this.lastError=typeof o.error?.error=="string"?o.error.error:"the market refused the sign in",o.status===429&&this.limited(o.retryAt),null;this.memorySession={session:o.data.session,expiresAt:o.data.expiresAt};try{localStorage.setItem(Ul,JSON.stringify(this.memorySession))}catch{}return o.data.session}async request(e,t={},o=!1){return(await this.requestStatus(e,t,o)).data}async requestStatus(e,t={},o=!1){if(Date.now()this.request(e)){let n=Date.now(),r=this.cache.get(e);if(r&&n-r.at(a===null&&this.cache.delete(e),a));if(this.cache.set(e,{at:n,ttl:t,value:i}),this.cache.size>500){let a=this.cache.keys().next();a.done||this.cache.delete(a.value)}return i}retry(){return Date.now(){let n=await this.requestStatus(o);if(n.status!==404)return n.data;let r=await this.cached(`/market/item/${e}`,3e5);if(!r)return null;let[i,a]=await Promise.all([this.cached(`/market/item/${e}/history?range=${t}`,3e5),this.cached(`/market/item/${e}/listings`,6e4)]);return{item:r,history:i,listings:a}})}async values(e){let t=[...new Set(e)].sort((n,r)=>n-r),o={};for(let n=0;njs,RARITIES:()=>bo,formatAge:()=>We,formatKr:()=>Pe,formatPercent:()=>it});function Pe(s){return Number.isFinite(s)?Math.abs(s)>=1e6?`${(s/1e6).toFixed(s%1e6===0?0:1)}M`:Math.round(s).toLocaleString("en-US"):"?"}function it(s){if(s==null||!Number.isFinite(s))return"\u2013";let e=s*100;return`${e>0?"+":""}${Math.abs(e)>=100?e.toFixed(0):e.toFixed(1)} %`}function We(s){if(!Number.isFinite(s)||s<0)return"\u2013";let e=s/6e4;if(e<60)return`${Math.max(1,Math.round(e))} min`;let t=e/60;return t<48?`${Math.round(t)} h`:`${Math.round(t/24)} d`}var bo,js,Ve=w(()=>{"use strict";bo=[{name:"Uncommon",color:"#b2f252"},{name:"Rare",color:"#2196F3"},{name:"Epic",color:"#E040FB"},{name:"Legendary",color:"#FBC02D"},{name:"Relic",color:"#ff5722"},{name:"Contraband",color:"#f44336"},{name:"Unobtainable",color:"#ffffff"},{name:"NFT",color:"#9e9e9e"}],js={A:"#5ce05a",B:"#9ccc65",C:"#fbc02d",D:"#ff9800",F:"#f44336"}});var Fm={};A(Fm,{TRADE_VERDICTS:()=>jt,TYPE_NAMES:()=>Et,activityLabel:()=>Wl,change:()=>ae,empty:()=>fe,esc:()=>S,evidenceLabel:()=>Gs,identity:()=>me,money:()=>T,stat:()=>ne,verdictOf:()=>Us});var Et,jt,Us,S,T,ae,Gs,Wl,me,fe,ne,pe=w(()=>{"use strict";Ve();Et=["Weapons","Hats","Bodies","Melee","Sprays","Dyes","Waists","Faces","Charms","Emotes","Stickers","Skydomes","Poses","Spin tickets","Capes","Heads","Paints","Backs","Consumables"],jt={good:{label:"Favorable trade",detail:"More estimated value coming in"},fair:{label:"Fair trade",detail:"Similar estimated value"},bad:{label:"Unfavorable trade",detail:"More estimated value going out"},uncertain:{label:"Not enough evidence",detail:"Estimates are too uncertain for a verdict"}},Us=s=>Object.hasOwn(jt,s)?s:"uncertain",S=s=>String(s??"").replace(/[&<>"']/g,e=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[e]??e),T=s=>s==null?"Unavailable":Pe(s),ae=s=>{if(s==null)return'No trend yet';let e="muted";return s>.005&&(e="positive"),s<-.005&&(e="negative"),`${S(it(s))}`},Gs=s=>s.method?.includes("trades")?s.method.startsWith("sales")?"Sales + private trades":"Private-trade estimate":s.method?.startsWith("sales")?(s.sales7d??0)>=5?"Recent sales":"Sparse sales":"Limited evidence",Wl=s=>s.privateTrading?.trades7d?`${s.privateTrading.trades7d} private trade${s.privateTrading.trades7d===1?"":"s"} this week${s.sales7d?` + ${s.sales7d} sales`:""}`:(s.sales7d??0)>=7?"Active this week":(s.sales7d??0)>0?"Traded this week":"No reported sales this week",me=s=>`${s.thumbnail?``:'K'}${S(s.name)}${S(bo[s.rarity??-1]?.name??"Item")}`,fe=(s,e,t="")=>`
      ◇

      ${S(s)}

      ${S(e)}

      ${t}
      `,ne=(s,e,t)=>`
      ${S(s)}${e}${t}
      `});var Km={};A(Km,{default:()=>hr});var vy,vo,Ke,qm,wy,ky,yy,Vl,xy,Yl,Sy,hr,Xl=w(()=>{"use strict";D();xe();Ve();pe();vy=1500,vo="data-kute-market",Ke="kuteMarketLine",qm="kuteMarketCardStyle",wy=".market-card, .market-item-card",ky=` +`))}stateOf(e,t,o){return t?.state==="error"?["Error","bad",t.error]:t?.outdated?["Old version","warn","Your changes apply after a refresh, this script has no unload to stop the running version"]:this.masterOn()?o||!Je?e.enabled?["On","ok",""]:["Off","",""]:e.enabled?t?.state==="running"?["Running","ok",t.late?"Started after the page loaded. It is a document-start script, refresh if it misses something":""]:t?.state==="waiting"?["Starting","ok","Starts once the page has loaded"]:!t&&At()?["Starting","ok",""]:["After refresh","warn","On, starts with the next page load"]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:["Off","",""]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:e.enabled?["On","","Runs once userscripts are on"]:["Off","",""]}renderScript(e,t,o){let n=t.id!=="game",r=n?void 0:this.entryFor(o.key),i=r?.meta??o.meta,a=oe("div","scriptRow"),l=oe("div",`toggle${o.enabled?" on":""}`);l.title=o.enabled?"Turn off":"Turn on",l.onclick=()=>this.toggle(o,r,n);let c=oe("div","scriptInfo"),d=oe("div","scriptName",i.name||o.file);i.version&&d.append(oe("span","version",`v${i.version}`)),i.author&&d.append(oe("span","author",`by ${i.author}`)),c.append(d);let h=[i.desc,i.name?o.file:"",go(o.size)].filter(Boolean).join(" \xB7 ");c.append(oe("div","scriptDesc",h)),c.title=[i.desc,`${o.file}, ${o.runAt}${o.priority?`, priority ${o.priority}`:""}`].filter(Boolean).join(` +`);let[p,m,f]=this.stateOf(o,r,n),g=oe("div",`state ${m}`,p);f&&(g.title=f);let b=oe("div","scriptActions");r?.settings&&Object.keys(r.settings).length&&b.append(qs("tune","Script settings",()=>{this.openSettings.has(o.key)?this.openSettings.delete(o.key):this.openSettings.add(o.key),this.render()})),b.append(qs("edit","Edit",()=>{this.pendingRead=o.key,this.send("read",{key:o.key})}),qs("swap_horiz",`Move to ${n?"Game":"Social"}`,()=>this.move(o,r,n)),qs("folder_open","Show in folder",()=>this.send("reveal",{key:o.key})),qs("delete","Delete (goes to the recycle bin)",()=>this.deleteScript(o,r),"danger")),a.append(l,c,g,b),e.append(a),r?.settings&&this.openSettings.has(o.key)&&e.append(this.renderSettings(o,r))}toggle(e,t,o){e.enabled=!e.enabled,this.send("toggle",{key:e.key,enabled:e.enabled}),o||this.masterOn()&&(t?e.enabled?(t.start(),(t.tainted||t.state!=="running"&&t.state!=="waiting"&&t.state!=="error")&&(this.needsRefresh=!0)):t.stop()||(this.needsRefresh=!0):e.enabled&&At()?To([e.key],!1,!0):e.enabled&&(this.needsRefresh=!0)),this.updateNotice(),this.render()}move(e,t,o){t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("move",{key:e.key,group:o?"game":"social"}),o&&!this.reload([e.file])&&(this.needsRefresh=!0),this.updateNotice()}async deleteScript(e,t){!this.popup||!await Re(this.popup.shadow,`Delete ${e.file}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||(t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("delete",{key:e.key}))}async createScript(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New script","my-script.js","The file name. It ends up in the scripts folder of this group.");if(!t)return;let o=/\.js$/i.test(t)?t:`${t}.js`;if(this.groups.some(r=>r.id===e&&r.scripts.some(i=>i.file.toLowerCase()===o.toLowerCase()))){this.popup.showError(`${o} already exists in this group.`);return}this.showEditor(e,o,iy.replaceAll("{{name}}",o.replace(/\.js$/i,"")),!0)}renderSettings(e,t){let o=oe("div","scriptSettings"),n=t.settings??{},r=()=>{clearTimeout(this.prefsTimers.get(e.key)),this.prefsTimers.set(e.key,setTimeout(()=>{this.prefsTimers.delete(e.key);let a=Object.fromEntries(Object.entries(n).map(([l,c])=>[l,c.value]));this.send("prefs",{key:e.key,prefs:a})},300))},i=(a,l)=>{t.setPref(a,l),r()};for(let[a,l]of Object.entries(n)){let c=oe("div","settingRow"),d=oe("div","settingLabel",l.title||a);l.desc&&d.append(oe("small","",l.desc)),c.append(d,this.settingControl(a,l,i)),o.append(c)}return o}settingControl(e,t,o){switch(t.type){case"bool":{let n=oe("div",`toggle${t.value?" on":""}`);return n.onclick=()=>{o(e,!t.value),n.classList.toggle("on",!!t.value)},n}case"num":{let n=oe("div");n.style.cssText="display:flex;gap:.6em;align-items:center";let r=oe("input");if(r.type="number",r.style.width="90px",r.value=String(t.value),t.min!==void 0&&(r.min=String(t.min)),t.max!==void 0&&(r.max=String(t.max)),r.step=String(t.step??"any"),t.min!==void 0&&t.max!==void 0){let i=oe("input");i.type="range",i.min=String(t.min),i.max=String(t.max),i.step=String(t.step??"any"),i.value=String(t.value),i.oninput=()=>{r.value=i.value,o(e,Number(i.value))},r.onchange=()=>{i.value=r.value},n.append(i)}return r.addEventListener("change",()=>{r.value!==""&&Number.isFinite(Number(r.value))&&o(e,Number(r.value))}),n.append(r),n}case"sel":{let n=oe("select");for(let r of t.opts??[]){let i=oe("option","",String(r));i.value=String(r),i.selected=r===t.value,n.append(i)}return n.onchange=()=>{let r=(t.opts??[]).find(i=>String(i)===n.value);o(e,r??n.value)},n}case"color":{let n=oe("input");return n.type="color",n.value=String(t.value),n.onchange=()=>o(e,n.value),n}case"text":{let n=oe("input");return n.type="text",n.value=String(t.value??""),n.onchange=()=>o(e,n.value),n}case"keybind":{let n=i=>[i?.ctrl&&"Ctrl",i?.alt&&"Alt",i?.shift&&"Shift",i?.key||"none"].filter(Boolean).join(" + "),r=oe("div","btn small",n(t.value));return r.onclick=()=>{r.textContent="Press a key...";let i=a=>{if(["Control","Alt","Shift","Meta"].includes(a.key))return;a.preventDefault(),a.stopPropagation(),window.removeEventListener("keydown",i,!0);let l={key:a.key.toLowerCase(),ctrl:a.ctrlKey,alt:a.altKey,shift:a.shiftKey};o(e,l),r.textContent=n(l)};window.addEventListener("keydown",i,!0)},r}default:return oe("div","scriptFile",`unsupported type "${t.type}"`)}}showEditor(e,t,o,n=!1){let r=this.body();if(!r)return;let{editor:i}=po(r,{title:t,content:o,language:"js",isNew:n,onSave:a=>{this.editing&&(this.pendingSave={closeAfter:a},this.editing.closeAfterSave=a,this.send("write",{group:e,file:t,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={group:e,file:t,editor:i,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Re(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||(this.editing=null,this.render())}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Re(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},ay=new Bl,ly=()=>ay.open()});var Im,Pm=w(()=>{Im=`

      Swapper

      refreshReload list
      folder_openOpen swapper folder
      ×
      A file in the swapper folder replaces the game's file with the same path: swapper/textures/pistol.png replaces krunker.io/textures/pistol.png. Easiest way: drop your file onto the game file it should replace (right side), it gets the right folder and name. Folder names do not care about case. Text files like CSS can be written right here: New file, or the edit button on a game file to start from a copy.
      Your swaps
      note_addNew file
      create_new_folderNew folder
      Drop files or folders here to put them into the swapper folder as they are
      Game files
      `});var ql={};A(ql,{open:()=>my});var dy,uy,Nm,pr,py,Ol,ce,rt,Ks,Bm,_m,Dl,Fl,hy,my,Kl=w(()=>{"use strict";D();Pm();Ds();Oo();ur();dy=new Set(["css","js","mjs","json","txt","html","htm","svg","xml","obj","mtl","glsl","frag","vert","md","csv"]),uy=4*1024*1024,Nm=s=>dy.has(s.slice(s.lastIndexOf(".")+1).toLowerCase()),pr=()=>u.hostFeatures?.includes("swapper-editor")??!1,py=32*1024*1024,Ol=400,ce=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},rt=(s,e,t,o="")=>{let n=ce("div",`iconBtn ${o}`);return n.title=e,n.append(ce("span","mi",s)),n.onclick=r=>{r.stopPropagation(),t()},n},Ks=s=>s.slice(s.lastIndexOf("/")+1),Bm=s=>s.includes("/")?s.slice(0,s.lastIndexOf("/")):"",_m=(s,e)=>{let t={name:"",path:"",folders:new Map,files:[]},o=n=>{let r=t;for(let i of n.split("/").filter(Boolean)){let a=r.folders.get(i);a||(a={name:i,path:r.path?`${r.path}/${i}`:i,folders:new Map,files:[]},r.folders.set(i,a)),r=a}return r};for(let n of e)o(n);for(let n of s)o(Bm(n.path)).files.push({name:Ks(n.path),path:n.path,size:n.size});return t},Dl=s=>s.files.length+[...s.folders.values()].reduce((e,t)=>e+Dl(t),0),Fl=class{constructor(){this.popup=null,this.list=null,this.collapsedOwn=new Set,this.expandedGame=new Set,this.search="",this.touched=new Set,this.stale=new Set,this.uploadDone=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1}open(){if(this.popup)return;if(!Os()){window.chrome.webview.postMessage("open, swapper"),u.showNotification("This Kute version can only open the swapper folder. Update Kute for the swapper manager.",!1,6);return}this.popup=fo(Im,{onMessage:r=>this.receive(r),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1,this.uploadDone?.(null),this.uploadDone=null}),e.querySelector("#swFolder").onclick=()=>this.send("reveal",{path:""}),e.querySelector("#swReload").onclick=()=>this.send("list",{}),e.querySelector("#swRefreshNow").onclick=()=>location.reload(),e.querySelector("#swNewFolder").onclick=()=>this.newFolder("");let o=e.querySelector("#swNewFile");pr()||(o.style.display="none"),o.onclick=()=>this.newFile(""),st(e.querySelector("#swOwnColumn"),r=>this.drop("",r));let n=e.querySelector("#swSearch");n.value=this.search,n.oninput=()=>{this.search=n.value.trim().toLowerCase(),this.renderGame()},e.querySelector("#swOwnTree").textContent="Loading...",this.send("list",{}),dr()||window.addEventListener("focus",()=>{!this.editing&&!this.uploadDone&&this.send("list",{})},{signal:t})}send(e,t){window.chrome.webview.postMessage(`swapper-${e} ${JSON.stringify(t)}`)}async drop(e,t){let o=t;!e&&o.every(({path:n})=>n.toLowerCase().startsWith("swapper/"))&&(o=o.map(({path:n,file:r})=>({path:n.slice(8),file:r}))),await this.upload(o.map(({path:n,file:r})=>({path:e?`${e}/${n}`:n,file:r})))}async replace(e,t){if(!this.popup)return;if(t.length!==1){this.popup.showError("Drop exactly one file onto a game file. Drop several onto a folder instead.");return}let[{file:o}]=t,n=r=>r.slice(r.lastIndexOf(".")+1).toLowerCase();if(n(o.name)!==n(e)){let r=`${o.name} is saved as ${Ks(e)}, the game will read it as .${n(e)}. Go ahead?`;if(!await Re(this.popup.shadow,"Different file type",r,"Save anyway"))return}await this.upload([{path:e,file:o}])}async upload(e){let t=[];for(let{path:o,file:n}of e){if(!this.popup)return;if(n.size>py){t.push(`${o}: larger than 32 MB, put it in with Open swapper folder`);continue}let r=await Rl(n),i=await new Promise(a=>{this.uploadDone=a,this.send("upload",{path:o,data:r})});i?t.push(i):this.touched.add(o.toLowerCase())}this.send("list",{}),t.length&&this.popup?.showError(t.join(` +`))}receive(e){if(e.managerError&&this.popup?.showError(e.managerError),e.swapperUploaded){let o=this.uploadDone;this.uploadDone=null,o?.(e.swapperUploaded.error??null)}if(e.swapperSource&&e.swapperSource.path===this.pendingRead&&(this.pendingRead=null,typeof e.swapperSource.content=="string"?this.showEditor(e.swapperSource.path,e.swapperSource.content):this.popup?.showError(`${e.swapperSource.path} could not be read as text.`)),e.swapperWritten&&this.saving&&(this.saving=!1,e.swapperWritten.error?this.popup?.showError(e.swapperWritten.error):this.editing&&(this.touched.add(this.editing.path.toLowerCase()),this.editing.editor.markSaved(),this.editing.closeAfterSave&&this.closeEditor())),e.swapperChanged&&!this.editing&&!this.uploadDone&&this.send("list",{}),!e.swapper)return;let t=this.list;this.list=e.swapper,t&&this.applyChanges(t,e.swapper),this.render()}applyChanges(e,t){let o=c=>new Map(c.files.map(d=>[d.path.toLowerCase(),d.size])),n=o(e),r=o(t),i=new Set(this.touched);if(this.touched.clear(),e.enabled!==t.enabled)for(let c of[...n.keys(),...r.keys()])i.add(c);for(let[c,d]of r)n.get(c)!==d&&i.add(c);for(let c of n.keys())r.has(c)||i.add(c);if(!i.size)return;let a=new Set([...i].filter(c=>c.endsWith(".css")));a.size&&!dr()&&Fs(a);let l=new Set(t.seen.map(c=>c.toLowerCase()));for(let c of i)!a.has(c)&&l.has(c)&&this.stale.add(c)}get(e){return this.popup?.shadow.querySelector(e)}render(){if(!this.popup||!this.list)return;let e=this.get("#swNotice"),t=this.list.enabled===!1;e.hidden=!t&&!this.stale.size;let o=this.stale.size;e.querySelector("span").textContent=t?"The swapper is switched off (Settings, Customization), none of these files are used.":`The game already loaded ${o===1?"1 changed file":`${o} changed files`}, ${o===1?"it changes":"they change"} after a page refresh.`,this.renderOwn(),this.renderGame()}renderOwn(){if(!this.list)return;let e=this.get("#swOwnTree");e.textContent="";let t=_m(this.list.files,this.list.dirs);if(this.get("#swOwnCount").textContent=`${this.list.files.length} file${this.list.files.length===1?"":"s"}`,!this.list.files.length&&!this.list.dirs.length){e.append(ce("div","treeNote","Nothing swapped yet. Drop a file onto one of the game files on the right, or drop a whole swapper pack here."));return}let o=new Map(this.list.seen.map(i=>[i.toLowerCase(),i])),n=new Map;for(let i of this.list.seen){let a=Ks(i).toLowerCase();n.set(a,[...n.get(a)??[],i])}let r=(i,a)=>{for(let l of[...i.folders.values()].sort((c,d)=>c.name.localeCompare(d.name))){let c=this.collapsedOwn.has(l.path),d=this.folderRow(l.name,a,!c,`${Dl(l)}`);d.onclick=()=>{c?this.collapsedOwn.delete(l.path):this.collapsedOwn.add(l.path),this.renderOwn()};let h=d.querySelector(".scriptActions");pr()&&h?.append(rt("note_add","New file inside",()=>this.newFile(l.path))),h?.append(rt("create_new_folder","New folder inside",()=>this.newFolder(l.path)),rt("drive_file_rename_outline","Rename or move",()=>this.move(l.path)),rt("folder_open","Open in Explorer",()=>this.send("reveal",{path:l.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(l.path),"danger")),st(d,p=>this.drop(l.path,p)),e.append(d),c||r(l,a+1)}for(let l of[...i.files].sort((c,d)=>c.name.localeCompare(d.name)))e.append(this.ownFileRow(l,a,o,n))};r(t,0)}folderRow(e,t,o,n){let r=ce("div","node folder");return r.style.setProperty("--depth",String(t)),r.append(ce("span","mi",o?"expand_more":"chevron_right"),ce("span","mi kind",o?"folder_open":"folder")),r.append(ce("span","nodeName",e),ce("span","nodeSize",n),ce("div","scriptActions")),r}ownFileRow(e,t,o,n){let r=ce("div","node");r.style.setProperty("--depth",String(t+1)),r.append(ce("span","mi","description"),ce("span","nodeName",e.name),ce("span","nodeSize",go(e.size)));let i=o.get(e.path.toLowerCase()),a=(n.get(e.name.toLowerCase())??[]).filter(c=>c.toLowerCase()!==e.path.toLowerCase());if(i){let c=ce("span","state ok","Used");c.title=`The game loaded krunker.io/${i} this session, this file replaced it.`,r.append(c)}else if(a.length){let[c]=a,d=ce("span","state warn","Wrong folder?");d.title=`The game asks for this file as ${a.join(", ")}`;let h=ce("div","btn small","Move there");h.title=`Move to ${c}`,h.onclick=()=>this.send("move",{from:e.path,to:c}),r.append(d,h)}else{let c=ce("span","state","Not requested");c.title="The game did not ask for this path in this session. It may still come (another map, a skin), or the path does not match any game file.",r.append(c)}let l=ce("div","scriptActions");return pr()&&Nm(e.path)&&e.size<=uy&&(l.append(rt("edit","Edit",()=>this.edit(e.path))),r.ondblclick=()=>this.edit(e.path)),l.append(rt("drive_file_rename_outline","Rename or move",()=>this.move(e.path)),rt("folder_open","Show in Explorer",()=>this.send("reveal",{path:e.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(e.path),"danger")),r.append(l),st(r,c=>this.drop(Bm(e.path),c)),r}renderGame(){if(!this.list||!this.popup)return;let e=this.get("#swGameTree");e.textContent="";let{seen:t}=this.list;this.get("#swGameCount").textContent=`${t.length} loaded this session`;let o=new Set(this.list.files.map(a=>a.path.toLowerCase()));if(!t.length){e.append(ce("div","treeNote","The game has not loaded any files yet. Play a round or open a menu, then Reload list."));return}let n=(a,l)=>{let c=ce("div","node");if(c.style.setProperty("--depth",String(l)),c.title=`krunker.io/${a} +Drop a file here to replace it`,c.append(ce("span","mi","insert_drive_file"),ce("span","nodeName",l?Ks(a):a)),o.has(a.toLowerCase())&&c.append(ce("span","swapped","swapped")),pr()&&Nm(a)){let d=this.list?.files.find(p=>p.path.toLowerCase()===a.toLowerCase()),h=ce("div","scriptActions");d?h.append(rt("edit","Edit your swap",()=>this.edit(d.path))):h.append(rt("edit_note","Edit a copy, saving it swaps the file",()=>this.editCopy(a))),c.append(h)}return st(c,d=>this.replace(a,d)),c};if(this.search){let a=t.filter(l=>l.toLowerCase().includes(this.search));for(let l of a.slice(0,Ol))e.append(n(l,0));a.length||e.append(ce("div","treeNote","No game file matches.")),a.length>Ol&&e.append(ce("div","treeNote",`${a.length-Ol} more, search for something longer.`));return}let r=_m(t.map(a=>({path:a,size:0})),[]),i=(a,l)=>{for(let c of[...a.folders.values()].sort((d,h)=>d.name.localeCompare(h.name))){let d=this.expandedGame.has(c.path),h=this.folderRow(c.name,l,d,`${Dl(c)}`);h.title="Drop files here to put them into this folder",h.onclick=()=>{d?this.expandedGame.delete(c.path):this.expandedGame.add(c.path),this.renderGame()},st(h,p=>this.drop(c.path,p)),e.append(h),d&&i(c,l+1)}for(let c of[...a.files].sort((d,h)=>d.name.localeCompare(h.name)))e.append(n(c.path,l+1))};i(r,0)}async newFile(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New file",e?`${e}/new.css`:"css/new.css","A path inside the swapper folder, the same path the game loads the file from");if(!t)return;let o=t.replace(/^\/+/,"");if(this.list?.files.some(n=>n.path.toLowerCase()===o.toLowerCase())){this.popup.showError(`${o} already exists, edit it instead.`);return}this.showEditor(o,"",!0)}edit(e){this.pendingRead||this.editing||(this.pendingRead=e,this.send("read",{path:e}))}async editCopy(e){if(this.pendingRead||this.editing)return;this.pendingRead=e;let t=null;for(let o of["https://krunker.io","https://assets.krunker.io"])try{let n=await fetch(`${o}/${e}`);if(n.ok){t=await n.text();break}}catch{}this.pendingRead===e&&(this.pendingRead=null,t===null&&(this.popup?.showError(`Could not download krunker.io/${e}, starting with an empty file.`),t=""),this.showEditor(e,t,!0))}showEditor(e,t,o=!1){if(!this.popup)return;let n=this.get("#swEditor");this.get(".swapColumns").style.display="none",n.style.display="";let{editor:r}=po(n,{title:e,content:t,language:ja(e),isNew:o,onSave:i=>{!this.editing||this.saving||(this.saving=!0,this.editing.closeAfterSave=i,this.send("write",{path:e,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={path:e,editor:r,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Re(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||this.closeEditor()}closeEditor(){if(this.editing=null,!this.popup)return;let e=this.get("#swEditor");e.textContent="",e.style.display="none",this.get(".swapColumns").style.display="",this.render()}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Re(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}async newFolder(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New folder",e?`${e}/`:"textures","A path inside the swapper folder, for example textures/weapons");t&&this.send("mkdir",{path:t})}async move(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"Rename or move",e,"The new path inside the swapper folder. Change the folders in front to move it.");!t||t===e||this.send("move",{from:e,to:t})}async remove(e){!this.popup||!await Re(this.popup.shadow,`Delete ${Ks(e)}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||this.send("delete",{path:e})}},hy=new Fl,my=()=>hy.open()});var zm={};var jl=w(()=>{"use strict";D();es();ur();u.userscriptManager={open:()=>{Promise.resolve().then(()=>(Hl(),zl)).then(s=>s.open()).catch(s=>console.error("[kute] userscript manager:",s))}};u.settings.toggleUserscripts=s=>{if(u.settings.data.userscripts=s,s)At()?To(null,!1,!0):u.userscriptManager.masterChanged||u.showNotification("Refresh the page to start your userscripts.",!1,5);else{let e=(Je?.entries??[]).filter(t=>(t.state==="running"||t.state==="waiting")&&!t.stop()).map(t=>t.meta.name||t.key);e.length&&u.showNotification(`${e.join(", ")} cannot be stopped and keeps running until the next refresh.`,!1,6)}u.userscriptManager.masterChanged?.(s)};window.chrome.webview.addEventListener("message",s=>{let e=s.data?.swapperChanged?.css;Array.isArray(e)&&e.length&&Fs(new Set(e.map(String)))});u.swapperManager={open:()=>{Promise.resolve().then(()=>(Kl(),ql)).then(s=>s.open()).catch(s=>console.error("[kute] swapper manager:",s))}};u.customCss={open:()=>{Promise.resolve().then(()=>(_l(),Nl)).then(s=>s.open()).catch(s=>console.error("[kute] custom css:",s))}}});var Om={};A(Om,{default:()=>W});var Ul,fy,gy,Hm,Gl,by,W,xe=w(()=>{"use strict";D();It();Ul="kute_market_session",fy="x-kute-session",gy=3e3,Hm=3600*1e3,Gl=class{constructor(){this.sessionPromise=null,this.memorySession=null,this.cache=new Map,this.lastError="",this.retryAt=0}loggedIn(){try{return localStorage.getItem("krunker_token")!==null}catch{return!1}}hostSupported(){return u.hostFeatures?.includes("market-attest")===!0}stored(){if(this.memorySession&&Date.now()t.expiresAt-Hm?null:t}catch{return null}}forget(e){if(this.stored()?.session===e){try{localStorage.removeItem(Ul)}catch{}this.memorySession=null}}attest(e){return new Promise(t=>{let o=0,n=r=>{let i=null;try{i=typeof r.data=="string"?JSON.parse(r.data):r.data}catch{return}let a=i?.marketAttest;!a||a.challenge!==e||(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(a))};o=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},gy),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(`market-attest, ${e}, ${this.loggedIn()}`)})}session(){let e=this.stored();return e?Promise.resolve(e.session):(this.sessionPromise??=this.newSession().finally(()=>{this.sessionPromise=null}),this.sessionPromise)}async newSession(){if(this.lastError="",!this.loggedIn())return this.lastError="log in to Krunker to use the market",null;if(!this.hostSupported())return this.lastError="this Kute version cannot sign in to the market, update Kute",null;let e=await he.requestStatus("/market/session",{method:"POST"});if(!e.data?.challenge)return this.lastError=e.status===503?"the market is not available right now":"could not reach the market",e.status===429&&this.limited(e.retryAt),null;let t=await this.attest(e.data.challenge);if(!t)return this.lastError="Kute did not answer the sign in",null;let o=await he.requestStatus("/market/session/confirm",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({challenge:t.challenge,sig:t.sig,version:t.version,loggedIn:t.loggedIn})});if(!o.data?.session)return this.lastError=typeof o.error?.error=="string"?o.error.error:"the market refused the sign in",o.status===429&&this.limited(o.retryAt),null;this.memorySession={session:o.data.session,expiresAt:o.data.expiresAt};try{localStorage.setItem(Ul,JSON.stringify(this.memorySession))}catch{}return o.data.session}async request(e,t={},o=!1){return(await this.requestStatus(e,t,o)).data}async requestStatus(e,t={},o=!1){if(Date.now()this.request(e)){let n=Date.now(),r=this.cache.get(e);if(r&&n-r.at(a===null&&this.cache.delete(e),a));if(this.cache.set(e,{at:n,ttl:t,value:i}),this.cache.size>500){let a=this.cache.keys().next();a.done||this.cache.delete(a.value)}return i}retry(){return Date.now(){let n=await this.requestStatus(o);if(n.status!==404)return n.data;let r=await this.cached(`/market/item/${e}`,3e5);if(!r)return null;let[i,a]=await Promise.all([this.cached(`/market/item/${e}/history?range=${t}`,3e5),this.cached(`/market/item/${e}/listings`,6e4)]);return{item:r,history:i,listings:a}})}async values(e){let t=[...new Set(e)].sort((n,r)=>n-r),o={};for(let n=0;njs,RARITIES:()=>bo,formatAge:()=>We,formatKr:()=>Pe,formatPercent:()=>it});function Pe(s){return Number.isFinite(s)?Math.abs(s)>=1e6?`${(s/1e6).toFixed(s%1e6===0?0:1)}M`:Math.round(s).toLocaleString("en-US"):"?"}function it(s){if(s==null||!Number.isFinite(s))return"\u2013";let e=s*100;return`${e>0?"+":""}${Math.abs(e)>=100?e.toFixed(0):e.toFixed(1)} %`}function We(s){if(!Number.isFinite(s)||s<0)return"\u2013";let e=s/6e4;if(e<60)return`${Math.max(1,Math.round(e))} min`;let t=e/60;return t<48?`${Math.round(t)} h`:`${Math.round(t/24)} d`}var bo,js,Ve=w(()=>{"use strict";bo=[{name:"Uncommon",color:"#b2f252"},{name:"Rare",color:"#2196F3"},{name:"Epic",color:"#E040FB"},{name:"Legendary",color:"#FBC02D"},{name:"Relic",color:"#ff5722"},{name:"Contraband",color:"#f44336"},{name:"Unobtainable",color:"#ffffff"},{name:"NFT",color:"#9e9e9e"}],js={A:"#5ce05a",B:"#9ccc65",C:"#fbc02d",D:"#ff9800",F:"#f44336"}});var Fm={};A(Fm,{TRADE_VERDICTS:()=>jt,TYPE_NAMES:()=>Et,activityLabel:()=>Wl,change:()=>ae,empty:()=>fe,esc:()=>S,evidenceLabel:()=>Gs,identity:()=>me,money:()=>T,stat:()=>ne,verdictOf:()=>Us});var Et,jt,Us,S,T,ae,Gs,Wl,me,fe,ne,pe=w(()=>{"use strict";Ve();Et=["Weapons","Hats","Bodies","Melee","Sprays","Dyes","Waists","Faces","Charms","Emotes","Stickers","Skydomes","Poses","Spin tickets","Capes","Heads","Paints","Backs","Consumables"],jt={good:{label:"Favorable trade",detail:"More estimated value coming in"},fair:{label:"Fair trade",detail:"Similar estimated value"},bad:{label:"Unfavorable trade",detail:"More estimated value going out"},uncertain:{label:"Not enough evidence",detail:"Estimates are too uncertain for a verdict"}},Us=s=>Object.hasOwn(jt,s)?s:"uncertain",S=s=>String(s??"").replace(/[&<>"']/g,e=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[e]??e),T=s=>s==null?"Unavailable":Pe(s),ae=s=>{if(s==null)return'No trend yet';let e="muted";return s>.005&&(e="positive"),s<-.005&&(e="negative"),`${S(it(s))}`},Gs=s=>s.method?.includes("trades")?s.method.startsWith("sales")?"Sales + private trades":"Private-trade estimate":s.method?.startsWith("sales")?(s.sales7d??0)>=5?"Recent sales":"Sparse sales":"Limited evidence",Wl=s=>s.privateTrading?.trades7d?`${s.privateTrading.trades7d} private trade${s.privateTrading.trades7d===1?"":"s"} this week${s.sales7d?` + ${s.sales7d} sales`:""}`:(s.sales7d??0)>=7?"Active this week":(s.sales7d??0)>0?"Traded this week":"No reported sales this week",me=s=>`${s.thumbnail?``:'K'}${S(s.name)}${S(bo[s.rarity??-1]?.name??"Item")}`,fe=(s,e,t="")=>`
      ◇

      ${S(s)}

      ${S(e)}

      ${t}
      `,ne=(s,e,t)=>`
      ${S(s)}${e}${t}
      `});var Km={};A(Km,{default:()=>hr});var vy,vo,Ke,qm,wy,ky,yy,Vl,xy,Yl,Sy,hr,Xl=w(()=>{"use strict";D();xe();Ve();pe();vy=1500,vo="data-kute-market",Ke="kuteMarketLine",qm="kuteMarketCardStyle",wy=".market-card, .market-item-card",ky=` .market-card,.market-item-card{position:relative} .${Ke}{display:inline-flex!important;align-items:center;gap:.35em;white-space:nowrap;cursor:pointer;pointer-events:auto} .${Ke}:hover{filter:brightness(1.25)} @@ -222,23 +222,23 @@ Drop a file here to replace it`,c.append(ce("span","mi","insert_drive_file"),ce( .${Ke} .kuteDelta.kuteDeal{color:#5ce05a} .${Ke} .kuteDelta.kuteOver{color:#f44336} .kuteDetailBtn .kuteMark{color:#f5479b;font-weight:900;margin-right:2px} -`,yy=".item-detail-container, .items-detail-root",Vl="kuteDetailBtn",xy=5e3,Yl=class s{constructor(){this.timer=void 0,this.busy=!1,this.pick=null,this.onPick=e=>{if(document.pointerLockElement||!(e.target instanceof Element))return;let t=e.target.closest("[id^='trd_'], .trade-inv-item[data-index]");if(!t)return;let o=/^trd_(?:sel_|inv_)?\d+_(\d+)/.exec(t.id),n=o?o[1]:t.getAttribute("data-index");if(n===null||!/^\d+$/.test(n))return;let r=t.querySelector(".tItemN")?.textContent?.trim()??"";this.pick={skin:Number(n),name:r,at:Date.now()}}}start(){if(this.timer===void 0){if(!document.getElementById(qm)){let e=document.createElement("style");e.id=qm,e.textContent=ky,document.head.append(e)}this.timer=window.setInterval(()=>this.tick(),vy),document.addEventListener("pointerdown",this.onPick,!0)}}stop(){clearInterval(this.timer),this.timer=void 0,document.removeEventListener("pointerdown",this.onPick,!0),this.pick=null;for(let e of document.querySelectorAll(`.${Ke}, .${Vl}`))e.remove();for(let e of document.querySelectorAll(`[${vo}]`))e.removeAttribute(vo)}static thumbPath(e){let t=/\/textures\/previews\/([^?#]+)/.exec(e);return t?t[1]:null}static askOf(e){let t=e.querySelector(".inline-price");if(t){let o=Number((t.textContent??"").replace(/[^\d.]/g,""));return Number.isFinite(o)&&o>0?o:null}for(let o of e.querySelectorAll("span, div")){if(o.classList.contains(Ke)||o.children.length)continue;let n=o.textContent?.trim()??"";if(/^~/.test(n))continue;let r=/^([\d,.]+)\s*KR$/i.exec(n)??/^([\d,.]+)$/.exec(n);if(r&&o.closest(".estimate-badge")===null){let i=Number(r[1].replace(/,/g,""));if(Number.isFinite(i)&&i>0)return i}}return null}async tick(){if(this.busy||document.pointerLockElement)return;let e=document.querySelector(yy),t=e?.getAttribute("aria-label")??"1";e&&e.getAttribute(vo)!==t&&(e.setAttribute(vo,t),e.querySelector(`.${Vl}`)?.remove(),await this.detailButton(e,t));let o=[...document.querySelectorAll(wy)].filter(n=>!n.hasAttribute(vo));if(o.length){this.busy=!0;try{let n=new Map;for(let i of o){i.setAttribute(vo,"1");let a=i.querySelector("img"),l=a instanceof HTMLImageElement?s.thumbPath(a.currentSrc||a.src):null;if(!l)continue;let c=n.get(l)??[];c.push(i),n.set(l,c)}if(!n.size)return;let r=await W.valuesByThumbnails([...n.keys()]);for(let[i,a]of n){let l=r[i];for(let c of a)c.isConnected&&this.draw(c,l??null)}}finally{this.busy=!1}}}async detailValue(e,t){let{pick:o}=this;if(o&&Date.now()-o.atc.name.toLowerCase()===t.toLowerCase())??[];return l.length===1?l[0]:null}async detailButton(e,t){let o=e.querySelector(".full-details-container, .items-detail-header-actions");if(!o)return;let n=document.createElement("button");n.type="button";let r=o.querySelector("button");n.className=`${r?.className??""} ${Vl}`.trim();let i=r?.querySelector("i")?.className??"material-icons";n.innerHTML=`candlestick_chart Kute Market`,n.title="K value, liquidity, price history, depth and owners in Kute Market",o.append(n);let a=await this.detailValue(e,t);if(!a||e.getAttribute(vo)!==t){n.remove();return}let l=n.querySelector("span");l&&(l.textContent=`Kute Market \xB7 K ${Pe(a.fair)} ${a.grade}`),n.addEventListener("click",c=>{c.stopPropagation(),u.market?.open("item",a.skin)})}draw(e,t){if(e.querySelector(`.${Ke}`)?.remove(),!t)return;let o=document.createElement("div"),n=e.querySelector(".estimate-badge");o.className=n?`${n.className} ${Ke}`:`${Ke} kuteFloating`;let r=s.askOf(e),i="";if(r!==null&&t.fair>0){let a=r/t.fair-1,l="";a<=-.1&&t.confidence>=40?l="kuteDeal":a>=.25&&(l="kuteOver");let c=Math.round(Math.abs(a)*100);i=`${a<0?"\u2212":"+"}${c}%`}o.innerHTML=`K ${Pe(t.fair)}${S(t.grade)}${i}`,o.title=`Kute fair value ${Pe(t.fair)} kr, evidence score ${t.confidence}/100, public-market activity grade ${t.grade}`+(t.privateTrading?.trades7d?`, ${t.privateTrading.trades7d} reported private trades this week`:"")+(t.exchange?.status==="applied"?", includes private exchange evidence":"")+(r!==null?`, this ask ${it(r/t.fair-1)} against it`:"")+". Click for the item in Kute Market",o.addEventListener("click",a=>{a.stopPropagation(),a.preventDefault(),u.market?.open("item",t.skin)}),n?n.after(o):e.append(o)}},Sy=new Yl,hr=Sy});var Um,jm=w(()=>{Um='
      '});var Gm={};A(Gm,{default:()=>mr});var $y,Jl,Cy,mr,Zl=w(()=>{"use strict";xe();Ve();pe();jm();$y=1200,Jl=class s{constructor(){this.timer=void 0,this.lastKey="",this.retryAt=0,this.failures=0,this.generation=0,this.busy=!1,this.expanded=!1,this.dismiss=e=>{let t=this.box?.shadowRoot?.querySelector("details");if(t?.open){if(e instanceof KeyboardEvent){if(e.key!=="Escape")return;e.preventDefault(),e.stopPropagation(),t.querySelector("summary")?.focus()}else if(e.target instanceof Node&&this.box?.contains(e.target))return;t.open=!1,this.expanded=!1}},this.box=null}start(){this.timer===void 0&&(this.timer=window.setInterval(()=>this.tick(),$y),window.addEventListener("pointerdown",this.dismiss,!0),window.addEventListener("keydown",this.dismiss,!0))}stop(){clearInterval(this.timer),this.timer=void 0,this.generation++,window.removeEventListener("pointerdown",this.dismiss,!0),window.removeEventListener("keydown",this.dismiss,!0),this.clear()}clear(){this.box?.remove(),this.box=null,this.lastKey="",this.expanded=!1}static kr(e){let t=/([\d,.]+)/.exec(e.replace(/[~\s]/g,""));return t&&Number(t[1].replace(/,/g,""))||0}static row(e,t){let o=e.parentElement;for(;o&&!o.contains(t);)o=o.parentElement;return o&&o!==document.body?o:null}snapshot(){let e=[...document.querySelectorAll(".trade-window .trade-side")].filter(d=>d.getClientRects().length);if(e.length>=2){let d=s.row(e[0],e[1]);if(!d)return null;let p=m=>[...m.querySelectorAll(".trade-offer-scroll .trade-inv-item")].map(g=>{let b=g.getAttribute("data-index"),v=b!==null&&/^\d+$/.test(b)?Number(b):-1,k=g.querySelector("img")?.getAttribute("src")??"",E={skin:v,count:s.kr(g.querySelector(".trade-item-count")?.textContent??"1")||1};v<0&&(E.path=/\/textures\/previews\/([^?#]+)/.exec(k)?.[1]??"");for(let[L,x]of[["serial","data-serial"],["wear","data-wear-float"],["style","data-style"]]){let $=g.getAttribute(x);$!==null&&$!==""&&Number.isFinite(Number($))&&(E[L]=Number($))}return E}),h=p(e[0]),f=p(e[1]);return{give:h,get:f,giveKr:0,getKr:0,anchor:d,key:JSON.stringify([h,f])}}let t=[document.getElementById("tradeList0"),document.getElementById("tradeList1")];if(!t[0]?.getClientRects().length||!t[1]?.getClientRects().length)return null;let o=s.row(t[0],t[1]);if(!o)return null;let n=d=>[...d.querySelectorAll("[id^='trd_']")].flatMap(p=>{let h=/^trd_(?:sel_)?\d+_(\d+)(?:_\d+)?$/.exec(p.id);return h?[{skin:Number(h[1]),count:s.kr(p.querySelector(".tItemCnt")?.textContent??"1")||1}]:[]}),r=d=>Math.max(0,s.kr(document.getElementById(`currency_item_${d}_1`)?.querySelector(".tCurrencyAmount")?.textContent??"0")),i=n(t[0]),a=n(t[1]),l=r(0),c=r(1);return{give:i,get:a,giveKr:l,getKr:c,anchor:o,key:JSON.stringify([i,a,l,c])}}current(e,t){if(this.timer===void 0||t!==this.generation||document.pointerLockElement||document.hidden)return!1;let o=this.snapshot();return o?.anchor===e.anchor&&o.key===e.key}async tick(){if(this.busy||this.timer===void 0||document.pointerLockElement||document.hidden)return;this.busy=!0;let{generation:e}=this;try{let t=this.snapshot();if(!t){this.clear();return}if(Date.now()h.skin<0&&h.path).map(h=>h.path),r=n.length?await W.valuesByThumbnails(n):{};if(!this.current(t,e))return;let i=h=>h.map(({path:f,...m})=>({...m,skin:m.skin<0?r[f??""]?.skin??-1:m.skin})),a=i(t.give),l=i(t.get);if([...a,...l].some(h=>h.skin<0)){this.render(t,null,"An item could not be identified. A complete comparison is unavailable.");return}let c=await W.analyzeStatus({give:a,get:l,giveKr:t.giveKr,getKr:t.getKr}),d=c.data;if(d?(this.failures=0,this.retryAt=0):(this.failures++,this.retryAt=c.status===429?c.retryAt??Date.now()+6e4:Date.now()+Math.min(6e4,5e3*2**(this.failures-1)),this.lastKey=""),!this.current(t,e))return;let p=c.status===429?`Request limit reached. Estimates resume after ${new Date(this.retryAt).toLocaleTimeString()}.`:"Estimates unavailable. Retrying with a longer delay.";this.render(t,d,p)}finally{this.busy=!1}}render(e,t,o){this.box||(this.box=document.createElement("div"),this.box.className="kuteTradeBox",this.box.style.cssText="all:initial;display:block;box-sizing:border-box;width:100%;min-width:0;margin:0 0 10px;",this.box.attachShadow({mode:"open"}).innerHTML=Um);let n=this.box.shadowRoot?.querySelector(".panel");if(!n)return;n.className=`panel${e.give.length||e.get.length||e.giveKr||e.getKr?" filled":""}`,this.expanded=n.querySelector("details")?.open??this.expanded;let r='
      Kute trade insight';if(!t)r+=`

      ${S(o)}

      `;else{let i=!e.give.length&&!e.giveKr||!e.get.length&&!e.getKr,a=[...t.give.items,...t.get.items].some(m=>m.unknown),l=Us(t.verdict),c=i?"Add items on both sides to compare":jt[l].detail,d=jt[l].label;a&&(d="Incomplete comparison"),i&&(d="Add both sides"),r+=`${c}`;let p=(m,g)=>{let b=m.items.reduce((k,E)=>k+E.count,0),v=m.items.some(k=>k.unknown);return`
      ${g}${Pe(m.value)}${v?"+":""} KR${b} ${b===1?"item":"items"}${m.kr?` + ${Pe(m.kr)} KR`:""} · ${v?"Partial estimate":"Estimated value"}
      `},h=i||a?'–Incomplete comparison':`${t.difference>0?"+":""}${Pe(t.difference)} KR${S(it(t.differenceShare))} of the larger side`;r+=`
      ${p(t.give,"You give")}
      ${d}${h}
      ${p(t.get,"You receive")}
      `;let f=(m,g)=>`

      ${g}

      ${m.items.map(b=>`
      ${b.count>1?`${b.count} × `:""}${S(b.name)}${b.serial!==void 0?` #${S(b.serial)}`:""}${b.wear!==void 0?` · wear ${b.wear.toFixed(4)}`:""}${b.unknown?"":`${S(b.grade)}`}${b.unknown?"Unvalued":`${Pe(b.lineValue)} KR`}
      `).join("")}${m.kr?`
      Added KR${Pe(m.kr)} KR
      `:""}${!m.items.length&&!m.kr?'No items added':""}
      `;r+=`Item breakdown & evidenceHide item breakdown & evidence
      ${f(t.give,"You give")}${f(t.get,"You receive")}
      • Estimates describe market data, not guaranteed sale prices. Activity grades do not guarantee a selling time.
      • ${t.drivers.filter(m=>!m.startsWith("Liquidity adjustments")).map(m=>`
      • ${S(m)}
      • `).join("")}
      `}n.innerHTML=r,this.box.nextElementSibling!==e.anchor&&e.anchor.before(this.box)}},Cy=new Jl,mr=Cy});var Vm={};A(Vm,{readWatchlist:()=>Se,saveWatchlist:()=>wo,toggleWatch:()=>Ql});function Se(){try{let s=JSON.parse(localStorage.getItem(Wm)??"[]");if(!Array.isArray(s))return[];let e=new Set;return s.filter(t=>!t||!Number.isInteger(t.skin)||t.skin<0||e.has(t.skin)||typeof t.name!="string"?!1:(e.add(t.skin),!0)).slice(0,100).map(t=>({skin:t.skin,name:t.name,rarity:Number.isInteger(t.rarity)?t.rarity:void 0,thumbnail:typeof t.thumbnail=="string"?t.thumbnail:null,target:Number.isFinite(t.target)&&t.target>0?t.target:null}))}catch{return[]}}function wo(s){try{return localStorage.setItem(Wm,JSON.stringify(s.slice(0,100))),window.dispatchEvent(new Event("kute-market-watch-changed")),!0}catch{return!1}}function Ql(s){let e=Se(),t=e.some(o=>o.skin===s.skin);return!t&&e.length>=100?!1:wo(t?e.filter(o=>o.skin!==s.skin):[...e,{skin:s.skin,name:s.name,rarity:s.rarity,thumbnail:s.thumbnail??null,target:null}])}var Wm,Ut=w(()=>{"use strict";Wm="kute_market_watch"});var Zm={};A(Zm,{UNREAD_EVENT:()=>Ws,default:()=>$t});var My,Ty,Ym,Xm,Jm,Ws,Ay,ec,Ly,$t,fr=w(()=>{"use strict";D();It();xe();Ut();Ve();My=5*6e4,Ty=3*36e5,Ym="kute_market_alerts",Xm="kute_market_watch_report",Jm="kute_market_alerts_unread",Ws="kute-market-alerts-unread",Ay=2*36e5,ec=class{constructor(){this.timer=0,this.busy=!1,this.seen=new Map;try{let e=JSON.parse(localStorage.getItem(Ym)??"[]");if(Array.isArray(e))for(let[t,o]of e.slice(0,100))Number.isInteger(t)&&Number.isFinite(o?.target)&&typeof o?.reached=="boolean"&&this.seen.set(t,o)}catch{this.seen.clear()}this.unread=new Set;try{let e=JSON.parse(localStorage.getItem(Jm)??"[]");if(Array.isArray(e))for(let t of e.slice(0,100))Number.isInteger(t)&&this.unread.add(t)}catch{this.unread.clear()}this.onChange=()=>{this.check(),this.report()}}start(){this.timer||(this.timer=window.setInterval(()=>{this.check()},My),window.addEventListener("kute-market-watch-changed",this.onChange),this.check(),this.report())}async report(){if(!this.active())return;let e=Se().map(n=>n.skin).sort((n,r)=>n-r),t=e.join(","),o={};try{o=JSON.parse(localStorage.getItem(Xm)??"{}")??{}}catch{}if(!(o.key===t&&Date.now()-(o.at??0)o.target!==null);for(let o of this.seen.keys())e.some(n=>n.skin===o)||this.seen.delete(o);this.save();let t=this.unread.size;for(let o of this.unread)e.some(n=>n.skin===o)||this.unread.delete(o);if(this.unread.size!==t&&this.saveUnread(),!!e.length){this.busy=!0;try{let o=await W.values(e.map(i=>i.skin));if(!this.active())return;let n=Se(),r=[];for(let i of e){if(i.target===null||!n.some(d=>d.skin===i.skin&&d.target===i.target))continue;let a=o[i.skin];if(!a||!a.bookAt||!a.valuedAt||Date.now()-Math.min(a.bookAt,a.valuedAt)>Ty||a.lowest===null)continue;let l=a.lowest<=i.target,c=this.seen.get(i.skin);l&&(!c?.reached||c.target!==i.target)&&(r.push({name:i.name,price:a.lowest}),this.unread.add(i.skin)),this.seen.set(i.skin,{target:i.target,reached:l})}if(r.length){this.saveUnread();let i=r[0],a=r.length>1?` and ${r.length-1} more`:"";u.showNotification(`Watchlist: ${i.name} at ${Pe(i.price)} KR${a}. Observed ask reached your target.`,!1,8)}this.save()}catch{}finally{this.busy=!1}}}},Ly=new ec,$t=Ly});var ef={};A(ef,{contributedItem:()=>tc,contributedSale:()=>sc,contributedTrade:()=>oc});function Vs(s){let e=s;if(typeof e=="string")try{e=JSON.parse(e)}catch{return null}return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function tc(s){let e=typeof s=="number"?{ind:s}:Vs(s);if(!e)return null;let t=e.ind??e.skinindex??e.skin_index??e.i??e.index,o=e.count??e.cnt??e.c??1;if(!ht(t)||!ht(o,1)||o>1e4)return null;let n=Vs(e.m??e.metadata??e.meta)??{},r={skin:t,count:o};for(let i of["serial","wear","style","paint","instance"]){let a=e[i]??n[i];if(a!=null){if(i==="wear"?typeof a!="number"||!Number.isFinite(a)||a<0||a>1:!ht(a))return null;r[i]=a}}return r}function Qm(s){if(typeof s=="number")return ht(s)?[{id:1,amount:s}]:null;if(!Array.isArray(s)||s.length>64)return null;let e=new Map;for(let t of s){let o=Vs(t);if(!o||!ht(o.cid,1)||typeof o.amt!="number"||!Number.isFinite(o.amt)||o.amt<0||o.amt>1e9||o.cid===1&&!ht(o.amt))return null;let n=(e.get(o.cid)??0)+o.amt;if(!Number.isFinite(n)||n>1e9)return null;e.set(o.cid,n)}return[...e].filter(([,t])=>t>0).map(([t,o])=>({id:t,amount:o}))}function oc(s,e){let t=Vs(s);if(!t||!ht(t.trid,1,Number.MAX_SAFE_INTEGER)||t.status&&t.status!=="completed")return null;let o=Date.parse(t.dte??t.date??"");if(!Number.isFinite(o)||oe||!Array.isArray(t.sksell)||!Array.isArray(t.skbuy)||t.sksell.length+t.skbuy.length>40)return null;let n=t.sksell.map(tc),r=t.skbuy.map(tc);if([...n,...r].some(l=>!l)||!n.length&&!r.length)return null;let i=Qm(t.csell??[]),a=Qm(t.cbuy??[]);return!i||!a?null:{trid:t.trid,at:o,context:"history",give:n,get:r,giveCurrencies:i,getCurrencies:a,giveKr:i.find(l=>l.id===1)?.amount??0,getKr:a.find(l=>l.id===1)?.amount??0}}function sc(s,e){let t=Vs(s);if(!t||t.status!=="completed"||!ht(t.marketid,1,Number.MAX_SAFE_INTEGER)||!ht(t.skinindex)||!ht(t.amount,1))return null;let o=Date.parse(t.date);return!Number.isFinite(o)||oe||!["buy","sell"].includes(t.type)?null:{marketid:t.marketid,type:t.type,skinindex:t.skinindex,amount:t.amount,date:new Date(o).toISOString()}}var ht,nc=w(()=>{"use strict";ht=(s,e=0,t=1e9)=>typeof s=="number"&&Number.isSafeInteger(s)&&s>=e&&s<=t});var nf={};A(nf,{default:()=>gr});function tf(s){let e=2166136261,t=84696351;for(let o=0;o>>0,t=Math.imul(t^s.charCodeAt(o),16777619)>>>0;return e.toString(36)+t.toString(36)}function Ry(){try{let s=JSON.parse(localStorage.getItem(of)??"[]");return new Set(Array.isArray(s)?s.filter(e=>typeof e=="string").slice(-sf):[])}catch{return new Set}}var of,sf,rc,Py,gr,ic=w(()=>{"use strict";D();It();xe();nc();of="kute_market_sent",sf=2e3;rc=class{constructor(){this.running=!1,this.generation=0,this.nextPostAt=0,this.failures=0,this.account="",this.queue=new Map,this.sent=Ry(),this.timer=void 0,this.controller=null,this.listings=new Map,this.openTrades=new Map,this.seen=new Set,this.listener=e=>this.receive(e)}start(){this.running||!u.hostFeatures?.includes("history-capture")||(this.running=!0,this.generation++,window.chrome.webview.addEventListener("message",this.listener))}stop(){this.running&&window.chrome.webview.removeEventListener("message",this.listener),this.running=!1,this.generation++,clearTimeout(this.timer),this.controller?.abort(),this.controller=null,this.queue.clear(),this.forgetCaptured()}useAccount(e){this.account!==e&&(this.queue.clear(),this.forgetCaptured(),this.account=e)}forgetCaptured(){this.listings.clear(),this.openTrades.clear(),this.seen.clear()}active(){return this.running&&!document.hidden&&!document.pointerLockElement&&!he.down&&!he.offline()&&W.loggedIn()}currentAccount(){try{return localStorage.getItem("krunker_username")??""}catch{return""}}current(e,t){return this.active()&&e===this.generation&&t===this.currentAccount()}receive(e){let t=null;try{t=typeof e.data=="string"?JSON.parse(e.data):e.data}catch{return}if(u.hostFeatures?.includes("market-capture")){t?.marketCapture&&this.captured(t.marketCapture);return}let o=t?.marketHistory;!o||o.kind!=="sales"&&o.kind!=="trades"||this.capture(o.data,o.kind)}captured(e){if(typeof e.path!="string"||e.data?.error)return;let t=e.path.split(/[?#]/)[0],o=e.data?.data;if(e.method==="GET"){if(t==="/market/history")this.capture(e.data,"sales");else if(t==="/trades/history"){if(Array.isArray(o?.open)){this.openTrades.clear();for(let i of o.open.slice(0,100))Number.isSafeInteger(i?.trid)&&this.openTrades.set(i.trid,i)}this.capture(e.data,"trades")}else t==="/market/listings"&&Array.isArray(o?.listings)&&this.listed(o.listings);return}if(e.method!=="POST")return;if(t==="/market/purchase"){let i=this.listings.get(o?.mid);if(i&&i.skin===o?.skn){let a={marketid:o.mid,type:"buy",date:new Date().toISOString(),skinindex:o.skn,amount:i.price,status:"completed"};this.capture({history:[a]},"sales")}return}let n=/^\/trades\/(\d+)\/accept$/.exec(t),r=n&&this.openTrades.get(Number(n[1]));r&&this.capture({completed:[r]},"trades")}listed(e){if(this.active()){this.useAccount(this.currentAccount());for(let t of e.slice(0,200))!Number.isSafeInteger(t?.marketid)||!Number.isSafeInteger(t?.skinindex)||!Number.isSafeInteger(t?.funds)||(this.listings.delete(t.marketid),this.listings.set(t.marketid,{skin:t.skinindex,price:t.funds}),this.seen.size<200&&this.seen.add(t.skinindex));for(;this.listings.size>3e3;)this.listings.delete(this.listings.keys().next().value??0);this.schedule()}}capture(e,t){if(!this.active()||e?.error)return;let o=this.currentAccount(),n=e?.data??e,r=t==="trades"?n?.completed:n?.history;if(!Array.isArray(r))return;this.useAccount(o);let i=Date.now();for(let a of r.slice(0,500)){let l=t==="trades"?oc(a,i):sc(a,i);if(!l)continue;let c=t+JSON.stringify(l);this.sent.has(tf(`${o} +`,yy=".item-detail-container, .items-detail-root",Vl="kuteDetailBtn",xy=5e3,Yl=class s{constructor(){this.timer=void 0,this.busy=!1,this.pick=null,this.onPick=e=>{if(document.pointerLockElement||!(e.target instanceof Element))return;let t=e.target.closest("[id^='trd_'], .trade-inv-item[data-index]");if(!t)return;let o=/^trd_(?:sel_|inv_)?\d+_(\d+)/.exec(t.id),n=o?o[1]:t.getAttribute("data-index");if(n===null||!/^\d+$/.test(n))return;let r=t.querySelector(".tItemN")?.textContent?.trim()??"";this.pick={skin:Number(n),name:r,at:Date.now()}}}start(){if(this.timer===void 0){if(!document.getElementById(qm)){let e=document.createElement("style");e.id=qm,e.textContent=ky,document.head.append(e)}this.timer=window.setInterval(()=>this.tick(),vy),document.addEventListener("pointerdown",this.onPick,!0)}}stop(){clearInterval(this.timer),this.timer=void 0,document.removeEventListener("pointerdown",this.onPick,!0),this.pick=null;for(let e of document.querySelectorAll(`.${Ke}, .${Vl}`))e.remove();for(let e of document.querySelectorAll(`[${vo}]`))e.removeAttribute(vo)}static thumbPath(e){let t=/\/textures\/previews\/([^?#]+)/.exec(e);return t?t[1]:null}static askOf(e){let t=e.querySelector(".inline-price");if(t){let o=Number((t.textContent??"").replace(/[^\d.]/g,""));return Number.isFinite(o)&&o>0?o:null}for(let o of e.querySelectorAll("span, div")){if(o.classList.contains(Ke)||o.children.length)continue;let n=o.textContent?.trim()??"";if(/^~/.test(n))continue;let r=/^([\d,.]+)\s*KR$/i.exec(n)??/^([\d,.]+)$/.exec(n);if(r&&o.closest(".estimate-badge")===null){let i=Number(r[1].replace(/,/g,""));if(Number.isFinite(i)&&i>0)return i}}return null}async tick(){if(this.busy||document.pointerLockElement)return;let e=document.querySelector(yy),t=e?.getAttribute("aria-label")??"1";e&&e.getAttribute(vo)!==t&&(e.setAttribute(vo,t),e.querySelector(`.${Vl}`)?.remove(),await this.detailButton(e,t));let o=[...document.querySelectorAll(wy)].filter(n=>!n.hasAttribute(vo));if(o.length){this.busy=!0;try{let n=new Map;for(let i of o){i.setAttribute(vo,"1");let a=i.querySelector("img"),l=a instanceof HTMLImageElement?s.thumbPath(a.currentSrc||a.src):null;if(!l)continue;let c=n.get(l)??[];c.push(i),n.set(l,c)}if(!n.size)return;let r=await W.valuesByThumbnails([...n.keys()]);for(let[i,a]of n){let l=r[i];for(let c of a)c.isConnected&&this.draw(c,l??null)}}finally{this.busy=!1}}}async detailValue(e,t){let{pick:o}=this;if(o&&Date.now()-o.atc.name.toLowerCase()===t.toLowerCase())??[];return l.length===1?l[0]:null}async detailButton(e,t){let o=e.querySelector(".full-details-container, .items-detail-header-actions");if(!o)return;let n=document.createElement("button");n.type="button";let r=o.querySelector("button");n.className=`${r?.className??""} ${Vl}`.trim();let i=r?.querySelector("i")?.className??"material-icons";n.innerHTML=`candlestick_chart Kute Market`,n.title="K value, liquidity, price history, depth and owners in Kute Market",o.append(n);let a=await this.detailValue(e,t);if(!a||e.getAttribute(vo)!==t){n.remove();return}let l=n.querySelector("span");l&&(l.textContent=`Kute Market \xB7 K ${Pe(a.fair)} ${a.grade}`),n.addEventListener("click",c=>{c.stopPropagation(),u.market?.open("item",a.skin)})}draw(e,t){if(e.querySelector(`.${Ke}`)?.remove(),!t)return;let o=document.createElement("div"),n=e.querySelector(".estimate-badge");o.className=n?`${n.className} ${Ke}`:`${Ke} kuteFloating`;let r=s.askOf(e),i="";if(r!==null&&t.fair>0){let a=r/t.fair-1,l="";a<=-.1&&t.confidence>=40?l="kuteDeal":a>=.25&&(l="kuteOver");let c=Math.round(Math.abs(a)*100);i=`${a<0?"\u2212":"+"}${c}%`}o.innerHTML=`K ${Pe(t.fair)}${S(t.grade)}${i}`,o.title=`Kute fair value ${Pe(t.fair)} kr, evidence score ${t.confidence}/100, public-market activity grade ${t.grade}`+(t.privateTrading?.trades7d?`, ${t.privateTrading.trades7d} reported private trades this week`:"")+(t.exchange?.status==="applied"?", includes private exchange evidence":"")+(r!==null?`, this ask ${it(r/t.fair-1)} against it`:"")+". Click for the item in Kute Market",o.addEventListener("click",a=>{a.stopPropagation(),a.preventDefault(),u.market?.open("item",t.skin)}),n?n.after(o):e.append(o)}},Sy=new Yl,hr=Sy});var Um,jm=w(()=>{Um='
      '});var Gm={};A(Gm,{default:()=>mr});var $y,Jl,Cy,mr,Zl=w(()=>{"use strict";xe();Ve();pe();jm();$y=1200,Jl=class s{constructor(){this.timer=void 0,this.lastKey="",this.retryAt=0,this.failures=0,this.generation=0,this.busy=!1,this.expanded=!1,this.dismiss=e=>{let t=this.box?.shadowRoot?.querySelector("details");if(t?.open){if(e instanceof KeyboardEvent){if(e.key!=="Escape")return;e.preventDefault(),e.stopPropagation(),t.querySelector("summary")?.focus()}else if(e.target instanceof Node&&this.box?.contains(e.target))return;t.open=!1,this.expanded=!1}},this.box=null}start(){this.timer===void 0&&(this.timer=window.setInterval(()=>this.tick(),$y),window.addEventListener("pointerdown",this.dismiss,!0),window.addEventListener("keydown",this.dismiss,!0))}stop(){clearInterval(this.timer),this.timer=void 0,this.generation++,window.removeEventListener("pointerdown",this.dismiss,!0),window.removeEventListener("keydown",this.dismiss,!0),this.clear()}clear(){this.box?.remove(),this.box=null,this.lastKey="",this.expanded=!1}static kr(e){let t=/([\d,.]+)/.exec(e.replace(/[~\s]/g,""));return t&&Number(t[1].replace(/,/g,""))||0}static row(e,t){let o=e.parentElement;for(;o&&!o.contains(t);)o=o.parentElement;return o&&o!==document.body?o:null}snapshot(){let e=[...document.querySelectorAll(".trade-window .trade-side")].filter(d=>d.getClientRects().length);if(e.length>=2){let d=s.row(e[0],e[1]);if(!d)return null;let h=f=>[...f.querySelectorAll(".trade-offer-scroll .trade-inv-item")].map(g=>{let b=g.getAttribute("data-index"),v=b!==null&&/^\d+$/.test(b)?Number(b):-1,k=g.querySelector("img")?.getAttribute("src")??"",E={skin:v,count:s.kr(g.querySelector(".trade-item-count")?.textContent??"1")||1};v<0&&(E.path=/\/textures\/previews\/([^?#]+)/.exec(k)?.[1]??"");for(let[L,x]of[["serial","data-serial"],["wear","data-wear-float"],["style","data-style"]]){let $=g.getAttribute(x);$!==null&&$!==""&&Number.isFinite(Number($))&&(E[L]=Number($))}return E}),p=h(e[0]),m=h(e[1]);return{give:p,get:m,giveKr:0,getKr:0,anchor:d,key:JSON.stringify([p,m])}}let t=[document.getElementById("tradeList0"),document.getElementById("tradeList1")];if(!t[0]?.getClientRects().length||!t[1]?.getClientRects().length)return null;let o=s.row(t[0],t[1]);if(!o)return null;let n=d=>[...d.querySelectorAll("[id^='trd_']")].flatMap(h=>{let p=/^trd_(?:sel_)?\d+_(\d+)(?:_\d+)?$/.exec(h.id);return p?[{skin:Number(p[1]),count:s.kr(h.querySelector(".tItemCnt")?.textContent??"1")||1}]:[]}),r=d=>Math.max(0,s.kr(document.getElementById(`currency_item_${d}_1`)?.querySelector(".tCurrencyAmount")?.textContent??"0")),i=n(t[0]),a=n(t[1]),l=r(0),c=r(1);return{give:i,get:a,giveKr:l,getKr:c,anchor:o,key:JSON.stringify([i,a,l,c])}}current(e,t){if(this.timer===void 0||t!==this.generation||document.pointerLockElement||document.hidden)return!1;let o=this.snapshot();return o?.anchor===e.anchor&&o.key===e.key}async tick(){if(this.busy||this.timer===void 0||document.pointerLockElement||document.hidden)return;this.busy=!0;let{generation:e}=this;try{let t=this.snapshot();if(!t){this.clear();return}if(Date.now()p.skin<0&&p.path).map(p=>p.path),r=n.length?await W.valuesByThumbnails(n):{};if(!this.current(t,e))return;let i=p=>p.map(({path:m,...f})=>({...f,skin:f.skin<0?r[m??""]?.skin??-1:f.skin})),a=i(t.give),l=i(t.get);if([...a,...l].some(p=>p.skin<0)){this.render(t,null,"An item could not be identified. A complete comparison is unavailable.");return}let c=await W.analyzeStatus({give:a,get:l,giveKr:t.giveKr,getKr:t.getKr}),d=c.data;if(d?(this.failures=0,this.retryAt=0):(this.failures++,this.retryAt=c.status===429?c.retryAt??Date.now()+6e4:Date.now()+Math.min(6e4,5e3*2**(this.failures-1)),this.lastKey=""),!this.current(t,e))return;let h=c.status===429?`Request limit reached. Estimates resume after ${new Date(this.retryAt).toLocaleTimeString()}.`:"Estimates unavailable. Retrying with a longer delay.";this.render(t,d,h)}finally{this.busy=!1}}render(e,t,o){this.box||(this.box=document.createElement("div"),this.box.className="kuteTradeBox",this.box.style.cssText="all:initial;display:block;box-sizing:border-box;width:100%;min-width:0;margin:0 0 10px;",this.box.attachShadow({mode:"open"}).innerHTML=Um);let n=this.box.shadowRoot?.querySelector(".panel");if(!n)return;n.className=`panel${e.give.length||e.get.length||e.giveKr||e.getKr?" filled":""}`,this.expanded=n.querySelector("details")?.open??this.expanded;let r='
      Kute trade insight';if(!t)r+=`

      ${S(o)}

      `;else{let i=!e.give.length&&!e.giveKr||!e.get.length&&!e.getKr,a=[...t.give.items,...t.get.items].some(f=>f.unknown),l=Us(t.verdict),c=i?"Add items on both sides to compare":jt[l].detail,d=jt[l].label;a&&(d="Incomplete comparison"),i&&(d="Add both sides"),r+=`${c}`;let h=(f,g)=>{let b=f.items.reduce((k,E)=>k+E.count,0),v=f.items.some(k=>k.unknown);return`
      ${g}${Pe(f.value)}${v?"+":""} KR${b} ${b===1?"item":"items"}${f.kr?` + ${Pe(f.kr)} KR`:""} · ${v?"Partial estimate":"Estimated value"}
      `},p=i||a?'–Incomplete comparison':`${t.difference>0?"+":""}${Pe(t.difference)} KR${S(it(t.differenceShare))} of the larger side`;r+=`
      ${h(t.give,"You give")}
      ${d}${p}
      ${h(t.get,"You receive")}
      `;let m=(f,g)=>`

      ${g}

      ${f.items.map(b=>`
      ${b.count>1?`${b.count} × `:""}${S(b.name)}${b.serial!==void 0?` #${S(b.serial)}`:""}${b.wear!==void 0?` · wear ${b.wear.toFixed(4)}`:""}${b.unknown?"":`${S(b.grade)}`}${b.unknown?"Unvalued":`${Pe(b.lineValue)} KR`}
      `).join("")}${f.kr?`
      Added KR${Pe(f.kr)} KR
      `:""}${!f.items.length&&!f.kr?'No items added':""}
      `;r+=`Item breakdown & evidenceHide item breakdown & evidence
      ${m(t.give,"You give")}${m(t.get,"You receive")}
      • Estimates describe market data, not guaranteed sale prices. Activity grades do not guarantee a selling time.
      • ${t.drivers.filter(f=>!f.startsWith("Liquidity adjustments")).map(f=>`
      • ${S(f)}
      • `).join("")}
      `}n.innerHTML=r,this.box.nextElementSibling!==e.anchor&&e.anchor.before(this.box)}},Cy=new Jl,mr=Cy});var Vm={};A(Vm,{readWatchlist:()=>Se,saveWatchlist:()=>wo,toggleWatch:()=>Ql});function Se(){try{let s=JSON.parse(localStorage.getItem(Wm)??"[]");if(!Array.isArray(s))return[];let e=new Set;return s.filter(t=>!t||!Number.isInteger(t.skin)||t.skin<0||e.has(t.skin)||typeof t.name!="string"?!1:(e.add(t.skin),!0)).slice(0,100).map(t=>({skin:t.skin,name:t.name,rarity:Number.isInteger(t.rarity)?t.rarity:void 0,thumbnail:typeof t.thumbnail=="string"?t.thumbnail:null,target:Number.isFinite(t.target)&&t.target>0?t.target:null}))}catch{return[]}}function wo(s){try{return localStorage.setItem(Wm,JSON.stringify(s.slice(0,100))),window.dispatchEvent(new Event("kute-market-watch-changed")),!0}catch{return!1}}function Ql(s){let e=Se(),t=e.some(o=>o.skin===s.skin);return!t&&e.length>=100?!1:wo(t?e.filter(o=>o.skin!==s.skin):[...e,{skin:s.skin,name:s.name,rarity:s.rarity,thumbnail:s.thumbnail??null,target:null}])}var Wm,Ut=w(()=>{"use strict";Wm="kute_market_watch"});var Zm={};A(Zm,{UNREAD_EVENT:()=>Ws,default:()=>$t});var My,Ty,Ym,Xm,Jm,Ws,Ay,ec,Ly,$t,fr=w(()=>{"use strict";D();It();xe();Ut();Ve();My=5*6e4,Ty=3*36e5,Ym="kute_market_alerts",Xm="kute_market_watch_report",Jm="kute_market_alerts_unread",Ws="kute-market-alerts-unread",Ay=2*36e5,ec=class{constructor(){this.timer=0,this.busy=!1,this.seen=new Map;try{let e=JSON.parse(localStorage.getItem(Ym)??"[]");if(Array.isArray(e))for(let[t,o]of e.slice(0,100))Number.isInteger(t)&&Number.isFinite(o?.target)&&typeof o?.reached=="boolean"&&this.seen.set(t,o)}catch{this.seen.clear()}this.unread=new Set;try{let e=JSON.parse(localStorage.getItem(Jm)??"[]");if(Array.isArray(e))for(let t of e.slice(0,100))Number.isInteger(t)&&this.unread.add(t)}catch{this.unread.clear()}this.onChange=()=>{this.check(),this.report()}}start(){this.timer||(this.timer=window.setInterval(()=>{this.check()},My),window.addEventListener("kute-market-watch-changed",this.onChange),this.check(),this.report())}async report(){if(!this.active())return;let e=Se().map(n=>n.skin).sort((n,r)=>n-r),t=e.join(","),o={};try{o=JSON.parse(localStorage.getItem(Xm)??"{}")??{}}catch{}if(!(o.key===t&&Date.now()-(o.at??0)o.target!==null);for(let o of this.seen.keys())e.some(n=>n.skin===o)||this.seen.delete(o);this.save();let t=this.unread.size;for(let o of this.unread)e.some(n=>n.skin===o)||this.unread.delete(o);if(this.unread.size!==t&&this.saveUnread(),!!e.length){this.busy=!0;try{let o=await W.values(e.map(i=>i.skin));if(!this.active())return;let n=Se(),r=[];for(let i of e){if(i.target===null||!n.some(d=>d.skin===i.skin&&d.target===i.target))continue;let a=o[i.skin];if(!a||!a.bookAt||!a.valuedAt||Date.now()-Math.min(a.bookAt,a.valuedAt)>Ty||a.lowest===null)continue;let l=a.lowest<=i.target,c=this.seen.get(i.skin);l&&(!c?.reached||c.target!==i.target)&&(r.push({name:i.name,price:a.lowest}),this.unread.add(i.skin)),this.seen.set(i.skin,{target:i.target,reached:l})}if(r.length){this.saveUnread();let i=r[0],a=r.length>1?` and ${r.length-1} more`:"";u.showNotification(`Watchlist: ${i.name} at ${Pe(i.price)} KR${a}. Observed ask reached your target.`,!1,8)}this.save()}catch{}finally{this.busy=!1}}}},Ly=new ec,$t=Ly});var ef={};A(ef,{contributedItem:()=>tc,contributedSale:()=>sc,contributedTrade:()=>oc});function Vs(s){let e=s;if(typeof e=="string")try{e=JSON.parse(e)}catch{return null}return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function tc(s){let e=typeof s=="number"?{ind:s}:Vs(s);if(!e)return null;let t=e.ind??e.skinindex??e.skin_index??e.i??e.index,o=e.count??e.cnt??e.c??1;if(!ht(t)||!ht(o,1)||o>1e4)return null;let n=Vs(e.m??e.metadata??e.meta)??{},r={skin:t,count:o};for(let i of["serial","wear","style","paint","instance"]){let a=e[i]??n[i];if(a!=null){if(i==="wear"?typeof a!="number"||!Number.isFinite(a)||a<0||a>1:!ht(a))return null;r[i]=a}}return r}function Qm(s){if(typeof s=="number")return ht(s)?[{id:1,amount:s}]:null;if(!Array.isArray(s)||s.length>64)return null;let e=new Map;for(let t of s){let o=Vs(t);if(!o||!ht(o.cid,1)||typeof o.amt!="number"||!Number.isFinite(o.amt)||o.amt<0||o.amt>1e9||o.cid===1&&!ht(o.amt))return null;let n=(e.get(o.cid)??0)+o.amt;if(!Number.isFinite(n)||n>1e9)return null;e.set(o.cid,n)}return[...e].filter(([,t])=>t>0).map(([t,o])=>({id:t,amount:o}))}function oc(s,e){let t=Vs(s);if(!t||!ht(t.trid,1,Number.MAX_SAFE_INTEGER)||t.status&&t.status!=="completed")return null;let o=Date.parse(t.dte??t.date??"");if(!Number.isFinite(o)||oe||!Array.isArray(t.sksell)||!Array.isArray(t.skbuy)||t.sksell.length+t.skbuy.length>40)return null;let n=t.sksell.map(tc),r=t.skbuy.map(tc);if([...n,...r].some(l=>!l)||!n.length&&!r.length)return null;let i=Qm(t.csell??[]),a=Qm(t.cbuy??[]);return!i||!a?null:{trid:t.trid,at:o,context:"history",give:n,get:r,giveCurrencies:i,getCurrencies:a,giveKr:i.find(l=>l.id===1)?.amount??0,getKr:a.find(l=>l.id===1)?.amount??0}}function sc(s,e){let t=Vs(s);if(!t||t.status!=="completed"||!ht(t.marketid,1,Number.MAX_SAFE_INTEGER)||!ht(t.skinindex)||!ht(t.amount,1))return null;let o=Date.parse(t.date);return!Number.isFinite(o)||oe||!["buy","sell"].includes(t.type)?null:{marketid:t.marketid,type:t.type,skinindex:t.skinindex,amount:t.amount,date:new Date(o).toISOString()}}var ht,nc=w(()=>{"use strict";ht=(s,e=0,t=1e9)=>typeof s=="number"&&Number.isSafeInteger(s)&&s>=e&&s<=t});var nf={};A(nf,{default:()=>gr});function tf(s){let e=2166136261,t=84696351;for(let o=0;o>>0,t=Math.imul(t^s.charCodeAt(o),16777619)>>>0;return e.toString(36)+t.toString(36)}function Ry(){try{let s=JSON.parse(localStorage.getItem(of)??"[]");return new Set(Array.isArray(s)?s.filter(e=>typeof e=="string").slice(-sf):[])}catch{return new Set}}var of,sf,rc,Py,gr,ic=w(()=>{"use strict";D();It();xe();nc();of="kute_market_sent",sf=2e3;rc=class{constructor(){this.running=!1,this.generation=0,this.nextPostAt=0,this.failures=0,this.account="",this.queue=new Map,this.sent=Ry(),this.timer=void 0,this.controller=null,this.listings=new Map,this.openTrades=new Map,this.seen=new Set,this.listener=e=>this.receive(e)}start(){this.running||!u.hostFeatures?.includes("history-capture")||(this.running=!0,this.generation++,window.chrome.webview.addEventListener("message",this.listener))}stop(){this.running&&window.chrome.webview.removeEventListener("message",this.listener),this.running=!1,this.generation++,clearTimeout(this.timer),this.controller?.abort(),this.controller=null,this.queue.clear(),this.forgetCaptured()}useAccount(e){this.account!==e&&(this.queue.clear(),this.forgetCaptured(),this.account=e)}forgetCaptured(){this.listings.clear(),this.openTrades.clear(),this.seen.clear()}active(){return this.running&&!document.hidden&&!document.pointerLockElement&&!he.down&&!he.offline()&&W.loggedIn()}currentAccount(){try{return localStorage.getItem("krunker_username")??""}catch{return""}}current(e,t){return this.active()&&e===this.generation&&t===this.currentAccount()}receive(e){let t=null;try{t=typeof e.data=="string"?JSON.parse(e.data):e.data}catch{return}if(u.hostFeatures?.includes("market-capture")){t?.marketCapture&&this.captured(t.marketCapture);return}let o=t?.marketHistory;!o||o.kind!=="sales"&&o.kind!=="trades"||this.capture(o.data,o.kind)}captured(e){if(typeof e.path!="string"||e.data?.error)return;let t=e.path.split(/[?#]/)[0],o=e.data?.data;if(e.method==="GET"){if(t==="/market/history")this.capture(e.data,"sales");else if(t==="/trades/history"){if(Array.isArray(o?.open)){this.openTrades.clear();for(let i of o.open.slice(0,100))Number.isSafeInteger(i?.trid)&&this.openTrades.set(i.trid,i)}this.capture(e.data,"trades")}else t==="/market/listings"&&Array.isArray(o?.listings)&&this.listed(o.listings);return}if(e.method!=="POST")return;if(t==="/market/purchase"){let i=this.listings.get(o?.mid);if(i&&i.skin===o?.skn){let a={marketid:o.mid,type:"buy",date:new Date().toISOString(),skinindex:o.skn,amount:i.price,status:"completed"};this.capture({history:[a]},"sales")}return}let n=/^\/trades\/(\d+)\/accept$/.exec(t),r=n&&this.openTrades.get(Number(n[1]));r&&this.capture({completed:[r]},"trades")}listed(e){if(this.active()){this.useAccount(this.currentAccount());for(let t of e.slice(0,200))!Number.isSafeInteger(t?.marketid)||!Number.isSafeInteger(t?.skinindex)||!Number.isSafeInteger(t?.funds)||(this.listings.delete(t.marketid),this.listings.set(t.marketid,{skin:t.skinindex,price:t.funds}),this.seen.size<200&&this.seen.add(t.skinindex));for(;this.listings.size>3e3;)this.listings.delete(this.listings.keys().next().value??0);this.schedule()}}capture(e,t){if(!this.active()||e?.error)return;let o=this.currentAccount(),n=e?.data??e,r=t==="trades"?n?.completed:n?.history;if(!Array.isArray(r))return;this.useAccount(o);let i=Date.now();for(let a of r.slice(0,500)){let l=t==="trades"?oc(a,i):sc(a,i);if(!l)continue;let c=t+JSON.stringify(l);this.sent.has(tf(`${o} ${c}`))||this.queue.set(c,{kind:t,row:l})}for(;this.queue.size>300;)this.queue.delete(this.queue.keys().next().value??"");this.schedule()}schedule(){if(clearTimeout(this.timer),!this.running||!this.queue.size&&!this.seen.size)return;let e=Math.max(100,this.nextPostAt-Date.now(),W.retryAt-Date.now());this.timer=window.setTimeout(()=>{this.flush()},e)}async flush(){if(!this.running||this.controller||!this.queue.size&&!this.seen.size)return;if(this.account!==this.currentAccount()){this.queue.clear(),this.seen.clear();return}if(!this.active()||Date.now()sf;)this.sent.delete(this.sent.values().next().value??"");try{localStorage.setItem(of,JSON.stringify([...this.sent]))}catch{}this.failures=0}catch{e===this.generation&&(this.failures++,this.nextPostAt=Date.now()+Math.min(6e4,5e3*2**Math.min(this.failures-1,4)))}finally{this.controller===i&&(this.controller=null,this.schedule())}}},Py=new rc,gr=Py});var rf={};A(rf,{DISCOVERY_TABS:()=>br,TITLES:()=>Ys});var Ys,br,vr=w(()=>{"use strict";Ys={overview:"Market",intelligence:"Discover",search:"Discover",active:"Discover",movers:"Discover",deals:"Discover",indices:"Market",watchlist:"Watchlist",portfolio:"Inventory",analyze:"Trade",help:"How it works",item:"Item overview"},br=["search","active","deals","movers","intelligence"]});var af={};A(af,{element:()=>Fo,html:()=>P,markup:()=>Xs});function Fo(s,e,...t){let o=Object.entries(e).filter(([,r])=>r!==!1&&r!==null).map(([r,i])=>i===!0?` ${r}`:` ${r}="${S(String(i))}"`).join(""),n=t.map(r=>typeof r=="object"?r.html:S(String(r))).join("");return`<${s}${o}>${n}`}var Xs,P,_e=w(()=>{"use strict";pe();Xs=s=>({html:s});P=(s,...e)=>s.reduce((t,o,n)=>t+String(e[n-1])+o)});var cf={};A(cf,{itemDesk:()=>ac,marketDesk:()=>lc});function ac(s){let e=s.analytics;if(!e)return'

      Advanced analytics unavailable

      This server does not yet provide the detailed metrics for this item.

      ';let{book:t}=e,o=!!t.observedAt&&Date.now()-t.observedAt<=3*36e5,n=a=>e.latest!==null&&a!==null?`${ae(e.latest/a-1)} latest daily mean vs average`:"Needs consecutive daily sale prices",{position:r}=e.range90,i=t.ladder.length?`
      ${t.ladder.map(a=>``).join("")}
      Ask ceilingListingsTotal asks / KR
      ${T(a.price)} KR${a.premium?`Within +${Math.round(a.premium*100)}% of lowest`:"At the lowest ask"}
      ${a.count}
      ${T(a.kr)}
      `:'

      The next successful book observation will populate the ask ladder.

      ';return`
      ADVANCED / TRADING DESK

      Price, activity & supply

      Completed daily means through ${S(e.throughDay)} UTC. ${e.observedDays30} of 30 days have observed sale prices.

      Descriptive analytics
      Sale-price return / 7D ${ae(e.change7d)}30D ${ae(e.change30d)}Latest daily mean ${Js(e.latest)}
      ${ne("Sales-weighted price / 30D",Js(e.weightedPrice30),e.weightedPrice30===null?"No completed sale-price observations":`${ae(e.estimateVsWeighted)} Kute estimate vs benchmark`)}${ne("Simple moving average / 7D",Js(e.sma7),n(e.sma7))}${ne("Simple moving average / 30D",Js(e.sma30),n(e.sma30))}${ne("RSI / 14 periods",Qs(e.rsi14),e.rsi14===null?`Needs 15 consecutive priced days; ${e.consecutiveDays} available`:"Wilder smoothing of daily sale means; scale 0 to 100")}${ne("Daily volatility / 30D",Gt(e.dailyVolatility30),`${e.returnPairs30} adjacent daily returns; needs 10; not annualized`)}${ne("Max drawdown / 90D",Gt(e.maxDrawdown90),`${e.observedDays90} priced days; gaps can hide larger declines`)}${ne("Range position / 90D",Gt(r),e.range90.low!==null?`${T(e.range90.low)} to ${T(e.range90.high)} KR in daily means`:"Needs at least 5 observed price days")}${ne("Reported turnover / 30D",Js(e.turnover30d),"Daily mean price multiplied by units sold")}

      Activity & supply pressure

      Supply ${lf(e.statsAt)}
      `+Zs("Weekly sales",e.reportedDays7?`${T(e.sales7d)} units`:"No reports",`${e.priorReportedDays7?T(e.priorSales7d):"No reports"} in the prior week; reports on ${e.reportedDays7}/7 and ${e.priorReportedDays7}/7 days`)+Zs("Relative weekly volume",Qs(e.activityRatio,"x"),"Latest 7 days / prior 7; requires reports for both full weeks")+Zs("Listed supply / daily sales",Qs(e.daysListedAtRecentPace," days"),"Reported listings / recent daily sales; a supply ratio, not time to sell")+Zs("Circulating supply listed",Gt(e.listedShare),`${T(e.reportedListed)} reported listed / ${T(e.circulation)} circulating`)+Zs("30D turnover / circulation",Gt(e.turnoverShare),"Reported units sold / current supply; an item can trade more than once")+'

      Ask-side depth ladder

      '+lf(t.observedAt)+"
      "+(o?"":'

      This book needs a fresh observation. The ladder describes the stored sample.

      ')+i+`

      Cumulative counts in ${t.sampled} sampled listings; ${e.reportedListed} reported listed. These rows overlap. ${t.belowEstimate} sampled asks are below the Kute estimate.

      Largest observed seller${t.sellers} identified sellers; identity available for ${t.knownSellerListings}/${t.sampled} listings
      ${Gt(t.largestSellerShare)}
      Read the metrics

      All technical indicators use completed daily average sale prices, not exchange closing prices or individual transactions. Moving averages require every day in their window. RSI resets at a missing price day; a flat sequence is shown as 50. A high or low RSI describes past momentum and does not establish a buy or sell signal.

      Volatility is the sample standard deviation of log returns between adjacent observed days. Drawdown is the largest observed peak-to-trough decline. The sales-weighted benchmark weights each daily mean by its reported sale count. Missing days are excluded, never treated as zero-price trades.

      The ladder contains asking prices only. We have no bid book, so it cannot measure bid/ask spread, execution slippage, or buyer demand. Supply ratios require a supply observation within 24 hours. These metrics do not enable unvalidated forecasts.

      `}function lc(s){let e=s.diagnostics,t=s.breadth;return!e||!t?"":`
      ADVANCED / MARKET DIAGNOSTICS

      How broad is the move?

      ${t.eligible} eligible items
      ${ne("Advance / decline ratio",Qs(e.advanceDeclineRatio,"x"),`${t.rising} rising / ${t.falling} falling; 0.5% movement threshold`)}${ne("Median item return / 7D",ae(e.medianChange),"Equal item weighting among eligible estimates")}${ne("Middle half of returns",`${ae(e.lowerQuartile)} to ${ae(e.upperQuartile)}`,"25th to 75th percentile; dispersion across items")}${ne("Top 10 turnover share",Gt(e.top10VolumeShare),"Concentration of 30D KR turnover in eligible items")}
      ${(s.categories??[]).map(o=>``).join("")}
      CategoryEligible7D medianRising / falling30D KR turnoverTurnover share
      ${S(Et[o.type]??"Other")}${o.items}${ae(o.change)}${o.rising??"?"} / ${o.falling??"?"}${T(o.volume)}${Gt(e.eligibleVolume>0?o.volume/e.eligibleVolume:null)}

      Coverage: ${t.eligible} of ${T(t.total)} tradable items. Requires a sales-based estimate updated within 24 hours, at least 5 sales in 7 days, and a measured 7D trend. Turnover shares describe this eligible set, not the entire market. Price changes use Kute estimates.

      `}var Qs,Gt,Js,lf,Zs,wr=w(()=>{"use strict";pe();Ve();Qs=(s,e="")=>s==null?"Unavailable":s.toFixed(1)+e,Gt=s=>s==null?"Unavailable":Qs(s*100,"%"),Js=s=>s==null?"Unavailable":`${T(s)} KR`,lf=s=>s?`${We(Math.max(0,Date.now()-s))} ago`:"freshness unknown",Zs=(s,e,t)=>`
      ${s}${t}
      ${e}
      `});var uf={};A(uf,{overviewView:()=>cc});async function cc(s){let[e,t]=await Promise.all([W.cached("/market/overview",5*df),W.cached("/market/indices",60*df)]);if(!e)return s.unavailable();let o=new Date().toISOString().slice(0,10),n=e.days.filter(f=>f.dayf.name==="kute-100"),l=Se().slice(0,4),c=l.length?await W.values(l.map(f=>f.skin)):{},d=l.length?P` +${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.delete(this.sent.values().next().value??"");try{localStorage.setItem(of,JSON.stringify([...this.sent]))}catch{}this.failures=0}catch{e===this.generation&&(this.failures++,this.nextPostAt=Date.now()+Math.min(6e4,5e3*2**Math.min(this.failures-1,4)))}finally{this.controller===i&&(this.controller=null,this.schedule())}}},Py=new rc,gr=Py});var rf={};A(rf,{DISCOVERY_TABS:()=>br,TITLES:()=>Ys});var Ys,br,vr=w(()=>{"use strict";Ys={overview:"Market",intelligence:"Discover",search:"Discover",active:"Discover",movers:"Discover",deals:"Discover",indices:"Market",watchlist:"Watchlist",portfolio:"Inventory",analyze:"Trade",help:"How it works",item:"Item overview"},br=["search","active","deals","movers","intelligence"]});var af={};A(af,{element:()=>Fo,html:()=>P,markup:()=>Xs});function Fo(s,e,...t){let o=Object.entries(e).filter(([,r])=>r!==!1&&r!==null).map(([r,i])=>i===!0?` ${r}`:` ${r}="${S(String(i))}"`).join(""),n=t.map(r=>typeof r=="object"?r.html:S(String(r))).join("");return`<${s}${o}>${n}`}var Xs,P,_e=w(()=>{"use strict";pe();Xs=s=>({html:s});P=(s,...e)=>s.reduce((t,o,n)=>t+String(e[n-1])+o)});var cf={};A(cf,{itemDesk:()=>ac,marketDesk:()=>lc});function ac(s){let e=s.analytics;if(!e)return'

      Advanced analytics unavailable

      This server does not yet provide the detailed metrics for this item.

      ';let{book:t}=e,o=!!t.observedAt&&Date.now()-t.observedAt<=3*36e5,n=a=>e.latest!==null&&a!==null?`${ae(e.latest/a-1)} latest daily mean vs average`:"Needs consecutive daily sale prices",{position:r}=e.range90,i=t.ladder.length?`
      ${t.ladder.map(a=>``).join("")}
      Ask ceilingListingsTotal asks / KR
      ${T(a.price)} KR${a.premium?`Within +${Math.round(a.premium*100)}% of lowest`:"At the lowest ask"}
      ${a.count}
      ${T(a.kr)}
      `:'

      The next successful book observation will populate the ask ladder.

      ';return`
      ADVANCED / TRADING DESK

      Price, activity & supply

      Completed daily means through ${S(e.throughDay)} UTC. ${e.observedDays30} of 30 days have observed sale prices.

      Descriptive analytics
      Sale-price return / 7D ${ae(e.change7d)}30D ${ae(e.change30d)}Latest daily mean ${Js(e.latest)}
      ${ne("Sales-weighted price / 30D",Js(e.weightedPrice30),e.weightedPrice30===null?"No completed sale-price observations":`${ae(e.estimateVsWeighted)} Kute estimate vs benchmark`)}${ne("Simple moving average / 7D",Js(e.sma7),n(e.sma7))}${ne("Simple moving average / 30D",Js(e.sma30),n(e.sma30))}${ne("RSI / 14 periods",Qs(e.rsi14),e.rsi14===null?`Needs 15 consecutive priced days; ${e.consecutiveDays} available`:"Wilder smoothing of daily sale means; scale 0 to 100")}${ne("Daily volatility / 30D",Gt(e.dailyVolatility30),`${e.returnPairs30} adjacent daily returns; needs 10; not annualized`)}${ne("Max drawdown / 90D",Gt(e.maxDrawdown90),`${e.observedDays90} priced days; gaps can hide larger declines`)}${ne("Range position / 90D",Gt(r),e.range90.low!==null?`${T(e.range90.low)} to ${T(e.range90.high)} KR in daily means`:"Needs at least 5 observed price days")}${ne("Reported turnover / 30D",Js(e.turnover30d),"Daily mean price multiplied by units sold")}

      Activity & supply pressure

      Supply ${lf(e.statsAt)}
      `+Zs("Weekly sales",e.reportedDays7?`${T(e.sales7d)} units`:"No reports",`${e.priorReportedDays7?T(e.priorSales7d):"No reports"} in the prior week; reports on ${e.reportedDays7}/7 and ${e.priorReportedDays7}/7 days`)+Zs("Relative weekly volume",Qs(e.activityRatio,"x"),"Latest 7 days / prior 7; requires reports for both full weeks")+Zs("Listed supply / daily sales",Qs(e.daysListedAtRecentPace," days"),"Reported listings / recent daily sales; a supply ratio, not time to sell")+Zs("Circulating supply listed",Gt(e.listedShare),`${T(e.reportedListed)} reported listed / ${T(e.circulation)} circulating`)+Zs("30D turnover / circulation",Gt(e.turnoverShare),"Reported units sold / current supply; an item can trade more than once")+'

      Ask-side depth ladder

      '+lf(t.observedAt)+"
      "+(o?"":'

      This book needs a fresh observation. The ladder describes the stored sample.

      ')+i+`

      Cumulative counts in ${t.sampled} sampled listings; ${e.reportedListed} reported listed. These rows overlap. ${t.belowEstimate} sampled asks are below the Kute estimate.

      Largest observed seller${t.sellers} identified sellers; identity available for ${t.knownSellerListings}/${t.sampled} listings
      ${Gt(t.largestSellerShare)}
      Read the metrics

      All technical indicators use completed daily average sale prices, not exchange closing prices or individual transactions. Moving averages require every day in their window. RSI resets at a missing price day; a flat sequence is shown as 50. A high or low RSI describes past momentum and does not establish a buy or sell signal.

      Volatility is the sample standard deviation of log returns between adjacent observed days. Drawdown is the largest observed peak-to-trough decline. The sales-weighted benchmark weights each daily mean by its reported sale count. Missing days are excluded, never treated as zero-price trades.

      The ladder contains asking prices only. We have no bid book, so it cannot measure bid/ask spread, execution slippage, or buyer demand. Supply ratios require a supply observation within 24 hours. These metrics do not enable unvalidated forecasts.

      `}function lc(s){let e=s.diagnostics,t=s.breadth;return!e||!t?"":`
      ADVANCED / MARKET DIAGNOSTICS

      How broad is the move?

      ${t.eligible} eligible items
      ${ne("Advance / decline ratio",Qs(e.advanceDeclineRatio,"x"),`${t.rising} rising / ${t.falling} falling; 0.5% movement threshold`)}${ne("Median item return / 7D",ae(e.medianChange),"Equal item weighting among eligible estimates")}${ne("Middle half of returns",`${ae(e.lowerQuartile)} to ${ae(e.upperQuartile)}`,"25th to 75th percentile; dispersion across items")}${ne("Top 10 turnover share",Gt(e.top10VolumeShare),"Concentration of 30D KR turnover in eligible items")}
      ${(s.categories??[]).map(o=>``).join("")}
      CategoryEligible7D medianRising / falling30D KR turnoverTurnover share
      ${S(Et[o.type]??"Other")}${o.items}${ae(o.change)}${o.rising??"?"} / ${o.falling??"?"}${T(o.volume)}${Gt(e.eligibleVolume>0?o.volume/e.eligibleVolume:null)}

      Coverage: ${t.eligible} of ${T(t.total)} tradable items. Requires a sales-based estimate updated within 24 hours, at least 5 sales in 7 days, and a measured 7D trend. Turnover shares describe this eligible set, not the entire market. Price changes use Kute estimates.

      `}var Qs,Gt,Js,lf,Zs,wr=w(()=>{"use strict";pe();Ve();Qs=(s,e="")=>s==null?"Unavailable":s.toFixed(1)+e,Gt=s=>s==null?"Unavailable":Qs(s*100,"%"),Js=s=>s==null?"Unavailable":`${T(s)} KR`,lf=s=>s?`${We(Math.max(0,Date.now()-s))} ago`:"freshness unknown",Zs=(s,e,t)=>`
      ${s}${t}
      ${e}
      `});var uf={};A(uf,{overviewView:()=>cc});async function cc(s){let[e,t]=await Promise.all([W.cached("/market/overview",5*df),W.cached("/market/indices",60*df)]);if(!e)return s.unavailable();let o=new Date().toISOString().slice(0,10),n=e.days.filter(m=>m.daym.name==="kute-100"),l=Se().slice(0,4),c=l.length?await W.values(l.map(m=>m.skin)):{},d=l.length?P`
      - ${l.map(f=>{let m=c[f.skin];return P` - `}).join("")}
      - `:fe("Make this market yours","Watch items to follow their price and set a target.",''),p=(e.categories??[]).slice(0,6),h=i?.eligible?P` + `:fe("Make this market yours","Watch items to follow their price and set a target.",''),h=(e.categories??[]).slice(0,6),p=i?.eligible?P`
      @@ -277,7 +277,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del

      Market direction

      7-day breadth
      - ${h} + ${p}
      OBSERVED ON THE MARKET

      ${T(e.listingsLive)} sampled listings

      @@ -293,13 +293,13 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del

      Across the categories

      Median 7D change
      - ${p.length?P` + ${h.length?P`
      - ${p.map(f=>P` - `).join("")}
      @@ -322,7 +322,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${s.compactList(e.active??[])} - `,points:n.map(f=>({t:Date.parse(f.day+"T00:00:00Z"),values:[f.volume]})),series:[{label:"KR traded",color:"#f580b4"}]}}var df,dc=w(()=>{"use strict";_e();xe();pe();Ut();wr();df=6e4});var pf={};A(pf,{default:()=>qo,itemSearch:()=>ko});var ko,qo,Ko=w(()=>{"use strict";xe();pe();ko=(s,e,t,o="")=>`
      `,qo=class{constructor(e,t,o,n,r){this.root=e,this.select=o,this.browse=n,this.holdings=r,this.input=null,this.list=null,this.items=[],this.active=-1,this.sequence=0,this.timer=0,e.addEventListener("input",i=>{i.target instanceof HTMLInputElement&&i.target.dataset.itemSearch&&this.search(i.target)},{signal:t}),e.addEventListener("focusin",i=>{i.target!==this.input&&!(i.target instanceof Element&&this.list?.contains(i.target))&&this.dismiss()},{signal:t}),e.addEventListener("pointerdown",i=>{i.target instanceof Element&&(this.list?.contains(i.target)?i.preventDefault():i.target!==this.input&&this.dismiss())},{signal:t}),e.addEventListener("click",i=>{let a=i.target instanceof Element?i.target.closest("[data-suggestion],[data-search-all]"):null;if(!(!(a instanceof HTMLElement)||!this.list?.contains(a)))if(a.dataset.suggestion!==void 0)this.choose(Number(a.dataset.suggestion));else{let l=this.input?.value.trim()??"",c=this.input?.dataset.itemSearch??"global";this.dismiss(),this.browse(l,c)}},{signal:t}),t.addEventListener("abort",()=>this.dismiss(),{once:!0})}dismiss(){clearTimeout(this.timer),this.sequence++,this.list&&(this.list.hidden=!0),this.input?.setAttribute("aria-expanded","false"),this.input?.removeAttribute("aria-activedescendant"),this.input=null,this.list=null,this.items=[],this.active=-1}search(e){this.dismiss();let t=e.value.trim();if(!t)return;let o=this.root.getElementById(`${e.id}List`);if(!o)return;this.input=e,this.list=o,o.hidden=!1,o.innerHTML=`
      Searching items...
      `,e.setAttribute("aria-expanded","true");let{sequence:n}=this;this.timer=window.setTimeout(async()=>{let r=null;try{e.dataset.itemSearch==="holdings"?r=this.holdings().filter(c=>c.name.toLocaleLowerCase().includes(t.toLocaleLowerCase())):r=(await W.cached(`/market/search?q=${encodeURIComponent(t)}&sort=volume&page=1`,6e4))?.items??null}catch{r=null}if(n!==this.sequence||!e.isConnected||e.value.trim()!==t)return;this.items=r?.slice(0,8)??[];let i=e.dataset.itemSearch,a=i==="holdings"?"Your holdings":"All items",l=i==="give"||i==="get"?"Add":"Open";o.innerHTML=`
      ${a}${l} an item
      ${this.items.map((c,d)=>``).join("")}
      ${!r||!r.length?`
      ${r?"No matching items":"Search unavailable. Try typing again."}
      `:""}${i==="global"||i==="discover"?'':""}`},250)}choose(e){let t=this.items[e],o=this.input?.dataset.itemSearch;!t||!o||(this.dismiss(),this.select(t,o))}key(e){if(e.isComposing)return!1;let t=this.root.activeElement;if(!(t instanceof HTMLInputElement)||!t.dataset.itemSearch)return!1;if(e.key==="Tab")return this.dismiss(),!1;if(e.key==="Escape"&&this.input)return this.dismiss(),e.preventDefault(),!0;if(e.key==="Enter"&&this.active>=0)return this.choose(this.active),e.preventDefault(),!0;if(e.key!=="ArrowDown"&&e.key!=="ArrowUp")return!1;if(e.preventDefault(),this.input!==t)return this.search(t),!0;if(!this.items.length)return!0;let o=this.active+(e.key==="ArrowDown"?1:-1);this.active<0&&e.key==="ArrowUp"&&(o=this.items.length-1),this.active=(o+this.items.length)%this.items.length,this.list?.querySelectorAll("[data-suggestion]").forEach((r,i)=>r.setAttribute("aria-selected",String(i===this.active)));let n=`${t.id}Option${this.active}`;return t.setAttribute("aria-activedescendant",n),this.root.getElementById(n)?.scrollIntoView({block:"nearest"}),!0}}});var hf={};A(hf,{searchView:()=>uc});async function uc(s){let e=s.searchState(),t=new URLSearchParams({sort:e.sort,page:String(e.page)});for(let[i,a]of Object.entries({q:e.q,rarity:e.rarity,type:e.type,budget:e.budget,[s.tab==="active"?"min_activity":"min_sales"]:e.minSales}))a!==""&&t.set(i,a);let o=await W.cached(`/market/search?${t}`,Iy);if(!o)return s.unavailable();let n=(i,a)=>i.map((l,c)=>P` + `,points:n.map(m=>({t:Date.parse(m.day+"T00:00:00Z"),values:[m.volume]})),series:[{label:"KR traded",color:"#f580b4"}]}}var df,dc=w(()=>{"use strict";_e();xe();pe();Ut();wr();df=6e4});var pf={};A(pf,{default:()=>qo,itemSearch:()=>ko});var ko,qo,Ko=w(()=>{"use strict";xe();pe();ko=(s,e,t,o="")=>`
      `,qo=class{constructor(e,t,o,n,r){this.root=e,this.select=o,this.browse=n,this.holdings=r,this.input=null,this.list=null,this.items=[],this.active=-1,this.sequence=0,this.timer=0,e.addEventListener("input",i=>{i.target instanceof HTMLInputElement&&i.target.dataset.itemSearch&&this.search(i.target)},{signal:t}),e.addEventListener("focusin",i=>{i.target!==this.input&&!(i.target instanceof Element&&this.list?.contains(i.target))&&this.dismiss()},{signal:t}),e.addEventListener("pointerdown",i=>{i.target instanceof Element&&(this.list?.contains(i.target)?i.preventDefault():i.target!==this.input&&this.dismiss())},{signal:t}),e.addEventListener("click",i=>{let a=i.target instanceof Element?i.target.closest("[data-suggestion],[data-search-all]"):null;if(!(!(a instanceof HTMLElement)||!this.list?.contains(a)))if(a.dataset.suggestion!==void 0)this.choose(Number(a.dataset.suggestion));else{let l=this.input?.value.trim()??"",c=this.input?.dataset.itemSearch??"global";this.dismiss(),this.browse(l,c)}},{signal:t}),t.addEventListener("abort",()=>this.dismiss(),{once:!0})}dismiss(){clearTimeout(this.timer),this.sequence++,this.list&&(this.list.hidden=!0),this.input?.setAttribute("aria-expanded","false"),this.input?.removeAttribute("aria-activedescendant"),this.input=null,this.list=null,this.items=[],this.active=-1}search(e){this.dismiss();let t=e.value.trim();if(!t)return;let o=this.root.getElementById(`${e.id}List`);if(!o)return;this.input=e,this.list=o,o.hidden=!1,o.innerHTML=`
      Searching items...
      `,e.setAttribute("aria-expanded","true");let{sequence:n}=this;this.timer=window.setTimeout(async()=>{let r=null;try{e.dataset.itemSearch==="holdings"?r=this.holdings().filter(c=>c.name.toLocaleLowerCase().includes(t.toLocaleLowerCase())):r=(await W.cached(`/market/search?q=${encodeURIComponent(t)}&sort=volume&page=1`,6e4))?.items??null}catch{r=null}if(n!==this.sequence||!e.isConnected||e.value.trim()!==t)return;this.items=r?.slice(0,8)??[];let i=e.dataset.itemSearch,a=i==="holdings"?"Your holdings":"All items",l=i==="give"||i==="get"?"Add":"Open";o.innerHTML=`
      ${a}${l} an item
      ${this.items.map((c,d)=>``).join("")}
      ${!r||!r.length?`
      ${r?"No matching items":"Search unavailable. Try typing again."}
      `:""}${i==="global"||i==="discover"?'':""}`},250)}choose(e){let t=this.items[e],o=this.input?.dataset.itemSearch;!t||!o||(this.dismiss(),this.select(t,o))}key(e){if(e.isComposing)return!1;let t=this.root.activeElement;if(!(t instanceof HTMLInputElement)||!t.dataset.itemSearch)return!1;if(e.key==="Tab")return this.dismiss(),!1;if(e.key==="Escape"&&this.input)return this.dismiss(),e.preventDefault(),!0;if(e.key==="Enter"&&this.active>=0)return this.choose(this.active),e.preventDefault(),!0;if(e.key!=="ArrowDown"&&e.key!=="ArrowUp")return!1;if(e.preventDefault(),this.input!==t)return this.search(t),!0;if(!this.items.length)return!0;let o=this.active+(e.key==="ArrowDown"?1:-1);this.active<0&&e.key==="ArrowUp"&&(o=this.items.length-1),this.active=(o+this.items.length)%this.items.length,this.list?.querySelectorAll("[data-suggestion]").forEach((r,i)=>r.setAttribute("aria-selected",String(i===this.active)));let n=`${t.id}Option${this.active}`;return t.setAttribute("aria-activedescendant",n),this.root.getElementById(n)?.scrollIntoView({block:"nearest"}),!0}}});var hf={};A(hf,{searchView:()=>uc});async function uc(s){let e=s.searchState(),t=new URLSearchParams({sort:e.sort,page:String(e.page)});for(let[i,a]of Object.entries({q:e.q,rarity:e.rarity,type:e.type,budget:e.budget,[s.tab==="active"?"min_activity":"min_sales"]:e.minSales}))a!==""&&t.set(i,a);let o=await W.cached(`/market/search?${t}`,Iy);if(!o)return s.unavailable();let n=(i,a)=>i.map((l,c)=>P` `).join(""),r=Math.max(1,Math.ceil(o.total/o.perPage));return{asOf:o.asOf,html:s.intro(s.tab==="active"?"Find items that are trading.":"Find your next item.",s.tab==="active"?`At least ${e.minSales} public sales or reported private exchanges in seven days. Private activity is shown separately from cash-sale liquidity.`:"Browse by budget, recent activity, or the items you already have in mind.",'')+P`
      @@ -391,11 +391,11 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${S(r.title)}

      ${S(r.detail)}

      -`).join(""):'

      No observation to highlight.

      '}${n}`}function fc(s,e,t,o){let{model:n}=s,r=n?.historical,i=n?.forward,a=r?.skill??null,l=[["","All signals"],["activity","Activity"],["supply","Supply"],["relative","Relative value"],["risk","Risks"],["availability","Availability"]],c=[...s.items].sort((p,h)=>Number(o.includes(h.skin))-Number(o.includes(p.skin))),d=p=>`${T(p.samples)} -${p.weeks} -${p.modelError===null?"Pending":p.modelError.toFixed(3)} -${p.skill===null?"Pending":kr(p.skill)} -${p.coverage===null?"Pending":kr(p.coverage)}`;return`
      +
      `).join(""):'

      No observation to highlight.

      '}${n}`}function fc(s,e,t,o){let{model:n}=s,r=n?.historical,i=n?.forward,a=r?.skill??null,l=[["","All signals"],["activity","Activity"],["supply","Supply"],["relative","Relative value"],["risk","Risks"],["availability","Availability"]],c=[...s.items].sort((h,p)=>Number(o.includes(p.skin))-Number(o.includes(h.skin))),d=h=>`${T(h.samples)} +${h.weeks} +${h.modelError===null?"Pending":h.modelError.toFixed(3)} +${h.skill===null?"Pending":kr(h.skill)} +${h.coverage===null?"Pending":kr(h.coverage)}`;return`
      KUTE INTELLIGENCE

      Read the market.

      @@ -423,26 +423,26 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
      ${l.map(([p,h])=>``).join("")}
      `+(c.length?`
      ${c.map(p=>{let f=p.intelligence.signals.filter(g=>!e||g.kind===e)[0],m=p.intelligence.signals.find(g=>g!==f&&g.kind==="risk");return`
      ${l.map(([h,p])=>``).join("")}
      `+(c.length?`
      ${c.map(h=>{let m=h.intelligence.signals.filter(g=>!e||g.kind===e)[0],f=h.intelligence.signals.find(g=>g!==m&&g.kind==="risk");return`
      ${o.includes(p.skin)?'Watching':""}
      + data-skin="${S(h.skin)}">${me(h)}${o.includes(h.skin)?'Watching':""}
      ${S(f?.kind??"signal")}
      -

      ${S(f?.title)}

      + class="eyebrow ${S(m?.tone??"muted")}">${S(m?.kind??"signal")}
      +

      ${S(m?.title)}

      ${S(f?.detail)}

      ${m?`

      ${S(m.title)}

      `:""}
      ${S(m?.detail)}

      ${f?`

      ${S(f.title)}

      `:""}
      -${T(p.fair)} KR estimate · ${p.sales7d} sales / 7D +${T(h.fair)} KR estimate · ${h.sales7d} sales / 7D + data-skin="${S(h.skin)}">Inspect item →
      `}).join("")}
      `:`
      ${fe("No supported signals in this category","Signals need enough observations to support a comparison. New evidence appears as the collector runs.")}
      `)+`

      Signals are descriptive threshold checks. False-alert rates and predictive usefulness have not been measured; these observations are not trade recommendations. Sales reporting can be incomplete. Quote changes do not prove a sale. Dates are UTC.

      sf;)this.sent.del

      Sales history: ${S(s.coverage.firstDay??"Pending")} to ${S(s.coverage.lastDay??"Pending")}. Supply observations since ${s.coverage.supplySince?S(new Date(s.coverage.supplySince).toISOString().slice(0,16).replace("T"," ")):"collection began"}. ${n?`Model trained ${S(We(Date.now()-n.trainedAt))} ago.`:""}

      ${s.sources.length?`
      ${s.sources.map(p=>`${S(p.source)}: ${p.records} records · ${S(We(Date.now()-p.observedAt))} ago`).join("")}
      `:'

      News and catalog feeds have not been collected yet.

      '}`+(s.news.length?`
      ${s.sources.map(h=>`${S(h.source)}: ${h.records} records · ${S(We(Date.now()-h.observedAt))} ago`).join("")}`:'

      News and catalog feeds have not been collected yet.

      '}`+(s.news.length?`
      -

      Official news

      ${s.news.map(p=>`

      ${p.url?``:S(p.title)}

      `).join("")}
      `:"")}var kr,en=w(()=>{"use strict";pe();Ve();kr=s=>s===null?"Not available":`${(s*100).toFixed(1)}%`});var ff={};A(ff,{contributionEvidence:()=>gc});function gc(s){if(!s||!s.trades30d&&!s.sales30d)return"";let{cash:e,sales:t,swaps:o}=s;return`
      +

      Official news

      ${s.news.map(h=>`

      ${h.url?``:S(h.title)}

      `).join("")}
      `:"")}var kr,en=w(()=>{"use strict";pe();Ve();kr=s=>s===null?"Not available":`${(s*100).toFixed(1)}%`});var ff={};A(ff,{contributionEvidence:()=>gc});function gc(s){if(!s||!s.trades30d&&!s.sales30d)return"";let{cash:e,sales:t,swaps:o}=s;return`

      Completed trade reports

      30 days

      ${T(s.trades30d)} reported private trades involved this item. ${T(s.matchedSales30d)} of ${T(s.sales30d)} contributed market sales match independently sampled listings and fit official daily totals.

      @@ -512,7 +512,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del `:""}

      Client reports can be incomplete or inaccurate. A verdict needs sufficient combined public and private evidence. Private trading does not establish cash-sale liquidity. The letter grade still describes public-market activity.

      -
      `}var Ny,wc=w(()=>{"use strict";pe();Ny={sales7d:"7-day public sales",sales30d:"30-day public sales",sales90d:"90-day public sales",ask:"Sampled asking prices",krunker:"Krunker estimate",floor:"Fallback estimate"}});var vf={};A(vf,{candleSeries:()=>yc,lineSegments:()=>kc});function kc(s,e,t){let o=[],n=null,r=!1;for(let i of s){let a=i.values[e];if(a==null||!Number.isFinite(a)){r=!0;continue}n&&o.push({from:n,to:i,gap:r||i.t-n.t>t*1.5}),n=i,r=!1}return o}function bf(s,e,t){let o=new Map,n=e===7*864e5?4*864e5:0;for(let a of[...s].sort((l,c)=>l.t-c.t)){let l=Math.floor((a.t-n)/e)*e+n,c=o.get(l);c||(c={t:l,end:l+e,values:[],volume:null,ask:null,partial:!1},o.set(l,c));for(let[p,h]of a.values.entries())h!==null&&Number.isFinite(h)&&(c.values[p]=h);a.volume!==null&&a.volume!==void 0&&Number.isFinite(a.volume)&&(c.volume=(c.volume??0)+a.volume);let d=a.ask;d&&(c.ask?(c.ask.high=Math.max(c.ask.high,d.high),c.ask.low=Math.min(c.ask.low,d.low),c.ask.close=d.close,c.ask.samples+=d.samples):c.ask={...d})}let r=Math.min(...s.map(a=>a.t)),i=Math.max(...s.map(a=>a.t+t));for(let a of o.values())a.partial=a.ti||(a.end??0)>Date.now();return[...o.values()]}function yc(s,e){let t=e,o=bf(s,t,e),n=a=>{let l=a.filter(c=>c.ask);return{count:l.length,share:l.filter(c=>(c.ask?.samples??0)>1).length/Math.max(1,l.length)}},r=n(o);for(let a of _y.filter(l=>l>e)){if(r.share>=.6||r.count<2)break;let l=bf(s,a,e),c=n(l);c.count<2||c.share<=r.share||(t=a,o=l,r=c)}let i=t>=864e5?`${t/864e5}D`:`${t/36e5}h`;return{points:o,stepMs:t,label:i}}var _y,yr=w(()=>{"use strict";_y=[36e5,144e5,432e5,864e5,6048e5]});var wf={};A(wf,{itemView:()=>xc});async function xc(s){let e=s.itemState(),t=!e.candles&&e.range==="7D"?"1M":e.range,o=await W.itemDesk(e.skin,t);t!==e.range&&o?.history&&!o.history.points.some(B=>B.t>=Date.now()-7*864e5&&B.avg!==null)&&(t=e.range,o=await W.itemDesk(e.skin,t)??o);let{item:n,history:r,listings:i}=o??{};if(!n)return s.unavailable();let a=n.skin,l=n.evidence,c=Se().some(B=>B.skin===a.skin),d=l?.dailyRange,p=l?`${l.sales} sales across ${l.days} trading days in 30D`:`${n.liquidity.sales30d} sales in 30 days`,h=a.exchange?.status==="applied"?`${a.exchange.reports} eligible private exchanges${a.method.startsWith("sales")?" + public sales":"; tentative when sparse"}`:p,f=l?.reasons??[h,`The estimate is based on ${a.method.startsWith("sales")?"historical sales aggregates":"limited market evidence"}.`],m=[{label:r?.resolution==="hour"?"Lowest observed ask":"Daily average sale",color:"#f580b4"}];e.overlay!=="none"&&m.push({label:{fair:"Kute estimate",lowest:"Lowest observed ask",krunker:"Krunker estimate"}[e.overlay]??"Comparison",color:"#87b8f7"});let g=(r?.points??[]).filter(B=>t===e.range||B.t>=Date.now()-7*864e5).map(B=>({t:B.t,values:[r?.resolution==="hour"?B.lowest:B.avg,...m.length>1?[{fair:B.fair,lowest:B.lowest,krunker:B.krunker}[e.overlay]??null]:[]],volume:r?.resolution==="day"&&B.salesObserved!==!1?B.sales:null,ask:B.ask})),b=r?.resolution==="hour"?36e5:864e5,v=e.candles?yc(g,b):null;v&&({points:g,stepMs:b}=v);let k="Daily average completed-sale prices. Today's point, when present, is incomplete. Dashed connections cross missing observations; they do not supply prices for those dates.";r?.resolution==="hour"&&(k="Intraday lines show sampled asks. Dashed connections cross unsampled periods. Official sales data is daily; individual transaction timing is unavailable."),v&&(k=`Auto interval: ${v.label}. Sparse quotes use larger intervals when they can support multiple candles. Green and red show rising and falling sampled asks; gray ticks show one quote or an unchanged close. Empty intervals remain empty. These are asking-price candles, not transaction candles.`);let E=Math.max(8,Math.ceil(g.length/e.zoom)),L=Math.max(1,Math.floor(E/2)),x=(i?.listings??[]).slice(0,s.advanced?250:5),$=i?.observedAt??l?.bookAt,I=!$||Date.now()-$>3*36e5,_=i?.highest,H="Unavailable",G="No available quote";_===null?H="None observed":_!==void 0&&(H=P` +
      `}var Ny,wc=w(()=>{"use strict";pe();Ny={sales7d:"7-day public sales",sales30d:"30-day public sales",sales90d:"90-day public sales",ask:"Sampled asking prices",krunker:"Krunker estimate",floor:"Fallback estimate"}});var vf={};A(vf,{candleSeries:()=>yc,lineSegments:()=>kc});function kc(s,e,t){let o=[],n=null,r=!1;for(let i of s){let a=i.values[e];if(a==null||!Number.isFinite(a)){r=!0;continue}n&&o.push({from:n,to:i,gap:r||i.t-n.t>t*1.5}),n=i,r=!1}return o}function bf(s,e,t){let o=new Map,n=e===7*864e5?4*864e5:0;for(let a of[...s].sort((l,c)=>l.t-c.t)){let l=Math.floor((a.t-n)/e)*e+n,c=o.get(l);c||(c={t:l,end:l+e,values:[],volume:null,ask:null,partial:!1},o.set(l,c));for(let[h,p]of a.values.entries())p!==null&&Number.isFinite(p)&&(c.values[h]=p);a.volume!==null&&a.volume!==void 0&&Number.isFinite(a.volume)&&(c.volume=(c.volume??0)+a.volume);let d=a.ask;d&&(c.ask?(c.ask.high=Math.max(c.ask.high,d.high),c.ask.low=Math.min(c.ask.low,d.low),c.ask.close=d.close,c.ask.samples+=d.samples):c.ask={...d})}let r=Math.min(...s.map(a=>a.t)),i=Math.max(...s.map(a=>a.t+t));for(let a of o.values())a.partial=a.ti||(a.end??0)>Date.now();return[...o.values()]}function yc(s,e){let t=e,o=bf(s,t,e),n=a=>{let l=a.filter(c=>c.ask);return{count:l.length,share:l.filter(c=>(c.ask?.samples??0)>1).length/Math.max(1,l.length)}},r=n(o);for(let a of _y.filter(l=>l>e)){if(r.share>=.6||r.count<2)break;let l=bf(s,a,e),c=n(l);c.count<2||c.share<=r.share||(t=a,o=l,r=c)}let i=t>=864e5?`${t/864e5}D`:`${t/36e5}h`;return{points:o,stepMs:t,label:i}}var _y,yr=w(()=>{"use strict";_y=[36e5,144e5,432e5,864e5,6048e5]});var wf={};A(wf,{itemView:()=>xc});async function xc(s){let e=s.itemState(),t=!e.candles&&e.range==="7D"?"1M":e.range,o=await W.itemDesk(e.skin,t);t!==e.range&&o?.history&&!o.history.points.some(B=>B.t>=Date.now()-7*864e5&&B.avg!==null)&&(t=e.range,o=await W.itemDesk(e.skin,t)??o);let{item:n,history:r,listings:i}=o??{};if(!n)return s.unavailable();let a=n.skin,l=n.evidence,c=Se().some(B=>B.skin===a.skin),d=l?.dailyRange,h=l?`${l.sales} sales across ${l.days} trading days in 30D`:`${n.liquidity.sales30d} sales in 30 days`,p=a.exchange?.status==="applied"?`${a.exchange.reports} eligible private exchanges${a.method.startsWith("sales")?" + public sales":"; tentative when sparse"}`:h,m=l?.reasons??[p,`The estimate is based on ${a.method.startsWith("sales")?"historical sales aggregates":"limited market evidence"}.`],f=[{label:r?.resolution==="hour"?"Lowest observed ask":"Daily average sale",color:"#f580b4"}];e.overlay!=="none"&&f.push({label:{fair:"Kute estimate",lowest:"Lowest observed ask",krunker:"Krunker estimate"}[e.overlay]??"Comparison",color:"#87b8f7"});let g=(r?.points??[]).filter(B=>t===e.range||B.t>=Date.now()-7*864e5).map(B=>({t:B.t,values:[r?.resolution==="hour"?B.lowest:B.avg,...f.length>1?[{fair:B.fair,lowest:B.lowest,krunker:B.krunker}[e.overlay]??null]:[]],volume:r?.resolution==="day"&&B.salesObserved!==!1?B.sales:null,ask:B.ask})),b=r?.resolution==="hour"?36e5:864e5,v=e.candles?yc(g,b):null;v&&({points:g,stepMs:b}=v);let k="Daily average completed-sale prices. Today's point, when present, is incomplete. Dashed connections cross missing observations; they do not supply prices for those dates.";r?.resolution==="hour"&&(k="Intraday lines show sampled asks. Dashed connections cross unsampled periods. Official sales data is daily; individual transaction timing is unavailable."),v&&(k=`Auto interval: ${v.label}. Sparse quotes use larger intervals when they can support multiple candles. Green and red show rising and falling sampled asks; gray ticks show one quote or an unchanged close. Empty intervals remain empty. These are asking-price candles, not transaction candles.`);let E=Math.max(8,Math.ceil(g.length/e.zoom)),L=Math.max(1,Math.floor(E/2)),x=(i?.listings??[]).slice(0,s.advanced?250:5),$=i?.observedAt??l?.bookAt,I=!$||Date.now()-$>3*36e5,_=i?.highest,H="Unavailable",G="No available quote";_===null?H="None observed":_!==void 0&&(H=P` ${T(_)} KR `,G=`Sampled ask, not a sale price${I?" · quote needs updating":""}`);let J=B=>P` @@ -536,7 +536,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del - `;return{item:n,listings:i,asOf:a.valuedAt??n.asOf,points:r?g:void 0,series:m,chartOptions:{candles:e.candles,volume:r?.resolution==="day",zoom:e.zoom,stepMs:b,connectGaps:!0,offset:e.offset},html:P` + `;return{item:n,listings:i,asOf:a.valuedAt??n.asOf,points:r?g:void 0,series:f,chartOptions:{candles:e.candles,volume:r?.resolution==="day",zoom:e.zoom,stepMs:b,connectGaps:!0,offset:e.offset},html:P` @@ -569,7 +569,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${ne("Kute estimate",P` ${T(a.fair)} KR - `,S(h))}${ne("Lowest observed ask",a.lowest===null?"None listed":P` + `,S(p))}${ne("Lowest observed ask",a.lowest===null?"None listed":P` ${T(a.lowest)} KR `,a.spread!==null?ae(a.spread)+` vs estimate${I?" · quote needs updating":""}`:"No available quote")}${ne("Highest observed ask",H,G)}${ne("Sales in the last 7 days",String(a.sales7d),`${a.onS} currently listed · ${T(a.inC)} in circulation`)} @@ -623,17 +623,17 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del Single quote or unchanged close - `+m.slice(1).map(B=>P` + `+f.slice(1).map(B=>P` ${S(B.label)} - `).join(""):m.map(B=>P` + `).join(""):f.map(B=>P` ${S(B.label)} - `).join("")}${!v||m.length>1?'Dashed: missing observations':""}${r?.resolution==="day"?P` + `).join("")}${!v||f.length>1?'Dashed: missing observations':""}${r?.resolution==="day"?P` Bars: reported sales${v?" / "+v.label:" / day"} `:""} @@ -648,7 +648,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
      THE CONTEXT

      What the data says

        - ${f.map(B=>P` + ${m.map(B=>P`
      • ${S(B)}
      • `).join("")}
      @@ -1009,7 +1009,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del - `;if(!e)return{html:t+o+fe("Choose an inventory","Enter a username to value its public inventory.")};let n=await W.cached(`/market/portfolio?name=${encodeURIComponent(e)}`,5*Dy);if(!n)return{html:t+o+fe("Inventory is unavailable","The player may not exist, or their inventory could not be loaded.",'')};let r=new Map(n.historyCoverage?.map(p=>[p.day,p])??[]),i=n.historyBasket,a=i?.series??n.series,l=i&&i.itemsTry again')};let r=new Map(n.historyCoverage?.map(h=>[h.day,h])??[]),i=n.historyBasket,a=i?.series??n.series,l=i&&i.items

      ${S(c)} Historical prices applied to what you own today; this is not personal profit. Marks expire after @@ -1060,22 +1060,22 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del - ${n.items.map(p=>P` - - ${me(p)} - ${p.count} - ${T(p.fair)} - ${T(p.value)} - ${ae(p.trend7d)} + ${n.items.map(h=>P` + + ${me(h)} + ${h.count} + ${T(h.fair)} + ${T(h.value)} + ${ae(h.trend7d)} ${s.advanced?P` - ${S(p.grade)} + ${S(h.grade)} `:""} `).join("")} - `,points:a.map(p=>({t:Date.parse(p.day+"T00:00:00Z"),values:[!i&&r.has(p.day)&&r.get(p.day)?.priced!==r.get(p.day)?.total?null:p.value]})),series:[{label:"Covered holdings at historical prices",color:"#f580b4"}]}}var Dy,Ic=w(()=>{"use strict";_e();xe();pe();Ko();Dy=6e4});var $f={};A($f,{analyzeView:()=>Nc});async function Nc(s){let{analyzer:e}=s,t=!!(e.give.length||e.get.length||e.giveKr||e.getKr),o=t?await W.analyze({give:e.give.map(({skin:i,count:a})=>({skin:i,count:a})),get:e.get.map(({skin:i,count:a})=>({skin:i,count:a})),giveKr:e.giveKr,getKr:e.getKr}):null,n=i=>{let a=o?.[i],l=i==="give"?e.giveKr:e.getKr,c=a?.items.some(h=>h.unknown)??!1,d=e[i].reduce((h,f)=>h+f.count,0),p=t?"Unavailable":"0";return a&&(p=T(a.value)),P` + `,points:a.map(h=>({t:Date.parse(h.day+"T00:00:00Z"),values:[!i&&r.has(h.day)&&r.get(h.day)?.priced!==r.get(h.day)?.total?null:h.value]})),series:[{label:"Covered holdings at historical prices",color:"#f580b4"}]}}var Dy,Ic=w(()=>{"use strict";_e();xe();pe();Ko();Dy=6e4});var $f={};A($f,{analyzeView:()=>Nc});async function Nc(s){let{analyzer:e}=s,t=!!(e.give.length||e.get.length||e.giveKr||e.getKr),o=t?await W.analyze({give:e.give.map(({skin:i,count:a})=>({skin:i,count:a})),get:e.get.map(({skin:i,count:a})=>({skin:i,count:a})),giveKr:e.giveKr,getKr:e.getKr}):null,n=i=>{let a=o?.[i],l=i==="give"?e.giveKr:e.getKr,c=a?.items.some(p=>p.unknown)??!1,d=e[i].reduce((p,m)=>p+m.count,0),h=t?"Unavailable":"0";return a&&(h=T(a.value)),P`

      - `,points:n.map(f=>({t:Date.parse(f.day+"T00:00:00Z"),values:[f.volume]})),series:[{label:"KR traded",color:"#f580b4"}]}}var ff,mc=w(()=>{"use strict";Be();xe();pe();Vt();kr();ff=6e4});var bf={};A(bf,{default:()=>Ko,itemSearch:()=>xo});var xo,Ko,jo=w(()=>{"use strict";xe();pe();xo=(s,e,t,o="")=>`
      `,Ko=class{constructor(e,t,o,n,r){this.root=e,this.select=o,this.browse=n,this.holdings=r,this.input=null,this.list=null,this.items=[],this.active=-1,this.sequence=0,this.timer=0,e.addEventListener("input",i=>{i.target instanceof HTMLInputElement&&i.target.dataset.itemSearch&&this.search(i.target)},{signal:t}),e.addEventListener("focusin",i=>{i.target!==this.input&&!(i.target instanceof Element&&this.list?.contains(i.target))&&this.dismiss()},{signal:t}),e.addEventListener("pointerdown",i=>{i.target instanceof Element&&(this.list?.contains(i.target)?i.preventDefault():i.target!==this.input&&this.dismiss())},{signal:t}),e.addEventListener("click",i=>{let a=i.target instanceof Element?i.target.closest("[data-suggestion],[data-search-all]"):null;if(!(!(a instanceof HTMLElement)||!this.list?.contains(a)))if(a.dataset.suggestion!==void 0)this.choose(Number(a.dataset.suggestion));else{let l=this.input?.value.trim()??"",c=this.input?.dataset.itemSearch??"global";this.dismiss(),this.browse(l,c)}},{signal:t}),t.addEventListener("abort",()=>this.dismiss(),{once:!0})}dismiss(){clearTimeout(this.timer),this.sequence++,this.list&&(this.list.hidden=!0),this.input?.setAttribute("aria-expanded","false"),this.input?.removeAttribute("aria-activedescendant"),this.input=null,this.list=null,this.items=[],this.active=-1}search(e){this.dismiss();let t=e.value.trim();if(!t)return;let o=this.root.getElementById(`${e.id}List`);if(!o)return;this.input=e,this.list=o,o.hidden=!1,o.innerHTML=`
      Searching items...
      `,e.setAttribute("aria-expanded","true");let{sequence:n}=this;this.timer=window.setTimeout(async()=>{let r=null;try{e.dataset.itemSearch==="holdings"?r=this.holdings().filter(c=>c.name.toLocaleLowerCase().includes(t.toLocaleLowerCase())):r=(await W.cached(`/market/search?q=${encodeURIComponent(t)}&sort=volume&page=1`,6e4))?.items??null}catch{r=null}if(n!==this.sequence||!e.isConnected||e.value.trim()!==t)return;this.items=r?.slice(0,8)??[];let i=e.dataset.itemSearch,a=i==="holdings"?"Your holdings":"All items",l=i==="give"||i==="get"?"Add":"Open";o.innerHTML=`
      ${a}${l} an item
      ${this.items.map((c,u)=>``).join("")}
      ${!r||!r.length?`
      ${r?"No matching items":"Search unavailable. Try typing again."}
      `:""}${i==="global"||i==="discover"?'':""}`},250)}choose(e){let t=this.items[e],o=this.input?.dataset.itemSearch;!t||!o||(this.dismiss(),this.select(t,o))}key(e){if(e.isComposing)return!1;let t=this.root.activeElement;if(!(t instanceof HTMLInputElement)||!t.dataset.itemSearch)return!1;if(e.key==="Tab")return this.dismiss(),!1;if(e.key==="Escape"&&this.input)return this.dismiss(),e.preventDefault(),!0;if(e.key==="Enter"&&this.active>=0)return this.choose(this.active),e.preventDefault(),!0;if(e.key!=="ArrowDown"&&e.key!=="ArrowUp")return!1;if(e.preventDefault(),this.input!==t)return this.search(t),!0;if(!this.items.length)return!0;let o=this.active+(e.key==="ArrowDown"?1:-1);this.active<0&&e.key==="ArrowUp"&&(o=this.items.length-1),this.active=(o+this.items.length)%this.items.length,this.list?.querySelectorAll("[data-suggestion]").forEach((r,i)=>r.setAttribute("aria-selected",String(i===this.active)));let n=`${t.id}Option${this.active}`;return t.setAttribute("aria-activedescendant",n),this.root.getElementById(n)?.scrollIntoView({block:"nearest"}),!0}}});var vf={};A(vf,{searchView:()=>fc});async function fc(s){let e=s.searchState(),t=new URLSearchParams({sort:e.sort,page:String(e.page)});for(let[i,a]of Object.entries({q:e.q,rarity:e.rarity,type:e.type,budget:e.budget,[s.tab==="active"?"min_activity":"min_sales"]:e.minSales}))a!==""&&t.set(i,a);let o=await W.cached(`/market/search?${t}`,Hy);if(!o)return s.unavailable();let n=(i,a)=>i.map((l,c)=>P` + `,points:n.map(m=>({t:Date.parse(m.day+"T00:00:00Z"),values:[m.volume]})),series:[{label:"KR traded",color:"#f580b4"}]}}var df,dc=w(()=>{"use strict";_e();xe();pe();Ut();wr();df=6e4});var pf={};A(pf,{default:()=>qo,itemSearch:()=>ko});var ko,qo,Ko=w(()=>{"use strict";xe();pe();ko=(s,e,t,o="")=>`
      `,qo=class{constructor(e,t,o,n,r){this.root=e,this.select=o,this.browse=n,this.holdings=r,this.input=null,this.list=null,this.items=[],this.active=-1,this.sequence=0,this.timer=0,e.addEventListener("input",i=>{i.target instanceof HTMLInputElement&&i.target.dataset.itemSearch&&this.search(i.target)},{signal:t}),e.addEventListener("focusin",i=>{i.target!==this.input&&!(i.target instanceof Element&&this.list?.contains(i.target))&&this.dismiss()},{signal:t}),e.addEventListener("pointerdown",i=>{i.target instanceof Element&&(this.list?.contains(i.target)?i.preventDefault():i.target!==this.input&&this.dismiss())},{signal:t}),e.addEventListener("click",i=>{let a=i.target instanceof Element?i.target.closest("[data-suggestion],[data-search-all]"):null;if(!(!(a instanceof HTMLElement)||!this.list?.contains(a)))if(a.dataset.suggestion!==void 0)this.choose(Number(a.dataset.suggestion));else{let l=this.input?.value.trim()??"",c=this.input?.dataset.itemSearch??"global";this.dismiss(),this.browse(l,c)}},{signal:t}),t.addEventListener("abort",()=>this.dismiss(),{once:!0})}dismiss(){clearTimeout(this.timer),this.sequence++,this.list&&(this.list.hidden=!0),this.input?.setAttribute("aria-expanded","false"),this.input?.removeAttribute("aria-activedescendant"),this.input=null,this.list=null,this.items=[],this.active=-1}search(e){this.dismiss();let t=e.value.trim();if(!t)return;let o=this.root.getElementById(`${e.id}List`);if(!o)return;this.input=e,this.list=o,o.hidden=!1,o.innerHTML=`
      Searching items...
      `,e.setAttribute("aria-expanded","true");let{sequence:n}=this;this.timer=window.setTimeout(async()=>{let r=null;try{e.dataset.itemSearch==="holdings"?r=this.holdings().filter(c=>c.name.toLocaleLowerCase().includes(t.toLocaleLowerCase())):r=(await W.cached(`/market/search?q=${encodeURIComponent(t)}&sort=volume&page=1`,6e4))?.items??null}catch{r=null}if(n!==this.sequence||!e.isConnected||e.value.trim()!==t)return;this.items=r?.slice(0,8)??[];let i=e.dataset.itemSearch,a=i==="holdings"?"Your holdings":"All items",l=i==="give"||i==="get"?"Add":"Open";o.innerHTML=`
      ${a}${l} an item
      ${this.items.map((c,d)=>``).join("")}
      ${!r||!r.length?`
      ${r?"No matching items":"Search unavailable. Try typing again."}
      `:""}${i==="global"||i==="discover"?'':""}`},250)}choose(e){let t=this.items[e],o=this.input?.dataset.itemSearch;!t||!o||(this.dismiss(),this.select(t,o))}key(e){if(e.isComposing)return!1;let t=this.root.activeElement;if(!(t instanceof HTMLInputElement)||!t.dataset.itemSearch)return!1;if(e.key==="Tab")return this.dismiss(),!1;if(e.key==="Escape"&&this.input)return this.dismiss(),e.preventDefault(),!0;if(e.key==="Enter"&&this.active>=0)return this.choose(this.active),e.preventDefault(),!0;if(e.key!=="ArrowDown"&&e.key!=="ArrowUp")return!1;if(e.preventDefault(),this.input!==t)return this.search(t),!0;if(!this.items.length)return!0;let o=this.active+(e.key==="ArrowDown"?1:-1);this.active<0&&e.key==="ArrowUp"&&(o=this.items.length-1),this.active=(o+this.items.length)%this.items.length,this.list?.querySelectorAll("[data-suggestion]").forEach((r,i)=>r.setAttribute("aria-selected",String(i===this.active)));let n=`${t.id}Option${this.active}`;return t.setAttribute("aria-activedescendant",n),this.root.getElementById(n)?.scrollIntoView({block:"nearest"}),!0}}});var hf={};A(hf,{searchView:()=>uc});async function uc(s){let e=s.searchState(),t=new URLSearchParams({sort:e.sort,page:String(e.page)});for(let[i,a]of Object.entries({q:e.q,rarity:e.rarity,type:e.type,budget:e.budget,[s.tab==="active"?"min_activity":"min_sales"]:e.minSales}))a!==""&&t.set(i,a);let o=await W.cached(`/market/search?${t}`,Iy);if(!o)return s.unavailable();let n=(i,a)=>i.map((l,c)=>P` `).join(""),r=Math.max(1,Math.ceil(o.total/o.perPage));return{asOf:o.asOf,html:s.intro(s.tab==="active"?"Find items that are trading.":"Find your next item.",s.tab==="active"?`At least ${e.minSales} public sales or reported private exchanges in seven days. Private activity is shown separately from cash-sale liquidity.`:"Browse by budget, recent activity, or the items you already have in mind.",'')+P`
      - ${xo("kmQ","discover","Search all items",e.q)} + ${ko("kmQ","discover","Search all items",e.q)} cf;)this.sent.del /> ${s.advanced?P` `:P` @@ -371,8 +370,8 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del - `}}var Hy,gc=w(()=>{"use strict";Be();xe();We();pe();jo();Hy=6e4});var wf={};A(wf,{dealEvidence:()=>bc,intelligenceView:()=>wc,itemIntelligence:()=>vc});function bc(s){let{assessment:e}=s;if(!e)return"";let t=e.risks[0]??"Supported by recent sales";return`${S(t)}${e.risks.length>1?` +${e.risks.length-1} risk${e.risks.length>2?"s":""}`:""}`}function vc(s,e=!1){if(!s)return"";let{outlook:t}=s,o=s.signals.slice(0,e?2:4);if(!o.length&&t.state!=="published")return"";let n="";return t.state==="published"&&(n=`
      {"use strict";_e();xe();Ve();pe();Ko();Iy=6e4});var mf={};A(mf,{dealEvidence:()=>hc,intelligenceView:()=>fc,itemIntelligence:()=>mc});function hc(s){let{assessment:e}=s;if(!e)return"";let t=e.risks[0]??"Supported by recent sales";return`${S(t)}${e.risks.length>1?` +${e.risks.length-1} risk${e.risks.length>2?"s":""}`:""}`}function mc(s,e=!1){if(!s)return"";let{outlook:t}=s,o=s.signals.slice(0,e?2:4);if(!o.length&&t.state!=="published")return"";let n="";return t.state==="published"&&(n=`
      7-DAY REPORTED-PRICE OUTLOOK @@ -392,11 +391,11 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del ${S(r.title)}

      ${S(r.detail)}

      -
      `).join(""):'

      No observation to highlight.

      '}${n}`}function wc(s,e,t,o){let{model:n}=s,r=n?.historical,i=n?.forward,a=r?.skill??null,l=[["","All signals"],["activity","Activity"],["supply","Supply"],["relative","Relative value"],["risk","Risks"],["availability","Availability"]],c=[...s.items].sort((h,p)=>Number(o.includes(p.skin))-Number(o.includes(h.skin))),u=h=>`${T(h.samples)} +
      `).join(""):'

      No observation to highlight.

      '}${n}`}function fc(s,e,t,o){let{model:n}=s,r=n?.historical,i=n?.forward,a=r?.skill??null,l=[["","All signals"],["activity","Activity"],["supply","Supply"],["relative","Relative value"],["risk","Risks"],["availability","Availability"]],c=[...s.items].sort((h,p)=>Number(o.includes(p.skin))-Number(o.includes(h.skin))),d=h=>`${T(h.samples)} ${h.weeks} ${h.modelError===null?"Pending":h.modelError.toFixed(3)} -${h.skill===null?"Pending":yr(h.skill)} -${h.coverage===null?"Pending":yr(h.coverage)}`;return`
      +${h.skill===null?"Pending":kr(h.skill)} +${h.coverage===null?"Pending":kr(h.coverage)}`;return`
      KUTE INTELLIGENCE

      Read the market.

      @@ -416,7 +415,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del class="intelligenceProof"> Historical error reduction ${a===null?"Pending":yr(a)} + class="${a!==null&&a>0?"positive":"muted"}">${a===null?"Pending":kr(a)} vs the better of two baselines
      ${T(r?.samples??0)} held-out predictions
      ${T(i?.samples??0)} forward outcomes @@ -472,7 +471,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del

      Lower log error is better. Error reduction compares with the better of unchanged last price and the existing valuation baseline. Historical mean range width: ${yr(r.width)} of the predicted price. Forward publication requires 200 outcomes, 20 items, four issue weeks, at least 5% lower error, 85-95% range coverage and mean range width no greater than the predicted price.

      `:""}
      Lower log error is better. Error reduction compares with the better of unchanged last price and the existing valuation baseline. Historical mean range width: ${kr(r.width)} of the predicted price. Forward publication requires 200 outcomes, 20 items, four issue weeks, at least 5% lower error, 85-95% range coverage and mean range width no greater than the predicted price.

      `:""}
      ${T(s.coverage.dailyRows)} daily observations @@ -484,7 +483,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del class="coverageRow">${s.sources.map(h=>`${S(h.source)}: ${h.records} records · ${S(We(Date.now()-h.observedAt))} ago`).join("")}
      `:'

      News and catalog feeds have not been collected yet.

      '}`+(s.news.length?`

      Official news

      ${s.news.map(h=>`

      ${h.url?``:S(h.title)}

      `).join("")}
      `:"")}var yr,tn=w(()=>{"use strict";pe();We();yr=s=>s===null?"Not available":`${(s*100).toFixed(1)}%`});var kf={};A(kf,{contributionEvidence:()=>kc});function kc(s){if(!s||!s.trades30d&&!s.sales30d)return"";let{cash:e,sales:t,swaps:o}=s;return`
      + class="sub">${h.url?``:S(h.title)}

      `).join("")}
      `:"")}var kr,en=w(()=>{"use strict";pe();Ve();kr=s=>s===null?"Not available":`${(s*100).toFixed(1)}%`});var ff={};A(ff,{contributionEvidence:()=>gc});function gc(s){if(!s||!s.trades30d&&!s.sales30d)return"";let{cash:e,sales:t,swaps:o}=s;return`

      Completed trade reports

      30 days

      ${T(s.trades30d)} reported private trades involved this item. ${T(s.matchedSales30d)} of ${T(s.sales30d)} contributed market sales match independently sampled listings and fit official daily totals.

      @@ -499,7 +498,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del Comparisons require multiple reports, source sessions and dates; source sessions do not identify unique players. These descriptive samples exclude bundles and reported serial, wear, style and paint attributes. The valuation model separately uses supported bundles with KR anchors; its contribution is explained above.

      -
      `}var yc=w(()=>{"use strict";pe()});var yf={};A(yf,{exchangeEvidence:()=>xc});function xc(s,e){let t=s.exchange;if(!t&&!s.privateTrading?.trades30d)return"";let o=t?.status==="applied";return`
      +
      `}var bc=w(()=>{"use strict";pe()});var gf={};A(gf,{exchangeEvidence:()=>vc});function vc(s,e){let t=s.exchange;if(!t&&!s.privateTrading?.trades30d)return"";let o=t?.status==="applied";return`

      ${o?"Private trades contribute to this value":"Private trading activity"}

      ${o&&t.confidence<35?"Tentative evidence":"Reported exchanges"}
      ${o?`

      ${T(t.reports)} eligible exchanges inform the ${T(s.fair)} KR Kute estimate. @@ -507,13 +506,13 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del ${S(t?.reason??"These reports establish activity; their currencies or instance attributes do not yet support a base-item KR estimate.")}

      `} ${s.privateTrading?`

      ${T(s.privateTrading.trades7d)} private trades in seven days. Latest reported trade date: ${S(s.privateTrading.lastTradeDay)} UTC.

      `:""} ${e&&o?`
      -
      Public-data baseline${T(t.baseline)} KR${S(Oy[t.baselineMethod]??"Public evidence")}
      +
      Public-data baseline${T(t.baseline)} KR${S(Ny[t.baselineMethod]??"Public evidence")}
      Model sensitivity range${T(t.low)} to ${T(t.high)}KR; not a calibrated prediction interval
      Report diversity${S(t.sources)} source${t.sources===1?"":"s"} / ${S(t.days)} day${t.days===1?"":"s"}Anonymous connections, not verified unique players
      `:""}

      Client reports can be incomplete or inaccurate. A verdict needs sufficient combined public and private evidence. Private trading does not establish cash-sale liquidity. The letter grade still describes public-market activity.

      -
      `}var Oy,Sc=w(()=>{"use strict";pe();Oy={sales7d:"7-day public sales",sales30d:"30-day public sales",sales90d:"90-day public sales",ask:"Sampled asking prices",krunker:"Krunker estimate",floor:"Fallback estimate"}});var Sf={};A(Sf,{candleSeries:()=>$c,lineSegments:()=>Ec});function Ec(s,e,t){let o=[],n=null,r=!1;for(let i of s){let a=i.values[e];if(a==null||!Number.isFinite(a)){r=!0;continue}n&&o.push({from:n,to:i,gap:r||i.t-n.t>t*1.5}),n=i,r=!1}return o}function xf(s,e,t){let o=new Map,n=e===7*864e5?4*864e5:0;for(let a of[...s].sort((l,c)=>l.t-c.t)){let l=Math.floor((a.t-n)/e)*e+n,c=o.get(l);c||(c={t:l,end:l+e,values:[],volume:null,ask:null,partial:!1},o.set(l,c));for(let[h,p]of a.values.entries())p!==null&&Number.isFinite(p)&&(c.values[h]=p);a.volume!==null&&a.volume!==void 0&&Number.isFinite(a.volume)&&(c.volume=(c.volume??0)+a.volume);let u=a.ask;u&&(c.ask?(c.ask.high=Math.max(c.ask.high,u.high),c.ask.low=Math.min(c.ask.low,u.low),c.ask.close=u.close,c.ask.samples+=u.samples):c.ask={...u})}let r=Math.min(...s.map(a=>a.t)),i=Math.max(...s.map(a=>a.t+t));for(let a of o.values())a.partial=a.ti||(a.end??0)>Date.now();return[...o.values()]}function $c(s,e){let t=e,o=xf(s,t,e),n=a=>{let l=a.filter(c=>c.ask);return{count:l.length,share:l.filter(c=>(c.ask?.samples??0)>1).length/Math.max(1,l.length)}},r=n(o);for(let a of Fy.filter(l=>l>e)){if(r.share>=.6||r.count<2)break;let l=xf(s,a,e),c=n(l);c.count<2||c.share<=r.share||(t=a,o=l,r=c)}let i=t>=864e5?`${t/864e5}D`:`${t/36e5}h`;return{points:o,stepMs:t,label:i}}var Fy,xr=w(()=>{"use strict";Fy=[36e5,144e5,432e5,864e5,6048e5]});var Ef={};A(Ef,{itemView:()=>Cc});function qy(s,e){let t=Ut[s.rarity]?.name??"items",o=[`Nobody has sold, traded or listed this item where Kute could see it, so ${s.method==="floor"?"the number above is only what the game pays on quick sell":"the number above is Krunker's own estimate"}. It can be worth far more.`];if(e&&e.pricedItems>=5&&e.low!==null&&e.high!==null&&o.push(`For reference, ${t} items with recent sales mostly went for ${T(e.low)} to ${T(e.high)} KR (middle half of ${e.pricedItems} items). Rare items of the same rarity can be worth many times that.`),e&&e.krunkerItems>=5&&e.krunkerRatio!==null){let n=Math.abs(e.krunkerRatio-1)<.1?"close to their real sale prices":`${e.krunkerRatio<1?"above":"below"} their real sale prices (ratio ${e.krunkerRatio})`;o.push(`Where ${t} items do sell, Krunker's estimate sits ${n}, but it is missing for most items without sales.`)}return`
      ${o.map(S).join("
      ")}
      `}async function Cc(s){let e=s.itemState(),t=!e.candles&&e.range==="7D"?"1M":e.range,o=await W.itemDesk(e.skin,t);t!==e.range&&o?.history&&!o.history.points.some(B=>B.t>=Date.now()-7*864e5&&B.avg!==null)&&(t=e.range,o=await W.itemDesk(e.skin,t)??o);let{item:n,history:r,listings:i}=o??{};if(!n)return s.unavailable();let a=n.skin,l=n.evidence,c=Se().some(B=>B.skin===a.skin),u=l?.dailyRange,h=l?`${l.sales} sales across ${l.days} trading days in 30D`:`${n.liquidity.sales30d} sales in 30 days`,p=a.exchange?.status==="applied"?`${a.exchange.reports} eligible private exchanges${a.method.startsWith("sales")?" + public sales":"; tentative when sparse"}`:h,f=l?.reasons??[p,`The estimate is based on ${a.method.startsWith("sales")?"historical sales aggregates":"limited market evidence"}.`],m=[{label:r?.resolution==="hour"?"Lowest observed ask":"Daily average sale",color:"#f580b4"}];e.overlay!=="none"&&m.push({label:{fair:"Kute estimate",lowest:"Lowest observed ask",krunker:"Krunker estimate"}[e.overlay]??"Comparison",color:"#87b8f7"});let g=(r?.points??[]).filter(B=>t===e.range||B.t>=Date.now()-7*864e5).map(B=>({t:B.t,values:[r?.resolution==="hour"?B.lowest:B.avg,...m.length>1?[{fair:B.fair,lowest:B.lowest,krunker:B.krunker}[e.overlay]??null]:[]],volume:r?.resolution==="day"&&B.salesObserved!==!1?B.sales:null,ask:B.ask})),b=r?.resolution==="hour"?36e5:864e5,v=e.candles?$c(g,b):null;v&&({points:g,stepMs:b}=v);let k="Daily average completed-sale prices. Today's point, when present, is incomplete. Dashed connections cross missing observations; they do not supply prices for those dates.";r?.resolution==="hour"&&(k="Intraday lines show sampled asks. Dashed connections cross unsampled periods. Official sales data is daily; individual transaction timing is unavailable."),v&&(k=`Auto interval: ${v.label}. Sparse quotes use larger intervals when they can support multiple candles. Green and red show rising and falling sampled asks; gray ticks show one quote or an unchanged close. Empty intervals remain empty. These are asking-price candles, not transaction candles.`);let E=Math.max(8,Math.ceil(g.length/e.zoom)),L=Math.max(1,Math.floor(E/2)),x=(i?.listings??[]).slice(0,s.advanced?250:5),$=i?.observedAt??l?.bookAt,I=!$||Date.now()-$>3*36e5,_=i?.highest,H="Unavailable",G="No available quote";_===null?H="None observed":_!==void 0&&(H=P` + `}var Ny,wc=w(()=>{"use strict";pe();Ny={sales7d:"7-day public sales",sales30d:"30-day public sales",sales90d:"90-day public sales",ask:"Sampled asking prices",krunker:"Krunker estimate",floor:"Fallback estimate"}});var vf={};A(vf,{candleSeries:()=>yc,lineSegments:()=>kc});function kc(s,e,t){let o=[],n=null,r=!1;for(let i of s){let a=i.values[e];if(a==null||!Number.isFinite(a)){r=!0;continue}n&&o.push({from:n,to:i,gap:r||i.t-n.t>t*1.5}),n=i,r=!1}return o}function bf(s,e,t){let o=new Map,n=e===7*864e5?4*864e5:0;for(let a of[...s].sort((l,c)=>l.t-c.t)){let l=Math.floor((a.t-n)/e)*e+n,c=o.get(l);c||(c={t:l,end:l+e,values:[],volume:null,ask:null,partial:!1},o.set(l,c));for(let[h,p]of a.values.entries())p!==null&&Number.isFinite(p)&&(c.values[h]=p);a.volume!==null&&a.volume!==void 0&&Number.isFinite(a.volume)&&(c.volume=(c.volume??0)+a.volume);let d=a.ask;d&&(c.ask?(c.ask.high=Math.max(c.ask.high,d.high),c.ask.low=Math.min(c.ask.low,d.low),c.ask.close=d.close,c.ask.samples+=d.samples):c.ask={...d})}let r=Math.min(...s.map(a=>a.t)),i=Math.max(...s.map(a=>a.t+t));for(let a of o.values())a.partial=a.ti||(a.end??0)>Date.now();return[...o.values()]}function yc(s,e){let t=e,o=bf(s,t,e),n=a=>{let l=a.filter(c=>c.ask);return{count:l.length,share:l.filter(c=>(c.ask?.samples??0)>1).length/Math.max(1,l.length)}},r=n(o);for(let a of _y.filter(l=>l>e)){if(r.share>=.6||r.count<2)break;let l=bf(s,a,e),c=n(l);c.count<2||c.share<=r.share||(t=a,o=l,r=c)}let i=t>=864e5?`${t/864e5}D`:`${t/36e5}h`;return{points:o,stepMs:t,label:i}}var _y,yr=w(()=>{"use strict";_y=[36e5,144e5,432e5,864e5,6048e5]});var wf={};A(wf,{itemView:()=>xc});async function xc(s){let e=s.itemState(),t=!e.candles&&e.range==="7D"?"1M":e.range,o=await W.itemDesk(e.skin,t);t!==e.range&&o?.history&&!o.history.points.some(B=>B.t>=Date.now()-7*864e5&&B.avg!==null)&&(t=e.range,o=await W.itemDesk(e.skin,t)??o);let{item:n,history:r,listings:i}=o??{};if(!n)return s.unavailable();let a=n.skin,l=n.evidence,c=Se().some(B=>B.skin===a.skin),d=l?.dailyRange,h=l?`${l.sales} sales across ${l.days} trading days in 30D`:`${n.liquidity.sales30d} sales in 30 days`,p=a.exchange?.status==="applied"?`${a.exchange.reports} eligible private exchanges${a.method.startsWith("sales")?" + public sales":"; tentative when sparse"}`:h,m=l?.reasons??[p,`The estimate is based on ${a.method.startsWith("sales")?"historical sales aggregates":"limited market evidence"}.`],f=[{label:r?.resolution==="hour"?"Lowest observed ask":"Daily average sale",color:"#f580b4"}];e.overlay!=="none"&&f.push({label:{fair:"Kute estimate",lowest:"Lowest observed ask",krunker:"Krunker estimate"}[e.overlay]??"Comparison",color:"#87b8f7"});let g=(r?.points??[]).filter(B=>t===e.range||B.t>=Date.now()-7*864e5).map(B=>({t:B.t,values:[r?.resolution==="hour"?B.lowest:B.avg,...f.length>1?[{fair:B.fair,lowest:B.lowest,krunker:B.krunker}[e.overlay]??null]:[]],volume:r?.resolution==="day"&&B.salesObserved!==!1?B.sales:null,ask:B.ask})),b=r?.resolution==="hour"?36e5:864e5,v=e.candles?yc(g,b):null;v&&({points:g,stepMs:b}=v);let k="Daily average completed-sale prices. Today's point, when present, is incomplete. Dashed connections cross missing observations; they do not supply prices for those dates.";r?.resolution==="hour"&&(k="Intraday lines show sampled asks. Dashed connections cross unsampled periods. Official sales data is daily; individual transaction timing is unavailable."),v&&(k=`Auto interval: ${v.label}. Sparse quotes use larger intervals when they can support multiple candles. Green and red show rising and falling sampled asks; gray ticks show one quote or an unchanged close. Empty intervals remain empty. These are asking-price candles, not transaction candles.`);let E=Math.max(8,Math.ceil(g.length/e.zoom)),L=Math.max(1,Math.floor(E/2)),x=(i?.listings??[]).slice(0,s.advanced?250:5),$=i?.observedAt??l?.bookAt,I=!$||Date.now()-$>3*36e5,_=i?.highest,H="Unavailable",G="No available quote";_===null?H="None observed":_!==void 0&&(H=P` ${T(_)} KR `,G=`Sampled ask, not a sale price${I?" · quote needs updating":""}`);let J=B=>P` @@ -539,7 +538,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del
      `;return{item:n,listings:i,asOf:a.valuedAt??n.asOf,points:r?g:void 0,series:f,chartOptions:{candles:e.candles,volume:r?.resolution==="day",zoom:e.zoom,stepMs:b,connectGaps:!0,offset:e.offset},html:P`
      @@ -549,14 +548,14 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del
      - ${S(Ut[a.rarity]?.name)} · - ${S($t[a.type])}${a.season?` · Season ${a.season}`:""} + ${S(bo[a.rarity]?.name)} · + ${S(Et[a.type])}${a.season?` · Season ${a.season}`:""}

      ${S(a.name)}

      - ${S(Jl(a))} + ${S(Wl(a))} · - ${S(Ws(a))} + ${S(Gs(a))}

      @@ -567,18 +566,20 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del
      `+P`
      - ${ne("Kute estimate",at(a,' KR'),S(p))}${ne("Lowest observed ask",a.lowest===null?"None listed":P` + ${ne("Kute estimate",P` + ${T(a.fair)} + KR + `,S(p))}${ne("Lowest observed ask",a.lowest===null?"None listed":P` ${T(a.lowest)} KR `,a.spread!==null?ae(a.spread)+` vs estimate${I?" · quote needs updating":""}`:"No available quote")}${ne("Highest observed ask",H,G)}${ne("Sales in the last 7 days",String(a.sales7d),`${a.onS} currently listed · ${T(a.inC)} in circulation`)}
      - ${Wt(a)?qy(a,n.rarityContext):""} `+P`

      Price history

      - ${Dy.map(B=>P` + ${By.map(B=>P` `).join("")}
      @@ -641,7 +642,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del

      ${r?k:""} Dates and times are UTC.

      - `+xc(a,s.advanced)+vc(n.intelligence)+(s.advanced?uc(n)+kc(n.contributions):"")+P` + `+vc(a,s.advanced)+mc(n.intelligence)+(s.advanced?ac(n)+gc(n.contributions):"")+P`
      THE CONTEXT
      @@ -841,7 +842,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del

      ${J(n.instances.serial)}${J(n.instances.wear)}
      - `:"")}}var Dy,Mc=w(()=>{"use strict";Be();xe();wr();We();pe();Vt();kr();tn();yc();Sc();xr();Dy=["1D","7D","1M","3M","1Y","ALL"]});var $f={};A($f,{watchlistView:()=>Tc});async function Tc(s){let e=Se(),t=s.intro("Your eye on the market.","Watch prices and set targets. Your list is saved only on this device.",'');if(!e.length)return{html:t+'
      '+fe("Start with something you like","Open an item and choose Watch item. It will appear here with its latest estimate and asking price.",'')+"
      "};let o=e.filter(a=>a.rarity===void 0);if(o.length){let a=await Promise.all(o.map(l=>W.cached(`/market/item/${l.skin}`,3e5)));o.forEach((l,c)=>{let u=a[c]?.skin?.rarity;Number.isInteger(u)&&(l.rarity=u)}),o.some(l=>l.rarity!==void 0)&&yo(e)}let n=await W.values(e.map(a=>a.skin)),r=new Set(Ct.unread);queueMicrotask(()=>Ct.markRead());let i=Math.min(...Object.values(n).flatMap(a=>a.valuedAt?[a.valuedAt]:[]));return{asOf:Number.isFinite(i)?i:void 0,html:t+P` + `:"")}}var By,Sc=w(()=>{"use strict";_e();xe();vr();Ve();pe();Ut();wr();en();bc();wc();yr();By=["1D","7D","1M","3M","1Y","ALL"]});var kf={};A(kf,{watchlistView:()=>Ec});async function Ec(s){let e=Se(),t=s.intro("Your eye on the market.","Watch prices and set targets. Your list is saved only on this device.",'');if(!e.length)return{html:t+'
      '+fe("Start with something you like","Open an item and choose Watch item. It will appear here with its latest estimate and asking price.",'')+"
      "};let o=e.filter(a=>a.rarity===void 0);if(o.length){let a=await Promise.all(o.map(l=>W.cached(`/market/item/${l.skin}`,3e5)));o.forEach((l,c)=>{let d=a[c]?.skin?.rarity;Number.isInteger(d)&&(l.rarity=d)}),o.some(l=>l.rarity!==void 0)&&wo(e)}let n=await W.values(e.map(a=>a.skin)),r=new Set($t.unread);queueMicrotask(()=>$t.markRead());let i=Math.min(...Object.values(n).flatMap(a=>a.valuedAt?[a.valuedAt]:[]));return{asOf:Number.isFinite(i)?i:void 0,html:t+P`
      @@ -860,7 +861,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del - + - - + + ${s.advanced?P` @@ -1079,7 +1075,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del
      ${at(l)}${T(l?.fair)} ${T(l?.lowest)} cf;)this.sent.del Targets compare against the latest observed ask. Check the item page for listing freshness. Target alerts are checked in the menu, never during gameplay.

      - `}}var Ac=w(()=>{"use strict";Be();xe();pe();Vt();gr()});var Cf={};A(Cf,{moversView:()=>Lc});async function Lc(s){let e=typeof s.arg=="string"?s.arg:"7D",t=await W.cached(`/market/movers?window=${e}`,5*Ky);if(!t)return s.unavailable();let o=n=>P` + `}}var $c=w(()=>{"use strict";_e();xe();pe();Ut();fr()});var yf={};A(yf,{moversView:()=>Cc});async function Cc(s){let e=typeof s.arg=="string"?s.arg:"7D",t=await W.cached(`/market/movers?window=${e}`,5*zy);if(!t)return s.unavailable();let o=n=>P`
      ${n.slice(0,10).map(r=>P`
      - `}}var Ky,Rc=w(()=>{"use strict";Be();xe();pe();Ky=6e4});var Mf={};A(Mf,{dealsView:()=>Pc});async function Pc(s){let e=s.arg?.budget??"",t=P` + `}}var zy,Mc=w(()=>{"use strict";_e();xe();pe();zy=6e4});var xf={};A(xf,{dealsView:()=>Tc});async function Tc(s){let e=s.arg?.budget??"",t=P`
      cf;)this.sent.del />
      - `,o=await W.cached(`/market/deals?min_grade=C&limit=100&budget=${encodeURIComponent(e)}`,jy);return o?{asOf:o.asOf,asOfLabel:"Quotes observed",html:s.intro("Worth a closer look.","Observed asks below a sales-based estimate. Inspect the evidence before deciding.")+t+(o.deals.length?P` + `,o=await W.cached(`/market/deals?min_grade=C&limit=100&budget=${encodeURIComponent(e)}`,Hy);return o?{asOf:o.asOf,asOfLabel:"Quotes observed",html:s.intro("Worth a closer look.","Observed asks below a sales-based estimate. Inspect the evidence before deciding.")+t+(o.deals.length?P`
      @@ -953,7 +954,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del ${o.deals.map(n=>P` - + @@ -970,7 +971,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del recent lower prices, unstable prices, supply changes and concentrated listings. Quotes older than three hours are excluded; availability can still change.

      - `:'
      '+fe("No supported candidates right now","The scanner only includes sales-based estimates with sufficient activity and a meaningful discount. Your watchlist can track specific items in the meantime.",'')+"
      ")}:s.unavailable()}var jy,Ic=w(()=>{"use strict";Be();xe();pe();tn();jy=6e4});var Tf={};A(Tf,{indicesView:()=>Nc});async function Nc(s){let e=await W.cached("/market/indices",60*Uy);if(!e)return s.unavailable();let t=e.indices.find(o=>o.name===s.arg)??e.indices.find(o=>o.name==="kute-100")??e.indices[0];return{asOf:e.asOf,html:s.intro("The wider picture.","Equal-weighted indices of eligible items. Base 100 at launch, rebalanced monthly.",'')+P` + `:'
      '+fe("No supported candidates right now","The scanner only includes sales-based estimates with sufficient activity and a meaningful discount. Your watchlist can track specific items in the meantime.",'')+"
      ")}:s.unavailable()}var Hy,Ac=w(()=>{"use strict";_e();xe();pe();en();Hy=6e4});var Sf={};A(Sf,{indicesView:()=>Lc});async function Lc(s){let e=await W.cached("/market/indices",60*Oy);if(!e)return s.unavailable();let t=e.indices.find(o=>o.name===s.arg)??e.indices.find(o=>o.name==="kute-100")??e.indices[0];return{asOf:e.asOf,html:s.intro("The wider picture.","Equal-weighted indices of eligible items. Base 100 at launch, rebalanced monthly.",'')+P`

      ${S(t?.name??"Index history")}

      @@ -1003,12 +1004,12 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del
      ${me(n)}${bc(n)}${me(n)}${hc(n)} ${T(n.price)} ${T(n.fair)} ${Math.round(n.discount*100)}%
      - `,points:(t?.series??[]).map(o=>({t:Date.parse(o.day+"T00:00:00Z"),values:[o.value]})),series:[{label:t?.name??"Index",color:"#f580b4"}]}}var Uy,_c=w(()=>{"use strict";Be();xe();pe();Uy=6e4});var Af={};A(Af,{portfolioView:()=>Bc});async function Bc(s){let e=typeof s.arg=="string"?s.arg:"";if(!e)try{e=localStorage.getItem("krunker_username")??""}catch{e=""}let t=s.intro("Know what you hold.","A view of today's holdings, their estimated value, and where it is concentrated."),o=P` + `,points:(t?.series??[]).map(o=>({t:Date.parse(o.day+"T00:00:00Z"),values:[o.value]})),series:[{label:t?.name??"Index",color:"#f580b4"}]}}var Oy,Rc=w(()=>{"use strict";_e();xe();pe();Oy=6e4});var Ef={};A(Ef,{portfolioView:()=>Pc});async function Pc(s){let e=typeof s.arg=="string"?s.arg:"";if(!e)try{e=localStorage.getItem("krunker_username")??""}catch{e=""}let t=s.intro("Know what you hold.","A view of today's holdings, their estimated value, and where it is concentrated."),o=P`
      - `;if(!e)return{html:t+o+fe("Choose an inventory","Enter a username to value its public inventory.")};let n=await W.cached(`/market/portfolio?name=${encodeURIComponent(e)}`,5*Gy);if(!n)return{html:t+o+fe("Inventory is unavailable","The player may not exist, or their inventory could not be loaded.",'')};let r=new Map(n.historyCoverage?.map(h=>[h.day,h])??[]),i=n.historyBasket,a=i?.series??n.series,l=i&&i.itemsTry again')};let r=new Map(n.historyCoverage?.map(h=>[h.day,h])??[]),i=n.historyBasket,a=i?.series??n.series,l=i&&i.items

      ${S(c)} Historical prices applied to what you own today; this is not personal profit. Marks expire after @@ -1019,7 +1020,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del ${ne("Estimated inventory value",P` ${T(n.totalValue)} KR - `,`${n.items.length-(n.noEvidenceItems??0)} valued item types`)}${ne("In more active items",P` + `,`${n.items.length} valued item types`)}${ne("In more active items",P` ${Math.round(n.liquidShare*100)} % `,"Share in activity grades A to C")}${ne("Largest two positions",P` @@ -1032,11 +1033,6 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del ${n.limitedEvidenceItems} item types (${T(n.limitedEvidenceValue)} KR of the total) have limited sales evidence or use fallback estimates. - `:""}${n.noEvidenceItems?P` -

      - ${n.noEvidenceItems} item types have no price evidence and are not in the total. At the quick-sell floor or - Krunker's estimate they would add ${T(n.noEvidenceReference??0)} KR, but such items are often worth far more. -
      `:""}${n.unvaluedItems?P`
      ${n.unvaluedItems} item types have no usable valuation and are excluded from the total.
      `:""} @@ -1048,7 +1044,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del ${d}
      - ${xo("kmHoldingFilter","holdings","Filter your holdings",s.portfolioFilter)} + ${ko("kmHoldingFilter","holdings","Filter your holdings",s.portfolioFilter)} Largest positions first
      @@ -1068,8 +1064,8 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del
      ${me(h)} ${h.count}${at(h)}${h.noEvidence?'Not counted':T(h.value)}${T(h.fair)}${T(h.value)} ${ae(h.trend7d)}${S(h.grade)}
      - `,points:a.map(h=>({t:Date.parse(h.day+"T00:00:00Z"),values:[!i&&r.has(h.day)&&r.get(h.day)?.priced!==r.get(h.day)?.total?null:h.value]})),series:[{label:"Covered holdings at historical prices",color:"#f580b4"}]}}var Gy,zc=w(()=>{"use strict";Be();xe();pe();jo();Gy=6e4});var Lf={};A(Lf,{analyzeView:()=>Hc});async function Hc(s){let{analyzer:e}=s,t=!!(e.give.length||e.get.length||e.giveKr||e.getKr),o=t?await W.analyze({give:e.give.map(({skin:i,count:a})=>({skin:i,count:a})),get:e.get.map(({skin:i,count:a})=>({skin:i,count:a})),giveKr:e.giveKr,getKr:e.getKr}):null,n=i=>{let a=o?.[i],l=i==="give"?e.giveKr:e.getKr,c=a?.items.some(p=>p.unknown)??!1,u=e[i].reduce((p,f)=>p+f.count,0),h=t?"Unavailable":"0";return a&&(h=T(a.value)),P` + `,points:a.map(h=>({t:Date.parse(h.day+"T00:00:00Z"),values:[!i&&r.has(h.day)&&r.get(h.day)?.priced!==r.get(h.day)?.total?null:h.value]})),series:[{label:"Covered holdings at historical prices",color:"#f580b4"}]}}var Dy,Ic=w(()=>{"use strict";_e();xe();pe();Ko();Dy=6e4});var $f={};A($f,{analyzeView:()=>Nc});async function Nc(s){let{analyzer:e}=s,t=!!(e.give.length||e.get.length||e.giveKr||e.getKr),o=t?await W.analyze({give:e.give.map(({skin:i,count:a})=>({skin:i,count:a})),get:e.get.map(({skin:i,count:a})=>({skin:i,count:a})),giveKr:e.giveKr,getKr:e.getKr}):null,n=i=>{let a=o?.[i],l=i==="give"?e.giveKr:e.getKr,c=a?.items.some(p=>p.unknown)??!1,d=e[i].reduce((p,m)=>p+m.count,0),h=t?"Unavailable":"0";return a&&(h=T(a.value)),P`

      ${i==="give"?"You give":"You receive"}

      @@ -1092,7 +1088,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del ${c?"Partial estimate. Unvalued items excluded.":"Estimated value, including KR"}
      - ${xo(`kmPick${i}`,i,"Add an item...")} + ${ko(`kmPick${i}`,i,"Add an item...")}
      ${e[i].length?e[i].map((p,m)=>{let f=a?.items.find(b=>b.skin===p.skin),g=f&&!f.unknown?T(f.lineValue)+" KR":"Value unavailable";return P`
      @@ -1108,7 +1104,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del
      ${g} - ${m?Xl(m):"Needs more evidence"} + ${f&&!f.unknown?`${T(f.fair)} KR each`:"Needs more evidence"}
      - `),o){let i=Gs(o.verdict),a=Gt[i].label,l={good:"positive",bad:"negative",fair:"",uncertain:""}[i];r=P` + `),o){let i=Us(o.verdict),a=jt[i].label,l={good:"positive",bad:"negative",fair:"",uncertain:""}[i];r=P`
      THE DIFFERENCE
      ${a}
      - ${Gt[i].detail} + ${jt[i].detail}
      @@ -1181,7 +1177,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del `}return{asOf:o?.asOf,html:s.intro("Compare the trade.","Your items on the left, theirs on the right. Add KR to either side.",'')+P`
      ${n("give")}${n("get")}
      ${r}
      - `}}var Oc=w(()=>{"use strict";Be();xe();pe();jo()});var Rf={};A(Rf,{researchView:()=>Fc});async function Fc(s){let e=typeof s.arg=="string"?s.arg:"",t=await W.cached(`/market/intelligence?kind=${encodeURIComponent(e)}`,Wy);return t?{asOf:t.asOf,asOfLabel:"Analyzed",html:wc(t,e,s.advanced,Se().map(o=>o.skin))}:s.unavailable()}var Wy,Dc=w(()=>{"use strict";xe();Vt();tn();Wy=6e4});var Pf={};A(Pf,{introView:()=>on});function on(s,e,t,o=""){let n=qo("h1",{},e),r=qo("p",{class:"sub"},t);return qo("div",{class:"pageIntro"},Js(qo("div",{},Js(n+r))),Js(o))}var Sr=w(()=>{"use strict";Be()});var If={};A(If,{tableView:()=>qc});function qc(s,e){return e.length?P` + `}}var _c=w(()=>{"use strict";_e();xe();pe();Ko()});var Cf={};A(Cf,{researchView:()=>Bc});async function Bc(s){let e=typeof s.arg=="string"?s.arg:"",t=await W.cached(`/market/intelligence?kind=${encodeURIComponent(e)}`,Fy);return t?{asOf:t.asOf,asOfLabel:"Analyzed",html:fc(t,e,s.advanced,Se().map(o=>o.skin))}:s.unavailable()}var Fy,zc=w(()=>{"use strict";xe();Ut();en();Fy=6e4});var Mf={};A(Mf,{introView:()=>tn});function tn(s,e,t,o=""){let n=Fo("h1",{},e),r=Fo("p",{class:"sub"},t);return Fo("div",{class:"pageIntro"},Xs(Fo("div",{},Xs(n+r))),Xs(o))}var xr=w(()=>{"use strict";_e()});var Tf={};A(Tf,{tableView:()=>Hc});function Hc(s,e){return e.length?P`
      @@ -1199,7 +1195,8 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del ${s.advanced?P` - + `:""} `).join("")}
      ${me(t)} - ${at(t," KR")} + ${T(t.fair)} + KR ${t.lowest===null?"No listings":T(t.lowest)} @@ -1213,34 +1210,35 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del ${t.onS}${S(Ws(t))}${S(Gs(t))}
      - `:fe("No matching items","Try a wider budget or fewer filters.")}var Kc=w(()=>{"use strict";Be();We();pe()});var Nf={};A(Nf,{compactListView:()=>jc});function jc(s,e){return P` + `:fe("No matching items","Try a wider budget or fewer filters.")}var Oc=w(()=>{"use strict";_e();Ve();pe()});var Af={};A(Af,{compactListView:()=>Dc});function Dc(s,e){return P`
      ${e.map(t=>P` `).join("")}
      - `}var Uc=w(()=>{"use strict";Be();pe()});var Bf,_f=w(()=>{Bf=`

      The numbers

      K
      Kute estimate

      What the item is worth, from recent sales and trades.

      Ask
      Lowest ask

      The cheapest listing right now.

      %
      Ask vs estimate

      Plus means the ask is above the estimate, minus means below.

      0-100
      Evidence score

      How much data backs the estimate. Low means take it with a grain of salt.

      Activity grades

      A
      Very active

      Sells often, easy to get rid of.

      B
      Active

      Sells regularly.

      C
      Moderate

      Might take a while or a lower price.

      D
      Thin

      Few sales, hard to sell.

      F
      Very limited

      Barely trades, the estimate is a rough guess.

      Trade verdicts

      +
      Favorable

      You get more value than you give.

      =
      Fair

      Both sides are about even.

      -
      Unfavorable

      You give more value than you get.

      ?
      Not enough evidence

      Some items can't be valued well enough to say.

      Estimates, not promises. Kute never buys, sells or trades for you.

      `});var zf={};A(zf,{helpView:()=>Gc});function Gc(s){return{html:on(s,"How it works.","What the numbers mean.")+Bf}}var Wc=w(()=>{"use strict";_f();Sr()});var Hf={};A(Hf,{default:()=>Uo});var Uo,Vc=w(()=>{"use strict";pe();xr();Uo=class{constructor(e,t,o,n={}){this.host=e,this.points=t,this.series=o,this.options=n,this.observer=new ResizeObserver(r=>this.draw(r[0]?.contentRect.width??700)),this.observer.observe(e),this.draw(e.clientWidth||700)}destroy(){this.observer.disconnect(),this.host.replaceChildren()}draw(e){let{host:t,series:o,options:n}=this,r=Math.max(8,Math.ceil(this.points.length/(n.zoom??1))),i=Math.max(Math.min(r,this.points.length),this.points.length-(n.offset??0)),a=this.points.slice(Math.max(0,i-r),i),l=!!n.candles,c=a.flatMap(j=>l?[...j.ask?[j.ask.low,j.ask.high]:[],...j.values.slice(1)]:j.values).flatMap(j=>j!==null&&Number.isFinite(j)?[j]:[]);if(!c.length){t.innerHTML=`
      ${l?"No sampled asking-price candles in this period. Try a longer range or switch to the line chart.":"No price observations in this period. Try a longer range."}
      `;return}let u=Math.max(280,e),h=270,p=62,f=u-16,m=20,g=n.volume?196:230,b=Math.min(...c),v=Math.max(...c),k=v-b||Math.max(1,v*.1),E=Math.max(0,b-k*.12),L=v+k*.12,x=a[0].t,I=((l?a.at(-1)?.end:a.at(-1)?.t)??x)-x||864e5,_=j=>p+(j-x)/I*(f-p),H=j=>g-(j-E)/(L-E)*(g-m),G=j=>l&&j.end?(j.t+j.end)/2:j.t,J=n.stepMs??864e5,B=o.map((j,X)=>Ec(a,X,J)),re="";for(let j=0;j<=4;j++){let X=E+(L-E)*j/4,Y=L-E<10?X.toFixed(2):T(X);re+=`${S(Y)}`}for(let j=0;j<=4;j++){let X=x+I*j/4,Y=new Date(X),y=I<=2*864e5?Y.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",timeZone:"UTC"}):Y.toLocaleDateString([],{month:"short",day:"numeric",timeZone:"UTC"}),C="middle";j===0&&(C="start"),j===4&&(C="end"),re+=`${S(y)}`}if(n.volume){let j=Math.max(1,...a.map(Y=>Y.volume??0)),X=Math.max(1,Math.min(14,(f-p)/Math.max(1,a.length)*.6));re+=a.filter(Y=>Y.volume!==null&&Y.volume!==void 0).map(Y=>``).join("")}if(l){let j=Math.max(3,Math.min(14,(f-p)*J/I*.65));for(let X of a){let Y=X.ask;if(!Y)continue;let y="flat",C="#9698a7";Y.samples<=1?y="single":Y.close!==Y.open&&(y=Y.close>Y.open?"up":"down",C=Y.close>Y.open?"#71d9b0":"#f68c9b");let R=_(G(X));re+=``,Y.samples>1&&(re+=``),y==="single"||y==="flat"?re+=``:re+=``,re+=""}}for(let[j,X]of o.entries()){if(l&&j===0)continue;let Y="",y="";for(let C of B[j]){let R=`M${_(G(C.from))},${H(C.from.values[j])} L${_(G(C.to))},${H(C.to.values[j])} `;C.gap?n.connectGaps&&(y+=R):Y+=R}for(let C of a){let R=C.values[j];R==null||!Number.isFinite(R)||(re+=``)}re+=``,y&&(re+=``)}t.innerHTML=`j.label).join(", "))}">${re}`;let je=t.querySelector("svg"),be=t.querySelector(".chartTooltip"),Ee=t.querySelector(".crosshair");je.addEventListener("pointermove",j=>{let X=je.getBoundingClientRect(),Y=(j.clientX-X.left)*u/X.width,y=x+(Y-p)/(f-p)*I,C=a.find(Z=>l&&Z.end&&y>=Z.t&&yMath.abs(G(ge)-y)Z.gap&&_(Z.from.t)+5=C.end),z=C.ask,N=o.map((Z,ge)=>`${S(Z.label)} ${T(C.values[ge])}`).join("
      ");l&&(N="No quote in this bucket",z?.samples===1&&!K?N=`Observed ask ${T(z.close)}
      1 sampled quote; direction unknown`:z&&!K&&(N=`Open ${T(z.open)} · High ${T(z.high)}
      Low ${T(z.low)} · Close ${T(z.close)}
      ${S(z.samples)} sampled quotes`),C.partial&&!K&&(N+="
      Partial interval")),l&&!K&&o.length>1&&(N+="
      Last observed in interval:
      "+o.slice(1).map((Z,ge)=>`${S(Z.label)} ${T(C.values[ge+1])}`).join("
      ")),R&&(N="No price observation in this gap.
      Dashed line connects recorded values.");let V=Z=>new Date(Z).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",timeZone:"UTC"}),de=V(R||K?y:C.t);l&&C.end&&!K&&(de=`${V(C.t)} to ${V(C.end)}`),be.innerHTML=`${S(de)} UTC
      ${N}${!R&&!K&&n.volume&&C.volume!==null&&C.volume!==void 0?`
      Reported sales ${C.volume}`:""}`,be.hidden=!1,be.style.left=`${Math.max(0,Math.min(Y+14,u-240))}px`,Ee.setAttribute("x1",String(R||K?Y:_(G(C)))),Ee.setAttribute("x2",String(R||K?Y:_(G(C)))),Ee.setAttribute("visibility","visible")}),je.addEventListener("pointerleave",()=>{be.hidden=!0,Ee.setAttribute("visibility","hidden")})}}});var Of=we((lE,Yy)=>{Yy.exports=' '});var Yc={};A(Yc,{Terminal:()=>$r,default:()=>Jy});var Ff,Df,Er,qf,Kf,So,$r,Xy,Jy,Xc=w(()=>{"use strict";F();wr();mc();gc();Mc();Ac();Rc();Ic();_c();zc();Oc();Dc();Sr();Kc();Uc();Wc();xe();We();pe();Vt();Vc();jo();Ff="kute_market_advanced",Df="kute_market_layout",Er=[.8,.9,1,1.1,1.2,1.35,1.5],qf=480,Kf=360,So=()=>({q:"",rarity:"",type:"",sort:"volume",page:1,budget:"",minSales:""}),$r=class{constructor(){this.overlay=null,this.shadow=null,this.controller=null,this.chart=null,this.returnFocus=null,this.tab="overview",this.discoveryTab="search",this.arg=void 0,this.generation=0,this.advanced=!1,this.view=null,this.saved=new Map,this.previous="search",this.portfolioFilter="",this.itemSearch=null,this.holdings=[],this.tradeRevision=0,this.analyzer={give:[],get:[],giveKr:0,getKr:0};try{this.advanced=localStorage.getItem(Ff)==="1"}catch{this.advanced=!1}this.layout={width:0,height:0,scale:1,maximized:!1};try{let e=JSON.parse(localStorage.getItem(Df)??"{}");Number.isFinite(e.width)&&(this.layout.width=e.width),Number.isFinite(e.height)&&(this.layout.height=e.height),Er.includes(e.scale)&&(this.layout.scale=e.scale),this.layout.maximized=e.maximized===!0}catch{}}frame(){return this.shadow?.querySelector("#km")??null}applyLayout(){let e=this.frame();if(!e)return;let{scale:t,maximized:o}=this.layout,n=window.innerWidth-(o?0:16),r=window.innerHeight-(o?0:16),i=o?n:Math.max(Math.min(qf,n),Math.min(this.layout.width||Math.min(1320,window.innerWidth*.96),n)),a=o?r:Math.max(Math.min(Kf,r),Math.min(this.layout.height||Math.min(880,window.innerHeight*.92),r));e.style.zoom=String(t),e.style.width=`${i/t}px`,e.style.height=`${a/t}px`,e.classList.toggle("maximized",o);let l=this.shadow?.querySelector("#kmMaximize");l?.setAttribute("aria-pressed",String(o)),l?.setAttribute("title",o?"Restore size (double-click the header)":"Maximize (double-click the header)");let c=this.shadow?.querySelector("#kmScaleValue");c&&(c.textContent=`${Math.round(t*100)}%`)}saveLayout(){this.applyLayout();try{localStorage.setItem(Df,JSON.stringify(this.layout))}catch{}}rescale(e){let t=Er.indexOf(this.layout.scale);this.layout.scale=e?Er[Math.max(0,Math.min(Er.length-1,t+e))]:1,this.saveLayout()}toggleMaximized(){this.layout.maximized=!this.layout.maximized,this.saveLayout()}startResize(e){let{target:t}=e,o=this.frame();if(!(t instanceof HTMLElement)||!o||e.button!==0)return;let{grip:n}=t.dataset;if(!n)return;e.preventDefault(),t.setPointerCapture(e.pointerId);let r=o.getBoundingClientRect(),{clientX:i,clientY:a}=e,l=Number(n.includes("e"))-Number(n.includes("w")),c=Number(n.includes("s"))-Number(n.includes("n"));o.classList.add("resizing");let u=p=>{l&&(this.layout.width=Math.max(qf,r.width+2*l*(p.clientX-i))),c&&(this.layout.height=Math.max(Kf,r.height+2*c*(p.clientY-a))),this.applyLayout()},h=()=>{t.removeEventListener("pointermove",u),o.classList.remove("resizing"),this.layout.width=Math.round(Math.min(this.layout.width,window.innerWidth-16)),this.layout.height=Math.round(Math.min(this.layout.height,window.innerHeight-16)),this.saveLayout()};t.addEventListener("pointermove",u),t.addEventListener("lostpointercapture",h,{once:!0})}async open(e,t){if(!document.pointerLockElement){if(!this.overlay){let o=await Promise.resolve().then(()=>ue(Of(),1)).catch(()=>null);if(!o||document.pointerLockElement)return;if(this.overlay){await this.show(e??this.tab,t);return}this.returnFocus=document.activeElement instanceof HTMLElement?document.activeElement:null;let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483647;display:grid;place-items:center;background:rgba(7,8,13,.78)";let r=document.createElement("div");n.append(r),this.shadow=r.attachShadow({mode:"open"}),this.shadow.innerHTML=o.default,this.overlay=n,this.controller=new AbortController;let{signal:i}=this.controller;document.body.append(n),this.applyLayout(),window.addEventListener("resize",()=>this.applyLayout(),{signal:i}),this.shadow.addEventListener("pointerdown",l=>this.startResize(l),{signal:i}),this.shadow.querySelector(".kmHead")?.addEventListener("dblclick",l=>{l.target instanceof Element&&!l.target.closest("button,input,label,form")&&this.toggleMaximized()},{signal:i}),this.itemSearch=new Ko(this.shadow,i,(l,c)=>this.selectItem(l,c),(l,c)=>this.show(c==="discover"?this.searchTab():"search",{...c==="discover"?this.readFilters(1):So(),q:l,page:1}),()=>this.holdings),this.shadow.addEventListener("click",l=>this.click(l),{signal:i}),this.shadow.addEventListener("change",l=>this.changed(l),{signal:i}),this.shadow.addEventListener("input",l=>this.input(l),{signal:i}),this.shadow.querySelector("#kmSearchForm")?.addEventListener("submit",l=>{l.preventDefault(),this.show("search",{...So(),q:this.value("#kmGlobalSearch")})},{signal:i}),n.addEventListener("click",l=>{l.target===n&&this.close()},{signal:i}),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&this.close()},{signal:i}),document.addEventListener("keydown",l=>this.key(l),{signal:i,capture:!0});let a=this.shadow.querySelector("#kmAdvanced");a.checked=this.advanced,this.shadow.querySelector("#kmGlobalSearch")?.focus()}await this.show(e??this.tab,t)}}close(){this.remember(),this.controller?.abort(),this.controller=null,this.itemSearch=null,this.chart?.destroy(),this.chart=null,this.overlay?.remove(),this.overlay=null,this.shadow=null,this.generation++,this.returnFocus?.focus({preventScroll:!0})}remember(){let e=this.shadow?.querySelector("#kmBody");this.tab==="item"&&(this.arg=this.itemState()),(this.tab==="search"||this.tab==="active")&&this.shadow?.querySelector("#kmQ")&&(this.arg=this.readFilters(this.searchState().page)),this.tab==="deals"&&this.shadow?.querySelector("#kmDealBudget")&&(this.arg={budget:this.value("#kmDealBudget")}),e&&this.saved.set(this.tab,{arg:this.arg,scroll:e.scrollTop})}value(e){return this.shadow?.querySelector(e)?.value??""}searchState(){let e={...So(),...this.tab==="active"?{minSales:"1",sort:"liquidity"}:{},...typeof this.arg=="object"&&this.arg?this.arg:{}};return this.tab==="active"&&(e.minSales=String(Math.max(1,Number(e.minSales)||1))),e}searchTab(){return this.tab==="active"?"active":"search"}itemState(){let e={skin:typeof this.arg=="number"?this.arg:0,range:"1M",candles:!1,overlay:"none",zoom:1,offset:0,...typeof this.arg=="object"&&this.arg?this.arg:{}};if(this.view?.item?.skin.skin===e.skin)for(let[t,o]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"}))this.shadow?.querySelector("#"+o)&&Object.assign(e,{[t]:this.value("#"+o)});return e}async show(e,t,o=!1){if(!this.shadow)return;this.remember(),e==="item"&&this.tab!=="item"&&(this.previous=this.tab);let n=this.saved.get(this.tab)?.scroll??0,r=this.saved.get(e);this.tab=e,this.arg=t===void 0?r?.arg:t;let i=++this.generation;this.itemSearch?.dismiss(),this.chart?.destroy(),this.chart=null;let a=this.shadow.querySelector("#kmBody"),l=vr.includes(e);l&&(this.discoveryTab=e);let c=this.shadow.querySelector("#kmDiscoverTabs");c.hidden=!l;for(let p of c.querySelectorAll("button")){let f=p.dataset.discover===e;p.setAttribute("aria-selected",String(f)),p.tabIndex=f?0:-1}l?(a.setAttribute("role","tabpanel"),a.setAttribute("aria-labelledby",`kmDiscover-${e}`)):(a.removeAttribute("role"),a.removeAttribute("aria-labelledby")),a.setAttribute("aria-busy","true"),a.innerHTML=fe("Loading market data","Fetching the latest available observations.");let u=this.shadow.querySelector("#kmTitle");u&&(u.textContent=Xs[e]??"Market");let h=e==="item"?this.previous:e;vr.includes(h)&&(h="search"),h==="indices"&&(h="overview");for(let p of this.shadow.querySelectorAll("[data-nav]")){let f=p.dataset.nav===h;p.classList.toggle("on",f),f?p.setAttribute("aria-current","page"):p.removeAttribute("aria-current")}this.updateWatchCount();try{let p=await this.render(e);if(i!==this.generation||!this.shadow)return;this.view=p,this.holdings=p.holdings??[],a.innerHTML=p.html,a.scrollTop=t===void 0?r?.scroll??0:0,o&&(a.scrollTop=n);let f=this.shadow.querySelector("#kmFootRight");f&&(f.textContent=p.asOf?`${p.asOfLabel??"Estimates calculated"} ${Ge(Math.max(0,Date.now()-p.asOf))} ago`:"Estimates from observed market data");let m=a.querySelector(".chart");if(m&&p.points&&p.series&&(this.chart=new Uo(m,p.points,p.series,p.chartOptions)),e==="portfolio"&&this.filterHoldings(),e==="item"){let g=this.arg;for(let[b,v]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"})){let k=a.querySelector("#"+v),E=g?.[b];k&&typeof E=="string"&&(k.value=E)}this.updatePlanner(),this.filterListings()}}catch{if(i!==this.generation)return;a.innerHTML=fe("Market data is unavailable","Try again in a moment. Your saved watchlist stays on this device.",'')}finally{i===this.generation&&a.setAttribute("aria-busy","false")}}updateWatchCount(){let e=this.shadow?.querySelector("#kmWatchCount");e&&(e.textContent=String(Se().length))}async render(e){switch(e){case"overview":return this.overview();case"intelligence":return this.intelligence();case"search":return this.search();case"active":return this.search();case"item":return this.item();case"watchlist":return this.watchlist();case"movers":return this.movers();case"deals":return this.deals();case"indices":return this.indices();case"portfolio":return this.portfolio();case"analyze":return this.analyze();default:return this.help()}}intelligence(){return Fc(this)}unavailable(){return{html:fe("Market data is unavailable",W.lastError||"The market server could not be reached. Try again in a moment.",'')}}intro(e,t,o=""){return on(this,e,t,o)}table(e){return qc(this,e)}compactList(e){return jc(this,e)}overview(){return hc(this)}search(){return fc(this)}item(){return Cc(this)}watchlist(){return Tc(this)}movers(){return Lc(this)}deals(){return Pc(this)}indices(){return Nc(this)}portfolio(){return Bc(this)}async selectItem(e,t){if(t!=="give"&&t!=="get"){this.show("item",e.skin);return}let o=this.analyzer[t].find(n=>n.skin===e.skin);o?o.count=Math.min(1e4,o.count+1):this.analyzer[t].push({...e,count:1}),await this.show("analyze",this.arg,!0),this.tab==="analyze"&&this.shadow?.querySelector(`#kmPick${t}`)?.focus({preventScroll:!0})}analyze(){return Hc(this)}async refreshTrade(){let{generation:e}=this,t=++this.tradeRevision;this.shadow?.querySelector("#kmTradeOutcome")?.setAttribute("aria-busy","true");let n=this.shadow?.querySelector("#kmFootRight");n&&(n.textContent="Updating trade estimates...");let r=await this.analyze();if(e!==this.generation||t!==this.tradeRevision||!this.shadow)return;let i=document.createElement("div");i.innerHTML=r.html;for(let a of[".tradeSideHead>span",".tradeTotal",".tradeItemValue","#kmTradeOutcome"]){let l=i.querySelectorAll(a);this.shadow.querySelectorAll(a).forEach((c,u)=>{l[u]&&c.replaceWith(l[u])})}n&&(n.textContent=r.asOf?`Estimates calculated ${Ge(Math.max(0,Date.now()-r.asOf))} ago`:"Estimates from observed market data"),this.view=r}help(){return Gc(this)}updatePlanner(){let e=this.shadow?.querySelector("#kmPlannerResult");if(!e||!this.view?.item)return;let t=Number(this.value("#kmSellPrice")),o=Number(this.value("#kmSellQuantity"));if(!Number.isFinite(t)||t<=0||!Number.isInteger(o)||o<1||o>1e4){e.textContent="Enter a positive asking price and a quantity from 1 to 10,000.";return}let n=this.view.listings;if(!n){e.textContent="Competing listings are unavailable. Try again when market data is available.";return}let r=n?.listings.filter(a=>a.pricen.listings.length;e.innerHTML=`${i?"At least ":""}${r} cheaper listing${r===1?"":"s"} observed${n?"":" (listing data unavailable)"}.
      + `}var Fc=w(()=>{"use strict";_e();pe()});var Rf,Lf=w(()=>{Rf=`

      The numbers

      K
      Kute estimate

      What the item is worth, from recent sales and trades.

      Ask
      Lowest ask

      The cheapest listing right now.

      %
      Ask vs estimate

      Plus means the ask is above the estimate, minus means below.

      0-100
      Evidence score

      How much data backs the estimate. Low means take it with a grain of salt.

      Activity grades

      A
      Very active

      Sells often, easy to get rid of.

      B
      Active

      Sells regularly.

      C
      Moderate

      Might take a while or a lower price.

      D
      Thin

      Few sales, hard to sell.

      F
      Very limited

      Barely trades, the estimate is a rough guess.

      Trade verdicts

      +
      Favorable

      You get more value than you give.

      =
      Fair

      Both sides are about even.

      -
      Unfavorable

      You give more value than you get.

      ?
      Not enough evidence

      Some items can't be valued well enough to say.

      Estimates, not promises. Kute never buys, sells or trades for you.

      `});var Pf={};A(Pf,{helpView:()=>qc});function qc(s){return{html:tn(s,"How it works.","What the numbers mean.")+Rf}}var Kc=w(()=>{"use strict";Lf();xr()});var If={};A(If,{default:()=>jo});var jo,jc=w(()=>{"use strict";pe();yr();jo=class{constructor(e,t,o,n={}){this.host=e,this.points=t,this.series=o,this.options=n,this.observer=new ResizeObserver(r=>this.draw(r[0]?.contentRect.width??700)),this.observer.observe(e),this.draw(e.clientWidth||700)}destroy(){this.observer.disconnect(),this.host.replaceChildren()}draw(e){let{host:t,series:o,options:n}=this,r=Math.max(8,Math.ceil(this.points.length/(n.zoom??1))),i=Math.max(Math.min(r,this.points.length),this.points.length-(n.offset??0)),a=this.points.slice(Math.max(0,i-r),i),l=!!n.candles,c=a.flatMap(j=>l?[...j.ask?[j.ask.low,j.ask.high]:[],...j.values.slice(1)]:j.values).flatMap(j=>j!==null&&Number.isFinite(j)?[j]:[]);if(!c.length){t.innerHTML=`
      ${l?"No sampled asking-price candles in this period. Try a longer range or switch to the line chart.":"No price observations in this period. Try a longer range."}
      `;return}let d=Math.max(280,e),h=270,p=62,m=d-16,f=20,g=n.volume?196:230,b=Math.min(...c),v=Math.max(...c),k=v-b||Math.max(1,v*.1),E=Math.max(0,b-k*.12),L=v+k*.12,x=a[0].t,I=((l?a.at(-1)?.end:a.at(-1)?.t)??x)-x||864e5,_=j=>p+(j-x)/I*(m-p),H=j=>g-(j-E)/(L-E)*(g-f),G=j=>l&&j.end?(j.t+j.end)/2:j.t,J=n.stepMs??864e5,B=o.map((j,X)=>kc(a,X,J)),re="";for(let j=0;j<=4;j++){let X=E+(L-E)*j/4,Y=L-E<10?X.toFixed(2):T(X);re+=`${S(Y)}`}for(let j=0;j<=4;j++){let X=x+I*j/4,Y=new Date(X),y=I<=2*864e5?Y.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",timeZone:"UTC"}):Y.toLocaleDateString([],{month:"short",day:"numeric",timeZone:"UTC"}),C="middle";j===0&&(C="start"),j===4&&(C="end"),re+=`${S(y)}`}if(n.volume){let j=Math.max(1,...a.map(Y=>Y.volume??0)),X=Math.max(1,Math.min(14,(m-p)/Math.max(1,a.length)*.6));re+=a.filter(Y=>Y.volume!==null&&Y.volume!==void 0).map(Y=>``).join("")}if(l){let j=Math.max(3,Math.min(14,(m-p)*J/I*.65));for(let X of a){let Y=X.ask;if(!Y)continue;let y="flat",C="#9698a7";Y.samples<=1?y="single":Y.close!==Y.open&&(y=Y.close>Y.open?"up":"down",C=Y.close>Y.open?"#71d9b0":"#f68c9b");let R=_(G(X));re+=``,Y.samples>1&&(re+=``),y==="single"||y==="flat"?re+=``:re+=``,re+=""}}for(let[j,X]of o.entries()){if(l&&j===0)continue;let Y="",y="";for(let C of B[j]){let R=`M${_(G(C.from))},${H(C.from.values[j])} L${_(G(C.to))},${H(C.to.values[j])} `;C.gap?n.connectGaps&&(y+=R):Y+=R}for(let C of a){let R=C.values[j];R==null||!Number.isFinite(R)||(re+=``)}re+=``,y&&(re+=``)}t.innerHTML=`j.label).join(", "))}">${re}`;let je=t.querySelector("svg"),be=t.querySelector(".chartTooltip"),Ee=t.querySelector(".crosshair");je.addEventListener("pointermove",j=>{let X=je.getBoundingClientRect(),Y=(j.clientX-X.left)*d/X.width,y=x+(Y-p)/(m-p)*I,C=a.find(Z=>l&&Z.end&&y>=Z.t&&yMath.abs(G(ge)-y)Z.gap&&_(Z.from.t)+5=C.end),z=C.ask,N=o.map((Z,ge)=>`${S(Z.label)} ${T(C.values[ge])}`).join("
      ");l&&(N="No quote in this bucket",z?.samples===1&&!K?N=`Observed ask ${T(z.close)}
      1 sampled quote; direction unknown`:z&&!K&&(N=`Open ${T(z.open)} · High ${T(z.high)}
      Low ${T(z.low)} · Close ${T(z.close)}
      ${S(z.samples)} sampled quotes`),C.partial&&!K&&(N+="
      Partial interval")),l&&!K&&o.length>1&&(N+="
      Last observed in interval:
      "+o.slice(1).map((Z,ge)=>`${S(Z.label)} ${T(C.values[ge+1])}`).join("
      ")),R&&(N="No price observation in this gap.
      Dashed line connects recorded values.");let V=Z=>new Date(Z).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",timeZone:"UTC"}),de=V(R||K?y:C.t);l&&C.end&&!K&&(de=`${V(C.t)} to ${V(C.end)}`),be.innerHTML=`${S(de)} UTC
      ${N}${!R&&!K&&n.volume&&C.volume!==null&&C.volume!==void 0?`
      Reported sales ${C.volume}`:""}`,be.hidden=!1,be.style.left=`${Math.max(0,Math.min(Y+14,d-240))}px`,Ee.setAttribute("x1",String(R||K?Y:_(G(C)))),Ee.setAttribute("x2",String(R||K?Y:_(G(C)))),Ee.setAttribute("visibility","visible")}),je.addEventListener("pointerleave",()=>{be.hidden=!0,Ee.setAttribute("visibility","hidden")})}}});var Nf=we((oE,Ky)=>{Ky.exports=' '});var Uc={};A(Uc,{Terminal:()=>Er,default:()=>Uy});var _f,Bf,Sr,zf,Hf,yo,Er,jy,Uy,Gc=w(()=>{"use strict";D();vr();dc();pc();Sc();$c();Mc();Ac();Rc();Ic();_c();zc();xr();Oc();Fc();Kc();xe();Ve();pe();Ut();jc();Ko();_f="kute_market_advanced",Bf="kute_market_layout",Sr=[.8,.9,1,1.1,1.2,1.35,1.5],zf=480,Hf=360,yo=()=>({q:"",rarity:"",type:"",sort:"volume",page:1,budget:"",minSales:""}),Er=class{constructor(){this.overlay=null,this.shadow=null,this.controller=null,this.chart=null,this.returnFocus=null,this.tab="overview",this.discoveryTab="search",this.arg=void 0,this.generation=0,this.advanced=!1,this.view=null,this.saved=new Map,this.previous="search",this.portfolioFilter="",this.itemSearch=null,this.holdings=[],this.tradeRevision=0,this.analyzer={give:[],get:[],giveKr:0,getKr:0};try{this.advanced=localStorage.getItem(_f)==="1"}catch{this.advanced=!1}this.layout={width:0,height:0,scale:1,maximized:!1};try{let e=JSON.parse(localStorage.getItem(Bf)??"{}");Number.isFinite(e.width)&&(this.layout.width=e.width),Number.isFinite(e.height)&&(this.layout.height=e.height),Sr.includes(e.scale)&&(this.layout.scale=e.scale),this.layout.maximized=e.maximized===!0}catch{}}frame(){return this.shadow?.querySelector("#km")??null}applyLayout(){let e=this.frame();if(!e)return;let{scale:t,maximized:o}=this.layout,n=window.innerWidth-(o?0:16),r=window.innerHeight-(o?0:16),i=o?n:Math.max(Math.min(zf,n),Math.min(this.layout.width||Math.min(1320,window.innerWidth*.96),n)),a=o?r:Math.max(Math.min(Hf,r),Math.min(this.layout.height||Math.min(880,window.innerHeight*.92),r));e.style.zoom=String(t),e.style.width=`${i/t}px`,e.style.height=`${a/t}px`,e.classList.toggle("maximized",o);let l=this.shadow?.querySelector("#kmMaximize");l?.setAttribute("aria-pressed",String(o)),l?.setAttribute("title",o?"Restore size (double-click the header)":"Maximize (double-click the header)");let c=this.shadow?.querySelector("#kmScaleValue");c&&(c.textContent=`${Math.round(t*100)}%`)}saveLayout(){this.applyLayout();try{localStorage.setItem(Bf,JSON.stringify(this.layout))}catch{}}rescale(e){let t=Sr.indexOf(this.layout.scale);this.layout.scale=e?Sr[Math.max(0,Math.min(Sr.length-1,t+e))]:1,this.saveLayout()}toggleMaximized(){this.layout.maximized=!this.layout.maximized,this.saveLayout()}startResize(e){let{target:t}=e,o=this.frame();if(!(t instanceof HTMLElement)||!o||e.button!==0)return;let{grip:n}=t.dataset;if(!n)return;e.preventDefault(),t.setPointerCapture(e.pointerId);let r=o.getBoundingClientRect(),{clientX:i,clientY:a}=e,l=Number(n.includes("e"))-Number(n.includes("w")),c=Number(n.includes("s"))-Number(n.includes("n"));o.classList.add("resizing");let d=p=>{l&&(this.layout.width=Math.max(zf,r.width+2*l*(p.clientX-i))),c&&(this.layout.height=Math.max(Hf,r.height+2*c*(p.clientY-a))),this.applyLayout()},h=()=>{t.removeEventListener("pointermove",d),o.classList.remove("resizing"),this.layout.width=Math.round(Math.min(this.layout.width,window.innerWidth-16)),this.layout.height=Math.round(Math.min(this.layout.height,window.innerHeight-16)),this.saveLayout()};t.addEventListener("pointermove",d),t.addEventListener("lostpointercapture",h,{once:!0})}async open(e,t){if(!document.pointerLockElement){if(!this.overlay){let o=await Promise.resolve().then(()=>ue(Nf(),1)).catch(()=>null);if(!o||document.pointerLockElement)return;if(this.overlay){await this.show(e??this.tab,t);return}this.returnFocus=document.activeElement instanceof HTMLElement?document.activeElement:null;let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483647;display:grid;place-items:center;background:rgba(7,8,13,.78)";let r=document.createElement("div");n.append(r),this.shadow=r.attachShadow({mode:"open"}),this.shadow.innerHTML=o.default,this.overlay=n,this.controller=new AbortController;let{signal:i}=this.controller;document.body.append(n),this.applyLayout(),window.addEventListener("resize",()=>this.applyLayout(),{signal:i}),this.shadow.addEventListener("pointerdown",l=>this.startResize(l),{signal:i}),this.shadow.querySelector(".kmHead")?.addEventListener("dblclick",l=>{l.target instanceof Element&&!l.target.closest("button,input,label,form")&&this.toggleMaximized()},{signal:i}),this.itemSearch=new qo(this.shadow,i,(l,c)=>this.selectItem(l,c),(l,c)=>this.show(c==="discover"?this.searchTab():"search",{...c==="discover"?this.readFilters(1):yo(),q:l,page:1}),()=>this.holdings),this.shadow.addEventListener("click",l=>this.click(l),{signal:i}),this.shadow.addEventListener("change",l=>this.changed(l),{signal:i}),this.shadow.addEventListener("input",l=>this.input(l),{signal:i}),this.shadow.querySelector("#kmSearchForm")?.addEventListener("submit",l=>{l.preventDefault(),this.show("search",{...yo(),q:this.value("#kmGlobalSearch")})},{signal:i}),n.addEventListener("click",l=>{l.target===n&&this.close()},{signal:i}),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&this.close()},{signal:i}),document.addEventListener("keydown",l=>this.key(l),{signal:i,capture:!0});let a=this.shadow.querySelector("#kmAdvanced");a.checked=this.advanced,this.shadow.querySelector("#kmGlobalSearch")?.focus()}await this.show(e??this.tab,t)}}close(){this.remember(),this.controller?.abort(),this.controller=null,this.itemSearch=null,this.chart?.destroy(),this.chart=null,this.overlay?.remove(),this.overlay=null,this.shadow=null,this.generation++,this.returnFocus?.focus({preventScroll:!0})}remember(){let e=this.shadow?.querySelector("#kmBody");this.tab==="item"&&(this.arg=this.itemState()),(this.tab==="search"||this.tab==="active")&&this.shadow?.querySelector("#kmQ")&&(this.arg=this.readFilters(this.searchState().page)),this.tab==="deals"&&this.shadow?.querySelector("#kmDealBudget")&&(this.arg={budget:this.value("#kmDealBudget")}),e&&this.saved.set(this.tab,{arg:this.arg,scroll:e.scrollTop})}value(e){return this.shadow?.querySelector(e)?.value??""}searchState(){let e={...yo(),...this.tab==="active"?{minSales:"1",sort:"liquidity"}:{},...typeof this.arg=="object"&&this.arg?this.arg:{}};return this.tab==="active"&&(e.minSales=String(Math.max(1,Number(e.minSales)||1))),e}searchTab(){return this.tab==="active"?"active":"search"}itemState(){let e={skin:typeof this.arg=="number"?this.arg:0,range:"1M",candles:!1,overlay:"none",zoom:1,offset:0,...typeof this.arg=="object"&&this.arg?this.arg:{}};if(this.view?.item?.skin.skin===e.skin)for(let[t,o]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"}))this.shadow?.querySelector("#"+o)&&Object.assign(e,{[t]:this.value("#"+o)});return e}async show(e,t,o=!1){if(!this.shadow)return;this.remember(),e==="item"&&this.tab!=="item"&&(this.previous=this.tab);let n=this.saved.get(this.tab)?.scroll??0,r=this.saved.get(e);this.tab=e,this.arg=t===void 0?r?.arg:t;let i=++this.generation;this.itemSearch?.dismiss(),this.chart?.destroy(),this.chart=null;let a=this.shadow.querySelector("#kmBody"),l=br.includes(e);l&&(this.discoveryTab=e);let c=this.shadow.querySelector("#kmDiscoverTabs");c.hidden=!l;for(let p of c.querySelectorAll("button")){let m=p.dataset.discover===e;p.setAttribute("aria-selected",String(m)),p.tabIndex=m?0:-1}l?(a.setAttribute("role","tabpanel"),a.setAttribute("aria-labelledby",`kmDiscover-${e}`)):(a.removeAttribute("role"),a.removeAttribute("aria-labelledby")),a.setAttribute("aria-busy","true"),a.innerHTML=fe("Loading market data","Fetching the latest available observations.");let d=this.shadow.querySelector("#kmTitle");d&&(d.textContent=Ys[e]??"Market");let h=e==="item"?this.previous:e;br.includes(h)&&(h="search"),h==="indices"&&(h="overview");for(let p of this.shadow.querySelectorAll("[data-nav]")){let m=p.dataset.nav===h;p.classList.toggle("on",m),m?p.setAttribute("aria-current","page"):p.removeAttribute("aria-current")}this.updateWatchCount();try{let p=await this.render(e);if(i!==this.generation||!this.shadow)return;this.view=p,this.holdings=p.holdings??[],a.innerHTML=p.html,a.scrollTop=t===void 0?r?.scroll??0:0,o&&(a.scrollTop=n);let m=this.shadow.querySelector("#kmFootRight");m&&(m.textContent=p.asOf?`${p.asOfLabel??"Estimates calculated"} ${We(Math.max(0,Date.now()-p.asOf))} ago`:"Estimates from observed market data");let f=a.querySelector(".chart");if(f&&p.points&&p.series&&(this.chart=new jo(f,p.points,p.series,p.chartOptions)),e==="portfolio"&&this.filterHoldings(),e==="item"){let g=this.arg;for(let[b,v]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"})){let k=a.querySelector("#"+v),E=g?.[b];k&&typeof E=="string"&&(k.value=E)}this.updatePlanner(),this.filterListings()}}catch{if(i!==this.generation)return;a.innerHTML=fe("Market data is unavailable","Try again in a moment. Your saved watchlist stays on this device.",'')}finally{i===this.generation&&a.setAttribute("aria-busy","false")}}updateWatchCount(){let e=this.shadow?.querySelector("#kmWatchCount");e&&(e.textContent=String(Se().length))}async render(e){switch(e){case"overview":return this.overview();case"intelligence":return this.intelligence();case"search":return this.search();case"active":return this.search();case"item":return this.item();case"watchlist":return this.watchlist();case"movers":return this.movers();case"deals":return this.deals();case"indices":return this.indices();case"portfolio":return this.portfolio();case"analyze":return this.analyze();default:return this.help()}}intelligence(){return Bc(this)}unavailable(){return{html:fe("Market data is unavailable",W.lastError||"The market server could not be reached. Try again in a moment.",'')}}intro(e,t,o=""){return tn(this,e,t,o)}table(e){return Hc(this,e)}compactList(e){return Dc(this,e)}overview(){return cc(this)}search(){return uc(this)}item(){return xc(this)}watchlist(){return Ec(this)}movers(){return Cc(this)}deals(){return Tc(this)}indices(){return Lc(this)}portfolio(){return Pc(this)}async selectItem(e,t){if(t!=="give"&&t!=="get"){this.show("item",e.skin);return}let o=this.analyzer[t].find(n=>n.skin===e.skin);o?o.count=Math.min(1e4,o.count+1):this.analyzer[t].push({...e,count:1}),await this.show("analyze",this.arg,!0),this.tab==="analyze"&&this.shadow?.querySelector(`#kmPick${t}`)?.focus({preventScroll:!0})}analyze(){return Nc(this)}async refreshTrade(){let{generation:e}=this,t=++this.tradeRevision;this.shadow?.querySelector("#kmTradeOutcome")?.setAttribute("aria-busy","true");let n=this.shadow?.querySelector("#kmFootRight");n&&(n.textContent="Updating trade estimates...");let r=await this.analyze();if(e!==this.generation||t!==this.tradeRevision||!this.shadow)return;let i=document.createElement("div");i.innerHTML=r.html;for(let a of[".tradeSideHead>span",".tradeTotal",".tradeItemValue","#kmTradeOutcome"]){let l=i.querySelectorAll(a);this.shadow.querySelectorAll(a).forEach((c,d)=>{l[d]&&c.replaceWith(l[d])})}n&&(n.textContent=r.asOf?`Estimates calculated ${We(Math.max(0,Date.now()-r.asOf))} ago`:"Estimates from observed market data"),this.view=r}help(){return qc(this)}updatePlanner(){let e=this.shadow?.querySelector("#kmPlannerResult");if(!e||!this.view?.item)return;let t=Number(this.value("#kmSellPrice")),o=Number(this.value("#kmSellQuantity"));if(!Number.isFinite(t)||t<=0||!Number.isInteger(o)||o<1||o>1e4){e.textContent="Enter a positive asking price and a quantity from 1 to 10,000.";return}let n=this.view.listings;if(!n){e.textContent="Competing listings are unavailable. Try again when market data is available.";return}let r=n?.listings.filter(a=>a.pricen.listings.length;e.innerHTML=`${i?"At least ":""}${r} cheaper listing${r===1?"":"s"} observed${n?"":" (listing data unavailable)"}.
      ${T(t*o)} KR gross if all ${o} sell · ${it(t/this.view.item.skin.fair-1)} vs estimate.`}filterHoldings(){let e=this.portfolioFilter.toLocaleLowerCase().trim();for(let t of this.shadow?.querySelectorAll("tr[data-skin]")??[]){let o=t;o.hidden=!o.querySelector(".itemIdentity")?.textContent?.toLocaleLowerCase().includes(e)}}filterListings(){let e=this.value("#kmListingMax"),t=this.value("#kmSerialMax"),o=this.value("#kmWearMax"),n=this.value("#kmAgeMax"),r=this.value("#kmSellerMax");for(let c of this.shadow?.querySelectorAll("#kmListingRows tr")??[]){let u=c;u.hidden=!!(e&&Number(u.dataset.price)>Number(e))||!!(t&&(!u.dataset.serial||Number(u.dataset.serial)>Number(t)))||!!(o&&(!u.dataset.wear||Number(u.dataset.wear)>Number(o)))||!!(n&&(!u.dataset.age||Number(u.dataset.age)>Number(n)))||!!(r&&(!u.dataset.sellerCount||Number(u.dataset.sellerCount)>Number(r)))}let i=this.shadow?.querySelector("#kmListingCount"),l=[...this.shadow?.querySelectorAll("#kmListingRows tr")??[]].filter(c=>!c.hidden).length;i&&(i.textContent=`${l} sampled listings shown; ${this.view?.listings?.total??"unknown"} reported listed.`)}applyFilters(e=1){this.show(this.searchTab(),this.readFilters(e))}readFilters(e){return{q:this.value("#kmQ").trim(),rarity:this.value("#kmRarity"),type:this.value("#kmType"),sort:this.value("#kmSort"),budget:this.value("#kmBudget"),minSales:this.value("#kmSales"),page:e}}click(e){let t=e.target instanceof Element?e.target.closest("button,tr[data-skin],tr[data-index-name],tr[data-category]"):null;if(!t||t.hasAttribute("disabled"))return;let o=t.dataset;if(o.externalUrl){e.preventDefault();try{let n=new URL(o.externalUrl);if(n.protocol!=="https:"||n.username||n.password||n.port)return;if(!(["github.com","kute.lol","krunker.io"].includes(n.hostname)||n.hostname==="discord.com"&&n.pathname.startsWith("/invite/"))){d.showNotification("This news link is not supported by Kute.",!1,6);return}if(n.hostname==="krunker.io"&&!d.hostFeatures?.includes("krunker-links")){d.showNotification("Update the Kute application to open Krunker news links.",!1,6);return}window.chrome.webview.postMessage(`open-url, ${n.href}`)}catch{}return}if(o.intelKind!==void 0){this.show("intelligence",o.intelKind);return}if(t.id==="kmClose"){this.close();return}if(t.id==="kmMaximize"){this.toggleMaximized();return}if(o.scale!==void 0){this.rescale(Number(o.scale));return}if(o.discover){if(o.discover===this.tab)return;o.discover==="deals"&&!this.saved.has("deals")&&(this.tab==="search"||this.tab==="active")?this.show("deals",{budget:this.value("#kmBudget")}):this.show(o.discover);return}if(o.nav==="search"){this.show(this.discoveryTab);return}if(o.nav){this.show(o.nav);return}if(o.skin){this.show("item",Number(o.skin));return}if(o.category){this.show("search",{...So(),type:o.category,minSales:"1"});return}if(o.page){this.applyFilters(Number(o.page));return}if(o.range){this.show("item",{...this.itemState(),range:o.range,zoom:1,offset:0},!0);return}if(o.chartMode){this.show("item",{...this.itemState(),candles:o.chartMode==="candles"},!0);return}if(o.pan!==void 0){this.show("item",{...this.itemState(),offset:Number(o.pan)},!0);return}if(o.zoom){this.show("item",{...this.itemState(),zoom:Number(o.zoom),offset:o.zoom==="1"?0:this.itemState().offset},!0);return}if(o.window){this.show("movers",o.window);return}if(o.indexName){this.show("indices",o.indexName);return}if(o.unwatch){if(!yo(Se().filter(n=>n.skin!==Number(o.unwatch)))){this.storageError();return}this.show("watchlist",this.arg,!0);return}if(o.remove!==void 0&&o.side){this.analyzer[o.side].splice(Number(o.remove),1),this.show("analyze",this.arg,!0);return}switch(o.action){case"discover":this.show("search",So());break;case"reset-search":this.show(this.searchTab(),this.tab==="active"?{...So(),minSales:"1",sort:"liquidity"}:So());break;case"back":this.show(this.previous);break;case"retry":this.retry();break;case"filters":this.applyFilters();break;case"deal-budget":this.show("deals",{budget:this.value("#kmDealBudget")});break;case"inventory":this.show("portfolio",this.value("#kmName").trim());break;case"analyze":this.show("analyze",this.arg,!0);break;case"clear-trade":this.analyzer={give:[],get:[],giveKr:0,getKr:0},this.show("analyze");break;case"watch":if(this.view?.item){if(!sc(this.view.item.skin)){this.storageError();return}this.show("item",this.arg,!0)}break;default:break}}storageError(){let e=this.shadow?.querySelector("#kmFootRight");e&&(e.textContent="Could not save on this device. The watchlist holds up to 100 items.")}async retry(){let{generation:e}=this;await W.retry(),e===this.generation&&await this.show(this.tab,this.arg)}changed(e){let t=e.target;if(t instanceof HTMLInputElement||t instanceof HTMLSelectElement)if(t.id==="kmAdvanced"){this.advanced=t.checked;try{localStorage.setItem(Ff,this.advanced?"1":"0")}catch{this.storageError()}this.show(this.tab,void 0,!0)}else if(t.id==="kmOverlay")this.show("item",{...this.itemState(),overlay:t.value},!0);else if(t.dataset.target){let o=Number(t.value),n=Se().map(r=>r.skin===Number(t.dataset.target)?{...r,target:o>0&&Number.isFinite(o)?o:null}:r);if(!yo(n)){this.storageError();return}this.show("watchlist",this.arg,!0)}else if(t.dataset.count!==void 0&&t.dataset.side){let o=this.analyzer[t.dataset.side][Number(t.dataset.count)];o&&(o.count=Math.min(1e4,Math.max(1,Math.floor(Number(t.value)||1))),t.value=String(o.count)),this.refreshTrade()}else if(t.dataset.kr){let o=Math.max(0,Math.min(1e9,Math.floor(Number(t.value)||0)));t.dataset.kr==="give"?this.analyzer.giveKr=o:this.analyzer.getKr=o,t.value=String(o),this.refreshTrade()}else t.closest("#kmFilters")&&t instanceof HTMLSelectElement&&this.applyFilters()}input(e){let t=e.target;if(t instanceof HTMLInputElement){if(t.id==="kmSellPrice"||t.id==="kmSellQuantity"){this.updatePlanner();return}if(["kmListingMax","kmSerialMax","kmWearMax","kmAgeMax","kmSellerMax"].includes(t.id)){this.filterListings();return}if(t.id==="kmHoldingFilter"){this.portfolioFilter=t.value,this.filterHoldings();return}}}key(e){if(!this.shadow||(e.stopImmediatePropagation(),this.itemSearch?.key(e))||e.isComposing)return;if(e.key==="Escape"){e.stopImmediatePropagation(),e.preventDefault(),this.close();return}if(e.ctrlKey&&!e.altKey&&["+","=","-","0"].includes(e.key)){e.preventDefault(),this.rescale({"-":-1,0:0}[e.key]??1);return}let t=this.shadow.activeElement;if(t?.matches("[data-discover]")&&["ArrowLeft","ArrowRight","Home","End"].includes(e.key)){e.preventDefault();let i=[...this.shadow.querySelectorAll("#kmDiscoverTabs button")],l=(i.indexOf(t)+(e.key==="ArrowRight"?1:-1)+i.length)%i.length;e.key==="Home"&&(l=0),e.key==="End"&&(l=i.length-1);let c=i[l];c.focus(),c.click();return}if(e.key==="Enter"&&t&&(t.closest("#kmFilters")?(e.preventDefault(),this.applyFilters()):t.id==="kmName"?(e.preventDefault(),this.show("portfolio",this.value("#kmName").trim())):t.matches("tr[data-skin],tr[data-index-name],tr[data-category]")&&(e.preventDefault(),t.click())),e.key!=="Tab")return;let o=[...this.shadow.querySelectorAll("button:not(:disabled):not([tabindex='-1']),input:not([type=hidden]),select,summary,[tabindex='0']")].filter(i=>i instanceof HTMLElement&&i.getClientRects().length&&!i.closest("[hidden]")),n=o[0],r=o.at(-1);e.shiftKey&&(t===n||!t)?(e.preventDefault(),r?.focus()):!e.shiftKey&&(t===r||!t)&&(e.preventDefault(),n?.focus())}},Xy=new $r,Jy=Xy});var Zc={};A(Zc,{default:()=>Qy});var Jc,Zy,Qy,Cr=w(()=>{"use strict";F();Nt();xe();ec();oc();gr();dc();Jc=class{constructor(){this.headerItem=document.createElement("div"),this.headerSeparator=document.createElement("div"),this.headerObserver=new MutationObserver(()=>this.placeButton()),this.onUnread=()=>this.updateBadge(),this.terminal=null,this.running=!1,this.warned=!1,d.settings.toggleMarket=e=>this.toggle(e),d.market={open:(e,t)=>this.open(e,t),toggle:e=>this.toggle(e)},this.toggle(!0)}toggle(e){if(e!==this.running)if(this.running=e,e){if(!W.hostSupported()){this.warned||(this.warned=!0,d.showNotification("The Kute Market needs a newer Kute. Update Kute to use it.",!1,8)),this.running=!1;return}if(he.offline()){this.running=!1;return}this.placeButton();let t=document.querySelector("#playerHeaderEl");t&&this.headerObserver.observe(t,{childList:!0,subtree:!0}),window.addEventListener(Vs,this.onUnread),mr.start(),fr.start(),Ct.start(),br.start()}else this.headerObserver.disconnect(),window.removeEventListener(Vs,this.onUnread),this.headerItem.remove(),this.headerSeparator.remove(),mr.stop(),fr.stop(),Ct.stop(),br.stop(),this.terminal?.close()}placeButton(){let e=document.querySelector("#playerHeaderEl .headerBarRight");if(!e||e.contains(this.headerItem))return;let t=[...e.querySelector(".nav-item")?.classList??[]].find(o=>o.startsWith("svelte-"))??"";this.headerItem.className=`nav-item ${t}`,this.headerItem.innerHTML=` Kute Market `,this.headerItem.onclick=()=>this.open(Ct.unread.size?"watchlist":void 0),this.headerSeparator.className="verticalSeparator",this.headerSeparator.style.cssText="height: 35px;",e.prepend(this.headerItem,this.headerSeparator),this.updateBadge()}updateBadge(){let e=this.headerItem.querySelector(".nav-badge");if(!e)return;let t=Ct.unread.size;e.textContent=String(Math.min(99,t)),e.style.display=t?"inline-block":"none"}async open(e,t){if(this.running){if(!this.terminal){let o=await Promise.resolve().then(()=>(Xc(),Yc)).catch(()=>null);if(!o)return;this.terminal=o.default}await this.terminal.open(e,t)}}},Zy=new Jc,Qy=Zy});var e1={};var jf=w(()=>{"use strict";Cr()});var Gf,Uf=w(()=>{Gf=`@keyframes kuteMmSlideDown{0%{transform:translate(-50%,-500%)}to{transform:translate(-50%)}}#kuteMatchmaker{position:absolute;top:8em;left:50%;z-index:2147482000;box-sizing:border-box;width:24em;padding:18px 22px;border-radius:14px;overflow:hidden;pointer-events:all;background:#12121699;backdrop-filter:blur(14px) saturate(120%);box-shadow:0 8px 48px #000c;display:flex;flex-direction:column;color:#fff;animation:kuteMmSlideDown .4s cubic-bezier(.16,1,.3,1) forwards}#kuteMmStatus{font-size:1.4em;color:#35e0e8;margin-bottom:.6em;text-align:center}#kuteMmStatus.mm-fail{color:#eb5656}#kuteMmFeed{display:flex;flex-direction:column;gap:.15em;overflow:hidden;min-height:5.6em;margin-bottom:.6em}#kuteMmFeed.mm-result{justify-content:center}@keyframes kuteMmFeedIn{0%{opacity:0;transform:translate(1em)}to{opacity:1;transform:translate(0)}}@keyframes kuteMmGrow{0%{opacity:0;transform:scale(.55)}65%{opacity:1;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}.mm-entry{display:flex;gap:.8em;padding:.2em .5em;font-size:.95em;font-family:GameFont,monospace;border-radius:.2em;animation:kuteMmFeedIn .12s ease forwards}.mm-entry:last-child:before{content:"\\25b8";color:#ffc147}.mm-entry.mm-pass{background:#4caf501a}.mm-entry.mm-pass .mm-region{color:#35e0e8}.mm-entry.mm-pass .mm-map{color:#ffffffe6}.mm-entry.mm-pass .mm-players{color:#4caf50}.mm-entry.mm-skip{background:#ffffff05}.mm-entry.mm-skip .mm-region{color:#ffffff4d}.mm-entry.mm-skip .mm-map{color:#ffffff80}.mm-entry.mm-skip .mm-players{color:#eb5656}.mm-entry.mm-skip .mm-icon{opacity:.45}.mm-region{min-width:2.5em;font-weight:700}.mm-map{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mm-players{min-width:3em;text-align:right;font-weight:600}.mm-icon{width:1.7em;height:1.7em;flex:none;object-fit:cover;border-radius:.25em;align-self:center;background:#ffffff0f}.mm-entry.mm-landed{box-shadow:inset 0 0 0 2px #35e0e8}.mm-entry.mm-found,.mm-entry.mm-none{justify-content:center;transform-origin:center;animation:kuteMmGrow .34s cubic-bezier(.2,.85,.3,1.25) forwards}.mm-entry.mm-found{font-size:1.25em;gap:.7em}.mm-entry.mm-found .mm-icon{width:2.4em;height:2.4em;border-radius:.3em}.mm-entry.mm-none{font-size:1.2em;color:#ffffff8c;background:#ffffff08}.mm-entry.mm-found:before,.mm-entry.mm-none:before{content:none}#kuteMmCounter{font-size:.85em;color:#ffc147;text-align:center;margin-bottom:.5em}#kuteMmCancel{text-align:center;border:.2em solid #eb5656;border-radius:.3em;font-size:1.1em;background:#0000004d;padding:.2em 1.2em;cursor:pointer;margin:0 auto;width:fit-content;transition:all .08s}#kuteMmCancel:hover{border-color:#fff;transform:scale(.95)}#kuteMmCancel:active{transform:scale(.85)} -`});var Wf=we((FE,o1)=>{o1.exports='

      Matchmaker Filters

      F6 joins the best lobby for these. Nothing picked in a group means all of it

      Regions

      Modes \u2605 on a mode to prefer it

      Preferred first, then any other mode. Modes rank above maps
      Drag to reorder, click to move to the top

      Maps \u2605 on a map to prefer it

      Preferred first, then any other map
      Drag to reorder, click to move to the top

      Lobby

      Reset
      Done
      '});var od={};A(od,{default:()=>b1});function eg(s){let e=i1.get(Xt(s));return e===void 0?null:zs(e)}function g1(s,e){let t=eg(s);if(!t)return null;let o=document.createElement("img");return o.className=e,o.src=t,o.alt="",o.loading="lazy",o.onerror=()=>o.remove(),o}function rn(s,e){let t=document.createElement("span");return t.className=s,t.textContent=e,t}function ed(s,e){let t=document.createElement("div");t.className=`mm-entry ${e}`;let o=g1(s.map,"mm-icon");return o&&t.append(o),t.append(rn("mm-region",s.region),rn("mm-map",s.map),rn("mm-players",`${s.players}/${s.limit}`)),t}async function Xf(){let e=await(await fetch(d1,{signal:AbortSignal.timeout(Qf)})).json();return Array.isArray(e?.games)?e.games:[]}function Jf(s,e){let t=e.maps.length>0?new Set(e.maps.map(Xt)):a1;return s.map(o=>{let n=String(o[0]),r=o[4]??{},i=r.c===0||r.oc===1,a=String(r.i??""),l=Xt(a),c={id:n,region:n.split(":")[0],server:String(o[1]),players:Number(o[2]),limit:Number(o[3]),map:a,mode:s1[r.g]??"Unknown",timeLeft:Number(o[5]),passes:!1};return c.passes=i&&!c1.test(n)&&(e.regions.length===0||e.regions.includes(c.region))&&(e.modes.length===0||e.modes.includes(c.mode))&&t.has(l)&&c.players>=e.minPlayers&&c.players<=e.maxPlayers&&c.players0?c.timeLeft>=e.minTime:l1.has(l))&&!location.href.includes(n),c})}var s1,n1,Vf,Zf,r1,Xt,i1,a1,l1,c1,d1,Qf,u1,Yf,Qc,p1,h1,m1,f1,sn,nn,td,b1,sd=w(()=>{"use strict";Uf();F();Ae();No();or();s1=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Hide & Seek","Infected","Race","Last Man Standing","Simon Says","Gun Game","Prop Hunt","Boss Hunt","Classic FFA","Deposit","Stalker","King of the Hill","One in the Chamber","Trade","Kill Confirmed","Defuse","Sharp Shooter","Traitor","Raid","Blitz","Domination","Squad Deathmatch","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],n1=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Gun Game","Classic FFA","Deposit","Kill Confirmed","Sharp Shooter","Domination","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],Vf={SV:"Silicon Valley",TOK:"Tokyo",FRA:"Frankfurt",MBI:"Mumbai",SYD:"Sydney",SIN:"Singapore",DAL:"Dallas",BHN:"Bahrain",BRZ:"Brazil",NY:"New York"},Zf=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Tropicano","Habitat","Atomic","Old_Burg","Throwback","Clockwork","Bazaar","Erupt","HQ","Lush","Vivo","Slide Moonlight","Eterno Simulator","Eterno Jump","Frontier","Piazza","Barnyard"],r1={SkyTemple:"Sky Temple",Krunk_Plaza:"Krunk Plaza",Old_Burg:"Old Burg"},Xt=s=>s.toLowerCase().replace(/[^a-z0-9]/g,""),i1=new Map(tr.map((s,e)=>[Xt(s),e])),a1=new Set(Zf.map(Xt)),l1=new Set(["Eterno Jump","Slide Moonlight"].map(Xt)),c1=/[\s&#?/%\\]/,d1="https://matchmaker.krunker.io/game-list?hostname=krunker.io",Qf=1e4,u1=4,Yf=1100,Qc=80,p1=20,h1=180,m1=1200,f1=1100,sn={regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[],minPlayers:1,maxPlayers:6,minTime:120,sortByPlayers:!1,serverBrowser:!0,animation:!0,searchAfterMatch:!1},nn=s=>new Promise(e=>setTimeout(e,s));td=class{constructor(){this.activeRun=0,this.runCounter=0,this.candidates=[],this.popup=document.createElement("div"),this.popup.id="kuteMatchmaker",this.status=document.createElement("div"),this.status.id="kuteMmStatus",this.feed=document.createElement("div"),this.feed.id="kuteMmFeed",this.counter=document.createElement("div"),this.counter.id="kuteMmCounter";let e=document.createElement("div");e.id="kuteMmCancel",e.textContent="Cancel",e.onmouseenter=()=>window.SOUND?.play("tick_0",.1),e.onclick=()=>this.abort(),this.popup.append(this.status,this.feed,this.counter,e),this.cancelKey=t=>{t.key!=="Escape"||document.pointerLockElement||(t.preventDefault(),t.stopPropagation(),this.abort())},d.matchmaker={showFilters:()=>this.showFilters()},d.settings.toggleMatchmaker=()=>{},d.hostFeatures?.includes("matchmaker")&&(window.addEventListener("keydown",t=>{!cs(t,"matchmaker")||t.repeat||!d.settings.data.matchmaker||document.activeElement?.tagName!=="INPUT"&&this.start().catch(o=>console.error("[kute] matchmaker:",o))},!0),this.watchEndScreen())}watchEndScreen(){let e=document.getElementById("endUI");if(!e)return;let t=!1,o=e.style.display!=="none";document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&(t=!0)}),new MutationObserver(()=>{let n=e.style.display!=="none";n!==o&&(o=n,!(!n||!t)&&(t=!1,!(!d.settings.data.matchmaker||!this.filter.searchAfterMatch||window.getGameActivity?.()?.custom)&&this.start().catch(r=>console.error("[kute] matchmaker:",r))))}).observe(e,{attributes:!0,attributeFilter:["style"]})}get filter(){return{...sn,...d.settings.data.matchmakerFilter}}saveFilter(e){d.settings.data.matchmakerFilter=e,window.chrome.webview.postMessage(`set-config-json matchmakerFilter ${JSON.stringify(e)}`)}cancelled(e){return e!==this.activeRun}abort(){this.activeRun=0,window.playSelect?.(),this.dismiss()}dismiss(){document.removeEventListener("keydown",this.cancelKey,!0),this.popup.remove()}showPopup(){if(!document.querySelector("#kuteMatchmakerCSS")){let e=document.createElement("style");e.id="kuteMatchmakerCSS",e.textContent=Gf,document.head.append(e)}this.status.textContent="Connecting...",this.status.classList.remove("mm-fail"),this.feed.replaceChildren(),this.feed.classList.remove("mm-result"),this.counter.textContent="",document.addEventListener("keydown",this.cancelKey,!0),(document.querySelector("#uiBase")??document.body).append(this.popup)}pushEntry(e){for(this.feed.append(e);this.feed.children.length>u1;)this.feed.firstElementChild?.remove()}async animateScan(e,t,o){let n=t.length;if(n===0)return;this.status.textContent="Scanning lobbies...";let r=Math.floor(Yf/Qc),i=n>r?n/r:1,a=n>r?Qc:Math.max(p1,Math.min(Qc,Yf/n));for(let l=0;l[l.id,l])),a=[t,...this.candidates.filter(l=>l!==t)].find(l=>r.get(l.id)?.passes);a?this.join(a.id):this.openServerBrowser(o)}async start(){if(this.activeRun!==0)return;let e=++this.runCounter;this.activeRun=e;try{await this.search(e)}finally{this.activeRun===e&&(this.activeRun=0)}}async search(e){let{filter:t}=this;t.animation&&this.showPopup();let o,n;try{let[p,f]=await Promise.all([Xf(),Te("ping-regions","regionPings",Qf)]);o=Jf(p,t),n=f??{}}catch(p){if(console.error("[kute] matchmaker: no lobby list",p),this.cancelled(e)||!t.animation)return;this.status.textContent="Failed to fetch lobbies",this.status.classList.add("mm-fail"),await nn(2e3),this.cancelled(e)||this.dismiss();return}if(this.cancelled(e))return;let r=p=>n[p.server]??999,i=new Map(t.preferredMaps.map((p,f)=>[Xt(p),f])),a=new Map(t.preferredModes.map((p,f)=>[p,f])),l=p=>(a.get(p.mode)??a.size)*(i.size+1)+(i.get(Xt(p.map))??i.size),c=p=>p.limit-p.players<=1?1:0,u=o.filter(p=>p.passes);u.sort((p,f)=>{let m=l(p)-l(f),g=c(p)-c(f),b=r(p)-r(f),v=f.players-p.players;return t.sortByPlayers?m||g||v||b:m||g||b||v}),this.candidates=u;let h;if(u.length>0){let p=u[0],f=u.filter(m=>l(m)===l(p)&&c(m)===c(p)&&Math.abs(r(m)-r(p))<=20&&p.players-m.players<=2);h=f[Math.floor(Math.random()*f.length)]}if(t.animation&&await this.animateScan(e,o,h),!this.cancelled(e)){if(!h){if(t.animation){this.status.textContent="No Lobby Found",this.status.classList.add("mm-fail"),this.feed.classList.add("mm-result");let p=document.createElement("div");if(p.className="mm-entry mm-none",p.textContent="No matching lobbies",this.feed.replaceChildren(p),this.counter.textContent=t.serverBrowser?"Opening server browser...":"",await nn(f1),this.cancelled(e))return}this.openServerBrowser(t);return}if(t.animation){this.status.textContent="Lobby Found!",this.feed.classList.add("mm-result"),this.feed.replaceChildren(ed(h,"mm-pass mm-found"));let p=n[h.server]===void 0?"?":String(n[h.server]);if(this.counter.textContent=`${h.mode} \xB7 ${Vf[h.region]??h.region} \xB7 ${p}ms`,await nn(m1),this.cancelled(e))return}await this.verifyAndJoin(e,h,t)}}async showFilters(){let e=await Promise.resolve().then(()=>ue(Wf(),1)),{filter:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=(g,b,v)=>{let k=i(g);k.replaceChildren();for(let E of b){let L=document.createElement("div");if(L.className=`mmChip${v.includes(E.value)?" on":""}`,E.icon){let x=document.createElement("img");x.src=E.icon,x.alt="",x.loading="lazy",x.onerror=()=>x.remove(),L.append(x)}L.append(E.label),L.onclick=()=>{let x=v.indexOf(E.value);x===-1?v.push(E.value):v.splice(x,1),L.classList.toggle("on",x===-1)},k.append(L)}},l=(g,b,v)=>{if(!g)return;let k=document.createElement("img");k.src=g,k.alt="",v?k.loading="lazy":k.draggable=!1,k.onerror=()=>k.remove(),b.append(k)},c=g=>{let{preferred:b}=g,v=i(g.boxId);v.hidden=b.length===0;let k=v.querySelector(".mmGrid");k.replaceChildren();let E=()=>k.querySelectorAll(".mmNum").forEach((L,x)=>L.textContent=String(x+1));for(let L of b){let x=document.createElement("div");x.className="mmChip on mmRank",x.append(rn("mmNum","")),l(g.icon(L),x,!1),x.append(g.label(L));let $=null;x.onpointerdown=I=>{x.setPointerCapture(I.pointerId),$={x:I.clientX,y:I.clientY,moved:!1}},x.onpointermove=I=>{if(!$||!$.moved&&Math.hypot(I.clientX-$.x,I.clientY-$.y)<5)return;$.moved=!0,x.classList.add("dragging");let _=[...k.children],H=_.findIndex(J=>{let B=J.getBoundingClientRect();return I.clientX>=B.left&&I.clientX<=B.right&&I.clientY>=B.top&&I.clientY<=B.bottom}),G=_.indexOf(x);H===-1||H===G||(b.splice(H,0,...b.splice(G,1)),x.remove(),k.insertBefore(x,k.children[H]??null),E())},x.onpointerup=()=>{x.classList.remove("dragging"),$&&!$.moved&&(b.unshift(...b.splice(b.indexOf(L),1)),window.SOUND?.play("tick_0",.1),c(g)),$=null},x.onpointercancel=x.onpointerup,k.append(x)}E()},u=g=>{let{picked:b,preferred:v}=g,k=i(g.gridId);k.replaceChildren();for(let E of g.values){let L=v.includes(E),x=document.createElement("div");x.className=`mmChip${b.includes(E)?" on":""}${L?" preferred":""}`,l(g.icon(E),x,!0),x.append(g.label(E));let $=rn("mmStar","\u2605");$.title=L?"Preferred, click to remove":`Prefer this ${g.noun}`,$.onclick=I=>{I.stopPropagation(),L?v.splice(v.indexOf(E),1):(v.push(E),b.length>0&&!b.includes(E)&&b.push(E)),u(g)},x.append($),x.onclick=()=>{let I=b.indexOf(E);I!==-1?(b.splice(I,1),L&&v.splice(v.indexOf(E),1)):b.length===0?b.push(...new Set([...v,E])):b.push(E),u(g)},k.append(x)}c(g)},h=()=>{a("mmRegions",Object.entries(Vf).map(([g,b])=>({value:g,label:b})),t.regions),u({gridId:"mmModes",boxId:"mmModeRanks",noun:"mode",values:n1,picked:t.modes,preferred:t.preferredModes,label:g=>g,icon:()=>null}),u({gridId:"mmMaps",boxId:"mmMapRanks",noun:"map",values:Zf,picked:t.maps,preferred:t.preferredMaps,label:g=>r1[g]??g,icon:eg}),i("mmMinPlayers").value=String(t.minPlayers),i("mmMaxPlayers").value=String(t.maxPlayers),i("mmMinTime").value=String(t.minTime),i("mmSortByPlayers").checked=t.sortByPlayers,i("mmServerBrowser").checked=t.serverBrowser,i("mmAnimation").checked=t.animation,i("mmSearchAfterMatch").checked=t.searchAfterMatch};t.regions=[...t.regions],t.modes=[...t.modes],t.maps=[...t.maps],t.preferredMaps=[...t.preferredMaps],t.preferredModes=[...t.preferredModes],h();let p=(g,b,v,k)=>{let E=Number.parseInt(i(g).value,10);return Number.isNaN(E)?k:Math.min(v,Math.max(b,E))},f=new AbortController,m=()=>{f.abort(),o.remove(),this.saveFilter({...t,minPlayers:p("mmMinPlayers",0,7,sn.minPlayers),maxPlayers:p("mmMaxPlayers",0,7,sn.maxPlayers),minTime:p("mmMinTime",0,480,sn.minTime),sortByPlayers:i("mmSortByPlayers").checked,serverBrowser:i("mmServerBrowser").checked,animation:i("mmAnimation").checked,searchAfterMatch:i("mmSearchAfterMatch").checked})};i("mmDone").onclick=m,i("mmReset").onclick=()=>{Object.assign(t,sn,{regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[]}),h()},o.addEventListener("mousedown",g=>{g.target===o&&m()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),m())},{signal:f.signal,capture:!0}),document.body.append(o)}},b1=new td});var nd=we((GE,v1)=>{v1.exports=`#uiBase.onMenu #spectateUI{display:block!important}#uiBase.onCompMenu.onMenu #specTimer,#uiBase.onMenu #specGMessage,#uiBase.onMenu #spec1,#uiBase.onMenu #specGameInfo,#uiBase.onMenu #spec0,#uiBase.onMenu #specControlHolder,#uiBase.onMenu #specNames{display:none!important}#uiBase.onMenu #spectateUI>#spectateHUD{box-sizing:border-box;display:flex!important;justify-content:center;height:.5rem;white-space:nowrap;width:max-content;position:fixed;top:calc(50% + 140px)}#uiBase.onMenu #spectateHUD #specGMessage{top:0}#uiBase.onMenu #spectateUI>#spectateHUD{z-index:1;transform:unset}#uiBase.onMenu .spectateInfo{position:fixed;top:calc(40% - 105px);left:50%;transform:translate(-50%,-50%)}#uiBase.onMenu #spectateUI div .spectateInfo #specTimer{background-color:#0000;padding:0 25px;font-size:42px;border-radius:.5em}#uiBase.onMenu #specKPDContr{display:none}#uiBase.onMenu #spectateUI div#specStats{position:absolute;top:calc(50% + 13em);left:50%;transform:translate(-50%);z-index:1}#uiBase.onMenu #spectateUI div#specStats:before{content:"Spectating";position:absolute;bottom:100%;left:50%;transform:translate(-50%);font-size:1.2em;padding-bottom:.5em} -`});var id={};A(id,{default:()=>w1});var og,tg,rd,w1,ad=w(()=>{"use strict";og=ue(nd(),1);F();tg="kute_menuTimerCSS",rd=class{constructor(){d.settings.toggleMenuTimer=e=>this.toggle(e),this.toggle(d.settings.data.menuTimer!==!1)}toggle(e){let t=document.getElementById(tg);if(!e){t?.remove();return}if(t)return;let o=document.createElement("style");o.id=tg,o.textContent=og.default,document.head.append(o)}},w1=new rd});var dd={};A(dd,{default:()=>M1});function ng(s){let e=/loadUserMod\(\s*(["`])(.*?)\1\s*,\s*(["`])(.*?)\3/.exec(s);return e?{name:e[2],url:e[4]}:null}function rg(s){try{let e=new URL(s);return e.protocol!=="https:"?null:e.hostname==="krunker.io"||e.hostname.endsWith(".krunker.io")?e.href:e.hostname==="dropbox.com"||e.hostname==="www.dropbox.com"?(e.hostname="dl.dropboxusercontent.com",e.search="",e.href):null}catch{return null}}function E1(s){return`${s.replace(/[\u0000-\u001f<>:"/\\|?*]/g,"").replace(/\s+/g," ").trim().replace(/[ .]+$/,"").slice(0,80)||"mod"}.zip`}async function $1(s){let e=await fetch(s);if(e.status===403||e.status===404)throw new Error("This mod's file is gone, its creator removed it");if(!e.ok)throw new Error(`The mod server answered ${e.status}`);if(Number(e.headers.get("content-length")??0)>sg)throw new Error("That mod is too large");let t=await e.blob();if(t.size>sg)throw new Error("That mod is too large");let o=new Uint8Array(await t.slice(0,2).arrayBuffer());if(o[0]!==80||o[1]!==75)throw new Error("That mod is not a zip file");return t}function C1(s,e){let t=document.createElement("a");t.href=URL.createObjectURL(s),t.download=e,t.click(),setTimeout(()=>URL.revokeObjectURL(t.href),6e4)}function ig(s,e,t,o){let n=!1;s.addEventListener("click",r=>{if(r.stopPropagation(),n)return;n=!0,e.style.color=ld.busy,e.textContent="hourglass_top";let i=E1(t);$1(o).then(a=>{C1(a,i),e.style.color=ld.done,e.textContent="download_done",d.showNotification(`Saved ${i} to your Downloads folder`,!1,4)}).catch(a=>{e.style.color=ld.failed,e.textContent="error_outline",d.showNotification(a instanceof TypeError?"Could not download the mod":a.message,!1,4)}).finally(()=>{n=!1})})}function ag(s){let e=document.createElement("span");return e.className="material-icons",e.style.cssText=s,e.textContent="download",e}var an,sg,k1,y1,x1,S1,ld,cd,M1,ud=w(()=>{"use strict";F();an="data-kute-mod",sg=300*1024*1024,k1='[onclick^="downloadPack"]',y1="font-size:70px;color:#fff;",x1="position:absolute;right:30px;bottom:92px;box-sizing:content-box;width:240px;height:37px;padding:10px 6px 6px;border:3px solid #35e0e8;border-radius:6px;background:rgba(0,0,0,0.6);color:#fff;font-size:21px;text-align:center;cursor:pointer;",S1="font-size:32px;color:#fff;vertical-align:top;margin-top:-3px;margin-left:5px;",ld={busy:"#777",done:"#35e0e8",failed:"#ff7a7a"};cd=class{constructor(){this.pending=null,this.observer=new MutationObserver(()=>{this.pending===null&&(this.pending=setTimeout(()=>this.scan(),150))});let e=document.getElementById("menuWindow");e&&(this.observer.observe(e,{childList:!0,subtree:!0}),this.scan())}scan(){this.pending=null;let e=document.getElementById("menuWindow");if(!e)return;let t=[];for(let r of e.querySelectorAll('.mapActionB[onclick^="loadUserMod"]')){let i=r.parentElement;if(!i||i.querySelector(`[${an}], ${k1}`))continue;let a=ng(r.getAttribute("onclick")??""),l=a&&rg(a.url);a&&l&&t.push([i,this.listButton(a.name,l)])}let o=document.getElementById("bigMFeatPBtn"),n=o?.parentElement;if(o&&n&&!n.querySelector(`[${an}]`)){let r=ng(o.getAttribute("onclick")??""),i=r&&rg(r.url);r&&i&&t.push([n,[this.featuredButton(r.name,i)]])}if(t.length!==0){this.observer.disconnect();for(let[r,i]of t)r.append(...i);this.observer.observe(e,{childList:!0,subtree:!0})}}listButton(e,t){let o=document.createElement("div");o.className="mapActionSep",o.setAttribute(an,"");let n=document.createElement("div");n.className="mapActionB",n.title="Download",n.setAttribute(an,"");let r=ag(y1);return n.append(r),ig(n,r,e,t),[o,n]}featuredButton(e,t){let o=document.createElement("div");o.setAttribute(an,""),o.style.cssText=x1;let n=ag(S1);return o.append("Download ",n),ig(o,n,e,t),o}},M1=new cd});var md={};A(md,{default:()=>_1});function Mr(s,e,t){return Math.min(t,Math.max(e,s))}function pd(s,e){let t=parseFloat(localStorage.getItem("kro_setngss_"+s)??"");return Number.isFinite(t)&&t>0?t:e}function ug(s,e){let t=s.createProgram();for(let[o,n]of[[s.VERTEX_SHADER,P1],[s.FRAGMENT_SHADER,e]]){let r=s.createShader(o);if(!r)return null;s.shaderSource(r,n),s.compileShader(r),s.attachShader(t,r)}return s.linkProgram(t),s.getProgramParameter(t,s.LINK_STATUS)?t:null}var T1,lg,A1,L1,cg,R1,dg,P1,I1,N1,hd,_1,fd=w(()=>{"use strict";F();ls();T1="kuteMotionBlur",lg=1e3/60,A1=.4,L1=.002,cg=.2,R1=2,dg=.0024,P1=`#version 300 es + class="muted">${T(t*o)} KR gross if all ${o} sell · ${it(t/this.view.item.skin.fair-1)} vs estimate.`}filterHoldings(){let e=this.portfolioFilter.toLocaleLowerCase().trim();for(let t of this.shadow?.querySelectorAll("tr[data-skin]")??[]){let o=t;o.hidden=!o.querySelector(".itemIdentity")?.textContent?.toLocaleLowerCase().includes(e)}}filterListings(){let e=this.value("#kmListingMax"),t=this.value("#kmSerialMax"),o=this.value("#kmWearMax"),n=this.value("#kmAgeMax"),r=this.value("#kmSellerMax");for(let c of this.shadow?.querySelectorAll("#kmListingRows tr")??[]){let d=c;d.hidden=!!(e&&Number(d.dataset.price)>Number(e))||!!(t&&(!d.dataset.serial||Number(d.dataset.serial)>Number(t)))||!!(o&&(!d.dataset.wear||Number(d.dataset.wear)>Number(o)))||!!(n&&(!d.dataset.age||Number(d.dataset.age)>Number(n)))||!!(r&&(!d.dataset.sellerCount||Number(d.dataset.sellerCount)>Number(r)))}let i=this.shadow?.querySelector("#kmListingCount"),l=[...this.shadow?.querySelectorAll("#kmListingRows tr")??[]].filter(c=>!c.hidden).length;i&&(i.textContent=`${l} sampled listings shown; ${this.view?.listings?.total??"unknown"} reported listed.`)}applyFilters(e=1){this.show(this.searchTab(),this.readFilters(e))}readFilters(e){return{q:this.value("#kmQ").trim(),rarity:this.value("#kmRarity"),type:this.value("#kmType"),sort:this.value("#kmSort"),budget:this.value("#kmBudget"),minSales:this.value("#kmSales"),page:e}}click(e){let t=e.target instanceof Element?e.target.closest("button,tr[data-skin],tr[data-index-name],tr[data-category]"):null;if(!t||t.hasAttribute("disabled"))return;let o=t.dataset;if(o.externalUrl){e.preventDefault();try{let n=new URL(o.externalUrl);if(n.protocol!=="https:"||n.username||n.password||n.port)return;if(!(["github.com","kute.lol","krunker.io"].includes(n.hostname)||n.hostname==="discord.com"&&n.pathname.startsWith("/invite/"))){u.showNotification("This news link is not supported by Kute.",!1,6);return}if(n.hostname==="krunker.io"&&!u.hostFeatures?.includes("krunker-links")){u.showNotification("Update the Kute application to open Krunker news links.",!1,6);return}window.chrome.webview.postMessage(`open-url, ${n.href}`)}catch{}return}if(o.intelKind!==void 0){this.show("intelligence",o.intelKind);return}if(t.id==="kmClose"){this.close();return}if(t.id==="kmMaximize"){this.toggleMaximized();return}if(o.scale!==void 0){this.rescale(Number(o.scale));return}if(o.discover){if(o.discover===this.tab)return;o.discover==="deals"&&!this.saved.has("deals")&&(this.tab==="search"||this.tab==="active")?this.show("deals",{budget:this.value("#kmBudget")}):this.show(o.discover);return}if(o.nav==="search"){this.show(this.discoveryTab);return}if(o.nav){this.show(o.nav);return}if(o.skin){this.show("item",Number(o.skin));return}if(o.category){this.show("search",{...yo(),type:o.category,minSales:"1"});return}if(o.page){this.applyFilters(Number(o.page));return}if(o.range){this.show("item",{...this.itemState(),range:o.range,zoom:1,offset:0},!0);return}if(o.chartMode){this.show("item",{...this.itemState(),candles:o.chartMode==="candles"},!0);return}if(o.pan!==void 0){this.show("item",{...this.itemState(),offset:Number(o.pan)},!0);return}if(o.zoom){this.show("item",{...this.itemState(),zoom:Number(o.zoom),offset:o.zoom==="1"?0:this.itemState().offset},!0);return}if(o.window){this.show("movers",o.window);return}if(o.indexName){this.show("indices",o.indexName);return}if(o.unwatch){if(!wo(Se().filter(n=>n.skin!==Number(o.unwatch)))){this.storageError();return}this.show("watchlist",this.arg,!0);return}if(o.remove!==void 0&&o.side){this.analyzer[o.side].splice(Number(o.remove),1),this.show("analyze",this.arg,!0);return}switch(o.action){case"discover":this.show("search",yo());break;case"reset-search":this.show(this.searchTab(),this.tab==="active"?{...yo(),minSales:"1",sort:"liquidity"}:yo());break;case"back":this.show(this.previous);break;case"retry":this.retry();break;case"filters":this.applyFilters();break;case"deal-budget":this.show("deals",{budget:this.value("#kmDealBudget")});break;case"inventory":this.show("portfolio",this.value("#kmName").trim());break;case"analyze":this.show("analyze",this.arg,!0);break;case"clear-trade":this.analyzer={give:[],get:[],giveKr:0,getKr:0},this.show("analyze");break;case"watch":if(this.view?.item){if(!Ql(this.view.item.skin)){this.storageError();return}this.show("item",this.arg,!0)}break;default:break}}storageError(){let e=this.shadow?.querySelector("#kmFootRight");e&&(e.textContent="Could not save on this device. The watchlist holds up to 100 items.")}async retry(){let{generation:e}=this;await W.retry(),e===this.generation&&await this.show(this.tab,this.arg)}changed(e){let t=e.target;if(t instanceof HTMLInputElement||t instanceof HTMLSelectElement)if(t.id==="kmAdvanced"){this.advanced=t.checked;try{localStorage.setItem(_f,this.advanced?"1":"0")}catch{this.storageError()}this.show(this.tab,void 0,!0)}else if(t.id==="kmOverlay")this.show("item",{...this.itemState(),overlay:t.value},!0);else if(t.dataset.target){let o=Number(t.value),n=Se().map(r=>r.skin===Number(t.dataset.target)?{...r,target:o>0&&Number.isFinite(o)?o:null}:r);if(!wo(n)){this.storageError();return}this.show("watchlist",this.arg,!0)}else if(t.dataset.count!==void 0&&t.dataset.side){let o=this.analyzer[t.dataset.side][Number(t.dataset.count)];o&&(o.count=Math.min(1e4,Math.max(1,Math.floor(Number(t.value)||1))),t.value=String(o.count)),this.refreshTrade()}else if(t.dataset.kr){let o=Math.max(0,Math.min(1e9,Math.floor(Number(t.value)||0)));t.dataset.kr==="give"?this.analyzer.giveKr=o:this.analyzer.getKr=o,t.value=String(o),this.refreshTrade()}else t.closest("#kmFilters")&&t instanceof HTMLSelectElement&&this.applyFilters()}input(e){let t=e.target;if(t instanceof HTMLInputElement){if(t.id==="kmSellPrice"||t.id==="kmSellQuantity"){this.updatePlanner();return}if(["kmListingMax","kmSerialMax","kmWearMax","kmAgeMax","kmSellerMax"].includes(t.id)){this.filterListings();return}if(t.id==="kmHoldingFilter"){this.portfolioFilter=t.value,this.filterHoldings();return}}}key(e){if(!this.shadow||(e.stopImmediatePropagation(),this.itemSearch?.key(e))||e.isComposing)return;if(e.key==="Escape"){e.stopImmediatePropagation(),e.preventDefault(),this.close();return}if(e.ctrlKey&&!e.altKey&&["+","=","-","0"].includes(e.key)){e.preventDefault(),this.rescale({"-":-1,0:0}[e.key]??1);return}let t=this.shadow.activeElement;if(t?.matches("[data-discover]")&&["ArrowLeft","ArrowRight","Home","End"].includes(e.key)){e.preventDefault();let i=[...this.shadow.querySelectorAll("#kmDiscoverTabs button")],l=(i.indexOf(t)+(e.key==="ArrowRight"?1:-1)+i.length)%i.length;e.key==="Home"&&(l=0),e.key==="End"&&(l=i.length-1);let c=i[l];c.focus(),c.click();return}if(e.key==="Enter"&&t&&(t.closest("#kmFilters")?(e.preventDefault(),this.applyFilters()):t.id==="kmName"?(e.preventDefault(),this.show("portfolio",this.value("#kmName").trim())):t.matches("tr[data-skin],tr[data-index-name],tr[data-category]")&&(e.preventDefault(),t.click())),e.key!=="Tab")return;let o=[...this.shadow.querySelectorAll("button:not(:disabled):not([tabindex='-1']),input:not([type=hidden]),select,summary,[tabindex='0']")].filter(i=>i instanceof HTMLElement&&i.getClientRects().length&&!i.closest("[hidden]")),n=o[0],r=o.at(-1);e.shiftKey&&(t===n||!t)?(e.preventDefault(),r?.focus()):!e.shiftKey&&(t===r||!t)&&(e.preventDefault(),n?.focus())}},jy=new Er,Uy=jy});var Vc={};A(Vc,{default:()=>Wy});var Wc,Gy,Wy,$r=w(()=>{"use strict";D();It();xe();Xl();Zl();fr();ic();Wc=class{constructor(){this.headerItem=document.createElement("div"),this.headerSeparator=document.createElement("div"),this.headerObserver=new MutationObserver(()=>this.placeButton()),this.onUnread=()=>this.updateBadge(),this.terminal=null,this.running=!1,this.warned=!1,u.settings.toggleMarket=e=>this.toggle(e),u.market={open:(e,t)=>this.open(e,t),toggle:e=>this.toggle(e)},this.toggle(!0)}toggle(e){if(e!==this.running)if(this.running=e,e){if(!W.hostSupported()){this.warned||(this.warned=!0,u.showNotification("The Kute Market needs a newer Kute. Update Kute to use it.",!1,8)),this.running=!1;return}if(he.offline()){this.running=!1;return}this.placeButton();let t=document.querySelector("#playerHeaderEl");t&&this.headerObserver.observe(t,{childList:!0,subtree:!0}),window.addEventListener(Ws,this.onUnread),hr.start(),mr.start(),$t.start(),gr.start()}else this.headerObserver.disconnect(),window.removeEventListener(Ws,this.onUnread),this.headerItem.remove(),this.headerSeparator.remove(),hr.stop(),mr.stop(),$t.stop(),gr.stop(),this.terminal?.close()}placeButton(){let e=document.querySelector("#playerHeaderEl .headerBarRight");if(!e||e.contains(this.headerItem))return;let t=[...e.querySelector(".nav-item")?.classList??[]].find(o=>o.startsWith("svelte-"))??"";this.headerItem.className=`nav-item ${t}`,this.headerItem.innerHTML=` Kute Market `,this.headerItem.onclick=()=>this.open($t.unread.size?"watchlist":void 0),this.headerSeparator.className="verticalSeparator",this.headerSeparator.style.cssText="height: 35px;",e.prepend(this.headerItem,this.headerSeparator),this.updateBadge()}updateBadge(){let e=this.headerItem.querySelector(".nav-badge");if(!e)return;let t=$t.unread.size;e.textContent=String(Math.min(99,t)),e.style.display=t?"inline-block":"none"}async open(e,t){if(this.running){if(!this.terminal){let o=await Promise.resolve().then(()=>(Gc(),Uc)).catch(()=>null);if(!o)return;this.terminal=o.default}await this.terminal.open(e,t)}}},Gy=new Wc,Wy=Gy});var Vy={};var Of=w(()=>{"use strict";$r()});var Ff,Df=w(()=>{Ff=`@keyframes kuteMmSlideDown{0%{transform:translate(-50%,-500%)}to{transform:translate(-50%)}}#kuteMatchmaker{position:absolute;top:8em;left:50%;z-index:2147482000;box-sizing:border-box;width:24em;padding:18px 22px;border-radius:14px;overflow:hidden;pointer-events:all;background:#12121699;backdrop-filter:blur(14px) saturate(120%);box-shadow:0 8px 48px #000c;display:flex;flex-direction:column;color:#fff;animation:kuteMmSlideDown .4s cubic-bezier(.16,1,.3,1) forwards}#kuteMmStatus{font-size:1.4em;color:#35e0e8;margin-bottom:.6em;text-align:center}#kuteMmStatus.mm-fail{color:#eb5656}#kuteMmFeed{display:flex;flex-direction:column;gap:.15em;overflow:hidden;min-height:5.6em;margin-bottom:.6em}#kuteMmFeed.mm-result{justify-content:center}@keyframes kuteMmFeedIn{0%{opacity:0;transform:translate(1em)}to{opacity:1;transform:translate(0)}}@keyframes kuteMmGrow{0%{opacity:0;transform:scale(.55)}65%{opacity:1;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}.mm-entry{display:flex;gap:.8em;padding:.2em .5em;font-size:.95em;font-family:GameFont,monospace;border-radius:.2em;animation:kuteMmFeedIn .12s ease forwards}.mm-entry:last-child:before{content:"\\25b8";color:#ffc147}.mm-entry.mm-pass{background:#4caf501a}.mm-entry.mm-pass .mm-region{color:#35e0e8}.mm-entry.mm-pass .mm-map{color:#ffffffe6}.mm-entry.mm-pass .mm-players{color:#4caf50}.mm-entry.mm-skip{background:#ffffff05}.mm-entry.mm-skip .mm-region{color:#ffffff4d}.mm-entry.mm-skip .mm-map{color:#ffffff80}.mm-entry.mm-skip .mm-players{color:#eb5656}.mm-entry.mm-skip .mm-icon{opacity:.45}.mm-region{min-width:2.5em;font-weight:700}.mm-map{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mm-players{min-width:3em;text-align:right;font-weight:600}.mm-icon{width:1.7em;height:1.7em;flex:none;object-fit:cover;border-radius:.25em;align-self:center;background:#ffffff0f}.mm-entry.mm-landed{box-shadow:inset 0 0 0 2px #35e0e8}.mm-entry.mm-found,.mm-entry.mm-none{justify-content:center;transform-origin:center;animation:kuteMmGrow .34s cubic-bezier(.2,.85,.3,1.25) forwards}.mm-entry.mm-found{font-size:1.25em;gap:.7em}.mm-entry.mm-found .mm-icon{width:2.4em;height:2.4em;border-radius:.3em}.mm-entry.mm-none{font-size:1.2em;color:#ffffff8c;background:#ffffff08}.mm-entry.mm-found:before,.mm-entry.mm-none:before{content:none}#kuteMmCounter{font-size:.85em;color:#ffc147;text-align:center;margin-bottom:.5em}#kuteMmCancel{text-align:center;border:.2em solid #eb5656;border-radius:.3em;font-size:1.1em;background:#0000004d;padding:.2em 1.2em;cursor:pointer;margin:0 auto;width:fit-content;transition:all .08s}#kuteMmCancel:hover{border-color:#fff;transform:scale(.95)}#kuteMmCancel:active{transform:scale(.85)} +`});var qf=we((NE,Xy)=>{Xy.exports='

      Matchmaker Filters

      F6 joins the best lobby for these. Nothing picked in a group means all of it

      Regions

      Modes \u2605 on a mode to prefer it

      Preferred first, then any other mode. Modes rank above maps
      Drag to reorder, click to move to the top

      Maps \u2605 on a map to prefer it

      Preferred first, then any other map
      Drag to reorder, click to move to the top

      Lobby

      Reset
      Done
      '});var Zc={};A(Zc,{default:()=>u1});function Yf(s){let e=e1.get(Wt(s));return e===void 0?null:Bs(e)}function d1(s,e){let t=Yf(s);if(!t)return null;let o=document.createElement("img");return o.className=e,o.src=t,o.alt="",o.loading="lazy",o.onerror=()=>o.remove(),o}function nn(s,e){let t=document.createElement("span");return t.className=s,t.textContent=e,t}function Xc(s,e){let t=document.createElement("div");t.className=`mm-entry ${e}`;let o=d1(s.map,"mm-icon");return o&&t.append(o),t.append(nn("mm-region",s.region),nn("mm-map",s.map),nn("mm-players",`${s.players}/${s.limit}`)),t}async function Uf(){let e=await(await fetch(n1,{signal:AbortSignal.timeout(Vf)})).json();return Array.isArray(e?.games)?e.games:[]}function Gf(s,e){let t=e.maps.length>0?new Set(e.maps.map(Wt)):t1;return s.map(o=>{let n=String(o[0]),r=o[4]??{},i=r.c===0||r.oc===1,a=String(r.i??""),l=Wt(a),c={id:n,region:n.split(":")[0],server:String(o[1]),players:Number(o[2]),limit:Number(o[3]),map:a,mode:Jy[r.g]??"Unknown",timeLeft:Number(o[5]),passes:!1};return c.passes=i&&!s1.test(n)&&(e.regions.length===0||e.regions.includes(c.region))&&(e.modes.length===0||e.modes.includes(c.mode))&&t.has(l)&&c.players>=e.minPlayers&&c.players<=e.maxPlayers&&c.players0?c.timeLeft>=e.minTime:o1.has(l))&&!location.href.includes(n),c})}var Jy,Zy,Kf,Wf,Qy,Wt,e1,t1,o1,s1,n1,Vf,r1,jf,Yc,i1,a1,l1,c1,on,sn,Jc,u1,Qc=w(()=>{"use strict";Df();D();Ae();Po();tr();Jy=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Hide & Seek","Infected","Race","Last Man Standing","Simon Says","Gun Game","Prop Hunt","Boss Hunt","Classic FFA","Deposit","Stalker","King of the Hill","One in the Chamber","Trade","Kill Confirmed","Defuse","Sharp Shooter","Traitor","Raid","Blitz","Domination","Squad Deathmatch","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],Zy=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Gun Game","Classic FFA","Deposit","Kill Confirmed","Sharp Shooter","Domination","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],Kf={SV:"Silicon Valley",TOK:"Tokyo",FRA:"Frankfurt",MBI:"Mumbai",SYD:"Sydney",SIN:"Singapore",DAL:"Dallas",BHN:"Bahrain",BRZ:"Brazil",NY:"New York"},Wf=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Tropicano","Habitat","Atomic","Old_Burg","Throwback","Clockwork","Bazaar","Erupt","HQ","Lush","Vivo","Slide Moonlight","Eterno Simulator","Eterno Jump","Frontier","Piazza","Barnyard"],Qy={SkyTemple:"Sky Temple",Krunk_Plaza:"Krunk Plaza",Old_Burg:"Old Burg"},Wt=s=>s.toLowerCase().replace(/[^a-z0-9]/g,""),e1=new Map(er.map((s,e)=>[Wt(s),e])),t1=new Set(Wf.map(Wt)),o1=new Set(["Eterno Jump","Slide Moonlight"].map(Wt)),s1=/[\s&#?/%\\]/,n1="https://matchmaker.krunker.io/game-list?hostname=krunker.io",Vf=1e4,r1=4,jf=1100,Yc=80,i1=20,a1=180,l1=1200,c1=1100,on={regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[],minPlayers:1,maxPlayers:6,minTime:120,sortByPlayers:!1,serverBrowser:!0,animation:!0,searchAfterMatch:!1},sn=s=>new Promise(e=>setTimeout(e,s));Jc=class{constructor(){this.activeRun=0,this.runCounter=0,this.candidates=[],this.popup=document.createElement("div"),this.popup.id="kuteMatchmaker",this.status=document.createElement("div"),this.status.id="kuteMmStatus",this.feed=document.createElement("div"),this.feed.id="kuteMmFeed",this.counter=document.createElement("div"),this.counter.id="kuteMmCounter";let e=document.createElement("div");e.id="kuteMmCancel",e.textContent="Cancel",e.onmouseenter=()=>window.SOUND?.play("tick_0",.1),e.onclick=()=>this.abort(),this.popup.append(this.status,this.feed,this.counter,e),this.cancelKey=t=>{t.key!=="Escape"||document.pointerLockElement||(t.preventDefault(),t.stopPropagation(),this.abort())},u.matchmaker={showFilters:()=>this.showFilters()},u.settings.toggleMatchmaker=()=>{},u.hostFeatures?.includes("matchmaker")&&(window.addEventListener("keydown",t=>{!ls(t,"matchmaker")||t.repeat||!u.settings.data.matchmaker||document.activeElement?.tagName!=="INPUT"&&this.start().catch(o=>console.error("[kute] matchmaker:",o))},!0),this.watchEndScreen())}watchEndScreen(){let e=document.getElementById("endUI");if(!e)return;let t=!1,o=e.style.display!=="none";document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&(t=!0)}),new MutationObserver(()=>{let n=e.style.display!=="none";n!==o&&(o=n,!(!n||!t)&&(t=!1,!(!u.settings.data.matchmaker||!this.filter.searchAfterMatch||window.getGameActivity?.()?.custom)&&this.start().catch(r=>console.error("[kute] matchmaker:",r))))}).observe(e,{attributes:!0,attributeFilter:["style"]})}get filter(){return{...on,...u.settings.data.matchmakerFilter}}saveFilter(e){u.settings.data.matchmakerFilter=e,window.chrome.webview.postMessage(`set-config-json matchmakerFilter ${JSON.stringify(e)}`)}cancelled(e){return e!==this.activeRun}abort(){this.activeRun=0,window.playSelect?.(),this.dismiss()}dismiss(){document.removeEventListener("keydown",this.cancelKey,!0),this.popup.remove()}showPopup(){if(!document.querySelector("#kuteMatchmakerCSS")){let e=document.createElement("style");e.id="kuteMatchmakerCSS",e.textContent=Ff,document.head.append(e)}this.status.textContent="Connecting...",this.status.classList.remove("mm-fail"),this.feed.replaceChildren(),this.feed.classList.remove("mm-result"),this.counter.textContent="",document.addEventListener("keydown",this.cancelKey,!0),(document.querySelector("#uiBase")??document.body).append(this.popup)}pushEntry(e){for(this.feed.append(e);this.feed.children.length>r1;)this.feed.firstElementChild?.remove()}async animateScan(e,t,o){let n=t.length;if(n===0)return;this.status.textContent="Scanning lobbies...";let r=Math.floor(jf/Yc),i=n>r?n/r:1,a=n>r?Yc:Math.max(i1,Math.min(Yc,jf/n));for(let l=0;l[l.id,l])),a=[t,...this.candidates.filter(l=>l!==t)].find(l=>r.get(l.id)?.passes);a?this.join(a.id):this.openServerBrowser(o)}async start(){if(this.activeRun!==0)return;let e=++this.runCounter;this.activeRun=e;try{await this.search(e)}finally{this.activeRun===e&&(this.activeRun=0)}}async search(e){let{filter:t}=this;t.animation&&this.showPopup();let o,n;try{let[p,m]=await Promise.all([Uf(),Te("ping-regions","regionPings",Vf)]);o=Gf(p,t),n=m??{}}catch(p){if(console.error("[kute] matchmaker: no lobby list",p),this.cancelled(e)||!t.animation)return;this.status.textContent="Failed to fetch lobbies",this.status.classList.add("mm-fail"),await sn(2e3),this.cancelled(e)||this.dismiss();return}if(this.cancelled(e))return;let r=p=>n[p.server]??999,i=new Map(t.preferredMaps.map((p,m)=>[Wt(p),m])),a=new Map(t.preferredModes.map((p,m)=>[p,m])),l=p=>(a.get(p.mode)??a.size)*(i.size+1)+(i.get(Wt(p.map))??i.size),c=p=>p.limit-p.players<=1?1:0,d=o.filter(p=>p.passes);d.sort((p,m)=>{let f=l(p)-l(m),g=c(p)-c(m),b=r(p)-r(m),v=m.players-p.players;return t.sortByPlayers?f||g||v||b:f||g||b||v}),this.candidates=d;let h;if(d.length>0){let p=d[0],m=d.filter(f=>l(f)===l(p)&&c(f)===c(p)&&Math.abs(r(f)-r(p))<=20&&p.players-f.players<=2);h=m[Math.floor(Math.random()*m.length)]}if(t.animation&&await this.animateScan(e,o,h),!this.cancelled(e)){if(!h){if(t.animation){this.status.textContent="No Lobby Found",this.status.classList.add("mm-fail"),this.feed.classList.add("mm-result");let p=document.createElement("div");if(p.className="mm-entry mm-none",p.textContent="No matching lobbies",this.feed.replaceChildren(p),this.counter.textContent=t.serverBrowser?"Opening server browser...":"",await sn(c1),this.cancelled(e))return}this.openServerBrowser(t);return}if(t.animation){this.status.textContent="Lobby Found!",this.feed.classList.add("mm-result"),this.feed.replaceChildren(Xc(h,"mm-pass mm-found"));let p=n[h.server]===void 0?"?":String(n[h.server]);if(this.counter.textContent=`${h.mode} \xB7 ${Kf[h.region]??h.region} \xB7 ${p}ms`,await sn(l1),this.cancelled(e))return}await this.verifyAndJoin(e,h,t)}}async showFilters(){let e=await Promise.resolve().then(()=>ue(qf(),1)),{filter:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=(g,b,v)=>{let k=i(g);k.replaceChildren();for(let E of b){let L=document.createElement("div");if(L.className=`mmChip${v.includes(E.value)?" on":""}`,E.icon){let x=document.createElement("img");x.src=E.icon,x.alt="",x.loading="lazy",x.onerror=()=>x.remove(),L.append(x)}L.append(E.label),L.onclick=()=>{let x=v.indexOf(E.value);x===-1?v.push(E.value):v.splice(x,1),L.classList.toggle("on",x===-1)},k.append(L)}},l=(g,b,v)=>{if(!g)return;let k=document.createElement("img");k.src=g,k.alt="",v?k.loading="lazy":k.draggable=!1,k.onerror=()=>k.remove(),b.append(k)},c=g=>{let{preferred:b}=g,v=i(g.boxId);v.hidden=b.length===0;let k=v.querySelector(".mmGrid");k.replaceChildren();let E=()=>k.querySelectorAll(".mmNum").forEach((L,x)=>L.textContent=String(x+1));for(let L of b){let x=document.createElement("div");x.className="mmChip on mmRank",x.append(nn("mmNum","")),l(g.icon(L),x,!1),x.append(g.label(L));let $=null;x.onpointerdown=I=>{x.setPointerCapture(I.pointerId),$={x:I.clientX,y:I.clientY,moved:!1}},x.onpointermove=I=>{if(!$||!$.moved&&Math.hypot(I.clientX-$.x,I.clientY-$.y)<5)return;$.moved=!0,x.classList.add("dragging");let _=[...k.children],H=_.findIndex(J=>{let B=J.getBoundingClientRect();return I.clientX>=B.left&&I.clientX<=B.right&&I.clientY>=B.top&&I.clientY<=B.bottom}),G=_.indexOf(x);H===-1||H===G||(b.splice(H,0,...b.splice(G,1)),x.remove(),k.insertBefore(x,k.children[H]??null),E())},x.onpointerup=()=>{x.classList.remove("dragging"),$&&!$.moved&&(b.unshift(...b.splice(b.indexOf(L),1)),window.SOUND?.play("tick_0",.1),c(g)),$=null},x.onpointercancel=x.onpointerup,k.append(x)}E()},d=g=>{let{picked:b,preferred:v}=g,k=i(g.gridId);k.replaceChildren();for(let E of g.values){let L=v.includes(E),x=document.createElement("div");x.className=`mmChip${b.includes(E)?" on":""}${L?" preferred":""}`,l(g.icon(E),x,!0),x.append(g.label(E));let $=nn("mmStar","\u2605");$.title=L?"Preferred, click to remove":`Prefer this ${g.noun}`,$.onclick=I=>{I.stopPropagation(),L?v.splice(v.indexOf(E),1):(v.push(E),b.length>0&&!b.includes(E)&&b.push(E)),d(g)},x.append($),x.onclick=()=>{let I=b.indexOf(E);I!==-1?(b.splice(I,1),L&&v.splice(v.indexOf(E),1)):b.length===0?b.push(...new Set([...v,E])):b.push(E),d(g)},k.append(x)}c(g)},h=()=>{a("mmRegions",Object.entries(Kf).map(([g,b])=>({value:g,label:b})),t.regions),d({gridId:"mmModes",boxId:"mmModeRanks",noun:"mode",values:Zy,picked:t.modes,preferred:t.preferredModes,label:g=>g,icon:()=>null}),d({gridId:"mmMaps",boxId:"mmMapRanks",noun:"map",values:Wf,picked:t.maps,preferred:t.preferredMaps,label:g=>Qy[g]??g,icon:Yf}),i("mmMinPlayers").value=String(t.minPlayers),i("mmMaxPlayers").value=String(t.maxPlayers),i("mmMinTime").value=String(t.minTime),i("mmSortByPlayers").checked=t.sortByPlayers,i("mmServerBrowser").checked=t.serverBrowser,i("mmAnimation").checked=t.animation,i("mmSearchAfterMatch").checked=t.searchAfterMatch};t.regions=[...t.regions],t.modes=[...t.modes],t.maps=[...t.maps],t.preferredMaps=[...t.preferredMaps],t.preferredModes=[...t.preferredModes],h();let p=(g,b,v,k)=>{let E=Number.parseInt(i(g).value,10);return Number.isNaN(E)?k:Math.min(v,Math.max(b,E))},m=new AbortController,f=()=>{m.abort(),o.remove(),this.saveFilter({...t,minPlayers:p("mmMinPlayers",0,7,on.minPlayers),maxPlayers:p("mmMaxPlayers",0,7,on.maxPlayers),minTime:p("mmMinTime",0,480,on.minTime),sortByPlayers:i("mmSortByPlayers").checked,serverBrowser:i("mmServerBrowser").checked,animation:i("mmAnimation").checked,searchAfterMatch:i("mmSearchAfterMatch").checked})};i("mmDone").onclick=f,i("mmReset").onclick=()=>{Object.assign(t,on,{regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[]}),h()},o.addEventListener("mousedown",g=>{g.target===o&&f()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),f())},{signal:m.signal,capture:!0}),document.body.append(o)}},u1=new Jc});var ed=we((DE,p1)=>{p1.exports=`#uiBase.onMenu #spectateUI{display:block!important}#uiBase.onCompMenu.onMenu #specTimer,#uiBase.onMenu #specGMessage,#uiBase.onMenu #spec1,#uiBase.onMenu #specGameInfo,#uiBase.onMenu #spec0,#uiBase.onMenu #specControlHolder,#uiBase.onMenu #specNames{display:none!important}#uiBase.onMenu #spectateUI>#spectateHUD{box-sizing:border-box;display:flex!important;justify-content:center;height:.5rem;white-space:nowrap;width:max-content;position:fixed;top:calc(50% + 140px)}#uiBase.onMenu #spectateHUD #specGMessage{top:0}#uiBase.onMenu #spectateUI>#spectateHUD{z-index:1;transform:unset}#uiBase.onMenu .spectateInfo{position:fixed;top:calc(40% - 105px);left:50%;transform:translate(-50%,-50%)}#uiBase.onMenu #spectateUI div .spectateInfo #specTimer{background-color:#0000;padding:0 25px;font-size:42px;border-radius:.5em}#uiBase.onMenu #specKPDContr{display:none}#uiBase.onMenu #spectateUI div#specStats{position:absolute;top:calc(50% + 13em);left:50%;transform:translate(-50%);z-index:1}#uiBase.onMenu #spectateUI div#specStats:before{content:"Spectating";position:absolute;bottom:100%;left:50%;transform:translate(-50%);font-size:1.2em;padding-bottom:.5em} +`});var od={};A(od,{default:()=>h1});var Jf,Xf,td,h1,sd=w(()=>{"use strict";Jf=ue(ed(),1);D();Xf="kute_menuTimerCSS",td=class{constructor(){u.settings.toggleMenuTimer=e=>this.toggle(e),this.toggle(u.settings.data.menuTimer!==!1)}toggle(e){let t=document.getElementById(Xf);if(!e){t?.remove();return}if(t)return;let o=document.createElement("style");o.id=Xf,o.textContent=Jf.default,document.head.append(o)}},h1=new td});var id={};A(id,{default:()=>y1});function Qf(s){let e=/loadUserMod\(\s*(["`])(.*?)\1\s*,\s*(["`])(.*?)\3/.exec(s);return e?{name:e[2],url:e[4]}:null}function eg(s){try{let e=new URL(s);return e.protocol!=="https:"?null:e.hostname==="krunker.io"||e.hostname.endsWith(".krunker.io")?e.href:e.hostname==="dropbox.com"||e.hostname==="www.dropbox.com"?(e.hostname="dl.dropboxusercontent.com",e.search="",e.href):null}catch{return null}}function v1(s){return`${s.replace(/[\u0000-\u001f<>:"/\\|?*]/g,"").replace(/\s+/g," ").trim().replace(/[ .]+$/,"").slice(0,80)||"mod"}.zip`}async function w1(s){let e=await fetch(s);if(e.status===403||e.status===404)throw new Error("This mod's file is gone, its creator removed it");if(!e.ok)throw new Error(`The mod server answered ${e.status}`);if(Number(e.headers.get("content-length")??0)>Zf)throw new Error("That mod is too large");let t=await e.blob();if(t.size>Zf)throw new Error("That mod is too large");let o=new Uint8Array(await t.slice(0,2).arrayBuffer());if(o[0]!==80||o[1]!==75)throw new Error("That mod is not a zip file");return t}function k1(s,e){let t=document.createElement("a");t.href=URL.createObjectURL(s),t.download=e,t.click(),setTimeout(()=>URL.revokeObjectURL(t.href),6e4)}function tg(s,e,t,o){let n=!1;s.addEventListener("click",r=>{if(r.stopPropagation(),n)return;n=!0,e.style.color=nd.busy,e.textContent="hourglass_top";let i=v1(t);w1(o).then(a=>{k1(a,i),e.style.color=nd.done,e.textContent="download_done",u.showNotification(`Saved ${i} to your Downloads folder`,!1,4)}).catch(a=>{e.style.color=nd.failed,e.textContent="error_outline",u.showNotification(a instanceof TypeError?"Could not download the mod":a.message,!1,4)}).finally(()=>{n=!1})})}function og(s){let e=document.createElement("span");return e.className="material-icons",e.style.cssText=s,e.textContent="download",e}var rn,Zf,m1,f1,g1,b1,nd,rd,y1,ad=w(()=>{"use strict";D();rn="data-kute-mod",Zf=300*1024*1024,m1='[onclick^="downloadPack"]',f1="font-size:70px;color:#fff;",g1="position:absolute;right:30px;bottom:92px;box-sizing:content-box;width:240px;height:37px;padding:10px 6px 6px;border:3px solid #35e0e8;border-radius:6px;background:rgba(0,0,0,0.6);color:#fff;font-size:21px;text-align:center;cursor:pointer;",b1="font-size:32px;color:#fff;vertical-align:top;margin-top:-3px;margin-left:5px;",nd={busy:"#777",done:"#35e0e8",failed:"#ff7a7a"};rd=class{constructor(){this.pending=null,this.observer=new MutationObserver(()=>{this.pending===null&&(this.pending=setTimeout(()=>this.scan(),150))});let e=document.getElementById("menuWindow");e&&(this.observer.observe(e,{childList:!0,subtree:!0}),this.scan())}scan(){this.pending=null;let e=document.getElementById("menuWindow");if(!e)return;let t=[];for(let r of e.querySelectorAll('.mapActionB[onclick^="loadUserMod"]')){let i=r.parentElement;if(!i||i.querySelector(`[${rn}], ${m1}`))continue;let a=Qf(r.getAttribute("onclick")??""),l=a&&eg(a.url);a&&l&&t.push([i,this.listButton(a.name,l)])}let o=document.getElementById("bigMFeatPBtn"),n=o?.parentElement;if(o&&n&&!n.querySelector(`[${rn}]`)){let r=Qf(o.getAttribute("onclick")??""),i=r&&eg(r.url);r&&i&&t.push([n,[this.featuredButton(r.name,i)]])}if(t.length!==0){this.observer.disconnect();for(let[r,i]of t)r.append(...i);this.observer.observe(e,{childList:!0,subtree:!0})}}listButton(e,t){let o=document.createElement("div");o.className="mapActionSep",o.setAttribute(rn,"");let n=document.createElement("div");n.className="mapActionB",n.title="Download",n.setAttribute(rn,"");let r=og(f1);return n.append(r),tg(n,r,e,t),[o,n]}featuredButton(e,t){let o=document.createElement("div");o.setAttribute(rn,""),o.style.cssText=g1;let n=og(b1);return o.append("Download ",n),tg(o,n,e,t),o}},y1=new rd});var dd={};A(dd,{default:()=>A1});function Cr(s,e,t){return Math.min(t,Math.max(e,s))}function ld(s,e){let t=parseFloat(localStorage.getItem("kro_setngss_"+s)??"");return Number.isFinite(t)&&t>0?t:e}function ig(s,e){let t=s.createProgram();for(let[o,n]of[[s.VERTEX_SHADER,C1],[s.FRAGMENT_SHADER,e]]){let r=s.createShader(o);if(!r)return null;s.shaderSource(r,n),s.compileShader(r),s.attachShader(t,r)}return s.linkProgram(t),s.getProgramParameter(t,s.LINK_STATUS)?t:null}var x1,sg,S1,E1,ng,$1,rg,C1,M1,T1,cd,A1,ud=w(()=>{"use strict";D();as();x1="kuteMotionBlur",sg=1e3/60,S1=.4,E1=.002,ng=.2,$1=2,rg=.0024,C1=`#version 300 es void main(){ vec2 p = vec2((gl_VertexID << 1) & 2, gl_VertexID & 2); gl_Position = vec4(p * 2.0 - 1.0, 0.0, 1.0); -}`,I1=s=>`#version 300 es +}`,M1=s=>`#version 300 es precision highp float; uniform sampler2D source; out vec4 color; @@ -1249,15 +1247,15 @@ void main(){ ivec2 p = ivec2(gl_FragCoord.xy); vec3 c = texelFetch(source, ivec2(p.x, size.y - 1 - p.y), 0).rgb; color = vec4(pow(c, vec3(${s})), 1.0); -}`,N1=s=>`#version 300 es +}`,T1=s=>`#version 300 es precision highp float; uniform sampler2D history; out vec4 color; void main(){ color = vec4(pow(texelFetch(history, ivec2(gl_FragCoord.xy), 0).rgb, vec3(1.0 / ${s})), 1.0); -}`;hd=class{constructor(){this.enabled=!1,this.running=!1,this.moveX=0,this.moveY=0,this.scaleX=0,this.scaleY=0,this.weight=0,this.lastFrame=0,this.hasHistory=!1,this.game=null,this.overlay=null,this.gl=null,this.accumulate=null,this.present=null,this.source=null,this.history=null,this.historyBuffer=null,this.historyFormat=0,this.unsupported=!1,this.onMouseMove=e=>{document.pointerLockElement!==null&&(this.moveX+=e.movementX,this.moveY+=e.movementY,this.running||(this.running=!0,this.lastFrame=0,this.readScale(),Tn(this.onFrameEnd)))},this.onPointerLockChange=()=>this.stop(),this.onFrameEnd=e=>this.frame(e),this.onContextLost=()=>this.release(),d.settings.toggleMotionBlur=e=>this.toggle(e),this.toggle(!!d.settings.data.motionBlur)}toggle(e){if(e!==this.enabled){if(this.enabled=e,e){window.addEventListener("mousemove",this.onMouseMove,!0),document.addEventListener("pointerlockchange",this.onPointerLockChange);return}window.removeEventListener("mousemove",this.onMouseMove,!0),document.removeEventListener("pointerlockchange",this.onPointerLockChange),this.stop(),this.unsupported=!1,this.gl?.getExtension("WEBGL_lose_context")?.loseContext(),this.release(),this.game=null}}stop(){this.running&&Tn(null),this.running=!1,this.moveX=0,this.moveY=0,this.weight=0,this.hasHistory=!1,this.overlay&&(this.overlay.style.display="none")}release(){this.overlay?.removeEventListener("webglcontextlost",this.onContextLost),this.overlay?.remove(),this.overlay=null,this.gl=null,this.accumulate=null,this.present=null,this.source=null,this.history=null,this.historyBuffer=null,this.hasHistory=!1}readScale(){let e=Mr(pd("fov",100),10,170)*Math.PI/180,t=.5/Math.tan(e/2);this.scaleX=dg*pd("sensitivityX",1)*t,this.scaleY=dg*pd("sensitivityY",1)*t}createContext(){let e=document.createElement("canvas");e.id=T1,e.style.cssText="position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;contain:strict;display:none";let t=e.getContext("webgl2",{alpha:!1,antialias:!1,depth:!1,stencil:!1,preserveDrawingBuffer:!1});if(!t)return!1;let o=!!(t.getExtension("EXT_color_buffer_float")||t.getExtension("EXT_color_buffer_half_float")),n=o?"2.2":"1.0",r=ug(t,I1(n)),i=ug(t,N1(n));if(!r||!i)return!1;t.useProgram(r),t.uniform1i(t.getUniformLocation(r,"source"),0),t.useProgram(i),t.uniform1i(t.getUniformLocation(i,"history"),1);let a=t.createTexture();t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,a),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let l=t.createTexture();t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,l),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let c=t.createFramebuffer();return t.blendFunc(t.CONSTANT_ALPHA,t.ONE_MINUS_CONSTANT_ALPHA),e.addEventListener("webglcontextlost",this.onContextLost),this.overlay=e,this.gl=t,this.accumulate=r,this.present=i,this.source=a,this.history=l,this.historyBuffer=c,this.historyFormat=o?t.RGBA16F:t.RGBA8,!0}attach(){this.game?.isConnected||(this.game=document.querySelector("body > canvas:not([id])"));let{game:e}=this;if(!e)return!1;if(!this.overlay&&(this.unsupported||!this.createContext()))return this.unsupported=!0,!1;let{overlay:t,gl:o}=this;return!t||!o?!1:(t.previousElementSibling!==e&&e.after(t),(t.width!==e.width||t.height!==e.height)&&(t.width=e.width,t.height=e.height,o.viewport(0,0,e.width,e.height),o.activeTexture(o.TEXTURE1),o.texImage2D(o.TEXTURE_2D,0,this.historyFormat,e.width,e.height,0,o.RGBA,this.historyFormat===o.RGBA8?o.UNSIGNED_BYTE:o.HALF_FLOAT,null),o.bindFramebuffer(o.FRAMEBUFFER,this.historyBuffer),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,this.history,0),this.hasHistory=!1),!0)}frame(e){let t=this.lastFrame?Mr(e-this.lastFrame,1,100):lg;this.lastFrame=e;let o=Math.hypot(this.moveX*this.scaleX,this.moveY*this.scaleY)*(1e3/t);this.moveX=0,this.moveY=0;let n=Mr((o-cg)/(R1-cg),0,1),i=Mr(Number(d.settings.data.motionBlurStrength)||0,0,100)/100*A1*n*n*(3-2*n);if(this.weight+=(i-this.weight)*(1-Math.exp(-t/(i>this.weight?6:12))),this.weight{hg=`#kuteNukeCounter{position:absolute;left:94%;top:50%;transform:translate(-50%,-50%);z-index:10;display:flex;align-items:center;gap:.3em;font-family:GameFont,monospace;font-size:26px;color:#fff;white-space:nowrap;pointer-events:none;text-shadow:1px 1px 3px rgba(0,0,0,.9)}#uiBase.onMenu #kuteNukeCounter{display:none}#kuteNukeCounter.nukeBg{padding:.2em .5em;border-radius:.25em;background:#00000059}.nukeIcon{color:#ffc147}.nukeGoal{color:#fff9}#kuteNukeCounter.nukeGoalMet .nukeCount{color:#9eeb56}@keyframes kuteNukeGain{0%{opacity:0;transform:scale(.6)}12%{opacity:1;transform:scale(1)}80%{opacity:1}to{opacity:0}}.nukeGain{color:#9eeb56;animation:kuteNukeGain 8s ease forwards} -`});var mg=we((ZE,z1)=>{z1.exports='

      Nuke Counter

      Your nuke total, in game. It updates when a match ends
      Where it sits and how big it is belongs to the HUD editor
      Place it
      Done
      '});var vd={};A(vd,{default:()=>j1});function K1(s,e,t){return Math.min(t,Math.max(e,Number(s)||0))}function gd(s){return s.toLocaleString("en-US")}var H1,O1,F1,D1,fg,q1,bd,j1,wd=w(()=>{"use strict";pg();F();H1={goal:0,background:!0},O1="https://gapi.svc.krunker.io/players/",F1=2e3,D1=3e4,fg=[5e3,2e4],q1=8e3;bd=class{constructor(){this.overlay=null,this.nukes=null,this.nukesFor="",this.noStat=!1,this.fetching=!1,this.lastTry=0,this.endWasUp=!1,this.tick=null,this.commitTimers=[],d.nukeCounter={showOptions:()=>this.showOptions()},d.settings.toggleNukeCounter=e=>this.toggle(e),this.toggle(!!d.settings.data.nukeCounter)}accountName(){try{return window.localStorage.getItem("krunker_username")??""}catch{return""}}get config(){return{...H1,...d.settings.data.nukeCounterConfig}}saveConfig(e){d.settings.data.nukeCounterConfig=e,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(e)}`)}toggle(e){if(!e){this.destroy();return}if(!document.querySelector("#kuteNukeCounterCSS")){let t=document.createElement("style");t.id="kuteNukeCounterCSS",t.textContent=hg,document.head.append(t)}this.inject(),this.nukes===null&&this.refresh(),this.tick??=setInterval(()=>this.onTick(),F1)}destroy(){this.tick!==null&&(clearInterval(this.tick),this.tick=null);for(let e of this.commitTimers)clearTimeout(e);this.commitTimers=[],this.overlay?.remove(),this.overlay=null,document.querySelector("#kuteNukeCounterCSS")?.remove(),this.endWasUp=!1}inject(){if(!this.accountName()||this.overlay?.isConnected)return;this.overlay?.remove();let e=document.createElement("div");e.id="kuteNukeCounter",e.innerHTML='\u2622\u2014',(document.querySelector("#uiBase")??document.body).append(e),this.overlay=e,this.applyConfig(),this.render()}applyConfig(){this.overlay?.classList.toggle("nukeBg",this.config.background)}render(){let{overlay:e}=this;if(!e)return;let{goal:t}=this.config,o=e.querySelector(".nukeCount"),n=e.querySelector(".nukeGoal");o&&(o.textContent=this.nukes===null?"\u2014":gd(this.nukes)),n&&(n.style.display=t>0?"":"none",n.textContent=`/ ${gd(t)}`),e.classList.toggle("nukeGoalMet",t>0&&this.nukes!==null&&this.nukes>=t)}showGain(e){let{overlay:t}=this;if(!t||e<=0)return;t.querySelector(".nukeGain")?.remove();let o=document.createElement("span");o.className="nukeGain",o.textContent=`+${gd(e)}`,t.append(o),setTimeout(()=>o.remove(),q1)}refresh(){let e=this.accountName();!e||this.fetching||(this.fetching=!0,this.lastTry=Date.now(),window.fetch(O1+encodeURIComponent(e),{credentials:"omit",signal:AbortSignal.timeout(1e4)}).then(t=>t.ok?t.json():null).then(t=>{let o=t?.data?.player_stats?.n;if(typeof o=="number"){let n=this.nukes===null||this.nukesFor!==e?0:o-this.nukes;this.nukes=o,this.noStat=!1,this.nukesFor=e,this.render(),this.showGain(n)}else t&&(this.noStat=!0,this.nukesFor=e)}).catch(()=>{}).finally(()=>{this.fetching=!1}))}onTick(){this.inject(),this.accountName()!==this.nukesFor&&(this.nukes!==null||this.noStat)&&(this.nukes=null,this.noStat=!1,this.lastTry=0,this.render()),this.nukes===null&&!this.noStat&&Date.now()-this.lastTry>D1&&this.refresh();let t=document.querySelector("#endUI"),o=!!t&&t.style.display!=="none";o&&!this.endWasUp&&this.commitTimers.length===0&&(this.commitTimers=fg.map((n,r)=>setTimeout(()=>{r===fg.length-1&&(this.commitTimers=[]),this.refresh()},n))),this.endWasUp=o}async showOptions(){let e=await Promise.resolve().then(()=>ue(mg(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=u=>r.querySelector(`#${u}`),a=()=>{d.settings.data.nukeCounterConfig=t,this.applyConfig(),this.render()};i("nkGoalInput").value=String(t.goal),i("nkBackground").checked=t.background,i("nkGoalInput").oninput=u=>{let h=Number.parseInt(u.target.value,10);t.goal=Number.isNaN(h)?0:K1(h,0,1e6),a()},i("nkBackground").onchange=u=>{t.background=u.target.checked,a()};let l=new AbortController,c=()=>{l.abort(),o.remove(),this.saveConfig(t)};i("nkDone").onclick=c,i("nkPlace").onclick=()=>{c(),d.hudEditor?.edit()},o.addEventListener("mousedown",u=>{u.target===o&&c()}),document.addEventListener("keydown",u=>{u.key==="Escape"&&(u.stopPropagation(),c())},{signal:l.signal,capture:!0}),document.body.append(o)}},j1=new bd});var gg=we((t8,U1)=>{U1.exports=`#kute-rank-list-btn{position:absolute;top:15px;right:30px;background-color:#5ce05a;color:#000;font-family:GameFont,sans-serif;font-size:14px;font-weight:700;padding:5px 15px;border-radius:4px;letter-spacing:1px;cursor:pointer;transition:transform .2s,background-color .2s;display:flex;align-items:center;z-index:10;text-transform:uppercase;box-shadow:0 2px 4px #0006}#kute-rank-list-btn:hover{transform:scale(1.05);background-color:#6efc6c;color:#000}#kute-rank-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000d9;z-index:99999;display:flex;justify-content:center;align-items:center;backdrop-filter:blur(4px)}.rank-popup-content{background:#151515;border:2px solid #333;border-top:4px solid #5ce05a;width:700px;max-width:90%;max-height:85vh;border-radius:8px;box-shadow:0 10px 40px #000c;display:flex;flex-direction:column;overflow:hidden;animation:popIn .3s cubic-bezier(.18,.89,.32,1.28)}@keyframes popIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.rank-popup-header{padding:20px;background:#ffffff08;border-bottom:2px solid rgba(255,255,255,.05);display:flex;justify-content:space-between;align-items:center}.rank-popup-header h2{margin:0;color:#fff;font-family:GameFont,sans-serif;font-size:24px;letter-spacing:1px}.rank-popup-close{font-size:24px;color:#aaa;cursor:pointer;font-weight:700;line-height:1}.rank-popup-close:hover{color:#eb5656}.rank-grid-container{padding:20px;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.rank-grid-item{background:#ffffff0d;padding:10px;border-radius:6px;display:flex;align-items:center;gap:12px;border:1px solid transparent}.rank-grid-item:hover{background:#ffffff1a;border-color:#fff3}.rank-grid-item img{height:45px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5))}.r-details{display:flex;flex-direction:column}.r-name{font-family:GameFont,sans-serif;font-size:16px;font-weight:700;margin-bottom:2px;text-shadow:1px 1px 0 #000}.r-elo{font-family:monospace;color:#888;font-size:13px;background:#0000004d;padding:2px 6px;border-radius:4px;display:inline-block;width:max-content}.rank-grid-container::-webkit-scrollbar{width:8px}.rank-grid-container::-webkit-scrollbar-thumb{background:#444;border-radius:4px}.rank-grid-container::-webkit-scrollbar-thumb:hover{background:#5ce05a}#kute-elo-tracker{width:100%;margin-top:5px;margin-bottom:10px;background:#0006;padding:8px 12px;border-radius:6px;border:1px solid rgba(255,255,255,.08);box-sizing:border-box}.elo-info-row{display:flex;align-items:center;gap:15px;justify-content:space-between}.elo-rank-img{height:28px;width:auto;display:block;margin-bottom:2px;filter:drop-shadow(0px 0px 3px rgba(0,0,0,.5))}.rank-current-container,.rank-next-container{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#bbb;font-family:GameFont,sans-serif;font-size:10px;line-height:1;min-width:50px}.rank-next-container span,.rank-current-container span{color:#fff;text-transform:uppercase;font-weight:700;letter-spacing:.5px}#kute-rank-list-btn span{font-size:16px!important;vertical-align:middle;margin-right:4px}.elo-progress-bar-bg{flex-grow:1;height:22px;background:#151515;border-radius:4px;position:relative;overflow:hidden;box-shadow:inset 0 2px 5px #00000080;border:1px solid #333}.elo-progress-bar-fill{height:100%;background-color:#fb8c00;background-image:linear-gradient(180deg,#fff3,#fff0);transition:width .8s cubic-bezier(.22,1,.36,1);box-shadow:0 0 10px #fb8c0066;position:relative}.elo-progress-bar-fill:after{content:"";position:absolute;right:0;top:0;bottom:0;width:1px;background:#fff;opacity:.7;box-shadow:0 0 5px #fff}.rank-name{margin-bottom:2px!important}.elo-progress-text{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;align-items:center;justify-content:center;color:#fff;text-shadow:1px 1px 2px #000,0 0 4px #000;font-weight:700;font-family:GameFont,sans-serif;font-size:14px;z-index:5;letter-spacing:1px}.rank-and-stats{justify-content:flex-start;gap:5px}.season-banner.svelte-s4rbwd{right:150px!important} -`});var yd={};A(yd,{default:()=>G1});var kd,G1,xd=w(()=>{"use strict";Ae();kd=class{constructor(){this.ranks=[{rank:"Unranked",elo:null,color:"#FFFFFF",image:"rank_unranked.svg"},{rank:"Bronze 1",elo:0,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Bronze 2",elo:200,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Bronze 3",elo:400,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Silver 1",elo:700,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Silver 2",elo:900,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Silver 3",elo:1100,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Gold 1",elo:1300,color:"#FFD700",image:"rank_gold.svg"},{rank:"Gold 2",elo:1600,color:"#FFD700",image:"rank_gold.svg"},{rank:"Gold 3",elo:2e3,color:"#FFD700",image:"rank_gold.svg"},{rank:"Platinum",elo:2300,color:"#4B69FF",image:"rank_platinum.svg"},{rank:"Diamond",elo:3e3,color:"#4B69FF",image:"rank_diamond.svg"},{rank:"Master",elo:3300,color:"#EE7032",image:"rank_master.svg"},{rank:"Kracked",elo:4700,color:"#FF0000",image:"rank_kracked.svg"}],this.observer=new MutationObserver(()=>this.checkForMenu());let e=window.openRankedMenu;window.openRankedMenu=()=>{e(),this.observer.observe(U(".rankedMenuModal"),{childList:!0,subtree:!0});let t=setInterval(()=>{document.querySelector(".rankedMenuModal")||(clearInterval(t),this.observer.disconnect())},5e3)},Promise.resolve().then(()=>ue(gg(),1)).then(t=>{let o=document.createElement("style");o.textContent=t.default,document.head.append(o)})}checkForMenu(){let e=document.querySelector(".rank-card"),t=document.querySelector(".rank-and-stats");e&&t&&(t.querySelector("#kute-elo-tracker")||this.injectBar(t),e.querySelector("#kute-rank-list-btn")||this.injectRankListButton(e))}injectRankListButton(e){let t=document.createElement("div");t.id="kute-rank-list-btn",t.className="season-banner",t.innerHTML='list Ranks',t.onclick=()=>this.openPopup(),window.getComputedStyle(e).position==="static"&&(e.style.position="relative"),e.appendChild(t)}openPopup(){if(document.getElementById("kute-rank-overlay"))return;let e="";for(let o of this.ranks)e+=` +}`;cd=class{constructor(){this.enabled=!1,this.running=!1,this.moveX=0,this.moveY=0,this.scaleX=0,this.scaleY=0,this.weight=0,this.lastFrame=0,this.hasHistory=!1,this.game=null,this.overlay=null,this.gl=null,this.accumulate=null,this.present=null,this.source=null,this.history=null,this.historyBuffer=null,this.historyFormat=0,this.unsupported=!1,this.onMouseMove=e=>{document.pointerLockElement!==null&&(this.moveX+=e.movementX,this.moveY+=e.movementY,this.running||(this.running=!0,this.lastFrame=0,this.readScale(),Mn(this.onFrameEnd)))},this.onPointerLockChange=()=>this.stop(),this.onFrameEnd=e=>this.frame(e),this.onContextLost=()=>this.release(),u.settings.toggleMotionBlur=e=>this.toggle(e),this.toggle(!!u.settings.data.motionBlur)}toggle(e){if(e!==this.enabled){if(this.enabled=e,e){window.addEventListener("mousemove",this.onMouseMove,!0),document.addEventListener("pointerlockchange",this.onPointerLockChange);return}window.removeEventListener("mousemove",this.onMouseMove,!0),document.removeEventListener("pointerlockchange",this.onPointerLockChange),this.stop(),this.unsupported=!1,this.gl?.getExtension("WEBGL_lose_context")?.loseContext(),this.release(),this.game=null}}stop(){this.running&&Mn(null),this.running=!1,this.moveX=0,this.moveY=0,this.weight=0,this.hasHistory=!1,this.overlay&&(this.overlay.style.display="none")}release(){this.overlay?.removeEventListener("webglcontextlost",this.onContextLost),this.overlay?.remove(),this.overlay=null,this.gl=null,this.accumulate=null,this.present=null,this.source=null,this.history=null,this.historyBuffer=null,this.hasHistory=!1}readScale(){let e=Cr(ld("fov",100),10,170)*Math.PI/180,t=.5/Math.tan(e/2);this.scaleX=rg*ld("sensitivityX",1)*t,this.scaleY=rg*ld("sensitivityY",1)*t}createContext(){let e=document.createElement("canvas");e.id=x1,e.style.cssText="position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;contain:strict;display:none";let t=e.getContext("webgl2",{alpha:!1,antialias:!1,depth:!1,stencil:!1,preserveDrawingBuffer:!1});if(!t)return!1;let o=!!(t.getExtension("EXT_color_buffer_float")||t.getExtension("EXT_color_buffer_half_float")),n=o?"2.2":"1.0",r=ig(t,M1(n)),i=ig(t,T1(n));if(!r||!i)return!1;t.useProgram(r),t.uniform1i(t.getUniformLocation(r,"source"),0),t.useProgram(i),t.uniform1i(t.getUniformLocation(i,"history"),1);let a=t.createTexture();t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,a),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let l=t.createTexture();t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,l),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let c=t.createFramebuffer();return t.blendFunc(t.CONSTANT_ALPHA,t.ONE_MINUS_CONSTANT_ALPHA),e.addEventListener("webglcontextlost",this.onContextLost),this.overlay=e,this.gl=t,this.accumulate=r,this.present=i,this.source=a,this.history=l,this.historyBuffer=c,this.historyFormat=o?t.RGBA16F:t.RGBA8,!0}attach(){this.game?.isConnected||(this.game=document.querySelector("body > canvas:not([id])"));let{game:e}=this;if(!e)return!1;if(!this.overlay&&(this.unsupported||!this.createContext()))return this.unsupported=!0,!1;let{overlay:t,gl:o}=this;return!t||!o?!1:(t.previousElementSibling!==e&&e.after(t),(t.width!==e.width||t.height!==e.height)&&(t.width=e.width,t.height=e.height,o.viewport(0,0,e.width,e.height),o.activeTexture(o.TEXTURE1),o.texImage2D(o.TEXTURE_2D,0,this.historyFormat,e.width,e.height,0,o.RGBA,this.historyFormat===o.RGBA8?o.UNSIGNED_BYTE:o.HALF_FLOAT,null),o.bindFramebuffer(o.FRAMEBUFFER,this.historyBuffer),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,this.history,0),this.hasHistory=!1),!0)}frame(e){let t=this.lastFrame?Cr(e-this.lastFrame,1,100):sg;this.lastFrame=e;let o=Math.hypot(this.moveX*this.scaleX,this.moveY*this.scaleY)*(1e3/t);this.moveX=0,this.moveY=0;let n=Cr((o-ng)/($1-ng),0,1),i=Cr(Number(u.settings.data.motionBlurStrength)||0,0,100)/100*S1*n*n*(3-2*n);if(this.weight+=(i-this.weight)*(1-Math.exp(-t/(i>this.weight?6:12))),this.weight{lg=`#kuteNukeCounter{position:absolute;left:94%;top:50%;transform:translate(-50%,-50%);z-index:10;display:flex;align-items:center;gap:.3em;font-family:GameFont,monospace;font-size:26px;color:#fff;white-space:nowrap;pointer-events:none;text-shadow:1px 1px 3px rgba(0,0,0,.9)}#uiBase.onMenu #kuteNukeCounter{display:none}#kuteNukeCounter.nukeBg{padding:.2em .5em;border-radius:.25em;background:#00000059}.nukeIcon{color:#ffc147}.nukeGoal{color:#fff9}#kuteNukeCounter.nukeGoalMet .nukeCount{color:#9eeb56}@keyframes kuteNukeGain{0%{opacity:0;transform:scale(.6)}12%{opacity:1;transform:scale(1)}80%{opacity:1}to{opacity:0}}.nukeGain{color:#9eeb56;animation:kuteNukeGain 8s ease forwards} +`});var cg=we((GE,R1)=>{R1.exports='

      Nuke Counter

      Your nuke total, in game. It updates when a match ends
      Where it sits and how big it is belongs to the HUD editor
      Place it
      Done
      '});var md={};A(md,{default:()=>H1});function z1(s,e,t){return Math.min(t,Math.max(e,Number(s)||0))}function pd(s){return s.toLocaleString("en-US")}var P1,I1,N1,_1,dg,B1,hd,H1,fd=w(()=>{"use strict";ag();D();P1={goal:0,background:!0},I1="https://gapi.svc.krunker.io/players/",N1=2e3,_1=3e4,dg=[5e3,2e4],B1=8e3;hd=class{constructor(){this.overlay=null,this.nukes=null,this.nukesFor="",this.noStat=!1,this.fetching=!1,this.lastTry=0,this.endWasUp=!1,this.tick=null,this.commitTimers=[],u.nukeCounter={showOptions:()=>this.showOptions()},u.settings.toggleNukeCounter=e=>this.toggle(e),this.toggle(!!u.settings.data.nukeCounter)}accountName(){try{return window.localStorage.getItem("krunker_username")??""}catch{return""}}get config(){return{...P1,...u.settings.data.nukeCounterConfig}}saveConfig(e){u.settings.data.nukeCounterConfig=e,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(e)}`)}toggle(e){if(!e){this.destroy();return}if(!document.querySelector("#kuteNukeCounterCSS")){let t=document.createElement("style");t.id="kuteNukeCounterCSS",t.textContent=lg,document.head.append(t)}this.inject(),this.nukes===null&&this.refresh(),this.tick??=setInterval(()=>this.onTick(),N1)}destroy(){this.tick!==null&&(clearInterval(this.tick),this.tick=null);for(let e of this.commitTimers)clearTimeout(e);this.commitTimers=[],this.overlay?.remove(),this.overlay=null,document.querySelector("#kuteNukeCounterCSS")?.remove(),this.endWasUp=!1}inject(){if(!this.accountName()||this.overlay?.isConnected)return;this.overlay?.remove();let e=document.createElement("div");e.id="kuteNukeCounter",e.innerHTML='\u2622\u2014',(document.querySelector("#uiBase")??document.body).append(e),this.overlay=e,this.applyConfig(),this.render()}applyConfig(){this.overlay?.classList.toggle("nukeBg",this.config.background)}render(){let{overlay:e}=this;if(!e)return;let{goal:t}=this.config,o=e.querySelector(".nukeCount"),n=e.querySelector(".nukeGoal");o&&(o.textContent=this.nukes===null?"\u2014":pd(this.nukes)),n&&(n.style.display=t>0?"":"none",n.textContent=`/ ${pd(t)}`),e.classList.toggle("nukeGoalMet",t>0&&this.nukes!==null&&this.nukes>=t)}showGain(e){let{overlay:t}=this;if(!t||e<=0)return;t.querySelector(".nukeGain")?.remove();let o=document.createElement("span");o.className="nukeGain",o.textContent=`+${pd(e)}`,t.append(o),setTimeout(()=>o.remove(),B1)}refresh(){let e=this.accountName();!e||this.fetching||(this.fetching=!0,this.lastTry=Date.now(),window.fetch(I1+encodeURIComponent(e),{credentials:"omit",signal:AbortSignal.timeout(1e4)}).then(t=>t.ok?t.json():null).then(t=>{let o=t?.data?.player_stats?.n;if(typeof o=="number"){let n=this.nukes===null||this.nukesFor!==e?0:o-this.nukes;this.nukes=o,this.noStat=!1,this.nukesFor=e,this.render(),this.showGain(n)}else t&&(this.noStat=!0,this.nukesFor=e)}).catch(()=>{}).finally(()=>{this.fetching=!1}))}onTick(){this.inject(),this.accountName()!==this.nukesFor&&(this.nukes!==null||this.noStat)&&(this.nukes=null,this.noStat=!1,this.lastTry=0,this.render()),this.nukes===null&&!this.noStat&&Date.now()-this.lastTry>_1&&this.refresh();let t=document.querySelector("#endUI"),o=!!t&&t.style.display!=="none";o&&!this.endWasUp&&this.commitTimers.length===0&&(this.commitTimers=dg.map((n,r)=>setTimeout(()=>{r===dg.length-1&&(this.commitTimers=[]),this.refresh()},n))),this.endWasUp=o}async showOptions(){let e=await Promise.resolve().then(()=>ue(cg(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=d=>r.querySelector(`#${d}`),a=()=>{u.settings.data.nukeCounterConfig=t,this.applyConfig(),this.render()};i("nkGoalInput").value=String(t.goal),i("nkBackground").checked=t.background,i("nkGoalInput").oninput=d=>{let h=Number.parseInt(d.target.value,10);t.goal=Number.isNaN(h)?0:z1(h,0,1e6),a()},i("nkBackground").onchange=d=>{t.background=d.target.checked,a()};let l=new AbortController,c=()=>{l.abort(),o.remove(),this.saveConfig(t)};i("nkDone").onclick=c,i("nkPlace").onclick=()=>{c(),u.hudEditor?.edit()},o.addEventListener("mousedown",d=>{d.target===o&&c()}),document.addEventListener("keydown",d=>{d.key==="Escape"&&(d.stopPropagation(),c())},{signal:l.signal,capture:!0}),document.body.append(o)}},H1=new hd});var ug=we((YE,O1)=>{O1.exports=`#kute-rank-list-btn{position:absolute;top:15px;right:30px;background-color:#5ce05a;color:#000;font-family:GameFont,sans-serif;font-size:14px;font-weight:700;padding:5px 15px;border-radius:4px;letter-spacing:1px;cursor:pointer;transition:transform .2s,background-color .2s;display:flex;align-items:center;z-index:10;text-transform:uppercase;box-shadow:0 2px 4px #0006}#kute-rank-list-btn:hover{transform:scale(1.05);background-color:#6efc6c;color:#000}#kute-rank-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000d9;z-index:99999;display:flex;justify-content:center;align-items:center;backdrop-filter:blur(4px)}.rank-popup-content{background:#151515;border:2px solid #333;border-top:4px solid #5ce05a;width:700px;max-width:90%;max-height:85vh;border-radius:8px;box-shadow:0 10px 40px #000c;display:flex;flex-direction:column;overflow:hidden;animation:popIn .3s cubic-bezier(.18,.89,.32,1.28)}@keyframes popIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.rank-popup-header{padding:20px;background:#ffffff08;border-bottom:2px solid rgba(255,255,255,.05);display:flex;justify-content:space-between;align-items:center}.rank-popup-header h2{margin:0;color:#fff;font-family:GameFont,sans-serif;font-size:24px;letter-spacing:1px}.rank-popup-close{font-size:24px;color:#aaa;cursor:pointer;font-weight:700;line-height:1}.rank-popup-close:hover{color:#eb5656}.rank-grid-container{padding:20px;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.rank-grid-item{background:#ffffff0d;padding:10px;border-radius:6px;display:flex;align-items:center;gap:12px;border:1px solid transparent}.rank-grid-item:hover{background:#ffffff1a;border-color:#fff3}.rank-grid-item img{height:45px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5))}.r-details{display:flex;flex-direction:column}.r-name{font-family:GameFont,sans-serif;font-size:16px;font-weight:700;margin-bottom:2px;text-shadow:1px 1px 0 #000}.r-elo{font-family:monospace;color:#888;font-size:13px;background:#0000004d;padding:2px 6px;border-radius:4px;display:inline-block;width:max-content}.rank-grid-container::-webkit-scrollbar{width:8px}.rank-grid-container::-webkit-scrollbar-thumb{background:#444;border-radius:4px}.rank-grid-container::-webkit-scrollbar-thumb:hover{background:#5ce05a}#kute-elo-tracker{width:100%;margin-top:5px;margin-bottom:10px;background:#0006;padding:8px 12px;border-radius:6px;border:1px solid rgba(255,255,255,.08);box-sizing:border-box}.elo-info-row{display:flex;align-items:center;gap:15px;justify-content:space-between}.elo-rank-img{height:28px;width:auto;display:block;margin-bottom:2px;filter:drop-shadow(0px 0px 3px rgba(0,0,0,.5))}.rank-current-container,.rank-next-container{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#bbb;font-family:GameFont,sans-serif;font-size:10px;line-height:1;min-width:50px}.rank-next-container span,.rank-current-container span{color:#fff;text-transform:uppercase;font-weight:700;letter-spacing:.5px}#kute-rank-list-btn span{font-size:16px!important;vertical-align:middle;margin-right:4px}.elo-progress-bar-bg{flex-grow:1;height:22px;background:#151515;border-radius:4px;position:relative;overflow:hidden;box-shadow:inset 0 2px 5px #00000080;border:1px solid #333}.elo-progress-bar-fill{height:100%;background-color:#fb8c00;background-image:linear-gradient(180deg,#fff3,#fff0);transition:width .8s cubic-bezier(.22,1,.36,1);box-shadow:0 0 10px #fb8c0066;position:relative}.elo-progress-bar-fill:after{content:"";position:absolute;right:0;top:0;bottom:0;width:1px;background:#fff;opacity:.7;box-shadow:0 0 5px #fff}.rank-name{margin-bottom:2px!important}.elo-progress-text{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;align-items:center;justify-content:center;color:#fff;text-shadow:1px 1px 2px #000,0 0 4px #000;font-weight:700;font-family:GameFont,sans-serif;font-size:14px;z-index:5;letter-spacing:1px}.rank-and-stats{justify-content:flex-start;gap:5px}.season-banner.svelte-s4rbwd{right:150px!important} +`});var bd={};A(bd,{default:()=>D1});var gd,D1,vd=w(()=>{"use strict";Ae();gd=class{constructor(){this.ranks=[{rank:"Unranked",elo:null,color:"#FFFFFF",image:"rank_unranked.svg"},{rank:"Bronze 1",elo:0,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Bronze 2",elo:200,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Bronze 3",elo:400,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Silver 1",elo:700,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Silver 2",elo:900,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Silver 3",elo:1100,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Gold 1",elo:1300,color:"#FFD700",image:"rank_gold.svg"},{rank:"Gold 2",elo:1600,color:"#FFD700",image:"rank_gold.svg"},{rank:"Gold 3",elo:2e3,color:"#FFD700",image:"rank_gold.svg"},{rank:"Platinum",elo:2300,color:"#4B69FF",image:"rank_platinum.svg"},{rank:"Diamond",elo:3e3,color:"#4B69FF",image:"rank_diamond.svg"},{rank:"Master",elo:3300,color:"#EE7032",image:"rank_master.svg"},{rank:"Kracked",elo:4700,color:"#FF0000",image:"rank_kracked.svg"}],this.observer=new MutationObserver(()=>this.checkForMenu());let e=window.openRankedMenu;window.openRankedMenu=()=>{e(),this.observer.observe(U(".rankedMenuModal"),{childList:!0,subtree:!0});let t=setInterval(()=>{document.querySelector(".rankedMenuModal")||(clearInterval(t),this.observer.disconnect())},5e3)},Promise.resolve().then(()=>ue(ug(),1)).then(t=>{let o=document.createElement("style");o.textContent=t.default,document.head.append(o)})}checkForMenu(){let e=document.querySelector(".rank-card"),t=document.querySelector(".rank-and-stats");e&&t&&(t.querySelector("#kute-elo-tracker")||this.injectBar(t),e.querySelector("#kute-rank-list-btn")||this.injectRankListButton(e))}injectRankListButton(e){let t=document.createElement("div");t.id="kute-rank-list-btn",t.className="season-banner",t.innerHTML='list Ranks',t.onclick=()=>this.openPopup(),window.getComputedStyle(e).position==="static"&&(e.style.position="relative"),e.appendChild(t)}openPopup(){if(document.getElementById("kute-rank-overlay"))return;let e="";for(let o of this.ranks)e+=`
      @@ -1290,25 +1288,25 @@ void main(){
      ${i}
      - `;let l=e.querySelector(".quick-stats");l?e.insertBefore(r,l):e.append(r)}},G1=new kd});var Ed={};A(Ed,{default:()=>Y1});var W1,V1,Sd,Y1,$d=w(()=>{"use strict";F();W1=".ranked-matchmaking-status",V1="Match found!",Sd=class{constructor(){this.found=!1,this.status=null,this.observer=new MutationObserver(()=>this.check()),d.settings.toggleRankedAlert=e=>this.toggle(e),this.toggle(!0)}toggle(e){this.observer.disconnect(),e&&(this.status=document.querySelector(W1),this.status&&(this.observer.observe(this.status,{attributes:!0,attributeFilter:["class"],childList:!0,characterData:!0,subtree:!0}),this.found=this.shown()))}shown(){return!!this.status?.classList.contains("show")&&this.status?.textContent===V1}check(){let e=this.shown();e&&!this.found&&window.chrome.webview.postMessage("bring-to-front"),this.found=e}},Y1=new Sd});var Md={};A(Md,{default:()=>X1});var Cd,X1,Td=w(()=>{"use strict";F();Ae();Cd=class{constructor(){this.ingamePing=null,this.menuPing=null,this.interval=null,this.listener=null,d.settings.toggleRealPing=e=>this.toggle(e),this.toggle(!0)}applyPingDisplay(e){e&&Object.defineProperty(e,"textContent",{set:()=>{},configurable:!0})}async toggle(e){let[t,o]=await Promise.all([$e("#pingText"),$e("#menuPingText")]);this.ingamePing=t,this.menuPing=o,e?(this.applyPingDisplay(t),this.applyPingDisplay(o),this.interval=setInterval(()=>{window.chrome.webview.postMessage("ping")},3e3),this.listener=n=>{let r=n.data?.pingInfo;r&&(t.innerText=r,o.innerText=r)},window.chrome.webview.addEventListener("message",this.listener)):(this.interval!==null&&clearInterval(this.interval),this.listener&&window.chrome.webview.removeEventListener("message",this.listener),this.interval=null,this.listener=null,Reflect.deleteProperty(t,"textContent"),Reflect.deleteProperty(o,"textContent"))}},X1=new Cd});var vg,bg=w(()=>{vg='
      '});var Ld={};A(Ld,{default:()=>Z1});var Tr,Ad,Z1,Rd=w(()=>{"use strict";bg();F();Pt();Tr=s=>window.chrome.webview.postMessage(`recovery-${s}`),Ad=class{constructor(){this.host=null,this.shadow=null,document.addEventListener("pointerlockchange",()=>{this.host&&(this.host.style.display=document.pointerLockElement?"none":"flex")}),window.chrome.webview.addEventListener("message",e=>{e.data?.recovery&&this.show(e.data.recovery)}),d.recovery&&this.show(d.recovery)}banner(e,t,o){this.host||(this.host=document.createElement("div"),this.host.style.cssText="position:fixed;top:12px;left:0;right:0;display:flex;justify-content:center;pointer-events:none;z-index:2147482000",this.shadow=this.host.attachShadow({mode:"open"}),this.shadow.innerHTML=vg,document.body.append(this.host));let{shadow:n}=this;n.querySelector("#rcTitle").textContent=e,n.querySelector("#rcBody").textContent=t;let r=n.querySelector("#rcActions");r.replaceChildren();for(let[i,a,l]of o){let c=document.createElement("div");c.className=l?"rcButton rcMain":"rcButton",c.textContent=i,c.onclick=()=>Tr(a),r.append(c)}}show(e){if(e.mode==="safe"){let t=[["Restart normally","normal",!e.canFind]];e.canFind&&t.unshift(["Find the cause","find",!0]),this.banner("Safe mode:","your userscripts, swaps, custom CSS, flags and engine tweaks are off for this start. Nothing of yours was changed.",t)}else if(e.mode==="test"){let t=`${e.suspects} ${e.suspects===1?"thing":"things"} left to check.`;e.ranFine?this.banner(`Finding the cause, test ${e.step}:`,`this test passed, ${t} Restart for the next one.`,[["Next test","next",!0],["Stop","stop"]]):e.kind==="startup"?this.banner(`Finding the cause, test ${e.step}:`,`${t} Kute restarts by itself, nothing to do.`,[["Stop","stop"]]):this.banner(`Finding the cause, test ${e.step}:`,`${t} Play as usual. After ${e.minutes} min without a crash this test passes.`,[["Stop","stop"]])}else e.mode==="result"?this.result(e).catch(t=>console.error("[kute] recovery:",t)):e.mode==="offer"&&this.offer().catch(t=>console.error("[kute] recovery:",t))}async result(e){let t=`${e.tests?.crashed??0} tests crashed, ${e.tests?.ranFine??0} ran fine.`;if(e.verdict==="notTheSetup"){let i=!await Ce({title:"Not your setup",paragraphs:["Kute crashed even with everything of yours switched off, so it is most likely a driver, the PC or another program.","A Diagnostics Report (About settings) helps us look into it.",t],stay:"Create a report",leave:"Close"});Tr("dismiss"),i&&d.diagnostics?.open();return}let o=e.culprits??[],n=o.every(i=>i.fixable),r=!await Ce({title:"Found the cause",paragraphs:[`Kute crashed with ${o.length===1?"this":"these together"} and ran fine without:`,...o.map(i=>i.label),n?"It is off for this start. Switch it off for good, or keep it and Kute starts with it again next time.":"It is off for this start. To keep it off, remove it from the file in Documents\\kute.",t],stay:n?"Switch it off":"OK",leave:"Keep it"});Tr(r&&n?"apply":"dismiss"),r&&n&&d.showNotification("Switched off",!1,3)}async offer(){let e=!await Ce({title:"Kute crashed the last times it ran",paragraphs:["Safe mode starts without your userscripts, swaps, custom CSS, flags and engine tweaks, and can find which one causes it. Nothing of yours gets changed."],stay:"Restart in safe mode",leave:"Not now"});Tr(e?"safe":"dismiss")}},Z1=new Ad});var Id={};A(Id,{default:()=>nx});var Q1,ex,tx,ox,sx,Pd,nx,Nd=w(()=>{"use strict";F();Ae();ls();Q1=2e3,ex=.25,tx=60,ox=3e3,sx=.3,Pd=class{constructor(){this.ingameFPS=null,this.menuFPS=null,this.listener=null,this.gameFPS=null,this.rawGameFPS=null,this.potentialFps=0,this.presentEnabled=!!d.settings?.data?.renderStats,this.presentFps=0,this.presentAt=0,this.showPresent=!0,this.disagreeSince=0,this.shown="",d.settings.toggleRenderFps=e=>this.toggle(e),this.toggle(!0)}presentUsable(){if(performance.now()-this.presentAt>Q1)return!1;let e=Number.parseFloat(this.rawGameFPS??"");return!Number.isFinite(e)||e<=0?!0:!(this.presentFps=ox&&(this.showPresent=!this.showPresent,this.disagreeSince=0,this.showPresent||this.explainOnce()):this.disagreeSince=e,this.render()}explainOnce(){try{if(sessionStorage.getItem("kute_presentFpsHidden"))return;sessionStorage.setItem("kute_presentFpsHidden","1")}catch{return}d.showNotification?.(d.settings?.data?.hardFlip===!1?"Present FPS needs the DXGI Swapchain Hook (Settings, Engine), which is off. Showing the game's FPS":"Present FPS is hidden: the swap chain hook does not see the game's frames on this PC, its number would be wrong. Showing the game's FPS",!1,8)}render(){let e=this.showPresent&&this.presentAt>0?`${this.gameFPS??""} ${this.presentFps}`:this.gameFPS??"";e!==this.shown&&(this.shown=e,this.ingameFPS&&(this.ingameFPS.innerText=e),this.menuFPS&&(this.menuFPS.innerText=e))}withPotential(e){let t=Number.parseFloat(e),o=ii();if(!Number.isFinite(t)||t<=0||Number(d.settings?.data?.gameFpsLimit)>0)return e;if(o>0){let n=1e3/t,r=1e3/Math.max(o,n-o);this.potentialFps=this.potentialFps?this.potentialFps+(r-this.potentialFps)*sx:r}return this.potentialFps>t?String(Math.round(this.potentialFps)):e}applyFpsDisplay(e){e&&Object.defineProperty(e,"textContent",{set:t=>{this.rawGameFPS=t,this.gameFPS=this.withPotential(t),this.evaluate()},configurable:!0})}async toggle(e){let[t,o]=await Promise.all([$e("#ingameFPS"),$e("#menuFPS")]);this.ingameFPS=t,this.menuFPS=o,e?(this.applyFpsDisplay(t),this.applyFpsDisplay(o),this.listener=n=>{let r=n.data?.fpsInfo;typeof r=="number"&&(this.presentFps=r,this.presentAt=performance.now(),this.showPresent&&this.render())},window.chrome.webview.addEventListener("message",this.listener)):(this.listener&&(window.chrome.webview.removeEventListener("message",this.listener),this.listener=null),Reflect.deleteProperty(t,"textContent"),Reflect.deleteProperty(o,"textContent"))}},nx=new Pd});var Bd={};A(Bd,{default:()=>dx});var Go,rx,ix,ax,lx,cx,wg,_d,dx,zd=w(()=>{"use strict";Ae();Go="data-kute-ping",rx=6e4,ix=1e4,ax={FRA:"de-fra",NY:"us-nj",DAL:"us-tx",SV:"us-ca-sv",BRZ:"brz",SIN:"sgp",TOK:"jb-hnd",SYD:"au-syd",MBI:"as-mb",BHN:"me-bhn",SSS:"sss"},lx={"New York":"us-nj",Dallas:"us-tx",Frankfurt:"de-fra","Silicon Valley":"us-ca-sv",Sydney:"au-syd",Tokyo:"jb-hnd",Singapore:"sgp",Mumbai:"as-mb",Brazil:"brz","Middle East":"me-bhn","EU Super Secret Servers":"sss"},cx=` + `;let l=e.querySelector(".quick-stats");l?e.insertBefore(r,l):e.append(r)}},D1=new gd});var kd={};A(kd,{default:()=>K1});var F1,q1,wd,K1,yd=w(()=>{"use strict";D();F1=".ranked-matchmaking-status",q1="Match found!",wd=class{constructor(){this.found=!1,this.status=null,this.observer=new MutationObserver(()=>this.check()),u.settings.toggleRankedAlert=e=>this.toggle(e),this.toggle(!0)}toggle(e){this.observer.disconnect(),e&&(this.status=document.querySelector(F1),this.status&&(this.observer.observe(this.status,{attributes:!0,attributeFilter:["class"],childList:!0,characterData:!0,subtree:!0}),this.found=this.shown()))}shown(){return!!this.status?.classList.contains("show")&&this.status?.textContent===q1}check(){let e=this.shown();e&&!this.found&&window.chrome.webview.postMessage("bring-to-front"),this.found=e}},K1=new wd});var Sd={};A(Sd,{default:()=>j1});var xd,j1,Ed=w(()=>{"use strict";D();Ae();xd=class{constructor(){this.ingamePing=null,this.menuPing=null,this.interval=null,this.listener=null,u.settings.toggleRealPing=e=>this.toggle(e),this.toggle(!0)}applyPingDisplay(e){e&&Object.defineProperty(e,"textContent",{set:()=>{},configurable:!0})}async toggle(e){let[t,o]=await Promise.all([$e("#pingText"),$e("#menuPingText")]);this.ingamePing=t,this.menuPing=o,e?(this.applyPingDisplay(t),this.applyPingDisplay(o),this.interval=setInterval(()=>{window.chrome.webview.postMessage("ping")},3e3),this.listener=n=>{let r=n.data?.pingInfo;r&&(t.innerText=r,o.innerText=r)},window.chrome.webview.addEventListener("message",this.listener)):(this.interval!==null&&clearInterval(this.interval),this.listener&&window.chrome.webview.removeEventListener("message",this.listener),this.interval=null,this.listener=null,Reflect.deleteProperty(t,"textContent"),Reflect.deleteProperty(o,"textContent"))}},j1=new xd});var hg,pg=w(()=>{hg='
      '});var Cd={};A(Cd,{default:()=>G1});var Mr,$d,G1,Md=w(()=>{"use strict";pg();D();Rt();Mr=s=>window.chrome.webview.postMessage(`recovery-${s}`),$d=class{constructor(){this.host=null,this.shadow=null,document.addEventListener("pointerlockchange",()=>{this.host&&(this.host.style.display=document.pointerLockElement?"none":"flex")}),window.chrome.webview.addEventListener("message",e=>{e.data?.recovery&&this.show(e.data.recovery)}),u.recovery&&this.show(u.recovery)}banner(e,t,o){this.host||(this.host=document.createElement("div"),this.host.style.cssText="position:fixed;top:12px;left:0;right:0;display:flex;justify-content:center;pointer-events:none;z-index:2147482000",this.shadow=this.host.attachShadow({mode:"open"}),this.shadow.innerHTML=hg,document.body.append(this.host));let{shadow:n}=this;n.querySelector("#rcTitle").textContent=e,n.querySelector("#rcBody").textContent=t;let r=n.querySelector("#rcActions");r.replaceChildren();for(let[i,a,l]of o){let c=document.createElement("div");c.className=l?"rcButton rcMain":"rcButton",c.textContent=i,c.onclick=()=>Mr(a),r.append(c)}}show(e){if(e.mode==="safe"){let t=[["Restart normally","normal",!e.canFind]];e.canFind&&t.unshift(["Find the cause","find",!0]),this.banner("Safe mode:","your userscripts, swaps, custom CSS, flags and engine tweaks are off for this start. Nothing of yours was changed.",t)}else if(e.mode==="test"){let t=`${e.suspects} ${e.suspects===1?"thing":"things"} left to check.`;e.ranFine?this.banner(`Finding the cause, test ${e.step}:`,`this test passed, ${t} Restart for the next one.`,[["Next test","next",!0],["Stop","stop"]]):e.kind==="startup"?this.banner(`Finding the cause, test ${e.step}:`,`${t} Kute restarts by itself, nothing to do.`,[["Stop","stop"]]):this.banner(`Finding the cause, test ${e.step}:`,`${t} Play as usual. After ${e.minutes} min without a crash this test passes.`,[["Stop","stop"]])}else e.mode==="result"?this.result(e).catch(t=>console.error("[kute] recovery:",t)):e.mode==="offer"&&this.offer().catch(t=>console.error("[kute] recovery:",t))}async result(e){let t=`${e.tests?.crashed??0} tests crashed, ${e.tests?.ranFine??0} ran fine.`;if(e.verdict==="notTheSetup"){let i=!await Ce({title:"Not your setup",paragraphs:["Kute crashed even with everything of yours switched off, so it is most likely a driver, the PC or another program.","A Diagnostics Report (About settings) helps us look into it.",t],stay:"Create a report",leave:"Close"});Mr("dismiss"),i&&u.diagnostics?.open();return}let o=e.culprits??[],n=o.every(i=>i.fixable),r=!await Ce({title:"Found the cause",paragraphs:[`Kute crashed with ${o.length===1?"this":"these together"} and ran fine without:`,...o.map(i=>i.label),n?"It is off for this start. Switch it off for good, or keep it and Kute starts with it again next time.":"It is off for this start. To keep it off, remove it from the file in Documents\\kute.",t],stay:n?"Switch it off":"OK",leave:"Keep it"});Mr(r&&n?"apply":"dismiss"),r&&n&&u.showNotification("Switched off",!1,3)}async offer(){let e=!await Ce({title:"Kute crashed the last times it ran",paragraphs:["Safe mode starts without your userscripts, swaps, custom CSS, flags and engine tweaks, and can find which one causes it. Nothing of yours gets changed."],stay:"Restart in safe mode",leave:"Not now"});Mr(e?"safe":"dismiss")}},G1=new $d});var Ad={};A(Ad,{default:()=>Z1});var W1,V1,Y1,X1,J1,Td,Z1,Ld=w(()=>{"use strict";D();Ae();as();W1=2e3,V1=.25,Y1=60,X1=3e3,J1=.3,Td=class{constructor(){this.ingameFPS=null,this.menuFPS=null,this.listener=null,this.gameFPS=null,this.rawGameFPS=null,this.potentialFps=0,this.presentEnabled=!!u.settings?.data?.renderStats,this.presentFps=0,this.presentAt=0,this.showPresent=!0,this.disagreeSince=0,this.shown="",u.settings.toggleRenderFps=e=>this.toggle(e),this.toggle(!0)}presentUsable(){if(performance.now()-this.presentAt>W1)return!1;let e=Number.parseFloat(this.rawGameFPS??"");return!Number.isFinite(e)||e<=0?!0:!(this.presentFps=X1&&(this.showPresent=!this.showPresent,this.disagreeSince=0,this.showPresent||this.explainOnce()):this.disagreeSince=e,this.render()}explainOnce(){try{if(sessionStorage.getItem("kute_presentFpsHidden"))return;sessionStorage.setItem("kute_presentFpsHidden","1")}catch{return}u.showNotification?.(u.settings?.data?.hardFlip===!1?"Present FPS needs the DXGI Swapchain Hook (Settings, Engine), which is off. Showing the game's FPS":"Present FPS is hidden: the swap chain hook does not see the game's frames on this PC, its number would be wrong. Showing the game's FPS",!1,8)}render(){let e=this.showPresent&&this.presentAt>0?`${this.gameFPS??""} ${this.presentFps}`:this.gameFPS??"";e!==this.shown&&(this.shown=e,this.ingameFPS&&(this.ingameFPS.innerText=e),this.menuFPS&&(this.menuFPS.innerText=e))}withPotential(e){let t=Number.parseFloat(e),o=ri();if(!Number.isFinite(t)||t<=0||Number(u.settings?.data?.gameFpsLimit)>0)return e;if(o>0){let n=1e3/t,r=1e3/Math.max(o,n-o);this.potentialFps=this.potentialFps?this.potentialFps+(r-this.potentialFps)*J1:r}return this.potentialFps>t?String(Math.round(this.potentialFps)):e}applyFpsDisplay(e){e&&Object.defineProperty(e,"textContent",{set:t=>{this.rawGameFPS=t,this.gameFPS=this.withPotential(t),this.evaluate()},configurable:!0})}async toggle(e){let[t,o]=await Promise.all([$e("#ingameFPS"),$e("#menuFPS")]);this.ingameFPS=t,this.menuFPS=o,e?(this.applyFpsDisplay(t),this.applyFpsDisplay(o),this.listener=n=>{let r=n.data?.fpsInfo;typeof r=="number"&&(this.presentFps=r,this.presentAt=performance.now(),this.showPresent&&this.render())},window.chrome.webview.addEventListener("message",this.listener)):(this.listener&&(window.chrome.webview.removeEventListener("message",this.listener),this.listener=null),Reflect.deleteProperty(t,"textContent"),Reflect.deleteProperty(o,"textContent"))}},Z1=new Td});var Pd={};A(Pd,{default:()=>nx});var Uo,Q1,ex,tx,ox,sx,mg,Rd,nx,Id=w(()=>{"use strict";Ae();Uo="data-kute-ping",Q1=6e4,ex=1e4,tx={FRA:"de-fra",NY:"us-nj",DAL:"us-tx",SV:"us-ca-sv",BRZ:"brz",SIN:"sgp",TOK:"jb-hnd",SYD:"au-syd",MBI:"as-mb",BHN:"me-bhn",SSS:"sss"},ox={"New York":"us-nj",Dallas:"us-tx",Frankfurt:"de-fra","Silicon Valley":"us-ca-sv",Sydney:"au-syd",Tokyo:"jb-hnd",Singapore:"sgp",Mumbai:"as-mb",Brazil:"brz","Middle East":"me-bhn","EU Super Secret Servers":"sss"},sx=` #serverHolder .settNameIn .kutePing { float: right; margin-right: 8px; color: #35e0e8; font-size: 13px; line-height: 44px; } #serverHolder .setHed .kutePing { float: right; margin-right: 14px; color: #35e0e8; font-size: 0.75em; line-height: 42px; } -`,wg=s=>s===void 0?"":`${s} ms`,_d=class{constructor(){this.pings={},this.fetchedAt=0,this.fetching=!1,this.pending=null,this.observer=new MutationObserver(()=>{this.pending===null&&(this.pending=setTimeout(()=>this.scan(),150))});let e=document.createElement("style");e.textContent=cx,document.head.append(e);let t=document.getElementById("menuWindow");t&&(this.menu=t,this.observer.observe(t,{childList:!0,subtree:!0}))}refresh(){this.fetching||Date.now()-this.fetchedAt{this.fetching=!1,this.fetchedAt=Date.now(),e&&(this.pings=e,this.menu?.querySelectorAll(".kutePing").forEach(t=>t.remove()),this.menu?.querySelectorAll(`[${Go}]`).forEach(t=>t.removeAttribute(Go)),this.scan())}))}scan(){this.pending=null;let e=document.getElementById("serverHolder");e&&(this.refresh(),Object.keys(this.pings).length!==0&&(this.observer.disconnect(),this.labelRows(e),this.sortRegions(e),this.menu&&this.observer.observe(this.menu,{childList:!0,subtree:!0})))}labelRows(e){for(let t of e.querySelectorAll(`.settNameIn:not([${Go}])`)){t.setAttribute(Go,"");let o=/checkedSwitchServer\("([A-Z]+):/.exec(t.getAttribute("onclick")??"")?.[1],n=o?this.pings[ax[o]]:void 0,r=t.querySelector(".serverPing");if(n===void 0||!r)continue;let i=document.createElement("span");i.className="kutePing",i.textContent=wg(n),r.after(i)}}sortRegions(e){let t=[];for(let n of e.children)if(n.classList.contains("setHed")){let r=Array.from(n.childNodes,a=>a.nodeType===Node.TEXT_NODE?a.textContent:"").join("").trim(),i=this.pings[lx[r]];if(i!==void 0&&!n.hasAttribute(Go)){n.setAttribute(Go,"");let a=document.createElement("span");a.className="kutePing",a.textContent=wg(i),n.querySelector(".quickJoin")?.before(a)}t.push({nodes:[n],ping:i??-1})}else t.at(-1)?.nodes.push(n);if(t.length<2)return;let o=t.map((n,r)=>({...n,index:r})).sort((n,r)=>n.ping-r.ping||n.index-r.index);if(!o.every((n,r)=>n.index===r))for(let n of o)e.append(...n.nodes)}},dx=new _d});var Od={};A(Od,{default:()=>mx});function hx(s,e){if(JSON.stringify(e)?.length>px)return!1;if(Sg.includes(s))return e===null||typeof e=="object"&&!Array.isArray(e);let t=Eg.find(o=>o.id===s);return!t||typeof e!=typeof t.defaultValue||t.options&&!t.options.includes(e)?!1:typeof e!="number"||Number.isFinite(e)}function xg(){let s=new Date;return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}var kg,yg,ux,px,Sg,Eg,Hd,mx,Fd=w(()=>{"use strict";Jo();F();To();Pt();kg="kute-settings",yg=1,ux=256*1024,px=16*1024,Sg=["hudLayout","matchmakerFilter","hotkeys","nukeCounterConfig","customSkyConfig","kuteIconSlots","kuteIconUrls"],Eg=Object.values(At).filter(s=>"defaultValue"in s);Hd=class{constructor(){d.settingsTransfer={exportFile:()=>this.export(),importFile:()=>this.pick()}}export(){let e=hu(d.settings.data),t=[...Eg.map(i=>i.id),...Sg],o=Object.fromEntries(t.filter(i=>e[i]!==void 0).map(i=>[i,e[i]])),n={format:kg,version:yg,kute:d.version,exported:xg(),settings:o},r=document.createElement("a");r.href=URL.createObjectURL(new Blob([JSON.stringify(n,null,2)],{type:"application/json"})),r.download=`kute-settings-${xg()}.json`,r.click(),setTimeout(()=>URL.revokeObjectURL(r.href),1e4),d.showNotification(`Exported ${Object.keys(o).length} settings to your Downloads folder`,!1,4)}pick(){let e=document.createElement("input");e.type="file",e.accept=".json,application/json",e.onchange=()=>{let t=e.files?.[0];t&&this.read(t).catch(o=>console.error("[kute] settings import:",o))},e.click()}async read(e){if(e.size>ux){d.showNotification("That file is too big for a Kute settings file",!1,4);return}let t=null;try{t=JSON.parse(await e.text())}catch{t=null}if(t?.format!==kg||typeof t.settings!="object"||t.settings===null){d.showNotification("That is not a Kute settings file",!1,4);return}if(typeof t.version!="number"||t.version>yg){d.showNotification("That file comes from a newer Kute, update first",!1,4);return}let o=Object.entries(t.settings).filter(([i,a])=>hx(i,a));if(o.length===0){d.showNotification("That file holds no settings this Kute knows",!1,4);return}let n=typeof t.kute=="string"?` from Kute ${t.kute}`:"";if(await Ce({title:"Import Kute settings",paragraphs:[`${o.length} settings${n} in ${e.name}.`,"They replace your client settings, HUD positions, matchmaker filters and hotkeys. Kute restarts to apply them.","Userscripts, swapper files, custom CSS and your own sky images are files in Documents\\kute and are not part of it."],stay:"Cancel",leave:"Import and restart"})){for(let[i,a]of o)d.settings.data[i]=a,window.chrome.webview.postMessage(`set-config-json ${i} ${JSON.stringify(a)}`);window.chrome.webview.postMessage("restart")}}},mx=new Hd});var qd={};A(qd,{default:()=>fx});var Dd,fx,Kd=w(()=>{"use strict";F();Dd=class{constructor(){this.originalGenList=window.windows[22].genList,this.template=document.createElement("template"),d.settings.toggleShowPing=e=>this.toggle(e),this.toggle(!0)}toggle(e){let t=this;e?window.windows[22].genList=function(){return t.modifiedGenList(this)}:window.windows[22].genList=this.originalGenList}modifiedGenList(e){let t=this.originalGenList.call(e);this.template.innerHTML=t;let o=this.template.content.querySelectorAll(".pListPing.material-icons");for(let n of o){let r=n.getAttribute("title");n.classList.remove("pListPing","material-icons"),n.removeAttribute("title"),n.textContent=`${r||"N/A"} `}return this.template.innerHTML}},fx=new Dd});var Cg,$g=w(()=>{Cg=`#kuteSpotifyOverlay{position:absolute;left:463px;bottom:23px;z-index:10;display:flex;align-items:center;gap:12px;box-sizing:border-box;width:320px;min-height:82px;padding:10px;border:1px solid rgba(29,185,84,.7);border-radius:8px;background:#0c120fe0;box-shadow:0 4px 18px #00000059;color:#fff;font-family:Arial,sans-serif;pointer-events:none}#kuteSpotifyOverlay[hidden]{display:none}#kuteSpotifyOverlay.paused{opacity:.72}#kuteSpotifyArtwork{width:60px;height:60px;flex:0 0 60px;border-radius:4px;background:#26302a;object-fit:cover}#kuteSpotifyInfo{min-width:0;flex:1 1 auto}#kuteSpotifyTitle,#kuteSpotifyArtist{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#kuteSpotifyTitle{font-size:14px;font-weight:700}#kuteSpotifyArtist{margin-top:3px;color:#b8c8bc;font-size:12px}#kuteSpotifyProgress{height:3px;margin-top:9px;border-radius:2px;background:#536258;overflow:hidden}#kuteSpotifyProgress>div{height:100%;background:#1db954;transform:scaleX(0);transform-origin:left} -`});var Tg,Mg=w(()=>{Tg='
      '});var Ud={};A(Ud,{default:()=>wx});var vx,jd,wx,Gd=w(()=>{"use strict";$g();Mg();F();vx=1e3,jd=class{constructor(){this.overlay=null,this.playback=null,this.timer=null,this.artwork=null,this.listener=e=>{let{data:t}=e;typeof t!="object"||t===null||("spotify"in t?this.song(t.spotify):"spotifyState"in t&&this.state(t.spotifyState))},d.settings.toggleSpotifyOverlay=e=>this.toggle(e),this.toggle(!!d.settings.data.spotifyOverlay)}toggle(e){if(!e){window.chrome.webview.removeEventListener("message",this.listener),window.chrome.webview.postMessage("spotify-stop"),this.stopProgress(),this.overlay?.remove(),this.overlay=null,this.artwork=null,document.querySelector("#kuteSpotifyOverlayCSS")?.remove();return}if(this.overlay)return;let t=document.createElement("style");t.id="kuteSpotifyOverlayCSS",t.textContent=Cg,document.head.append(t),this.overlay=document.createElement("div"),this.overlay.id="kuteSpotifyOverlay",this.overlay.hidden=!0,this.overlay.innerHTML=Tg,(document.querySelector("#uiBase")??document.body).append(this.overlay),window.chrome.webview.addEventListener("message",this.listener),window.chrome.webview.postMessage("spotify-start")}song(e){if(!this.overlay||(this.overlay.hidden=!e,!e))return;let t=this.overlay.querySelector("#kuteSpotifyArtwork");e.artwork!==this.artwork&&(this.artwork=e.artwork,t.src=e.artwork??""),t.alt=e.album,this.overlay.querySelector("#kuteSpotifyTitle").textContent=e.title,this.overlay.querySelector("#kuteSpotifyArtist").textContent=e.artist,this.state(e)}state({playing:e,position:t,duration:o}){this.overlay&&(this.overlay.classList.toggle("paused",!e),this.playback={playing:e,position:t,duration:o,at:performance.now()},this.drawProgress(),e&&this.timer===null?this.timer=window.setInterval(()=>this.drawProgress(),vx):e||this.stopProgress())}drawProgress(){let e=this.overlay?.querySelector("#kuteSpotifyProgress > div")??null;if(!e||!this.playback)return;let{playing:t,position:o,duration:n,at:r}=this.playback,i=o+(t?performance.now()-r:0);e.style.transform=`scaleX(${n>0?Math.min(1,i/n).toFixed(4):0})`}stopProgress(){this.timer!==null&&window.clearInterval(this.timer),this.timer=null}},wx=new jd});var Vd={};A(Vd,{default:()=>kx});var Wd,kx,Yd=w(()=>{"use strict";F();Wd=class{constructor(){if(!d.version)return;let e=document.createElement("style");e.id="kute_versionTagCSS",e.textContent=` +`,mg=s=>s===void 0?"":`${s} ms`,Rd=class{constructor(){this.pings={},this.fetchedAt=0,this.fetching=!1,this.pending=null,this.observer=new MutationObserver(()=>{this.pending===null&&(this.pending=setTimeout(()=>this.scan(),150))});let e=document.createElement("style");e.textContent=sx,document.head.append(e);let t=document.getElementById("menuWindow");t&&(this.menu=t,this.observer.observe(t,{childList:!0,subtree:!0}))}refresh(){this.fetching||Date.now()-this.fetchedAt{this.fetching=!1,this.fetchedAt=Date.now(),e&&(this.pings=e,this.menu?.querySelectorAll(".kutePing").forEach(t=>t.remove()),this.menu?.querySelectorAll(`[${Uo}]`).forEach(t=>t.removeAttribute(Uo)),this.scan())}))}scan(){this.pending=null;let e=document.getElementById("serverHolder");e&&(this.refresh(),Object.keys(this.pings).length!==0&&(this.observer.disconnect(),this.labelRows(e),this.sortRegions(e),this.menu&&this.observer.observe(this.menu,{childList:!0,subtree:!0})))}labelRows(e){for(let t of e.querySelectorAll(`.settNameIn:not([${Uo}])`)){t.setAttribute(Uo,"");let o=/checkedSwitchServer\("([A-Z]+):/.exec(t.getAttribute("onclick")??"")?.[1],n=o?this.pings[tx[o]]:void 0,r=t.querySelector(".serverPing");if(n===void 0||!r)continue;let i=document.createElement("span");i.className="kutePing",i.textContent=mg(n),r.after(i)}}sortRegions(e){let t=[];for(let n of e.children)if(n.classList.contains("setHed")){let r=Array.from(n.childNodes,a=>a.nodeType===Node.TEXT_NODE?a.textContent:"").join("").trim(),i=this.pings[ox[r]];if(i!==void 0&&!n.hasAttribute(Uo)){n.setAttribute(Uo,"");let a=document.createElement("span");a.className="kutePing",a.textContent=mg(i),n.querySelector(".quickJoin")?.before(a)}t.push({nodes:[n],ping:i??-1})}else t.at(-1)?.nodes.push(n);if(t.length<2)return;let o=t.map((n,r)=>({...n,index:r})).sort((n,r)=>n.ping-r.ping||n.index-r.index);if(!o.every((n,r)=>n.index===r))for(let n of o)e.append(...n.nodes)}},nx=new Rd});var _d={};A(_d,{default:()=>lx});function ax(s,e){if(JSON.stringify(e)?.length>ix)return!1;if(vg.includes(s))return e===null||typeof e=="object"&&!Array.isArray(e);let t=wg.find(o=>o.id===s);return!t||typeof e!=typeof t.defaultValue||t.options&&!t.options.includes(e)?!1:typeof e!="number"||Number.isFinite(e)}function bg(){let s=new Date;return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}var fg,gg,rx,ix,vg,wg,Nd,lx,Bd=w(()=>{"use strict";Xo();D();Co();Rt();fg="kute-settings",gg=1,rx=256*1024,ix=16*1024,vg=["hudLayout","matchmakerFilter","hotkeys","nukeCounterConfig","customSkyConfig","kuteIconSlots","kuteIconUrls"],wg=Object.values(Tt).filter(s=>"defaultValue"in s);Nd=class{constructor(){u.settingsTransfer={exportFile:()=>this.export(),importFile:()=>this.pick()}}export(){let e=cu(u.settings.data),t=[...wg.map(i=>i.id),...vg],o=Object.fromEntries(t.filter(i=>e[i]!==void 0).map(i=>[i,e[i]])),n={format:fg,version:gg,kute:u.version,exported:bg(),settings:o},r=document.createElement("a");r.href=URL.createObjectURL(new Blob([JSON.stringify(n,null,2)],{type:"application/json"})),r.download=`kute-settings-${bg()}.json`,r.click(),setTimeout(()=>URL.revokeObjectURL(r.href),1e4),u.showNotification(`Exported ${Object.keys(o).length} settings to your Downloads folder`,!1,4)}pick(){let e=document.createElement("input");e.type="file",e.accept=".json,application/json",e.onchange=()=>{let t=e.files?.[0];t&&this.read(t).catch(o=>console.error("[kute] settings import:",o))},e.click()}async read(e){if(e.size>rx){u.showNotification("That file is too big for a Kute settings file",!1,4);return}let t=null;try{t=JSON.parse(await e.text())}catch{t=null}if(t?.format!==fg||typeof t.settings!="object"||t.settings===null){u.showNotification("That is not a Kute settings file",!1,4);return}if(typeof t.version!="number"||t.version>gg){u.showNotification("That file comes from a newer Kute, update first",!1,4);return}let o=Object.entries(t.settings).filter(([i,a])=>ax(i,a));if(o.length===0){u.showNotification("That file holds no settings this Kute knows",!1,4);return}let n=typeof t.kute=="string"?` from Kute ${t.kute}`:"";if(await Ce({title:"Import Kute settings",paragraphs:[`${o.length} settings${n} in ${e.name}.`,"They replace your client settings, HUD positions, matchmaker filters and hotkeys. Kute restarts to apply them.","Userscripts, swapper files, custom CSS and your own sky images are files in Documents\\kute and are not part of it."],stay:"Cancel",leave:"Import and restart"})){for(let[i,a]of o)u.settings.data[i]=a,window.chrome.webview.postMessage(`set-config-json ${i} ${JSON.stringify(a)}`);window.chrome.webview.postMessage("restart")}}},lx=new Nd});var Hd={};A(Hd,{default:()=>cx});var zd,cx,Od=w(()=>{"use strict";D();zd=class{constructor(){this.originalGenList=window.windows[22].genList,this.template=document.createElement("template"),u.settings.toggleShowPing=e=>this.toggle(e),this.toggle(!0)}toggle(e){let t=this;e?window.windows[22].genList=function(){return t.modifiedGenList(this)}:window.windows[22].genList=this.originalGenList}modifiedGenList(e){let t=this.originalGenList.call(e);this.template.innerHTML=t;let o=this.template.content.querySelectorAll(".pListPing.material-icons");for(let n of o){let r=n.getAttribute("title");n.classList.remove("pListPing","material-icons"),n.removeAttribute("title"),n.textContent=`${r||"N/A"} `}return this.template.innerHTML}},cx=new zd});var yg,kg=w(()=>{yg=`#kuteSpotifyOverlay{position:absolute;left:463px;bottom:23px;z-index:10;display:flex;align-items:center;gap:12px;box-sizing:border-box;width:320px;min-height:82px;padding:10px;border:1px solid rgba(29,185,84,.7);border-radius:8px;background:#0c120fe0;box-shadow:0 4px 18px #00000059;color:#fff;font-family:Arial,sans-serif;pointer-events:none}#kuteSpotifyOverlay[hidden]{display:none}#kuteSpotifyOverlay.paused{opacity:.72}#kuteSpotifyArtwork{width:60px;height:60px;flex:0 0 60px;border-radius:4px;background:#26302a;object-fit:cover}#kuteSpotifyInfo{min-width:0;flex:1 1 auto}#kuteSpotifyTitle,#kuteSpotifyArtist{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#kuteSpotifyTitle{font-size:14px;font-weight:700}#kuteSpotifyArtist{margin-top:3px;color:#b8c8bc;font-size:12px}#kuteSpotifyProgress{height:3px;margin-top:9px;border-radius:2px;background:#536258;overflow:hidden}#kuteSpotifyProgress>div{height:100%;background:#1db954;transform:scaleX(0);transform-origin:left} +`});var Sg,xg=w(()=>{Sg='
      '});var Fd={};A(Fd,{default:()=>hx});var px,Dd,hx,qd=w(()=>{"use strict";kg();xg();D();px=1e3,Dd=class{constructor(){this.overlay=null,this.playback=null,this.timer=null,this.artwork=null,this.listener=e=>{let{data:t}=e;typeof t!="object"||t===null||("spotify"in t?this.song(t.spotify):"spotifyState"in t&&this.state(t.spotifyState))},u.settings.toggleSpotifyOverlay=e=>this.toggle(e),this.toggle(!!u.settings.data.spotifyOverlay)}toggle(e){if(!e){window.chrome.webview.removeEventListener("message",this.listener),window.chrome.webview.postMessage("spotify-stop"),this.stopProgress(),this.overlay?.remove(),this.overlay=null,this.artwork=null,document.querySelector("#kuteSpotifyOverlayCSS")?.remove();return}if(this.overlay)return;let t=document.createElement("style");t.id="kuteSpotifyOverlayCSS",t.textContent=yg,document.head.append(t),this.overlay=document.createElement("div"),this.overlay.id="kuteSpotifyOverlay",this.overlay.hidden=!0,this.overlay.innerHTML=Sg,(document.querySelector("#uiBase")??document.body).append(this.overlay),window.chrome.webview.addEventListener("message",this.listener),window.chrome.webview.postMessage("spotify-start")}song(e){if(!this.overlay||(this.overlay.hidden=!e,!e))return;let t=this.overlay.querySelector("#kuteSpotifyArtwork");e.artwork!==this.artwork&&(this.artwork=e.artwork,t.src=e.artwork??""),t.alt=e.album,this.overlay.querySelector("#kuteSpotifyTitle").textContent=e.title,this.overlay.querySelector("#kuteSpotifyArtist").textContent=e.artist,this.state(e)}state({playing:e,position:t,duration:o}){this.overlay&&(this.overlay.classList.toggle("paused",!e),this.playback={playing:e,position:t,duration:o,at:performance.now()},this.drawProgress(),e&&this.timer===null?this.timer=window.setInterval(()=>this.drawProgress(),px):e||this.stopProgress())}drawProgress(){let e=this.overlay?.querySelector("#kuteSpotifyProgress > div")??null;if(!e||!this.playback)return;let{playing:t,position:o,duration:n,at:r}=this.playback,i=o+(t?performance.now()-r:0);e.style.transform=`scaleX(${n>0?Math.min(1,i/n).toFixed(4):0})`}stopProgress(){this.timer!==null&&window.clearInterval(this.timer),this.timer=null}},hx=new Dd});var jd={};A(jd,{default:()=>mx});var Kd,mx,Ud=w(()=>{"use strict";D();Kd=class{constructor(){if(!u.version)return;let e=document.createElement("style");e.id="kute_versionTagCSS",e.textContent=` #matchInfo > div:first-of-type::before { content: ${JSON.stringify(`Kute v${u.version}`)}; display: block; color: #35e0e8; - }`,document.head.append(e)}},kx=new Wd});var Rg={};var yx,Ag,xx,Lg,Xd,Jd=w(()=>{"use strict";yx=[{key:"scoreboardName.js",name:"Scoreboard Name",author:"Kute"}],Ag="kute_withdrawn",xx=1e4,Lg=localStorage.getItem(Ag)??"",Xd=yx.filter(s=>!Lg.split(",").includes(s.key));if(Xd.length>0){let s=0,e=t=>{let o=t.data?.userscripts?.groups;if(!Array.isArray(o))return;window.chrome.webview.removeEventListener("message",e),clearTimeout(s);let n=o.flatMap(r=>r.scripts??[]);for(let r of Xd)n.find(a=>a.key===r.key&&a.meta?.name===r.name&&a.meta?.author===r.author)&&(window.chrome.webview.postMessage(`scripts-toggle ${JSON.stringify({key:r.key,enabled:!1})}`),window.chrome.webview.postMessage(`scripts-delete ${JSON.stringify({key:r.key})}`));localStorage.setItem(Ag,[...Lg.split(",").filter(Boolean),...Xd.map(r=>r.key)].join(","))};s=setTimeout(()=>window.chrome.webview.removeEventListener("message",e),xx),window.chrome.webview.addEventListener("message",e),window.chrome.webview.postMessage("scripts-list {}")}});var _g,Zd=w(()=>{_g=du({"./modules/about.js":()=>Promise.resolve().then(()=>(fi(),tp)),"./modules/accountEndMessage.js":()=>Promise.resolve().then(()=>(wi(),vi)),"./modules/accountManager.js":()=>Promise.resolve().then(()=>(Ti(),Mi)),"./modules/api.js":()=>Promise.resolve().then(()=>(Nt(),mp)),"./modules/args.js":()=>Promise.resolve().then(()=>(Li(),bp)),"./modules/autoDetect/bench.js":()=>Promise.resolve().then(()=>(Qr(),zu)),"./modules/autoDetect/clientBench.js":()=>Promise.resolve().then(()=>(ji(),xp)),"./modules/autoDetect/decide.js":()=>Promise.resolve().then(()=>(Ui(),Ep)),"./modules/autoDetect/gameSettings.js":()=>Promise.resolve().then(()=>(Ji(),Xi)),"./modules/autoDetect/index.js":()=>Promise.resolve().then(()=>(la(),aa)),"./modules/autoDetect/metrics.js":()=>Promise.resolve().then(()=>(xn(),Iu)),"./modules/autoDetect/policy.js":()=>Promise.resolve().then(()=>(ys(),wp)),"./modules/autoDetect/sample.js":()=>Promise.resolve().then(()=>(ea(),Lp)),"./modules/autoDetect/scene.js":()=>Promise.resolve().then(()=>(Xr(),Pu)),"./modules/badges.js":()=>Promise.resolve().then(()=>(ma(),ha)),"./modules/betterChat.js":()=>Promise.resolve().then(()=>(ba(),ga)),"./modules/bpClaimAll.js":()=>Promise.resolve().then(()=>(va(),nh)),"./modules/changelog.js":()=>Promise.resolve().then(()=>(Pa(),Ch)),"./modules/chatDraft.js":()=>Promise.resolve().then(()=>(_a(),Na)),"./modules/chatLogs.js":()=>Promise.resolve().then(()=>(Ha(),za)),"./modules/clanColors.js":()=>Promise.resolve().then(()=>(Da(),Fa)),"./modules/confirmPopup.js":()=>Promise.resolve().then(()=>(Pt(),np)),"./modules/customCss.js":()=>Promise.resolve().then(()=>(wn(),Eu)),"./modules/customSky.js":()=>Promise.resolve().then(()=>(ja(),Ka)),"./modules/diagnostics.js":()=>Promise.resolve().then(()=>(Ya(),Va)),"./modules/externalQueue.js":()=>Promise.resolve().then(()=>(ol(),Wh)),"./modules/fixes.js":()=>Promise.resolve().then(()=>(sl(),Vh)),"./modules/gameFpsLimit.js":()=>Promise.resolve().then(()=>(ls(),li)),"./modules/hotkeys.js":()=>Promise.resolve().then(()=>(No(),Ei)),"./modules/hpEnemyCounter.js":()=>Promise.resolve().then(()=>(il(),rl)),"./modules/hsSound.js":()=>Promise.resolve().then(()=>(cl(),ll)),"./modules/hudEditor/editor.js":()=>Promise.resolve().then(()=>(hl(),pl)),"./modules/hudEditor/elements.js":()=>Promise.resolve().then(()=>(nr(),Qh)),"./modules/hudEditor/index.js":()=>Promise.resolve().then(()=>(ir(),ul)),"./modules/importSettings.js":()=>Promise.resolve().then(()=>(ml(),rm)),"./modules/inventoryScroll.js":()=>Promise.resolve().then(()=>(bl(),gl)),"./modules/keystrokes.js":()=>Promise.resolve().then(()=>(xl(),yl)),"./modules/kuteCss.js":()=>Promise.resolve().then(()=>(oi(),ti)),"./modules/kuteIcons/index.js":()=>Promise.resolve().then(()=>(Cl(),$l)),"./modules/kuteIcons/slots.js":()=>Promise.resolve().then(()=>(vn(),yu)),"./modules/leftClick.js":()=>Promise.resolve().then(()=>(bn(),wu)),"./modules/linuxUpdate.js":()=>Promise.resolve().then(()=>(Ll(),Al)),"./modules/logoBadge.js":()=>Promise.resolve().then(()=>(ui(),di)),"./modules/managers/customCss.js":()=>Promise.resolve().then(()=>(zl(),Bl)),"./modules/managers/editor.js":()=>Promise.resolve().then(()=>(Do(),zh)),"./modules/managers/index.js":()=>Promise.resolve().then(()=>(Gl(),Dm)),"./modules/managers/popup.js":()=>Promise.resolve().then(()=>(Ds(),Pm)),"./modules/managers/registry.js":()=>Promise.resolve().then(()=>(ts(),xu)),"./modules/managers/stylesheets.js":()=>Promise.resolve().then(()=>(pr(),Im)),"./modules/managers/swapper.js":()=>Promise.resolve().then(()=>(Ul(),jl)),"./modules/managers/userscripts.js":()=>Promise.resolve().then(()=>(Fl(),Ol)),"./modules/maps.js":()=>Promise.resolve().then(()=>(or(),Hh)),"./modules/market.js":()=>Promise.resolve().then(()=>(jf(),e1)),"./modules/market/alerts.js":()=>Promise.resolve().then(()=>(gr(),of)),"./modules/market/analytics.js":()=>Promise.resolve().then(()=>(kr(),mf)),"./modules/market/api.js":()=>Promise.resolve().then(()=>(xe(),Km)),"./modules/market/cards.js":()=>Promise.resolve().then(()=>(ec(),Wm)),"./modules/market/chart.js":()=>Promise.resolve().then(()=>(Vc(),Hf)),"./modules/market/chartData.js":()=>Promise.resolve().then(()=>(xr(),Sf)),"./modules/market/contrib.js":()=>Promise.resolve().then(()=>(dc(),df)),"./modules/market/contributionData.js":()=>Promise.resolve().then(()=>(lc(),rf)),"./modules/market/contributionEvidence.js":()=>Promise.resolve().then(()=>(yc(),kf)),"./modules/market/element.js":()=>Promise.resolve().then(()=>(Be(),pf)),"./modules/market/exchangeEvidence.js":()=>Promise.resolve().then(()=>(Sc(),yf)),"./modules/market/index.js":()=>Promise.resolve().then(()=>(Cr(),Zc)),"./modules/market/intelligence.js":()=>Promise.resolve().then(()=>(tn(),wf)),"./modules/market/itemSearch.js":()=>Promise.resolve().then(()=>(jo(),bf)),"./modules/market/navigation.js":()=>Promise.resolve().then(()=>(wr(),uf)),"./modules/market/presentation.js":()=>Promise.resolve().then(()=>(pe(),Um)),"./modules/market/terminal.js":()=>Promise.resolve().then(()=>(Xc(),Yc)),"./modules/market/trade.js":()=>Promise.resolve().then(()=>(oc(),Xm)),"./modules/market/types.js":()=>Promise.resolve().then(()=>(We(),jm)),"./modules/market/views/analyze.js":()=>Promise.resolve().then(()=>(Oc(),Lf)),"./modules/market/views/compactList.js":()=>Promise.resolve().then(()=>(Uc(),Nf)),"./modules/market/views/deals.js":()=>Promise.resolve().then(()=>(Ic(),Mf)),"./modules/market/views/help.js":()=>Promise.resolve().then(()=>(Wc(),zf)),"./modules/market/views/indices.js":()=>Promise.resolve().then(()=>(_c(),Tf)),"./modules/market/views/intelligence.js":()=>Promise.resolve().then(()=>(Dc(),Rf)),"./modules/market/views/intro.js":()=>Promise.resolve().then(()=>(Sr(),Pf)),"./modules/market/views/item.js":()=>Promise.resolve().then(()=>(Mc(),Ef)),"./modules/market/views/movers.js":()=>Promise.resolve().then(()=>(Rc(),Cf)),"./modules/market/views/overview.js":()=>Promise.resolve().then(()=>(mc(),gf)),"./modules/market/views/portfolio.js":()=>Promise.resolve().then(()=>(zc(),Af)),"./modules/market/views/search.js":()=>Promise.resolve().then(()=>(gc(),vf)),"./modules/market/views/table.js":()=>Promise.resolve().then(()=>(Kc(),If)),"./modules/market/views/watchlist.js":()=>Promise.resolve().then(()=>(Ac(),$f)),"./modules/market/watchlist.js":()=>Promise.resolve().then(()=>(Vt(),Zm)),"./modules/matchmaker.js":()=>Promise.resolve().then(()=>(sd(),od)),"./modules/menuTimer.js":()=>Promise.resolve().then(()=>(ad(),id)),"./modules/modDownload.js":()=>Promise.resolve().then(()=>(ud(),dd)),"./modules/motionBlur.js":()=>Promise.resolve().then(()=>(fd(),md)),"./modules/nukeCounter.js":()=>Promise.resolve().then(()=>(wd(),vd)),"./modules/playerLists.js":()=>Promise.resolve().then(()=>(Un(),Up)),"./modules/presence.js":()=>Promise.resolve().then(()=>(ua(),Wp)),"./modules/privateMatch.js":()=>Promise.resolve().then(()=>(Hn(),Mp)),"./modules/queueSound.js":()=>Promise.resolve().then(()=>(tl(),jh)),"./modules/rampBoost.js":()=>Promise.resolve().then(()=>(mn(),gu)),"./modules/rankProgress.js":()=>Promise.resolve().then(()=>(xd(),yd)),"./modules/rankedAlert.js":()=>Promise.resolve().then(()=>($d(),Ed)),"./modules/realPing.js":()=>Promise.resolve().then(()=>(Td(),Md)),"./modules/recovery.js":()=>Promise.resolve().then(()=>(Rd(),Ld)),"./modules/renderFps.js":()=>Promise.resolve().then(()=>(Nd(),Id)),"./modules/serverPings.js":()=>Promise.resolve().then(()=>(zd(),Bd)),"./modules/sessionRecovery.js":()=>Promise.resolve().then(()=>(yn(),Au)),"./modules/settingsTransfer.js":()=>Promise.resolve().then(()=>(Fd(),Od)),"./modules/showPing.js":()=>Promise.resolve().then(()=>(Kd(),qd)),"./modules/spotifyOverlay.js":()=>Promise.resolve().then(()=>(Gd(),Ud)),"./modules/versionTag.js":()=>Promise.resolve().then(()=>(Yd(),Vd)),"./modules/withdrawn.js":()=>Promise.resolve().then(()=>(Jd(),Rg))})});var Og={};A(Og,{default:()=>Tx});function Bg(s){return`toggle${s.charAt(0).toUpperCase()+s.slice(1)}`}function Pg(s){let e=s.disabledBy?Jt[s.disabledBy]:null;return e&&d.settings.data[e.id]===!0?e:null}function zg(s,e){let t=d.settings[Bg(s)];if(typeof t=="function"){t(e);return}if(e)try{_g(`./modules/${s}.js`).catch(()=>{})}catch{}}function Hg(s,e){switch(s){case"exitButton":U("#clientExit").style.display=`${e?"flex":"none"}`;break;case"menuTimer":e?Promise.resolve().then(()=>ue(nd(),1)).then(t=>{let o=document.createElement("style");o.id="kute_menuTimerCSS",o.textContent=t.default,document.head.append(o)}):document.querySelector("#kute_menuTimerCSS")?.remove();break;case"classicMenu":e?Promise.resolve().then(()=>ue(hi(),1)).then(t=>{let o=document.createElement("style");o.id="kute_classicMenuCSS",o.textContent=t.default,document.head.append(o)}):document.querySelector("#kute_classicMenuCSS")?.remove();break;case"cleanUI":{e?Promise.resolve().then(()=>ue(pi(),1)).then(t=>{let o=document.createElement("style");o.id="kute_cleanCSS",o.textContent=t.default,document.head.append(o)}):document.querySelector("#kute_cleanCSS")?.remove();break}case"textSelect":{if(e){let t=document.createElement("style");t.id="kute_textSelectCSS",t.textContent="#chatHolder * { user-select: text }",document.head.append(t)}else document.querySelector("#kute_textSelectCSS")?.remove();break}default:break}}function Cx(s,e){for(let t of Object.values(Jt)){if(t.disabledBy!==s)continue;let o=!e&&!!d.settings.data[t.id],n=document.querySelector(`#${t.id}`);if(n instanceof HTMLInputElement){n.checked=o,n.disabled=e;let r=n.closest("label");r&&(r.style.cssText=e?Ar:"",r.title=e?`Off while ${Jt[s].name} is on`:"")}zg(t.id,o)}}var Qd,Ar,Sx,Ex,$x,Jt,Ig,Ng,Mx,eu,Tx,Fg=w(()=>{"use strict";Jo();F();Ae();To();mn();Zd();Qd=new Map,Ar="opacity: 0.35; cursor: not-allowed",Sx='window.setSetting("rawMouse"',Ex="Controlled by Kute's Raw Input setting",$x="Not available on Linux",Jt=At;d.settings.changeSetting=(s,e,t)=>{if(e==="")return;let o=document.querySelector(`#${s}`);o instanceof HTMLInputElement&&(o.value=String(e),o.type==="checkbox"&&(o.checked=e===!0));let n=e;typeof n=="string"&&/^-?\d*\.?\d+$/.test(n)&&(n.includes(".")?n=Number.parseFloat(n):n=Number.parseInt(n,10));let r=document.querySelector(`#slid_input_${s}`);if(r&&t){r.value=String(n),clearTimeout(Qd.get(s)),Qd.set(s,setTimeout(()=>{d.settings.data[s]=n,window.chrome.webview.postMessage(`set-config, ${s}, ${n}`),Qd.delete(s)},500));return}switch(s){case"obsCapturePlugin":if(n&&!confirm("Install the Kute Capture plugin into OBS? OBS must be closed, and Windows may ask for administrator permission.")){ke("#obsCapturePlugin").checked=!1;return}window.chrome.webview.postMessage(`obs-plugin, ${n}`);break;case"rampBoost":n?Oe()||to(!0):to(!1);break;default:Hg(s,n);break}let i=Bg(s);if(typeof d.settings[i]!="function")try{_g(`./modules/${s}.js`).catch(()=>{})}catch{}else d.settings[i](n);d.settings.data[s]=n,window.chrome.webview.postMessage(`set-config, ${s}, ${n}`),Cx(s,n===!0)};Ig=' *',Ng=' *',Mx=()=>{let s=e=>`window.chrome.webview.postMessage('open-url, ${e}')`;return[["About","info","kuteTopBlue",`${Ue}.showAboutPopup()`],["Website","language","kuteTopBlue",s("https://kute.lol")],["Source Code","code","kuteTopPink",s("https://github.com/NullDev/Kute")],["Report Issue","bug_report","kuteTopPink",s("https://github.com/NullDev/Kute/issues/choose")],["Manage Swapper","swap_horiz","kuteTopOrange",`${Ue}.swapperManager.open()`],["Manage Userscripts","extension","kuteTopOrange",`${Ue}.userscriptManager.open()`]]},eu=class{constructor(){this.settingsWindow=window.windows[0],this.init()}init(){let e=this.settingsWindow.getSettings;this.settingsWindow.getSettings=(...t)=>{let o=this.lockRawMouse(e.call(this.settingsWindow,...t)),n=this.getCSettings();if(!n)return o;let r=o.startsWith("
      ");return(r?o.slice(6):o)+n+(r?"
      ":"")},this.settingsWindow.getCSettings=()=>this.getCSettings(),d.settings.togglePerformanceMode=t=>{for(let o of hn(d.settings.data,t)){let n=d.settings.data[o];Hg(o,n),zg(o,n===!0&&!Pg(Jt[o]))}setTimeout(()=>this.rerender(),0)},d.openKuteSettings=()=>{window.showWindow(1),this.settingsWindow.changeTab(this.settingsWindow.tabs[this.settingsWindow.settingType].length-1)},window.chrome.webview.addEventListener("message",t=>{let o=t.data;if(o?.type==="obs-plugin"){if(!o.ok){d.settings.data.obsCapturePlugin=!1;let n=document.querySelector("#obsCapturePlugin");n&&(n.checked=!1)}d.showNotification(o.message,!1,5)}})}rerender(){let e=this.settingsWindow.tabs[this.settingsWindow.settingType];(this.settingsWindow.tabIndex===e.length-1||this.settingsWindow.settingSearch)&&this.settingsWindow.changeTab(this.settingsWindow.tabIndex)}lockRawMouse(e){let t=e.indexOf(Sx);if(t<0)return e;let o=e.lastIndexOf("",t),r=e.lastIndexOf("",r);if(i<0||i>o)return e;let a=e.slice(o,n).replace(/\s+checked\b/,"")+(d.settings.data.rawInput&&d.platform!=="linux"?" checked":"")+" disabled>",l=d.platform==="linux"?$x:Ex;return e.slice(0,i)+` title="${l}">`+e.slice(i+1,o)+a+e.slice(n+1)}searchMatches(e){let t=this.settingsWindow.settingSearch.toLowerCase()||"";return[e.name,e.category,e.description??""].some(o=>o.toLowerCase().includes(t))}generateHtml(e){let t=d.settings.data[e.id],o=e.buttonAction?.replaceAll("{{kute}}",Ue).replaceAll('"',""")??"",n=e.requiresLogin&&document.querySelector("#signedInHeaderBar")===null,r="",i=e.type==="checkbox"?"margin-right: 8px; ":"";switch(e.button&&n?r=`
      ${e.button}
      `:e.button&&(r=`
      ${e.button}
      `),e.type){case"checkbox":{let a=Pg(e);if(a)return`
      ");return(r?o.slice(6):o)+n+(r?"
      ":"")},this.settingsWindow.getCSettings=()=>this.getCSettings(),u.settings.togglePerformanceMode=t=>{for(let o of pn(u.settings.data,t)){let n=u.settings.data[o];Ig(o,n),Pg(o,n===!0&&!Mg(Vt[o]))}setTimeout(()=>this.rerender(),0)},u.openKuteSettings=()=>{window.showWindow(1),this.settingsWindow.changeTab(this.settingsWindow.tabs[this.settingsWindow.settingType].length-1)},window.chrome.webview.addEventListener("message",t=>{let o=t.data;if(o?.type==="obs-plugin"){if(!o.ok){u.settings.data.obsCapturePlugin=!1;let n=document.querySelector("#obsCapturePlugin");n&&(n.checked=!1)}u.showNotification(o.message,!1,5)}})}rerender(){let e=this.settingsWindow.tabs[this.settingsWindow.settingType];(this.settingsWindow.tabIndex===e.length-1||this.settingsWindow.settingSearch)&&this.settingsWindow.changeTab(this.settingsWindow.tabIndex)}lockRawMouse(e){let t=e.indexOf(bx);if(t<0)return e;let o=e.lastIndexOf("",t),r=e.lastIndexOf("",r);if(i<0||i>o)return e;let a=e.slice(o,n).replace(/\s+checked\b/,"")+(u.settings.data.rawInput&&u.platform!=="linux"?" checked":"")+" disabled>",l=u.platform==="linux"?wx:vx;return e.slice(0,i)+` title="${l}">`+e.slice(i+1,o)+a+e.slice(n+1)}searchMatches(e){let t=this.settingsWindow.settingSearch.toLowerCase()||"";return[e.name,e.category,e.description??""].some(o=>o.toLowerCase().includes(t))}generateHtml(e){let t=u.settings.data[e.id],o=e.buttonAction?.replaceAll("{{kute}}",Ue).replaceAll('"',""")??"",n=e.requiresLogin&&document.querySelector("#signedInHeaderBar")===null,r="",i=e.type==="checkbox"?"margin-right: 8px; ":"";switch(e.button&&n?r=`
      ${e.button}
      `:e.button&&(r=`
      ${e.button}
      `),e.type){case"checkbox":{let a=Mg(e);if(a)return` - ${r}`;if(n)return`
      `:""}},Tx=new eu});var uu=`@keyframes chat-moveup{0%{transform:translateY(375px)}to{transform:translateY(0)}}@keyframes death-ui-moveup{0%{transform:translateY(340px)}to{transform:translateY(0)}}.entry-info{z-index:9}#gameNameHolder{top:33px}#teamSelector{bottom:290px!important}div #setHed_local,.kuteSettings .setHed:first-of-type{margin-top:10px}.setBodH{margin-top:5px}.carousel,.onSpect #hpEnemyCounter,#settHolder div.setHed:not([id]),#newUserGuide,#phonePop,#signupRewardsButton,#streamContainer,#aHider,#adCon,#rightABox,#aContainer,#topRightAdHolder,#braveWarning,.webpush-container,.nav-notif-section+.verticalSeparator,.endAHolder{display:none!important}.death-ui-bottom{backdrop-filter:none;animation:none}#menuAccountUsername{border:0}.ranked-matchmaking-status{box-shadow:none!important}#homeStoreAdC,#menuAccountUsername,#uiBase.onDeathScrn #chatHolder,.ranked-matchmaking-status{animation:none!important}#phonePop{top:0;bottom:0}.chatItem{max-width:387px}.moreKrunkerPopup{width:600px}.moreKrunkerClient{display:none!important}#mLevelCont{background-color:transparent}.bpBtn.skip.disabled{background:#333;border-color:#444;color:#888;cursor:not-allowed;opacity:1!important}.kuteTopButtons{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 4px}.kuteTopButton{display:flex;align-items:center;justify-content:center;gap:10px;padding:8px 10px;border:3px solid var(--kute-top, #35e0e8);border-radius:4px;background:#222;color:#fff;font-size:21px;cursor:pointer;user-select:none;transition:background .1s}.kuteTopButton:hover{background:#333}.kuteTopButton .material-icons{font-size:24px}.kuteTopBlue{--kute-top: #35e0e8}.kuteTopPink{--kute-top: #f5479b}.kuteTopOrange{--kute-top: #ff8a1f}#menuWindow .kuteHiddenBanner{display:flex;align-items:center;gap:10px;margin:8px 0 4px;padding:8px 12px;border:3px solid #eb5656;border-radius:4px;background:#eb56562e;color:#fff;font-size:17px;line-height:27px}#menuWindow .kuteHiddenBanner .material-icons{color:#eb5656;font-size:26px}.kuteLegend{float:right;margin-right:8px;color:#aaa;font-size:16px}.kuteLegend span{margin-left:12px}#menuWindow .settName .kuteDesc{margin-top:2px;color:#ffffff73;font-size:15px;line-height:1.3}#menuWindow .switch input:disabled+.slider{opacity:.35;cursor:not-allowed} -`;F();Ae();mn();bn();vn();ts();wn();yn();var ln=location.pathname==="/kute-bench";ln&&Promise.resolve().then(()=>(Qr(),zu));!ln&&localStorage.getItem("krk_advanced")===null&&localStorage.setItem("krk_advanced","1");ln||oo();ln||Ne.then(()=>{d.settings?.data?.kuteCss===!0&&Promise.resolve().then(()=>(oi(),ti)).catch(()=>{})});location.hostname==="krunker.io"&&location.pathname==="/"&&Ne.then(()=>{d.settings?.data?.accountEndMessage&&localStorage.setItem("kro_setngss_endMessage","")});var Dg=!0;window.OffCliV=!0;window.closeClient=()=>window.chrome.webview.postMessage("close");document.addEventListener("DOMContentLoaded",()=>{if(ln)return;qr(),Promise.resolve().then(()=>ls()),Promise.resolve().then(()=>ui());let s=document.createElement("style");s.textContent=uu,document.head.append(s);let e=null;zr(HTMLCanvasElement,"addEventListener",t=>{let[o,n]=t;o==="wheel"&&(e=n)}),window.chrome.webview.addEventListener("message",t=>{typeof t.data?.wheel=="number"&&e?.(new WheelEvent("wheel",{deltaY:t.data.wheel}))}),window.addEventListener("wheel",t=>{if(!document.pointerLockElement){for(let o of t.composedPath()){if(o===document.body||o===document.documentElement)break;if(!(o instanceof Element))continue;let n=getComputedStyle(o),r=(n.overflowY==="auto"||n.overflowY==="scroll")&&o.scrollHeight>o.clientHeight,i=(n.overflowX==="auto"||n.overflowX==="scroll")&&o.scrollWidth>o.clientWidth;if(r||i)return}t.preventDefault()}},{capture:!0,passive:!1}),zr(HTMLCanvasElement,"requestPointerLock",function(t,o){Qo(),Or(),window.chrome.webview.postMessage("drag, false"),window.chrome.webview.postMessage("throttle, game");let n=d.platform!=="linux"&&d?.settings?.data?.rawInput;return o.call(this,{...t[0],unadjustedMovement:n})}),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement?window.chrome.webview.postMessage("throttle, game"):(window.chrome.webview.postMessage("drag, true"),window.chrome.webview.postMessage("throttle, menu"))}),Ne.then(()=>{d.settings.data.hidePopularNow===!0&&(d.settings.data.hidePopularNow=!1,window.chrome.webview.postMessage("set-config, hidePopularNow, false"),d.settings.data.cleanUI=!0,window.chrome.webview.postMessage("set-config, cleanUI, true")),d.settings.data.cleanUI&&Promise.resolve().then(()=>ue(pi(),1)).then(t=>{let o=document.createElement("style");o.id="kute_cleanCSS",o.textContent=t.default,document.head.append(o)})}),Ne.then(()=>{d.settings.data.classicMenu&&Promise.resolve().then(()=>ue(hi(),1)).then(t=>{let o=document.createElement("style");o.id="kute_classicMenuCSS",o.textContent=t.default,document.head.append(o)})})},{once:!0});Object.defineProperty(window,"gameLoaded",{async set(s){if(!s||(await Ne,window.chrome.webview.postMessage("game-updated"),!Dg))return;sessionStorage.getItem("justLaunched")===null?sessionStorage.setItem("justLaunched","true"):sessionStorage.setItem("justLaunched","false"),Dg=!1,localStorage.setItem("logs","true"),U("#compBtnLst").insertAdjacentHTML("beforeend",` + ${r.description?`
      ${r.description.replaceAll("<","<")}
      `:""}
      `}return n?`${e}
      `:t?`${e}`:""}},xx=new Xd});var au=`@keyframes chat-moveup{0%{transform:translateY(375px)}to{transform:translateY(0)}}@keyframes death-ui-moveup{0%{transform:translateY(340px)}to{transform:translateY(0)}}.entry-info{z-index:9}#gameNameHolder{top:33px}#teamSelector{bottom:290px!important}div #setHed_local,.kuteSettings .setHed:first-of-type{margin-top:10px}.setBodH{margin-top:5px}.carousel,.onSpect #hpEnemyCounter,#settHolder div.setHed:not([id]),#newUserGuide,#phonePop,#signupRewardsButton,#streamContainer,#aHider,#adCon,#rightABox,#aContainer,#topRightAdHolder,#braveWarning,.webpush-container,.nav-notif-section+.verticalSeparator,.endAHolder{display:none!important}.death-ui-bottom{backdrop-filter:none;animation:none}#menuAccountUsername{border:0}.ranked-matchmaking-status{box-shadow:none!important}#homeStoreAdC,#menuAccountUsername,#uiBase.onDeathScrn #chatHolder,.ranked-matchmaking-status{animation:none!important}#phonePop{top:0;bottom:0}.chatItem{max-width:387px}.moreKrunkerPopup{width:600px}.moreKrunkerClient{display:none!important}#mLevelCont{background-color:transparent}.bpBtn.skip.disabled{background:#333;border-color:#444;color:#888;cursor:not-allowed;opacity:1!important}.kuteTopButtons{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 4px}.kuteTopButton{display:flex;align-items:center;justify-content:center;gap:10px;padding:8px 10px;border:3px solid var(--kute-top, #35e0e8);border-radius:4px;background:#222;color:#fff;font-size:21px;cursor:pointer;user-select:none;transition:background .1s}.kuteTopButton:hover{background:#333}.kuteTopButton .material-icons{font-size:24px}.kuteTopBlue{--kute-top: #35e0e8}.kuteTopPink{--kute-top: #f5479b}.kuteTopOrange{--kute-top: #ff8a1f}#menuWindow .kuteHiddenBanner{display:flex;align-items:center;gap:10px;margin:8px 0 4px;padding:8px 12px;border:3px solid #eb5656;border-radius:4px;background:#eb56562e;color:#fff;font-size:17px;line-height:27px}#menuWindow .kuteHiddenBanner .material-icons{color:#eb5656;font-size:26px}.kuteLegend{float:right;margin-right:8px;color:#aaa;font-size:16px}.kuteLegend span{margin-left:12px}#menuWindow .settName .kuteDesc{margin-top:2px;color:#ffffff73;font-size:15px;line-height:1.3}#menuWindow .switch input:disabled+.slider{opacity:.35;cursor:not-allowed} +`;D();Ae();hn();gn();bn();es();vn();kn();var an=location.pathname==="/kute-bench";an&&Promise.resolve().then(()=>(Zr(),Iu));!an&&localStorage.getItem("krk_advanced")===null&&localStorage.setItem("krk_advanced","1");an||Qt();an||Ne.then(()=>{u.settings?.data?.kuteCss===!0&&Promise.resolve().then(()=>(ti(),ei)).catch(()=>{})});location.hostname==="krunker.io"&&location.pathname==="/"&&Ne.then(()=>{u.settings?.data?.accountEndMessage&&localStorage.setItem("kro_setngss_endMessage","")});var Bg=!0;window.OffCliV=!0;window.closeClient=()=>window.chrome.webview.postMessage("close");document.addEventListener("DOMContentLoaded",()=>{if(an)return;Fr(),Promise.resolve().then(()=>as()),Promise.resolve().then(()=>di());let s=document.createElement("style");s.textContent=au,document.head.append(s);let e=null;Br(HTMLCanvasElement,"addEventListener",t=>{let[o,n]=t;o==="wheel"&&(e=n)}),window.chrome.webview.addEventListener("message",t=>{typeof t.data?.wheel=="number"&&e?.(new WheelEvent("wheel",{deltaY:t.data.wheel}))}),window.addEventListener("wheel",t=>{if(!document.pointerLockElement){for(let o of t.composedPath()){if(o===document.body||o===document.documentElement)break;if(!(o instanceof Element))continue;let n=getComputedStyle(o),r=(n.overflowY==="auto"||n.overflowY==="scroll")&&o.scrollHeight>o.clientHeight,i=(n.overflowX==="auto"||n.overflowX==="scroll")&&o.scrollWidth>o.clientWidth;if(r||i)return}t.preventDefault()}},{capture:!0,passive:!1}),Br(HTMLCanvasElement,"requestPointerLock",function(t,o){Zo(),Hr(),window.chrome.webview.postMessage("drag, false"),window.chrome.webview.postMessage("throttle, game");let n=u.platform!=="linux"&&u?.settings?.data?.rawInput;return o.call(this,{...t[0],unadjustedMovement:n})}),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement?window.chrome.webview.postMessage("throttle, game"):(window.chrome.webview.postMessage("drag, true"),window.chrome.webview.postMessage("throttle, menu"))}),Ne.then(()=>{u.settings.data.hidePopularNow===!0&&(u.settings.data.hidePopularNow=!1,window.chrome.webview.postMessage("set-config, hidePopularNow, false"),u.settings.data.cleanUI=!0,window.chrome.webview.postMessage("set-config, cleanUI, true")),u.settings.data.cleanUI&&Promise.resolve().then(()=>ue(ui(),1)).then(t=>{let o=document.createElement("style");o.id="kute_cleanCSS",o.textContent=t.default,document.head.append(o)})}),Ne.then(()=>{u.settings.data.classicMenu&&Promise.resolve().then(()=>ue(pi(),1)).then(t=>{let o=document.createElement("style");o.id="kute_classicMenuCSS",o.textContent=t.default,document.head.append(o)})})},{once:!0});Object.defineProperty(window,"gameLoaded",{async set(s){if(!s||(await Ne,window.chrome.webview.postMessage("game-updated"),!Bg))return;sessionStorage.getItem("justLaunched")===null?sessionStorage.setItem("justLaunched","true"):sessionStorage.setItem("justLaunched","false"),Bg=!1,localStorage.setItem("logs","true"),U("#compBtnLst").insertAdjacentHTML("beforeend",`
      color_lens
      -
      star
      `);let e;for(let i of U("#clientExit .menuItemTitle").classList)if(i.startsWith("svelte-")){e=i;break}U("#menuItemContainer").lastElementChild?.insertAdjacentHTML("beforebegin",``);let t=document.querySelector(".whats-new-version")?.className,o=t?`class="${t}"`:'style="font-size:.7em;font-weight:700;color:rgba(255,255,255,.5)"',n=d.version?` - v${d.version}`:"";U("#clientExit").insertAdjacentHTML("beforebegin",``),Promise.resolve().then(()=>Qu()),Promise.resolve().then(()=>Fg()),Promise.resolve().then(()=>Pa()),Promise.resolve().then(()=>fi()),Promise.resolve().then(()=>Gl()),Promise.resolve().then(()=>Jd()),Promise.resolve().then(()=>la()),d?.settings?.data?.clanColors!==!1&&d?.settings?.data?.disableOnlineFeatures!==!0&&Promise.resolve().then(()=>(Da(),Fa)),Promise.resolve().then(()=>ma()),Promise.resolve().then(()=>ol());let r=d.settings.data.performanceMode===!0;if(r||Promise.resolve().then(()=>(va(),nh)),Promise.resolve().then(()=>Li()),Promise.resolve().then(()=>sl()),Promise.resolve().then(()=>bl()),Promise.resolve().then(()=>_a()),r||Promise.resolve().then(()=>(Yd(),Vd)),r||Promise.resolve().then(()=>(xd(),yd)),Promise.resolve().then(()=>ml()),Promise.resolve().then(()=>sd()),Promise.resolve().then(()=>No()),Promise.resolve().then(()=>Fd()),Promise.resolve().then(()=>Ya()),d.recovery&&Promise.resolve().then(()=>(Rd(),Ld)),Promise.resolve().then(()=>wd()),Promise.resolve().then(()=>wi()),Promise.resolve().then(()=>Cl()),Promise.resolve().then(()=>ad()),Promise.resolve().then(()=>ir()),d?.settings?.data?.hsSound&&Promise.resolve().then(()=>(cl(),ll)),d?.settings?.data?.betterChat&&Promise.resolve().then(()=>(ba(),ga)),d?.settings?.data?.chatLogs&&Promise.resolve().then(()=>(Ha(),za)),Promise.resolve().then(()=>ud()),Promise.resolve().then(()=>zd()),d?.settings?.data?.rankedAlert&&Promise.resolve().then(()=>($d(),Ed)),d?.settings?.data?.hpEnemyCounter&&Promise.resolve().then(()=>(il(),rl)),d?.settings?.data?.accountManager&&Promise.resolve().then(()=>(Ti(),Mi)),d?.settings?.data?.market!==!1&&d?.settings?.data?.disableOnlineFeatures!==!0&&Promise.resolve().then(()=>(Cr(),Zc)).catch(()=>{}),d?.settings?.data?.showPing&&Promise.resolve().then(()=>(Kd(),qd)),d?.settings?.data?.realPing&&Promise.resolve().then(()=>(Td(),Md)),d?.settings?.data?.exitButton&&(U("#clientExit").style.display="flex"),Promise.resolve().then(()=>Nd()),d?.settings?.data?.spotifyOverlay&&d.hostFeatures?.includes("spotify")&&Promise.resolve().then(()=>(Gd(),Ud)),d?.settings?.data?.motionBlur&&Promise.resolve().then(()=>(fd(),md)),d?.settings?.data?.keystrokes&&Promise.resolve().then(()=>(xl(),yl)),d.hostFeatures?.includes("custom-sky")&&Promise.resolve().then(()=>(ja(),Ka)),d.hostFeatures?.includes("appimage-update")&&Promise.resolve().then(()=>(Ll(),Al)).catch(()=>{}),d?.settings?.data?.rampBoost&&!Oe()){to(!0);let i=a=>{a.data==="game-updated"&&setTimeout(()=>{Oe()&&(window.chrome.webview.removeEventListener("message",i),to(!1))},2e3)};window.chrome.webview.addEventListener("message",i)}if(d?.settings.data?.hideBundles){let i=window.bundlePopup;window.bundlePopup=(...a)=>{let l=document.querySelector("#windowHolder");l&&l.style.display!=="none"&&U("#windowHeader").textContent==="Store"&&i(...a)}}if(setTimeout(()=>{sessionStorage.getItem("justLaunched")==="true"&&d?.launchArgs&&d.parseArgs(d.launchArgs)},2e3),d?.settings.data?.autoSpec){let i=0,a=()=>{let l=window.getGameActivity();if(l.map===null){++i<600&&setTimeout(a,100);return}l.custom||window.setSpect(!0)};a()}if(d?.settings.data?.discordRPC&&window.chrome.webview.addEventListener("message",i=>{i.data==="game-updated"&&setTimeout(()=>{let a=window.getGameActivity();window.chrome.webview.postMessage(`rpc-update, ${a.mode}, ${a.map}`)},2e3)}),d?.settings.data?.textSelect){let i=document.createElement("style");i.id="kute_textSelectCSS",i.textContent="#chatHolder * { user-select: text }",document.head.append(i)}}});})(); +
      star
      `);let e;for(let i of U("#clientExit .menuItemTitle").classList)if(i.startsWith("svelte-")){e=i;break}U("#menuItemContainer").lastElementChild?.insertAdjacentHTML("beforebegin",``);let t=document.querySelector(".whats-new-version")?.className,o=t?`class="${t}"`:'style="font-size:.7em;font-weight:700;color:rgba(255,255,255,.5)"',n=u.version?` - v${u.version}`:"";U("#clientExit").insertAdjacentHTML("beforebegin",``),Promise.resolve().then(()=>Yu()),Promise.resolve().then(()=>_g()),Promise.resolve().then(()=>Ra()),Promise.resolve().then(()=>mi()),Promise.resolve().then(()=>jl()),Promise.resolve().then(()=>Wd()),Promise.resolve().then(()=>aa()),u?.settings?.data?.clanColors!==!1&&u?.settings?.data?.disableOnlineFeatures!==!0&&Promise.resolve().then(()=>(Da(),Oa)),Promise.resolve().then(()=>ha()),Promise.resolve().then(()=>tl());let r=u.settings.data.performanceMode===!0;if(r||Promise.resolve().then(()=>(ba(),eh)),Promise.resolve().then(()=>Ai()),Promise.resolve().then(()=>ol()),Promise.resolve().then(()=>gl()),Promise.resolve().then(()=>Na()),r||Promise.resolve().then(()=>(Ud(),jd)),r||Promise.resolve().then(()=>(vd(),bd)),Promise.resolve().then(()=>hl()),Promise.resolve().then(()=>Qc()),Promise.resolve().then(()=>Po()),Promise.resolve().then(()=>Bd()),Promise.resolve().then(()=>Va()),u.recovery&&Promise.resolve().then(()=>(Md(),Cd)),Promise.resolve().then(()=>fd()),Promise.resolve().then(()=>vi()),Promise.resolve().then(()=>$l()),Promise.resolve().then(()=>sd()),Promise.resolve().then(()=>rr()),u?.settings?.data?.hsSound&&Promise.resolve().then(()=>(ll(),al)),u?.settings?.data?.betterChat&&Promise.resolve().then(()=>(ga(),fa)),u?.settings?.data?.chatLogs&&Promise.resolve().then(()=>(za(),Ba)),Promise.resolve().then(()=>ad()),Promise.resolve().then(()=>Id()),u?.settings?.data?.rankedAlert&&Promise.resolve().then(()=>(yd(),kd)),u?.settings?.data?.hpEnemyCounter&&Promise.resolve().then(()=>(rl(),nl)),u?.settings?.data?.accountManager&&Promise.resolve().then(()=>(Mi(),Ci)),u?.settings?.data?.market!==!1&&u?.settings?.data?.disableOnlineFeatures!==!0&&Promise.resolve().then(()=>($r(),Vc)).catch(()=>{}),u?.settings?.data?.showPing&&Promise.resolve().then(()=>(Od(),Hd)),u?.settings?.data?.realPing&&Promise.resolve().then(()=>(Ed(),Sd)),u?.settings?.data?.exitButton&&(U("#clientExit").style.display="flex"),Promise.resolve().then(()=>Ld()),u?.settings?.data?.spotifyOverlay&&u.hostFeatures?.includes("spotify")&&Promise.resolve().then(()=>(qd(),Fd)),u?.settings?.data?.motionBlur&&Promise.resolve().then(()=>(ud(),dd)),u?.settings?.data?.keystrokes&&Promise.resolve().then(()=>(yl(),kl)),u.hostFeatures?.includes("custom-sky")&&Promise.resolve().then(()=>(Ka(),qa)),u.hostFeatures?.includes("appimage-update")&&Promise.resolve().then(()=>(Al(),Tl)).catch(()=>{}),u?.settings?.data?.rampBoost&&!He()){Zt(!0);let i=a=>{a.data==="game-updated"&&setTimeout(()=>{He()&&(window.chrome.webview.removeEventListener("message",i),Zt(!1))},2e3)};window.chrome.webview.addEventListener("message",i)}if(u?.settings.data?.hideBundles){let i=window.bundlePopup;window.bundlePopup=(...a)=>{let l=document.querySelector("#windowHolder");l&&l.style.display!=="none"&&U("#windowHeader").textContent==="Store"&&i(...a)}}if(setTimeout(()=>{sessionStorage.getItem("justLaunched")==="true"&&u?.launchArgs&&u.parseArgs(u.launchArgs)},2e3),u?.settings.data?.autoSpec){let i=0,a=()=>{let l=window.getGameActivity();if(l.map===null){++i<600&&setTimeout(a,100);return}l.custom||window.setSpect(!0)};a()}if(u?.settings.data?.discordRPC&&window.chrome.webview.addEventListener("message",i=>{i.data==="game-updated"&&setTimeout(()=>{let a=window.getGameActivity();window.chrome.webview.postMessage(`rpc-update, ${a.mode}, ${a.map}`)},2e3)}),u?.settings.data?.textSelect){let i=document.createElement("style");i.id="kute_textSelectCSS",i.textContent="#chatHolder * { user-select: text }",document.head.append(i)}}});})(); From 877ad8d4af8db264872e6697bd375130e06af518 Mon Sep 17 00:00:00 2001 From: "NullDev (Shadow)" Date: Fri, 23 Oct 2026 13:24:43 +0200 Subject: [PATCH 07/18] rebuild bundle --- target/bundle.js | 328 ++++++++++++++++++++++++----------------------- 1 file changed, 165 insertions(+), 163 deletions(-) diff --git a/target/bundle.js b/target/bundle.js index 17cd718c..f82f7fed 100644 --- a/target/bundle.js +++ b/target/bundle.js @@ -1,5 +1,5 @@ -"use strict";(()=>{var Fg=Object.create;var _r=Object.defineProperty;var qg=Object.getOwnPropertyDescriptor;var Kg=Object.getOwnPropertyNames;var jg=Object.getPrototypeOf,Ug=Object.prototype.hasOwnProperty;var iu=s=>e=>{var t=s[e];if(t)return t();throw new Error("Module not found in bundle: "+e)};var w=(s,e,t)=>()=>{if(t)throw t[0];try{return s&&(e=s(s=0)),e}catch(o){throw t=[o],o}};var we=(s,e)=>()=>{try{return e||s((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},A=(s,e)=>{for(var t in e)_r(s,t,{get:e[t],enumerable:!0})},Gg=(s,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Kg(e))!Ug.call(s,n)&&n!==t&&_r(s,n,{get:()=>e[n],enumerable:!(o=qg(e,n))||o.enumerable});return s};var ue=(s,e,t)=>(t=s!=null?Fg(jg(s)):{},Gg(e||!s||!s.__esModule?_r(t,"default",{value:s,enumerable:!0}):t,s));var Tt,Xo=w(()=>{Tt={autoDetect:{name:"Auto-Detect Best Settings",id:"autoDetect",description:"Tests the client and the game on your PC for about two minutes and picks what runs best. Don't touch mouse or keyboard meanwhile. You can undo it",type:"none",category:"General",button:"Run",buttonAction:"{{kute}}.autoDetect.setUp()",requiresLogin:!0,hostFeature:"autodetect-v2"},autoDetectResult:{name:"Last Auto-Detect Result",id:"autoDetectResult",description:"See what the last run measured and changed, and undo it",type:"none",category:"General",button:"Show",buttonAction:"{{kute}}.autoDetect.showLast()"},hotkeys:{name:"Hotkeys",id:"hotkeys",description:"Change or clear Kute's own keys (new lobby, matchmaker, reload, fullscreen, chat logs) and add keys for toggles",type:"none",category:"General",button:"Change",buttonAction:"{{kute}}.hotkeys.edit()",hostFeature:"hotkeys"},performanceMode:{name:"Disable & Hide All Non-Performance Settings",id:"performanceMode",description:"Turns off everything cosmetic and hides its settings. Turn this off again and all of them come back as they were",type:"checkbox",category:"General",defaultValue:!1,needsRefresh:!0,hostFeature:"performance-mode"},startMode:{name:"Start Mode",id:"startMode",description:"How the window opens when Kute starts",type:"select",category:"General",defaultValue:"Remember Previous",options:["Remember Previous","Borderless Fullscreen","Windowed","Maximized"]},gameFpsLimit:{name:"FPS Limit",id:"gameFpsLimit",description:"Caps your FPS to save power and heat. 0 means unlimited",type:"slider",category:"General",defaultValue:0,min:0,max:2e3,step:5},discordRPC:{name:"Discord Rich Presence",id:"discordRPC",description:"Shows your current mode and map on your Discord profile",type:"checkbox",category:"General",defaultValue:!0,needsRestart:!0},accountManager:{name:"Account Manager",id:"accountManager",description:"Save your Krunker accounts and switch between them from the menu",type:"checkbox",category:"General",defaultValue:!0},market:{name:"Kute Market",id:"market",description:"Enables market and trading features: K values, liquidity grades, trade verdicts and the market analyzer. In return, you allow Kute to see trading stats.",type:"checkbox",category:"General",defaultValue:!0,disabledBy:"disableOnlineFeatures"},obsCapturePlugin:{name:"OBS Capture Plugin",id:"obsCapturePlugin",platforms:["windows"],description:"Adds a Kute Capture source to OBS (close OBS first). For sound, add an Application Audio Capture of 'Kute audio window'",type:"checkbox",category:"General",defaultValue:!1},rawInput:{name:"Raw Input",id:"rawInput",platforms:["windows"],description:"Mouse movement comes straight from the device, without Windows pointer acceleration, and all of it reaches the game, also when you click or scroll mid-flick. Krunker's own Raw Mouse Input follows this setting",type:"checkbox",category:"Game",defaultValue:!0,needsRefresh:!0},rampBoost:{name:"Ramp Boosting",id:"rampBoost",description:"Scrolling makes you jump, for easier ramp boosts. Off in competitive. Turn it off if another tool already does this",type:"checkbox",category:"Game",defaultValue:!1},autoSpec:{name:"Auto Spectate",id:"autoSpec",description:"Joins public matches as a spectator instead of a player",type:"checkbox",category:"Game",defaultValue:!1},hsSound:{name:"Headshot Sound on Every Kill",id:"hsSound",performance:!1,description:"Plays the headshot sound on every kill, not just headshots",category:"Game",type:"checkbox",defaultValue:!1},hpEnemyCounter:{name:"Hardpoint Enemy Counter",id:"hpEnemyCounter",performance:!1,description:"Shows how many enemies are on the point in competitive Hardpoint",type:"checkbox",category:"Game",defaultValue:!0},showPing:{name:"Player List Ping",id:"showPing",performance:!1,description:"Shows everyone's ping next to their name in the player list",type:"checkbox",category:"Game",defaultValue:!0,needsRefresh:!0},realPing:{name:"Real Ping\u2122\uFE0F",id:"realPing",description:"Pings the lobby server directly and shows your real latency",type:"checkbox",category:"Game",defaultValue:!1,needsRestart:!0},matchmaker:{name:"Matchmaker (F6)",id:"matchmaker",description:"F6 joins the lowest ping lobby that matches your filters instead of a random one",type:"checkbox",category:"Game",defaultValue:!0,button:"Filters",buttonAction:"{{kute}}.matchmaker.showFilters()"},rankedAlert:{name:"Ranked Match Alert",id:"rankedAlert",description:"When Krunker's ranked queue finds a match while you are tabbed out, Kute comes to the front",type:"checkbox",category:"Game",defaultValue:!0,button:"Sound",buttonAction:"{{kute}}.queueSound.showOptions()"},accountEndMessage:{name:"Match End Message per Account",id:"accountEndMessage",description:"Remembers Krunker's Match End Message per account, an account without one sends nothing",type:"checkbox",category:"Game",defaultValue:!1,requiresLogin:!0},exitButton:{name:"Exit Button",id:"exitButton",performance:!1,description:"Adds an Exit button to the menu",type:"checkbox",category:"Interface",defaultValue:!0},menuTimer:{name:"Menu Timer",id:"menuTimer",performance:!1,description:"Shows the match timer while you are in the menu",type:"checkbox",category:"Interface",defaultValue:!0},classicMenu:{name:"Classic Menu",id:"classicMenu",performance:!1,description:"Season 9 menu layout, new buttons and features stay",type:"checkbox",category:"Interface",defaultValue:!1},betterChat:{name:"Better Chat",id:"betterChat",performance:!1,description:"Team and all chat in one view. Press Tab to switch where you send",type:"checkbox",category:"Interface",defaultValue:!0},chatLogs:{name:"Chat Logs",id:"chatLogs",description:"Keeps the last 2000 chat lines, also across lobbies, to search and copy. F1 opens them, change it in Hotkeys",type:"checkbox",category:"Interface",defaultValue:!0,button:"Open",buttonAction:"{{kute}}.chatLogs?.open()"},textSelect:{name:"Selectable Chat",id:"textSelect",performance:!1,description:"Lets you select and copy text from the chat",type:"checkbox",category:"Interface",defaultValue:!0},cleanUI:{name:"Cleaner Menu",id:"cleanUI",description:"Hides ads, promos, the Popular Now row and other clutter in the menu",type:"checkbox",category:"Interface",defaultValue:!1},hideBundles:{name:"Hide Bundle Popups",id:"hideBundles",description:"Stops store bundle popups from showing up outside the store",type:"checkbox",category:"Interface",defaultValue:!1},clanColors:{name:"Show Clan Colors",id:"clanColors",performance:!1,description:"Colors the tags of some clans in the player lists",type:"checkbox",category:"Interface",defaultValue:!0,disabledBy:"disableOnlineFeatures"},cuteBadge:{name:"Show Kute Badge",id:"cuteBadge",description:"Shows a badge next to other Kute players. This only affects what you see, others still see yours",type:"checkbox",category:"Interface",defaultValue:!0,disabledBy:"disableOnlineFeatures"},kuteIcons:{name:"Use Kute Icons",id:"kuteIcons",performance:!1,description:"Kute's own icons for counters, ammo, hitmarker, reticle and scope. Your game settings stay untouched",type:"checkbox",category:"Interface",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.kuteIcons.customize()"},hudLayout:{name:"HUD Editor",id:"hudLayout",description:"Move, resize and hide parts of the in-game HUD. Opens a private match while you edit",type:"none",category:"Interface",button:"Edit",buttonAction:"{{kute}}.hudEditor.edit()",requiresLogin:!0},keystrokes:{name:"Keystrokes",id:"keystrokes",performance:!1,description:"Shows your movement keys and mouse in the HUD and lights them up while pressed. Move it with the HUD Editor",type:"checkbox",category:"Interface",defaultValue:!1},spotifyOverlay:{name:"Spotify Overlay",id:"spotifyOverlay",performance:!1,description:"Shows the currently playing Spotify track in the HUD. Move and resize it with the HUD Editor",type:"checkbox",category:"Interface",defaultValue:!1,hostFeature:"spotify"},nukeCounter:{name:"Nuke Counter",id:"nukeCounter",performance:!1,description:"Shows your career nuke total in game. It updates when a match ends",type:"checkbox",category:"Interface",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.nukeCounter.showOptions()"},renderStats:{name:"Present FPS Counter",id:"renderStats",description:"The game counter shows how fast your PC runs the game, this adds the frames that reach your screen",type:"checkbox",category:"Interface",defaultValue:!1,needsRestart:!0,requires:"hardFlip"},kuteCss:{name:"Kute CSS",id:"kuteCss",performance:!1,description:"Kute's own look for menus, settings, HUD and social, with a few cats",type:"checkbox",category:"Customization",defaultValue:!1},motionBlur:{name:"Motion Blur",id:"motionBlur",performance:!1,description:"A slight blur while you turn the camera, the HUD stays sharp. Costs FPS: about 5 % fewer while it blurs",type:"checkbox",category:"Customization",defaultValue:!1},motionBlurStrength:{name:"Motion Blur Strength",id:"motionBlurStrength",performance:null,description:"How long the trail is when Motion Blur is on",type:"slider",category:"Customization",defaultValue:40,min:10,max:100,step:5},customSky:{name:"Custom Sky",id:"customSky",performance:!1,description:"Your own sky color gradient or image on every map. Applies from the next match",type:"checkbox",category:"Customization",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.customSky.showOptions()",hostFeature:"custom-sky"},swapper:{name:"Resource Swapper",id:"swapper",performance:!1,description:"Replaces game files like textures and sounds with the files in your swapper folder",type:"checkbox",category:"Customization",defaultValue:!0,button:"Manage",buttonAction:"{{kute}}.swapperManager.open()",needsRefresh:!0},customCss:{name:"CSS Manager",id:"customCss",performance:!1,description:"Your own CSS on top of Krunker's. Keep several files and switch between them, with a live preview",type:"checkbox",category:"Customization",defaultValue:!0,button:"Edit",buttonAction:"{{kute}}.customCss.open()"},userscripts:{name:"Userscripts",id:"userscripts",description:"Runs your own scripts. Crankshaft and idkr scripts work too",type:"checkbox",category:"Customization",defaultValue:!0,button:"Manage",buttonAction:"{{kute}}.userscriptManager.open()"},blocklist:{name:"URL Blocklist",id:"blocklist",description:"Blocks ads and trackers. Open the file to add your own entries",type:"checkbox",category:"Customization",defaultValue:!0,button:"Open file",buttonAction:"window.chrome.webview.postMessage('open, blocklist')",needsRestart:!0},disableCats:{name:"Disable Cats",id:"disableCats",performance:!0,description:"Blocks the cat models in the maps",type:"checkbox",category:"Customization",defaultValue:!0,needsRefresh:!0},disableVideoSkins:{name:"Disable Video Skins",id:"disableVideoSkins",performance:!0,description:"Video skins like Glitch are not loaded and show black instead, which can save FPS",type:"checkbox",category:"Customization",defaultValue:!1,needsRefresh:!0,hostFeature:"video-skins"},uncapFps:{name:"Uncap FPS",id:"uncapFps",description:"Removes the FPS cap at your monitor's refresh rate",type:"checkbox",category:"Advanced",defaultValue:!0,needsRestart:!0},audioFix:{name:"Fix Audio Stutters",id:"audioFix",description:"For sound that cuts out at high FPS. Moves sounds every 8 ms instead of every sample",type:"checkbox",category:"Advanced",defaultValue:!1,needsRestart:!0,hostFeature:"audio-fix"},angleBackend:{name:"Graphics Backend (ANGLE)",id:"angleBackend",platforms:["windows"],description:"Leave it on Default (D3D11). OpenGL and Vulkan turn off everything the swapchain hook does",type:"select",category:"Advanced",defaultValue:"Default",needsRestart:!0,options:["Default","D3D11","D3D11on12","OpenGL","Vulkan"]},displayServer:{name:"Display Server",id:"displayServer",platforms:["linux"],description:"Leave it on X11, it runs much faster than Wayland for now. X11 also works inside a Wayland session",type:"select",category:"Advanced",defaultValue:"X11",needsRestart:!0,options:["X11","Wayland"]},colorProfile:{name:"Color Profile",id:"colorProfile",description:"Try sRGB if colors look washed out or too strong",type:"select",category:"Advanced",defaultValue:"Default",needsRestart:!0,options:["Default","sRGB","Display P3 D65","Extended sRGB","scRGB linear","HDR10"]},webviewPriority:{name:"Process Priority",id:"webviewPriority",description:"Higher can help a little, but may make your PC less stable",type:"select",category:"Advanced",defaultValue:"Normal",needsRestart:!0,options:["High","Above Normal","Normal","Below Normal","Low","Idle"]},x3dCacheCores:{name:"Keep Kute on the 3D V-Cache cores",id:"x3dCacheCores",description:"Ryzen X3D with two core groups only: steadier frame pacing on the cores with the big cache",type:"checkbox",category:"Advanced",defaultValue:!0,needsRestart:!0,hostFeature:"x3d-cores"},throttle:{name:"CPU Throttling",id:"throttle",description:"Slows the game down on purpose (2 = half speed). Only for an unstable game, an FPS limit is usually better",type:"slider",min:1,max:3,step:.01,category:"Advanced",defaultValue:1},inMenuThrottle:{name:"CPU Throttling in Menu",id:"inMenuThrottle",description:"Same, but only in the menu. It also slows the match that runs behind the menu",type:"slider",min:1,max:3,step:.01,category:"Advanced",defaultValue:1},clearCache:{name:"Clear Cache & Storage",id:"clearCache",description:"Deletes the cache and local storage. This also resets your game settings",type:"none",category:"Advanced",button:"Clear Now",buttonAction:"if(confirm('Are you sure you want to clear cache and local storage?')) { localStorage.clear(); sessionStorage.clear(); window.chrome.webview.postMessage('clear-cache'); }"},hardFlip:{name:"DXGI Swapchain Hook",id:"hardFlip",platforms:["windows"],description:"Present FPS counter and OBS capture. Laptops with two graphics chips may run better without it",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0},laptopPowerBoost:{name:"Laptop Power Boost",id:"laptopPowerBoost",description:"Plugged in laptops only: switches the power mode to performance while Kute runs and puts yours back after",type:"checkbox",category:"Engine",defaultValue:!0,hostFeature:"hybrid-gpu"},primeOffload:{name:"NVIDIA PRIME Offload",id:"primeOffload",platforms:["linux"],description:"Hybrid laptops with the NVIDIA driver: the game renders on the NVIDIA chip instead of the built in one",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"prime-offload"},patchInputPriority:{name:"Input at Normal Priority",id:"patchInputPriority",description:"Chromium patch: mouse input no longer starves the game's server messages. Off brings back the aim freeze",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchFramePacing:{name:"Frame Pacing",id:"patchFramePacing",description:"Chromium patch: the game runs one frame ahead of the screen instead of flooding it. Off brings back the GPU stutter",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchFrameLimiter:{name:"Chromium FPS Limiter",id:"patchFrameLimiter",description:"Chromium patch: holds the FPS limit inside Chromium with the CPU idle, with or without the hook. Off uses the hook's limiter, or a busy wait without the hook",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchRawInputMovement:{name:"Raw Input Keeps Movement",id:"patchRawInputMovement",platforms:["windows"],description:"Chromium patch: no mouse movement is lost on a click. Off drops a few counts at every shot",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchAudioParamCoalesce:{name:"Coalesce Audio Automation",id:"patchAudioParamCoalesce",description:"Chromium patch: the game's per frame sound updates no longer pile up. Off makes FPS drop over a long match",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchCanvasBufferCache:{name:"WebGL Buffer Cache",id:"patchCanvasBufferCache",description:"Chromium patch: keeps three spare frame buffers instead of one. Off makes some starts land in a slow mode",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchHighQoS:{name:"Game Process at High QoS",id:"patchHighQoS",platforms:["windows"],description:"Chromium patch: Windows may not throttle the game's process to save power. Off leaves that to Windows",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},showChangelog:{name:"Show Changelog After Updates",id:"showChangelog",description:"Shows what's new after Kute updates",type:"checkbox",button:"Show Now",buttonAction:"{{kute}}.showChangelogPopup({{kute}}.version)",category:"About",defaultValue:!0},disableOnlineFeatures:{name:"Disable Kute Online Features",id:"disableOnlineFeatures",description:"Nothing is sent to or received from kute.lol. Turns off all Kute badges (yours too) and clan colors",type:"checkbox",category:"About",defaultValue:!1,needsRestart:!0},checkUpdates:{name:"Check For Updates",id:"checkUpdates",description:"Looks for a new Kute version when it starts",type:"checkbox",category:"About",defaultValue:!0,needsRestart:!0},exportClientSettings:{name:"Export Kute Settings",id:"exportClientSettings",description:"Saves Kute's settings, HUD positions, matchmaker filters and hotkeys as a file in Downloads",type:"none",category:"About",button:"Export",buttonAction:"{{kute}}.settingsTransfer.exportFile()"},importClientSettings:{name:"Import Kute Settings",id:"importClientSettings",description:"Loads a file from Export Kute Settings and restarts Kute",type:"none",category:"About",button:"Import",buttonAction:"{{kute}}.settingsTransfer.importFile()"},diagnosticsReport:{name:"Diagnostics Report",id:"diagnosticsReport",description:"Puts what helps fix a problem into one file you can send. You see all of it first, nothing is uploaded",type:"none",category:"About",button:"Create",buttonAction:"{{kute}}.diagnostics.open()",hostFeature:"diagnostics"}}});function $o(s,e){return s.performanceMode===!0&&e in lu}function cu(s){return{...s,...Eo}}function pn(s,e){let t=[];for(let[o,n]of Object.entries(lu)){if(n===null)continue;let r=s[o];e?(o in Eo||(Eo[o]=r),s[o]=n):o in Eo&&(s[o]=Eo[o],delete Eo[o]),s[o]!==r&&t.push(o)}return t}var lu,Eo,Co=w(()=>{"use strict";Xo();lu=Object.fromEntries(Object.values(Tt).filter(s=>s.performance!==void 0).map(s=>[s.id,s.performance??null])),Eo={}});function Yg(s){let e="abcdefghijklmnopqrstuvwxyz",t=crypto.getRandomValues(new Uint8Array(s));return Array.from(t,o=>e[o%e.length]).join("")}var u,Ne,du,Ue,D=w(()=>{"use strict";Xo();Co();u={},Ne=new Promise(s=>{function e(t){if(t?.data?.settings||t?.data?.version){if(window.chrome.webview.removeEventListener("message",e),Object.assign(u,t.data),u.settings?.data)for(let o of Object.values(Tt))o.defaultValue!==void 0&&!(o.id in u.settings.data)&&(u.settings.data[o.id]=o.defaultValue);u.settings?.data&&pn(u.settings.data,u.settings.data.performanceMode===!0),s(u)}}window.chrome.webview.addEventListener("message",e),window.chrome.webview.postMessage("get-info")}),du=Yg(12);Object.defineProperty(window,du,{value:u,enumerable:!1,writable:!1,configurable:!1});Ue=`window["${du}"]`});function Te(s,e,t=2e3){return new Promise(o=>{let n={timer:0},r=i=>{i.data?.[e]!==void 0&&(clearTimeout(n.timer),window.chrome.webview.removeEventListener("message",r),o(i.data[e]))};n.timer=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),o(null)},t),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(s)})}var Br,$e,U,ke,He,Ae=w(()=>{"use strict";Br=(s,e,t)=>{let o=s.prototype[e];s.prototype[e]=function(...n){let r=t.call(this,n,o);return r===void 0?o.apply(this,n):r}},$e=(s,e=3e4)=>new Promise((t,o)=>{let n=document.querySelector(s);if(n){t(n);return}let r={timer:0},i=new MutationObserver(()=>{let a=document.querySelector(s);a&&(clearTimeout(r.timer),i.disconnect(),t(a))});r.timer=setTimeout(()=>{i.disconnect(),o(new Error(`element never showed up: ${s}`))},e),i.observe(document.body,{childList:!0,subtree:!0})}),U=(s,e=document)=>{let t=e.querySelector(s);if(!t)throw new Error(`element not found: ${s}`);return t},ke=(s,e=document)=>U(s,e),He=()=>!!document.querySelector(".cmpTmHed")});var pu={};A(pu,{setRampBoost:()=>Zt,syncScrollBinds:()=>Hr});function Zt(s){uu=s,window.chrome.webview.postMessage(`toggle-rboost, ${s}`)}function Hr(){let s=!1;try{s=Object.keys(localStorage).some(e=>e.startsWith("cont_")&&localStorage.getItem(e)===Xg)}catch{return}s!==zr&&(zr=s,u.hostFeatures?.includes("scroll-binds")&&window.chrome.webview.postMessage(`wheel-to-page, ${s}`))}var Xg,uu,zr,hn=w(()=>{"use strict";D();Xg="20000",uu=!1;window.addEventListener("wheel",s=>{!uu||!document.pointerLockElement||!u.hostFeatures?.includes("ramp-boost")||(zr||(s.stopImmediatePropagation(),s.preventDefault()),window.chrome.webview.postMessage(`ramp-wheel, ${(s.deltaY||s.deltaX)<0?1:-1}`))},{capture:!0,passive:!1})});var fu={};A(fu,{claimAltShoot:()=>Dr,hostSupports:()=>fn,prepareShootBind:()=>Fr,syncLeftClick:()=>Zo});function Or(s){return Number(localStorage.getItem(s)??-1)}function mu(){let s=Or(mn);return s!==-1&&s!==Jo}function fn(){return u.hostFeatures?.includes(Zg)===!0}function Dr(){return!mu()||!fn()}function Fr(){if(!mu()){localStorage.setItem(mn,String(Jo));return}Ne.then(()=>{fn()||localStorage.setItem(mn,String(Jo))})}function Zo(){if(!fn())return;let s=Or(mn)===Jo||Or(Jg)===Jo;s!==hu&&(hu=s,window.chrome.webview.postMessage(`left-click-f20, ${s}`))}var Jo,mn,Jg,Zg,hu,gn=w(()=>{"use strict";D();Jo=131,mn="cont_shoot1Key_alt",Jg="cont_shoot1Key",Zg="left-click-f20"});var bu={};A(bu,{SLOTS:()=>Mo,postUrls:()=>Qt});function qr(s){try{return localStorage.getItem(s)}catch{return null}}function eb(s){try{let e=JSON.parse(qr(s)??"[]");return Array.isArray(e)?e.map(t=>Array.isArray(t)?t[1]:null).filter(t=>typeof t=="string").slice(0,Qg):[]}catch{return[]}}function Qt(){let s={};for(let t of Mo){let o=[];for(let i of t.settings)o.push(qr(`kro_setngss_${i}`)??"");for(let i of t.keys??[])o.push(qr(i)??"");for(let i of t.lists??[])o.push(...eb(i));let n=t.element?document.getElementById(t.element):null;n instanceof HTMLImageElement&&o.push(n.src);let r=[...new Set(o)].filter(i=>i.startsWith("http"));r.length>0&&(s[t.id]=r)}let e=JSON.stringify(s);e!==gu&&(gu=e,window.chrome.webview.postMessage(`icon-urls ${e}`))}var Qo,Mo,Qg,gu,bn=w(()=>{"use strict";Qo={id:"showUI",name:"Show UI",kind:"checkbox"},Mo=[{id:"kills",file:"kills.png",name:"Kill counter",settings:["customKills"],element:"killsIcon",hiddenBy:[Qo,{id:"showKillC",name:"Show Kill Counter",kind:"checkbox"}]},{id:"deaths",file:"deaths.png",name:"Death counter",settings:["customDeaths"],element:"deathsIcon",hiddenBy:[Qo,{id:"showDeaths",name:"Show Death Counter",kind:"checkbox"}]},{id:"streak",file:"streak.png",name:"Streak counter",settings:["customStreak"],element:"streakIcon",hiddenBy:[Qo,{id:"showStreak",name:"Show Streak Counter",kind:"checkbox"}]},{id:"kdr",file:"kdr.png",name:"K/D counter",settings:[],element:"kdIcon",hiddenBy:[Qo,{id:"showKD",name:"Show K/D Counter",kind:"checkbox"}]},{id:"ammo",file:"ammo.png",name:"Ammo",settings:["customAmmo"],element:"ammoIcon",hiddenBy:[Qo]},{id:"hitmarker",file:"hitmarker.png",name:"Hitmarker",settings:["customHitmarker"],hiddenBy:[{id:"hitm",name:"Hitmarker: Show",kind:"checkbox"},{id:"hitOpac",name:"Hitmarker: Opacity",kind:"opacity"}]},{id:"reticle",file:"reticle.png",name:"Reticle",settings:[],keys:["savedReticle"],lists:["krk_custRet"],element:"aimDot",hiddenBy:[]},{id:"scope",file:"scope.png",name:"Scope",settings:[],keys:["savedScope"],lists:["krk_custScps"],element:"recticleImg",hiddenBy:[{id:"scopeOpac",name:"Scope Opacity",kind:"opacity"}]}],Qg=30;gu=""});var vu={};A(vu,{canLoadLive:()=>At,loadScripts:()=>To,registry:()=>Je});var Je,At,To,es=w(()=>{"use strict";D();Je=window.__kuteUserscripts??null,At=()=>!!(Je&&u.hostFeatures?.includes("userscripts-live")),To=(s,e,t)=>{window.chrome.webview.postMessage(`scripts-load ${JSON.stringify({...s?{keys:s}:{},replace:e,start:t})}`)}});var ku={};A(ku,{default:()=>Lt,hostSupportsCustomCss:()=>ts});var wu,ts,Kr,Lt,vn=w(()=>{"use strict";D();wu=/@import\s+(?:url\([^)]*\)|"[^"]*"|'[^']*')[^;]*;?/gi,ts=()=>u.hostFeatures?.includes("custom-css")??!1,Kr=class{constructor(){this.saved=String(window.__kuteCustomCss??""),this.enabled=!0,this.sheet=null,this.importStyle=null,this.importText="",this.waitingForBody=!1,this.saved&&this.apply(this.saved),Ne.then(()=>{u.settings.toggleCustomCss=e=>this.toggle(e),u.settings.data.customCss===!1?this.toggle(!1):!this.saved&&ts()&&this.load().then(e=>this.apply(e))})}load(){return new Promise(e=>{let t=o=>{typeof o.data?.customCss?.content=="string"&&(window.chrome.webview.removeEventListener("message",t),this.saved=o.data.customCss.content,e(this.saved))};window.chrome.webview.addEventListener("message",t),window.chrome.webview.postMessage("css-read")})}apply(e){if(!this.enabled)return;let t=e.match(wu)??[],o=t.length?e.replace(wu,""):e;if(!this.sheet){if(!o.trim())return;this.sheet=new CSSStyleSheet,document.adoptedStyleSheets=[...document.adoptedStyleSheets,this.sheet]}this.sheet.replaceSync(o),this.setImports(t.join(` -`))}setImports(e){if(this.importText=e,!(!e&&!this.importStyle)){if(document.readyState==="loading"){if(this.waitingForBody)return;this.waitingForBody=!0,document.addEventListener("DOMContentLoaded",()=>this.setImports(this.importText),{once:!0});return}this.importStyle||(this.importStyle=document.createElement("style"),document.documentElement.append(this.importStyle)),this.importStyle.textContent!==e&&(this.importStyle.textContent=e)}}toggle(e){if(this.enabled=e,!e){this.sheet?.replaceSync(""),this.setImports("");return}this.saved?this.apply(this.saved):ts()&&this.load().then(t=>this.apply(t))}markSaved(e){this.saved=e,this.apply(e)}revert(){this.enabled&&this.apply(this.saved)}},Lt=new Kr});var $u={};A($u,{holdRestart:()=>wn,restart:()=>Ao});function Ao(){location.assign("https://krunker.io/")}function wn(s){Su=Date.now()+s}function Eu(){return localStorage.getItem(yu)!==null||document.cookie.includes(`${yu}=`)}function tb(){try{return!!window.getGameActivity?.()?.id}catch{return!1}}function ob(s){let e=Date.now(),t=0,o=setInterval(()=>{if(tb()){sessionStorage.removeItem(jr),clearInterval(o);return}if(Date.now()-e>9e4){clearInterval(o);return}if(!s||!Eu()||(t===0&&(t=Date.now()),Date.now()-t<1500))return;clearInterval(o);let n=Number(sessionStorage.getItem(jr)??0);n>=2||(sessionStorage.setItem(jr,String(n+1)),console.log("[kute] session: no lobby after the frvr login, reloading"),Ao())},1e3)}function sb(){let s=localStorage.getItem(xu)!==null,e=!1;setInterval(()=>{if(e){document.pointerLockElement||Ao();return}let t=localStorage.getItem(xu)!==null;s&&!t&&Date.now()>Su&&(e=!0,console.log("[kute] session: logged out, reloading")),s=t},1e3)}var yu,xu,jr,Su,kn=w(()=>{"use strict";yu="__FRVR_auth_refresh_token",xu="krunker_token",jr="kute_hang_reloads";Su=0;location.hostname==="krunker.io"&&location.pathname==="/"&&(ob(!Eu()),sb())});var Tu={};A(Tu,{DEFAULT_LOAD:()=>eo,cpuChecksum:()=>Vr,createScene:()=>Wr});function db(s){let e=document.createElement("canvas");e.width=640,e.height=60+s.length*34;let t=e.getContext("2d");return t&&(t.fillStyle="rgba(30, 30, 30, 0.92)",t.beginPath(),t.roundRect(0,0,e.width,e.height,18),t.fill(),t.textAlign="center",t.textBaseline="middle",s.forEach((o,n)=>{t.font=n===0?"26px Consolas, monospace":"18px Consolas, monospace",t.fillStyle=n===0?"#35e0e8":"#bbbbbb",t.fillText(o,e.width/2,48+n*34)})),e}function Cu(s,e,t){let o=s.createShader(e);if(!o)throw new Error("cannot create shader");if(s.shaderSource(o,t),s.compileShader(o),!s.getShaderParameter(o,s.COMPILE_STATUS))throw new Error(s.getShaderInfoLog(o)??"shader compile failed");return o}function Ur(s,e,t){let o=s.createProgram();if(s.attachShader(o,Cu(s,s.VERTEX_SHADER,e)),s.attachShader(o,Cu(s,s.FRAGMENT_SHADER,t)),s.linkProgram(o),!s.getProgramParameter(o,s.LINK_STATUS))throw new Error(s.getProgramInfoLog(o)??"program link failed");return o}function ub(s){let e=[],t=[];for(let o=0;o<=s;o++){let n=o/s*Math.PI;for(let r=0;r<=s;r++){let i=r/s*Math.PI*2;e.push(Math.cos(i)*Math.sin(n),Math.cos(n),Math.sin(i)*Math.sin(n))}}for(let o=0;o0?db(t):null,g=f?Ur(o,lb,cb):null,b=g?o.getUniformLocation(g,"uScale"):null,v=o.createVertexArray();f&&(o.bindVertexArray(v),o.bindBuffer(o.ARRAY_BUFFER,o.createBuffer()),o.bufferData(o.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,1]),o.STATIC_DRAW),o.enableVertexAttribArray(0),o.vertexAttribPointer(0,2,o.FLOAT,!1,0,0),o.bindVertexArray(null),o.bindTexture(o.TEXTURE_2D,o.createTexture()),o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,f),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE));let k=1337,E=()=>(k=k*1664525+1013904223>>>0,k/4294967296),L=Array.from({length:e.draws},()=>({x:(E()-.5)*80,y:(E()-.5)*50,z:(E()-.5)*40,scale:.6+E()*1.6,spin:.2+E()*1.5,red:.3+E()*.7,green:.3+E()*.7,blue:.3+E()*.7})),x=new Float32Array(16),$=new Float32Array(16),I=new Float32Array(16),_=new Float32Array(16);return $[0]=1,$[5]=1,$[10]=1,$[15]=1,$[14]=-60,{resize(H,G){s.width=Math.max(1,Math.round(H)),s.height=Math.max(1,Math.round(G)),o.viewport(0,0,s.width,s.height),pb(x,Math.PI/2,s.width/s.height,.1,500),hb(I,x,$)},render(H){let G=H*.001;fb(e.cpuIterations),o.enable(o.DEPTH_TEST),o.disable(o.BLEND),o.clearColor(.08,.09,.12,1),o.clear(o.COLOR_BUFFER_BIT|o.DEPTH_BUFFER_BIT),o.useProgram(n),o.bindVertexArray(p),o.uniformMatrix4fv(i,!1,I);for(let J of L)mb(_,J.x,J.y,J.z,G*J.spin,J.scale),o.uniformMatrix4fv(r,!1,_),o.uniform3f(a,J.red,J.green,J.blue),o.drawElements(o.TRIANGLES,h.indices.length,o.UNSIGNED_SHORT,0);o.disable(o.DEPTH_TEST),o.enable(o.BLEND),o.blendFunc(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA),o.useProgram(l),o.bindVertexArray(m),o.uniform1f(c,G);for(let J=0;J{"use strict";eo={draws:1200,meshSegments:10,overdraw:4,cpuIterations:2e5},nb=`#version 300 es +"use strict";(()=>{var Gg=Object.create;var zr=Object.defineProperty;var Wg=Object.getOwnPropertyDescriptor;var Vg=Object.getOwnPropertyNames;var Yg=Object.getPrototypeOf,Xg=Object.prototype.hasOwnProperty;var du=s=>e=>{var t=s[e];if(t)return t();throw new Error("Module not found in bundle: "+e)};var w=(s,e,t)=>()=>{if(t)throw t[0];try{return s&&(e=s(s=0)),e}catch(o){throw t=[o],o}};var we=(s,e)=>()=>{try{return e||s((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},A=(s,e)=>{for(var t in e)zr(s,t,{get:e[t],enumerable:!0})},Jg=(s,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Vg(e))!Xg.call(s,n)&&n!==t&&zr(s,n,{get:()=>e[n],enumerable:!(o=Wg(e,n))||o.enumerable});return s};var ue=(s,e,t)=>(t=s!=null?Gg(Yg(s)):{},Jg(e||!s||!s.__esModule?zr(t,"default",{value:s,enumerable:!0}):t,s));var At,Zo=w(()=>{At={autoDetect:{name:"Auto-Detect Best Settings",id:"autoDetect",description:"Tests the client and the game on your PC for about two minutes and picks what runs best. Don't touch mouse or keyboard meanwhile. You can undo it",type:"none",category:"General",button:"Run",buttonAction:"{{kute}}.autoDetect.setUp()",requiresLogin:!0,hostFeature:"autodetect-v2"},autoDetectResult:{name:"Last Auto-Detect Result",id:"autoDetectResult",description:"See what the last run measured and changed, and undo it",type:"none",category:"General",button:"Show",buttonAction:"{{kute}}.autoDetect.showLast()"},hotkeys:{name:"Hotkeys",id:"hotkeys",description:"Change or clear Kute's own keys (new lobby, matchmaker, reload, fullscreen, chat logs) and add keys for toggles",type:"none",category:"General",button:"Change",buttonAction:"{{kute}}.hotkeys.edit()",hostFeature:"hotkeys"},performanceMode:{name:"Disable & Hide All Non-Performance Settings",id:"performanceMode",description:"Turns off everything cosmetic and hides its settings. Turn this off again and all of them come back as they were",type:"checkbox",category:"General",defaultValue:!1,needsRefresh:!0,hostFeature:"performance-mode"},startMode:{name:"Start Mode",id:"startMode",description:"How the window opens when Kute starts",type:"select",category:"General",defaultValue:"Remember Previous",options:["Remember Previous","Borderless Fullscreen","Windowed","Maximized"]},gameFpsLimit:{name:"FPS Limit",id:"gameFpsLimit",description:"Caps your FPS to save power and heat. 0 means unlimited",type:"slider",category:"General",defaultValue:0,min:0,max:2e3,step:5},discordRPC:{name:"Discord Rich Presence",id:"discordRPC",description:"Shows your current mode and map on your Discord profile",type:"checkbox",category:"General",defaultValue:!0,needsRestart:!0},accountManager:{name:"Account Manager",id:"accountManager",description:"Save your Krunker accounts and switch between them from the menu",type:"checkbox",category:"General",defaultValue:!0},market:{name:"Kute Market",id:"market",description:"Enables market and trading features: K values, liquidity grades, trade verdicts and the market analyzer. In return, you allow Kute to see trading stats.",type:"checkbox",category:"General",defaultValue:!0,disabledBy:"disableOnlineFeatures"},obsCapturePlugin:{name:"OBS Capture Plugin",id:"obsCapturePlugin",platforms:["windows"],description:"Adds a Kute Capture source to OBS (close OBS first). For sound, add an Application Audio Capture of 'Kute audio window'",type:"checkbox",category:"General",defaultValue:!1},rawInput:{name:"Raw Input",id:"rawInput",platforms:["windows"],description:"Mouse movement comes straight from the device, without Windows pointer acceleration, and all of it reaches the game, also when you click or scroll mid-flick. Krunker's own Raw Mouse Input follows this setting",type:"checkbox",category:"Game",defaultValue:!0,needsRefresh:!0},rampBoost:{name:"Ramp Boosting",id:"rampBoost",description:"Scrolling makes you jump, for easier ramp boosts. Off in competitive. Turn it off if another tool already does this",type:"checkbox",category:"Game",defaultValue:!1},autoSpec:{name:"Auto Spectate",id:"autoSpec",description:"Joins public matches as a spectator instead of a player",type:"checkbox",category:"Game",defaultValue:!1},hsSound:{name:"Headshot Sound on Every Kill",id:"hsSound",performance:!1,description:"Plays the headshot sound on every kill, not just headshots",category:"Game",type:"checkbox",defaultValue:!1},hpEnemyCounter:{name:"Hardpoint Enemy Counter",id:"hpEnemyCounter",performance:!1,description:"Shows how many enemies are on the point in competitive Hardpoint",type:"checkbox",category:"Game",defaultValue:!0},showPing:{name:"Player List Ping",id:"showPing",performance:!1,description:"Shows everyone's ping next to their name in the player list",type:"checkbox",category:"Game",defaultValue:!0,needsRefresh:!0},realPing:{name:"Real Ping\u2122\uFE0F",id:"realPing",description:"Pings the lobby server directly and shows your real latency",type:"checkbox",category:"Game",defaultValue:!1,needsRestart:!0},matchmaker:{name:"Matchmaker (F6)",id:"matchmaker",description:"F6 joins the lowest ping lobby that matches your filters instead of a random one",type:"checkbox",category:"Game",defaultValue:!0,button:"Filters",buttonAction:"{{kute}}.matchmaker.showFilters()"},rankedAlert:{name:"Ranked Match Alert",id:"rankedAlert",description:"When Krunker's ranked queue finds a match while you are tabbed out, Kute comes to the front",type:"checkbox",category:"Game",defaultValue:!0,button:"Sound",buttonAction:"{{kute}}.queueSound.showOptions()"},accountEndMessage:{name:"Match End Message per Account",id:"accountEndMessage",description:"Remembers Krunker's Match End Message per account, an account without one sends nothing",type:"checkbox",category:"Game",defaultValue:!1,requiresLogin:!0},exitButton:{name:"Exit Button",id:"exitButton",performance:!1,description:"Adds an Exit button to the menu",type:"checkbox",category:"Interface",defaultValue:!0},menuTimer:{name:"Menu Timer",id:"menuTimer",performance:!1,description:"Shows the match timer while you are in the menu",type:"checkbox",category:"Interface",defaultValue:!0},classicMenu:{name:"Classic Menu",id:"classicMenu",performance:!1,description:"Season 9 menu layout, new buttons and features stay",type:"checkbox",category:"Interface",defaultValue:!1},betterChat:{name:"Better Chat",id:"betterChat",performance:!1,description:"Team and all chat in one view. Press Tab to switch where you send",type:"checkbox",category:"Interface",defaultValue:!0},chatLogs:{name:"Chat Logs",id:"chatLogs",description:"Keeps the last 2000 chat lines, also across lobbies, to search and copy. F1 opens them, change it in Hotkeys",type:"checkbox",category:"Interface",defaultValue:!0,button:"Open",buttonAction:"{{kute}}.chatLogs?.open()"},textSelect:{name:"Selectable Chat",id:"textSelect",performance:!1,description:"Lets you select and copy text from the chat",type:"checkbox",category:"Interface",defaultValue:!0},cleanUI:{name:"Cleaner Menu",id:"cleanUI",description:"Hides ads, promos, the Popular Now row and other clutter in the menu",type:"checkbox",category:"Interface",defaultValue:!1},hideBundles:{name:"Hide Bundle Popups",id:"hideBundles",description:"Stops store bundle popups from showing up outside the store",type:"checkbox",category:"Interface",defaultValue:!1},clanColors:{name:"Show Clan Colors",id:"clanColors",performance:!1,description:"Colors the tags of some clans in the player lists",type:"checkbox",category:"Interface",defaultValue:!0,disabledBy:"disableOnlineFeatures"},cuteBadge:{name:"Show Kute Badge",id:"cuteBadge",description:"Shows a badge next to other Kute players. This only affects what you see, others still see yours",type:"checkbox",category:"Interface",defaultValue:!0,disabledBy:"disableOnlineFeatures"},kuteIcons:{name:"Use Kute Icons",id:"kuteIcons",performance:!1,description:"Kute's own icons for counters, ammo, hitmarker, reticle and scope. Your game settings stay untouched",type:"checkbox",category:"Interface",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.kuteIcons.customize()"},hudLayout:{name:"HUD Editor",id:"hudLayout",description:"Move, resize and hide parts of the in-game HUD. Opens a private match while you edit",type:"none",category:"Interface",button:"Edit",buttonAction:"{{kute}}.hudEditor.edit()",requiresLogin:!0},keystrokes:{name:"Keystrokes",id:"keystrokes",performance:!1,description:"Shows your movement keys and mouse in the HUD and lights them up while pressed. Move it with the HUD Editor",type:"checkbox",category:"Interface",defaultValue:!1},spotifyOverlay:{name:"Spotify Overlay",id:"spotifyOverlay",performance:!1,description:"Shows the currently playing Spotify track in the HUD. Move and resize it with the HUD Editor",type:"checkbox",category:"Interface",defaultValue:!1,hostFeature:"spotify"},nukeCounter:{name:"Nuke Counter",id:"nukeCounter",performance:!1,description:"Shows your career nuke total in game. It updates when a match ends",type:"checkbox",category:"Interface",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.nukeCounter.showOptions()"},renderStats:{name:"Present FPS Counter",id:"renderStats",description:"The game counter shows how fast your PC runs the game, this adds the frames that reach your screen",type:"checkbox",category:"Interface",defaultValue:!1,needsRestart:!0,requires:"hardFlip"},kuteCss:{name:"Kute CSS",id:"kuteCss",performance:!1,description:"Kute's own look for menus, settings, HUD and social, with a few cats",type:"checkbox",category:"Customization",defaultValue:!1},motionBlur:{name:"Motion Blur",id:"motionBlur",performance:!1,description:"A slight blur while you turn the camera, the HUD stays sharp. Costs FPS: about 5 % fewer while it blurs",type:"checkbox",category:"Customization",defaultValue:!1},motionBlurStrength:{name:"Motion Blur Strength",id:"motionBlurStrength",performance:null,description:"How long the trail is when Motion Blur is on",type:"slider",category:"Customization",defaultValue:40,min:10,max:100,step:5},customSky:{name:"Custom Sky",id:"customSky",performance:!1,description:"Your own sky color gradient or image on every map. Applies from the next match",type:"checkbox",category:"Customization",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.customSky.showOptions()",hostFeature:"custom-sky"},swapper:{name:"Resource Swapper",id:"swapper",performance:!1,description:"Replaces game files like textures and sounds with the files in your swapper folder",type:"checkbox",category:"Customization",defaultValue:!0,button:"Manage",buttonAction:"{{kute}}.swapperManager.open()",needsRefresh:!0},customCss:{name:"CSS Manager",id:"customCss",performance:!1,description:"Your own CSS on top of Krunker's. Keep several files and switch between them, with a live preview",type:"checkbox",category:"Customization",defaultValue:!0,button:"Edit",buttonAction:"{{kute}}.customCss.open()"},userscripts:{name:"Userscripts",id:"userscripts",description:"Runs your own scripts. Crankshaft and idkr scripts work too",type:"checkbox",category:"Customization",defaultValue:!0,button:"Manage",buttonAction:"{{kute}}.userscriptManager.open()"},blocklist:{name:"URL Blocklist",id:"blocklist",description:"Blocks ads and trackers. Open the file to add your own entries",type:"checkbox",category:"Customization",defaultValue:!0,button:"Open file",buttonAction:"window.chrome.webview.postMessage('open, blocklist')",needsRestart:!0},disableCats:{name:"Disable Cats",id:"disableCats",performance:!0,description:"Blocks the cat models in the maps",type:"checkbox",category:"Customization",defaultValue:!0,needsRefresh:!0},disableVideoSkins:{name:"Disable Video Skins",id:"disableVideoSkins",performance:!0,description:"Video skins like Glitch are not loaded and show black instead, which can save FPS",type:"checkbox",category:"Customization",defaultValue:!1,needsRefresh:!0,hostFeature:"video-skins"},uncapFps:{name:"Uncap FPS",id:"uncapFps",description:"Removes the FPS cap at your monitor's refresh rate",type:"checkbox",category:"Advanced",defaultValue:!0,needsRestart:!0},audioFix:{name:"Fix Audio Stutters",id:"audioFix",description:"For sound that cuts out at high FPS. Moves sounds every 8 ms instead of every sample",type:"checkbox",category:"Advanced",defaultValue:!1,needsRestart:!0,hostFeature:"audio-fix"},angleBackend:{name:"Graphics Backend (ANGLE)",id:"angleBackend",platforms:["windows"],description:"Leave it on Default (D3D11). OpenGL and Vulkan turn off everything the swapchain hook does",type:"select",category:"Advanced",defaultValue:"Default",needsRestart:!0,options:["Default","D3D11","D3D11on12","OpenGL","Vulkan"]},displayServer:{name:"Display Server",id:"displayServer",platforms:["linux"],description:"Leave it on X11, it runs much faster than Wayland for now. X11 also works inside a Wayland session",type:"select",category:"Advanced",defaultValue:"X11",needsRestart:!0,options:["X11","Wayland"]},colorProfile:{name:"Color Profile",id:"colorProfile",description:"Try sRGB if colors look washed out or too strong",type:"select",category:"Advanced",defaultValue:"Default",needsRestart:!0,options:["Default","sRGB","Display P3 D65","Extended sRGB","scRGB linear","HDR10"]},webviewPriority:{name:"Process Priority",id:"webviewPriority",description:"Higher can help a little, but may make your PC less stable",type:"select",category:"Advanced",defaultValue:"Normal",needsRestart:!0,options:["High","Above Normal","Normal","Below Normal","Low","Idle"]},x3dCacheCores:{name:"Keep Kute on the 3D V-Cache cores",id:"x3dCacheCores",description:"Ryzen X3D with two core groups only: steadier frame pacing on the cores with the big cache",type:"checkbox",category:"Advanced",defaultValue:!0,needsRestart:!0,hostFeature:"x3d-cores"},throttle:{name:"CPU Throttling",id:"throttle",description:"Slows the game down on purpose (2 = half speed). Only for an unstable game, an FPS limit is usually better",type:"slider",min:1,max:3,step:.01,category:"Advanced",defaultValue:1},inMenuThrottle:{name:"CPU Throttling in Menu",id:"inMenuThrottle",description:"Same, but only in the menu. It also slows the match that runs behind the menu",type:"slider",min:1,max:3,step:.01,category:"Advanced",defaultValue:1},clearCache:{name:"Clear Cache & Storage",id:"clearCache",description:"Deletes the cache and local storage. This also resets your game settings",type:"none",category:"Advanced",button:"Clear Now",buttonAction:"if(confirm('Are you sure you want to clear cache and local storage?')) { localStorage.clear(); sessionStorage.clear(); window.chrome.webview.postMessage('clear-cache'); }"},hardFlip:{name:"DXGI Swapchain Hook",id:"hardFlip",platforms:["windows"],description:"Present FPS counter and OBS capture. Laptops with two graphics chips may run better without it",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0},laptopPowerBoost:{name:"Laptop Power Boost",id:"laptopPowerBoost",description:"Plugged in laptops only: switches the power mode to performance while Kute runs and puts yours back after",type:"checkbox",category:"Engine",defaultValue:!0,hostFeature:"hybrid-gpu"},primeOffload:{name:"NVIDIA PRIME Offload",id:"primeOffload",platforms:["linux"],description:"Hybrid laptops with the NVIDIA driver: the game renders on the NVIDIA chip instead of the built in one",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"prime-offload"},patchInputPriority:{name:"Input at Normal Priority",id:"patchInputPriority",description:"Chromium patch: mouse input no longer starves the game's server messages. Off brings back the aim freeze",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchFramePacing:{name:"Frame Pacing",id:"patchFramePacing",description:"Chromium patch: the game runs one frame ahead of the screen instead of flooding it. Off brings back the GPU stutter",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchFrameLimiter:{name:"Chromium FPS Limiter",id:"patchFrameLimiter",description:"Chromium patch: holds the FPS limit inside Chromium with the CPU idle, with or without the hook. Off uses the hook's limiter, or a busy wait without the hook",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchRawInputMovement:{name:"Raw Input Keeps Movement",id:"patchRawInputMovement",platforms:["windows"],description:"Chromium patch: no mouse movement is lost on a click. Off drops a few counts at every shot",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchAudioParamCoalesce:{name:"Coalesce Audio Automation",id:"patchAudioParamCoalesce",description:"Chromium patch: the game's per frame sound updates no longer pile up. Off makes FPS drop over a long match",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchCanvasBufferCache:{name:"WebGL Buffer Cache",id:"patchCanvasBufferCache",description:"Chromium patch: keeps three spare frame buffers instead of one. Off makes some starts land in a slow mode",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchHighQoS:{name:"Game Process at High QoS",id:"patchHighQoS",platforms:["windows"],description:"Chromium patch: Windows may not throttle the game's process to save power. Off leaves that to Windows",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},showChangelog:{name:"Show Changelog After Updates",id:"showChangelog",description:"Shows what's new after Kute updates",type:"checkbox",button:"Show Now",buttonAction:"{{kute}}.showChangelogPopup({{kute}}.version)",category:"About",defaultValue:!0},disableOnlineFeatures:{name:"Disable Kute Online Features",id:"disableOnlineFeatures",description:"Nothing is sent to or received from kute.lol. Turns off all Kute badges (yours too) and clan colors",type:"checkbox",category:"About",defaultValue:!1,needsRestart:!0},checkUpdates:{name:"Check For Updates",id:"checkUpdates",description:"Looks for a new Kute version when it starts",type:"checkbox",category:"About",defaultValue:!0,needsRestart:!0},exportClientSettings:{name:"Export Kute Settings",id:"exportClientSettings",description:"Saves Kute's settings, HUD positions, matchmaker filters and hotkeys as a file in Downloads",type:"none",category:"About",button:"Export",buttonAction:"{{kute}}.settingsTransfer.exportFile()"},importClientSettings:{name:"Import Kute Settings",id:"importClientSettings",description:"Loads a file from Export Kute Settings and restarts Kute",type:"none",category:"About",button:"Import",buttonAction:"{{kute}}.settingsTransfer.importFile()"},diagnosticsReport:{name:"Diagnostics Report",id:"diagnosticsReport",description:"Puts what helps fix a problem into one file you can send. You see all of it first, nothing is uploaded",type:"none",category:"About",button:"Create",buttonAction:"{{kute}}.diagnostics.open()",hostFeature:"diagnostics"}}});function Mo(s,e){return s.performanceMode===!0&&e in pu}function hu(s){return{...s,...Co}}function mn(s,e){let t=[];for(let[o,n]of Object.entries(pu)){if(n===null)continue;let r=s[o];e?(o in Co||(Co[o]=r),s[o]=n):o in Co&&(s[o]=Co[o],delete Co[o]),s[o]!==r&&t.push(o)}return t}var pu,Co,To=w(()=>{"use strict";Zo();pu=Object.fromEntries(Object.values(At).filter(s=>s.performance!==void 0).map(s=>[s.id,s.performance??null])),Co={}});function eb(s){let e="abcdefghijklmnopqrstuvwxyz",t=crypto.getRandomValues(new Uint8Array(s));return Array.from(t,o=>e[o%e.length]).join("")}var u,Ne,mu,Ue,F=w(()=>{"use strict";Zo();To();u={},Ne=new Promise(s=>{function e(t){if(t?.data?.settings||t?.data?.version){if(window.chrome.webview.removeEventListener("message",e),Object.assign(u,t.data),u.settings?.data)for(let o of Object.values(At))o.defaultValue!==void 0&&!(o.id in u.settings.data)&&(u.settings.data[o.id]=o.defaultValue);u.settings?.data&&mn(u.settings.data,u.settings.data.performanceMode===!0),s(u)}}window.chrome.webview.addEventListener("message",e),window.chrome.webview.postMessage("get-info")}),mu=eb(12);Object.defineProperty(window,mu,{value:u,enumerable:!1,writable:!1,configurable:!1});Ue=`window["${mu}"]`});function Te(s,e,t=2e3){return new Promise(o=>{let n={timer:0},r=i=>{i.data?.[e]!==void 0&&(clearTimeout(n.timer),window.chrome.webview.removeEventListener("message",r),o(i.data[e]))};n.timer=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),o(null)},t),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(s)})}var Hr,$e,U,ke,Oe,Ae=w(()=>{"use strict";Hr=(s,e,t)=>{let o=s.prototype[e];s.prototype[e]=function(...n){let r=t.call(this,n,o);return r===void 0?o.apply(this,n):r}},$e=(s,e=3e4)=>new Promise((t,o)=>{let n=document.querySelector(s);if(n){t(n);return}let r={timer:0},i=new MutationObserver(()=>{let a=document.querySelector(s);a&&(clearTimeout(r.timer),i.disconnect(),t(a))});r.timer=setTimeout(()=>{i.disconnect(),o(new Error(`element never showed up: ${s}`))},e),i.observe(document.body,{childList:!0,subtree:!0})}),U=(s,e=document)=>{let t=e.querySelector(s);if(!t)throw new Error(`element not found: ${s}`);return t},ke=(s,e=document)=>U(s,e),Oe=()=>!!document.querySelector(".cmpTmHed")});var gu={};A(gu,{setRampBoost:()=>to,syncScrollBinds:()=>Fr});function to(s){fu=s,window.chrome.webview.postMessage(`toggle-rboost, ${s}`)}function Fr(){let s=!1;try{s=Object.keys(localStorage).some(e=>e.startsWith("cont_")&&localStorage.getItem(e)===tb)}catch{return}s!==Or&&(Or=s,u.hostFeatures?.includes("scroll-binds")&&window.chrome.webview.postMessage(`wheel-to-page, ${s}`))}var tb,fu,Or,fn=w(()=>{"use strict";F();tb="20000",fu=!1;window.addEventListener("wheel",s=>{!fu||!document.pointerLockElement||!u.hostFeatures?.includes("ramp-boost")||(Or||(s.stopImmediatePropagation(),s.preventDefault()),window.chrome.webview.postMessage(`ramp-wheel, ${(s.deltaY||s.deltaX)<0?1:-1}`))},{capture:!0,passive:!1})});var wu={};A(wu,{claimAltShoot:()=>qr,hostSupports:()=>bn,prepareShootBind:()=>Kr,syncLeftClick:()=>es});function Dr(s){return Number(localStorage.getItem(s)??-1)}function vu(){let s=Dr(gn);return s!==-1&&s!==Qo}function bn(){return u.hostFeatures?.includes(sb)===!0}function qr(){return!vu()||!bn()}function Kr(){if(!vu()){localStorage.setItem(gn,String(Qo));return}Ne.then(()=>{bn()||localStorage.setItem(gn,String(Qo))})}function es(){if(!bn())return;let s=Dr(gn)===Qo||Dr(ob)===Qo;s!==bu&&(bu=s,window.chrome.webview.postMessage(`left-click-f20, ${s}`))}var Qo,gn,ob,sb,bu,vn=w(()=>{"use strict";F();Qo=131,gn="cont_shoot1Key_alt",ob="cont_shoot1Key",sb="left-click-f20"});var yu={};A(yu,{SLOTS:()=>Ao,postUrls:()=>oo});function jr(s){try{return localStorage.getItem(s)}catch{return null}}function rb(s){try{let e=JSON.parse(jr(s)??"[]");return Array.isArray(e)?e.map(t=>Array.isArray(t)?t[1]:null).filter(t=>typeof t=="string").slice(0,nb):[]}catch{return[]}}function oo(){let s={};for(let t of Ao){let o=[];for(let i of t.settings)o.push(jr(`kro_setngss_${i}`)??"");for(let i of t.keys??[])o.push(jr(i)??"");for(let i of t.lists??[])o.push(...rb(i));let n=t.element?document.getElementById(t.element):null;n instanceof HTMLImageElement&&o.push(n.src);let r=[...new Set(o)].filter(i=>i.startsWith("http"));r.length>0&&(s[t.id]=r)}let e=JSON.stringify(s);e!==ku&&(ku=e,window.chrome.webview.postMessage(`icon-urls ${e}`))}var ts,Ao,nb,ku,wn=w(()=>{"use strict";ts={id:"showUI",name:"Show UI",kind:"checkbox"},Ao=[{id:"kills",file:"kills.png",name:"Kill counter",settings:["customKills"],element:"killsIcon",hiddenBy:[ts,{id:"showKillC",name:"Show Kill Counter",kind:"checkbox"}]},{id:"deaths",file:"deaths.png",name:"Death counter",settings:["customDeaths"],element:"deathsIcon",hiddenBy:[ts,{id:"showDeaths",name:"Show Death Counter",kind:"checkbox"}]},{id:"streak",file:"streak.png",name:"Streak counter",settings:["customStreak"],element:"streakIcon",hiddenBy:[ts,{id:"showStreak",name:"Show Streak Counter",kind:"checkbox"}]},{id:"kdr",file:"kdr.png",name:"K/D counter",settings:[],element:"kdIcon",hiddenBy:[ts,{id:"showKD",name:"Show K/D Counter",kind:"checkbox"}]},{id:"ammo",file:"ammo.png",name:"Ammo",settings:["customAmmo"],element:"ammoIcon",hiddenBy:[ts]},{id:"hitmarker",file:"hitmarker.png",name:"Hitmarker",settings:["customHitmarker"],hiddenBy:[{id:"hitm",name:"Hitmarker: Show",kind:"checkbox"},{id:"hitOpac",name:"Hitmarker: Opacity",kind:"opacity"}]},{id:"reticle",file:"reticle.png",name:"Reticle",settings:[],keys:["savedReticle"],lists:["krk_custRet"],element:"aimDot",hiddenBy:[]},{id:"scope",file:"scope.png",name:"Scope",settings:[],keys:["savedScope"],lists:["krk_custScps"],element:"recticleImg",hiddenBy:[{id:"scopeOpac",name:"Scope Opacity",kind:"opacity"}]}],nb=30;ku=""});var xu={};A(xu,{canLoadLive:()=>Lt,loadScripts:()=>Lo,registry:()=>Je});var Je,Lt,Lo,os=w(()=>{"use strict";F();Je=window.__kuteUserscripts??null,Lt=()=>!!(Je&&u.hostFeatures?.includes("userscripts-live")),Lo=(s,e,t)=>{window.chrome.webview.postMessage(`scripts-load ${JSON.stringify({...s?{keys:s}:{},replace:e,start:t})}`)}});var Eu={};A(Eu,{default:()=>Rt,hostSupportsCustomCss:()=>ss});var Su,ss,Ur,Rt,kn=w(()=>{"use strict";F();Su=/@import\s+(?:url\([^)]*\)|"[^"]*"|'[^']*')[^;]*;?/gi,ss=()=>u.hostFeatures?.includes("custom-css")??!1,Ur=class{constructor(){this.saved=String(window.__kuteCustomCss??""),this.enabled=!0,this.sheet=null,this.importStyle=null,this.importText="",this.waitingForBody=!1,this.saved&&this.apply(this.saved),Ne.then(()=>{u.settings.toggleCustomCss=e=>this.toggle(e),u.settings.data.customCss===!1?this.toggle(!1):!this.saved&&ss()&&this.load().then(e=>this.apply(e))})}load(){return new Promise(e=>{let t=o=>{typeof o.data?.customCss?.content=="string"&&(window.chrome.webview.removeEventListener("message",t),this.saved=o.data.customCss.content,e(this.saved))};window.chrome.webview.addEventListener("message",t),window.chrome.webview.postMessage("css-read")})}apply(e){if(!this.enabled)return;let t=e.match(Su)??[],o=t.length?e.replace(Su,""):e;if(!this.sheet){if(!o.trim())return;this.sheet=new CSSStyleSheet,document.adoptedStyleSheets=[...document.adoptedStyleSheets,this.sheet]}this.sheet.replaceSync(o),this.setImports(t.join(` +`))}setImports(e){if(this.importText=e,!(!e&&!this.importStyle)){if(document.readyState==="loading"){if(this.waitingForBody)return;this.waitingForBody=!0,document.addEventListener("DOMContentLoaded",()=>this.setImports(this.importText),{once:!0});return}this.importStyle||(this.importStyle=document.createElement("style"),document.documentElement.append(this.importStyle)),this.importStyle.textContent!==e&&(this.importStyle.textContent=e)}}toggle(e){if(this.enabled=e,!e){this.sheet?.replaceSync(""),this.setImports("");return}this.saved?this.apply(this.saved):ss()&&this.load().then(t=>this.apply(t))}markSaved(e){this.saved=e,this.apply(e)}revert(){this.enabled&&this.apply(this.saved)}},Rt=new Ur});var Au={};A(Au,{holdRestart:()=>yn,restart:()=>Ro});function Ro(){location.assign("https://krunker.io/")}function yn(s){Mu=Date.now()+s}function Tu(){return localStorage.getItem($u)!==null||document.cookie.includes(`${$u}=`)}function ib(){try{return!!window.getGameActivity?.()?.id}catch{return!1}}function ab(s){let e=Date.now(),t=0,o=setInterval(()=>{if(ib()){sessionStorage.removeItem(Gr),clearInterval(o);return}if(Date.now()-e>9e4){clearInterval(o);return}if(!s||!Tu()||(t===0&&(t=Date.now()),Date.now()-t<1500))return;clearInterval(o);let n=Number(sessionStorage.getItem(Gr)??0);n>=2||(sessionStorage.setItem(Gr,String(n+1)),console.log("[kute] session: no lobby after the frvr login, reloading"),Ro())},1e3)}function lb(){let s=localStorage.getItem(Cu)!==null,e=!1;setInterval(()=>{if(e){document.pointerLockElement||Ro();return}let t=localStorage.getItem(Cu)!==null;s&&!t&&Date.now()>Mu&&(e=!0,console.log("[kute] session: logged out, reloading")),s=t},1e3)}var $u,Cu,Gr,Mu,xn=w(()=>{"use strict";$u="__FRVR_auth_refresh_token",Cu="krunker_token",Gr="kute_hang_reloads";Mu=0;location.hostname==="krunker.io"&&location.pathname==="/"&&(ab(!Tu()),lb())});var Pu={};A(Pu,{DEFAULT_LOAD:()=>so,cpuChecksum:()=>Xr,createScene:()=>Yr});function fb(s){let e=document.createElement("canvas");e.width=640,e.height=60+s.length*34;let t=e.getContext("2d");return t&&(t.fillStyle="rgba(30, 30, 30, 0.92)",t.beginPath(),t.roundRect(0,0,e.width,e.height,18),t.fill(),t.textAlign="center",t.textBaseline="middle",s.forEach((o,n)=>{t.font=n===0?"26px Consolas, monospace":"18px Consolas, monospace",t.fillStyle=n===0?"#35e0e8":"#bbbbbb",t.fillText(o,e.width/2,48+n*34)})),e}function Lu(s,e,t){let o=s.createShader(e);if(!o)throw new Error("cannot create shader");if(s.shaderSource(o,t),s.compileShader(o),!s.getShaderParameter(o,s.COMPILE_STATUS))throw new Error(s.getShaderInfoLog(o)??"shader compile failed");return o}function Wr(s,e,t){let o=s.createProgram();if(s.attachShader(o,Lu(s,s.VERTEX_SHADER,e)),s.attachShader(o,Lu(s,s.FRAGMENT_SHADER,t)),s.linkProgram(o),!s.getProgramParameter(o,s.LINK_STATUS))throw new Error(s.getProgramInfoLog(o)??"program link failed");return o}function gb(s){let e=[],t=[];for(let o=0;o<=s;o++){let n=o/s*Math.PI;for(let r=0;r<=s;r++){let i=r/s*Math.PI*2;e.push(Math.cos(i)*Math.sin(n),Math.cos(n),Math.sin(i)*Math.sin(n))}}for(let o=0;o0?fb(t):null,g=f?Wr(o,hb,mb):null,b=g?o.getUniformLocation(g,"uScale"):null,v=o.createVertexArray();f&&(o.bindVertexArray(v),o.bindBuffer(o.ARRAY_BUFFER,o.createBuffer()),o.bufferData(o.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,1]),o.STATIC_DRAW),o.enableVertexAttribArray(0),o.vertexAttribPointer(0,2,o.FLOAT,!1,0,0),o.bindVertexArray(null),o.bindTexture(o.TEXTURE_2D,o.createTexture()),o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,f),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE));let k=1337,E=()=>(k=k*1664525+1013904223>>>0,k/4294967296),L=Array.from({length:e.draws},()=>({x:(E()-.5)*80,y:(E()-.5)*50,z:(E()-.5)*40,scale:.6+E()*1.6,spin:.2+E()*1.5,red:.3+E()*.7,green:.3+E()*.7,blue:.3+E()*.7})),y=new Float32Array(16),C=new Float32Array(16),I=new Float32Array(16),_=new Float32Array(16);return C[0]=1,C[5]=1,C[10]=1,C[15]=1,C[14]=-60,{resize(H,G){s.width=Math.max(1,Math.round(H)),s.height=Math.max(1,Math.round(G)),o.viewport(0,0,s.width,s.height),bb(y,Math.PI/2,s.width/s.height,.1,500),vb(I,y,C)},render(H){let G=H*.001;kb(e.cpuIterations),o.enable(o.DEPTH_TEST),o.disable(o.BLEND),o.clearColor(.08,.09,.12,1),o.clear(o.COLOR_BUFFER_BIT|o.DEPTH_BUFFER_BIT),o.useProgram(n),o.bindVertexArray(p),o.uniformMatrix4fv(i,!1,I);for(let J of L)wb(_,J.x,J.y,J.z,G*J.spin,J.scale),o.uniformMatrix4fv(r,!1,_),o.uniform3f(a,J.red,J.green,J.blue),o.drawElements(o.TRIANGLES,h.indices.length,o.UNSIGNED_SHORT,0);o.disable(o.DEPTH_TEST),o.enable(o.BLEND),o.blendFunc(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA),o.useProgram(l),o.bindVertexArray(m),o.uniform1f(c,G);for(let J=0;J{"use strict";so={draws:1200,meshSegments:10,overdraw:4,cpuIterations:2e5},cb=`#version 300 es layout(location=0) in vec3 aPos; layout(location=1) in vec3 aNormal; uniform mat4 uModel; @@ -11,14 +11,14 @@ void main() { float light = 0.35 + 0.65 * max(dot(n, normalize(vec3(0.4, 0.8, 0.5))), 0.0); vColor = uColor * light; gl_Position = uViewProj * uModel * vec4(aPos, 1.0); -}`,rb=`#version 300 es +}`,db=`#version 300 es precision mediump float; in vec3 vColor; out vec4 outColor; -void main() { outColor = vec4(vColor, 1.0); }`,ib=`#version 300 es +void main() { outColor = vec4(vColor, 1.0); }`,ub=`#version 300 es layout(location=0) in vec2 aPos; out vec2 vUv; -void main() { vUv = aPos * 0.5 + 0.5; gl_Position = vec4(aPos, 0.0, 1.0); }`,ab=`#version 300 es +void main() { vUv = aPos * 0.5 + 0.5; gl_Position = vec4(aPos, 0.0, 1.0); }`,pb=`#version 300 es precision mediump float; in vec2 vUv; uniform float uTime; @@ -27,18 +27,18 @@ out vec4 outColor; void main() { float w = sin(vUv.x * 40.0 + uTime + uLayer) * cos(vUv.y * 30.0 - uTime * 0.7); outColor = vec4(0.3 + 0.2 * w, 0.2, 0.4 - 0.2 * w, 0.08); -}`,lb=`#version 300 es +}`,hb=`#version 300 es layout(location=0) in vec2 aPos; uniform vec2 uScale; out vec2 vUv; -void main() { vUv = vec2(aPos.x * 0.5 + 0.5, 0.5 - aPos.y * 0.5); gl_Position = vec4(aPos * uScale, 0.0, 1.0); }`,cb=`#version 300 es +void main() { vUv = vec2(aPos.x * 0.5 + 0.5, 0.5 - aPos.y * 0.5); gl_Position = vec4(aPos * uScale, 0.0, 1.0); }`,mb=`#version 300 es precision mediump float; in vec2 vUv; uniform sampler2D uLabel; out vec4 outColor; -void main() { outColor = texture(uLabel, vUv); }`;Gr=new Float32Array(4096),Mu=0});var Au={};A(Au,{FrameRecorder:()=>to,InputProbe:()=>os,TaskProbe:()=>oo});var to,os,oo,yn=w(()=>{"use strict";to=class{constructor(e=12e4){this.samples=new Float32Array(e),this.count=0,this.stored=0,this.last=-1,this.first=-1}frame(e){this.last>=0&&(this.count++,this.storedt[Math.min(t.length-1,Math.floor(h*t.length))],r=n(.5),i=Math.max(4*r,e),a=0,l=0,c=0;for(let h of t)a+=h,h>i&&(l++,c+=h-r);let d=Math.max(.001,a/1e3);return{frames:this.count,seconds:o,fps:this.count/o,meanMs:a/this.stored,p50:r,p95:n(.95),p99:n(.99),p999:n(.999),maxMs:t[t.length-1],hitches:l,hitchesPerSec:l/d,stallMs:c/d}}},os=class{constructor(){this.waits=new Float32Array(16384),this.events=0,this.packets=0,this.onMove=e=>{if(document.pointerLockElement===null)return;let t=e.getCoalescedEvents(),o=t.length>0?t[0].timeStamp:e.timeStamp;this.waits[this.events%this.waits.length]=performance.now()-o,this.events++,this.packets+=Math.max(1,t.length)}}start(){this.events=0,this.packets=0,window.addEventListener("pointermove",this.onMove,{capture:!0,passive:!0})}stop(){window.removeEventListener("pointermove",this.onMove,!0);let e=Math.min(this.events,this.waits.length),t=this.waits.slice(0,e).sort();return{events:this.events,packets:this.packets,p99:e>0?t[Math.min(e-1,Math.floor(e*.99))]:null,max:e>0?t[e-1]:null}}},oo=class{constructor(){this.delays=[],this.timer=0,this.sent=0,this.channel=new MessageChannel,this.channel.port1.onmessage=e=>{this.delays.push(performance.now()-e.data)}}start(){this.delays=[],this.sent=0;let e=performance.now()+10;this.timer=setInterval(()=>{this.sent++;let t=performance.now();this.channel.port2.postMessage(Math.min(t,e)),e=t+10},10)}stop(){clearInterval(this.timer);let e=[...this.delays].sort((t,o)=>t-o);return{sent:this.sent,ran:e.length,p99:e.length?e[Math.min(e.length-1,Math.floor(e.length*.99))]:null,max:e.length?e[e.length-1]:null}}}});var Iu={};function Ze(s,e){let t=Number(xn.get(s));return xn.has(s)&&Number.isFinite(t)?t:e}function Jr(s){window.chrome.webview.postMessage(`bench-finish ${JSON.stringify(s)}`)}function Eb(){let s=document.createElement("canvas");s.style.cssText="position:fixed;inset:0;width:100vw;height:100vh;display:block",document.body.append(s);let e=Lu>0?["Kute is testing this PC",`client test ${kb} of ${Lu}`,"this takes a moment, nothing to do for you"]:[],t=Wr(s,Ru,e);t.resize(window.innerWidth*devicePixelRatio,window.innerHeight*devicePixelRatio);let o=Xr.length>0?Array.from({length:Math.max(1,yb)},()=>Xr).flat():[null],n=[],r=0,i=performance.now(),a=null,l=new oo,c=Ze("cap",0),d=i,h=0,p=!1;s.addEventListener("webglcontextlost",()=>{p=!0});let m=g=>{i=g,a=null;let b=o[r];b!==null&&(c=Sb?b:0,d=g,window.chrome.webview.postMessage(`bench-cap ${b}`))};m(i);let f=g=>{if(c>0){for(;performance.now()0&&t.lost()){h===0&&Jr({ok:!1,error:"webgl context lost"}),t.destroy();return}if(t.render(g),h>0){b-h=v&&(a=new to,r===0&&window.chrome.webview.postMessage("bench-sample-start"),l.start()),a!==null&&(a.frame(b),b-i>=v+vb&&(n.push({cap:o[r]??c,stats:a.stats(wb),otherTasks:l.stop()}),r++,r0?n:void 0,load:Ru,width:s.width,height:s.height,checksum:Vr()})))),requestAnimationFrame(f)};requestAnimationFrame(f)}function Pu(){try{Eb()}catch(s){Jr({ok:!1,error:String(s)})}}var xn,gb,bb,vb,wb,kb,Lu,Xr,yb,xb,Sb,Ru,Zr=w(()=>{"use strict";Yr();yn();xn=new URLSearchParams(location.search);gb=400,bb=Ze("settle",700),vb=Ze("ms",2e3),wb=1e3/Ze("hz",60),kb=Ze("step",0),Lu=Ze("steps",0),Xr=(xn.get("caps")??"").split(".").filter(s=>s!=="").map(Number).filter(Number.isFinite),yb=Ze("rounds",1),xb=Ze("capsettle",700),Sb=xn.get("selfcap")==="1",Ru={draws:Ze("draws",eo.draws),meshSegments:eo.meshSegments,overdraw:Ze("overdraw",eo.overdraw),cpuIterations:Ze("cpu",eo.cpuIterations)};document.body?Pu():document.addEventListener("DOMContentLoaded",Pu,{once:!0})});var _u,Nu=w(()=>{_u=`#guidePopup{background-color:#182429}.guideHeader,.guideSubH{border-bottom-color:#35e0e81f}.guStepS:not(:last-child){border-bottom-color:#35e0e81f}a,a:active,a:visited{color:#35e0e8}#purchaseSelector{background-color:#111b1f}.roundScrV{border-bottom-color:#35e0e847}#reloadMsg,#interactMsg,#mobileUI #interactMsg{border-color:#35e0e847}#instructionsUpdate{background-color:#151f24}.instructionsHeader,.instructionsTabs{background-color:#070c0f}.endTablePfp{border-color:#35e0e847}th,tr{border-bottom-color:#35e0e81f}.followBut{background-color:#35e0e8;color:#0b1215}.lds-ring div{border-color:#35e0e847;border-color:rgba(53,224,232,.28) transparent transparent transparent}#spinItemName{background-image:linear-gradient(to right,#0000,#070c0fb3 40%,#070c0fe6 60%,#0000)}.spinPrevIcon,.spinSprayDiv,#spinPromo,.compClassPItm,.compPLstIcn,.compSwpTmB,.compMenBtnS,.compPlWpIcn{border-color:#35e0e847}.hostHeader{background-color:#070c0f}#bigMFeatHBtn{border-color:#35e0e847}#bigMFeatHBtn:hover,#bigMFeatHBtn:active,#bigMFeatPBtn:hover,#bigMFeatPBtn:active{border-color:#35e0e847!important}.biMFeatInfB{border-color:#35e0e847}.biMFeatInfB:hover{border-color:#35e0e847!important}.mapLICat{background-color:#151f24}.hostPresetBtn,#hostMenuBtn{background-color:#35e0e8;color:#0b1215}.serverHostOp{border-color:#35e0e81f}.hostCBtn{border-color:#35e0e847}#hostActionH{border-top-color:#35e0e847}#stickyHostH{background-color:#070c0f}.loadoutBtn{background-color:#35e0e8;color:#0b1215}#loadoutToolbar{background-color:#111b1f;border-bottom-color:#35e0e81f}.loadoutTab{background-color:#182429}.loadoutTab:hover{background-color:#1d2c32}.loadoutTabSel{background-color:#24343a}#charPreviewSlot{border-right-color:#35e0e81f}#menuWindow.eterno .bigMenTabs{background-color:#111b1fad}.quickJoin{border-color:#35e0e8}.settText{color:#35e0e8}.contactsHeader,.setHed{border-color:#35e0e81f;background-color:#1d2c32}.setHed:hover{background-color:#182429}.setHedS{border-color:#35e0e81f;background-color:#1d2c32}.settName,.settNameSmall{border-bottom-color:#35e0e81f}input:checked+.sliderSml{background-color:#35e0e8;color:#0b1215}input:focus+.sliderSml{box-shadow:0 0 1px #35e0e8}input:checked+.slider{background-color:#35e0e8;color:#0b1215}input:focus+.slider{box-shadow:0 0 1px #35e0e8}.sliderVal{border-color:#35e0e847!important}#modDropper{border-color:#35e0e81f}#profilePicM{background-color:#24343a}.mailFrom{color:#35e0e8;border-bottom-color:#35e0e847}.followFrom{color:#35e0e8}#mailCount{border-color:#35e0e81f}#policePopC{background-color:#151f24}.classXPBar{background-color:#111b1f}.clsXPBarC{background-color:#35e0e8;color:#0b1215}.skinPaintSwatch{border-color:#35e0e847}.sb1:before{border-left-color:#35e0e847;border-top-color:#35e0e847}.skinColorItem,.matchVote{border-color:#35e0e81f}.hostMap,#mobileJoystick .back,#mobileJoystick .front{border-color:#35e0e847}#chargeModalCard{background-color:#111b1f}.chargeModalBtn{background-color:#35e0e8;color:#0b1215}.settingsHeader,.serverHeader{background-color:#151f24}.setSugBox2,.setSugBox2:hover,.setSugBox,.setSugBox:hover{border-color:#35e0e847}.settingsBtn{background-color:#35e0e8;color:#0b1215}.settingTab:hover{border-bottom-color:#35e0e81f}.redVouchBtn,.searchBtn{background-color:#35e0e8;color:#0b1215}.challMapCrd,.challHeadrI{border-color:#35e0e847}.chalCard{background-color:#151f24}.chalRews{border-left-color:#35e0e847}.chalRewSkn{border-color:#35e0e847}.changeText{border-bottom-color:#35e0e81f}.crftRcpeCrd{background-color:#070c0f}.craftRcIcn,.crftRecSml,.crftItmReq{border-color:#35e0e847}.crftTim{background-color:#151f24}.hostToggle{background-color:#35e0e8;color:#0b1215}.titleRowLocked{border-bottom-color:#35e0e81f}input:checked+.optCheck{background-color:#35e0e8;color:#0b1215}.subPassChg,.subPassChg:hover,.updDisN,.updDisN:hover,.lnkTw:hover{background-color:#35e0e8;color:#0b1215}#popupContent{background-color:#151f24}.twitchPop,.nftPop,.confPop,.clientExitPop,#confPurchItemPop{border-color:#35e0e847}#bundlePop,#premiumPop{background-color:#151f24}.metaPop{border-color:#35e0e847}.confPremiumPop,.vouchPop{background-color:#151f24}.polConfPop{border-color:#35e0e847}.rankedPop,.promoPop{background-color:#151f24}.tListN.inv{background-color:#35e0e8;color:#0b1215}.tItemHolder,.dItemHolder,.tCurrencyItem{border-color:#35e0e847}.bigMenTab:hover,.bigMenTabA,.bigMenTabA:hover{border-bottom-color:#35e0e847}.dark .menuTabNew:hover{border-bottom-color:#35e0e81f!important}.dark .tabANew,.dark .tabANew:hover{border-bottom-color:#35e0e847!important}input:checked+.slider2{background-color:#35e0e8;color:#0b1215}input:focus+.slider2{box-shadow:0 0 1px #35e0e8}.tabHeader:hover{border-bottom-color:#35e0e847}#kdLayout,.crStat{border-color:#35e0e81f}.keyIcon{border-left-color:#35e0e81f;border-right-color:#35e0e81f;border-top-color:#35e0e847;border-bottom-color:#35e0e81f}.pfpPop,.dropsPop{background-color:#151f24}.accountCreatePop{background-color:#151f24;border-color:#35e0e847}#pubPfp{background-color:#35e0e8;color:#0b1215}#tradeChatInput,.tradeChatItem{background-color:#111b1f}#partnerProgB{background-color:#35e0e8;color:#0b1215}#partnrUpBtn{background-color:#35e0e8;border-bottom-color:#35e0e8;color:#0b1215}#partnrUpBtn:hover,#partnrUpBtn:active{border-bottom-color:#35e0e8}#partnrUpBtnD,#partnrUpBtnD:hover,#partnrUpBtnD:active{border-bottom-color:#35e0e847}.editLink{color:#35e0e8}.speedRunItem{border-bottom-color:#35e0e81f}#speedRunInfo{border-bottom-color:#35e0e847}#shopMainSellB{border-color:#35e0e847}.custBack:hover{background-color:#24343a85}#itemSearchH{background-color:#151f24}.skinReward{border-color:#35e0e847}.selectedItem{border-color:#35e0e847!important}.custContainer{border-color:#35e0e847}.custSubContainer{border-left-color:#35e0e847;border-bottom-color:#35e0e847}#findGameBtn{background-color:#35e0e8;color:#0b1215}#clanDeclineAll:hover,.logVersionHed,.viewAllUpdates,.viewAllUpdates:hover{border-color:#35e0e847}.followBack{border-color:#35e0e8!important}.followBack:hover{border-color:#35e0e847!important}.joinBtn{background-color:#35e0e8;color:#0b1215}.imagePop,.badgePop,.imageNewPop{background-color:#151f24}.openCollection{background-color:#35e0e8!important;color:#0b1215}.imageListHeader,.imageListFooter{background-color:#070c0f}.importPop,#bindsHeader,.disconnectPop{background-color:#151f24}.tooltip{background-color:#24343a}.tooltip2{background-color:#070c0f}.imageTab:hover{border-bottom-color:#35e0e81f}.tabAIMG,.tabAIMG:hover{border-bottom-color:#35e0e847}input:checked+.advancedSlider{background-color:#35e0e8;color:#0b1215}input:focus+.advancedSlider{box-shadow:0 0 1px #35e0e8}.quickPlayMap{border-color:#35e0e847}#custStreakSelH{border-top-color:#35e0e81f}.winSelH{background-color:#24343a}#spinHistoryBtn{border-color:#35e0e847}#spinHistoryBtn:hover{border-color:#35e0e847!important}#spinMultiToggleBtn{background-color:#35e0e8!important;box-shadow:inset 0 -7px #35e0e8!important;border-color:#35e0e847;color:#0b1215}#spinMultiToggleBtn:hover{border-color:#35e0e847!important}#spinHistoryPop{background-color:#151f24}.spinHistoryHeader{background-color:#070c0f}.clsStatXPBar{background-color:#0b1215}.eventPop{background-color:#151f24}.eventPopHeader,.bSliderBtn,.bSliderBtn:hover,.bSliderBtn:active{border-color:#35e0e847}.bSliderBtn.disabled{border-color:#35e0e81f}.bpLevelNum.completed{background-color:#24343a}.bpLevelNum.active{border-color:#35e0e847}.bpCard,.bpCard.free{border-color:#35e0e81f}.bpCard.free.completed,.bpCard.free.completed.claimed{border-color:#35e0e847}.bpCardSlot{border-color:#35e0e81f}.bpSliderArrow{border-right-color:#35e0e847}.bpInfoBalloon{background-color:#151f24}.bpInfoBalloon:after{background-color:#151f24}.bpClaimB{border-color:#35e0e847;background-color:#151f24}.bp-unlock-header{background-color:#151f24}.bp-generic-pop,.bp-purchase-pop{background-color:#151f24;border-color:#35e0e847}.clanSubmitBtn,.clanSubmitBtn:hover{background-color:#35e0e8;color:#0b1215}.spinErrorPop{background-color:#151f24}.popHeader,.dropsPopHeader{background-color:#070c0f}.charmErrorPop,.spinHistoryStatsPop{background-color:#151f24}#kpdCalls>* td,#kpdCalls>* th{border-bottom-color:#35e0e81f}.loadingPop,.autoLoadPop,.editMapPop,.responsePop{background-color:#151f24}.infoPop,.contPop{background-color:#1d2c32}.ticketPop{background-color:#151f24}.bundleCrd{background-color:#070c0f}.bundleItmReq,.bundleSliderBtn,.bundleSliderBtn:hover,.bundleSliderBtn:active,.bundleSliderBtn.disabled{border-color:#35e0e847}.bundleSliderArrow{border-right-color:#35e0e847}.dxp-pop{background-color:#151f24;border-color:#35e0e847}.dropsSliderBtn,.dropsSliderBtn:hover,.dropsSliderBtn:active,.dropsSliderBtn.disabled{border-color:#35e0e847}.dropsSliderArrow{border-right-color:#35e0e847}.rewItemHolder{border-color:#35e0e847}.abTestsPop{background-color:#151f24}.registerGiftPop{background-color:#151f24;border-color:#35e0e847}.rankedQueueModal{background-color:#151f24;border-color:#35e0e8;box-shadow:0 0 160px #35e0e875}.rankedMenuModal,.communityPopup,.tutorialPopup,.defaultModal,.krunkCupJoinModal,.krunkCupViewModal,.exchangeModal,.itemsModal,.socialModal,.moreKrunkerPopup{background-color:#151f24}.io-button{background-color:#151f24;border-color:#35e0e81f}.io-button:hover{background-color:#182429}.io-button--accept-secondary{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.io-input-field{border-color:#35e0e81f}.io-input-field:focus{border-color:#35e0e8}.io-popup-container{background-color:#111b1f}.io-section-header:after{background-color:#35e0e8;color:#0b1215}.io-card{border-color:#35e0e81f}.io-separator{border-bottom-color:#35e0e81f}.io-separator span{background-color:#111b1f}.strike-timer__info-holder,.strike-timer__timer-bg{background-color:#151f24}.bundle-popup-lmt-offer{background-color:#24343a}.ltm-offer-container__arrow{border-right-color:#35e0e847}.file-drop-target.svelte-145grbc{border-color:#35e0e81f}.file-drop-target.svelte-145grbc:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.file-drop-target.hovered.svelte-145grbc{border-color:#35e0e847}.file-drop-target.drag-over.svelte-145grbc{border-color:#35e0e8;background-color:#35e0e81a}.code-input.svelte-1xwmszg{border-color:#35e0e81f}.code-input.svelte-1xwmszg:focus{border-color:#35e0e8}.qr-code-image.svelte-1xwmszg,.slider-input.svelte-1xwmszg{border-color:#35e0e81f}.slider-input.svelte-1xwmszg::-webkit-slider-thumb{background-image:linear-gradient(145deg,#35e0e8,#3a7dce);border-color:#35e0e847}.slider-input.svelte-1xwmszg::-webkit-slider-runnable-track{background-image:linear-gradient(to right,#245d99,#35e0e8)}.slider-display.svelte-1xwmszg{color:#35e0e8}.info-message.svelte-1xwmszg{border-color:#35e0e8}.password-requirements.svelte-1xwmszg,.motd-input.svelte-15d5v89{border-color:#35e0e81f}.motd-input.svelte-15d5v89:focus{border-color:#35e0e81f}.motd-display.svelte-15d5v89{border-left-color:#35e0e81f}.item-showcase-container.svelte-2tp35a{background-color:#151f24bf}.more-info-btn.svelte-2tp35a,.more-info-btn.svelte-2tp35a:hover,.share-btn.svelte-2tp35a{border-color:#35e0e81f}.md-root.svelte-1kkpw01{background-color:#151f24}.md-header.svelte-1kkpw01{border-bottom-color:#35e0e81f;background-color:#111b1f}.md-back.svelte-1kkpw01{border-color:#35e0e81f}.md-header-icon.svelte-1kkpw01{color:#35e0e8}.md-thumb.svelte-1kkpw01{background-color:#0b1215}.md-info-bar.svelte-1kkpw01{border-bottom-color:#35e0e81f}.md-creator.svelte-1kkpw01{color:#35e0e8}.md-host-btn.svelte-1kkpw01,.md-icon-btn.svelte-1kkpw01{border-color:#35e0e81f}.md-tabs.svelte-1kkpw01{border-bottom-color:#35e0e81f}.md-tab.active.svelte-1kkpw01{color:#35e0e8;border-bottom-color:#35e0e8}.md-lb-name.svelte-1kkpw01{color:#35e0e8}.md-load-more.svelte-1kkpw01{border-color:#35e0e81f}.md-data-section-title.svelte-1kkpw01{color:#35e0e8;border-top-color:#35e0e81f}.md-data-table.svelte-1kkpw01{background-color:#111b1f;border-color:#35e0e81f}.md-data-table-row.svelte-1kkpw01{border-top-color:#35e0e81f}.md-data-header.svelte-1kkpw01{background-color:#111b1f;border-color:#35e0e81f}.md-data-search-btn.svelte-1kkpw01{border-color:#35e0e81f}.md-data-input.svelte-1kkpw01{background-color:#0b1215;border-color:#35e0e81f}.md-data-input.svelte-1kkpw01:focus{border-color:#35e0e8}.md-ver-row.svelte-1kkpw01{border-top-color:#35e0e81f}.md-ver-btn.svelte-1kkpw01{border-color:#35e0e81f}.mod-root.svelte-1v2j2f2{background-color:#151f24}.mod-header.svelte-1v2j2f2{border-bottom-color:#35e0e81f;background-color:#111b1f}.mod-back.svelte-1v2j2f2{border-color:#35e0e81f}.mod-header-icon.svelte-1v2j2f2{color:#35e0e8}.mod-thumb.svelte-1v2j2f2{background-color:#0b1215}.mod-info-bar.svelte-1v2j2f2{border-bottom-color:#35e0e81f}.mod-creator.svelte-1v2j2f2{color:#35e0e8}.mod-use-btn.svelte-1v2j2f2,.mod-use-btn.svelte-1v2j2f2:hover{background-color:#35e0e8;color:#0b1215}.mod-icon-btn.svelte-1v2j2f2{border-color:#35e0e81f}.style-container.svelte-143xo7r{background-color:#151f24bf}.slider-arrow.svelte-143xo7r{border-color:#35e0e81f}.slider-arrow.left.svelte-143xo7r .slider-arrow-icon.svelte-143xo7r{border-right-color:#35e0e847}.slider-arrow.right.svelte-143xo7r .slider-arrow-icon.svelte-143xo7r{border-left-color:#35e0e847}.swatch.svelte-143xo7r,.btn.svelte-143xo7r{border-color:#35e0e81f}.market-card.svelte-r5taai{background-color:#070c0fcc}.trade-label.inv.svelte-1lqen9w{background-color:#35e0e8;color:#0b1215}.trade-inv-item.svelte-1lqen9w{border-color:#35e0e847}.trade-search.svelte-1lqen9w{border-color:#35e0e81f}.trade-search.svelte-1lqen9w:focus{border-color:#35e0e81f}.gift-root.svelte-g5j1wf{background-color:#151f24}.gift-header.svelte-g5j1wf{border-bottom-color:#35e0e81f;background-color:#111b1f}.gift-back.svelte-g5j1wf{border-color:#35e0e81f}.gift-header-icon.svelte-g5j1wf{color:#35e0e8}.gift-input.svelte-g5j1wf{background-color:#0b1215;border-color:#35e0e81f}.gift-input.svelte-g5j1wf:focus{border-color:#35e0e8}.gift-send.svelte-g5j1wf{background-color:#35e0e8;color:#0b1215}.gift-done.svelte-g5j1wf{border-color:#35e0e81f}.buy-button.svelte-r01l8m:disabled{background-color:#24343a}.buy-button.svelte-r01l8m:disabled:hover{background-color:#24343a}.shop-header.svelte-1gtpoav{border-bottom-color:#35e0e81f}.rp-balance.svelte-1gtpoav,.guest-earned-collect__reward-items.svelte-1hb83uo,.guest-earned-collect__register-btn.svelte-1hb83uo,.guest-earned-collect__register-btn.svelte-1hb83uo:hover{border-color:#35e0e81f}.signup-rewards-list.svelte-1v6b0qm{background-color:#070c0fb3}.signup-rewards-register-button.svelte-1v6b0qm{border-color:#35e0e847!important}.product-row.svelte-14104bb{border-color:#35e0e81f}.product-row.svelte-14104bb:hover{border-color:#35e0e847}.gift-button.svelte-14104bb,.for-you-text.svelte-14104bb,.currency-shop-item.svelte-14104bb,.currency-shop-item.svelte-14104bb:hover{border-color:#35e0e81f}.verification-banner.svelte-165vbjp{background-color:#151f24cc}.spinner.svelte-165vbjp{border-color:#35e0e81f;border-top-color:#35e0e847}.section-title.svelte-e65miw .material-icons.svelte-e65miw{color:#35e0e8}.toggle-switch.svelte-e65miw input:checked+.slider.svelte-e65miw{background-color:#35e0e8;color:#0b1215}.texture-upload-item.svelte-e65miw,.texture-image.svelte-e65miw{border-color:#35e0e81f}.btn-generate.svelte-e65miw{background-color:#35e0e8;color:#0b1215}.btn-generate.svelte-e65miw:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.sgNum.svelte-1i1uhp7,.sgHex.svelte-1i1uhp7{border-color:#35e0e81f}.sgNum.svelte-1i1uhp7:focus,.sgHex.svelte-1i1uhp7:focus{border-color:#35e0e8}.sgSlider.svelte-1i1uhp7::-webkit-slider-thumb{background-color:#35e0e8;color:#0b1215}.sgSlider.svelte-1i1uhp7:focus-visible{outline-color:#35e0e8}.sgColorInput.svelte-1i1uhp7{border-color:#35e0e81f}.sgColorInput.svelte-1i1uhp7:focus-visible{outline-color:#35e0e8}.sgPalette.svelte-sxvv3c{background-color:#0b1215fa;border-color:#35e0e81f}.sgPaletteSearch.svelte-sxvv3c{border-color:#35e0e81f}.sgPaletteSearch.svelte-sxvv3c:focus{border-color:#35e0e8}.sgPaletteItem.active.svelte-sxvv3c,.sgPaletteItem.svelte-sxvv3c:focus-visible{background-color:#35e0e840}.sgEditor.svelte-upgo13{border-color:#35e0e81f}.sgToolbar.svelte-upgo13{border-bottom-color:#35e0e81f}.sgBtn.svelte-upgo13{border-color:#35e0e81f}.sgBtn.svelte-upgo13:focus-visible,.sgCanvas.svelte-upgo13:focus-visible,.sgErrorItem.svelte-upgo13:focus-visible,.sgMenuItem.svelte-upgo13:focus-visible{outline-color:#35e0e8}.sgBtnPrimary.svelte-upgo13{background-color:#35e0e840;border-color:#35e0e899;color:#35e0e8}.sgBtnPrimary.svelte-upgo13:hover:not(:disabled){background-color:#35e0e866}.sgMenu.svelte-upgo13{background-color:#0b1215fa;border-color:#35e0e81f}.sgMenuItem.svelte-upgo13:hover{background-color:#35e0e840}.sgCanvas.svelte-upgo13{background-color:#070c0fe6}.sgOverlay.svelte-upgo13{background-color:#070c0ffa;border-color:#35e0e81f}.sgIoText.svelte-upgo13{border-color:#35e0e81f}.sgIoText.svelte-upgo13:focus{border-color:#35e0e8}.sgFooter.svelte-upgo13{border-top-color:#35e0e81f}.io-action-bar-button.svelte-103lu6x{background-color:#35e0e8;color:#0b1215}.search-input.svelte-103lu6x{border-color:#35e0e81f}.search-input.svelte-103lu6x:focus{border-color:#35e0e8}.io-action-bar-button.svelte-103lu6x:hover,.action-btn.test-btn.svelte-103lu6x,.action-btn.test-btn.svelte-103lu6x:hover{background-color:#35e0e8;color:#0b1215}.skin-manager-table.svelte-103lu6x .table thead th{background-color:#0b1215}.tab-navigation.svelte-103lu6x{border-bottom-color:#35e0e81f}.tab-button.active.svelte-103lu6x{color:#35e0e8;background-color:#35e0e81a}.tab-button.active.svelte-103lu6x:after{background-color:#35e0e8;color:#0b1215}.preview-control-btn.svelte-103lu6x{border-color:#35e0e81f}.preview-control-btn.active.svelte-103lu6x{background-color:#35e0e84d;border-color:#35e0e8}.paint-select.svelte-103lu6x{border-color:#35e0e81f}.paint-select.svelte-103lu6x option.svelte-103lu6x{background-color:#0b1215}.connection.svelte-1fenhdo{background-color:#182429}.consequences.svelte-18wpngg{border-color:#35e0e81f}.loading-spinner.svelte-190e6fj{border-color:#35e0e81f;border-top-color:#35e0e847}.retry-button.svelte-190e6fj{background-color:#35e0e8;color:#0b1215}.benefits-card.svelte-190e6fj,.billing-info.svelte-190e6fj,.subscribe-btn.svelte-190e6fj{border-color:#35e0e81f}.subscribe-btn.svelte-190e6fj:hover{border-color:#35e0e847}.disabled-card.svelte-190e6fj .subscribe-btn.svelte-190e6fj{background-image:linear-gradient(135deg,#24343a,#1d2c32);border-color:#35e0e81f}.disabled-card.svelte-190e6fj .subscribe-btn.svelte-190e6fj:hover,.disabled-indicator.svelte-190e6fj{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.subscribed-btn.svelte-190e6fj{border-color:#35e0e81f}.renew-btn.svelte-190e6fj{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);border-color:#35e0e81f;box-shadow:0 8px 24px #35e0e866,0 4px 8px #0000004d,inset 0 1px #ffffff4d}.renew-btn.svelte-190e6fj:hover{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);box-shadow:0 12px 32px #35e0e880,0 6px 12px #0006,inset 0 1px #fff6;border-color:#35e0e847}.cancel-container.svelte-190e6fj,.cancel-btn.svelte-190e6fj,.cancel-btn.svelte-190e6fj:hover{border-color:#35e0e81f}.wild-offer-notification.svelte-1gcqcwy{background-image:linear-gradient(135deg,#000000f2,#070c0ffa)}.shop-btn.svelte-1gcqcwy,.shop-btn.svelte-1gcqcwy:hover,.player-bound-display.svelte-1nzacef,.player-bound-display.svelte-1nzacef:hover,.login-button.svelte-1nzacef,.login-button.svelte-1nzacef:hover{border-color:#35e0e81f}.data-table.svelte-69sryq thead.svelte-69sryq{background-color:#0b1215}.table-header.svelte-69sryq{color:#35e0e8}.table-header.sortable.svelte-69sryq:hover{background-color:#35e0e81a}.table-header.sortable.sort-asc.svelte-69sryq:after{border-bottom-color:#35e0e8}.table-header.sortable.sort-desc.svelte-69sryq:after{border-top-color:#35e0e8}.table-cell.svelte-69sryq{border-bottom-color:#35e0e81f}.qs-window.svelte-1o11rsf{background-color:#111b1f;border-color:#35e0e81f}.qs-item-preview.svelte-1o11rsf,.qs-values.svelte-1o11rsf,.qs-amount-select.svelte-1o11rsf{border-color:#35e0e81f}.qs-amount-select.svelte-1o11rsf:focus{border-color:#35e0e88c}.jy-filter-bar.svelte-1vqzycn{background-color:#111b1f;border-color:#35e0e81f}.jy-search-input.svelte-1vqzycn,.jy-sort-select.svelte-1vqzycn{background-color:#151f24;border-color:#35e0e81f}.sd-root.svelte-a9j4oe{background-color:#151f24}.sd-header.svelte-a9j4oe{border-bottom-color:#35e0e81f;background-color:#111b1f}.sd-back.svelte-a9j4oe{border-color:#35e0e81f}.sd-header-icon.svelte-a9j4oe{color:#35e0e8}.sd-del.svelte-a9j4oe{border-color:#35e0e81f}.sd-tabs.svelte-a9j4oe{border-bottom-color:#35e0e81f}.sd-tab.active.svelte-a9j4oe{color:#35e0e8;border-bottom-color:#35e0e8}.sd-row.svelte-a9j4oe{background-color:#111b1f;border-color:#35e0e81f}.sd-input.svelte-a9j4oe{background-color:#0b1215;border-color:#35e0e81f}.sd-input.svelte-a9j4oe:focus{border-color:#35e0e8}.sd-primary.svelte-a9j4oe{background-color:#35e0e8;color:#0b1215}.sd-mini.svelte-a9j4oe{border-color:#35e0e81f}.sd-kr.svelte-a9j4oe{background-color:#111b1f}.region-btn.svelte-1gdnqq5{border-color:#35e0e81f}.region-btn.active.svelte-1gdnqq5{background-color:#35e0e826;border-color:#35e0e880;color:#35e0e8}.season-select.svelte-1gdnqq5{border-color:#35e0e81f}.season-select.svelte-1gdnqq5 option.svelte-1gdnqq5{background-color:#0b1215}th.svelte-1gdnqq5{color:#35e0e8}td.svelte-1gdnqq5{border-bottom-color:#35e0e81f}.season-select.svelte-81ueoe{border-color:#35e0e81f}.season-select.svelte-81ueoe option.svelte-81ueoe{background-color:#0b1215}.kc-title.svelte-1xp8pv1{color:#35e0e8}.back-btn.svelte-1xp8pv1{border-color:#35e0e84d}.back-btn.svelte-1xp8pv1:hover{background-color:#35e0e81f;color:#35e0e8}.friend-list.svelte-e2g8p2{background-color:#111b1f;border-right-color:#35e0e81f}.friend-presence-dot.svelte-e2g8p2{border-color:#35e0e81f}.friend-presence-dot.offline.svelte-e2g8p2{background-color:#24343a}.friend-unread.svelte-e2g8p2{background-color:#35e0e8;color:#0b1215}.friend-list-search.svelte-e2g8p2{background-color:#111b1f;border-top-color:#35e0e81f}.conversation-root.svelte-128yn5i{background-color:#151f24}.conversation-header.svelte-128yn5i{border-bottom-color:#35e0e81f;background-color:#111b1f}.conversation-presence-dot.svelte-128yn5i{border-color:#35e0e81f}.conversation-presence-dot.offline.svelte-128yn5i{background-color:#24343a}.conversation-compose.svelte-128yn5i{border-top-color:#35e0e81f;background-color:#111b1f}.conversation-load-earlier.svelte-128yn5i{border-color:#35e0e81f}.conversation-input.svelte-128yn5i{background-color:#0b1215;border-color:#35e0e81f}.conversation-input.svelte-128yn5i:focus{border-color:#35e0e8}.conversation-emoji-button.svelte-128yn5i{background-color:#0b1215;border-color:#35e0e81f}.conversation-emoji-button.svelte-128yn5i:hover:not(:disabled){background-color:#111b1f;color:#35e0e8}.conversation-send-button.svelte-128yn5i{background-color:#35e0e8;color:#0b1215}.conversation-send-button.svelte-128yn5i:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.conversation-send-button.svelte-128yn5i:disabled{background-color:#1d2c32}.friends-root.svelte-u33r8v{background-color:#151f24}.friends-status-dot.svelte-u33r8v{background-color:#24343a}.player-card.svelte-dp3rf9{background-color:#0b1215cc;border-color:#35e0e81f}.player-card.svelte-dp3rf9:hover{background-color:#111b1fcc}.player-card.svelte-dp3rf9:focus-visible{outline-color:#35e0e847}.counterBadge.svelte-fgmdj8{background-color:#35e0e8;color:#0b1215}.territory-map-container.svelte-102279m{background-color:#111b1f;border-color:#35e0e81f}.territory-details-panel.svelte-102279m{border-color:#35e0e81f}.panel-header.svelte-102279m,.leaderboard-entry.svelte-102279m{border-bottom-color:#35e0e81f}.clickable-name.svelte-myp8tq:hover{color:var(--highlight-color, rgb(53, 224, 232))}.view-tab.svelte-myp8tq{border-color:#35e0e81f}.view-tab.active.svelte-myp8tq{background-color:#35e0e833;border-color:#35e0e866}.day-arrow.svelte-myp8tq,.day-input.svelte-myp8tq{border-color:#35e0e81f}.payouts-row.svelte-myp8tq,.payouts-row-header.svelte-myp8tq{border-bottom-color:#35e0e81f}.main-title.svelte-1sr7h97,.card-title.svelte-1sr7h97{color:#35e0e8}.map-badge.svelte-1sr7h97,.mode-badge.svelte-1sr7h97{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.section-title.svelte-1sr7h97{color:#35e0e8;border-left-color:#35e0e8}.rule-icon.svelte-1sr7h97,.tip-title.svelte-1sr7h97{color:#35e0e8}.filter-input.svelte-72bcy3{border-color:#35e0e84d}.filter-input.svelte-72bcy3:focus{border-color:#35e0e8}.post-card.svelte-72bcy3{border-color:#35e0e81f}.looking-for-label.svelte-72bcy3{color:#35e0e8}.req-badge.svelte-72bcy3{border-color:#35e0e81f}.player-clan.clickable-clan.svelte-7h12t9:hover{color:var(--highlight-color, rgb(53, 224, 232))}.tab-bar.svelte-7h12t9{border-bottom-color:#35e0e81f}.tab.active.svelte-7h12t9{border-bottom-color:var(--highlight-color, rgb(53, 224, 232))}.day-arrow.svelte-7h12t9,.day-input.svelte-7h12t9{border-color:#35e0e81f}.page-btn.svelte-7h12t9{background-color:#35e0e833;border-color:#35e0e866}.ct-row.svelte-7h12t9,.ct-header.svelte-7h12t9{border-bottom-color:#35e0e81f}.clickable-name.svelte-7h12t9:hover{color:var(--highlight-color, rgb(53, 224, 232))}.rank-display.svelte-19e82s0{border-color:#35e0e81f}.popup-box.svelte-6dkuug{background-color:#151f24}.moreKrunkerOption.svelte-19783yx{border-color:#35e0e847;background-color:#0b1215}.moreKrunkerOption.svelte-19783yx:hover{border-color:#35e0e847}.emoji-panel.svelte-13g6jqo{background-color:#151f24}.emoji-icon.svelte-13g6jqo{color:#35e0e8}.emoji-item.selected.svelte-13g6jqo,.emoji-item.svelte-13g6jqo:hover{border-color:#35e0e81f}.compose-window.svelte-qxxay9{background-color:#0b1215;border-color:#35e0e81f}.compose-input.svelte-qxxay9{border-color:#35e0e81f}.compose-input.svelte-qxxay9:focus{border-color:#35e0e899}.compose-input-num.svelte-qxxay9{border-color:#35e0e81f}.compose-btn-submit.svelte-qxxay9{background-color:#35e0e8;color:#0b1215}.compose-btn-submit.svelte-qxxay9:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.rewards-container.svelte-1sac6ik{border-color:#35e0e81f}.reward-card.flying.svelte-1sac6ik:after{border-color:#35e0e81f}.card-front.svelte-1sac6ik,.card-back.svelte-1sac6ik{background-color:#070c0fe6}.loading-spinner.svelte-172kpk5{border-color:#35e0e81f;border-top-color:#35e0e8}.socialsStickyFooter.svelte-1ley7u4{border-top-color:#35e0e81f}.pollBadge.svelte-1ley7u4,.pollVote.svelte-1ley7u4{background-color:#35e0e8;color:#0b1215}.eventLink.svelte-1ley7u4{color:#35e0e8;background-color:#35e0e81a}.eventLink.svelte-1ley7u4:hover{background-color:#35e0e833}.dm-emoji-panel.svelte-1ni3kfh{background-color:#151f24;border-color:#35e0e81f}.dm-emoji-header.svelte-1ni3kfh{border-bottom-color:#35e0e81f}.dm-emoji-header-icon.svelte-1ni3kfh{color:#35e0e8}.dm-emoji-thumb.svelte-1ni3kfh{background-color:#0b1215;border-color:#35e0e81f}.sub-tab-panel.svelte-lri212{border-color:#35e0e847}.bundle-card.svelte-lri212{background-color:#070c0f}.bundle-item-req.svelte-lri212{border-color:#35e0e847}.detail-window.svelte-h3kymj{background-color:#0b1215;border-color:#35e0e81f}.detail-head.svelte-h3kymj{border-bottom-color:#35e0e81f}.reply-input.svelte-h3kymj{border-color:#35e0e81f}.reply-input.svelte-h3kymj:focus{border-color:#35e0e880}.reply-btn.svelte-h3kymj{background-color:#35e0e8;color:#0b1215}.map-filter-select.svelte-c92dbh{border-color:#35e0e866}.map-filter-select.svelte-c92dbh:hover{border-color:#35e0e8}.map-filter-select.svelte-c92dbh:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.section-title.svelte-c92dbh{color:#35e0e8;border-left-color:#35e0e8}.day-arrow.svelte-c92dbh{border-color:#35e0e866;color:#35e0e8}.day-arrow.svelte-c92dbh:hover:not(:disabled){background-color:#35e0e833;border-color:#35e0e8}.day-input.svelte-c92dbh{border-color:#35e0e866}.day-input.svelte-c92dbh:focus{border-color:#35e0e8}.no-participation-title.svelte-c92dbh{color:#35e0e8}.page-btn.svelte-c92dbh{background-color:#35e0e833;border-color:#35e0e866}.overlay-content.svelte-jxc66d{background-color:#070c0f;border-color:#35e0e81f}.streams-overlay.svelte-60shhe{border-color:#35e0e81f}.hide-button.svelte-60shhe{background-color:#182429}.hide-button.svelte-60shhe:hover{background-color:#1d2c32}.spinner.svelte-60shhe{border-color:#35e0e81f}.featured-section.svelte-60shhe{background-color:#070c0fe6}.stream-card.svelte-60shhe{background-color:#0b1215cc;border-color:#35e0e81f}.thumbnail.svelte-60shhe{background-color:#0b1215}.thumbnail.svelte-60shhe:before{background-color:#0b1215}.tutorialSidebar.svelte-los391{background-image:linear-gradient(180deg,#111b1ff2,#0b1215f2)}.tutorialSidebar.svelte-los391:before{background-image:linear-gradient(180deg,rgba(17,27,31,.95) 0%,transparent 100%)}.tutorialSidebar.svelte-los391:after{background-image:linear-gradient(0deg,rgba(11,18,21,.95) 0%,transparent 100%)}.tutorialNavItem.svelte-los391{border-bottom-color:#35e0e81f}.matchmakingBarImage.svelte-los391,.inviteFriendsURLImage.svelte-los391,.spinsImage.svelte-los391,.matchmakingBarQuickMatchImage.svelte-los391,.hostFindGameImage.svelte-los391,.hostGameSetupImage.svelte-los391,.challengesImage.svelte-los391,.rankedImage.svelte-los391,.clanCreateImage.svelte-los391,.clanManageImage.svelte-los391,.tradingImage.svelte-los391,.challengeModeImage.svelte-los391,.challengeModeDifferenceImage.svelte-los391{border-color:#35e0e81f}.comment-text.svelte-7miv1g a{color:#35e0e8}.guide-section.svelte-4log2q{background-color:#070c0f}.guide-section-title.svelte-4log2q .material-icons.svelte-4log2q{color:#35e0e8}.guide-key.svelte-4log2q{background-color:#111b1f;border-color:#35e0e81f}.guide-rarity.dark.svelte-4log2q{border-color:#35e0e81f}.match-details.svelte-1irqx9a{border-top-color:#35e0e81f}.table-header.svelte-1irqx9a,.table-cell.svelte-1irqx9a{border-bottom-color:#35e0e81f}.page-btn.svelte-1irqx9a{border-color:#35e0e81f}.page-btn.svelte-1irqx9a:hover:not([disabled]){border-color:#35e0e81f}.currency-reward.svelte-1yk8fym,.gift-button.svelte-rew7ag{border-color:#35e0e81f}.modal-content.svelte-1pf0608{background-color:#111b1f;border-color:#35e0e81f}.price-input.svelte-1pf0608,.fee-breakdown.svelte-1pf0608{border-color:#35e0e81f}.season-banner.svelte-17kea4i{background-color:#35e0e8;color:#0b1215}.challenges-link-icon.svelte-17kea4i,.section-title.svelte-1x46pbz .material-icons.svelte-1x46pbz{color:#35e0e8}.param-chip.svelte-1x46pbz{border-color:#35e0e81f}.add-uniform-btn.svelte-1x46pbz{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.add-uniform-btn.svelte-1x46pbz:hover{background-color:#35e0e84d}.part-block.svelte-1x46pbz,.part-name-input.svelte-1x46pbz{border-color:#35e0e81f}.copy-defaults-btn.svelte-1x46pbz{background-color:#35e0e826;border-color:#35e0e84d;color:#35e0e8}.copy-defaults-btn.svelte-1x46pbz:hover:not(:disabled){background-color:#35e0e84d}.apply-btn.svelte-1x46pbz,.apply-btn.svelte-1x46pbz:hover{background-color:#35e0e8;color:#0b1215}.clear-btn.svelte-1x46pbz{border-color:#35e0e81f}.ph-xp-fill.svelte-da3zva{background-image:linear-gradient(to right,#ff6a0b,#35e0e8)}.survey-notification.svelte-1u0qxrf{background-image:linear-gradient(135deg,#000000f2,#070c0ffa)}.answer-btn.svelte-1u0qxrf{border-color:#35e0e81f}.icon-btn.list.svelte-hk8nq9{background-color:#35e0e8;color:#0b1215}.card-title.svelte-1k16b2z,.view-title.svelte-1k16b2z{color:#35e0e8}.trade-item.svelte-z9tzua,.trade-item-empty.svelte-z9tzua{border-color:#35e0e81f}.bm-card.svelte-dbcods{background-color:#070c0f}.bm-card-icon.svelte-dbcods{border-color:#35e0e847}.bm-locked-btn.svelte-dbcods{background-color:#111b1f}.modal-content.svelte-dbcods{background-color:#111b1f;border-color:#35e0e81f}.price-row.total.svelte-dbcods{border-top-color:#35e0e81f}.sma-dialog.svelte-1veg8cv{background-color:#151f24}.sma-header.svelte-1veg8cv{background-color:#111b1f;border-bottom-color:#35e0e81f}.sma-header-icon.svelte-1veg8cv{color:#35e0e8}.sma-rules.svelte-1veg8cv{background-color:#111b1f;border-color:#35e0e81f}.sma-input.svelte-1veg8cv{background-color:#0b1215;border-color:#35e0e81f}.sma-input.svelte-1veg8cv:focus{border-color:#35e0e8}.sma-map.svelte-1veg8cv{border-color:#35e0e81f}.sma-map.active.svelte-1veg8cv{border-color:#35e0e8;color:#35e0e8}.sma-footer.svelte-1veg8cv{border-top-color:#35e0e81f;background-color:#111b1f}.sma-secondary.svelte-1veg8cv{border-color:#35e0e81f}.sma-primary.svelte-1veg8cv{background-color:#35e0e8;color:#0b1215}.usernames-col.svelte-27udiy{border-color:#35e0e81f}.col-header.svelte-27udiy{border-bottom-color:#35e0e81f}.username-row.svelte-27udiy{border-color:#35e0e81f}.username-row.active.svelte-27udiy{border-color:#35e0e8}.leave-note.svelte-27udiy{border-left-color:#35e0e8}.username-active.svelte-27udiy{color:#35e0e8}#menuWindow.eterno .store-tabs.svelte-v85byk{background-color:#111b1fad}.store-tab.svelte-v85byk:hover,.store-tab-active.svelte-v85byk,.store-tab-active.svelte-v85byk:hover{border-bottom-color:#35e0e847}.register-notification.svelte-t1w66d{background-image:linear-gradient(135deg,#000000e6,#070c0ff2)}.table.svelte-12kndpz th.svelte-12kndpz,.table.svelte-12kndpz td.svelte-12kndpz{border-bottom-color:#35e0e81f}.pagination.svelte-12kndpz{border-top-color:#35e0e81f}.pagination-btn.svelte-12kndpz{background-color:#35e0e8;color:#0b1215}.pagination-btn.svelte-12kndpz:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.loading-spinner.svelte-1tteuk0{border-color:#35e0e81f}.load-more-btn.svelte-1tteuk0{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-1tteuk0:hover{background-color:#35e0e84d}.load-more-btn.svelte-1tteuk0:active{background-color:#35e0e866}.modal-content.svelte-1k428dj{background-color:#111b1f;border-color:#35e0e81f}.st-root.svelte-kqehnu{background-color:#151f24}.st-header.svelte-kqehnu{border-bottom-color:#35e0e81f;background-color:#111b1f}.st-back.svelte-kqehnu{border-color:#35e0e81f}.st-header-icon.svelte-kqehnu{color:#35e0e8}.st-row.svelte-kqehnu{background-color:#111b1f;border-color:#35e0e81f}.st-row.svelte-kqehnu:hover{background-color:#151f24}.st-invite.svelte-kqehnu:hover{background-color:#111b1f}.st-mini.svelte-kqehnu{border-color:#35e0e81f}.st-section-title.svelte-kqehnu{color:#35e0e8;border-top-color:#35e0e81f}.st-input.svelte-kqehnu{background-color:#0b1215;border-color:#35e0e81f}.st-input.svelte-kqehnu:focus{border-color:#35e0e8}.st-primary.svelte-kqehnu{background-color:#35e0e8;color:#0b1215}.card-title.svelte-raovk7,.view-title.svelte-raovk7{color:#35e0e8}.profile-detail-root.svelte-1hghrmf{background-color:#151f24}.profile-detail-header-bar.svelte-1hghrmf{border-bottom-color:#35e0e81f;background-color:#111b1f}.profile-detail-back.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-header-icon.svelte-1hghrmf{color:#35e0e8}.profile-detail-identity.svelte-1hghrmf,.profile-detail-avatar.svelte-1hghrmf{background-color:#111b1f;border-color:#35e0e81f}.profile-detail-online-dot.svelte-1hghrmf{background-color:#24343a;border-color:#35e0e81f}.profile-detail-creation-thumb.svelte-1hghrmf{background-color:#0b1215}.profile-detail-clan.svelte-1hghrmf{color:#35e0e8}.profile-detail-info-row.svelte-1hghrmf{border-top-color:#35e0e81f}.profile-detail-follow-box.svelte-1hghrmf{background-color:#111b1f}.profile-detail-follow-box.svelte-1hghrmf:hover{background-color:#151f24}.profile-detail-action.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-action.active.svelte-1hghrmf{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.profile-detail-action.active.svelte-1hghrmf i.svelte-1hghrmf{color:#35e0e8}.profile-detail-xp-strip.svelte-1hghrmf{border-top-color:#35e0e81f}.profile-detail-level-badge.svelte-1hghrmf,.profile-detail-xp-fill.svelte-1hghrmf{background-color:#35e0e8;color:#0b1215}.profile-detail-stat.svelte-1hghrmf,.profile-detail-class.svelte-1hghrmf,.profile-detail-raid-row.svelte-1hghrmf{background-color:#0b1215;border-color:#35e0e81f}.profile-detail-sales-panel.svelte-1hghrmf,.profile-detail-badges-panel.svelte-1hghrmf,.profile-detail-creations-panel.svelte-1hghrmf{background-color:#111b1f;border-color:#35e0e81f}.profile-detail-section-header.svelte-1hghrmf,.profile-detail-sales-header.svelte-1hghrmf{color:#35e0e8}.profile-detail-range-btn.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-range-btn.active.svelte-1hghrmf{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.profile-detail-listing-card.svelte-1hghrmf{background-color:#0b1215}.profile-detail-listing-card.svelte-1hghrmf:hover{background-color:#111b1f}.profile-detail-listing-thumb.svelte-1hghrmf{background-color:#070c0f}.profile-detail-title-item.svelte-1hghrmf,.profile-detail-badge-item.svelte-1hghrmf{background-color:#111b1f}.profile-detail-creation-card.svelte-1hghrmf{background-color:#0b1215}.profile-detail-creation-card.svelte-1hghrmf:hover{background-color:#111b1f}.modal-content.svelte-1ugt6n9{background-color:#111b1f;border-color:#35e0e81f}.section-title.svelte-awmvtb .material-icons.svelte-awmvtb{color:#35e0e8}.sound-info.svelte-awmvtb{border-color:#35e0e81f}.btn-replace.svelte-awmvtb{background-color:#35e0e8cc}.btn-replace.svelte-awmvtb:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.item-preview.svelte-1lii2o,.kid-display-container.svelte-lbi007{border-color:#35e0e81f}.kid-display-benefits.svelte-lbi007 h3.svelte-lbi007:after{background-color:#35e0e8;color:#0b1215}.partnership-info.svelte-lbi007{background-color:#35e0e81a;border-left-color:#35e0e8}.sgNode.svelte-wbsbny{background-color:#0b1215f5;border-color:#35e0e81f}.sgNode.selected.svelte-wbsbny{border-color:#35e0e8;box-shadow:0 0 0 1px #35e0e8,0 2px 10px #00000073}.sgNode.isOutput.svelte-wbsbny .sgNodeHeader.svelte-wbsbny{background-color:#35e0e840}.sgNodeHeader.svelte-wbsbny{border-bottom-color:#35e0e81f}.sgSelect.svelte-wbsbny,.sgText.svelte-wbsbny{border-color:#35e0e81f}.sgSelect.svelte-wbsbny option.svelte-wbsbny{background-color:#0b1215}.sgSelect.svelte-wbsbny:focus,.sgText.svelte-wbsbny:focus{border-color:#35e0e8}.sgCheck.svelte-wbsbny:focus-visible{outline-color:#35e0e8}.sgUnset.svelte-wbsbny{border-color:#35e0e81f}.sgUnset.svelte-wbsbny:hover:not(:disabled){border-color:#35e0e847}.sgUnset.svelte-wbsbny:focus-visible{outline-color:#35e0e8}.simple-tabs.svelte-1oqd18e{border-bottom-color:#35e0e81f}.simple-tab-active.svelte-1oqd18e{border-bottom-color:#35e0e8}.simple-tab-active.svelte-1oqd18e .simple-tab-icon.svelte-1oqd18e,.simple-tab-active.svelte-1oqd18e .simple-tab-label.svelte-1oqd18e{color:#35e0e8}.load-more-button.svelte-23mnz9{background-color:#35e0e833;border-color:#35e0e880;color:#35e0e8}.load-more-button.svelte-23mnz9:hover{background-color:#35e0e84d}.loading-spinner.svelte-gh77t9{border-color:#35e0e81f;border-top-color:#35e0e847}.retry-button.svelte-gh77t9{background-color:#35e0e8;color:#0b1215}.filter-input.svelte-1rpti7l{border-color:#35e0e84d}.filter-input.svelte-1rpti7l:focus{border-color:#35e0e8}.spin-promo-badge.svelte-5s5opu{border-color:#35e0e847}.no-offer-container.svelte-m5s1iy{background-color:#070c0fcc}.refresh-button.svelte-m5s1iy{background-image:linear-gradient(135deg,#ff5722,#ff9800,#35e0e8);border-color:#35e0e81f}.refresh-button.svelte-m5s1iy:hover:not(:disabled){border-color:#35e0e847}.optin__hero-fade.svelte-ga1m1g{background-image:linear-gradient(to top,#070c0ff2,#14141400 45%)}.report-root.svelte-18p16wl{background-color:#151f24}.report-header.svelte-18p16wl{border-bottom-color:#35e0e81f;background-color:#111b1f}.report-back.svelte-18p16wl{border-color:#35e0e81f}.report-input.svelte-18p16wl{background-color:#0b1215;border-color:#35e0e81f}.report-done.svelte-18p16wl{border-color:#35e0e81f}.trade-window.svelte-kfskmv{background-color:#151f24}.trade-message.svelte-kfskmv{border-color:#35e0e81f}.trade-message.svelte-kfskmv:focus{border-color:#35e0e81f}.trade-submit.disabled.svelte-kfskmv{background-color:#1d2c32}.profile-header.svelte-18dbnt3{border-bottom-color:#35e0e81f}.dynamic-shop-item.svelte-dif8c,.dynamic-shop-item.svelte-dif8c:hover,.dynamic-row.svelte-dif8c{border-color:#35e0e81f}.dynamic-row.svelte-dif8c:hover{border-color:#35e0e847}.next-step-hint.svelte-dif8c{color:#35e0e8}.dyn-buy-button.svelte-dif8c{border-color:#35e0e81f}.dyn-buy-button.virtual.svelte-dif8c{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);box-shadow:0 4px 12px #35e0e84d,0 2px 4px #0003,inset 0 1px #fff3}.dyn-buy-button.svelte-dif8c:hover:not(:disabled){border-color:#35e0e81f}.dyn-buy-button.svelte-dif8c:disabled{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.craft-recipe-card.svelte-ggnigm{background-color:#070c0f}.craft-icon.svelte-ggnigm,.craft-item-req.svelte-ggnigm{border-color:#35e0e847}.craft-item-req.missing.svelte-ggnigm{border-color:#35e0e847!important}.craft-timer.svelte-ggnigm{background-color:#151f24}.item-wrapper.selected.svelte-18k2d4k{box-shadow:0 0 0 2px #35e0e8}.section-title.svelte-gygf75 .material-icons.svelte-gygf75{color:#35e0e8}.btn-replace.svelte-gygf75{background-color:#35e0e8cc}.btn-replace.svelte-gygf75:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.highlight-name.svelte-1w0uz1r{background-color:#35e0e81a;border-color:#35e0e84d}.logo-image.svelte-1w0uz1r,.banner-color-swatch.svelte-1w0uz1r,.swatch.svelte-1w0uz1r,.swatch-fill.svelte-1w0uz1r,.text-notification.svelte-nrigjp,.share-btn.svelte-1524ito{border-color:#35e0e81f}.bubble-row.sent.svelte-jj9ljg .bubble.svelte-jj9ljg{background-color:#35e0e8;color:#0b1215}.quantity-button.svelte-jsgxg6:disabled{background-color:#24343a;border-color:#35e0e81f}.section-title.svelte-1rov8jm .material-icons.svelte-1rov8jm{color:#35e0e8}.tool-btn.svelte-1rov8jm,.attach-btn.svelte-1rov8jm{border-color:#35e0e81f}.tool-btn.active.svelte-1rov8jm{border-color:#35e0e8;background-color:#35e0e840}.fields.svelte-1rov8jm input[type=number].svelte-1rov8jm,.fields.svelte-1rov8jm select.svelte-1rov8jm,.fields.svelte-1rov8jm input[type=color].svelte-1rov8jm{border-color:#35e0e81f}.window-header.svelte-4fhlo6{border-bottom-color:#35e0e81f;background-color:#111b1f}.window-header-icon.svelte-4fhlo6,.section-title.svelte-wfs5t6 .material-icons.svelte-wfs5t6{color:#35e0e8}.form-select.svelte-wfs5t6{border-color:#35e0e81f}.form-select.svelte-wfs5t6:focus{border-color:#35e0e8}.form-select.svelte-wfs5t6 option.svelte-wfs5t6{background-color:#0b1215}.dye-color-input.svelte-wfs5t6{border-color:#35e0e81f}.dye-opacity-slider.svelte-wfs5t6::-webkit-slider-thumb{background-color:#35e0e8;border-color:#35e0e81f;color:#0b1215}.form-input.svelte-iy81sy,.form-select.svelte-iy81sy{border-color:#35e0e81f}.form-input.svelte-iy81sy:focus,.form-select.svelte-iy81sy:focus{border-color:#35e0e8}.form-select.svelte-iy81sy option.svelte-iy81sy{background-color:#0b1215}.add-all-button.svelte-1rj22es:disabled{background-color:#24343a;border-color:#35e0e81f}.lottery-window.theme-easter.svelte-1rj22es,.theme-easter.svelte-1rj22es .title-separator.svelte-1rj22es,.theme-easter.svelte-1rj22es .cost-column.themed-box.svelte-1rj22es{outline-color:#35e0e81f}.lottery-window.theme-neutral.svelte-1rj22es:after{border-color:#35e0e81f}.theme-neutral.svelte-1rj22es .draw-timer.svelte-1rj22es{border-color:#35e0e81f;background-color:#182429a6}.theme-neutral.svelte-1rj22es .cost-column.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .grand-prize-container.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .additional-prizes-box.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .last-draw-winners.themed-box.svelte-1rj22es{border-color:#35e0e81f;background-color:#18242980}.painted-badge-swatch.svelte-n0vhtc,.painted-inline-swatch.svelte-n0vhtc{border-color:#35e0e847}.milestone-number.svelte-6hxhl0{background-color:#182429}.milestone-bonus.svelte-6hxhl0{background-color:#151f24}.milestone-bonus.claimable.svelte-6hxhl0{background-color:#182429}.progression-summary.svelte-6hxhl0{border-top-color:#35e0e81f}.progression-details.svelte-6hxhl0{border-color:#35e0e81f}.offer-holder.svelte-1agthf7,.offer-holder.svelte-1agthf7:hover{background-color:#111b1f}.offer-name.svelte-1agthf7{color:#35e0e8}.filter-input.svelte-49w24t,.filter-select.svelte-49w24t{border-color:#35e0e84d}.filter-input.svelte-49w24t:focus,.filter-select.svelte-49w24t:focus{border-color:#35e0e8}.email-change-section.svelte-126q2op{border-top-color:#35e0e81f}.change-email-btn.svelte-126q2op{border-color:#35e0e8}.sidebar-tab.svelte-berov0{background-color:#151f24}.sidebar-tab.svelte-berov0:hover,.sidebar-tab.active.svelte-berov0,.sidebar-tab-badge.svelte-berov0{background-color:#35e0e8;color:#0b1215}.items-detail-root.svelte-dmu4q2{background-color:#151f24}.items-detail-header-bar.svelte-dmu4q2{border-bottom-color:#35e0e81f;background-color:#111b1f}.items-detail-back.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-header-icon.svelte-dmu4q2{color:#35e0e8}.items-detail-header-btn.svelte-dmu4q2,.preview-action-btn.svelte-dmu4q2{border-color:#35e0e81f}.preview-action-btn.svelte-dmu4q2:hover{border-color:#35e0e847}.preview-action-btn.active.svelte-dmu4q2{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.items-detail-wear-slider.svelte-dmu4q2,.items-detail-instance-overlay.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-paint-swatch.svelte-dmu4q2{border-color:#35e0e847}.items-detail-tabs-panel.svelte-dmu4q2{background-color:#111b1f;border-color:#35e0e81f}.items-detail-creator-link.svelte-dmu4q2{color:#35e0e8}.items-detail-stats-section.svelte-dmu4q2{border-top-color:#35e0e81f}.items-detail-stats-header.svelte-dmu4q2{color:#35e0e8}.items-detail-range-btn.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-range-btn.active.svelte-dmu4q2{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.items-detail-owner-row.svelte-dmu4q2{border-bottom-color:#35e0e81f}.items-detail-owner-name.svelte-dmu4q2:hover{color:#35e0e8}.items-detail-instance-table.svelte-dmu4q2 th.svelte-dmu4q2{background-color:#111b1f;border-bottom-color:#35e0e81f}.items-detail-instance-table.svelte-dmu4q2 td.svelte-dmu4q2,.items-detail-listing-row.svelte-dmu4q2{border-bottom-color:#35e0e81f}.items-detail-listing-seller.svelte-dmu4q2:hover,.no-clan-title.svelte-51j5cz,.clan-benefits.svelte-51j5cz h3.svelte-51j5cz{color:#35e0e8}.clan-benefits.svelte-51j5cz li.svelte-51j5cz:before{color:#35e0e8}.map-filter-select.svelte-51j5cz{border-color:#35e0e866}.map-filter-select.svelte-51j5cz:hover{border-color:#35e0e8}.map-filter-select.svelte-51j5cz:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.section-title.svelte-51j5cz{color:#35e0e8;border-left-color:#35e0e8}.day-arrow.svelte-51j5cz{border-color:#35e0e866;color:#35e0e8}.day-arrow.svelte-51j5cz:hover:not(:disabled){background-color:#35e0e833;border-color:#35e0e8}.day-input.svelte-51j5cz{border-color:#35e0e866}.day-input.svelte-51j5cz:focus{border-color:#35e0e8}.view-all-btn.svelte-51j5cz{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.view-all-btn.svelte-51j5cz:hover{background-color:#35e0e84d}.page-btn.svelte-51j5cz{background-color:#35e0e833;border-color:#35e0e866}.historical-day.svelte-51j5cz{border-color:#35e0e81f}.day-header.svelte-51j5cz{border-bottom-color:#35e0e81f}.day-label.svelte-51j5cz{color:#35e0e8}.clan-side.comparison-clan.no-comparison.svelte-51j5cz,.clan-side.svelte-51j5cz .clan-logo-small.svelte-51j5cz{border-color:#35e0e81f}.stat-row.svelte-51j5cz{border-bottom-color:#35e0e81f}.no-participation-title.svelte-51j5cz,.eligible-maps.svelte-51j5cz h3.svelte-51j5cz{color:#35e0e8}.eligible-maps.svelte-51j5cz li.svelte-51j5cz{background-color:#35e0e81a;border-color:#35e0e84d}.game-announcement.svelte-1m80xxc{border-color:#35e0e81f}.game-announcement.svelte-1m80xxc:before{border-bottom-color:#35e0e847}.ga-bundle.svelte-1m80xxc{border-color:#35e0e81f}.ga-bundle.svelte-1m80xxc:hover,.ga-action-btn.svelte-1m80xxc,.ga-action-btn.svelte-1m80xxc:hover,.ga-action-btn.disabled.svelte-1m80xxc:hover{border-color:#35e0e847}.login-button.svelte-16z1lxi{background-color:#070c0f;border-color:#35e0e847}.terms-privacy-notice.svelte-16z1lxi a.svelte-16z1lxi{color:#35e0e8}.item-wrapper.selected.svelte-zhgogl{box-shadow:0 0 0 2px #35e0e8}.loading-spinner.svelte-zhgogl{border-color:#35e0e81f}.load-more-btn.svelte-zhgogl{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-zhgogl:hover{background-color:#35e0e84d}.load-more-btn.svelte-zhgogl:active{background-color:#35e0e866}.tab.svelte-1o3qul6:hover,.tab-active.svelte-1o3qul6,.tab-active.svelte-1o3qul6:hover{border-bottom-color:#35e0e847}.trading-column-header.svelte-1r9fijr{border-bottom-color:#35e0e81f}.confirm-box.svelte-1r9fijr,.start-box.svelte-1r9fijr{background-color:#151f24;border-color:#35e0e81f}.start-input.svelte-1r9fijr{border-color:#35e0e81f}.start-input.svelte-1r9fijr:focus{border-color:#35e0e81f}.section-title.svelte-4e4ust .material-icons.svelte-4e4ust{color:#35e0e8}.texture-settings.svelte-4e4ust{border-color:#35e0e81f}.toggle-switch.svelte-4e4ust input:checked+.slider.svelte-4e4ust{background-color:#35e0e8;color:#0b1215}.form-select.svelte-4e4ust{border-color:#35e0e81f}.form-select.svelte-4e4ust:focus{border-color:#35e0e8}.form-select.svelte-4e4ust option.svelte-4e4ust{background-color:#0b1215}.texture-upload-item.svelte-4e4ust{border-color:#35e0e81f}.uploading-badge.svelte-4e4ust{background-color:#35e0e8cc}.texture-image.svelte-4e4ust{border-color:#35e0e81f}.btn-replace.svelte-4e4ust{background-color:#35e0e8cc}.btn-replace.svelte-4e4ust:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.item-wrapper.selected.svelte-1l3mtrv{box-shadow:0 0 0 2px #35e0e8}.news-item.svelte-1ult4vg{border-left-color:#35e0e8}.news-item.svelte-1ult4vg a{color:#35e0e8}.menu-container.svelte-mqcul7{background-color:#070c0f}.menu-item.active.svelte-mqcul7{border-bottom-color:#35e0e847}button.svelte-mqcul7{background-color:#35e0e8;color:#0b1215}button.svelte-mqcul7:hover{box-shadow:0 0 60px #35e0e875}.start-button.svelte-mqcul7{background-color:#35e0e8;color:#0b1215}.start-button[disabled].svelte-mqcul7{background-color:#1d2c32}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7{background-color:#0b1215;border-color:#35e0e8;box-shadow:0 0 #35e0e833}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7:hover{box-shadow:0 0 0 2px #35e0e833}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7:checked{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.paint-container.svelte-10qrqvt{background-color:#151f24bf}.slider-arrow.svelte-10qrqvt{border-color:#35e0e81f}.slider-arrow.left.svelte-10qrqvt .slider-arrow-icon.svelte-10qrqvt{border-right-color:#35e0e847}.slider-arrow.right.svelte-10qrqvt .slider-arrow-icon.svelte-10qrqvt{border-left-color:#35e0e847}.swatch.svelte-10qrqvt{border-color:#35e0e81f}.swatch.locked.selected.svelte-10qrqvt{border-color:#35e0e847}.swatch-fill.svelte-10qrqvt,.btn.svelte-10qrqvt{border-color:#35e0e81f}.inventory-filter.svelte-ga3en0{background-color:#111b1f;border-color:#35e0e81f}.filter-header.svelte-ga3en0{background-color:#111b1f}.reset-btn.svelte-ga3en0,.reset-btn.svelte-ga3en0:hover,.expand-btn.svelte-ga3en0,.expand-btn.svelte-ga3en0:hover{background-color:#24343a}.filter-content.svelte-ga3en0{border-top-color:#35e0e81f}.search-input.svelte-ga3en0,.season-select.svelte-ga3en0,.sort-select.svelte-ga3en0,.category-select.svelte-ga3en0{background-color:#151f24;border-color:#35e0e81f}.filter-tabs.svelte-ga3en0{border-bottom-color:#35e0e81f}.filter-tab.svelte-ga3en0{background-color:#151f24}.filter-tab.svelte-ga3en0:hover{background-color:#182429}.filter-tab.active.svelte-ga3en0{background-color:#35e0e8;color:#0b1215}.toggle-all-btn.svelte-ga3en0{background-color:#1d2c32}.toggle-all-btn.svelte-ga3en0:hover{background-color:#24343a}.filter-panel.svelte-ga3en0{background-color:#111b1f}.filter-item-wrapper.svelte-ga3en0{border-color:#35e0e81f}.filter-item.svelte-ga3en0:hover{background-color:#151f24}.only-btn.svelte-ga3en0{background-color:#1d2c32}.only-btn.svelte-ga3en0:hover{background-color:#24343a}.profile-search-form.svelte-fo44ss{background-color:#0b1215;border-color:#35e0e81f}.profile-search-form.svelte-fo44ss:focus-within{border-color:#35e0e8}.follow-root.svelte-1ef5zjv{background-color:#151f24}.follow-header.svelte-1ef5zjv{border-bottom-color:#35e0e81f;background-color:#111b1f}.follow-back.svelte-1ef5zjv{border-color:#35e0e81f}.follow-header-icon.svelte-1ef5zjv{color:#35e0e8}.follow-tabs.svelte-1ef5zjv{border-bottom-color:#35e0e81f;background-color:#111b1f}.follow-tab.active.svelte-1ef5zjv{border-bottom-color:#35e0e8}.follow-row.svelte-1ef5zjv{background-color:#0b1215cc;border-color:#35e0e81f}.follow-btn.svelte-1ef5zjv{background-color:#35e0e8;color:#0b1215}.follow-btn.following.svelte-1ef5zjv,.price-tag.svelte-1q06uv7{border-color:#35e0e81f}.buy-button.svelte-1q06uv7:disabled{background-color:#24343a}.buy-button.svelte-1q06uv7:disabled:hover{background-color:#24343a}.io-code-display.svelte-owjkr{border-color:#35e0e81f}.music-player.svelte-1ei19qi{background-color:#0b1215f2}.music-btn.svelte-1ei19qi{border-color:#35e0e847}.section-title.svelte-16sjsp2 .material-icons.svelte-16sjsp2{color:#35e0e8}.toggle-switch.svelte-16sjsp2 input:checked+.slider.svelte-16sjsp2{background-color:#35e0e8;color:#0b1215}.form-select.svelte-16sjsp2,.form-input.svelte-16sjsp2{border-color:#35e0e81f}.form-select.svelte-16sjsp2:focus,.form-input.svelte-16sjsp2:focus{border-color:#35e0e8}.form-select.svelte-16sjsp2 option.svelte-16sjsp2{background-color:#0b1215}.texture-upload-item.svelte-16sjsp2{border-color:#35e0e81f}.uploading-badge.svelte-16sjsp2{background-color:#35e0e8cc}.texture-image.svelte-16sjsp2,.post-item-card.svelte-10yvzvw,.post-item-card.svelte-10yvzvw:hover{border-color:#35e0e81f}.post-content-thumb.svelte-10yvzvw{background-color:#0b1215}.post-content-action.svelte-10yvzvw{color:#35e0e8}.post-follow-btn.svelte-10yvzvw{background-color:#35e0e8;color:#0b1215}.post-follow-btn.svelte-10yvzvw:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.postResRo.svelte-10yvzvw,.postResRoD.svelte-10yvzvw{border-bottom-color:#35e0e81f}.post-text.svelte-10yvzvw a{color:#35e0e8}.post-footer.svelte-10yvzvw{border-top-color:#35e0e81f}.vote-btn.svelte-10yvzvw{border-color:#35e0e81f}.vote-btn.svelte-10yvzvw:hover:not(:disabled){border-color:#35e0e847}.vote-btn.svelte-10yvzvw:disabled{border-color:#35e0e81f}.vote-btn-done.svelte-10yvzvw{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.vote-btn-done.svelte-10yvzvw:hover:not(:disabled){background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.owned-count-overlay.svelte-9ff17r{border-color:#35e0e81f}.section-title.svelte-3rvofx .material-icons.svelte-3rvofx{color:#35e0e8}.form-textarea.svelte-3rvofx{border-color:#35e0e81f}.form-textarea.svelte-3rvofx:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.automatic-attributes.svelte-3rvofx{border-color:#35e0e81f}.automatic-attributes-header.svelte-3rvofx{background-color:#35e0e81a;border-bottom-color:#35e0e81f}.automatic-attributes-title.svelte-3rvofx .material-icons.svelte-3rvofx{color:#35e0e8}.loot-updated-name.svelte-1ydnong{color:var(--highlight-color, rgb(53, 224, 232))}.popup.svelte-1wz7ymp{background-color:#151f24}.popup.translucent.svelte-1wz7ymp{background-color:#151f24bf}.popup.slim-border.svelte-1wz7ymp{border-color:#35e0e81f}.sort-select.svelte-111gya4{background-color:#151f24;border-color:#35e0e81f}.sort-select.svelte-111gya4:hover{border-color:#35e0e847}.sort-select.svelte-111gya4:focus{border-color:#35e0e8}.searching-indicator.svelte-111gya4{color:#35e0e8}.searching-indicator.svelte-111gya4:before{border-color:#35e0e8}.clan-view-root.svelte-5j94nj{background-color:#151f24}.clan-view-header-bar.svelte-5j94nj{border-bottom-color:#35e0e81f;background-color:#111b1f}.clan-view-back.svelte-5j94nj{border-color:#35e0e81f}.clan-view-header-icon.svelte-5j94nj{color:#35e0e8}.clan-view-identity.svelte-5j94nj{background-color:#111b1f;border-color:#35e0e81f}.clan-view-logo.svelte-5j94nj,.clan-view-logo-placeholder.svelte-5j94nj{background-color:#111b1f}.clan-view-info.svelte-5j94nj{border-top-color:#35e0e81f}.clan-view-link.svelte-5j94nj{color:#35e0e8}.clan-view-role-header.svelte-5j94nj{color:#35e0e8;border-bottom-color:#35e0e81f}.social-search-input.svelte-1dyc40r{background-color:#0b1215;border-color:#35e0e81f}.social-search-input.svelte-1dyc40r:focus{border-color:#35e0e8}.social-search-btn.svelte-1dyc40r{background-color:#0b1215;border-color:#35e0e81f}.social-search-btn.svelte-1dyc40r:hover{background-color:#111b1f;border-color:#35e0e81f}.social-compose-btn.svelte-1dyc40r,.social-compose-btn.svelte-1dyc40r:hover{background-color:#35e0e8;color:#0b1215}.item-detail-container.svelte-olnzsm{border-left-color:#35e0e81f}.item-detail-header.svelte-olnzsm{border-bottom-color:#35e0e81f}.item-showcase-section.svelte-olnzsm{border-right-color:#35e0e81f}.ownership-count.svelte-olnzsm,.full-details-btn.svelte-olnzsm{border-color:#35e0e81f}.tabs-section.svelte-olnzsm{border-bottom-color:#35e0e81f}.loading-spinner.svelte-olnzsm{border-color:#35e0e81f}.load-more-btn.svelte-olnzsm{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-olnzsm:hover{background-color:#35e0e84d}.load-more-btn.svelte-olnzsm:active{background-color:#35e0e866}.stats-controls.svelte-olnzsm{border-bottom-color:#35e0e81f}.days-back-select.svelte-olnzsm{border-color:#35e0e81f}.days-back-select.svelte-olnzsm:hover:not(:disabled){border-color:#35e0e81f}.days-back-select.svelte-olnzsm:focus{border-color:#35e0e8}.mission-briefing.svelte-1849bws{background-image:linear-gradient(135deg,#0b1215,#111b1f)}.mission-header.svelte-1849bws{background-image:linear-gradient(135deg,#000,#0b1215)}.abort-btn.svelte-1849bws{background-image:linear-gradient(135deg,#151f24,#1d2c32);border-color:#35e0e847}.abort-btn.svelte-1849bws:hover{background-image:linear-gradient(135deg,#1d2c32,#24343a)}.deploy-btn.svelte-1849bws{border-color:#35e0e8}th.svelte-1enb567{color:#35e0e8}td.svelte-1enb567{border-bottom-color:#35e0e81f}.page-button.svelte-1enb567{border-color:#35e0e8}.page-button.svelte-1enb567:hover:not(:disabled){background-color:#35e0e833}.page-button.svelte-1enb567:disabled{border-color:#35e0e84d}.page-indicator.svelte-1enb567{color:#35e0e8}.item-display-container.svelte-1p13km7{border-color:#35e0e81f}.section-title.svelte-sr5bk2 .material-icons.svelte-sr5bk2{color:#35e0e8}.tool-btn.svelte-sr5bk2,.attach-btn.svelte-sr5bk2{border-color:#35e0e81f}.tool-btn.active.svelte-sr5bk2{border-color:#35e0e8;background-color:#35e0e840}.fields.svelte-sr5bk2 input[type=number].svelte-sr5bk2{border-color:#35e0e81f}.wallet-root.svelte-l0gwpc{background-color:#151f24}.wallet-catalog-btn.svelte-l0gwpc{border-color:#35e0e81f}.currency-card.svelte-l0gwpc{background-image:linear-gradient(135deg,#111b1f,#182429);border-color:#35e0e81f}.items-grid.svelte-l0gwpc{background-color:#111b1f}.main-button.svelte-whnh40{background-color:#151f24;border-color:#35e0e81f}.main-button.svelte-whnh40:disabled,.main-button-disabled.svelte-whnh40{background-color:#0b1215}.main-button.svelte-whnh40:disabled:hover,.main-button-disabled.svelte-whnh40:hover{background-color:#0b1215}.main-button.svelte-whnh40:hover:not(:disabled):not(.main-button-disabled){background-color:#182429}.main-button-accept-secondary.svelte-whnh40{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.sort-btn.active.svelte-9t0md3{background-color:#35e0e833;color:#35e0e8;border-color:#35e0e8}.month-select.svelte-9t0md3 option.svelte-9t0md3{background-color:#0b1215}.section-title.svelte-1qb7o10 .material-icons.svelte-1qb7o10{color:#35e0e8}.paint-mode-btn.svelte-1qb7o10{border-color:#35e0e81f}.paint-mode-btn.svelte-1qb7o10:hover:not(:disabled){border-color:#35e0e847}.paint-mode-btn.active.svelte-1qb7o10{background-color:#35e0e826;border-color:#35e0e8;color:#35e0e8}.paint-color-input.svelte-1qb7o10{border-color:#35e0e81f}.paint-preview-base.svelte-1qb7o10{border-top-color:#35e0e81f}.preview-base-input.svelte-1qb7o10{border-color:#35e0e81f}.preview-base-input.svelte-1qb7o10:focus{border-color:#35e0e8}.preview-base-quick.svelte-1qb7o10{border-color:#35e0e81f}.preview-base-quick.svelte-1qb7o10:hover:not(:disabled){border-color:#35e0e8;color:#35e0e8}.buy-button.svelte-1ov1s5h{border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:hover:not(:disabled){border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:disabled{background-image:linear-gradient(135deg,#24343a,#1d2c32);border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:disabled:hover{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.ownership-count.svelte-kchhu3{border-color:#35e0e81f} -`});var zu,Bu=w(()=>{zu=`:root{--kute-cyan: #35e0e8;--kute-cyan-soft: rgba(53, 224, 232, .14);--kute-pink: #f5479b;--kute-pink-soft: rgba(245, 71, 155, .16);--kute-bg: #0b1215;--kute-panel: #111b1f;--kute-raised: #182429;--kute-line: rgba(53, 224, 232, .12);--kute-line-strong: rgba(53, 224, 232, .28);--kute-text: #eaf7f8;--kute-muted: rgba(234, 247, 248, .62);--kute-faint: rgba(234, 247, 248, .38);--kute-radius: 8px;--kute-radius-lg: 14px;--kute-paw: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23f5479b'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-paw-cyan: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%230b1215'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-ears: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 46 14'%3E%3Cpath fill='rgba(11,18,21,.78)' d='M1 14 9 1l8 13Zm28 0 8-13 8 13Z'/%3E%3Cpath fill='rgba(245,71,155,.7)' d='M5.5 14 9 7.5l3.5 6.5Zm28 0 3.5-6.5 3.5 6.5Z'/%3E%3C/svg%3E");--kute-paw-solid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%2335e0e8'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-grad: linear-gradient(90deg, var(--kute-cyan), var(--kute-pink));--div-black: rgba(11, 18, 21, .78);--div-grey: rgba(53, 224, 232, .07);--div-shadow: 0 2px 10px rgba(0, 0, 0, .5);--blue: var(--kute-cyan);--highlight-color: var(--kute-cyan);--highlight-hover-color: #5ce9ef;--card-bg-color: rgba(24, 36, 41, .7);--dark-bg-color: rgba(11, 18, 21, .5);--border-subtle: 1px solid var(--kute-line);--border-radius-sm: 6px;--border-radius-md: var(--kute-radius);--border-radius-lg: var(--kute-radius-lg);--box-shadow-lg: 0 18px 44px rgba(0, 0, 0, .6)}::selection{background:var(--kute-pink);color:#fff}a,a:visited{color:var(--kute-cyan)}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background-color:transparent;box-shadow:none}::-webkit-scrollbar-thumb{background:var(--kute-line-strong);border:3px solid transparent;border-radius:999px;background-clip:padding-box;box-shadow:none}::-webkit-scrollbar-thumb:hover{background-color:var(--kute-cyan)}#windowHolder.popupWin{background-color:#050a0cb8}#menuWindow.dark{background-color:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6,0 0 0 1px #0006}.settingsHeader{background-color:var(--kute-bg);border-bottom:1px solid var(--kute-line)}.setSugBox2{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);transition:background-color .15s,border-color .15s}.setSugBox2:hover{border-width:1px;background-color:var(--kute-raised);border-color:var(--kute-cyan)}.advancedSlider{background-color:#24343a;border-radius:999px}.advancedSlider:before{border-radius:50%;background:#fff var(--kute-paw) center / 20px no-repeat}input:checked+.advancedSlider{background-color:var(--kute-cyan)}input:checked+.advancedSlider:before{background-image:var(--kute-paw-cyan)}input:checked+.advancedSlider:after{color:var(--kute-bg)}.hostPresetBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px}.hostPresetBtn:hover{background-color:var(--kute-pink);color:#fff}#settingsTabLayout{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius);overflow:hidden}.settingTab{background-color:transparent;color:var(--kute-muted);border-bottom:3px solid transparent;transition:color .15s,background-color .15s}#menuWindow.dark .settingTab{color:var(--kute-muted)}.settingTab:hover{border-bottom:3px solid var(--kute-line-strong);background-color:var(--kute-cyan-soft)}#menuWindow.dark .settingTab:hover{color:var(--kute-text)}.dark .tabANew,.dark .tabANew:hover{border-bottom:3px solid var(--kute-cyan)!important;background-color:var(--kute-cyan-soft)}#menuWindow.dark .tabANew{color:var(--kute-cyan)}.setHed,.setHedS{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-left:3px solid var(--kute-cyan);border-radius:var(--kute-radius);transition:background-color .15s,border-color .15s}.setHed:hover,.setHedS:hover{background-color:#1d2c32;border-left-color:var(--kute-pink)}.setHed .plusOrMinus{color:var(--kute-cyan)}.setBodH{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.settName,.settNameSmall{border-bottom:1px solid var(--kute-line);color:var(--kute-muted)!important}.settNameIn:hover{background-color:var(--kute-cyan-soft)!important;color:var(--kute-text)!important}.settingsBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px;transition:background-color .15s,color .15s}#menuWindow.dark .settingsBtn{color:var(--kute-bg)}.settingsBtn:hover,#menuWindow.dark .settingsBtn:hover{background-color:var(--kute-pink);color:#fff}#settSearch,.inputGrey2,.sliderVal,#loadoutName,#loadoutSelect,#itemSearch{background:var(--kute-raised);color:var(--kute-text);border:1px solid var(--kute-line);border-radius:6px;outline:none;transition:border-color .15s}#settSearch:focus,.inputGrey2:focus,.sliderVal:focus,#loadoutName:focus,#loadoutSelect:focus{border-color:var(--kute-cyan)}#loadoutName{background:var(--kute-raised)!important;border:1px solid var(--kute-line)!important}.sliderVal{border-color:var(--kute-line-strong)!important}#settSearch::placeholder,#loadoutName::placeholder{color:var(--kute-faint)}.inputGrey2 option,#loadoutSelect option{background:var(--kute-panel);color:var(--kute-text)}#loadoutToolbar{background-color:var(--kute-panel);border-bottom:1px solid var(--kute-line)}.loadoutTab{background-color:transparent;transition:background-color .15s,color .15s}.loadoutTab:hover{background-color:var(--kute-cyan-soft)}.loadoutTabSel,.loadoutTabSel:hover{background-color:var(--kute-cyan-soft);border-bottom-color:var(--kute-cyan);color:var(--kute-cyan)!important}#charPreviewSlot{background:radial-gradient(circle at 50% 42%,rgba(53,224,232,.1),transparent 62%);border-right:1px solid var(--kute-line)}.custContainer,.custSubContainer{background-color:var(--kute-panel);border-color:var(--kute-line);box-shadow:none}.custContainer{border-radius:var(--kute-radius);transition:border-color .15s,background-color .15s}.custContainer.contCanSelect:hover{background-color:var(--kute-raised);border-color:var(--kute-cyan)}.custSubContainer{border-radius:0 var(--kute-radius) 0 var(--kute-radius)}.custClear{border-radius:6px}.custBack{background:var(--kute-raised);border-radius:6px}.custBack:hover{background:var(--kute-cyan-soft)}.classCard{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-radius:var(--kute-radius);overflow:hidden;transition:border-color .15s}.classCard:hover{border-color:var(--kute-cyan)}.classXPBar{background-color:var(--kute-bg)}.clsXPBarC{background-color:var(--kute-cyan)}.loadoutBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px}.loadoutBtn:hover{background-color:var(--kute-pink);color:#fff}.slider,.slider2{background-color:#24343a;border-radius:999px}.slider:before,.slider2:before{border-radius:50%;width:22px;background-color:#fff;background-image:var(--kute-paw);background-size:14px;background-position:center;background-repeat:no-repeat}.slider:before{left:5px}input:checked+.slider,input:checked+.slider2,input:checked+.sliderSml,input:checked+.sliderCent{background-color:var(--kute-cyan)}input:checked+.slider:before{transform:translate(28px);background-image:var(--kute-paw-cyan)}input:checked+.slider2:before{transform:translate(20px);background-image:var(--kute-paw-cyan)}input:focus+.slider,input:focus+.slider2,input:focus+.sliderSml{box-shadow:0 0 0 2px var(--kute-cyan-soft)}.sliderSml,.sliderCent{background-color:#24343a}.sliderM{background-color:#24343a;height:8px;border-radius:999px;margin-bottom:0}.sliderM::-webkit-slider-thumb{width:22px;height:22px;border-radius:50%;background:#fff var(--kute-paw) center / 14px no-repeat;box-shadow:0 0 0 3px var(--kute-cyan),0 2px 6px #00000080}#playerHeaderEl{background:var(--kute-grad) bottom / 100% 1px no-repeat,linear-gradient(#070c0feb,#070c0fbd)}.ph-item[class*=svelte-],.nav-item[class*=svelte-]{border-radius:12px;transition:background-color .15s}.ph-item[class*=svelte-]:hover,.nav-item[class*=svelte-]:hover{background-color:var(--kute-cyan-soft)}.nav-item[class*=svelte-] .material-icons,.nav-item[class*=svelte-] .material-icons-outlined{color:var(--kute-cyan)}#menuItemContainer .menuItem{position:relative;border-radius:10px;transition:transform .15s,background-color .15s}#menuItemContainer .menuItem:hover{background:linear-gradient(90deg,var(--kute-cyan-soft),transparent 85%);transform:translate(6px)}#menuItemContainer .menuItem:hover .menuItemTitle{color:var(--kute-cyan)}#menuItemContainer .menuItem:not(.bpItem):not(.dsItem):before{content:"";position:absolute;left:-18px;top:50%;width:14px;height:14px;background:var(--kute-paw-solid) center / contain no-repeat;opacity:0;transform:translate(-4px,-50%) rotate(-20deg);transition:opacity .15s,transform .15s;pointer-events:none}#menuItemContainer .menuItem:not(.bpItem):not(.dsItem):hover:before{opacity:1;transform:translateY(-50%) rotate(-20deg)}#menuItemContainer .menuItemIcon{color:var(--kute-cyan)}#menuItemContainer .sidebarDivider{background:linear-gradient(90deg,var(--kute-line-strong),transparent);border:0}@container not style(--kute-classic-menu: 1){#subLogoButtons>.actionCard{background:var(--kute-panel);border-color:rgba(var(--card-rgb),.45);border-radius:var(--kute-radius);box-shadow:none;transition:background-color .15s,border-color .15s}#subLogoButtons>.actionCard:hover{background:var(--kute-raised);border-color:rgb(var(--card-rgb))}#subLogoButtons>.actionCard .cardIcon{color:rgb(var(--card-rgb))}.popRailCard[class*=svelte-]{background:var(--kute-panel);border-color:var(--kute-line-strong);border-radius:var(--kute-radius);transition:background-color .15s,border-color .15s}.popRailCard[class*=svelte-]:hover{background:var(--kute-raised);border-color:var(--kute-cyan)}.popRailPlay[class*=svelte-]{color:var(--kute-cyan)}#customizeButton{border-radius:var(--kute-radius)}}.window-header[class*=svelte-],#loadoutToolbar,.profile-detail-header-bar[class*=svelte-],.instructionsHeader,.settingsHeader{background-image:var(--kute-grad);background-size:100% 1px;background-position:bottom;background-repeat:no-repeat}:is(#windowHolder,#popupHolder,#app) .button{border-radius:var(--kute-radius);background-color:#0b121599}:is(#windowHolder,#popupHolder,#app) .button:hover,:is(#windowHolder,#popupHolder,#app) .button:active{border-color:var(--kute-cyan)!important}:is(#windowHolder,#popupHolder,#app) .button:not([class*=buttonR]):not([class*=buttonG]):not([class*=buttonP]):not([class*=buttonO]):not([class*=buttonB]):not(:hover){border-color:var(--kute-line-strong)}#chatList{background-color:#0b12158c;border-radius:var(--kute-radius) var(--kute-radius) 0 0}#chatInputHolder{border-radius:0 0 var(--kute-radius) var(--kute-radius)}#chatInput{background-color:#182429cc;border:1px solid var(--kute-line);border-radius:6px}#chatInput:focus{border-color:var(--kute-cyan);outline:none}#instructionsUpdate{background:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6;overflow:hidden}.instructionsHeader,.instructionsTabs{background-color:var(--kute-panel);box-shadow:none}.instructionsHeader{border-bottom:1px solid var(--kute-line)}.instructionsTab{border-top:1px solid var(--kute-line);transition:background-color .15s,color .15s}.instructionsTab:hover{background-color:var(--kute-cyan-soft);border-color:var(--kute-line);color:var(--kute-cyan)}#ammoHolder,#bottomLeftPlayer,#timerHolder,.statIcon,#leaderboardHolder,#teamScores,#chatInputHolder{border-radius:var(--kute-radius)}#ammoHolder .greyInner,.statIcon .greyInner,#timerInner,#leaderContainer,#bottomLeftPlayerLeft,#bottomLeftPlayerRight,#bottomLeftTeamType,#bottomLeftTeamName,#bottomLeftHealthBar{border-radius:6px}#bottomLeftPlayerLeft{overflow:hidden}#ammoHolder,#bottomLeftPlayer{box-shadow:inset 0 -2px 0 var(--kute-cyan)}#bottomLeftPlayer{position:relative}#ammoHolder:before,#bottomLeftPlayer:before{content:"";position:absolute;top:-12px;width:46px;height:14px;background:var(--kute-ears) no-repeat center / contain;pointer-events:none}#ammoHolder:before{right:20px}#bottomLeftPlayer:before{left:19px}#reloadMsg{border-radius:6px}#ingameFPS,#pingText{color:var(--kute-cyan)}.bigMenTabs{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.bigMenTab:hover{border-bottom:3px solid var(--kute-line-strong)}.bigMenTabA,.bigMenTabA:hover{border-bottom:3px solid var(--kute-cyan);color:var(--kute-cyan)}#popupContent,#bundlePop,#premiumPop,#policePopC,#guidePopup,#chargeModalCard,#spinHistoryPop,.confPremiumPop,.vouchPop,.rankedPop,.promoPop,.pfpPop,.dropsPop,.accountCreatePop,.imagePop,.badgePop,.imageNewPop,.importPop,.disconnectPop,.eventPop,.bp-generic-pop,.bp-purchase-pop,.spinErrorPop,.charmErrorPop,.spinHistoryStatsPop,.loadingPop,.autoLoadPop,.editMapPop,.responsePop,.ticketPop,.dxp-pop,.abTestsPop,.registerGiftPop,.rankedQueueModal,.rankedMenuModal,.communityPopup,.tutorialPopup,.defaultModal,.krunkCupJoinModal,.krunkCupViewModal,.exchangeModal,.itemsModal,.moreKrunkerPopup,.infoPop,.contPop,.io-popup-container,.wallet-root[class*=svelte-]{background-color:var(--kute-bg);border-radius:var(--kute-radius-lg);box-shadow:0 0 0 1px var(--kute-line),0 24px 60px #000000a6}.twitchPop,.nftPop,.confPop,.clientExitPop,#confPurchItemPop,.metaPop,.polConfPop{border-color:var(--kute-line);border-radius:var(--kute-radius-lg)}.hostHeader,#stickyHostH,.imageListHeader,.imageListFooter,.spinHistoryHeader,.popHeader,.dropsPopHeader,.serverHeader,#itemSearchH,#bindsHeader,.tooltip2,.crftRcpeCrd,.bundleCrd,.bundle-card[class*=svelte-],.moreKrunkerOption[class*=svelte-],.items-grid[class*=svelte-],.filter-panel[class*=svelte-],.territory-map-container[class*=svelte-],.data-table[class*=svelte-] thead{background-color:var(--kute-panel)}#initLoader,.clsStatXPBar,.elo-progress-bar-bg{background-color:var(--kute-bg)}.featured-section[class*=svelte-],.stream-card[class*=svelte-],.emoji-panel[class*=svelte-],.verification-banner[class*=svelte-],.music-player[class*=svelte-],.market-card[class*=svelte-],.rank-popup-content{background-color:var(--kute-panel)}.hide-button[class*=svelte-],.kuteTopButton{background-color:var(--kute-raised)}.hide-button[class*=svelte-]:hover,.kuteTopButton:hover{background-color:#1d2c32}.contactsHeader{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-left:3px solid var(--kute-cyan);border-radius:var(--kute-radius)}.bpInfoBalloon,.bpInfoBalloon:after,.io-separator span{background-color:var(--kute-bg)}.bpClaimB,.bp-unlock-header,.io-button,.mapLICat,#tradeChatInput,.tradeChatItem,.main-button[class*=svelte-]{background-color:var(--kute-raised)}.io-button:hover,.mapLICat:hover,.main-button[class*=svelte-]:hover:not(:disabled):not(.main-button-disabled){background-color:#1d2c32}.main-button[class*=svelte-],.moreKrunkerOption[class*=svelte-],.territory-map-container[class*=svelte-],.territory-details-panel[class*=svelte-],.inventory-filter[class*=svelte-],.filter-item-wrapper[class*=svelte-]{border-color:var(--kute-line)}.moreKrunkerOption[class*=svelte-]:hover{border-color:var(--kute-cyan)}.inventory-filter[class*=svelte-],.filter-header[class*=svelte-]{background-color:var(--kute-panel)}.currency-card[class*=svelte-]{background:var(--kute-panel);border-color:var(--kute-line)}.search-input[class*=svelte-],.season-select[class*=svelte-],.sort-select[class*=svelte-],.category-select[class*=svelte-],.filter-tab[class*=svelte-],.filter-item[class*=svelte-]:hover,.reset-btn[class*=svelte-],.expand-btn[class*=svelte-],.toggle-all-btn[class*=svelte-],.only-btn[class*=svelte-]{background:var(--kute-raised);border-color:var(--kute-line)}.filter-tab[class*=svelte-]:hover,.reset-btn[class*=svelte-]:hover,.expand-btn[class*=svelte-]:hover,.toggle-all-btn[class*=svelte-]:hover,.only-btn[class*=svelte-]:hover{background:#1d2c32}.filter-tab.active[class*=svelte-]{background:var(--kute-cyan);color:var(--kute-bg)}.setSugBox,.viewAllUpdates,.bSliderBtn,.bundleSliderBtn,.dropsSliderBtn,.challHeadrI,.sub-tab-panel[class*=svelte-]{border-color:var(--kute-line-strong)}.challMapCrd:not(.chalCardH){border-color:var(--kute-line-strong)}.guideHeader,.guideSubH,.mailFrom,.speedRunItem,#hostActionH,#custStreakSelH{border-color:var(--kute-line)}.store-tabs[class*=svelte-],.tabs-container[class*=svelte-],#menuWindow.eterno .store-tabs[class*=svelte-]{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.store-tab[class*=svelte-]:hover,.tab[class*=svelte-]:hover{border-bottom-color:var(--kute-line-strong)}.store-tab-active[class*=svelte-],.store-tab-active[class*=svelte-]:hover,.tab-active[class*=svelte-],.tab-active[class*=svelte-]:hover,.tabHeader.selected{border-bottom-color:var(--kute-cyan);color:var(--kute-cyan)}#menuWindow.eterno{background-color:var(--kute-bg);border-color:var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6;animation:none}.followBut,#hostMenuBtn,.chargeModalBtn,.redVouchBtn,.searchBtn,.hostToggle,.subPassChg,.updDisN,#partnerProgB,#partnrUpBtn,#findGameBtn,.joinBtn,.openCollection,#spinMultiToggleBtn,.clanSubmitBtn,.main-button-accept-secondary[class*=svelte-]{background-color:var(--kute-cyan);border-color:var(--kute-cyan);color:var(--kute-bg)}input:checked+.optCheck{background-color:var(--kute-cyan)}.quickJoin,.followBack,.io-input-field:focus{border-color:var(--kute-cyan)}.io-section-header:after{background:var(--kute-cyan)}.counterBadge[class*=svelte-]{background:var(--kute-pink);color:#fff}.wallet-catalog-btn[class*=svelte-] i{color:var(--kute-cyan)}.stack-collapse-fab[class*=svelte-]{background:var(--kute-cyan)}.card-title[class*=svelte-],.view-title[class*=svelte-],.table-header[class*=svelte-],.no-clan-title[class*=svelte-],.no-participation-title[class*=svelte-],.clan-benefits[class*=svelte-] h3,.clan-benefits[class*=svelte-] li:before,.eligible-maps[class*=svelte-] h3,.day-label[class*=svelte-],.day-arrow[class*=svelte-],.view-all-btn[class*=svelte-]{color:var(--kute-cyan)}.section-title[class*=svelte-]{border-left-color:var(--kute-cyan);color:var(--kute-cyan)}.category-card[class*=svelte-],.map-filter-select[class*=svelte-],.day-arrow[class*=svelte-],.day-input[class*=svelte-],.data-table[class*=svelte-] thead tr{border-color:var(--kute-line-strong)}.category-card[class*=svelte-]:hover,.map-filter-select[class*=svelte-]:hover,.map-filter-select[class*=svelte-]:focus,.day-input[class*=svelte-]:focus{border-color:var(--kute-cyan)}.table-header.sortable.sort-asc[class*=svelte-]:after{border-bottom-color:var(--kute-cyan)}.table-header.sortable.sort-desc[class*=svelte-]:after{border-top-color:var(--kute-cyan)}.table-header.sortable[class*=svelte-]:hover,.data-table[class*=svelte-] tbody tr.clickable:hover,.data-table[class*=svelte-] tbody tr.highlight-row,.day-arrow[class*=svelte-]:hover:not(:disabled),.day-map[class*=svelte-],.eligible-maps[class*=svelte-] li,.view-all-btn[class*=svelte-],.page-btn[class*=svelte-],.view-tab.active[class*=svelte-]{background:var(--kute-cyan-soft);border-color:var(--kute-line-strong)}:is(#popupHolder,#app) .socialModal{background-color:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6}:is(#popupHolder,#app) .social-content{border-radius:var(--kute-radius-lg)}:is(#popupHolder,#app) .window-header{background:var(--kute-panel);border-bottom:1px solid var(--kute-line)}:is(#popupHolder,#app) .window-header-icon{color:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab{background:var(--kute-panel);transition:background-color .15s}:is(#popupHolder,#app) .sidebar-tab:hover{background:var(--kute-raised)}:is(#popupHolder,#app) .sidebar-tab:hover .sidebar-tab-icon,:is(#popupHolder,#app) .sidebar-tab:hover .sidebar-tab-label{color:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab.active{background:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab.active .sidebar-tab-icon,:is(#popupHolder,#app) .sidebar-tab.active .sidebar-tab-label{color:var(--kute-bg)}:is(#popupHolder,#app) .simple-tabs{border-bottom-color:var(--kute-line)}:is(#popupHolder,#app) .simple-tab-active{border-bottom-color:var(--kute-cyan)}:is(#popupHolder,#app) .simple-tab-active .simple-tab-icon,:is(#popupHolder,#app) .simple-tab-active .simple-tab-label{color:var(--kute-cyan)}:is(#popupHolder,#app) .social-search-input,:is(#popupHolder,#app) .social-search-btn,:is(#popupHolder,#app) .profile-search-form,:is(#popupHolder,#app) .conversation-input,:is(#popupHolder,#app) .conversation-emoji-button{background:var(--kute-raised);border-color:var(--kute-line);border-radius:6px}:is(#popupHolder,#app) .social-search-input:focus,:is(#popupHolder,#app) .profile-search-form:focus-within,:is(#popupHolder,#app) .conversation-input:focus{border-color:var(--kute-cyan)}:is(#popupHolder,#app) .social-search-btn:hover,:is(#popupHolder,#app) .conversation-emoji-button:hover:not(:disabled){background:#1d2c32;border-color:var(--kute-line-strong);color:var(--kute-cyan)}:is(#popupHolder,#app) .social-compose-btn,:is(#popupHolder,#app) .post-follow-btn,:is(#popupHolder,#app) .conversation-send-button{background:var(--kute-cyan);border-radius:6px;transition:background-color .15s}:is(#popupHolder,#app) .social-compose-btn:hover,:is(#popupHolder,#app) .post-follow-btn:hover:not(:disabled),:is(#popupHolder,#app) .conversation-send-button:hover:not(:disabled){background:var(--kute-pink)}:is(#popupHolder,#app) .social-compose-icon,:is(#popupHolder,#app) .social-compose-label,:is(#popupHolder,#app) .post-follow-btn i,:is(#popupHolder,#app) .conversation-send-button{color:var(--kute-bg)}:is(#popupHolder,#app) .conversation-send-button:disabled{background:#24343a;color:var(--kute-faint)}:is(#popupHolder,#app) .post-card{background:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .post-card-clickable:hover{background:var(--kute-raised)}:is(#popupHolder,#app) .post-item-card{background:#18242999;border-color:var(--kute-line);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .post-item-card:hover{background:var(--kute-raised);border-color:var(--kute-cyan)}:is(#popupHolder,#app) .postGameRes{background-color:var(--kute-bg);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .postResRo,:is(#popupHolder,#app) .postResRoD{border-bottom-color:var(--kute-line)}:is(#popupHolder,#app) .post-content-action{color:var(--kute-cyan)}:is(#popupHolder,#app) .vote-btn,:is(#popupHolder,#app) .share-btn{background:var(--kute-raised);border-color:var(--kute-line)}:is(#popupHolder,#app) .vote-btn:hover:not(:disabled),:is(#popupHolder,#app) .share-btn:hover{background:#1d2c32;border-color:var(--kute-line-strong)}:is(#popupHolder,#app) .comment-btn:hover{background:var(--kute-cyan-soft)}:is(#popupHolder,#app) .vote-btn-done,:is(#popupHolder,#app) .vote-btn-done:hover:not(:disabled){background:var(--kute-cyan);border-color:var(--kute-cyan)}:is(#popupHolder,#app) .vote-btn-done .vote-btn-icon,:is(#popupHolder,#app) .vote-btn-done .vote-btn-label,:is(#popupHolder,#app) .vote-btn-done .vote-btn-count{color:var(--kute-bg)}:is(#popupHolder,#app) .friends-root,:is(#popupHolder,#app) .conversation-root{background:var(--kute-bg)}:is(#popupHolder,#app) .friend-list{background:var(--kute-panel);border-right:1px solid var(--kute-line)}:is(#popupHolder,#app) .friend-item:hover{background:#35e0e80f}:is(#popupHolder,#app) .friend-item.selected{background:var(--kute-cyan-soft);border-left-color:var(--kute-cyan)}:is(#popupHolder,#app) .friend-presence-dot{border-color:var(--kute-panel)}:is(#popupHolder,#app) .friend-unread{background:var(--kute-pink);color:#fff}:is(#popupHolder,#app) .friend-list-search{background:var(--kute-raised);border-top:1px solid var(--kute-line)}:is(#popupHolder,#app) .conversation-header,:is(#popupHolder,#app) .conversation-compose{background:var(--kute-panel);border-color:var(--kute-line)}:is(#popupHolder,#app) .conversation-presence-dot{border-color:var(--kute-panel)}:is(#popupHolder,#app) .conversation-load-earlier{background:var(--kute-raised);border-color:var(--kute-line)}:is(#popupHolder,#app) .conversation-day-divider:before,:is(#popupHolder,#app) .conversation-day-divider:after{background:var(--kute-line)}:is(#popupHolder,#app) .bubble-row.sent .bubble{background:var(--kute-cyan)}:is(#popupHolder,#app) .bubble-row.sent .bubble,:is(#popupHolder,#app) .bubble-row.sent .bubble-time,:is(#popupHolder,#app) .bubble-row.sent .bubble-status-ok{color:var(--kute-bg)}:is(#popupHolder,#app) .bubble-row.received .bubble{background:var(--kute-raised)}#app .profile-detail-root{background:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6}#app .profile-detail-header-bar{background:var(--kute-panel);border-bottom-color:var(--kute-line)}#app .profile-detail-header-icon,#app .profile-detail-section-header,#app .profile-detail-sales-header{color:var(--kute-cyan)}#app .profile-detail-back,#app .profile-detail-action,#app .profile-detail-range-btn{background:var(--kute-raised);border-color:var(--kute-line)}#app .profile-detail-back:hover,#app .profile-detail-action:hover:not(:disabled){background:#1d2c32}#app .profile-detail-action.active,#app .profile-detail-action.active i{background:var(--kute-cyan-soft);border-color:var(--kute-line-strong);color:var(--kute-cyan)}#app .profile-detail-range-btn.active{background:var(--kute-cyan);border-color:var(--kute-cyan);color:var(--kute-bg)}#app .profile-detail-identity,#app .profile-detail-sales-panel,#app .profile-detail-badges-panel,#app .profile-detail-creations-panel{background:var(--kute-panel);border-color:var(--kute-line);border-radius:var(--kute-radius)}#app .profile-detail-avatar{background:var(--kute-raised);border-color:var(--kute-line-strong)}#app .profile-detail-online-dot{border-color:var(--kute-panel)}#app .profile-detail-follow-box,#app .profile-detail-title-item,#app .profile-detail-badge-item{background:var(--kute-raised)}#app .profile-detail-follow-box:hover{background:#1d2c32;border-color:var(--kute-line-strong)}#app .profile-detail-stat,#app .profile-detail-class,#app .profile-detail-raid-row,#app .profile-detail-listing-card,#app .profile-detail-creation-card{background:var(--kute-panel);border-color:var(--kute-line);border-radius:var(--kute-radius)}#app .profile-detail-listing-card:hover,#app .profile-detail-creation-card:hover{background:var(--kute-raised)}#app .profile-detail-level-badge,#app .profile-detail-xp-fill{background:var(--kute-cyan)}#app .profile-detail-level-badge{color:var(--kute-bg)}#app .profile-detail-xp-bar{background:var(--kute-raised)} -`});var ei={};A(ei,{default:()=>Tb});var Mb,Qr,Tb,ti=w(()=>{"use strict";D();Nu();Bu();Mb=_u+zu,Qr=class{constructor(){this.sheet=null,u.settings.toggleKuteCss=e=>this.toggle(e),this.toggle(!0)}toggle(e){if(!e){this.sheet?.replaceSync("");return}this.sheet||(this.sheet=new CSSStyleSheet,document.adoptedStyleSheets=[this.sheet,...document.adoptedStyleSheets]),this.sheet.replaceSync(Mb)}},Tb=new Qr});var ai={};A(ai,{setFrameEnd:()=>Mn,takeFrameWorkMs:()=>ri});function ri(){if(ss.length<10)return 0;let s=ss.sort((t,o)=>t-o);ss=[];let e=s.slice(0,Math.ceil(s.length*.9));return e.reduce((t,o)=>t+o,0)/e.length}function Nb(s){return function(e){e!==Hu&&(Hu=e,qu++>0&&(Ku=performance.now(),ju.port2.postMessage(0))),s(e)}}function _b(s,e){Lo<0&&(Lo=e),ns++;let t=e-Lo;if(ts*Lb?rs+1:0,rs>=2&&u.frameLimiter!=="viz"&&(is=!0),ns=0,Lo=e}function Uu(){!is||!Cn?.hardFlip||(is=!1,ns=0,rs=0,Lo=-1)}function Bb(s){let e;for(s>200?e=1e3/(s*1.0055):e=1e3/s;performance.now()e?Sn=t+e:Sn+=e}function zb(s){$n=s,ii?.(s)}function Gu(s){if(ii!==null&&!ni)return Hb(s);let e=Cn===null?0:Cn.gameFpsLimit;if(!(e>0)){oi=0;let o=++Ib%Rb;return o>=Pb?En(s):(o===0&&(qu=0),En(Nb(s)))}let t=Number(e);return En(function(o){t!==oi&&(oi=t,is=!1,ns=0,rs=0,Lo=-1),o!==Ou&&(Ou=o,is?Bb(t):_b(t,o)),s(o)})}function Hb(s){ni=!0;let e=Gu(t=>{$n=t,s(t)});return ni=!1,Du===$n&&Fu(si),Du=$n,si=En(zb),e}function Mn(s){ii=s,s===null&&Fu(si)}var En,Fu,Ab,Lb,Cn,Rb,Pb,Ib,qu,Hu,Ku,ss,ju,Sn,Ou,oi,is,Lo,ns,rs,ii,si,$n,Du,ni,as=w(()=>{"use strict";D();En=window.requestAnimationFrame,Fu=window.cancelAnimationFrame,Ab=2e3,Lb=1.15,Cn=null,Rb=256,Pb=12,Ib=0,qu=0,Hu=-1,Ku=0,ss=[],ju=new MessageChannel;ju.port1.onmessage=()=>{ss.length<512&&ss.push(performance.now()-Ku)};Ne.then(()=>{Cn=u.settings.data});Sn=0,Ou=-1,oi=0,is=!1,Lo=-1,ns=0,rs=0;document.addEventListener("pointerlockchange",Uu);window.addEventListener("resize",Uu);ii=null,si=0,$n=-1,Du=-2,ni=!1;window.requestAnimationFrame=Gu});var Tn=we((jx,Ob)=>{Ob.exports="data:image/webp;base64,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"});var ci={};A(ci,{default:()=>Db});var Wu,li,Db,di=w(()=>{"use strict";Wu=ue(Tn(),1),li=class{constructor(){if(!document.querySelector("#mainMenuUIMount"))return;let e=document.createElement("style");e.id="kute_logoBadgeCSS",e.textContent=` +void main() { outColor = texture(uLabel, vUv); }`;Vr=new Float32Array(4096),Ru=0});var Iu={};A(Iu,{FrameRecorder:()=>no,InputProbe:()=>ns,TaskProbe:()=>ro});var no,ns,ro,Sn=w(()=>{"use strict";no=class{constructor(e=12e4){this.samples=new Float32Array(e),this.count=0,this.stored=0,this.last=-1,this.first=-1}frame(e){this.last>=0&&(this.count++,this.storedt[Math.min(t.length-1,Math.floor(h*t.length))],r=n(.5),i=Math.max(4*r,e),a=0,l=0,c=0;for(let h of t)a+=h,h>i&&(l++,c+=h-r);let d=Math.max(.001,a/1e3);return{frames:this.count,seconds:o,fps:this.count/o,meanMs:a/this.stored,p50:r,p95:n(.95),p99:n(.99),p999:n(.999),maxMs:t[t.length-1],hitches:l,hitchesPerSec:l/d,stallMs:c/d}}},ns=class{constructor(){this.waits=new Float32Array(16384),this.events=0,this.packets=0,this.onMove=e=>{if(document.pointerLockElement===null)return;let t=e.getCoalescedEvents(),o=t.length>0?t[0].timeStamp:e.timeStamp;this.waits[this.events%this.waits.length]=performance.now()-o,this.events++,this.packets+=Math.max(1,t.length)}}start(){this.events=0,this.packets=0,window.addEventListener("pointermove",this.onMove,{capture:!0,passive:!0})}stop(){window.removeEventListener("pointermove",this.onMove,!0);let e=Math.min(this.events,this.waits.length),t=this.waits.slice(0,e).sort();return{events:this.events,packets:this.packets,p99:e>0?t[Math.min(e-1,Math.floor(e*.99))]:null,max:e>0?t[e-1]:null}}},ro=class{constructor(){this.delays=[],this.timer=0,this.sent=0,this.channel=new MessageChannel,this.channel.port1.onmessage=e=>{this.delays.push(performance.now()-e.data)}}start(){this.delays=[],this.sent=0;let e=performance.now()+10;this.timer=setInterval(()=>{this.sent++;let t=performance.now();this.channel.port2.postMessage(Math.min(t,e)),e=t+10},10)}stop(){clearInterval(this.timer);let e=[...this.delays].sort((t,o)=>t-o);return{sent:this.sent,ran:e.length,p99:e.length?e[Math.min(e.length-1,Math.floor(e.length*.99))]:null,max:e.length?e[e.length-1]:null}}}});var zu={};function Ze(s,e){let t=Number(En.get(s));return En.has(s)&&Number.isFinite(t)?t:e}function Qr(s){window.chrome.webview.postMessage(`bench-finish ${JSON.stringify(s)}`)}function Ab(){let s=document.createElement("canvas");s.style.cssText="position:fixed;inset:0;width:100vw;height:100vh;display:block",document.body.append(s);let e=Nu>0?["Kute is testing this PC",`client test ${$b} of ${Nu}`,"this takes a moment, nothing to do for you"]:[],t=Yr(s,_u,e);t.resize(window.innerWidth*devicePixelRatio,window.innerHeight*devicePixelRatio);let o=Zr.length>0?Array.from({length:Math.max(1,Cb)},()=>Zr).flat():[null],n=[],r=0,i=performance.now(),a=null,l=new ro,c=Ze("cap",0),d=i,h=0,p=!1;s.addEventListener("webglcontextlost",()=>{p=!0});let m=g=>{i=g,a=null;let b=o[r];b!==null&&(c=Tb?b:0,d=g,window.chrome.webview.postMessage(`bench-cap ${b}`))};m(i);let f=g=>{if(c>0){for(;performance.now()0&&t.lost()){h===0&&Qr({ok:!1,error:"webgl context lost"}),t.destroy();return}if(t.render(g),h>0){b-h=v&&(a=new no,r===0&&window.chrome.webview.postMessage("bench-sample-start"),l.start()),a!==null&&(a.frame(b),b-i>=v+Sb&&(n.push({cap:o[r]??c,stats:a.stats(Eb),otherTasks:l.stop()}),r++,r0?n:void 0,load:_u,width:s.width,height:s.height,checksum:Xr()})))),requestAnimationFrame(f)};requestAnimationFrame(f)}function Bu(){try{Ab()}catch(s){Qr({ok:!1,error:String(s)})}}var En,yb,xb,Sb,Eb,$b,Nu,Zr,Cb,Mb,Tb,_u,ei=w(()=>{"use strict";Jr();Sn();En=new URLSearchParams(location.search);yb=400,xb=Ze("settle",700),Sb=Ze("ms",2e3),Eb=1e3/Ze("hz",60),$b=Ze("step",0),Nu=Ze("steps",0),Zr=(En.get("caps")??"").split(".").filter(s=>s!=="").map(Number).filter(Number.isFinite),Cb=Ze("rounds",1),Mb=Ze("capsettle",700),Tb=En.get("selfcap")==="1",_u={draws:Ze("draws",so.draws),meshSegments:so.meshSegments,overdraw:Ze("overdraw",so.overdraw),cpuIterations:Ze("cpu",so.cpuIterations)};document.body?Bu():document.addEventListener("DOMContentLoaded",Bu,{once:!0})});var Ou,Hu=w(()=>{Ou=`#guidePopup{background-color:#182429}.guideHeader,.guideSubH{border-bottom-color:#35e0e81f}.guStepS:not(:last-child){border-bottom-color:#35e0e81f}a,a:active,a:visited{color:#35e0e8}#purchaseSelector{background-color:#111b1f}.roundScrV{border-bottom-color:#35e0e847}#reloadMsg,#interactMsg,#mobileUI #interactMsg{border-color:#35e0e847}#instructionsUpdate{background-color:#151f24}.instructionsHeader,.instructionsTabs{background-color:#070c0f}.endTablePfp{border-color:#35e0e847}th,tr{border-bottom-color:#35e0e81f}.followBut{background-color:#35e0e8;color:#0b1215}.lds-ring div{border-color:#35e0e847;border-color:rgba(53,224,232,.28) transparent transparent transparent}#spinItemName{background-image:linear-gradient(to right,#0000,#070c0fb3 40%,#070c0fe6 60%,#0000)}.spinPrevIcon,.spinSprayDiv,#spinPromo,.compClassPItm,.compPLstIcn,.compSwpTmB,.compMenBtnS,.compPlWpIcn{border-color:#35e0e847}.hostHeader{background-color:#070c0f}#bigMFeatHBtn{border-color:#35e0e847}#bigMFeatHBtn:hover,#bigMFeatHBtn:active,#bigMFeatPBtn:hover,#bigMFeatPBtn:active{border-color:#35e0e847!important}.biMFeatInfB{border-color:#35e0e847}.biMFeatInfB:hover{border-color:#35e0e847!important}.mapLICat{background-color:#151f24}.hostPresetBtn,#hostMenuBtn{background-color:#35e0e8;color:#0b1215}.serverHostOp{border-color:#35e0e81f}.hostCBtn{border-color:#35e0e847}#hostActionH{border-top-color:#35e0e847}#stickyHostH{background-color:#070c0f}.loadoutBtn{background-color:#35e0e8;color:#0b1215}#loadoutToolbar{background-color:#111b1f;border-bottom-color:#35e0e81f}.loadoutTab{background-color:#182429}.loadoutTab:hover{background-color:#1d2c32}.loadoutTabSel{background-color:#24343a}#charPreviewSlot{border-right-color:#35e0e81f}#menuWindow.eterno .bigMenTabs{background-color:#111b1fad}.quickJoin{border-color:#35e0e8}.settText{color:#35e0e8}.contactsHeader,.setHed{border-color:#35e0e81f;background-color:#1d2c32}.setHed:hover{background-color:#182429}.setHedS{border-color:#35e0e81f;background-color:#1d2c32}.settName,.settNameSmall{border-bottom-color:#35e0e81f}input:checked+.sliderSml{background-color:#35e0e8;color:#0b1215}input:focus+.sliderSml{box-shadow:0 0 1px #35e0e8}input:checked+.slider{background-color:#35e0e8;color:#0b1215}input:focus+.slider{box-shadow:0 0 1px #35e0e8}.sliderVal{border-color:#35e0e847!important}#modDropper{border-color:#35e0e81f}#profilePicM{background-color:#24343a}.mailFrom{color:#35e0e8;border-bottom-color:#35e0e847}.followFrom{color:#35e0e8}#mailCount{border-color:#35e0e81f}#policePopC{background-color:#151f24}.classXPBar{background-color:#111b1f}.clsXPBarC{background-color:#35e0e8;color:#0b1215}.skinPaintSwatch{border-color:#35e0e847}.sb1:before{border-left-color:#35e0e847;border-top-color:#35e0e847}.skinColorItem,.matchVote{border-color:#35e0e81f}.hostMap,#mobileJoystick .back,#mobileJoystick .front{border-color:#35e0e847}#chargeModalCard{background-color:#111b1f}.chargeModalBtn{background-color:#35e0e8;color:#0b1215}.settingsHeader,.serverHeader{background-color:#151f24}.setSugBox2,.setSugBox2:hover,.setSugBox,.setSugBox:hover{border-color:#35e0e847}.settingsBtn{background-color:#35e0e8;color:#0b1215}.settingTab:hover{border-bottom-color:#35e0e81f}.redVouchBtn,.searchBtn{background-color:#35e0e8;color:#0b1215}.challMapCrd,.challHeadrI{border-color:#35e0e847}.chalCard{background-color:#151f24}.chalRews{border-left-color:#35e0e847}.chalRewSkn{border-color:#35e0e847}.changeText{border-bottom-color:#35e0e81f}.crftRcpeCrd{background-color:#070c0f}.craftRcIcn,.crftRecSml,.crftItmReq{border-color:#35e0e847}.crftTim{background-color:#151f24}.hostToggle{background-color:#35e0e8;color:#0b1215}.titleRowLocked{border-bottom-color:#35e0e81f}input:checked+.optCheck{background-color:#35e0e8;color:#0b1215}.subPassChg,.subPassChg:hover,.updDisN,.updDisN:hover,.lnkTw:hover{background-color:#35e0e8;color:#0b1215}#popupContent{background-color:#151f24}.twitchPop,.nftPop,.confPop,.clientExitPop,#confPurchItemPop{border-color:#35e0e847}#bundlePop,#premiumPop{background-color:#151f24}.metaPop{border-color:#35e0e847}.confPremiumPop,.vouchPop{background-color:#151f24}.polConfPop{border-color:#35e0e847}.rankedPop,.promoPop{background-color:#151f24}.tListN.inv{background-color:#35e0e8;color:#0b1215}.tItemHolder,.dItemHolder,.tCurrencyItem{border-color:#35e0e847}.bigMenTab:hover,.bigMenTabA,.bigMenTabA:hover{border-bottom-color:#35e0e847}.dark .menuTabNew:hover{border-bottom-color:#35e0e81f!important}.dark .tabANew,.dark .tabANew:hover{border-bottom-color:#35e0e847!important}input:checked+.slider2{background-color:#35e0e8;color:#0b1215}input:focus+.slider2{box-shadow:0 0 1px #35e0e8}.tabHeader:hover{border-bottom-color:#35e0e847}#kdLayout,.crStat{border-color:#35e0e81f}.keyIcon{border-left-color:#35e0e81f;border-right-color:#35e0e81f;border-top-color:#35e0e847;border-bottom-color:#35e0e81f}.pfpPop,.dropsPop{background-color:#151f24}.accountCreatePop{background-color:#151f24;border-color:#35e0e847}#pubPfp{background-color:#35e0e8;color:#0b1215}#tradeChatInput,.tradeChatItem{background-color:#111b1f}#partnerProgB{background-color:#35e0e8;color:#0b1215}#partnrUpBtn{background-color:#35e0e8;border-bottom-color:#35e0e8;color:#0b1215}#partnrUpBtn:hover,#partnrUpBtn:active{border-bottom-color:#35e0e8}#partnrUpBtnD,#partnrUpBtnD:hover,#partnrUpBtnD:active{border-bottom-color:#35e0e847}.editLink{color:#35e0e8}.speedRunItem{border-bottom-color:#35e0e81f}#speedRunInfo{border-bottom-color:#35e0e847}#shopMainSellB{border-color:#35e0e847}.custBack:hover{background-color:#24343a85}#itemSearchH{background-color:#151f24}.skinReward{border-color:#35e0e847}.selectedItem{border-color:#35e0e847!important}.custContainer{border-color:#35e0e847}.custSubContainer{border-left-color:#35e0e847;border-bottom-color:#35e0e847}#findGameBtn{background-color:#35e0e8;color:#0b1215}#clanDeclineAll:hover,.logVersionHed,.viewAllUpdates,.viewAllUpdates:hover{border-color:#35e0e847}.followBack{border-color:#35e0e8!important}.followBack:hover{border-color:#35e0e847!important}.joinBtn{background-color:#35e0e8;color:#0b1215}.imagePop,.badgePop,.imageNewPop{background-color:#151f24}.openCollection{background-color:#35e0e8!important;color:#0b1215}.imageListHeader,.imageListFooter{background-color:#070c0f}.importPop,#bindsHeader,.disconnectPop{background-color:#151f24}.tooltip{background-color:#24343a}.tooltip2{background-color:#070c0f}.imageTab:hover{border-bottom-color:#35e0e81f}.tabAIMG,.tabAIMG:hover{border-bottom-color:#35e0e847}input:checked+.advancedSlider{background-color:#35e0e8;color:#0b1215}input:focus+.advancedSlider{box-shadow:0 0 1px #35e0e8}.quickPlayMap{border-color:#35e0e847}#custStreakSelH{border-top-color:#35e0e81f}.winSelH{background-color:#24343a}#spinHistoryBtn{border-color:#35e0e847}#spinHistoryBtn:hover{border-color:#35e0e847!important}#spinMultiToggleBtn{background-color:#35e0e8!important;box-shadow:inset 0 -7px #35e0e8!important;border-color:#35e0e847;color:#0b1215}#spinMultiToggleBtn:hover{border-color:#35e0e847!important}#spinHistoryPop{background-color:#151f24}.spinHistoryHeader{background-color:#070c0f}.clsStatXPBar{background-color:#0b1215}.eventPop{background-color:#151f24}.eventPopHeader,.bSliderBtn,.bSliderBtn:hover,.bSliderBtn:active{border-color:#35e0e847}.bSliderBtn.disabled{border-color:#35e0e81f}.bpLevelNum.completed{background-color:#24343a}.bpLevelNum.active{border-color:#35e0e847}.bpCard,.bpCard.free{border-color:#35e0e81f}.bpCard.free.completed,.bpCard.free.completed.claimed{border-color:#35e0e847}.bpCardSlot{border-color:#35e0e81f}.bpSliderArrow{border-right-color:#35e0e847}.bpInfoBalloon{background-color:#151f24}.bpInfoBalloon:after{background-color:#151f24}.bpClaimB{border-color:#35e0e847;background-color:#151f24}.bp-unlock-header{background-color:#151f24}.bp-generic-pop,.bp-purchase-pop{background-color:#151f24;border-color:#35e0e847}.clanSubmitBtn,.clanSubmitBtn:hover{background-color:#35e0e8;color:#0b1215}.spinErrorPop{background-color:#151f24}.popHeader,.dropsPopHeader{background-color:#070c0f}.charmErrorPop,.spinHistoryStatsPop{background-color:#151f24}#kpdCalls>* td,#kpdCalls>* th{border-bottom-color:#35e0e81f}.loadingPop,.autoLoadPop,.editMapPop,.responsePop{background-color:#151f24}.infoPop,.contPop{background-color:#1d2c32}.ticketPop{background-color:#151f24}.bundleCrd{background-color:#070c0f}.bundleItmReq,.bundleSliderBtn,.bundleSliderBtn:hover,.bundleSliderBtn:active,.bundleSliderBtn.disabled{border-color:#35e0e847}.bundleSliderArrow{border-right-color:#35e0e847}.dxp-pop{background-color:#151f24;border-color:#35e0e847}.dropsSliderBtn,.dropsSliderBtn:hover,.dropsSliderBtn:active,.dropsSliderBtn.disabled{border-color:#35e0e847}.dropsSliderArrow{border-right-color:#35e0e847}.rewItemHolder{border-color:#35e0e847}.abTestsPop{background-color:#151f24}.registerGiftPop{background-color:#151f24;border-color:#35e0e847}.rankedQueueModal{background-color:#151f24;border-color:#35e0e8;box-shadow:0 0 160px #35e0e875}.rankedMenuModal,.communityPopup,.tutorialPopup,.defaultModal,.krunkCupJoinModal,.krunkCupViewModal,.exchangeModal,.itemsModal,.socialModal,.moreKrunkerPopup{background-color:#151f24}.io-button{background-color:#151f24;border-color:#35e0e81f}.io-button:hover{background-color:#182429}.io-button--accept-secondary{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.io-input-field{border-color:#35e0e81f}.io-input-field:focus{border-color:#35e0e8}.io-popup-container{background-color:#111b1f}.io-section-header:after{background-color:#35e0e8;color:#0b1215}.io-card{border-color:#35e0e81f}.io-separator{border-bottom-color:#35e0e81f}.io-separator span{background-color:#111b1f}.strike-timer__info-holder,.strike-timer__timer-bg{background-color:#151f24}.bundle-popup-lmt-offer{background-color:#24343a}.ltm-offer-container__arrow{border-right-color:#35e0e847}.file-drop-target.svelte-145grbc{border-color:#35e0e81f}.file-drop-target.svelte-145grbc:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.file-drop-target.hovered.svelte-145grbc{border-color:#35e0e847}.file-drop-target.drag-over.svelte-145grbc{border-color:#35e0e8;background-color:#35e0e81a}.code-input.svelte-1xwmszg{border-color:#35e0e81f}.code-input.svelte-1xwmszg:focus{border-color:#35e0e8}.qr-code-image.svelte-1xwmszg,.slider-input.svelte-1xwmszg{border-color:#35e0e81f}.slider-input.svelte-1xwmszg::-webkit-slider-thumb{background-image:linear-gradient(145deg,#35e0e8,#3a7dce);border-color:#35e0e847}.slider-input.svelte-1xwmszg::-webkit-slider-runnable-track{background-image:linear-gradient(to right,#245d99,#35e0e8)}.slider-display.svelte-1xwmszg{color:#35e0e8}.info-message.svelte-1xwmszg{border-color:#35e0e8}.password-requirements.svelte-1xwmszg,.motd-input.svelte-15d5v89{border-color:#35e0e81f}.motd-input.svelte-15d5v89:focus{border-color:#35e0e81f}.motd-display.svelte-15d5v89{border-left-color:#35e0e81f}.item-showcase-container.svelte-2tp35a{background-color:#151f24bf}.more-info-btn.svelte-2tp35a,.more-info-btn.svelte-2tp35a:hover,.share-btn.svelte-2tp35a{border-color:#35e0e81f}.md-root.svelte-1kkpw01{background-color:#151f24}.md-header.svelte-1kkpw01{border-bottom-color:#35e0e81f;background-color:#111b1f}.md-back.svelte-1kkpw01{border-color:#35e0e81f}.md-header-icon.svelte-1kkpw01{color:#35e0e8}.md-thumb.svelte-1kkpw01{background-color:#0b1215}.md-info-bar.svelte-1kkpw01{border-bottom-color:#35e0e81f}.md-creator.svelte-1kkpw01{color:#35e0e8}.md-host-btn.svelte-1kkpw01,.md-icon-btn.svelte-1kkpw01{border-color:#35e0e81f}.md-tabs.svelte-1kkpw01{border-bottom-color:#35e0e81f}.md-tab.active.svelte-1kkpw01{color:#35e0e8;border-bottom-color:#35e0e8}.md-lb-name.svelte-1kkpw01{color:#35e0e8}.md-load-more.svelte-1kkpw01{border-color:#35e0e81f}.md-data-section-title.svelte-1kkpw01{color:#35e0e8;border-top-color:#35e0e81f}.md-data-table.svelte-1kkpw01{background-color:#111b1f;border-color:#35e0e81f}.md-data-table-row.svelte-1kkpw01{border-top-color:#35e0e81f}.md-data-header.svelte-1kkpw01{background-color:#111b1f;border-color:#35e0e81f}.md-data-search-btn.svelte-1kkpw01{border-color:#35e0e81f}.md-data-input.svelte-1kkpw01{background-color:#0b1215;border-color:#35e0e81f}.md-data-input.svelte-1kkpw01:focus{border-color:#35e0e8}.md-ver-row.svelte-1kkpw01{border-top-color:#35e0e81f}.md-ver-btn.svelte-1kkpw01{border-color:#35e0e81f}.mod-root.svelte-1v2j2f2{background-color:#151f24}.mod-header.svelte-1v2j2f2{border-bottom-color:#35e0e81f;background-color:#111b1f}.mod-back.svelte-1v2j2f2{border-color:#35e0e81f}.mod-header-icon.svelte-1v2j2f2{color:#35e0e8}.mod-thumb.svelte-1v2j2f2{background-color:#0b1215}.mod-info-bar.svelte-1v2j2f2{border-bottom-color:#35e0e81f}.mod-creator.svelte-1v2j2f2{color:#35e0e8}.mod-use-btn.svelte-1v2j2f2,.mod-use-btn.svelte-1v2j2f2:hover{background-color:#35e0e8;color:#0b1215}.mod-icon-btn.svelte-1v2j2f2{border-color:#35e0e81f}.style-container.svelte-143xo7r{background-color:#151f24bf}.slider-arrow.svelte-143xo7r{border-color:#35e0e81f}.slider-arrow.left.svelte-143xo7r .slider-arrow-icon.svelte-143xo7r{border-right-color:#35e0e847}.slider-arrow.right.svelte-143xo7r .slider-arrow-icon.svelte-143xo7r{border-left-color:#35e0e847}.swatch.svelte-143xo7r,.btn.svelte-143xo7r{border-color:#35e0e81f}.market-card.svelte-r5taai{background-color:#070c0fcc}.trade-label.inv.svelte-1lqen9w{background-color:#35e0e8;color:#0b1215}.trade-inv-item.svelte-1lqen9w{border-color:#35e0e847}.trade-search.svelte-1lqen9w{border-color:#35e0e81f}.trade-search.svelte-1lqen9w:focus{border-color:#35e0e81f}.gift-root.svelte-g5j1wf{background-color:#151f24}.gift-header.svelte-g5j1wf{border-bottom-color:#35e0e81f;background-color:#111b1f}.gift-back.svelte-g5j1wf{border-color:#35e0e81f}.gift-header-icon.svelte-g5j1wf{color:#35e0e8}.gift-input.svelte-g5j1wf{background-color:#0b1215;border-color:#35e0e81f}.gift-input.svelte-g5j1wf:focus{border-color:#35e0e8}.gift-send.svelte-g5j1wf{background-color:#35e0e8;color:#0b1215}.gift-done.svelte-g5j1wf{border-color:#35e0e81f}.buy-button.svelte-r01l8m:disabled{background-color:#24343a}.buy-button.svelte-r01l8m:disabled:hover{background-color:#24343a}.shop-header.svelte-1gtpoav{border-bottom-color:#35e0e81f}.rp-balance.svelte-1gtpoav,.guest-earned-collect__reward-items.svelte-1hb83uo,.guest-earned-collect__register-btn.svelte-1hb83uo,.guest-earned-collect__register-btn.svelte-1hb83uo:hover{border-color:#35e0e81f}.signup-rewards-list.svelte-1v6b0qm{background-color:#070c0fb3}.signup-rewards-register-button.svelte-1v6b0qm{border-color:#35e0e847!important}.product-row.svelte-14104bb{border-color:#35e0e81f}.product-row.svelte-14104bb:hover{border-color:#35e0e847}.gift-button.svelte-14104bb,.for-you-text.svelte-14104bb,.currency-shop-item.svelte-14104bb,.currency-shop-item.svelte-14104bb:hover{border-color:#35e0e81f}.verification-banner.svelte-165vbjp{background-color:#151f24cc}.spinner.svelte-165vbjp{border-color:#35e0e81f;border-top-color:#35e0e847}.section-title.svelte-e65miw .material-icons.svelte-e65miw{color:#35e0e8}.toggle-switch.svelte-e65miw input:checked+.slider.svelte-e65miw{background-color:#35e0e8;color:#0b1215}.texture-upload-item.svelte-e65miw,.texture-image.svelte-e65miw{border-color:#35e0e81f}.btn-generate.svelte-e65miw{background-color:#35e0e8;color:#0b1215}.btn-generate.svelte-e65miw:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.sgNum.svelte-1i1uhp7,.sgHex.svelte-1i1uhp7{border-color:#35e0e81f}.sgNum.svelte-1i1uhp7:focus,.sgHex.svelte-1i1uhp7:focus{border-color:#35e0e8}.sgSlider.svelte-1i1uhp7::-webkit-slider-thumb{background-color:#35e0e8;color:#0b1215}.sgSlider.svelte-1i1uhp7:focus-visible{outline-color:#35e0e8}.sgColorInput.svelte-1i1uhp7{border-color:#35e0e81f}.sgColorInput.svelte-1i1uhp7:focus-visible{outline-color:#35e0e8}.sgPalette.svelte-sxvv3c{background-color:#0b1215fa;border-color:#35e0e81f}.sgPaletteSearch.svelte-sxvv3c{border-color:#35e0e81f}.sgPaletteSearch.svelte-sxvv3c:focus{border-color:#35e0e8}.sgPaletteItem.active.svelte-sxvv3c,.sgPaletteItem.svelte-sxvv3c:focus-visible{background-color:#35e0e840}.sgEditor.svelte-upgo13{border-color:#35e0e81f}.sgToolbar.svelte-upgo13{border-bottom-color:#35e0e81f}.sgBtn.svelte-upgo13{border-color:#35e0e81f}.sgBtn.svelte-upgo13:focus-visible,.sgCanvas.svelte-upgo13:focus-visible,.sgErrorItem.svelte-upgo13:focus-visible,.sgMenuItem.svelte-upgo13:focus-visible{outline-color:#35e0e8}.sgBtnPrimary.svelte-upgo13{background-color:#35e0e840;border-color:#35e0e899;color:#35e0e8}.sgBtnPrimary.svelte-upgo13:hover:not(:disabled){background-color:#35e0e866}.sgMenu.svelte-upgo13{background-color:#0b1215fa;border-color:#35e0e81f}.sgMenuItem.svelte-upgo13:hover{background-color:#35e0e840}.sgCanvas.svelte-upgo13{background-color:#070c0fe6}.sgOverlay.svelte-upgo13{background-color:#070c0ffa;border-color:#35e0e81f}.sgIoText.svelte-upgo13{border-color:#35e0e81f}.sgIoText.svelte-upgo13:focus{border-color:#35e0e8}.sgFooter.svelte-upgo13{border-top-color:#35e0e81f}.io-action-bar-button.svelte-103lu6x{background-color:#35e0e8;color:#0b1215}.search-input.svelte-103lu6x{border-color:#35e0e81f}.search-input.svelte-103lu6x:focus{border-color:#35e0e8}.io-action-bar-button.svelte-103lu6x:hover,.action-btn.test-btn.svelte-103lu6x,.action-btn.test-btn.svelte-103lu6x:hover{background-color:#35e0e8;color:#0b1215}.skin-manager-table.svelte-103lu6x .table thead th{background-color:#0b1215}.tab-navigation.svelte-103lu6x{border-bottom-color:#35e0e81f}.tab-button.active.svelte-103lu6x{color:#35e0e8;background-color:#35e0e81a}.tab-button.active.svelte-103lu6x:after{background-color:#35e0e8;color:#0b1215}.preview-control-btn.svelte-103lu6x{border-color:#35e0e81f}.preview-control-btn.active.svelte-103lu6x{background-color:#35e0e84d;border-color:#35e0e8}.paint-select.svelte-103lu6x{border-color:#35e0e81f}.paint-select.svelte-103lu6x option.svelte-103lu6x{background-color:#0b1215}.connection.svelte-1fenhdo{background-color:#182429}.consequences.svelte-18wpngg{border-color:#35e0e81f}.loading-spinner.svelte-190e6fj{border-color:#35e0e81f;border-top-color:#35e0e847}.retry-button.svelte-190e6fj{background-color:#35e0e8;color:#0b1215}.benefits-card.svelte-190e6fj,.billing-info.svelte-190e6fj,.subscribe-btn.svelte-190e6fj{border-color:#35e0e81f}.subscribe-btn.svelte-190e6fj:hover{border-color:#35e0e847}.disabled-card.svelte-190e6fj .subscribe-btn.svelte-190e6fj{background-image:linear-gradient(135deg,#24343a,#1d2c32);border-color:#35e0e81f}.disabled-card.svelte-190e6fj .subscribe-btn.svelte-190e6fj:hover,.disabled-indicator.svelte-190e6fj{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.subscribed-btn.svelte-190e6fj{border-color:#35e0e81f}.renew-btn.svelte-190e6fj{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);border-color:#35e0e81f;box-shadow:0 8px 24px #35e0e866,0 4px 8px #0000004d,inset 0 1px #ffffff4d}.renew-btn.svelte-190e6fj:hover{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);box-shadow:0 12px 32px #35e0e880,0 6px 12px #0006,inset 0 1px #fff6;border-color:#35e0e847}.cancel-container.svelte-190e6fj,.cancel-btn.svelte-190e6fj,.cancel-btn.svelte-190e6fj:hover{border-color:#35e0e81f}.wild-offer-notification.svelte-1gcqcwy{background-image:linear-gradient(135deg,#000000f2,#070c0ffa)}.shop-btn.svelte-1gcqcwy,.shop-btn.svelte-1gcqcwy:hover,.player-bound-display.svelte-1nzacef,.player-bound-display.svelte-1nzacef:hover,.login-button.svelte-1nzacef,.login-button.svelte-1nzacef:hover{border-color:#35e0e81f}.data-table.svelte-69sryq thead.svelte-69sryq{background-color:#0b1215}.table-header.svelte-69sryq{color:#35e0e8}.table-header.sortable.svelte-69sryq:hover{background-color:#35e0e81a}.table-header.sortable.sort-asc.svelte-69sryq:after{border-bottom-color:#35e0e8}.table-header.sortable.sort-desc.svelte-69sryq:after{border-top-color:#35e0e8}.table-cell.svelte-69sryq{border-bottom-color:#35e0e81f}.qs-window.svelte-1o11rsf{background-color:#111b1f;border-color:#35e0e81f}.qs-item-preview.svelte-1o11rsf,.qs-values.svelte-1o11rsf,.qs-amount-select.svelte-1o11rsf{border-color:#35e0e81f}.qs-amount-select.svelte-1o11rsf:focus{border-color:#35e0e88c}.jy-filter-bar.svelte-1vqzycn{background-color:#111b1f;border-color:#35e0e81f}.jy-search-input.svelte-1vqzycn,.jy-sort-select.svelte-1vqzycn{background-color:#151f24;border-color:#35e0e81f}.sd-root.svelte-a9j4oe{background-color:#151f24}.sd-header.svelte-a9j4oe{border-bottom-color:#35e0e81f;background-color:#111b1f}.sd-back.svelte-a9j4oe{border-color:#35e0e81f}.sd-header-icon.svelte-a9j4oe{color:#35e0e8}.sd-del.svelte-a9j4oe{border-color:#35e0e81f}.sd-tabs.svelte-a9j4oe{border-bottom-color:#35e0e81f}.sd-tab.active.svelte-a9j4oe{color:#35e0e8;border-bottom-color:#35e0e8}.sd-row.svelte-a9j4oe{background-color:#111b1f;border-color:#35e0e81f}.sd-input.svelte-a9j4oe{background-color:#0b1215;border-color:#35e0e81f}.sd-input.svelte-a9j4oe:focus{border-color:#35e0e8}.sd-primary.svelte-a9j4oe{background-color:#35e0e8;color:#0b1215}.sd-mini.svelte-a9j4oe{border-color:#35e0e81f}.sd-kr.svelte-a9j4oe{background-color:#111b1f}.region-btn.svelte-1gdnqq5{border-color:#35e0e81f}.region-btn.active.svelte-1gdnqq5{background-color:#35e0e826;border-color:#35e0e880;color:#35e0e8}.season-select.svelte-1gdnqq5{border-color:#35e0e81f}.season-select.svelte-1gdnqq5 option.svelte-1gdnqq5{background-color:#0b1215}th.svelte-1gdnqq5{color:#35e0e8}td.svelte-1gdnqq5{border-bottom-color:#35e0e81f}.season-select.svelte-81ueoe{border-color:#35e0e81f}.season-select.svelte-81ueoe option.svelte-81ueoe{background-color:#0b1215}.kc-title.svelte-1xp8pv1{color:#35e0e8}.back-btn.svelte-1xp8pv1{border-color:#35e0e84d}.back-btn.svelte-1xp8pv1:hover{background-color:#35e0e81f;color:#35e0e8}.friend-list.svelte-e2g8p2{background-color:#111b1f;border-right-color:#35e0e81f}.friend-presence-dot.svelte-e2g8p2{border-color:#35e0e81f}.friend-presence-dot.offline.svelte-e2g8p2{background-color:#24343a}.friend-unread.svelte-e2g8p2{background-color:#35e0e8;color:#0b1215}.friend-list-search.svelte-e2g8p2{background-color:#111b1f;border-top-color:#35e0e81f}.conversation-root.svelte-128yn5i{background-color:#151f24}.conversation-header.svelte-128yn5i{border-bottom-color:#35e0e81f;background-color:#111b1f}.conversation-presence-dot.svelte-128yn5i{border-color:#35e0e81f}.conversation-presence-dot.offline.svelte-128yn5i{background-color:#24343a}.conversation-compose.svelte-128yn5i{border-top-color:#35e0e81f;background-color:#111b1f}.conversation-load-earlier.svelte-128yn5i{border-color:#35e0e81f}.conversation-input.svelte-128yn5i{background-color:#0b1215;border-color:#35e0e81f}.conversation-input.svelte-128yn5i:focus{border-color:#35e0e8}.conversation-emoji-button.svelte-128yn5i{background-color:#0b1215;border-color:#35e0e81f}.conversation-emoji-button.svelte-128yn5i:hover:not(:disabled){background-color:#111b1f;color:#35e0e8}.conversation-send-button.svelte-128yn5i{background-color:#35e0e8;color:#0b1215}.conversation-send-button.svelte-128yn5i:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.conversation-send-button.svelte-128yn5i:disabled{background-color:#1d2c32}.friends-root.svelte-u33r8v{background-color:#151f24}.friends-status-dot.svelte-u33r8v{background-color:#24343a}.player-card.svelte-dp3rf9{background-color:#0b1215cc;border-color:#35e0e81f}.player-card.svelte-dp3rf9:hover{background-color:#111b1fcc}.player-card.svelte-dp3rf9:focus-visible{outline-color:#35e0e847}.counterBadge.svelte-fgmdj8{background-color:#35e0e8;color:#0b1215}.territory-map-container.svelte-102279m{background-color:#111b1f;border-color:#35e0e81f}.territory-details-panel.svelte-102279m{border-color:#35e0e81f}.panel-header.svelte-102279m,.leaderboard-entry.svelte-102279m{border-bottom-color:#35e0e81f}.clickable-name.svelte-myp8tq:hover{color:var(--highlight-color, rgb(53, 224, 232))}.view-tab.svelte-myp8tq{border-color:#35e0e81f}.view-tab.active.svelte-myp8tq{background-color:#35e0e833;border-color:#35e0e866}.day-arrow.svelte-myp8tq,.day-input.svelte-myp8tq{border-color:#35e0e81f}.payouts-row.svelte-myp8tq,.payouts-row-header.svelte-myp8tq{border-bottom-color:#35e0e81f}.main-title.svelte-1sr7h97,.card-title.svelte-1sr7h97{color:#35e0e8}.map-badge.svelte-1sr7h97,.mode-badge.svelte-1sr7h97{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.section-title.svelte-1sr7h97{color:#35e0e8;border-left-color:#35e0e8}.rule-icon.svelte-1sr7h97,.tip-title.svelte-1sr7h97{color:#35e0e8}.filter-input.svelte-72bcy3{border-color:#35e0e84d}.filter-input.svelte-72bcy3:focus{border-color:#35e0e8}.post-card.svelte-72bcy3{border-color:#35e0e81f}.looking-for-label.svelte-72bcy3{color:#35e0e8}.req-badge.svelte-72bcy3{border-color:#35e0e81f}.player-clan.clickable-clan.svelte-7h12t9:hover{color:var(--highlight-color, rgb(53, 224, 232))}.tab-bar.svelte-7h12t9{border-bottom-color:#35e0e81f}.tab.active.svelte-7h12t9{border-bottom-color:var(--highlight-color, rgb(53, 224, 232))}.day-arrow.svelte-7h12t9,.day-input.svelte-7h12t9{border-color:#35e0e81f}.page-btn.svelte-7h12t9{background-color:#35e0e833;border-color:#35e0e866}.ct-row.svelte-7h12t9,.ct-header.svelte-7h12t9{border-bottom-color:#35e0e81f}.clickable-name.svelte-7h12t9:hover{color:var(--highlight-color, rgb(53, 224, 232))}.rank-display.svelte-19e82s0{border-color:#35e0e81f}.popup-box.svelte-6dkuug{background-color:#151f24}.moreKrunkerOption.svelte-19783yx{border-color:#35e0e847;background-color:#0b1215}.moreKrunkerOption.svelte-19783yx:hover{border-color:#35e0e847}.emoji-panel.svelte-13g6jqo{background-color:#151f24}.emoji-icon.svelte-13g6jqo{color:#35e0e8}.emoji-item.selected.svelte-13g6jqo,.emoji-item.svelte-13g6jqo:hover{border-color:#35e0e81f}.compose-window.svelte-qxxay9{background-color:#0b1215;border-color:#35e0e81f}.compose-input.svelte-qxxay9{border-color:#35e0e81f}.compose-input.svelte-qxxay9:focus{border-color:#35e0e899}.compose-input-num.svelte-qxxay9{border-color:#35e0e81f}.compose-btn-submit.svelte-qxxay9{background-color:#35e0e8;color:#0b1215}.compose-btn-submit.svelte-qxxay9:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.rewards-container.svelte-1sac6ik{border-color:#35e0e81f}.reward-card.flying.svelte-1sac6ik:after{border-color:#35e0e81f}.card-front.svelte-1sac6ik,.card-back.svelte-1sac6ik{background-color:#070c0fe6}.loading-spinner.svelte-172kpk5{border-color:#35e0e81f;border-top-color:#35e0e8}.socialsStickyFooter.svelte-1ley7u4{border-top-color:#35e0e81f}.pollBadge.svelte-1ley7u4,.pollVote.svelte-1ley7u4{background-color:#35e0e8;color:#0b1215}.eventLink.svelte-1ley7u4{color:#35e0e8;background-color:#35e0e81a}.eventLink.svelte-1ley7u4:hover{background-color:#35e0e833}.dm-emoji-panel.svelte-1ni3kfh{background-color:#151f24;border-color:#35e0e81f}.dm-emoji-header.svelte-1ni3kfh{border-bottom-color:#35e0e81f}.dm-emoji-header-icon.svelte-1ni3kfh{color:#35e0e8}.dm-emoji-thumb.svelte-1ni3kfh{background-color:#0b1215;border-color:#35e0e81f}.sub-tab-panel.svelte-lri212{border-color:#35e0e847}.bundle-card.svelte-lri212{background-color:#070c0f}.bundle-item-req.svelte-lri212{border-color:#35e0e847}.detail-window.svelte-h3kymj{background-color:#0b1215;border-color:#35e0e81f}.detail-head.svelte-h3kymj{border-bottom-color:#35e0e81f}.reply-input.svelte-h3kymj{border-color:#35e0e81f}.reply-input.svelte-h3kymj:focus{border-color:#35e0e880}.reply-btn.svelte-h3kymj{background-color:#35e0e8;color:#0b1215}.map-filter-select.svelte-c92dbh{border-color:#35e0e866}.map-filter-select.svelte-c92dbh:hover{border-color:#35e0e8}.map-filter-select.svelte-c92dbh:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.section-title.svelte-c92dbh{color:#35e0e8;border-left-color:#35e0e8}.day-arrow.svelte-c92dbh{border-color:#35e0e866;color:#35e0e8}.day-arrow.svelte-c92dbh:hover:not(:disabled){background-color:#35e0e833;border-color:#35e0e8}.day-input.svelte-c92dbh{border-color:#35e0e866}.day-input.svelte-c92dbh:focus{border-color:#35e0e8}.no-participation-title.svelte-c92dbh{color:#35e0e8}.page-btn.svelte-c92dbh{background-color:#35e0e833;border-color:#35e0e866}.overlay-content.svelte-jxc66d{background-color:#070c0f;border-color:#35e0e81f}.streams-overlay.svelte-60shhe{border-color:#35e0e81f}.hide-button.svelte-60shhe{background-color:#182429}.hide-button.svelte-60shhe:hover{background-color:#1d2c32}.spinner.svelte-60shhe{border-color:#35e0e81f}.featured-section.svelte-60shhe{background-color:#070c0fe6}.stream-card.svelte-60shhe{background-color:#0b1215cc;border-color:#35e0e81f}.thumbnail.svelte-60shhe{background-color:#0b1215}.thumbnail.svelte-60shhe:before{background-color:#0b1215}.tutorialSidebar.svelte-los391{background-image:linear-gradient(180deg,#111b1ff2,#0b1215f2)}.tutorialSidebar.svelte-los391:before{background-image:linear-gradient(180deg,rgba(17,27,31,.95) 0%,transparent 100%)}.tutorialSidebar.svelte-los391:after{background-image:linear-gradient(0deg,rgba(11,18,21,.95) 0%,transparent 100%)}.tutorialNavItem.svelte-los391{border-bottom-color:#35e0e81f}.matchmakingBarImage.svelte-los391,.inviteFriendsURLImage.svelte-los391,.spinsImage.svelte-los391,.matchmakingBarQuickMatchImage.svelte-los391,.hostFindGameImage.svelte-los391,.hostGameSetupImage.svelte-los391,.challengesImage.svelte-los391,.rankedImage.svelte-los391,.clanCreateImage.svelte-los391,.clanManageImage.svelte-los391,.tradingImage.svelte-los391,.challengeModeImage.svelte-los391,.challengeModeDifferenceImage.svelte-los391{border-color:#35e0e81f}.comment-text.svelte-7miv1g a{color:#35e0e8}.guide-section.svelte-4log2q{background-color:#070c0f}.guide-section-title.svelte-4log2q .material-icons.svelte-4log2q{color:#35e0e8}.guide-key.svelte-4log2q{background-color:#111b1f;border-color:#35e0e81f}.guide-rarity.dark.svelte-4log2q{border-color:#35e0e81f}.match-details.svelte-1irqx9a{border-top-color:#35e0e81f}.table-header.svelte-1irqx9a,.table-cell.svelte-1irqx9a{border-bottom-color:#35e0e81f}.page-btn.svelte-1irqx9a{border-color:#35e0e81f}.page-btn.svelte-1irqx9a:hover:not([disabled]){border-color:#35e0e81f}.currency-reward.svelte-1yk8fym,.gift-button.svelte-rew7ag{border-color:#35e0e81f}.modal-content.svelte-1pf0608{background-color:#111b1f;border-color:#35e0e81f}.price-input.svelte-1pf0608,.fee-breakdown.svelte-1pf0608{border-color:#35e0e81f}.season-banner.svelte-17kea4i{background-color:#35e0e8;color:#0b1215}.challenges-link-icon.svelte-17kea4i,.section-title.svelte-1x46pbz .material-icons.svelte-1x46pbz{color:#35e0e8}.param-chip.svelte-1x46pbz{border-color:#35e0e81f}.add-uniform-btn.svelte-1x46pbz{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.add-uniform-btn.svelte-1x46pbz:hover{background-color:#35e0e84d}.part-block.svelte-1x46pbz,.part-name-input.svelte-1x46pbz{border-color:#35e0e81f}.copy-defaults-btn.svelte-1x46pbz{background-color:#35e0e826;border-color:#35e0e84d;color:#35e0e8}.copy-defaults-btn.svelte-1x46pbz:hover:not(:disabled){background-color:#35e0e84d}.apply-btn.svelte-1x46pbz,.apply-btn.svelte-1x46pbz:hover{background-color:#35e0e8;color:#0b1215}.clear-btn.svelte-1x46pbz{border-color:#35e0e81f}.ph-xp-fill.svelte-da3zva{background-image:linear-gradient(to right,#ff6a0b,#35e0e8)}.survey-notification.svelte-1u0qxrf{background-image:linear-gradient(135deg,#000000f2,#070c0ffa)}.answer-btn.svelte-1u0qxrf{border-color:#35e0e81f}.icon-btn.list.svelte-hk8nq9{background-color:#35e0e8;color:#0b1215}.card-title.svelte-1k16b2z,.view-title.svelte-1k16b2z{color:#35e0e8}.trade-item.svelte-z9tzua,.trade-item-empty.svelte-z9tzua{border-color:#35e0e81f}.bm-card.svelte-dbcods{background-color:#070c0f}.bm-card-icon.svelte-dbcods{border-color:#35e0e847}.bm-locked-btn.svelte-dbcods{background-color:#111b1f}.modal-content.svelte-dbcods{background-color:#111b1f;border-color:#35e0e81f}.price-row.total.svelte-dbcods{border-top-color:#35e0e81f}.sma-dialog.svelte-1veg8cv{background-color:#151f24}.sma-header.svelte-1veg8cv{background-color:#111b1f;border-bottom-color:#35e0e81f}.sma-header-icon.svelte-1veg8cv{color:#35e0e8}.sma-rules.svelte-1veg8cv{background-color:#111b1f;border-color:#35e0e81f}.sma-input.svelte-1veg8cv{background-color:#0b1215;border-color:#35e0e81f}.sma-input.svelte-1veg8cv:focus{border-color:#35e0e8}.sma-map.svelte-1veg8cv{border-color:#35e0e81f}.sma-map.active.svelte-1veg8cv{border-color:#35e0e8;color:#35e0e8}.sma-footer.svelte-1veg8cv{border-top-color:#35e0e81f;background-color:#111b1f}.sma-secondary.svelte-1veg8cv{border-color:#35e0e81f}.sma-primary.svelte-1veg8cv{background-color:#35e0e8;color:#0b1215}.usernames-col.svelte-27udiy{border-color:#35e0e81f}.col-header.svelte-27udiy{border-bottom-color:#35e0e81f}.username-row.svelte-27udiy{border-color:#35e0e81f}.username-row.active.svelte-27udiy{border-color:#35e0e8}.leave-note.svelte-27udiy{border-left-color:#35e0e8}.username-active.svelte-27udiy{color:#35e0e8}#menuWindow.eterno .store-tabs.svelte-v85byk{background-color:#111b1fad}.store-tab.svelte-v85byk:hover,.store-tab-active.svelte-v85byk,.store-tab-active.svelte-v85byk:hover{border-bottom-color:#35e0e847}.register-notification.svelte-t1w66d{background-image:linear-gradient(135deg,#000000e6,#070c0ff2)}.table.svelte-12kndpz th.svelte-12kndpz,.table.svelte-12kndpz td.svelte-12kndpz{border-bottom-color:#35e0e81f}.pagination.svelte-12kndpz{border-top-color:#35e0e81f}.pagination-btn.svelte-12kndpz{background-color:#35e0e8;color:#0b1215}.pagination-btn.svelte-12kndpz:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.loading-spinner.svelte-1tteuk0{border-color:#35e0e81f}.load-more-btn.svelte-1tteuk0{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-1tteuk0:hover{background-color:#35e0e84d}.load-more-btn.svelte-1tteuk0:active{background-color:#35e0e866}.modal-content.svelte-1k428dj{background-color:#111b1f;border-color:#35e0e81f}.st-root.svelte-kqehnu{background-color:#151f24}.st-header.svelte-kqehnu{border-bottom-color:#35e0e81f;background-color:#111b1f}.st-back.svelte-kqehnu{border-color:#35e0e81f}.st-header-icon.svelte-kqehnu{color:#35e0e8}.st-row.svelte-kqehnu{background-color:#111b1f;border-color:#35e0e81f}.st-row.svelte-kqehnu:hover{background-color:#151f24}.st-invite.svelte-kqehnu:hover{background-color:#111b1f}.st-mini.svelte-kqehnu{border-color:#35e0e81f}.st-section-title.svelte-kqehnu{color:#35e0e8;border-top-color:#35e0e81f}.st-input.svelte-kqehnu{background-color:#0b1215;border-color:#35e0e81f}.st-input.svelte-kqehnu:focus{border-color:#35e0e8}.st-primary.svelte-kqehnu{background-color:#35e0e8;color:#0b1215}.card-title.svelte-raovk7,.view-title.svelte-raovk7{color:#35e0e8}.profile-detail-root.svelte-1hghrmf{background-color:#151f24}.profile-detail-header-bar.svelte-1hghrmf{border-bottom-color:#35e0e81f;background-color:#111b1f}.profile-detail-back.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-header-icon.svelte-1hghrmf{color:#35e0e8}.profile-detail-identity.svelte-1hghrmf,.profile-detail-avatar.svelte-1hghrmf{background-color:#111b1f;border-color:#35e0e81f}.profile-detail-online-dot.svelte-1hghrmf{background-color:#24343a;border-color:#35e0e81f}.profile-detail-creation-thumb.svelte-1hghrmf{background-color:#0b1215}.profile-detail-clan.svelte-1hghrmf{color:#35e0e8}.profile-detail-info-row.svelte-1hghrmf{border-top-color:#35e0e81f}.profile-detail-follow-box.svelte-1hghrmf{background-color:#111b1f}.profile-detail-follow-box.svelte-1hghrmf:hover{background-color:#151f24}.profile-detail-action.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-action.active.svelte-1hghrmf{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.profile-detail-action.active.svelte-1hghrmf i.svelte-1hghrmf{color:#35e0e8}.profile-detail-xp-strip.svelte-1hghrmf{border-top-color:#35e0e81f}.profile-detail-level-badge.svelte-1hghrmf,.profile-detail-xp-fill.svelte-1hghrmf{background-color:#35e0e8;color:#0b1215}.profile-detail-stat.svelte-1hghrmf,.profile-detail-class.svelte-1hghrmf,.profile-detail-raid-row.svelte-1hghrmf{background-color:#0b1215;border-color:#35e0e81f}.profile-detail-sales-panel.svelte-1hghrmf,.profile-detail-badges-panel.svelte-1hghrmf,.profile-detail-creations-panel.svelte-1hghrmf{background-color:#111b1f;border-color:#35e0e81f}.profile-detail-section-header.svelte-1hghrmf,.profile-detail-sales-header.svelte-1hghrmf{color:#35e0e8}.profile-detail-range-btn.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-range-btn.active.svelte-1hghrmf{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.profile-detail-listing-card.svelte-1hghrmf{background-color:#0b1215}.profile-detail-listing-card.svelte-1hghrmf:hover{background-color:#111b1f}.profile-detail-listing-thumb.svelte-1hghrmf{background-color:#070c0f}.profile-detail-title-item.svelte-1hghrmf,.profile-detail-badge-item.svelte-1hghrmf{background-color:#111b1f}.profile-detail-creation-card.svelte-1hghrmf{background-color:#0b1215}.profile-detail-creation-card.svelte-1hghrmf:hover{background-color:#111b1f}.modal-content.svelte-1ugt6n9{background-color:#111b1f;border-color:#35e0e81f}.section-title.svelte-awmvtb .material-icons.svelte-awmvtb{color:#35e0e8}.sound-info.svelte-awmvtb{border-color:#35e0e81f}.btn-replace.svelte-awmvtb{background-color:#35e0e8cc}.btn-replace.svelte-awmvtb:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.item-preview.svelte-1lii2o,.kid-display-container.svelte-lbi007{border-color:#35e0e81f}.kid-display-benefits.svelte-lbi007 h3.svelte-lbi007:after{background-color:#35e0e8;color:#0b1215}.partnership-info.svelte-lbi007{background-color:#35e0e81a;border-left-color:#35e0e8}.sgNode.svelte-wbsbny{background-color:#0b1215f5;border-color:#35e0e81f}.sgNode.selected.svelte-wbsbny{border-color:#35e0e8;box-shadow:0 0 0 1px #35e0e8,0 2px 10px #00000073}.sgNode.isOutput.svelte-wbsbny .sgNodeHeader.svelte-wbsbny{background-color:#35e0e840}.sgNodeHeader.svelte-wbsbny{border-bottom-color:#35e0e81f}.sgSelect.svelte-wbsbny,.sgText.svelte-wbsbny{border-color:#35e0e81f}.sgSelect.svelte-wbsbny option.svelte-wbsbny{background-color:#0b1215}.sgSelect.svelte-wbsbny:focus,.sgText.svelte-wbsbny:focus{border-color:#35e0e8}.sgCheck.svelte-wbsbny:focus-visible{outline-color:#35e0e8}.sgUnset.svelte-wbsbny{border-color:#35e0e81f}.sgUnset.svelte-wbsbny:hover:not(:disabled){border-color:#35e0e847}.sgUnset.svelte-wbsbny:focus-visible{outline-color:#35e0e8}.simple-tabs.svelte-1oqd18e{border-bottom-color:#35e0e81f}.simple-tab-active.svelte-1oqd18e{border-bottom-color:#35e0e8}.simple-tab-active.svelte-1oqd18e .simple-tab-icon.svelte-1oqd18e,.simple-tab-active.svelte-1oqd18e .simple-tab-label.svelte-1oqd18e{color:#35e0e8}.load-more-button.svelte-23mnz9{background-color:#35e0e833;border-color:#35e0e880;color:#35e0e8}.load-more-button.svelte-23mnz9:hover{background-color:#35e0e84d}.loading-spinner.svelte-gh77t9{border-color:#35e0e81f;border-top-color:#35e0e847}.retry-button.svelte-gh77t9{background-color:#35e0e8;color:#0b1215}.filter-input.svelte-1rpti7l{border-color:#35e0e84d}.filter-input.svelte-1rpti7l:focus{border-color:#35e0e8}.spin-promo-badge.svelte-5s5opu{border-color:#35e0e847}.no-offer-container.svelte-m5s1iy{background-color:#070c0fcc}.refresh-button.svelte-m5s1iy{background-image:linear-gradient(135deg,#ff5722,#ff9800,#35e0e8);border-color:#35e0e81f}.refresh-button.svelte-m5s1iy:hover:not(:disabled){border-color:#35e0e847}.optin__hero-fade.svelte-ga1m1g{background-image:linear-gradient(to top,#070c0ff2,#14141400 45%)}.report-root.svelte-18p16wl{background-color:#151f24}.report-header.svelte-18p16wl{border-bottom-color:#35e0e81f;background-color:#111b1f}.report-back.svelte-18p16wl{border-color:#35e0e81f}.report-input.svelte-18p16wl{background-color:#0b1215;border-color:#35e0e81f}.report-done.svelte-18p16wl{border-color:#35e0e81f}.trade-window.svelte-kfskmv{background-color:#151f24}.trade-message.svelte-kfskmv{border-color:#35e0e81f}.trade-message.svelte-kfskmv:focus{border-color:#35e0e81f}.trade-submit.disabled.svelte-kfskmv{background-color:#1d2c32}.profile-header.svelte-18dbnt3{border-bottom-color:#35e0e81f}.dynamic-shop-item.svelte-dif8c,.dynamic-shop-item.svelte-dif8c:hover,.dynamic-row.svelte-dif8c{border-color:#35e0e81f}.dynamic-row.svelte-dif8c:hover{border-color:#35e0e847}.next-step-hint.svelte-dif8c{color:#35e0e8}.dyn-buy-button.svelte-dif8c{border-color:#35e0e81f}.dyn-buy-button.virtual.svelte-dif8c{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);box-shadow:0 4px 12px #35e0e84d,0 2px 4px #0003,inset 0 1px #fff3}.dyn-buy-button.svelte-dif8c:hover:not(:disabled){border-color:#35e0e81f}.dyn-buy-button.svelte-dif8c:disabled{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.craft-recipe-card.svelte-ggnigm{background-color:#070c0f}.craft-icon.svelte-ggnigm,.craft-item-req.svelte-ggnigm{border-color:#35e0e847}.craft-item-req.missing.svelte-ggnigm{border-color:#35e0e847!important}.craft-timer.svelte-ggnigm{background-color:#151f24}.item-wrapper.selected.svelte-18k2d4k{box-shadow:0 0 0 2px #35e0e8}.section-title.svelte-gygf75 .material-icons.svelte-gygf75{color:#35e0e8}.btn-replace.svelte-gygf75{background-color:#35e0e8cc}.btn-replace.svelte-gygf75:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.highlight-name.svelte-1w0uz1r{background-color:#35e0e81a;border-color:#35e0e84d}.logo-image.svelte-1w0uz1r,.banner-color-swatch.svelte-1w0uz1r,.swatch.svelte-1w0uz1r,.swatch-fill.svelte-1w0uz1r,.text-notification.svelte-nrigjp,.share-btn.svelte-1524ito{border-color:#35e0e81f}.bubble-row.sent.svelte-jj9ljg .bubble.svelte-jj9ljg{background-color:#35e0e8;color:#0b1215}.quantity-button.svelte-jsgxg6:disabled{background-color:#24343a;border-color:#35e0e81f}.section-title.svelte-1rov8jm .material-icons.svelte-1rov8jm{color:#35e0e8}.tool-btn.svelte-1rov8jm,.attach-btn.svelte-1rov8jm{border-color:#35e0e81f}.tool-btn.active.svelte-1rov8jm{border-color:#35e0e8;background-color:#35e0e840}.fields.svelte-1rov8jm input[type=number].svelte-1rov8jm,.fields.svelte-1rov8jm select.svelte-1rov8jm,.fields.svelte-1rov8jm input[type=color].svelte-1rov8jm{border-color:#35e0e81f}.window-header.svelte-4fhlo6{border-bottom-color:#35e0e81f;background-color:#111b1f}.window-header-icon.svelte-4fhlo6,.section-title.svelte-wfs5t6 .material-icons.svelte-wfs5t6{color:#35e0e8}.form-select.svelte-wfs5t6{border-color:#35e0e81f}.form-select.svelte-wfs5t6:focus{border-color:#35e0e8}.form-select.svelte-wfs5t6 option.svelte-wfs5t6{background-color:#0b1215}.dye-color-input.svelte-wfs5t6{border-color:#35e0e81f}.dye-opacity-slider.svelte-wfs5t6::-webkit-slider-thumb{background-color:#35e0e8;border-color:#35e0e81f;color:#0b1215}.form-input.svelte-iy81sy,.form-select.svelte-iy81sy{border-color:#35e0e81f}.form-input.svelte-iy81sy:focus,.form-select.svelte-iy81sy:focus{border-color:#35e0e8}.form-select.svelte-iy81sy option.svelte-iy81sy{background-color:#0b1215}.add-all-button.svelte-1rj22es:disabled{background-color:#24343a;border-color:#35e0e81f}.lottery-window.theme-easter.svelte-1rj22es,.theme-easter.svelte-1rj22es .title-separator.svelte-1rj22es,.theme-easter.svelte-1rj22es .cost-column.themed-box.svelte-1rj22es{outline-color:#35e0e81f}.lottery-window.theme-neutral.svelte-1rj22es:after{border-color:#35e0e81f}.theme-neutral.svelte-1rj22es .draw-timer.svelte-1rj22es{border-color:#35e0e81f;background-color:#182429a6}.theme-neutral.svelte-1rj22es .cost-column.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .grand-prize-container.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .additional-prizes-box.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .last-draw-winners.themed-box.svelte-1rj22es{border-color:#35e0e81f;background-color:#18242980}.painted-badge-swatch.svelte-n0vhtc,.painted-inline-swatch.svelte-n0vhtc{border-color:#35e0e847}.milestone-number.svelte-6hxhl0{background-color:#182429}.milestone-bonus.svelte-6hxhl0{background-color:#151f24}.milestone-bonus.claimable.svelte-6hxhl0{background-color:#182429}.progression-summary.svelte-6hxhl0{border-top-color:#35e0e81f}.progression-details.svelte-6hxhl0{border-color:#35e0e81f}.offer-holder.svelte-1agthf7,.offer-holder.svelte-1agthf7:hover{background-color:#111b1f}.offer-name.svelte-1agthf7{color:#35e0e8}.filter-input.svelte-49w24t,.filter-select.svelte-49w24t{border-color:#35e0e84d}.filter-input.svelte-49w24t:focus,.filter-select.svelte-49w24t:focus{border-color:#35e0e8}.email-change-section.svelte-126q2op{border-top-color:#35e0e81f}.change-email-btn.svelte-126q2op{border-color:#35e0e8}.sidebar-tab.svelte-berov0{background-color:#151f24}.sidebar-tab.svelte-berov0:hover,.sidebar-tab.active.svelte-berov0,.sidebar-tab-badge.svelte-berov0{background-color:#35e0e8;color:#0b1215}.items-detail-root.svelte-dmu4q2{background-color:#151f24}.items-detail-header-bar.svelte-dmu4q2{border-bottom-color:#35e0e81f;background-color:#111b1f}.items-detail-back.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-header-icon.svelte-dmu4q2{color:#35e0e8}.items-detail-header-btn.svelte-dmu4q2,.preview-action-btn.svelte-dmu4q2{border-color:#35e0e81f}.preview-action-btn.svelte-dmu4q2:hover{border-color:#35e0e847}.preview-action-btn.active.svelte-dmu4q2{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.items-detail-wear-slider.svelte-dmu4q2,.items-detail-instance-overlay.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-paint-swatch.svelte-dmu4q2{border-color:#35e0e847}.items-detail-tabs-panel.svelte-dmu4q2{background-color:#111b1f;border-color:#35e0e81f}.items-detail-creator-link.svelte-dmu4q2{color:#35e0e8}.items-detail-stats-section.svelte-dmu4q2{border-top-color:#35e0e81f}.items-detail-stats-header.svelte-dmu4q2{color:#35e0e8}.items-detail-range-btn.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-range-btn.active.svelte-dmu4q2{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.items-detail-owner-row.svelte-dmu4q2{border-bottom-color:#35e0e81f}.items-detail-owner-name.svelte-dmu4q2:hover{color:#35e0e8}.items-detail-instance-table.svelte-dmu4q2 th.svelte-dmu4q2{background-color:#111b1f;border-bottom-color:#35e0e81f}.items-detail-instance-table.svelte-dmu4q2 td.svelte-dmu4q2,.items-detail-listing-row.svelte-dmu4q2{border-bottom-color:#35e0e81f}.items-detail-listing-seller.svelte-dmu4q2:hover,.no-clan-title.svelte-51j5cz,.clan-benefits.svelte-51j5cz h3.svelte-51j5cz{color:#35e0e8}.clan-benefits.svelte-51j5cz li.svelte-51j5cz:before{color:#35e0e8}.map-filter-select.svelte-51j5cz{border-color:#35e0e866}.map-filter-select.svelte-51j5cz:hover{border-color:#35e0e8}.map-filter-select.svelte-51j5cz:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.section-title.svelte-51j5cz{color:#35e0e8;border-left-color:#35e0e8}.day-arrow.svelte-51j5cz{border-color:#35e0e866;color:#35e0e8}.day-arrow.svelte-51j5cz:hover:not(:disabled){background-color:#35e0e833;border-color:#35e0e8}.day-input.svelte-51j5cz{border-color:#35e0e866}.day-input.svelte-51j5cz:focus{border-color:#35e0e8}.view-all-btn.svelte-51j5cz{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.view-all-btn.svelte-51j5cz:hover{background-color:#35e0e84d}.page-btn.svelte-51j5cz{background-color:#35e0e833;border-color:#35e0e866}.historical-day.svelte-51j5cz{border-color:#35e0e81f}.day-header.svelte-51j5cz{border-bottom-color:#35e0e81f}.day-label.svelte-51j5cz{color:#35e0e8}.clan-side.comparison-clan.no-comparison.svelte-51j5cz,.clan-side.svelte-51j5cz .clan-logo-small.svelte-51j5cz{border-color:#35e0e81f}.stat-row.svelte-51j5cz{border-bottom-color:#35e0e81f}.no-participation-title.svelte-51j5cz,.eligible-maps.svelte-51j5cz h3.svelte-51j5cz{color:#35e0e8}.eligible-maps.svelte-51j5cz li.svelte-51j5cz{background-color:#35e0e81a;border-color:#35e0e84d}.game-announcement.svelte-1m80xxc{border-color:#35e0e81f}.game-announcement.svelte-1m80xxc:before{border-bottom-color:#35e0e847}.ga-bundle.svelte-1m80xxc{border-color:#35e0e81f}.ga-bundle.svelte-1m80xxc:hover,.ga-action-btn.svelte-1m80xxc,.ga-action-btn.svelte-1m80xxc:hover,.ga-action-btn.disabled.svelte-1m80xxc:hover{border-color:#35e0e847}.login-button.svelte-16z1lxi{background-color:#070c0f;border-color:#35e0e847}.terms-privacy-notice.svelte-16z1lxi a.svelte-16z1lxi{color:#35e0e8}.item-wrapper.selected.svelte-zhgogl{box-shadow:0 0 0 2px #35e0e8}.loading-spinner.svelte-zhgogl{border-color:#35e0e81f}.load-more-btn.svelte-zhgogl{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-zhgogl:hover{background-color:#35e0e84d}.load-more-btn.svelte-zhgogl:active{background-color:#35e0e866}.tab.svelte-1o3qul6:hover,.tab-active.svelte-1o3qul6,.tab-active.svelte-1o3qul6:hover{border-bottom-color:#35e0e847}.trading-column-header.svelte-1r9fijr{border-bottom-color:#35e0e81f}.confirm-box.svelte-1r9fijr,.start-box.svelte-1r9fijr{background-color:#151f24;border-color:#35e0e81f}.start-input.svelte-1r9fijr{border-color:#35e0e81f}.start-input.svelte-1r9fijr:focus{border-color:#35e0e81f}.section-title.svelte-4e4ust .material-icons.svelte-4e4ust{color:#35e0e8}.texture-settings.svelte-4e4ust{border-color:#35e0e81f}.toggle-switch.svelte-4e4ust input:checked+.slider.svelte-4e4ust{background-color:#35e0e8;color:#0b1215}.form-select.svelte-4e4ust{border-color:#35e0e81f}.form-select.svelte-4e4ust:focus{border-color:#35e0e8}.form-select.svelte-4e4ust option.svelte-4e4ust{background-color:#0b1215}.texture-upload-item.svelte-4e4ust{border-color:#35e0e81f}.uploading-badge.svelte-4e4ust{background-color:#35e0e8cc}.texture-image.svelte-4e4ust{border-color:#35e0e81f}.btn-replace.svelte-4e4ust{background-color:#35e0e8cc}.btn-replace.svelte-4e4ust:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.item-wrapper.selected.svelte-1l3mtrv{box-shadow:0 0 0 2px #35e0e8}.news-item.svelte-1ult4vg{border-left-color:#35e0e8}.news-item.svelte-1ult4vg a{color:#35e0e8}.menu-container.svelte-mqcul7{background-color:#070c0f}.menu-item.active.svelte-mqcul7{border-bottom-color:#35e0e847}button.svelte-mqcul7{background-color:#35e0e8;color:#0b1215}button.svelte-mqcul7:hover{box-shadow:0 0 60px #35e0e875}.start-button.svelte-mqcul7{background-color:#35e0e8;color:#0b1215}.start-button[disabled].svelte-mqcul7{background-color:#1d2c32}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7{background-color:#0b1215;border-color:#35e0e8;box-shadow:0 0 #35e0e833}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7:hover{box-shadow:0 0 0 2px #35e0e833}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7:checked{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.paint-container.svelte-10qrqvt{background-color:#151f24bf}.slider-arrow.svelte-10qrqvt{border-color:#35e0e81f}.slider-arrow.left.svelte-10qrqvt .slider-arrow-icon.svelte-10qrqvt{border-right-color:#35e0e847}.slider-arrow.right.svelte-10qrqvt .slider-arrow-icon.svelte-10qrqvt{border-left-color:#35e0e847}.swatch.svelte-10qrqvt{border-color:#35e0e81f}.swatch.locked.selected.svelte-10qrqvt{border-color:#35e0e847}.swatch-fill.svelte-10qrqvt,.btn.svelte-10qrqvt{border-color:#35e0e81f}.inventory-filter.svelte-ga3en0{background-color:#111b1f;border-color:#35e0e81f}.filter-header.svelte-ga3en0{background-color:#111b1f}.reset-btn.svelte-ga3en0,.reset-btn.svelte-ga3en0:hover,.expand-btn.svelte-ga3en0,.expand-btn.svelte-ga3en0:hover{background-color:#24343a}.filter-content.svelte-ga3en0{border-top-color:#35e0e81f}.search-input.svelte-ga3en0,.season-select.svelte-ga3en0,.sort-select.svelte-ga3en0,.category-select.svelte-ga3en0{background-color:#151f24;border-color:#35e0e81f}.filter-tabs.svelte-ga3en0{border-bottom-color:#35e0e81f}.filter-tab.svelte-ga3en0{background-color:#151f24}.filter-tab.svelte-ga3en0:hover{background-color:#182429}.filter-tab.active.svelte-ga3en0{background-color:#35e0e8;color:#0b1215}.toggle-all-btn.svelte-ga3en0{background-color:#1d2c32}.toggle-all-btn.svelte-ga3en0:hover{background-color:#24343a}.filter-panel.svelte-ga3en0{background-color:#111b1f}.filter-item-wrapper.svelte-ga3en0{border-color:#35e0e81f}.filter-item.svelte-ga3en0:hover{background-color:#151f24}.only-btn.svelte-ga3en0{background-color:#1d2c32}.only-btn.svelte-ga3en0:hover{background-color:#24343a}.profile-search-form.svelte-fo44ss{background-color:#0b1215;border-color:#35e0e81f}.profile-search-form.svelte-fo44ss:focus-within{border-color:#35e0e8}.follow-root.svelte-1ef5zjv{background-color:#151f24}.follow-header.svelte-1ef5zjv{border-bottom-color:#35e0e81f;background-color:#111b1f}.follow-back.svelte-1ef5zjv{border-color:#35e0e81f}.follow-header-icon.svelte-1ef5zjv{color:#35e0e8}.follow-tabs.svelte-1ef5zjv{border-bottom-color:#35e0e81f;background-color:#111b1f}.follow-tab.active.svelte-1ef5zjv{border-bottom-color:#35e0e8}.follow-row.svelte-1ef5zjv{background-color:#0b1215cc;border-color:#35e0e81f}.follow-btn.svelte-1ef5zjv{background-color:#35e0e8;color:#0b1215}.follow-btn.following.svelte-1ef5zjv,.price-tag.svelte-1q06uv7{border-color:#35e0e81f}.buy-button.svelte-1q06uv7:disabled{background-color:#24343a}.buy-button.svelte-1q06uv7:disabled:hover{background-color:#24343a}.io-code-display.svelte-owjkr{border-color:#35e0e81f}.music-player.svelte-1ei19qi{background-color:#0b1215f2}.music-btn.svelte-1ei19qi{border-color:#35e0e847}.section-title.svelte-16sjsp2 .material-icons.svelte-16sjsp2{color:#35e0e8}.toggle-switch.svelte-16sjsp2 input:checked+.slider.svelte-16sjsp2{background-color:#35e0e8;color:#0b1215}.form-select.svelte-16sjsp2,.form-input.svelte-16sjsp2{border-color:#35e0e81f}.form-select.svelte-16sjsp2:focus,.form-input.svelte-16sjsp2:focus{border-color:#35e0e8}.form-select.svelte-16sjsp2 option.svelte-16sjsp2{background-color:#0b1215}.texture-upload-item.svelte-16sjsp2{border-color:#35e0e81f}.uploading-badge.svelte-16sjsp2{background-color:#35e0e8cc}.texture-image.svelte-16sjsp2,.post-item-card.svelte-10yvzvw,.post-item-card.svelte-10yvzvw:hover{border-color:#35e0e81f}.post-content-thumb.svelte-10yvzvw{background-color:#0b1215}.post-content-action.svelte-10yvzvw{color:#35e0e8}.post-follow-btn.svelte-10yvzvw{background-color:#35e0e8;color:#0b1215}.post-follow-btn.svelte-10yvzvw:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.postResRo.svelte-10yvzvw,.postResRoD.svelte-10yvzvw{border-bottom-color:#35e0e81f}.post-text.svelte-10yvzvw a{color:#35e0e8}.post-footer.svelte-10yvzvw{border-top-color:#35e0e81f}.vote-btn.svelte-10yvzvw{border-color:#35e0e81f}.vote-btn.svelte-10yvzvw:hover:not(:disabled){border-color:#35e0e847}.vote-btn.svelte-10yvzvw:disabled{border-color:#35e0e81f}.vote-btn-done.svelte-10yvzvw{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.vote-btn-done.svelte-10yvzvw:hover:not(:disabled){background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.owned-count-overlay.svelte-9ff17r{border-color:#35e0e81f}.section-title.svelte-3rvofx .material-icons.svelte-3rvofx{color:#35e0e8}.form-textarea.svelte-3rvofx{border-color:#35e0e81f}.form-textarea.svelte-3rvofx:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.automatic-attributes.svelte-3rvofx{border-color:#35e0e81f}.automatic-attributes-header.svelte-3rvofx{background-color:#35e0e81a;border-bottom-color:#35e0e81f}.automatic-attributes-title.svelte-3rvofx .material-icons.svelte-3rvofx{color:#35e0e8}.loot-updated-name.svelte-1ydnong{color:var(--highlight-color, rgb(53, 224, 232))}.popup.svelte-1wz7ymp{background-color:#151f24}.popup.translucent.svelte-1wz7ymp{background-color:#151f24bf}.popup.slim-border.svelte-1wz7ymp{border-color:#35e0e81f}.sort-select.svelte-111gya4{background-color:#151f24;border-color:#35e0e81f}.sort-select.svelte-111gya4:hover{border-color:#35e0e847}.sort-select.svelte-111gya4:focus{border-color:#35e0e8}.searching-indicator.svelte-111gya4{color:#35e0e8}.searching-indicator.svelte-111gya4:before{border-color:#35e0e8}.clan-view-root.svelte-5j94nj{background-color:#151f24}.clan-view-header-bar.svelte-5j94nj{border-bottom-color:#35e0e81f;background-color:#111b1f}.clan-view-back.svelte-5j94nj{border-color:#35e0e81f}.clan-view-header-icon.svelte-5j94nj{color:#35e0e8}.clan-view-identity.svelte-5j94nj{background-color:#111b1f;border-color:#35e0e81f}.clan-view-logo.svelte-5j94nj,.clan-view-logo-placeholder.svelte-5j94nj{background-color:#111b1f}.clan-view-info.svelte-5j94nj{border-top-color:#35e0e81f}.clan-view-link.svelte-5j94nj{color:#35e0e8}.clan-view-role-header.svelte-5j94nj{color:#35e0e8;border-bottom-color:#35e0e81f}.social-search-input.svelte-1dyc40r{background-color:#0b1215;border-color:#35e0e81f}.social-search-input.svelte-1dyc40r:focus{border-color:#35e0e8}.social-search-btn.svelte-1dyc40r{background-color:#0b1215;border-color:#35e0e81f}.social-search-btn.svelte-1dyc40r:hover{background-color:#111b1f;border-color:#35e0e81f}.social-compose-btn.svelte-1dyc40r,.social-compose-btn.svelte-1dyc40r:hover{background-color:#35e0e8;color:#0b1215}.item-detail-container.svelte-olnzsm{border-left-color:#35e0e81f}.item-detail-header.svelte-olnzsm{border-bottom-color:#35e0e81f}.item-showcase-section.svelte-olnzsm{border-right-color:#35e0e81f}.ownership-count.svelte-olnzsm,.full-details-btn.svelte-olnzsm{border-color:#35e0e81f}.tabs-section.svelte-olnzsm{border-bottom-color:#35e0e81f}.loading-spinner.svelte-olnzsm{border-color:#35e0e81f}.load-more-btn.svelte-olnzsm{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-olnzsm:hover{background-color:#35e0e84d}.load-more-btn.svelte-olnzsm:active{background-color:#35e0e866}.stats-controls.svelte-olnzsm{border-bottom-color:#35e0e81f}.days-back-select.svelte-olnzsm{border-color:#35e0e81f}.days-back-select.svelte-olnzsm:hover:not(:disabled){border-color:#35e0e81f}.days-back-select.svelte-olnzsm:focus{border-color:#35e0e8}.mission-briefing.svelte-1849bws{background-image:linear-gradient(135deg,#0b1215,#111b1f)}.mission-header.svelte-1849bws{background-image:linear-gradient(135deg,#000,#0b1215)}.abort-btn.svelte-1849bws{background-image:linear-gradient(135deg,#151f24,#1d2c32);border-color:#35e0e847}.abort-btn.svelte-1849bws:hover{background-image:linear-gradient(135deg,#1d2c32,#24343a)}.deploy-btn.svelte-1849bws{border-color:#35e0e8}th.svelte-1enb567{color:#35e0e8}td.svelte-1enb567{border-bottom-color:#35e0e81f}.page-button.svelte-1enb567{border-color:#35e0e8}.page-button.svelte-1enb567:hover:not(:disabled){background-color:#35e0e833}.page-button.svelte-1enb567:disabled{border-color:#35e0e84d}.page-indicator.svelte-1enb567{color:#35e0e8}.item-display-container.svelte-1p13km7{border-color:#35e0e81f}.section-title.svelte-sr5bk2 .material-icons.svelte-sr5bk2{color:#35e0e8}.tool-btn.svelte-sr5bk2,.attach-btn.svelte-sr5bk2{border-color:#35e0e81f}.tool-btn.active.svelte-sr5bk2{border-color:#35e0e8;background-color:#35e0e840}.fields.svelte-sr5bk2 input[type=number].svelte-sr5bk2{border-color:#35e0e81f}.wallet-root.svelte-l0gwpc{background-color:#151f24}.wallet-catalog-btn.svelte-l0gwpc{border-color:#35e0e81f}.currency-card.svelte-l0gwpc{background-image:linear-gradient(135deg,#111b1f,#182429);border-color:#35e0e81f}.items-grid.svelte-l0gwpc{background-color:#111b1f}.main-button.svelte-whnh40{background-color:#151f24;border-color:#35e0e81f}.main-button.svelte-whnh40:disabled,.main-button-disabled.svelte-whnh40{background-color:#0b1215}.main-button.svelte-whnh40:disabled:hover,.main-button-disabled.svelte-whnh40:hover{background-color:#0b1215}.main-button.svelte-whnh40:hover:not(:disabled):not(.main-button-disabled){background-color:#182429}.main-button-accept-secondary.svelte-whnh40{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.sort-btn.active.svelte-9t0md3{background-color:#35e0e833;color:#35e0e8;border-color:#35e0e8}.month-select.svelte-9t0md3 option.svelte-9t0md3{background-color:#0b1215}.section-title.svelte-1qb7o10 .material-icons.svelte-1qb7o10{color:#35e0e8}.paint-mode-btn.svelte-1qb7o10{border-color:#35e0e81f}.paint-mode-btn.svelte-1qb7o10:hover:not(:disabled){border-color:#35e0e847}.paint-mode-btn.active.svelte-1qb7o10{background-color:#35e0e826;border-color:#35e0e8;color:#35e0e8}.paint-color-input.svelte-1qb7o10{border-color:#35e0e81f}.paint-preview-base.svelte-1qb7o10{border-top-color:#35e0e81f}.preview-base-input.svelte-1qb7o10{border-color:#35e0e81f}.preview-base-input.svelte-1qb7o10:focus{border-color:#35e0e8}.preview-base-quick.svelte-1qb7o10{border-color:#35e0e81f}.preview-base-quick.svelte-1qb7o10:hover:not(:disabled){border-color:#35e0e8;color:#35e0e8}.buy-button.svelte-1ov1s5h{border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:hover:not(:disabled){border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:disabled{background-image:linear-gradient(135deg,#24343a,#1d2c32);border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:disabled:hover{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.ownership-count.svelte-kchhu3{border-color:#35e0e81f} +`});var Du,Fu=w(()=>{Du=`:root{--kute-cyan: #35e0e8;--kute-cyan-soft: rgba(53, 224, 232, .14);--kute-pink: #f5479b;--kute-pink-soft: rgba(245, 71, 155, .16);--kute-bg: #0b1215;--kute-panel: #111b1f;--kute-raised: #182429;--kute-line: rgba(53, 224, 232, .12);--kute-line-strong: rgba(53, 224, 232, .28);--kute-text: #eaf7f8;--kute-muted: rgba(234, 247, 248, .62);--kute-faint: rgba(234, 247, 248, .38);--kute-radius: 8px;--kute-radius-lg: 14px;--kute-paw: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23f5479b'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-paw-cyan: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%230b1215'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-ears: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 46 14'%3E%3Cpath fill='rgba(11,18,21,.78)' d='M1 14 9 1l8 13Zm28 0 8-13 8 13Z'/%3E%3Cpath fill='rgba(245,71,155,.7)' d='M5.5 14 9 7.5l3.5 6.5Zm28 0 3.5-6.5 3.5 6.5Z'/%3E%3C/svg%3E");--kute-paw-solid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%2335e0e8'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-grad: linear-gradient(90deg, var(--kute-cyan), var(--kute-pink));--div-black: rgba(11, 18, 21, .78);--div-grey: rgba(53, 224, 232, .07);--div-shadow: 0 2px 10px rgba(0, 0, 0, .5);--blue: var(--kute-cyan);--highlight-color: var(--kute-cyan);--highlight-hover-color: #5ce9ef;--card-bg-color: rgba(24, 36, 41, .7);--dark-bg-color: rgba(11, 18, 21, .5);--border-subtle: 1px solid var(--kute-line);--border-radius-sm: 6px;--border-radius-md: var(--kute-radius);--border-radius-lg: var(--kute-radius-lg);--box-shadow-lg: 0 18px 44px rgba(0, 0, 0, .6)}::selection{background:var(--kute-pink);color:#fff}a,a:visited{color:var(--kute-cyan)}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background-color:transparent;box-shadow:none}::-webkit-scrollbar-thumb{background:var(--kute-line-strong);border:3px solid transparent;border-radius:999px;background-clip:padding-box;box-shadow:none}::-webkit-scrollbar-thumb:hover{background-color:var(--kute-cyan)}#windowHolder.popupWin{background-color:#050a0cb8}#menuWindow.dark{background-color:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6,0 0 0 1px #0006}.settingsHeader{background-color:var(--kute-bg);border-bottom:1px solid var(--kute-line)}.setSugBox2{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);transition:background-color .15s,border-color .15s}.setSugBox2:hover{border-width:1px;background-color:var(--kute-raised);border-color:var(--kute-cyan)}.advancedSlider{background-color:#24343a;border-radius:999px}.advancedSlider:before{border-radius:50%;background:#fff var(--kute-paw) center / 20px no-repeat}input:checked+.advancedSlider{background-color:var(--kute-cyan)}input:checked+.advancedSlider:before{background-image:var(--kute-paw-cyan)}input:checked+.advancedSlider:after{color:var(--kute-bg)}.hostPresetBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px}.hostPresetBtn:hover{background-color:var(--kute-pink);color:#fff}#settingsTabLayout{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius);overflow:hidden}.settingTab{background-color:transparent;color:var(--kute-muted);border-bottom:3px solid transparent;transition:color .15s,background-color .15s}#menuWindow.dark .settingTab{color:var(--kute-muted)}.settingTab:hover{border-bottom:3px solid var(--kute-line-strong);background-color:var(--kute-cyan-soft)}#menuWindow.dark .settingTab:hover{color:var(--kute-text)}.dark .tabANew,.dark .tabANew:hover{border-bottom:3px solid var(--kute-cyan)!important;background-color:var(--kute-cyan-soft)}#menuWindow.dark .tabANew{color:var(--kute-cyan)}.setHed,.setHedS{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-left:3px solid var(--kute-cyan);border-radius:var(--kute-radius);transition:background-color .15s,border-color .15s}.setHed:hover,.setHedS:hover{background-color:#1d2c32;border-left-color:var(--kute-pink)}.setHed .plusOrMinus{color:var(--kute-cyan)}.setBodH{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.settName,.settNameSmall{border-bottom:1px solid var(--kute-line);color:var(--kute-muted)!important}.settNameIn:hover{background-color:var(--kute-cyan-soft)!important;color:var(--kute-text)!important}.settingsBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px;transition:background-color .15s,color .15s}#menuWindow.dark .settingsBtn{color:var(--kute-bg)}.settingsBtn:hover,#menuWindow.dark .settingsBtn:hover{background-color:var(--kute-pink);color:#fff}#settSearch,.inputGrey2,.sliderVal,#loadoutName,#loadoutSelect,#itemSearch{background:var(--kute-raised);color:var(--kute-text);border:1px solid var(--kute-line);border-radius:6px;outline:none;transition:border-color .15s}#settSearch:focus,.inputGrey2:focus,.sliderVal:focus,#loadoutName:focus,#loadoutSelect:focus{border-color:var(--kute-cyan)}#loadoutName{background:var(--kute-raised)!important;border:1px solid var(--kute-line)!important}.sliderVal{border-color:var(--kute-line-strong)!important}#settSearch::placeholder,#loadoutName::placeholder{color:var(--kute-faint)}.inputGrey2 option,#loadoutSelect option{background:var(--kute-panel);color:var(--kute-text)}#loadoutToolbar{background-color:var(--kute-panel);border-bottom:1px solid var(--kute-line)}.loadoutTab{background-color:transparent;transition:background-color .15s,color .15s}.loadoutTab:hover{background-color:var(--kute-cyan-soft)}.loadoutTabSel,.loadoutTabSel:hover{background-color:var(--kute-cyan-soft);border-bottom-color:var(--kute-cyan);color:var(--kute-cyan)!important}#charPreviewSlot{background:radial-gradient(circle at 50% 42%,rgba(53,224,232,.1),transparent 62%);border-right:1px solid var(--kute-line)}.custContainer,.custSubContainer{background-color:var(--kute-panel);border-color:var(--kute-line);box-shadow:none}.custContainer{border-radius:var(--kute-radius);transition:border-color .15s,background-color .15s}.custContainer.contCanSelect:hover{background-color:var(--kute-raised);border-color:var(--kute-cyan)}.custSubContainer{border-radius:0 var(--kute-radius) 0 var(--kute-radius)}.custClear{border-radius:6px}.custBack{background:var(--kute-raised);border-radius:6px}.custBack:hover{background:var(--kute-cyan-soft)}.classCard{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-radius:var(--kute-radius);overflow:hidden;transition:border-color .15s}.classCard:hover{border-color:var(--kute-cyan)}.classXPBar{background-color:var(--kute-bg)}.clsXPBarC{background-color:var(--kute-cyan)}.loadoutBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px}.loadoutBtn:hover{background-color:var(--kute-pink);color:#fff}.slider,.slider2{background-color:#24343a;border-radius:999px}.slider:before,.slider2:before{border-radius:50%;width:22px;background-color:#fff;background-image:var(--kute-paw);background-size:14px;background-position:center;background-repeat:no-repeat}.slider:before{left:5px}input:checked+.slider,input:checked+.slider2,input:checked+.sliderSml,input:checked+.sliderCent{background-color:var(--kute-cyan)}input:checked+.slider:before{transform:translate(28px);background-image:var(--kute-paw-cyan)}input:checked+.slider2:before{transform:translate(20px);background-image:var(--kute-paw-cyan)}input:focus+.slider,input:focus+.slider2,input:focus+.sliderSml{box-shadow:0 0 0 2px var(--kute-cyan-soft)}.sliderSml,.sliderCent{background-color:#24343a}.sliderM{background-color:#24343a;height:8px;border-radius:999px;margin-bottom:0}.sliderM::-webkit-slider-thumb{width:22px;height:22px;border-radius:50%;background:#fff var(--kute-paw) center / 14px no-repeat;box-shadow:0 0 0 3px var(--kute-cyan),0 2px 6px #00000080}#playerHeaderEl{background:var(--kute-grad) bottom / 100% 1px no-repeat,linear-gradient(#070c0feb,#070c0fbd)}.ph-item[class*=svelte-],.nav-item[class*=svelte-]{border-radius:12px;transition:background-color .15s}.ph-item[class*=svelte-]:hover,.nav-item[class*=svelte-]:hover{background-color:var(--kute-cyan-soft)}.nav-item[class*=svelte-] .material-icons,.nav-item[class*=svelte-] .material-icons-outlined{color:var(--kute-cyan)}#menuItemContainer .menuItem{position:relative;border-radius:10px;transition:transform .15s,background-color .15s}#menuItemContainer .menuItem:hover{background:linear-gradient(90deg,var(--kute-cyan-soft),transparent 85%);transform:translate(6px)}#menuItemContainer .menuItem:hover .menuItemTitle{color:var(--kute-cyan)}#menuItemContainer .menuItem:not(.bpItem):not(.dsItem):before{content:"";position:absolute;left:-18px;top:50%;width:14px;height:14px;background:var(--kute-paw-solid) center / contain no-repeat;opacity:0;transform:translate(-4px,-50%) rotate(-20deg);transition:opacity .15s,transform .15s;pointer-events:none}#menuItemContainer .menuItem:not(.bpItem):not(.dsItem):hover:before{opacity:1;transform:translateY(-50%) rotate(-20deg)}#menuItemContainer .menuItemIcon{color:var(--kute-cyan)}#menuItemContainer .sidebarDivider{background:linear-gradient(90deg,var(--kute-line-strong),transparent);border:0}@container not style(--kute-classic-menu: 1){#subLogoButtons>.actionCard{background:var(--kute-panel);border-color:rgba(var(--card-rgb),.45);border-radius:var(--kute-radius);box-shadow:none;transition:background-color .15s,border-color .15s}#subLogoButtons>.actionCard:hover{background:var(--kute-raised);border-color:rgb(var(--card-rgb))}#subLogoButtons>.actionCard .cardIcon{color:rgb(var(--card-rgb))}.popRailCard[class*=svelte-]{background:var(--kute-panel);border-color:var(--kute-line-strong);border-radius:var(--kute-radius);transition:background-color .15s,border-color .15s}.popRailCard[class*=svelte-]:hover{background:var(--kute-raised);border-color:var(--kute-cyan)}.popRailPlay[class*=svelte-]{color:var(--kute-cyan)}#customizeButton{border-radius:var(--kute-radius)}}.window-header[class*=svelte-],#loadoutToolbar,.profile-detail-header-bar[class*=svelte-],.instructionsHeader,.settingsHeader{background-image:var(--kute-grad);background-size:100% 1px;background-position:bottom;background-repeat:no-repeat}:is(#windowHolder,#popupHolder,#app) .button{border-radius:var(--kute-radius);background-color:#0b121599}:is(#windowHolder,#popupHolder,#app) .button:hover,:is(#windowHolder,#popupHolder,#app) .button:active{border-color:var(--kute-cyan)!important}:is(#windowHolder,#popupHolder,#app) .button:not([class*=buttonR]):not([class*=buttonG]):not([class*=buttonP]):not([class*=buttonO]):not([class*=buttonB]):not(:hover){border-color:var(--kute-line-strong)}#chatList{background-color:#0b12158c;border-radius:var(--kute-radius) var(--kute-radius) 0 0}#chatInputHolder{border-radius:0 0 var(--kute-radius) var(--kute-radius)}#chatInput{background-color:#182429cc;border:1px solid var(--kute-line);border-radius:6px}#chatInput:focus{border-color:var(--kute-cyan);outline:none}#instructionsUpdate{background:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6;overflow:hidden}.instructionsHeader,.instructionsTabs{background-color:var(--kute-panel);box-shadow:none}.instructionsHeader{border-bottom:1px solid var(--kute-line)}.instructionsTab{border-top:1px solid var(--kute-line);transition:background-color .15s,color .15s}.instructionsTab:hover{background-color:var(--kute-cyan-soft);border-color:var(--kute-line);color:var(--kute-cyan)}#ammoHolder,#bottomLeftPlayer,#timerHolder,.statIcon,#leaderboardHolder,#teamScores,#chatInputHolder{border-radius:var(--kute-radius)}#ammoHolder .greyInner,.statIcon .greyInner,#timerInner,#leaderContainer,#bottomLeftPlayerLeft,#bottomLeftPlayerRight,#bottomLeftTeamType,#bottomLeftTeamName,#bottomLeftHealthBar{border-radius:6px}#bottomLeftPlayerLeft{overflow:hidden}#ammoHolder,#bottomLeftPlayer{box-shadow:inset 0 -2px 0 var(--kute-cyan)}#bottomLeftPlayer{position:relative}#ammoHolder:before,#bottomLeftPlayer:before{content:"";position:absolute;top:-12px;width:46px;height:14px;background:var(--kute-ears) no-repeat center / contain;pointer-events:none}#ammoHolder:before{right:20px}#bottomLeftPlayer:before{left:19px}#reloadMsg{border-radius:6px}#ingameFPS,#pingText{color:var(--kute-cyan)}.bigMenTabs{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.bigMenTab:hover{border-bottom:3px solid var(--kute-line-strong)}.bigMenTabA,.bigMenTabA:hover{border-bottom:3px solid var(--kute-cyan);color:var(--kute-cyan)}#popupContent,#bundlePop,#premiumPop,#policePopC,#guidePopup,#chargeModalCard,#spinHistoryPop,.confPremiumPop,.vouchPop,.rankedPop,.promoPop,.pfpPop,.dropsPop,.accountCreatePop,.imagePop,.badgePop,.imageNewPop,.importPop,.disconnectPop,.eventPop,.bp-generic-pop,.bp-purchase-pop,.spinErrorPop,.charmErrorPop,.spinHistoryStatsPop,.loadingPop,.autoLoadPop,.editMapPop,.responsePop,.ticketPop,.dxp-pop,.abTestsPop,.registerGiftPop,.rankedQueueModal,.rankedMenuModal,.communityPopup,.tutorialPopup,.defaultModal,.krunkCupJoinModal,.krunkCupViewModal,.exchangeModal,.itemsModal,.moreKrunkerPopup,.infoPop,.contPop,.io-popup-container,.wallet-root[class*=svelte-]{background-color:var(--kute-bg);border-radius:var(--kute-radius-lg);box-shadow:0 0 0 1px var(--kute-line),0 24px 60px #000000a6}.twitchPop,.nftPop,.confPop,.clientExitPop,#confPurchItemPop,.metaPop,.polConfPop{border-color:var(--kute-line);border-radius:var(--kute-radius-lg)}.hostHeader,#stickyHostH,.imageListHeader,.imageListFooter,.spinHistoryHeader,.popHeader,.dropsPopHeader,.serverHeader,#itemSearchH,#bindsHeader,.tooltip2,.crftRcpeCrd,.bundleCrd,.bundle-card[class*=svelte-],.moreKrunkerOption[class*=svelte-],.items-grid[class*=svelte-],.filter-panel[class*=svelte-],.territory-map-container[class*=svelte-],.data-table[class*=svelte-] thead{background-color:var(--kute-panel)}#initLoader,.clsStatXPBar,.elo-progress-bar-bg{background-color:var(--kute-bg)}.featured-section[class*=svelte-],.stream-card[class*=svelte-],.emoji-panel[class*=svelte-],.verification-banner[class*=svelte-],.music-player[class*=svelte-],.market-card[class*=svelte-],.rank-popup-content{background-color:var(--kute-panel)}.hide-button[class*=svelte-],.kuteTopButton{background-color:var(--kute-raised)}.hide-button[class*=svelte-]:hover,.kuteTopButton:hover{background-color:#1d2c32}.contactsHeader{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-left:3px solid var(--kute-cyan);border-radius:var(--kute-radius)}.bpInfoBalloon,.bpInfoBalloon:after,.io-separator span{background-color:var(--kute-bg)}.bpClaimB,.bp-unlock-header,.io-button,.mapLICat,#tradeChatInput,.tradeChatItem,.main-button[class*=svelte-]{background-color:var(--kute-raised)}.io-button:hover,.mapLICat:hover,.main-button[class*=svelte-]:hover:not(:disabled):not(.main-button-disabled){background-color:#1d2c32}.main-button[class*=svelte-],.moreKrunkerOption[class*=svelte-],.territory-map-container[class*=svelte-],.territory-details-panel[class*=svelte-],.inventory-filter[class*=svelte-],.filter-item-wrapper[class*=svelte-]{border-color:var(--kute-line)}.moreKrunkerOption[class*=svelte-]:hover{border-color:var(--kute-cyan)}.inventory-filter[class*=svelte-],.filter-header[class*=svelte-]{background-color:var(--kute-panel)}.currency-card[class*=svelte-]{background:var(--kute-panel);border-color:var(--kute-line)}.search-input[class*=svelte-],.season-select[class*=svelte-],.sort-select[class*=svelte-],.category-select[class*=svelte-],.filter-tab[class*=svelte-],.filter-item[class*=svelte-]:hover,.reset-btn[class*=svelte-],.expand-btn[class*=svelte-],.toggle-all-btn[class*=svelte-],.only-btn[class*=svelte-]{background:var(--kute-raised);border-color:var(--kute-line)}.filter-tab[class*=svelte-]:hover,.reset-btn[class*=svelte-]:hover,.expand-btn[class*=svelte-]:hover,.toggle-all-btn[class*=svelte-]:hover,.only-btn[class*=svelte-]:hover{background:#1d2c32}.filter-tab.active[class*=svelte-]{background:var(--kute-cyan);color:var(--kute-bg)}.setSugBox,.viewAllUpdates,.bSliderBtn,.bundleSliderBtn,.dropsSliderBtn,.challHeadrI,.sub-tab-panel[class*=svelte-]{border-color:var(--kute-line-strong)}.challMapCrd:not(.chalCardH){border-color:var(--kute-line-strong)}.guideHeader,.guideSubH,.mailFrom,.speedRunItem,#hostActionH,#custStreakSelH{border-color:var(--kute-line)}.store-tabs[class*=svelte-],.tabs-container[class*=svelte-],#menuWindow.eterno .store-tabs[class*=svelte-]{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.store-tab[class*=svelte-]:hover,.tab[class*=svelte-]:hover{border-bottom-color:var(--kute-line-strong)}.store-tab-active[class*=svelte-],.store-tab-active[class*=svelte-]:hover,.tab-active[class*=svelte-],.tab-active[class*=svelte-]:hover,.tabHeader.selected{border-bottom-color:var(--kute-cyan);color:var(--kute-cyan)}#menuWindow.eterno{background-color:var(--kute-bg);border-color:var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6;animation:none}.followBut,#hostMenuBtn,.chargeModalBtn,.redVouchBtn,.searchBtn,.hostToggle,.subPassChg,.updDisN,#partnerProgB,#partnrUpBtn,#findGameBtn,.joinBtn,.openCollection,#spinMultiToggleBtn,.clanSubmitBtn,.main-button-accept-secondary[class*=svelte-]{background-color:var(--kute-cyan);border-color:var(--kute-cyan);color:var(--kute-bg)}input:checked+.optCheck{background-color:var(--kute-cyan)}.quickJoin,.followBack,.io-input-field:focus{border-color:var(--kute-cyan)}.io-section-header:after{background:var(--kute-cyan)}.counterBadge[class*=svelte-]{background:var(--kute-pink);color:#fff}.wallet-catalog-btn[class*=svelte-] i{color:var(--kute-cyan)}.stack-collapse-fab[class*=svelte-]{background:var(--kute-cyan)}.card-title[class*=svelte-],.view-title[class*=svelte-],.table-header[class*=svelte-],.no-clan-title[class*=svelte-],.no-participation-title[class*=svelte-],.clan-benefits[class*=svelte-] h3,.clan-benefits[class*=svelte-] li:before,.eligible-maps[class*=svelte-] h3,.day-label[class*=svelte-],.day-arrow[class*=svelte-],.view-all-btn[class*=svelte-]{color:var(--kute-cyan)}.section-title[class*=svelte-]{border-left-color:var(--kute-cyan);color:var(--kute-cyan)}.category-card[class*=svelte-],.map-filter-select[class*=svelte-],.day-arrow[class*=svelte-],.day-input[class*=svelte-],.data-table[class*=svelte-] thead tr{border-color:var(--kute-line-strong)}.category-card[class*=svelte-]:hover,.map-filter-select[class*=svelte-]:hover,.map-filter-select[class*=svelte-]:focus,.day-input[class*=svelte-]:focus{border-color:var(--kute-cyan)}.table-header.sortable.sort-asc[class*=svelte-]:after{border-bottom-color:var(--kute-cyan)}.table-header.sortable.sort-desc[class*=svelte-]:after{border-top-color:var(--kute-cyan)}.table-header.sortable[class*=svelte-]:hover,.data-table[class*=svelte-] tbody tr.clickable:hover,.data-table[class*=svelte-] tbody tr.highlight-row,.day-arrow[class*=svelte-]:hover:not(:disabled),.day-map[class*=svelte-],.eligible-maps[class*=svelte-] li,.view-all-btn[class*=svelte-],.page-btn[class*=svelte-],.view-tab.active[class*=svelte-]{background:var(--kute-cyan-soft);border-color:var(--kute-line-strong)}:is(#popupHolder,#app) .socialModal{background-color:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6}:is(#popupHolder,#app) .social-content{border-radius:var(--kute-radius-lg)}:is(#popupHolder,#app) .window-header{background:var(--kute-panel);border-bottom:1px solid var(--kute-line)}:is(#popupHolder,#app) .window-header-icon{color:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab{background:var(--kute-panel);transition:background-color .15s}:is(#popupHolder,#app) .sidebar-tab:hover{background:var(--kute-raised)}:is(#popupHolder,#app) .sidebar-tab:hover .sidebar-tab-icon,:is(#popupHolder,#app) .sidebar-tab:hover .sidebar-tab-label{color:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab.active{background:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab.active .sidebar-tab-icon,:is(#popupHolder,#app) .sidebar-tab.active .sidebar-tab-label{color:var(--kute-bg)}:is(#popupHolder,#app) .simple-tabs{border-bottom-color:var(--kute-line)}:is(#popupHolder,#app) .simple-tab-active{border-bottom-color:var(--kute-cyan)}:is(#popupHolder,#app) .simple-tab-active .simple-tab-icon,:is(#popupHolder,#app) .simple-tab-active .simple-tab-label{color:var(--kute-cyan)}:is(#popupHolder,#app) .social-search-input,:is(#popupHolder,#app) .social-search-btn,:is(#popupHolder,#app) .profile-search-form,:is(#popupHolder,#app) .conversation-input,:is(#popupHolder,#app) .conversation-emoji-button{background:var(--kute-raised);border-color:var(--kute-line);border-radius:6px}:is(#popupHolder,#app) .social-search-input:focus,:is(#popupHolder,#app) .profile-search-form:focus-within,:is(#popupHolder,#app) .conversation-input:focus{border-color:var(--kute-cyan)}:is(#popupHolder,#app) .social-search-btn:hover,:is(#popupHolder,#app) .conversation-emoji-button:hover:not(:disabled){background:#1d2c32;border-color:var(--kute-line-strong);color:var(--kute-cyan)}:is(#popupHolder,#app) .social-compose-btn,:is(#popupHolder,#app) .post-follow-btn,:is(#popupHolder,#app) .conversation-send-button{background:var(--kute-cyan);border-radius:6px;transition:background-color .15s}:is(#popupHolder,#app) .social-compose-btn:hover,:is(#popupHolder,#app) .post-follow-btn:hover:not(:disabled),:is(#popupHolder,#app) .conversation-send-button:hover:not(:disabled){background:var(--kute-pink)}:is(#popupHolder,#app) .social-compose-icon,:is(#popupHolder,#app) .social-compose-label,:is(#popupHolder,#app) .post-follow-btn i,:is(#popupHolder,#app) .conversation-send-button{color:var(--kute-bg)}:is(#popupHolder,#app) .conversation-send-button:disabled{background:#24343a;color:var(--kute-faint)}:is(#popupHolder,#app) .post-card{background:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .post-card-clickable:hover{background:var(--kute-raised)}:is(#popupHolder,#app) .post-item-card{background:#18242999;border-color:var(--kute-line);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .post-item-card:hover{background:var(--kute-raised);border-color:var(--kute-cyan)}:is(#popupHolder,#app) .postGameRes{background-color:var(--kute-bg);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .postResRo,:is(#popupHolder,#app) .postResRoD{border-bottom-color:var(--kute-line)}:is(#popupHolder,#app) .post-content-action{color:var(--kute-cyan)}:is(#popupHolder,#app) .vote-btn,:is(#popupHolder,#app) .share-btn{background:var(--kute-raised);border-color:var(--kute-line)}:is(#popupHolder,#app) .vote-btn:hover:not(:disabled),:is(#popupHolder,#app) .share-btn:hover{background:#1d2c32;border-color:var(--kute-line-strong)}:is(#popupHolder,#app) .comment-btn:hover{background:var(--kute-cyan-soft)}:is(#popupHolder,#app) .vote-btn-done,:is(#popupHolder,#app) .vote-btn-done:hover:not(:disabled){background:var(--kute-cyan);border-color:var(--kute-cyan)}:is(#popupHolder,#app) .vote-btn-done .vote-btn-icon,:is(#popupHolder,#app) .vote-btn-done .vote-btn-label,:is(#popupHolder,#app) .vote-btn-done .vote-btn-count{color:var(--kute-bg)}:is(#popupHolder,#app) .friends-root,:is(#popupHolder,#app) .conversation-root{background:var(--kute-bg)}:is(#popupHolder,#app) .friend-list{background:var(--kute-panel);border-right:1px solid var(--kute-line)}:is(#popupHolder,#app) .friend-item:hover{background:#35e0e80f}:is(#popupHolder,#app) .friend-item.selected{background:var(--kute-cyan-soft);border-left-color:var(--kute-cyan)}:is(#popupHolder,#app) .friend-presence-dot{border-color:var(--kute-panel)}:is(#popupHolder,#app) .friend-unread{background:var(--kute-pink);color:#fff}:is(#popupHolder,#app) .friend-list-search{background:var(--kute-raised);border-top:1px solid var(--kute-line)}:is(#popupHolder,#app) .conversation-header,:is(#popupHolder,#app) .conversation-compose{background:var(--kute-panel);border-color:var(--kute-line)}:is(#popupHolder,#app) .conversation-presence-dot{border-color:var(--kute-panel)}:is(#popupHolder,#app) .conversation-load-earlier{background:var(--kute-raised);border-color:var(--kute-line)}:is(#popupHolder,#app) .conversation-day-divider:before,:is(#popupHolder,#app) .conversation-day-divider:after{background:var(--kute-line)}:is(#popupHolder,#app) .bubble-row.sent .bubble{background:var(--kute-cyan)}:is(#popupHolder,#app) .bubble-row.sent .bubble,:is(#popupHolder,#app) .bubble-row.sent .bubble-time,:is(#popupHolder,#app) .bubble-row.sent .bubble-status-ok{color:var(--kute-bg)}:is(#popupHolder,#app) .bubble-row.received .bubble{background:var(--kute-raised)}#app .profile-detail-root{background:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6}#app .profile-detail-header-bar{background:var(--kute-panel);border-bottom-color:var(--kute-line)}#app .profile-detail-header-icon,#app .profile-detail-section-header,#app .profile-detail-sales-header{color:var(--kute-cyan)}#app .profile-detail-back,#app .profile-detail-action,#app .profile-detail-range-btn{background:var(--kute-raised);border-color:var(--kute-line)}#app .profile-detail-back:hover,#app .profile-detail-action:hover:not(:disabled){background:#1d2c32}#app .profile-detail-action.active,#app .profile-detail-action.active i{background:var(--kute-cyan-soft);border-color:var(--kute-line-strong);color:var(--kute-cyan)}#app .profile-detail-range-btn.active{background:var(--kute-cyan);border-color:var(--kute-cyan);color:var(--kute-bg)}#app .profile-detail-identity,#app .profile-detail-sales-panel,#app .profile-detail-badges-panel,#app .profile-detail-creations-panel{background:var(--kute-panel);border-color:var(--kute-line);border-radius:var(--kute-radius)}#app .profile-detail-avatar{background:var(--kute-raised);border-color:var(--kute-line-strong)}#app .profile-detail-online-dot{border-color:var(--kute-panel)}#app .profile-detail-follow-box,#app .profile-detail-title-item,#app .profile-detail-badge-item{background:var(--kute-raised)}#app .profile-detail-follow-box:hover{background:#1d2c32;border-color:var(--kute-line-strong)}#app .profile-detail-stat,#app .profile-detail-class,#app .profile-detail-raid-row,#app .profile-detail-listing-card,#app .profile-detail-creation-card{background:var(--kute-panel);border-color:var(--kute-line);border-radius:var(--kute-radius)}#app .profile-detail-listing-card:hover,#app .profile-detail-creation-card:hover{background:var(--kute-raised)}#app .profile-detail-level-badge,#app .profile-detail-xp-fill{background:var(--kute-cyan)}#app .profile-detail-level-badge{color:var(--kute-bg)}#app .profile-detail-xp-bar{background:var(--kute-raised)} +`});var oi={};A(oi,{default:()=>Ib});var Pb,ti,Ib,si=w(()=>{"use strict";F();Hu();Fu();Pb=Ou+Du,ti=class{constructor(){this.sheet=null,u.settings.toggleKuteCss=e=>this.toggle(e),this.toggle(!0)}toggle(e){if(!e){this.sheet?.replaceSync("");return}this.sheet||(this.sheet=new CSSStyleSheet,document.adoptedStyleSheets=[this.sheet,...document.adoptedStyleSheets]),this.sheet.replaceSync(Pb)}},Ib=new ti});var ci={};A(ci,{setFrameEnd:()=>An,takeFrameWorkMs:()=>ai});function ai(){if(rs.length<10)return 0;let s=rs.sort((t,o)=>t-o);rs=[];let e=s.slice(0,Math.ceil(s.length*.9));return e.reduce((t,o)=>t+o,0)/e.length}function Ob(s){return function(e){e!==qu&&(qu=e,Gu++>0&&(Wu=performance.now(),Vu.port2.postMessage(0))),s(e)}}function Fb(s,e){Po<0&&(Po=e),is++;let t=e-Po;if(ts*_b?as+1:0,as>=2&&u.frameLimiter!=="viz"&&(ls=!0),is=0,Po=e}function Yu(){!ls||!Tn?.hardFlip||(ls=!1,is=0,as=0,Po=-1)}function Db(s){let e;for(s>200?e=1e3/(s*1.0055):e=1e3/s;performance.now()<$n;);let t=performance.now();t-$n>e?$n=t+e:$n+=e}function qb(s){Mn=s,li?.(s)}function Xu(s){if(li!==null&&!ii)return Kb(s);let e=Tn===null?0:Tn.gameFpsLimit;if(!(e>0)){ni=0;let o=++Hb%Bb;return o>=zb?Cn(s):(o===0&&(Gu=0),Cn(Ob(s)))}let t=Number(e);return Cn(function(o){t!==ni&&(ni=t,ls=!1,is=0,as=0,Po=-1),o!==Ku&&(Ku=o,ls?Db(t):Fb(t,o)),s(o)})}function Kb(s){ii=!0;let e=Xu(t=>{Mn=t,s(t)});return ii=!1,ju===Mn&&Uu(ri),ju=Mn,ri=Cn(qb),e}function An(s){li=s,s===null&&Uu(ri)}var Cn,Uu,Nb,_b,Tn,Bb,zb,Hb,Gu,qu,Wu,rs,Vu,$n,Ku,ni,ls,Po,is,as,li,ri,Mn,ju,ii,cs=w(()=>{"use strict";F();Cn=window.requestAnimationFrame,Uu=window.cancelAnimationFrame,Nb=2e3,_b=1.15,Tn=null,Bb=256,zb=12,Hb=0,Gu=0,qu=-1,Wu=0,rs=[],Vu=new MessageChannel;Vu.port1.onmessage=()=>{rs.length<512&&rs.push(performance.now()-Wu)};Ne.then(()=>{Tn=u.settings.data});$n=0,Ku=-1,ni=0,ls=!1,Po=-1,is=0,as=0;document.addEventListener("pointerlockchange",Yu);window.addEventListener("resize",Yu);li=null,ri=0,Mn=-1,ju=-2,ii=!1;window.requestAnimationFrame=Xu});var Ln=we((Xx,jb)=>{jb.exports="data:image/webp;base64,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"});var ui={};A(ui,{default:()=>Ub});var Ju,di,Ub,pi=w(()=>{"use strict";Ju=ue(Ln(),1),di=class{constructor(){if(!document.querySelector("#mainMenuUIMount"))return;let e=document.createElement("style");e.id="kute_logoBadgeCSS",e.textContent=` #mainLogo { anchor-name: --kute-main-logo; } #gameNameHolder::after { content: ""; @@ -49,11 +49,11 @@ void main() { outColor = texture(uLabel, vUv); }`;Gr=new Float32Array(4096),Mu=0 left: calc((anchor(right) - anchor-size(width) * 0.22) - 15px); top: calc((anchor(bottom) - anchor-size(height) * 0.48) - 10px); transform: rotate(-25deg); - background: url(${Wu.default}) center / contain no-repeat; + background: url(${Ju.default}) center / contain no-repeat; pointer-events: none; - }`,document.head.append(e)}},Db=new li});var ui=we((Ux,Fb)=>{Fb.exports=`#tlInfHold,#newsHolder,#termsInfo,#bubbleContainer,body .popRail.popRail{display:none!important} -`});var pi=we((Gx,qb)=>{qb.exports=`:root{--kute-classic-menu: 1}#uiBase.onMenu #spectButton{top:calc(48% - 60px)}#instructions{top:50%}#subLogoButtons{right:auto;left:50%;bottom:139px;width:950px;display:grid;grid-template-columns:repeat(6,1fr);gap:10px;transform:translate(-50%) scale(.95);transform-origin:bottom center}#matchInfoHolder{grid-column:1 / -1;position:static;order:-2;box-sizing:border-box;width:100%;flex-wrap:wrap;justify-content:flex-start;row-gap:4px;transform:none;padding:0 0 12px;margin-bottom:10px;font-size:20px;background:none;border:none;border-bottom:5px solid #585858;border-radius:0;box-shadow:none;backdrop-filter:none}#matchInfoHolder>.match-divider:has(+.match-info-actions){flex-basis:100%;height:0;margin:0;border:none;background:none}#matchInfoHolder>.match-info-actions{padding-left:7px}#mapInfo{font-size:20px}#mapInfoHld{padding-left:7px}#subLogoButtons>.actionCard{grid-column:span 2;justify-content:center;box-sizing:border-box;width:auto;height:auto;padding:6px 18px;font-size:27px;text-transform:none;background:#0003;box-shadow:none}#subLogoButtons>.actionCard .cardIcon{display:none}#subLogoButtons>.actionCard .cardLabel{font-size:27px;text-transform:none;letter-spacing:normal}#subLogoButtons>#menuBtnQuickMatch,#subLogoButtons>#menuBtnRanked{grid-column:span 3}#menuBtnHost,#menuBtnBrowser{border-color:#ed4242!important}#subLogoButtons>.popRail{grid-column:1 / -1;order:1;margin-top:10px}#menuClassContainer{left:auto;right:21px;bottom:80px;text-align:right;transform:scale(.7);transform-origin:bottom right}#menuClassContainer:before{display:none}#menuClassFooter{flex-direction:column;align-items:flex-end;margin:0 0 0 auto}#menuClassContainerInner{justify-content:flex-end;width:449px;height:85px;padding:0;gap:0;background:none;border:none}#menuClassContainerInner:hover{background:none;filter:brightness(1.15)}#menuClassContainerInfo{height:85px;justify-content:space-between}#menuClassIcn{width:85px;height:85px;margin-left:10px;border:4px solid #353534;border-radius:4px}#menuClassName{font-size:17px}#menuClassSubtext{font-size:30px;margin-bottom:0}#classPreviewCanvas{margin-bottom:-100px;margin-right:-113px}#customizeButton{box-sizing:border-box;width:449px;padding:15px;font-size:27px!important}#bubbleContainer{right:420px}body #uiBase.onMenu .spectateInfo{top:calc(48% - 150px)} -`});var Vu=we((Wx,Kb)=>{Kb.exports='
      '});var jb={};var hi,Yu=w(()=>{"use strict";D();Ae();hi=class{constructor(e,t,o){this.message=e,this.reqUserInput=t,this.duration=o,this.notificationEl=document.createElement("div"),this.notificationEl.id="notification",this.countdown=void 0,this.handlePromise=void 0,t&&(this.promise=new Promise(n=>{this.resolvePromise=n})),this.show()}async createNotificationElement(){let e=await Promise.resolve().then(()=>ue(Vu(),1));this.notificationEl.innerHTML=e.default,U("#notification-content",this.notificationEl).textContent=this.message,U("#notification-timer",this.notificationEl).textContent=String(this.duration),this.reqUserInput&&(U("#notification-actions",this.notificationEl).style.display="block"),document.body.append(this.notificationEl)}startTimer(){this.countdown=setInterval(()=>{this.duration--,U("#notification-timer",this.notificationEl).textContent=String(this.duration),this.duration<=0&&(clearInterval(this.countdown),this.resolvePromise&&this.resolvePromise(!1),this.hide())},1e3)}hide(){clearInterval(this.countdown),this.handlePromise&&document.removeEventListener("keydown",this.handlePromise),this.notificationEl.classList.add("slide-out"),setTimeout(()=>this.notificationEl.remove(),2e3)}show(){this.createNotificationElement(),setTimeout(()=>this.notificationEl.classList.add("slide-in"),10),this.startTimer(),this.reqUserInput&&(this.handlePromise=e=>{if(e.key==="y"||e.key==="n"){let t=e.key==="y";U(`#${e.key}`,this.notificationEl).classList.add("bounce"),this.resolvePromise(t),this.hide()}},document.addEventListener("keydown",this.handlePromise))}};u.showNotification=(s,e,t)=>{let o=new hi(s,e,t);return e?o.promise:o}});var Xu=we((Xx,Ub)=>{Ub.exports='
      ×

      Kute

      A high-performance Krunker client with enhanced features - made by [cute]

      CREDITS
      • NullDev / NulPing - Main Developer / Maintainer
      • slavcp/glorp - base
      • 6ct/clientpp - flags
      • KraXen72/crankshaft - menu timer css
      • idkr-client/idkr - tweaks
      • bigjakk/Electron-Websocket-Fix - aim-freeze fix
      • bigjakk/Krunker-Civilian-Client - matchmaker, nuke counter
      • PC7 Client and Water Client - ideas
      '});var Ju={};async function Gb(){if(document.querySelector("#aboutPopupHost"))return;let[s,e]=await Promise.all([Promise.resolve().then(()=>ue(Xu(),1)),Promise.resolve().then(()=>ue(Tn(),1))]),t=document.createElement("div");t.style=` + }`,document.head.append(e)}},Ub=new di});var hi=we((Jx,Gb)=>{Gb.exports=`#tlInfHold,#newsHolder,#termsInfo,#bubbleContainer,body .popRail.popRail{display:none!important} +`});var mi=we((Zx,Wb)=>{Wb.exports=`:root{--kute-classic-menu: 1}#uiBase.onMenu #spectButton{top:calc(48% - 60px)}#instructions{top:50%}#subLogoButtons{right:auto;left:50%;bottom:139px;width:950px;display:grid;grid-template-columns:repeat(6,1fr);gap:10px;transform:translate(-50%) scale(.95);transform-origin:bottom center}#matchInfoHolder{grid-column:1 / -1;position:static;order:-2;box-sizing:border-box;width:100%;flex-wrap:wrap;justify-content:flex-start;row-gap:4px;transform:none;padding:0 0 12px;margin-bottom:10px;font-size:20px;background:none;border:none;border-bottom:5px solid #585858;border-radius:0;box-shadow:none;backdrop-filter:none}#matchInfoHolder>.match-divider:has(+.match-info-actions){flex-basis:100%;height:0;margin:0;border:none;background:none}#matchInfoHolder>.match-info-actions{padding-left:7px}#mapInfo{font-size:20px}#mapInfoHld{padding-left:7px}#subLogoButtons>.actionCard{grid-column:span 2;justify-content:center;box-sizing:border-box;width:auto;height:auto;padding:6px 18px;font-size:27px;text-transform:none;background:#0003;box-shadow:none}#subLogoButtons>.actionCard .cardIcon{display:none}#subLogoButtons>.actionCard .cardLabel{font-size:27px;text-transform:none;letter-spacing:normal}#subLogoButtons>#menuBtnQuickMatch,#subLogoButtons>#menuBtnRanked{grid-column:span 3}#menuBtnHost,#menuBtnBrowser{border-color:#ed4242!important}#subLogoButtons>.popRail{grid-column:1 / -1;order:1;margin-top:10px}#menuClassContainer{left:auto;right:21px;bottom:80px;text-align:right;transform:scale(.7);transform-origin:bottom right}#menuClassContainer:before{display:none}#menuClassFooter{flex-direction:column;align-items:flex-end;margin:0 0 0 auto}#menuClassContainerInner{justify-content:flex-end;width:449px;height:85px;padding:0;gap:0;background:none;border:none}#menuClassContainerInner:hover{background:none;filter:brightness(1.15)}#menuClassContainerInfo{height:85px;justify-content:space-between}#menuClassIcn{width:85px;height:85px;margin-left:10px;border:4px solid #353534;border-radius:4px}#menuClassName{font-size:17px}#menuClassSubtext{font-size:30px;margin-bottom:0}#classPreviewCanvas{margin-bottom:-100px;margin-right:-113px}#customizeButton{box-sizing:border-box;width:449px;padding:15px;font-size:27px!important}#bubbleContainer{right:420px}body #uiBase.onMenu .spectateInfo{top:calc(48% - 150px)} +`});var Zu=we((Qx,Vb)=>{Vb.exports='
      '});var Yb={};var fi,Qu=w(()=>{"use strict";F();Ae();fi=class{constructor(e,t,o){this.message=e,this.reqUserInput=t,this.duration=o,this.notificationEl=document.createElement("div"),this.notificationEl.id="notification",this.countdown=void 0,this.handlePromise=void 0,t&&(this.promise=new Promise(n=>{this.resolvePromise=n})),this.show()}async createNotificationElement(){let e=await Promise.resolve().then(()=>ue(Zu(),1));this.notificationEl.innerHTML=e.default,U("#notification-content",this.notificationEl).textContent=this.message,U("#notification-timer",this.notificationEl).textContent=String(this.duration),this.reqUserInput&&(U("#notification-actions",this.notificationEl).style.display="block"),document.body.append(this.notificationEl)}startTimer(){this.countdown=setInterval(()=>{this.duration--,U("#notification-timer",this.notificationEl).textContent=String(this.duration),this.duration<=0&&(clearInterval(this.countdown),this.resolvePromise&&this.resolvePromise(!1),this.hide())},1e3)}hide(){clearInterval(this.countdown),this.handlePromise&&document.removeEventListener("keydown",this.handlePromise),this.notificationEl.classList.add("slide-out"),setTimeout(()=>this.notificationEl.remove(),2e3)}show(){this.createNotificationElement(),setTimeout(()=>this.notificationEl.classList.add("slide-in"),10),this.startTimer(),this.reqUserInput&&(this.handlePromise=e=>{if(e.key==="y"||e.key==="n"){let t=e.key==="y";U(`#${e.key}`,this.notificationEl).classList.add("bounce"),this.resolvePromise(t),this.hide()}},document.addEventListener("keydown",this.handlePromise))}};u.showNotification=(s,e,t)=>{let o=new fi(s,e,t);return e?o.promise:o}});var ep=we((oS,Xb)=>{Xb.exports='
      ×

      Kute

      A high-performance Krunker client with enhanced features - made by [cute]

      CREDITS
      • NullDev / NulPing - Main Developer / Maintainer
      • slavcp/glorp - base
      • 6ct/clientpp - flags
      • KraXen72/crankshaft - menu timer css
      • idkr-client/idkr - tweaks
      • bigjakk/Electron-Websocket-Fix - aim-freeze fix
      • bigjakk/Krunker-Civilian-Client - matchmaker, nuke counter
      • PC7 Client and Water Client - ideas
      '});var tp={};async function Jb(){if(document.querySelector("#aboutPopupHost"))return;let[s,e]=await Promise.all([Promise.resolve().then(()=>ue(ep(),1)),Promise.resolve().then(()=>ue(Ln(),1))]),t=document.createElement("div");t.style=` position: fixed; top: 0; left: 0; @@ -64,37 +64,37 @@ void main() { outColor = texture(uLabel, vUv); }`;Gr=new Float32Array(4096),Mu=0 display: flex; justify-content: center; align-items: center; - `;let o=document.createElement("div");o.id="aboutPopupHost",t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=s.default;let r=n.querySelector("#aboutLogo");r&&(r.src=e.default);let i=n.querySelector("#aboutVersion");i&&(i.textContent=`Version ${u.version}`);for(let c of n.querySelectorAll("[data-url]"))c.addEventListener("click",()=>window.chrome.webview.postMessage(`open-url, ${c.getAttribute("data-url")}`));let a=new AbortController,l=()=>{a.abort(),t.remove()};n.querySelector("#aboutClose")?.addEventListener("click",l),t.addEventListener("mousedown",c=>{c.target===t&&l()}),document.addEventListener("keydown",c=>{c.key==="Escape"&&l()},{signal:a.signal}),document.body.append(t)}var mi=w(()=>{"use strict";D();u.showAboutPopup=Gb});var bi={};A(bi,{default:()=>Jb});function Zu(){if(!document.getElementById("signedInHeaderBar"))return null;try{return localStorage.getItem("krunker_username")||null}catch{return null}}function fi(){try{return localStorage.getItem(Wb)??""}catch{return""}}var Wb,Vb,Yb,Xb,gi,Jb,vi=w(()=>{"use strict";D();Wb="kro_setngss_endMessage",Vb="slid_endMessage",Yb="playerHeaderEl",Xb=500;gi=class{constructor(){this.account=void 0,this.header=new MutationObserver(()=>this.check()),this.saveTimer=0,this.editedFor=null,this.onInput=e=>{!(e.target instanceof HTMLInputElement)||e.target.id!==Vb||!this.account||(this.editedFor=this.account,clearTimeout(this.saveTimer),this.saveTimer=setTimeout(()=>this.flush(),Xb))},u.settings.toggleAccountEndMessage=e=>this.toggle(e,!0),this.toggle(!!u.settings.data.accountEndMessage,!1)}get messages(){return{...u.settings.data.endMessages}}save(e){u.settings.data.endMessages=e,window.chrome.webview.postMessage(`set-config-json endMessages ${JSON.stringify(e)}`)}remember(e,t){let{messages:o}=this;(o[e]??"")!==t&&(t?o[e]=t:delete o[e],this.save(o))}flush(){clearTimeout(this.saveTimer),this.editedFor&&this.remember(this.editedFor,fi()),this.editedFor=null}check(){let e=Zu();if(e===this.account)return;this.flush(),this.account=e;let t=e?this.messages[e]??"":"";fi()!==t&&window.setSetting("endMessage",t)}toggle(e,t){if(this.header.disconnect(),document.removeEventListener("input",this.onInput,!0),!e){this.flush(),this.account=void 0;return}let o=Zu();if(t&&o){let r=fi();this.remember(o,r),u.showNotification(r?`Kept "${r}" for ${o}. Other accounts send nothing until you give them one`:`End messages are now per account, ${o} has none`,!1,6)}document.addEventListener("input",this.onInput,!0);let n=document.getElementById(Yb);n?this.header.observe(n,{childList:!0}):console.error("[kute] end message: no account header"),this.check()}},Jb=new gi});var Qu=we((Qx,Zb)=>{Zb.exports='

      '});var ep={};A(ep,{confirmPopup:()=>Ce});async function Ce(s){let e=await Promise.resolve().then(()=>ue(Qu(),1)),t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default;let r=i=>n.querySelector(`#${i}`);r("confirmTitle").textContent=s.title;for(let i of s.paragraphs){let a=document.createElement("p");a.textContent=i,r("confirmText").append(a)}return r("confirmStay").textContent=s.stay,r("confirmLeave").textContent=s.leave,new Promise(i=>{let a=new AbortController,l=c=>{a.abort(),t.remove(),i(c)};r("confirmStay").onclick=()=>l(!1),r("confirmLeave").onclick=()=>l(!0),t.addEventListener("mousedown",c=>{c.target===t&&l(!1)}),document.addEventListener("keydown",c=>{c.key==="Escape"&&l(!1)},{signal:a.signal}),document.body.append(t)})}var Rt=w(()=>{"use strict"});var op,tp=w(()=>{op='

      Hotkeys

      Click a key, then press the new one. Escape cancels.
      Ctrl, Alt and Shift combinations work too.

      Lobby and window

      Toggles and windows

      Quick account login

      Reset to defaults
      Done
      '});var Si={};A(Si,{bindings:()=>ft,default:()=>pv,matches:()=>ls});function sv(){if(u.settings.data.chatLogs===!1||!u.chatLogs){u.showNotification("Chat Logs is off in the settings",!1,3);return}u.chatLogs.toggle()}function nv(s){if(u.settings.data.accountManager===!1||!u.accounts){u.showNotification("Account Manager is off in the settings",!1,3);return}u.accounts.loginSlot(s)}function ki(){return!!u.hostFeatures?.includes(ev)}function ft(){let s=ki()&&u.settings.data.hotkeys||{};return Object.fromEntries(An.map(e=>[e.id,s[e.id]??(e.id in s?null:e.fallback)]))}function sp(s,e){return!!e&&s.keyCode===e?.key&&s.ctrlKey===e.ctrl&&s.altKey===e.alt&&s.shiftKey===e.shift}function ls(s,e){return sp(s,ft()[e]??null)}function iv(s){let e=(t,o)=>{try{let n=window.localStorage.getItem(t);return n===null?o:Number(n)}catch{return o}};return rv.filter(([t,,o,n])=>e(`cont_${t}`,o)===s||e(`cont_${t}_alt`,n)===s).map(([,t])=>t)}function lv(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`Num ${s-96}`:s>=112&&s<=135?`F${s-111}`:av[s]??`Key ${s}`}function cv(s){let{code:e}=s,t=e;return/^Key[A-Z]$/.test(e)?t=e.slice(3):/^Digit\d$/.test(e)?t=e.slice(5):e.startsWith("Numpad")?t=`Num ${e.slice(6)}`:e.startsWith("Arrow")?t=e.slice(5):e||(t=lv(s.keyCode)),[s.ctrlKey&&"Ctrl",s.altKey&&"Alt",s.shiftKey&&"Shift",t].filter(Boolean).join("+")}function dv(s,e,t){let o=[],n=An.filter(i=>{let a=t[i.id];return i.id!==s.id&&a!==null&&a.key===e.key&&a.ctrl===e.ctrl&&a.alt===e.alt&&a.shift===e.shift});n.length>0&&o.push(`Also bound to Kute's ${n.map(i=>i.label).join(", ")}, pick another key.`);let r=iv(e.key);if(r.length>0){let i=r.length>3?` and ${r.length-3} more`:"";o.push(`Krunker uses this key for ${r.slice(0,3).join(", ")}${i}, the game still gets it.`)}return o}function uv(){let s=document.activeElement;for(;s?.shadowRoot?.activeElement;)s=s.shadowRoot.activeElement;return s instanceof HTMLInputElement||s instanceof HTMLTextAreaElement||s instanceof HTMLElement&&s.isContentEditable}var ev,tv,ov,Ro,wi,An,rv,av,yi,xi,pv,Po=w(()=>{"use strict";tp();D();Co();ev="hotkeys",tv=131,ov=new Set(["Shift","Control","Alt","Meta","AltGraph"]);Ro=(s,e)=>({key:s,ctrl:!1,alt:!1,shift:!1,name:e}),wi=s=>({id:`account${s}`,label:`Account ${s}`,note:`logs in account ${s} of the Accounts list`,group:"account",fallback:{key:48+s,ctrl:!0,alt:!0,shift:!1,name:`Ctrl+Alt+${s}`},run:()=>nv(s-1)}),An=[{id:"newLobby",label:"New lobby",group:"window",fallback:Ro(115,"F4")},{id:"matchmaker",label:"Matchmaker",note:"new lobby while the Matchmaker setting is off",group:"window",fallback:Ro(117,"F6")},{id:"reload",label:"Reload",group:"window",fallback:Ro(116,"F5")},{id:"fullscreen",label:"Fullscreen",group:"window",fallback:Ro(122,"F11")},{id:"devtools",label:"Developer tools",group:"window",fallback:Ro(123,"F12")},{id:"toggleSpotify",label:"Spotify overlay",note:"on and off",group:"toggle",fallback:null,setting:"spotifyOverlay"},{id:"toggleKeystrokes",label:"Keystrokes",note:"on and off",group:"toggle",fallback:null,setting:"keystrokes"},{id:"chatLogs",label:"Chat logs",note:"open and close",group:"toggle",fallback:Ro(112,"F1"),run:sv},wi(1),wi(2),wi(3)],rv=[["0","Forward",87,-1],["1","Back",83,-1],["2","Left",65,-1],["3","Right",68,-1],["jumpKey","Jump",32,-1],["crouchKey","Crouch",16,-1],["reloadKey","Reload",82,-1],["swapKey","Swap weapon",69,-1],["primKey","Primary weapon",84,-1],["meleeKey","Melee",81,-1],["equipKey","Equip",67,-1],["dropKey","Drop",90,-1],["inspKey","Inspect",88,-1],["wepVisKey","Hide weapon",-1,-1],["sprayKey","Spray",70,-1],["sprayWheelKey","Spray wheel",70,-1],["interactKey","Interact",71,-1],["interactSecKey","Second interact",72,-1],["confirmKey","Confirm",75,-1],["resetKey","Reset",66,-1],["resetLastKey","Reset to last",78,-1],["markPositionKey","Mark position",10002,-1],["chatKey","Chat",13,-1],["voiceKey","Voice chat",86,-1],["pListKey","Player list",18,-1],["sBoardKey","Scoreboard",9,-1],["hidePlayersKey","Hide players",-1,-1],["kickVoteYKey","Kick vote yes",49,-1],["kickVoteNKey","Kick vote no",50,-1],["kpdVoteYKey","Vote yes",89,-1],["kpdVoteNKey","Vote no",78,-1],["kpdVisionKey","Vision",187,-1],["specFreeKey","Spectate free camera",70,-1],["specObjKey","Spectate objective",72,-1],["specFirstKey","Spectate first person",82,-1],["specNamesKey","Spectate names",77,-1],["specMiniMap","Spectate minimap",189,-1],["specFocusKey","Spectate focus",190,-1],["propKey","Prop",80,-1],["propRandKey","Random prop",77,-1],["propRotKey","Rotate prop",82,-1],["propRotRKey","Rotate prop back",78,-1],["18","Streak 1",49,-1],["19","Streak 2",50,-1],["20","Streak 3",51,-1],...[0,1,2,3,4,5].map(s=>[`taunt${s}`,`Taunt ${s+1}`,49+s,-1]),...["27","28","29","30","31","32"].map((s,e)=>[s,`Toggle ${e+1}`,-1,-1]),...["43","44","45","46","47","48"].map((s,e)=>[s,`Chat message ${e+1}`,-1,-1])];av={8:"Backspace",9:"Tab",13:"Enter",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",45:"Insert",46:"Delete"};yi=class{constructor(e){this.owner=e,this.waiting=null,this.overlay=document.createElement("div"),this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");this.overlay.append(t),this.shadow=t.attachShadow({mode:"open"}),this.shadow.innerHTML=op,document.body.append(this.overlay),this.onKey=this.onKey.bind(this),window.addEventListener("keydown",this.onKey,!0),this.overlay.addEventListener("click",o=>{o.target===this.overlay&&this.close()}),this.element("hkDone").onclick=()=>this.close(),this.element("hkReset").onclick=()=>{this.owner.save({}),this.stopWaiting(),this.render()},this.render()}element(e){return this.shadow.querySelector(`#${e}`)}startWaiting(e){this.stopWaiting(),this.waiting=e,this.owner.capturing=!0,window.chrome.webview.postMessage("hotkeys-pause, true"),this.render()}stopWaiting(){this.waiting!==null&&(this.waiting=null,this.owner.capturing=!1,window.chrome.webview.postMessage("hotkeys-pause, false"),this.render())}assign(e,t){this.owner.save({...ft(),[e]:t}),this.stopWaiting(),this.render()}row(e,t){let o=t[e.id],n=document.createElement("div");n.className="hkRow";let r=document.createElement("div");if(r.className="hkLabel",r.textContent=e.label,e.note){let p=document.createElement("span");p.className="hkNote",p.textContent=e.note,r.append(p)}let i=this.waiting===e.id,a=document.createElement("div");a.className=`hkKey${i?" hkWaiting":""}${o?"":" hkNone"}`,a.textContent=i?"Press a key":o?.name??"No key",a.title="Click, then press the new key. Escape cancels",a.onclick=()=>this.startWaiting(e.id);let l=document.createElement("div");l.className="hkClear",l.textContent="Clear",l.style.visibility=o?"":"hidden",l.onclick=()=>this.assign(e.id,null),n.append(r,a,l);let c=o?dv(e,o,t):[];if(c.length===0)return n;let d=document.createElement("div");d.className="hkWarn",d.textContent=c.join(" ");let h=document.createElement("div");return h.append(n,d),h}render(){let e=ft();for(let t of["window","toggle","account"]){let o=An.filter(n=>n.group===t).map(n=>this.row(n,e));this.element(`hkGroup-${t}`).replaceChildren(...o)}}onKey(e){if(this.waiting===null){e.key==="Escape"&&this.close();return}if(e.preventDefault(),e.stopImmediatePropagation(),e.key==="Escape"){this.stopWaiting();return}ov.has(e.key)||e.keyCode===tv||e.keyCode===0||this.assign(this.waiting,{key:e.keyCode,ctrl:e.ctrlKey,alt:e.altKey,shift:e.shiftKey,name:cv(e)})}close(){this.stopWaiting(),window.removeEventListener("keydown",this.onKey,!0),this.overlay.remove()}},xi=class{constructor(){this.capturing=!1,u.hotkeys={edit:()=>this.edit()},window.addEventListener("keydown",e=>this.onKey(e),!0)}onKey(e){if(this.capturing||e.repeat||uv()||!ki())return;let t=ft();for(let o of An)o.group==="window"||!sp(e,t[o.id])||(o.run?o.run():o.setting&&this.flip(o.setting,o.label))}flip(e,t){if($o(u.settings.data,e)){u.showNotification(`${t} is off in performance mode`,!1,3);return}let o=!u.settings.data[e];u.settings.changeSetting(e,o,!1),u.showNotification(`${t} ${o?"on":"off"}`,!1,2)}save(e){u.settings.data.hotkeys=e,window.chrome.webview.postMessage(`set-config-json hotkeys ${JSON.stringify(e)}`)}edit(){if(!ki()){u.showNotification("Hotkeys need a newer Kute",!1,3);return}new yi(this)}},pv=new xi});var np=we((nS,hv)=>{hv.exports='
      ×

      Accounts

      Click an account to log in, drag ≡ to reorder
      Add account
      '});var Ci={};A(Ci,{default:()=>xv});function Pt(s){let e=decodeURIComponent(s),t=e.length;return e.split("").map(o=>String.fromCharCode(o.charCodeAt(0)-t)).join("")}function ap(s){let e=s.length,t=s.split("").map(o=>String.fromCharCode(o.charCodeAt(0)+e)).join("");return encodeURIComponent(t)}function cs(){try{let s=JSON.parse(localStorage.getItem(ds)||"[]");return Array.isArray(s)?s:[]}catch{return[]}}function kv(s){return typeof s=="string"&&/^#[\da-f]{6}$/i.test(s)?s:mv}function yv(s){let e=Number.parseInt(s.slice(1),16),t=e>>16&255,o=e>>8&255,n=e&255;return t*.299+o*.587+n*.114>150?"#111":"#fff"}function lp(s,e,t){let o=kv(e);s.style.background=o,s.style.color=yv(o),s.textContent=t.trim().slice(0,1)||"?"}var ds,mv,Ei,fv,rp,gv,bv,vv,wv,ip,$i,xv,Mi=w(()=>{"use strict";D();Ae();Rt();kn();Po();ds="accounts",mv="#35e0e8",Ei="kute_account_switch",fv=12e4,rp=3e4,gv=3e3,bv=2e4,vv=3e3,wv=5e3,ip=s=>new Promise(e=>{setTimeout(e,s)});$i=class{constructor(){this.button=document.createElement("div"),this.button.textContent="Accounts",this.button.classList.add("button","buttonB","bigShadowT"),this.button.style.cssText="display: block; padding-top: 7px; padding-bottom: 22px; font-size: 25px!important; padding-bottom: 22px; margin-top: 7px; height: 21px; line-height: 35px; width: 162px; font-size:20px!important; margin-left: 3px;",this.headerSeparator=document.createElement("div"),this.headerSeparator.style.cssText="width: 4px; height: 35px; margin: 0 6px; background: rgba(255, 255, 255, 0.12); flex-shrink: 0;",this.headerItem=document.createElement("div"),this.headerItem.style.cssText="display: flex; align-items: center; gap: 8px; padding: 8px 12px; cursor: pointer; color: #fff; font-weight: 700; font-size: 16px; white-space: nowrap;",this.headerItem.innerHTML='switch_accountAccounts',this.headerObserver=new MutationObserver(()=>this.placeButton()),this.overlay=null,this.shadow=null,this.menuController=null,this.asking=!1,this.accounts=[],this.legacy=!1,this.lastQuickLogin=0,this.suppressClick=!1,u.settings.toggleAccountManager=e=>this.toggle(e),u.accounts={loginSlot:e=>this.loginSlot(e)},this.toggle(!0),this.load()}async load(){let e=cs(),t=null;if(e.length>0){let o=e.filter(n=>typeof n?.username=="string"&&typeof n?.password=="string").map(n=>({username:Pt(n.username),password:Pt(n.password),color:n.color}));t=await Te(`accounts-migrate ${JSON.stringify(o)}`,"accounts",5e3),t!==null&&localStorage.removeItem(ds)}else t=await Te("accounts-list","accounts");t===null?(this.legacy=!0,this.accounts=e.map(o=>({username:Pt(o.username),color:o.color}))):this.accounts=t,this.renderAccounts(),this.resumeSwitch()}resumeSwitch(){let e=sessionStorage.getItem(Ei);if(e===null)return;sessionStorage.removeItem(Ei);let t={};try{t=JSON.parse(e)??{}}catch{return}if(Date.now()-Number(t.at)>fv||localStorage.getItem("krunker_token")!==null)return;let o=this.accounts.find(n=>n.username===t.username);o&&this.login(o)}async send(e,t){let o=await Te(`accounts-${e} ${JSON.stringify(t)}`,"accounts");o!==null&&(this.accounts=o,this.renderAccounts())}gameUpdateListener=e=>{e.data==="game-updated"&&setTimeout(()=>{He()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.button.style.cssText="display: block; padding: 14px 24px 22px; bottom: 0; right: 0; z-index: 9; font-size: 21px !important; position: absolute;",U("#compBtnLst").append(this.button))},2e3)};toggle(e){if(e)if(window.chrome.webview.addEventListener("message",this.gameUpdateListener),this.button.addEventListener("click",this.openMenu),this.headerItem.addEventListener("click",this.openMenu),He())window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.button.style.cssText="display: block; padding: 14px 24px 22px; bottom: 0; right: 0; z-index: 9; font-size: 21px !important; position: absolute;",U("#compBtnLst").append(this.button);else{this.placeButton();let t=document.querySelector("#playerHeaderEl");t&&this.headerObserver.observe(t,{childList:!0,subtree:!0})}else window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.headerObserver.disconnect(),this.button.removeEventListener("click",this.openMenu),this.headerItem.removeEventListener("click",this.openMenu),this.button.remove(),this.headerSeparator.remove(),this.headerItem.remove(),this.closeMenu()}placeButton(){let e=document.querySelector("#playerHeaderEl .headerBarRight");if(e){if(e.firstElementChild!==this.headerItem){let n=[...e.querySelector(".nav-item")?.classList??[]].find(r=>r.startsWith("svelte-"))??"";this.headerItem.style.cssText="",this.headerItem.className=`nav-item ${n}`,this.headerItem.innerHTML=`switch_account Accounts`,this.headerSeparator.className="verticalSeparator",this.headerSeparator.style.cssText="height: 35px;",e.prepend(this.headerItem,this.headerSeparator)}this.button.remove();return}let t=document.querySelector("#signedInHeaderBar");if(t){t.contains(this.headerItem)||t.append(this.headerSeparator,this.headerItem);return}let o=document.querySelector("#signedOutHeaderBar");o&&!o.contains(this.button)&&o.append(this.button)}openMenu=()=>{this.overlay||this.buildMenu().catch(e=>console.error("[kute] accounts:",e))};async buildMenu(){let e=await Promise.resolve().then(()=>ue(np(),1));if(this.overlay)return;let t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default,this.overlay=t,this.shadow=n;let r=new AbortController;this.menuController=r,U("#accClose",n).onclick=()=>this.closeMenu(),U("#accAdd",n).onclick=()=>this.showForm(!0),U("#accCancel",n).onclick=()=>this.showForm(!1),U("#accSave",n).onclick=()=>this.saveAccount(),U("#accFormHint",n).textContent=this.legacy?"Saved on this PC only":"Saved encrypted on this PC, never sent anywhere";let i=ke("#accUsername",n),a=ke("#accColor",n);i.oninput=()=>this.updatePreview(),a.oninput=()=>this.updatePreview();for(let l of[i,ke("#accPassword",n)])l.onkeydown=c=>{c.key==="Enter"&&this.saveAccount()};for(let l of["keydown","keyup","keypress"])n.addEventListener(l,c=>c.stopPropagation());t.addEventListener("mousedown",l=>{l.target===t&&this.closeMenu()}),document.addEventListener("keydown",l=>{l.key!=="Escape"||this.asking||(l.stopPropagation(),U("#accFormView",n).hidden?this.closeMenu():this.showForm(!1))},{signal:r.signal,capture:!0}),this.renderAccounts(),this.resetForm(),document.body.append(t)}closeMenu(){this.menuController?.abort(),this.menuController=null,this.overlay?.remove(),this.overlay=null,this.shadow=null}showForm(e){this.shadow&&(U("#accListView",this.shadow).hidden=e,U("#accFormView",this.shadow).hidden=!e,e&&(this.resetForm(),ke("#accUsername",this.shadow).focus()))}renderAccounts(){let{shadow:e}=this;if(!e)return;let t=U("#accList",e);t.textContent="";for(let n of this.accounts){let r=document.createElement("div");r.className="accRow",r.dataset.username=n.username,r.title=`Log in as ${n.username}`,r.onclick=()=>{this.suppressClick||this.login(n)};let i=document.createElement("div");i.className="accHandle",i.textContent="\u2261",i.title="Drag to reorder",i.onclick=p=>p.stopPropagation(),i.onpointerdown=p=>this.startDrag(p,r);let a=document.createElement("div");a.className="accIndex";let l=document.createElement("div");l.className="accAvatar",lp(l,n.color,n.username);let c=document.createElement("div");c.className="accName",c.textContent=n.username;let d=document.createElement("div");d.className="accRemove",d.textContent="\xD7",d.title="Remove",d.onclick=p=>{p.stopPropagation(),this.removeAccount(n).catch(m=>console.error("[kute] accounts:",m))};let h=document.createElement("div");h.className="accKey",r.append(i,a,l,c,h,d),t.append(r)}this.renumber(t);let o=this.accounts.length===0;U("#accEmpty",e).hidden=!o,U("#accListHint",e).hidden=o}renumber(e){let t=ft();[...e.children].forEach((o,n)=>{U(".accIndex",o).textContent=String(n+1),U(".accKey",o).textContent=t[`account${n+1}`]?.name??""})}canReorder(){return this.legacy||!!u.hostFeatures?.includes("accounts-order")}startDrag(e,t){if(e.button!==0)return;if(e.preventDefault(),!this.canReorder()){u.showNotification("Reordering accounts needs a newer Kute",!1,3);return}let o=t.parentElement,n=[...o.children].map(a=>a.dataset.username);t.classList.add("accDragging");let r=a=>{let l=[...o.children].filter(p=>p!==t),c=l.find(p=>{let m=p.getBoundingClientRect();return a.clientY!!(t.compareDocumentPosition(p)&Node.DOCUMENT_POSITION_PRECEDING)).length;if(d!==h){for(let p of l.slice(0,d))o.insertBefore(p,t);for(let p of l.slice(d))o.append(p);this.renumber(o)}},i=()=>{window.removeEventListener("pointermove",r,!0),window.removeEventListener("pointerup",i,!0),window.removeEventListener("pointercancel",i,!0),t.classList.remove("accDragging"),this.suppressClick=!0,setTimeout(()=>{this.suppressClick=!1});let a=[...o.children].map(l=>l.dataset.username??"");a.some((l,c)=>l!==n[c])&&this.saveOrder(a)};window.addEventListener("pointermove",r,!0),window.addEventListener("pointerup",i,!0),window.addEventListener("pointercancel",i,!0)}saveOrder(e){let t=o=>{let n=e.indexOf(o);return n===-1?e.length:n};if(this.accounts.sort((o,n)=>t(o.username)-t(n.username)),this.legacy){let o=cs().sort((n,r)=>t(Pt(n.username))-t(Pt(r.username)));localStorage.setItem(ds,JSON.stringify(o));return}this.send("order",e)}loginSlot(e){let t=this.accounts[e];if(!t){u.showNotification(`No account saved in slot ${e+1}`,!1,3);return}if(localStorage.getItem("krunker_token")!==null&&localStorage.getItem("krunker_username")===t.username){u.showNotification(`Already logged in as ${t.username}`,!1,2);return}Date.now()-this.lastQuickLoginconsole.error("[kute] accounts:",o)))}updatePreview(){if(!this.shadow)return;let e=ke("#accUsername",this.shadow).value,t=ke("#accColor",this.shadow).value;lp(U("#accPreviewAvatar",this.shadow),t,e),U("#accPreviewName",this.shadow).textContent=e.trim()||"Username"}resetForm(){this.shadow&&(ke("#accColor",this.shadow).value=`#${Math.floor(Math.random()*16777215).toString(16).padStart(6,"0")}`,ke("#accUsername",this.shadow).value="",ke("#accPassword",this.shadow).value="",U("#accError",this.shadow).textContent="",this.updatePreview())}saveAccount(){if(!this.shadow)return;let e=ke("#accUsername",this.shadow).value.trim(),t=ke("#accPassword",this.shadow).value,o=ke("#accColor",this.shadow).value,n=U("#accError",this.shadow);if(e===""){n.textContent="Enter a username";return}if(t===""){n.textContent="Enter a password";return}if(this.accounts.some(r=>r.username===e)){n.textContent=`${e} is already saved`;return}if(this.legacy){let r=cs();r.push({username:ap(e),password:ap(t),color:o}),localStorage.setItem(ds,JSON.stringify(r)),this.accounts.push({username:e,color:o}),this.renderAccounts()}else this.send("add",{username:e,password:t,color:o});this.showForm(!1)}async removeAccount(e){this.asking=!0;let t=await Ce({title:"Remove account",paragraphs:[`${e.username} gets removed from this list.`,"The Krunker account itself is not touched."],stay:"Keep",leave:"Remove"});if(this.asking=!1,!t)return;let o=this.accounts.findIndex(n=>n.username===e.username);o!==-1&&(this.legacy?(localStorage.setItem(ds,JSON.stringify(cs().filter(n=>Pt(n.username)!==e.username))),this.accounts.splice(o,1),this.renderAccounts()):this.send("remove",{username:e.username}))}async login(e){this.closeMenu();let t=window.FRVR?.auth,o=localStorage.getItem("krunker_token")!==null;if(typeof t?.loginAsAnonymous!="function"||typeof t.isLoggedIn!="function"){if(o){sessionStorage.setItem(Ei,JSON.stringify({username:e.username,at:Date.now()})),window.logoutAcc(),Ao();return}}else{if(o){wn(rp),window.logoutAcc();for(let n=0;nconsole.error("[kute] accounts:",n))}window.loginOrRegister(),queueMicrotask(()=>{let n=U(".auth-toggle-btn");n.textContent?.includes("username")&&n.click(),queueMicrotask(()=>{if(this.legacy){this.legacyLogin(e.username);return}this.send("login",{username:e.username})})})}async finishSwitch(e){let t=0;for(let o=0;o=vv)){wn(rp),Ao();return}}}legacyLogin(e){let t=cs().find(r=>Pt(r.username)===e);if(!t)return;let o=ke("#accName"),n=ke("#accPass");o.value=e,n.value=Pt(t.password),o.dispatchEvent(new Event("input",{bubbles:!0})),n.dispatchEvent(new Event("input",{bubbles:!0})),U(".io-button").click()}},xv=new $i});var dp={};A(dp,{default:()=>he});var Sv,Ev,$v,Ti,cp,he,It=w(()=>{"use strict";D();Sv=4e3,Ev=5e3,$v=3,Ti=class{constructor(){this.base=typeof u.apiBase=="string"?u.apiBase:"https://kute.lol/api",this.health=null,this.down=!1,this.failures=0,this.listeners=new Set,u.settings.toggleDisableOnlineFeatures=e=>this.setOffline(e)}offline(){return u.settings?.data?.disableOnlineFeatures===!0}setOffline(e){this.health=e?Promise.resolve(!1):null,this.down=e,this.failures=0;for(let t of this.listeners)t(!e)}available(){return this.health??=this.check(),this.health}retry(){return this.health=null,this.down=!1,this.failures=0,this.available()}async check(){if(await Ne,this.offline())return this.down=!0,!1;try{let e=await fetch(`${this.base}/health`,{cache:"no-store",signal:AbortSignal.timeout(Sv)}),t=e.ok?await e.json():null;this.down=t?.ok!==!0}catch{this.down=!0}return!this.down}async request(e,t={}){let{data:o}=await this.requestStatus(e,t);return o}async requestStatus(e,t={}){if(!await this.available()||this.down||this.offline())return{status:0,data:null};try{let o=AbortSignal.timeout(Ev),n=t.signal?AbortSignal.any([t.signal,o]):o,r=await fetch(this.base+e,{...t,signal:n});r.status>=500?this.failed():r.ok&&(this.failures=0);let i=await r.json().catch(()=>null),a=r.headers.get("Retry-After"),l=0;a!==null&&(l=/^\d+(\.\d+)?$/.test(a)?Date.now()+Number(a)*1e3:Date.parse(a));let c=Number(r.headers.get("X-RateLimit-Reset"))*1e3,d=Math.max(l||0,c||0,Number(i?.resetAt)||0),h=r.status===429?Math.max(Date.now()+1e3,d||Date.now()+6e4):void 0;return{status:r.status,data:r.ok?i:null,error:r.ok?null:i,retryAt:h}}catch{return t.signal?.aborted||this.failed(),{status:0,data:null}}}failed(){this.failures++,this.failures>=$v&&(this.down=!0)}},cp=new Ti;u.api=cp;he=cp});var hp={};var pp,Cv,Mv,up,Ai=w(()=>{"use strict";D();Ae();pp=async s=>{window.openHostWindow(!1,1),await $e(".hostTb0");let e=document.querySelector(`#${s.mapId}`);if(!e){let c=document.querySelectorAll(".hostMap .hostMapName"),d=Array.from(c).find(h=>h.innerText.trim().toLowerCase()===s.mapId.toLowerCase());d&&(e=d.parentElement?.querySelector('input[type="checkbox"]')??null)}if(!e)return;e.checked||e.click(),windows[7].switchTab(2);let t=await $e("#customSnameTeam1");t.value=s.team1Name;let o=await $e("#customSnameTeam2");o.value=s.team2Name;let n=await $e("#customStmSize"),r={"1v1":"0","2v2":"1","3v3":"2","4v4":"3"};if(s.team1Players){let c=await $e("#compRosterT1");c.value=s.team1Players}if(s.team2Players){let c=await $e("#compRosterT2");c.value=s.team2Players}if(s.spectators){let c=await $e("#compRosterSpecs");c.value=s.spectators}let i=await $e("#customSspecSlots");i.value="4";let a=["ak","sniper","smg","lmg","shotgun","rev","semi","rpg","uzi","runner","deagler","crossbow","famas","blaster","survivor","infiltrator"];if(s.classes){let c=JSON.parse(s.classes);for(let[d,h]of Object.entries(c)){let p=a.indexOf(d),m=await $e(`#customSclassLim${p}`);m.value=String(h)}}let l=r[s.teamSize]||s.teamSize;if(n.value=l,s.webhook)try{let c=await $e("#customSwebhook");c.value=decodeURIComponent(s.webhook)}catch{}window.createPrivateRoom()},Cv=async s=>{let e={FRA:"de-fra",SV:"us-ca-sv",SYD:"au-syd",TOK:"jb-hnd",SIN:"sgp",NY:"us-nj",MUM:"as-mb",DAL:"us-tx",BR:"brz",ME:"me-bhn"},t=e[s.toUpperCase()]||s;window.showWindow(1);let o=document.querySelector("select.inputGrey2");if(!o){typeof window.setSetting=="function"&&window.setSetting("defaultRegion",t);return}let n=Object.values(e),r=Array.from(document.querySelectorAll("select.inputGrey2")).find(i=>Array.from(i.options).some(a=>n.includes(a.value)))||o;if(r&&r.value!==t){let i=Array.from(r.options).findIndex(a=>a.value===t);i!==-1&&(r.selectedIndex=i,r.dispatchEvent(new Event("change",{bubbles:!0,cancelable:!0})))}window.showWindow(1)},Mv=s=>{let e=s.includes("?")?s.split("?")[1]:s;return Object.fromEntries(new URLSearchParams(e).entries())},up=sessionStorage.getItem("pendingCompHost");if(up){sessionStorage.removeItem("pendingCompHost");let s=JSON.parse(up);pp(s)}u.parseArgs=async s=>{let e=s.split(" ");for(let t of e)if(t.includes("action=host-comp")){let o=Mv(t);o.region?(sessionStorage.setItem("pendingCompHost",JSON.stringify(o)),await Cv(o.region),window.location.href="https://krunker.io/"):await pp(o)}};window.chrome.webview.addEventListener("message",async s=>{s.data?.args&&await u.parseArgs(s.data.args)})});var fp={};A(fp,{CLOCK_MS:()=>Tv,EXPERIENCE:()=>us,IMPORTANT_SHARE:()=>ps,TARGET_REFRESH_MULTIPLE:()=>bt,accept:()=>ws,atLimit:()=>_o,capCandidates:()=>zi,choose:()=>fs,chooseCap:()=>_i,collapses:()=>bs,compare:()=>Pi,experienceHolds:()=>Av,flooding:()=>vs,guard:()=>so,headroom:()=>Bi,refineCaps:()=>Hi,screen:()=>Ii,stalled:()=>gs,steady:()=>no,steadyLimit:()=>Ni,steadyRungs:()=>Ln,summarize:()=>ye,unsteady:()=>gt,wins:()=>No});function Ri(s){let e=[...s].sort((o,n)=>o-n),t=Math.floor(e.length/2);return e.length%2===1?e[t]:(e[t-1]+e[t])/2}function ye(s){let e=s.filter(o=>!o.invalid),t={};for(let o of Io){let r=e.map(c=>c[o]).filter(c=>typeof c=="number"&&Number.isFinite(c)),i=[Math.min(...r),Math.max(...r)],[a,l]=hs.has(o)?i:i.reverse();t[o]={n:r.length,median:r.length>0?Ri(r):null,spread:r.length>1?Math.abs(l-a):null,worst:r.length>0?a:null,best:r.length>0?l:null}}return t}function ms(s){return s==="fps"?0:2*.1}function Pi(s,e,t){let o=e[s],n=t[s];if(o.median===null||n.median===null||o.spread===null||n.spread===null)return"unknown";let r=hs.has(s)?o.median-n.median:n.median-o.median,i=Math.max(o.spread,n.spread,ms(s)),a=Math.max(Math.abs(o.median),Math.abs(n.median))*.1;return Math.abs(r)<=i||Math.abs(r)0?"better":"worse"}function so(s,e,t,o=ms(s)){let n=e[s],r=t[s];if(n.n<2||typeof n.worst!="number"||r.median===null||r.spread===null)return"unknown";let i=hs.has(s)?r.median-n.worst:n.worst-r.median,a=Math.max(Math.abs(n.worst),Math.abs(r.median))*.1;return i>Math.max(r.spread,o)&&i>=a?"worse":"ok"}function No(s,e,t){let o=e[s],n=t[s];if(o.n<2||n.n<2||typeof o.worst!="number"||typeof n.best!="number")return!1;let r=hs.has(s)?o.worst-n.best:n.best-o.worst;return r>ms(s)&&r>=Math.max(Math.abs(o.worst),Math.abs(n.best))*.1}function Ii(s,e){if(s.invalid)return"same";let t=!1;for(let o of Io){let n=s[o],r=e[o];if(typeof n!="number"||r.median===null||r.spread===null)continue;let i=hs.has(o)?n-r.median:r.median-n,a=Math.max(Math.abs(n),Math.abs(r.median))*.1;if(!(Math.abs(i)<=Math.max(r.spread,ms(o))||Math.abs(i)0&&(t=!0)}}return t?"contender":"same"}function fs(s,e,t={}){let o=ye(s.readings),n=e.map(c=>{let d=ye(c.readings),h={};for(let f of Io)h[f]=Pi(f,d,o);let p=us.some(f=>so(f,d,o)==="worse"),m=us.find(f=>No(f,d,o))??null;return m===null&&t.fpsCounts!==!1&&No("fps",d,o)&&(m="fps"),{id:c.id,summary:d,verdicts:h,rejected:p,decidedBy:m}}),r=n.length>0&&n.every(c=>Io.every(d=>c.verdicts[d]==="unknown")),i=c=>c.decidedBy===null?Io.length:Io.indexOf(c.decidedBy),l=n.filter(c=>!c.rejected&&c.decidedBy!==null).sort((c,d)=>i(c)-i(d))[0]??null;return{winner:l?.id??s.id,changed:l!==null,inconclusive:r,decidedBy:l?.decidedBy??null,incumbent:o,judged:n}}function gs(s){return!s.invalid&&typeof s.stallMs=="number"&&s.stallMs>1e3*.1}function gt(s,e){return s.some(t=>gs(t)||!t.invalid&&e>0&&typeof t.fps=="number"&&t.fps!t.invalid).length>=2&&!gt(s,e)}function bs(s){return[...s.values()].some(e=>e.filter(gs).length>=2)}function Ln(s){return Array.from({length:4},(e,t)=>(t+1)*s)}function Ni(s,e){let t=null,o=null;for(let n of Ln(s)){if(!no(e.get(n)??[],n))break;t=o??n,o=n}return{cap:t,steadyUpTo:o}}function vs(s){let{presentMs:e,p50:t}=s;return typeof e!="number"||typeof t!="number"?!1:e-t>Math.max(2*.1,e*.1)}function _o(s){let e=s.p50,t=r=>typeof r=="number"&&typeof e=="number"?Math.max(0,r-e):null,o=vs(s)?s.presentMs-e:0,n=typeof s.inputP99=="number"?s.inputP99+o:s.inputP99;return{...s,fps:null,p99:t(s.p99),maxMs:t(s.maxMs),inputP99:n}}function mp(s){return s==="p99"||s==="maxMs"?4*.1:ms(s)}function _i(s,e,t={}){let o=p=>ye((s.get(p)??[]).map(_o)),n=p=>{let m=(s.get(p)??[]).filter(f=>!f.invalid).map(f=>f.p50).filter(f=>typeof f=="number");return m.length>0?Ri(m):null},r=o(e),i=n(e),a=new Map,l=[...s.keys()].map(p=>{let m=o(p),f=n(p);if(p===e)return{cap:p,summary:m,frameMs:f,netMs:null,outcome:"yours"};if(gt(s.get(p)??[],p))return{cap:p,summary:m,frameMs:f,netMs:null,outcome:"not steady"};let g=Object.fromEntries(Li.map(H=>[H,Pi(H,m,r)])),b=e===0||p>0&&pNo(H,m,r)?(r[H].median??0)-(m[H].median??0):0,E=k("taskP99"),L=t.trade===!0&&so("inputP99",m,r)==="worse"?(m.inputP99.median??0)-(r.inputP99.median??0):0,x=g.inputP99==="unknown"?null:k("inputP99")-L,$=E+(x??i-f);a.set(p,E+(x??0));let I=L>0&&E>L,_="not better";return Li.some(H=>(H!=="inputP99"||!I)&&so(H,m,r,mp(H))==="worse")?_="worse":$>2*.1&&(_="better"),{cap:p,summary:m,frameMs:f,netMs:$,gains:{task:E,input:x},outcome:_}}),c=l.filter(p=>p.outcome==="better").sort((p,m)=>(m.netMs??0)-(p.netMs??0));if(c.length>0)return{winner:c[0].cap,changed:!0,decidedBy:"net",judged:l};let d=l.find(p=>p.cap===t.prefer&&p.cap!==e),h=d!==void 0&&(e===0||d.capd.filter(h=>!h.invalid);if(r(s).length<2)return{keep:!1,failed:"reference"};if(r(e).length<2)return{keep:!1,failed:"result"};let i=ye(s.map(_o)),a=ye(e.map(_o)),l=so("fps",ye(e),ye(s))==="worse";if(gt(e,o)&&!(gt(s,t)&&No("stallMs",a,i)&&!l))return{keep:!1,failed:"unsteady"};let c;for(let d of Li){let h=so(d,a,i,mp(d));if(h==="worse"&&d==="inputP99"&&n&&No("taskP99",a,i)){let p=(i.taskP99.median??0)-(a.taskP99.median??0),m=(a.inputP99.median??0)-(i.inputP99.median??0);if(p>m){c={task:p,input:m};continue}}if(h==="worse")return{keep:!1,failed:d};if(h==="unknown"&&d!=="inputP99")return{keep:!1,failed:"reference"}}if(so("inputP99",a,i)==="unknown"){let d=p=>Ri(r(p).map(m=>m.p50??0));if(d(e)-d(s)>Math.max(2*.1,d(e)*.1))return{keep:!1,failed:"frame"}}return t===o&&l?{keep:!1,failed:"fps"}:{keep:!0,failed:null,...c?{traded:c}:{}}}function Bi(s,e){return 1+Math.max(2*Math.abs(1-s),e)}function Av(s,e){let t=1e3/e,o=s.p99.median,n=s.stallMs.median;return(o===null||o<=t)&&(n===null||n<=t)}function zi({hz:s,capacity:e,current:t}){let o=i=>e===null||i<=e,n=[3*s,2*s,s].filter(o);return e!==null&&n.push(Math.round(e*.9)),t>0&&n.push(t),[0,...[...new Set(n.map(i=>Math.round(i)).filter(i=>i>0))].sort((i,a)=>a-i)]}function Hi(s,e,t,o){let n=l=>l===0?t??1/0:l,r=[...new Set(s)].sort((l,c)=>n(l)-n(c)),i=r.indexOf(e),a=[];for(let l of[r[i-1],r[i+1]]){if(l===void 0)continue;let c=(n(e)+n(l))/2;Number.isFinite(c)&&a.push(Math.round(c/o)*o)}return[...new Set(a)].filter(l=>l>0&&l!==e&&!s.includes(l))}var ps,bt,Tv,us,Io,hs,Li,ks=w(()=>{"use strict";ps=.1,bt=3,Tv=.1,us=["taskP99","inputP99","p99","stallMs","maxMs"],Io=[...us,"fps"],hs=new Set(["fps"]);Li=["taskP99","inputP99","p99","stallMs","maxMs"]});var vp={};A(vp,{PIPELINE:()=>Oe,cancel:()=>Di,currentPipeline:()=>Pn,measureCaps:()=>qi,searchPipeline:()=>Fi});function Pn(){return Object.fromEntries(Oe.map(s=>[s.setting,(u.running?.[s.setting]??u.settings.data[s.setting])!==!1]))}function bp(s,e){return s!=="hardFlip"||!e.hardFlip?null:u.settings.data.obsCapturePlugin===!0?"kept, OBS capture needs it":null}function ct(s,e){let t=Oe.map(r=>`${r.key}=${s[r.setting]?1:0}`),o=Rv.map(r=>`${r.key}=${u.settings.data[r.setting]??r.fallback?1:0}`),n=`limiter=${u.settings.data.patchFrameLimiter===!1?"hook":"viz"}`;return[...t,...o,n,e].filter(r=>r!=="").join(",")}function Oi(s,e,t){let o=n=>typeof n=="number"&&Number.isFinite(n)?n:null;return{fps:o(s?.fps),p50:o(s?.p50),p99:o(s?.p99),maxMs:o(s?.maxMs),stallMs:o(s?.stallMs),taskP99:o(e?.p99),inputP99:null,presentMs:o(t?.p50),invalid:!s||!(s.fps>0)}}function ys(s,e){let t=Date.now()*100+ ++_v%100;return new Promise(o=>{let n={timer:0},r=i=>{i.data?.benchMatrix===void 0||i.data.benchRun!==t||(clearTimeout(n.timer),window.chrome.webview.removeEventListener("message",r),o(i.data.cancelled?null:i.data.benchMatrix))};n.timer=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),window.chrome.webview.postMessage("bench-cancel"),o(null)},e),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(`run-bench-matrix ${t} ${JSON.stringify(s)}`)})}function Di(){window.chrome.webview.postMessage("bench-cancel")}async function Fi({hz:s,progress:e,cancelled:t}){let o=Pn();e("Testing the client (1 of 4)",0);let n=await ys([ct(o,`hz=${s}`)],Rn),r=Oi(n?.[0]?.page?.stats,n?.[0]?.page?.otherTasks);if(t()||r.invalid||r.fps===null)return null;let i=n?.[0]?.page?.load,a=Math.min(gp[1],Math.max(gp[0],r.fps/(s*3))),l=`hz=${s},draws=${Math.round(i.draws*a)},cpu=${Math.round(i.cpuIterations*a)}`,c=Oe.filter($=>bp($.setting,o)===null).map($=>({entry:$,pipeline:{...o,[$.setting]:!o[$.setting]}}));e("Testing the client (2 of 4)",.15);let d=await ys([ct(o,l),...c.map($=>ct($.pipeline,l)),ct(o,l)],Rn*(c.length+2));if(t()||d===null)return null;let h=$=>Oi($?.page?.stats,$?.page?.otherTasks,$?.present),p=[h(d[0]),h(d[d.length-1])],m=ye(p),f=Lv.some($=>{let{median:I,spread:_}=m[$];return I!==null&&_!==null&&_>Math.abs(I)*.1}),g=[{id:"current",label:"As you had it",pipeline:o,readings:p,outcome:"current"}];for(let $ of Oe){let I=bp($.setting,o);I!==null&&g.push({id:$.setting,label:`${$.label} off`,pipeline:o,readings:[],outcome:I})}let b=[];for(let[$,I]of c.entries()){let _=h(d[$+1]),H=_.invalid?"failed":Ii(_,m);f&&!_.invalid&&(H="contender");let G=`${I.entry.label} ${I.pipeline[I.entry.setting]?"on":"off"}`,J={id:I.entry.setting,label:G,pipeline:I.pipeline,readings:[_],outcome:Nv[H]};g.push(J),H==="contender"&&b.push(J)}if(b.length===0)return{winner:o,changed:!1,decidedBy:null,rows:g,common:l,capacity:m.fps.median};e("Testing the client (3 of 4)",.55);let v=await ys([...b.map($=>ct($.pipeline,l)),ct(o,l)],Rn*(b.length+1));if(t()||v===null)return null;for(let[$,I]of b.entries())I.readings.push(h(v[$]));p.push(h(v[v.length-1]));let k=fs({id:"current",readings:p},b.map($=>({id:$.id,readings:$.readings})));for(let $ of b){let I=k.judged.find(_=>_.id===$.id);$.outcome="not better",I?.rejected?$.outcome="worse":I?.decidedBy&&($.outcome="better")}let E=b.filter($=>$.outcome==="better"),L=g.find($=>$.id===k.winner)??g[0];if(E.length>1){e("Testing the client (4 of 4)",.8);let $={...o};for(let J of E)$[J.id]=J.pipeline[J.id];let I=await ys([ct($,l),ct(o,l),ct($,l)],Rn*3);if(t()||I===null)return null;p.push(h(I[1]));let _={id:"combined",label:E.map(J=>J.label).join(" and "),pipeline:$,readings:[h(I[0]),h(I[2])],outcome:"not better"};g.push(_);let H=fs({id:L.id,readings:L.readings},[{id:_.id,readings:_.readings}]),G=fs({id:"current",readings:p},[{id:_.id,readings:_.readings}]);H.changed&&G.changed&&(_.outcome="better",L=_,k=G)}let x=L.id!=="current";return{winner:L.pipeline,changed:x,decidedBy:x?k.decidedBy:null,rows:g,common:l,capacity:ye(L.readings).fps.median}}async function qi({pipeline:s,common:e,caps:t,cancelled:o}){let n=`${ct(s,e)},caps=${t.join(".")},rounds=2,ms=${Iv}`,i=(await ys([n],Pv))?.[0]?.page?.caps;if(o()||!Array.isArray(i))return null;let a=new Map(t.map(l=>[l,[]]));for(let l of i)a.get(Number(l.cap))?.push(Oi(l.stats,l.otherTasks));return a}var Lv,Oe,Rv,Rn,Pv,Iv,gp,Nv,_v,Ki=w(()=>{"use strict";D();ks();Lv=["fps","taskP99","p99"],Oe=[{setting:"hardFlip",key:"hook",label:"DXGI Swapchain Hook"},{setting:"patchFramePacing",key:"pacing",label:"Frame Pacing"},{setting:"patchCanvasBufferCache",key:"canvas",label:"WebGL Buffer Cache"},{setting:"patchHighQoS",key:"qos",label:"Game Process at High QoS"}].filter(s=>u.platform!=="linux"||s.setting!=="hardFlip"&&s.setting!=="patchHighQoS"),Rv=[{setting:"patchInputPriority",key:"inprio",fallback:!0},{setting:"patchRawInputMovement",key:"rawinput",fallback:!0},{setting:"patchAudioParamCoalesce",key:"coalesce",fallback:!0},{setting:"audioFix",key:"panner",fallback:!1},{setting:"uncapFps",key:"uncap",fallback:!0}],Rn=2e4,Pv=7e4,Iv=1500,gp=[.25,16],Nv={contender:"better",same:"not better",worse:"worse",failed:"failed"};_v=0});var kp={};A(kp,{MIN_RESOLUTION:()=>xs,SIGNIFICANT_RESOLUTION:()=>wp,SIGNIFICANT_SETTING:()=>In,decide:()=>Nn});function Nn({capacity:s,hz:e,headroom:t,halfResolutionGain:o,settings:n}){let r=e*3,i=r*t,a=s>=i,l="unknown";o!==null&&(l=o>=wp?"gpu":"cpu");let c=[],d=s;if(!a){let h=n.filter(p=>p.gain!==null&&p.steady&&p.current!==p.cheap&&p.gain>=In).sort((p,m)=>(m.gain??0)-(p.gain??0));for(let p of h){if(d>=i)break;let m=p.gain??1;d*=m,c.push({id:p.id,label:p.label,value:p.cheap,reason:`measured +${Math.round((m-1)*100)} %`})}}return{target:r,needed:i,holds:a,regime:l,predictedFps:d,tuneResolution:!a&&l==="gpu"&&d{"use strict";ks();In=1.05,wp=1.1,xs=.75});var Yi={};A(Yi,{ALL_IDS:()=>Gi,GAME_FRAME_CAP:()=>wt,PRESET:()=>Ui,RESOLUTION:()=>ro,SETTINGS:()=>vt,label:()=>Wi,opposite:()=>Vi,read:()=>Es,resetCache:()=>_n,write:()=>Me});function Wi(s){return vt.find(e=>e.id===s)?.label??s}function Bv(){if(Ss)return Ss;let s=window.windows[0],e=s.tabIndex,t=s.settingType,o="";try{s.settingType="advanced";for(let n=0;n{"use strict";vt=[{id:"postProcessing",label:"Post Processing",cheap:!1},{id:"shadowsDynamic",label:"Dynamic Shadows",cheap:!1},{id:"softShad",label:"Soft Shadows",cheap:!1,needsReload:!0},{id:"highResShad",label:"High-Res Shadows",cheap:!1,needsReload:!0},{id:"shadows",label:"Shadows",cheap:!1},{id:"antiAlias",label:"Antialiasing",cheap:!1,needsReload:!0},{id:"reflection",label:"Reflection Quality",cheap:"1",needsReload:!0},{id:"lighting",label:"Lighting",cheap:"0",needsReload:!0},{id:"weaponShine",label:"Weapons Shine",cheap:!1},{id:"ambientShading",label:"Old Shading",cheap:!1},{id:"particles",label:"Particles",cheap:!1,fightOnly:!0},{id:"showExplo",label:"Explosions",cheap:!1,fightOnly:!0},{id:"textureAnim",label:"Texture Animations",cheap:!1},{id:"objectAnim",label:"Object Animations",cheap:!1},{id:"bulletCasings",label:"Bullet Casings",cheap:!1,fightOnly:!0},{id:"impactHoles",label:"Bullet Impact Holes",cheap:!1,fightOnly:!0},{id:"noPaintAnim",label:"Disable Animated Paints",cheap:!0,needsReload:!0},{id:"mapDet",label:"Map Details",cheap:!1,needsReload:!0},{id:"lowSpec",label:"Low Spec",cheap:!0}],Ui={postProcessing:!1,particles:!1,showExplo:!1,bulletCasings:!1,impactHoles:!1,reflection:"1",lighting:"0",softShad:!1,highResShad:!1,noPaintAnim:!0},ro="resolution",wt="updateRate",Gi=[...vt.map(s=>s.id),ro,wt];Ss=null});var xp,yp=w(()=>{xp=`

      Auto-Detect

      Don't touch mouse or keyboard. Escape cancels
      Undo
      Details
      Advanced
      Run now
      OK
        `});var Sp={};A(Sp,{activity:()=>_t,hostLobby:()=>$s,inRoom:()=>Bn,spawn:()=>Cs,spawned:()=>Ji});function _t(){try{return window.getGameActivity?.()??{}}catch{return{}}}function Bn(s){let e=_t();return!!s&&!!e.custom&&e.id===s}async function $s(){if(typeof window.openHostWindow!="function"||typeof window.createPrivateRoom!="function")return null;let s=_t().id;for(let e=0;e<4;e++){window.openHostWindow(!1,0),await Nt(800),window.windows[7]?.switchTab?.(0),await Nt(300);let t=[...document.querySelectorAll("#windowHolder input[id^=gameMap]")],o=document.querySelector("#makePrivate");if(t.length===0||!o)return window.closWind?.(),null;for(let r of t)r.checked!==(r.id===Hv)&&r.click();let n=!o.checked;n&&o.click();try{window.createPrivateRoom();for(let r=0;r<32;r++){await Nt(250);let i=_t();if(i.custom&&i.id&&i.id!==s&&i.map)return i.id}}finally{n&&o.checked&&o.click()}window.closWind?.(),await Nt(1500)}return null}function Ji(){let s=document.querySelector("#instructions");return!!document.pointerLockElement||s!==null&&getComputedStyle(s).display==="none"}async function Cs(s){for(let o=0;o<40&&!(_t().map&&document.querySelector("#instructions"));o++)await Nt(250);await Nt(500);let e=Math.round(window.innerWidth/2),t=Math.round(window.innerHeight/2);for(let o=0;o<3&&!Ji();o++){if(!Bn(s))return!1;window.chrome.webview.postMessage(`click, ${e}, ${t}`),await Nt(1200)}return await Nt(800),Ji()}var Hv,Nt,zn=w(()=>{"use strict";Hv="gameMap0",Nt=s=>new Promise(e=>{setTimeout(e,s)})});var Cp={};A(Cp,{REPLAY_CIRCLE_MS:()=>Bt,takeInputDiagnostics:()=>Hn,takeReading:()=>Zi});function Hn(){let s=Qe;return Qe=$p(),s}function Zi({ms:s,hz:e,replay:t}){return new Promise((o,n)=>{let r=new to,i=new oo,a=new os,l=()=>document.hasFocus()&&document.visibilityState==="visible",c=document.pointerLockElement!==null,d=l()?null:"the window was not in front",h=()=>{l()||(d??="the window lost focus")},p=()=>{document.pointerLockElement!==null!==c&&(d??=c?"the game let go of the mouse":"the game took the mouse")},m=()=>{window.removeEventListener("blur",h),document.removeEventListener("visibilitychange",h),document.removeEventListener("pointerlockchange",p)};window.addEventListener("blur",h),document.addEventListener("visibilitychange",h),document.addEventListener("pointerlockchange",p);let f=setTimeout(()=>{m(),i.stop(),a.stop(),window.chrome.webview.postMessage("input-replay-stop"),n(new Error("the game stopped drawing frames"))},s+5e3);i.start(),a.start(),Qe.readings++,t&&c&&(Qe.asked++,window.chrome.webview.postMessage(`input-replay, ${s}`));let g=performance.now(),b=()=>{let v=performance.now();if(r.frame(v),v-g=Ep&&Qe.withInput++,L===null&&(d??="too few frames"),d!==null&&(Qe.invalid[d]=(Qe.invalid[d]??0)+1),o({fps:L?.fps??null,p50:L?.p50??null,p99:L?.p99??null,maxMs:L?.maxMs??null,stallMs:L?.stallMs??null,taskP99:k.p99,inputP99:E.events>=Ep?E.p99:null,invalid:d!==null,...d===null?{}:{why:d}})};requestAnimationFrame(b)})}var Bt,Ep,$p,Qe,Qi=w(()=>{"use strict";yn();Bt=600,Ep=20,$p=()=>({readings:0,asked:0,withInput:0,pageEvents:0,hostSteps:0,ended:{},invalid:{}}),Qe=$p();window.chrome.webview.addEventListener("message",s=>{let e=s.data?.inputReplay;e&&(Qe.hostSteps+=Number(e.sent)||0,Qe.ended[e.reason]=(Qe.ended[e.reason]??0)+1)})});var ia={};A(ia,{loggedIn:()=>As});function zt(){try{return JSON.parse(localStorage.getItem(qn)??"null")}catch{return null}}function Fe(s){localStorage.setItem(qn,JSON.stringify(s))}function As(){return document.querySelector("#signedInHeaderBar")!==null}function Ht(s,e){u.settings.data[s]=e,window.chrome.webview.postMessage(`set-config, ${s}, ${e}`);for(let t of[`#${s}`,`#slid_input_${s}`]){let o=document.querySelector(t);o&&(o.type==="checkbox"?o.checked=e===!0:o.value=String(e))}}function ut(s){return s==null?"default":String(s)==="true"?"on":String(s)==="false"?"off":String(s)}function Gv(){let s=/--autodetect-dev=(\S+)/.exec(u.launchArgs??""),e={};for(let t of s?.[1].split(",")??[]){let[o,n]=t.split(":");o==="hz"&&(e.hz=Number(n)),o==="battery"&&(e.battery=!0),o==="laptop"&&(e.laptop=!0),o==="force"&&(e.force=n),o==="collapse"&&(e.collapse=Number(n))}return e}function Pp(s){let e=Math.round((s-1)*100);return`${e>0?"+":""}${e} %`}function yt(s,e=1){return s===null?"?":s.toFixed(e)}function Dt(s){return s>0?`${s} FPS`:"no limit"}function Wv(s,e,t){if(s===null)return"measured as smooth, with fewer frames to draw";let o=`${yt(e[s].median)} to ${yt(t[s].median)}`;return{taskP99:`the game reacts sooner: other work waited up to ${o} ms`,inputP99:`mouse input waits ${o} ms`,p99:`slowest frames ${o} ms`,stallMs:`stutter ${o} ms per second`,maxMs:`longest frame ${o} ms`,fps:`${yt(e.fps.median,0)} to ${yt(t.fps.median,0)} FPS`}[s]}function Ip(s,e=""){return s===null?"-":`${e}${s.toFixed(1)} ms`}function Ot(s,e=""){return s===null?"-":`${e}${s.toFixed(1)}`}function sa(s){return`${yt(s.fps.median,0)}${Ot(s.p99.median)}${Ot(s.taskP99.median)}${Ot(s.inputP99.median)}`}function Kn(s){let e=s.filter(o=>typeof o=="number").sort((o,n)=>o-n);if(e.length===0)return null;let t=Math.floor(e.length/2);return e.length%2===1?e[t]:(e[t-1]+e[t])/2}function Vv(s){if(!s||s.readings===0)return"";if(s.withInput>0)return`

        Input test: ${s.withInput} of ${s.readings} readings in the match had mouse input from Kute (${s.hostSteps} steps sent, ${s.pageEvents} seen by the game).

        `;let e=Object.entries(s.ended).filter(([o])=>o!=="done"&&o!=="stopped").map(([o,n])=>`${o}: ${n}x`).join(", "),t="the game did not hold the mouse when the readings started";return s.asked>0&&(t=e||`Kute sent ${s.hostSteps} steps, the game saw ${s.pageEvents} mouse events`),`

        The input test did not reach the game (${t}). Mouse wait and settings that only cost in a fight were not measured.

        `}function dt(s,e){let t=s.filter(r=>typeof r=="number").map(Math.round);if(t.length===0)return"-";let[o,n]=[Math.min(...t),Math.max(...t)];return o===n?`${o} ${e}`:`${o} to ${n} ${e}`}function Yv(s){let e=[[`As you had it (${Dt(s.beforeCap)})`,s.played??[]],["no limit, first readings",s.unlimited??[]],...s.caps.filter(d=>d.where==="test match").map(d=>[Dt(d.cap),d.readings??[]])],{render:t=null,display:o=null}=s.adapters??{},n=t!==null&&o!==null&&t!==o,r=d=>{let h=(d?.nvidia??[]).map(p=>p.clockMhz).filter(p=>typeof p=="number");return h.length>0?Math.max(...h):null},i=d=>{let h=(d?.nvidia??[]).reduce((m,f)=>m|(f.heldBack??0),0),p=[[1,"heat"],[2,"power limit"],[4,"battery"],[16,"weak power supply"]].filter(([m])=>(h&Number(m))!==0).map(([,m])=>m);return p.length>0?p.join(", "):h===0?"no":`yes (${h})`},a=[...s.played??[],...s.unlimited??[]].some(d=>(d.load?.nvidia??[]).length>0),l=e.filter(([,d])=>d.some(h=>h.load)).map(([d,h])=>{let p=h.map(f=>f.load),m=(f,g)=>dt(p.map(b=>f===null?null:b?.gpu?.[f]?.[g]),"%");return`${d}${dt(h.map(f=>f.fps),"")}${dt(p.map(f=>f?.cpuBusy),"%")} - ${dt(p.map(f=>f?.cpuSpeed),"%")}${m(t,"render")}${a?`${dt(p.map(r),"MHz")}`:""} + `;let o=document.createElement("div");o.id="aboutPopupHost",t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=s.default;let r=n.querySelector("#aboutLogo");r&&(r.src=e.default);let i=n.querySelector("#aboutVersion");i&&(i.textContent=`Version ${u.version}`);for(let c of n.querySelectorAll("[data-url]"))c.addEventListener("click",()=>window.chrome.webview.postMessage(`open-url, ${c.getAttribute("data-url")}`));let a=new AbortController,l=()=>{a.abort(),t.remove()};n.querySelector("#aboutClose")?.addEventListener("click",l),t.addEventListener("mousedown",c=>{c.target===t&&l()}),document.addEventListener("keydown",c=>{c.key==="Escape"&&l()},{signal:a.signal}),document.body.append(t)}var gi=w(()=>{"use strict";F();u.showAboutPopup=Jb});var wi={};A(wi,{default:()=>ov});function op(){if(!document.getElementById("signedInHeaderBar"))return null;try{return localStorage.getItem("krunker_username")||null}catch{return null}}function bi(){try{return localStorage.getItem(Zb)??""}catch{return""}}var Zb,Qb,ev,tv,vi,ov,ki=w(()=>{"use strict";F();Zb="kro_setngss_endMessage",Qb="slid_endMessage",ev="playerHeaderEl",tv=500;vi=class{constructor(){this.account=void 0,this.header=new MutationObserver(()=>this.check()),this.saveTimer=0,this.editedFor=null,this.onInput=e=>{!(e.target instanceof HTMLInputElement)||e.target.id!==Qb||!this.account||(this.editedFor=this.account,clearTimeout(this.saveTimer),this.saveTimer=setTimeout(()=>this.flush(),tv))},u.settings.toggleAccountEndMessage=e=>this.toggle(e,!0),this.toggle(!!u.settings.data.accountEndMessage,!1)}get messages(){return{...u.settings.data.endMessages}}save(e){u.settings.data.endMessages=e,window.chrome.webview.postMessage(`set-config-json endMessages ${JSON.stringify(e)}`)}remember(e,t){let{messages:o}=this;(o[e]??"")!==t&&(t?o[e]=t:delete o[e],this.save(o))}flush(){clearTimeout(this.saveTimer),this.editedFor&&this.remember(this.editedFor,bi()),this.editedFor=null}check(){let e=op();if(e===this.account)return;this.flush(),this.account=e;let t=e?this.messages[e]??"":"";bi()!==t&&window.setSetting("endMessage",t)}toggle(e,t){if(this.header.disconnect(),document.removeEventListener("input",this.onInput,!0),!e){this.flush(),this.account=void 0;return}let o=op();if(t&&o){let r=bi();this.remember(o,r),u.showNotification(r?`Kept "${r}" for ${o}. Other accounts send nothing until you give them one`:`End messages are now per account, ${o} has none`,!1,6)}document.addEventListener("input",this.onInput,!0);let n=document.getElementById(ev);n?this.header.observe(n,{childList:!0}):console.error("[kute] end message: no account header"),this.check()}},ov=new vi});var sp=we((rS,sv)=>{sv.exports='

        '});var np={};A(np,{confirmPopup:()=>Ce});async function Ce(s){let e=await Promise.resolve().then(()=>ue(sp(),1)),t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default;let r=i=>n.querySelector(`#${i}`);r("confirmTitle").textContent=s.title;for(let i of s.paragraphs){let a=document.createElement("p");a.textContent=i,r("confirmText").append(a)}return r("confirmStay").textContent=s.stay,r("confirmLeave").textContent=s.leave,new Promise(i=>{let a=new AbortController,l=c=>{a.abort(),t.remove(),i(c)};r("confirmStay").onclick=()=>l(!1),r("confirmLeave").onclick=()=>l(!0),t.addEventListener("mousedown",c=>{c.target===t&&l(!1)}),document.addEventListener("keydown",c=>{c.key==="Escape"&&l(!1)},{signal:a.signal}),document.body.append(t)})}var Pt=w(()=>{"use strict"});var ip,rp=w(()=>{ip='

        Hotkeys

        Click a key, then press the new one. Escape cancels.
        Ctrl, Alt and Shift combinations work too.

        Lobby and window

        Toggles and windows

        Quick account login

        Reset to defaults
        Done
        '});var $i={};A($i,{bindings:()=>gt,default:()=>bv,matches:()=>ds});function lv(){if(u.settings.data.chatLogs===!1||!u.chatLogs){u.showNotification("Chat Logs is off in the settings",!1,3);return}u.chatLogs.toggle()}function cv(s){if(u.settings.data.accountManager===!1||!u.accounts){u.showNotification("Account Manager is off in the settings",!1,3);return}u.accounts.loginSlot(s)}function xi(){return!!u.hostFeatures?.includes(rv)}function gt(){let s=xi()&&u.settings.data.hotkeys||{};return Object.fromEntries(Rn.map(e=>[e.id,s[e.id]??(e.id in s?null:e.fallback)]))}function ap(s,e){return!!e&&s.keyCode===e?.key&&s.ctrlKey===e.ctrl&&s.altKey===e.alt&&s.shiftKey===e.shift}function ds(s,e){return ap(s,gt()[e]??null)}function uv(s){let e=(t,o)=>{try{let n=window.localStorage.getItem(t);return n===null?o:Number(n)}catch{return o}};return dv.filter(([t,,o,n])=>e(`cont_${t}`,o)===s||e(`cont_${t}_alt`,n)===s).map(([,t])=>t)}function hv(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`Num ${s-96}`:s>=112&&s<=135?`F${s-111}`:pv[s]??`Key ${s}`}function mv(s){let{code:e}=s,t=e;return/^Key[A-Z]$/.test(e)?t=e.slice(3):/^Digit\d$/.test(e)?t=e.slice(5):e.startsWith("Numpad")?t=`Num ${e.slice(6)}`:e.startsWith("Arrow")?t=e.slice(5):e||(t=hv(s.keyCode)),[s.ctrlKey&&"Ctrl",s.altKey&&"Alt",s.shiftKey&&"Shift",t].filter(Boolean).join("+")}function fv(s,e,t){let o=[],n=Rn.filter(i=>{let a=t[i.id];return i.id!==s.id&&a!==null&&a.key===e.key&&a.ctrl===e.ctrl&&a.alt===e.alt&&a.shift===e.shift});n.length>0&&o.push(`Also bound to Kute's ${n.map(i=>i.label).join(", ")}, pick another key.`);let r=uv(e.key);if(r.length>0){let i=r.length>3?` and ${r.length-3} more`:"";o.push(`Krunker uses this key for ${r.slice(0,3).join(", ")}${i}, the game still gets it.`)}return o}function gv(){let s=document.activeElement;for(;s?.shadowRoot?.activeElement;)s=s.shadowRoot.activeElement;return s instanceof HTMLInputElement||s instanceof HTMLTextAreaElement||s instanceof HTMLElement&&s.isContentEditable}var rv,iv,av,Io,yi,Rn,dv,pv,Si,Ei,bv,No=w(()=>{"use strict";rp();F();To();rv="hotkeys",iv=131,av=new Set(["Shift","Control","Alt","Meta","AltGraph"]);Io=(s,e)=>({key:s,ctrl:!1,alt:!1,shift:!1,name:e}),yi=s=>({id:`account${s}`,label:`Account ${s}`,note:`logs in account ${s} of the Accounts list`,group:"account",fallback:{key:48+s,ctrl:!0,alt:!0,shift:!1,name:`Ctrl+Alt+${s}`},run:()=>cv(s-1)}),Rn=[{id:"newLobby",label:"New lobby",group:"window",fallback:Io(115,"F4")},{id:"matchmaker",label:"Matchmaker",note:"new lobby while the Matchmaker setting is off",group:"window",fallback:Io(117,"F6")},{id:"reload",label:"Reload",group:"window",fallback:Io(116,"F5")},{id:"fullscreen",label:"Fullscreen",group:"window",fallback:Io(122,"F11")},{id:"devtools",label:"Developer tools",group:"window",fallback:Io(123,"F12")},{id:"toggleSpotify",label:"Spotify overlay",note:"on and off",group:"toggle",fallback:null,setting:"spotifyOverlay"},{id:"toggleKeystrokes",label:"Keystrokes",note:"on and off",group:"toggle",fallback:null,setting:"keystrokes"},{id:"chatLogs",label:"Chat logs",note:"open and close",group:"toggle",fallback:Io(112,"F1"),run:lv},yi(1),yi(2),yi(3)],dv=[["0","Forward",87,-1],["1","Back",83,-1],["2","Left",65,-1],["3","Right",68,-1],["jumpKey","Jump",32,-1],["crouchKey","Crouch",16,-1],["reloadKey","Reload",82,-1],["swapKey","Swap weapon",69,-1],["primKey","Primary weapon",84,-1],["meleeKey","Melee",81,-1],["equipKey","Equip",67,-1],["dropKey","Drop",90,-1],["inspKey","Inspect",88,-1],["wepVisKey","Hide weapon",-1,-1],["sprayKey","Spray",70,-1],["sprayWheelKey","Spray wheel",70,-1],["interactKey","Interact",71,-1],["interactSecKey","Second interact",72,-1],["confirmKey","Confirm",75,-1],["resetKey","Reset",66,-1],["resetLastKey","Reset to last",78,-1],["markPositionKey","Mark position",10002,-1],["chatKey","Chat",13,-1],["voiceKey","Voice chat",86,-1],["pListKey","Player list",18,-1],["sBoardKey","Scoreboard",9,-1],["hidePlayersKey","Hide players",-1,-1],["kickVoteYKey","Kick vote yes",49,-1],["kickVoteNKey","Kick vote no",50,-1],["kpdVoteYKey","Vote yes",89,-1],["kpdVoteNKey","Vote no",78,-1],["kpdVisionKey","Vision",187,-1],["specFreeKey","Spectate free camera",70,-1],["specObjKey","Spectate objective",72,-1],["specFirstKey","Spectate first person",82,-1],["specNamesKey","Spectate names",77,-1],["specMiniMap","Spectate minimap",189,-1],["specFocusKey","Spectate focus",190,-1],["propKey","Prop",80,-1],["propRandKey","Random prop",77,-1],["propRotKey","Rotate prop",82,-1],["propRotRKey","Rotate prop back",78,-1],["18","Streak 1",49,-1],["19","Streak 2",50,-1],["20","Streak 3",51,-1],...[0,1,2,3,4,5].map(s=>[`taunt${s}`,`Taunt ${s+1}`,49+s,-1]),...["27","28","29","30","31","32"].map((s,e)=>[s,`Toggle ${e+1}`,-1,-1]),...["43","44","45","46","47","48"].map((s,e)=>[s,`Chat message ${e+1}`,-1,-1])];pv={8:"Backspace",9:"Tab",13:"Enter",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",45:"Insert",46:"Delete"};Si=class{constructor(e){this.owner=e,this.waiting=null,this.overlay=document.createElement("div"),this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");this.overlay.append(t),this.shadow=t.attachShadow({mode:"open"}),this.shadow.innerHTML=ip,document.body.append(this.overlay),this.onKey=this.onKey.bind(this),window.addEventListener("keydown",this.onKey,!0),this.overlay.addEventListener("click",o=>{o.target===this.overlay&&this.close()}),this.element("hkDone").onclick=()=>this.close(),this.element("hkReset").onclick=()=>{this.owner.save({}),this.stopWaiting(),this.render()},this.render()}element(e){return this.shadow.querySelector(`#${e}`)}startWaiting(e){this.stopWaiting(),this.waiting=e,this.owner.capturing=!0,window.chrome.webview.postMessage("hotkeys-pause, true"),this.render()}stopWaiting(){this.waiting!==null&&(this.waiting=null,this.owner.capturing=!1,window.chrome.webview.postMessage("hotkeys-pause, false"),this.render())}assign(e,t){this.owner.save({...gt(),[e]:t}),this.stopWaiting(),this.render()}row(e,t){let o=t[e.id],n=document.createElement("div");n.className="hkRow";let r=document.createElement("div");if(r.className="hkLabel",r.textContent=e.label,e.note){let p=document.createElement("span");p.className="hkNote",p.textContent=e.note,r.append(p)}let i=this.waiting===e.id,a=document.createElement("div");a.className=`hkKey${i?" hkWaiting":""}${o?"":" hkNone"}`,a.textContent=i?"Press a key":o?.name??"No key",a.title="Click, then press the new key. Escape cancels",a.onclick=()=>this.startWaiting(e.id);let l=document.createElement("div");l.className="hkClear",l.textContent="Clear",l.style.visibility=o?"":"hidden",l.onclick=()=>this.assign(e.id,null),n.append(r,a,l);let c=o?fv(e,o,t):[];if(c.length===0)return n;let d=document.createElement("div");d.className="hkWarn",d.textContent=c.join(" ");let h=document.createElement("div");return h.append(n,d),h}render(){let e=gt();for(let t of["window","toggle","account"]){let o=Rn.filter(n=>n.group===t).map(n=>this.row(n,e));this.element(`hkGroup-${t}`).replaceChildren(...o)}}onKey(e){if(this.waiting===null){e.key==="Escape"&&this.close();return}if(e.preventDefault(),e.stopImmediatePropagation(),e.key==="Escape"){this.stopWaiting();return}av.has(e.key)||e.keyCode===iv||e.keyCode===0||this.assign(this.waiting,{key:e.keyCode,ctrl:e.ctrlKey,alt:e.altKey,shift:e.shiftKey,name:mv(e)})}close(){this.stopWaiting(),window.removeEventListener("keydown",this.onKey,!0),this.overlay.remove()}},Ei=class{constructor(){this.capturing=!1,u.hotkeys={edit:()=>this.edit()},window.addEventListener("keydown",e=>this.onKey(e),!0)}onKey(e){if(this.capturing||e.repeat||gv()||!xi())return;let t=gt();for(let o of Rn)o.group==="window"||!ap(e,t[o.id])||(o.run?o.run():o.setting&&this.flip(o.setting,o.label))}flip(e,t){if(Mo(u.settings.data,e)){u.showNotification(`${t} is off in performance mode`,!1,3);return}let o=!u.settings.data[e];u.settings.changeSetting(e,o,!1),u.showNotification(`${t} ${o?"on":"off"}`,!1,2)}save(e){u.settings.data.hotkeys=e,window.chrome.webview.postMessage(`set-config-json hotkeys ${JSON.stringify(e)}`)}edit(){if(!xi()){u.showNotification("Hotkeys need a newer Kute",!1,3);return}new Si(this)}},bv=new Ei});var lp=we((dS,vv)=>{vv.exports='
        ×

        Accounts

        Click an account to log in, drag ≡ to reorder
        Add account
        '});var Ti={};A(Ti,{default:()=>Mv});function It(s){let e=decodeURIComponent(s),t=e.length;return e.split("").map(o=>String.fromCharCode(o.charCodeAt(0)-t)).join("")}function up(s){let e=s.length,t=s.split("").map(o=>String.fromCharCode(o.charCodeAt(0)+e)).join("");return encodeURIComponent(t)}function us(){try{let s=JSON.parse(localStorage.getItem(ps)||"[]");return Array.isArray(s)?s:[]}catch{return[]}}function $v(s){return typeof s=="string"&&/^#[\da-f]{6}$/i.test(s)?s:wv}function Cv(s){let e=Number.parseInt(s.slice(1),16),t=e>>16&255,o=e>>8&255,n=e&255;return t*.299+o*.587+n*.114>150?"#111":"#fff"}function pp(s,e,t){let o=$v(e);s.style.background=o,s.style.color=Cv(o),s.textContent=t.trim().slice(0,1)||"?"}var ps,wv,Ci,kv,cp,yv,xv,Sv,Ev,dp,Mi,Mv,Ai=w(()=>{"use strict";F();Ae();Pt();xn();No();ps="accounts",wv="#35e0e8",Ci="kute_account_switch",kv=12e4,cp=3e4,yv=3e3,xv=2e4,Sv=3e3,Ev=5e3,dp=s=>new Promise(e=>{setTimeout(e,s)});Mi=class{constructor(){this.button=document.createElement("div"),this.button.textContent="Accounts",this.button.classList.add("button","buttonB","bigShadowT"),this.button.style.cssText="display: block; padding-top: 7px; padding-bottom: 22px; font-size: 25px!important; padding-bottom: 22px; margin-top: 7px; height: 21px; line-height: 35px; width: 162px; font-size:20px!important; margin-left: 3px;",this.headerSeparator=document.createElement("div"),this.headerSeparator.style.cssText="width: 4px; height: 35px; margin: 0 6px; background: rgba(255, 255, 255, 0.12); flex-shrink: 0;",this.headerItem=document.createElement("div"),this.headerItem.style.cssText="display: flex; align-items: center; gap: 8px; padding: 8px 12px; cursor: pointer; color: #fff; font-weight: 700; font-size: 16px; white-space: nowrap;",this.headerItem.innerHTML='switch_accountAccounts',this.headerObserver=new MutationObserver(()=>this.placeButton()),this.overlay=null,this.shadow=null,this.menuController=null,this.asking=!1,this.accounts=[],this.legacy=!1,this.lastQuickLogin=0,this.suppressClick=!1,u.settings.toggleAccountManager=e=>this.toggle(e),u.accounts={loginSlot:e=>this.loginSlot(e)},this.toggle(!0),this.load()}async load(){let e=us(),t=null;if(e.length>0){let o=e.filter(n=>typeof n?.username=="string"&&typeof n?.password=="string").map(n=>({username:It(n.username),password:It(n.password),color:n.color}));t=await Te(`accounts-migrate ${JSON.stringify(o)}`,"accounts",5e3),t!==null&&localStorage.removeItem(ps)}else t=await Te("accounts-list","accounts");t===null?(this.legacy=!0,this.accounts=e.map(o=>({username:It(o.username),color:o.color}))):this.accounts=t,this.renderAccounts(),this.resumeSwitch()}resumeSwitch(){let e=sessionStorage.getItem(Ci);if(e===null)return;sessionStorage.removeItem(Ci);let t={};try{t=JSON.parse(e)??{}}catch{return}if(Date.now()-Number(t.at)>kv||localStorage.getItem("krunker_token")!==null)return;let o=this.accounts.find(n=>n.username===t.username);o&&this.login(o)}async send(e,t){let o=await Te(`accounts-${e} ${JSON.stringify(t)}`,"accounts");o!==null&&(this.accounts=o,this.renderAccounts())}gameUpdateListener=e=>{e.data==="game-updated"&&setTimeout(()=>{Oe()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.button.style.cssText="display: block; padding: 14px 24px 22px; bottom: 0; right: 0; z-index: 9; font-size: 21px !important; position: absolute;",U("#compBtnLst").append(this.button))},2e3)};toggle(e){if(e)if(window.chrome.webview.addEventListener("message",this.gameUpdateListener),this.button.addEventListener("click",this.openMenu),this.headerItem.addEventListener("click",this.openMenu),Oe())window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.button.style.cssText="display: block; padding: 14px 24px 22px; bottom: 0; right: 0; z-index: 9; font-size: 21px !important; position: absolute;",U("#compBtnLst").append(this.button);else{this.placeButton();let t=document.querySelector("#playerHeaderEl");t&&this.headerObserver.observe(t,{childList:!0,subtree:!0})}else window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.headerObserver.disconnect(),this.button.removeEventListener("click",this.openMenu),this.headerItem.removeEventListener("click",this.openMenu),this.button.remove(),this.headerSeparator.remove(),this.headerItem.remove(),this.closeMenu()}placeButton(){let e=document.querySelector("#playerHeaderEl .headerBarRight");if(e){if(e.firstElementChild!==this.headerItem){let n=[...e.querySelector(".nav-item")?.classList??[]].find(r=>r.startsWith("svelte-"))??"";this.headerItem.style.cssText="",this.headerItem.className=`nav-item ${n}`,this.headerItem.innerHTML=`switch_account Accounts`,this.headerSeparator.className="verticalSeparator",this.headerSeparator.style.cssText="height: 35px;",e.prepend(this.headerItem,this.headerSeparator)}this.button.remove();return}let t=document.querySelector("#signedInHeaderBar");if(t){t.contains(this.headerItem)||t.append(this.headerSeparator,this.headerItem);return}let o=document.querySelector("#signedOutHeaderBar");o&&!o.contains(this.button)&&o.append(this.button)}openMenu=()=>{this.overlay||this.buildMenu().catch(e=>console.error("[kute] accounts:",e))};async buildMenu(){let e=await Promise.resolve().then(()=>ue(lp(),1));if(this.overlay)return;let t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default,this.overlay=t,this.shadow=n;let r=new AbortController;this.menuController=r,U("#accClose",n).onclick=()=>this.closeMenu(),U("#accAdd",n).onclick=()=>this.showForm(!0),U("#accCancel",n).onclick=()=>this.showForm(!1),U("#accSave",n).onclick=()=>this.saveAccount(),U("#accFormHint",n).textContent=this.legacy?"Saved on this PC only":"Saved encrypted on this PC, never sent anywhere";let i=ke("#accUsername",n),a=ke("#accColor",n);i.oninput=()=>this.updatePreview(),a.oninput=()=>this.updatePreview();for(let l of[i,ke("#accPassword",n)])l.onkeydown=c=>{c.key==="Enter"&&this.saveAccount()};for(let l of["keydown","keyup","keypress"])n.addEventListener(l,c=>c.stopPropagation());t.addEventListener("mousedown",l=>{l.target===t&&this.closeMenu()}),document.addEventListener("keydown",l=>{l.key!=="Escape"||this.asking||(l.stopPropagation(),U("#accFormView",n).hidden?this.closeMenu():this.showForm(!1))},{signal:r.signal,capture:!0}),this.renderAccounts(),this.resetForm(),document.body.append(t)}closeMenu(){this.menuController?.abort(),this.menuController=null,this.overlay?.remove(),this.overlay=null,this.shadow=null}showForm(e){this.shadow&&(U("#accListView",this.shadow).hidden=e,U("#accFormView",this.shadow).hidden=!e,e&&(this.resetForm(),ke("#accUsername",this.shadow).focus()))}renderAccounts(){let{shadow:e}=this;if(!e)return;let t=U("#accList",e);t.textContent="";for(let n of this.accounts){let r=document.createElement("div");r.className="accRow",r.dataset.username=n.username,r.title=`Log in as ${n.username}`,r.onclick=()=>{this.suppressClick||this.login(n)};let i=document.createElement("div");i.className="accHandle",i.textContent="\u2261",i.title="Drag to reorder",i.onclick=p=>p.stopPropagation(),i.onpointerdown=p=>this.startDrag(p,r);let a=document.createElement("div");a.className="accIndex";let l=document.createElement("div");l.className="accAvatar",pp(l,n.color,n.username);let c=document.createElement("div");c.className="accName",c.textContent=n.username;let d=document.createElement("div");d.className="accRemove",d.textContent="\xD7",d.title="Remove",d.onclick=p=>{p.stopPropagation(),this.removeAccount(n).catch(m=>console.error("[kute] accounts:",m))};let h=document.createElement("div");h.className="accKey",r.append(i,a,l,c,h,d),t.append(r)}this.renumber(t);let o=this.accounts.length===0;U("#accEmpty",e).hidden=!o,U("#accListHint",e).hidden=o}renumber(e){let t=gt();[...e.children].forEach((o,n)=>{U(".accIndex",o).textContent=String(n+1),U(".accKey",o).textContent=t[`account${n+1}`]?.name??""})}canReorder(){return this.legacy||!!u.hostFeatures?.includes("accounts-order")}startDrag(e,t){if(e.button!==0)return;if(e.preventDefault(),!this.canReorder()){u.showNotification("Reordering accounts needs a newer Kute",!1,3);return}let o=t.parentElement,n=[...o.children].map(a=>a.dataset.username);t.classList.add("accDragging");let r=a=>{let l=[...o.children].filter(p=>p!==t),c=l.find(p=>{let m=p.getBoundingClientRect();return a.clientY!!(t.compareDocumentPosition(p)&Node.DOCUMENT_POSITION_PRECEDING)).length;if(d!==h){for(let p of l.slice(0,d))o.insertBefore(p,t);for(let p of l.slice(d))o.append(p);this.renumber(o)}},i=()=>{window.removeEventListener("pointermove",r,!0),window.removeEventListener("pointerup",i,!0),window.removeEventListener("pointercancel",i,!0),t.classList.remove("accDragging"),this.suppressClick=!0,setTimeout(()=>{this.suppressClick=!1});let a=[...o.children].map(l=>l.dataset.username??"");a.some((l,c)=>l!==n[c])&&this.saveOrder(a)};window.addEventListener("pointermove",r,!0),window.addEventListener("pointerup",i,!0),window.addEventListener("pointercancel",i,!0)}saveOrder(e){let t=o=>{let n=e.indexOf(o);return n===-1?e.length:n};if(this.accounts.sort((o,n)=>t(o.username)-t(n.username)),this.legacy){let o=us().sort((n,r)=>t(It(n.username))-t(It(r.username)));localStorage.setItem(ps,JSON.stringify(o));return}this.send("order",e)}loginSlot(e){let t=this.accounts[e];if(!t){u.showNotification(`No account saved in slot ${e+1}`,!1,3);return}if(localStorage.getItem("krunker_token")!==null&&localStorage.getItem("krunker_username")===t.username){u.showNotification(`Already logged in as ${t.username}`,!1,2);return}Date.now()-this.lastQuickLoginconsole.error("[kute] accounts:",o)))}updatePreview(){if(!this.shadow)return;let e=ke("#accUsername",this.shadow).value,t=ke("#accColor",this.shadow).value;pp(U("#accPreviewAvatar",this.shadow),t,e),U("#accPreviewName",this.shadow).textContent=e.trim()||"Username"}resetForm(){this.shadow&&(ke("#accColor",this.shadow).value=`#${Math.floor(Math.random()*16777215).toString(16).padStart(6,"0")}`,ke("#accUsername",this.shadow).value="",ke("#accPassword",this.shadow).value="",U("#accError",this.shadow).textContent="",this.updatePreview())}saveAccount(){if(!this.shadow)return;let e=ke("#accUsername",this.shadow).value.trim(),t=ke("#accPassword",this.shadow).value,o=ke("#accColor",this.shadow).value,n=U("#accError",this.shadow);if(e===""){n.textContent="Enter a username";return}if(t===""){n.textContent="Enter a password";return}if(this.accounts.some(r=>r.username===e)){n.textContent=`${e} is already saved`;return}if(this.legacy){let r=us();r.push({username:up(e),password:up(t),color:o}),localStorage.setItem(ps,JSON.stringify(r)),this.accounts.push({username:e,color:o}),this.renderAccounts()}else this.send("add",{username:e,password:t,color:o});this.showForm(!1)}async removeAccount(e){this.asking=!0;let t=await Ce({title:"Remove account",paragraphs:[`${e.username} gets removed from this list.`,"The Krunker account itself is not touched."],stay:"Keep",leave:"Remove"});if(this.asking=!1,!t)return;let o=this.accounts.findIndex(n=>n.username===e.username);o!==-1&&(this.legacy?(localStorage.setItem(ps,JSON.stringify(us().filter(n=>It(n.username)!==e.username))),this.accounts.splice(o,1),this.renderAccounts()):this.send("remove",{username:e.username}))}async login(e){this.closeMenu();let t=window.FRVR?.auth,o=localStorage.getItem("krunker_token")!==null;if(typeof t?.loginAsAnonymous!="function"||typeof t.isLoggedIn!="function"){if(o){sessionStorage.setItem(Ci,JSON.stringify({username:e.username,at:Date.now()})),window.logoutAcc(),Ro();return}}else{if(o){yn(cp),window.logoutAcc();for(let n=0;nconsole.error("[kute] accounts:",n))}window.loginOrRegister(),queueMicrotask(()=>{let n=U(".auth-toggle-btn");n.textContent?.includes("username")&&n.click(),queueMicrotask(()=>{if(this.legacy){this.legacyLogin(e.username);return}this.send("login",{username:e.username})})})}async finishSwitch(e){let t=0;for(let o=0;o=Sv)){yn(cp),Ro();return}}}legacyLogin(e){let t=us().find(r=>It(r.username)===e);if(!t)return;let o=ke("#accName"),n=ke("#accPass");o.value=e,n.value=It(t.password),o.dispatchEvent(new Event("input",{bubbles:!0})),n.dispatchEvent(new Event("input",{bubbles:!0})),U(".io-button").click()}},Mv=new Mi});var mp={};A(mp,{default:()=>he});var Tv,Av,Lv,Li,hp,he,Nt=w(()=>{"use strict";F();Tv=4e3,Av=5e3,Lv=3,Li=class{constructor(){this.base=typeof u.apiBase=="string"?u.apiBase:"https://kute.lol/api",this.health=null,this.down=!1,this.failures=0,this.listeners=new Set,u.settings.toggleDisableOnlineFeatures=e=>this.setOffline(e)}offline(){return u.settings?.data?.disableOnlineFeatures===!0}setOffline(e){this.health=e?Promise.resolve(!1):null,this.down=e,this.failures=0;for(let t of this.listeners)t(!e)}available(){return this.health??=this.check(),this.health}retry(){return this.health=null,this.down=!1,this.failures=0,this.available()}async check(){if(await Ne,this.offline())return this.down=!0,!1;try{let e=await fetch(`${this.base}/health`,{cache:"no-store",signal:AbortSignal.timeout(Tv)}),t=e.ok?await e.json():null;this.down=t?.ok!==!0}catch{this.down=!0}return!this.down}async request(e,t={}){let{data:o}=await this.requestStatus(e,t);return o}async requestStatus(e,t={}){if(!await this.available()||this.down||this.offline())return{status:0,data:null};try{let o=AbortSignal.timeout(Av),n=t.signal?AbortSignal.any([t.signal,o]):o,r=await fetch(this.base+e,{...t,signal:n});r.status>=500?this.failed():r.ok&&(this.failures=0);let i=await r.json().catch(()=>null),a=r.headers.get("Retry-After"),l=0;a!==null&&(l=/^\d+(\.\d+)?$/.test(a)?Date.now()+Number(a)*1e3:Date.parse(a));let c=Number(r.headers.get("X-RateLimit-Reset"))*1e3,d=Math.max(l||0,c||0,Number(i?.resetAt)||0),h=r.status===429?Math.max(Date.now()+1e3,d||Date.now()+6e4):void 0;return{status:r.status,data:r.ok?i:null,error:r.ok?null:i,retryAt:h}}catch{return t.signal?.aborted||this.failed(),{status:0,data:null}}}failed(){this.failures++,this.failures>=Lv&&(this.down=!0)}},hp=new Li;u.api=hp;he=hp});var bp={};var gp,Rv,Pv,fp,Ri=w(()=>{"use strict";F();Ae();gp=async s=>{window.openHostWindow(!1,1),await $e(".hostTb0");let e=document.querySelector(`#${s.mapId}`);if(!e){let c=document.querySelectorAll(".hostMap .hostMapName"),d=Array.from(c).find(h=>h.innerText.trim().toLowerCase()===s.mapId.toLowerCase());d&&(e=d.parentElement?.querySelector('input[type="checkbox"]')??null)}if(!e)return;e.checked||e.click(),windows[7].switchTab(2);let t=await $e("#customSnameTeam1");t.value=s.team1Name;let o=await $e("#customSnameTeam2");o.value=s.team2Name;let n=await $e("#customStmSize"),r={"1v1":"0","2v2":"1","3v3":"2","4v4":"3"};if(s.team1Players){let c=await $e("#compRosterT1");c.value=s.team1Players}if(s.team2Players){let c=await $e("#compRosterT2");c.value=s.team2Players}if(s.spectators){let c=await $e("#compRosterSpecs");c.value=s.spectators}let i=await $e("#customSspecSlots");i.value="4";let a=["ak","sniper","smg","lmg","shotgun","rev","semi","rpg","uzi","runner","deagler","crossbow","famas","blaster","survivor","infiltrator"];if(s.classes){let c=JSON.parse(s.classes);for(let[d,h]of Object.entries(c)){let p=a.indexOf(d),m=await $e(`#customSclassLim${p}`);m.value=String(h)}}let l=r[s.teamSize]||s.teamSize;if(n.value=l,s.webhook)try{let c=await $e("#customSwebhook");c.value=decodeURIComponent(s.webhook)}catch{}window.createPrivateRoom()},Rv=async s=>{let e={FRA:"de-fra",SV:"us-ca-sv",SYD:"au-syd",TOK:"jb-hnd",SIN:"sgp",NY:"us-nj",MUM:"as-mb",DAL:"us-tx",BR:"brz",ME:"me-bhn"},t=e[s.toUpperCase()]||s;window.showWindow(1);let o=document.querySelector("select.inputGrey2");if(!o){typeof window.setSetting=="function"&&window.setSetting("defaultRegion",t);return}let n=Object.values(e),r=Array.from(document.querySelectorAll("select.inputGrey2")).find(i=>Array.from(i.options).some(a=>n.includes(a.value)))||o;if(r&&r.value!==t){let i=Array.from(r.options).findIndex(a=>a.value===t);i!==-1&&(r.selectedIndex=i,r.dispatchEvent(new Event("change",{bubbles:!0,cancelable:!0})))}window.showWindow(1)},Pv=s=>{let e=s.includes("?")?s.split("?")[1]:s;return Object.fromEntries(new URLSearchParams(e).entries())},fp=sessionStorage.getItem("pendingCompHost");if(fp){sessionStorage.removeItem("pendingCompHost");let s=JSON.parse(fp);gp(s)}u.parseArgs=async s=>{let e=s.split(" ");for(let t of e)if(t.includes("action=host-comp")){let o=Pv(t);o.region?(sessionStorage.setItem("pendingCompHost",JSON.stringify(o)),await Rv(o.region),window.location.href="https://krunker.io/"):await gp(o)}};window.chrome.webview.addEventListener("message",async s=>{s.data?.args&&await u.parseArgs(s.data.args)})});var wp={};A(wp,{CLOCK_MS:()=>Iv,EXPERIENCE:()=>hs,IMPORTANT_SHARE:()=>ms,TARGET_REFRESH_MULTIPLE:()=>vt,accept:()=>ys,atLimit:()=>zo,capCandidates:()=>Oi,choose:()=>bs,chooseCap:()=>zi,collapses:()=>ws,compare:()=>Ni,experienceHolds:()=>Nv,flooding:()=>ks,guard:()=>io,headroom:()=>Hi,refineCaps:()=>Fi,screen:()=>_i,stalled:()=>vs,steady:()=>ao,steadyLimit:()=>Bi,steadyRungs:()=>Pn,summarize:()=>ye,unsteady:()=>bt,wins:()=>Bo});function Ii(s){let e=[...s].sort((o,n)=>o-n),t=Math.floor(e.length/2);return e.length%2===1?e[t]:(e[t-1]+e[t])/2}function ye(s){let e=s.filter(o=>!o.invalid),t={};for(let o of _o){let r=e.map(c=>c[o]).filter(c=>typeof c=="number"&&Number.isFinite(c)),i=[Math.min(...r),Math.max(...r)],[a,l]=fs.has(o)?i:i.reverse();t[o]={n:r.length,median:r.length>0?Ii(r):null,spread:r.length>1?Math.abs(l-a):null,worst:r.length>0?a:null,best:r.length>0?l:null}}return t}function gs(s){return s==="fps"?0:2*.1}function Ni(s,e,t){let o=e[s],n=t[s];if(o.median===null||n.median===null||o.spread===null||n.spread===null)return"unknown";let r=fs.has(s)?o.median-n.median:n.median-o.median,i=Math.max(o.spread,n.spread,gs(s)),a=Math.max(Math.abs(o.median),Math.abs(n.median))*.1;return Math.abs(r)<=i||Math.abs(r)0?"better":"worse"}function io(s,e,t,o=gs(s)){let n=e[s],r=t[s];if(n.n<2||typeof n.worst!="number"||r.median===null||r.spread===null)return"unknown";let i=fs.has(s)?r.median-n.worst:n.worst-r.median,a=Math.max(Math.abs(n.worst),Math.abs(r.median))*.1;return i>Math.max(r.spread,o)&&i>=a?"worse":"ok"}function Bo(s,e,t){let o=e[s],n=t[s];if(o.n<2||n.n<2||typeof o.worst!="number"||typeof n.best!="number")return!1;let r=fs.has(s)?o.worst-n.best:n.best-o.worst;return r>gs(s)&&r>=Math.max(Math.abs(o.worst),Math.abs(n.best))*.1}function _i(s,e){if(s.invalid)return"same";let t=!1;for(let o of _o){let n=s[o],r=e[o];if(typeof n!="number"||r.median===null||r.spread===null)continue;let i=fs.has(o)?n-r.median:r.median-n,a=Math.max(Math.abs(n),Math.abs(r.median))*.1;if(!(Math.abs(i)<=Math.max(r.spread,gs(o))||Math.abs(i)0&&(t=!0)}}return t?"contender":"same"}function bs(s,e,t={}){let o=ye(s.readings),n=e.map(c=>{let d=ye(c.readings),h={};for(let f of _o)h[f]=Ni(f,d,o);let p=hs.some(f=>io(f,d,o)==="worse"),m=hs.find(f=>Bo(f,d,o))??null;return m===null&&t.fpsCounts!==!1&&Bo("fps",d,o)&&(m="fps"),{id:c.id,summary:d,verdicts:h,rejected:p,decidedBy:m}}),r=n.length>0&&n.every(c=>_o.every(d=>c.verdicts[d]==="unknown")),i=c=>c.decidedBy===null?_o.length:_o.indexOf(c.decidedBy),l=n.filter(c=>!c.rejected&&c.decidedBy!==null).sort((c,d)=>i(c)-i(d))[0]??null;return{winner:l?.id??s.id,changed:l!==null,inconclusive:r,decidedBy:l?.decidedBy??null,incumbent:o,judged:n}}function vs(s){return!s.invalid&&typeof s.stallMs=="number"&&s.stallMs>1e3*.1}function bt(s,e){return s.some(t=>vs(t)||!t.invalid&&e>0&&typeof t.fps=="number"&&t.fps!t.invalid).length>=2&&!bt(s,e)}function ws(s){return[...s.values()].some(e=>e.filter(vs).length>=2)}function Pn(s){return Array.from({length:4},(e,t)=>(t+1)*s)}function Bi(s,e){let t=null,o=null;for(let n of Pn(s)){if(!ao(e.get(n)??[],n))break;t=o??n,o=n}return{cap:t,steadyUpTo:o}}function ks(s){let{presentMs:e,p50:t}=s;return typeof e!="number"||typeof t!="number"?!1:e-t>Math.max(2*.1,e*.1)}function zo(s){let e=s.p50,t=r=>typeof r=="number"&&typeof e=="number"?Math.max(0,r-e):null,o=ks(s)?s.presentMs-e:0,n=typeof s.inputP99=="number"?s.inputP99+o:s.inputP99;return{...s,fps:null,p99:t(s.p99),maxMs:t(s.maxMs),inputP99:n}}function vp(s){return s==="p99"||s==="maxMs"?4*.1:gs(s)}function zi(s,e,t={}){let o=p=>ye((s.get(p)??[]).map(zo)),n=p=>{let m=(s.get(p)??[]).filter(f=>!f.invalid).map(f=>f.p50).filter(f=>typeof f=="number");return m.length>0?Ii(m):null},r=o(e),i=n(e),a=new Map,l=[...s.keys()].map(p=>{let m=o(p),f=n(p);if(p===e)return{cap:p,summary:m,frameMs:f,netMs:null,outcome:"yours"};if(bt(s.get(p)??[],p))return{cap:p,summary:m,frameMs:f,netMs:null,outcome:"not steady"};let g=Object.fromEntries(Pi.map(H=>[H,Ni(H,m,r)])),b=e===0||p>0&&pBo(H,m,r)?(r[H].median??0)-(m[H].median??0):0,E=k("taskP99"),L=t.trade===!0&&io("inputP99",m,r)==="worse"?(m.inputP99.median??0)-(r.inputP99.median??0):0,y=g.inputP99==="unknown"?null:k("inputP99")-L,C=E+(y??i-f);a.set(p,E+(y??0));let I=L>0&&E>L,_="not better";return Pi.some(H=>(H!=="inputP99"||!I)&&io(H,m,r,vp(H))==="worse")?_="worse":C>2*.1&&(_="better"),{cap:p,summary:m,frameMs:f,netMs:C,gains:{task:E,input:y},outcome:_}}),c=l.filter(p=>p.outcome==="better").sort((p,m)=>(m.netMs??0)-(p.netMs??0));if(c.length>0)return{winner:c[0].cap,changed:!0,decidedBy:"net",judged:l};let d=l.find(p=>p.cap===t.prefer&&p.cap!==e),h=d!==void 0&&(e===0||d.capd.filter(h=>!h.invalid);if(r(s).length<2)return{keep:!1,failed:"reference"};if(r(e).length<2)return{keep:!1,failed:"result"};let i=ye(s.map(zo)),a=ye(e.map(zo)),l=io("fps",ye(e),ye(s))==="worse";if(bt(e,o)&&!(bt(s,t)&&Bo("stallMs",a,i)&&!l))return{keep:!1,failed:"unsteady"};let c;for(let d of Pi){let h=io(d,a,i,vp(d));if(h==="worse"&&d==="inputP99"&&n&&Bo("taskP99",a,i)){let p=(i.taskP99.median??0)-(a.taskP99.median??0),m=(a.inputP99.median??0)-(i.inputP99.median??0);if(p>m){c={task:p,input:m};continue}}if(h==="worse")return{keep:!1,failed:d};if(h==="unknown"&&d!=="inputP99")return{keep:!1,failed:"reference"}}if(io("inputP99",a,i)==="unknown"){let d=p=>Ii(r(p).map(m=>m.p50??0));if(d(e)-d(s)>Math.max(2*.1,d(e)*.1))return{keep:!1,failed:"frame"}}return t===o&&l?{keep:!1,failed:"fps"}:{keep:!0,failed:null,...c?{traded:c}:{}}}function Hi(s,e){return 1+Math.max(2*Math.abs(1-s),e)}function Nv(s,e){let t=1e3/e,o=s.p99.median,n=s.stallMs.median;return(o===null||o<=t)&&(n===null||n<=t)}function Oi({hz:s,capacity:e,current:t}){let o=i=>e===null||i<=e,n=[3*s,2*s,s].filter(o);return e!==null&&n.push(Math.round(e*.9)),t>0&&n.push(t),[0,...[...new Set(n.map(i=>Math.round(i)).filter(i=>i>0))].sort((i,a)=>a-i)]}function Fi(s,e,t,o){let n=l=>l===0?t??1/0:l,r=[...new Set(s)].sort((l,c)=>n(l)-n(c)),i=r.indexOf(e),a=[];for(let l of[r[i-1],r[i+1]]){if(l===void 0)continue;let c=(n(e)+n(l))/2;Number.isFinite(c)&&a.push(Math.round(c/o)*o)}return[...new Set(a)].filter(l=>l>0&&l!==e&&!s.includes(l))}var ms,vt,Iv,hs,_o,fs,Pi,xs=w(()=>{"use strict";ms=.1,vt=3,Iv=.1,hs=["taskP99","inputP99","p99","stallMs","maxMs"],_o=[...hs,"fps"],fs=new Set(["fps"]);Pi=["taskP99","inputP99","p99","stallMs","maxMs"]});var xp={};A(xp,{PIPELINE:()=>Fe,cancel:()=>qi,currentPipeline:()=>Nn,measureCaps:()=>ji,searchPipeline:()=>Ki});function Nn(){return Object.fromEntries(Fe.map(s=>[s.setting,(u.running?.[s.setting]??u.settings.data[s.setting])!==!1]))}function yp(s,e){return s!=="hardFlip"||!e.hardFlip?null:u.settings.data.obsCapturePlugin===!0?"kept, OBS capture needs it":null}function dt(s,e){let t=Fe.map(r=>`${r.key}=${s[r.setting]?1:0}`),o=Bv.map(r=>`${r.key}=${u.settings.data[r.setting]??r.fallback?1:0}`),n=`limiter=${u.settings.data.patchFrameLimiter===!1?"hook":"viz"}`;return[...t,...o,n,e].filter(r=>r!=="").join(",")}function Di(s,e,t){let o=n=>typeof n=="number"&&Number.isFinite(n)?n:null;return{fps:o(s?.fps),p50:o(s?.p50),p99:o(s?.p99),maxMs:o(s?.maxMs),stallMs:o(s?.stallMs),taskP99:o(e?.p99),inputP99:null,presentMs:o(t?.p50),invalid:!s||!(s.fps>0)}}function Ss(s,e){let t=Date.now()*100+ ++Fv%100;return new Promise(o=>{let n={timer:0},r=i=>{i.data?.benchMatrix===void 0||i.data.benchRun!==t||(clearTimeout(n.timer),window.chrome.webview.removeEventListener("message",r),o(i.data.cancelled?null:i.data.benchMatrix))};n.timer=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),window.chrome.webview.postMessage("bench-cancel"),o(null)},e),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(`run-bench-matrix ${t} ${JSON.stringify(s)}`)})}function qi(){window.chrome.webview.postMessage("bench-cancel")}async function Ki({hz:s,progress:e,cancelled:t}){let o=Nn();e("Testing the client (1 of 4)",0);let n=await Ss([dt(o,`hz=${s}`)],In),r=Di(n?.[0]?.page?.stats,n?.[0]?.page?.otherTasks);if(t()||r.invalid||r.fps===null)return null;let i=n?.[0]?.page?.load,a=Math.min(kp[1],Math.max(kp[0],r.fps/(s*3))),l=`hz=${s},draws=${Math.round(i.draws*a)},cpu=${Math.round(i.cpuIterations*a)}`,c=Fe.filter(C=>yp(C.setting,o)===null).map(C=>({entry:C,pipeline:{...o,[C.setting]:!o[C.setting]}}));e("Testing the client (2 of 4)",.15);let d=await Ss([dt(o,l),...c.map(C=>dt(C.pipeline,l)),dt(o,l)],In*(c.length+2));if(t()||d===null)return null;let h=C=>Di(C?.page?.stats,C?.page?.otherTasks,C?.present),p=[h(d[0]),h(d[d.length-1])],m=ye(p),f=_v.some(C=>{let{median:I,spread:_}=m[C];return I!==null&&_!==null&&_>Math.abs(I)*.1}),g=[{id:"current",label:"As you had it",pipeline:o,readings:p,outcome:"current"}];for(let C of Fe){let I=yp(C.setting,o);I!==null&&g.push({id:C.setting,label:`${C.label} off`,pipeline:o,readings:[],outcome:I})}let b=[];for(let[C,I]of c.entries()){let _=h(d[C+1]),H=_.invalid?"failed":_i(_,m);f&&!_.invalid&&(H="contender");let G=`${I.entry.label} ${I.pipeline[I.entry.setting]?"on":"off"}`,J={id:I.entry.setting,label:G,pipeline:I.pipeline,readings:[_],outcome:Ov[H]};g.push(J),H==="contender"&&b.push(J)}if(b.length===0)return{winner:o,changed:!1,decidedBy:null,rows:g,common:l,capacity:m.fps.median};e("Testing the client (3 of 4)",.55);let v=await Ss([...b.map(C=>dt(C.pipeline,l)),dt(o,l)],In*(b.length+1));if(t()||v===null)return null;for(let[C,I]of b.entries())I.readings.push(h(v[C]));p.push(h(v[v.length-1]));let k=bs({id:"current",readings:p},b.map(C=>({id:C.id,readings:C.readings})));for(let C of b){let I=k.judged.find(_=>_.id===C.id);C.outcome="not better",I?.rejected?C.outcome="worse":I?.decidedBy&&(C.outcome="better")}let E=b.filter(C=>C.outcome==="better"),L=g.find(C=>C.id===k.winner)??g[0];if(E.length>1){e("Testing the client (4 of 4)",.8);let C={...o};for(let J of E)C[J.id]=J.pipeline[J.id];let I=await Ss([dt(C,l),dt(o,l),dt(C,l)],In*3);if(t()||I===null)return null;p.push(h(I[1]));let _={id:"combined",label:E.map(J=>J.label).join(" and "),pipeline:C,readings:[h(I[0]),h(I[2])],outcome:"not better"};g.push(_);let H=bs({id:L.id,readings:L.readings},[{id:_.id,readings:_.readings}]),G=bs({id:"current",readings:p},[{id:_.id,readings:_.readings}]);H.changed&&G.changed&&(_.outcome="better",L=_,k=G)}let y=L.id!=="current";return{winner:L.pipeline,changed:y,decidedBy:y?k.decidedBy:null,rows:g,common:l,capacity:ye(L.readings).fps.median}}async function ji({pipeline:s,common:e,caps:t,cancelled:o}){let n=`${dt(s,e)},caps=${t.join(".")},rounds=2,ms=${Hv}`,i=(await Ss([n],zv))?.[0]?.page?.caps;if(o()||!Array.isArray(i))return null;let a=new Map(t.map(l=>[l,[]]));for(let l of i)a.get(Number(l.cap))?.push(Di(l.stats,l.otherTasks));return a}var _v,Fe,Bv,In,zv,Hv,kp,Ov,Fv,Ui=w(()=>{"use strict";F();xs();_v=["fps","taskP99","p99"],Fe=[{setting:"hardFlip",key:"hook",label:"DXGI Swapchain Hook"},{setting:"patchFramePacing",key:"pacing",label:"Frame Pacing"},{setting:"patchCanvasBufferCache",key:"canvas",label:"WebGL Buffer Cache"},{setting:"patchHighQoS",key:"qos",label:"Game Process at High QoS"}].filter(s=>u.platform!=="linux"||s.setting!=="hardFlip"&&s.setting!=="patchHighQoS"),Bv=[{setting:"patchInputPriority",key:"inprio",fallback:!0},{setting:"patchRawInputMovement",key:"rawinput",fallback:!0},{setting:"patchAudioParamCoalesce",key:"coalesce",fallback:!0},{setting:"audioFix",key:"panner",fallback:!1},{setting:"uncapFps",key:"uncap",fallback:!0}],In=2e4,zv=7e4,Hv=1500,kp=[.25,16],Ov={contender:"better",same:"not better",worse:"worse",failed:"failed"};Fv=0});var Ep={};A(Ep,{MIN_RESOLUTION:()=>Es,SIGNIFICANT_RESOLUTION:()=>Sp,SIGNIFICANT_SETTING:()=>_n,decide:()=>Bn});function Bn({capacity:s,hz:e,headroom:t,halfResolutionGain:o,settings:n}){let r=e*3,i=r*t,a=s>=i,l="unknown";o!==null&&(l=o>=Sp?"gpu":"cpu");let c=[],d=s;if(!a){let h=n.filter(p=>p.gain!==null&&p.steady&&p.current!==p.cheap&&p.gain>=_n).sort((p,m)=>(m.gain??0)-(p.gain??0));for(let p of h){if(d>=i)break;let m=p.gain??1;d*=m,c.push({id:p.id,label:p.label,value:p.cheap,reason:`measured +${Math.round((m-1)*100)} %`})}}return{target:r,needed:i,holds:a,regime:l,predictedFps:d,tuneResolution:!a&&l==="gpu"&&d{"use strict";xs();_n=1.05,Sp=1.1,Es=.75});var Ji={};A(Ji,{ALL_IDS:()=>Vi,GAME_FRAME_CAP:()=>kt,PRESET:()=>Wi,RESOLUTION:()=>lo,SETTINGS:()=>wt,label:()=>Yi,opposite:()=>Xi,read:()=>Cs,resetCache:()=>zn,write:()=>Me});function Yi(s){return wt.find(e=>e.id===s)?.label??s}function Dv(){if($s)return $s;let s=window.windows[0],e=s.tabIndex,t=s.settingType,o="";try{s.settingType="advanced";for(let n=0;n{"use strict";wt=[{id:"postProcessing",label:"Post Processing",cheap:!1},{id:"shadowsDynamic",label:"Dynamic Shadows",cheap:!1},{id:"softShad",label:"Soft Shadows",cheap:!1,needsReload:!0},{id:"highResShad",label:"High-Res Shadows",cheap:!1,needsReload:!0},{id:"shadows",label:"Shadows",cheap:!1},{id:"antiAlias",label:"Antialiasing",cheap:!1,needsReload:!0},{id:"reflection",label:"Reflection Quality",cheap:"1",needsReload:!0},{id:"lighting",label:"Lighting",cheap:"0",needsReload:!0},{id:"weaponShine",label:"Weapons Shine",cheap:!1},{id:"ambientShading",label:"Old Shading",cheap:!1},{id:"particles",label:"Particles",cheap:!1,fightOnly:!0},{id:"showExplo",label:"Explosions",cheap:!1,fightOnly:!0},{id:"textureAnim",label:"Texture Animations",cheap:!1},{id:"objectAnim",label:"Object Animations",cheap:!1},{id:"bulletCasings",label:"Bullet Casings",cheap:!1,fightOnly:!0},{id:"impactHoles",label:"Bullet Impact Holes",cheap:!1,fightOnly:!0},{id:"noPaintAnim",label:"Disable Animated Paints",cheap:!0,needsReload:!0},{id:"mapDet",label:"Map Details",cheap:!1,needsReload:!0},{id:"lowSpec",label:"Low Spec",cheap:!0}],Wi={postProcessing:!1,particles:!1,showExplo:!1,bulletCasings:!1,impactHoles:!1,reflection:"1",lighting:"0",softShad:!1,highResShad:!1,noPaintAnim:!0},lo="resolution",kt="updateRate",Vi=[...wt.map(s=>s.id),lo,kt];$s=null});var Cp,$p=w(()=>{Cp=`

        Auto-Detect

        Don't touch mouse or keyboard. Escape cancels
        Undo
        Details
        Advanced
        Run now
        OK
          `});var Mp={};A(Mp,{activity:()=>Bt,hostLobby:()=>Ms,inRoom:()=>Hn,spawn:()=>Ts,spawned:()=>Qi});function Bt(){try{return window.getGameActivity?.()??{}}catch{return{}}}function Hn(s){let e=Bt();return!!s&&!!e.custom&&e.id===s}async function Ms(){if(typeof window.openHostWindow!="function"||typeof window.createPrivateRoom!="function")return null;let s=Bt().id;for(let e=0;e<4;e++){window.openHostWindow(!1,0),await _t(800),window.windows[7]?.switchTab?.(0),await _t(300);let t=[...document.querySelectorAll("#windowHolder input[id^=gameMap]")],o=document.querySelector("#makePrivate");if(t.length===0||!o)return window.closWind?.(),null;for(let r of t)r.checked!==(r.id===Kv)&&r.click();let n=!o.checked;n&&o.click();try{window.createPrivateRoom();for(let r=0;r<32;r++){await _t(250);let i=Bt();if(i.custom&&i.id&&i.id!==s&&i.map)return i.id}}finally{n&&o.checked&&o.click()}window.closWind?.(),await _t(1500)}return null}function Qi(){let s=document.querySelector("#instructions");return!!document.pointerLockElement||s!==null&&getComputedStyle(s).display==="none"}async function Ts(s){for(let o=0;o<40&&!(Bt().map&&document.querySelector("#instructions"));o++)await _t(250);await _t(500);let e=Math.round(window.innerWidth/2),t=Math.round(window.innerHeight/2);for(let o=0;o<3&&!Qi();o++){if(!Hn(s))return!1;window.chrome.webview.postMessage(`click, ${e}, ${t}`),await _t(1200)}return await _t(800),Qi()}var Kv,_t,On=w(()=>{"use strict";Kv="gameMap0",_t=s=>new Promise(e=>{setTimeout(e,s)})});var Lp={};A(Lp,{REPLAY_CIRCLE_MS:()=>zt,takeInputDiagnostics:()=>Fn,takeReading:()=>ea});function Fn(){let s=Qe;return Qe=Ap(),s}function ea({ms:s,hz:e,replay:t}){return new Promise((o,n)=>{let r=new no,i=new ro,a=new ns,l=()=>document.hasFocus()&&document.visibilityState==="visible",c=document.pointerLockElement!==null,d=l()?null:"the window was not in front",h=()=>{l()||(d??="the window lost focus")},p=()=>{document.pointerLockElement!==null!==c&&(d??=c?"the game let go of the mouse":"the game took the mouse")},m=()=>{window.removeEventListener("blur",h),document.removeEventListener("visibilitychange",h),document.removeEventListener("pointerlockchange",p)};window.addEventListener("blur",h),document.addEventListener("visibilitychange",h),document.addEventListener("pointerlockchange",p);let f=setTimeout(()=>{m(),i.stop(),a.stop(),window.chrome.webview.postMessage("input-replay-stop"),n(new Error("the game stopped drawing frames"))},s+5e3);i.start(),a.start(),Qe.readings++,t&&c&&(Qe.asked++,window.chrome.webview.postMessage(`input-replay, ${s}`));let g=performance.now(),b=()=>{let v=performance.now();if(r.frame(v),v-g=Tp&&Qe.withInput++,L===null&&(d??="too few frames"),d!==null&&(Qe.invalid[d]=(Qe.invalid[d]??0)+1),o({fps:L?.fps??null,p50:L?.p50??null,p99:L?.p99??null,maxMs:L?.maxMs??null,stallMs:L?.stallMs??null,taskP99:k.p99,inputP99:E.events>=Tp?E.p99:null,invalid:d!==null,...d===null?{}:{why:d}})};requestAnimationFrame(b)})}var zt,Tp,Ap,Qe,ta=w(()=>{"use strict";Sn();zt=600,Tp=20,Ap=()=>({readings:0,asked:0,withInput:0,pageEvents:0,hostSteps:0,ended:{},invalid:{}}),Qe=Ap();window.chrome.webview.addEventListener("message",s=>{let e=s.data?.inputReplay;e&&(Qe.hostSteps+=Number(e.sent)||0,Qe.ended[e.reason]=(Qe.ended[e.reason]??0)+1)})});var la={};A(la,{loggedIn:()=>Rs});function Ht(){try{return JSON.parse(localStorage.getItem(jn)??"null")}catch{return null}}function qe(s){localStorage.setItem(jn,JSON.stringify(s))}function Rs(){return document.querySelector("#signedInHeaderBar")!==null}function Ot(s,e){u.settings.data[s]=e,window.chrome.webview.postMessage(`set-config, ${s}, ${e}`);for(let t of[`#${s}`,`#slid_input_${s}`]){let o=document.querySelector(t);o&&(o.type==="checkbox"?o.checked=e===!0:o.value=String(e))}}function pt(s){return s==null?"default":String(s)==="true"?"on":String(s)==="false"?"off":String(s)}function Jv(){let s=/--autodetect-dev=(\S+)/.exec(u.launchArgs??""),e={};for(let t of s?.[1].split(",")??[]){let[o,n]=t.split(":");o==="hz"&&(e.hz=Number(n)),o==="battery"&&(e.battery=!0),o==="laptop"&&(e.laptop=!0),o==="force"&&(e.force=n),o==="collapse"&&(e.collapse=Number(n))}return e}function Bp(s){let e=Math.round((s-1)*100);return`${e>0?"+":""}${e} %`}function xt(s,e=1){return s===null?"?":s.toFixed(e)}function Dt(s){return s>0?`${s} FPS`:"no limit"}function Zv(s,e,t){if(s===null)return"measured as smooth, with fewer frames to draw";let o=`${xt(e[s].median)} to ${xt(t[s].median)}`;return{taskP99:`the game reacts sooner: other work waited up to ${o} ms`,inputP99:`mouse input waits ${o} ms`,p99:`slowest frames ${o} ms`,stallMs:`stutter ${o} ms per second`,maxMs:`longest frame ${o} ms`,fps:`${xt(e.fps.median,0)} to ${xt(t.fps.median,0)} FPS`}[s]}function zp(s,e=""){return s===null?"-":`${e}${s.toFixed(1)} ms`}function Ft(s,e=""){return s===null?"-":`${e}${s.toFixed(1)}`}function ra(s){return`${xt(s.fps.median,0)}${Ft(s.p99.median)}${Ft(s.taskP99.median)}${Ft(s.inputP99.median)}`}function Un(s){let e=s.filter(o=>typeof o=="number").sort((o,n)=>o-n);if(e.length===0)return null;let t=Math.floor(e.length/2);return e.length%2===1?e[t]:(e[t-1]+e[t])/2}function Qv(s){if(!s||s.readings===0)return"";if(s.withInput>0)return`

          Input test: ${s.withInput} of ${s.readings} readings in the match had mouse input from Kute (${s.hostSteps} steps sent, ${s.pageEvents} seen by the game).

          `;let e=Object.entries(s.ended).filter(([o])=>o!=="done"&&o!=="stopped").map(([o,n])=>`${o}: ${n}x`).join(", "),t="the game did not hold the mouse when the readings started";return s.asked>0&&(t=e||`Kute sent ${s.hostSteps} steps, the game saw ${s.pageEvents} mouse events`),`

          The input test did not reach the game (${t}). Mouse wait and settings that only cost in a fight were not measured.

          `}function ut(s,e){let t=s.filter(r=>typeof r=="number").map(Math.round);if(t.length===0)return"-";let[o,n]=[Math.min(...t),Math.max(...t)];return o===n?`${o} ${e}`:`${o} to ${n} ${e}`}function e0(s){let e=[[`As you had it (${Dt(s.beforeCap)})`,s.played??[]],["no limit, first readings",s.unlimited??[]],...s.caps.filter(d=>d.where==="test match").map(d=>[Dt(d.cap),d.readings??[]])],{render:t=null,display:o=null}=s.adapters??{},n=t!==null&&o!==null&&t!==o,r=d=>{let h=(d?.nvidia??[]).map(p=>p.clockMhz).filter(p=>typeof p=="number");return h.length>0?Math.max(...h):null},i=d=>{let h=(d?.nvidia??[]).reduce((m,f)=>m|(f.heldBack??0),0),p=[[1,"heat"],[2,"power limit"],[4,"battery"],[16,"weak power supply"]].filter(([m])=>(h&Number(m))!==0).map(([,m])=>m);return p.length>0?p.join(", "):h===0?"no":`yes (${h})`},a=[...s.played??[],...s.unlimited??[]].some(d=>(d.load?.nvidia??[]).length>0),l=e.filter(([,d])=>d.some(h=>h.load)).map(([d,h])=>{let p=h.map(f=>f.load),m=(f,g)=>ut(p.map(b=>f===null?null:b?.gpu?.[f]?.[g]),"%");return`${d}${ut(h.map(f=>f.fps),"")}${ut(p.map(f=>f?.cpuBusy),"%")} + ${ut(p.map(f=>f?.cpuSpeed),"%")}${m(t,"render")}${a?`${ut(p.map(r),"MHz")}`:""} ${n?`${m(o,"render")}${m(o,"copy")}`:""} - ${dt(p.map(f=>f?.temperature),"C")}${dt(p.map(f=>f?.thermalLimit),"%")}`});if(l.length===0)return"";let c=(s.trace??[]).map(d=>`${(d.ms/1e3).toFixed(1)} s${d.fps}${dt([d.load?.cpuSpeed],"%")} - ${dt([t===null?null:d.load?.gpu?.[t]?.render],"%")}${dt([r(d.load)],"MHz")}${i(d.load)}`);return`
          ${a?"":""} + `});if(l.length===0)return"";let c=(s.trace??[]).map(d=>` + `);return`
          FPSProcessor busyProcessor speedGraphics card busyGraphics clock${ut(p.map(f=>f?.temperature),"C")}${ut(p.map(f=>f?.thermalLimit),"%")}
          ${(d.ms/1e3).toFixed(1)} s${d.fps}${ut([d.load?.cpuSpeed],"%")}${ut([t===null?null:d.load?.gpu?.[t]?.render],"%")}${ut([r(d.load)],"MHz")}${i(d.load)}
          ${a?"":""} ${n?"":""}${l.join("")}
          FPSProcessor busyProcessor speedGraphics card busyGraphics clockScreen's chip busyScreen's chip copyingHottestHeat limit

          Processor speed is its share of the nominal clock: above 100 % with turbo, far below while the PC throttles it. A heat limit under 100 % means the firmware slows the PC down. A graphics clock that drops while the frame rate drops means the graphics driver is saving power.

          - ${c.length>0?`

          Without a limit, step by step

          ${c.join("")}
          TimeFPSProcessor speedGraphics card busyGraphics clockDriver holds it back
          `:""}`}function Xv(s){if(s.outcome!=="not steady")return"";let e=Math.max(0,...(s.readings??[]).map(t=>t.stallMs??0));return e>0?` (stood still ${Math.round(e/10)} % of the time)`:" (did not reach it)"}function Np(s,e=""){return`${s}${e}`}function Bo(s,e,{wide:t=!1,unit:o=""}={}){return`

          ${s}${o?`${o}`:""}

          ${e}
          `}function Dn(s,e,t="adNum"){return`
          ${s}${e.join("")}
          `}function Jv(s){let e=new Set(s.plan.changes.map(x=>x.id)),t=x=>x.gain===null&&!e.has(x.id)&&!!x.note,o=s.settings.filter(x=>!t(x)).map(x=>{let $=x.note??"";x.gain!==null&&($=x.steady?`${Pp(x.gain)} when ${ut(x.cheap)}`:"unsteady, not used");let I=e.has(x.id)?`set to ${ut(x.cheap)}`:'kept';return`${x.label}${ut(x.current)}${$}${I}`}),n=s.pipeline.map(x=>`${x.label}${sa(ye(x.readings))}${Np(x.outcome)}`),r='LimitFrame timeSlowest 1 %Other work waitsMouse waitsGainResult',i=["client test","test match"].map(x=>{let $=s.caps.filter(I=>I.where===x).map(I=>`${Dt(I.cap)}${Ot(I.frameMs)} - ${Ot(I.summary.p99.median,"+")}${Ot(I.summary.taskP99.median)}${Ot(I.summary.inputP99.median)} - ${I.netMs===null?"":Ot(I.netMs,I.netMs>0?"+":"")}${Np(I.outcome,Xv(I))}`);return{where:x,html:$.length>0?Dn(r,$):""}}).filter(x=>x.html),a={cpu:"the processor",gpu:"the graphics card",unknown:null}[s.plan.regime],l="Not measured whether the processor or the graphics card holds the frame rate back.";a&&(l=`Limited by ${a}${s.halfResolutionGain===null?"":` (half the resolution: ${Pp(s.halfResolutionGain)})`}.`);let c=new Map;for(let x of s.settings.filter(t)){let $=x.note??"";c.set($,[...c.get($)??[],`${x.label} ${ut(x.current)}`])}let d=[...c].map(([x,$])=>`

          ${x.charAt(0).toUpperCase()}${x.slice(1)}, kept as they were: ${$.join(", ")}.

          `),h=(o.length>0?Dn('SettingWasMeasuredResult',o,""):"")+d.join(""),p="";s.hybrid===!0?p=" Two graphics chips: frames get copied from one to the other.":s.hybrid===null&&(p=" Could not tell which graphics chip drives the screen.");let m="FPSSlowest 1 %Other work waitsMouse waits",f=`

          Without an FPS limit this PC ran ${Math.round(s.capacity)} FPS in the test match. Kute aims for at least ${s.plan.target} FPS + ${c.length>0?`

          Without a limit, step by step

          ${c.join("")}
          TimeFPSProcessor speedGraphics card busyGraphics clockDriver holds it back
          `:""}`}function t0(s){if(s.outcome!=="not steady")return"";let e=Math.max(0,...(s.readings??[]).map(t=>t.stallMs??0));return e>0?` (stood still ${Math.round(e/10)} % of the time)`:" (did not reach it)"}function Hp(s,e=""){return`${s}${e}`}function Ho(s,e,{wide:t=!1,unit:o=""}={}){return`

          ${s}${o?`${o}`:""}

          ${e}
          `}function qn(s,e,t="adNum"){return`
          ${s}${e.join("")}
          `}function o0(s){let e=new Set(s.plan.changes.map(y=>y.id)),t=y=>y.gain===null&&!e.has(y.id)&&!!y.note,o=s.settings.filter(y=>!t(y)).map(y=>{let C=y.note??"";y.gain!==null&&(C=y.steady?`${Bp(y.gain)} when ${pt(y.cheap)}`:"unsteady, not used");let I=e.has(y.id)?`set to ${pt(y.cheap)}`:'kept';return`${y.label}${pt(y.current)}${C}${I}`}),n=s.pipeline.map(y=>`${y.label}${ra(ye(y.readings))}${Hp(y.outcome)}`),r='LimitFrame timeSlowest 1 %Other work waitsMouse waitsGainResult',i=["client test","test match"].map(y=>{let C=s.caps.filter(I=>I.where===y).map(I=>`${Dt(I.cap)}${Ft(I.frameMs)} + ${Ft(I.summary.p99.median,"+")}${Ft(I.summary.taskP99.median)}${Ft(I.summary.inputP99.median)} + ${I.netMs===null?"":Ft(I.netMs,I.netMs>0?"+":"")}${Hp(I.outcome,t0(I))}`);return{where:y,html:C.length>0?qn(r,C):""}}).filter(y=>y.html),a={cpu:"the processor",gpu:"the graphics card",unknown:null}[s.plan.regime],l="Not measured whether the processor or the graphics card holds the frame rate back.";a&&(l=`Limited by ${a}${s.halfResolutionGain===null?"":` (half the resolution: ${Bp(s.halfResolutionGain)})`}.`);let c=new Map;for(let y of s.settings.filter(t)){let C=y.note??"";c.set(C,[...c.get(C)??[],`${y.label} ${pt(y.current)}`])}let d=[...c].map(([y,C])=>`

          ${y.charAt(0).toUpperCase()}${y.slice(1)}, kept as they were: ${C.join(", ")}.

          `),h=(o.length>0?qn('SettingWasMeasuredResult',o,""):"")+d.join(""),p="";s.hybrid===!0?p=" Two graphics chips: frames get copied from one to the other.":s.hybrid===null&&(p=" Could not tell which graphics chip drives the screen.");let m="FPSSlowest 1 %Other work waitsMouse waits",f=`

          Without an FPS limit this PC ran ${Math.round(s.capacity)} FPS in the test match. Kute aims for at least ${s.plan.target} FPS (${3}x your ${s.hz} Hz screen), and this PC needs ${Math.round(s.plan.needed)} to keep that in a fight: - samples of the same settings differ by ${Math.round(s.noise*100)} %, and it ended the run at ${Math.round(s.drift*100)} % of its starting speed.

          `;if(s.pushed){let x=(s.unlimited??[]).map(H=>yt(H.fps,0)).join(", "),{limit:$,steadyUpTo:I}=s.pushed,_=`No limit ran steadily, not even your screen's ${s.hz} FPS, so there was no limit to offer.`;$!==null&&I!==null&&(_=`Up to ${I} FPS it ran steadily in the empty test match. A real match is heavier than that, so the limit with room is the highest multiple of your ${s.hz} Hz - that has ${I>$?"one more steady step above it":"run steadily"}: ${$} FPS. A limit of your own that runs steadily is kept, a lower one would make the mouse wait longer.`),f=`

          This PC does not run steadily without an FPS limit: it stood still ${Math.round(s.pushed.stoodStill*100)} % of the time - (readings without a limit: ${x} FPS). That happens when a PC throttles itself under full load, common on laptops.

          -

          ${_} Game settings were not measured, their gain is read without a limit.

          `}let g=s.played??[],b=g.some(vs)?`

          The game drew more frames than reached the screen: one every ${Ip(Kn(g.map(x=>x.p50)))}, shown one every ${Ip(Kn(g.map(x=>x.presentMs)))}.

          `:"",v=Yv(s),k=s.pushed?"On a PC that does not run steadily without a limit, the limits are not compared with each other: each one only has to run steadily.":"A limit is taken when the game reacts sooner or the mouse waits less with it than with yours (gain above zero), and never when anything measures worse. A lower limit's longer frames are in the mouse wait. Slowest 1 % counts beyond the frame time.",E=i.map((x,$)=>Bo(`${x.where}: FPS limits`,`${x.html}${$===i.length-1?`

          ${k}

          `:""}`,{unit:"times in ms"}));return`
          ${[Bo("This PC",`

          ${s.gpu}
          ${s.cpu}${s.laptop?" (laptop)":""}, ${s.hz} Hz${s.powerOverlay?`, Windows power mode: ${s.powerOverlay}`:""}.${p}

          - ${f}${s.rolledBack?`

          ${s.rolledBack}

          `:""}${s.pipelineRefused?`

          ${s.pipelineRefused}

          `:""}${Vv(s.input)}${b}`),Bo("Before and after",`${Dn(`${m}`,[`Before (${Dt(s.beforeCap)})${sa(s.before)}`,s.after?`After (${Dt(s.afterCap)})${sa(s.after)}`:""])}${s.after?"":'

          Your setup stayed as it was, so there is no after to measure.

          '}`,{unit:"times in ms"}),Bo("Client test: setup",n.length>0?Dn(`Setup${m}Result`,n,"adNum adWrap"):"

          The client test did not run, the client's own setup was left alone.

          ",{unit:"times in ms"}),...E,Bo("Test match: game settings",`

          ${l}

          ${h} -

          Settings that need a reload cannot be measured in one test match, they were not changed.

          `),v?Bo("What the PC did",v,{wide:!0}):""].join("")}
          + samples of the same settings differ by ${Math.round(s.noise*100)} %, and it ended the run at ${Math.round(s.drift*100)} % of its starting speed.

          `;if(s.pushed){let y=(s.unlimited??[]).map(H=>xt(H.fps,0)).join(", "),{limit:C,steadyUpTo:I}=s.pushed,_=`No limit ran steadily, not even your screen's ${s.hz} FPS, so there was no limit to offer.`;C!==null&&I!==null&&(_=`Up to ${I} FPS it ran steadily in the empty test match. A real match is heavier than that, so the limit with room is the highest multiple of your ${s.hz} Hz + that has ${I>C?"one more steady step above it":"run steadily"}: ${C} FPS. A limit of your own that runs steadily is kept, a lower one would make the mouse wait longer.`),f=`

          This PC does not run steadily without an FPS limit: it stood still ${Math.round(s.pushed.stoodStill*100)} % of the time + (readings without a limit: ${y} FPS). That happens when a PC throttles itself under full load, common on laptops.

          +

          ${_} Game settings were not measured, their gain is read without a limit.

          `}let g=s.played??[],b=g.some(ks)?`

          The game drew more frames than reached the screen: one every ${zp(Un(g.map(y=>y.p50)))}, shown one every ${zp(Un(g.map(y=>y.presentMs)))}.

          `:"",v=e0(s),k=s.pushed?"On a PC that does not run steadily without a limit, the limits are not compared with each other: each one only has to run steadily.":"A limit is taken when the game reacts sooner or the mouse waits less with it than with yours (gain above zero), and never when anything measures worse. A lower limit's longer frames are in the mouse wait. Slowest 1 % counts beyond the frame time.",E=i.map((y,C)=>Ho(`${y.where}: FPS limits`,`${y.html}${C===i.length-1?`

          ${k}

          `:""}`,{unit:"times in ms"}));return`
          ${[Ho("This PC",`

          ${s.gpu}
          ${s.cpu}${s.laptop?" (laptop)":""}, ${s.hz} Hz${s.powerOverlay?`, Windows power mode: ${s.powerOverlay}`:""}.${p}

          + ${f}${s.rolledBack?`

          ${s.rolledBack}

          `:""}${s.pipelineRefused?`

          ${s.pipelineRefused}

          `:""}${Qv(s.input)}${b}`),Ho("Before and after",`${qn(`${m}`,[`Before (${Dt(s.beforeCap)})${ra(s.before)}`,s.after?`After (${Dt(s.afterCap)})${ra(s.after)}`:""])}${s.after?"":'

          Your setup stayed as it was, so there is no after to measure.

          '}`,{unit:"times in ms"}),Ho("Client test: setup",n.length>0?qn(`Setup${m}Result`,n,"adNum adWrap"):"

          The client test did not run, the client's own setup was left alone.

          ",{unit:"times in ms"}),...E,Ho("Test match: game settings",`

          ${l}

          ${h} +

          Settings that need a reload cannot be measured in one test match, they were not changed.

          `),v?Ho("What the PC did",v,{wide:!0}):""].join("")}

          The run took ${s.seconds.toFixed(0)} s. A difference only counts when it is bigger than the spread between two samples of the same setup, - and a setup that measures worse anywhere is never taken.

          Copy this report
          `}function na(s,e,t,o,n=!1){let r=_i(s,e,{prefer:o,inputRequired:t==="test match",trade:n}),i=r.judged.map(d=>({cap:d.cap,where:t,summary:d.summary,frameMs:d.frameMs,netMs:d.netMs,outcome:d.outcome})),a=r.judged.find(d=>d.cap===r.winner),l="measures as smooth as before, with fewer frames to draw";if(r.decidedBy==="net"){let{task:d=0,input:h=null}=a?.gains??{},p=[];d>0&&p.push(`the game reacts ${yt(d)} ms sooner`),h!==null&&h>0&&p.push(`the mouse waits ${yt(h)} ms less`),h!==null&&h<0&&p.push(`the mouse waits ${yt(-h)} ms longer, which the sooner reaction outweighs on a PC below its target`),l=p.length>0?p.join(", "):"frames come sooner and nothing waits longer"}let c=r.judged.filter(d=>d.cap!==e&&d.outcome!=="worse"&&d.outcome!=="not steady").sort((d,h)=>(h.netMs??-1/0)-(d.netMs??-1/0)).map(d=>d.cap);return{rows:i,winner:r.winner,reason:l,order:c}}function _p(s){u.hostFeatures?.includes("mute")&&window.chrome.webview.postMessage(`mute, ${s}`)}function Bp(){return`Takes about two minutes. Don't touch mouse or keyboard meanwhile: a test window opens and closes a few times, then Kute plays a private match by itself, turning the view and firing.${u.hostFeatures?.includes("mute")?" The game is muted meanwhile.":""}`}function Ts(){return Oe.some(s=>u.settings.data[s.setting]!==!1!=(u.running?.[s.setting]!==!1))}function zp(s){return s.report?.version===2?s.report:void 0}function Hp(s){return new Promise(e=>{let t=performance.now(),o={frames:0,done:!1,watchdog:0},n=()=>{o.frames++;let r=performance.now()-t;if(r{o.done||e(null)},s+2e3)})}async function Zv(s){if(s===0)return!0;let e=performance.now()+Fv;for(;performance.now()typeof t=="number"?Math.round(t*100)/100:null;return{fps:e(s.fps),p50:e(s.p50),p99:e(s.p99),maxMs:e(s.maxMs),stallMs:e(s.stallMs),taskP99:e(s.taskP99),inputP99:e(s.inputP99),...typeof s.presentMs=="number"?{presentMs:e(s.presentMs)}:{},...s.invalid?{invalid:!0,why:s.why}:{},...s.load?{load:s.load}:{}}}function io(s){return ye(s).fps.median??0}var qn,Mp,Tp,ea,Ov,Dv,ta,On,Ap,Fv,Ms,qv,Kv,jv,Lp,Rp,oa,Uv,De,kt,ra,Op,aa=w(()=>{"use strict";yp();D();zn();Ae();Ki();ji();ks();Qi();Xi();qn="kute_autodetect",Mp="kute_autodetect_asked",Tp=250,ea=1500,Ov=3e5,Dv=2e4,ta=3*Bt,On=2*Bt,Ap=6*Bt,Fv=6e3,Ms=450,qv=700,Kv=.08,jv=["gameFpsLimit","throttle",...Oe.map(s=>s.setting)],Lp="autodetect-v2",Rp="https://krunker.io/",oa="kute_autodetect_stopped",Uv={taskP99:"the game reacted later",inputP99:"the mouse waited longer",p99:"slow frames came later",stallMs:"more stutter",maxMs:"a longer freeze",frame:"frames took longer, and the mouse wait could not be measured",unsteady:"it did not run steadily"},De=s=>new Promise(e=>{setTimeout(e,s)});kt=class{constructor(){document.querySelector("#adPanelHost")?.parentElement?.remove(),this.overlay=document.createElement("div"),this.onEscape=void 0,this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.93)";let e=document.createElement("div");e.id="adPanelHost",this.overlay.append(e),this.root=e.attachShadow({mode:"open"}),this.root.innerHTML=xp,document.body.append(this.overlay)}element(e){return this.root.querySelector(`#${e}`)}progress(e,t){this.element("adStatus").textContent=e,this.element("adBarFill").style.width=`${Math.round(t*100)}%`}choose(e,t,o,n){let r=o.find(l=>l.cancel);this.dismissWith(r?()=>r.onPick():void 0),this.element("adTitle").textContent=e,this.element("adStatus").textContent=t;let i=this.element("adNote");i.textContent=n??"",i.style.display=n?"block":"none",this.element("adBar").style.display="none",this.element("adHint").style.display="none";let a=this.element("adActions");a.style.display="flex",a.innerHTML="";for(let l of o){let c=document.createElement("div");c.className="adButton",c.textContent=l.label,c.onclick=()=>l.onPick(),a.append(c)}}result(e,t={}){this.dismissWith(()=>this.close()),this.element("adTitle").textContent=e.title,this.element("adStatus").textContent=e.line,this.element("adNote").style.display="none",this.element("adBar").style.display="none",this.element("adHint").style.display="none",this.element("adActions").style.display="flex",this.element("adDetailsButton").style.display="none",this.element("adUndo").style.display=e.changed&&t.onUndo?"":"none",this.element("adRun").style.display=t.onRun?"":"none",this.element("adRestart").style.display=e.needsRestart?"":"none",this.element("adRestart").onclick=()=>window.chrome.webview.postMessage("restart"),this.element("adAdvancedButton").style.display=t.report?"":"none";let o=this.element("adDetails");if(o.innerHTML=e.details.map(n=>`
        • ${n}
        • `).join(""),o.style.display=e.details.length>0?"block":"none",t.report){let n=this.element("adAdvanced");n.innerHTML=Jv(t.report);let r=this.element("adAdvancedButton");r.textContent="Advanced",r.onclick=()=>{let i=n.style.display!=="block";n.style.display=i?"block":"none",this.element("adPanel").classList.toggle("adWide",i),r.textContent=i?"Hide advanced":"Advanced"},this.element("adCopy").onclick=()=>{let i=JSON.stringify({kute:u.version,...t.report},null,2);navigator.clipboard.writeText(i).then(()=>{this.element("adCopy").textContent="Copied"},()=>{this.element("adCopy").textContent="Copying failed"})}}this.element("adOk").onclick=()=>this.close(),this.element("adUndo").onclick=()=>{this.close(),t.onUndo?.()},this.element("adRun").onclick=()=>{this.close(),t.onRun?.()}}clickThrough(e){this.overlay.style.pointerEvents=e?"none":""}dismissWith(e){this.unbindEscape(),this.overlay.onclick=e?t=>{t.target===this.overlay&&e()}:null,e&&(this.onEscape=t=>{t.key==="Escape"&&(t.stopPropagation(),e())},document.addEventListener("keydown",this.onEscape,!0))}unbindEscape(){this.onEscape&&document.removeEventListener("keydown",this.onEscape,!0),this.onEscape=void 0}close(){this.unbindEscape(),this.overlay.remove()}};ra=class{constructor(){this.running=!1,this.cancelled=!1}snapshot(){return{client:Object.fromEntries(jv.map(e=>[e,u.settings.data[e]])),game:Object.fromEntries(Gi.map(e=>[e,Es(e)]))}}restore(e){_n();for(let[t,o]of Object.entries(e.game))o!==null&&Es(t)!==o&&Me(t,o);for(let[t,o]of Object.entries(e.client))o!==void 0&&u.settings.data[t]!==o&&Ht(t,o)}undo(){let e=zt();if(!e?.undoable){u.showNotification("Nothing to undo",!1,3);return}let t=new Set(vt.filter(i=>i.needsReload).map(i=>i.id)),o=Object.entries(e.snapshot.game).some(([i,a])=>t.has(i)&&a!==null&&Es(i)!==a);this.restore(e.snapshot);let n=Ts();e.undoable=!1;let r="Your previous settings are back.";o&&(r="Your previous settings are back, the game reloads once to apply them."),n&&(r+=" Restart Kute to finish."),e.summary={title:"Undone",line:r,details:[],changed:!1,needsRestart:n},Fe(e),u.showNotification(`Auto-detect undone. ${r.replace("Your previous settings are back","Your settings are back")}`,!1,5),o&&setTimeout(()=>location.reload(),1200)}dropUndo(){let e=zt();e?.undoable&&(e.undoable=!1,Fe(e))}showLast(){let e=zt();if(!e?.summary){u.showNotification("Auto-detect has not run yet",!1,3);return}new kt().result(e.summary,{onUndo:e.undoable?()=>this.undo():void 0,report:zp(e)})}async start(e={}){if(this.running)return;if(!u.hostFeatures?.includes(Lp)){u.showNotification("Auto-detect needs a newer Kute, update the client to use it",!1,6);return}if(u.recovery){u.showNotification("Auto-detect can't run in safe mode or while Kute looks for the cause of a crash",!1,6);return}if(!As()){u.showNotification("Log in first: auto-detect measures in a private test match, and hosting one needs an account",!1,6);return}if(document.pointerLockElement||He()){u.showNotification("Open the menu outside of a competitive match first",!1,4);return}if(!e.resume&&Ts()){u.showNotification("Restart Kute first: a setting you changed only applies after a restart, auto-detect would test the old one",!1,7);return}this.running=!0,this.cancelled=!1,window.closWind?.();let t,o;if(e.resume)t=e.resume,o=t.previous??null;else{o=zt(),o&&(delete o.wizard,delete o.wizardDetails);let l=this.snapshot();t={status:"running",at:Date.now(),snapshot:e.snapshot??l,baseline:l,previous:o,details:e.details??[]},Fe(t)}let n=new kt,r=l=>{l.key==="Escape"&&(this.cancelled=!0,Di())};document.addEventListener("keydown",r,!0);let i={inMatch:!1},a=()=>{window.chrome.webview.postMessage("input-replay-stop"),this.restore(t.snapshot),Fe(o||{status:"prompted",at:Date.now(),snapshot:t.snapshot}),n.close(),Ts()&&u.showNotification("Your settings are back. Restart Kute to finish",!1,7),i.inMatch&&(document.exitPointerLock(),location.href=Rp)};try{let l=await this.run(n,t,i);if(l==="restarting")return;if(l===null){a();return}t.status="done",t.summary=l.summary,t.report=l.report,t.undoable=l.summary.changed,!l.summary.changed&&o?.undoable&&(t.snapshot=o.snapshot,t.undoable=!0),delete t.previous,delete t.baseline,delete t.carry,delete t.details,t.showSummary=!0,Fe(t),n.progress("Leaving the test match",1),document.exitPointerLock(),await De(800),location.href=Rp}catch(l){let c=`Auto-detect stopped: ${l instanceof Error?l.message:String(l)}`;i.inMatch&&sessionStorage.setItem(oa,c),a(),u.showNotification(c,!1,7)}finally{document.removeEventListener("keydown",r,!0),_p(!1),window.chrome.webview.postMessage("throttle, menu"),this.running=!1}}async run(e,t,o){let n=Gv(),r=t.baseline??t.snapshot,i=t.details??[],a=performance.now()-(t.carry?.elapsedMs??0),l=!!t.carry;e.progress("Reading your hardware",.02);let c=await Te("get-specs","specs");if(c===null)throw new Error("this needs a newer version of the client");let d=c.displays??[],h=d.find(M=>M.hostsWindow)??d[0],p=n.hz??(h?.hz>1?h.hz:60),m=(c.gpus??[]).filter(M=>!M.software),f=c.renderAdapter?.name??[...m].sort((M,F)=>F.vramMb-M.vramMb)[0]?.name??"unknown graphics card",g=n.battery??!!c.onBattery,b=n.laptop??(!!c.laptop||c.hybrid===!0),v=p*3,k=u.hostFeatures?.includes("load-sample")===!0,E=u.running?.hardFlip!==!1,L=Number(r.game[wt])||0,x=Number(r.client.gameFpsLimit)||0,$=Number(r.client.throttle)||1,I=[x,L].filter(M=>M>0),_=I.length>0?Math.min(...I):0,H=Pn(),G=null,J=[],B=[];if(!l){if(G=await Fi({hz:p,hybrid:c.hybrid===!0,progress:(M,F)=>e.progress(M,.03+.27*F),cancelled:()=>this.cancelled}),this.cancelled)return null;if(G&&n.force&&n.force in H&&(G={...G,winner:{...H,[n.force]:!H[n.force]},changed:!0,decidedBy:"p99"}),G){e.progress("Testing FPS limits",.31);let M=[...new Set([0,v,2*p,p,_])].sort((q,ee)=>ee-q),F=await qi({pipeline:G.winner,common:G.common,caps:M,cancelled:()=>this.cancelled});if(this.cancelled)return null;if(F){let q=na(F,_,"client test",b?v:void 0);J=q.rows,B=q.order}}}e.progress("Opening a private test match",.38),_p(!0),e.clickThrough(!0);let re=await $s(),je=!1;if(re&&(e.progress("Joining the test match",.41),je=await Cs(re)),e.clickThrough(!1),!je)throw window.closWind?.(),new Error("could not open a private test match (is a host slot free?)");o.inMatch=!0;let be=()=>{if(!Bn(re))throw new Error("left the private test match")};if(this.cancelled)return null;L>0&&l&&Me(wt,"0");let Ee=Number(u.settings.data.gameFpsLimit)||0,j=!0;Hn(),window.chrome.webview.postMessage("throttle, game"),await De(2500),await De(300),window.chrome.webview.postMessage("bring-to-front");let X=async(M,F=ta)=>{M!==Ee&&(Ht("gameFpsLimit",M),Ee=M,await De(qv),j=await Zv(M)),be(),k&&await Te("load-sample","loadSample",500),E&&await Te("get-present-intervals","presentIntervals",400);let q=await Zi({ms:F,hz:p,replay:!0});if(E){let ee=await Te("get-present-intervals","presentIntervals",400);ee&&ee.samples>0&&(q.presentMs=ee.p50)}if(k&&(q.load=await Te("load-sample","loadSample",500)),be(),!j&&!q.invalid&&(q.invalid=!0,q.why="nothing held the FPS limit"),n.collapse!==void 0&&(M===0||M>=n.collapse)){let ee=(te,O)=>(te??0)+O;return{...q,fps:(q.fps??0)/2,stallMs:400,p99:ee(q.p99,25),maxMs:ee(q.maxMs,40),taskP99:ee(q.taskP99,40),inputP99:ee(q.inputP99,30)}}return q},Y=async()=>{if(!k)return[];await X(0,Bt),window.chrome.webview.postMessage(`input-replay, ${10*Bt}`);let M=[],F=performance.now();for(await Te("load-sample","loadSample",500);performance.now()-F<10*Bt&&!this.cancelled;){let q=await Hp(300);if(q===null)break;M.push({ms:Math.round(performance.now()-F),fps:Math.round(q),load:await Te("load-sample","loadSample",500)})}return window.chrome.webview.postMessage("input-replay-stop"),M},y=async(M,F=ta)=>{let q=[];for(let ee=0;ee<5&&q.length<2&&!this.cancelled;ee++){let te=await X(M,F);te.invalid||q.push(te)}return q},C=async M=>{for(let F=0;F<4&&!this.cancelled;F++)if(!gt([await X(M,On)],M))return},R=async M=>{let F=new Map(M.map(q=>[q,[]]));for(let q=0;q<2;q++)for(let ee of M){if(this.cancelled)return F;F.get(ee)?.push(await X(ee))}return F},{carry:K}=t;if(!K){e.progress("Measuring how the game runs now",.45),await X(Ee);let M=await y(Ee);if(this.cancelled)return null;if(M.length<2)throw new Error("the game could not be measured, the Kute window has to stay in front during the test");L>0&&Me(wt,"0"),$>1&&(Ht("throttle",1),window.chrome.webview.postMessage("throttle, game"),await De(Ms)),e.progress("Measuring what this PC can do",.5);let q=_===0&&$<=1?[...M,await X(0)]:[await X(0),await X(0),await X(0)];if(this.cancelled)return null;if(K={asPlayed:M,uncapped:q,playedCap:_,pipelineBefore:H,pipelineAfter:G?.winner??H,pipelineChanged:!!G?.changed,decidedBy:G?.decidedBy??null,rows:G?.rows??[],benchCaps:J,capOrder:B,elapsedMs:performance.now()-a},K.pipelineChanged){t.carry=K,Fe(t),L>0&&Me(wt,String(L)),Ee!==x&&Ht("gameFpsLimit",x);for(let ee of Oe)K.pipelineAfter[ee.setting]!==H[ee.setting]&&Ht(ee.setting,K.pipelineAfter[ee.setting]);return document.exitPointerLock(),e.choose("Kute restarts once","The client test found a setup that runs better on this PC. Kute restarts with it and checks it in the game, the test goes on by itself.",[]),await De(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}}let{playedCap:z}=K,N=K,V=M=>({version:2,gpu:f,cpu:`${c.cpu?.name??"unknown processor"}, ${c.cpu?.threads??"?"} threads`,hz:p,laptop:!!c.laptop,hybrid:typeof c.hybrid=="boolean"?c.hybrid:null,powerOverlay:c.powerOverlay??null,capacity:io(N.uncapped),unlimited:N.uncapped.map(Fn),played:N.asPlayed.map(Fn),adapters:{render:c.renderAdapter?.luid??null,display:h?.adapter??null},hybridSource:c.hybridSource??null,client:{...Object.fromEntries(["gameFpsLimit","throttle","inMenuThrottle","uncapFps","patchFrameLimiter","obsCapturePlugin","renderStats","performanceMode","webviewPriority",...Oe.map(F=>F.setting)].map(F=>[F,r.client[F]??u.settings.data[F]??null])),gameFrameCap:L,hook:c.hook??null,limiter:u.frameLimiter??null,running:u.running??null},noise:0,drift:1,headroom:1,beforeCap:z,before:ye(N.asPlayed),afterCap:z,after:null,pipeline:N.rows,caps:N.benchCaps,halfResolutionGain:null,settings:[],plan:Nn({capacity:io(N.uncapped),hz:p,headroom:1,halfResolutionGain:null,settings:[]}),input:Hn(),rolledBack:null,pipelineRefused:N.pipelineRefused??null,recheck:N.recheck??[],seconds:(performance.now()-a)/1e3,...M}),de=(M,F={})=>{this.restore(t.snapshot);let q=Ts();return{summary:{title:"Nothing changed",line:q?`${M} Restart Kute to finish.`:M,details:[],changed:!1,needsRestart:q},report:V({...F,rolledBack:M})}},Z=io(N.uncapped){let{keep:ee,failed:te}=ws(M,F,{capBefore:z,capAfter:q,trade:Z});return ee?null:te==="reference"?"Kute could not measure the game with your own settings well enough to compare (its window has to stay in front), so it put yours back.":te==="result"?"Kute could not measure the result (its window has to stay in front), so it put your settings back.":`The new settings measured worse than yours (${te==="fps"?`${Math.round(io(F))} FPS, ${Math.round(io(M))} before`:Uv[te??""]}), so Kute put yours back.`},le=[...i];if($>1&&le.push(`CPU Throttling: ${$} \u2192 off (it slows the game down on purpose, the result is checked against how the game ran with it)`),l&&N.pipelineChanged&&!N.pipelineRefused){e.progress("Checking the new setup in the game",.5);let M=await y(z);if(this.cancelled)return null;let F={recheck:M.map(Fn)},q=gt(N.asPlayed,z)&>(M,z)?null:ge(N.asPlayed,M,z);if(q&&ws(N.asPlayed,M,{capBefore:z,capAfter:z,trade:Z}).failed==="result")return de(q.replace("The new settings","The setup that won the client test"),F);if(q){for(let O of Oe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&Ht(O.setting,N.pipelineBefore[O.setting]);return L>0&&Me(wt,String(L)),Ee!==x&&Ht("gameFpsLimit",x),t.carry={...N,pipelineRefused:q.replace("The new settings","The setup that won the client test"),...F,elapsedMs:performance.now()-a,resumed:!1},Fe(t),document.exitPointerLock(),e.choose("Kute restarts once more","The setup from the client test ran worse in the game, so Kute goes back to yours and tests the FPS limits on it.",[]),await De(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}let ee=N.rows.find(O=>Oe.every(ve=>O.pipeline[ve.setting]===N.pipelineAfter[ve.setting])),te=ee?Wv(N.decidedBy,ye(N.rows[0].readings),ye(ee.readings)):"measured better";for(let O of Oe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&le.push(`${O.label}: ${ut(N.pipelineBefore[O.setting])} \u2192 ${ut(N.pipelineAfter[O.setting])} (${te})`)}e.progress("Finding the FPS limit that runs best",.56);let Be=io(N.uncapped),Yt=Be>=v?v:p,xo=M=>!g||M===z||M!==0&&M<=v,zg=N.uncapped.filter(vs).length>=2,Ar=(b||zg)&&Be>=v?v:void 0,ze=new Map,Xt=[],se=z,Go="",Ie=Be,at=bs(new Map([[0,N.uncapped]]));if(!at){let M=N.capOrder.length>0?N.capOrder.slice(0,2):zi({hz:p,capacity:Be,current:z}).slice(1,3),F=[...new Set([z,0,...M,...Ar?[Ar]:[],...g?[Yt]:[]])].filter(xo);if(ze=await R(F),this.cancelled)return null;at=bs(ze);let q=na(ze,z,"test match",Ar,Z);if(Xt=q.rows,!at){se=q.winner,Go=q.reason,Ie=io(ze.get(0)??[])||Be;let ee=Hi([...ze.keys()],se,Ie,p).filter(te=>xo(te)&&te0){e.progress("Fine tuning the FPS limit",.64);let te=await R(ee);if(this.cancelled)return null;let O=na(new Map([[se,ze.get(se)??[]],...te]),se,"test match",void 0,Z);Xt.push(...O.rows.filter(ve=>ve.cap!==se));for(let[ve,Ye]of te)ze.set(ve,Ye);O.winner!==se&&(se=O.winner,Go=O.reason),at=bs(ze)}}}let Wo;if(at){e.progress("Finding the FPS limit this PC holds steadily",.62);let M=new Map;await C(p);for(let te of Ln(p)){if(this.cancelled)return null;let O=await y(te,Ap);if(M.set(te,O),!no(O,te))break}if(this.cancelled)return null;let F=Ni(p,M),q=(Kn([...N.uncapped,...ze.get(0)??[]].filter(gs).map(te=>te.stallMs))??0)/1e3;Wo={stoodStill:q,steadyUpTo:F.steadyUpTo,limit:F.cap};for(let te of Xt)te.outcome==="better"&&(te.outcome="not used");for(let[te,O]of M){let ve=no(O,te)?"steady":"not steady";Xt.push({cap:te,where:"test match",summary:ye(O.map(_o)),frameMs:Kn(O.map(Ye=>Ye.p50)),netMs:null,outcome:ve}),ze.set(te,O)}let ee=z>0&&no(N.asPlayed,z);se=z,ee||(se=[...new Set([F.cap,F.steadyUpTo])].filter(O=>O!==null).find(O=>ws(N.asPlayed,M.get(O)??[],{capBefore:z,capAfter:O}).keep)??z),Go=`without a limit this PC stood still ${Math.round(q*100)} % of the time. Up to ${F.steadyUpTo} FPS it ran steadily in the empty test match, ${se} FPS ${(F.steadyUpTo??0)>se?"leaves a step of room for a real match":"is the highest that did"}`}let Vo=Xt.find(M=>M.cap===Yt),Hg=Vo!==void 0&&(Vo.outcome==="steady"||Vo.netMs!==null&&(Vo.outcome==="better"||Vo.outcome==="not better"));g&&(se===0||se>v)&&Hg&&(se=Yt,Go="on battery");for(let M of Xt)M.cap===se&&M.cap!==z&&M.outcome!=="not steady"&&(M.outcome="chosen"),M.readings=(ze.get(M.cap)??[]).map(Fn);let ln=N.uncapped.map(M=>M.fps).filter(M=>typeof M=="number"),Jd=ln.length>1?(Math.max(...ln)-Math.min(...ln))/Math.max(1,...ln):0,Lr=1,cn=1,Rr=null;if(!at){Rr=await X(0);let M=(l?ze.get(0)?.[0]:N.uncapped[0])?.fps??Ie;Lr=(Rr.fps??Ie)/Math.max(1,M),cn=Bi(Lr,Jd)}let Og=v*cn,So=[],Pr=null,Yo=Number(r.game[ro])||1;if(at)for(let M of vt)So.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC does not run steadily without a limit)"});else if(IeO.inputP99!==null),F=Rr?.fps??Ie,q=async(O,ve)=>{let Ye=F;O(),await De(Ms);let lt=async()=>{let ru=await X(0,On);return ru.invalid?null:ru.fps},Jt=await lt();ve(),await De(Ms);let Xe=await lt();if(Jt===null||Xe===null)return{ratio:1,steady:!1,raw:[Ye,Jt??0,Xe??0]};F=Xe;let nu=(Ye+Xe)/2;return{ratio:Jt/Math.max(1,nu),steady:Math.abs(Ye-Xe)/Math.max(1,nu)<=Kv,raw:[Ye,Jt,Xe]}},ee=vt.filter(O=>!O.needsReload&&(M||!O.fightOnly));for(let O of vt){let ve=r.game[O.id],Ye=String(O.cheap),lt={id:O.id,label:O.label,current:ve??"default",cheap:Ye,gain:null,steady:!0};if(So.push(lt),O.needsReload){lt.note="not tested (needs a reload)";continue}if(O.fightOnly&&!M){lt.note="not tested (only costs in a fight)";continue}if(ve===null){lt.note="value unknown";continue}if(this.cancelled)return null;e.progress(`Measuring ${O.label}`,.68+.17*ee.indexOf(O)/ee.length);let Jt=Vi(ve),Xe=await q(()=>Me(O.id,Jt),()=>Me(O.id,ve));lt.gain=Jt===Ye?Xe.ratio:1/Math.max(.01,Xe.ratio),lt.steady=Xe.steady,lt.raw=Xe.raw}for(let O of So){if(O.gain===null||!O.steady||O.current===O.cheap||O.gainMe(O.id,O.cheap),()=>Me(O.id,O.current));O.confirmGain=ve.ratio,O.gain=Math.min(O.gain,ve.ratio),O.steady=ve.steady}e.progress("Checking the graphics card",.88);let te=await q(()=>Me(ro,String(Math.max(.1,Yo*.5))),()=>Me(ro,String(Yo)));Pr=te.steady&&te.ratio>.92?te.ratio:null}else for(let M of vt)So.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC reaches its target)"});if(this.cancelled)return null;let Ct=Nn({capacity:Ie,hz:p,headroom:cn,halfResolutionGain:Pr,settings:So});for(let M of Ct.changes)le.push(`${M.label}: ${ut(r.game[M.id])} \u2192 ${ut(M.value)} (${M.reason})`),Me(M.id,String(M.value));let Mt=null;if((Ct.changes.length>0||Ct.tuneResolution)&&(await De(Ms),Mt=(await X(0,On)).fps),Ct.tuneResolution&&Mt!==null){let M=Yo;for(let F=0;F<2&&Mt!==null&&Mtxs&&!this.cancelled;F++){let q=F===0?M*Math.sqrt(Mt/Ct.needed):xs;M=Math.min(M,Math.max(xs,Math.floor(q*20)/20)),e.progress(`Trying resolution ${M}`,.9+F*.01),Me(ro,String(M)),await De(Ms),Mt=(await X(0,On)).fps}M!==Yo&&le.push(`Resolution: ${Yo} \u2192 ${M} (the graphics card is the limit)`)}if(this.cancelled)return null;e.progress("Checking the result",.94),Ct.changes.length>0&&await X(se);let Zd=at?await Y():[];at&&await C(se);let Qd=await y(se,at?Ap:ta);if(this.cancelled)return null;let Ir={capacity:Ie,noise:Jd,drift:Lr,headroom:cn,afterCap:se,after:ye(Qd),caps:[...N.benchCaps,...Xt],halfResolutionGain:Pr,settings:So,plan:Ct,pushed:Wo,...Zd.length>0?{trace:Zd}:{}},Nr=se!==z,Dg=!Nr&&L>0&&(x===0||LFPS Limit
          : ${Dt(z)} \u2192 ${Dt(se)} (${Go})`):Dg&&le.push(`FPS Limit: ${Dt(se)}, now held by Kute instead of the game's frame cap (the game's cap keeps the processor busy while it waits)`);let dn=le.length>0,eu=le.length>i.length;if(eu){let M=(ze.get(z)??[]).filter(ee=>!ee.invalid),F=l||L>0||$>1,q=ge(!F&&M.length>=2?M:N.asPlayed,Qd,se);if(q)return de(q,Ir)}else L>0&&Me(wt,String(L)),Ee!==x&&Ht("gameFpsLimit",x);_n();let un=`${v} FPS (${3}x your ${p} Hz screen)`,tu=`${le.length} setting${le.length===1?"":"s"} changed.`,mt=`Your PC ran ${Math.round(Ie)} FPS in the test match, above the ${un} Kute aims for. Nothing needed changing.`;dn&&Mt!==null?mt=`${tu} Test match without a limit: ${Math.round(Ie)} FPS before, ${Math.round(Mt)} after. Kute aims for at least ${un} with no stutter.`:dn?mt=`${tu} Without a limit your PC runs ${Math.round(Ie)} FPS in the test match, Kute aims for at least ${un} with no stutter.`:Iese?" with room to spare":""}.`;else if(se>0&&no(N.asPlayed,se)){let ee=F!==null&&FsetTimeout(()=>this.offer(),1500),{once:!0});return}sessionStorage.setItem(Mp,"1");let e=new kt;e.choose("Set Kute up for this PC?","Kute can set the game up for what this PC can do: it measures in a private test match, and everything it changes can be undone. You have to be logged in for that.",[{label:"Yes",onPick:()=>{this.setUp(e)}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"No",cancel:!0,onPick:()=>this.decline(e)}],Bp())}decline(e){e.close(),this.remember("declined"),u.showNotification("Got it. You can always start the setup from Settings, Client",!1,5)}async signedIn(){if(As())return!0;if(!localStorage.getItem("krunker_token"))return!1;let e=Date.now()+Dv;for(;Date.now(){e.close(),window.loginOrRegister(),this.waitForLogin()}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}])}waitForLogin(){let e=Date.now()+Ov,t=setInterval(()=>{if(As()){clearInterval(t),this.askSettings();return}Date.now()>e&&clearInterval(t)},1e3)}askSettings(e=new kt){this.remember("settings"),e.choose("Where should your game settings come from?","Kute measures this PC either way and sets what it finds. This is only about the settings it starts from.",[{label:"Import a settings.txt",onPick:()=>{e.close(),this.remember("import"),window.importSettingsPopup()}},{label:"Kute's preset",onPick:()=>{e.close(),this.applyPreset()}},{label:"Keep my settings",onPick:()=>{e.close(),this.start()}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}],Bp())}afterImport(){if(zt()?.wizard!=="import")return;let e=this.snapshot();this.remember("run",e,[]),setTimeout(()=>{zt()?.wizard==="run"&&this.start({snapshot:e})},1500)}applyPreset(){let e=this.snapshot(),t=[];for(let[o,n]of Object.entries(Ui))String(e.game[o])!==String(n)&&(Me(o,n),t.push(`${Wi(o)}: ${ut(e.game[o])} \u2192 ${ut(n)} (Kute's preset)`));this.remember("run",e,t),u.showNotification("Applying Kute's preset, the game reloads once",!1,4),setTimeout(()=>location.reload(),1200)}resume(){let e=zt();if(e?.status==="running"){if(e.carry&&!e.carry.resumed){e.carry.resumed=!0,Fe(e),setTimeout(async()=>{if(await this.signedIn()){this.start({resume:e});return}this.restore(e.snapshot),e.previous?Fe(e.previous):localStorage.removeItem(qn),u.showNotification("Auto-detect could not go on (not logged in). Your settings are back, restart Kute to finish",!1,8)},ea);return}this.restore(e.snapshot),e.previous?Fe(e.previous):localStorage.removeItem(qn);return}let t=sessionStorage.getItem(oa);if(t&&(sessionStorage.removeItem(oa),setTimeout(()=>u.showNotification(t,!1,12),ea)),e?.showSummary&&e.summary){e.showSummary=!1,Fe(e),new kt().result(e.summary,{onUndo:()=>this.undo(),report:zp(e)});return}if(e?.wizard==="run"){setTimeout(async()=>{await this.signedIn()&&this.start({snapshot:e.snapshot,details:e.wizardDetails??[]})},ea);return}if(e?.wizard==="login"||e?.wizard==="settings"||e?.wizard==="import"){setTimeout(()=>this.setUp(),Tp);return}e&&e.wizard!=="later"||setTimeout(()=>this.offer(),Tp)}},Op=new ra;u.autoDetect=Op;Op.resume()});var Fp={};A(Fp,{clanTag:()=>Ls,default:()=>pt});function Ls(s){for(let e of s.children){if(e.tagName!=="SPAN")continue;let t=Qv.exec(e.textContent??"");if(t)return{span:e,tag:t[1]}}return null}function o0(s){let e="";for(let t of s.childNodes)t.nodeType===Node.TEXT_NODE&&(e+=t.textContent??"");return e.trim()}var Qv,Dp,e0,t0,la,pt,jn=w(()=>{"use strict";Qv=/^\s*\[(.+)\]\s*$/;Dp=[{list:"leaderContainer",kind:"leader",root:"leaderboardHolder"},{list:"ingameTable",kind:"ingame",root:"centerLeaderDisplay"},{list:"endTable",kind:"end",root:"endUI"},{list:"playerListH",kind:"alt",root:"menuWindow"}],e0=1e3,t0='.pListName, [class^="newLeaderName"], [class^="leaderName"], .endTableN';la=class{constructor(){this.decorators=new Map,this.watched=[],this.timer=0}add(e,t){this.decorators.set(e,t),this.watched.length===0&&this.observe(),this.refresh()}remove(e){if(this.decorators.delete(e),!(this.decorators.size>0)){for(let{observer:t}of this.watched)t.disconnect();this.watched=[],clearInterval(this.timer),this.timer=0}}observe(){for(let{root:e,list:t,kind:o}of Dp){let n=document.getElementById(e);n&&this.watch(n,t,o)}this.timer=setInterval(()=>this.discover(),e0)}watch(e,t,o){let n={observer:new MutationObserver(()=>this.walk(n)),target:e,list:t,kind:o};n.observer.observe(e,{childList:!0,subtree:!0}),this.watched.push(n),this.walk(n)}discover(){this.watched=this.watched.filter(e=>e.target.isConnected?!0:(e.observer.disconnect(),!1));for(let{list:e,kind:t}of Dp){let o=document.getElementById(e);o&&!this.watched.some(n=>n.target.contains(o))&&this.watch(o,e,t)}}refresh(){for(let e of this.watched)this.walk(e)}walk(e){let t=document.querySelectorAll(`#${e.list}`);if(t.length>0){for(let o of t)for(let n of o.querySelectorAll(t0)){let r={element:n,name:o0(n),kind:e.kind};for(let i of this.decorators.keys())i(r)}for(let o of this.decorators.values())o?.(e.kind)}e.observer.takeRecords()}},pt=new la});var Kp={};A(Kp,{default:()=>et,playerHash:()=>Un});function a0(){if(document.getElementById("signedInHeaderBar")===null)return"";let s=window.getGameActivity?.()?.id;return typeof s=="string"?s:""}function l0(){let s=window.getGameActivity?.()?.user;if(typeof s!="string")return"";if(localStorage.getItem("kro_setngss_premiumBadge")==="false"){let e=localStorage.getItem("krunker_username");if(e)return e}return s}async function Un(s,e){let t=new TextEncoder().encode(s+` -`+e),o=new Uint8Array(await crypto.subtle.digest("SHA-256",t));return Array.from(o.subarray(0,16),n=>n.toString(16).padStart(2,"0")).join("")}function c0(s,e,t){return new Promise(o=>{let n=0,r=i=>{let a=i?.data?.devProof;a?.nonce===s&&(clearTimeout(n),window.chrome.webview.removeEventListener("message",r),o(typeof a.user=="string"&&typeof a.proof=="string"?{user:a.user,proof:a.proof}:null))};n=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),o(null)},i0),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(`dev-proof, ${s}, ${e}, ${t}`)})}var s0,n0,r0,i0,ca,qp,et,da=w(()=>{"use strict";D();It();s0=[2,4,8,16,30],n0=2e3,r0=3e4,i0=1e3;ca=class{constructor(){this.game="",this.roster=new Set,this.devs=new Map,this.nonce="",this.listeners=new Set,this.socket=null,this.failures=0,this.timer=0,this.joined="",he.available().then(e=>{e&&this.open()}),he.listeners.add(e=>{if(!e){this.socket?.close();return}this.failures=0,he.available().then(t=>{t&&!this.socket&&this.open()})})}open(){if(he.down||he.offline())return;let e=new WebSocket(he.base.replace(/^http/,"ws")+"/ws");this.socket=e,e.addEventListener("open",()=>{setTimeout(()=>{this.socket===e&&(this.failures=0)},r0),e.send(JSON.stringify(u.settings.data.counted===!0?{t:"hi"}:{t:"hi",first:!0})),this.sync(),this.timer=setInterval(()=>this.sync(),n0)}),e.addEventListener("message",t=>this.receive(t.data)),e.addEventListener("close",()=>{clearInterval(this.timer),this.socket=null,this.joined="",this.nonce="",this.setRoster("",[]);let t=s0[this.failures++];t!==void 0&&setTimeout(()=>this.open(),t*1e3)})}async sync(){let e=a0(),t=e?l0():"",o=e&&t?e+` -`+t:"";if(o===this.joined)return;if(this.joined=o,!o){this.send({t:"leave"}),this.setRoster("",[]);return}let n=await Un(e,t);if(this.joined!==o)return;let r=u.dev===!0&&this.nonce?await c0(this.nonce,e,n):null;this.joined===o&&this.send(r?{t:"join",game:e,hash:n,dev:r}:{t:"join",game:e,hash:n})}send(e){this.socket?.readyState===WebSocket.OPEN&&this.socket.send(JSON.stringify(e))}receive(e){let t;try{t=JSON.parse(String(e))}catch{return}t?.t==="hello"&&typeof t.nonce=="string"?this.nonce=t.nonce:t?.t==="roster"&&typeof t.game=="string"&&Array.isArray(t.players)?this.joined.startsWith(t.game+` -`)&&this.setRoster(t.game,t.players):t?.t==="+"&&typeof t.h=="string"?(this.remember(t.h,t.d===1?t.c:void 0),this.changed()):t?.t==="-"&&typeof t.h=="string"?(this.roster.delete(t.h),this.devs.delete(t.h),this.changed()):t?.t==="counted"&&(u.settings.data.counted=!0,window.chrome.webview.postMessage("set-config, counted, true"))}remember(e,t){this.roster.add(e),typeof t=="string"&&t!==""?this.devs.set(e,t):this.devs.delete(e)}setRoster(e,t){if(!(e===this.game&&t.length===0&&this.roster.size===0)){this.game=e,this.roster=new Set,this.devs=new Map;for(let o of t)Array.isArray(o)&&typeof o[0]=="string"&&this.remember(o[0],o[1]===1?o[2]?.c:void 0);this.changed()}}changed(){for(let e of this.listeners)e()}},qp=new ca;u.presence=qp;et=qp});var Up,jp=w(()=>{Up="data:image/webp;base64,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"});var Wp,Gp=w(()=>{Wp="data:image/webp;base64,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"});var pa={};A(pa,{default:()=>g0});function Vp(s){let e=s?`[data-kute-badge="${s}"]`:"[data-kute-badge]";for(let o of document.querySelectorAll(e))o.remove();let t=s?`[data-kute-badged="${s}"]`:"[data-kute-badged]";for(let o of document.querySelectorAll(t))o.removeAttribute("data-kute-badged")}function Yp(s){(s.querySelector("[data-kute-badge]")??s.parentElement?.querySelector("[data-kute-badge]"))?.remove(),s.removeAttribute("data-kute-badged")}var p0,h0,m0,f0,ua,Xp,g0,ha=w(()=>{"use strict";D();jn();da();jp();Gp();p0="2px",h0={leader:"margin-top:5px;vertical-align:middle;height:21px;margin-left:2px",ingame:"margin-top:3px;vertical-align:middle;height:21px;margin-left:2px",end:"margin-top:-12px;vertical-align:middle;width:26px;margin-left:2px",alt:"vertical-align:middle;height:21px;margin-left:6px;position:relative;top:-0.35em"},m0={kute:Up,dev:Wp},f0={kute:"Kute",dev:"Kute Developer"};ua=class{constructor(){this.game="",this.hashes=new Map,this.pending=new Set,this.found=!1,this.candidates=[],this.enabled=u.settings.data.cuteBadge!==!1,this.decorator=e=>this.decorate(e),this.finisher=()=>this.finish(),u.settings.toggleCuteBadge=e=>this.toggle(e),et.listeners.add(()=>this.rosterChanged())}toggle(e){this.enabled=e,e||Vp("kute"),pt.refresh()}rosterChanged(){if(et.game!==this.game&&(this.game=et.game,this.hashes.clear(),this.pending.clear()),Vp(),et.roster.size===0){pt.remove(this.decorator);return}pt.add(this.decorator,this.finisher)}decorate(e){if(et.roster.size===0||e.name==="")return;let t=this.hashes.get(e.name);if(t===void 0){this.learn(e.name);return}if(et.devs.has(t)){this.candidates.push({row:e,hash:t,tag:Ls(e.element)?.tag});return}this.enabled&&!e.element.hasAttribute("data-kute-badged")&&et.roster.has(t)&&this.insert(e,"kute")}finish(){if(this.candidates.length===0)return;let e=new Map;for(let t of this.candidates){let o=e.get(t.hash);o?o.push(t):e.set(t.hash,[t])}for(let[t,o]of e){let n=o.filter(i=>i.tag===et.devs.get(t)),r=null;n.length===1?r=n[0].row:n.length===0&&o.length===1&&(r=o[0].row);for(let i of o){let a=i.row.element.getAttribute("data-kute-badged");if(i.row!==r){a&&Yp(i.row.element);continue}a!=="dev"&&(a&&Yp(i.row.element),this.insert(i.row,"dev"))}}this.candidates.length=0}async learn(e){if(this.pending.has(e))return;this.pending.add(e);let{game:t}=this,o=await Un(t,e);t===this.game&&(this.pending.delete(e),this.hashes.set(e,o),et.roster.has(o)&&(this.found=!0),!(this.pending.size>0||!this.found)&&(this.found=!1,pt.refresh()))}insert(e,t){let{element:o}=e,n=o.parentElement;if(!n)return;let r=document.createElement("img");r.src=m0[t],r.setAttribute("data-kute-badge",t),r.alt="",r.title=f0[t],r.style.cssText=h0[e.kind],e.kind==="alt"?o.append(r):e.kind==="end"?n.insertBefore(r,o.nextSibling):n.insertBefore(r,n.firstElementChild?.nextSibling??o),r.nextElementSibling?.tagName==="I"&&(r.style.marginRight=p0),o.setAttribute("data-kute-badged",t)}},Xp=new ua;u.badges=Xp;g0=Xp});var Jp=we((_S,b0)=>{b0.exports=`#chatList>*{display:block!important}#chatInputHolder{opacity:1;transition:opacity .2s ease-in-out,transform .2s ease-in-out}#chatList::-webkit-scrollbar{display:none}#chatList{transition:margin-bottom .2s ease-in-out}#uiBase.onGame #chatList{margin-bottom:-50px}#uiBase.onMenu #chatInputHolder{transition:none}#uiBase.onGame #chatInputHolder{opacity:0;transform:translateY(50px)}#uiBase.onGame #chatHolder:focus-within #chatInputHolder{opacity:1;transform:translateY(0)}#uiBase.onGame #chatHolder:focus-within #chatList{margin-bottom:0}#uiBase.onSpect #chatInputHolder{opacity:1;transform:translateY(0)}#uiBase.onSpect #chatList{margin-bottom:0} -`});var fa={};A(fa,{default:()=>v0});var ma,v0,ga=w(()=>{"use strict";D();Ae();ma=class{constructor(){this.teamModes=new Set(["Team Deathmatch","Hardpoint","Capture the Flag","Hide & Seek","Infected","Last Man Standing","Simon Says","Prop Hunt","Boss Hunt","Deposit","Stalker","Kill Confirmed","Defuse","Traitor","Blitz","Domination","Squad Deathmatch","Team Defender"]),this.styles=document.createElement("style"),Promise.resolve().then(()=>ue(Jp(),1)).then(e=>{this.styles.innerHTML=e.default}),u.settings.toggleBetterChat=e=>this.toggle(e),this.chatHolder=U("#chatHolder"),this.chatList=U("#chatList"),this.chatInput=ke("#chatInput"),this.chatSwitch=U("#chatSwitch"),this.channelT=document.createElement("div"),this.channelA=document.createElement("div"),this.channelT.style.cssText="float: left; display: inline-block; margin-right: 5px; color: #9eeb56;",this.channelT.textContent="[T]",this.channelA.style.cssText="float: left; display: inline-block; margin-right: 5px; color: #eb5656;",this.channelA.textContent="[M]",this.observer=new MutationObserver(e=>this.parseMessages(e)),this.toggle(!0)}switchChat=e=>{e.key==="Tab"&&(window.switchChat(this.chatSwitch),e.preventDefault())};parseMessages(e){let t=!1;for(let o of e)for(let n of o.addedNodes){if(!(n instanceof HTMLElement))continue;let r=n.querySelector(".chatItem");if(!r)continue;let i=r.querySelector(".chatMsg");if(!i)continue;if(i.textContent.includes("Text & Voice Chat")){n.remove();continue}let{tab:a}=n.dataset;!a||!r.textContent.includes("\u200E:")||!this.teamModes.has(window.getGameActivity().mode)||(a==="0"?i.insertBefore(this.channelA.cloneNode(!0),i.firstChild):a==="1"&&i.insertBefore(this.channelT.cloneNode(!0),i.firstChild),t=!0)}t&&(this.chatList.scrollTop=1e9)}toggle(e){e?(document.head.append(this.styles),this.chatInput.addEventListener("keydown",this.switchChat,{capture:!0}),this.observer.observe(this.chatList,{childList:!0})):(this.styles.remove(),this.chatInput.removeEventListener("keydown",this.switchChat,{capture:!0}),this.observer.disconnect())}},v0=new ma});var eh={};function Zp(){return Array.from(document.querySelectorAll(".bpClaimB")).filter(s=>s.offsetParent!==null&&s.textContent.trim()==="Claim")}function Qp(){let s=Zp().length>0;s?Ft.classList.remove("disabled"):Ft.classList.add("disabled"),Ft.textContent=s?"Claim All":"Nothing to Claim"}async function w0(){let s=Zp();if(s.length!==0){for(let e of s)e.getAttribute("onclick")?.includes("windows[5].claimItem(")&&e.click(),await new Promise(o=>setTimeout(o,200));Qp()}}function k0(){let s=document.querySelector(".bpBotH");s&&(s.append(Ft),Qp())}var Ft,y0,ba=w(()=>{"use strict";Ft=document.createElement("div");Ft.className="bpBtn skip";Ft.id="claimAllBtn";Ft.textContent="Claim All";Ft.onclick=()=>{window.playSelect?.(.1),w0()};y0=window.showWindow;window.showWindow=(...s)=>(s[0]===6&&queueMicrotask(()=>k0()),y0(...s))});function ya(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function dh(s){co=s}function zo(s){let e=[];return t=>{let o=Math.max(0,Math.min(3,t-1)),n=e[o];return n||(n=s(o),e[o]=n),n}}function Q(s,e=""){let t=typeof s=="string"?s:s.source,o={replace:(n,r)=>{let i=typeof r=="string"?r:r.source;return i=i.replace(Le.caret,"$1"),t=t.replace(n,i),o},getRegex:()=>new RegExp(t,e)};return o}function qe(s,e){if(e){if(Le.escapeTest.test(s))return s.replace(Le.escapeReplace,nh)}else if(Le.escapeTestNoEncode.test(s))return s.replace(Le.escapeReplaceNoEncode,nh);return s}function rh(s){try{s=encodeURI(s).replace(Le.percentDecode,"%")}catch{return null}return s}function ih(s,e){let t=s.replace(Le.findPipe,(r,i,a)=>{let l=!1,c=i;for(;--c>=0&&a[c]==="\\";)l=!l;return l?"|":" |"}),o=t.split(Le.splitPipe),n=0;if(o[0].trim()||o.shift(),o.length>0&&!o.at(-1)?.trim()&&o.pop(),e)if(o.length>e)o.splice(e);else for(;o.length
          Copy this report
          `}function ia(s,e,t,o,n=!1){let r=zi(s,e,{prefer:o,inputRequired:t==="test match",trade:n}),i=r.judged.map(d=>({cap:d.cap,where:t,summary:d.summary,frameMs:d.frameMs,netMs:d.netMs,outcome:d.outcome})),a=r.judged.find(d=>d.cap===r.winner),l="measures as smooth as before, with fewer frames to draw";if(r.decidedBy==="net"){let{task:d=0,input:h=null}=a?.gains??{},p=[];d>0&&p.push(`the game reacts ${xt(d)} ms sooner`),h!==null&&h>0&&p.push(`the mouse waits ${xt(h)} ms less`),h!==null&&h<0&&p.push(`the mouse waits ${xt(-h)} ms longer, which the sooner reaction outweighs on a PC below its target`),l=p.length>0?p.join(", "):"frames come sooner and nothing waits longer"}let c=r.judged.filter(d=>d.cap!==e&&d.outcome!=="worse"&&d.outcome!=="not steady").sort((d,h)=>(h.netMs??-1/0)-(d.netMs??-1/0)).map(d=>d.cap);return{rows:i,winner:r.winner,reason:l,order:c}}function Op(s){u.hostFeatures?.includes("mute")&&window.chrome.webview.postMessage(`mute, ${s}`)}function Fp(){return`Takes about two minutes. Don't touch mouse or keyboard meanwhile: a test window opens and closes a few times, then Kute plays a private match by itself, turning the view and firing.${u.hostFeatures?.includes("mute")?" The game is muted meanwhile.":""}`}function Ls(){return Fe.some(s=>u.settings.data[s.setting]!==!1!=(u.running?.[s.setting]!==!1))}function Dp(s){return s.report?.version===2?s.report:void 0}function qp(s){return new Promise(e=>{let t=performance.now(),o={frames:0,done:!1,watchdog:0},n=()=>{o.frames++;let r=performance.now()-t;if(r{o.done||e(null)},s+2e3)})}async function s0(s){if(s===0)return!0;let e=performance.now()+Gv;for(;performance.now()typeof t=="number"?Math.round(t*100)/100:null;return{fps:e(s.fps),p50:e(s.p50),p99:e(s.p99),maxMs:e(s.maxMs),stallMs:e(s.stallMs),taskP99:e(s.taskP99),inputP99:e(s.inputP99),...typeof s.presentMs=="number"?{presentMs:e(s.presentMs)}:{},...s.invalid?{invalid:!0,why:s.why}:{},...s.load?{load:s.load}:{}}}function co(s){return ye(s).fps.median??0}var jn,Rp,Pp,oa,jv,Uv,sa,Dn,Ip,Gv,As,Wv,Vv,Yv,Np,_p,na,Xv,De,yt,aa,Kp,ca=w(()=>{"use strict";$p();F();On();Ae();Ui();Gi();xs();ta();Zi();jn="kute_autodetect",Rp="kute_autodetect_asked",Pp=250,oa=1500,jv=3e5,Uv=2e4,sa=3*zt,Dn=2*zt,Ip=6*zt,Gv=6e3,As=450,Wv=700,Vv=.08,Yv=["gameFpsLimit","throttle",...Fe.map(s=>s.setting)],Np="autodetect-v2",_p="https://krunker.io/",na="kute_autodetect_stopped",Xv={taskP99:"the game reacted later",inputP99:"the mouse waited longer",p99:"slow frames came later",stallMs:"more stutter",maxMs:"a longer freeze",frame:"frames took longer, and the mouse wait could not be measured",unsteady:"it did not run steadily"},De=s=>new Promise(e=>{setTimeout(e,s)});yt=class{constructor(){document.querySelector("#adPanelHost")?.parentElement?.remove(),this.overlay=document.createElement("div"),this.onEscape=void 0,this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.93)";let e=document.createElement("div");e.id="adPanelHost",this.overlay.append(e),this.root=e.attachShadow({mode:"open"}),this.root.innerHTML=Cp,document.body.append(this.overlay)}element(e){return this.root.querySelector(`#${e}`)}progress(e,t){this.element("adStatus").textContent=e,this.element("adBarFill").style.width=`${Math.round(t*100)}%`}choose(e,t,o,n){let r=o.find(l=>l.cancel);this.dismissWith(r?()=>r.onPick():void 0),this.element("adTitle").textContent=e,this.element("adStatus").textContent=t;let i=this.element("adNote");i.textContent=n??"",i.style.display=n?"block":"none",this.element("adBar").style.display="none",this.element("adHint").style.display="none";let a=this.element("adActions");a.style.display="flex",a.innerHTML="";for(let l of o){let c=document.createElement("div");c.className="adButton",c.textContent=l.label,c.onclick=()=>l.onPick(),a.append(c)}}result(e,t={}){this.dismissWith(()=>this.close()),this.element("adTitle").textContent=e.title,this.element("adStatus").textContent=e.line,this.element("adNote").style.display="none",this.element("adBar").style.display="none",this.element("adHint").style.display="none",this.element("adActions").style.display="flex",this.element("adDetailsButton").style.display="none",this.element("adUndo").style.display=e.changed&&t.onUndo?"":"none",this.element("adRun").style.display=t.onRun?"":"none",this.element("adRestart").style.display=e.needsRestart?"":"none",this.element("adRestart").onclick=()=>window.chrome.webview.postMessage("restart"),this.element("adAdvancedButton").style.display=t.report?"":"none";let o=this.element("adDetails");if(o.innerHTML=e.details.map(n=>`
        • ${n}
        • `).join(""),o.style.display=e.details.length>0?"block":"none",t.report){let n=this.element("adAdvanced");n.innerHTML=o0(t.report);let r=this.element("adAdvancedButton");r.textContent="Advanced",r.onclick=()=>{let i=n.style.display!=="block";n.style.display=i?"block":"none",this.element("adPanel").classList.toggle("adWide",i),r.textContent=i?"Hide advanced":"Advanced"},this.element("adCopy").onclick=()=>{let i=JSON.stringify({kute:u.version,...t.report},null,2);navigator.clipboard.writeText(i).then(()=>{this.element("adCopy").textContent="Copied"},()=>{this.element("adCopy").textContent="Copying failed"})}}this.element("adOk").onclick=()=>this.close(),this.element("adUndo").onclick=()=>{this.close(),t.onUndo?.()},this.element("adRun").onclick=()=>{this.close(),t.onRun?.()}}clickThrough(e){this.overlay.style.pointerEvents=e?"none":""}dismissWith(e){this.unbindEscape(),this.overlay.onclick=e?t=>{t.target===this.overlay&&e()}:null,e&&(this.onEscape=t=>{t.key==="Escape"&&(t.stopPropagation(),e())},document.addEventListener("keydown",this.onEscape,!0))}unbindEscape(){this.onEscape&&document.removeEventListener("keydown",this.onEscape,!0),this.onEscape=void 0}close(){this.unbindEscape(),this.overlay.remove()}};aa=class{constructor(){this.running=!1,this.cancelled=!1}snapshot(){return{client:Object.fromEntries(Yv.map(e=>[e,u.settings.data[e]])),game:Object.fromEntries(Vi.map(e=>[e,Cs(e)]))}}restore(e){zn();for(let[t,o]of Object.entries(e.game))o!==null&&Cs(t)!==o&&Me(t,o);for(let[t,o]of Object.entries(e.client))o!==void 0&&u.settings.data[t]!==o&&Ot(t,o)}undo(){let e=Ht();if(!e?.undoable){u.showNotification("Nothing to undo",!1,3);return}let t=new Set(wt.filter(i=>i.needsReload).map(i=>i.id)),o=Object.entries(e.snapshot.game).some(([i,a])=>t.has(i)&&a!==null&&Cs(i)!==a);this.restore(e.snapshot);let n=Ls();e.undoable=!1;let r="Your previous settings are back.";o&&(r="Your previous settings are back, the game reloads once to apply them."),n&&(r+=" Restart Kute to finish."),e.summary={title:"Undone",line:r,details:[],changed:!1,needsRestart:n},qe(e),u.showNotification(`Auto-detect undone. ${r.replace("Your previous settings are back","Your settings are back")}`,!1,5),o&&setTimeout(()=>location.reload(),1200)}dropUndo(){let e=Ht();e?.undoable&&(e.undoable=!1,qe(e))}showLast(){let e=Ht();if(!e?.summary){u.showNotification("Auto-detect has not run yet",!1,3);return}new yt().result(e.summary,{onUndo:e.undoable?()=>this.undo():void 0,report:Dp(e)})}async start(e={}){if(this.running)return;if(!u.hostFeatures?.includes(Np)){u.showNotification("Auto-detect needs a newer Kute, update the client to use it",!1,6);return}if(u.recovery){u.showNotification("Auto-detect can't run in safe mode or while Kute looks for the cause of a crash",!1,6);return}if(!Rs()){u.showNotification("Log in first: auto-detect measures in a private test match, and hosting one needs an account",!1,6);return}if(document.pointerLockElement||Oe()){u.showNotification("Open the menu outside of a competitive match first",!1,4);return}if(!e.resume&&Ls()){u.showNotification("Restart Kute first: a setting you changed only applies after a restart, auto-detect would test the old one",!1,7);return}this.running=!0,this.cancelled=!1,window.closWind?.();let t,o;if(e.resume)t=e.resume,o=t.previous??null;else{o=Ht(),o&&(delete o.wizard,delete o.wizardDetails);let l=this.snapshot();t={status:"running",at:Date.now(),snapshot:e.snapshot??l,baseline:l,previous:o,details:e.details??[]},qe(t)}let n=new yt,r=l=>{l.key==="Escape"&&(this.cancelled=!0,qi())};document.addEventListener("keydown",r,!0);let i={inMatch:!1},a=()=>{window.chrome.webview.postMessage("input-replay-stop"),this.restore(t.snapshot),qe(o||{status:"prompted",at:Date.now(),snapshot:t.snapshot}),n.close(),Ls()&&u.showNotification("Your settings are back. Restart Kute to finish",!1,7),i.inMatch&&(document.exitPointerLock(),location.href=_p)};try{let l=await this.run(n,t,i);if(l==="restarting")return;if(l===null){a();return}t.status="done",t.summary=l.summary,t.report=l.report,t.undoable=l.summary.changed,!l.summary.changed&&o?.undoable&&(t.snapshot=o.snapshot,t.undoable=!0),delete t.previous,delete t.baseline,delete t.carry,delete t.details,t.showSummary=!0,qe(t),n.progress("Leaving the test match",1),document.exitPointerLock(),await De(800),location.href=_p}catch(l){let c=`Auto-detect stopped: ${l instanceof Error?l.message:String(l)}`;i.inMatch&&sessionStorage.setItem(na,c),a(),u.showNotification(c,!1,7)}finally{document.removeEventListener("keydown",r,!0),Op(!1),window.chrome.webview.postMessage("throttle, menu"),this.running=!1}}async run(e,t,o){let n=Jv(),r=t.baseline??t.snapshot,i=t.details??[],a=performance.now()-(t.carry?.elapsedMs??0),l=!!t.carry;e.progress("Reading your hardware",.02);let c=await Te("get-specs","specs");if(c===null)throw new Error("this needs a newer version of the client");let d=c.displays??[],h=d.find(M=>M.hostsWindow)??d[0],p=n.hz??(h?.hz>1?h.hz:60),m=(c.gpus??[]).filter(M=>!M.software),f=c.renderAdapter?.name??[...m].sort((M,D)=>D.vramMb-M.vramMb)[0]?.name??"unknown graphics card",g=n.battery??!!c.onBattery,b=n.laptop??(!!c.laptop||c.hybrid===!0),v=p*3,k=u.hostFeatures?.includes("load-sample")===!0,E=u.running?.hardFlip!==!1,L=Number(r.game[kt])||0,y=Number(r.client.gameFpsLimit)||0,C=Number(r.client.throttle)||1,I=[y,L].filter(M=>M>0),_=I.length>0?Math.min(...I):0,H=Nn(),G=null,J=[],B=[];if(!l){if(G=await Ki({hz:p,hybrid:c.hybrid===!0,progress:(M,D)=>e.progress(M,.03+.27*D),cancelled:()=>this.cancelled}),this.cancelled)return null;if(G&&n.force&&n.force in H&&(G={...G,winner:{...H,[n.force]:!H[n.force]},changed:!0,decidedBy:"p99"}),G){e.progress("Testing FPS limits",.31);let M=[...new Set([0,v,2*p,p,_])].sort((q,ee)=>ee-q),D=await ji({pipeline:G.winner,common:G.common,caps:M,cancelled:()=>this.cancelled});if(this.cancelled)return null;if(D){let q=ia(D,_,"client test",b?v:void 0);J=q.rows,B=q.order}}}e.progress("Opening a private test match",.38),Op(!0),e.clickThrough(!0);let re=await Ms(),je=!1;if(re&&(e.progress("Joining the test match",.41),je=await Ts(re)),e.clickThrough(!1),!je)throw window.closWind?.(),new Error("could not open a private test match (is a host slot free?)");o.inMatch=!0;let be=()=>{if(!Hn(re))throw new Error("left the private test match")};if(this.cancelled)return null;L>0&&l&&Me(kt,"0");let Ee=Number(u.settings.data.gameFpsLimit)||0,j=!0;Fn(),window.chrome.webview.postMessage("throttle, game"),await De(2500),await De(300),window.chrome.webview.postMessage("bring-to-front");let X=async(M,D=sa)=>{M!==Ee&&(Ot("gameFpsLimit",M),Ee=M,await De(Wv),j=await s0(M)),be(),k&&await Te("load-sample","loadSample",500),E&&await Te("get-present-intervals","presentIntervals",400);let q=await ea({ms:D,hz:p,replay:!0});if(E){let ee=await Te("get-present-intervals","presentIntervals",400);ee&&ee.samples>0&&(q.presentMs=ee.p50)}if(k&&(q.load=await Te("load-sample","loadSample",500)),be(),!j&&!q.invalid&&(q.invalid=!0,q.why="nothing held the FPS limit"),n.collapse!==void 0&&(M===0||M>=n.collapse)){let ee=(te,O)=>(te??0)+O;return{...q,fps:(q.fps??0)/2,stallMs:400,p99:ee(q.p99,25),maxMs:ee(q.maxMs,40),taskP99:ee(q.taskP99,40),inputP99:ee(q.inputP99,30)}}return q},Y=async()=>{if(!k)return[];await X(0,zt),window.chrome.webview.postMessage(`input-replay, ${10*zt}`);let M=[],D=performance.now();for(await Te("load-sample","loadSample",500);performance.now()-D<10*zt&&!this.cancelled;){let q=await qp(300);if(q===null)break;M.push({ms:Math.round(performance.now()-D),fps:Math.round(q),load:await Te("load-sample","loadSample",500)})}return window.chrome.webview.postMessage("input-replay-stop"),M},x=async(M,D=sa)=>{let q=[];for(let ee=0;ee<5&&q.length<2&&!this.cancelled;ee++){let te=await X(M,D);te.invalid||q.push(te)}return q},$=async M=>{for(let D=0;D<4&&!this.cancelled;D++)if(!bt([await X(M,Dn)],M))return},R=async M=>{let D=new Map(M.map(q=>[q,[]]));for(let q=0;q<2;q++)for(let ee of M){if(this.cancelled)return D;D.get(ee)?.push(await X(ee))}return D},{carry:K}=t;if(!K){e.progress("Measuring how the game runs now",.45),await X(Ee);let M=await x(Ee);if(this.cancelled)return null;if(M.length<2)throw new Error("the game could not be measured, the Kute window has to stay in front during the test");L>0&&Me(kt,"0"),C>1&&(Ot("throttle",1),window.chrome.webview.postMessage("throttle, game"),await De(As)),e.progress("Measuring what this PC can do",.5);let q=_===0&&C<=1?[...M,await X(0)]:[await X(0),await X(0),await X(0)];if(this.cancelled)return null;if(K={asPlayed:M,uncapped:q,playedCap:_,pipelineBefore:H,pipelineAfter:G?.winner??H,pipelineChanged:!!G?.changed,decidedBy:G?.decidedBy??null,rows:G?.rows??[],benchCaps:J,capOrder:B,elapsedMs:performance.now()-a},K.pipelineChanged){t.carry=K,qe(t),L>0&&Me(kt,String(L)),Ee!==y&&Ot("gameFpsLimit",y);for(let ee of Fe)K.pipelineAfter[ee.setting]!==H[ee.setting]&&Ot(ee.setting,K.pipelineAfter[ee.setting]);return document.exitPointerLock(),e.choose("Kute restarts once","The client test found a setup that runs better on this PC. Kute restarts with it and checks it in the game, the test goes on by itself.",[]),await De(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}}let{playedCap:z}=K,N=K,V=M=>({version:2,gpu:f,cpu:`${c.cpu?.name??"unknown processor"}, ${c.cpu?.threads??"?"} threads`,hz:p,laptop:!!c.laptop,hybrid:typeof c.hybrid=="boolean"?c.hybrid:null,powerOverlay:c.powerOverlay??null,capacity:co(N.uncapped),unlimited:N.uncapped.map(Kn),played:N.asPlayed.map(Kn),adapters:{render:c.renderAdapter?.luid??null,display:h?.adapter??null},hybridSource:c.hybridSource??null,client:{...Object.fromEntries(["gameFpsLimit","throttle","inMenuThrottle","uncapFps","patchFrameLimiter","obsCapturePlugin","renderStats","performanceMode","webviewPriority",...Fe.map(D=>D.setting)].map(D=>[D,r.client[D]??u.settings.data[D]??null])),gameFrameCap:L,hook:c.hook??null,limiter:u.frameLimiter??null,running:u.running??null},noise:0,drift:1,headroom:1,beforeCap:z,before:ye(N.asPlayed),afterCap:z,after:null,pipeline:N.rows,caps:N.benchCaps,halfResolutionGain:null,settings:[],plan:Bn({capacity:co(N.uncapped),hz:p,headroom:1,halfResolutionGain:null,settings:[]}),input:Fn(),rolledBack:null,pipelineRefused:N.pipelineRefused??null,recheck:N.recheck??[],seconds:(performance.now()-a)/1e3,...M}),de=(M,D={})=>{this.restore(t.snapshot);let q=Ls();return{summary:{title:"Nothing changed",line:q?`${M} Restart Kute to finish.`:M,details:[],changed:!1,needsRestart:q},report:V({...D,rolledBack:M})}},Z=co(N.uncapped){let{keep:ee,failed:te}=ys(M,D,{capBefore:z,capAfter:q,trade:Z});return ee?null:te==="reference"?"Kute could not measure the game with your own settings well enough to compare (its window has to stay in front), so it put yours back.":te==="result"?"Kute could not measure the result (its window has to stay in front), so it put your settings back.":`The new settings measured worse than yours (${te==="fps"?`${Math.round(co(D))} FPS, ${Math.round(co(M))} before`:Xv[te??""]}), so Kute put yours back.`},le=[...i];if(C>1&&le.push(`CPU Throttling: ${C} \u2192 off (it slows the game down on purpose, the result is checked against how the game ran with it)`),l&&N.pipelineChanged&&!N.pipelineRefused){e.progress("Checking the new setup in the game",.5);let M=await x(z);if(this.cancelled)return null;let D={recheck:M.map(Kn)},q=bt(N.asPlayed,z)&&bt(M,z)?null:ge(N.asPlayed,M,z);if(q&&ys(N.asPlayed,M,{capBefore:z,capAfter:z,trade:Z}).failed==="result")return de(q.replace("The new settings","The setup that won the client test"),D);if(q){for(let O of Fe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&Ot(O.setting,N.pipelineBefore[O.setting]);return L>0&&Me(kt,String(L)),Ee!==y&&Ot("gameFpsLimit",y),t.carry={...N,pipelineRefused:q.replace("The new settings","The setup that won the client test"),...D,elapsedMs:performance.now()-a,resumed:!1},qe(t),document.exitPointerLock(),e.choose("Kute restarts once more","The setup from the client test ran worse in the game, so Kute goes back to yours and tests the FPS limits on it.",[]),await De(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}let ee=N.rows.find(O=>Fe.every(ve=>O.pipeline[ve.setting]===N.pipelineAfter[ve.setting])),te=ee?Zv(N.decidedBy,ye(N.rows[0].readings),ye(ee.readings)):"measured better";for(let O of Fe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&le.push(`${O.label}: ${pt(N.pipelineBefore[O.setting])} \u2192 ${pt(N.pipelineAfter[O.setting])} (${te})`)}e.progress("Finding the FPS limit that runs best",.56);let ze=co(N.uncapped),Zt=ze>=v?v:p,Eo=M=>!g||M===z||M!==0&&M<=v,qg=N.uncapped.filter(ks).length>=2,Rr=(b||qg)&&ze>=v?v:void 0,He=new Map,Qt=[],se=z,Vo="",Ie=ze,lt=ws(new Map([[0,N.uncapped]]));if(!lt){let M=N.capOrder.length>0?N.capOrder.slice(0,2):Oi({hz:p,capacity:ze,current:z}).slice(1,3),D=[...new Set([z,0,...M,...Rr?[Rr]:[],...g?[Zt]:[]])].filter(Eo);if(He=await R(D),this.cancelled)return null;lt=ws(He);let q=ia(He,z,"test match",Rr,Z);if(Qt=q.rows,!lt){se=q.winner,Vo=q.reason,Ie=co(He.get(0)??[])||ze;let ee=Fi([...He.keys()],se,Ie,p).filter(te=>Eo(te)&&te0){e.progress("Fine tuning the FPS limit",.64);let te=await R(ee);if(this.cancelled)return null;let O=ia(new Map([[se,He.get(se)??[]],...te]),se,"test match",void 0,Z);Qt.push(...O.rows.filter(ve=>ve.cap!==se));for(let[ve,Ye]of te)He.set(ve,Ye);O.winner!==se&&(se=O.winner,Vo=O.reason),lt=ws(He)}}}let Yo;if(lt){e.progress("Finding the FPS limit this PC holds steadily",.62);let M=new Map;await $(p);for(let te of Pn(p)){if(this.cancelled)return null;let O=await x(te,Ip);if(M.set(te,O),!ao(O,te))break}if(this.cancelled)return null;let D=Bi(p,M),q=(Un([...N.uncapped,...He.get(0)??[]].filter(vs).map(te=>te.stallMs))??0)/1e3;Yo={stoodStill:q,steadyUpTo:D.steadyUpTo,limit:D.cap};for(let te of Qt)te.outcome==="better"&&(te.outcome="not used");for(let[te,O]of M){let ve=ao(O,te)?"steady":"not steady";Qt.push({cap:te,where:"test match",summary:ye(O.map(zo)),frameMs:Un(O.map(Ye=>Ye.p50)),netMs:null,outcome:ve}),He.set(te,O)}let ee=z>0&&ao(N.asPlayed,z);se=z,ee||(se=[...new Set([D.cap,D.steadyUpTo])].filter(O=>O!==null).find(O=>ys(N.asPlayed,M.get(O)??[],{capBefore:z,capAfter:O}).keep)??z),Vo=`without a limit this PC stood still ${Math.round(q*100)} % of the time. Up to ${D.steadyUpTo} FPS it ran steadily in the empty test match, ${se} FPS ${(D.steadyUpTo??0)>se?"leaves a step of room for a real match":"is the highest that did"}`}let Xo=Qt.find(M=>M.cap===Zt),Kg=Xo!==void 0&&(Xo.outcome==="steady"||Xo.netMs!==null&&(Xo.outcome==="better"||Xo.outcome==="not better"));g&&(se===0||se>v)&&Kg&&(se=Zt,Vo="on battery");for(let M of Qt)M.cap===se&&M.cap!==z&&M.outcome!=="not steady"&&(M.outcome="chosen"),M.readings=(He.get(M.cap)??[]).map(Kn);let dn=N.uncapped.map(M=>M.fps).filter(M=>typeof M=="number"),tu=dn.length>1?(Math.max(...dn)-Math.min(...dn))/Math.max(1,...dn):0,Pr=1,un=1,Ir=null;if(!lt){Ir=await X(0);let M=(l?He.get(0)?.[0]:N.uncapped[0])?.fps??Ie;Pr=(Ir.fps??Ie)/Math.max(1,M),un=Hi(Pr,tu)}let jg=v*un,$o=[],Nr=null,Jo=Number(r.game[lo])||1;if(lt)for(let M of wt)$o.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC does not run steadily without a limit)"});else if(IeO.inputP99!==null),D=Ir?.fps??Ie,q=async(O,ve)=>{let Ye=D;O(),await De(As);let ct=async()=>{let cu=await X(0,Dn);return cu.invalid?null:cu.fps},eo=await ct();ve(),await De(As);let Xe=await ct();if(eo===null||Xe===null)return{ratio:1,steady:!1,raw:[Ye,eo??0,Xe??0]};D=Xe;let lu=(Ye+Xe)/2;return{ratio:eo/Math.max(1,lu),steady:Math.abs(Ye-Xe)/Math.max(1,lu)<=Vv,raw:[Ye,eo,Xe]}},ee=wt.filter(O=>!O.needsReload&&(M||!O.fightOnly));for(let O of wt){let ve=r.game[O.id],Ye=String(O.cheap),ct={id:O.id,label:O.label,current:ve??"default",cheap:Ye,gain:null,steady:!0};if($o.push(ct),O.needsReload){ct.note="not tested (needs a reload)";continue}if(O.fightOnly&&!M){ct.note="not tested (only costs in a fight)";continue}if(ve===null){ct.note="value unknown";continue}if(this.cancelled)return null;e.progress(`Measuring ${O.label}`,.68+.17*ee.indexOf(O)/ee.length);let eo=Xi(ve),Xe=await q(()=>Me(O.id,eo),()=>Me(O.id,ve));ct.gain=eo===Ye?Xe.ratio:1/Math.max(.01,Xe.ratio),ct.steady=Xe.steady,ct.raw=Xe.raw}for(let O of $o){if(O.gain===null||!O.steady||O.current===O.cheap||O.gain<_n)continue;if(this.cancelled)return null;e.progress(`Confirming ${O.label}`,.86);let ve=await q(()=>Me(O.id,O.cheap),()=>Me(O.id,O.current));O.confirmGain=ve.ratio,O.gain=Math.min(O.gain,ve.ratio),O.steady=ve.steady}e.progress("Checking the graphics card",.88);let te=await q(()=>Me(lo,String(Math.max(.1,Jo*.5))),()=>Me(lo,String(Jo)));Nr=te.steady&&te.ratio>.92?te.ratio:null}else for(let M of wt)$o.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC reaches its target)"});if(this.cancelled)return null;let Mt=Bn({capacity:Ie,hz:p,headroom:un,halfResolutionGain:Nr,settings:$o});for(let M of Mt.changes)le.push(`${M.label}: ${pt(r.game[M.id])} \u2192 ${pt(M.value)} (${M.reason})`),Me(M.id,String(M.value));let Tt=null;if((Mt.changes.length>0||Mt.tuneResolution)&&(await De(As),Tt=(await X(0,Dn)).fps),Mt.tuneResolution&&Tt!==null){let M=Jo;for(let D=0;D<2&&Tt!==null&&TtEs&&!this.cancelled;D++){let q=D===0?M*Math.sqrt(Tt/Mt.needed):Es;M=Math.min(M,Math.max(Es,Math.floor(q*20)/20)),e.progress(`Trying resolution ${M}`,.9+D*.01),Me(lo,String(M)),await De(As),Tt=(await X(0,Dn)).fps}M!==Jo&&le.push(`Resolution: ${Jo} \u2192 ${M} (the graphics card is the limit)`)}if(this.cancelled)return null;e.progress("Checking the result",.94),Mt.changes.length>0&&await X(se);let ou=lt?await Y():[];lt&&await $(se);let su=await x(se,lt?Ip:sa);if(this.cancelled)return null;let _r={capacity:Ie,noise:tu,drift:Pr,headroom:un,afterCap:se,after:ye(su),caps:[...N.benchCaps,...Qt],halfResolutionGain:Nr,settings:$o,plan:Mt,pushed:Yo,...ou.length>0?{trace:ou}:{}},Br=se!==z,Ug=!Br&&L>0&&(y===0||LFPS Limit
          : ${Dt(z)} \u2192 ${Dt(se)} (${Vo})`):Ug&&le.push(`FPS Limit: ${Dt(se)}, now held by Kute instead of the game's frame cap (the game's cap keeps the processor busy while it waits)`);let pn=le.length>0,nu=le.length>i.length;if(nu){let M=(He.get(z)??[]).filter(ee=>!ee.invalid),D=l||L>0||C>1,q=ge(!D&&M.length>=2?M:N.asPlayed,su,se);if(q)return de(q,_r)}else L>0&&Me(kt,String(L)),Ee!==y&&Ot("gameFpsLimit",y);zn();let hn=`${v} FPS (${3}x your ${p} Hz screen)`,ru=`${le.length} setting${le.length===1?"":"s"} changed.`,ft=`Your PC ran ${Math.round(Ie)} FPS in the test match, above the ${hn} Kute aims for. Nothing needed changing.`;pn&&Tt!==null?ft=`${ru} Test match without a limit: ${Math.round(Ie)} FPS before, ${Math.round(Tt)} after. Kute aims for at least ${hn} with no stutter.`:pn?ft=`${ru} Without a limit your PC runs ${Math.round(Ie)} FPS in the test match, Kute aims for at least ${hn} with no stutter.`:Iese?" with room to spare":""}.`;else if(se>0&&ao(N.asPlayed,se)){let ee=D!==null&&DsetTimeout(()=>this.offer(),1500),{once:!0});return}sessionStorage.setItem(Rp,"1");let e=new yt;e.choose("Set Kute up for this PC?","Kute can set the game up for what this PC can do: it measures in a private test match, and everything it changes can be undone. You have to be logged in for that.",[{label:"Yes",onPick:()=>{this.setUp(e)}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"No",cancel:!0,onPick:()=>this.decline(e)}],Fp())}decline(e){e.close(),this.remember("declined"),u.showNotification("Got it. You can always start the setup from Settings, Client",!1,5)}async signedIn(){if(Rs())return!0;if(!localStorage.getItem("krunker_token"))return!1;let e=Date.now()+Uv;for(;Date.now(){e.close(),window.loginOrRegister(),this.waitForLogin()}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}])}waitForLogin(){let e=Date.now()+jv,t=setInterval(()=>{if(Rs()){clearInterval(t),this.askSettings();return}Date.now()>e&&clearInterval(t)},1e3)}askSettings(e=new yt){this.remember("settings"),e.choose("Where should your game settings come from?","Kute measures this PC either way and sets what it finds. This is only about the settings it starts from.",[{label:"Import a settings.txt",onPick:()=>{e.close(),this.remember("import"),window.importSettingsPopup()}},{label:"Kute's preset",onPick:()=>{e.close(),this.applyPreset()}},{label:"Keep my settings",onPick:()=>{e.close(),this.start()}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}],Fp())}afterImport(){if(Ht()?.wizard!=="import")return;let e=this.snapshot();this.remember("run",e,[]),setTimeout(()=>{Ht()?.wizard==="run"&&this.start({snapshot:e})},1500)}applyPreset(){let e=this.snapshot(),t=[];for(let[o,n]of Object.entries(Wi))String(e.game[o])!==String(n)&&(Me(o,n),t.push(`${Yi(o)}: ${pt(e.game[o])} \u2192 ${pt(n)} (Kute's preset)`));this.remember("run",e,t),u.showNotification("Applying Kute's preset, the game reloads once",!1,4),setTimeout(()=>location.reload(),1200)}resume(){let e=Ht();if(e?.status==="running"){if(e.carry&&!e.carry.resumed){e.carry.resumed=!0,qe(e),setTimeout(async()=>{if(await this.signedIn()){this.start({resume:e});return}this.restore(e.snapshot),e.previous?qe(e.previous):localStorage.removeItem(jn),u.showNotification("Auto-detect could not go on (not logged in). Your settings are back, restart Kute to finish",!1,8)},oa);return}this.restore(e.snapshot),e.previous?qe(e.previous):localStorage.removeItem(jn);return}let t=sessionStorage.getItem(na);if(t&&(sessionStorage.removeItem(na),setTimeout(()=>u.showNotification(t,!1,12),oa)),e?.showSummary&&e.summary){e.showSummary=!1,qe(e),new yt().result(e.summary,{onUndo:()=>this.undo(),report:Dp(e)});return}if(e?.wizard==="run"){setTimeout(async()=>{await this.signedIn()&&this.start({snapshot:e.snapshot,details:e.wizardDetails??[]})},oa);return}if(e?.wizard==="login"||e?.wizard==="settings"||e?.wizard==="import"){setTimeout(()=>this.setUp(),Pp);return}e&&e.wizard!=="later"||setTimeout(()=>this.offer(),Pp)}},Kp=new aa;u.autoDetect=Kp;Kp.resume()});var Up={};A(Up,{clanTag:()=>Ps,default:()=>ht});function Ps(s){for(let e of s.children){if(e.tagName!=="SPAN")continue;let t=n0.exec(e.textContent??"");if(t)return{span:e,tag:t[1]}}return null}function a0(s){let e="";for(let t of s.childNodes)t.nodeType===Node.TEXT_NODE&&(e+=t.textContent??"");return e.trim()}var n0,jp,r0,i0,da,ht,Gn=w(()=>{"use strict";n0=/^\s*\[(.+)\]\s*$/;jp=[{list:"leaderContainer",kind:"leader",root:"leaderboardHolder"},{list:"ingameTable",kind:"ingame",root:"centerLeaderDisplay"},{list:"endTable",kind:"end",root:"endUI"},{list:"playerListH",kind:"alt",root:"menuWindow"}],r0=1e3,i0='.pListName, [class^="newLeaderName"], [class^="leaderName"], .endTableN';da=class{constructor(){this.decorators=new Map,this.watched=[],this.timer=0}add(e,t){this.decorators.set(e,t),this.watched.length===0&&this.observe(),this.refresh()}remove(e){if(this.decorators.delete(e),!(this.decorators.size>0)){for(let{observer:t}of this.watched)t.disconnect();this.watched=[],clearInterval(this.timer),this.timer=0}}observe(){for(let{root:e,list:t,kind:o}of jp){let n=document.getElementById(e);n&&this.watch(n,t,o)}this.timer=setInterval(()=>this.discover(),r0)}watch(e,t,o){let n={observer:new MutationObserver(()=>this.walk(n)),target:e,list:t,kind:o};n.observer.observe(e,{childList:!0,subtree:!0}),this.watched.push(n),this.walk(n)}discover(){this.watched=this.watched.filter(e=>e.target.isConnected?!0:(e.observer.disconnect(),!1));for(let{list:e,kind:t}of jp){let o=document.getElementById(e);o&&!this.watched.some(n=>n.target.contains(o))&&this.watch(o,e,t)}}refresh(){for(let e of this.watched)this.walk(e)}walk(e){let t=document.querySelectorAll(`#${e.list}`);if(t.length>0){for(let o of t)for(let n of o.querySelectorAll(i0)){let r={element:n,name:a0(n),kind:e.kind};for(let i of this.decorators.keys())i(r)}for(let o of this.decorators.values())o?.(e.kind)}e.observer.takeRecords()}},ht=new da});var Wp={};A(Wp,{default:()=>et,playerHash:()=>Wn});function p0(){if(document.getElementById("signedInHeaderBar")===null)return"";let s=window.getGameActivity?.()?.id;return typeof s=="string"?s:""}function h0(){let s=window.getGameActivity?.()?.user;if(typeof s!="string")return"";if(localStorage.getItem("kro_setngss_premiumBadge")==="false"){let e=localStorage.getItem("krunker_username");if(e)return e}return s}async function Wn(s,e){let t=new TextEncoder().encode(s+` +`+e),o=new Uint8Array(await crypto.subtle.digest("SHA-256",t));return Array.from(o.subarray(0,16),n=>n.toString(16).padStart(2,"0")).join("")}function m0(s,e,t){return new Promise(o=>{let n=0,r=i=>{let a=i?.data?.devProof;a?.nonce===s&&(clearTimeout(n),window.chrome.webview.removeEventListener("message",r),o(typeof a.user=="string"&&typeof a.proof=="string"?{user:a.user,proof:a.proof}:null))};n=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),o(null)},u0),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(`dev-proof, ${s}, ${e}, ${t}`)})}var l0,c0,d0,u0,ua,Gp,et,pa=w(()=>{"use strict";F();Nt();l0=[2,4,8,16,30],c0=2e3,d0=3e4,u0=1e3;ua=class{constructor(){this.game="",this.roster=new Set,this.devs=new Map,this.nonce="",this.listeners=new Set,this.socket=null,this.failures=0,this.timer=0,this.joined="",he.available().then(e=>{e&&this.open()}),he.listeners.add(e=>{if(!e){this.socket?.close();return}this.failures=0,he.available().then(t=>{t&&!this.socket&&this.open()})})}open(){if(he.down||he.offline())return;let e=new WebSocket(he.base.replace(/^http/,"ws")+"/ws");this.socket=e,e.addEventListener("open",()=>{setTimeout(()=>{this.socket===e&&(this.failures=0)},d0),e.send(JSON.stringify(u.settings.data.counted===!0?{t:"hi"}:{t:"hi",first:!0})),this.sync(),this.timer=setInterval(()=>this.sync(),c0)}),e.addEventListener("message",t=>this.receive(t.data)),e.addEventListener("close",()=>{clearInterval(this.timer),this.socket=null,this.joined="",this.nonce="",this.setRoster("",[]);let t=l0[this.failures++];t!==void 0&&setTimeout(()=>this.open(),t*1e3)})}async sync(){let e=p0(),t=e?h0():"",o=e&&t?e+` +`+t:"";if(o===this.joined)return;if(this.joined=o,!o){this.send({t:"leave"}),this.setRoster("",[]);return}let n=await Wn(e,t);if(this.joined!==o)return;let r=u.dev===!0&&this.nonce?await m0(this.nonce,e,n):null;this.joined===o&&this.send(r?{t:"join",game:e,hash:n,dev:r}:{t:"join",game:e,hash:n})}send(e){this.socket?.readyState===WebSocket.OPEN&&this.socket.send(JSON.stringify(e))}receive(e){let t;try{t=JSON.parse(String(e))}catch{return}t?.t==="hello"&&typeof t.nonce=="string"?this.nonce=t.nonce:t?.t==="roster"&&typeof t.game=="string"&&Array.isArray(t.players)?this.joined.startsWith(t.game+` +`)&&this.setRoster(t.game,t.players):t?.t==="+"&&typeof t.h=="string"?(this.remember(t.h,t.d===1?t.c:void 0),this.changed()):t?.t==="-"&&typeof t.h=="string"?(this.roster.delete(t.h),this.devs.delete(t.h),this.changed()):t?.t==="counted"&&(u.settings.data.counted=!0,window.chrome.webview.postMessage("set-config, counted, true"))}remember(e,t){this.roster.add(e),typeof t=="string"&&t!==""?this.devs.set(e,t):this.devs.delete(e)}setRoster(e,t){if(!(e===this.game&&t.length===0&&this.roster.size===0)){this.game=e,this.roster=new Set,this.devs=new Map;for(let o of t)Array.isArray(o)&&typeof o[0]=="string"&&this.remember(o[0],o[1]===1?o[2]?.c:void 0);this.changed()}}changed(){for(let e of this.listeners)e()}},Gp=new ua;u.presence=Gp;et=Gp});var Yp,Vp=w(()=>{Yp="data:image/webp;base64,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"});var Jp,Xp=w(()=>{Jp="data:image/webp;base64,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"});var ma={};A(ma,{default:()=>y0});function Zp(s){let e=s?`[data-kute-badge="${s}"]`:"[data-kute-badge]";for(let o of document.querySelectorAll(e))o.remove();let t=s?`[data-kute-badged="${s}"]`:"[data-kute-badged]";for(let o of document.querySelectorAll(t))o.removeAttribute("data-kute-badged")}function Qp(s){(s.querySelector("[data-kute-badge]")??s.parentElement?.querySelector("[data-kute-badge]"))?.remove(),s.removeAttribute("data-kute-badged")}var b0,v0,w0,k0,ha,eh,y0,fa=w(()=>{"use strict";F();Gn();pa();Vp();Xp();b0="2px",v0={leader:"margin-top:5px;vertical-align:middle;height:21px;margin-left:2px",ingame:"margin-top:3px;vertical-align:middle;height:21px;margin-left:2px",end:"margin-top:-12px;vertical-align:middle;width:26px;margin-left:2px",alt:"vertical-align:middle;height:21px;margin-left:6px;position:relative;top:-0.35em"},w0={kute:Yp,dev:Jp},k0={kute:"Kute",dev:"Kute Developer"};ha=class{constructor(){this.game="",this.hashes=new Map,this.pending=new Set,this.found=!1,this.candidates=[],this.enabled=u.settings.data.cuteBadge!==!1,this.decorator=e=>this.decorate(e),this.finisher=()=>this.finish(),u.settings.toggleCuteBadge=e=>this.toggle(e),et.listeners.add(()=>this.rosterChanged())}toggle(e){this.enabled=e,e||Zp("kute"),ht.refresh()}rosterChanged(){if(et.game!==this.game&&(this.game=et.game,this.hashes.clear(),this.pending.clear()),Zp(),et.roster.size===0){ht.remove(this.decorator);return}ht.add(this.decorator,this.finisher)}decorate(e){if(et.roster.size===0||e.name==="")return;let t=this.hashes.get(e.name);if(t===void 0){this.learn(e.name);return}if(et.devs.has(t)){this.candidates.push({row:e,hash:t,tag:Ps(e.element)?.tag});return}this.enabled&&!e.element.hasAttribute("data-kute-badged")&&et.roster.has(t)&&this.insert(e,"kute")}finish(){if(this.candidates.length===0)return;let e=new Map;for(let t of this.candidates){let o=e.get(t.hash);o?o.push(t):e.set(t.hash,[t])}for(let[t,o]of e){let n=o.filter(i=>i.tag===et.devs.get(t)),r=null;n.length===1?r=n[0].row:n.length===0&&o.length===1&&(r=o[0].row);for(let i of o){let a=i.row.element.getAttribute("data-kute-badged");if(i.row!==r){a&&Qp(i.row.element);continue}a!=="dev"&&(a&&Qp(i.row.element),this.insert(i.row,"dev"))}}this.candidates.length=0}async learn(e){if(this.pending.has(e))return;this.pending.add(e);let{game:t}=this,o=await Wn(t,e);t===this.game&&(this.pending.delete(e),this.hashes.set(e,o),et.roster.has(o)&&(this.found=!0),!(this.pending.size>0||!this.found)&&(this.found=!1,ht.refresh()))}insert(e,t){let{element:o}=e,n=o.parentElement;if(!n)return;let r=document.createElement("img");r.src=w0[t],r.setAttribute("data-kute-badge",t),r.alt="",r.title=k0[t],r.style.cssText=v0[e.kind],e.kind==="alt"?o.append(r):e.kind==="end"?n.insertBefore(r,o.nextSibling):n.insertBefore(r,n.firstElementChild?.nextSibling??o),r.nextElementSibling?.tagName==="I"&&(r.style.marginRight=b0),o.setAttribute("data-kute-badged",t)}},eh=new ha;u.badges=eh;y0=eh});var th=we((DS,x0)=>{x0.exports=`#chatList>*{display:block!important}#chatInputHolder{opacity:1;transition:opacity .2s ease-in-out,transform .2s ease-in-out}#chatList::-webkit-scrollbar{display:none}#chatList{transition:margin-bottom .2s ease-in-out}#uiBase.onGame #chatList{margin-bottom:-50px}#uiBase.onMenu #chatInputHolder{transition:none}#uiBase.onGame #chatInputHolder{opacity:0;transform:translateY(50px)}#uiBase.onGame #chatHolder:focus-within #chatInputHolder{opacity:1;transform:translateY(0)}#uiBase.onGame #chatHolder:focus-within #chatList{margin-bottom:0}#uiBase.onSpect #chatInputHolder{opacity:1;transform:translateY(0)}#uiBase.onSpect #chatList{margin-bottom:0} +`});var ba={};A(ba,{default:()=>S0});var ga,S0,va=w(()=>{"use strict";F();Ae();ga=class{constructor(){this.teamModes=new Set(["Team Deathmatch","Hardpoint","Capture the Flag","Hide & Seek","Infected","Last Man Standing","Simon Says","Prop Hunt","Boss Hunt","Deposit","Stalker","Kill Confirmed","Defuse","Traitor","Blitz","Domination","Squad Deathmatch","Team Defender"]),this.styles=document.createElement("style"),Promise.resolve().then(()=>ue(th(),1)).then(e=>{this.styles.innerHTML=e.default}),u.settings.toggleBetterChat=e=>this.toggle(e),this.chatHolder=U("#chatHolder"),this.chatList=U("#chatList"),this.chatInput=ke("#chatInput"),this.chatSwitch=U("#chatSwitch"),this.channelT=document.createElement("div"),this.channelA=document.createElement("div"),this.channelT.style.cssText="float: left; display: inline-block; margin-right: 5px; color: #9eeb56;",this.channelT.textContent="[T]",this.channelA.style.cssText="float: left; display: inline-block; margin-right: 5px; color: #eb5656;",this.channelA.textContent="[M]",this.observer=new MutationObserver(e=>this.parseMessages(e)),this.toggle(!0)}switchChat=e=>{e.key==="Tab"&&(window.switchChat(this.chatSwitch),e.preventDefault())};parseMessages(e){let t=!1;for(let o of e)for(let n of o.addedNodes){if(!(n instanceof HTMLElement))continue;let r=n.querySelector(".chatItem");if(!r)continue;let i=r.querySelector(".chatMsg");if(!i)continue;if(i.textContent.includes("Text & Voice Chat")){n.remove();continue}let{tab:a}=n.dataset;!a||!r.textContent.includes("\u200E:")||!this.teamModes.has(window.getGameActivity().mode)||(a==="0"?i.insertBefore(this.channelA.cloneNode(!0),i.firstChild):a==="1"&&i.insertBefore(this.channelT.cloneNode(!0),i.firstChild),t=!0)}t&&(this.chatList.scrollTop=1e9)}toggle(e){e?(document.head.append(this.styles),this.chatInput.addEventListener("keydown",this.switchChat,{capture:!0}),this.observer.observe(this.chatList,{childList:!0})):(this.styles.remove(),this.chatInput.removeEventListener("keydown",this.switchChat,{capture:!0}),this.observer.disconnect())}},S0=new ga});var nh={};function oh(){return Array.from(document.querySelectorAll(".bpClaimB")).filter(s=>s.offsetParent!==null&&s.textContent.trim()==="Claim")}function sh(){let s=oh().length>0;s?qt.classList.remove("disabled"):qt.classList.add("disabled"),qt.textContent=s?"Claim All":"Nothing to Claim"}async function E0(){let s=oh();if(s.length!==0){for(let e of s)e.getAttribute("onclick")?.includes("windows[5].claimItem(")&&e.click(),await new Promise(o=>setTimeout(o,200));sh()}}function $0(){let s=document.querySelector(".bpBotH");s&&(s.append(qt),sh())}var qt,C0,wa=w(()=>{"use strict";qt=document.createElement("div");qt.className="bpBtn skip";qt.id="claimAllBtn";qt.textContent="Claim All";qt.onclick=()=>{window.playSelect?.(.1),E0()};C0=window.showWindow;window.showWindow=(...s)=>(s[0]===6&&queueMicrotask(()=>$0()),C0(...s))});function Sa(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function mh(s){ho=s}function Oo(s){let e=[];return t=>{let o=Math.max(0,Math.min(3,t-1)),n=e[o];return n||(n=s(o),e[o]=n),n}}function Q(s,e=""){let t=typeof s=="string"?s:s.source,o={replace:(n,r)=>{let i=typeof r=="string"?r:r.source;return i=i.replace(Le.caret,"$1"),t=t.replace(n,i),o},getRegex:()=>new RegExp(t,e)};return o}function Ke(s,e){if(e){if(Le.escapeTest.test(s))return s.replace(Le.escapeReplace,lh)}else if(Le.escapeTestNoEncode.test(s))return s.replace(Le.escapeReplaceNoEncode,lh);return s}function ch(s){try{s=encodeURI(s).replace(Le.percentDecode,"%")}catch{return null}return s}function dh(s,e){let t=s.replace(Le.findPipe,(r,i,a)=>{let l=!1,c=i;for(;--c>=0&&a[c]==="\\";)l=!l;return l?"|":" |"}),o=t.split(Le.splitPipe),n=0;if(o[0].trim()||o.shift(),o.length>0&&!o.at(-1)?.trim()&&o.pop(),e)if(o.length>e)o.splice(e);else for(;o.length=0&&Le.blankLine.test(e[t]);)t--;return e.length-t<=2?s:e.slice(0,t+1).join(` -`)}function Vn(s){return s.toLowerCase().toUpperCase().toLowerCase()}function bw(s,e){if(s.indexOf(e[1])===-1)return-1;let t=0;for(let o=0;o0?-2:-1}function vw(s,e=0){let t=e,o="";for(let n of s)if(n===" "){let r=4-t%4;o+=" ".repeat(r),t+=r}else o+=n,t++;return o}function lh(s,e,t,o,n){let r=e.href,i=e.title||null,a=s[1].replace(n.other.outputLinkReplace,"$1"),l=s[0].charAt(0)==="!";o.state.inLink=!0;let c=o.state.linkEmitted,d=o.state.inRawBlock;o.state.linkEmitted=!1;let h=o.inlineTokens(a),p=o.state.linkEmitted;if(o.state.linkEmitted=c,o.state.inLink=!1,!l){if(p){o.state.inRawBlock=d;return}o.state.linkEmitted=!0}return{type:l?"image":"link",raw:t,href:r,title:i,text:a,tokens:h}}function ww(s,e,t){let o=s.match(t.other.indentCodeCompensation);if(o===null)return e;let n=o[1];return e.split(` +`)}function Xn(s){return s.toLowerCase().toUpperCase().toLowerCase()}function xw(s,e){if(s.indexOf(e[1])===-1)return-1;let t=0;for(let o=0;o0?-2:-1}function Sw(s,e=0){let t=e,o="";for(let n of s)if(n===" "){let r=4-t%4;o+=" ".repeat(r),t+=r}else o+=n,t++;return o}function ph(s,e,t,o,n){let r=e.href,i=e.title||null,a=s[1].replace(n.other.outputLinkReplace,"$1"),l=s[0].charAt(0)==="!";o.state.inLink=!0;let c=o.state.linkEmitted,d=o.state.inRawBlock;o.state.linkEmitted=!1;let h=o.inlineTokens(a),p=o.state.linkEmitted;if(o.state.linkEmitted=c,o.state.inLink=!1,!l){if(p){o.state.inRawBlock=d;return}o.state.linkEmitted=!0}return{type:l?"image":"link",raw:t,href:r,title:i,text:a,tokens:h}}function Ew(s,e,t){let o=s.match(t.other.indentCodeCompensation);if(o===null)return e;let n=o[1];return e.split(` `).map(r=>{let i=r.match(t.other.beginningSpace);if(i===null)return r;let[a]=i;return r.slice(Math.min(a.length,n.length))}).join(` -`)}function ch(s,e,t,o){if(!e.includes("<"))return!1;for(let n=0;ne.length-n)return!0;n+=i[0].length-1}}return!1}function ie(s,e){return lo.parse(s,e)}function yw(...s){return lo.use(...s),ie.defaults=lo.defaults,dh(ie.defaults),ie}var co,ao,x0,Le,S0,E0,$0,Is,C0,xa,uh,ph,M0,Sa,T0,Ea,A0,L0,Ns,$a,R0,hh,P0,I0,N0,Ca,th,_0,B0,z0,H0,mh,O0,xt,Ho,_s,D0,F0,fh,q0,K0,j0,gh,U0,G0,W0,V0,bh,Y0,X0,J0,Z0,Q0,ew,tw,ow,sw,nw,rw,iw,aw,lw,vh,Wn,cw,dw,uw,oh,pw,hw,sh,Ma,mw,va,fw,Gn,Rs,gw,nh,Yn,tt,Xn,Ta,ot,Ps,kw,lo,HS,OS,DS,FS,qS,KS,wh=w(()=>{co=ya();ao={exec:()=>null};x0=((s="")=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:s=>new RegExp(`^( {0,3}${s})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:zo(s=>new RegExp(`^ {0,${s}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:zo(s=>new RegExp(`^ {0,${s}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)),fencesBeginRegex:zo(s=>new RegExp(`^ {0,${s}}(?:\`\`\`|~~~)`)),headingBeginRegex:zo(s=>new RegExp(`^ {0,${s}}#`)),htmlBeginRegex:zo(s=>new RegExp(`^ {0,${s}}(?:)|<(?:script|pre|style|textarea|!--))`,"i")),blockquoteBeginRegex:zo(s=>new RegExp(`^ {0,${s}}>`))},S0=/^(?:[ \t]*(?:\n|$))+/,E0=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,$0=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Is=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,C0=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,xa=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,uh=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,ph=Q(uh).replace(/bull/g,xa).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),M0=Q(uh).replace(/bull/g,xa).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Sa=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,T0=/^[^\n]+/,Ea=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,A0=Q(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Ea).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),L0=Q(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,xa).getRegex(),Ns="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",$a=/|$))/,R0=Q("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",$a).replace("tag",Ns).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),hh=s=>Q(Sa).replace("hr",Is).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",s).replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Ns).getRegex(),P0=hh(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),I0=hh(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),N0=Q(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",I0).getRegex(),Ca={blockquote:N0,code:E0,def:A0,fences:$0,heading:C0,hr:Is,html:R0,lheading:ph,list:L0,newline:S0,paragraph:P0,table:ao,text:T0},th=Q("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Is).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Ns).getRegex(),_0={...Ca,lheading:M0,table:th,paragraph:Q(Sa).replace("hr",Is).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",th).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Ns).getRegex()},B0={...Ca,html:Q(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",$a).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:ao,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Q(Sa).replace("hr",Is).replace("heading",` *#{1,6} *[^ -]`).replace("lheading",ph).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},z0=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,H0=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,mh=/^( {2,}|\\)\n(?!\s*$)[ \t]*/,O0=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",x0?"(?`+)[^`]+\k(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),gh=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,U0=Q(gh,"u").replace(/punct/g,xt).getRegex(),G0=Q(gh,"u").replace(/punct/g,fh).getRegex(),W0=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,V0=Q(W0,"u").replace(/openQuote/g,F0).replace(/punct/g,xt).getRegex(),bh="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Y0=Q(bh,"gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),X0=Q(bh,"gu").replace(/notPunctSpace/g,K0).replace(/punctSpace/g,q0).replace(/punct/g,fh).getRegex(),J0="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",Z0=Q(J0,"gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),Q0=Q("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),ew="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",tw=Q(ew,"gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),ow=Q(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,xt).getRegex(),sw="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",nw=Q(sw,"gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),rw=Q(/\\(punct)/,"gu").replace(/punct/g,xt).getRegex(),iw=Q(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),aw=Q($a).replace("(?:-->|$)","-->").getRegex(),lw=Q("^comment|^|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",aw).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),vh=/\[(?:\\[\s\S]|[^\[\]\\])*\]/,Wn=Q(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets",vh).getRegex(),cw=Q(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",Wn).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),dw=Q(/^!?\[(label)\]\[(ref)\]/).replace("label",Wn).replace("ref",Ea).getRegex(),uw=Q(/^!?\[(ref)\](?:\[\])?/).replace("ref",Ea).getRegex(),oh=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/,pw=Q(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets",vh).getRegex(),hw=Q("reflink|nolink(?!\\()","g").replace("reflink",Q(/^!?\[(label)\]\[(ref)\]/).replace("label",pw).replace("ref",oh).getRegex()).replace("nolink",Q(/^!?\[(ref)\](?:\[\])?/).replace("ref",oh).getRegex()).getRegex(),sh=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Ma={_backpedal:ao,anyPunctuation:rw,autolink:iw,blockSkip:j0,br:mh,code:H0,del:ao,delLDelim:ao,delRDelim:ao,emStrongLDelim:U0,emStrongRDelimAst:Y0,emStrongRDelimUnd:Q0,escape:z0,link:cw,nolink:uw,punctuation:D0,reflink:dw,reflinkSearch:hw,tag:lw,text:O0,url:ao},mw={...Ma,emStrongLDelim:V0,emStrongRDelimAst:Z0,emStrongRDelimUnd:tw,link:Q(/^!?\[(label)\]\((.*?)\)/).replace("label",Wn).getRegex(),reflink:Q(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Wn).getRegex()},va={...Ma,emStrongRDelimAst:X0,emStrongLDelim:G0,delLDelim:ow,delRDelim:nw,url:Q(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",sh).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:Q(/^(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},nh=s=>gw[s];Yn=class{options;rules;lexer;constructor(s){this.options=s||co}space(s){let e=this.rules.block.newline.exec(s);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(s){let e=this.rules.block.code.exec(s);if(e){let t=this.options.pedantic?e[0]:ah(e[0]),o=t.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t,codeBlockStyle:"indented",text:o}}}fences(s){let e=this.rules.block.fences.exec(s);if(e){let t=e[0],o=ww(t,e[3]||"",this.rules);return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:o}}}heading(s){let e=this.rules.block.heading.exec(s);if(e){let t=e[2].trim();if(this.rules.other.endingHash.test(t)){let o=qt(t,"#");(this.options.pedantic||!o||this.rules.other.endingSpaceTabChar.test(o))&&(t=o.trim())}return{type:"heading",raw:qt(e[0],` -`),depth:e[1].length,text:t,tokens:this.lexer.inline(t)}}}hr(s){let e=this.rules.block.hr.exec(s);if(e)return{type:"hr",raw:qt(e[0],` -`)}}blockquote(s){let e=this.rules.block.blockquote.exec(s);if(e){let t=qt(e[0],` +`)}function hh(s,e,t,o){if(!e.includes("<"))return!1;for(let n=0;ne.length-n)return!0;n+=i[0].length-1}}return!1}function ie(s,e){return po.parse(s,e)}function Cw(...s){return po.use(...s),ie.defaults=po.defaults,mh(ie.defaults),ie}var ho,uo,M0,Le,T0,A0,L0,_s,R0,Ea,fh,gh,P0,$a,I0,Ca,N0,_0,Bs,Ma,B0,bh,z0,H0,O0,Ta,rh,F0,D0,q0,K0,vh,j0,St,Fo,zs,U0,G0,wh,W0,V0,Y0,kh,X0,J0,Z0,Q0,yh,ew,tw,ow,sw,nw,rw,iw,aw,lw,cw,dw,uw,pw,hw,xh,Yn,mw,fw,gw,ih,bw,vw,ah,Aa,ww,ka,kw,Vn,Is,yw,lh,Jn,tt,Zn,La,ot,Ns,$w,po,jS,US,GS,WS,VS,YS,Sh=w(()=>{ho=Sa();uo={exec:()=>null};M0=((s="")=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:s=>new RegExp(`^( {0,3}${s})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:Oo(s=>new RegExp(`^ {0,${s}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:Oo(s=>new RegExp(`^ {0,${s}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)),fencesBeginRegex:Oo(s=>new RegExp(`^ {0,${s}}(?:\`\`\`|~~~)`)),headingBeginRegex:Oo(s=>new RegExp(`^ {0,${s}}#`)),htmlBeginRegex:Oo(s=>new RegExp(`^ {0,${s}}(?:)|<(?:script|pre|style|textarea|!--))`,"i")),blockquoteBeginRegex:Oo(s=>new RegExp(`^ {0,${s}}>`))},T0=/^(?:[ \t]*(?:\n|$))+/,A0=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,L0=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,_s=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,R0=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Ea=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,fh=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,gh=Q(fh).replace(/bull/g,Ea).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),P0=Q(fh).replace(/bull/g,Ea).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),$a=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,I0=/^[^\n]+/,Ca=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,N0=Q(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Ca).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),_0=Q(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,Ea).getRegex(),Bs="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Ma=/|$))/,B0=Q("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Ma).replace("tag",Bs).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),bh=s=>Q($a).replace("hr",_s).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",s).replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Bs).getRegex(),z0=bh(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),H0=bh(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),O0=Q(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",H0).getRegex(),Ta={blockquote:O0,code:A0,def:N0,fences:L0,heading:R0,hr:_s,html:B0,lheading:gh,list:_0,newline:T0,paragraph:z0,table:uo,text:I0},rh=Q("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",_s).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Bs).getRegex(),F0={...Ta,lheading:P0,table:rh,paragraph:Q($a).replace("hr",_s).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",rh).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Bs).getRegex()},D0={...Ta,html:Q(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Ma).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:uo,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Q($a).replace("hr",_s).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",gh).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},q0=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,K0=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,vh=/^( {2,}|\\)\n(?!\s*$)[ \t]*/,j0=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",M0?"(?`+)[^`]+\k(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),kh=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,X0=Q(kh,"u").replace(/punct/g,St).getRegex(),J0=Q(kh,"u").replace(/punct/g,wh).getRegex(),Z0=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,Q0=Q(Z0,"u").replace(/openQuote/g,G0).replace(/punct/g,St).getRegex(),yh="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",ew=Q(yh,"gu").replace(/notPunctSpace/g,zs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),tw=Q(yh,"gu").replace(/notPunctSpace/g,V0).replace(/punctSpace/g,W0).replace(/punct/g,wh).getRegex(),ow="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",sw=Q(ow,"gu").replace(/notPunctSpace/g,zs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),nw=Q("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,zs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),rw="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",iw=Q(rw,"gu").replace(/notPunctSpace/g,zs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),aw=Q(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,St).getRegex(),lw="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",cw=Q(lw,"gu").replace(/notPunctSpace/g,zs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),dw=Q(/\\(punct)/,"gu").replace(/punct/g,St).getRegex(),uw=Q(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),pw=Q(Ma).replace("(?:-->|$)","-->").getRegex(),hw=Q("^comment|^|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",pw).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),xh=/\[(?:\\[\s\S]|[^\[\]\\])*\]/,Yn=Q(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets",xh).getRegex(),mw=Q(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",Yn).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),fw=Q(/^!?\[(label)\]\[(ref)\]/).replace("label",Yn).replace("ref",Ca).getRegex(),gw=Q(/^!?\[(ref)\](?:\[\])?/).replace("ref",Ca).getRegex(),ih=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/,bw=Q(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets",xh).getRegex(),vw=Q("reflink|nolink(?!\\()","g").replace("reflink",Q(/^!?\[(label)\]\[(ref)\]/).replace("label",bw).replace("ref",ih).getRegex()).replace("nolink",Q(/^!?\[(ref)\](?:\[\])?/).replace("ref",ih).getRegex()).getRegex(),ah=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Aa={_backpedal:uo,anyPunctuation:dw,autolink:uw,blockSkip:Y0,br:vh,code:K0,del:uo,delLDelim:uo,delRDelim:uo,emStrongLDelim:X0,emStrongRDelimAst:ew,emStrongRDelimUnd:nw,escape:q0,link:mw,nolink:gw,punctuation:U0,reflink:fw,reflinkSearch:vw,tag:hw,text:j0,url:uo},ww={...Aa,emStrongLDelim:Q0,emStrongRDelimAst:sw,emStrongRDelimUnd:iw,link:Q(/^!?\[(label)\]\((.*?)\)/).replace("label",Yn).getRegex(),reflink:Q(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Yn).getRegex()},ka={...Aa,emStrongRDelimAst:tw,emStrongLDelim:J0,delLDelim:aw,delRDelim:cw,url:Q(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",ah).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:Q(/^(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},lh=s=>yw[s];Jn=class{options;rules;lexer;constructor(s){this.options=s||ho}space(s){let e=this.rules.block.newline.exec(s);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(s){let e=this.rules.block.code.exec(s);if(e){let t=this.options.pedantic?e[0]:uh(e[0]),o=t.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t,codeBlockStyle:"indented",text:o}}}fences(s){let e=this.rules.block.fences.exec(s);if(e){let t=e[0],o=Ew(t,e[3]||"",this.rules);return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:o}}}heading(s){let e=this.rules.block.heading.exec(s);if(e){let t=e[2].trim();if(this.rules.other.endingHash.test(t)){let o=Kt(t,"#");(this.options.pedantic||!o||this.rules.other.endingSpaceTabChar.test(o))&&(t=o.trim())}return{type:"heading",raw:Kt(e[0],` +`),depth:e[1].length,text:t,tokens:this.lexer.inline(t)}}}hr(s){let e=this.rules.block.hr.exec(s);if(e)return{type:"hr",raw:Kt(e[0],` +`)}}blockquote(s){let e=this.rules.block.blockquote.exec(s);if(e){let t=Kt(e[0],` `).split(` `),o="",n="",r=[];for(;t.length>0;){let i=!1,a=[],l;for(l=0;l1,n={type:"list",raw:"",ordered:o,start:o?+t.slice(0,-1):"",loose:!1,items:[]};t=o?`\\d{1,9}\\${t.slice(-1)}`:`\\${t}`,this.options.pedantic&&(t=o?t:"[*+-]");let r=this.rules.other.listItemRegex(t),i=!1;for(;s;){let l=!1,c="",d="";if(!(e=r.exec(s))||this.rules.block.hr.test(s))break;c=e[0],s=s.substring(c.length);let h=vw(e[2].split(` +`);continue}}return{type:"blockquote",raw:o,tokens:r,text:n}}}list(s){let e=this.rules.block.list.exec(s);if(e){let t=e[1].trim(),o=t.length>1,n={type:"list",raw:"",ordered:o,start:o?+t.slice(0,-1):"",loose:!1,items:[]};t=o?`\\d{1,9}\\${t.slice(-1)}`:`\\${t}`,this.options.pedantic&&(t=o?t:"[*+-]");let r=this.rules.other.listItemRegex(t),i=!1;for(;s;){let l=!1,c="",d="";if(!(e=r.exec(s))||this.rules.block.hr.test(s))break;c=e[0],s=s.substring(c.length);let h=Sw(e[2].split(` `,1)[0],e[1].length),p=s.split(` `,1)[0],m=!h.trim(),f=0;if(this.options.pedantic?(f=2,d=h.trimStart()):m?f=e[1].length+1:(f=h.search(this.rules.other.nonSpaceChar),f=f>4?1:f,d=h.slice(f),f+=e[1].length),m&&this.rules.other.blankLine.test(p)&&(c+=p+` -`,s=s.substring(p.length+1),l=!0),!l){let g=this.rules.other.nextBulletRegex(f),b=this.rules.other.hrRegex(f),v=this.rules.other.fencesBeginRegex(f),k=this.rules.other.headingBeginRegex(f),E=this.rules.other.htmlBeginRegex(f),L=this.rules.other.blockquoteBeginRegex(f);for(;s;){let x=s.split(` -`,1)[0],$;if(p=x,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting," "),$=p):$=p.replace(this.rules.other.tabCharGlobal," "),v.test(p)||k.test(p)||E.test(p)||L.test(p)||g.test(p)||b.test(p))break;if($.search(this.rules.other.nonSpaceChar)>=f||!p.trim())d+=` -`+$.slice(f);else{if(m||h.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||v.test(h)||k.test(h)||b.test(h))break;d+=` -`+p}m=!p.trim(),c+=x+` -`,s=s.substring(x.length+1),h=$.slice(f)}}n.loose||(i?n.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(i=!0)),n.items.push({type:"list_item",raw:c,task:!!this.options.gfm&&this.rules.other.listIsTask.test(d),loose:!1,text:d,tokens:[]}),n.raw+=c}let a=n.items.at(-1);if(a)a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd();else return;n.raw=n.raw.trimEnd();for(let l of n.items)if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),!n.loose){let c=l.tokens.filter(h=>h.type==="space"),d=c.length>0&&c.some(h=>this.rules.other.anyLine.test(h.raw));n.loose=d}for(let l of n.items){let c=l.tokens[0];if(l.task&&(c?.type==="text"||c?.type==="paragraph")){l.text=l.text.replace(this.rules.other.listReplaceTask,""),c.raw=c.raw.replace(this.rules.other.listReplaceTask,""),c.text=c.text.replace(this.rules.other.listReplaceTask,"");for(let h=this.lexer.inlineQueue.length-1;h>=0;h--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[h].src)){this.lexer.inlineQueue[h].src=this.lexer.inlineQueue[h].src.replace(this.rules.other.listReplaceTask,"");break}let d=this.rules.other.listTaskCheckbox.exec(l.raw);if(d){let h={type:"checkbox",raw:d[0]+" ",checked:d[0]!=="[ ]"};l.checked=h.checked,n.loose?l.tokens[0]&&["paragraph","text"].includes(l.tokens[0].type)&&"tokens"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=h.raw+l.tokens[0].raw,l.tokens[0].text=h.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(h)):l.tokens.unshift({type:"paragraph",raw:h.raw,text:h.raw,tokens:[h]}):l.tokens.unshift(h)}}else l.task&&(l.task=!1)}if(n.loose)for(let l of n.items){l.loose=!0;for(let c of l.tokens)c.type==="text"&&(c.type="paragraph")}return n}}html(s){let e=this.rules.block.html.exec(s);if(e){let t=ah(e[0]);return{type:"html",block:!0,raw:t,pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:t}}}def(s){let e=this.rules.block.def.exec(s);if(e){let t=Vn(e[1]).replace(this.rules.other.multipleSpaceGlobal," "),o=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",n=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:t,raw:qt(e[0],` -`),href:o,title:n}}}table(s){let e=this.rules.block.table.exec(s);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let t=ih(e[1]),o=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),n=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(` -`):[],r={type:"table",raw:qt(e[0],` -`),header:[],align:[],rows:[]};if(t.length===o.length){for(let i of o)this.rules.other.tableAlignRight.test(i)?r.align.push("right"):this.rules.other.tableAlignCenter.test(i)?r.align.push("center"):this.rules.other.tableAlignLeft.test(i)?r.align.push("left"):r.align.push(null);for(let i=0;i({text:a,tokens:this.lexer.inline(a),header:!1,align:r.align[l]})));return r}}lheading(s){let e=this.rules.block.lheading.exec(s);if(e){let t=e[1].trim();return{type:"heading",raw:qt(e[0],` +`,s=s.substring(p.length+1),l=!0),!l){let g=this.rules.other.nextBulletRegex(f),b=this.rules.other.hrRegex(f),v=this.rules.other.fencesBeginRegex(f),k=this.rules.other.headingBeginRegex(f),E=this.rules.other.htmlBeginRegex(f),L=this.rules.other.blockquoteBeginRegex(f);for(;s;){let y=s.split(` +`,1)[0],C;if(p=y,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting," "),C=p):C=p.replace(this.rules.other.tabCharGlobal," "),v.test(p)||k.test(p)||E.test(p)||L.test(p)||g.test(p)||b.test(p))break;if(C.search(this.rules.other.nonSpaceChar)>=f||!p.trim())d+=` +`+C.slice(f);else{if(m||h.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||v.test(h)||k.test(h)||b.test(h))break;d+=` +`+p}m=!p.trim(),c+=y+` +`,s=s.substring(y.length+1),h=C.slice(f)}}n.loose||(i?n.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(i=!0)),n.items.push({type:"list_item",raw:c,task:!!this.options.gfm&&this.rules.other.listIsTask.test(d),loose:!1,text:d,tokens:[]}),n.raw+=c}let a=n.items.at(-1);if(a)a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd();else return;n.raw=n.raw.trimEnd();for(let l of n.items)if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),!n.loose){let c=l.tokens.filter(h=>h.type==="space"),d=c.length>0&&c.some(h=>this.rules.other.anyLine.test(h.raw));n.loose=d}for(let l of n.items){let c=l.tokens[0];if(l.task&&(c?.type==="text"||c?.type==="paragraph")){l.text=l.text.replace(this.rules.other.listReplaceTask,""),c.raw=c.raw.replace(this.rules.other.listReplaceTask,""),c.text=c.text.replace(this.rules.other.listReplaceTask,"");for(let h=this.lexer.inlineQueue.length-1;h>=0;h--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[h].src)){this.lexer.inlineQueue[h].src=this.lexer.inlineQueue[h].src.replace(this.rules.other.listReplaceTask,"");break}let d=this.rules.other.listTaskCheckbox.exec(l.raw);if(d){let h={type:"checkbox",raw:d[0]+" ",checked:d[0]!=="[ ]"};l.checked=h.checked,n.loose?l.tokens[0]&&["paragraph","text"].includes(l.tokens[0].type)&&"tokens"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=h.raw+l.tokens[0].raw,l.tokens[0].text=h.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(h)):l.tokens.unshift({type:"paragraph",raw:h.raw,text:h.raw,tokens:[h]}):l.tokens.unshift(h)}}else l.task&&(l.task=!1)}if(n.loose)for(let l of n.items){l.loose=!0;for(let c of l.tokens)c.type==="text"&&(c.type="paragraph")}return n}}html(s){let e=this.rules.block.html.exec(s);if(e){let t=uh(e[0]);return{type:"html",block:!0,raw:t,pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:t}}}def(s){let e=this.rules.block.def.exec(s);if(e){let t=Xn(e[1]).replace(this.rules.other.multipleSpaceGlobal," "),o=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",n=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:t,raw:Kt(e[0],` +`),href:o,title:n}}}table(s){let e=this.rules.block.table.exec(s);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let t=dh(e[1]),o=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),n=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(` +`):[],r={type:"table",raw:Kt(e[0],` +`),header:[],align:[],rows:[]};if(t.length===o.length){for(let i of o)this.rules.other.tableAlignRight.test(i)?r.align.push("right"):this.rules.other.tableAlignCenter.test(i)?r.align.push("center"):this.rules.other.tableAlignLeft.test(i)?r.align.push("left"):r.align.push(null);for(let i=0;i({text:a,tokens:this.lexer.inline(a),header:!1,align:r.align[l]})));return r}}lheading(s){let e=this.rules.block.lheading.exec(s);if(e){let t=e[1].trim();return{type:"heading",raw:Kt(e[0],` `),depth:e[2].charAt(0)==="="?1:2,text:t,tokens:this.lexer.inline(t)}}}paragraph(s){let e=this.rules.block.paragraph.exec(s);if(e){let t=e[1].charAt(e[1].length-1)===` -`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(s){let e=this.rules.block.text.exec(s);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(s){let e=this.rules.inline.escape.exec(s);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(s){let e=this.rules.inline.tag.exec(s);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(s){let e=this.rules.inline.link.exec(s);if(e){let t=e[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&ch(s,e[1],t,this.rules))return;let o=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(o)){if(!this.rules.other.endAngleBracket.test(o))return;let i=qt(o.slice(0,-1),"\\");if((o.length-i.length)%2===0)return}else{let i=bw(e[2],"()");if(i===-2)return;if(i>-1){let a=(e[0].indexOf("!")===0?5:4)+e[1].length+i;e[2]=e[2].substring(0,i),e[0]=e[0].substring(0,a).trim(),e[3]=""}}let n=e[2],r="";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(n);i&&(n=i[1],r=i[3])}else r=e[3]?e[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(o)?n=n.slice(1):n=n.slice(1,-1)),lh(e,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(s,e){let t;if((t=this.rules.inline.reflink.exec(s))||(t=this.rules.inline.nolink.exec(s))){let o=t[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&ch(s,t[1],o,this.rules))return;let n=(t[2]||t[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=e[Vn(n)];if(!r){let i=t[0].charAt(0);return{type:"text",raw:i,text:i}}return lh(t,r,t[0],this.lexer,this.rules)}}emStrong(s,e,t=""){let o=this.rules.inline.emStrongLDelim.exec(s);if(!(!o||!o[1]&&!o[2]&&!o[3]&&!o[4]||o[4]&&t.match(this.rules.other.unicodeAlphaNumeric))&&(!(o[1]||o[3])||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=0,c=o[0][0],d=t===c,h=c==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(h.lastIndex=0,e=e.slice(-1*s.length+n);(o=h.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r)continue;if(i=[...r].length,o[3]||o[4]){a+=i;continue}else if(o[5]||o[6]){if(n%3&&!((n+i)%3)){l+=i;continue}if(d)break}if(a-=i,a>0)continue;i=Math.min(i,i+a+l);let p=[...o[0]][0].length,m=s.slice(0,n+o.index+p+i);if(Math.min(n,i)%2){let g=m.slice(1,-1);return{type:"em",raw:m,text:g,tokens:this.lexer.inlineTokens(g)}}let f=m.slice(2,-2);return{type:"strong",raw:m,text:f,tokens:this.lexer.inlineTokens(f)}}}}codespan(s){let e=this.rules.inline.code.exec(s);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," "),o=this.rules.other.nonSpaceChar.test(t),n=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return o&&n&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(s){let e=this.rules.inline.br.exec(s);if(e)return{type:"br",raw:e[0]}}del(s,e,t=""){let o=this.rules.inline.delLDelim.exec(s);if(o&&(!o[1]||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=this.rules.inline.delRDelim;for(l.lastIndex=0,e=e.slice(-1*s.length+n);(o=l.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r||(i=[...r].length,i!==n))continue;if(o[3]||o[4]){a+=i;continue}if(a-=i,a>0)continue;i=Math.min(i,i+a);let c=[...o[0]][0].length,d=s.slice(0,n+o.index+c+i),h=d.slice(n,-n);return{type:"del",raw:d,text:h,tokens:this.lexer.inlineTokens(h)}}}}autolink(s){let e=this.rules.inline.autolink.exec(s);if(e){let t,o;return e[2]==="@"?(t=e[1],o="mailto:"+t):(t=e[1],o=t),{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}url(s){let e;if(e=this.rules.inline.url.exec(s)){let t,o;if(e[2]==="@")t=e[0],o="mailto:"+t;else{let n;do n=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(n!==e[0]);t=e[0],e[1]==="www."?o="http://"+e[0]:o=e[0]}return{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}inlineText(s){let e=this.rules.inline.text.exec(s);if(e){let t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:t}}}},tt=class wa{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||co,this.options.tokenizer=this.options.tokenizer||new Yn,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let t={other:Le,block:Gn.normal,inline:Rs.normal};this.options.pedantic?(t.block=Gn.pedantic,t.inline=Rs.pedantic):this.options.gfm&&(t.block=Gn.gfm,this.options.breaks?t.inline=Rs.breaks:t.inline=Rs.gfm),this.tokenizer.rules=t}static get rules(){return{block:Gn,inline:Rs}}static lex(e,t){return new wa(t).lex(e)}static lexInline(e,t){return new wa(t).inlineTokens(e)}lex(e){e=e.replace(Le.carriageReturn,` +`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(s){let e=this.rules.block.text.exec(s);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(s){let e=this.rules.inline.escape.exec(s);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(s){let e=this.rules.inline.tag.exec(s);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(s){let e=this.rules.inline.link.exec(s);if(e){let t=e[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&hh(s,e[1],t,this.rules))return;let o=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(o)){if(!this.rules.other.endAngleBracket.test(o))return;let i=Kt(o.slice(0,-1),"\\");if((o.length-i.length)%2===0)return}else{let i=xw(e[2],"()");if(i===-2)return;if(i>-1){let a=(e[0].indexOf("!")===0?5:4)+e[1].length+i;e[2]=e[2].substring(0,i),e[0]=e[0].substring(0,a).trim(),e[3]=""}}let n=e[2],r="";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(n);i&&(n=i[1],r=i[3])}else r=e[3]?e[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(o)?n=n.slice(1):n=n.slice(1,-1)),ph(e,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(s,e){let t;if((t=this.rules.inline.reflink.exec(s))||(t=this.rules.inline.nolink.exec(s))){let o=t[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&hh(s,t[1],o,this.rules))return;let n=(t[2]||t[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=e[Xn(n)];if(!r){let i=t[0].charAt(0);return{type:"text",raw:i,text:i}}return ph(t,r,t[0],this.lexer,this.rules)}}emStrong(s,e,t=""){let o=this.rules.inline.emStrongLDelim.exec(s);if(!(!o||!o[1]&&!o[2]&&!o[3]&&!o[4]||o[4]&&t.match(this.rules.other.unicodeAlphaNumeric))&&(!(o[1]||o[3])||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=0,c=o[0][0],d=t===c,h=c==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(h.lastIndex=0,e=e.slice(-1*s.length+n);(o=h.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r)continue;if(i=[...r].length,o[3]||o[4]){a+=i;continue}else if(o[5]||o[6]){if(n%3&&!((n+i)%3)){l+=i;continue}if(d)break}if(a-=i,a>0)continue;i=Math.min(i,i+a+l);let p=[...o[0]][0].length,m=s.slice(0,n+o.index+p+i);if(Math.min(n,i)%2){let g=m.slice(1,-1);return{type:"em",raw:m,text:g,tokens:this.lexer.inlineTokens(g)}}let f=m.slice(2,-2);return{type:"strong",raw:m,text:f,tokens:this.lexer.inlineTokens(f)}}}}codespan(s){let e=this.rules.inline.code.exec(s);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," "),o=this.rules.other.nonSpaceChar.test(t),n=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return o&&n&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(s){let e=this.rules.inline.br.exec(s);if(e)return{type:"br",raw:e[0]}}del(s,e,t=""){let o=this.rules.inline.delLDelim.exec(s);if(o&&(!o[1]||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=this.rules.inline.delRDelim;for(l.lastIndex=0,e=e.slice(-1*s.length+n);(o=l.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r||(i=[...r].length,i!==n))continue;if(o[3]||o[4]){a+=i;continue}if(a-=i,a>0)continue;i=Math.min(i,i+a);let c=[...o[0]][0].length,d=s.slice(0,n+o.index+c+i),h=d.slice(n,-n);return{type:"del",raw:d,text:h,tokens:this.lexer.inlineTokens(h)}}}}autolink(s){let e=this.rules.inline.autolink.exec(s);if(e){let t,o;return e[2]==="@"?(t=e[1],o="mailto:"+t):(t=e[1],o=t),{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}url(s){let e;if(e=this.rules.inline.url.exec(s)){let t,o;if(e[2]==="@")t=e[0],o="mailto:"+t;else{let n;do n=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(n!==e[0]);t=e[0],e[1]==="www."?o="http://"+e[0]:o=e[0]}return{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}inlineText(s){let e=this.rules.inline.text.exec(s);if(e){let t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:t}}}},tt=class ya{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||ho,this.options.tokenizer=this.options.tokenizer||new Jn,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let t={other:Le,block:Vn.normal,inline:Is.normal};this.options.pedantic?(t.block=Vn.pedantic,t.inline=Is.pedantic):this.options.gfm&&(t.block=Vn.gfm,this.options.breaks?t.inline=Is.breaks:t.inline=Is.gfm),this.tokenizer.rules=t}static get rules(){return{block:Vn,inline:Is}}static lex(e,t){return new ya(t).lex(e)}static lexInline(e,t){return new ya(t).inlineTokens(e)}lex(e){e=e.replace(Le.carriageReturn,` `),this.blockTokens(e,this.tokens);for(let t=0;t(r=a.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let a=t.at(-1);r.raw.length===1&&a!==void 0?a.raw+=` `:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let a=t.at(-1);a?.type==="paragraph"||a?.type==="text"?(a.raw+=(a.raw.endsWith(` `)?"":` @@ -132,9 +132,9 @@ ${f}`,n=n.substring(0,n.length-m.text.length)+b.text;break}else if(p?.type==="li `+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):t.push(r),o=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let a=t.at(-1);a?.type==="text"?(a.raw+=(a.raw.endsWith(` `)?"":` `)+r.raw,a.text+=` -`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):t.push(r);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}linkInText(e){if(!e.includes("["))return!1;let t=this.tokenizer.rules.inline.link;for(let o of e.matchAll(this.tokenizer.rules.inline.blockSkip))if(t.test(o[0])&&e.charAt(o.index-1)!=="!")return!0;for(let o of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let n=o[0],r=n.lastIndexOf("[");if(!(n.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,Vn(n.slice(r+1,-1))))&&!(r>1&&this.linkInText(n.slice(1,r-1))))return!0}return!1}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let o=e;if(this.tokens.links&&e.includes("[")){let a=this.tokenizer.rules.inline.reflinkSearch,l=c=>{let d=c.lastIndexOf("[");if(!Object.hasOwn(this.tokens.links,Vn(c.slice(d+1,-1))))return c;if(d>1&&c.charAt(0)!=="!"){let h=c.slice(1,d-1);if(this.linkInText(h))return"["+h.replace(a,l)+"]["+"a".repeat(c.length-d-2)+"]"}return"["+"a".repeat(c.length-2)+"]"};o=o.replace(a,l)}o=o.replace(this.tokenizer.rules.inline.anyPunctuation,a=>"+".repeat(a.length)),o=o.replace(this.tokenizer.rules.inline.blockSkip,(a,l,c)=>{let d=c?c.length:0;return a.slice(0,d)+"["+"a".repeat(a.length-d-2)+"]"}),o=this.options.hooks?.emStrongMask?.call({lexer:this},o)??o;let n=!1,r="",i=1/0;for(;e;){if(e.length(a=c.call({lexer:this},e,t))?(e=e.substring(a.raw.length),t.push(a),!0):!1))continue;if(a=this.tokenizer.escape(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.tag(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.link(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(a.raw.length);let c=t.at(-1);a.type==="text"&&c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):t.push(a);continue}if(a=this.tokenizer.emStrong(e,o,r)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.codespan(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.br(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.del(e,o,r)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.autolink(e)){e=e.substring(a.raw.length),t.push(a);continue}if(!this.state.inLink&&(a=this.tokenizer.url(e))){e=e.substring(a.raw.length),t.push(a);continue}let l=e;if(this.options.extensions?.startInline){let c=1/0,d=e.slice(1),h;this.options.extensions.startInline.forEach(p=>{h=p.call({lexer:this},d),typeof h=="number"&&h>=0&&(c=Math.min(c,h))}),c<1/0&&c>=0&&(l=e.substring(0,c+1))}if(a=this.tokenizer.inlineText(l)){e=e.substring(a.raw.length),a.raw.slice(-1)!=="_"&&(r=a.raw.slice(-1)),n=!0;let c=t.at(-1);c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):t.push(a);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t="Infinite loop on byte: "+e;if(this.options.silent)console.error(t);else throw new Error(t)}},Xn=class{options;parser;constructor(s){this.options=s||co}space(s){return""}code({text:s,lang:e,escaped:t}){let o=(e||"").match(Le.notSpaceStart)?.[0],n=s?s.replace(Le.endingNewline,"")+` -`:"";return o?'
          '+(t?n:qe(n,!0))+`
          -`:"
          "+(t?n:qe(n,!0))+`
          +`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):t.push(r);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}linkInText(e){if(!e.includes("["))return!1;let t=this.tokenizer.rules.inline.link;for(let o of e.matchAll(this.tokenizer.rules.inline.blockSkip))if(t.test(o[0])&&e.charAt(o.index-1)!=="!")return!0;for(let o of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let n=o[0],r=n.lastIndexOf("[");if(!(n.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,Xn(n.slice(r+1,-1))))&&!(r>1&&this.linkInText(n.slice(1,r-1))))return!0}return!1}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let o=e;if(this.tokens.links&&e.includes("[")){let a=this.tokenizer.rules.inline.reflinkSearch,l=c=>{let d=c.lastIndexOf("[");if(!Object.hasOwn(this.tokens.links,Xn(c.slice(d+1,-1))))return c;if(d>1&&c.charAt(0)!=="!"){let h=c.slice(1,d-1);if(this.linkInText(h))return"["+h.replace(a,l)+"]["+"a".repeat(c.length-d-2)+"]"}return"["+"a".repeat(c.length-2)+"]"};o=o.replace(a,l)}o=o.replace(this.tokenizer.rules.inline.anyPunctuation,a=>"+".repeat(a.length)),o=o.replace(this.tokenizer.rules.inline.blockSkip,(a,l,c)=>{let d=c?c.length:0;return a.slice(0,d)+"["+"a".repeat(a.length-d-2)+"]"}),o=this.options.hooks?.emStrongMask?.call({lexer:this},o)??o;let n=!1,r="",i=1/0;for(;e;){if(e.length(a=c.call({lexer:this},e,t))?(e=e.substring(a.raw.length),t.push(a),!0):!1))continue;if(a=this.tokenizer.escape(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.tag(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.link(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(a.raw.length);let c=t.at(-1);a.type==="text"&&c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):t.push(a);continue}if(a=this.tokenizer.emStrong(e,o,r)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.codespan(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.br(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.del(e,o,r)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.autolink(e)){e=e.substring(a.raw.length),t.push(a);continue}if(!this.state.inLink&&(a=this.tokenizer.url(e))){e=e.substring(a.raw.length),t.push(a);continue}let l=e;if(this.options.extensions?.startInline){let c=1/0,d=e.slice(1),h;this.options.extensions.startInline.forEach(p=>{h=p.call({lexer:this},d),typeof h=="number"&&h>=0&&(c=Math.min(c,h))}),c<1/0&&c>=0&&(l=e.substring(0,c+1))}if(a=this.tokenizer.inlineText(l)){e=e.substring(a.raw.length),a.raw.slice(-1)!=="_"&&(r=a.raw.slice(-1)),n=!0;let c=t.at(-1);c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):t.push(a);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t="Infinite loop on byte: "+e;if(this.options.silent)console.error(t);else throw new Error(t)}},Zn=class{options;parser;constructor(s){this.options=s||ho}space(s){return""}code({text:s,lang:e,escaped:t}){let o=(e||"").match(Le.notSpaceStart)?.[0],n=s?s.replace(Le.endingNewline,"")+` +`:"";return o?'
          '+(t?n:Ke(n,!0))+`
          +`:"
          "+(t?n:Ke(n,!0))+`
          `}blockquote({tokens:s}){return`
          ${this.parser.parse(s)}
          `}html({text:s}){return s}def(s){return""}heading({tokens:s,depth:e}){return`${this.parser.parseInline(s)} @@ -150,8 +150,8 @@ ${this.parser.parse(s)} `}tablerow({text:s}){return` ${s} `}tablecell(s){let e=this.parser.parseInline(s.tokens),t=s.header?"th":"td";return(s.align?`<${t} align="${s.align}">`:`<${t}>`)+e+` -`}strong({tokens:s}){return`${this.parser.parseInline(s)}`}em({tokens:s}){return`${this.parser.parseInline(s)}`}codespan({text:s}){return`${qe(s,!0)}`}br(s){return"
          "}del({tokens:s}){return`${this.parser.parseInline(s)}`}link({href:s,title:e,text:t,tokens:o,autolink:n}){let r=n?qe(t,!0):this.parser.parseInline(o),i=rh(s);if(i===null)return r;s=qe(i,n);let a='
          ",a}image({href:s,title:e,text:t,tokens:o}){o&&(t=this.parser.parseInline(o,this.parser.textRenderer));let n=rh(s);if(n===null)return qe(t);s=n;let r=`${qe(t)}{let i=n[r].flat(1/0);t=t.concat(this.walkTokens(i,e))}):n.tokens&&(t=t.concat(this.walkTokens(n.tokens,e)))}}return t}use(...s){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return s.forEach(t=>{let o={...t};if(o.async=this.defaults.async||o.async||!1,t.extensions&&(t.extensions.forEach(n=>{if(!n.name)throw new Error("extension name required");if("renderer"in n){let r=e.renderers[n.name];r?e.renderers[n.name]=function(...i){let a=n.renderer.apply(this,i);return a===!1&&(a=r.apply(this,i)),a}:e.renderers[n.name]=n.renderer}if("tokenizer"in n){if(!n.level||n.level!=="block"&&n.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let r=e[n.level];r?r.unshift(n.tokenizer):e[n.level]=[n.tokenizer],n.start&&(n.level==="block"?e.startBlock?e.startBlock.push(n.start):e.startBlock=[n.start]:n.level==="inline"&&(e.startInline?e.startInline.push(n.start):e.startInline=[n.start]))}"childTokens"in n&&n.childTokens&&(e.childTokens[n.name]=n.childTokens)}),o.extensions=e),t.renderer){let n=this.defaults.renderer||new Xn(this.defaults);for(let r in t.renderer){if(!(r in n))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let i=r,a=t.renderer[i],l=n[i];n[i]=(...c)=>{let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d||""}}o.renderer=n}if(t.tokenizer){let n=this.defaults.tokenizer||new Yn(this.defaults);for(let r in t.tokenizer){if(!(r in n))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let i=r,a=t.tokenizer[i],l=n[i];n[i]=(...c)=>{let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d}}o.tokenizer=n}if(t.hooks){let n=this.defaults.hooks||new Ps;for(let r in t.hooks){if(!(r in n))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let i=r,a=t.hooks[i],l=n[i];Ps.passThroughHooks.has(r)?n[i]=c=>{if(this.defaults.async&&Ps.passThroughHooksRespectAsync.has(r))return(async()=>{let h=await a.call(n,c);return l.call(n,h)})();let d=a.call(n,c);return l.call(n,d)}:n[i]=(...c)=>{if(this.defaults.async)return(async()=>{let h=await a.apply(n,c);return h===!1&&(h=await l.apply(n,c)),h})();let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d}}o.hooks=n}if(t.walkTokens){let n=this.defaults.walkTokens,r=t.walkTokens;o.walkTokens=function(i){let a=[];return a.push(r.call(this,i)),n&&(a=a.concat(n.call(this,i))),a}}this.defaults={...this.defaults,...o}}),this}setOptions(s){return this.defaults={...this.defaults,...s},this}lexer(s,e){return tt.lex(s,e??this.defaults)}parser(s,e){return ot.parse(s,e??this.defaults)}parseMarkdown(s){return(e,t)=>{let o={...t},n={...this.defaults,...o},r=this.onError(!!n.silent,!!n.async);if(this.defaults.async===!0&&o.async===!1)return r(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return r(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return r(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(n.hooks&&(n.hooks.options=n,n.hooks.block=s),n.async)return(async()=>{let i=n.hooks?await n.hooks.preprocess(e):e,a=await(n.hooks?await n.hooks.provideLexer(s):s?tt.lex:tt.lexInline)(i,n),l=n.hooks?await n.hooks.processAllTokens(a):a;n.walkTokens&&await Promise.all(this.walkTokens(l,n.walkTokens));let c=await(n.hooks?await n.hooks.provideParser(s):s?ot.parse:ot.parseInline)(l,n);return n.hooks?await n.hooks.postprocess(c):c})().catch(r);try{n.hooks&&(e=n.hooks.preprocess(e));let i=(n.hooks?n.hooks.provideLexer(s):s?tt.lex:tt.lexInline)(e,n);n.hooks&&(i=n.hooks.processAllTokens(i)),n.walkTokens&&this.walkTokens(i,n.walkTokens);let a=(n.hooks?n.hooks.provideParser(s):s?ot.parse:ot.parseInline)(i,n);return n.hooks&&(a=n.hooks.postprocess(a)),a}catch(i){return r(i)}}}onError(s,e){return t=>{if(t.message+=` -Please report this to https://github.com/markedjs/marked.`,s){let o="

          An error occurred:

          "+qe(t.message+"",!0)+"
          ";return e?Promise.resolve(o):o}if(e)return Promise.reject(t);throw t}}},lo=new kw;ie.options=ie.setOptions=function(s){return lo.setOptions(s),ie.defaults=lo.defaults,dh(ie.defaults),ie};ie.getDefaults=ya;ie.defaults=co;ie.use=yw;ie.walkTokens=function(s,e){return lo.walkTokens(s,e)};ie.parseInline=lo.parseInline;ie.Parser=ot;ie.parser=ot.parse;ie.Renderer=Xn;ie.TextRenderer=Ta;ie.Lexer=tt;ie.lexer=tt.lex;ie.Tokenizer=Yn;ie.Hooks=Ps;ie.parse=ie;HS=ie.options,OS=ie.setOptions,DS=ie.walkTokens,FS=ie.parseInline,qS=ot.parse,KS=tt.lex});var kh=we((XS,xw)=>{xw.exports=`
          ×
          [ WHAT'S NEW ]

          Kute

          View on GitHub
          Done
          `});var xh={};function yh(s,e){return s.localeCompare(e,void 0,{numeric:!0,sensitivity:"case",caseFirst:"upper"})}function La(s){let e=Aa.get(s);return e||(e=fetch(`${Sw}/releases?per_page=1&page=${s}`).then(async t=>{if(!t.ok)throw new Error(`github ${t.status}`);let o=await t.json(),n=(t.headers.get("link")??"").match(/[?&]page=(\d+)>; rel="last"/);n?uo=Number(n[1]):o.length>0&&(uo=Math.max(uo??0,s));let[r]=o;return r?{tag:String(r.tag_name),body:String(r.body??""),date:String(r.published_at??"").slice(0,10)}:null}).catch(()=>(Aa.delete(s),null)),Aa.set(s,e)),e}async function Ew(s){let e=await La(1);if(!e||e.tag===s||uo===null)return 1;let t=2,o=uo;for(;t<=o;){let n=Math.floor((t+o)/2),r=await La(n);if(!r)return 1;let i=yh(r.tag,s);if(i===0)return n;i>0?t=n+1:o=n-1}return 1}var Sw,Aa,uo,Ra=w(()=>{"use strict";wh();D();Sw="https://api.github.com/repos/NullDev/Kute",Aa=new Map,uo=null;(async()=>{async function s(n){let[r,i]=await Promise.all([Promise.resolve().then(()=>ue(kh(),1)),Promise.resolve().then(()=>ue(Tn(),1))]),a=document.createElement("div");a.style=` +`}strong({tokens:s}){return`${this.parser.parseInline(s)}`}em({tokens:s}){return`${this.parser.parseInline(s)}`}codespan({text:s}){return`${Ke(s,!0)}`}br(s){return"
          "}del({tokens:s}){return`${this.parser.parseInline(s)}`}link({href:s,title:e,text:t,tokens:o,autolink:n}){let r=n?Ke(t,!0):this.parser.parseInline(o),i=ch(s);if(i===null)return r;s=Ke(i,n);let a='
          ",a}image({href:s,title:e,text:t,tokens:o}){o&&(t=this.parser.parseInline(o,this.parser.textRenderer));let n=ch(s);if(n===null)return Ke(t);s=n;let r=`${Ke(t)}{let i=n[r].flat(1/0);t=t.concat(this.walkTokens(i,e))}):n.tokens&&(t=t.concat(this.walkTokens(n.tokens,e)))}}return t}use(...s){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return s.forEach(t=>{let o={...t};if(o.async=this.defaults.async||o.async||!1,t.extensions&&(t.extensions.forEach(n=>{if(!n.name)throw new Error("extension name required");if("renderer"in n){let r=e.renderers[n.name];r?e.renderers[n.name]=function(...i){let a=n.renderer.apply(this,i);return a===!1&&(a=r.apply(this,i)),a}:e.renderers[n.name]=n.renderer}if("tokenizer"in n){if(!n.level||n.level!=="block"&&n.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let r=e[n.level];r?r.unshift(n.tokenizer):e[n.level]=[n.tokenizer],n.start&&(n.level==="block"?e.startBlock?e.startBlock.push(n.start):e.startBlock=[n.start]:n.level==="inline"&&(e.startInline?e.startInline.push(n.start):e.startInline=[n.start]))}"childTokens"in n&&n.childTokens&&(e.childTokens[n.name]=n.childTokens)}),o.extensions=e),t.renderer){let n=this.defaults.renderer||new Zn(this.defaults);for(let r in t.renderer){if(!(r in n))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let i=r,a=t.renderer[i],l=n[i];n[i]=(...c)=>{let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d||""}}o.renderer=n}if(t.tokenizer){let n=this.defaults.tokenizer||new Jn(this.defaults);for(let r in t.tokenizer){if(!(r in n))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let i=r,a=t.tokenizer[i],l=n[i];n[i]=(...c)=>{let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d}}o.tokenizer=n}if(t.hooks){let n=this.defaults.hooks||new Ns;for(let r in t.hooks){if(!(r in n))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let i=r,a=t.hooks[i],l=n[i];Ns.passThroughHooks.has(r)?n[i]=c=>{if(this.defaults.async&&Ns.passThroughHooksRespectAsync.has(r))return(async()=>{let h=await a.call(n,c);return l.call(n,h)})();let d=a.call(n,c);return l.call(n,d)}:n[i]=(...c)=>{if(this.defaults.async)return(async()=>{let h=await a.apply(n,c);return h===!1&&(h=await l.apply(n,c)),h})();let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d}}o.hooks=n}if(t.walkTokens){let n=this.defaults.walkTokens,r=t.walkTokens;o.walkTokens=function(i){let a=[];return a.push(r.call(this,i)),n&&(a=a.concat(n.call(this,i))),a}}this.defaults={...this.defaults,...o}}),this}setOptions(s){return this.defaults={...this.defaults,...s},this}lexer(s,e){return tt.lex(s,e??this.defaults)}parser(s,e){return ot.parse(s,e??this.defaults)}parseMarkdown(s){return(e,t)=>{let o={...t},n={...this.defaults,...o},r=this.onError(!!n.silent,!!n.async);if(this.defaults.async===!0&&o.async===!1)return r(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return r(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return r(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(n.hooks&&(n.hooks.options=n,n.hooks.block=s),n.async)return(async()=>{let i=n.hooks?await n.hooks.preprocess(e):e,a=await(n.hooks?await n.hooks.provideLexer(s):s?tt.lex:tt.lexInline)(i,n),l=n.hooks?await n.hooks.processAllTokens(a):a;n.walkTokens&&await Promise.all(this.walkTokens(l,n.walkTokens));let c=await(n.hooks?await n.hooks.provideParser(s):s?ot.parse:ot.parseInline)(l,n);return n.hooks?await n.hooks.postprocess(c):c})().catch(r);try{n.hooks&&(e=n.hooks.preprocess(e));let i=(n.hooks?n.hooks.provideLexer(s):s?tt.lex:tt.lexInline)(e,n);n.hooks&&(i=n.hooks.processAllTokens(i)),n.walkTokens&&this.walkTokens(i,n.walkTokens);let a=(n.hooks?n.hooks.provideParser(s):s?ot.parse:ot.parseInline)(i,n);return n.hooks&&(a=n.hooks.postprocess(a)),a}catch(i){return r(i)}}}onError(s,e){return t=>{if(t.message+=` +Please report this to https://github.com/markedjs/marked.`,s){let o="

          An error occurred:

          "+Ke(t.message+"",!0)+"
          ";return e?Promise.resolve(o):o}if(e)return Promise.reject(t);throw t}}},po=new $w;ie.options=ie.setOptions=function(s){return po.setOptions(s),ie.defaults=po.defaults,mh(ie.defaults),ie};ie.getDefaults=Sa;ie.defaults=ho;ie.use=Cw;ie.walkTokens=function(s,e){return po.walkTokens(s,e)};ie.parseInline=po.parseInline;ie.Parser=ot;ie.parser=ot.parse;ie.Renderer=Zn;ie.TextRenderer=La;ie.Lexer=tt;ie.lexer=tt.lex;ie.Tokenizer=Jn;ie.Hooks=Ns;ie.parse=ie;jS=ie.options,US=ie.setOptions,GS=ie.walkTokens,WS=ie.parseInline,VS=ot.parse,YS=tt.lex});var Eh=we((o3,Mw)=>{Mw.exports=`
          ×
          [ WHAT'S NEW ]

          Kute

          View on GitHub
          Done
          `});var Ch={};function $h(s,e){return s.localeCompare(e,void 0,{numeric:!0,sensitivity:"case",caseFirst:"upper"})}function Pa(s){let e=Ra.get(s);return e||(e=fetch(`${Tw}/releases?per_page=1&page=${s}`).then(async t=>{if(!t.ok)throw new Error(`github ${t.status}`);let o=await t.json(),n=(t.headers.get("link")??"").match(/[?&]page=(\d+)>; rel="last"/);n?mo=Number(n[1]):o.length>0&&(mo=Math.max(mo??0,s));let[r]=o;return r?{tag:String(r.tag_name),body:String(r.body??""),date:String(r.published_at??"").slice(0,10)}:null}).catch(()=>(Ra.delete(s),null)),Ra.set(s,e)),e}async function Aw(s){let e=await Pa(1);if(!e||e.tag===s||mo===null)return 1;let t=2,o=mo;for(;t<=o;){let n=Math.floor((t+o)/2),r=await Pa(n);if(!r)return 1;let i=$h(r.tag,s);if(i===0)return n;i>0?t=n+1:o=n-1}return 1}var Tw,Ra,mo,Ia=w(()=>{"use strict";Sh();F();Tw="https://api.github.com/repos/NullDev/Kute",Ra=new Map,mo=null;(async()=>{async function s(n){let[r,i]=await Promise.all([Promise.resolve().then(()=>ue(Eh(),1)),Promise.resolve().then(()=>ue(Ln(),1))]),a=document.createElement("div");a.style=` position: fixed; top: 0; left: 0; @@ -162,17 +162,17 @@ Please report this to https://github.com/markedjs/marked.`,s){let o="

          An error display: flex; justify-content: center; align-items: center; - `,document.body.append(a);let l=document.createElement("div");l.id="changelogPopupHost",a.append(l);let c=l.attachShadow({mode:"open"}),d=document.createElement("div");for(d.innerHTML=r.default;d.firstChild;)c.append(d.firstChild);let h=_=>c.getElementById(_),p=h("changelogLogo");p&&(p.src=i.default);let m=h("changelogContent");m&&(m.textContent="Loading release notes...");let f=h("changelogVersion");f&&(f.textContent=n);let g=new AbortController,b=()=>{g.abort(),a.remove()};for(let _ of["changelogClose","changelogDone"]){let H=h(_);H&&(H.onclick=b)}a.addEventListener("mousedown",_=>{_.target===a&&b()});let v=1,k=0,E=()=>{let _=uo??1,H=h("changelogPosition");H&&(H.textContent=`${v} / ${_}`),h("changelogNewer")?.classList.toggle("changelogDisabled",v<=1),h("changelogOlder")?.classList.toggle("changelogDisabled",v>=_);let G=h("changelogNav");G&&(G.style.display=_>1?"":"none")},L=async _=>{v=Math.min(Math.max(_,1),uo??1);let H=++k;E();let G=await La(v);if(H!==k||!m)return;if(!G){m.innerHTML="Could not load the release notes. View them on GitHub instead.";let be=h("changelogGithub");be&&(be.onclick=()=>window.chrome.webview.postMessage(`open-url, https://github.com/NullDev/Kute/releases/tag/${n}`));return}let J=`https://github.com/NullDev/Kute/releases/tag/${G.tag}`;f&&(f.textContent=G.tag);let B=h("changelogEyebrow");B&&(B.textContent=G.tag===n?"[ WHAT'S NEW ]":`[ RELEASED ${G.date} ]`);let re=h("changelogGithub");re&&(re.onclick=()=>window.chrome.webview.postMessage(`open-url, ${J}`));let je=await ie.parse(G.body||"No release notes found.",{breaks:!0,async:!0});if(H===k){m.innerHTML=je,h("changelogContentWrapper")?.scrollTo(0,0);for(let be of m.querySelectorAll("a"))be.getAttribute("href")?.startsWith("#")&&be.setAttribute("href",J+be.getAttribute("href")),be.setAttribute("target","_blank"),be.setAttribute("rel","noopener")}},x=h("changelogOlder");x&&(x.onclick=()=>L(v+1));let $=h("changelogNewer");$&&($.onclick=()=>L(v-1)),document.addEventListener("keydown",_=>{if(_.key==="Escape")b();else if(_.key==="ArrowLeft")L(v-1);else if(_.key==="ArrowRight")L(v+1);else return;_.stopPropagation()},{signal:g.signal,capture:!0});let I=await Ew(n);g.signal.aborted||await L(I)}let e=u?.version,t=window.localStorage.getItem("kute_lastSeenVersion"),o=t!==null&&yh(e,t)>0;window.localStorage.setItem("kute_lastSeenVersion",e),u?.settings.data?.showChangelog&&t&&e&&o&&await s(e),u.showChangelogPopup=s})()});var Ia={};A(Ia,{default:()=>$w});var Pa,$w,Na=w(()=>{"use strict";Pa=class{tracked=new WeakSet;draft=null;observer=null;pending=null;sentAt=0;constructor(){document.addEventListener("focusin",e=>{let t=e.target;t instanceof HTMLTextAreaElement&&t.classList.contains("conversation-input")&&this.track(t)})}friendOf(e){return e.closest(".conversation-root")?.querySelector(".conversation-header-name")?.textContent??""}track(e){this.tracked.has(e)||(this.tracked.add(e),e.addEventListener("input",()=>this.save(e)),e.addEventListener("keydown",t=>{t.key==="Enter"&&!t.shiftKey&&!t.isComposing&&(this.sentAt=performance.now())}),e.closest(".conversation-compose")?.querySelector(".conversation-send-button")?.addEventListener("click",()=>{this.sentAt=performance.now()}),e.value&&this.save(e))}save(e){if(!e.value){this.stop();return}if(this.draft={input:e,friend:this.friendOf(e),text:e.value,start:e.selectionStart,end:e.selectionEnd},this.observer)return;let t=e.closest(".conversation-root");t&&(this.observer=new MutationObserver(()=>this.schedule()),this.observer.observe(t,{childList:!0,subtree:!0,characterData:!0}))}schedule(){this.pending===null&&(this.pending=setTimeout(()=>this.check(),0))}check(){this.pending=null;let{draft:e}=this;if(!e)return;let{input:t}=e;if(!t.isConnected||this.friendOf(t)!==e.friend){this.stop();return}if(t.value){this.save(t);return}if(performance.now()-this.sentAt<250){this.stop();return}t.value=e.text,document.activeElement===t&&t.setSelectionRange(e.start,e.end),t.dispatchEvent(new Event("input",{bubbles:!0}))}stop(){this.draft=null,this.observer?.disconnect(),this.observer=null}},$w=new Pa});var Eh,Sh=w(()=>{Eh='

          Chat Logs

          Copy
          Clear
          Close
          '});var Ba={};A(Ba,{default:()=>Nw});function Lw(s){if(!s.hasAttribute("data-tab"))return"kill";let e=s.querySelector(".chatItem"),t=e?.querySelector(".chatMsg");return!e||!(t instanceof HTMLElement)||e.querySelector(".tradeMsg")?"event":e.firstChild!==t?"player":t.style.color?"server":"event"}function Rw(s){let e="",t=!1,o=[];for(let n of s.querySelector(".chatMsg")?.childNodes??[]){if(!(n instanceof HTMLImageElement)){e+=n.textContent??"";continue}let r=n.getAttribute("src")??"";r.includes("headshot")?o.push("headshot"):r.includes("wallbang")?o.push("wallbang"):t||(t=!0,e+=" \u25B8 ")}return o.length>0?`${e.trim()} (${o.join(", ")})`:e}function $h(s){let e=new Date(s);return[e.getHours(),e.getMinutes(),e.getSeconds()].map(t=>String(t).padStart(2,"0")).join(":")}function Pw(){try{let s=JSON.parse(window.sessionStorage.getItem(Ch)??"[]");return Array.isArray(s)?s.slice(-Jn):[]}catch{return[]}}function Iw(){try{let{mode:s,map:e}=window.getGameActivity();if(s&&e)return`${s} on ${e}`}catch{}return"New lobby"}var Jn,Ch,Mw,Tw,Aw,_a,Nw,za=w(()=>{"use strict";Sh();D();Po();Jn=2e3,Ch="kute_chat_logs",Mw="\u200E",Tw=[["player","Players"],["kill","Kills"],["event","Events"],["server","Server"]],Aw={player:"",kill:"clKill",event:"clEvent",server:"clServer",lobby:"clLobby"};_a=class{constructor(){this.entries=Pw(),this.entries.length>0&&this.entries[this.entries.length-1].cat!=="lobby"&&this.entries.push({t:Date.now(),cat:"lobby",text:Iw()}),this.shown=new Set,this.view=null,this.stick=!0,this.observer=new MutationObserver(e=>{for(let t of e)for(let o of t.addedNodes)this.add(o)}),this.save=()=>{try{window.sessionStorage.setItem(Ch,JSON.stringify(this.entries))}catch{}},u.chatLogs={open:()=>this.open(),toggle:()=>this.toggle()},u.settings.toggleChatLogs=e=>this.setEnabled(e),this.setEnabled(!0)}setEnabled(e){if(this.observer.disconnect(),window.removeEventListener("pagehide",this.save),!e){this.close();return}let t=document.getElementById("chatList");if(t){for(let o of t.children)this.add(o);this.observer.observe(t,{childList:!0}),window.addEventListener("pagehide",this.save)}}add(e){if(!(e instanceof HTMLElement))return;let t=Lw(e),o=(t==="kill"?Rw(e):e.textContent??"").replaceAll(Mw,"").trim();if(!o)return;let n={t:Date.now(),cat:t,text:o};if(this.entries.push(n),this.entries.length>Jn&&this.entries.splice(0,this.entries.length-Jn),!this.view||!this.visible(n))return;let{list:r}=this.view;r.querySelector(".clEmpty")?.remove(),r.append(this.row(n)),r.childElementCount>Jn&&r.firstElementChild?.remove(),this.stick&&(r.scrollTop=1e9)}visible(e){let t=this.view?.search.value.trim().toLowerCase()??"";return e.cat==="lobby"?this.shown.size===0&&!t:this.shown.size>0&&!this.shown.has(e.cat)?!1:!t||e.text.toLowerCase().includes(t)}row(e){let t=document.createElement("div");t.className=`clRow ${Aw[e.cat]??""}`;let o=document.createElement("span");return o.className="clTime",o.textContent=$h(e.t),t.append(o,e.text),t}render(){if(!this.view)return;let e=this.entries.filter(t=>this.visible(t)).map(t=>this.row(t));if(e.length===0){let t=document.createElement("div");t.className="clEmpty",t.textContent=this.entries.length===0?"Nothing in the chat yet":"No line matches",e.push(t)}this.view.list.replaceChildren(...e),this.view.list.scrollTop=1e9,this.stick=!0,this.renderFilters()}renderFilters(){if(!this.view)return;let e=(n,r,i)=>{let a=document.createElement("div");return a.className=`clFilter${r?" clOn":""}`,a.textContent=n,a.onclick=i,a},t=e("All",this.shown.size===0,()=>{this.shown.clear(),this.render()}),o=Tw.map(([n,r])=>e(r,this.shown.has(n),()=>{this.shown.has(n)?this.shown.delete(n):this.shown.add(n),this.render()}));this.view.shadow.querySelector("#clFilters").replaceChildren(t,...o)}open(){if(this.view)return;document.pointerLockElement&&document.exitPointerLock();let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=Eh;let n=l=>o.querySelector(`#${l}`),r=n("clList"),i=n("clSearch");this.view={overlay:e,shadow:o,list:r,search:i};let a=ft().chatLogs;n("clHint").textContent=`${a?`${a.name} opens and closes this. `:""}Select lines and copy with Ctrl+C`,e.addEventListener("click",l=>{l.target===e&&this.close()});for(let l of["keydown","keyup","keypress"])t.addEventListener(l,c=>{let d=c;l==="keydown"&&!d.repeat&&(d.key==="Escape"||ls(d,"chatLogs"))&&this.close(),c.stopPropagation()});r.addEventListener("scroll",()=>{this.stick=r.scrollTop+r.clientHeight>=r.scrollHeight-30},{passive:!0}),i.addEventListener("input",()=>this.render()),n("clCopy").onclick=()=>{let l=this.entries.filter(c=>this.visible(c)).map(c=>`${$h(c.t)} ${c.text}`).join(` -`);navigator.clipboard.writeText(l).then(()=>u.showNotification("Chat log copied",!1,2),()=>u.showNotification("Could not copy the chat log",!1,3))},n("clClear").onclick=()=>{this.entries=[],this.save(),this.render()},n("clClose").onclick=()=>this.close(),document.body.append(e),this.render(),i.focus()}close(){this.view?.overlay.remove(),this.view=null}toggle(){this.view?this.close():this.open()}},Nw=new _a});var Oa={};A(Oa,{default:()=>zw});function Bw(s){return s.split(";").map(e=>e.trim()).filter(e=>{let t=e.split(":")[0]?.trim().toLowerCase();return!!t&&e.includes(":")&&_w.has(t)}).join(";")}var _w,Ha,Mh,zw,Da=w(()=>{"use strict";D();jn();It();_w=new Set(["background","background-image","background-color","background-clip","-webkit-background-clip","background-size","background-position","color","-webkit-text-fill-color","-webkit-text-stroke","text-shadow","text-decoration","filter","opacity","animation"]);Ha=class{constructor(){this.styles={},this.fetched={},this.watching=!1,this.decorator=e=>this.restyle(e),u.settings.toggleClanColors=e=>this.toggle(e),this.load()}toggle(e){if(e){Object.keys(this.fetched).length>0?this.apply(this.fetched):this.load();return}pt.remove(this.decorator),this.watching=!1,this.styles={};for(let t of document.querySelectorAll("[data-kute-clan]"))t.setAttribute("style",t.getAttribute("data-kute-style")??""),t.removeAttribute("data-kute-clan"),t.removeAttribute("data-kute-style")}async load(){let e=await he.request("/meta");typeof e?.clanTagColors=="object"&&e.clanTagColors!==null&&(this.fetched=e.clanTagColors),u.settings.data.clanColors!==!1&&this.apply(this.fetched)}apply(e){if(!(typeof e!="object"||e===null)){this.styles={};for(let[t,o]of Object.entries(e)){if(typeof o!="string"||t.length===0||t.length>16)continue;let n=Bw(o);n&&(this.styles[t]=n)}Object.keys(this.styles).length!==0&&(this.watching?pt.refresh():pt.add(this.decorator),this.watching=!0)}}restyle(e){let t=Ls(e.element);if(!t)return;let o=this.styles[t.tag];!o||t.span.getAttribute("data-kute-clan")===t.tag||(t.span.hasAttribute("data-kute-style")||t.span.setAttribute("data-kute-style",t.span.getAttribute("style")??""),t.span.setAttribute("style",o),t.span.setAttribute("data-kute-clan",t.tag))}},Mh=new Ha;u.clanColors=Mh;zw=Mh});var Th=we((i3,Hw)=>{Hw.exports='

          Custom Sky

          Replaces the sky of every map. It applies from the next match
          Gradient
          Image
          Open folder
          Refresh
          Put PNG, JPG or WEBP images into Documents\\kute\\skies
          Done
          '});var qa={};A(qa,{default:()=>qw});var Ow,Ah,Dw,Fw,Fa,qw,Ka=w(()=>{"use strict";D();Ow={mode:"gradient",zenith:"#1E5AA8",horizon:"#9FD0F0",image:""},Ah="preset:",Dw=[["Vaporwave","#ff00aa","#00ffcc"],["Kute","#0b2e3a","#35e0e8"],["Sunset","#2b1055","#ff8a4c"],["Midnight","#03040f","#243b73"],["Toxic","#0a2a12","#a6ff3b"],["Blood Moon","#120006","#b3122e"],["Cotton Candy","#8fb8ff","#ffc2e2"]],Fw={starfield:"Starfield",aurora:"Aurora",nebula:"Nebula",synthwave:"Synthwave",sunset:"Sunset",candy:"Cotton Clouds"},Fa=class{constructor(){u.customSky={showOptions:()=>this.showOptions()}}get config(){return{...Ow,...u.settings.data.customSkyConfig}}saveConfig(e){u.settings.data.customSkyConfig=e,window.chrome.webview.postMessage(`set-config-json customSkyConfig ${JSON.stringify(e)}`)}listImages(){return new Promise(e=>{let t=0,o=n=>{Array.isArray(n.data?.skies)&&(window.chrome.webview.removeEventListener("message",o),clearTimeout(t),e({files:n.data.skies,presets:Array.isArray(n.data.skyPresets)?n.data.skyPresets:[]}))};t=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",o),e({files:[],presets:[]})},3e3),window.chrome.webview.addEventListener("message",o),window.chrome.webview.postMessage("sky-list")})}async showOptions(){let e=await Promise.resolve().then(()=>ue(Th(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=i("skZenith"),l=i("skHorizon"),c=i("skImage"),d=()=>{i("skModeGradient").classList.toggle("active",t.mode==="gradient"),i("skModeImage").classList.toggle("active",t.mode==="image"),i("skGradientPane").hidden=t.mode!=="gradient",i("skImagePane").hidden=t.mode!=="image",i("skPreview").style.background=`linear-gradient(${t.zenith}, ${t.horizon})`},h=async()=>{let{files:g,presets:b}=await this.listImages(),v=(E,L)=>{let x=document.createElement("optgroup");return x.label=E,x.append(...L.map(([$,I])=>new Option(I,$))),x},k=[...b.map(E=>Ah+E),...g];c.replaceChildren(...b.length?[v("Kute",b.map(E=>[Ah+E,Fw[E]??E]))]:[],...g.length?[v("Your images",g.map(E=>[E,E]))]:[]),k.length>0&&!k.includes(t.image)&&(t.image=k[0]),c.value=t.image,c.disabled=k.length===0,i("skImageHint").textContent=g.length===0?"Add your own: put PNG, JPG or WEBP images into Documents\\kute\\skies, then press Refresh":"Put PNG, JPG or WEBP images into Documents\\kute\\skies"},p=i("skSwatches");for(let[g,b,v]of Dw){let k=document.createElement("div");k.className="skSwatch",k.title=g,k.style.background=`linear-gradient(${b}, ${v})`,k.onclick=()=>{t.zenith=b,t.horizon=v,a.value=b,l.value=v,d()},p.append(k)}a.value=t.zenith.toLowerCase(),l.value=t.horizon.toLowerCase(),a.oninput=()=>{t.zenith=a.value,d()},l.oninput=()=>{t.horizon=l.value,d()},c.onchange=()=>{t.image=c.value},i("skModeGradient").onclick=()=>{t.mode="gradient",d()},i("skModeImage").onclick=()=>{t.mode="image",d()},i("skOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, skies"),i("skRefresh").onclick=()=>h();let m=new AbortController,f=()=>{m.abort(),o.remove(),this.saveConfig(t)};i("skDone").onclick=f,o.addEventListener("mousedown",g=>{g.target===o&&f()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),f())},{signal:m.signal,capture:!0}),d(),document.body.append(o),await h()}},qw=new Fa});var Rh,Lh=w(()=>{Rh='

          Diagnostics Report

          These are all the files that will be included. You can choose what to exclude, but keeping all of them is recommended.
          Collecting...
          Close
          Save dump
          '});var Ih={};A(Ih,{createCodeEditor:()=>Ph,createEditorView:()=>po,highlight:()=>Qn,languageFor:()=>ja});function Qn(s,e="js"){if(e==="text")return Zn(s);let t=e==="css",o="",n=0;for(let r of s.matchAll(t?Ww:Gw)){let i=r.index??0,[a]=r,l="";if(t){let[,c,d,h,p,m]=r;if(c)l="c";else if(d)l="s";else if(h)l="k";else if(p)l="n";else if(m){let f=i+m.length;s[f]==="("?l="f":(m.startsWith("--")||Vw(s,f))&&(l="l")}}else{let[,c,d,h,p]=r;c?l="c":d?l=e==="json"&&/^\s*:/.test(s.slice(i+a.length,i+a.length+20))?"p":"s":h?l="n":p&&(jw.has(p)?l="k":Uw.has(p)?l="l":/^\s*\(/.test(s.slice(i+p.length,i+p.length+40))&&(l="f"))}l&&(o+=Zn(s.slice(n,i))+`${Zn(a)}`,n=i+a.length)}return o+Zn(s.slice(n))}function Ph(s,e,{onSave:t,onDirtyChange:o,onChange:n,language:r="js"}){s.innerHTML=`
          -
          `;let i=s.querySelector(".editorGutter"),a=s.querySelector("pre"),l=s.querySelector("code"),c=s.querySelector("textarea");c.value=e;let d=e,h=!1,p=0,m=0,f=()=>{a.scrollTop=c.scrollTop,a.scrollLeft=c.scrollLeft,i.scrollTop=c.scrollTop},g=()=>{m=0;let{value:k}=c;l.innerHTML=`${Qn(k,r)} + `,document.body.append(a);let l=document.createElement("div");l.id="changelogPopupHost",a.append(l);let c=l.attachShadow({mode:"open"}),d=document.createElement("div");for(d.innerHTML=r.default;d.firstChild;)c.append(d.firstChild);let h=_=>c.getElementById(_),p=h("changelogLogo");p&&(p.src=i.default);let m=h("changelogContent");m&&(m.textContent="Loading release notes...");let f=h("changelogVersion");f&&(f.textContent=n);let g=new AbortController,b=()=>{g.abort(),a.remove()};for(let _ of["changelogClose","changelogDone"]){let H=h(_);H&&(H.onclick=b)}a.addEventListener("mousedown",_=>{_.target===a&&b()});let v=1,k=0,E=()=>{let _=mo??1,H=h("changelogPosition");H&&(H.textContent=`${v} / ${_}`),h("changelogNewer")?.classList.toggle("changelogDisabled",v<=1),h("changelogOlder")?.classList.toggle("changelogDisabled",v>=_);let G=h("changelogNav");G&&(G.style.display=_>1?"":"none")},L=async _=>{v=Math.min(Math.max(_,1),mo??1);let H=++k;E();let G=await Pa(v);if(H!==k||!m)return;if(!G){m.innerHTML="Could not load the release notes. View them on GitHub instead.";let be=h("changelogGithub");be&&(be.onclick=()=>window.chrome.webview.postMessage(`open-url, https://github.com/NullDev/Kute/releases/tag/${n}`));return}let J=`https://github.com/NullDev/Kute/releases/tag/${G.tag}`;f&&(f.textContent=G.tag);let B=h("changelogEyebrow");B&&(B.textContent=G.tag===n?"[ WHAT'S NEW ]":`[ RELEASED ${G.date} ]`);let re=h("changelogGithub");re&&(re.onclick=()=>window.chrome.webview.postMessage(`open-url, ${J}`));let je=await ie.parse(G.body||"No release notes found.",{breaks:!0,async:!0});if(H===k){m.innerHTML=je,h("changelogContentWrapper")?.scrollTo(0,0);for(let be of m.querySelectorAll("a"))be.getAttribute("href")?.startsWith("#")&&be.setAttribute("href",J+be.getAttribute("href")),be.setAttribute("target","_blank"),be.setAttribute("rel","noopener")}},y=h("changelogOlder");y&&(y.onclick=()=>L(v+1));let C=h("changelogNewer");C&&(C.onclick=()=>L(v-1)),document.addEventListener("keydown",_=>{if(_.key==="Escape")b();else if(_.key==="ArrowLeft")L(v-1);else if(_.key==="ArrowRight")L(v+1);else return;_.stopPropagation()},{signal:g.signal,capture:!0});let I=await Aw(n);g.signal.aborted||await L(I)}let e=u?.version,t=window.localStorage.getItem("kute_lastSeenVersion"),o=t!==null&&$h(e,t)>0;window.localStorage.setItem("kute_lastSeenVersion",e),u?.settings.data?.showChangelog&&t&&e&&o&&await s(e),u.showChangelogPopup=s})()});var _a={};A(_a,{default:()=>Lw});var Na,Lw,Ba=w(()=>{"use strict";Na=class{tracked=new WeakSet;draft=null;observer=null;pending=null;sentAt=0;constructor(){document.addEventListener("focusin",e=>{let t=e.target;t instanceof HTMLTextAreaElement&&t.classList.contains("conversation-input")&&this.track(t)})}friendOf(e){return e.closest(".conversation-root")?.querySelector(".conversation-header-name")?.textContent??""}track(e){this.tracked.has(e)||(this.tracked.add(e),e.addEventListener("input",()=>this.save(e)),e.addEventListener("keydown",t=>{t.key==="Enter"&&!t.shiftKey&&!t.isComposing&&(this.sentAt=performance.now())}),e.closest(".conversation-compose")?.querySelector(".conversation-send-button")?.addEventListener("click",()=>{this.sentAt=performance.now()}),e.value&&this.save(e))}save(e){if(!e.value){this.stop();return}if(this.draft={input:e,friend:this.friendOf(e),text:e.value,start:e.selectionStart,end:e.selectionEnd},this.observer)return;let t=e.closest(".conversation-root");t&&(this.observer=new MutationObserver(()=>this.schedule()),this.observer.observe(t,{childList:!0,subtree:!0,characterData:!0}))}schedule(){this.pending===null&&(this.pending=setTimeout(()=>this.check(),0))}check(){this.pending=null;let{draft:e}=this;if(!e)return;let{input:t}=e;if(!t.isConnected||this.friendOf(t)!==e.friend){this.stop();return}if(t.value){this.save(t);return}if(performance.now()-this.sentAt<250){this.stop();return}t.value=e.text,document.activeElement===t&&t.setSelectionRange(e.start,e.end),t.dispatchEvent(new Event("input",{bubbles:!0}))}stop(){this.draft=null,this.observer?.disconnect(),this.observer=null}},Lw=new Na});var Th,Mh=w(()=>{Th='

          Chat Logs

          Copy
          Clear
          Close
          '});var Ha={};A(Ha,{default:()=>Ow});function _w(s){if(!s.hasAttribute("data-tab"))return"kill";let e=s.querySelector(".chatItem"),t=e?.querySelector(".chatMsg");return!e||!(t instanceof HTMLElement)||e.querySelector(".tradeMsg")?"event":e.firstChild!==t?"player":t.style.color?"server":"event"}function Bw(s){let e="",t=!1,o=[];for(let n of s.querySelector(".chatMsg")?.childNodes??[]){if(!(n instanceof HTMLImageElement)){e+=n.textContent??"";continue}let r=n.getAttribute("src")??"";r.includes("headshot")?o.push("headshot"):r.includes("wallbang")?o.push("wallbang"):t||(t=!0,e+=" \u25B8 ")}return o.length>0?`${e.trim()} (${o.join(", ")})`:e}function Ah(s){let e=new Date(s);return[e.getHours(),e.getMinutes(),e.getSeconds()].map(t=>String(t).padStart(2,"0")).join(":")}function zw(){try{let s=JSON.parse(window.sessionStorage.getItem(Lh)??"[]");return Array.isArray(s)?s.slice(-Qn):[]}catch{return[]}}function Hw(){try{let{mode:s,map:e}=window.getGameActivity();if(s&&e)return`${s} on ${e}`}catch{}return"New lobby"}var Qn,Lh,Pw,Iw,Nw,za,Ow,Oa=w(()=>{"use strict";Mh();F();No();Qn=2e3,Lh="kute_chat_logs",Pw="\u200E",Iw=[["player","Players"],["kill","Kills"],["event","Events"],["server","Server"]],Nw={player:"",kill:"clKill",event:"clEvent",server:"clServer",lobby:"clLobby"};za=class{constructor(){this.entries=zw(),this.entries.length>0&&this.entries[this.entries.length-1].cat!=="lobby"&&this.entries.push({t:Date.now(),cat:"lobby",text:Hw()}),this.shown=new Set,this.view=null,this.stick=!0,this.observer=new MutationObserver(e=>{for(let t of e)for(let o of t.addedNodes)this.add(o)}),this.save=()=>{try{window.sessionStorage.setItem(Lh,JSON.stringify(this.entries))}catch{}},u.chatLogs={open:()=>this.open(),toggle:()=>this.toggle()},u.settings.toggleChatLogs=e=>this.setEnabled(e),this.setEnabled(!0)}setEnabled(e){if(this.observer.disconnect(),window.removeEventListener("pagehide",this.save),!e){this.close();return}let t=document.getElementById("chatList");if(t){for(let o of t.children)this.add(o);this.observer.observe(t,{childList:!0}),window.addEventListener("pagehide",this.save)}}add(e){if(!(e instanceof HTMLElement))return;let t=_w(e),o=(t==="kill"?Bw(e):e.textContent??"").replaceAll(Pw,"").trim();if(!o)return;let n={t:Date.now(),cat:t,text:o};if(this.entries.push(n),this.entries.length>Qn&&this.entries.splice(0,this.entries.length-Qn),!this.view||!this.visible(n))return;let{list:r}=this.view;r.querySelector(".clEmpty")?.remove(),r.append(this.row(n)),r.childElementCount>Qn&&r.firstElementChild?.remove(),this.stick&&(r.scrollTop=1e9)}visible(e){let t=this.view?.search.value.trim().toLowerCase()??"";return e.cat==="lobby"?this.shown.size===0&&!t:this.shown.size>0&&!this.shown.has(e.cat)?!1:!t||e.text.toLowerCase().includes(t)}row(e){let t=document.createElement("div");t.className=`clRow ${Nw[e.cat]??""}`;let o=document.createElement("span");return o.className="clTime",o.textContent=Ah(e.t),t.append(o,e.text),t}render(){if(!this.view)return;let e=this.entries.filter(t=>this.visible(t)).map(t=>this.row(t));if(e.length===0){let t=document.createElement("div");t.className="clEmpty",t.textContent=this.entries.length===0?"Nothing in the chat yet":"No line matches",e.push(t)}this.view.list.replaceChildren(...e),this.view.list.scrollTop=1e9,this.stick=!0,this.renderFilters()}renderFilters(){if(!this.view)return;let e=(n,r,i)=>{let a=document.createElement("div");return a.className=`clFilter${r?" clOn":""}`,a.textContent=n,a.onclick=i,a},t=e("All",this.shown.size===0,()=>{this.shown.clear(),this.render()}),o=Iw.map(([n,r])=>e(r,this.shown.has(n),()=>{this.shown.has(n)?this.shown.delete(n):this.shown.add(n),this.render()}));this.view.shadow.querySelector("#clFilters").replaceChildren(t,...o)}open(){if(this.view)return;document.pointerLockElement&&document.exitPointerLock();let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=Th;let n=l=>o.querySelector(`#${l}`),r=n("clList"),i=n("clSearch");this.view={overlay:e,shadow:o,list:r,search:i};let a=gt().chatLogs;n("clHint").textContent=`${a?`${a.name} opens and closes this. `:""}Select lines and copy with Ctrl+C`,e.addEventListener("click",l=>{l.target===e&&this.close()});for(let l of["keydown","keyup","keypress"])t.addEventListener(l,c=>{let d=c;l==="keydown"&&!d.repeat&&(d.key==="Escape"||ds(d,"chatLogs"))&&this.close(),c.stopPropagation()});r.addEventListener("scroll",()=>{this.stick=r.scrollTop+r.clientHeight>=r.scrollHeight-30},{passive:!0}),i.addEventListener("input",()=>this.render()),n("clCopy").onclick=()=>{let l=this.entries.filter(c=>this.visible(c)).map(c=>`${Ah(c.t)} ${c.text}`).join(` +`);navigator.clipboard.writeText(l).then(()=>u.showNotification("Chat log copied",!1,2),()=>u.showNotification("Could not copy the chat log",!1,3))},n("clClear").onclick=()=>{this.entries=[],this.save(),this.render()},n("clClose").onclick=()=>this.close(),document.body.append(e),this.render(),i.focus()}close(){this.view?.overlay.remove(),this.view=null}toggle(){this.view?this.close():this.open()}},Ow=new za});var Da={};A(Da,{default:()=>qw});function Dw(s){return s.split(";").map(e=>e.trim()).filter(e=>{let t=e.split(":")[0]?.trim().toLowerCase();return!!t&&e.includes(":")&&Fw.has(t)}).join(";")}var Fw,Fa,Rh,qw,qa=w(()=>{"use strict";F();Gn();Nt();Fw=new Set(["background","background-image","background-color","background-clip","-webkit-background-clip","background-size","background-position","color","-webkit-text-fill-color","-webkit-text-stroke","text-shadow","text-decoration","filter","opacity","animation"]);Fa=class{constructor(){this.styles={},this.fetched={},this.watching=!1,this.decorator=e=>this.restyle(e),u.settings.toggleClanColors=e=>this.toggle(e),this.load()}toggle(e){if(e){Object.keys(this.fetched).length>0?this.apply(this.fetched):this.load();return}ht.remove(this.decorator),this.watching=!1,this.styles={};for(let t of document.querySelectorAll("[data-kute-clan]"))t.setAttribute("style",t.getAttribute("data-kute-style")??""),t.removeAttribute("data-kute-clan"),t.removeAttribute("data-kute-style")}async load(){let e=await he.request("/meta");typeof e?.clanTagColors=="object"&&e.clanTagColors!==null&&(this.fetched=e.clanTagColors),u.settings.data.clanColors!==!1&&this.apply(this.fetched)}apply(e){if(!(typeof e!="object"||e===null)){this.styles={};for(let[t,o]of Object.entries(e)){if(typeof o!="string"||t.length===0||t.length>16)continue;let n=Dw(o);n&&(this.styles[t]=n)}Object.keys(this.styles).length!==0&&(this.watching?ht.refresh():ht.add(this.decorator),this.watching=!0)}}restyle(e){let t=Ps(e.element);if(!t)return;let o=this.styles[t.tag];!o||t.span.getAttribute("data-kute-clan")===t.tag||(t.span.hasAttribute("data-kute-style")||t.span.setAttribute("data-kute-style",t.span.getAttribute("style")??""),t.span.setAttribute("style",o),t.span.setAttribute("data-kute-clan",t.tag))}},Rh=new Fa;u.clanColors=Rh;qw=Rh});var Ph=we((p3,Kw)=>{Kw.exports='

          Custom Sky

          Replaces the sky of every map. It applies from the next match
          Gradient
          Image
          Open folder
          Refresh
          Put PNG, JPG or WEBP images into Documents\\kute\\skies
          Done
          '});var ja={};A(ja,{default:()=>Ww});var jw,Ih,Uw,Gw,Ka,Ww,Ua=w(()=>{"use strict";F();jw={mode:"gradient",zenith:"#1E5AA8",horizon:"#9FD0F0",image:""},Ih="preset:",Uw=[["Vaporwave","#ff00aa","#00ffcc"],["Kute","#0b2e3a","#35e0e8"],["Sunset","#2b1055","#ff8a4c"],["Midnight","#03040f","#243b73"],["Toxic","#0a2a12","#a6ff3b"],["Blood Moon","#120006","#b3122e"],["Cotton Candy","#8fb8ff","#ffc2e2"]],Gw={starfield:"Starfield",aurora:"Aurora",nebula:"Nebula",synthwave:"Synthwave",sunset:"Sunset",candy:"Cotton Clouds"},Ka=class{constructor(){u.customSky={showOptions:()=>this.showOptions()}}get config(){return{...jw,...u.settings.data.customSkyConfig}}saveConfig(e){u.settings.data.customSkyConfig=e,window.chrome.webview.postMessage(`set-config-json customSkyConfig ${JSON.stringify(e)}`)}listImages(){return new Promise(e=>{let t=0,o=n=>{Array.isArray(n.data?.skies)&&(window.chrome.webview.removeEventListener("message",o),clearTimeout(t),e({files:n.data.skies,presets:Array.isArray(n.data.skyPresets)?n.data.skyPresets:[]}))};t=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",o),e({files:[],presets:[]})},3e3),window.chrome.webview.addEventListener("message",o),window.chrome.webview.postMessage("sky-list")})}async showOptions(){let e=await Promise.resolve().then(()=>ue(Ph(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=i("skZenith"),l=i("skHorizon"),c=i("skImage"),d=()=>{i("skModeGradient").classList.toggle("active",t.mode==="gradient"),i("skModeImage").classList.toggle("active",t.mode==="image"),i("skGradientPane").hidden=t.mode!=="gradient",i("skImagePane").hidden=t.mode!=="image",i("skPreview").style.background=`linear-gradient(${t.zenith}, ${t.horizon})`},h=async()=>{let{files:g,presets:b}=await this.listImages(),v=(E,L)=>{let y=document.createElement("optgroup");return y.label=E,y.append(...L.map(([C,I])=>new Option(I,C))),y},k=[...b.map(E=>Ih+E),...g];c.replaceChildren(...b.length?[v("Kute",b.map(E=>[Ih+E,Gw[E]??E]))]:[],...g.length?[v("Your images",g.map(E=>[E,E]))]:[]),k.length>0&&!k.includes(t.image)&&(t.image=k[0]),c.value=t.image,c.disabled=k.length===0,i("skImageHint").textContent=g.length===0?"Add your own: put PNG, JPG or WEBP images into Documents\\kute\\skies, then press Refresh":"Put PNG, JPG or WEBP images into Documents\\kute\\skies"},p=i("skSwatches");for(let[g,b,v]of Uw){let k=document.createElement("div");k.className="skSwatch",k.title=g,k.style.background=`linear-gradient(${b}, ${v})`,k.onclick=()=>{t.zenith=b,t.horizon=v,a.value=b,l.value=v,d()},p.append(k)}a.value=t.zenith.toLowerCase(),l.value=t.horizon.toLowerCase(),a.oninput=()=>{t.zenith=a.value,d()},l.oninput=()=>{t.horizon=l.value,d()},c.onchange=()=>{t.image=c.value},i("skModeGradient").onclick=()=>{t.mode="gradient",d()},i("skModeImage").onclick=()=>{t.mode="image",d()},i("skOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, skies"),i("skRefresh").onclick=()=>h();let m=new AbortController,f=()=>{m.abort(),o.remove(),this.saveConfig(t)};i("skDone").onclick=f,o.addEventListener("mousedown",g=>{g.target===o&&f()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),f())},{signal:m.signal,capture:!0}),d(),document.body.append(o),await h()}},Ww=new Ka});var _h,Nh=w(()=>{_h='

          Diagnostics Report

          These are all the files that will be included. You can choose what to exclude, but keeping all of them is recommended.
          Collecting...
          Close
          Save dump
          '});var zh={};A(zh,{createCodeEditor:()=>Bh,createEditorView:()=>fo,highlight:()=>tr,languageFor:()=>Ga});function tr(s,e="js"){if(e==="text")return er(s);let t=e==="css",o="",n=0;for(let r of s.matchAll(t?Zw:Jw)){let i=r.index??0,[a]=r,l="";if(t){let[,c,d,h,p,m]=r;if(c)l="c";else if(d)l="s";else if(h)l="k";else if(p)l="n";else if(m){let f=i+m.length;s[f]==="("?l="f":(m.startsWith("--")||Qw(s,f))&&(l="l")}}else{let[,c,d,h,p]=r;c?l="c":d?l=e==="json"&&/^\s*:/.test(s.slice(i+a.length,i+a.length+20))?"p":"s":h?l="n":p&&(Yw.has(p)?l="k":Xw.has(p)?l="l":/^\s*\(/.test(s.slice(i+p.length,i+p.length+40))&&(l="f"))}l&&(o+=er(s.slice(n,i))+`${er(a)}`,n=i+a.length)}return o+er(s.slice(n))}function Bh(s,e,{onSave:t,onDirtyChange:o,onChange:n,language:r="js"}){s.innerHTML=`
          +
          `;let i=s.querySelector(".editorGutter"),a=s.querySelector("pre"),l=s.querySelector("code"),c=s.querySelector("textarea");c.value=e;let d=e,h=!1,p=0,m=0,f=()=>{a.scrollTop=c.scrollTop,a.scrollLeft=c.scrollLeft,i.scrollTop=c.scrollTop},g=()=>{m=0;let{value:k}=c;l.innerHTML=`${tr(k,r)} `;let E=k.split(` -`).length;E!==p&&(p=E,i.textContent=Array.from({length:E},(x,$)=>$+1).join(` -`)),f();let L=k!==d;L!==h&&(h=L,o(h))},b=k=>{document.execCommand("insertText",!1,k)},v=()=>{g(),n?.(c.value)};return c.addEventListener("input",()=>{c.value.length<15e4?v():m||(m=setTimeout(v,150))}),c.addEventListener("scroll",f),c.addEventListener("keydown",k=>{if((k.ctrlKey||k.metaKey)&&k.key.toLowerCase()==="s"){k.preventDefault(),t();return}if(k.key==="Tab"&&!k.ctrlKey&&!k.altKey){k.preventDefault();let{selectionStart:E,selectionEnd:L,value:x}=c,$=x.lastIndexOf(` -`,E-1)+1;if(k.shiftKey){let I=/^ {1,4}/.exec(x.slice($))?.[0].length??0;if(!I)return;c.setSelectionRange($,$+I),document.execCommand("delete"),c.setSelectionRange(Math.max($,E-I),Math.max($,L-I));return}b(" ");return}if(k.key==="Enter"&&!k.ctrlKey&&!k.altKey&&!k.shiftKey){k.preventDefault();let{selectionStart:E,value:L}=c,x=L.lastIndexOf(` -`,E-1)+1,$=L.slice(x,E),I=/^\s*/.exec($)?.[0]??"",_=r!=="text"&&/[{[(]\s*$/.test($)?" ":"";b(` -${I}${_}`)}}),g(),{getValue:()=>c.value,isDirty:()=>h,markSaved(k=c.value){d=k,g()},focus(){c.focus(),c.setSelectionRange(0,0)}}}function po(s,{title:e,content:t,language:o,isNew:n=!1,onSave:r,onClose:i,onChange:a}){s.textContent="";let l=St("div","editorView"),c=St("div","editorBar"),d=St("div","editorFile",e),h=St("span","dirty",n?" (new, not saved yet)":"");d.append(h);let p=St("div","btn primary","Save"),m=St("div","btn","Save & close"),f=St("div","btn","Close");p.onclick=()=>r(!1),m.onclick=()=>r(!0),f.onclick=i,c.append(d,p,m,f);let g=St("div","");g.style.cssText="display:flex;flex:1 1 auto;min-height:0",l.append(c,g,St("div","editorKeys","Ctrl+S save \xB7 Ctrl+Z / Ctrl+Y undo, redo \xB7 Tab / Shift+Tab indent \xB7 Esc close")),s.append(l);let b=Ph(g,t,{language:o,onChange:a,onSave:()=>r(!1),onDirtyChange:v=>{h.textContent=v?" \u25CF unsaved":""}});return b.focus(),{editor:b,bar:c,saveButton:p}}var jw,Uw,Gw,Zn,Ww,ja,Vw,St,Oo=w(()=>{"use strict";jw=new Set("async await break case catch class const continue debugger default delete do else export extends finally for function if import in instanceof let new of return static super switch throw try typeof var void while with yield get set".split(" ")),Uw=new Set(["true","false","null","undefined","this","NaN","Infinity"]),Gw=/(\/\/[^\n]*|\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?|`(?:[^`\\]|\\[\s\S])*`?)|(\b\d[\d_]*(?:\.[\d_]+)?(?:e[+-]?\d+)?n?\b|\b0x[\da-fA-F_]+n?\b)|([A-Za-z_$][\w$]*)/g,Zn=s=>s.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">"),Ww=/(\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?)|(@[\w-]+|!\s*important\b)|(#[\da-fA-F]{3,8}\b|-?(?:\d*\.)?\d+(?:e[+-]?\d+)?(?:%|[a-zA-Z]+)?)|(-?-?[a-zA-Z_][\w-]*)/g,ja=s=>{let e=s.slice(s.lastIndexOf(".")+1).toLowerCase();return e==="css"?"css":e==="json"?"json":["js","mjs"].includes(e)?"js":"text"},Vw=(s,e)=>/^\s*:[^{};]*(?:[;}]|$)/.test(s.slice(e,e+400));St=(s,e,t="")=>{let o=document.createElement(s);return o.className=e,o.textContent=t,o}});var Wa={};A(Wa,{default:()=>tk});function Ua(s){return s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`}function Zw(){let s=new Date;return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}function Qw(){let s=document.createElement("canvas").getContext("webgl2");if(!s)return null;let e=s.getExtension("WEBGL_debug_renderer_info"),t=e?{vendor:String(s.getParameter(e.UNMASKED_VENDOR_WEBGL)),renderer:String(s.getParameter(e.UNMASKED_RENDERER_WEBGL))}:null;return s.getExtension("WEBGL_lose_context")?.loseContext(),t}function ek(){let s={};for(let n=0;n{"use strict";Lh();D();Oo();Yw="diagnostics",Xw="kro_setngss_",Jw=256*1024;Ga=class{constructor(){this.overlay=null,this.shadow=null,this.entries=[],this.excluded=new Set,this.compressed=0,this.onMessage=e=>this.receive(e.data),this.onKey=e=>{e.key==="Escape"&&this.close()},u.diagnostics={open:()=>this.open()}}open(){if(!u.hostFeatures?.includes(Yw)){u.showNotification("The Diagnostics Report needs a newer Kute",!1,4);return}if(this.overlay)return;this.entries=[],this.excluded.clear(),this.overlay=document.createElement("div"),this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let e=document.createElement("div");this.overlay.append(e),this.shadow=e.attachShadow({mode:"open"}),this.shadow.innerHTML=Rh,this.element("dgClose").onclick=()=>this.close(),this.element("dgSave").onclick=()=>this.save(),this.overlay.addEventListener("mousedown",t=>{t.target===this.overlay&&this.close()}),document.addEventListener("keydown",this.onKey),window.chrome.webview.addEventListener("message",this.onMessage),document.body.append(this.overlay),window.chrome.webview.postMessage(`diagnostics-collect ${JSON.stringify(ek())}`)}close(){window.chrome.webview.removeEventListener("message",this.onMessage),document.removeEventListener("keydown",this.onKey),this.overlay?.remove(),this.overlay=null,this.shadow=null,this.entries=[]}element(e){return this.shadow?.querySelector(`#${e}`)}receive(e){if(this.shadow){if(e?.diagnostics)this.entries=e.diagnostics.entries??[],this.compressed=e.diagnostics.compressed??0,this.element("dgSave").classList.remove("dgBusy"),this.renderList(),this.select(this.entries.find(t=>t.name!=="manifest.json")?.name??"manifest.json");else if(e?.diagnosticsSaved){let{file:t,error:o}=e.diagnosticsSaved;if(this.element("dgSave").classList.remove("dgBusy"),o){u.showNotification(`Could not save the report: ${o}`,!1,5);return}u.showNotification(`Saved ${t} to your Downloads folder`,!1,5),this.close()}}}renderList(){let e=this.element("dgEntries");e.replaceChildren();for(let t of this.entries){let o=document.createElement("div");o.className="dgEntry",o.dataset.name=t.name;let n=document.createElement("input");n.type="checkbox",n.checked=!this.excluded.has(t.name),n.disabled=t.name==="manifest.json",n.onclick=l=>{l.stopPropagation(),n.checked?this.excluded.delete(t.name):this.excluded.add(t.name),o.classList.toggle("dgOff",!n.checked),this.renderTotal()};let r=document.createElement("div"),i=document.createElement("span");i.className="dgName",i.textContent=t.name;let a=document.createElement("span");a.className="dgSize",a.textContent=Ua(t.bytes),r.append(i,a),o.append(n,r),o.onclick=()=>this.select(t.name),e.append(o)}this.renderTotal()}select(e){let t=this.entries.find(n=>n.name===e);if(!t)return;for(let n of this.element("dgEntries").querySelectorAll(".dgEntry"))n.classList.toggle("dgSelected",n.dataset.name===e);this.element("dgNote").textContent=t.note;let o=this.element("dgText");t.kind==="binary"?o.textContent=`${t.name}: ${Ua(t.bytes)} of binary data, goes into the file as it is.`:t.kind==="json"&&!t.truncated&&(t.text??"").length<=Jw?o.innerHTML=Qn(t.text??"","json"):o.textContent=t.truncated?`${t.text} +`).length;E!==p&&(p=E,i.textContent=Array.from({length:E},(y,C)=>C+1).join(` +`)),f();let L=k!==d;L!==h&&(h=L,o(h))},b=k=>{document.execCommand("insertText",!1,k)},v=()=>{g(),n?.(c.value)};return c.addEventListener("input",()=>{c.value.length<15e4?v():m||(m=setTimeout(v,150))}),c.addEventListener("scroll",f),c.addEventListener("keydown",k=>{if((k.ctrlKey||k.metaKey)&&k.key.toLowerCase()==="s"){k.preventDefault(),t();return}if(k.key==="Tab"&&!k.ctrlKey&&!k.altKey){k.preventDefault();let{selectionStart:E,selectionEnd:L,value:y}=c,C=y.lastIndexOf(` +`,E-1)+1;if(k.shiftKey){let I=/^ {1,4}/.exec(y.slice(C))?.[0].length??0;if(!I)return;c.setSelectionRange(C,C+I),document.execCommand("delete"),c.setSelectionRange(Math.max(C,E-I),Math.max(C,L-I));return}b(" ");return}if(k.key==="Enter"&&!k.ctrlKey&&!k.altKey&&!k.shiftKey){k.preventDefault();let{selectionStart:E,value:L}=c,y=L.lastIndexOf(` +`,E-1)+1,C=L.slice(y,E),I=/^\s*/.exec(C)?.[0]??"",_=r!=="text"&&/[{[(]\s*$/.test(C)?" ":"";b(` +${I}${_}`)}}),g(),{getValue:()=>c.value,isDirty:()=>h,markSaved(k=c.value){d=k,g()},focus(){c.focus(),c.setSelectionRange(0,0)}}}function fo(s,{title:e,content:t,language:o,isNew:n=!1,onSave:r,onClose:i,onChange:a}){s.textContent="";let l=Et("div","editorView"),c=Et("div","editorBar"),d=Et("div","editorFile",e),h=Et("span","dirty",n?" (new, not saved yet)":"");d.append(h);let p=Et("div","btn primary","Save"),m=Et("div","btn","Save & close"),f=Et("div","btn","Close");p.onclick=()=>r(!1),m.onclick=()=>r(!0),f.onclick=i,c.append(d,p,m,f);let g=Et("div","");g.style.cssText="display:flex;flex:1 1 auto;min-height:0",l.append(c,g,Et("div","editorKeys","Ctrl+S save \xB7 Ctrl+Z / Ctrl+Y undo, redo \xB7 Tab / Shift+Tab indent \xB7 Esc close")),s.append(l);let b=Bh(g,t,{language:o,onChange:a,onSave:()=>r(!1),onDirtyChange:v=>{h.textContent=v?" \u25CF unsaved":""}});return b.focus(),{editor:b,bar:c,saveButton:p}}var Yw,Xw,Jw,er,Zw,Ga,Qw,Et,Do=w(()=>{"use strict";Yw=new Set("async await break case catch class const continue debugger default delete do else export extends finally for function if import in instanceof let new of return static super switch throw try typeof var void while with yield get set".split(" ")),Xw=new Set(["true","false","null","undefined","this","NaN","Infinity"]),Jw=/(\/\/[^\n]*|\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?|`(?:[^`\\]|\\[\s\S])*`?)|(\b\d[\d_]*(?:\.[\d_]+)?(?:e[+-]?\d+)?n?\b|\b0x[\da-fA-F_]+n?\b)|([A-Za-z_$][\w$]*)/g,er=s=>s.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">"),Zw=/(\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?)|(@[\w-]+|!\s*important\b)|(#[\da-fA-F]{3,8}\b|-?(?:\d*\.)?\d+(?:e[+-]?\d+)?(?:%|[a-zA-Z]+)?)|(-?-?[a-zA-Z_][\w-]*)/g,Ga=s=>{let e=s.slice(s.lastIndexOf(".")+1).toLowerCase();return e==="css"?"css":e==="json"?"json":["js","mjs"].includes(e)?"js":"text"},Qw=(s,e)=>/^\s*:[^{};]*(?:[;}]|$)/.test(s.slice(e,e+400));Et=(s,e,t="")=>{let o=document.createElement(s);return o.className=e,o.textContent=t,o}});var Ya={};A(Ya,{default:()=>ik});function Wa(s){return s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`}function sk(){let s=new Date;return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}function nk(){let s=document.createElement("canvas").getContext("webgl2");if(!s)return null;let e=s.getExtension("WEBGL_debug_renderer_info"),t=e?{vendor:String(s.getParameter(e.UNMASKED_VENDOR_WEBGL)),renderer:String(s.getParameter(e.UNMASKED_RENDERER_WEBGL))}:null;return s.getExtension("WEBGL_lose_context")?.loseContext(),t}function rk(){let s={};for(let n=0;n{"use strict";Nh();F();Do();ek="diagnostics",tk="kro_setngss_",ok=256*1024;Va=class{constructor(){this.overlay=null,this.shadow=null,this.entries=[],this.excluded=new Set,this.compressed=0,this.onMessage=e=>this.receive(e.data),this.onKey=e=>{e.key==="Escape"&&this.close()},u.diagnostics={open:()=>this.open()}}open(){if(!u.hostFeatures?.includes(ek)){u.showNotification("The Diagnostics Report needs a newer Kute",!1,4);return}if(this.overlay)return;this.entries=[],this.excluded.clear(),this.overlay=document.createElement("div"),this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let e=document.createElement("div");this.overlay.append(e),this.shadow=e.attachShadow({mode:"open"}),this.shadow.innerHTML=_h,this.element("dgClose").onclick=()=>this.close(),this.element("dgSave").onclick=()=>this.save(),this.overlay.addEventListener("mousedown",t=>{t.target===this.overlay&&this.close()}),document.addEventListener("keydown",this.onKey),window.chrome.webview.addEventListener("message",this.onMessage),document.body.append(this.overlay),window.chrome.webview.postMessage(`diagnostics-collect ${JSON.stringify(rk())}`)}close(){window.chrome.webview.removeEventListener("message",this.onMessage),document.removeEventListener("keydown",this.onKey),this.overlay?.remove(),this.overlay=null,this.shadow=null,this.entries=[]}element(e){return this.shadow?.querySelector(`#${e}`)}receive(e){if(this.shadow){if(e?.diagnostics)this.entries=e.diagnostics.entries??[],this.compressed=e.diagnostics.compressed??0,this.element("dgSave").classList.remove("dgBusy"),this.renderList(),this.select(this.entries.find(t=>t.name!=="manifest.json")?.name??"manifest.json");else if(e?.diagnosticsSaved){let{file:t,error:o}=e.diagnosticsSaved;if(this.element("dgSave").classList.remove("dgBusy"),o){u.showNotification(`Could not save the report: ${o}`,!1,5);return}u.showNotification(`Saved ${t} to your Downloads folder`,!1,5),this.close()}}}renderList(){let e=this.element("dgEntries");e.replaceChildren();for(let t of this.entries){let o=document.createElement("div");o.className="dgEntry",o.dataset.name=t.name;let n=document.createElement("input");n.type="checkbox",n.checked=!this.excluded.has(t.name),n.disabled=t.name==="manifest.json",n.onclick=l=>{l.stopPropagation(),n.checked?this.excluded.delete(t.name):this.excluded.add(t.name),o.classList.toggle("dgOff",!n.checked),this.renderTotal()};let r=document.createElement("div"),i=document.createElement("span");i.className="dgName",i.textContent=t.name;let a=document.createElement("span");a.className="dgSize",a.textContent=Wa(t.bytes),r.append(i,a),o.append(n,r),o.onclick=()=>this.select(t.name),e.append(o)}this.renderTotal()}select(e){let t=this.entries.find(n=>n.name===e);if(!t)return;for(let n of this.element("dgEntries").querySelectorAll(".dgEntry"))n.classList.toggle("dgSelected",n.dataset.name===e);this.element("dgNote").textContent=t.note;let o=this.element("dgText");t.kind==="binary"?o.textContent=`${t.name}: ${Wa(t.bytes)} of binary data, goes into the file as it is.`:t.kind==="json"&&!t.truncated&&(t.text??"").length<=ok?o.innerHTML=tr(t.text??"","json"):o.textContent=t.truncated?`${t.text} -... (the preview ends here, the file holds all of it)`:t.text??"",o.scrollTop=0}renderTotal(){let e=this.entries.filter(r=>!this.excluded.has(r.name)),t=e.reduce((r,i)=>r+i.bytes,0),o=this.entries.reduce((r,i)=>r+i.bytes,0),n=o>0?this.compressed*t/o:0;this.element("dgTotal").textContent=`${e.length} of ${this.entries.length} files, about ${Ua(Math.round(n))} as a file`}save(){this.element("dgSave").classList.add("dgBusy"),window.chrome.webview.postMessage(`diagnostics-save ${JSON.stringify([...this.excluded])}`)}},tk=new Ga});var Nh={};A(Nh,{OFFICIAL_MAPS:()=>er,mapImageUrl:()=>Bs,mapLabel:()=>Xa,officialMaps:()=>Ja});function Ja(){return Ya??=fetch(ok,{signal:AbortSignal.timeout(4e3)}).then(s=>s.json()).then(s=>{let e=[];for(let t of Array.isArray(s?.data)?s.data:[])Number.isInteger(t?.id)&&t.id>=0&&typeof t?.name=="string"&&e.push([t.id,t.name]);if(e.length===0)throw new Error("empty map list");return e}).catch(()=>(Ya=null,er.map((s,e)=>[e,s]))),Ya}var er,ok,Bs,Xa,Ya,tr=w(()=>{"use strict";er=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Shipment","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Bureau","Tortuga","Tropicano","Krunk_Plaza","Arena","Habitat","Atomic","Old_Burg","Throwback","Stockade","Facility","Clockwork","Laboratory","Shipyard","Soul Sanctum","Bazaar","Erupt","HQ","Khepri","Lush","Vivo","Slide Moonlight","Eterno Simulator","Stalk Factory","Eterno Jump","Frontier","Bastion","Piazza","Barnyard"],ok="https://gapi.svc.krunker.io/maps",Bs=s=>`https://assets.krunker.io/img/maps/map_${s}.png`,Xa=s=>s.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),Ya=null});var _h=we((p3,sk)=>{sk.exports="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"});var Bh=we((h3,nk)=>{nk.exports=`

          Match Found Sound

          Plays in Kute's queue window when it finds a match
          Play
          Open folder
          Refresh
          Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds
          Done
          `});var Dh={};A(Dh,{chosenSound:()=>Qa,default:()=>ak,kuteSound:()=>zs,volume:()=>mo});function Hh(s,e){return new Promise(t=>{let o=0,n=r=>{let i=e(r.data);i!==void 0&&(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(i))};o=setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},ik),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(s)})}async function Qa(){let s=String(u.settings.data.queueSoundFile??ho);if(s!==ho&&zh()){let e=await Oh(s);if(e?.data)return e.data}return zs()}var ho,rk,ik,zh,mo,zs,Oh,Za,ak,el=w(()=>{"use strict";D();ho="",rk=40,ik=5e3,zh=()=>u.hostFeatures?.includes("custom-sounds")??!1,mo=()=>Math.min(1,Math.max(0,Number(u.settings.data.queueSoundVolume??rk)/100||0));zs=()=>Promise.resolve().then(()=>ue(_h(),1)).then(s=>s.default),Oh=s=>Hh(`sound-get ${JSON.stringify({name:s})}`,e=>e?.sound?.name===s?e.sound:void 0);Za=class{constructor(){this.context=null,this.playing=null,this.gain=null,u.queueSound={showOptions:()=>this.showOptions()}}async play(e){this.stop(),this.context??=new AudioContext,this.context.state==="suspended"&&await this.context.resume();let t=Uint8Array.from(atob(e),i=>i.charCodeAt(0)),o=await this.context.decodeAudioData(t.buffer),n=this.context.createGain();n.gain.value=mo(),n.connect(this.context.destination);let r=this.context.createBufferSource();r.buffer=o,r.connect(n),r.onended=()=>{this.playing===r&&(this.playing=null),r.disconnect(),n.disconnect()},r.start(),this.playing=r,this.gain=n}stop(){this.playing?.stop(),this.playing=null}async showOptions(){let e=await Promise.resolve().then(()=>ue(Bh(),1)),t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default;let r=b=>n.querySelector(`#${b}`),i=r("qsSound"),a=r("qsVolume"),l=Math.round(mo()*100),c=r("qsError"),d=String(u.settings.data.queueSoundFile??ho),h=b=>{c.textContent=b,c.hidden=!b},p=async()=>{let b=zh(),v=b?await Hh("sound-list",L=>Array.isArray(L?.sounds)?L.sounds:void 0)??[]:[],k=[new Option("Kute's sound",ho)];if(v.length){let L=document.createElement("optgroup");L.label="Your sounds",L.append(...v.map(x=>new Option(x,x))),k.push(L)}d!==ho&&!v.includes(d)&&k.push(new Option(`${d} (missing)`,d)),i.replaceChildren(...k),i.value=d,r("qsOpenFolder").hidden=!b,r("qsRefresh").hidden=!b;let E="Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds";b?v.length===0&&(E="Add your own: put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds, then press Refresh"):E="Your own sounds need a newer Kute. Update Kute to use them.",r("qsFileHint").textContent=E},m=()=>{r("qsVolumeValue").textContent=`${a.value} %`};a.value=String(l),m(),a.oninput=()=>{u.settings.data.queueSoundVolume=Number(a.value),m(),this.playing&&this.gain&&(this.gain.gain.value=mo())},i.onchange=()=>{d=i.value,h("")},r("qsPlay").onclick=async()=>{h(""),mo()===0&&h("The volume is at 0.");try{if(d===ho){await this.play(await zs());return}let b=await Oh(d);if(!b?.data){h(b?.error??"Kute did not answer.");return}await this.play(b.data)}catch{h("This file cannot be played. Try MP3, OGG or WAV.")}},r("qsOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, sounds"),r("qsRefresh").onclick=()=>p();let f=new AbortController,g=()=>{f.abort(),this.stop(),t.remove(),Number(a.value)!==l&&window.chrome.webview.postMessage(`set-config-json queueSoundVolume ${Number(a.value)}`),d!==String(u.settings.data.queueSoundFile??ho)&&(u.settings.data.queueSoundFile=d,window.chrome.webview.postMessage(`set-config-json queueSoundFile ${JSON.stringify(d)}`))};r("qsDone").onclick=g,t.addEventListener("mousedown",b=>{b.target===t&&g()}),document.addEventListener("keydown",b=>{b.key==="Escape"&&(b.stopPropagation(),g())},{signal:f.signal,capture:!0}),document.body.append(t),await p()}},ak=new Za});var Fh=we((f3,lk)=>{lk.exports=' External Queue
          Ready
          00:00:00

          Select Maps

          '});var qh=we((g3,ck)=>{ck.exports='(()=>{const{info:r}=window;function o(e){const n=document.querySelector(e);if(!n)throw new Error(`queue window: ${e} is missing`);return n}const y=r.maps,R={na:"North America",eu:"Europe",as:"Asia"},T=60,O=o("#queueStatus"),D=o("#statusArea"),q=o("#queueTimerDisplay"),A=o("#regionCheckboxes"),k=o("#matchPopupOverlay"),B=o("#countDownTimer"),$=o("#foundRegion"),_=o("#mapSelectorButton"),p=o("#mapSelectorOverlay"),j=o("#closeMapSelector"),I=o("#mapGrid"),s=o("#queueButton"),G=o("#closeButton");let m=!1,g=!1,N=0,E=0,v=0,w=null,l=null,S=null,u=null;const i=new Set,h=window.opener?.localStorage??window.localStorage;function x(){const e=Array.from(A.querySelectorAll("input:checked"),n=>n.id);h.setItem("queue_selectedRegions",JSON.stringify(e)),h.setItem("queue_newSelectedMaps",JSON.stringify(Array.from(i)))}function J(){try{for(const n of JSON.parse(h.getItem("queue_selectedRegions")??"[]")){const t=document.getElementById(n);t&&(t.checked=!0)}const e=h.getItem("queue_newSelectedMaps");for(const n of e?JSON.parse(e):Object.values(y).map(t=>t.number))i.add(Number(n))}catch{for(const e of Object.values(y))i.add(e.number)}}function C(e){const n=t=>String(Math.floor(t)).padStart(2,"0");return`${n(e/3600)}:${n(e%3600/60)}:${n(e%60)}`}function b(e,n){O.textContent=n,O.classList.toggle("active",e),D.classList.toggle("active",e)}function d(e="Ready"){m=!1,g=!1,clearInterval(E),s.textContent="Start Queue",s.classList.remove("in-queue"),s.disabled=!1,q.textContent="00:00:00",b(!1,e)}async function Q(){l=new AudioContext,l.state==="suspended"&&await l.resume();const e=n=>l.decodeAudioData(Uint8Array.from(atob(n),t=>t.charCodeAt(0)).buffer);try{S=await e(r.sound)}catch{S=await e(r.fallbackSound??r.sound)}}function L(){u&&(u.stop(),u.disconnect(),u=null)}function P(){if(!S||l?.state!=="running")return;L();let e=1;try{e=r.volume?.()??1}catch{}if(!(e>0))return;const n=l.createGain();n.gain.value=e,n.connect(l.destination);const t=l.createBufferSource();t.buffer=S,t.connect(n),t.start(0),u=t,t.onended=()=>{u===t&&(u=null),t.disconnect(),n.disconnect()}}function U(e){const n=Date.now()+e,t=()=>{const a=Math.ceil((n-Date.now())/1e3);if(a<=0){b(!1,"Ready"),s.disabled=!1;return}b(!1,`Cooldown: ${C(a)}`),s.disabled=!0,setTimeout(t,1e3)};t()}function z(e,n){P(),k.classList.add("active");const t=Object.entries(y).find(([,f])=>f.number===Number.parseInt(e,10))?.[0]??"unknown",a=R[n.slice(2)]??n.slice(2);$.textContent=`${a}, ${t}`;const c=Date.now();clearInterval(v),v=setInterval(()=>{const f=Math.max(0,T-Math.floor((Date.now()-c)/1e3));B.textContent=C(f),f<=0&&(clearInterval(v),k.classList.remove("active"))},1e3),d()}function W(){const e=Array.from(A.querySelectorAll("input:checked"),a=>a.value);if(e.length===0||i.size===0){d(e.length===0?"Select at least one region":"Select at least one map");return}const n=`wss://gamefrontend.svc.krunker.io/v1/matchmaking/queue?token=${r.token}&maps=${Array.from(i).join(",")}®ions=${e.join(",")}`;let t;try{t=new WebSocket(n)}catch{d("Connection failed");return}w=t,t.onerror=()=>d("Connection error"),t.onclose=()=>{(m||g)&&d()},t.onopen=()=>{m=!0,g=!1,N=Date.now(),s.textContent="Leave Queue",s.classList.add("in-queue"),s.disabled=!1,b(!0,"In queue"),q.textContent=C(0),E=setInterval(()=>{q.textContent=C((Date.now()-N)/1e3)},1e3)},t.onmessage=a=>{const c=JSON.parse(a.data);if(c.type==="QUEUE_STATUS"&&c.payload?.status==="MATCHED"){const f=c.payload.assignment.extensions;z(String(f.map).trim(),String(f.region))}else c.type==="ERROR"&&c.payload?.code==="COOLDOWN"?(d(),t.close(),U(Number(c.payload.payload.cooldown))):c.type==="INTERNAL_ERROR"&&(d(),t.close())}}function F(e){const n=!i.has(e);n?i.add(e):i.delete(e),I.querySelector(`.map-item[data-map="${e}"]`)?.classList.toggle("selected",n),m&&w?.close(),x()}function H(){I.replaceChildren();for(const[e,n]of Object.entries(y)){const t=document.createElement("div");t.className="map-item",t.dataset.map=String(n.number),t.classList.toggle("selected",i.has(n.number));const a=document.createElement("img");a.src=n.url,a.loading="lazy";const c=document.createElement("span");c.textContent=e,t.append(a,c),t.onclick=()=>F(n.number),I.append(t)}}J();const M=r.region?document.getElementById(r.region):null;M&&(M.checked=!0),H(),_.onclick=()=>p.classList.add("active"),j.onclick=()=>p.classList.remove("active"),p.onclick=e=>{e.target===p&&p.classList.remove("active")},s.onclick=async()=>{if(!g){if(m){w?.close();return}s.disabled=!0,g=!0;try{S||await Q()}catch{}W()}},G.onclick=()=>{clearInterval(v),k.classList.remove("active"),L()};const K=()=>{m&&w?.close(),x()};for(const e of A.querySelectorAll("input"))e.onclick=K})();\n'});var Kh={};function uk(){let s=window.screen.width,e=window.screen.height,t=850,o=350,n=(s-t)/2,r=(e-o)/2,i=window.open("about:blank","_blank",`width=${t},height=${o},left=${n},top=${r}`);if(!i)return;let a=(U(".region-indicator").textContent??"").split(": ")[1];switch(a){case"North America":a="na";break;case"Europe":a="eu";break;case"Asia":a="as";break;default:break}let l=localStorage.getItem("__FRVR_auth_access_token")??"";l=l.replace(/"/g,""),l=l.replace("/","");let c=localStorage.getItem("s_rankedAllRegions")==="true";Promise.all([Promise.resolve().then(()=>ue(Fh(),1)),Promise.resolve().then(()=>ue(qh(),1)),Qa(),zs(),Ja()]).then(([d,h,p,m,f])=>{let g=Object.fromEntries(f.map(([k,E])=>[Xa(E),{url:Bs(k),number:k}]));i.info={allRegions:c,token:l,region:a,sound:p,fallbackSound:m,volume:mo,maps:g};let b=new DOMParser().parseFromString(d.default,"text/html");i.document.head.append(...Array.from(b.head.children,k=>i.document.importNode(k,!0))),i.document.body.append(...Array.from(b.body.children,k=>i.document.importNode(k,!0)));let v=i.document.createElement("script");v.textContent=h.default,i.document.head.append(v)})}var or,dk,tl=w(()=>{"use strict";Ae();tr();el();or=document.createElement("button");or.textContent="open_in_new";or.style=`background-color: #5ce05a; +... (the preview ends here, the file holds all of it)`:t.text??"",o.scrollTop=0}renderTotal(){let e=this.entries.filter(r=>!this.excluded.has(r.name)),t=e.reduce((r,i)=>r+i.bytes,0),o=this.entries.reduce((r,i)=>r+i.bytes,0),n=o>0?this.compressed*t/o:0;this.element("dgTotal").textContent=`${e.length} of ${this.entries.length} files, about ${Wa(Math.round(n))} as a file`}save(){this.element("dgSave").classList.add("dgBusy"),window.chrome.webview.postMessage(`diagnostics-save ${JSON.stringify([...this.excluded])}`)}},ik=new Va});var Hh={};A(Hh,{OFFICIAL_MAPS:()=>or,mapImageUrl:()=>Hs,mapLabel:()=>Za,officialMaps:()=>Qa});function Qa(){return Ja??=fetch(ak,{signal:AbortSignal.timeout(4e3)}).then(s=>s.json()).then(s=>{let e=[];for(let t of Array.isArray(s?.data)?s.data:[])Number.isInteger(t?.id)&&t.id>=0&&typeof t?.name=="string"&&e.push([t.id,t.name]);if(e.length===0)throw new Error("empty map list");return e}).catch(()=>(Ja=null,or.map((s,e)=>[e,s]))),Ja}var or,ak,Hs,Za,Ja,sr=w(()=>{"use strict";or=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Shipment","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Bureau","Tortuga","Tropicano","Krunk_Plaza","Arena","Habitat","Atomic","Old_Burg","Throwback","Stockade","Facility","Clockwork","Laboratory","Shipyard","Soul Sanctum","Bazaar","Erupt","HQ","Khepri","Lush","Vivo","Slide Moonlight","Eterno Simulator","Stalk Factory","Eterno Jump","Frontier","Bastion","Piazza","Barnyard"],ak="https://gapi.svc.krunker.io/maps",Hs=s=>`https://assets.krunker.io/img/maps/map_${s}.png`,Za=s=>s.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),Ja=null});var Oh=we((v3,lk)=>{lk.exports="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"});var Fh=we((w3,ck)=>{ck.exports=`

          Match Found Sound

          Plays in Kute's queue window when it finds a match
          Play
          Open folder
          Refresh
          Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds
          Done
          `});var jh={};A(jh,{chosenSound:()=>tl,default:()=>pk,kuteSound:()=>Os,volume:()=>bo});function qh(s,e){return new Promise(t=>{let o=0,n=r=>{let i=e(r.data);i!==void 0&&(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(i))};o=setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},uk),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(s)})}async function tl(){let s=String(u.settings.data.queueSoundFile??go);if(s!==go&&Dh()){let e=await Kh(s);if(e?.data)return e.data}return Os()}var go,dk,uk,Dh,bo,Os,Kh,el,pk,ol=w(()=>{"use strict";F();go="",dk=40,uk=5e3,Dh=()=>u.hostFeatures?.includes("custom-sounds")??!1,bo=()=>Math.min(1,Math.max(0,Number(u.settings.data.queueSoundVolume??dk)/100||0));Os=()=>Promise.resolve().then(()=>ue(Oh(),1)).then(s=>s.default),Kh=s=>qh(`sound-get ${JSON.stringify({name:s})}`,e=>e?.sound?.name===s?e.sound:void 0);el=class{constructor(){this.context=null,this.playing=null,this.gain=null,u.queueSound={showOptions:()=>this.showOptions()}}async play(e){this.stop(),this.context??=new AudioContext,this.context.state==="suspended"&&await this.context.resume();let t=Uint8Array.from(atob(e),i=>i.charCodeAt(0)),o=await this.context.decodeAudioData(t.buffer),n=this.context.createGain();n.gain.value=bo(),n.connect(this.context.destination);let r=this.context.createBufferSource();r.buffer=o,r.connect(n),r.onended=()=>{this.playing===r&&(this.playing=null),r.disconnect(),n.disconnect()},r.start(),this.playing=r,this.gain=n}stop(){this.playing?.stop(),this.playing=null}async showOptions(){let e=await Promise.resolve().then(()=>ue(Fh(),1)),t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default;let r=b=>n.querySelector(`#${b}`),i=r("qsSound"),a=r("qsVolume"),l=Math.round(bo()*100),c=r("qsError"),d=String(u.settings.data.queueSoundFile??go),h=b=>{c.textContent=b,c.hidden=!b},p=async()=>{let b=Dh(),v=b?await qh("sound-list",L=>Array.isArray(L?.sounds)?L.sounds:void 0)??[]:[],k=[new Option("Kute's sound",go)];if(v.length){let L=document.createElement("optgroup");L.label="Your sounds",L.append(...v.map(y=>new Option(y,y))),k.push(L)}d!==go&&!v.includes(d)&&k.push(new Option(`${d} (missing)`,d)),i.replaceChildren(...k),i.value=d,r("qsOpenFolder").hidden=!b,r("qsRefresh").hidden=!b;let E="Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds";b?v.length===0&&(E="Add your own: put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds, then press Refresh"):E="Your own sounds need a newer Kute. Update Kute to use them.",r("qsFileHint").textContent=E},m=()=>{r("qsVolumeValue").textContent=`${a.value} %`};a.value=String(l),m(),a.oninput=()=>{u.settings.data.queueSoundVolume=Number(a.value),m(),this.playing&&this.gain&&(this.gain.gain.value=bo())},i.onchange=()=>{d=i.value,h("")},r("qsPlay").onclick=async()=>{h(""),bo()===0&&h("The volume is at 0.");try{if(d===go){await this.play(await Os());return}let b=await Kh(d);if(!b?.data){h(b?.error??"Kute did not answer.");return}await this.play(b.data)}catch{h("This file cannot be played. Try MP3, OGG or WAV.")}},r("qsOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, sounds"),r("qsRefresh").onclick=()=>p();let f=new AbortController,g=()=>{f.abort(),this.stop(),t.remove(),Number(a.value)!==l&&window.chrome.webview.postMessage(`set-config-json queueSoundVolume ${Number(a.value)}`),d!==String(u.settings.data.queueSoundFile??go)&&(u.settings.data.queueSoundFile=d,window.chrome.webview.postMessage(`set-config-json queueSoundFile ${JSON.stringify(d)}`))};r("qsDone").onclick=g,t.addEventListener("mousedown",b=>{b.target===t&&g()}),document.addEventListener("keydown",b=>{b.key==="Escape"&&(b.stopPropagation(),g())},{signal:f.signal,capture:!0}),document.body.append(t),await p()}},pk=new el});var Uh=we((y3,hk)=>{hk.exports=' External Queue
          Ready
          00:00:00

          Select Maps

          '});var Gh=we((x3,mk)=>{mk.exports='(()=>{const{info:r}=window;function o(e){const n=document.querySelector(e);if(!n)throw new Error(`queue window: ${e} is missing`);return n}const y=r.maps,R={na:"North America",eu:"Europe",as:"Asia"},T=60,O=o("#queueStatus"),D=o("#statusArea"),q=o("#queueTimerDisplay"),A=o("#regionCheckboxes"),k=o("#matchPopupOverlay"),B=o("#countDownTimer"),$=o("#foundRegion"),_=o("#mapSelectorButton"),p=o("#mapSelectorOverlay"),j=o("#closeMapSelector"),I=o("#mapGrid"),s=o("#queueButton"),G=o("#closeButton");let m=!1,g=!1,N=0,E=0,v=0,w=null,l=null,S=null,u=null;const i=new Set,h=window.opener?.localStorage??window.localStorage;function x(){const e=Array.from(A.querySelectorAll("input:checked"),n=>n.id);h.setItem("queue_selectedRegions",JSON.stringify(e)),h.setItem("queue_newSelectedMaps",JSON.stringify(Array.from(i)))}function J(){try{for(const n of JSON.parse(h.getItem("queue_selectedRegions")??"[]")){const t=document.getElementById(n);t&&(t.checked=!0)}const e=h.getItem("queue_newSelectedMaps");for(const n of e?JSON.parse(e):Object.values(y).map(t=>t.number))i.add(Number(n))}catch{for(const e of Object.values(y))i.add(e.number)}}function C(e){const n=t=>String(Math.floor(t)).padStart(2,"0");return`${n(e/3600)}:${n(e%3600/60)}:${n(e%60)}`}function b(e,n){O.textContent=n,O.classList.toggle("active",e),D.classList.toggle("active",e)}function d(e="Ready"){m=!1,g=!1,clearInterval(E),s.textContent="Start Queue",s.classList.remove("in-queue"),s.disabled=!1,q.textContent="00:00:00",b(!1,e)}async function Q(){l=new AudioContext,l.state==="suspended"&&await l.resume();const e=n=>l.decodeAudioData(Uint8Array.from(atob(n),t=>t.charCodeAt(0)).buffer);try{S=await e(r.sound)}catch{S=await e(r.fallbackSound??r.sound)}}function L(){u&&(u.stop(),u.disconnect(),u=null)}function P(){if(!S||l?.state!=="running")return;L();let e=1;try{e=r.volume?.()??1}catch{}if(!(e>0))return;const n=l.createGain();n.gain.value=e,n.connect(l.destination);const t=l.createBufferSource();t.buffer=S,t.connect(n),t.start(0),u=t,t.onended=()=>{u===t&&(u=null),t.disconnect(),n.disconnect()}}function U(e){const n=Date.now()+e,t=()=>{const a=Math.ceil((n-Date.now())/1e3);if(a<=0){b(!1,"Ready"),s.disabled=!1;return}b(!1,`Cooldown: ${C(a)}`),s.disabled=!0,setTimeout(t,1e3)};t()}function z(e,n){P(),k.classList.add("active");const t=Object.entries(y).find(([,f])=>f.number===Number.parseInt(e,10))?.[0]??"unknown",a=R[n.slice(2)]??n.slice(2);$.textContent=`${a}, ${t}`;const c=Date.now();clearInterval(v),v=setInterval(()=>{const f=Math.max(0,T-Math.floor((Date.now()-c)/1e3));B.textContent=C(f),f<=0&&(clearInterval(v),k.classList.remove("active"))},1e3),d()}function W(){const e=Array.from(A.querySelectorAll("input:checked"),a=>a.value);if(e.length===0||i.size===0){d(e.length===0?"Select at least one region":"Select at least one map");return}const n=`wss://gamefrontend.svc.krunker.io/v1/matchmaking/queue?token=${r.token}&maps=${Array.from(i).join(",")}®ions=${e.join(",")}`;let t;try{t=new WebSocket(n)}catch{d("Connection failed");return}w=t,t.onerror=()=>d("Connection error"),t.onclose=()=>{(m||g)&&d()},t.onopen=()=>{m=!0,g=!1,N=Date.now(),s.textContent="Leave Queue",s.classList.add("in-queue"),s.disabled=!1,b(!0,"In queue"),q.textContent=C(0),E=setInterval(()=>{q.textContent=C((Date.now()-N)/1e3)},1e3)},t.onmessage=a=>{const c=JSON.parse(a.data);if(c.type==="QUEUE_STATUS"&&c.payload?.status==="MATCHED"){const f=c.payload.assignment.extensions;z(String(f.map).trim(),String(f.region))}else c.type==="ERROR"&&c.payload?.code==="COOLDOWN"?(d(),t.close(),U(Number(c.payload.payload.cooldown))):c.type==="INTERNAL_ERROR"&&(d(),t.close())}}function F(e){const n=!i.has(e);n?i.add(e):i.delete(e),I.querySelector(`.map-item[data-map="${e}"]`)?.classList.toggle("selected",n),m&&w?.close(),x()}function H(){I.replaceChildren();for(const[e,n]of Object.entries(y)){const t=document.createElement("div");t.className="map-item",t.dataset.map=String(n.number),t.classList.toggle("selected",i.has(n.number));const a=document.createElement("img");a.src=n.url,a.loading="lazy";const c=document.createElement("span");c.textContent=e,t.append(a,c),t.onclick=()=>F(n.number),I.append(t)}}J();const M=r.region?document.getElementById(r.region):null;M&&(M.checked=!0),H(),_.onclick=()=>p.classList.add("active"),j.onclick=()=>p.classList.remove("active"),p.onclick=e=>{e.target===p&&p.classList.remove("active")},s.onclick=async()=>{if(!g){if(m){w?.close();return}s.disabled=!0,g=!0;try{S||await Q()}catch{}W()}},G.onclick=()=>{clearInterval(v),k.classList.remove("active"),L()};const K=()=>{m&&w?.close(),x()};for(const e of A.querySelectorAll("input"))e.onclick=K})();\n'});var Wh={};function gk(){let s=window.screen.width,e=window.screen.height,t=850,o=350,n=(s-t)/2,r=(e-o)/2,i=window.open("about:blank","_blank",`width=${t},height=${o},left=${n},top=${r}`);if(!i)return;let a=(U(".region-indicator").textContent??"").split(": ")[1];switch(a){case"North America":a="na";break;case"Europe":a="eu";break;case"Asia":a="as";break;default:break}let l=localStorage.getItem("__FRVR_auth_access_token")??"";l=l.replace(/"/g,""),l=l.replace("/","");let c=localStorage.getItem("s_rankedAllRegions")==="true";Promise.all([Promise.resolve().then(()=>ue(Uh(),1)),Promise.resolve().then(()=>ue(Gh(),1)),tl(),Os(),Qa()]).then(([d,h,p,m,f])=>{let g=Object.fromEntries(f.map(([k,E])=>[Za(E),{url:Hs(k),number:k}]));i.info={allRegions:c,token:l,region:a,sound:p,fallbackSound:m,volume:bo,maps:g};let b=new DOMParser().parseFromString(d.default,"text/html");i.document.head.append(...Array.from(b.head.children,k=>i.document.importNode(k,!0))),i.document.body.append(...Array.from(b.body.children,k=>i.document.importNode(k,!0)));let v=i.document.createElement("script");v.textContent=h.default,i.document.head.append(v)})}var nr,fk,sl=w(()=>{"use strict";Ae();sr();ol();nr=document.createElement("button");nr.textContent="open_in_new";nr.style=`background-color: #5ce05a; color: #ffffff; border-radius: 9px; padding: 20px 21px; @@ -180,20 +180,20 @@ ${I}${_}`)}}),g(),{getValue:()=>c.value,isDirty:()=>h,markSaved(k=c.value){d=k,g cursor: pointer; font-size: 20px; text-shadow: 2px 2px 0px black !important; - margin-left: 2px;`;dk=window.openRankedMenu;window.openRankedMenu=()=>{dk();let s=U(".footer-controls"),e=s.lastElementChild;s.insertBefore(or,e)};or.onclick=uk});var jh={};var pk,hk,mk,ol=w(()=>{"use strict";D();gn();window.chrome.webview.postMessage("drag, true");window.chrome.webview.postMessage("throttle, menu");pk=window.exportSettings;window.exportSettings=s=>(s||u.showNotification("Settings exported to Downloads!",!1,3),pk(s));hk=window.showWindow;window.showWindow=(...s)=>{switch(s[0]){case 3:case 53:window.chrome.webview.postMessage("throttle, game");break;case 15:case 26:case 52:case 9:case 44:case 43:case 40:case 38:case 50:case 17:case 39:case 51:case 16:case 34:window.chrome.webview.postMessage("throttle, menu");break;default:break}return hk(...s)};mk=window.closWind;window.closWind=(...s)=>(window.chrome.webview.postMessage("drag, true"),window.chrome.webview.postMessage("throttle, menu"),mk(...s));u.bindShoot=()=>{if(Dr()){window.changeCont("shoot",1,void 0);let s={key:"F20",code:"F20",keyCode:131,which:131,bubbles:!0,cancelable:!0};window.dispatchEvent(new KeyboardEvent("keydown",s)),window.dispatchEvent(new KeyboardEvent("keyup",s))}Zo()}});var nl={};A(nl,{default:()=>fk});var sl,fk,rl=w(()=>{"use strict";D();Ae();sl=class{constructor(){this.numberDisplay=document.createElement("div"),this.numberDisplay.id="hpEnemyCounter",this.numberDisplay.classList.add("statIcon"),this.numberDisplay.style.cssText="transform: translate(0, -2.7px);",this.numberDisplay.innerHTML=` + margin-left: 2px;`;fk=window.openRankedMenu;window.openRankedMenu=()=>{fk();let s=U(".footer-controls"),e=s.lastElementChild;s.insertBefore(nr,e)};nr.onclick=gk});var Vh={};var bk,vk,wk,nl=w(()=>{"use strict";F();vn();window.chrome.webview.postMessage("drag, true");window.chrome.webview.postMessage("throttle, menu");bk=window.exportSettings;window.exportSettings=s=>(s||u.showNotification("Settings exported to Downloads!",!1,3),bk(s));vk=window.showWindow;window.showWindow=(...s)=>{switch(s[0]){case 3:case 53:window.chrome.webview.postMessage("throttle, game");break;case 15:case 26:case 52:case 9:case 44:case 43:case 40:case 38:case 50:case 17:case 39:case 51:case 16:case 34:window.chrome.webview.postMessage("throttle, menu");break;default:break}return vk(...s)};wk=window.closWind;window.closWind=(...s)=>(window.chrome.webview.postMessage("drag, true"),window.chrome.webview.postMessage("throttle, menu"),wk(...s));u.bindShoot=()=>{if(qr()){window.changeCont("shoot",1,void 0);let s={key:"F20",code:"F20",keyCode:131,which:131,bubbles:!0,cancelable:!0};window.dispatchEvent(new KeyboardEvent("keydown",s)),window.dispatchEvent(new KeyboardEvent("keyup",s))}es()}});var il={};A(il,{default:()=>kk});var rl,kk,al=w(()=>{"use strict";F();Ae();rl=class{constructor(){this.numberDisplay=document.createElement("div"),this.numberDisplay.id="hpEnemyCounter",this.numberDisplay.classList.add("statIcon"),this.numberDisplay.style.cssText="transform: translate(0, -2.7px);",this.numberDisplay.innerHTML=`
          on 0 -
          `,this.enemyOBJ=0,this.enemyTimeout=null,this.observer=null,this.pointCounter=null,this.gameUpdateListener=e=>{e.data==="game-updated"&&setTimeout(()=>{He()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.setupDisplay())},2e3)},u.settings.toggleHpEnemyCounter=e=>this.toggle(e),this.toggle(!0)}toggle(e){e?(window.chrome.webview.addEventListener("message",this.gameUpdateListener),He()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.setupDisplay())):(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.observer?.disconnect(),this.numberDisplay.remove())}processTeamScores=()=>{let{pointCounter:e}=this;if(e){for(let t of document.querySelectorAll("#tScoreC1, #tScoreC2"))if(t&&!t.className.includes("you")){let o=t.nextElementSibling;if(!o)continue;let n=Number.parseInt(o.textContent??"",10);if(Number.isNaN(n))continue;n>this.enemyOBJ&&(e.textContent=String((n-this.enemyOBJ)/10),this.enemyTimeout&&clearTimeout(this.enemyTimeout),this.enemyTimeout=setTimeout(()=>{e.textContent="0",this.enemyTimeout=null},1600)),this.enemyOBJ=n}}};setupDisplay(){let e=U(".pointVal",this.numberDisplay);this.pointCounter=e,U(".topRightCounters").append(this.numberDisplay),this.observer?.disconnect(),this.observer=new MutationObserver(this.processTeamScores),this.observer.observe(U("#teamScores"),{childList:!0,subtree:!0})}},fk=new sl});var al={};A(al,{default:()=>gk});var il,gk,ll=w(()=>{"use strict";D();il=class{constructor(){this.originalPlay=()=>{},this.observer=new MutationObserver(e=>this.parseChat(e)),u.settings.toggleHsSound=e=>this.toggle(e),this.setupSoundHook()}setupSoundHook(){window.SOUND?.play?(this.originalPlay=window.SOUND.play,this.toggle(!0)):setTimeout(()=>this.setupSoundHook(),100)}toggle(e){if(e){let t=document.querySelector("#chatList");t&&this.observer.observe(t,{childList:!0});let o=this;window.SOUND.play=function(n,r,i){if(!(n==="headshot_0"&&r===void 0))return o.originalPlay.call(window.SOUND,n,r,i)}}else window.SOUND.play=this.originalPlay,this.observer.disconnect()}parseChat(e){for(let t of e)if(t.type==="childList")for(let o of t.addedNodes){if(!(o instanceof HTMLElement)||o.tagName!=="DIV")continue;let n=o.querySelector("span.chatMsg");if(!n)continue;let r=n.querySelectorAll("span[style*='color:#'], span[style*='color: rgb']");if(r.length<=0)continue;let i=r[0],a=i.style.color.trim().toLowerCase(),l=i.textContent.trim();a==="rgb(255, 255, 255)"&&l==="You"&&n.querySelector("img")&&window.SOUND.play("headshot_0",1,!1)}}},gk=new il});var Gh,Uh=w(()=>{Gh=`html.kuteHudEdit #app,html.kuteHudEdit #fullMenHider{opacity:.1!important;pointer-events:none!important}html.kuteHudEdit #kuteHudEditor{position:fixed;inset:0;z-index:2147483000;background:#00000073;font-family:Consolas,monospace;color:#fff}.hudBox{position:absolute;box-sizing:border-box;border:1px solid rgba(53,224,232,.65);border-radius:4px;background:#35e0e81a;cursor:grab;touch-action:none}.hudBox:hover,.hudBox.hudActive{border-color:#35e0e8;background:#35e0e840}.hudBox.hudDragging{cursor:grabbing}.hudBox.hudEmpty{border-style:dashed}.hudBox.hudOff{border-color:#ffffff4d;background:#ffffff0f}.hudLabel{position:absolute;bottom:100%;left:-1px;padding:0 .35em;border-radius:3px 3px 0 0;background:#35e0e8d9;color:#05201f;font-size:11px;line-height:1.5;white-space:nowrap;pointer-events:none}.hudBox.hudLabelBelow .hudLabel{top:100%;bottom:auto;border-radius:0 0 3px 3px}.hudBox.hudOff .hudLabel{background:#fff6;color:#111}.hudGuide{position:absolute;background:#ffc147;pointer-events:none}.hudGuide.hudGuideV{top:0;width:1px;height:100%}.hudGuide.hudGuideH{left:0;width:100%;height:1px} -`});var Vh,Wh=w(()=>{Vh='
          HUD Layout
          Boxes are where things sit in the match.
          Drag to move, wheel to resize, arrows nudge
          Reset all
          Done
          '});var Yh={};A(Yh,{HUD_ELEMENTS:()=>Kt,gameSettingOn:()=>cl});function cl(s){try{return window.localStorage.getItem(`kro_setngss_${s}`)!=="false"}catch{return!0}}var Kt,sr=w(()=>{"use strict";Kt=[{key:"timer",name:"Timer",group:"Match",selector:"#timerHolder",size:[188,77]},{key:"matchInfo",name:"Mode and map",group:"Match",selector:"#matchInfo",size:[110,50]},{key:"teamScores",name:"Team scores",group:"Match",selector:"#teamScores",display:"block",size:[220,40],note:"team modes"},{key:"rounds",name:"Rounds",group:"Match",selector:"#roundsDisplay",display:"inline-block",size:[200,60],note:"round based"},{key:"zoneCount",name:"Zone count",group:"Match",selector:"#scoreZoneCount",display:"inline-block",size:[57,43],note:"hardpoint"},{key:"lives",name:"Lives",group:"Match",selector:"#livesCount",display:"inline-block",size:[57,43],note:"LMS, infected"},{key:"gameMessage",name:"Match message",group:"Match",selector:"#gameMessage",size:[400,30]},{key:"roundMessage",name:"Round message",group:"Match",selector:"#roundMessage",size:[400,30]},{key:"challenge",name:"Challenge banner",group:"Match",selector:"#chalDisplay",size:[300,30]},{key:"fps",name:"FPS",group:"Stats",selector:"#fpsDisplay",setting:"showFPS",display:"block",size:[72,23]},{key:"ping",name:"Ping",group:"Stats",selector:"#pingDisplay",setting:"showPing",display:"block",size:[72,23]},{key:"kills",name:"Kills",group:"Stats",selector:"#killCount",setting:"showKillC",display:"inline-block",size:[57,43]},{key:"deaths",name:"Deaths",group:"Stats",selector:"#deathCount",setting:"showDeaths",display:"inline-block",size:[57,43]},{key:"streak",name:"Streak",group:"Stats",selector:"#streakCount",setting:"showStreak",display:"inline-block",size:[57,43]},{key:"kd",name:"K/D",group:"Stats",selector:"#kdCount",setting:"showKD",display:"inline-block",size:[77,43]},{key:"score",name:"Score",group:"Stats",selector:"#scoreCount",setting:"showScore",display:"inline-block",size:[57,43]},{key:"speedRun",name:"Parkour timer",group:"Stats",selector:"#speedRunHolder",display:"block",size:[200,60],note:"parkour"},{key:"leaderboard",name:"Leaderboard",group:"Feed",selector:"#leaderboardHolder",size:[327,54]},{key:"centerLeader",name:"Center leaderboard",group:"Feed",selector:"#centerLeaderDisplay",display:"block",size:[300,120],note:"comp"},{key:"killFeed",name:"Kill feed",group:"Feed",selector:"#killFeed",setting:"showKills",display:"inline-grid",size:[240,120]},{key:"chat",name:"Chat",group:"Feed",selector:"#chatHolder",rule:"#uiBase.onGame #chatHolder",size:[386,248]},{key:"weapons",name:"Weapons",group:"Combat",selector:"#weapHolder",size:[127,203]},{key:"ammo",name:"Ammo",group:"Combat",selector:"#ammoHolder",size:[148,63]},{key:"perks",name:"Perks",group:"Combat",selector:"#perkHolder",size:[65,40]},{key:"krTag",name:"Deposit coins",group:"Combat",selector:"#krTagHolder",size:[71,65],note:"deposit"},{key:"giftTag",name:"Gift drops",group:"Combat",selector:"#giftTagHolder",size:[65,65]},{key:"powerUps",name:"Powerups",group:"Combat",selector:"#powerUpHolder",size:[65,65]},{key:"killStreak",name:"Kill streak",group:"Combat",selector:"#killStreakHolder",size:[65,65]},{key:"player",name:"Health and class",group:"Player",selector:"#bottomLeftPlayer",size:[376,90]},{key:"zPerks",name:"Class perks",group:"Player",selector:"#zPerksHolder",size:[65,40]},{key:"nuke",name:"Nuke counter",group:"Kute",selector:"#kuteNukeCounter",clientSetting:"nukeCounter",display:"flex",size:[90,56]},{key:"keystrokes",name:"Keystrokes",group:"Kute",selector:"#kuteKeystrokes",clientSetting:"keystrokes",display:"flex",size:[190,82]},{key:"spotify",name:"Spotify",group:"Kute",selector:"#kuteSpotifyOverlay",clientSetting:"spotifyOverlay",display:"flex",size:[320,82]},{key:"menuTimer",name:"Menu timer",group:"Kute",selector:"#uiBase.onMenu .spectateInfo",clientSetting:"menuTimer",size:[150,60],note:"menu",menu:(s,e)=>[s/2,e*.4-105]}]});var dl={};A(dl,{HudEditor:()=>nr,default:()=>Sk,implicitShift:()=>Hs});function Hs(s,e){if(s!=="spotify"||!u.settings.data.keystrokes)return 0;let t=e.spotify??{},o=e.keystrokes??{};if(t.x||t.y||o.x||o.y)return 0;let n=kk*(1+(o.s??1))/2,r=yk*(1-(t.s??1))/2;return Math.round(n+xk-r)}var wk,Xh,kk,yk,xk,nr,Sk,rr=w(()=>{"use strict";D();sr();Rt();zn();wk="kute_hudLayoutCSS",Xh="kute_hud_geometry",kk=190,yk=320,xk=12;nr=class{constructor(){this.style=null,this.open=!1,this.menuRects={},u.hudEditor={edit:()=>this.edit(),apply:()=>this.apply()},this.migrateNukeCounter(),this.apply(),Object.keys(this.measureMenuWidgets()).length===0&&setTimeout(()=>this.measureMenuWidgets(),3e3)}get layout(){return{...u.settings.data.hudLayout}}save(e){u.settings.data.hudLayout=e,window.chrome.webview.postMessage(`set-config-json hudLayout ${JSON.stringify(e)}`),this.apply()}migrateNukeCounter(){let e=u.settings.data.nukeCounterConfig;if(!e||e.x===void 0&&e.y===void 0&&e.scale===void 0)return;let{layout:t}=this;t.nuke??={x:Math.round(((e.x??94)-94)*100)/100,y:Math.round(((e.y??50)-50)*100)/100,s:e.scale??1};let o={goal:e.goal??0,background:e.background??!0};u.settings.data.nukeCounterConfig=o,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(o)}`),this.save(t)}apply(){let{layout:e}=this,t="";for(let o of Kt){let n=e[o.key]??{},r=(n.x??0)!==0||(n.y??0)!==0,i=(n.s??1)!==1,a=Hs(o.key,e);if(!r&&!i&&!a)continue;let l=[];r?l.push(`translate:${n.x??0}vw ${n.y??0}vh`):a&&l.push(`translate:${a}px 0`),i&&l.push(`scale:${n.s}`),t+=`${o.rule??o.selector}{${l.join(";")}}`}this.style||(this.style=document.createElement("style"),this.style.id=wk,document.head.append(this.style)),this.style.textContent=t}inMatch(){let e=document.querySelector("#inGameUI");return!!e&&window.getComputedStyle(e).display!=="none"}snapshot(){if(!this.inMatch())return null;let e=[];for(let i of Kt){if(i.menu)continue;let a=document.querySelector(i.selector);a&&e.push({def:i,element:a,visible:window.getComputedStyle(a).display!=="none"})}let t={vw:window.innerWidth,vh:window.innerHeight,factor:1,game:_t().id??"",rects:{}},o=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let{def:i,element:a,visible:l}of e){if(!l)continue;let c=a.getBoundingClientRect();c.width<=0||(t.rects[i.key]=[c.x,c.y,c.width,c.height,1],c.width>60&&a.offsetWidth>0&&(t.factor=c.width/a.offsetWidth))}let n=e.filter(({def:i})=>!t.rects[i.key]&&i.display);if(n.length>0){let i=document.createElement("style");i.textContent=n.map(({def:a})=>`${a.selector}{display:${a.display}!important}`).join(""),document.head.append(i);for(let{def:a,element:l}of n){let c=l.getBoundingClientRect();c.width>0&&(t.rects[a.key]=[c.x,c.y,c.width,c.height,0])}i.remove()}for(let{def:i,element:a}of e){if(t.rects[i.key])continue;let l=a.getBoundingClientRect();t.rects[i.key]=[l.x,l.y,l.width,l.height,0]}let r=this.menuRects[`${t.vw}x${t.vh}`]??{};for(let i of Kt){if(!i.menu)continue;if(r[i.key]){t.rects[i.key]=r[i.key];continue}let[a,l]=i.menu(t.vw,t.vh),[c,d]=i.size??[0,0];t.rects[i.key]=[a-c/2,l-d/2,c,d,1]}this.style&&(this.style.textContent=o);try{window.localStorage.setItem(Xh,JSON.stringify(t))}catch{}return t}geometry(){if(this.inMatch())return this.snapshot();let e=null;try{e=JSON.parse(window.localStorage.getItem(Xh)??"null")}catch{e=null}return!e?.rects||e.vw!==window.innerWidth||e.vh!==window.innerHeight?null:this.withMenuWidgets(e)}measureMenuWidgets(){let e={},t=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let o of Kt){if(!o.menu)continue;let n=document.querySelector(o.selector)?.getBoundingClientRect();n&&n.width>0&&(e[o.key]=[n.x,n.y,n.width,n.height,1])}return this.style&&(this.style.textContent=t),Object.keys(e).length>0&&(this.menuRects[`${window.innerWidth}x${window.innerHeight}`]=e),e}withMenuWidgets(e){return{...e,rects:{...e.rects,...this.measureMenuWidgets()}}}async edit(){if(this.open)return;if(this.inMatch()){this.show(this.snapshot());return}let e=this.geometry();if(e?.game&&e.game===_t().id){this.show(e);return}if(!await Ce({title:"Set up your HUD",paragraphs:["The editor places everything exactly where it sits in a match, so it needs a match to measure.","Kute opens a private one for you, nobody else can join it. If you are in a game right now, you leave it."],stay:"Not now",leave:"Open a private match"})||this.open)return;if(document.querySelector("#signedInHeaderBar")===null){u.showNotification?.("Log in first, a private match needs an account",!1,5);return}this.open=!0,u.showNotification?.("Opening a private match",!1,4);let o=await $s();if(!(o!==null&&await Cs(o))){this.open=!1,u.showNotification?.("Could not open a private match. Is a host slot free?",!1,6);return}await new Promise(r=>{setTimeout(r,1500)}),this.open=!1,this.show(this.snapshot()??this.geometry())}show(e){if(!e){u.showNotification?.("Could not measure the HUD, try again",!1,6);return}this.open=!0,Promise.resolve().then(()=>(pl(),ul)).then(t=>t.openEditor(this,e)).catch(t=>{this.open=!1,console.error("[kute] hud editor:",t)})}closed(){this.open=!1}},Sk=new nr});var ul={};A(ul,{openEditor:()=>Ek});async function Ek(s,e){document.pointerLockElement&&document.exitPointerLock(),await new Promise(y=>setTimeout(y,0));let{layout:t}=s,o=document.createElement("style");o.id="kute_hudEditorCSS",o.textContent=Gh,document.head.append(o),document.documentElement.classList.add("kuteHudEdit");let n=document.createElement("div");n.id="kuteHudEditor",document.body.append(n);let r=(y,C)=>{let[R,K,z,N,V]=C,de=!V||z<=0||N<=0,Z=z>window.innerWidth*.5,ge=N>window.innerHeight*.5,le=de?ir:z,Be=de?ir:N,Yt=R,xo=K;return!de&&Z&&(le=y.size?.[0]??ir,Yt=R+z/2-le/2),!de&&ge&&(Be=y.size?.[1]??ir,xo=K+N/2-Be/2),de&&R>window.innerWidth/2&&(Yt=R-le),de&&K>window.innerHeight/2&&(xo=K-Be),le=Math.min(le,window.innerWidth),Be=Math.min(Be,window.innerHeight),{x:ar(Yt,0,window.innerWidth-le),y:ar(xo,0,window.innerHeight-Be),w:le,h:Be,empty:de}},i=y=>{let C=y.filter(R=>!R.empty);for(let R of y)if(R.empty){for(let K=0;K<12;K++){let z=C.find(V=>R.xV.x&&R.yV.y);if(!z)break;R.y+R.h+2+R.h<=window.innerHeight?R.y=Math.min(z.y+z.h+2,window.innerHeight-R.h):R.x=ar(z.x+z.w+2,0,window.innerWidth-R.w)}C.push(R)}},a=[];for(let y of Kt){let C=e.rects[y.key];if(!C||y.clientSetting&&$o(u.settings.data,y.clientSetting))continue;let R=document.createElement("div");R.className="hudBox";let K=document.createElement("div");K.className="hudLabel",K.textContent=y.name,R.append(K),n.append(R),a.push({def:y,box:R,...r(y,C),drawn:null})}i(a);let l=!1;for(let y of a){y.w>60&&(l=!1);let C=l&&y.y+y.h+2060?!1:!l}let c=[];for(let y of["hudGuideV","hudGuideH"]){let C=document.createElement("div");C.className=`hudGuide ${y}`,C.style.display="none",n.append(C),c.push(C)}let d=y=>y.setting?cl(y.setting):y.clientSetting?u.settings.data[y.clientSetting]!==!1:!0,h=y=>t[y]??={},p=y=>{let C={...h(y)},R=Hs(y,t);return R&&(C.x=lr(R/window.innerWidth*100)),C},m=(y,C)=>[y/100*window.innerWidth*e.factor,C/100*window.innerHeight*e.factor],f=y=>{let C=t[y.def.key]??{},[R,K]=m(C.x??0,C.y??0),z=R+Hs(y.def.key,t)*e.factor,N=C.s??1,V=y.w*N,de=y.h*N,Z=y.x+y.w/2+z-V/2,ge=y.y+y.h/2+K-de/2;y.box.style.left=`${Math.round(Z)}px`,y.box.style.top=`${Math.round(ge)}px`,y.box.style.width=`${Math.round(V)}px`,y.box.style.height=`${Math.round(de)}px`,y.box.classList.toggle("hudOff",!d(y.def)),y.box.classList.toggle("hudEmpty",y.empty),y.drawn=new DOMRect(Z,ge,V,de)},g=()=>{for(let y of a)f(y)},b=()=>{u.settings.data.hudLayout=t,s.apply()},v=new Map,k=new Map,E=()=>{for(let y of a){let C=v.get(y.def.key);if(!C)continue;let R=t[y.def.key],K=R?.s??1,z=!!R&&((R.x??0)!==0||(R.y??0)!==0||K!==1);C.classList.toggle("hpChanged",z);let N=C.querySelector(".hpMoved");N&&(N.textContent=K===1?"":`${Math.round(K*100)}%`);let V=k.get(y.def.key);V&&(V.checked=d(y.def))}},L=null,x=(y,C)=>y.box.classList.toggle("hudActive",C||L===y),$=y=>{L=y;for(let C of a)C.box.classList.toggle("hudActive",C===y)},I=(y,C,R,K)=>{let z=h(y.def.key),N=e.factor||1;z.x=lr((K.x??0)+C/(window.innerWidth*N)*100),z.y=lr((K.y??0)+R/(window.innerHeight*N)*100),b()},_=(y,C,R,K)=>{let z=[0,window.innerWidth/2,window.innerWidth],N=[0,window.innerHeight/2,window.innerHeight];for(let Z of a)Z===y||!Z.drawn||(z.push(Z.drawn.left,Z.drawn.left+Z.drawn.width/2,Z.drawn.right),N.push(Z.drawn.top,Z.drawn.top+Z.drawn.height/2,Z.drawn.bottom));let V=null,de=null;for(let Z of[C.left+R,C.left+R+C.width/2,C.right+R])for(let ge of z){let le=ge-Z;Math.abs(le)<=Jh&&(V===null||Math.abs(le){z.preventDefault(),$(y),C.setPointerCapture(z.pointerId),C.classList.add("hudDragging"),R={x:z.clientX,y:z.clientY,rect:y.drawn??C.getBoundingClientRect(),from:p(y.def.key)}},C.onpointermove=z=>{if(!R||!C.hasPointerCapture(z.pointerId))return;let[N,V]=_(y,R.rect,z.clientX-R.x,z.clientY-R.y);I(y,N,V,R.from),g()};let K=()=>{R&&(R=null,C.classList.remove("hudDragging"),c[0].style.display="none",c[1].style.display="none",E())};C.onpointerup=K,C.onpointercancel=K,C.onwheel=z=>{z.preventDefault(),$(y);let N=h(y.def.key);N.s=lr(ar((N.s??1)+(z.deltaY<0?.05:-.05),.3,3)),b(),g(),E()}}let H=document.createElement("div");H.style.cssText="position:fixed;top:50%;left:50%;transform:translate(-50%, -50%)",n.append(H);let G=H.attachShadow({mode:"open"});G.innerHTML=Vh;let J=y=>G.querySelector(`#${y}`),B=(y,C)=>{if(y.setting)window.setSetting(y.setting,C);else if(y.clientSetting){let R=y.clientSetting;u.settings.data[R]=C,window.chrome.webview.postMessage(`set-config, ${R}, ${C}`);let K=`toggle${R.charAt(0).toUpperCase()}${R.slice(1)}`;typeof u.settings[K]=="function"&&u.settings[K](C);let z=document.querySelector(`#${R}`);z&&(z.checked=C)}g(),E()},re=J("hpList"),je="";for(let y of a){let{def:C}=y;if(C.group!==je){({group:je}=C);let V=document.createElement("div");V.className="hpGroup",V.textContent=je.toUpperCase(),re.append(V)}let R=document.createElement("label");R.className="hpRow";let K=document.createElement("span");if(K.className="hpName",K.textContent=C.name,C.note){let V=document.createElement("span");V.className="hpNote",V.textContent=` ${C.note}`,K.append(V)}let z=document.createElement("span");z.className="hpMoved";let N=document.createElement("span");if(N.className="hpReset",N.textContent="reset",N.title="Put it back where Krunker had it",N.onclick=V=>{V.preventDefault(),delete t[C.key],b(),g(),E()},R.append(K,z,N),C.setting||C.clientSetting){let V=document.createElement("input");V.type="checkbox",V.checked=d(C),V.onchange=()=>B(C,V.checked),R.append(V),k.set(C.key,V)}R.onpointerenter=()=>x(y,!0),R.onpointerleave=()=>x(y,!1),re.append(R),v.set(C.key,R)}let be=J("hpPanel"),Ee=J("hpHead"),j=null;Ee.onpointerdown=y=>{let C=H.getBoundingClientRect();H.style.cssText=`position:fixed;left:${Math.round(C.left)}px;top:${Math.round(C.top)}px`,Ee.setPointerCapture(y.pointerId),j={x:y.clientX-C.left,y:y.clientY-C.top},be.classList.add("hpBusy")},Ee.onpointermove=y=>{j&&(H.style.left=`${Math.round(y.clientX-j.x)}px`,H.style.top=`${Math.round(y.clientY-j.y)}px`)},Ee.onpointerup=()=>{j=null,be.classList.remove("hpBusy")};let X=new AbortController,Y=()=>{X.abort(),n.remove(),o.remove(),document.documentElement.classList.remove("kuteHudEdit"),s.save(t),s.closed()};J("hpDone").onclick=Y,window.addEventListener("resize",()=>{Y(),u.showNotification?.("The window changed size, open the HUD editor again",!1,5)},{signal:X.signal}),J("hpReset").onclick=()=>{for(let y of Object.keys(t))delete t[y];b(),g(),E()},document.addEventListener("keydown",y=>{if(y.key==="Escape"){y.preventDefault(),y.stopPropagation(),Y();return}if(!L||!y.key.startsWith("Arrow"))return;y.preventDefault(),y.stopPropagation();let C=y.shiftKey?10:1,R=(y.key==="ArrowRight"?C:0)-(y.key==="ArrowLeft"?C:0),K=(y.key==="ArrowDown"?C:0)-(y.key==="ArrowUp"?C:0);I(L,R,K,p(L.def.key)),g(),E()},{signal:X.signal,capture:!0}),g(),E()}var Jh,ir,ar,lr,pl=w(()=>{"use strict";Uh();Wh();D();sr();rr();Co();Jh=6,ir=24,ar=(s,e,t)=>Math.min(t,Math.max(e,s)),lr=s=>Math.round(s*100)/100});var tm={};function Mk(){document.querySelector("#settSearch")&&(window.closWind?.(Qh),window.showWindow?.(Qh))}var cr,Zh,em,$k,Ck,Qh,hl=w(()=>{"use strict";D();Ae();cr=document.createElement("div");cr.className="settName";cr.style.cssText="display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px 12px;margin-top:10px";Zh={Keybinds:localStorage.getItem("kute_Keybinds")==="true"||localStorage.getItem("kute_Keybinds")===null,Sensitivity:localStorage.getItem("kute_Sensitivity")==="true"||localStorage.getItem("kute_Sensitivity")===null,Sound:localStorage.getItem("kute_Sound")==="true"||localStorage.getItem("kute_Sound")===null},em="";for(let s in Zh)em+=`Import ${s} + `,this.enemyOBJ=0,this.enemyTimeout=null,this.observer=null,this.pointCounter=null,this.gameUpdateListener=e=>{e.data==="game-updated"&&setTimeout(()=>{Oe()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.setupDisplay())},2e3)},u.settings.toggleHpEnemyCounter=e=>this.toggle(e),this.toggle(!0)}toggle(e){e?(window.chrome.webview.addEventListener("message",this.gameUpdateListener),Oe()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.setupDisplay())):(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.observer?.disconnect(),this.numberDisplay.remove())}processTeamScores=()=>{let{pointCounter:e}=this;if(e){for(let t of document.querySelectorAll("#tScoreC1, #tScoreC2"))if(t&&!t.className.includes("you")){let o=t.nextElementSibling;if(!o)continue;let n=Number.parseInt(o.textContent??"",10);if(Number.isNaN(n))continue;n>this.enemyOBJ&&(e.textContent=String((n-this.enemyOBJ)/10),this.enemyTimeout&&clearTimeout(this.enemyTimeout),this.enemyTimeout=setTimeout(()=>{e.textContent="0",this.enemyTimeout=null},1600)),this.enemyOBJ=n}}};setupDisplay(){let e=U(".pointVal",this.numberDisplay);this.pointCounter=e,U(".topRightCounters").append(this.numberDisplay),this.observer?.disconnect(),this.observer=new MutationObserver(this.processTeamScores),this.observer.observe(U("#teamScores"),{childList:!0,subtree:!0})}},kk=new rl});var cl={};A(cl,{default:()=>yk});var ll,yk,dl=w(()=>{"use strict";F();ll=class{constructor(){this.originalPlay=()=>{},this.observer=new MutationObserver(e=>this.parseChat(e)),u.settings.toggleHsSound=e=>this.toggle(e),this.setupSoundHook()}setupSoundHook(){window.SOUND?.play?(this.originalPlay=window.SOUND.play,this.toggle(!0)):setTimeout(()=>this.setupSoundHook(),100)}toggle(e){if(e){let t=document.querySelector("#chatList");t&&this.observer.observe(t,{childList:!0});let o=this;window.SOUND.play=function(n,r,i){if(!(n==="headshot_0"&&r===void 0))return o.originalPlay.call(window.SOUND,n,r,i)}}else window.SOUND.play=this.originalPlay,this.observer.disconnect()}parseChat(e){for(let t of e)if(t.type==="childList")for(let o of t.addedNodes){if(!(o instanceof HTMLElement)||o.tagName!=="DIV")continue;let n=o.querySelector("span.chatMsg");if(!n)continue;let r=n.querySelectorAll("span[style*='color:#'], span[style*='color: rgb']");if(r.length<=0)continue;let i=r[0],a=i.style.color.trim().toLowerCase(),l=i.textContent.trim();a==="rgb(255, 255, 255)"&&l==="You"&&n.querySelector("img")&&window.SOUND.play("headshot_0",1,!1)}}},yk=new ll});var Xh,Yh=w(()=>{Xh=`html.kuteHudEdit #app,html.kuteHudEdit #fullMenHider{opacity:.1!important;pointer-events:none!important}html.kuteHudEdit #kuteHudEditor{position:fixed;inset:0;z-index:2147483000;background:#00000073;font-family:Consolas,monospace;color:#fff}.hudBox{position:absolute;box-sizing:border-box;border:1px solid rgba(53,224,232,.65);border-radius:4px;background:#35e0e81a;cursor:grab;touch-action:none}.hudBox:hover,.hudBox.hudActive{border-color:#35e0e8;background:#35e0e840}.hudBox.hudDragging{cursor:grabbing}.hudBox.hudEmpty{border-style:dashed}.hudBox.hudOff{border-color:#ffffff4d;background:#ffffff0f}.hudLabel{position:absolute;bottom:100%;left:-1px;padding:0 .35em;border-radius:3px 3px 0 0;background:#35e0e8d9;color:#05201f;font-size:11px;line-height:1.5;white-space:nowrap;pointer-events:none}.hudBox.hudLabelBelow .hudLabel{top:100%;bottom:auto;border-radius:0 0 3px 3px}.hudBox.hudOff .hudLabel{background:#fff6;color:#111}.hudGuide{position:absolute;background:#ffc147;pointer-events:none}.hudGuide.hudGuideV{top:0;width:1px;height:100%}.hudGuide.hudGuideH{left:0;width:100%;height:1px} +`});var Zh,Jh=w(()=>{Zh='
          HUD Layout
          Boxes are where things sit in the match.
          Drag to move, wheel to resize, arrows nudge
          Reset all
          Done
          '});var Qh={};A(Qh,{HUD_ELEMENTS:()=>jt,gameSettingOn:()=>ul});function ul(s){try{return window.localStorage.getItem(`kro_setngss_${s}`)!=="false"}catch{return!0}}var jt,rr=w(()=>{"use strict";jt=[{key:"timer",name:"Timer",group:"Match",selector:"#timerHolder",size:[188,77]},{key:"matchInfo",name:"Mode and map",group:"Match",selector:"#matchInfo",size:[110,50]},{key:"teamScores",name:"Team scores",group:"Match",selector:"#teamScores",display:"block",size:[220,40],note:"team modes"},{key:"rounds",name:"Rounds",group:"Match",selector:"#roundsDisplay",display:"inline-block",size:[200,60],note:"round based"},{key:"zoneCount",name:"Zone count",group:"Match",selector:"#scoreZoneCount",display:"inline-block",size:[57,43],note:"hardpoint"},{key:"lives",name:"Lives",group:"Match",selector:"#livesCount",display:"inline-block",size:[57,43],note:"LMS, infected"},{key:"gameMessage",name:"Match message",group:"Match",selector:"#gameMessage",size:[400,30]},{key:"roundMessage",name:"Round message",group:"Match",selector:"#roundMessage",size:[400,30]},{key:"challenge",name:"Challenge banner",group:"Match",selector:"#chalDisplay",size:[300,30]},{key:"fps",name:"FPS",group:"Stats",selector:"#fpsDisplay",setting:"showFPS",display:"block",size:[72,23]},{key:"ping",name:"Ping",group:"Stats",selector:"#pingDisplay",setting:"showPing",display:"block",size:[72,23]},{key:"kills",name:"Kills",group:"Stats",selector:"#killCount",setting:"showKillC",display:"inline-block",size:[57,43]},{key:"deaths",name:"Deaths",group:"Stats",selector:"#deathCount",setting:"showDeaths",display:"inline-block",size:[57,43]},{key:"streak",name:"Streak",group:"Stats",selector:"#streakCount",setting:"showStreak",display:"inline-block",size:[57,43]},{key:"kd",name:"K/D",group:"Stats",selector:"#kdCount",setting:"showKD",display:"inline-block",size:[77,43]},{key:"score",name:"Score",group:"Stats",selector:"#scoreCount",setting:"showScore",display:"inline-block",size:[57,43]},{key:"speedRun",name:"Parkour timer",group:"Stats",selector:"#speedRunHolder",display:"block",size:[200,60],note:"parkour"},{key:"leaderboard",name:"Leaderboard",group:"Feed",selector:"#leaderboardHolder",size:[327,54]},{key:"centerLeader",name:"Center leaderboard",group:"Feed",selector:"#centerLeaderDisplay",display:"block",size:[300,120],note:"comp"},{key:"killFeed",name:"Kill feed",group:"Feed",selector:"#killFeed",setting:"showKills",display:"inline-grid",size:[240,120]},{key:"chat",name:"Chat",group:"Feed",selector:"#chatHolder",rule:"#uiBase.onGame #chatHolder",size:[386,248]},{key:"weapons",name:"Weapons",group:"Combat",selector:"#weapHolder",size:[127,203]},{key:"ammo",name:"Ammo",group:"Combat",selector:"#ammoHolder",size:[148,63]},{key:"perks",name:"Perks",group:"Combat",selector:"#perkHolder",size:[65,40]},{key:"krTag",name:"Deposit coins",group:"Combat",selector:"#krTagHolder",size:[71,65],note:"deposit"},{key:"giftTag",name:"Gift drops",group:"Combat",selector:"#giftTagHolder",size:[65,65]},{key:"powerUps",name:"Powerups",group:"Combat",selector:"#powerUpHolder",size:[65,65]},{key:"killStreak",name:"Kill streak",group:"Combat",selector:"#killStreakHolder",size:[65,65]},{key:"player",name:"Health and class",group:"Player",selector:"#bottomLeftPlayer",size:[376,90]},{key:"zPerks",name:"Class perks",group:"Player",selector:"#zPerksHolder",size:[65,40]},{key:"nuke",name:"Nuke counter",group:"Kute",selector:"#kuteNukeCounter",clientSetting:"nukeCounter",display:"flex",size:[90,56]},{key:"keystrokes",name:"Keystrokes",group:"Kute",selector:"#kuteKeystrokes",clientSetting:"keystrokes",display:"flex",size:[190,82]},{key:"spotify",name:"Spotify",group:"Kute",selector:"#kuteSpotifyOverlay",clientSetting:"spotifyOverlay",display:"flex",size:[320,82]},{key:"menuTimer",name:"Menu timer",group:"Kute",selector:"#uiBase.onMenu .spectateInfo",clientSetting:"menuTimer",size:[150,60],note:"menu",menu:(s,e)=>[s/2,e*.4-105]}]});var pl={};A(pl,{HudEditor:()=>ir,default:()=>Tk,implicitShift:()=>Fs});function Fs(s,e){if(s!=="spotify"||!u.settings.data.keystrokes)return 0;let t=e.spotify??{},o=e.keystrokes??{};if(t.x||t.y||o.x||o.y)return 0;let n=$k*(1+(o.s??1))/2,r=Ck*(1-(t.s??1))/2;return Math.round(n+Mk-r)}var Ek,em,$k,Ck,Mk,ir,Tk,ar=w(()=>{"use strict";F();rr();Pt();On();Ek="kute_hudLayoutCSS",em="kute_hud_geometry",$k=190,Ck=320,Mk=12;ir=class{constructor(){this.style=null,this.open=!1,this.menuRects={},u.hudEditor={edit:()=>this.edit(),apply:()=>this.apply()},this.migrateNukeCounter(),this.apply(),Object.keys(this.measureMenuWidgets()).length===0&&setTimeout(()=>this.measureMenuWidgets(),3e3)}get layout(){return{...u.settings.data.hudLayout}}save(e){u.settings.data.hudLayout=e,window.chrome.webview.postMessage(`set-config-json hudLayout ${JSON.stringify(e)}`),this.apply()}migrateNukeCounter(){let e=u.settings.data.nukeCounterConfig;if(!e||e.x===void 0&&e.y===void 0&&e.scale===void 0)return;let{layout:t}=this;t.nuke??={x:Math.round(((e.x??94)-94)*100)/100,y:Math.round(((e.y??50)-50)*100)/100,s:e.scale??1};let o={goal:e.goal??0,background:e.background??!0};u.settings.data.nukeCounterConfig=o,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(o)}`),this.save(t)}apply(){let{layout:e}=this,t="";for(let o of jt){let n=e[o.key]??{},r=(n.x??0)!==0||(n.y??0)!==0,i=(n.s??1)!==1,a=Fs(o.key,e);if(!r&&!i&&!a)continue;let l=[];r?l.push(`translate:${n.x??0}vw ${n.y??0}vh`):a&&l.push(`translate:${a}px 0`),i&&l.push(`scale:${n.s}`),t+=`${o.rule??o.selector}{${l.join(";")}}`}this.style||(this.style=document.createElement("style"),this.style.id=Ek,document.head.append(this.style)),this.style.textContent=t}inMatch(){let e=document.querySelector("#inGameUI");return!!e&&window.getComputedStyle(e).display!=="none"}snapshot(){if(!this.inMatch())return null;let e=[];for(let i of jt){if(i.menu)continue;let a=document.querySelector(i.selector);a&&e.push({def:i,element:a,visible:window.getComputedStyle(a).display!=="none"})}let t={vw:window.innerWidth,vh:window.innerHeight,factor:1,game:Bt().id??"",rects:{}},o=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let{def:i,element:a,visible:l}of e){if(!l)continue;let c=a.getBoundingClientRect();c.width<=0||(t.rects[i.key]=[c.x,c.y,c.width,c.height,1],c.width>60&&a.offsetWidth>0&&(t.factor=c.width/a.offsetWidth))}let n=e.filter(({def:i})=>!t.rects[i.key]&&i.display);if(n.length>0){let i=document.createElement("style");i.textContent=n.map(({def:a})=>`${a.selector}{display:${a.display}!important}`).join(""),document.head.append(i);for(let{def:a,element:l}of n){let c=l.getBoundingClientRect();c.width>0&&(t.rects[a.key]=[c.x,c.y,c.width,c.height,0])}i.remove()}for(let{def:i,element:a}of e){if(t.rects[i.key])continue;let l=a.getBoundingClientRect();t.rects[i.key]=[l.x,l.y,l.width,l.height,0]}let r=this.menuRects[`${t.vw}x${t.vh}`]??{};for(let i of jt){if(!i.menu)continue;if(r[i.key]){t.rects[i.key]=r[i.key];continue}let[a,l]=i.menu(t.vw,t.vh),[c,d]=i.size??[0,0];t.rects[i.key]=[a-c/2,l-d/2,c,d,1]}this.style&&(this.style.textContent=o);try{window.localStorage.setItem(em,JSON.stringify(t))}catch{}return t}geometry(){if(this.inMatch())return this.snapshot();let e=null;try{e=JSON.parse(window.localStorage.getItem(em)??"null")}catch{e=null}return!e?.rects||e.vw!==window.innerWidth||e.vh!==window.innerHeight?null:this.withMenuWidgets(e)}measureMenuWidgets(){let e={},t=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let o of jt){if(!o.menu)continue;let n=document.querySelector(o.selector)?.getBoundingClientRect();n&&n.width>0&&(e[o.key]=[n.x,n.y,n.width,n.height,1])}return this.style&&(this.style.textContent=t),Object.keys(e).length>0&&(this.menuRects[`${window.innerWidth}x${window.innerHeight}`]=e),e}withMenuWidgets(e){return{...e,rects:{...e.rects,...this.measureMenuWidgets()}}}async edit(){if(this.open)return;if(this.inMatch()){this.show(this.snapshot());return}let e=this.geometry();if(e?.game&&e.game===Bt().id){this.show(e);return}if(!await Ce({title:"Set up your HUD",paragraphs:["The editor places everything exactly where it sits in a match, so it needs a match to measure.","Kute opens a private one for you, nobody else can join it. If you are in a game right now, you leave it."],stay:"Not now",leave:"Open a private match"})||this.open)return;if(document.querySelector("#signedInHeaderBar")===null){u.showNotification?.("Log in first, a private match needs an account",!1,5);return}this.open=!0,u.showNotification?.("Opening a private match",!1,4);let o=await Ms();if(!(o!==null&&await Ts(o))){this.open=!1,u.showNotification?.("Could not open a private match. Is a host slot free?",!1,6);return}await new Promise(r=>{setTimeout(r,1500)}),this.open=!1,this.show(this.snapshot()??this.geometry())}show(e){if(!e){u.showNotification?.("Could not measure the HUD, try again",!1,6);return}this.open=!0,Promise.resolve().then(()=>(ml(),hl)).then(t=>t.openEditor(this,e)).catch(t=>{this.open=!1,console.error("[kute] hud editor:",t)})}closed(){this.open=!1}},Tk=new ir});var hl={};A(hl,{openEditor:()=>Ak});async function Ak(s,e){document.pointerLockElement&&document.exitPointerLock(),await new Promise(x=>setTimeout(x,0));let{layout:t}=s,o=document.createElement("style");o.id="kute_hudEditorCSS",o.textContent=Xh,document.head.append(o),document.documentElement.classList.add("kuteHudEdit");let n=document.createElement("div");n.id="kuteHudEditor",document.body.append(n);let r=(x,$)=>{let[R,K,z,N,V]=$,de=!V||z<=0||N<=0,Z=z>window.innerWidth*.5,ge=N>window.innerHeight*.5,le=de?lr:z,ze=de?lr:N,Zt=R,Eo=K;return!de&&Z&&(le=x.size?.[0]??lr,Zt=R+z/2-le/2),!de&&ge&&(ze=x.size?.[1]??lr,Eo=K+N/2-ze/2),de&&R>window.innerWidth/2&&(Zt=R-le),de&&K>window.innerHeight/2&&(Eo=K-ze),le=Math.min(le,window.innerWidth),ze=Math.min(ze,window.innerHeight),{x:cr(Zt,0,window.innerWidth-le),y:cr(Eo,0,window.innerHeight-ze),w:le,h:ze,empty:de}},i=x=>{let $=x.filter(R=>!R.empty);for(let R of x)if(R.empty){for(let K=0;K<12;K++){let z=$.find(V=>R.xV.x&&R.yV.y);if(!z)break;R.y+R.h+2+R.h<=window.innerHeight?R.y=Math.min(z.y+z.h+2,window.innerHeight-R.h):R.x=cr(z.x+z.w+2,0,window.innerWidth-R.w)}$.push(R)}},a=[];for(let x of jt){let $=e.rects[x.key];if(!$||x.clientSetting&&Mo(u.settings.data,x.clientSetting))continue;let R=document.createElement("div");R.className="hudBox";let K=document.createElement("div");K.className="hudLabel",K.textContent=x.name,R.append(K),n.append(R),a.push({def:x,box:R,...r(x,$),drawn:null})}i(a);let l=!1;for(let x of a){x.w>60&&(l=!1);let $=l&&x.y+x.h+2060?!1:!l}let c=[];for(let x of["hudGuideV","hudGuideH"]){let $=document.createElement("div");$.className=`hudGuide ${x}`,$.style.display="none",n.append($),c.push($)}let d=x=>x.setting?ul(x.setting):x.clientSetting?u.settings.data[x.clientSetting]!==!1:!0,h=x=>t[x]??={},p=x=>{let $={...h(x)},R=Fs(x,t);return R&&($.x=dr(R/window.innerWidth*100)),$},m=(x,$)=>[x/100*window.innerWidth*e.factor,$/100*window.innerHeight*e.factor],f=x=>{let $=t[x.def.key]??{},[R,K]=m($.x??0,$.y??0),z=R+Fs(x.def.key,t)*e.factor,N=$.s??1,V=x.w*N,de=x.h*N,Z=x.x+x.w/2+z-V/2,ge=x.y+x.h/2+K-de/2;x.box.style.left=`${Math.round(Z)}px`,x.box.style.top=`${Math.round(ge)}px`,x.box.style.width=`${Math.round(V)}px`,x.box.style.height=`${Math.round(de)}px`,x.box.classList.toggle("hudOff",!d(x.def)),x.box.classList.toggle("hudEmpty",x.empty),x.drawn=new DOMRect(Z,ge,V,de)},g=()=>{for(let x of a)f(x)},b=()=>{u.settings.data.hudLayout=t,s.apply()},v=new Map,k=new Map,E=()=>{for(let x of a){let $=v.get(x.def.key);if(!$)continue;let R=t[x.def.key],K=R?.s??1,z=!!R&&((R.x??0)!==0||(R.y??0)!==0||K!==1);$.classList.toggle("hpChanged",z);let N=$.querySelector(".hpMoved");N&&(N.textContent=K===1?"":`${Math.round(K*100)}%`);let V=k.get(x.def.key);V&&(V.checked=d(x.def))}},L=null,y=(x,$)=>x.box.classList.toggle("hudActive",$||L===x),C=x=>{L=x;for(let $ of a)$.box.classList.toggle("hudActive",$===x)},I=(x,$,R,K)=>{let z=h(x.def.key),N=e.factor||1;z.x=dr((K.x??0)+$/(window.innerWidth*N)*100),z.y=dr((K.y??0)+R/(window.innerHeight*N)*100),b()},_=(x,$,R,K)=>{let z=[0,window.innerWidth/2,window.innerWidth],N=[0,window.innerHeight/2,window.innerHeight];for(let Z of a)Z===x||!Z.drawn||(z.push(Z.drawn.left,Z.drawn.left+Z.drawn.width/2,Z.drawn.right),N.push(Z.drawn.top,Z.drawn.top+Z.drawn.height/2,Z.drawn.bottom));let V=null,de=null;for(let Z of[$.left+R,$.left+R+$.width/2,$.right+R])for(let ge of z){let le=ge-Z;Math.abs(le)<=tm&&(V===null||Math.abs(le){z.preventDefault(),C(x),$.setPointerCapture(z.pointerId),$.classList.add("hudDragging"),R={x:z.clientX,y:z.clientY,rect:x.drawn??$.getBoundingClientRect(),from:p(x.def.key)}},$.onpointermove=z=>{if(!R||!$.hasPointerCapture(z.pointerId))return;let[N,V]=_(x,R.rect,z.clientX-R.x,z.clientY-R.y);I(x,N,V,R.from),g()};let K=()=>{R&&(R=null,$.classList.remove("hudDragging"),c[0].style.display="none",c[1].style.display="none",E())};$.onpointerup=K,$.onpointercancel=K,$.onwheel=z=>{z.preventDefault(),C(x);let N=h(x.def.key);N.s=dr(cr((N.s??1)+(z.deltaY<0?.05:-.05),.3,3)),b(),g(),E()}}let H=document.createElement("div");H.style.cssText="position:fixed;top:50%;left:50%;transform:translate(-50%, -50%)",n.append(H);let G=H.attachShadow({mode:"open"});G.innerHTML=Zh;let J=x=>G.querySelector(`#${x}`),B=(x,$)=>{if(x.setting)window.setSetting(x.setting,$);else if(x.clientSetting){let R=x.clientSetting;u.settings.data[R]=$,window.chrome.webview.postMessage(`set-config, ${R}, ${$}`);let K=`toggle${R.charAt(0).toUpperCase()}${R.slice(1)}`;typeof u.settings[K]=="function"&&u.settings[K]($);let z=document.querySelector(`#${R}`);z&&(z.checked=$)}g(),E()},re=J("hpList"),je="";for(let x of a){let{def:$}=x;if($.group!==je){({group:je}=$);let V=document.createElement("div");V.className="hpGroup",V.textContent=je.toUpperCase(),re.append(V)}let R=document.createElement("label");R.className="hpRow";let K=document.createElement("span");if(K.className="hpName",K.textContent=$.name,$.note){let V=document.createElement("span");V.className="hpNote",V.textContent=` ${$.note}`,K.append(V)}let z=document.createElement("span");z.className="hpMoved";let N=document.createElement("span");if(N.className="hpReset",N.textContent="reset",N.title="Put it back where Krunker had it",N.onclick=V=>{V.preventDefault(),delete t[$.key],b(),g(),E()},R.append(K,z,N),$.setting||$.clientSetting){let V=document.createElement("input");V.type="checkbox",V.checked=d($),V.onchange=()=>B($,V.checked),R.append(V),k.set($.key,V)}R.onpointerenter=()=>y(x,!0),R.onpointerleave=()=>y(x,!1),re.append(R),v.set($.key,R)}let be=J("hpPanel"),Ee=J("hpHead"),j=null;Ee.onpointerdown=x=>{let $=H.getBoundingClientRect();H.style.cssText=`position:fixed;left:${Math.round($.left)}px;top:${Math.round($.top)}px`,Ee.setPointerCapture(x.pointerId),j={x:x.clientX-$.left,y:x.clientY-$.top},be.classList.add("hpBusy")},Ee.onpointermove=x=>{j&&(H.style.left=`${Math.round(x.clientX-j.x)}px`,H.style.top=`${Math.round(x.clientY-j.y)}px`)},Ee.onpointerup=()=>{j=null,be.classList.remove("hpBusy")};let X=new AbortController,Y=()=>{X.abort(),n.remove(),o.remove(),document.documentElement.classList.remove("kuteHudEdit"),s.save(t),s.closed()};J("hpDone").onclick=Y,window.addEventListener("resize",()=>{Y(),u.showNotification?.("The window changed size, open the HUD editor again",!1,5)},{signal:X.signal}),J("hpReset").onclick=()=>{for(let x of Object.keys(t))delete t[x];b(),g(),E()},document.addEventListener("keydown",x=>{if(x.key==="Escape"){x.preventDefault(),x.stopPropagation(),Y();return}if(!L||!x.key.startsWith("Arrow"))return;x.preventDefault(),x.stopPropagation();let $=x.shiftKey?10:1,R=(x.key==="ArrowRight"?$:0)-(x.key==="ArrowLeft"?$:0),K=(x.key==="ArrowDown"?$:0)-(x.key==="ArrowUp"?$:0);I(L,R,K,p(L.def.key)),g(),E()},{signal:X.signal,capture:!0}),g(),E()}var tm,lr,cr,dr,ml=w(()=>{"use strict";Yh();Jh();F();rr();ar();To();tm=6,lr=24,cr=(s,e,t)=>Math.min(t,Math.max(e,s)),dr=s=>Math.round(s*100)/100});var rm={};function Pk(){document.querySelector("#settSearch")&&(window.closWind?.(sm),window.showWindow?.(sm))}var ur,om,nm,Lk,Rk,sm,fl=w(()=>{"use strict";F();Ae();ur=document.createElement("div");ur.className="settName";ur.style.cssText="display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px 12px;margin-top:10px";om={Keybinds:localStorage.getItem("kute_Keybinds")==="true"||localStorage.getItem("kute_Keybinds")===null,Sensitivity:localStorage.getItem("kute_Sensitivity")==="true"||localStorage.getItem("kute_Sensitivity")===null,Sound:localStorage.getItem("kute_Sound")==="true"||localStorage.getItem("kute_Sound")===null},nm="";for(let s in om)nm+=`Import ${s} `;cr.innerHTML=em;$k=window.importSettingsPopup,Ck=window.importSettings,Qh=1;window.importSettingsPopup=()=>{$k(),queueMicrotask(()=>{U("#importTxt").after(cr)})};window.importSettings=()=>{let s=U("#importTxt"),e=JSON.parse(s.value);localStorage.getItem("kute_Sensitivity")==="false"&&(e.sensitivityX=localStorage.getItem("kro_setngss_sensitivityX"),e.sensitivityY=localStorage.getItem("kro_setngss_sensitivityY"),e.aimSensitivityX=localStorage.getItem("kro_setngss_aimSensitivityX"),e.aimSensitivityY=localStorage.getItem("kro_setngss_aimSensitivityY")),localStorage.getItem("kute_Sound")==="false"&&(e.sound=localStorage.getItem("kro_setngss_sound"),e.ambientVolume=localStorage.getItem("kro_setngss_ambientVolume"),e.dialogueVolume=localStorage.getItem("kro_setngss_dialogueVolume"),e.micVolume=localStorage.getItem("kro_setngss_micVolume"),e.voiceVolume=localStorage.getItem("kro_setngss_voiceVolume"),e.voiceDistance=localStorage.getItem("kro_setngss_voiceDistance"),e.gunsVolume=localStorage.getItem("kro_setngss_gunsVolume"),e.playerVolume=localStorage.getItem("kro_setngss_playerVolume"),e.skinVolume=localStorage.getItem("kro_setngss_skinVolume"),e.uiVolume=localStorage.getItem("kro_setngss_uiVolume"),e.assetVolume=localStorage.getItem("kro_setngss_assetVolume")),localStorage.getItem("kute_Keybinds")==="false"&&delete e.controls,s.value=JSON.stringify(e),Ck(),u.bindShoot(),Mk(),u.kuteIcons?.refresh(),u.autoDetect?.dropUndo(),u.autoDetect?.afterImport()}});var fl={};A(fl,{default:()=>Rk});function Ak(s){let e=s.nextElementSibling;return e instanceof HTMLElement&&e.matches(".market-grid-sentinel")?e:null}async function om(s){for(let e=0;e{"use strict";Tk=".view-stack-overlay, .modal-overlay";Lk=()=>new Promise(s=>{requestAnimationFrame(()=>s())});ml=class{constructor(){this.watched=new WeakSet,this.popupClickAt=-1/0,this.lastTop=0,this.lastHeight=0,this.restore=null,this.onWheel=()=>this.finish(!1),document.addEventListener("scroll",e=>this.onScroll(e),{capture:!0,passive:!0}),document.addEventListener("click",e=>{e.target instanceof Element&&e.target.closest(Tk)&&(this.popupClickAt=performance.now())},{capture:!0,passive:!0})}onScroll(e){let t=e.target;if(!(t instanceof HTMLElement))return;if(this.restore){t===this.restore.scroller&&t.scrollTop!==this.restore.top&&(t.scrollTop=this.restore.top);return}let o=t.querySelector(":scope > .market-grid");o instanceof HTMLElement&&(this.watch(t,o),this.lastTop=t.scrollTop,this.lastHeight=o.offsetHeight)}watch(e,t){if(this.watched.has(t))return;this.watched.add(t);let o=t.children.length;new MutationObserver(n=>{let r=n.reduce((l,c)=>l+c.removedNodes.length,0),i=o;if(o=t.children.length,this.restore?.grid===t){o>i&&this.pageArrived();return}i>0&&r>=i&&this.lastTop>e.clientHeight&&performance.now()-this.popupClickAt<5e3&&this.start(e,t,i,n.flatMap(l=>[...l.removedNodes]))}).observe(t,{childList:!0})}start(e,t,o,n){let r=document.createElement("div");r.className=t.className,r.style.cssText=t.style.cssText,r.append(...n),this.restore={scroller:e,grid:t,sentinels:new Set,top:this.lastTop,count:o,until:performance.now()+1e4,pageTimer:0,picture:r},t.style.minHeight=`${this.lastHeight}px`,t.style.alignContent="start",Object.assign(r.style,{position:"absolute",top:`${t.offsetTop}px`,left:`${t.offsetLeft}px`,width:`${t.offsetWidth}px`,margin:"0",zIndex:"1",pointerEvents:"none"}),e.append(r),e.style.overflowAnchor="none",e.scrollTop=this.lastTop,e.addEventListener("wheel",this.onWheel,{passive:!0}),this.waitForPage(),this.blink(this.restore).catch(i=>console.error("[kute] inventory scroll:",i))}pageArrived(){let{restore:e}=this;e&&(e.grid.children.length>=e.count-1||performance.now()>e.until?this.finish(!0):this.waitForPage())}waitForPage(){let{restore:e}=this;e&&(clearTimeout(e.pageTimer),e.pageTimer=window.setTimeout(()=>this.finish(!0),1500))}async blink(e){for(;this.restore===e;){let t=Ak(e.grid);t&&(e.sentinels.add(t),t.style.position="sticky",t.style.bottom="0",t.style.display="none",await om(2),t.style.display=""),await om(2)}}finish(e){let{restore:t}=this;if(t){this.restore=null,clearTimeout(t.pageTimer),t.scroller.removeEventListener("wheel",this.onWheel),t.picture.remove(),t.grid.style.minHeight="",t.grid.style.alignContent="",t.scroller.style.overflowAnchor="";for(let o of t.sentinels)o.style.position="",o.style.bottom="",o.style.display="";e&&(t.scroller.scrollTop=t.top),this.lastTop=t.scroller.scrollTop,this.lastHeight=t.grid.offsetHeight}}},Rk=new ml});var nm,sm=w(()=>{nm=`#kuteKeystrokes{position:absolute;left:463px;bottom:23px;z-index:10;display:flex;align-items:center;gap:12px;box-sizing:border-box;width:190px;height:82px;padding:5px 10px;border:1px solid rgba(53,224,232,.7);border-radius:8px;background:#0a1416e0;box-shadow:0 4px 18px #00000059;color:#cfeff1;font-family:Arial,sans-serif;font-weight:700;pointer-events:none}#kuteKeystrokesKeys{display:grid;grid-template-columns:repeat(4,24px);grid-template-rows:repeat(3,20px);gap:4px}.kuteKey{display:flex;justify-content:center;align-items:center;overflow:hidden;border:1px solid rgba(53,224,232,.35);border-radius:4px;background:#35e0e814;font-size:10px;white-space:nowrap}.kuteKey.on,#kuteMouse>.on,#kuteWheel>.on{border-color:#35e0e8;background:#35e0e8;color:#0a1416;box-shadow:0 0 8px #35e0e8cc}#kuteKeyMelee{grid-area:1 / 1}#kuteKeyForward{grid-area:1 / 2}#kuteKeySwap{grid-area:1 / 3}#kuteKeyReload{grid-area:1 / 4}#kuteKeyLeft{grid-area:2 / 1}#kuteKeyBack{grid-area:2 / 2}#kuteKeyRight{grid-area:2 / 3}#kuteKeyCrouch{grid-area:3 / 1 / 4 / 3}#kuteKeyJump{grid-area:3 / 3 / 4 / 5}#kuteMouseBox{position:relative;padding:5px}.kuteMove{--arc: rgba(53, 224, 232, .14);position:absolute;inset:0;box-sizing:border-box;border:2px solid transparent;border-radius:24px 24px 19px 19px}.kuteMove.on{--arc: rgba(53, 224, 232, .6)}.kuteMove.fast{--arc: #35e0e8}#kuteMoveLeft{border-left-color:var(--arc)}#kuteMoveRight{border-right-color:var(--arc)}#kuteMoveUp{border-top-color:var(--arc)}#kuteMoveDown{border-bottom-color:var(--arc)}#kuteMouse{position:relative;width:38px;height:58px;box-sizing:border-box;border:1px solid rgba(53,224,232,.35);border-radius:19px 19px 14px 14px;overflow:hidden}#kuteMouseLeft,#kuteMouseRight{position:absolute;top:0;width:50%;height:45%;border-bottom:1px solid rgba(53,224,232,.35);box-sizing:border-box;background:#35e0e814}#kuteMouseLeft{left:0}#kuteMouseRight{right:0}#kuteMouseSplit{position:absolute;top:0;left:calc(50% - .5px);width:1px;height:45%;background:#35e0e859}#kuteWheel{position:absolute;top:6px;left:50%;z-index:1;display:flex;flex-direction:column;box-sizing:border-box;width:10px;height:18px;margin-left:-5px;overflow:hidden;border:1px solid rgba(53,224,232,.5);border-radius:5px;background:#0a1416}#kuteWheel.on{border-color:#35e0e8;background:#35e0e8;box-shadow:0 0 8px #35e0e8cc}#kuteWheelUp,#kuteWheelDown{flex:1 1 0}#kuteWheelUp{border-bottom:1px solid rgba(53,224,232,.35)} -`});var im,rm=w(()=>{im='
          '});var kl={};A(kl,{default:()=>Kk});function pm(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`N${s-96}`:s>=112&&s<=123?`F${s-111}`:Fk[s]??"?"}function qk(s,e){let t=[],o=[[`cont_${s}_alt`,-1],[`cont_${s}`,e]];for(let[n,r]of o){let i=null;try{i=window.localStorage.getItem(n)}catch{i=null}let a=i===null?r:Number(i);a>0&&a<1e4&&t.push(a)}return t}var Nk,_k,am,lm,bl,Bk,zk,vl,cm,dm,Hk,um,Ok,Dk,Fk,wl,Kk,yl=w(()=>{"use strict";sm();rm();D();Nk=131,_k=120,am=32,lm=80,bl=.02,Bk=.35,zk=20,vl=80,cm=3,dm=3e3,Hk=3,um="kute_keystrokes_speed",Ok=120,Dk=[["kuteKeyForward","0",87],["kuteKeyBack","1",83],["kuteKeyLeft","2",65],["kuteKeyRight","3",68],["kuteKeyJump","jumpKey",32],["kuteKeyCrouch","crouchKey",16],["kuteKeyReload","reloadKey",82],["kuteKeyMelee","meleeKey",81],["kuteKeySwap","swapKey",69]],Fk={8:"BKSP",9:"TAB",13:"ENT",16:"SHIFT",17:"CTRL",18:"ALT",20:"CAPS",32:"SPACE",37:"\u2190",38:"\u2191",39:"\u2192",40:"\u2193",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"};wl=class{constructor(){this.widget=null,this.byCode=new Map,this.wheelTimers=new Map,this.rampWheelAt=-1/0,this.spaceDownAt=-1/0,this.spaceIgnored=!1,this.arcs=[],this.moveX=0,this.moveY=0,this.lastMove=-1/0,this.moveTimer=0,this.typical=Hk,this.typicalMs=0,this.fastUntil=[0,0,0,0],this.onKeyDown=e=>this.key(e.keyCode,!0),this.onKeyUp=e=>this.key(e.keyCode,!1),this.onMouseDown=e=>this.button(e.button,!0),this.onMouseUp=e=>this.button(e.button,!1),this.onWheel=e=>this.wheel(e.deltaY<0),this.onMouseMove=e=>this.move(e),this.onMoveIdle=()=>{this.moveTimer=0;let e=performance.now()-this.lastMove;if(e{let{data:t}=e;typeof t?.wheel=="number"&&t.wheel!==0?this.wheel(t.wheel>0):typeof t?.rampWheel=="number"&&t.rampWheel!==0&&this.rampWheel(t.rampWheel>0)},this.releaseAll=()=>{for(let e of this.widget?.querySelectorAll(".on")??[])e.classList.remove("on");this.moveX=0,this.moveY=0,this.fastUntil.fill(0),this.drawMove()},this.onPointerLockChange=()=>{if(document.pointerLockElement){this.readBinds();return}this.releaseAll();try{window.localStorage.setItem(um,this.typical.toFixed(3))}catch{}},u.settings.toggleKeystrokes=e=>this.toggle(e),this.toggle(!!u.settings.data.keystrokes)}toggle(e){if(queueMicrotask(()=>u.hudEditor?.apply()),!e){this.remove();return}if(this.widget)return;let t=document.createElement("style");t.id="kuteKeystrokesCSS",t.textContent=nm,document.head.append(t),this.widget=document.createElement("div"),this.widget.id="kuteKeystrokes",this.widget.innerHTML=im,(document.querySelector("#uiBase")??document.body).append(this.widget),this.readBinds(),this.loadTypical();let{widget:o}=this,n=[["kuteMoveLeft",-1,0],["kuteMoveRight",1,0],["kuteMoveUp",0,-1],["kuteMoveDown",0,1]];this.arcs=n.map(([r,i,a])=>[o.querySelector(`#${r}`),i,a]),window.addEventListener("keydown",this.onKeyDown,!0),window.addEventListener("keyup",this.onKeyUp,!0),window.addEventListener("mousedown",this.onMouseDown,!0),window.addEventListener("mouseup",this.onMouseUp,!0),window.addEventListener("mousemove",this.onMouseMove,{capture:!0,passive:!0}),window.addEventListener("wheel",this.onWheel,{capture:!0,passive:!0}),window.addEventListener("blur",this.releaseAll),document.addEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.addEventListener("message",this.onHostMessage)}remove(){window.removeEventListener("keydown",this.onKeyDown,!0),window.removeEventListener("keyup",this.onKeyUp,!0),window.removeEventListener("mousedown",this.onMouseDown,!0),window.removeEventListener("mouseup",this.onMouseUp,!0),window.removeEventListener("mousemove",this.onMouseMove,!0),window.removeEventListener("wheel",this.onWheel,!0),window.removeEventListener("blur",this.releaseAll),document.removeEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.removeEventListener("message",this.onHostMessage);for(let e of this.wheelTimers.values())clearTimeout(e);this.wheelTimers.clear(),clearTimeout(this.moveTimer),this.moveTimer=0,this.arcs=[],this.widget?.remove(),this.widget=null,this.byCode.clear(),document.querySelector("#kuteKeystrokesCSS")?.remove()}readBinds(){if(this.widget){this.byCode.clear();for(let[e,t,o]of Dk){let n=this.widget.querySelector(`#${e}`);if(!n)continue;let r=qk(t,o);n.textContent=r.length>0?pm(r[0]):"",n.title=r.map(pm).join(" / ");for(let i of r){let a=this.byCode.get(i)??[];a.push(n),this.byCode.set(i,a)}}}}key(e,t){if(e===Nk){this.button(0,t);return}if(e===am){t&&(this.spaceDownAt=performance.now(),this.spaceIgnored=this.spaceDownAt-this.rampWheelAt=100,n=Math.min(t-this.lastMove,100);if(this.lastMove=t,!(n>0))return;let r=Math.exp(-n/zk);this.moveX=this.moveX*r+e.movementX/n*(1-r),this.moveY=this.moveY*r+e.movementY/n*(1-r);let i=Math.hypot(this.moveX,this.moveY);!o&&i>bl&&(this.typicalMs=Math.min(this.typicalMs+n,dm),this.typical+=(Math.min(i,this.typical*cm)-this.typical)*(n/this.typicalMs)),this.drawMove(t),this.moveTimer||(this.moveTimer=window.setTimeout(this.onMoveIdle,vl))}loadTypical(){let e=NaN;try{e=Number(window.localStorage.getItem(um))}catch{e=NaN}e>0&&(this.typical=e,this.typicalMs=dm)}drawMove(e=performance.now()){let t=Math.hypot(this.moveX,this.moveY),o=Math.max(this.typical,bl)*cm;this.arcs.forEach(([n,r,i],a)=>{let l=this.moveX*r+this.moveY*i;l>o&&(this.fastUntil[a]=e+Ok);let c="kuteMove";this.fastUntil[a]>e?c="kuteMove on fast":t>bl&&l>=t*Bk&&(c="kuteMove on"),n.className!==c&&(n.className=c)})}rampWheel(e){if(this.rampWheelAt=performance.now(),this.rampWheelAt-this.spaceDownAt{this.widget?.querySelector(`#${t}`)?.classList.remove("on"),this.wheelTimers.delete(t)},_k))}},Kk=new wl});var mm,hm=w(()=>{mm='

          Kute Icons

          Tick all
          Done
          '});var El={};A(El,{default:()=>Gk});function km(){let s=u.settings.data[xl];return s&&typeof s=="object"?s:{}}function fm(){return u.hostFeatures?.includes("kute-icons")??!1}function gm(s){return km()[s.id]!==!1}function bm(s){return s.hiddenBy.filter(e=>{let t=null;try{t=localStorage.getItem(`kro_setngss_${e.id}`)}catch{return!1}return t===null?!1:e.kind==="checkbox"?t==="false":Number(t)===0})}function vm(s){return s.kind==="checkbox"?`${s.name} is off`:`${s.name} is 0`}async function wm(s){await Ce({title:"Reload the game?",paragraphs:[s,"The game keeps the images it already loaded, so this shows after a reload. Nothing else changes, and you can do it later."],stay:"Later",leave:"Reload now"})&&window.chrome.webview.postMessage("hard-reload")}var Uk,xl,Sl,Gk,$l=w(()=>{"use strict";hm();D();Rt();bn();Uk="https://krunker.io/kute-icons/",xl="kuteIconSlots";Sl=class{constructor(){this.asking=!1,this.watched=new WeakSet,u.kuteIcons={customize:()=>this.customize(),refresh:()=>this.refresh()},u.settings.toggleKuteIcons=e=>this.onToggle(!!e),this.refresh(),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&setTimeout(()=>this.refresh(),1500)})}refresh(){for(let e of Mo){let t=e.element?document.getElementById(e.element):null;!t||this.watched.has(t)||(this.watched.add(t),new MutationObserver(()=>Qt()).observe(t,{attributes:!0,attributeFilter:["src"]}))}Qt()}async onToggle(e){if(Qt(),!fm()){e&&u.showNotification("Kute icons need a newer Kute, update the client",!1,4);return}e&&await this.warnHidden(Mo.filter(gm)),await wm(e?"Kute icons are on.":"Kute icons are off, your own icons are back.")}async warnHidden(e){let t=new Map,o=[];for(let r of e){let i=bm(r);if(i.length!==0){for(let a of i)t.set(a.id,a);o.push(`${r.name}: ${i.map(a=>vm(a)).join(", ")}`)}}if(o.length===0||(this.asking=!0,!await Ce({title:"Hidden by your Krunker settings",paragraphs:[o.length===1?"This Kute icon will not show:":"These Kute icons will not show:",...o,"Switch those Krunker settings on for you?"],stay:"Leave them",leave:"Switch on"}).finally(()=>{this.asking=!1})))return!1;for(let r of t.values())window.setSetting(r.id,r.kind==="checkbox"?!0:"1");return u.showNotification("Switched on in your Krunker settings",!1,3),!0}customize(){let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=mm;let n=f=>o.querySelector(`#${f}`),r=fm(),i=u.settings.data.kuteIcons===!0,a="Ticked icons show Kute's version. Your Krunker settings stay as they are.";i||(a="Use Kute Icons is off, so none of these show yet."),r||(a="This needs a newer Kute. Update the client to use Kute icons."),n("kiHint").textContent=a;let l=!1,c=[],d=()=>{for(let{slot:f,box:g,note:b}of c){let v=g.checked?bm(f):[];if(b.replaceChildren(),v.length===0)continue;b.append(`Hidden: ${v.map(E=>vm(E)).join(", ")} `);let k=document.createElement("span");k.className="kiShow",k.textContent="Show it",k.onclick=async E=>{E.preventDefault(),E.stopPropagation(),await this.warnHidden([f]),d()},b.append(k)}},h=(f,g)=>{l=!0;let b={...km(),[f.id]:g};u.settings.data[xl]=b,window.chrome.webview.postMessage(`set-config-json ${xl} ${JSON.stringify(b)}`)};for(let f of Mo){let g=document.createElement("label");g.className="kiRow";let b=document.createElement("img");b.src=Uk+f.file,b.alt="";let v=document.createElement("span");v.textContent=f.name;let k=document.createElement("span");k.className="kiHidden",v.append(k);let E=document.createElement("input");E.type="checkbox",E.checked=gm(f),E.onchange=async()=>{h(f,E.checked),E.checked&&await this.warnHidden([f]),d()},g.append(b,v,E),n("kiRows").append(g),c.push({slot:f,box:E,note:k})}d(),n("kiAll").onclick=async()=>{let f=c.filter(({box:g})=>!g.checked);for(let{slot:g,box:b}of f)b.checked=!0,h(g,!0);await this.warnHidden(f.map(({slot:g})=>g)),d()};let p=new AbortController,m=()=>{p.abort(),e.remove(),l&&r&&u.settings.data.kuteIcons===!0&&wm("Your Kute icons changed.")};n("kiDone").onclick=m,e.addEventListener("mousedown",f=>{f.target===e&&m()}),document.addEventListener("keydown",f=>{f.key!=="Escape"||this.asking||(f.stopPropagation(),m())},{signal:p.signal,capture:!0}),document.body.append(e)}},Gk=new Sl});var Tl={};A(Tl,{default:()=>Vk});var ym,xm,Cl,Sm,Wk,Ml,Vk,Al=w(()=>{"use strict";D();Rt();ym="kute_update_asked",xm="kute_update_ready",Cl=[.25,.5,.75],Sm=()=>new Promise(s=>{let e=()=>{document.pointerLockElement?setTimeout(e,2e3):s()};e()}),Wk=s=>`${Math.round(s/1048576)} MB`,Ml=class{constructor(){this.step=0,this.busy=!1,!(u.platform!=="linux"||!u.hostFeatures?.includes("appimage-update"))&&(window.chrome.webview.addEventListener("message",e=>{let t=e.data?.update;t&&typeof t=="object"&&this.receive(t).catch(()=>{})}),window.chrome.webview.postMessage("update-state"))}async receive(e){e.stage==="offer"?await this.offer(e):e.stage==="downloading"?this.progress(e):e.stage==="ready"?await this.ready(e):e.stage==="failed"&&u.showNotification(`The update to Kute ${e.version} failed: ${e.error??"unknown error"}`,!1,8)}async offer(e){if(this.busy||sessionStorage.getItem(ym)===e.version)return;this.busy=!0,await Sm(),sessionStorage.setItem(ym,e.version);let t=e.install===!0,o=await Ce({title:`Kute ${e.version} is out`,paragraphs:t?[`You have ${e.current}. The update${e.size?` (${Wk(e.size)})`:""} downloads while you play.`,"It replaces your Kute AppImage and starts the next time you open Kute."]:[`You have ${e.current}.`,"This copy of Kute does not run as an AppImage and cannot update itself. The download page has the new version."],stay:"Later",leave:t?"Update":"Open download page"});this.busy=!1,o&&(window.chrome.webview.postMessage(t?"update-install":"update-page"),t&&u.showNotification(`Downloading Kute ${e.version}`,!1,4))}progress(e){if(!e.total||!e.done)return;let t=e.done/e.total;for(;this.step=Cl[this.step];)u.showNotification(`Downloading Kute ${e.version}: ${Math.round(Cl[this.step]*100)} %`,!1,3),this.step++}async ready(e){if(sessionStorage.getItem(xm)===e.version)return;await Sm(),sessionStorage.setItem(xm,e.version),await Ce({title:`Kute ${e.version} is ready`,paragraphs:["It starts the next time you open Kute. Restart now to use it right away."],stay:"Later",leave:"Restart now"})&&window.chrome.webview.postMessage("update-restart")}},Vk=new Ml});var $m,Em=w(()=>{$m=`

          CSS Manager

          visibilityHold to peek
          folder_openShow folder
          storeCSS Store
          ×
          One file is active at a time and loads after all of Krunker's styles, so a rule with the same selector wins. Krunker's inline styles and its own !important rules still need !important here. Files live in Documents\\kute\\css.
          Your CSS
          Click a file to edit it, the circle makes it active
          addNew
          content_pastePaste
          upload_fileImport
          `});var Mm,Cm=w(()=>{Mm=`:host{--accent: #35e0e8;--bg: #1e1e1e;--panel: #252525;--line: #333;--muted: #999;--ok: #5ce05a;--warn: #ffb74d;--bad: #eb5656}.managerPopup{position:relative;box-sizing:border-box;display:flex;flex-direction:column;width:min(1020px,94vw);height:min(760px,90vh);background:var(--bg);color:#fff;border-radius:14px;box-shadow:0 8px 48px #000c;font-family:Consolas,monospace;font-size:14px;overflow:hidden}.managerHeader{display:flex;align-items:center;gap:.6em;padding:1em 1.2em .8em 1.4em;border-bottom:1px solid var(--line)}.managerTitle{margin:0 auto 0 0;font-size:1.6em;letter-spacing:1px;color:var(--accent)}.managerClose{margin-left:.4em;font-size:1.6em;line-height:1;color:var(--muted);cursor:pointer}.managerClose:hover{color:#fff}.managerHint{padding:.7em 1.4em;color:var(--muted);line-height:1.5;border-bottom:1px solid var(--line)}.managerHint code{padding:.05em .35em;border-radius:4px;background:#181818;color:var(--accent)}.managerBody{flex:1 1 auto;min-height:0;overflow-y:auto;padding:1em 1.4em}.managerError,.managerNotice{margin:.8em 1.4em 0;padding:.6em .9em;border-radius:8px;white-space:pre-wrap;line-height:1.5}.managerError{background:#4a1d1d;color:#ffb4b4}.managerNotice{display:flex;align-items:center;gap:1em;background:#173a52;color:#cfe8ff}.managerNotice span{flex:1}[hidden]{display:none!important}.btn{display:inline-flex;align-items:center;gap:.4em;padding:.45em .9em;border-radius:7px;background:#2d2d2d;color:#fff;cursor:pointer;user-select:none;white-space:nowrap}.btn:hover{background:#383838;color:var(--accent)}.btn.primary{background:#1b5e63}.btn.primary:hover{background:#23777d;color:#fff}.btn.small{padding:.25em .55em;font-size:.92em}.iconBtn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:var(--muted);cursor:pointer;user-select:none}.iconBtn:hover{background:#333;color:#fff}.iconBtn.danger:hover{color:var(--bad)}.mi{font-family:Material Icons;font-weight:400;font-style:normal;font-size:18px;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;font-feature-settings:"liga"}.group{margin-bottom:1.2em;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.groupHead{display:flex;align-items:center;gap:.7em;padding:.7em .9em;border-bottom:1px solid var(--line)}.groupTitle{font-size:1.15em;color:#fff}.groupRuns{margin-right:auto;color:var(--muted);font-size:.9em}.empty{padding:.9em;color:var(--muted)}.dropZone{margin:.7em;padding:.8em;border:2px dashed #444;border-radius:8px;color:#777;text-align:center}.dropHover{border-color:var(--accent)!important;background:#35e0e814!important;color:var(--accent)}.toggle{position:relative;flex:0 0 auto;width:38px;height:20px;border-radius:10px;background:#444;cursor:pointer;transition:background .15s}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#ddd;transition:left .15s}.toggle.on{background:#1b8f96}.toggle.on:after{left:21px;background:#fff}.state{flex:0 0 auto;padding:.1em .5em;border-radius:5px;font-size:.85em;background:#333;color:var(--muted)}.state.ok{background:#1f3d1f;color:var(--ok)}.state.warn{background:#3d321f;color:var(--warn)}.state.bad{background:#3d1f1f;color:var(--bad);cursor:help}.askBackdrop{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background:#0009}.askBox{width:min(480px,90%);padding:1.3em 1.4em;border-radius:12px;background:#262626;box-shadow:0 8px 32px #000c}.askTitle{margin-bottom:.8em;font-size:1.1em;color:var(--accent)}.askInput,.field{box-sizing:border-box;width:100%;padding:.5em .7em;border:1px solid #444;border-radius:6px;background:#181818;color:#fff;font:inherit;outline:none}.askInput:focus,.field:focus{border-color:var(--accent)}.askHint{margin-top:.5em;color:var(--muted);font-size:.9em;line-height:1.4}.askActions{display:flex;justify-content:flex-end;gap:.6em;margin-top:1em}.editor{position:relative;display:flex;flex:1 1 auto;min-height:0;border:1px solid var(--line);border-radius:8px;background:#181818;overflow:hidden;font-family:Consolas,Cascadia Mono,monospace;font-size:13.5px;line-height:1.5;tab-size:4}.editorGutter{flex:0 0 auto;padding:.6em .6em .6em .8em;overflow:hidden;color:#555;text-align:right;white-space:pre;user-select:none;border-right:1px solid #2a2a2a}.editorCode{position:relative;flex:1 1 auto;min-width:0}.editorCode pre,.editorCode textarea{position:absolute;inset:0;box-sizing:border-box;margin:0;padding:.6em .8em;border:0;font:inherit;line-height:inherit;tab-size:inherit;white-space:pre;overflow-wrap:normal;letter-spacing:normal}.editorCode pre{overflow:hidden;color:#d4d4d4;pointer-events:none}.editorCode textarea{resize:none;overflow:auto;background:transparent;color:transparent;caret-color:#fff;outline:none}.editorCode textarea::selection{background:#3578c873;color:transparent}.tk-c{color:#6a9955}.tk-s{color:#ce9178}.tk-n{color:#b5cea8}.tk-k{color:#c586c0}.tk-l{color:#569cd6}.tk-f{color:#dcdcaa}.tk-p{color:#9cdcfe}.editorBar{display:flex;align-items:center;gap:.6em;margin-bottom:.7em}.editorFile{margin-right:auto;color:#fff;font-size:1.05em}.editorFile .dirty{color:var(--warn)}.editorView{display:flex;flex-direction:column;height:100%}.editorKeys{margin-top:.5em;color:#666;font-size:.85em} -`});var Tm={};A(Tm,{askConfirm:()=>Re,askText:()=>nt,formatSize:()=>go,hostSupportsManagers:()=>Os,makeDropTarget:()=>st,openManagerPopup:()=>fo,readBase64:()=>Rl});function st(s,e){Ll.set(s,e)}function Zk(s){let e=[...s.items].filter(n=>n.kind==="file").map(n=>n.webkitGetAsEntry()).filter(n=>n!==null);if(!e.length)return Promise.resolve([...s.files].map(n=>({path:n.name,file:n})));let t=[],o=async n=>{if(t.length>=Jk)return;if(n.isFile){let i=await new Promise((a,l)=>n.file(a,l));t.push({path:n.fullPath.replace(/^\/+/,""),file:i});return}let r=n.createReader();for(;;){let i=await new Promise((a,l)=>r.readEntries(a,l));if(!i.length)break;for(let a of i)await o(a)}};return Promise.all(e.map(o)).then(()=>t)}function fo(s,{onMessage:e,canClose:t,onEscape:o}){let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let r=document.createElement("div");n.append(r);let i=r.attachShadow({mode:"open"});i.innerHTML=`${s}`;let a=new AbortController,{signal:l}=a,c=v=>{v.data&&typeof v.data=="object"&&e(v.data)};window.chrome.webview.addEventListener("message",c);let d=()=>{l.aborted||t&&!t()||(a.abort(),window.chrome.webview.removeEventListener("message",c),n.remove())};for(let v of["keydown","keyup","keypress"])i.addEventListener(v,k=>k.stopPropagation());document.addEventListener("keydown",v=>{if(v.key!=="Escape")return;v.stopPropagation();let k=i.querySelector(".askBackdrop [data-cancel]");k?k.click():o?.()||d()},{signal:l,capture:!0}),n.addEventListener("mousedown",v=>{v.target===n&&d()});let h=i.querySelector("[data-error]"),p=0,m=v=>{h&&(h.textContent=v,h.hidden=!1,clearTimeout(p),p=setTimeout(()=>{h.hidden=!0},8e3))},f=null,g=v=>{f!==v&&(f?.classList.remove("dropHover"),f=v,v?.classList.add("dropHover"))},b=v=>{for(let k of v.composedPath()){if(k===n)break;if(k instanceof HTMLElement&&Ll.has(k))return k}return null};return n.addEventListener("dragover",v=>{v.preventDefault();let k=b(v);g(k),v.dataTransfer&&(v.dataTransfer.dropEffect=k?"copy":"none")}),n.addEventListener("dragleave",v=>{v.relatedTarget||g(null)}),n.addEventListener("drop",v=>{v.preventDefault();let k=b(v);g(null);let E=k&&Ll.get(k);!E||!v.dataTransfer||Zk(v.dataTransfer).then(L=>{L.length&&E(L)}).catch(L=>m(`Could not read the dropped files: ${L?.message??L}`))}),i.querySelector("[data-close]")?.addEventListener("click",d),document.body.append(n),{shadow:i,close:d,signal:l,showError:m}}function nt(s,e,t,o=""){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
          -
          Cancel
          OK
          `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=o;let r=n.querySelector(".askInput");r.value=t,(s.querySelector(".managerPopup")??s).append(n),r.focus();let a=t.lastIndexOf(".");return r.setSelectionRange(t.lastIndexOf("/")+1,a>0?a:t.length),new Promise(l=>{let c=d=>{n.remove(),l(d)};n.querySelector("[data-ok]").onclick=()=>c(r.value.trim()||null),n.querySelector("[data-cancel]").onclick=()=>c(null),r.onkeydown=d=>{d.key==="Enter"&&c(r.value.trim()||null)}})}function Re(s,e,t,o){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
          -
          Cancel
          `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=t;let r=n.querySelector("[data-ok]");return r.textContent=o,(s.querySelector(".managerPopup")??s).append(n),new Promise(i=>{let a=l=>{n.remove(),i(l)};r.onclick=()=>a(!0),n.querySelector("[data-cancel]").onclick=()=>a(!1)})}var Os,Ll,Jk,Rl,go,Ds=w(()=>{"use strict";D();Cm();Os=()=>u.hostFeatures?.includes("script-manager")??!1,Ll=new WeakMap,Jk=5e3;Rl=s=>new Promise((e,t)=>{let o=new FileReader;o.onload=()=>e(String(o.result).slice(String(o.result).indexOf(",")+1)),o.onerror=()=>t(o.error),o.readAsDataURL(s)});go=s=>s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`});var Nl={};A(Nl,{open:()=>sy});var Qk,ey,Pl,ty,Do,Ge,Il,oy,sy,_l=w(()=>{"use strict";D();Em();vn();Ds();Oo();Qk=120,ey=4*1024*1024,Pl="custom.css",ty=()=>u.hostFeatures?.includes("css-manager")??!1,Do=s=>/\.css$/i.test(s)?s:`${s}.css`,Ge=(s,e)=>window.chrome.webview.postMessage(e?`css-${s} ${JSON.stringify(e)}`:`css-${s}`),Il=class{constructor(){this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.files=[],this.active=null,this.listed=!1,this.saving=null,this.savingName=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.closeAfterSave=!1,this.forceClose=!1,this.legacy=!1,this.live=!0,this.previewTimer=0}open(){if(this.popup)return;if(!ts()){u.showNotification("The CSS Manager needs a newer Kute. Update Kute to use it.",!1,6);return}this.legacy=!ty(),this.popup=fo($m,{onMessage:i=>this.receive(i),canClose:()=>this.canClose()});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{clearTimeout(this.previewTimer),Lt.revert(),this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.listed=!1,this.saving=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.forceClose=!1}),this.$("#ccFolder").onclick=()=>Ge("reveal",{name:this.editing??""}),this.$("#ccOff").hidden=u.settings.data.customCss!==!1,this.$("#ccStore").onclick=()=>this.openStore(),this.$("#ccStoreBack").onclick=()=>{this.$("#ccStorePanel").hidden=!0,this.$(".managerBody").classList.remove("storeOpen")};let o=this.$("#ccLive");o.checked=this.live,o.onchange=()=>{this.live=o.checked,this.preview()};let n=e.host.parentElement;if(this.$("#ccPeek").onpointerdown=i=>{i.preventDefault(),n.style.opacity="0",window.addEventListener("pointerup",()=>{n.style.opacity=""},{once:!0,signal:t})},this.legacy){this.$(".managerPopup").classList.add("legacy"),this.$("#ccHint").textContent="Loaded after all of Krunker's styles, so a rule with the same selector wins. Saved as Documents\\kute\\custom.css. Update Kute to keep several CSS files and switch between them.",this.$("#ccEditor").textContent="Loading...",Ge("read");return}this.$("#ccNew").onclick=()=>this.create(),this.$("#ccPaste").onclick=()=>this.paste();let r=this.$("#ccImportInput");this.$("#ccImport").onclick=()=>r.click(),r.onchange=()=>{this.importFiles([...r.files??[]]),r.value=""},st(this.$("#ccFiles"),i=>this.importFiles(i.map(a=>a.file))),this.$("#ccEditor").textContent="Loading...",Ge("list")}async openStore(){let e=this.$("#ccStorePanel"),t=this.$("#ccStoreList");this.$(".managerBody").classList.add("storeOpen"),e.hidden=!1,t.replaceChildren();let o=document.createElement("p");o.textContent="Loading the CSS Store...",t.append(o);try{let n=await fetch("https://raw.githubusercontent.com/Liamoulee/KSS/main/index.json");if(!n.ok)throw new Error(`HTTP ${n.status}`);let r=await n.json();t.replaceChildren();for(let i of r){let a=document.createElement("div");if(a.className="storeCard",i.preview){let m=document.createElement("img");m.src=i.preview.startsWith("https://")?i.preview:"https://raw.githubusercontent.com/Liamoulee/KSS/main/"+i.preview.split("/").map(encodeURIComponent).join("/"),m.alt=`${i.name} preview`,m.onerror=()=>m.remove(),a.append(m)}let l=document.createElement("h3");l.textContent=i.name;let c=document.createElement("p");c.textContent=`By ${i.author}`;let d=document.createElement("button");d.className="storeDownloadBtn";let h=this.files.some(m=>m.name.toLowerCase()===Do(i.name).toLowerCase()),p=m=>{d.textContent=m};p(h?"Already downloaded":"Download the CSS"),h&&(d.classList.add("installed"),d.disabled=!0),d.onclick=async()=>{if(h=this.files.some(m=>m.name.toLowerCase()===Do(i.name).toLowerCase()),h){p("Already downloaded"),d.classList.add("installed"),d.disabled=!0;return}d.disabled=!0,p("Downloading...");try{let m=await fetch("https://raw.githubusercontent.com/Liamoulee/KSS/main/"+i.file.split("/").map(encodeURIComponent).join("/"));if(!m.ok)throw new Error(`HTTP ${m.status}`);let f=await m.text();Ge("import",{name:Do(i.name),content:f}),h=!0,p("Already downloaded"),d.classList.add("installed"),d.disabled=!0}catch(m){console.error("CSS Store import failed:",m),d.disabled=!1,p("Try again")}},a.append(l,c,d),t.append(a)}r.length===0&&(t.textContent="No CSS available.")}catch(n){console.error("CSS Store failed to load:",n),t.replaceChildren();let r=document.createElement("p");r.textContent="Unable to load the CSS Store. Please try again later.",t.append(r)}}$(e){return this.popup?.shadow.querySelector(e)}receive(e){if(typeof e.managerError=="string"&&this.popup?.showError(e.managerError),this.legacy){typeof e.customCss?.content=="string"&&!this.editor&&(this.active=Pl,this.showEditor(Pl,e.customCss.content)),e.customCssSaved&&this.saving!==null&&this.saved(e.customCssSaved.error,Pl);return}e.cssFiles&&this.updateList(e.cssFiles),e.cssFile&&e.cssFile.name===this.loading&&(this.loading=null,typeof e.cssFile.content=="string"?this.showEditor(e.cssFile.name,e.cssFile.content):this.popup?.showError(`Could not read ${e.cssFile.name}`)),e.cssSaved&&this.saving!==null&&e.cssSaved.name===this.savingName&&this.saved(e.cssSaved.error,e.cssSaved.name),e.cssImported&&this.imported(e.cssImported),e.cssActivated&&(this.activating=!1,e.cssActivated.error?this.popup?.showError(`Could not switch: ${e.cssActivated.error}`):Lt.markSaved(String(e.cssActivated.content??"")),this.preview())}updateList(e){this.files=Array.isArray(e.files)?e.files:[];let t=this.active;this.active=e.active??null,t&&!this.active&&!this.activating&&(Lt.markSaved(""),this.preview());let o=new Set(this.files.map(n=>n.name));if(this.renaming&&this.editing===this.renaming.from&&o.has(this.renaming.to)){this.editing=this.renaming.to;let n=this.popup?.shadow.querySelector(".editorFile")?.firstChild;n&&(n.textContent=this.editing)}if(this.renaming=null,this.editing&&!o.has(this.editing)&&this.closeEditor(),!this.listed){this.listed=!0;let n=this.active??this.files[0]?.name;n?this.load(n):this.closeEditor()}this.renderList()}renderList(){let e=this.$("#ccList");if(e){if(e.textContent="",!this.files.length){let t=document.createElement("div");t.className="empty",t.textContent="No CSS files yet. Make one with New, paste one, or import .css files.",e.append(t)}for(let t of this.files)e.append(this.row(t));e.append(this.row(null))}}row(e){let t=e?.name??"",o=document.createElement("div");o.className="cssRow",o.classList.toggle("none",!e),o.classList.toggle("active",(this.active??"")===t),o.classList.toggle("editing",!!e&&this.editing===t);let n=document.createElement("div");n.className="cssRadio",n.title=e?"Use this one":"No CSS",n.onclick=l=>{l.stopPropagation(),this.activate(t)};let r=document.createElement("div");if(r.className="cssName",r.textContent=e?t:"None",o.append(n,r),!e)return o.onclick=()=>this.activate(""),o;let i=document.createElement("div");i.className="cssSize",i.textContent=go(e.size);let a=document.createElement("div");a.className="cssActions";for(let[l,c,d,h]of[["edit","Rename",()=>this.rename(t),!1],["delete","Delete",()=>this.remove(t),!0]]){let p=document.createElement("div");p.className=h?"iconBtn danger":"iconBtn",p.title=c,p.innerHTML=`${l}`,p.onclick=m=>{m.stopPropagation(),d()},a.append(p)}return o.append(i,a),o.onclick=()=>this.load(t),o}async load(e){e===this.editing&&this.editor||await this.discardChanges()&&(this.loading=e,Ge("get",{name:e}))}showEditor(e,t){let o=this.$("#ccEditor");if(!o)return;let{editor:n}=po(o,{title:e,content:t,language:"css",onSave:r=>this.save(r),onClose:()=>this.popup?.close(),onChange:()=>{clearTimeout(this.previewTimer),this.previewTimer=setTimeout(()=>this.preview(),Qk)}});this.editor=n,this.editing=e,this.renderList(),this.preview()}closeEditor(){this.editor=null,this.editing=null;let e=this.$("#ccEditor");e&&(e.innerHTML='
          Pick a file below to edit it.
          '),this.preview()}preview(){let{editor:e}=this;this.live&&e&&(this.editing===this.active||e.isDirty())?Lt.apply(e.getValue()):Lt.revert()}async discardChanges(){return!this.editor?.isDirty()||!this.popup?!0:Re(this.popup.shadow,"Unsaved changes",`Throw the changes to ${this.editing} away?`,"Discard")}save(e){!this.editor||!this.editing||this.saving!==null||(this.closeAfterSave=e,this.saving=this.editor.getValue(),this.savingName=this.editing,this.legacy?window.chrome.webview.postMessage(`css-write ${JSON.stringify({content:this.saving})}`):Ge("save",{name:this.editing,content:this.saving}))}saved(e,t){let o=this.saving??"";if(this.saving=null,e){this.popup?.showError(`Could not save: ${e}`);return}t===this.active&&Lt.markSaved(o),t===this.editing&&this.editor?.markSaved(o),this.preview(),this.closeAfterSave&&this.popup?.close()}activate(e){e===(this.active??"")||this.activating||(this.activating=!0,Ge("activate",{name:e}))}async create(){if(!this.popup)return;let e=await nt(this.popup.shadow,"New CSS file","theme.css","Ends in .css");e&&(this.openAfterImport=Do(e),Ge("import",{name:this.openAfterImport,content:""}))}async paste(){if(!this.popup)return;let e="";try{e=await navigator.clipboard.readText()}catch{this.popup.showError("Could not read the clipboard.");return}if(!e.trim()){this.popup.showError("The clipboard has no text in it. Copy the CSS first.");return}let t=await nt(this.popup.shadow,"Name for the pasted CSS","pasted.css","Ends in .css");t&&(this.openAfterImport=Do(t),Ge("import",{name:this.openAfterImport,content:e}))}async importFiles(e){let t=[];for(let o of e){if(!/\.css$/i.test(o.name)||o.size>ey){t.push(o.name);continue}Ge("import",{name:o.name,content:await o.text()})}t.length&&this.popup?.showError(`Not imported (only .css files up to 4 MB): ${t.join(", ")}`)}imported(e){if(e.error){this.popup?.showError(`Could not add ${e.requested}: ${e.error}`);return}this.active||this.activate(e.name),e.requested===this.openAfterImport?(this.openAfterImport=null,this.load(e.name)):this.editing||this.load(e.name)}async rename(e){if(!this.popup)return;let t=await nt(this.popup.shadow,`Rename ${e}`,e,"Ends in .css");if(!t)return;let o=Do(t);o!==e&&(this.renaming={from:e,to:o},Ge("rename",{from:e,to:o}))}async remove(e){!this.popup||!await Re(this.popup.shadow,`Delete ${e}?`,"It goes to the recycle bin.","Delete")||Ge("delete",{name:e})}canClose(){return this.forceClose||!this.editor?.isDirty()||!this.popup?!0:(Re(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},oy=new Il,sy=()=>oy.open()});var Am={};A(Am,{hostWatchesSwapper:()=>dr,reloadStylesheets:()=>Fs});var dr,Fs,ur=w(()=>{"use strict";D();dr=()=>u.hostFeatures?.includes("swapper-watch")??!1,Fs=s=>{for(let e of document.querySelectorAll('link[rel="stylesheet"]')){if(!(e instanceof HTMLLinkElement)||!e.href)continue;let t=new URL(e.href);if(!/(^|\.)krunker\.io$/.test(t.hostname)||!s.has(t.pathname.slice(1).toLowerCase()))continue;t.searchParams.set("kuteSwap",String(Date.now()));let o=e.cloneNode();o.href=t.href,o.addEventListener("load",()=>e.remove(),{once:!0}),o.addEventListener("error",()=>o.remove(),{once:!0}),e.after(o)}}});var Rm,Lm=w(()=>{Rm='

          Userscripts

          Userscripts off
          folder_openOpen scripts folder
          ×
          Scripts run inside Krunker. Only add scripts you trust, and never anything that breaks krunker.io/docs/terms.txt. Drop .js files onto a group, or create one with New script.
          '});var zl={};A(zl,{open:()=>ly});var ry,iy,oe,qs,Bl,ay,ly,Hl=w(()=>{"use strict";D();Lm();es();Ds();Oo();ry=4*1024*1024,iy=`// ==UserScript== + `;ur.innerHTML=nm;Lk=window.importSettingsPopup,Rk=window.importSettings,sm=1;window.importSettingsPopup=()=>{Lk(),queueMicrotask(()=>{U("#importTxt").after(ur)})};window.importSettings=()=>{let s=U("#importTxt"),e=JSON.parse(s.value);localStorage.getItem("kute_Sensitivity")==="false"&&(e.sensitivityX=localStorage.getItem("kro_setngss_sensitivityX"),e.sensitivityY=localStorage.getItem("kro_setngss_sensitivityY"),e.aimSensitivityX=localStorage.getItem("kro_setngss_aimSensitivityX"),e.aimSensitivityY=localStorage.getItem("kro_setngss_aimSensitivityY")),localStorage.getItem("kute_Sound")==="false"&&(e.sound=localStorage.getItem("kro_setngss_sound"),e.ambientVolume=localStorage.getItem("kro_setngss_ambientVolume"),e.dialogueVolume=localStorage.getItem("kro_setngss_dialogueVolume"),e.micVolume=localStorage.getItem("kro_setngss_micVolume"),e.voiceVolume=localStorage.getItem("kro_setngss_voiceVolume"),e.voiceDistance=localStorage.getItem("kro_setngss_voiceDistance"),e.gunsVolume=localStorage.getItem("kro_setngss_gunsVolume"),e.playerVolume=localStorage.getItem("kro_setngss_playerVolume"),e.skinVolume=localStorage.getItem("kro_setngss_skinVolume"),e.uiVolume=localStorage.getItem("kro_setngss_uiVolume"),e.assetVolume=localStorage.getItem("kro_setngss_assetVolume")),localStorage.getItem("kute_Keybinds")==="false"&&delete e.controls,s.value=JSON.stringify(e),Rk(),u.bindShoot(),Pk(),u.kuteIcons?.refresh(),u.autoDetect?.dropUndo(),u.autoDetect?.afterImport()}});var bl={};A(bl,{default:()=>Bk});function Nk(s){let e=s.nextElementSibling;return e instanceof HTMLElement&&e.matches(".market-grid-sentinel")?e:null}async function im(s){for(let e=0;e{"use strict";Ik=".view-stack-overlay, .modal-overlay";_k=()=>new Promise(s=>{requestAnimationFrame(()=>s())});gl=class{constructor(){this.watched=new WeakSet,this.popupClickAt=-1/0,this.lastTop=0,this.lastHeight=0,this.restore=null,this.onWheel=()=>this.finish(!1),document.addEventListener("scroll",e=>this.onScroll(e),{capture:!0,passive:!0}),document.addEventListener("click",e=>{e.target instanceof Element&&e.target.closest(Ik)&&(this.popupClickAt=performance.now())},{capture:!0,passive:!0})}onScroll(e){let t=e.target;if(!(t instanceof HTMLElement))return;if(this.restore){t===this.restore.scroller&&t.scrollTop!==this.restore.top&&(t.scrollTop=this.restore.top);return}let o=t.querySelector(":scope > .market-grid");o instanceof HTMLElement&&(this.watch(t,o),this.lastTop=t.scrollTop,this.lastHeight=o.offsetHeight)}watch(e,t){if(this.watched.has(t))return;this.watched.add(t);let o=t.children.length;new MutationObserver(n=>{let r=n.reduce((l,c)=>l+c.removedNodes.length,0),i=o;if(o=t.children.length,this.restore?.grid===t){o>i&&this.pageArrived();return}i>0&&r>=i&&this.lastTop>e.clientHeight&&performance.now()-this.popupClickAt<5e3&&this.start(e,t,i,n.flatMap(l=>[...l.removedNodes]))}).observe(t,{childList:!0})}start(e,t,o,n){let r=document.createElement("div");r.className=t.className,r.style.cssText=t.style.cssText,r.append(...n),this.restore={scroller:e,grid:t,sentinels:new Set,top:this.lastTop,count:o,until:performance.now()+1e4,pageTimer:0,picture:r},t.style.minHeight=`${this.lastHeight}px`,t.style.alignContent="start",Object.assign(r.style,{position:"absolute",top:`${t.offsetTop}px`,left:`${t.offsetLeft}px`,width:`${t.offsetWidth}px`,margin:"0",zIndex:"1",pointerEvents:"none"}),e.append(r),e.style.overflowAnchor="none",e.scrollTop=this.lastTop,e.addEventListener("wheel",this.onWheel,{passive:!0}),this.waitForPage(),this.blink(this.restore).catch(i=>console.error("[kute] inventory scroll:",i))}pageArrived(){let{restore:e}=this;e&&(e.grid.children.length>=e.count-1||performance.now()>e.until?this.finish(!0):this.waitForPage())}waitForPage(){let{restore:e}=this;e&&(clearTimeout(e.pageTimer),e.pageTimer=window.setTimeout(()=>this.finish(!0),1500))}async blink(e){for(;this.restore===e;){let t=Nk(e.grid);t&&(e.sentinels.add(t),t.style.position="sticky",t.style.bottom="0",t.style.display="none",await im(2),t.style.display=""),await im(2)}}finish(e){let{restore:t}=this;if(t){this.restore=null,clearTimeout(t.pageTimer),t.scroller.removeEventListener("wheel",this.onWheel),t.picture.remove(),t.grid.style.minHeight="",t.grid.style.alignContent="",t.scroller.style.overflowAnchor="";for(let o of t.sentinels)o.style.position="",o.style.bottom="",o.style.display="";e&&(t.scroller.scrollTop=t.top),this.lastTop=t.scroller.scrollTop,this.lastHeight=t.grid.offsetHeight}}},Bk=new gl});var lm,am=w(()=>{lm=`#kuteKeystrokes{position:absolute;left:463px;bottom:23px;z-index:10;display:flex;align-items:center;gap:12px;box-sizing:border-box;width:190px;height:82px;padding:5px 10px;border:1px solid rgba(53,224,232,.7);border-radius:8px;background:#0a1416e0;box-shadow:0 4px 18px #00000059;color:#cfeff1;font-family:Arial,sans-serif;font-weight:700;pointer-events:none}#kuteKeystrokesKeys{display:grid;grid-template-columns:repeat(4,24px);grid-template-rows:repeat(3,20px);gap:4px}.kuteKey{display:flex;justify-content:center;align-items:center;overflow:hidden;border:1px solid rgba(53,224,232,.35);border-radius:4px;background:#35e0e814;font-size:10px;white-space:nowrap}.kuteKey.on,#kuteMouse>.on,#kuteWheel>.on{border-color:#35e0e8;background:#35e0e8;color:#0a1416;box-shadow:0 0 8px #35e0e8cc}#kuteKeyMelee{grid-area:1 / 1}#kuteKeyForward{grid-area:1 / 2}#kuteKeySwap{grid-area:1 / 3}#kuteKeyReload{grid-area:1 / 4}#kuteKeyLeft{grid-area:2 / 1}#kuteKeyBack{grid-area:2 / 2}#kuteKeyRight{grid-area:2 / 3}#kuteKeyCrouch{grid-area:3 / 1 / 4 / 3}#kuteKeyJump{grid-area:3 / 3 / 4 / 5}#kuteMouseBox{position:relative;padding:5px}.kuteMove{--arc: rgba(53, 224, 232, .14);position:absolute;inset:0;box-sizing:border-box;border:2px solid transparent;border-radius:24px 24px 19px 19px}.kuteMove.on{--arc: rgba(53, 224, 232, .6)}.kuteMove.fast{--arc: #35e0e8}#kuteMoveLeft{border-left-color:var(--arc)}#kuteMoveRight{border-right-color:var(--arc)}#kuteMoveUp{border-top-color:var(--arc)}#kuteMoveDown{border-bottom-color:var(--arc)}#kuteMouse{position:relative;width:38px;height:58px;box-sizing:border-box;border:1px solid rgba(53,224,232,.35);border-radius:19px 19px 14px 14px;overflow:hidden}#kuteMouseLeft,#kuteMouseRight{position:absolute;top:0;width:50%;height:45%;border-bottom:1px solid rgba(53,224,232,.35);box-sizing:border-box;background:#35e0e814}#kuteMouseLeft{left:0}#kuteMouseRight{right:0}#kuteMouseSplit{position:absolute;top:0;left:calc(50% - .5px);width:1px;height:45%;background:#35e0e859}#kuteWheel{position:absolute;top:6px;left:50%;z-index:1;display:flex;flex-direction:column;box-sizing:border-box;width:10px;height:18px;margin-left:-5px;overflow:hidden;border:1px solid rgba(53,224,232,.5);border-radius:5px;background:#0a1416}#kuteWheel.on{border-color:#35e0e8;background:#35e0e8;box-shadow:0 0 8px #35e0e8cc}#kuteWheelUp,#kuteWheelDown{flex:1 1 0}#kuteWheelUp{border-bottom:1px solid rgba(53,224,232,.35)} +`});var dm,cm=w(()=>{dm='
          '});var xl={};A(xl,{default:()=>Vk});function gm(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`N${s-96}`:s>=112&&s<=123?`F${s-111}`:Gk[s]??"?"}function Wk(s,e){let t=[],o=[[`cont_${s}_alt`,-1],[`cont_${s}`,e]];for(let[n,r]of o){let i=null;try{i=window.localStorage.getItem(n)}catch{i=null}let a=i===null?r:Number(i);a>0&&a<1e4&&t.push(a)}return t}var Ok,Fk,um,pm,wl,Dk,qk,kl,hm,mm,Kk,fm,jk,Uk,Gk,yl,Vk,Sl=w(()=>{"use strict";am();cm();F();Ok=131,Fk=120,um=32,pm=80,wl=.02,Dk=.35,qk=20,kl=80,hm=3,mm=3e3,Kk=3,fm="kute_keystrokes_speed",jk=120,Uk=[["kuteKeyForward","0",87],["kuteKeyBack","1",83],["kuteKeyLeft","2",65],["kuteKeyRight","3",68],["kuteKeyJump","jumpKey",32],["kuteKeyCrouch","crouchKey",16],["kuteKeyReload","reloadKey",82],["kuteKeyMelee","meleeKey",81],["kuteKeySwap","swapKey",69]],Gk={8:"BKSP",9:"TAB",13:"ENT",16:"SHIFT",17:"CTRL",18:"ALT",20:"CAPS",32:"SPACE",37:"\u2190",38:"\u2191",39:"\u2192",40:"\u2193",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"};yl=class{constructor(){this.widget=null,this.byCode=new Map,this.wheelTimers=new Map,this.rampWheelAt=-1/0,this.spaceDownAt=-1/0,this.spaceIgnored=!1,this.arcs=[],this.moveX=0,this.moveY=0,this.lastMove=-1/0,this.moveTimer=0,this.typical=Kk,this.typicalMs=0,this.fastUntil=[0,0,0,0],this.onKeyDown=e=>this.key(e.keyCode,!0),this.onKeyUp=e=>this.key(e.keyCode,!1),this.onMouseDown=e=>this.button(e.button,!0),this.onMouseUp=e=>this.button(e.button,!1),this.onWheel=e=>this.wheel(e.deltaY<0),this.onMouseMove=e=>this.move(e),this.onMoveIdle=()=>{this.moveTimer=0;let e=performance.now()-this.lastMove;if(e{let{data:t}=e;typeof t?.wheel=="number"&&t.wheel!==0?this.wheel(t.wheel>0):typeof t?.rampWheel=="number"&&t.rampWheel!==0&&this.rampWheel(t.rampWheel>0)},this.releaseAll=()=>{for(let e of this.widget?.querySelectorAll(".on")??[])e.classList.remove("on");this.moveX=0,this.moveY=0,this.fastUntil.fill(0),this.drawMove()},this.onPointerLockChange=()=>{if(document.pointerLockElement){this.readBinds();return}this.releaseAll();try{window.localStorage.setItem(fm,this.typical.toFixed(3))}catch{}},u.settings.toggleKeystrokes=e=>this.toggle(e),this.toggle(!!u.settings.data.keystrokes)}toggle(e){if(queueMicrotask(()=>u.hudEditor?.apply()),!e){this.remove();return}if(this.widget)return;let t=document.createElement("style");t.id="kuteKeystrokesCSS",t.textContent=lm,document.head.append(t),this.widget=document.createElement("div"),this.widget.id="kuteKeystrokes",this.widget.innerHTML=dm,(document.querySelector("#uiBase")??document.body).append(this.widget),this.readBinds(),this.loadTypical();let{widget:o}=this,n=[["kuteMoveLeft",-1,0],["kuteMoveRight",1,0],["kuteMoveUp",0,-1],["kuteMoveDown",0,1]];this.arcs=n.map(([r,i,a])=>[o.querySelector(`#${r}`),i,a]),window.addEventListener("keydown",this.onKeyDown,!0),window.addEventListener("keyup",this.onKeyUp,!0),window.addEventListener("mousedown",this.onMouseDown,!0),window.addEventListener("mouseup",this.onMouseUp,!0),window.addEventListener("mousemove",this.onMouseMove,{capture:!0,passive:!0}),window.addEventListener("wheel",this.onWheel,{capture:!0,passive:!0}),window.addEventListener("blur",this.releaseAll),document.addEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.addEventListener("message",this.onHostMessage)}remove(){window.removeEventListener("keydown",this.onKeyDown,!0),window.removeEventListener("keyup",this.onKeyUp,!0),window.removeEventListener("mousedown",this.onMouseDown,!0),window.removeEventListener("mouseup",this.onMouseUp,!0),window.removeEventListener("mousemove",this.onMouseMove,!0),window.removeEventListener("wheel",this.onWheel,!0),window.removeEventListener("blur",this.releaseAll),document.removeEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.removeEventListener("message",this.onHostMessage);for(let e of this.wheelTimers.values())clearTimeout(e);this.wheelTimers.clear(),clearTimeout(this.moveTimer),this.moveTimer=0,this.arcs=[],this.widget?.remove(),this.widget=null,this.byCode.clear(),document.querySelector("#kuteKeystrokesCSS")?.remove()}readBinds(){if(this.widget){this.byCode.clear();for(let[e,t,o]of Uk){let n=this.widget.querySelector(`#${e}`);if(!n)continue;let r=Wk(t,o);n.textContent=r.length>0?gm(r[0]):"",n.title=r.map(gm).join(" / ");for(let i of r){let a=this.byCode.get(i)??[];a.push(n),this.byCode.set(i,a)}}}}key(e,t){if(e===Ok){this.button(0,t);return}if(e===um){t&&(this.spaceDownAt=performance.now(),this.spaceIgnored=this.spaceDownAt-this.rampWheelAt=100,n=Math.min(t-this.lastMove,100);if(this.lastMove=t,!(n>0))return;let r=Math.exp(-n/qk);this.moveX=this.moveX*r+e.movementX/n*(1-r),this.moveY=this.moveY*r+e.movementY/n*(1-r);let i=Math.hypot(this.moveX,this.moveY);!o&&i>wl&&(this.typicalMs=Math.min(this.typicalMs+n,mm),this.typical+=(Math.min(i,this.typical*hm)-this.typical)*(n/this.typicalMs)),this.drawMove(t),this.moveTimer||(this.moveTimer=window.setTimeout(this.onMoveIdle,kl))}loadTypical(){let e=NaN;try{e=Number(window.localStorage.getItem(fm))}catch{e=NaN}e>0&&(this.typical=e,this.typicalMs=mm)}drawMove(e=performance.now()){let t=Math.hypot(this.moveX,this.moveY),o=Math.max(this.typical,wl)*hm;this.arcs.forEach(([n,r,i],a)=>{let l=this.moveX*r+this.moveY*i;l>o&&(this.fastUntil[a]=e+jk);let c="kuteMove";this.fastUntil[a]>e?c="kuteMove on fast":t>wl&&l>=t*Dk&&(c="kuteMove on"),n.className!==c&&(n.className=c)})}rampWheel(e){if(this.rampWheelAt=performance.now(),this.rampWheelAt-this.spaceDownAt{this.widget?.querySelector(`#${t}`)?.classList.remove("on"),this.wheelTimers.delete(t)},Fk))}},Vk=new yl});var vm,bm=w(()=>{vm='

          Kute Icons

          Tick all
          Done
          '});var Cl={};A(Cl,{default:()=>Jk});function Em(){let s=u.settings.data[El];return s&&typeof s=="object"?s:{}}function wm(){return u.hostFeatures?.includes("kute-icons")??!1}function km(s){return Em()[s.id]!==!1}function ym(s){return s.hiddenBy.filter(e=>{let t=null;try{t=localStorage.getItem(`kro_setngss_${e.id}`)}catch{return!1}return t===null?!1:e.kind==="checkbox"?t==="false":Number(t)===0})}function xm(s){return s.kind==="checkbox"?`${s.name} is off`:`${s.name} is 0`}async function Sm(s){await Ce({title:"Reload the game?",paragraphs:[s,"The game keeps the images it already loaded, so this shows after a reload. Nothing else changes, and you can do it later."],stay:"Later",leave:"Reload now"})&&window.chrome.webview.postMessage("hard-reload")}var Xk,El,$l,Jk,Ml=w(()=>{"use strict";bm();F();Pt();wn();Xk="https://krunker.io/kute-icons/",El="kuteIconSlots";$l=class{constructor(){this.asking=!1,this.watched=new WeakSet,u.kuteIcons={customize:()=>this.customize(),refresh:()=>this.refresh()},u.settings.toggleKuteIcons=e=>this.onToggle(!!e),this.refresh(),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&setTimeout(()=>this.refresh(),1500)})}refresh(){for(let e of Ao){let t=e.element?document.getElementById(e.element):null;!t||this.watched.has(t)||(this.watched.add(t),new MutationObserver(()=>oo()).observe(t,{attributes:!0,attributeFilter:["src"]}))}oo()}async onToggle(e){if(oo(),!wm()){e&&u.showNotification("Kute icons need a newer Kute, update the client",!1,4);return}e&&await this.warnHidden(Ao.filter(km)),await Sm(e?"Kute icons are on.":"Kute icons are off, your own icons are back.")}async warnHidden(e){let t=new Map,o=[];for(let r of e){let i=ym(r);if(i.length!==0){for(let a of i)t.set(a.id,a);o.push(`${r.name}: ${i.map(a=>xm(a)).join(", ")}`)}}if(o.length===0||(this.asking=!0,!await Ce({title:"Hidden by your Krunker settings",paragraphs:[o.length===1?"This Kute icon will not show:":"These Kute icons will not show:",...o,"Switch those Krunker settings on for you?"],stay:"Leave them",leave:"Switch on"}).finally(()=>{this.asking=!1})))return!1;for(let r of t.values())window.setSetting(r.id,r.kind==="checkbox"?!0:"1");return u.showNotification("Switched on in your Krunker settings",!1,3),!0}customize(){let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=vm;let n=f=>o.querySelector(`#${f}`),r=wm(),i=u.settings.data.kuteIcons===!0,a="Ticked icons show Kute's version. Your Krunker settings stay as they are.";i||(a="Use Kute Icons is off, so none of these show yet."),r||(a="This needs a newer Kute. Update the client to use Kute icons."),n("kiHint").textContent=a;let l=!1,c=[],d=()=>{for(let{slot:f,box:g,note:b}of c){let v=g.checked?ym(f):[];if(b.replaceChildren(),v.length===0)continue;b.append(`Hidden: ${v.map(E=>xm(E)).join(", ")} `);let k=document.createElement("span");k.className="kiShow",k.textContent="Show it",k.onclick=async E=>{E.preventDefault(),E.stopPropagation(),await this.warnHidden([f]),d()},b.append(k)}},h=(f,g)=>{l=!0;let b={...Em(),[f.id]:g};u.settings.data[El]=b,window.chrome.webview.postMessage(`set-config-json ${El} ${JSON.stringify(b)}`)};for(let f of Ao){let g=document.createElement("label");g.className="kiRow";let b=document.createElement("img");b.src=Xk+f.file,b.alt="";let v=document.createElement("span");v.textContent=f.name;let k=document.createElement("span");k.className="kiHidden",v.append(k);let E=document.createElement("input");E.type="checkbox",E.checked=km(f),E.onchange=async()=>{h(f,E.checked),E.checked&&await this.warnHidden([f]),d()},g.append(b,v,E),n("kiRows").append(g),c.push({slot:f,box:E,note:k})}d(),n("kiAll").onclick=async()=>{let f=c.filter(({box:g})=>!g.checked);for(let{slot:g,box:b}of f)b.checked=!0,h(g,!0);await this.warnHidden(f.map(({slot:g})=>g)),d()};let p=new AbortController,m=()=>{p.abort(),e.remove(),l&&r&&u.settings.data.kuteIcons===!0&&Sm("Your Kute icons changed.")};n("kiDone").onclick=m,e.addEventListener("mousedown",f=>{f.target===e&&m()}),document.addEventListener("keydown",f=>{f.key!=="Escape"||this.asking||(f.stopPropagation(),m())},{signal:p.signal,capture:!0}),document.body.append(e)}},Jk=new $l});var Ll={};A(Ll,{default:()=>Qk});var $m,Cm,Tl,Mm,Zk,Al,Qk,Rl=w(()=>{"use strict";F();Pt();$m="kute_update_asked",Cm="kute_update_ready",Tl=[.25,.5,.75],Mm=()=>new Promise(s=>{let e=()=>{document.pointerLockElement?setTimeout(e,2e3):s()};e()}),Zk=s=>`${Math.round(s/1048576)} MB`,Al=class{constructor(){this.step=0,this.busy=!1,!(u.platform!=="linux"||!u.hostFeatures?.includes("appimage-update"))&&(window.chrome.webview.addEventListener("message",e=>{let t=e.data?.update;t&&typeof t=="object"&&this.receive(t).catch(()=>{})}),window.chrome.webview.postMessage("update-state"))}async receive(e){e.stage==="offer"?await this.offer(e):e.stage==="downloading"?this.progress(e):e.stage==="ready"?await this.ready(e):e.stage==="failed"&&u.showNotification(`The update to Kute ${e.version} failed: ${e.error??"unknown error"}`,!1,8)}async offer(e){if(this.busy||sessionStorage.getItem($m)===e.version)return;this.busy=!0,await Mm(),sessionStorage.setItem($m,e.version);let t=e.install===!0,o=await Ce({title:`Kute ${e.version} is out`,paragraphs:t?[`You have ${e.current}. The update${e.size?` (${Zk(e.size)})`:""} downloads while you play.`,"It replaces your Kute AppImage and starts the next time you open Kute."]:[`You have ${e.current}.`,"This copy of Kute does not run as an AppImage and cannot update itself. The download page has the new version."],stay:"Later",leave:t?"Update":"Open download page"});this.busy=!1,o&&(window.chrome.webview.postMessage(t?"update-install":"update-page"),t&&u.showNotification(`Downloading Kute ${e.version}`,!1,4))}progress(e){if(!e.total||!e.done)return;let t=e.done/e.total;for(;this.step=Tl[this.step];)u.showNotification(`Downloading Kute ${e.version}: ${Math.round(Tl[this.step]*100)} %`,!1,3),this.step++}async ready(e){if(sessionStorage.getItem(Cm)===e.version)return;await Mm(),sessionStorage.setItem(Cm,e.version),await Ce({title:`Kute ${e.version} is ready`,paragraphs:["It starts the next time you open Kute. Restart now to use it right away."],stay:"Later",leave:"Restart now"})&&window.chrome.webview.postMessage("update-restart")}},Qk=new Al});var Am,Tm=w(()=>{Am=`

          CSS Manager

          visibilityHold to peek
          folder_openShow folder
          storeCSS Store
          ×
          One file is active at a time and loads after all of Krunker's styles, so a rule with the same selector wins. Krunker's inline styles and its own !important rules still need !important here. Files live in Documents\\kute\\css.
          Your CSS
          Click a file to edit it, the circle makes it active
          addNew
          content_pastePaste
          upload_fileImport
          `});var Rm,Lm=w(()=>{Rm=`:host{--accent: #35e0e8;--bg: #1e1e1e;--panel: #252525;--line: #333;--muted: #999;--ok: #5ce05a;--warn: #ffb74d;--bad: #eb5656}.managerPopup{position:relative;box-sizing:border-box;display:flex;flex-direction:column;width:min(1020px,94vw);height:min(760px,90vh);background:var(--bg);color:#fff;border-radius:14px;box-shadow:0 8px 48px #000c;font-family:Consolas,monospace;font-size:14px;overflow:hidden}.managerHeader{display:flex;align-items:center;gap:.6em;padding:1em 1.2em .8em 1.4em;border-bottom:1px solid var(--line)}.managerTitle{margin:0 auto 0 0;font-size:1.6em;letter-spacing:1px;color:var(--accent)}.managerClose{margin-left:.4em;font-size:1.6em;line-height:1;color:var(--muted);cursor:pointer}.managerClose:hover{color:#fff}.managerHint{padding:.7em 1.4em;color:var(--muted);line-height:1.5;border-bottom:1px solid var(--line)}.managerHint code{padding:.05em .35em;border-radius:4px;background:#181818;color:var(--accent)}.managerBody{flex:1 1 auto;min-height:0;overflow-y:auto;padding:1em 1.4em}.managerError,.managerNotice{margin:.8em 1.4em 0;padding:.6em .9em;border-radius:8px;white-space:pre-wrap;line-height:1.5}.managerError{background:#4a1d1d;color:#ffb4b4}.managerNotice{display:flex;align-items:center;gap:1em;background:#173a52;color:#cfe8ff}.managerNotice span{flex:1}[hidden]{display:none!important}.btn{display:inline-flex;align-items:center;gap:.4em;padding:.45em .9em;border-radius:7px;background:#2d2d2d;color:#fff;cursor:pointer;user-select:none;white-space:nowrap}.btn:hover{background:#383838;color:var(--accent)}.btn.primary{background:#1b5e63}.btn.primary:hover{background:#23777d;color:#fff}.btn.small{padding:.25em .55em;font-size:.92em}.iconBtn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:var(--muted);cursor:pointer;user-select:none}.iconBtn:hover{background:#333;color:#fff}.iconBtn.danger:hover{color:var(--bad)}.mi{font-family:Material Icons;font-weight:400;font-style:normal;font-size:18px;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;font-feature-settings:"liga"}.group{margin-bottom:1.2em;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.groupHead{display:flex;align-items:center;gap:.7em;padding:.7em .9em;border-bottom:1px solid var(--line)}.groupTitle{font-size:1.15em;color:#fff}.groupRuns{margin-right:auto;color:var(--muted);font-size:.9em}.empty{padding:.9em;color:var(--muted)}.dropZone{margin:.7em;padding:.8em;border:2px dashed #444;border-radius:8px;color:#777;text-align:center}.dropHover{border-color:var(--accent)!important;background:#35e0e814!important;color:var(--accent)}.toggle{position:relative;flex:0 0 auto;width:38px;height:20px;border-radius:10px;background:#444;cursor:pointer;transition:background .15s}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#ddd;transition:left .15s}.toggle.on{background:#1b8f96}.toggle.on:after{left:21px;background:#fff}.state{flex:0 0 auto;padding:.1em .5em;border-radius:5px;font-size:.85em;background:#333;color:var(--muted)}.state.ok{background:#1f3d1f;color:var(--ok)}.state.warn{background:#3d321f;color:var(--warn)}.state.bad{background:#3d1f1f;color:var(--bad);cursor:help}.askBackdrop{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background:#0009}.askBox{width:min(480px,90%);padding:1.3em 1.4em;border-radius:12px;background:#262626;box-shadow:0 8px 32px #000c}.askTitle{margin-bottom:.8em;font-size:1.1em;color:var(--accent)}.askInput,.field{box-sizing:border-box;width:100%;padding:.5em .7em;border:1px solid #444;border-radius:6px;background:#181818;color:#fff;font:inherit;outline:none}.askInput:focus,.field:focus{border-color:var(--accent)}.askHint{margin-top:.5em;color:var(--muted);font-size:.9em;line-height:1.4}.askActions{display:flex;justify-content:flex-end;gap:.6em;margin-top:1em}.editor{position:relative;display:flex;flex:1 1 auto;min-height:0;border:1px solid var(--line);border-radius:8px;background:#181818;overflow:hidden;font-family:Consolas,Cascadia Mono,monospace;font-size:13.5px;line-height:1.5;tab-size:4}.editorGutter{flex:0 0 auto;padding:.6em .6em .6em .8em;overflow:hidden;color:#555;text-align:right;white-space:pre;user-select:none;border-right:1px solid #2a2a2a}.editorCode{position:relative;flex:1 1 auto;min-width:0}.editorCode pre,.editorCode textarea{position:absolute;inset:0;box-sizing:border-box;margin:0;padding:.6em .8em;border:0;font:inherit;line-height:inherit;tab-size:inherit;white-space:pre;overflow-wrap:normal;letter-spacing:normal}.editorCode pre{overflow:hidden;color:#d4d4d4;pointer-events:none}.editorCode textarea{resize:none;overflow:auto;background:transparent;color:transparent;caret-color:#fff;outline:none}.editorCode textarea::selection{background:#3578c873;color:transparent}.tk-c{color:#6a9955}.tk-s{color:#ce9178}.tk-n{color:#b5cea8}.tk-k{color:#c586c0}.tk-l{color:#569cd6}.tk-f{color:#dcdcaa}.tk-p{color:#9cdcfe}.editorBar{display:flex;align-items:center;gap:.6em;margin-bottom:.7em}.editorFile{margin-right:auto;color:#fff;font-size:1.05em}.editorFile .dirty{color:var(--warn)}.editorView{display:flex;flex-direction:column;height:100%}.editorKeys{margin-top:.5em;color:#666;font-size:.85em} +`});var Pm={};A(Pm,{askConfirm:()=>Pe,askText:()=>nt,formatSize:()=>wo,hostSupportsManagers:()=>Ds,makeDropTarget:()=>st,openManagerPopup:()=>vo,readBase64:()=>Il});function st(s,e){Pl.set(s,e)}function sy(s){let e=[...s.items].filter(n=>n.kind==="file").map(n=>n.webkitGetAsEntry()).filter(n=>n!==null);if(!e.length)return Promise.resolve([...s.files].map(n=>({path:n.name,file:n})));let t=[],o=async n=>{if(t.length>=oy)return;if(n.isFile){let i=await new Promise((a,l)=>n.file(a,l));t.push({path:n.fullPath.replace(/^\/+/,""),file:i});return}let r=n.createReader();for(;;){let i=await new Promise((a,l)=>r.readEntries(a,l));if(!i.length)break;for(let a of i)await o(a)}};return Promise.all(e.map(o)).then(()=>t)}function vo(s,{onMessage:e,canClose:t,onEscape:o}){let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let r=document.createElement("div");n.append(r);let i=r.attachShadow({mode:"open"});i.innerHTML=`${s}`;let a=new AbortController,{signal:l}=a,c=v=>{v.data&&typeof v.data=="object"&&e(v.data)};window.chrome.webview.addEventListener("message",c);let d=()=>{l.aborted||t&&!t()||(a.abort(),window.chrome.webview.removeEventListener("message",c),n.remove())};for(let v of["keydown","keyup","keypress"])i.addEventListener(v,k=>k.stopPropagation());document.addEventListener("keydown",v=>{if(v.key!=="Escape")return;v.stopPropagation();let k=i.querySelector(".askBackdrop [data-cancel]");k?k.click():o?.()||d()},{signal:l,capture:!0}),n.addEventListener("mousedown",v=>{v.target===n&&d()});let h=i.querySelector("[data-error]"),p=0,m=v=>{h&&(h.textContent=v,h.hidden=!1,clearTimeout(p),p=setTimeout(()=>{h.hidden=!0},8e3))},f=null,g=v=>{f!==v&&(f?.classList.remove("dropHover"),f=v,v?.classList.add("dropHover"))},b=v=>{for(let k of v.composedPath()){if(k===n)break;if(k instanceof HTMLElement&&Pl.has(k))return k}return null};return n.addEventListener("dragover",v=>{v.preventDefault();let k=b(v);g(k),v.dataTransfer&&(v.dataTransfer.dropEffect=k?"copy":"none")}),n.addEventListener("dragleave",v=>{v.relatedTarget||g(null)}),n.addEventListener("drop",v=>{v.preventDefault();let k=b(v);g(null);let E=k&&Pl.get(k);!E||!v.dataTransfer||sy(v.dataTransfer).then(L=>{L.length&&E(L)}).catch(L=>m(`Could not read the dropped files: ${L?.message??L}`))}),i.querySelector("[data-close]")?.addEventListener("click",d),document.body.append(n),{shadow:i,close:d,signal:l,showError:m}}function nt(s,e,t,o=""){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
          +
          Cancel
          OK
          `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=o;let r=n.querySelector(".askInput");r.value=t,(s.querySelector(".managerPopup")??s).append(n),r.focus();let a=t.lastIndexOf(".");return r.setSelectionRange(t.lastIndexOf("/")+1,a>0?a:t.length),new Promise(l=>{let c=d=>{n.remove(),l(d)};n.querySelector("[data-ok]").onclick=()=>c(r.value.trim()||null),n.querySelector("[data-cancel]").onclick=()=>c(null),r.onkeydown=d=>{d.key==="Enter"&&c(r.value.trim()||null)}})}function Pe(s,e,t,o){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
          +
          Cancel
          `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=t;let r=n.querySelector("[data-ok]");return r.textContent=o,(s.querySelector(".managerPopup")??s).append(n),new Promise(i=>{let a=l=>{n.remove(),i(l)};r.onclick=()=>a(!0),n.querySelector("[data-cancel]").onclick=()=>a(!1)})}var Ds,Pl,oy,Il,wo,qs=w(()=>{"use strict";F();Lm();Ds=()=>u.hostFeatures?.includes("script-manager")??!1,Pl=new WeakMap,oy=5e3;Il=s=>new Promise((e,t)=>{let o=new FileReader;o.onload=()=>e(String(o.result).slice(String(o.result).indexOf(",")+1)),o.onerror=()=>t(o.error),o.readAsDataURL(s)});wo=s=>s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`});var Bl={};A(Bl,{open:()=>ly});var ny,ry,Nl,iy,qo,Ge,_l,ay,ly,zl=w(()=>{"use strict";F();Tm();kn();qs();Do();ny=120,ry=4*1024*1024,Nl="custom.css",iy=()=>u.hostFeatures?.includes("css-manager")??!1,qo=s=>/\.css$/i.test(s)?s:`${s}.css`,Ge=(s,e)=>window.chrome.webview.postMessage(e?`css-${s} ${JSON.stringify(e)}`:`css-${s}`),_l=class{constructor(){this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.files=[],this.active=null,this.listed=!1,this.saving=null,this.savingName=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.closeAfterSave=!1,this.forceClose=!1,this.legacy=!1,this.live=!0,this.previewTimer=0}open(){if(this.popup)return;if(!ss()){u.showNotification("The CSS Manager needs a newer Kute. Update Kute to use it.",!1,6);return}this.legacy=!iy(),this.popup=vo(Am,{onMessage:i=>this.receive(i),canClose:()=>this.canClose()});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{clearTimeout(this.previewTimer),Rt.revert(),this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.listed=!1,this.saving=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.forceClose=!1}),this.$("#ccFolder").onclick=()=>Ge("reveal",{name:this.editing??""}),this.$("#ccOff").hidden=u.settings.data.customCss!==!1,this.$("#ccStore").onclick=()=>this.openStore(),this.$("#ccStoreBack").onclick=()=>{this.$("#ccStorePanel").hidden=!0,this.$(".managerBody").classList.remove("storeOpen")};let o=this.$("#ccLive");o.checked=this.live,o.onchange=()=>{this.live=o.checked,this.preview()};let n=e.host.parentElement;if(this.$("#ccPeek").onpointerdown=i=>{i.preventDefault(),n.style.opacity="0",window.addEventListener("pointerup",()=>{n.style.opacity=""},{once:!0,signal:t})},this.legacy){this.$(".managerPopup").classList.add("legacy"),this.$("#ccHint").textContent="Loaded after all of Krunker's styles, so a rule with the same selector wins. Saved as Documents\\kute\\custom.css. Update Kute to keep several CSS files and switch between them.",this.$("#ccEditor").textContent="Loading...",Ge("read");return}this.$("#ccNew").onclick=()=>this.create(),this.$("#ccPaste").onclick=()=>this.paste();let r=this.$("#ccImportInput");this.$("#ccImport").onclick=()=>r.click(),r.onchange=()=>{this.importFiles([...r.files??[]]),r.value=""},st(this.$("#ccFiles"),i=>this.importFiles(i.map(a=>a.file))),this.$("#ccEditor").textContent="Loading...",Ge("list")}async openStore(){let e=this.$("#ccStorePanel"),t=this.$("#ccStoreList");this.$(".managerBody").classList.add("storeOpen"),e.hidden=!1,t.replaceChildren();let o=document.createElement("p");o.textContent="Loading the CSS Store...",t.append(o);try{let n=await fetch("https://raw.githubusercontent.com/Liamoulee/KSS/main/index.json");if(!n.ok)throw new Error(`HTTP ${n.status}`);let r=await n.json();t.replaceChildren();for(let i of r){let a=document.createElement("div");if(a.className="storeCard",i.preview){let m=document.createElement("img");m.src=i.preview.startsWith("https://")?i.preview:"https://raw.githubusercontent.com/Liamoulee/KSS/main/"+i.preview.split("/").map(encodeURIComponent).join("/"),m.alt=`${i.name} preview`,m.onerror=()=>m.remove(),a.append(m)}let l=document.createElement("h3");l.textContent=i.name;let c=document.createElement("p");c.textContent=`By ${i.author}`;let d=document.createElement("button");d.className="storeDownloadBtn";let h=this.files.some(m=>m.name.toLowerCase()===qo(i.name).toLowerCase()),p=m=>{d.textContent=m};p(h?"Already downloaded":"Download the CSS"),h&&(d.classList.add("installed"),d.disabled=!0),d.onclick=async()=>{if(h=this.files.some(m=>m.name.toLowerCase()===qo(i.name).toLowerCase()),h){p("Already downloaded"),d.classList.add("installed"),d.disabled=!0;return}d.disabled=!0,p("Downloading...");try{let m=await fetch("https://raw.githubusercontent.com/Liamoulee/KSS/main/"+i.file.split("/").map(encodeURIComponent).join("/"));if(!m.ok)throw new Error(`HTTP ${m.status}`);let f=await m.text();Ge("import",{name:qo(i.name),content:f}),h=!0,p("Already downloaded"),d.classList.add("installed"),d.disabled=!0}catch(m){console.error("CSS Store import failed:",m),d.disabled=!1,p("Try again")}},a.append(l,c,d),t.append(a)}r.length===0&&(t.textContent="No CSS available.")}catch(n){console.error("CSS Store failed to load:",n),t.replaceChildren();let r=document.createElement("p");r.textContent="Unable to load the CSS Store. Please try again later.",t.append(r)}}$(e){return this.popup?.shadow.querySelector(e)}receive(e){if(typeof e.managerError=="string"&&this.popup?.showError(e.managerError),this.legacy){typeof e.customCss?.content=="string"&&!this.editor&&(this.active=Nl,this.showEditor(Nl,e.customCss.content)),e.customCssSaved&&this.saving!==null&&this.saved(e.customCssSaved.error,Nl);return}e.cssFiles&&this.updateList(e.cssFiles),e.cssFile&&e.cssFile.name===this.loading&&(this.loading=null,typeof e.cssFile.content=="string"?this.showEditor(e.cssFile.name,e.cssFile.content):this.popup?.showError(`Could not read ${e.cssFile.name}`)),e.cssSaved&&this.saving!==null&&e.cssSaved.name===this.savingName&&this.saved(e.cssSaved.error,e.cssSaved.name),e.cssImported&&this.imported(e.cssImported),e.cssActivated&&(this.activating=!1,e.cssActivated.error?this.popup?.showError(`Could not switch: ${e.cssActivated.error}`):Rt.markSaved(String(e.cssActivated.content??"")),this.preview())}updateList(e){this.files=Array.isArray(e.files)?e.files:[];let t=this.active;this.active=e.active??null,t&&!this.active&&!this.activating&&(Rt.markSaved(""),this.preview());let o=new Set(this.files.map(n=>n.name));if(this.renaming&&this.editing===this.renaming.from&&o.has(this.renaming.to)){this.editing=this.renaming.to;let n=this.popup?.shadow.querySelector(".editorFile")?.firstChild;n&&(n.textContent=this.editing)}if(this.renaming=null,this.editing&&!o.has(this.editing)&&this.closeEditor(),!this.listed){this.listed=!0;let n=this.active??this.files[0]?.name;n?this.load(n):this.closeEditor()}this.renderList()}renderList(){let e=this.$("#ccList");if(e){if(e.textContent="",!this.files.length){let t=document.createElement("div");t.className="empty",t.textContent="No CSS files yet. Make one with New, paste one, or import .css files.",e.append(t)}for(let t of this.files)e.append(this.row(t));e.append(this.row(null))}}row(e){let t=e?.name??"",o=document.createElement("div");o.className="cssRow",o.classList.toggle("none",!e),o.classList.toggle("active",(this.active??"")===t),o.classList.toggle("editing",!!e&&this.editing===t);let n=document.createElement("div");n.className="cssRadio",n.title=e?"Use this one":"No CSS",n.onclick=l=>{l.stopPropagation(),this.activate(t)};let r=document.createElement("div");if(r.className="cssName",r.textContent=e?t:"None",o.append(n,r),!e)return o.onclick=()=>this.activate(""),o;let i=document.createElement("div");i.className="cssSize",i.textContent=wo(e.size);let a=document.createElement("div");a.className="cssActions";for(let[l,c,d,h]of[["edit","Rename",()=>this.rename(t),!1],["delete","Delete",()=>this.remove(t),!0]]){let p=document.createElement("div");p.className=h?"iconBtn danger":"iconBtn",p.title=c,p.innerHTML=`${l}`,p.onclick=m=>{m.stopPropagation(),d()},a.append(p)}return o.append(i,a),o.onclick=()=>this.load(t),o}async load(e){e===this.editing&&this.editor||await this.discardChanges()&&(this.loading=e,Ge("get",{name:e}))}showEditor(e,t){let o=this.$("#ccEditor");if(!o)return;let{editor:n}=fo(o,{title:e,content:t,language:"css",onSave:r=>this.save(r),onClose:()=>this.popup?.close(),onChange:()=>{clearTimeout(this.previewTimer),this.previewTimer=setTimeout(()=>this.preview(),ny)}});this.editor=n,this.editing=e,this.renderList(),this.preview()}closeEditor(){this.editor=null,this.editing=null;let e=this.$("#ccEditor");e&&(e.innerHTML='
          Pick a file below to edit it.
          '),this.preview()}preview(){let{editor:e}=this;this.live&&e&&(this.editing===this.active||e.isDirty())?Rt.apply(e.getValue()):Rt.revert()}async discardChanges(){return!this.editor?.isDirty()||!this.popup?!0:Pe(this.popup.shadow,"Unsaved changes",`Throw the changes to ${this.editing} away?`,"Discard")}save(e){!this.editor||!this.editing||this.saving!==null||(this.closeAfterSave=e,this.saving=this.editor.getValue(),this.savingName=this.editing,this.legacy?window.chrome.webview.postMessage(`css-write ${JSON.stringify({content:this.saving})}`):Ge("save",{name:this.editing,content:this.saving}))}saved(e,t){let o=this.saving??"";if(this.saving=null,e){this.popup?.showError(`Could not save: ${e}`);return}t===this.active&&Rt.markSaved(o),t===this.editing&&this.editor?.markSaved(o),this.preview(),this.closeAfterSave&&this.popup?.close()}activate(e){e===(this.active??"")||this.activating||(this.activating=!0,Ge("activate",{name:e}))}async create(){if(!this.popup)return;let e=await nt(this.popup.shadow,"New CSS file","theme.css","Ends in .css");e&&(this.openAfterImport=qo(e),Ge("import",{name:this.openAfterImport,content:""}))}async paste(){if(!this.popup)return;let e="";try{e=await navigator.clipboard.readText()}catch{this.popup.showError("Could not read the clipboard.");return}if(!e.trim()){this.popup.showError("The clipboard has no text in it. Copy the CSS first.");return}let t=await nt(this.popup.shadow,"Name for the pasted CSS","pasted.css","Ends in .css");t&&(this.openAfterImport=qo(t),Ge("import",{name:this.openAfterImport,content:e}))}async importFiles(e){let t=[];for(let o of e){if(!/\.css$/i.test(o.name)||o.size>ry){t.push(o.name);continue}Ge("import",{name:o.name,content:await o.text()})}t.length&&this.popup?.showError(`Not imported (only .css files up to 4 MB): ${t.join(", ")}`)}imported(e){if(e.error){this.popup?.showError(`Could not add ${e.requested}: ${e.error}`);return}this.active||this.activate(e.name),e.requested===this.openAfterImport?(this.openAfterImport=null,this.load(e.name)):this.editing||this.load(e.name)}async rename(e){if(!this.popup)return;let t=await nt(this.popup.shadow,`Rename ${e}`,e,"Ends in .css");if(!t)return;let o=qo(t);o!==e&&(this.renaming={from:e,to:o},Ge("rename",{from:e,to:o}))}async remove(e){!this.popup||!await Pe(this.popup.shadow,`Delete ${e}?`,"It goes to the recycle bin.","Delete")||Ge("delete",{name:e})}canClose(){return this.forceClose||!this.editor?.isDirty()||!this.popup?!0:(Pe(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},ay=new _l,ly=()=>ay.open()});var Im={};A(Im,{hostWatchesSwapper:()=>pr,reloadStylesheets:()=>Ks});var pr,Ks,hr=w(()=>{"use strict";F();pr=()=>u.hostFeatures?.includes("swapper-watch")??!1,Ks=s=>{for(let e of document.querySelectorAll('link[rel="stylesheet"]')){if(!(e instanceof HTMLLinkElement)||!e.href)continue;let t=new URL(e.href);if(!/(^|\.)krunker\.io$/.test(t.hostname)||!s.has(t.pathname.slice(1).toLowerCase()))continue;t.searchParams.set("kuteSwap",String(Date.now()));let o=e.cloneNode();o.href=t.href,o.addEventListener("load",()=>e.remove(),{once:!0}),o.addEventListener("error",()=>o.remove(),{once:!0}),e.after(o)}}});var _m,Nm=w(()=>{_m='

          Userscripts

          Userscripts off
          folder_openOpen scripts folder
          ×
          Scripts run inside Krunker. Only add scripts you trust, and never anything that breaks krunker.io/docs/terms.txt. Drop .js files onto a group, or create one with New script.
          '});var Ol={};A(Ol,{open:()=>hy});var dy,uy,oe,js,Hl,py,hy,Fl=w(()=>{"use strict";F();Nm();os();qs();Do();dy=4*1024*1024,uy=`// ==UserScript== // @name {{name}} // @author // @version 1.0 @@ -207,24 +207,25 @@ this._console.log("{{name}} is running"); this.unload = () => {}; return this; -`,oe=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},qs=(s,e,t,o="")=>{let n=oe("div",`iconBtn ${o}`);return n.title=e,n.append(oe("span","mi",s)),n.onclick=t,n},Bl=class{constructor(){this.popup=null,this.groups=[],this.openSettings=new Set,this.editing=null,this.pendingRead=null,this.pendingSave=null,this.needsRefresh=!1,this.renderQueued=!1,this.forceClose=!1,this.prefsTimers=new Map,Je&&(Je.onChange=()=>this.queueRender()),u.userscriptManager.masterChanged=e=>this.onMasterChanged(e)}masterOn(){return u.settings?.data?.userscripts!==!1}onMasterChanged(e){if(e&&!Je)this.needsRefresh=!0;else if(e&&!At())for(let t of this.groups.filter(o=>o.id==="game").flatMap(o=>o.scripts)){let o=this.entryFor(t.key);!o||!t.enabled||(o.start(),(o.tainted||o.state!=="running"&&o.state!=="waiting"&&o.state!=="error")&&(this.needsRefresh=!0))}this.updateNotice(),this.editing||this.render()}reload(e){return e.length?At()?(To(e,!0,this.masterOn()),!0):!1:!0}applyMaster(){let e=this.popup?.shadow;if(!e)return;let t=this.masterOn();e.querySelector(".managerPopup")?.classList.toggle("scriptsOff",!t);let o=e.querySelector("#usMaster");o&&(o.classList.toggle("on",t),o.querySelector(".toggle")?.classList.toggle("on",t),o.querySelector("span").textContent=t?"Userscripts on":"Userscripts off")}open(){if(this.popup)return;if(!Os()){window.chrome.webview.postMessage("open, userscripts"),u.showNotification("This Kute version can only open the scripts folder. Update Kute for the script manager.",!1,6);return}this.popup=fo(Rm,{onMessage:t=>this.receive(t),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1}),this.popup.signal.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.forceClose=!1});let{shadow:e}=this.popup;e.querySelector("#usFolder").onclick=()=>this.send("reveal",{}),e.querySelector("#usRefreshNow").onclick=()=>location.reload(),e.querySelector("#usMaster").onclick=()=>u.settings.changeSetting("userscripts",!this.masterOn(),!1),this.applyMaster(),this.body().textContent="Loading...",this.send("list",{})}send(e,t){window.chrome.webview.postMessage(`scripts-${e} ${JSON.stringify(t)}`)}body(){return this.popup?.shadow.querySelector("#usBody")}receive(e){if(e.managerError&&(this.popup?.showError(e.managerError),this.pendingSave&&(this.pendingSave=null)),e.userscripts){if(this.groups=e.userscripts.groups??[],this.pendingSave&&this.editing){let{closeAfter:t}=this.pendingSave;this.pendingSave=null,this.editing.editor.markSaved(),this.editing.group==="game"&&!this.reload([this.editing.file])&&(this.needsRefresh=!0),t&&(this.editing=null)}this.editing||this.render(),this.updateNotice()}if(e.userscriptSource&&e.userscriptSource.key===this.pendingRead){this.pendingRead=null;let t=this.findScript(e.userscriptSource.key);t&&typeof e.userscriptSource.content=="string"?this.showEditor(t.group,t.file,e.userscriptSource.content):this.popup?.showError("The script could not be read.")}}findScript(e){for(let t of this.groups){let o=t.scripts.find(n=>n.key===e);if(o)return o}}entryFor(e){return Je?.entries?.find(t=>t.key===e)}queueRender(){!this.popup||this.renderQueued||(this.renderQueued=!0,queueMicrotask(()=>{this.renderQueued=!1,this.updateNotice(),this.popup&&!this.editing&&this.render()}))}updateNotice(){let e=this.popup?.shadow.querySelector("#usRefresh");if(!e)return;let t=this.masterOn(),o=Je?.entries?.some(n=>n.outdated||!t&&n.state==="running");e.hidden=!this.needsRefresh&&!o}render(){let e=this.body();if(!(!e||!this.popup)){this.applyMaster(),e.textContent="";for(let t of this.groups)e.append(this.renderGroup(t))}}renderGroup(e){let t=oe("div","group"),o=oe("div","groupHead");o.append(oe("div","groupTitle",e.label),oe("div","groupRuns",`runs in ${e.runs}`));let n=oe("div","btn small");n.append(oe("span","mi","add"),"New script"),n.onclick=()=>this.createScript(e.id),o.append(n),t.append(o),e.scripts.length===0&&t.append(oe("div","empty","No scripts yet."));for(let r of e.scripts)this.renderScript(t,e,r);return t.append(oe("div","dropZone",`Drop .js files here to add them to ${e.label}`)),st(t,r=>this.importFiles(e,r)),t}async importFiles(e,t){if(!this.popup)return;let o=[],n=t.filter(({file:a})=>{if(!/\.js$/i.test(a.name))o.push(`${a.name}: not a .js file`);else if(a.size>ry)o.push(`${a.name}: larger than 4 MB`);else return!0;return!1}),r=new Set(e.scripts.map(a=>a.file.toLowerCase())),i=n.filter(({file:a})=>r.has(a.name.toLowerCase())).map(({file:a})=>a.name);if(i.length){let a=`${i.join(", ")} already exist in ${e.label}. Replace them with the dropped files?`;if(!await Re(this.popup.shadow,"Replace scripts?",a,"Replace"))return}for(let{file:a}of n)this.send("write",{group:e.id,file:a.name,content:await a.text(),noList:!0});this.send("list",{}),e.id==="game"&&!this.reload(n.map(({file:a})=>a.name))&&(this.needsRefresh=!0),this.updateNotice(),o.length&&this.popup?.showError(o.join(` -`))}stateOf(e,t,o){return t?.state==="error"?["Error","bad",t.error]:t?.outdated?["Old version","warn","Your changes apply after a refresh, this script has no unload to stop the running version"]:this.masterOn()?o||!Je?e.enabled?["On","ok",""]:["Off","",""]:e.enabled?t?.state==="running"?["Running","ok",t.late?"Started after the page loaded. It is a document-start script, refresh if it misses something":""]:t?.state==="waiting"?["Starting","ok","Starts once the page has loaded"]:!t&&At()?["Starting","ok",""]:["After refresh","warn","On, starts with the next page load"]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:["Off","",""]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:e.enabled?["On","","Runs once userscripts are on"]:["Off","",""]}renderScript(e,t,o){let n=t.id!=="game",r=n?void 0:this.entryFor(o.key),i=r?.meta??o.meta,a=oe("div","scriptRow"),l=oe("div",`toggle${o.enabled?" on":""}`);l.title=o.enabled?"Turn off":"Turn on",l.onclick=()=>this.toggle(o,r,n);let c=oe("div","scriptInfo"),d=oe("div","scriptName",i.name||o.file);i.version&&d.append(oe("span","version",`v${i.version}`)),i.author&&d.append(oe("span","author",`by ${i.author}`)),c.append(d);let h=[i.desc,i.name?o.file:"",go(o.size)].filter(Boolean).join(" \xB7 ");c.append(oe("div","scriptDesc",h)),c.title=[i.desc,`${o.file}, ${o.runAt}${o.priority?`, priority ${o.priority}`:""}`].filter(Boolean).join(` -`);let[p,m,f]=this.stateOf(o,r,n),g=oe("div",`state ${m}`,p);f&&(g.title=f);let b=oe("div","scriptActions");r?.settings&&Object.keys(r.settings).length&&b.append(qs("tune","Script settings",()=>{this.openSettings.has(o.key)?this.openSettings.delete(o.key):this.openSettings.add(o.key),this.render()})),b.append(qs("edit","Edit",()=>{this.pendingRead=o.key,this.send("read",{key:o.key})}),qs("swap_horiz",`Move to ${n?"Game":"Social"}`,()=>this.move(o,r,n)),qs("folder_open","Show in folder",()=>this.send("reveal",{key:o.key})),qs("delete","Delete (goes to the recycle bin)",()=>this.deleteScript(o,r),"danger")),a.append(l,c,g,b),e.append(a),r?.settings&&this.openSettings.has(o.key)&&e.append(this.renderSettings(o,r))}toggle(e,t,o){e.enabled=!e.enabled,this.send("toggle",{key:e.key,enabled:e.enabled}),o||this.masterOn()&&(t?e.enabled?(t.start(),(t.tainted||t.state!=="running"&&t.state!=="waiting"&&t.state!=="error")&&(this.needsRefresh=!0)):t.stop()||(this.needsRefresh=!0):e.enabled&&At()?To([e.key],!1,!0):e.enabled&&(this.needsRefresh=!0)),this.updateNotice(),this.render()}move(e,t,o){t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("move",{key:e.key,group:o?"game":"social"}),o&&!this.reload([e.file])&&(this.needsRefresh=!0),this.updateNotice()}async deleteScript(e,t){!this.popup||!await Re(this.popup.shadow,`Delete ${e.file}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||(t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("delete",{key:e.key}))}async createScript(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New script","my-script.js","The file name. It ends up in the scripts folder of this group.");if(!t)return;let o=/\.js$/i.test(t)?t:`${t}.js`;if(this.groups.some(r=>r.id===e&&r.scripts.some(i=>i.file.toLowerCase()===o.toLowerCase()))){this.popup.showError(`${o} already exists in this group.`);return}this.showEditor(e,o,iy.replaceAll("{{name}}",o.replace(/\.js$/i,"")),!0)}renderSettings(e,t){let o=oe("div","scriptSettings"),n=t.settings??{},r=()=>{clearTimeout(this.prefsTimers.get(e.key)),this.prefsTimers.set(e.key,setTimeout(()=>{this.prefsTimers.delete(e.key);let a=Object.fromEntries(Object.entries(n).map(([l,c])=>[l,c.value]));this.send("prefs",{key:e.key,prefs:a})},300))},i=(a,l)=>{t.setPref(a,l),r()};for(let[a,l]of Object.entries(n)){let c=oe("div","settingRow"),d=oe("div","settingLabel",l.title||a);l.desc&&d.append(oe("small","",l.desc)),c.append(d,this.settingControl(a,l,i)),o.append(c)}return o}settingControl(e,t,o){switch(t.type){case"bool":{let n=oe("div",`toggle${t.value?" on":""}`);return n.onclick=()=>{o(e,!t.value),n.classList.toggle("on",!!t.value)},n}case"num":{let n=oe("div");n.style.cssText="display:flex;gap:.6em;align-items:center";let r=oe("input");if(r.type="number",r.style.width="90px",r.value=String(t.value),t.min!==void 0&&(r.min=String(t.min)),t.max!==void 0&&(r.max=String(t.max)),r.step=String(t.step??"any"),t.min!==void 0&&t.max!==void 0){let i=oe("input");i.type="range",i.min=String(t.min),i.max=String(t.max),i.step=String(t.step??"any"),i.value=String(t.value),i.oninput=()=>{r.value=i.value,o(e,Number(i.value))},r.onchange=()=>{i.value=r.value},n.append(i)}return r.addEventListener("change",()=>{r.value!==""&&Number.isFinite(Number(r.value))&&o(e,Number(r.value))}),n.append(r),n}case"sel":{let n=oe("select");for(let r of t.opts??[]){let i=oe("option","",String(r));i.value=String(r),i.selected=r===t.value,n.append(i)}return n.onchange=()=>{let r=(t.opts??[]).find(i=>String(i)===n.value);o(e,r??n.value)},n}case"color":{let n=oe("input");return n.type="color",n.value=String(t.value),n.onchange=()=>o(e,n.value),n}case"text":{let n=oe("input");return n.type="text",n.value=String(t.value??""),n.onchange=()=>o(e,n.value),n}case"keybind":{let n=i=>[i?.ctrl&&"Ctrl",i?.alt&&"Alt",i?.shift&&"Shift",i?.key||"none"].filter(Boolean).join(" + "),r=oe("div","btn small",n(t.value));return r.onclick=()=>{r.textContent="Press a key...";let i=a=>{if(["Control","Alt","Shift","Meta"].includes(a.key))return;a.preventDefault(),a.stopPropagation(),window.removeEventListener("keydown",i,!0);let l={key:a.key.toLowerCase(),ctrl:a.ctrlKey,alt:a.altKey,shift:a.shiftKey};o(e,l),r.textContent=n(l)};window.addEventListener("keydown",i,!0)},r}default:return oe("div","scriptFile",`unsupported type "${t.type}"`)}}showEditor(e,t,o,n=!1){let r=this.body();if(!r)return;let{editor:i}=po(r,{title:t,content:o,language:"js",isNew:n,onSave:a=>{this.editing&&(this.pendingSave={closeAfter:a},this.editing.closeAfterSave=a,this.send("write",{group:e,file:t,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={group:e,file:t,editor:i,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Re(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||(this.editing=null,this.render())}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Re(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},ay=new Bl,ly=()=>ay.open()});var Im,Pm=w(()=>{Im=`

          Swapper

          refreshReload list
          folder_openOpen swapper folder
          ×
          A file in the swapper folder replaces the game's file with the same path: swapper/textures/pistol.png replaces krunker.io/textures/pistol.png. Easiest way: drop your file onto the game file it should replace (right side), it gets the right folder and name. Folder names do not care about case. Text files like CSS can be written right here: New file, or the edit button on a game file to start from a copy.
          Your swaps
          note_addNew file
          create_new_folderNew folder
          Drop files or folders here to put them into the swapper folder as they are
          Game files
          `});var ql={};A(ql,{open:()=>my});var dy,uy,Nm,pr,py,Ol,ce,rt,Ks,Bm,_m,Dl,Fl,hy,my,Kl=w(()=>{"use strict";D();Pm();Ds();Oo();ur();dy=new Set(["css","js","mjs","json","txt","html","htm","svg","xml","obj","mtl","glsl","frag","vert","md","csv"]),uy=4*1024*1024,Nm=s=>dy.has(s.slice(s.lastIndexOf(".")+1).toLowerCase()),pr=()=>u.hostFeatures?.includes("swapper-editor")??!1,py=32*1024*1024,Ol=400,ce=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},rt=(s,e,t,o="")=>{let n=ce("div",`iconBtn ${o}`);return n.title=e,n.append(ce("span","mi",s)),n.onclick=r=>{r.stopPropagation(),t()},n},Ks=s=>s.slice(s.lastIndexOf("/")+1),Bm=s=>s.includes("/")?s.slice(0,s.lastIndexOf("/")):"",_m=(s,e)=>{let t={name:"",path:"",folders:new Map,files:[]},o=n=>{let r=t;for(let i of n.split("/").filter(Boolean)){let a=r.folders.get(i);a||(a={name:i,path:r.path?`${r.path}/${i}`:i,folders:new Map,files:[]},r.folders.set(i,a)),r=a}return r};for(let n of e)o(n);for(let n of s)o(Bm(n.path)).files.push({name:Ks(n.path),path:n.path,size:n.size});return t},Dl=s=>s.files.length+[...s.folders.values()].reduce((e,t)=>e+Dl(t),0),Fl=class{constructor(){this.popup=null,this.list=null,this.collapsedOwn=new Set,this.expandedGame=new Set,this.search="",this.touched=new Set,this.stale=new Set,this.uploadDone=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1}open(){if(this.popup)return;if(!Os()){window.chrome.webview.postMessage("open, swapper"),u.showNotification("This Kute version can only open the swapper folder. Update Kute for the swapper manager.",!1,6);return}this.popup=fo(Im,{onMessage:r=>this.receive(r),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1,this.uploadDone?.(null),this.uploadDone=null}),e.querySelector("#swFolder").onclick=()=>this.send("reveal",{path:""}),e.querySelector("#swReload").onclick=()=>this.send("list",{}),e.querySelector("#swRefreshNow").onclick=()=>location.reload(),e.querySelector("#swNewFolder").onclick=()=>this.newFolder("");let o=e.querySelector("#swNewFile");pr()||(o.style.display="none"),o.onclick=()=>this.newFile(""),st(e.querySelector("#swOwnColumn"),r=>this.drop("",r));let n=e.querySelector("#swSearch");n.value=this.search,n.oninput=()=>{this.search=n.value.trim().toLowerCase(),this.renderGame()},e.querySelector("#swOwnTree").textContent="Loading...",this.send("list",{}),dr()||window.addEventListener("focus",()=>{!this.editing&&!this.uploadDone&&this.send("list",{})},{signal:t})}send(e,t){window.chrome.webview.postMessage(`swapper-${e} ${JSON.stringify(t)}`)}async drop(e,t){let o=t;!e&&o.every(({path:n})=>n.toLowerCase().startsWith("swapper/"))&&(o=o.map(({path:n,file:r})=>({path:n.slice(8),file:r}))),await this.upload(o.map(({path:n,file:r})=>({path:e?`${e}/${n}`:n,file:r})))}async replace(e,t){if(!this.popup)return;if(t.length!==1){this.popup.showError("Drop exactly one file onto a game file. Drop several onto a folder instead.");return}let[{file:o}]=t,n=r=>r.slice(r.lastIndexOf(".")+1).toLowerCase();if(n(o.name)!==n(e)){let r=`${o.name} is saved as ${Ks(e)}, the game will read it as .${n(e)}. Go ahead?`;if(!await Re(this.popup.shadow,"Different file type",r,"Save anyway"))return}await this.upload([{path:e,file:o}])}async upload(e){let t=[];for(let{path:o,file:n}of e){if(!this.popup)return;if(n.size>py){t.push(`${o}: larger than 32 MB, put it in with Open swapper folder`);continue}let r=await Rl(n),i=await new Promise(a=>{this.uploadDone=a,this.send("upload",{path:o,data:r})});i?t.push(i):this.touched.add(o.toLowerCase())}this.send("list",{}),t.length&&this.popup?.showError(t.join(` -`))}receive(e){if(e.managerError&&this.popup?.showError(e.managerError),e.swapperUploaded){let o=this.uploadDone;this.uploadDone=null,o?.(e.swapperUploaded.error??null)}if(e.swapperSource&&e.swapperSource.path===this.pendingRead&&(this.pendingRead=null,typeof e.swapperSource.content=="string"?this.showEditor(e.swapperSource.path,e.swapperSource.content):this.popup?.showError(`${e.swapperSource.path} could not be read as text.`)),e.swapperWritten&&this.saving&&(this.saving=!1,e.swapperWritten.error?this.popup?.showError(e.swapperWritten.error):this.editing&&(this.touched.add(this.editing.path.toLowerCase()),this.editing.editor.markSaved(),this.editing.closeAfterSave&&this.closeEditor())),e.swapperChanged&&!this.editing&&!this.uploadDone&&this.send("list",{}),!e.swapper)return;let t=this.list;this.list=e.swapper,t&&this.applyChanges(t,e.swapper),this.render()}applyChanges(e,t){let o=c=>new Map(c.files.map(d=>[d.path.toLowerCase(),d.size])),n=o(e),r=o(t),i=new Set(this.touched);if(this.touched.clear(),e.enabled!==t.enabled)for(let c of[...n.keys(),...r.keys()])i.add(c);for(let[c,d]of r)n.get(c)!==d&&i.add(c);for(let c of n.keys())r.has(c)||i.add(c);if(!i.size)return;let a=new Set([...i].filter(c=>c.endsWith(".css")));a.size&&!dr()&&Fs(a);let l=new Set(t.seen.map(c=>c.toLowerCase()));for(let c of i)!a.has(c)&&l.has(c)&&this.stale.add(c)}get(e){return this.popup?.shadow.querySelector(e)}render(){if(!this.popup||!this.list)return;let e=this.get("#swNotice"),t=this.list.enabled===!1;e.hidden=!t&&!this.stale.size;let o=this.stale.size;e.querySelector("span").textContent=t?"The swapper is switched off (Settings, Customization), none of these files are used.":`The game already loaded ${o===1?"1 changed file":`${o} changed files`}, ${o===1?"it changes":"they change"} after a page refresh.`,this.renderOwn(),this.renderGame()}renderOwn(){if(!this.list)return;let e=this.get("#swOwnTree");e.textContent="";let t=_m(this.list.files,this.list.dirs);if(this.get("#swOwnCount").textContent=`${this.list.files.length} file${this.list.files.length===1?"":"s"}`,!this.list.files.length&&!this.list.dirs.length){e.append(ce("div","treeNote","Nothing swapped yet. Drop a file onto one of the game files on the right, or drop a whole swapper pack here."));return}let o=new Map(this.list.seen.map(i=>[i.toLowerCase(),i])),n=new Map;for(let i of this.list.seen){let a=Ks(i).toLowerCase();n.set(a,[...n.get(a)??[],i])}let r=(i,a)=>{for(let l of[...i.folders.values()].sort((c,d)=>c.name.localeCompare(d.name))){let c=this.collapsedOwn.has(l.path),d=this.folderRow(l.name,a,!c,`${Dl(l)}`);d.onclick=()=>{c?this.collapsedOwn.delete(l.path):this.collapsedOwn.add(l.path),this.renderOwn()};let h=d.querySelector(".scriptActions");pr()&&h?.append(rt("note_add","New file inside",()=>this.newFile(l.path))),h?.append(rt("create_new_folder","New folder inside",()=>this.newFolder(l.path)),rt("drive_file_rename_outline","Rename or move",()=>this.move(l.path)),rt("folder_open","Open in Explorer",()=>this.send("reveal",{path:l.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(l.path),"danger")),st(d,p=>this.drop(l.path,p)),e.append(d),c||r(l,a+1)}for(let l of[...i.files].sort((c,d)=>c.name.localeCompare(d.name)))e.append(this.ownFileRow(l,a,o,n))};r(t,0)}folderRow(e,t,o,n){let r=ce("div","node folder");return r.style.setProperty("--depth",String(t)),r.append(ce("span","mi",o?"expand_more":"chevron_right"),ce("span","mi kind",o?"folder_open":"folder")),r.append(ce("span","nodeName",e),ce("span","nodeSize",n),ce("div","scriptActions")),r}ownFileRow(e,t,o,n){let r=ce("div","node");r.style.setProperty("--depth",String(t+1)),r.append(ce("span","mi","description"),ce("span","nodeName",e.name),ce("span","nodeSize",go(e.size)));let i=o.get(e.path.toLowerCase()),a=(n.get(e.name.toLowerCase())??[]).filter(c=>c.toLowerCase()!==e.path.toLowerCase());if(i){let c=ce("span","state ok","Used");c.title=`The game loaded krunker.io/${i} this session, this file replaced it.`,r.append(c)}else if(a.length){let[c]=a,d=ce("span","state warn","Wrong folder?");d.title=`The game asks for this file as ${a.join(", ")}`;let h=ce("div","btn small","Move there");h.title=`Move to ${c}`,h.onclick=()=>this.send("move",{from:e.path,to:c}),r.append(d,h)}else{let c=ce("span","state","Not requested");c.title="The game did not ask for this path in this session. It may still come (another map, a skin), or the path does not match any game file.",r.append(c)}let l=ce("div","scriptActions");return pr()&&Nm(e.path)&&e.size<=uy&&(l.append(rt("edit","Edit",()=>this.edit(e.path))),r.ondblclick=()=>this.edit(e.path)),l.append(rt("drive_file_rename_outline","Rename or move",()=>this.move(e.path)),rt("folder_open","Show in Explorer",()=>this.send("reveal",{path:e.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(e.path),"danger")),r.append(l),st(r,c=>this.drop(Bm(e.path),c)),r}renderGame(){if(!this.list||!this.popup)return;let e=this.get("#swGameTree");e.textContent="";let{seen:t}=this.list;this.get("#swGameCount").textContent=`${t.length} loaded this session`;let o=new Set(this.list.files.map(a=>a.path.toLowerCase()));if(!t.length){e.append(ce("div","treeNote","The game has not loaded any files yet. Play a round or open a menu, then Reload list."));return}let n=(a,l)=>{let c=ce("div","node");if(c.style.setProperty("--depth",String(l)),c.title=`krunker.io/${a} -Drop a file here to replace it`,c.append(ce("span","mi","insert_drive_file"),ce("span","nodeName",l?Ks(a):a)),o.has(a.toLowerCase())&&c.append(ce("span","swapped","swapped")),pr()&&Nm(a)){let d=this.list?.files.find(p=>p.path.toLowerCase()===a.toLowerCase()),h=ce("div","scriptActions");d?h.append(rt("edit","Edit your swap",()=>this.edit(d.path))):h.append(rt("edit_note","Edit a copy, saving it swaps the file",()=>this.editCopy(a))),c.append(h)}return st(c,d=>this.replace(a,d)),c};if(this.search){let a=t.filter(l=>l.toLowerCase().includes(this.search));for(let l of a.slice(0,Ol))e.append(n(l,0));a.length||e.append(ce("div","treeNote","No game file matches.")),a.length>Ol&&e.append(ce("div","treeNote",`${a.length-Ol} more, search for something longer.`));return}let r=_m(t.map(a=>({path:a,size:0})),[]),i=(a,l)=>{for(let c of[...a.folders.values()].sort((d,h)=>d.name.localeCompare(h.name))){let d=this.expandedGame.has(c.path),h=this.folderRow(c.name,l,d,`${Dl(c)}`);h.title="Drop files here to put them into this folder",h.onclick=()=>{d?this.expandedGame.delete(c.path):this.expandedGame.add(c.path),this.renderGame()},st(h,p=>this.drop(c.path,p)),e.append(h),d&&i(c,l+1)}for(let c of[...a.files].sort((d,h)=>d.name.localeCompare(h.name)))e.append(n(c.path,l+1))};i(r,0)}async newFile(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New file",e?`${e}/new.css`:"css/new.css","A path inside the swapper folder, the same path the game loads the file from");if(!t)return;let o=t.replace(/^\/+/,"");if(this.list?.files.some(n=>n.path.toLowerCase()===o.toLowerCase())){this.popup.showError(`${o} already exists, edit it instead.`);return}this.showEditor(o,"",!0)}edit(e){this.pendingRead||this.editing||(this.pendingRead=e,this.send("read",{path:e}))}async editCopy(e){if(this.pendingRead||this.editing)return;this.pendingRead=e;let t=null;for(let o of["https://krunker.io","https://assets.krunker.io"])try{let n=await fetch(`${o}/${e}`);if(n.ok){t=await n.text();break}}catch{}this.pendingRead===e&&(this.pendingRead=null,t===null&&(this.popup?.showError(`Could not download krunker.io/${e}, starting with an empty file.`),t=""),this.showEditor(e,t,!0))}showEditor(e,t,o=!1){if(!this.popup)return;let n=this.get("#swEditor");this.get(".swapColumns").style.display="none",n.style.display="";let{editor:r}=po(n,{title:e,content:t,language:ja(e),isNew:o,onSave:i=>{!this.editing||this.saving||(this.saving=!0,this.editing.closeAfterSave=i,this.send("write",{path:e,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={path:e,editor:r,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Re(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||this.closeEditor()}closeEditor(){if(this.editing=null,!this.popup)return;let e=this.get("#swEditor");e.textContent="",e.style.display="none",this.get(".swapColumns").style.display="",this.render()}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Re(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}async newFolder(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New folder",e?`${e}/`:"textures","A path inside the swapper folder, for example textures/weapons");t&&this.send("mkdir",{path:t})}async move(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"Rename or move",e,"The new path inside the swapper folder. Change the folders in front to move it.");!t||t===e||this.send("move",{from:e,to:t})}async remove(e){!this.popup||!await Re(this.popup.shadow,`Delete ${Ks(e)}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||this.send("delete",{path:e})}},hy=new Fl,my=()=>hy.open()});var zm={};var jl=w(()=>{"use strict";D();es();ur();u.userscriptManager={open:()=>{Promise.resolve().then(()=>(Hl(),zl)).then(s=>s.open()).catch(s=>console.error("[kute] userscript manager:",s))}};u.settings.toggleUserscripts=s=>{if(u.settings.data.userscripts=s,s)At()?To(null,!1,!0):u.userscriptManager.masterChanged||u.showNotification("Refresh the page to start your userscripts.",!1,5);else{let e=(Je?.entries??[]).filter(t=>(t.state==="running"||t.state==="waiting")&&!t.stop()).map(t=>t.meta.name||t.key);e.length&&u.showNotification(`${e.join(", ")} cannot be stopped and keeps running until the next refresh.`,!1,6)}u.userscriptManager.masterChanged?.(s)};window.chrome.webview.addEventListener("message",s=>{let e=s.data?.swapperChanged?.css;Array.isArray(e)&&e.length&&Fs(new Set(e.map(String)))});u.swapperManager={open:()=>{Promise.resolve().then(()=>(Kl(),ql)).then(s=>s.open()).catch(s=>console.error("[kute] swapper manager:",s))}};u.customCss={open:()=>{Promise.resolve().then(()=>(_l(),Nl)).then(s=>s.open()).catch(s=>console.error("[kute] custom css:",s))}}});var Om={};A(Om,{default:()=>W});var Ul,fy,gy,Hm,Gl,by,W,xe=w(()=>{"use strict";D();It();Ul="kute_market_session",fy="x-kute-session",gy=3e3,Hm=3600*1e3,Gl=class{constructor(){this.sessionPromise=null,this.memorySession=null,this.cache=new Map,this.lastError="",this.retryAt=0}loggedIn(){try{return localStorage.getItem("krunker_token")!==null}catch{return!1}}hostSupported(){return u.hostFeatures?.includes("market-attest")===!0}stored(){if(this.memorySession&&Date.now()t.expiresAt-Hm?null:t}catch{return null}}forget(e){if(this.stored()?.session===e){try{localStorage.removeItem(Ul)}catch{}this.memorySession=null}}attest(e){return new Promise(t=>{let o=0,n=r=>{let i=null;try{i=typeof r.data=="string"?JSON.parse(r.data):r.data}catch{return}let a=i?.marketAttest;!a||a.challenge!==e||(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(a))};o=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},gy),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(`market-attest, ${e}, ${this.loggedIn()}`)})}session(){let e=this.stored();return e?Promise.resolve(e.session):(this.sessionPromise??=this.newSession().finally(()=>{this.sessionPromise=null}),this.sessionPromise)}async newSession(){if(this.lastError="",!this.loggedIn())return this.lastError="log in to Krunker to use the market",null;if(!this.hostSupported())return this.lastError="this Kute version cannot sign in to the market, update Kute",null;let e=await he.requestStatus("/market/session",{method:"POST"});if(!e.data?.challenge)return this.lastError=e.status===503?"the market is not available right now":"could not reach the market",e.status===429&&this.limited(e.retryAt),null;let t=await this.attest(e.data.challenge);if(!t)return this.lastError="Kute did not answer the sign in",null;let o=await he.requestStatus("/market/session/confirm",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({challenge:t.challenge,sig:t.sig,version:t.version,loggedIn:t.loggedIn})});if(!o.data?.session)return this.lastError=typeof o.error?.error=="string"?o.error.error:"the market refused the sign in",o.status===429&&this.limited(o.retryAt),null;this.memorySession={session:o.data.session,expiresAt:o.data.expiresAt};try{localStorage.setItem(Ul,JSON.stringify(this.memorySession))}catch{}return o.data.session}async request(e,t={},o=!1){return(await this.requestStatus(e,t,o)).data}async requestStatus(e,t={},o=!1){if(Date.now()this.request(e)){let n=Date.now(),r=this.cache.get(e);if(r&&n-r.at(a===null&&this.cache.delete(e),a));if(this.cache.set(e,{at:n,ttl:t,value:i}),this.cache.size>500){let a=this.cache.keys().next();a.done||this.cache.delete(a.value)}return i}retry(){return Date.now(){let n=await this.requestStatus(o);if(n.status!==404)return n.data;let r=await this.cached(`/market/item/${e}`,3e5);if(!r)return null;let[i,a]=await Promise.all([this.cached(`/market/item/${e}/history?range=${t}`,3e5),this.cached(`/market/item/${e}/listings`,6e4)]);return{item:r,history:i,listings:a}})}async values(e){let t=[...new Set(e)].sort((n,r)=>n-r),o={};for(let n=0;njs,RARITIES:()=>bo,formatAge:()=>We,formatKr:()=>Pe,formatPercent:()=>it});function Pe(s){return Number.isFinite(s)?Math.abs(s)>=1e6?`${(s/1e6).toFixed(s%1e6===0?0:1)}M`:Math.round(s).toLocaleString("en-US"):"?"}function it(s){if(s==null||!Number.isFinite(s))return"\u2013";let e=s*100;return`${e>0?"+":""}${Math.abs(e)>=100?e.toFixed(0):e.toFixed(1)} %`}function We(s){if(!Number.isFinite(s)||s<0)return"\u2013";let e=s/6e4;if(e<60)return`${Math.max(1,Math.round(e))} min`;let t=e/60;return t<48?`${Math.round(t)} h`:`${Math.round(t/24)} d`}var bo,js,Ve=w(()=>{"use strict";bo=[{name:"Uncommon",color:"#b2f252"},{name:"Rare",color:"#2196F3"},{name:"Epic",color:"#E040FB"},{name:"Legendary",color:"#FBC02D"},{name:"Relic",color:"#ff5722"},{name:"Contraband",color:"#f44336"},{name:"Unobtainable",color:"#ffffff"},{name:"NFT",color:"#9e9e9e"}],js={A:"#5ce05a",B:"#9ccc65",C:"#fbc02d",D:"#ff9800",F:"#f44336"}});var Fm={};A(Fm,{TRADE_VERDICTS:()=>jt,TYPE_NAMES:()=>Et,activityLabel:()=>Wl,change:()=>ae,empty:()=>fe,esc:()=>S,evidenceLabel:()=>Gs,identity:()=>me,money:()=>T,stat:()=>ne,verdictOf:()=>Us});var Et,jt,Us,S,T,ae,Gs,Wl,me,fe,ne,pe=w(()=>{"use strict";Ve();Et=["Weapons","Hats","Bodies","Melee","Sprays","Dyes","Waists","Faces","Charms","Emotes","Stickers","Skydomes","Poses","Spin tickets","Capes","Heads","Paints","Backs","Consumables"],jt={good:{label:"Favorable trade",detail:"More estimated value coming in"},fair:{label:"Fair trade",detail:"Similar estimated value"},bad:{label:"Unfavorable trade",detail:"More estimated value going out"},uncertain:{label:"Not enough evidence",detail:"Estimates are too uncertain for a verdict"}},Us=s=>Object.hasOwn(jt,s)?s:"uncertain",S=s=>String(s??"").replace(/[&<>"']/g,e=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[e]??e),T=s=>s==null?"Unavailable":Pe(s),ae=s=>{if(s==null)return'No trend yet';let e="muted";return s>.005&&(e="positive"),s<-.005&&(e="negative"),`${S(it(s))}`},Gs=s=>s.method?.includes("trades")?s.method.startsWith("sales")?"Sales + private trades":"Private-trade estimate":s.method?.startsWith("sales")?(s.sales7d??0)>=5?"Recent sales":"Sparse sales":"Limited evidence",Wl=s=>s.privateTrading?.trades7d?`${s.privateTrading.trades7d} private trade${s.privateTrading.trades7d===1?"":"s"} this week${s.sales7d?` + ${s.sales7d} sales`:""}`:(s.sales7d??0)>=7?"Active this week":(s.sales7d??0)>0?"Traded this week":"No reported sales this week",me=s=>`${s.thumbnail?``:'K'}${S(s.name)}${S(bo[s.rarity??-1]?.name??"Item")}`,fe=(s,e,t="")=>`
          ◇

          ${S(s)}

          ${S(e)}

          ${t}
          `,ne=(s,e,t)=>`
          ${S(s)}${e}${t}
          `});var Km={};A(Km,{default:()=>hr});var vy,vo,Ke,qm,wy,ky,yy,Vl,xy,Yl,Sy,hr,Xl=w(()=>{"use strict";D();xe();Ve();pe();vy=1500,vo="data-kute-market",Ke="kuteMarketLine",qm="kuteMarketCardStyle",wy=".market-card, .market-item-card",ky=` +`,oe=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},js=(s,e,t,o="")=>{let n=oe("div",`iconBtn ${o}`);return n.title=e,n.append(oe("span","mi",s)),n.onclick=t,n},Hl=class{constructor(){this.popup=null,this.groups=[],this.openSettings=new Set,this.editing=null,this.pendingRead=null,this.pendingSave=null,this.needsRefresh=!1,this.renderQueued=!1,this.forceClose=!1,this.prefsTimers=new Map,Je&&(Je.onChange=()=>this.queueRender()),u.userscriptManager.masterChanged=e=>this.onMasterChanged(e)}masterOn(){return u.settings?.data?.userscripts!==!1}onMasterChanged(e){if(e&&!Je)this.needsRefresh=!0;else if(e&&!Lt())for(let t of this.groups.filter(o=>o.id==="game").flatMap(o=>o.scripts)){let o=this.entryFor(t.key);!o||!t.enabled||(o.start(),(o.tainted||o.state!=="running"&&o.state!=="waiting"&&o.state!=="error")&&(this.needsRefresh=!0))}this.updateNotice(),this.editing||this.render()}reload(e){return e.length?Lt()?(Lo(e,!0,this.masterOn()),!0):!1:!0}applyMaster(){let e=this.popup?.shadow;if(!e)return;let t=this.masterOn();e.querySelector(".managerPopup")?.classList.toggle("scriptsOff",!t);let o=e.querySelector("#usMaster");o&&(o.classList.toggle("on",t),o.querySelector(".toggle")?.classList.toggle("on",t),o.querySelector("span").textContent=t?"Userscripts on":"Userscripts off")}open(){if(this.popup)return;if(!Ds()){window.chrome.webview.postMessage("open, userscripts"),u.showNotification("This Kute version can only open the scripts folder. Update Kute for the script manager.",!1,6);return}this.popup=vo(_m,{onMessage:t=>this.receive(t),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1}),this.popup.signal.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.forceClose=!1});let{shadow:e}=this.popup;e.querySelector("#usFolder").onclick=()=>this.send("reveal",{}),e.querySelector("#usRefreshNow").onclick=()=>location.reload(),e.querySelector("#usMaster").onclick=()=>u.settings.changeSetting("userscripts",!this.masterOn(),!1),this.applyMaster(),this.body().textContent="Loading...",this.send("list",{})}send(e,t){window.chrome.webview.postMessage(`scripts-${e} ${JSON.stringify(t)}`)}body(){return this.popup?.shadow.querySelector("#usBody")}receive(e){if(e.managerError&&(this.popup?.showError(e.managerError),this.pendingSave&&(this.pendingSave=null)),e.userscripts){if(this.groups=e.userscripts.groups??[],this.pendingSave&&this.editing){let{closeAfter:t}=this.pendingSave;this.pendingSave=null,this.editing.editor.markSaved(),this.editing.group==="game"&&!this.reload([this.editing.file])&&(this.needsRefresh=!0),t&&(this.editing=null)}this.editing||this.render(),this.updateNotice()}if(e.userscriptSource&&e.userscriptSource.key===this.pendingRead){this.pendingRead=null;let t=this.findScript(e.userscriptSource.key);t&&typeof e.userscriptSource.content=="string"?this.showEditor(t.group,t.file,e.userscriptSource.content):this.popup?.showError("The script could not be read.")}}findScript(e){for(let t of this.groups){let o=t.scripts.find(n=>n.key===e);if(o)return o}}entryFor(e){return Je?.entries?.find(t=>t.key===e)}queueRender(){!this.popup||this.renderQueued||(this.renderQueued=!0,queueMicrotask(()=>{this.renderQueued=!1,this.updateNotice(),this.popup&&!this.editing&&this.render()}))}updateNotice(){let e=this.popup?.shadow.querySelector("#usRefresh");if(!e)return;let t=this.masterOn(),o=Je?.entries?.some(n=>n.outdated||!t&&n.state==="running");e.hidden=!this.needsRefresh&&!o}render(){let e=this.body();if(!(!e||!this.popup)){this.applyMaster(),e.textContent="";for(let t of this.groups)e.append(this.renderGroup(t))}}renderGroup(e){let t=oe("div","group"),o=oe("div","groupHead");o.append(oe("div","groupTitle",e.label),oe("div","groupRuns",`runs in ${e.runs}`));let n=oe("div","btn small");n.append(oe("span","mi","add"),"New script"),n.onclick=()=>this.createScript(e.id),o.append(n),t.append(o),e.scripts.length===0&&t.append(oe("div","empty","No scripts yet."));for(let r of e.scripts)this.renderScript(t,e,r);return t.append(oe("div","dropZone",`Drop .js files here to add them to ${e.label}`)),st(t,r=>this.importFiles(e,r)),t}async importFiles(e,t){if(!this.popup)return;let o=[],n=t.filter(({file:a})=>{if(!/\.js$/i.test(a.name))o.push(`${a.name}: not a .js file`);else if(a.size>dy)o.push(`${a.name}: larger than 4 MB`);else return!0;return!1}),r=new Set(e.scripts.map(a=>a.file.toLowerCase())),i=n.filter(({file:a})=>r.has(a.name.toLowerCase())).map(({file:a})=>a.name);if(i.length){let a=`${i.join(", ")} already exist in ${e.label}. Replace them with the dropped files?`;if(!await Pe(this.popup.shadow,"Replace scripts?",a,"Replace"))return}for(let{file:a}of n)this.send("write",{group:e.id,file:a.name,content:await a.text(),noList:!0});this.send("list",{}),e.id==="game"&&!this.reload(n.map(({file:a})=>a.name))&&(this.needsRefresh=!0),this.updateNotice(),o.length&&this.popup?.showError(o.join(` +`))}stateOf(e,t,o){return t?.state==="error"?["Error","bad",t.error]:t?.outdated?["Old version","warn","Your changes apply after a refresh, this script has no unload to stop the running version"]:this.masterOn()?o||!Je?e.enabled?["On","ok",""]:["Off","",""]:e.enabled?t?.state==="running"?["Running","ok",t.late?"Started after the page loaded. It is a document-start script, refresh if it misses something":""]:t?.state==="waiting"?["Starting","ok","Starts once the page has loaded"]:!t&&Lt()?["Starting","ok",""]:["After refresh","warn","On, starts with the next page load"]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:["Off","",""]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:e.enabled?["On","","Runs once userscripts are on"]:["Off","",""]}renderScript(e,t,o){let n=t.id!=="game",r=n?void 0:this.entryFor(o.key),i=r?.meta??o.meta,a=oe("div","scriptRow"),l=oe("div",`toggle${o.enabled?" on":""}`);l.title=o.enabled?"Turn off":"Turn on",l.onclick=()=>this.toggle(o,r,n);let c=oe("div","scriptInfo"),d=oe("div","scriptName",i.name||o.file);i.version&&d.append(oe("span","version",`v${i.version}`)),i.author&&d.append(oe("span","author",`by ${i.author}`)),c.append(d);let h=[i.desc,i.name?o.file:"",wo(o.size)].filter(Boolean).join(" \xB7 ");c.append(oe("div","scriptDesc",h)),c.title=[i.desc,`${o.file}, ${o.runAt}${o.priority?`, priority ${o.priority}`:""}`].filter(Boolean).join(` +`);let[p,m,f]=this.stateOf(o,r,n),g=oe("div",`state ${m}`,p);f&&(g.title=f);let b=oe("div","scriptActions");r?.settings&&Object.keys(r.settings).length&&b.append(js("tune","Script settings",()=>{this.openSettings.has(o.key)?this.openSettings.delete(o.key):this.openSettings.add(o.key),this.render()})),b.append(js("edit","Edit",()=>{this.pendingRead=o.key,this.send("read",{key:o.key})}),js("swap_horiz",`Move to ${n?"Game":"Social"}`,()=>this.move(o,r,n)),js("folder_open","Show in folder",()=>this.send("reveal",{key:o.key})),js("delete","Delete (goes to the recycle bin)",()=>this.deleteScript(o,r),"danger")),a.append(l,c,g,b),e.append(a),r?.settings&&this.openSettings.has(o.key)&&e.append(this.renderSettings(o,r))}toggle(e,t,o){e.enabled=!e.enabled,this.send("toggle",{key:e.key,enabled:e.enabled}),o||this.masterOn()&&(t?e.enabled?(t.start(),(t.tainted||t.state!=="running"&&t.state!=="waiting"&&t.state!=="error")&&(this.needsRefresh=!0)):t.stop()||(this.needsRefresh=!0):e.enabled&&Lt()?Lo([e.key],!1,!0):e.enabled&&(this.needsRefresh=!0)),this.updateNotice(),this.render()}move(e,t,o){t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("move",{key:e.key,group:o?"game":"social"}),o&&!this.reload([e.file])&&(this.needsRefresh=!0),this.updateNotice()}async deleteScript(e,t){!this.popup||!await Pe(this.popup.shadow,`Delete ${e.file}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||(t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("delete",{key:e.key}))}async createScript(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New script","my-script.js","The file name. It ends up in the scripts folder of this group.");if(!t)return;let o=/\.js$/i.test(t)?t:`${t}.js`;if(this.groups.some(r=>r.id===e&&r.scripts.some(i=>i.file.toLowerCase()===o.toLowerCase()))){this.popup.showError(`${o} already exists in this group.`);return}this.showEditor(e,o,uy.replaceAll("{{name}}",o.replace(/\.js$/i,"")),!0)}renderSettings(e,t){let o=oe("div","scriptSettings"),n=t.settings??{},r=()=>{clearTimeout(this.prefsTimers.get(e.key)),this.prefsTimers.set(e.key,setTimeout(()=>{this.prefsTimers.delete(e.key);let a=Object.fromEntries(Object.entries(n).map(([l,c])=>[l,c.value]));this.send("prefs",{key:e.key,prefs:a})},300))},i=(a,l)=>{t.setPref(a,l),r()};for(let[a,l]of Object.entries(n)){let c=oe("div","settingRow"),d=oe("div","settingLabel",l.title||a);l.desc&&d.append(oe("small","",l.desc)),c.append(d,this.settingControl(a,l,i)),o.append(c)}return o}settingControl(e,t,o){switch(t.type){case"bool":{let n=oe("div",`toggle${t.value?" on":""}`);return n.onclick=()=>{o(e,!t.value),n.classList.toggle("on",!!t.value)},n}case"num":{let n=oe("div");n.style.cssText="display:flex;gap:.6em;align-items:center";let r=oe("input");if(r.type="number",r.style.width="90px",r.value=String(t.value),t.min!==void 0&&(r.min=String(t.min)),t.max!==void 0&&(r.max=String(t.max)),r.step=String(t.step??"any"),t.min!==void 0&&t.max!==void 0){let i=oe("input");i.type="range",i.min=String(t.min),i.max=String(t.max),i.step=String(t.step??"any"),i.value=String(t.value),i.oninput=()=>{r.value=i.value,o(e,Number(i.value))},r.onchange=()=>{i.value=r.value},n.append(i)}return r.addEventListener("change",()=>{r.value!==""&&Number.isFinite(Number(r.value))&&o(e,Number(r.value))}),n.append(r),n}case"sel":{let n=oe("select");for(let r of t.opts??[]){let i=oe("option","",String(r));i.value=String(r),i.selected=r===t.value,n.append(i)}return n.onchange=()=>{let r=(t.opts??[]).find(i=>String(i)===n.value);o(e,r??n.value)},n}case"color":{let n=oe("input");return n.type="color",n.value=String(t.value),n.onchange=()=>o(e,n.value),n}case"text":{let n=oe("input");return n.type="text",n.value=String(t.value??""),n.onchange=()=>o(e,n.value),n}case"keybind":{let n=i=>[i?.ctrl&&"Ctrl",i?.alt&&"Alt",i?.shift&&"Shift",i?.key||"none"].filter(Boolean).join(" + "),r=oe("div","btn small",n(t.value));return r.onclick=()=>{r.textContent="Press a key...";let i=a=>{if(["Control","Alt","Shift","Meta"].includes(a.key))return;a.preventDefault(),a.stopPropagation(),window.removeEventListener("keydown",i,!0);let l={key:a.key.toLowerCase(),ctrl:a.ctrlKey,alt:a.altKey,shift:a.shiftKey};o(e,l),r.textContent=n(l)};window.addEventListener("keydown",i,!0)},r}default:return oe("div","scriptFile",`unsupported type "${t.type}"`)}}showEditor(e,t,o,n=!1){let r=this.body();if(!r)return;let{editor:i}=fo(r,{title:t,content:o,language:"js",isNew:n,onSave:a=>{this.editing&&(this.pendingSave={closeAfter:a},this.editing.closeAfterSave=a,this.send("write",{group:e,file:t,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={group:e,file:t,editor:i,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Pe(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||(this.editing=null,this.render())}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Pe(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},py=new Hl,hy=()=>py.open()});var zm,Bm=w(()=>{zm=`

          Swapper

          refreshReload list
          folder_openOpen swapper folder
          ×
          A file in the swapper folder replaces the game's file with the same path: swapper/textures/pistol.png replaces krunker.io/textures/pistol.png. Easiest way: drop your file onto the game file it should replace (right side), it gets the right folder and name. Folder names do not care about case. Text files like CSS can be written right here: New file, or the edit button on a game file to start from a copy.
          Your swaps
          note_addNew file
          create_new_folderNew folder
          Drop files or folders here to put them into the swapper folder as they are
          Game files
          `});var jl={};A(jl,{open:()=>wy});var fy,gy,Hm,mr,by,Dl,ce,rt,Us,Fm,Om,ql,Kl,vy,wy,Ul=w(()=>{"use strict";F();Bm();qs();Do();hr();fy=new Set(["css","js","mjs","json","txt","html","htm","svg","xml","obj","mtl","glsl","frag","vert","md","csv"]),gy=4*1024*1024,Hm=s=>fy.has(s.slice(s.lastIndexOf(".")+1).toLowerCase()),mr=()=>u.hostFeatures?.includes("swapper-editor")??!1,by=32*1024*1024,Dl=400,ce=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},rt=(s,e,t,o="")=>{let n=ce("div",`iconBtn ${o}`);return n.title=e,n.append(ce("span","mi",s)),n.onclick=r=>{r.stopPropagation(),t()},n},Us=s=>s.slice(s.lastIndexOf("/")+1),Fm=s=>s.includes("/")?s.slice(0,s.lastIndexOf("/")):"",Om=(s,e)=>{let t={name:"",path:"",folders:new Map,files:[]},o=n=>{let r=t;for(let i of n.split("/").filter(Boolean)){let a=r.folders.get(i);a||(a={name:i,path:r.path?`${r.path}/${i}`:i,folders:new Map,files:[]},r.folders.set(i,a)),r=a}return r};for(let n of e)o(n);for(let n of s)o(Fm(n.path)).files.push({name:Us(n.path),path:n.path,size:n.size});return t},ql=s=>s.files.length+[...s.folders.values()].reduce((e,t)=>e+ql(t),0),Kl=class{constructor(){this.popup=null,this.list=null,this.collapsedOwn=new Set,this.expandedGame=new Set,this.search="",this.touched=new Set,this.stale=new Set,this.uploadDone=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1}open(){if(this.popup)return;if(!Ds()){window.chrome.webview.postMessage("open, swapper"),u.showNotification("This Kute version can only open the swapper folder. Update Kute for the swapper manager.",!1,6);return}this.popup=vo(zm,{onMessage:r=>this.receive(r),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1,this.uploadDone?.(null),this.uploadDone=null}),e.querySelector("#swFolder").onclick=()=>this.send("reveal",{path:""}),e.querySelector("#swReload").onclick=()=>this.send("list",{}),e.querySelector("#swRefreshNow").onclick=()=>location.reload(),e.querySelector("#swNewFolder").onclick=()=>this.newFolder("");let o=e.querySelector("#swNewFile");mr()||(o.style.display="none"),o.onclick=()=>this.newFile(""),st(e.querySelector("#swOwnColumn"),r=>this.drop("",r));let n=e.querySelector("#swSearch");n.value=this.search,n.oninput=()=>{this.search=n.value.trim().toLowerCase(),this.renderGame()},e.querySelector("#swOwnTree").textContent="Loading...",this.send("list",{}),pr()||window.addEventListener("focus",()=>{!this.editing&&!this.uploadDone&&this.send("list",{})},{signal:t})}send(e,t){window.chrome.webview.postMessage(`swapper-${e} ${JSON.stringify(t)}`)}async drop(e,t){let o=t;!e&&o.every(({path:n})=>n.toLowerCase().startsWith("swapper/"))&&(o=o.map(({path:n,file:r})=>({path:n.slice(8),file:r}))),await this.upload(o.map(({path:n,file:r})=>({path:e?`${e}/${n}`:n,file:r})))}async replace(e,t){if(!this.popup)return;if(t.length!==1){this.popup.showError("Drop exactly one file onto a game file. Drop several onto a folder instead.");return}let[{file:o}]=t,n=r=>r.slice(r.lastIndexOf(".")+1).toLowerCase();if(n(o.name)!==n(e)){let r=`${o.name} is saved as ${Us(e)}, the game will read it as .${n(e)}. Go ahead?`;if(!await Pe(this.popup.shadow,"Different file type",r,"Save anyway"))return}await this.upload([{path:e,file:o}])}async upload(e){let t=[];for(let{path:o,file:n}of e){if(!this.popup)return;if(n.size>by){t.push(`${o}: larger than 32 MB, put it in with Open swapper folder`);continue}let r=await Il(n),i=await new Promise(a=>{this.uploadDone=a,this.send("upload",{path:o,data:r})});i?t.push(i):this.touched.add(o.toLowerCase())}this.send("list",{}),t.length&&this.popup?.showError(t.join(` +`))}receive(e){if(e.managerError&&this.popup?.showError(e.managerError),e.swapperUploaded){let o=this.uploadDone;this.uploadDone=null,o?.(e.swapperUploaded.error??null)}if(e.swapperSource&&e.swapperSource.path===this.pendingRead&&(this.pendingRead=null,typeof e.swapperSource.content=="string"?this.showEditor(e.swapperSource.path,e.swapperSource.content):this.popup?.showError(`${e.swapperSource.path} could not be read as text.`)),e.swapperWritten&&this.saving&&(this.saving=!1,e.swapperWritten.error?this.popup?.showError(e.swapperWritten.error):this.editing&&(this.touched.add(this.editing.path.toLowerCase()),this.editing.editor.markSaved(),this.editing.closeAfterSave&&this.closeEditor())),e.swapperChanged&&!this.editing&&!this.uploadDone&&this.send("list",{}),!e.swapper)return;let t=this.list;this.list=e.swapper,t&&this.applyChanges(t,e.swapper),this.render()}applyChanges(e,t){let o=c=>new Map(c.files.map(d=>[d.path.toLowerCase(),d.size])),n=o(e),r=o(t),i=new Set(this.touched);if(this.touched.clear(),e.enabled!==t.enabled)for(let c of[...n.keys(),...r.keys()])i.add(c);for(let[c,d]of r)n.get(c)!==d&&i.add(c);for(let c of n.keys())r.has(c)||i.add(c);if(!i.size)return;let a=new Set([...i].filter(c=>c.endsWith(".css")));a.size&&!pr()&&Ks(a);let l=new Set(t.seen.map(c=>c.toLowerCase()));for(let c of i)!a.has(c)&&l.has(c)&&this.stale.add(c)}get(e){return this.popup?.shadow.querySelector(e)}render(){if(!this.popup||!this.list)return;let e=this.get("#swNotice"),t=this.list.enabled===!1;e.hidden=!t&&!this.stale.size;let o=this.stale.size;e.querySelector("span").textContent=t?"The swapper is switched off (Settings, Customization), none of these files are used.":`The game already loaded ${o===1?"1 changed file":`${o} changed files`}, ${o===1?"it changes":"they change"} after a page refresh.`,this.renderOwn(),this.renderGame()}renderOwn(){if(!this.list)return;let e=this.get("#swOwnTree");e.textContent="";let t=Om(this.list.files,this.list.dirs);if(this.get("#swOwnCount").textContent=`${this.list.files.length} file${this.list.files.length===1?"":"s"}`,!this.list.files.length&&!this.list.dirs.length){e.append(ce("div","treeNote","Nothing swapped yet. Drop a file onto one of the game files on the right, or drop a whole swapper pack here."));return}let o=new Map(this.list.seen.map(i=>[i.toLowerCase(),i])),n=new Map;for(let i of this.list.seen){let a=Us(i).toLowerCase();n.set(a,[...n.get(a)??[],i])}let r=(i,a)=>{for(let l of[...i.folders.values()].sort((c,d)=>c.name.localeCompare(d.name))){let c=this.collapsedOwn.has(l.path),d=this.folderRow(l.name,a,!c,`${ql(l)}`);d.onclick=()=>{c?this.collapsedOwn.delete(l.path):this.collapsedOwn.add(l.path),this.renderOwn()};let h=d.querySelector(".scriptActions");mr()&&h?.append(rt("note_add","New file inside",()=>this.newFile(l.path))),h?.append(rt("create_new_folder","New folder inside",()=>this.newFolder(l.path)),rt("drive_file_rename_outline","Rename or move",()=>this.move(l.path)),rt("folder_open","Open in Explorer",()=>this.send("reveal",{path:l.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(l.path),"danger")),st(d,p=>this.drop(l.path,p)),e.append(d),c||r(l,a+1)}for(let l of[...i.files].sort((c,d)=>c.name.localeCompare(d.name)))e.append(this.ownFileRow(l,a,o,n))};r(t,0)}folderRow(e,t,o,n){let r=ce("div","node folder");return r.style.setProperty("--depth",String(t)),r.append(ce("span","mi",o?"expand_more":"chevron_right"),ce("span","mi kind",o?"folder_open":"folder")),r.append(ce("span","nodeName",e),ce("span","nodeSize",n),ce("div","scriptActions")),r}ownFileRow(e,t,o,n){let r=ce("div","node");r.style.setProperty("--depth",String(t+1)),r.append(ce("span","mi","description"),ce("span","nodeName",e.name),ce("span","nodeSize",wo(e.size)));let i=o.get(e.path.toLowerCase()),a=(n.get(e.name.toLowerCase())??[]).filter(c=>c.toLowerCase()!==e.path.toLowerCase());if(i){let c=ce("span","state ok","Used");c.title=`The game loaded krunker.io/${i} this session, this file replaced it.`,r.append(c)}else if(a.length){let[c]=a,d=ce("span","state warn","Wrong folder?");d.title=`The game asks for this file as ${a.join(", ")}`;let h=ce("div","btn small","Move there");h.title=`Move to ${c}`,h.onclick=()=>this.send("move",{from:e.path,to:c}),r.append(d,h)}else{let c=ce("span","state","Not requested");c.title="The game did not ask for this path in this session. It may still come (another map, a skin), or the path does not match any game file.",r.append(c)}let l=ce("div","scriptActions");return mr()&&Hm(e.path)&&e.size<=gy&&(l.append(rt("edit","Edit",()=>this.edit(e.path))),r.ondblclick=()=>this.edit(e.path)),l.append(rt("drive_file_rename_outline","Rename or move",()=>this.move(e.path)),rt("folder_open","Show in Explorer",()=>this.send("reveal",{path:e.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(e.path),"danger")),r.append(l),st(r,c=>this.drop(Fm(e.path),c)),r}renderGame(){if(!this.list||!this.popup)return;let e=this.get("#swGameTree");e.textContent="";let{seen:t}=this.list;this.get("#swGameCount").textContent=`${t.length} loaded this session`;let o=new Set(this.list.files.map(a=>a.path.toLowerCase()));if(!t.length){e.append(ce("div","treeNote","The game has not loaded any files yet. Play a round or open a menu, then Reload list."));return}let n=(a,l)=>{let c=ce("div","node");if(c.style.setProperty("--depth",String(l)),c.title=`krunker.io/${a} +Drop a file here to replace it`,c.append(ce("span","mi","insert_drive_file"),ce("span","nodeName",l?Us(a):a)),o.has(a.toLowerCase())&&c.append(ce("span","swapped","swapped")),mr()&&Hm(a)){let d=this.list?.files.find(p=>p.path.toLowerCase()===a.toLowerCase()),h=ce("div","scriptActions");d?h.append(rt("edit","Edit your swap",()=>this.edit(d.path))):h.append(rt("edit_note","Edit a copy, saving it swaps the file",()=>this.editCopy(a))),c.append(h)}return st(c,d=>this.replace(a,d)),c};if(this.search){let a=t.filter(l=>l.toLowerCase().includes(this.search));for(let l of a.slice(0,Dl))e.append(n(l,0));a.length||e.append(ce("div","treeNote","No game file matches.")),a.length>Dl&&e.append(ce("div","treeNote",`${a.length-Dl} more, search for something longer.`));return}let r=Om(t.map(a=>({path:a,size:0})),[]),i=(a,l)=>{for(let c of[...a.folders.values()].sort((d,h)=>d.name.localeCompare(h.name))){let d=this.expandedGame.has(c.path),h=this.folderRow(c.name,l,d,`${ql(c)}`);h.title="Drop files here to put them into this folder",h.onclick=()=>{d?this.expandedGame.delete(c.path):this.expandedGame.add(c.path),this.renderGame()},st(h,p=>this.drop(c.path,p)),e.append(h),d&&i(c,l+1)}for(let c of[...a.files].sort((d,h)=>d.name.localeCompare(h.name)))e.append(n(c.path,l+1))};i(r,0)}async newFile(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New file",e?`${e}/new.css`:"css/new.css","A path inside the swapper folder, the same path the game loads the file from");if(!t)return;let o=t.replace(/^\/+/,"");if(this.list?.files.some(n=>n.path.toLowerCase()===o.toLowerCase())){this.popup.showError(`${o} already exists, edit it instead.`);return}this.showEditor(o,"",!0)}edit(e){this.pendingRead||this.editing||(this.pendingRead=e,this.send("read",{path:e}))}async editCopy(e){if(this.pendingRead||this.editing)return;this.pendingRead=e;let t=null;for(let o of["https://krunker.io","https://assets.krunker.io"])try{let n=await fetch(`${o}/${e}`);if(n.ok){t=await n.text();break}}catch{}this.pendingRead===e&&(this.pendingRead=null,t===null&&(this.popup?.showError(`Could not download krunker.io/${e}, starting with an empty file.`),t=""),this.showEditor(e,t,!0))}showEditor(e,t,o=!1){if(!this.popup)return;let n=this.get("#swEditor");this.get(".swapColumns").style.display="none",n.style.display="";let{editor:r}=fo(n,{title:e,content:t,language:Ga(e),isNew:o,onSave:i=>{!this.editing||this.saving||(this.saving=!0,this.editing.closeAfterSave=i,this.send("write",{path:e,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={path:e,editor:r,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Pe(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||this.closeEditor()}closeEditor(){if(this.editing=null,!this.popup)return;let e=this.get("#swEditor");e.textContent="",e.style.display="none",this.get(".swapColumns").style.display="",this.render()}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Pe(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}async newFolder(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New folder",e?`${e}/`:"textures","A path inside the swapper folder, for example textures/weapons");t&&this.send("mkdir",{path:t})}async move(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"Rename or move",e,"The new path inside the swapper folder. Change the folders in front to move it.");!t||t===e||this.send("move",{from:e,to:t})}async remove(e){!this.popup||!await Pe(this.popup.shadow,`Delete ${Us(e)}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||this.send("delete",{path:e})}},vy=new Kl,wy=()=>vy.open()});var Dm={};var Gl=w(()=>{"use strict";F();os();hr();u.userscriptManager={open:()=>{Promise.resolve().then(()=>(Fl(),Ol)).then(s=>s.open()).catch(s=>console.error("[kute] userscript manager:",s))}};u.settings.toggleUserscripts=s=>{if(u.settings.data.userscripts=s,s)Lt()?Lo(null,!1,!0):u.userscriptManager.masterChanged||u.showNotification("Refresh the page to start your userscripts.",!1,5);else{let e=(Je?.entries??[]).filter(t=>(t.state==="running"||t.state==="waiting")&&!t.stop()).map(t=>t.meta.name||t.key);e.length&&u.showNotification(`${e.join(", ")} cannot be stopped and keeps running until the next refresh.`,!1,6)}u.userscriptManager.masterChanged?.(s)};window.chrome.webview.addEventListener("message",s=>{let e=s.data?.swapperChanged?.css;Array.isArray(e)&&e.length&&Ks(new Set(e.map(String)))});u.swapperManager={open:()=>{Promise.resolve().then(()=>(Ul(),jl)).then(s=>s.open()).catch(s=>console.error("[kute] swapper manager:",s))}};u.customCss={open:()=>{Promise.resolve().then(()=>(zl(),Bl)).then(s=>s.open()).catch(s=>console.error("[kute] custom css:",s))}}});var Km={};A(Km,{default:()=>W});var Wl,ky,yy,qm,Vl,xy,W,xe=w(()=>{"use strict";F();Nt();Wl="kute_market_session",ky="x-kute-session",yy=3e3,qm=3600*1e3,Vl=class{constructor(){this.sessionPromise=null,this.memorySession=null,this.cache=new Map,this.lastError="",this.retryAt=0}loggedIn(){try{return localStorage.getItem("krunker_token")!==null}catch{return!1}}hostSupported(){return u.hostFeatures?.includes("market-attest")===!0}stored(){if(this.memorySession&&Date.now()t.expiresAt-qm?null:t}catch{return null}}forget(e){if(this.stored()?.session===e){try{localStorage.removeItem(Wl)}catch{}this.memorySession=null}}attest(e){return new Promise(t=>{let o=0,n=r=>{let i=null;try{i=typeof r.data=="string"?JSON.parse(r.data):r.data}catch{return}let a=i?.marketAttest;!a||a.challenge!==e||(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(a))};o=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},yy),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(`market-attest, ${e}, ${this.loggedIn()}`)})}session(){let e=this.stored();return e?Promise.resolve(e.session):(this.sessionPromise??=this.newSession().finally(()=>{this.sessionPromise=null}),this.sessionPromise)}async newSession(){if(this.lastError="",!this.loggedIn())return this.lastError="log in to Krunker to use the market",null;if(!this.hostSupported())return this.lastError="this Kute version cannot sign in to the market, update Kute",null;let e=await he.requestStatus("/market/session",{method:"POST"});if(!e.data?.challenge)return this.lastError=e.status===503?"the market is not available right now":"could not reach the market",e.status===429&&this.limited(e.retryAt),null;let t=await this.attest(e.data.challenge);if(!t)return this.lastError="Kute did not answer the sign in",null;let o=await he.requestStatus("/market/session/confirm",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({challenge:t.challenge,sig:t.sig,version:t.version,loggedIn:t.loggedIn})});if(!o.data?.session)return this.lastError=typeof o.error?.error=="string"?o.error.error:"the market refused the sign in",o.status===429&&this.limited(o.retryAt),null;this.memorySession={session:o.data.session,expiresAt:o.data.expiresAt};try{localStorage.setItem(Wl,JSON.stringify(this.memorySession))}catch{}return o.data.session}async request(e,t={},o=!1){return(await this.requestStatus(e,t,o)).data}async requestStatus(e,t={},o=!1){if(Date.now()this.request(e)){let n=Date.now(),r=this.cache.get(e);if(r&&n-r.at(a===null&&this.cache.delete(e),a));if(this.cache.set(e,{at:n,ttl:t,value:i}),this.cache.size>500){let a=this.cache.keys().next();a.done||this.cache.delete(a.value)}return i}retry(){return Date.now(){let n=await this.requestStatus(o);if(n.status!==404)return n.data;let r=await this.cached(`/market/item/${e}`,3e5);if(!r)return null;let[i,a]=await Promise.all([this.cached(`/market/item/${e}/history?range=${t}`,3e5),this.cached(`/market/item/${e}/listings`,6e4)]);return{item:r,history:i,listings:a}})}async values(e){let t=[...new Set(e)].sort((n,r)=>n-r),o={};for(let n=0;nGs,RARITIES:()=>Ut,formatAge:()=>We,formatKr:()=>Re,formatPercent:()=>it});function Re(s){return Number.isFinite(s)?Math.abs(s)>=1e6?`${(s/1e6).toFixed(s%1e6===0?0:1)}M`:Math.round(s).toLocaleString("en-US"):"?"}function it(s){if(s==null||!Number.isFinite(s))return"\u2013";let e=s*100;return`${e>0?"+":""}${Math.abs(e)>=100?e.toFixed(0):e.toFixed(1)} %`}function We(s){if(!Number.isFinite(s)||s<0)return"\u2013";let e=s/6e4;if(e<60)return`${Math.max(1,Math.round(e))} min`;let t=e/60;return t<48?`${Math.round(t)} h`:`${Math.round(t/24)} d`}var Ut,Gs,Ve=w(()=>{"use strict";Ut=[{name:"Uncommon",color:"#b2f252"},{name:"Rare",color:"#2196F3"},{name:"Epic",color:"#E040FB"},{name:"Legendary",color:"#FBC02D"},{name:"Relic",color:"#ff5722"},{name:"Contraband",color:"#f44336"},{name:"Unobtainable",color:"#ffffff"},{name:"NFT",color:"#9e9e9e"}],Gs={A:"#5ce05a",B:"#9ccc65",C:"#fbc02d",D:"#ff9800",F:"#f44336"}});var Um={};A(Um,{TRADE_VERDICTS:()=>Gt,TYPE_NAMES:()=>$t,activityLabel:()=>Jl,change:()=>ae,empty:()=>fe,esc:()=>S,evidenceLabel:()=>Vs,fairValue:()=>at,identity:()=>me,lineNote:()=>Xl,money:()=>T,noEvidence:()=>Wt,singleListing:()=>Yl,stat:()=>ne,verdictOf:()=>Ws});var $t,Gt,Ws,S,T,ae,Wt,Yl,at,Xl,Vs,Jl,me,fe,ne,pe=w(()=>{"use strict";Ve();$t=["Weapons","Hats","Bodies","Melee","Sprays","Dyes","Waists","Faces","Charms","Emotes","Stickers","Skydomes","Poses","Spin tickets","Capes","Heads","Paints","Backs","Consumables"],Gt={good:{label:"Favorable trade",detail:"More estimated value coming in"},fair:{label:"Fair trade",detail:"Similar estimated value"},bad:{label:"Unfavorable trade",detail:"More estimated value going out"},uncertain:{label:"Not enough evidence",detail:"Estimates are too uncertain for a verdict"}},Ws=s=>Object.hasOwn(Gt,s)?s:"uncertain",S=s=>String(s??"").replace(/[&<>"']/g,e=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[e]??e),T=s=>s==null?"Unavailable":Re(s),ae=s=>{if(s==null)return'No trend yet';let e="muted";return s>.005&&(e="positive"),s<-.005&&(e="negative"),`${S(it(s))}`},Wt=s=>s.method==="floor"||s.method==="krunker",Yl=s=>s.method==="ask"&&s.onS===1,at=(s,e="")=>s?Wt(s)?`${T(s.fair)}${e}${s.method==="floor"?"floor":"krunker"}`:Yl(s)?`${T(s.fair)}${e}1 listing`:`${T(s.fair)}${e}`:T(void 0),Xl=s=>s.unknown?Wt(s)?`No price evidence · ${s.method==="floor"?"floor":"Krunker"} ${T(s.fair)}`:"Needs more evidence":`${T(s.fair)} KR each`,Vs=s=>s.method==="floor"?"No price evidence, quick-sell floor":s.method==="krunker"?"No price evidence, Krunker's estimate":Yl(s)?"One listing only":s.method?.includes("trades")?s.method.startsWith("sales")?"Sales + private trades":"Private-trade estimate":s.method?.startsWith("sales")?(s.sales7d??0)>=5?"Recent sales":"Sparse sales":"Limited evidence",Jl=s=>s.privateTrading?.trades7d?`${s.privateTrading.trades7d} private trade${s.privateTrading.trades7d===1?"":"s"} this week${s.sales7d?` + ${s.sales7d} sales`:""}`:(s.sales7d??0)>=7?"Active this week":(s.sales7d??0)>0?"Traded this week":"No reported sales this week",me=s=>`${s.thumbnail?``:'K'}${S(s.name)}${S(Ut[s.rarity??-1]?.name??"Item")}`,fe=(s,e,t="")=>`
          ◇

          ${S(s)}

          ${S(e)}

          ${t}
          `,ne=(s,e,t)=>`
          ${S(s)}${e}${t}
          `});var Wm={};A(Wm,{default:()=>fr});var Sy,ko,_e,Gm,Ey,$y,Cy,Zl,My,Ql,Ty,fr,ec=w(()=>{"use strict";F();xe();Ve();pe();Sy=1500,ko="data-kute-market",_e="kuteMarketLine",Gm="kuteMarketCardStyle",Ey=".market-card, .market-item-card",$y=` .market-card,.market-item-card{position:relative} -.${Ke}{display:inline-flex!important;align-items:center;gap:.35em;white-space:nowrap;cursor:pointer;pointer-events:auto} -.${Ke}:hover{filter:brightness(1.25)} -.${Ke}.kuteFloating{position:absolute;left:6px;bottom:6px;z-index:3;background:rgba(0,0,0,.72);color:#fff;padding:2px 7px;border-radius:5px;font-size:12px;font-weight:700} -.${Ke} .kuteMark{color:#f5479b;font-weight:900} -.${Ke} .kuteGrade{display:inline-flex;align-items:center;justify-content:center;min-width:1.4em;height:1.4em;border-radius:3px;padding:0 .25em;color:#111;font-size:.75em;line-height:1} -.${Ke} .kuteDelta{font-size:.85em} -.${Ke} .kuteDelta.kuteDeal{color:#5ce05a} -.${Ke} .kuteDelta.kuteOver{color:#f44336} +.${_e}{display:inline-flex!important;align-items:center;gap:.35em;white-space:nowrap;cursor:pointer;pointer-events:auto} +.${_e}:hover{filter:brightness(1.25)} +.${_e}.kuteFloating{position:absolute;left:6px;bottom:6px;z-index:3;background:rgba(0,0,0,.72);color:#fff;padding:2px 7px;border-radius:5px;font-size:12px;font-weight:700} +.${_e} .kuteMark{color:#f5479b;font-weight:900} +.${_e} .kuteGrade{display:inline-flex;align-items:center;justify-content:center;min-width:1.4em;height:1.4em;border-radius:3px;padding:0 .25em;color:#111;font-size:.75em;line-height:1} +.${_e} .kuteDelta{font-size:.85em} +.${_e} .kuteDelta.kuteDeal{color:#5ce05a} +.${_e} .kuteDelta.kuteOver{color:#f44336} +.${_e} .kuteNone{opacity:.6} .kuteDetailBtn .kuteMark{color:#f5479b;font-weight:900;margin-right:2px} -`,yy=".item-detail-container, .items-detail-root",Vl="kuteDetailBtn",xy=5e3,Yl=class s{constructor(){this.timer=void 0,this.busy=!1,this.pick=null,this.onPick=e=>{if(document.pointerLockElement||!(e.target instanceof Element))return;let t=e.target.closest("[id^='trd_'], .trade-inv-item[data-index]");if(!t)return;let o=/^trd_(?:sel_|inv_)?\d+_(\d+)/.exec(t.id),n=o?o[1]:t.getAttribute("data-index");if(n===null||!/^\d+$/.test(n))return;let r=t.querySelector(".tItemN")?.textContent?.trim()??"";this.pick={skin:Number(n),name:r,at:Date.now()}}}start(){if(this.timer===void 0){if(!document.getElementById(qm)){let e=document.createElement("style");e.id=qm,e.textContent=ky,document.head.append(e)}this.timer=window.setInterval(()=>this.tick(),vy),document.addEventListener("pointerdown",this.onPick,!0)}}stop(){clearInterval(this.timer),this.timer=void 0,document.removeEventListener("pointerdown",this.onPick,!0),this.pick=null;for(let e of document.querySelectorAll(`.${Ke}, .${Vl}`))e.remove();for(let e of document.querySelectorAll(`[${vo}]`))e.removeAttribute(vo)}static thumbPath(e){let t=/\/textures\/previews\/([^?#]+)/.exec(e);return t?t[1]:null}static askOf(e){let t=e.querySelector(".inline-price");if(t){let o=Number((t.textContent??"").replace(/[^\d.]/g,""));return Number.isFinite(o)&&o>0?o:null}for(let o of e.querySelectorAll("span, div")){if(o.classList.contains(Ke)||o.children.length)continue;let n=o.textContent?.trim()??"";if(/^~/.test(n))continue;let r=/^([\d,.]+)\s*KR$/i.exec(n)??/^([\d,.]+)$/.exec(n);if(r&&o.closest(".estimate-badge")===null){let i=Number(r[1].replace(/,/g,""));if(Number.isFinite(i)&&i>0)return i}}return null}async tick(){if(this.busy||document.pointerLockElement)return;let e=document.querySelector(yy),t=e?.getAttribute("aria-label")??"1";e&&e.getAttribute(vo)!==t&&(e.setAttribute(vo,t),e.querySelector(`.${Vl}`)?.remove(),await this.detailButton(e,t));let o=[...document.querySelectorAll(wy)].filter(n=>!n.hasAttribute(vo));if(o.length){this.busy=!0;try{let n=new Map;for(let i of o){i.setAttribute(vo,"1");let a=i.querySelector("img"),l=a instanceof HTMLImageElement?s.thumbPath(a.currentSrc||a.src):null;if(!l)continue;let c=n.get(l)??[];c.push(i),n.set(l,c)}if(!n.size)return;let r=await W.valuesByThumbnails([...n.keys()]);for(let[i,a]of n){let l=r[i];for(let c of a)c.isConnected&&this.draw(c,l??null)}}finally{this.busy=!1}}}async detailValue(e,t){let{pick:o}=this;if(o&&Date.now()-o.atc.name.toLowerCase()===t.toLowerCase())??[];return l.length===1?l[0]:null}async detailButton(e,t){let o=e.querySelector(".full-details-container, .items-detail-header-actions");if(!o)return;let n=document.createElement("button");n.type="button";let r=o.querySelector("button");n.className=`${r?.className??""} ${Vl}`.trim();let i=r?.querySelector("i")?.className??"material-icons";n.innerHTML=`candlestick_chart Kute Market`,n.title="K value, liquidity, price history, depth and owners in Kute Market",o.append(n);let a=await this.detailValue(e,t);if(!a||e.getAttribute(vo)!==t){n.remove();return}let l=n.querySelector("span");l&&(l.textContent=`Kute Market \xB7 K ${Pe(a.fair)} ${a.grade}`),n.addEventListener("click",c=>{c.stopPropagation(),u.market?.open("item",a.skin)})}draw(e,t){if(e.querySelector(`.${Ke}`)?.remove(),!t)return;let o=document.createElement("div"),n=e.querySelector(".estimate-badge");o.className=n?`${n.className} ${Ke}`:`${Ke} kuteFloating`;let r=s.askOf(e),i="";if(r!==null&&t.fair>0){let a=r/t.fair-1,l="";a<=-.1&&t.confidence>=40?l="kuteDeal":a>=.25&&(l="kuteOver");let c=Math.round(Math.abs(a)*100);i=`${a<0?"\u2212":"+"}${c}%`}o.innerHTML=`K ${Pe(t.fair)}${S(t.grade)}${i}`,o.title=`Kute fair value ${Pe(t.fair)} kr, evidence score ${t.confidence}/100, public-market activity grade ${t.grade}`+(t.privateTrading?.trades7d?`, ${t.privateTrading.trades7d} reported private trades this week`:"")+(t.exchange?.status==="applied"?", includes private exchange evidence":"")+(r!==null?`, this ask ${it(r/t.fair-1)} against it`:"")+". Click for the item in Kute Market",o.addEventListener("click",a=>{a.stopPropagation(),a.preventDefault(),u.market?.open("item",t.skin)}),n?n.after(o):e.append(o)}},Sy=new Yl,hr=Sy});var Um,jm=w(()=>{Um='
          '});var Gm={};A(Gm,{default:()=>mr});var $y,Jl,Cy,mr,Zl=w(()=>{"use strict";xe();Ve();pe();jm();$y=1200,Jl=class s{constructor(){this.timer=void 0,this.lastKey="",this.retryAt=0,this.failures=0,this.generation=0,this.busy=!1,this.expanded=!1,this.dismiss=e=>{let t=this.box?.shadowRoot?.querySelector("details");if(t?.open){if(e instanceof KeyboardEvent){if(e.key!=="Escape")return;e.preventDefault(),e.stopPropagation(),t.querySelector("summary")?.focus()}else if(e.target instanceof Node&&this.box?.contains(e.target))return;t.open=!1,this.expanded=!1}},this.box=null}start(){this.timer===void 0&&(this.timer=window.setInterval(()=>this.tick(),$y),window.addEventListener("pointerdown",this.dismiss,!0),window.addEventListener("keydown",this.dismiss,!0))}stop(){clearInterval(this.timer),this.timer=void 0,this.generation++,window.removeEventListener("pointerdown",this.dismiss,!0),window.removeEventListener("keydown",this.dismiss,!0),this.clear()}clear(){this.box?.remove(),this.box=null,this.lastKey="",this.expanded=!1}static kr(e){let t=/([\d,.]+)/.exec(e.replace(/[~\s]/g,""));return t&&Number(t[1].replace(/,/g,""))||0}static row(e,t){let o=e.parentElement;for(;o&&!o.contains(t);)o=o.parentElement;return o&&o!==document.body?o:null}snapshot(){let e=[...document.querySelectorAll(".trade-window .trade-side")].filter(d=>d.getClientRects().length);if(e.length>=2){let d=s.row(e[0],e[1]);if(!d)return null;let h=f=>[...f.querySelectorAll(".trade-offer-scroll .trade-inv-item")].map(g=>{let b=g.getAttribute("data-index"),v=b!==null&&/^\d+$/.test(b)?Number(b):-1,k=g.querySelector("img")?.getAttribute("src")??"",E={skin:v,count:s.kr(g.querySelector(".trade-item-count")?.textContent??"1")||1};v<0&&(E.path=/\/textures\/previews\/([^?#]+)/.exec(k)?.[1]??"");for(let[L,x]of[["serial","data-serial"],["wear","data-wear-float"],["style","data-style"]]){let $=g.getAttribute(x);$!==null&&$!==""&&Number.isFinite(Number($))&&(E[L]=Number($))}return E}),p=h(e[0]),m=h(e[1]);return{give:p,get:m,giveKr:0,getKr:0,anchor:d,key:JSON.stringify([p,m])}}let t=[document.getElementById("tradeList0"),document.getElementById("tradeList1")];if(!t[0]?.getClientRects().length||!t[1]?.getClientRects().length)return null;let o=s.row(t[0],t[1]);if(!o)return null;let n=d=>[...d.querySelectorAll("[id^='trd_']")].flatMap(h=>{let p=/^trd_(?:sel_)?\d+_(\d+)(?:_\d+)?$/.exec(h.id);return p?[{skin:Number(p[1]),count:s.kr(h.querySelector(".tItemCnt")?.textContent??"1")||1}]:[]}),r=d=>Math.max(0,s.kr(document.getElementById(`currency_item_${d}_1`)?.querySelector(".tCurrencyAmount")?.textContent??"0")),i=n(t[0]),a=n(t[1]),l=r(0),c=r(1);return{give:i,get:a,giveKr:l,getKr:c,anchor:o,key:JSON.stringify([i,a,l,c])}}current(e,t){if(this.timer===void 0||t!==this.generation||document.pointerLockElement||document.hidden)return!1;let o=this.snapshot();return o?.anchor===e.anchor&&o.key===e.key}async tick(){if(this.busy||this.timer===void 0||document.pointerLockElement||document.hidden)return;this.busy=!0;let{generation:e}=this;try{let t=this.snapshot();if(!t){this.clear();return}if(Date.now()p.skin<0&&p.path).map(p=>p.path),r=n.length?await W.valuesByThumbnails(n):{};if(!this.current(t,e))return;let i=p=>p.map(({path:m,...f})=>({...f,skin:f.skin<0?r[m??""]?.skin??-1:f.skin})),a=i(t.give),l=i(t.get);if([...a,...l].some(p=>p.skin<0)){this.render(t,null,"An item could not be identified. A complete comparison is unavailable.");return}let c=await W.analyzeStatus({give:a,get:l,giveKr:t.giveKr,getKr:t.getKr}),d=c.data;if(d?(this.failures=0,this.retryAt=0):(this.failures++,this.retryAt=c.status===429?c.retryAt??Date.now()+6e4:Date.now()+Math.min(6e4,5e3*2**(this.failures-1)),this.lastKey=""),!this.current(t,e))return;let h=c.status===429?`Request limit reached. Estimates resume after ${new Date(this.retryAt).toLocaleTimeString()}.`:"Estimates unavailable. Retrying with a longer delay.";this.render(t,d,h)}finally{this.busy=!1}}render(e,t,o){this.box||(this.box=document.createElement("div"),this.box.className="kuteTradeBox",this.box.style.cssText="all:initial;display:block;box-sizing:border-box;width:100%;min-width:0;margin:0 0 10px;",this.box.attachShadow({mode:"open"}).innerHTML=Um);let n=this.box.shadowRoot?.querySelector(".panel");if(!n)return;n.className=`panel${e.give.length||e.get.length||e.giveKr||e.getKr?" filled":""}`,this.expanded=n.querySelector("details")?.open??this.expanded;let r='
          Kute trade insight';if(!t)r+=`

          ${S(o)}

          `;else{let i=!e.give.length&&!e.giveKr||!e.get.length&&!e.getKr,a=[...t.give.items,...t.get.items].some(f=>f.unknown),l=Us(t.verdict),c=i?"Add items on both sides to compare":jt[l].detail,d=jt[l].label;a&&(d="Incomplete comparison"),i&&(d="Add both sides"),r+=`${c}`;let h=(f,g)=>{let b=f.items.reduce((k,E)=>k+E.count,0),v=f.items.some(k=>k.unknown);return`
          ${g}${Pe(f.value)}${v?"+":""} KR${b} ${b===1?"item":"items"}${f.kr?` + ${Pe(f.kr)} KR`:""} · ${v?"Partial estimate":"Estimated value"}
          `},p=i||a?'–Incomplete comparison':`${t.difference>0?"+":""}${Pe(t.difference)} KR${S(it(t.differenceShare))} of the larger side`;r+=`
          ${h(t.give,"You give")}
          ${d}${p}
          ${h(t.get,"You receive")}
          `;let m=(f,g)=>`

          ${g}

          ${f.items.map(b=>`
          ${b.count>1?`${b.count} × `:""}${S(b.name)}${b.serial!==void 0?` #${S(b.serial)}`:""}${b.wear!==void 0?` · wear ${b.wear.toFixed(4)}`:""}${b.unknown?"":`${S(b.grade)}`}${b.unknown?"Unvalued":`${Pe(b.lineValue)} KR`}
          `).join("")}${f.kr?`
          Added KR${Pe(f.kr)} KR
          `:""}${!f.items.length&&!f.kr?'No items added':""}
          `;r+=`Item breakdown & evidenceHide item breakdown & evidence
          ${m(t.give,"You give")}${m(t.get,"You receive")}
          • Estimates describe market data, not guaranteed sale prices. Activity grades do not guarantee a selling time.
          • ${t.drivers.filter(f=>!f.startsWith("Liquidity adjustments")).map(f=>`
          • ${S(f)}
          • `).join("")}
          `}n.innerHTML=r,this.box.nextElementSibling!==e.anchor&&e.anchor.before(this.box)}},Cy=new Jl,mr=Cy});var Vm={};A(Vm,{readWatchlist:()=>Se,saveWatchlist:()=>wo,toggleWatch:()=>Ql});function Se(){try{let s=JSON.parse(localStorage.getItem(Wm)??"[]");if(!Array.isArray(s))return[];let e=new Set;return s.filter(t=>!t||!Number.isInteger(t.skin)||t.skin<0||e.has(t.skin)||typeof t.name!="string"?!1:(e.add(t.skin),!0)).slice(0,100).map(t=>({skin:t.skin,name:t.name,rarity:Number.isInteger(t.rarity)?t.rarity:void 0,thumbnail:typeof t.thumbnail=="string"?t.thumbnail:null,target:Number.isFinite(t.target)&&t.target>0?t.target:null}))}catch{return[]}}function wo(s){try{return localStorage.setItem(Wm,JSON.stringify(s.slice(0,100))),window.dispatchEvent(new Event("kute-market-watch-changed")),!0}catch{return!1}}function Ql(s){let e=Se(),t=e.some(o=>o.skin===s.skin);return!t&&e.length>=100?!1:wo(t?e.filter(o=>o.skin!==s.skin):[...e,{skin:s.skin,name:s.name,rarity:s.rarity,thumbnail:s.thumbnail??null,target:null}])}var Wm,Ut=w(()=>{"use strict";Wm="kute_market_watch"});var Zm={};A(Zm,{UNREAD_EVENT:()=>Ws,default:()=>$t});var My,Ty,Ym,Xm,Jm,Ws,Ay,ec,Ly,$t,fr=w(()=>{"use strict";D();It();xe();Ut();Ve();My=5*6e4,Ty=3*36e5,Ym="kute_market_alerts",Xm="kute_market_watch_report",Jm="kute_market_alerts_unread",Ws="kute-market-alerts-unread",Ay=2*36e5,ec=class{constructor(){this.timer=0,this.busy=!1,this.seen=new Map;try{let e=JSON.parse(localStorage.getItem(Ym)??"[]");if(Array.isArray(e))for(let[t,o]of e.slice(0,100))Number.isInteger(t)&&Number.isFinite(o?.target)&&typeof o?.reached=="boolean"&&this.seen.set(t,o)}catch{this.seen.clear()}this.unread=new Set;try{let e=JSON.parse(localStorage.getItem(Jm)??"[]");if(Array.isArray(e))for(let t of e.slice(0,100))Number.isInteger(t)&&this.unread.add(t)}catch{this.unread.clear()}this.onChange=()=>{this.check(),this.report()}}start(){this.timer||(this.timer=window.setInterval(()=>{this.check()},My),window.addEventListener("kute-market-watch-changed",this.onChange),this.check(),this.report())}async report(){if(!this.active())return;let e=Se().map(n=>n.skin).sort((n,r)=>n-r),t=e.join(","),o={};try{o=JSON.parse(localStorage.getItem(Xm)??"{}")??{}}catch{}if(!(o.key===t&&Date.now()-(o.at??0)o.target!==null);for(let o of this.seen.keys())e.some(n=>n.skin===o)||this.seen.delete(o);this.save();let t=this.unread.size;for(let o of this.unread)e.some(n=>n.skin===o)||this.unread.delete(o);if(this.unread.size!==t&&this.saveUnread(),!!e.length){this.busy=!0;try{let o=await W.values(e.map(i=>i.skin));if(!this.active())return;let n=Se(),r=[];for(let i of e){if(i.target===null||!n.some(d=>d.skin===i.skin&&d.target===i.target))continue;let a=o[i.skin];if(!a||!a.bookAt||!a.valuedAt||Date.now()-Math.min(a.bookAt,a.valuedAt)>Ty||a.lowest===null)continue;let l=a.lowest<=i.target,c=this.seen.get(i.skin);l&&(!c?.reached||c.target!==i.target)&&(r.push({name:i.name,price:a.lowest}),this.unread.add(i.skin)),this.seen.set(i.skin,{target:i.target,reached:l})}if(r.length){this.saveUnread();let i=r[0],a=r.length>1?` and ${r.length-1} more`:"";u.showNotification(`Watchlist: ${i.name} at ${Pe(i.price)} KR${a}. Observed ask reached your target.`,!1,8)}this.save()}catch{}finally{this.busy=!1}}}},Ly=new ec,$t=Ly});var ef={};A(ef,{contributedItem:()=>tc,contributedSale:()=>sc,contributedTrade:()=>oc});function Vs(s){let e=s;if(typeof e=="string")try{e=JSON.parse(e)}catch{return null}return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function tc(s){let e=typeof s=="number"?{ind:s}:Vs(s);if(!e)return null;let t=e.ind??e.skinindex??e.skin_index??e.i??e.index,o=e.count??e.cnt??e.c??1;if(!ht(t)||!ht(o,1)||o>1e4)return null;let n=Vs(e.m??e.metadata??e.meta)??{},r={skin:t,count:o};for(let i of["serial","wear","style","paint","instance"]){let a=e[i]??n[i];if(a!=null){if(i==="wear"?typeof a!="number"||!Number.isFinite(a)||a<0||a>1:!ht(a))return null;r[i]=a}}return r}function Qm(s){if(typeof s=="number")return ht(s)?[{id:1,amount:s}]:null;if(!Array.isArray(s)||s.length>64)return null;let e=new Map;for(let t of s){let o=Vs(t);if(!o||!ht(o.cid,1)||typeof o.amt!="number"||!Number.isFinite(o.amt)||o.amt<0||o.amt>1e9||o.cid===1&&!ht(o.amt))return null;let n=(e.get(o.cid)??0)+o.amt;if(!Number.isFinite(n)||n>1e9)return null;e.set(o.cid,n)}return[...e].filter(([,t])=>t>0).map(([t,o])=>({id:t,amount:o}))}function oc(s,e){let t=Vs(s);if(!t||!ht(t.trid,1,Number.MAX_SAFE_INTEGER)||t.status&&t.status!=="completed")return null;let o=Date.parse(t.dte??t.date??"");if(!Number.isFinite(o)||oe||!Array.isArray(t.sksell)||!Array.isArray(t.skbuy)||t.sksell.length+t.skbuy.length>40)return null;let n=t.sksell.map(tc),r=t.skbuy.map(tc);if([...n,...r].some(l=>!l)||!n.length&&!r.length)return null;let i=Qm(t.csell??[]),a=Qm(t.cbuy??[]);return!i||!a?null:{trid:t.trid,at:o,context:"history",give:n,get:r,giveCurrencies:i,getCurrencies:a,giveKr:i.find(l=>l.id===1)?.amount??0,getKr:a.find(l=>l.id===1)?.amount??0}}function sc(s,e){let t=Vs(s);if(!t||t.status!=="completed"||!ht(t.marketid,1,Number.MAX_SAFE_INTEGER)||!ht(t.skinindex)||!ht(t.amount,1))return null;let o=Date.parse(t.date);return!Number.isFinite(o)||oe||!["buy","sell"].includes(t.type)?null:{marketid:t.marketid,type:t.type,skinindex:t.skinindex,amount:t.amount,date:new Date(o).toISOString()}}var ht,nc=w(()=>{"use strict";ht=(s,e=0,t=1e9)=>typeof s=="number"&&Number.isSafeInteger(s)&&s>=e&&s<=t});var nf={};A(nf,{default:()=>gr});function tf(s){let e=2166136261,t=84696351;for(let o=0;o>>0,t=Math.imul(t^s.charCodeAt(o),16777619)>>>0;return e.toString(36)+t.toString(36)}function Ry(){try{let s=JSON.parse(localStorage.getItem(of)??"[]");return new Set(Array.isArray(s)?s.filter(e=>typeof e=="string").slice(-sf):[])}catch{return new Set}}var of,sf,rc,Py,gr,ic=w(()=>{"use strict";D();It();xe();nc();of="kute_market_sent",sf=2e3;rc=class{constructor(){this.running=!1,this.generation=0,this.nextPostAt=0,this.failures=0,this.account="",this.queue=new Map,this.sent=Ry(),this.timer=void 0,this.controller=null,this.listings=new Map,this.openTrades=new Map,this.seen=new Set,this.listener=e=>this.receive(e)}start(){this.running||!u.hostFeatures?.includes("history-capture")||(this.running=!0,this.generation++,window.chrome.webview.addEventListener("message",this.listener))}stop(){this.running&&window.chrome.webview.removeEventListener("message",this.listener),this.running=!1,this.generation++,clearTimeout(this.timer),this.controller?.abort(),this.controller=null,this.queue.clear(),this.forgetCaptured()}useAccount(e){this.account!==e&&(this.queue.clear(),this.forgetCaptured(),this.account=e)}forgetCaptured(){this.listings.clear(),this.openTrades.clear(),this.seen.clear()}active(){return this.running&&!document.hidden&&!document.pointerLockElement&&!he.down&&!he.offline()&&W.loggedIn()}currentAccount(){try{return localStorage.getItem("krunker_username")??""}catch{return""}}current(e,t){return this.active()&&e===this.generation&&t===this.currentAccount()}receive(e){let t=null;try{t=typeof e.data=="string"?JSON.parse(e.data):e.data}catch{return}if(u.hostFeatures?.includes("market-capture")){t?.marketCapture&&this.captured(t.marketCapture);return}let o=t?.marketHistory;!o||o.kind!=="sales"&&o.kind!=="trades"||this.capture(o.data,o.kind)}captured(e){if(typeof e.path!="string"||e.data?.error)return;let t=e.path.split(/[?#]/)[0],o=e.data?.data;if(e.method==="GET"){if(t==="/market/history")this.capture(e.data,"sales");else if(t==="/trades/history"){if(Array.isArray(o?.open)){this.openTrades.clear();for(let i of o.open.slice(0,100))Number.isSafeInteger(i?.trid)&&this.openTrades.set(i.trid,i)}this.capture(e.data,"trades")}else t==="/market/listings"&&Array.isArray(o?.listings)&&this.listed(o.listings);return}if(e.method!=="POST")return;if(t==="/market/purchase"){let i=this.listings.get(o?.mid);if(i&&i.skin===o?.skn){let a={marketid:o.mid,type:"buy",date:new Date().toISOString(),skinindex:o.skn,amount:i.price,status:"completed"};this.capture({history:[a]},"sales")}return}let n=/^\/trades\/(\d+)\/accept$/.exec(t),r=n&&this.openTrades.get(Number(n[1]));r&&this.capture({completed:[r]},"trades")}listed(e){if(this.active()){this.useAccount(this.currentAccount());for(let t of e.slice(0,200))!Number.isSafeInteger(t?.marketid)||!Number.isSafeInteger(t?.skinindex)||!Number.isSafeInteger(t?.funds)||(this.listings.delete(t.marketid),this.listings.set(t.marketid,{skin:t.skinindex,price:t.funds}),this.seen.size<200&&this.seen.add(t.skinindex));for(;this.listings.size>3e3;)this.listings.delete(this.listings.keys().next().value??0);this.schedule()}}capture(e,t){if(!this.active()||e?.error)return;let o=this.currentAccount(),n=e?.data??e,r=t==="trades"?n?.completed:n?.history;if(!Array.isArray(r))return;this.useAccount(o);let i=Date.now();for(let a of r.slice(0,500)){let l=t==="trades"?oc(a,i):sc(a,i);if(!l)continue;let c=t+JSON.stringify(l);this.sent.has(tf(`${o} -${c}`))||this.queue.set(c,{kind:t,row:l})}for(;this.queue.size>300;)this.queue.delete(this.queue.keys().next().value??"");this.schedule()}schedule(){if(clearTimeout(this.timer),!this.running||!this.queue.size&&!this.seen.size)return;let e=Math.max(100,this.nextPostAt-Date.now(),W.retryAt-Date.now());this.timer=window.setTimeout(()=>{this.flush()},e)}async flush(){if(!this.running||this.controller||!this.queue.size&&!this.seen.size)return;if(this.account!==this.currentAccount()){this.queue.clear(),this.seen.clear();return}if(!this.active()||Date.now()sf;)this.sent.delete(this.sent.values().next().value??"");try{localStorage.setItem(of,JSON.stringify([...this.sent]))}catch{}this.failures=0}catch{e===this.generation&&(this.failures++,this.nextPostAt=Date.now()+Math.min(6e4,5e3*2**Math.min(this.failures-1,4)))}finally{this.controller===i&&(this.controller=null,this.schedule())}}},Py=new rc,gr=Py});var rf={};A(rf,{DISCOVERY_TABS:()=>br,TITLES:()=>Ys});var Ys,br,vr=w(()=>{"use strict";Ys={overview:"Market",intelligence:"Discover",search:"Discover",active:"Discover",movers:"Discover",deals:"Discover",indices:"Market",watchlist:"Watchlist",portfolio:"Inventory",analyze:"Trade",help:"How it works",item:"Item overview"},br=["search","active","deals","movers","intelligence"]});var af={};A(af,{element:()=>Fo,html:()=>P,markup:()=>Xs});function Fo(s,e,...t){let o=Object.entries(e).filter(([,r])=>r!==!1&&r!==null).map(([r,i])=>i===!0?` ${r}`:` ${r}="${S(String(i))}"`).join(""),n=t.map(r=>typeof r=="object"?r.html:S(String(r))).join("");return`<${s}${o}>${n}`}var Xs,P,_e=w(()=>{"use strict";pe();Xs=s=>({html:s});P=(s,...e)=>s.reduce((t,o,n)=>t+String(e[n-1])+o)});var cf={};A(cf,{itemDesk:()=>ac,marketDesk:()=>lc});function ac(s){let e=s.analytics;if(!e)return'

          Advanced analytics unavailable

          This server does not yet provide the detailed metrics for this item.

          ';let{book:t}=e,o=!!t.observedAt&&Date.now()-t.observedAt<=3*36e5,n=a=>e.latest!==null&&a!==null?`${ae(e.latest/a-1)} latest daily mean vs average`:"Needs consecutive daily sale prices",{position:r}=e.range90,i=t.ladder.length?`
          ${t.ladder.map(a=>``).join("")}
          Ask ceilingListingsTotal asks / KR
          ${T(a.price)} KR${a.premium?`Within +${Math.round(a.premium*100)}% of lowest`:"At the lowest ask"}
          ${a.count}
          ${T(a.kr)}
          `:'

          The next successful book observation will populate the ask ladder.

          ';return`
          ADVANCED / TRADING DESK

          Price, activity & supply

          Completed daily means through ${S(e.throughDay)} UTC. ${e.observedDays30} of 30 days have observed sale prices.

          Descriptive analytics
          Sale-price return / 7D ${ae(e.change7d)}30D ${ae(e.change30d)}Latest daily mean ${Js(e.latest)}
          ${ne("Sales-weighted price / 30D",Js(e.weightedPrice30),e.weightedPrice30===null?"No completed sale-price observations":`${ae(e.estimateVsWeighted)} Kute estimate vs benchmark`)}${ne("Simple moving average / 7D",Js(e.sma7),n(e.sma7))}${ne("Simple moving average / 30D",Js(e.sma30),n(e.sma30))}${ne("RSI / 14 periods",Qs(e.rsi14),e.rsi14===null?`Needs 15 consecutive priced days; ${e.consecutiveDays} available`:"Wilder smoothing of daily sale means; scale 0 to 100")}${ne("Daily volatility / 30D",Gt(e.dailyVolatility30),`${e.returnPairs30} adjacent daily returns; needs 10; not annualized`)}${ne("Max drawdown / 90D",Gt(e.maxDrawdown90),`${e.observedDays90} priced days; gaps can hide larger declines`)}${ne("Range position / 90D",Gt(r),e.range90.low!==null?`${T(e.range90.low)} to ${T(e.range90.high)} KR in daily means`:"Needs at least 5 observed price days")}${ne("Reported turnover / 30D",Js(e.turnover30d),"Daily mean price multiplied by units sold")}

          Activity & supply pressure

          Supply ${lf(e.statsAt)}
          `+Zs("Weekly sales",e.reportedDays7?`${T(e.sales7d)} units`:"No reports",`${e.priorReportedDays7?T(e.priorSales7d):"No reports"} in the prior week; reports on ${e.reportedDays7}/7 and ${e.priorReportedDays7}/7 days`)+Zs("Relative weekly volume",Qs(e.activityRatio,"x"),"Latest 7 days / prior 7; requires reports for both full weeks")+Zs("Listed supply / daily sales",Qs(e.daysListedAtRecentPace," days"),"Reported listings / recent daily sales; a supply ratio, not time to sell")+Zs("Circulating supply listed",Gt(e.listedShare),`${T(e.reportedListed)} reported listed / ${T(e.circulation)} circulating`)+Zs("30D turnover / circulation",Gt(e.turnoverShare),"Reported units sold / current supply; an item can trade more than once")+'

          Ask-side depth ladder

          '+lf(t.observedAt)+"
          "+(o?"":'

          This book needs a fresh observation. The ladder describes the stored sample.

          ')+i+`

          Cumulative counts in ${t.sampled} sampled listings; ${e.reportedListed} reported listed. These rows overlap. ${t.belowEstimate} sampled asks are below the Kute estimate.

          Largest observed seller${t.sellers} identified sellers; identity available for ${t.knownSellerListings}/${t.sampled} listings
          ${Gt(t.largestSellerShare)}
          Read the metrics

          All technical indicators use completed daily average sale prices, not exchange closing prices or individual transactions. Moving averages require every day in their window. RSI resets at a missing price day; a flat sequence is shown as 50. A high or low RSI describes past momentum and does not establish a buy or sell signal.

          Volatility is the sample standard deviation of log returns between adjacent observed days. Drawdown is the largest observed peak-to-trough decline. The sales-weighted benchmark weights each daily mean by its reported sale count. Missing days are excluded, never treated as zero-price trades.

          The ladder contains asking prices only. We have no bid book, so it cannot measure bid/ask spread, execution slippage, or buyer demand. Supply ratios require a supply observation within 24 hours. These metrics do not enable unvalidated forecasts.

          `}function lc(s){let e=s.diagnostics,t=s.breadth;return!e||!t?"":`
          ADVANCED / MARKET DIAGNOSTICS

          How broad is the move?

          ${t.eligible} eligible items
          ${ne("Advance / decline ratio",Qs(e.advanceDeclineRatio,"x"),`${t.rising} rising / ${t.falling} falling; 0.5% movement threshold`)}${ne("Median item return / 7D",ae(e.medianChange),"Equal item weighting among eligible estimates")}${ne("Middle half of returns",`${ae(e.lowerQuartile)} to ${ae(e.upperQuartile)}`,"25th to 75th percentile; dispersion across items")}${ne("Top 10 turnover share",Gt(e.top10VolumeShare),"Concentration of 30D KR turnover in eligible items")}
          ${(s.categories??[]).map(o=>``).join("")}
          CategoryEligible7D medianRising / falling30D KR turnoverTurnover share
          ${S(Et[o.type]??"Other")}${o.items}${ae(o.change)}${o.rising??"?"} / ${o.falling??"?"}${T(o.volume)}${Gt(e.eligibleVolume>0?o.volume/e.eligibleVolume:null)}

          Coverage: ${t.eligible} of ${T(t.total)} tradable items. Requires a sales-based estimate updated within 24 hours, at least 5 sales in 7 days, and a measured 7D trend. Turnover shares describe this eligible set, not the entire market. Price changes use Kute estimates.

          `}var Qs,Gt,Js,lf,Zs,wr=w(()=>{"use strict";pe();Ve();Qs=(s,e="")=>s==null?"Unavailable":s.toFixed(1)+e,Gt=s=>s==null?"Unavailable":Qs(s*100,"%"),Js=s=>s==null?"Unavailable":`${T(s)} KR`,lf=s=>s?`${We(Math.max(0,Date.now()-s))} ago`:"freshness unknown",Zs=(s,e,t)=>`
          ${s}${t}
          ${e}
          `});var uf={};A(uf,{overviewView:()=>cc});async function cc(s){let[e,t]=await Promise.all([W.cached("/market/overview",5*df),W.cached("/market/indices",60*df)]);if(!e)return s.unavailable();let o=new Date().toISOString().slice(0,10),n=e.days.filter(m=>m.daym.name==="kute-100"),l=Se().slice(0,4),c=l.length?await W.values(l.map(m=>m.skin)):{},d=l.length?P` +`,Cy=".item-detail-container, .items-detail-root",Zl="kuteDetailBtn",My=5e3,Ql=class s{constructor(){this.timer=void 0,this.busy=!1,this.pick=null,this.onPick=e=>{if(document.pointerLockElement||!(e.target instanceof Element))return;let t=e.target.closest("[id^='trd_'], .trade-inv-item[data-index]");if(!t)return;let o=/^trd_(?:sel_|inv_)?\d+_(\d+)/.exec(t.id),n=o?o[1]:t.getAttribute("data-index");if(n===null||!/^\d+$/.test(n))return;let r=t.querySelector(".tItemN")?.textContent?.trim()??"";this.pick={skin:Number(n),name:r,at:Date.now()}}}start(){if(this.timer===void 0){if(!document.getElementById(Gm)){let e=document.createElement("style");e.id=Gm,e.textContent=$y,document.head.append(e)}this.timer=window.setInterval(()=>this.tick(),Sy),document.addEventListener("pointerdown",this.onPick,!0)}}stop(){clearInterval(this.timer),this.timer=void 0,document.removeEventListener("pointerdown",this.onPick,!0),this.pick=null;for(let e of document.querySelectorAll(`.${_e}, .${Zl}`))e.remove();for(let e of document.querySelectorAll(`[${ko}]`))e.removeAttribute(ko)}static thumbPath(e){let t=/\/textures\/previews\/([^?#]+)/.exec(e);return t?t[1]:null}static askOf(e){let t=e.querySelector(".inline-price");if(t){let o=Number((t.textContent??"").replace(/[^\d.]/g,""));return Number.isFinite(o)&&o>0?o:null}for(let o of e.querySelectorAll("span, div")){if(o.classList.contains(_e)||o.children.length)continue;let n=o.textContent?.trim()??"";if(/^~/.test(n))continue;let r=/^([\d,.]+)\s*KR$/i.exec(n)??/^([\d,.]+)$/.exec(n);if(r&&o.closest(".estimate-badge")===null){let i=Number(r[1].replace(/,/g,""));if(Number.isFinite(i)&&i>0)return i}}return null}async tick(){if(this.busy||document.pointerLockElement)return;let e=document.querySelector(Cy),t=e?.getAttribute("aria-label")??"1";e&&e.getAttribute(ko)!==t&&(e.setAttribute(ko,t),e.querySelector(`.${Zl}`)?.remove(),await this.detailButton(e,t));let o=[...document.querySelectorAll(Ey)].filter(n=>!n.hasAttribute(ko));if(o.length){this.busy=!0;try{let n=new Map;for(let i of o){i.setAttribute(ko,"1");let a=i.querySelector("img"),l=a instanceof HTMLImageElement?s.thumbPath(a.currentSrc||a.src):null;if(!l)continue;let c=n.get(l)??[];c.push(i),n.set(l,c)}if(!n.size)return;let r=await W.valuesByThumbnails([...n.keys()]);for(let[i,a]of n){let l=r[i];for(let c of a)c.isConnected&&this.draw(c,l??null)}}finally{this.busy=!1}}}async detailValue(e,t){let{pick:o}=this;if(o&&Date.now()-o.atc.name.toLowerCase()===t.toLowerCase())??[];return l.length===1?l[0]:null}async detailButton(e,t){let o=e.querySelector(".full-details-container, .items-detail-header-actions");if(!o)return;let n=document.createElement("button");n.type="button";let r=o.querySelector("button");n.className=`${r?.className??""} ${Zl}`.trim();let i=r?.querySelector("i")?.className??"material-icons";n.innerHTML=`candlestick_chart Kute Market`,n.title="K value, liquidity, price history, depth and owners in Kute Market",o.append(n);let a=await this.detailValue(e,t);if(!a||e.getAttribute(ko)!==t){n.remove();return}let l=n.querySelector("span");l&&(l.textContent=Wt(a)?"Kute Market \xB7 no price data":`Kute Market \xB7 K ${Re(a.fair)} ${a.grade}`),n.addEventListener("click",c=>{c.stopPropagation(),u.market?.open("item",a.skin)})}draw(e,t){if(e.querySelector(`.${_e}`)?.remove(),!t)return;let o=document.createElement("div"),n=e.querySelector(".estimate-badge");o.className=n?`${n.className} ${_e}`:`${_e} kuteFloating`;let r=s.askOf(e);if(Wt(t))o.innerHTML='K no data',o.title=`Kute has no price evidence for this item: no sale, trade or listing it could see. ${t.method==="floor"?"The game's quick-sell floor":"Krunker's estimate"} is ${Re(t.fair)} kr, and such items are often worth far more. Click for the item in Kute Market`;else{let i="";if(r!==null&&t.fair>0){let a=r/t.fair-1,l="";a<=-.1&&t.confidence>=40?l="kuteDeal":a>=.25&&(l="kuteOver");let c=Math.round(Math.abs(a)*100);i=`${a<0?"\u2212":"+"}${c}%`}o.innerHTML=`K ${Re(t.fair)}${S(t.grade)}${i}`,o.title=`Kute fair value ${Re(t.fair)} kr, evidence score ${t.confidence}/100, public-market activity grade ${t.grade}`+(t.privateTrading?.trades7d?`, ${t.privateTrading.trades7d} reported private trades this week`:"")+(t.exchange?.status==="applied"?", includes private exchange evidence":"")+(r!==null?`, this ask ${it(r/t.fair-1)} against it`:"")+". Click for the item in Kute Market"}o.addEventListener("click",i=>{i.stopPropagation(),i.preventDefault(),u.market?.open("item",t.skin)}),n?n.after(o):e.append(o)}},Ty=new Ql,fr=Ty});var Ym,Vm=w(()=>{Ym='
          '});var Xm={};A(Xm,{default:()=>gr});var Ly,tc,Ry,gr,oc=w(()=>{"use strict";xe();Ve();pe();Vm();Ly=1200,tc=class s{constructor(){this.timer=void 0,this.lastKey="",this.retryAt=0,this.failures=0,this.generation=0,this.busy=!1,this.expanded=!1,this.dismiss=e=>{let t=this.box?.shadowRoot?.querySelector("details");if(t?.open){if(e instanceof KeyboardEvent){if(e.key!=="Escape")return;e.preventDefault(),e.stopPropagation(),t.querySelector("summary")?.focus()}else if(e.target instanceof Node&&this.box?.contains(e.target))return;t.open=!1,this.expanded=!1}},this.box=null,this.chatList=null}placed(e){return e.slot?e.slot.firstElementChild===this.box:this.box?.nextElementSibling===e.anchor}start(){this.timer===void 0&&(this.timer=window.setInterval(()=>this.tick(),Ly),window.addEventListener("pointerdown",this.dismiss,!0),window.addEventListener("keydown",this.dismiss,!0))}stop(){clearInterval(this.timer),this.timer=void 0,this.generation++,window.removeEventListener("pointerdown",this.dismiss,!0),window.removeEventListener("keydown",this.dismiss,!0),this.clear()}clear(){this.box?.remove(),this.box=null,this.chatList&&(this.chatList.style.maxHeight=""),this.chatList=null,this.lastKey="",this.expanded=!1}static kr(e){let t=/([\d,.]+)/.exec(e.replace(/[~\s]/g,""));return t&&Number(t[1].replace(/,/g,""))||0}static row(e,t){let o=e.parentElement;for(;o&&!o.contains(t);)o=o.parentElement;return o&&o!==document.body?o:null}snapshot(){let e=[...document.querySelectorAll(".trade-window .trade-side")].filter(p=>p.getClientRects().length);if(e.length>=2){let p=s.row(e[0],e[1]);if(!p)return null;let m=b=>[...b.querySelectorAll(".trade-offer-scroll .trade-inv-item")].map(v=>{let k=v.getAttribute("data-index"),E=k!==null&&/^\d+$/.test(k)?Number(k):-1,L=v.querySelector("img")?.getAttribute("src")??"",y={skin:E,count:s.kr(v.querySelector(".trade-item-count")?.textContent??"1")||1};E<0&&(y.path=/\/textures\/previews\/([^?#]+)/.exec(L)?.[1]??"");for(let[C,I]of[["serial","data-serial"],["wear","data-wear-float"],["style","data-style"]]){let _=v.getAttribute(I);_!==null&&_!==""&&Number.isFinite(Number(_))&&(y[C]=Number(_))}return y}),f=m(e[0]),g=m(e[1]);return{give:f,get:g,giveKr:0,getKr:0,anchor:p,key:JSON.stringify([f,g])}}let t=[document.getElementById("tradeList0"),document.getElementById("tradeList1")];if(!t[0]?.getClientRects().length||!t[1]?.getClientRects().length)return null;let o=s.row(t[0],t[1]);if(!o)return null;let n=p=>[...p.querySelectorAll("[id^='trd_']")].flatMap(m=>{let f=/^trd_(?:sel_)?\d+_(\d+)(?:_\d+)?$/.exec(m.id);return f?[{skin:Number(f[1]),count:s.kr(m.querySelector(".tItemCnt")?.textContent??"1")||1}]:[]}),r=p=>Math.max(0,s.kr(document.getElementById(`currency_item_${p}_1`)?.querySelector(".tCurrencyAmount")?.textContent??"0")),i=n(t[0]),a=n(t[1]),l=r(0),c=r(1),d=document.getElementById("tradeChatHolder"),h=d?.getClientRects().length?d:null;return{give:i,get:a,giveKr:l,getKr:c,anchor:o,slot:h,key:JSON.stringify([i,a,l,c])}}current(e,t){if(this.timer===void 0||t!==this.generation||document.pointerLockElement||document.hidden)return!1;let o=this.snapshot();return o?.anchor===e.anchor&&o.key===e.key}async tick(){if(this.busy||this.timer===void 0||document.pointerLockElement||document.hidden)return;this.busy=!0;let{generation:e}=this;try{let t=this.snapshot();if(!t){this.clear();return}if(Date.now()p.skin<0&&p.path).map(p=>p.path),r=n.length?await W.valuesByThumbnails(n):{};if(!this.current(t,e))return;let i=p=>p.map(({path:m,...f})=>({...f,skin:f.skin<0?r[m??""]?.skin??-1:f.skin})),a=i(t.give),l=i(t.get);if([...a,...l].some(p=>p.skin<0)){this.render(t,null,"An item could not be identified. A complete comparison is unavailable.");return}let c=await W.analyzeStatus({give:a,get:l,giveKr:t.giveKr,getKr:t.getKr}),d=c.data;if(d?(this.failures=0,this.retryAt=0):(this.failures++,this.retryAt=c.status===429?c.retryAt??Date.now()+6e4:Date.now()+Math.min(6e4,5e3*2**(this.failures-1)),this.lastKey=""),!this.current(t,e))return;let h=c.status===429?`Request limit reached. Estimates resume after ${new Date(this.retryAt).toLocaleTimeString()}.`:"Estimates unavailable. Retrying with a longer delay.";this.render(t,d,h)}finally{this.busy=!1}}render(e,t,o){this.box||(this.box=document.createElement("div"),this.box.className="kuteTradeBox",this.box.style.cssText="all:initial;display:block;box-sizing:border-box;width:100%;min-width:0;margin:0 0 10px;container-type:inline-size;",this.box.attachShadow({mode:"open"}).innerHTML=Ym);let n=this.box.shadowRoot?.querySelector(".panel");if(!n)return;n.className=`panel${e.give.length||e.get.length||e.giveKr||e.getKr?" filled":""}`,this.expanded=n.querySelector("details")?.open??this.expanded;let r='
          Kute trade insight';if(!t)r+=`

          ${S(o)}

          `;else{let i=!e.give.length&&!e.giveKr||!e.get.length&&!e.getKr,a=[...t.give.items,...t.get.items].some(f=>f.unknown),l=Ws(t.verdict),c=i?"Add items on both sides to compare":Gt[l].detail,d=Gt[l].label;a&&(d="Incomplete comparison"),i&&(d="Add both sides"),r+=`${c}`;let h=(f,g)=>{let b=f.items.reduce((k,E)=>k+E.count,0),v=f.items.some(k=>k.unknown);return`
          ${g}${Re(f.value)}${v?"+":""} KR${b} ${b===1?"item":"items"}${f.kr?` + ${Re(f.kr)} KR`:""} · ${v?"Partial estimate":"Estimated value"}
          `},p=i||a?'–Incomplete comparison':`${t.difference>0?"+":""}${Re(t.difference)} KR${S(it(t.differenceShare))} of the larger side`;r+=`
          ${h(t.give,"You give")}
          ${d}${p}
          ${h(t.get,"You receive")}
          `;let m=(f,g)=>`

          ${g}

          ${f.items.map(b=>`
          ${b.count>1?`${b.count} × `:""}${S(b.name)}${b.serial!==void 0?` #${S(b.serial)}`:""}${b.wear!==void 0?` · wear ${b.wear.toFixed(4)}`:""}${b.unknown?"":`${S(b.grade)}`}${b.unknown?"Unvalued":`${Re(b.lineValue)} KR`}
          `).join("")}${f.kr?`
          Added KR${Re(f.kr)} KR
          `:""}${!f.items.length&&!f.kr?'No items added':""}
          `;r+=`Item breakdown & evidenceHide item breakdown & evidence
          ${m(t.give,"You give")}${m(t.get,"You receive")}
          • Estimates describe market data, not guaranteed sale prices. Activity grades do not guarantee a selling time.
          • ${t.drivers.filter(f=>!f.startsWith("Liquidity adjustments")).map(f=>`
          • ${S(f)}
          • `).join("")}
          `}if(n.innerHTML=r,e.slot){this.placed(e)||e.slot.prepend(this.box),this.chatList=document.getElementById("tradeChatList");let i=document.getElementById("tradeChatInput");this.chatList&&(this.chatList.style.maxHeight=`${Math.max(80,e.slot.clientHeight-this.box.offsetHeight-(i?.offsetHeight??0)-20)}px`)}else this.placed(e)||e.anchor.before(this.box)}},Ry=new tc,gr=Ry});var Zm={};A(Zm,{readWatchlist:()=>Se,saveWatchlist:()=>yo,toggleWatch:()=>sc});function Se(){try{let s=JSON.parse(localStorage.getItem(Jm)??"[]");if(!Array.isArray(s))return[];let e=new Set;return s.filter(t=>!t||!Number.isInteger(t.skin)||t.skin<0||e.has(t.skin)||typeof t.name!="string"?!1:(e.add(t.skin),!0)).slice(0,100).map(t=>({skin:t.skin,name:t.name,rarity:Number.isInteger(t.rarity)?t.rarity:void 0,thumbnail:typeof t.thumbnail=="string"?t.thumbnail:null,target:Number.isFinite(t.target)&&t.target>0?t.target:null}))}catch{return[]}}function yo(s){try{return localStorage.setItem(Jm,JSON.stringify(s.slice(0,100))),window.dispatchEvent(new Event("kute-market-watch-changed")),!0}catch{return!1}}function sc(s){let e=Se(),t=e.some(o=>o.skin===s.skin);return!t&&e.length>=100?!1:yo(t?e.filter(o=>o.skin!==s.skin):[...e,{skin:s.skin,name:s.name,rarity:s.rarity,thumbnail:s.thumbnail??null,target:null}])}var Jm,Vt=w(()=>{"use strict";Jm="kute_market_watch"});var of={};A(of,{UNREAD_EVENT:()=>Ys,default:()=>Ct});var Py,Iy,Qm,ef,tf,Ys,Ny,nc,_y,Ct,br=w(()=>{"use strict";F();Nt();xe();Vt();Ve();Py=5*6e4,Iy=3*36e5,Qm="kute_market_alerts",ef="kute_market_watch_report",tf="kute_market_alerts_unread",Ys="kute-market-alerts-unread",Ny=2*36e5,nc=class{constructor(){this.timer=0,this.busy=!1,this.seen=new Map;try{let e=JSON.parse(localStorage.getItem(Qm)??"[]");if(Array.isArray(e))for(let[t,o]of e.slice(0,100))Number.isInteger(t)&&Number.isFinite(o?.target)&&typeof o?.reached=="boolean"&&this.seen.set(t,o)}catch{this.seen.clear()}this.unread=new Set;try{let e=JSON.parse(localStorage.getItem(tf)??"[]");if(Array.isArray(e))for(let t of e.slice(0,100))Number.isInteger(t)&&this.unread.add(t)}catch{this.unread.clear()}this.onChange=()=>{this.check(),this.report()}}start(){this.timer||(this.timer=window.setInterval(()=>{this.check()},Py),window.addEventListener("kute-market-watch-changed",this.onChange),this.check(),this.report())}async report(){if(!this.active())return;let e=Se().map(n=>n.skin).sort((n,r)=>n-r),t=e.join(","),o={};try{o=JSON.parse(localStorage.getItem(ef)??"{}")??{}}catch{}if(!(o.key===t&&Date.now()-(o.at??0)o.target!==null);for(let o of this.seen.keys())e.some(n=>n.skin===o)||this.seen.delete(o);this.save();let t=this.unread.size;for(let o of this.unread)e.some(n=>n.skin===o)||this.unread.delete(o);if(this.unread.size!==t&&this.saveUnread(),!!e.length){this.busy=!0;try{let o=await W.values(e.map(i=>i.skin));if(!this.active())return;let n=Se(),r=[];for(let i of e){if(i.target===null||!n.some(d=>d.skin===i.skin&&d.target===i.target))continue;let a=o[i.skin];if(!a||!a.bookAt||!a.valuedAt||Date.now()-Math.min(a.bookAt,a.valuedAt)>Iy||a.lowest===null)continue;let l=a.lowest<=i.target,c=this.seen.get(i.skin);l&&(!c?.reached||c.target!==i.target)&&(r.push({name:i.name,price:a.lowest}),this.unread.add(i.skin)),this.seen.set(i.skin,{target:i.target,reached:l})}if(r.length){this.saveUnread();let i=r[0],a=r.length>1?` and ${r.length-1} more`:"";u.showNotification(`Watchlist: ${i.name} at ${Re(i.price)} KR${a}. Observed ask reached your target.`,!1,8)}this.save()}catch{}finally{this.busy=!1}}}},_y=new nc,Ct=_y});var rf={};A(rf,{contributedItem:()=>rc,contributedSale:()=>ac,contributedTrade:()=>ic});function Xs(s){let e=s;if(typeof e=="string")try{e=JSON.parse(e)}catch{return null}return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function rc(s){let e=typeof s=="number"?{ind:s}:Xs(s);if(!e)return null;let t=e.ind??e.skinindex??e.skin_index??e.i??e.index,o=e.count??e.cnt??e.c??1;if(!mt(t)||!mt(o,1)||o>1e4)return null;let n=Xs(e.m??e.metadata??e.meta)??{},r={skin:t,count:o};for(let i of["serial","wear","style","paint","instance"]){let a=e[i]??n[i];if(a!=null){if(i==="wear"?typeof a!="number"||!Number.isFinite(a)||a<0||a>1:!mt(a))return null;r[i]=a}}return r}function sf(s){if(typeof s=="number")return mt(s)?[{id:1,amount:s}]:null;if(!Array.isArray(s)||s.length>64)return null;let e=new Map;for(let t of s){let o=Xs(t);if(!o||!mt(o.cid,1)||typeof o.amt!="number"||!Number.isFinite(o.amt)||o.amt<0||o.amt>1e9||o.cid===1&&!mt(o.amt))return null;let n=(e.get(o.cid)??0)+o.amt;if(!Number.isFinite(n)||n>1e9)return null;e.set(o.cid,n)}return[...e].filter(([,t])=>t>0).map(([t,o])=>({id:t,amount:o}))}function ic(s,e){let t=Xs(s);if(!t||!mt(t.trid,1,Number.MAX_SAFE_INTEGER)||t.status&&t.status!=="completed")return null;let o=nf(t.dte??t.date);if(!Number.isFinite(o)||oe||!Array.isArray(t.sksell)||!Array.isArray(t.skbuy)||t.sksell.length+t.skbuy.length>40)return null;let n=t.sksell.map(rc),r=t.skbuy.map(rc);if([...n,...r].some(l=>!l)||!n.length&&!r.length)return null;let i=sf(t.csell??[]),a=sf(t.cbuy??[]);return!i||!a?null:{trid:t.trid,at:o,context:"history",give:n,get:r,giveCurrencies:i,getCurrencies:a,giveKr:i.find(l=>l.id===1)?.amount??0,getKr:a.find(l=>l.id===1)?.amount??0}}function ac(s,e){let t=Xs(s);if(!t||t.status!=="completed"||!mt(t.marketid,1,Number.MAX_SAFE_INTEGER)||!mt(t.skinindex)||!mt(t.amount,1))return null;let o=nf(t.date);return!Number.isFinite(o)||oe||!["buy","sell"].includes(t.type)?null:{marketid:t.marketid,type:t.type,skinindex:t.skinindex,amount:t.amount,date:new Date(o).toISOString()}}var mt,nf,lc=w(()=>{"use strict";mt=(s,e=0,t=1e9)=>typeof s=="number"&&Number.isSafeInteger(s)&&s>=e&&s<=t,nf=s=>typeof s=="string"?Date.parse(/^\d{4}-\d\d-\d\d \d\d:\d\d(:\d\d)?$/.test(s)?`${s.replace(" ","T")}Z`:s):NaN});var df={};A(df,{default:()=>vr});function af(s){let e=2166136261,t=84696351;for(let o=0;o>>0,t=Math.imul(t^s.charCodeAt(o),16777619)>>>0;return e.toString(36)+t.toString(36)}function By(){try{let s=JSON.parse(localStorage.getItem(lf)??"[]");return new Set(Array.isArray(s)?s.filter(e=>typeof e=="string").slice(-cf):[])}catch{return new Set}}var lf,cf,cc,zy,vr,dc=w(()=>{"use strict";F();Nt();xe();lc();lf="kute_market_sent",cf=2e3;cc=class{constructor(){this.running=!1,this.generation=0,this.nextPostAt=0,this.failures=0,this.account="",this.queue=new Map,this.sent=By(),this.timer=void 0,this.controller=null,this.listings=new Map,this.openTrades=new Map,this.seen=new Set,this.listener=e=>this.receive(e)}start(){this.running||!u.hostFeatures?.includes("history-capture")||(this.running=!0,this.generation++,window.chrome.webview.addEventListener("message",this.listener))}stop(){this.running&&window.chrome.webview.removeEventListener("message",this.listener),this.running=!1,this.generation++,clearTimeout(this.timer),this.controller?.abort(),this.controller=null,this.queue.clear(),this.forgetCaptured()}useAccount(e){this.account!==e&&(this.queue.clear(),this.forgetCaptured(),this.account=e)}forgetCaptured(){this.listings.clear(),this.openTrades.clear(),this.seen.clear()}active(){return this.running&&!document.hidden&&!document.pointerLockElement&&!he.down&&!he.offline()&&W.loggedIn()}currentAccount(){try{return localStorage.getItem("krunker_username")??""}catch{return""}}current(e,t){return this.active()&&e===this.generation&&t===this.currentAccount()}receive(e){let t=null;try{t=typeof e.data=="string"?JSON.parse(e.data):e.data}catch{return}if(u.hostFeatures?.includes("market-capture")){t?.marketCapture&&this.captured(t.marketCapture);return}let o=t?.marketHistory;!o||o.kind!=="sales"&&o.kind!=="trades"||this.capture(o.data,o.kind)}captured(e){if(typeof e.path!="string"||e.data?.error)return;let t=e.path.split(/[?#]/)[0],o=e.data?.data;if(e.method==="GET"){if(t==="/market/history")this.capture(e.data,"sales");else if(t==="/trades/history"){if(Array.isArray(o?.open)){this.openTrades.clear();for(let i of o.open.slice(0,100))Number.isSafeInteger(i?.trid)&&this.openTrades.set(i.trid,i)}this.capture(e.data,"trades")}else t==="/market/listings"&&Array.isArray(o?.listings)&&this.listed(o.listings);return}if(e.method!=="POST")return;if(t==="/market/purchase"){let i=this.listings.get(o?.mid);if(i&&i.skin===o?.skn){let a={marketid:o.mid,type:"buy",date:new Date().toISOString(),skinindex:o.skn,amount:i.price,status:"completed"};this.capture({history:[a]},"sales")}return}let n=/^\/trades\/(\d+)\/accept$/.exec(t),r=n&&this.openTrades.get(Number(n[1]));r&&this.capture({completed:[r]},"trades")}listed(e){if(this.active()){this.useAccount(this.currentAccount());for(let t of e.slice(0,200))!Number.isSafeInteger(t?.marketid)||!Number.isSafeInteger(t?.skinindex)||!Number.isSafeInteger(t?.funds)||(this.listings.delete(t.marketid),this.listings.set(t.marketid,{skin:t.skinindex,price:t.funds}),this.seen.size<200&&this.seen.add(t.skinindex));for(;this.listings.size>3e3;)this.listings.delete(this.listings.keys().next().value??0);this.schedule()}}capture(e,t){if(!this.active()||e?.error)return;let o=this.currentAccount(),n=e?.data??e,r=t==="trades"?n?.completed:n?.history;if(!Array.isArray(r))return;this.useAccount(o);let i=Date.now();for(let a of r.slice(0,500)){let l=t==="trades"?ic(a,i):ac(a,i);if(!l)continue;let c=t+JSON.stringify(l);this.sent.has(af(`${o} +${c}`))||this.queue.set(c,{kind:t,row:l})}for(;this.queue.size>300;)this.queue.delete(this.queue.keys().next().value??"");this.schedule()}schedule(){if(clearTimeout(this.timer),!this.running||!this.queue.size&&!this.seen.size)return;let e=Math.max(100,this.nextPostAt-Date.now(),W.retryAt-Date.now());this.timer=window.setTimeout(()=>{this.flush()},e)}async flush(){if(!this.running||this.controller||!this.queue.size&&!this.seen.size)return;if(this.account!==this.currentAccount()){this.queue.clear(),this.seen.clear();return}if(!this.active()||Date.now()cf;)this.sent.delete(this.sent.values().next().value??"");try{localStorage.setItem(lf,JSON.stringify([...this.sent]))}catch{}this.failures=0}catch{e===this.generation&&(this.failures++,this.nextPostAt=Date.now()+Math.min(6e4,5e3*2**Math.min(this.failures-1,4)))}finally{this.controller===i&&(this.controller=null,this.schedule())}}},zy=new cc,vr=zy});var uf={};A(uf,{DISCOVERY_TABS:()=>wr,TITLES:()=>Js});var Js,wr,kr=w(()=>{"use strict";Js={overview:"Market",intelligence:"Discover",search:"Discover",active:"Discover",movers:"Discover",deals:"Discover",indices:"Market",watchlist:"Watchlist",portfolio:"Inventory",analyze:"Trade",help:"How it works",item:"Item overview"},wr=["search","active","deals","movers","intelligence"]});var pf={};A(pf,{element:()=>Ko,html:()=>P,markup:()=>Zs});function Ko(s,e,...t){let o=Object.entries(e).filter(([,r])=>r!==!1&&r!==null).map(([r,i])=>i===!0?` ${r}`:` ${r}="${S(String(i))}"`).join(""),n=t.map(r=>typeof r=="object"?r.html:S(String(r))).join("");return`<${s}${o}>${n}`}var Zs,P,Be=w(()=>{"use strict";pe();Zs=s=>({html:s});P=(s,...e)=>s.reduce((t,o,n)=>t+String(e[n-1])+o)});var mf={};A(mf,{itemDesk:()=>uc,marketDesk:()=>pc});function uc(s){let e=s.analytics;if(!e)return'

          Advanced analytics unavailable

          This server does not yet provide the detailed metrics for this item.

          ';let{book:t}=e,o=!!t.observedAt&&Date.now()-t.observedAt<=3*36e5,n=a=>e.latest!==null&&a!==null?`${ae(e.latest/a-1)} latest daily mean vs average`:"Needs consecutive daily sale prices",{position:r}=e.range90,i=t.ladder.length?`
          ${t.ladder.map(a=>``).join("")}
          Ask ceilingListingsTotal asks / KR
          ${T(a.price)} KR${a.premium?`Within +${Math.round(a.premium*100)}% of lowest`:"At the lowest ask"}
          ${a.count}
          ${T(a.kr)}
          `:'

          The next successful book observation will populate the ask ladder.

          ';return`
          ADVANCED / TRADING DESK

          Price, activity & supply

          Completed daily means through ${S(e.throughDay)} UTC. ${e.observedDays30} of 30 days have observed sale prices.

          Descriptive analytics
          Sale-price return / 7D ${ae(e.change7d)}30D ${ae(e.change30d)}Latest daily mean ${Qs(e.latest)}
          ${ne("Sales-weighted price / 30D",Qs(e.weightedPrice30),e.weightedPrice30===null?"No completed sale-price observations":`${ae(e.estimateVsWeighted)} Kute estimate vs benchmark`)}${ne("Simple moving average / 7D",Qs(e.sma7),n(e.sma7))}${ne("Simple moving average / 30D",Qs(e.sma30),n(e.sma30))}${ne("RSI / 14 periods",tn(e.rsi14),e.rsi14===null?`Needs 15 consecutive priced days; ${e.consecutiveDays} available`:"Wilder smoothing of daily sale means; scale 0 to 100")}${ne("Daily volatility / 30D",Yt(e.dailyVolatility30),`${e.returnPairs30} adjacent daily returns; needs 10; not annualized`)}${ne("Max drawdown / 90D",Yt(e.maxDrawdown90),`${e.observedDays90} priced days; gaps can hide larger declines`)}${ne("Range position / 90D",Yt(r),e.range90.low!==null?`${T(e.range90.low)} to ${T(e.range90.high)} KR in daily means`:"Needs at least 5 observed price days")}${ne("Reported turnover / 30D",Qs(e.turnover30d),"Daily mean price multiplied by units sold")}

          Activity & supply pressure

          Supply ${hf(e.statsAt)}
          `+en("Weekly sales",e.reportedDays7?`${T(e.sales7d)} units`:"No reports",`${e.priorReportedDays7?T(e.priorSales7d):"No reports"} in the prior week; reports on ${e.reportedDays7}/7 and ${e.priorReportedDays7}/7 days`)+en("Relative weekly volume",tn(e.activityRatio,"x"),"Latest 7 days / prior 7; requires reports for both full weeks")+en("Listed supply / daily sales",tn(e.daysListedAtRecentPace," days"),"Reported listings / recent daily sales; a supply ratio, not time to sell")+en("Circulating supply listed",Yt(e.listedShare),`${T(e.reportedListed)} reported listed / ${T(e.circulation)} circulating`)+en("30D turnover / circulation",Yt(e.turnoverShare),"Reported units sold / current supply; an item can trade more than once")+'

          Ask-side depth ladder

          '+hf(t.observedAt)+"
          "+(o?"":'

          This book needs a fresh observation. The ladder describes the stored sample.

          ')+i+`

          Cumulative counts in ${t.sampled} sampled listings; ${e.reportedListed} reported listed. These rows overlap. ${t.belowEstimate} sampled asks are below the Kute estimate.

          Largest observed seller${t.sellers} identified sellers; identity available for ${t.knownSellerListings}/${t.sampled} listings
          ${Yt(t.largestSellerShare)}
          Read the metrics

          All technical indicators use completed daily average sale prices, not exchange closing prices or individual transactions. Moving averages require every day in their window. RSI resets at a missing price day; a flat sequence is shown as 50. A high or low RSI describes past momentum and does not establish a buy or sell signal.

          Volatility is the sample standard deviation of log returns between adjacent observed days. Drawdown is the largest observed peak-to-trough decline. The sales-weighted benchmark weights each daily mean by its reported sale count. Missing days are excluded, never treated as zero-price trades.

          The ladder contains asking prices only. We have no bid book, so it cannot measure bid/ask spread, execution slippage, or buyer demand. Supply ratios require a supply observation within 24 hours. These metrics do not enable unvalidated forecasts.

          `}function pc(s){let e=s.diagnostics,t=s.breadth;return!e||!t?"":`
          ADVANCED / MARKET DIAGNOSTICS

          How broad is the move?

          ${t.eligible} eligible items
          ${ne("Advance / decline ratio",tn(e.advanceDeclineRatio,"x"),`${t.rising} rising / ${t.falling} falling; 0.5% movement threshold`)}${ne("Median item return / 7D",ae(e.medianChange),"Equal item weighting among eligible estimates")}${ne("Middle half of returns",`${ae(e.lowerQuartile)} to ${ae(e.upperQuartile)}`,"25th to 75th percentile; dispersion across items")}${ne("Top 10 turnover share",Yt(e.top10VolumeShare),"Concentration of 30D KR turnover in eligible items")}
          ${(s.categories??[]).map(o=>``).join("")}
          CategoryEligible7D medianRising / falling30D KR turnoverTurnover share
          ${S($t[o.type]??"Other")}${o.items}${ae(o.change)}${o.rising??"?"} / ${o.falling??"?"}${T(o.volume)}${Yt(e.eligibleVolume>0?o.volume/e.eligibleVolume:null)}

          Coverage: ${t.eligible} of ${T(t.total)} tradable items. Requires a sales-based estimate updated within 24 hours, at least 5 sales in 7 days, and a measured 7D trend. Turnover shares describe this eligible set, not the entire market. Price changes use Kute estimates.

          `}var tn,Yt,Qs,hf,en,yr=w(()=>{"use strict";pe();Ve();tn=(s,e="")=>s==null?"Unavailable":s.toFixed(1)+e,Yt=s=>s==null?"Unavailable":tn(s*100,"%"),Qs=s=>s==null?"Unavailable":`${T(s)} KR`,hf=s=>s?`${We(Math.max(0,Date.now()-s))} ago`:"freshness unknown",en=(s,e,t)=>`
          ${s}${t}
          ${e}
          `});var gf={};A(gf,{overviewView:()=>hc});async function hc(s){let[e,t]=await Promise.all([W.cached("/market/overview",5*ff),W.cached("/market/indices",60*ff)]);if(!e)return s.unavailable();let o=new Date().toISOString().slice(0,10),n=e.days.filter(m=>m.daym.name==="kute-100"),l=Se().slice(0,4),c=l.length?await W.values(l.map(m=>m.skin)):{},d=l.length?P`
          ${l.map(m=>{let f=c[m.skin];return P` @@ -322,11 +323,11 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
          ${s.compactList(e.active??[])} - `,points:n.map(m=>({t:Date.parse(m.day+"T00:00:00Z"),values:[m.volume]})),series:[{label:"KR traded",color:"#f580b4"}]}}var df,dc=w(()=>{"use strict";_e();xe();pe();Ut();wr();df=6e4});var pf={};A(pf,{default:()=>qo,itemSearch:()=>ko});var ko,qo,Ko=w(()=>{"use strict";xe();pe();ko=(s,e,t,o="")=>`
          `,qo=class{constructor(e,t,o,n,r){this.root=e,this.select=o,this.browse=n,this.holdings=r,this.input=null,this.list=null,this.items=[],this.active=-1,this.sequence=0,this.timer=0,e.addEventListener("input",i=>{i.target instanceof HTMLInputElement&&i.target.dataset.itemSearch&&this.search(i.target)},{signal:t}),e.addEventListener("focusin",i=>{i.target!==this.input&&!(i.target instanceof Element&&this.list?.contains(i.target))&&this.dismiss()},{signal:t}),e.addEventListener("pointerdown",i=>{i.target instanceof Element&&(this.list?.contains(i.target)?i.preventDefault():i.target!==this.input&&this.dismiss())},{signal:t}),e.addEventListener("click",i=>{let a=i.target instanceof Element?i.target.closest("[data-suggestion],[data-search-all]"):null;if(!(!(a instanceof HTMLElement)||!this.list?.contains(a)))if(a.dataset.suggestion!==void 0)this.choose(Number(a.dataset.suggestion));else{let l=this.input?.value.trim()??"",c=this.input?.dataset.itemSearch??"global";this.dismiss(),this.browse(l,c)}},{signal:t}),t.addEventListener("abort",()=>this.dismiss(),{once:!0})}dismiss(){clearTimeout(this.timer),this.sequence++,this.list&&(this.list.hidden=!0),this.input?.setAttribute("aria-expanded","false"),this.input?.removeAttribute("aria-activedescendant"),this.input=null,this.list=null,this.items=[],this.active=-1}search(e){this.dismiss();let t=e.value.trim();if(!t)return;let o=this.root.getElementById(`${e.id}List`);if(!o)return;this.input=e,this.list=o,o.hidden=!1,o.innerHTML=`
          Searching items...
          `,e.setAttribute("aria-expanded","true");let{sequence:n}=this;this.timer=window.setTimeout(async()=>{let r=null;try{e.dataset.itemSearch==="holdings"?r=this.holdings().filter(c=>c.name.toLocaleLowerCase().includes(t.toLocaleLowerCase())):r=(await W.cached(`/market/search?q=${encodeURIComponent(t)}&sort=volume&page=1`,6e4))?.items??null}catch{r=null}if(n!==this.sequence||!e.isConnected||e.value.trim()!==t)return;this.items=r?.slice(0,8)??[];let i=e.dataset.itemSearch,a=i==="holdings"?"Your holdings":"All items",l=i==="give"||i==="get"?"Add":"Open";o.innerHTML=`
          ${a}${l} an item
          ${this.items.map((c,d)=>``).join("")}
          ${!r||!r.length?`
          ${r?"No matching items":"Search unavailable. Try typing again."}
          `:""}${i==="global"||i==="discover"?'':""}`},250)}choose(e){let t=this.items[e],o=this.input?.dataset.itemSearch;!t||!o||(this.dismiss(),this.select(t,o))}key(e){if(e.isComposing)return!1;let t=this.root.activeElement;if(!(t instanceof HTMLInputElement)||!t.dataset.itemSearch)return!1;if(e.key==="Tab")return this.dismiss(),!1;if(e.key==="Escape"&&this.input)return this.dismiss(),e.preventDefault(),!0;if(e.key==="Enter"&&this.active>=0)return this.choose(this.active),e.preventDefault(),!0;if(e.key!=="ArrowDown"&&e.key!=="ArrowUp")return!1;if(e.preventDefault(),this.input!==t)return this.search(t),!0;if(!this.items.length)return!0;let o=this.active+(e.key==="ArrowDown"?1:-1);this.active<0&&e.key==="ArrowUp"&&(o=this.items.length-1),this.active=(o+this.items.length)%this.items.length,this.list?.querySelectorAll("[data-suggestion]").forEach((r,i)=>r.setAttribute("aria-selected",String(i===this.active)));let n=`${t.id}Option${this.active}`;return t.setAttribute("aria-activedescendant",n),this.root.getElementById(n)?.scrollIntoView({block:"nearest"}),!0}}});var hf={};A(hf,{searchView:()=>uc});async function uc(s){let e=s.searchState(),t=new URLSearchParams({sort:e.sort,page:String(e.page)});for(let[i,a]of Object.entries({q:e.q,rarity:e.rarity,type:e.type,budget:e.budget,[s.tab==="active"?"min_activity":"min_sales"]:e.minSales}))a!==""&&t.set(i,a);let o=await W.cached(`/market/search?${t}`,Iy);if(!o)return s.unavailable();let n=(i,a)=>i.map((l,c)=>P` + `,points:n.map(m=>({t:Date.parse(m.day+"T00:00:00Z"),values:[m.volume]})),series:[{label:"KR traded",color:"#f580b4"}]}}var ff,mc=w(()=>{"use strict";Be();xe();pe();Vt();yr();ff=6e4});var bf={};A(bf,{default:()=>jo,itemSearch:()=>xo});var xo,jo,Uo=w(()=>{"use strict";xe();pe();xo=(s,e,t,o="")=>`
          `,jo=class{constructor(e,t,o,n,r){this.root=e,this.select=o,this.browse=n,this.holdings=r,this.input=null,this.list=null,this.items=[],this.active=-1,this.sequence=0,this.timer=0,e.addEventListener("input",i=>{i.target instanceof HTMLInputElement&&i.target.dataset.itemSearch&&this.search(i.target)},{signal:t}),e.addEventListener("focusin",i=>{i.target!==this.input&&!(i.target instanceof Element&&this.list?.contains(i.target))&&this.dismiss()},{signal:t}),e.addEventListener("pointerdown",i=>{i.target instanceof Element&&(this.list?.contains(i.target)?i.preventDefault():i.target!==this.input&&this.dismiss())},{signal:t}),e.addEventListener("click",i=>{let a=i.target instanceof Element?i.target.closest("[data-suggestion],[data-search-all]"):null;if(!(!(a instanceof HTMLElement)||!this.list?.contains(a)))if(a.dataset.suggestion!==void 0)this.choose(Number(a.dataset.suggestion));else{let l=this.input?.value.trim()??"",c=this.input?.dataset.itemSearch??"global";this.dismiss(),this.browse(l,c)}},{signal:t}),t.addEventListener("abort",()=>this.dismiss(),{once:!0})}dismiss(){clearTimeout(this.timer),this.sequence++,this.list&&(this.list.hidden=!0),this.input?.setAttribute("aria-expanded","false"),this.input?.removeAttribute("aria-activedescendant"),this.input=null,this.list=null,this.items=[],this.active=-1}search(e){this.dismiss();let t=e.value.trim();if(!t)return;let o=this.root.getElementById(`${e.id}List`);if(!o)return;this.input=e,this.list=o,o.hidden=!1,o.innerHTML=`
          Searching items...
          `,e.setAttribute("aria-expanded","true");let{sequence:n}=this;this.timer=window.setTimeout(async()=>{let r=null;try{e.dataset.itemSearch==="holdings"?r=this.holdings().filter(c=>c.name.toLocaleLowerCase().includes(t.toLocaleLowerCase())):r=(await W.cached(`/market/search?q=${encodeURIComponent(t)}&sort=volume&page=1`,6e4))?.items??null}catch{r=null}if(n!==this.sequence||!e.isConnected||e.value.trim()!==t)return;this.items=r?.slice(0,8)??[];let i=e.dataset.itemSearch,a=i==="holdings"?"Your holdings":"All items",l=i==="give"||i==="get"?"Add":"Open";o.innerHTML=`
          ${a}${l} an item
          ${this.items.map((c,d)=>``).join("")}
          ${!r||!r.length?`
          ${r?"No matching items":"Search unavailable. Try typing again."}
          `:""}${i==="global"||i==="discover"?'':""}`},250)}choose(e){let t=this.items[e],o=this.input?.dataset.itemSearch;!t||!o||(this.dismiss(),this.select(t,o))}key(e){if(e.isComposing)return!1;let t=this.root.activeElement;if(!(t instanceof HTMLInputElement)||!t.dataset.itemSearch)return!1;if(e.key==="Tab")return this.dismiss(),!1;if(e.key==="Escape"&&this.input)return this.dismiss(),e.preventDefault(),!0;if(e.key==="Enter"&&this.active>=0)return this.choose(this.active),e.preventDefault(),!0;if(e.key!=="ArrowDown"&&e.key!=="ArrowUp")return!1;if(e.preventDefault(),this.input!==t)return this.search(t),!0;if(!this.items.length)return!0;let o=this.active+(e.key==="ArrowDown"?1:-1);this.active<0&&e.key==="ArrowUp"&&(o=this.items.length-1),this.active=(o+this.items.length)%this.items.length,this.list?.querySelectorAll("[data-suggestion]").forEach((r,i)=>r.setAttribute("aria-selected",String(i===this.active)));let n=`${t.id}Option${this.active}`;return t.setAttribute("aria-activedescendant",n),this.root.getElementById(n)?.scrollIntoView({block:"nearest"}),!0}}});var vf={};A(vf,{searchView:()=>fc});async function fc(s){let e=s.searchState(),t=new URLSearchParams({sort:e.sort,page:String(e.page)});for(let[i,a]of Object.entries({q:e.q,rarity:e.rarity,type:e.type,budget:e.budget,[s.tab==="active"?"min_activity":"min_sales"]:e.minSales}))a!==""&&t.set(i,a);let o=await W.cached(`/market/search?${t}`,Hy);if(!o)return s.unavailable();let n=(i,a)=>i.map((l,c)=>P` `).join(""),r=Math.max(1,Math.ceil(o.total/o.perPage));return{asOf:o.asOf,html:s.intro(s.tab==="active"?"Find items that are trading.":"Find your next item.",s.tab==="active"?`At least ${e.minSales} public sales or reported private exchanges in seven days. Private activity is shown separately from cash-sale liquidity.`:"Browse by budget, recent activity, or the items you already have in mind.",'')+P`
          `}return n?`${e}`:t?`${e}`:""}},Tx=new eu});var uu=`@keyframes chat-moveup{0%{transform:translateY(375px)}to{transform:translateY(0)}}@keyframes death-ui-moveup{0%{transform:translateY(340px)}to{transform:translateY(0)}}.entry-info{z-index:9}#gameNameHolder{top:33px}#teamSelector{bottom:290px!important}div #setHed_local,.kuteSettings .setHed:first-of-type{margin-top:10px}.setBodH{margin-top:5px}.carousel,.onSpect #hpEnemyCounter,#settHolder div.setHed:not([id]),#newUserGuide,#phonePop,#signupRewardsButton,#streamContainer,#aHider,#adCon,#rightABox,#aContainer,#topRightAdHolder,#braveWarning,.webpush-container,.nav-notif-section+.verticalSeparator,.endAHolder{display:none!important}.death-ui-bottom{backdrop-filter:none;animation:none}#menuAccountUsername{border:0}.ranked-matchmaking-status{box-shadow:none!important}#homeStoreAdC,#menuAccountUsername,#uiBase.onDeathScrn #chatHolder,.ranked-matchmaking-status{animation:none!important}#phonePop{top:0;bottom:0}.chatItem{max-width:387px}.moreKrunkerPopup{width:600px}.moreKrunkerClient{display:none!important}#mLevelCont{background-color:transparent}.bpBtn.skip.disabled{background:#333;border-color:#444;color:#888;cursor:not-allowed;opacity:1!important}.kuteTopButtons{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 4px}.kuteTopButton{display:flex;align-items:center;justify-content:center;gap:10px;padding:8px 10px;border:3px solid var(--kute-top, #35e0e8);border-radius:4px;background:#222;color:#fff;font-size:21px;cursor:pointer;user-select:none;transition:background .1s}.kuteTopButton:hover{background:#333}.kuteTopButton .material-icons{font-size:24px}.kuteTopBlue{--kute-top: #35e0e8}.kuteTopPink{--kute-top: #f5479b}.kuteTopOrange{--kute-top: #ff8a1f}#menuWindow .kuteHiddenBanner{display:flex;align-items:center;gap:10px;margin:8px 0 4px;padding:8px 12px;border:3px solid #eb5656;border-radius:4px;background:#eb56562e;color:#fff;font-size:17px;line-height:27px}#menuWindow .kuteHiddenBanner .material-icons{color:#eb5656;font-size:26px}.kuteLegend{float:right;margin-right:8px;color:#aaa;font-size:16px}.kuteLegend span{margin-left:12px}#menuWindow .settName .kuteDesc{margin-top:2px;color:#ffffff73;font-size:15px;line-height:1.3}#menuWindow .switch input:disabled+.slider{opacity:.35;cursor:not-allowed} +`;F();Ae();fn();vn();wn();os();kn();xn();var cn=location.pathname==="/kute-bench";cn&&Promise.resolve().then(()=>(ei(),zu));!cn&&localStorage.getItem("krk_advanced")===null&&localStorage.setItem("krk_advanced","1");cn||oo();cn||Ne.then(()=>{u.settings?.data?.kuteCss===!0&&Promise.resolve().then(()=>(si(),oi)).catch(()=>{})});location.hostname==="krunker.io"&&location.pathname==="/"&&Ne.then(()=>{u.settings?.data?.accountEndMessage&&localStorage.setItem("kro_setngss_endMessage","")});var Dg=!0;window.OffCliV=!0;window.closeClient=()=>window.chrome.webview.postMessage("close");document.addEventListener("DOMContentLoaded",()=>{if(cn)return;Kr(),Promise.resolve().then(()=>cs()),Promise.resolve().then(()=>pi());let s=document.createElement("style");s.textContent=uu,document.head.append(s);let e=null;Hr(HTMLCanvasElement,"addEventListener",t=>{let[o,n]=t;o==="wheel"&&(e=n)}),window.chrome.webview.addEventListener("message",t=>{typeof t.data?.wheel=="number"&&e?.(new WheelEvent("wheel",{deltaY:t.data.wheel}))}),window.addEventListener("wheel",t=>{if(!document.pointerLockElement){for(let o of t.composedPath()){if(o===document.body||o===document.documentElement)break;if(!(o instanceof Element))continue;let n=getComputedStyle(o),r=(n.overflowY==="auto"||n.overflowY==="scroll")&&o.scrollHeight>o.clientHeight,i=(n.overflowX==="auto"||n.overflowX==="scroll")&&o.scrollWidth>o.clientWidth;if(r||i)return}t.preventDefault()}},{capture:!0,passive:!1}),document.addEventListener("input",t=>{let{target:o}=t;t instanceof InputEvent&&t.inputType==="insertText"||!(o instanceof HTMLInputElement)||o.getAttribute("onkeypress")?.includes("delayExecute")&&o.dispatchEvent(new KeyboardEvent("keypress"))},!0),Hr(HTMLCanvasElement,"requestPointerLock",function(t,o){es(),Fr(),window.chrome.webview.postMessage("drag, false"),window.chrome.webview.postMessage("throttle, game");let n=u.platform!=="linux"&&u?.settings?.data?.rawInput;return o.call(this,{...t[0],unadjustedMovement:n})}),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement?window.chrome.webview.postMessage("throttle, game"):(window.chrome.webview.postMessage("drag, true"),window.chrome.webview.postMessage("throttle, menu"))}),Ne.then(()=>{u.settings.data.hidePopularNow===!0&&(u.settings.data.hidePopularNow=!1,window.chrome.webview.postMessage("set-config, hidePopularNow, false"),u.settings.data.cleanUI=!0,window.chrome.webview.postMessage("set-config, cleanUI, true")),u.settings.data.cleanUI&&Promise.resolve().then(()=>ue(hi(),1)).then(t=>{let o=document.createElement("style");o.id="kute_cleanCSS",o.textContent=t.default,document.head.append(o)})}),Ne.then(()=>{u.settings.data.classicMenu&&Promise.resolve().then(()=>ue(mi(),1)).then(t=>{let o=document.createElement("style");o.id="kute_classicMenuCSS",o.textContent=t.default,document.head.append(o)})})},{once:!0});Object.defineProperty(window,"gameLoaded",{async set(s){if(!s||(await Ne,window.chrome.webview.postMessage("game-updated"),!Dg))return;sessionStorage.getItem("justLaunched")===null?sessionStorage.setItem("justLaunched","true"):sessionStorage.setItem("justLaunched","false"),Dg=!1,localStorage.setItem("logs","true"),U("#compBtnLst").insertAdjacentHTML("beforeend",`
          color_lens
          -
          star
          `);let e;for(let i of U("#clientExit .menuItemTitle").classList)if(i.startsWith("svelte-")){e=i;break}U("#menuItemContainer").lastElementChild?.insertAdjacentHTML("beforebegin",``);let t=document.querySelector(".whats-new-version")?.className,o=t?`class="${t}"`:'style="font-size:.7em;font-weight:700;color:rgba(255,255,255,.5)"',n=u.version?` - v${u.version}`:"";U("#clientExit").insertAdjacentHTML("beforebegin",``),Promise.resolve().then(()=>Yu()),Promise.resolve().then(()=>_g()),Promise.resolve().then(()=>Ra()),Promise.resolve().then(()=>mi()),Promise.resolve().then(()=>jl()),Promise.resolve().then(()=>Wd()),Promise.resolve().then(()=>aa()),u?.settings?.data?.clanColors!==!1&&u?.settings?.data?.disableOnlineFeatures!==!0&&Promise.resolve().then(()=>(Da(),Oa)),Promise.resolve().then(()=>ha()),Promise.resolve().then(()=>tl());let r=u.settings.data.performanceMode===!0;if(r||Promise.resolve().then(()=>(ba(),eh)),Promise.resolve().then(()=>Ai()),Promise.resolve().then(()=>ol()),Promise.resolve().then(()=>gl()),Promise.resolve().then(()=>Na()),r||Promise.resolve().then(()=>(Ud(),jd)),r||Promise.resolve().then(()=>(vd(),bd)),Promise.resolve().then(()=>hl()),Promise.resolve().then(()=>Qc()),Promise.resolve().then(()=>Po()),Promise.resolve().then(()=>Bd()),Promise.resolve().then(()=>Va()),u.recovery&&Promise.resolve().then(()=>(Md(),Cd)),Promise.resolve().then(()=>fd()),Promise.resolve().then(()=>vi()),Promise.resolve().then(()=>$l()),Promise.resolve().then(()=>sd()),Promise.resolve().then(()=>rr()),u?.settings?.data?.hsSound&&Promise.resolve().then(()=>(ll(),al)),u?.settings?.data?.betterChat&&Promise.resolve().then(()=>(ga(),fa)),u?.settings?.data?.chatLogs&&Promise.resolve().then(()=>(za(),Ba)),Promise.resolve().then(()=>ad()),Promise.resolve().then(()=>Id()),u?.settings?.data?.rankedAlert&&Promise.resolve().then(()=>(yd(),kd)),u?.settings?.data?.hpEnemyCounter&&Promise.resolve().then(()=>(rl(),nl)),u?.settings?.data?.accountManager&&Promise.resolve().then(()=>(Mi(),Ci)),u?.settings?.data?.market!==!1&&u?.settings?.data?.disableOnlineFeatures!==!0&&Promise.resolve().then(()=>($r(),Vc)).catch(()=>{}),u?.settings?.data?.showPing&&Promise.resolve().then(()=>(Od(),Hd)),u?.settings?.data?.realPing&&Promise.resolve().then(()=>(Ed(),Sd)),u?.settings?.data?.exitButton&&(U("#clientExit").style.display="flex"),Promise.resolve().then(()=>Ld()),u?.settings?.data?.spotifyOverlay&&u.hostFeatures?.includes("spotify")&&Promise.resolve().then(()=>(qd(),Fd)),u?.settings?.data?.motionBlur&&Promise.resolve().then(()=>(ud(),dd)),u?.settings?.data?.keystrokes&&Promise.resolve().then(()=>(yl(),kl)),u.hostFeatures?.includes("custom-sky")&&Promise.resolve().then(()=>(Ka(),qa)),u.hostFeatures?.includes("appimage-update")&&Promise.resolve().then(()=>(Al(),Tl)).catch(()=>{}),u?.settings?.data?.rampBoost&&!He()){Zt(!0);let i=a=>{a.data==="game-updated"&&setTimeout(()=>{He()&&(window.chrome.webview.removeEventListener("message",i),Zt(!1))},2e3)};window.chrome.webview.addEventListener("message",i)}if(u?.settings.data?.hideBundles){let i=window.bundlePopup;window.bundlePopup=(...a)=>{let l=document.querySelector("#windowHolder");l&&l.style.display!=="none"&&U("#windowHeader").textContent==="Store"&&i(...a)}}if(setTimeout(()=>{sessionStorage.getItem("justLaunched")==="true"&&u?.launchArgs&&u.parseArgs(u.launchArgs)},2e3),u?.settings.data?.autoSpec){let i=0,a=()=>{let l=window.getGameActivity();if(l.map===null){++i<600&&setTimeout(a,100);return}l.custom||window.setSpect(!0)};a()}if(u?.settings.data?.discordRPC&&window.chrome.webview.addEventListener("message",i=>{i.data==="game-updated"&&setTimeout(()=>{let a=window.getGameActivity();window.chrome.webview.postMessage(`rpc-update, ${a.mode}, ${a.map}`)},2e3)}),u?.settings.data?.textSelect){let i=document.createElement("style");i.id="kute_textSelectCSS",i.textContent="#chatHolder * { user-select: text }",document.head.append(i)}}});})(); +
          star
          `);let e;for(let i of U("#clientExit .menuItemTitle").classList)if(i.startsWith("svelte-")){e=i;break}U("#menuItemContainer").lastElementChild?.insertAdjacentHTML("beforebegin",``);let t=document.querySelector(".whats-new-version")?.className,o=t?`class="${t}"`:'style="font-size:.7em;font-weight:700;color:rgba(255,255,255,.5)"',n=u.version?` - v${u.version}`:"";U("#clientExit").insertAdjacentHTML("beforebegin",``),Promise.resolve().then(()=>Qu()),Promise.resolve().then(()=>Fg()),Promise.resolve().then(()=>Ia()),Promise.resolve().then(()=>gi()),Promise.resolve().then(()=>Gl()),Promise.resolve().then(()=>Jd()),Promise.resolve().then(()=>ca()),u?.settings?.data?.clanColors!==!1&&u?.settings?.data?.disableOnlineFeatures!==!0&&Promise.resolve().then(()=>(qa(),Da)),Promise.resolve().then(()=>fa()),Promise.resolve().then(()=>sl());let r=u.settings.data.performanceMode===!0;if(r||Promise.resolve().then(()=>(wa(),nh)),Promise.resolve().then(()=>Ri()),Promise.resolve().then(()=>nl()),Promise.resolve().then(()=>vl()),Promise.resolve().then(()=>Ba()),r||Promise.resolve().then(()=>(Yd(),Vd)),r||Promise.resolve().then(()=>(xd(),yd)),Promise.resolve().then(()=>fl()),Promise.resolve().then(()=>sd()),Promise.resolve().then(()=>No()),Promise.resolve().then(()=>Fd()),Promise.resolve().then(()=>Xa()),u.recovery&&Promise.resolve().then(()=>(Rd(),Ld)),Promise.resolve().then(()=>wd()),Promise.resolve().then(()=>ki()),Promise.resolve().then(()=>Ml()),Promise.resolve().then(()=>ad()),Promise.resolve().then(()=>ar()),u?.settings?.data?.hsSound&&Promise.resolve().then(()=>(dl(),cl)),u?.settings?.data?.betterChat&&Promise.resolve().then(()=>(va(),ba)),u?.settings?.data?.chatLogs&&Promise.resolve().then(()=>(Oa(),Ha)),Promise.resolve().then(()=>ud()),Promise.resolve().then(()=>zd()),u?.settings?.data?.rankedAlert&&Promise.resolve().then(()=>($d(),Ed)),u?.settings?.data?.hpEnemyCounter&&Promise.resolve().then(()=>(al(),il)),u?.settings?.data?.accountManager&&Promise.resolve().then(()=>(Ai(),Ti)),u?.settings?.data?.market!==!1&&u?.settings?.data?.disableOnlineFeatures!==!0&&Promise.resolve().then(()=>(Mr(),Zc)).catch(()=>{}),u?.settings?.data?.showPing&&Promise.resolve().then(()=>(Kd(),qd)),u?.settings?.data?.realPing&&Promise.resolve().then(()=>(Td(),Md)),u?.settings?.data?.exitButton&&(U("#clientExit").style.display="flex"),Promise.resolve().then(()=>Nd()),u?.settings?.data?.spotifyOverlay&&u.hostFeatures?.includes("spotify")&&Promise.resolve().then(()=>(Gd(),Ud)),u?.settings?.data?.motionBlur&&Promise.resolve().then(()=>(fd(),md)),u?.settings?.data?.keystrokes&&Promise.resolve().then(()=>(Sl(),xl)),u.hostFeatures?.includes("custom-sky")&&Promise.resolve().then(()=>(Ua(),ja)),u.hostFeatures?.includes("appimage-update")&&Promise.resolve().then(()=>(Rl(),Ll)).catch(()=>{}),u?.settings?.data?.rampBoost&&!Oe()){to(!0);let i=a=>{a.data==="game-updated"&&setTimeout(()=>{Oe()&&(window.chrome.webview.removeEventListener("message",i),to(!1))},2e3)};window.chrome.webview.addEventListener("message",i)}if(u?.settings.data?.hideBundles){let i=window.bundlePopup;window.bundlePopup=(...a)=>{let l=document.querySelector("#windowHolder");l&&l.style.display!=="none"&&U("#windowHeader").textContent==="Store"&&i(...a)}}if(setTimeout(()=>{sessionStorage.getItem("justLaunched")==="true"&&u?.launchArgs&&u.parseArgs(u.launchArgs)},2e3),u?.settings.data?.autoSpec){let i=0,a=()=>{let l=window.getGameActivity();if(l.map===null){++i<600&&setTimeout(a,100);return}l.custom||window.setSpect(!0)};a()}if(u?.settings.data?.discordRPC&&window.chrome.webview.addEventListener("message",i=>{i.data==="game-updated"&&setTimeout(()=>{let a=window.getGameActivity();window.chrome.webview.postMessage(`rpc-update, ${a.mode}, ${a.map}`)},2e3)}),u?.settings.data?.textSelect){let i=document.createElement("style");i.id="kute_textSelectCSS",i.textContent="#chatHolder * { user-select: text }",document.head.append(i)}}});})(); From 90ddc72e42217f2a5493bcd19ee4cc05ad406679 Mon Sep 17 00:00:00 2001 From: Liamoule Date: Fri, 23 Oct 2026 13:38:52 +0200 Subject: [PATCH 08/18] bundle.js --- target/bundle.js | 328 ++++++++++++++++++++++++----------------------- 1 file changed, 165 insertions(+), 163 deletions(-) diff --git a/target/bundle.js b/target/bundle.js index 17cd718c..f82f7fed 100644 --- a/target/bundle.js +++ b/target/bundle.js @@ -1,5 +1,5 @@ -"use strict";(()=>{var Fg=Object.create;var _r=Object.defineProperty;var qg=Object.getOwnPropertyDescriptor;var Kg=Object.getOwnPropertyNames;var jg=Object.getPrototypeOf,Ug=Object.prototype.hasOwnProperty;var iu=s=>e=>{var t=s[e];if(t)return t();throw new Error("Module not found in bundle: "+e)};var w=(s,e,t)=>()=>{if(t)throw t[0];try{return s&&(e=s(s=0)),e}catch(o){throw t=[o],o}};var we=(s,e)=>()=>{try{return e||s((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},A=(s,e)=>{for(var t in e)_r(s,t,{get:e[t],enumerable:!0})},Gg=(s,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Kg(e))!Ug.call(s,n)&&n!==t&&_r(s,n,{get:()=>e[n],enumerable:!(o=qg(e,n))||o.enumerable});return s};var ue=(s,e,t)=>(t=s!=null?Fg(jg(s)):{},Gg(e||!s||!s.__esModule?_r(t,"default",{value:s,enumerable:!0}):t,s));var Tt,Xo=w(()=>{Tt={autoDetect:{name:"Auto-Detect Best Settings",id:"autoDetect",description:"Tests the client and the game on your PC for about two minutes and picks what runs best. Don't touch mouse or keyboard meanwhile. You can undo it",type:"none",category:"General",button:"Run",buttonAction:"{{kute}}.autoDetect.setUp()",requiresLogin:!0,hostFeature:"autodetect-v2"},autoDetectResult:{name:"Last Auto-Detect Result",id:"autoDetectResult",description:"See what the last run measured and changed, and undo it",type:"none",category:"General",button:"Show",buttonAction:"{{kute}}.autoDetect.showLast()"},hotkeys:{name:"Hotkeys",id:"hotkeys",description:"Change or clear Kute's own keys (new lobby, matchmaker, reload, fullscreen, chat logs) and add keys for toggles",type:"none",category:"General",button:"Change",buttonAction:"{{kute}}.hotkeys.edit()",hostFeature:"hotkeys"},performanceMode:{name:"Disable & Hide All Non-Performance Settings",id:"performanceMode",description:"Turns off everything cosmetic and hides its settings. Turn this off again and all of them come back as they were",type:"checkbox",category:"General",defaultValue:!1,needsRefresh:!0,hostFeature:"performance-mode"},startMode:{name:"Start Mode",id:"startMode",description:"How the window opens when Kute starts",type:"select",category:"General",defaultValue:"Remember Previous",options:["Remember Previous","Borderless Fullscreen","Windowed","Maximized"]},gameFpsLimit:{name:"FPS Limit",id:"gameFpsLimit",description:"Caps your FPS to save power and heat. 0 means unlimited",type:"slider",category:"General",defaultValue:0,min:0,max:2e3,step:5},discordRPC:{name:"Discord Rich Presence",id:"discordRPC",description:"Shows your current mode and map on your Discord profile",type:"checkbox",category:"General",defaultValue:!0,needsRestart:!0},accountManager:{name:"Account Manager",id:"accountManager",description:"Save your Krunker accounts and switch between them from the menu",type:"checkbox",category:"General",defaultValue:!0},market:{name:"Kute Market",id:"market",description:"Enables market and trading features: K values, liquidity grades, trade verdicts and the market analyzer. In return, you allow Kute to see trading stats.",type:"checkbox",category:"General",defaultValue:!0,disabledBy:"disableOnlineFeatures"},obsCapturePlugin:{name:"OBS Capture Plugin",id:"obsCapturePlugin",platforms:["windows"],description:"Adds a Kute Capture source to OBS (close OBS first). For sound, add an Application Audio Capture of 'Kute audio window'",type:"checkbox",category:"General",defaultValue:!1},rawInput:{name:"Raw Input",id:"rawInput",platforms:["windows"],description:"Mouse movement comes straight from the device, without Windows pointer acceleration, and all of it reaches the game, also when you click or scroll mid-flick. Krunker's own Raw Mouse Input follows this setting",type:"checkbox",category:"Game",defaultValue:!0,needsRefresh:!0},rampBoost:{name:"Ramp Boosting",id:"rampBoost",description:"Scrolling makes you jump, for easier ramp boosts. Off in competitive. Turn it off if another tool already does this",type:"checkbox",category:"Game",defaultValue:!1},autoSpec:{name:"Auto Spectate",id:"autoSpec",description:"Joins public matches as a spectator instead of a player",type:"checkbox",category:"Game",defaultValue:!1},hsSound:{name:"Headshot Sound on Every Kill",id:"hsSound",performance:!1,description:"Plays the headshot sound on every kill, not just headshots",category:"Game",type:"checkbox",defaultValue:!1},hpEnemyCounter:{name:"Hardpoint Enemy Counter",id:"hpEnemyCounter",performance:!1,description:"Shows how many enemies are on the point in competitive Hardpoint",type:"checkbox",category:"Game",defaultValue:!0},showPing:{name:"Player List Ping",id:"showPing",performance:!1,description:"Shows everyone's ping next to their name in the player list",type:"checkbox",category:"Game",defaultValue:!0,needsRefresh:!0},realPing:{name:"Real Ping\u2122\uFE0F",id:"realPing",description:"Pings the lobby server directly and shows your real latency",type:"checkbox",category:"Game",defaultValue:!1,needsRestart:!0},matchmaker:{name:"Matchmaker (F6)",id:"matchmaker",description:"F6 joins the lowest ping lobby that matches your filters instead of a random one",type:"checkbox",category:"Game",defaultValue:!0,button:"Filters",buttonAction:"{{kute}}.matchmaker.showFilters()"},rankedAlert:{name:"Ranked Match Alert",id:"rankedAlert",description:"When Krunker's ranked queue finds a match while you are tabbed out, Kute comes to the front",type:"checkbox",category:"Game",defaultValue:!0,button:"Sound",buttonAction:"{{kute}}.queueSound.showOptions()"},accountEndMessage:{name:"Match End Message per Account",id:"accountEndMessage",description:"Remembers Krunker's Match End Message per account, an account without one sends nothing",type:"checkbox",category:"Game",defaultValue:!1,requiresLogin:!0},exitButton:{name:"Exit Button",id:"exitButton",performance:!1,description:"Adds an Exit button to the menu",type:"checkbox",category:"Interface",defaultValue:!0},menuTimer:{name:"Menu Timer",id:"menuTimer",performance:!1,description:"Shows the match timer while you are in the menu",type:"checkbox",category:"Interface",defaultValue:!0},classicMenu:{name:"Classic Menu",id:"classicMenu",performance:!1,description:"Season 9 menu layout, new buttons and features stay",type:"checkbox",category:"Interface",defaultValue:!1},betterChat:{name:"Better Chat",id:"betterChat",performance:!1,description:"Team and all chat in one view. Press Tab to switch where you send",type:"checkbox",category:"Interface",defaultValue:!0},chatLogs:{name:"Chat Logs",id:"chatLogs",description:"Keeps the last 2000 chat lines, also across lobbies, to search and copy. F1 opens them, change it in Hotkeys",type:"checkbox",category:"Interface",defaultValue:!0,button:"Open",buttonAction:"{{kute}}.chatLogs?.open()"},textSelect:{name:"Selectable Chat",id:"textSelect",performance:!1,description:"Lets you select and copy text from the chat",type:"checkbox",category:"Interface",defaultValue:!0},cleanUI:{name:"Cleaner Menu",id:"cleanUI",description:"Hides ads, promos, the Popular Now row and other clutter in the menu",type:"checkbox",category:"Interface",defaultValue:!1},hideBundles:{name:"Hide Bundle Popups",id:"hideBundles",description:"Stops store bundle popups from showing up outside the store",type:"checkbox",category:"Interface",defaultValue:!1},clanColors:{name:"Show Clan Colors",id:"clanColors",performance:!1,description:"Colors the tags of some clans in the player lists",type:"checkbox",category:"Interface",defaultValue:!0,disabledBy:"disableOnlineFeatures"},cuteBadge:{name:"Show Kute Badge",id:"cuteBadge",description:"Shows a badge next to other Kute players. This only affects what you see, others still see yours",type:"checkbox",category:"Interface",defaultValue:!0,disabledBy:"disableOnlineFeatures"},kuteIcons:{name:"Use Kute Icons",id:"kuteIcons",performance:!1,description:"Kute's own icons for counters, ammo, hitmarker, reticle and scope. Your game settings stay untouched",type:"checkbox",category:"Interface",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.kuteIcons.customize()"},hudLayout:{name:"HUD Editor",id:"hudLayout",description:"Move, resize and hide parts of the in-game HUD. Opens a private match while you edit",type:"none",category:"Interface",button:"Edit",buttonAction:"{{kute}}.hudEditor.edit()",requiresLogin:!0},keystrokes:{name:"Keystrokes",id:"keystrokes",performance:!1,description:"Shows your movement keys and mouse in the HUD and lights them up while pressed. Move it with the HUD Editor",type:"checkbox",category:"Interface",defaultValue:!1},spotifyOverlay:{name:"Spotify Overlay",id:"spotifyOverlay",performance:!1,description:"Shows the currently playing Spotify track in the HUD. Move and resize it with the HUD Editor",type:"checkbox",category:"Interface",defaultValue:!1,hostFeature:"spotify"},nukeCounter:{name:"Nuke Counter",id:"nukeCounter",performance:!1,description:"Shows your career nuke total in game. It updates when a match ends",type:"checkbox",category:"Interface",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.nukeCounter.showOptions()"},renderStats:{name:"Present FPS Counter",id:"renderStats",description:"The game counter shows how fast your PC runs the game, this adds the frames that reach your screen",type:"checkbox",category:"Interface",defaultValue:!1,needsRestart:!0,requires:"hardFlip"},kuteCss:{name:"Kute CSS",id:"kuteCss",performance:!1,description:"Kute's own look for menus, settings, HUD and social, with a few cats",type:"checkbox",category:"Customization",defaultValue:!1},motionBlur:{name:"Motion Blur",id:"motionBlur",performance:!1,description:"A slight blur while you turn the camera, the HUD stays sharp. Costs FPS: about 5 % fewer while it blurs",type:"checkbox",category:"Customization",defaultValue:!1},motionBlurStrength:{name:"Motion Blur Strength",id:"motionBlurStrength",performance:null,description:"How long the trail is when Motion Blur is on",type:"slider",category:"Customization",defaultValue:40,min:10,max:100,step:5},customSky:{name:"Custom Sky",id:"customSky",performance:!1,description:"Your own sky color gradient or image on every map. Applies from the next match",type:"checkbox",category:"Customization",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.customSky.showOptions()",hostFeature:"custom-sky"},swapper:{name:"Resource Swapper",id:"swapper",performance:!1,description:"Replaces game files like textures and sounds with the files in your swapper folder",type:"checkbox",category:"Customization",defaultValue:!0,button:"Manage",buttonAction:"{{kute}}.swapperManager.open()",needsRefresh:!0},customCss:{name:"CSS Manager",id:"customCss",performance:!1,description:"Your own CSS on top of Krunker's. Keep several files and switch between them, with a live preview",type:"checkbox",category:"Customization",defaultValue:!0,button:"Edit",buttonAction:"{{kute}}.customCss.open()"},userscripts:{name:"Userscripts",id:"userscripts",description:"Runs your own scripts. Crankshaft and idkr scripts work too",type:"checkbox",category:"Customization",defaultValue:!0,button:"Manage",buttonAction:"{{kute}}.userscriptManager.open()"},blocklist:{name:"URL Blocklist",id:"blocklist",description:"Blocks ads and trackers. Open the file to add your own entries",type:"checkbox",category:"Customization",defaultValue:!0,button:"Open file",buttonAction:"window.chrome.webview.postMessage('open, blocklist')",needsRestart:!0},disableCats:{name:"Disable Cats",id:"disableCats",performance:!0,description:"Blocks the cat models in the maps",type:"checkbox",category:"Customization",defaultValue:!0,needsRefresh:!0},disableVideoSkins:{name:"Disable Video Skins",id:"disableVideoSkins",performance:!0,description:"Video skins like Glitch are not loaded and show black instead, which can save FPS",type:"checkbox",category:"Customization",defaultValue:!1,needsRefresh:!0,hostFeature:"video-skins"},uncapFps:{name:"Uncap FPS",id:"uncapFps",description:"Removes the FPS cap at your monitor's refresh rate",type:"checkbox",category:"Advanced",defaultValue:!0,needsRestart:!0},audioFix:{name:"Fix Audio Stutters",id:"audioFix",description:"For sound that cuts out at high FPS. Moves sounds every 8 ms instead of every sample",type:"checkbox",category:"Advanced",defaultValue:!1,needsRestart:!0,hostFeature:"audio-fix"},angleBackend:{name:"Graphics Backend (ANGLE)",id:"angleBackend",platforms:["windows"],description:"Leave it on Default (D3D11). OpenGL and Vulkan turn off everything the swapchain hook does",type:"select",category:"Advanced",defaultValue:"Default",needsRestart:!0,options:["Default","D3D11","D3D11on12","OpenGL","Vulkan"]},displayServer:{name:"Display Server",id:"displayServer",platforms:["linux"],description:"Leave it on X11, it runs much faster than Wayland for now. X11 also works inside a Wayland session",type:"select",category:"Advanced",defaultValue:"X11",needsRestart:!0,options:["X11","Wayland"]},colorProfile:{name:"Color Profile",id:"colorProfile",description:"Try sRGB if colors look washed out or too strong",type:"select",category:"Advanced",defaultValue:"Default",needsRestart:!0,options:["Default","sRGB","Display P3 D65","Extended sRGB","scRGB linear","HDR10"]},webviewPriority:{name:"Process Priority",id:"webviewPriority",description:"Higher can help a little, but may make your PC less stable",type:"select",category:"Advanced",defaultValue:"Normal",needsRestart:!0,options:["High","Above Normal","Normal","Below Normal","Low","Idle"]},x3dCacheCores:{name:"Keep Kute on the 3D V-Cache cores",id:"x3dCacheCores",description:"Ryzen X3D with two core groups only: steadier frame pacing on the cores with the big cache",type:"checkbox",category:"Advanced",defaultValue:!0,needsRestart:!0,hostFeature:"x3d-cores"},throttle:{name:"CPU Throttling",id:"throttle",description:"Slows the game down on purpose (2 = half speed). Only for an unstable game, an FPS limit is usually better",type:"slider",min:1,max:3,step:.01,category:"Advanced",defaultValue:1},inMenuThrottle:{name:"CPU Throttling in Menu",id:"inMenuThrottle",description:"Same, but only in the menu. It also slows the match that runs behind the menu",type:"slider",min:1,max:3,step:.01,category:"Advanced",defaultValue:1},clearCache:{name:"Clear Cache & Storage",id:"clearCache",description:"Deletes the cache and local storage. This also resets your game settings",type:"none",category:"Advanced",button:"Clear Now",buttonAction:"if(confirm('Are you sure you want to clear cache and local storage?')) { localStorage.clear(); sessionStorage.clear(); window.chrome.webview.postMessage('clear-cache'); }"},hardFlip:{name:"DXGI Swapchain Hook",id:"hardFlip",platforms:["windows"],description:"Present FPS counter and OBS capture. Laptops with two graphics chips may run better without it",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0},laptopPowerBoost:{name:"Laptop Power Boost",id:"laptopPowerBoost",description:"Plugged in laptops only: switches the power mode to performance while Kute runs and puts yours back after",type:"checkbox",category:"Engine",defaultValue:!0,hostFeature:"hybrid-gpu"},primeOffload:{name:"NVIDIA PRIME Offload",id:"primeOffload",platforms:["linux"],description:"Hybrid laptops with the NVIDIA driver: the game renders on the NVIDIA chip instead of the built in one",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"prime-offload"},patchInputPriority:{name:"Input at Normal Priority",id:"patchInputPriority",description:"Chromium patch: mouse input no longer starves the game's server messages. Off brings back the aim freeze",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchFramePacing:{name:"Frame Pacing",id:"patchFramePacing",description:"Chromium patch: the game runs one frame ahead of the screen instead of flooding it. Off brings back the GPU stutter",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchFrameLimiter:{name:"Chromium FPS Limiter",id:"patchFrameLimiter",description:"Chromium patch: holds the FPS limit inside Chromium with the CPU idle, with or without the hook. Off uses the hook's limiter, or a busy wait without the hook",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchRawInputMovement:{name:"Raw Input Keeps Movement",id:"patchRawInputMovement",platforms:["windows"],description:"Chromium patch: no mouse movement is lost on a click. Off drops a few counts at every shot",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchAudioParamCoalesce:{name:"Coalesce Audio Automation",id:"patchAudioParamCoalesce",description:"Chromium patch: the game's per frame sound updates no longer pile up. Off makes FPS drop over a long match",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchCanvasBufferCache:{name:"WebGL Buffer Cache",id:"patchCanvasBufferCache",description:"Chromium patch: keeps three spare frame buffers instead of one. Off makes some starts land in a slow mode",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchHighQoS:{name:"Game Process at High QoS",id:"patchHighQoS",platforms:["windows"],description:"Chromium patch: Windows may not throttle the game's process to save power. Off leaves that to Windows",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},showChangelog:{name:"Show Changelog After Updates",id:"showChangelog",description:"Shows what's new after Kute updates",type:"checkbox",button:"Show Now",buttonAction:"{{kute}}.showChangelogPopup({{kute}}.version)",category:"About",defaultValue:!0},disableOnlineFeatures:{name:"Disable Kute Online Features",id:"disableOnlineFeatures",description:"Nothing is sent to or received from kute.lol. Turns off all Kute badges (yours too) and clan colors",type:"checkbox",category:"About",defaultValue:!1,needsRestart:!0},checkUpdates:{name:"Check For Updates",id:"checkUpdates",description:"Looks for a new Kute version when it starts",type:"checkbox",category:"About",defaultValue:!0,needsRestart:!0},exportClientSettings:{name:"Export Kute Settings",id:"exportClientSettings",description:"Saves Kute's settings, HUD positions, matchmaker filters and hotkeys as a file in Downloads",type:"none",category:"About",button:"Export",buttonAction:"{{kute}}.settingsTransfer.exportFile()"},importClientSettings:{name:"Import Kute Settings",id:"importClientSettings",description:"Loads a file from Export Kute Settings and restarts Kute",type:"none",category:"About",button:"Import",buttonAction:"{{kute}}.settingsTransfer.importFile()"},diagnosticsReport:{name:"Diagnostics Report",id:"diagnosticsReport",description:"Puts what helps fix a problem into one file you can send. You see all of it first, nothing is uploaded",type:"none",category:"About",button:"Create",buttonAction:"{{kute}}.diagnostics.open()",hostFeature:"diagnostics"}}});function $o(s,e){return s.performanceMode===!0&&e in lu}function cu(s){return{...s,...Eo}}function pn(s,e){let t=[];for(let[o,n]of Object.entries(lu)){if(n===null)continue;let r=s[o];e?(o in Eo||(Eo[o]=r),s[o]=n):o in Eo&&(s[o]=Eo[o],delete Eo[o]),s[o]!==r&&t.push(o)}return t}var lu,Eo,Co=w(()=>{"use strict";Xo();lu=Object.fromEntries(Object.values(Tt).filter(s=>s.performance!==void 0).map(s=>[s.id,s.performance??null])),Eo={}});function Yg(s){let e="abcdefghijklmnopqrstuvwxyz",t=crypto.getRandomValues(new Uint8Array(s));return Array.from(t,o=>e[o%e.length]).join("")}var u,Ne,du,Ue,D=w(()=>{"use strict";Xo();Co();u={},Ne=new Promise(s=>{function e(t){if(t?.data?.settings||t?.data?.version){if(window.chrome.webview.removeEventListener("message",e),Object.assign(u,t.data),u.settings?.data)for(let o of Object.values(Tt))o.defaultValue!==void 0&&!(o.id in u.settings.data)&&(u.settings.data[o.id]=o.defaultValue);u.settings?.data&&pn(u.settings.data,u.settings.data.performanceMode===!0),s(u)}}window.chrome.webview.addEventListener("message",e),window.chrome.webview.postMessage("get-info")}),du=Yg(12);Object.defineProperty(window,du,{value:u,enumerable:!1,writable:!1,configurable:!1});Ue=`window["${du}"]`});function Te(s,e,t=2e3){return new Promise(o=>{let n={timer:0},r=i=>{i.data?.[e]!==void 0&&(clearTimeout(n.timer),window.chrome.webview.removeEventListener("message",r),o(i.data[e]))};n.timer=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),o(null)},t),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(s)})}var Br,$e,U,ke,He,Ae=w(()=>{"use strict";Br=(s,e,t)=>{let o=s.prototype[e];s.prototype[e]=function(...n){let r=t.call(this,n,o);return r===void 0?o.apply(this,n):r}},$e=(s,e=3e4)=>new Promise((t,o)=>{let n=document.querySelector(s);if(n){t(n);return}let r={timer:0},i=new MutationObserver(()=>{let a=document.querySelector(s);a&&(clearTimeout(r.timer),i.disconnect(),t(a))});r.timer=setTimeout(()=>{i.disconnect(),o(new Error(`element never showed up: ${s}`))},e),i.observe(document.body,{childList:!0,subtree:!0})}),U=(s,e=document)=>{let t=e.querySelector(s);if(!t)throw new Error(`element not found: ${s}`);return t},ke=(s,e=document)=>U(s,e),He=()=>!!document.querySelector(".cmpTmHed")});var pu={};A(pu,{setRampBoost:()=>Zt,syncScrollBinds:()=>Hr});function Zt(s){uu=s,window.chrome.webview.postMessage(`toggle-rboost, ${s}`)}function Hr(){let s=!1;try{s=Object.keys(localStorage).some(e=>e.startsWith("cont_")&&localStorage.getItem(e)===Xg)}catch{return}s!==zr&&(zr=s,u.hostFeatures?.includes("scroll-binds")&&window.chrome.webview.postMessage(`wheel-to-page, ${s}`))}var Xg,uu,zr,hn=w(()=>{"use strict";D();Xg="20000",uu=!1;window.addEventListener("wheel",s=>{!uu||!document.pointerLockElement||!u.hostFeatures?.includes("ramp-boost")||(zr||(s.stopImmediatePropagation(),s.preventDefault()),window.chrome.webview.postMessage(`ramp-wheel, ${(s.deltaY||s.deltaX)<0?1:-1}`))},{capture:!0,passive:!1})});var fu={};A(fu,{claimAltShoot:()=>Dr,hostSupports:()=>fn,prepareShootBind:()=>Fr,syncLeftClick:()=>Zo});function Or(s){return Number(localStorage.getItem(s)??-1)}function mu(){let s=Or(mn);return s!==-1&&s!==Jo}function fn(){return u.hostFeatures?.includes(Zg)===!0}function Dr(){return!mu()||!fn()}function Fr(){if(!mu()){localStorage.setItem(mn,String(Jo));return}Ne.then(()=>{fn()||localStorage.setItem(mn,String(Jo))})}function Zo(){if(!fn())return;let s=Or(mn)===Jo||Or(Jg)===Jo;s!==hu&&(hu=s,window.chrome.webview.postMessage(`left-click-f20, ${s}`))}var Jo,mn,Jg,Zg,hu,gn=w(()=>{"use strict";D();Jo=131,mn="cont_shoot1Key_alt",Jg="cont_shoot1Key",Zg="left-click-f20"});var bu={};A(bu,{SLOTS:()=>Mo,postUrls:()=>Qt});function qr(s){try{return localStorage.getItem(s)}catch{return null}}function eb(s){try{let e=JSON.parse(qr(s)??"[]");return Array.isArray(e)?e.map(t=>Array.isArray(t)?t[1]:null).filter(t=>typeof t=="string").slice(0,Qg):[]}catch{return[]}}function Qt(){let s={};for(let t of Mo){let o=[];for(let i of t.settings)o.push(qr(`kro_setngss_${i}`)??"");for(let i of t.keys??[])o.push(qr(i)??"");for(let i of t.lists??[])o.push(...eb(i));let n=t.element?document.getElementById(t.element):null;n instanceof HTMLImageElement&&o.push(n.src);let r=[...new Set(o)].filter(i=>i.startsWith("http"));r.length>0&&(s[t.id]=r)}let e=JSON.stringify(s);e!==gu&&(gu=e,window.chrome.webview.postMessage(`icon-urls ${e}`))}var Qo,Mo,Qg,gu,bn=w(()=>{"use strict";Qo={id:"showUI",name:"Show UI",kind:"checkbox"},Mo=[{id:"kills",file:"kills.png",name:"Kill counter",settings:["customKills"],element:"killsIcon",hiddenBy:[Qo,{id:"showKillC",name:"Show Kill Counter",kind:"checkbox"}]},{id:"deaths",file:"deaths.png",name:"Death counter",settings:["customDeaths"],element:"deathsIcon",hiddenBy:[Qo,{id:"showDeaths",name:"Show Death Counter",kind:"checkbox"}]},{id:"streak",file:"streak.png",name:"Streak counter",settings:["customStreak"],element:"streakIcon",hiddenBy:[Qo,{id:"showStreak",name:"Show Streak Counter",kind:"checkbox"}]},{id:"kdr",file:"kdr.png",name:"K/D counter",settings:[],element:"kdIcon",hiddenBy:[Qo,{id:"showKD",name:"Show K/D Counter",kind:"checkbox"}]},{id:"ammo",file:"ammo.png",name:"Ammo",settings:["customAmmo"],element:"ammoIcon",hiddenBy:[Qo]},{id:"hitmarker",file:"hitmarker.png",name:"Hitmarker",settings:["customHitmarker"],hiddenBy:[{id:"hitm",name:"Hitmarker: Show",kind:"checkbox"},{id:"hitOpac",name:"Hitmarker: Opacity",kind:"opacity"}]},{id:"reticle",file:"reticle.png",name:"Reticle",settings:[],keys:["savedReticle"],lists:["krk_custRet"],element:"aimDot",hiddenBy:[]},{id:"scope",file:"scope.png",name:"Scope",settings:[],keys:["savedScope"],lists:["krk_custScps"],element:"recticleImg",hiddenBy:[{id:"scopeOpac",name:"Scope Opacity",kind:"opacity"}]}],Qg=30;gu=""});var vu={};A(vu,{canLoadLive:()=>At,loadScripts:()=>To,registry:()=>Je});var Je,At,To,es=w(()=>{"use strict";D();Je=window.__kuteUserscripts??null,At=()=>!!(Je&&u.hostFeatures?.includes("userscripts-live")),To=(s,e,t)=>{window.chrome.webview.postMessage(`scripts-load ${JSON.stringify({...s?{keys:s}:{},replace:e,start:t})}`)}});var ku={};A(ku,{default:()=>Lt,hostSupportsCustomCss:()=>ts});var wu,ts,Kr,Lt,vn=w(()=>{"use strict";D();wu=/@import\s+(?:url\([^)]*\)|"[^"]*"|'[^']*')[^;]*;?/gi,ts=()=>u.hostFeatures?.includes("custom-css")??!1,Kr=class{constructor(){this.saved=String(window.__kuteCustomCss??""),this.enabled=!0,this.sheet=null,this.importStyle=null,this.importText="",this.waitingForBody=!1,this.saved&&this.apply(this.saved),Ne.then(()=>{u.settings.toggleCustomCss=e=>this.toggle(e),u.settings.data.customCss===!1?this.toggle(!1):!this.saved&&ts()&&this.load().then(e=>this.apply(e))})}load(){return new Promise(e=>{let t=o=>{typeof o.data?.customCss?.content=="string"&&(window.chrome.webview.removeEventListener("message",t),this.saved=o.data.customCss.content,e(this.saved))};window.chrome.webview.addEventListener("message",t),window.chrome.webview.postMessage("css-read")})}apply(e){if(!this.enabled)return;let t=e.match(wu)??[],o=t.length?e.replace(wu,""):e;if(!this.sheet){if(!o.trim())return;this.sheet=new CSSStyleSheet,document.adoptedStyleSheets=[...document.adoptedStyleSheets,this.sheet]}this.sheet.replaceSync(o),this.setImports(t.join(` -`))}setImports(e){if(this.importText=e,!(!e&&!this.importStyle)){if(document.readyState==="loading"){if(this.waitingForBody)return;this.waitingForBody=!0,document.addEventListener("DOMContentLoaded",()=>this.setImports(this.importText),{once:!0});return}this.importStyle||(this.importStyle=document.createElement("style"),document.documentElement.append(this.importStyle)),this.importStyle.textContent!==e&&(this.importStyle.textContent=e)}}toggle(e){if(this.enabled=e,!e){this.sheet?.replaceSync(""),this.setImports("");return}this.saved?this.apply(this.saved):ts()&&this.load().then(t=>this.apply(t))}markSaved(e){this.saved=e,this.apply(e)}revert(){this.enabled&&this.apply(this.saved)}},Lt=new Kr});var $u={};A($u,{holdRestart:()=>wn,restart:()=>Ao});function Ao(){location.assign("https://krunker.io/")}function wn(s){Su=Date.now()+s}function Eu(){return localStorage.getItem(yu)!==null||document.cookie.includes(`${yu}=`)}function tb(){try{return!!window.getGameActivity?.()?.id}catch{return!1}}function ob(s){let e=Date.now(),t=0,o=setInterval(()=>{if(tb()){sessionStorage.removeItem(jr),clearInterval(o);return}if(Date.now()-e>9e4){clearInterval(o);return}if(!s||!Eu()||(t===0&&(t=Date.now()),Date.now()-t<1500))return;clearInterval(o);let n=Number(sessionStorage.getItem(jr)??0);n>=2||(sessionStorage.setItem(jr,String(n+1)),console.log("[kute] session: no lobby after the frvr login, reloading"),Ao())},1e3)}function sb(){let s=localStorage.getItem(xu)!==null,e=!1;setInterval(()=>{if(e){document.pointerLockElement||Ao();return}let t=localStorage.getItem(xu)!==null;s&&!t&&Date.now()>Su&&(e=!0,console.log("[kute] session: logged out, reloading")),s=t},1e3)}var yu,xu,jr,Su,kn=w(()=>{"use strict";yu="__FRVR_auth_refresh_token",xu="krunker_token",jr="kute_hang_reloads";Su=0;location.hostname==="krunker.io"&&location.pathname==="/"&&(ob(!Eu()),sb())});var Tu={};A(Tu,{DEFAULT_LOAD:()=>eo,cpuChecksum:()=>Vr,createScene:()=>Wr});function db(s){let e=document.createElement("canvas");e.width=640,e.height=60+s.length*34;let t=e.getContext("2d");return t&&(t.fillStyle="rgba(30, 30, 30, 0.92)",t.beginPath(),t.roundRect(0,0,e.width,e.height,18),t.fill(),t.textAlign="center",t.textBaseline="middle",s.forEach((o,n)=>{t.font=n===0?"26px Consolas, monospace":"18px Consolas, monospace",t.fillStyle=n===0?"#35e0e8":"#bbbbbb",t.fillText(o,e.width/2,48+n*34)})),e}function Cu(s,e,t){let o=s.createShader(e);if(!o)throw new Error("cannot create shader");if(s.shaderSource(o,t),s.compileShader(o),!s.getShaderParameter(o,s.COMPILE_STATUS))throw new Error(s.getShaderInfoLog(o)??"shader compile failed");return o}function Ur(s,e,t){let o=s.createProgram();if(s.attachShader(o,Cu(s,s.VERTEX_SHADER,e)),s.attachShader(o,Cu(s,s.FRAGMENT_SHADER,t)),s.linkProgram(o),!s.getProgramParameter(o,s.LINK_STATUS))throw new Error(s.getProgramInfoLog(o)??"program link failed");return o}function ub(s){let e=[],t=[];for(let o=0;o<=s;o++){let n=o/s*Math.PI;for(let r=0;r<=s;r++){let i=r/s*Math.PI*2;e.push(Math.cos(i)*Math.sin(n),Math.cos(n),Math.sin(i)*Math.sin(n))}}for(let o=0;o0?db(t):null,g=f?Ur(o,lb,cb):null,b=g?o.getUniformLocation(g,"uScale"):null,v=o.createVertexArray();f&&(o.bindVertexArray(v),o.bindBuffer(o.ARRAY_BUFFER,o.createBuffer()),o.bufferData(o.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,1]),o.STATIC_DRAW),o.enableVertexAttribArray(0),o.vertexAttribPointer(0,2,o.FLOAT,!1,0,0),o.bindVertexArray(null),o.bindTexture(o.TEXTURE_2D,o.createTexture()),o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,f),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE));let k=1337,E=()=>(k=k*1664525+1013904223>>>0,k/4294967296),L=Array.from({length:e.draws},()=>({x:(E()-.5)*80,y:(E()-.5)*50,z:(E()-.5)*40,scale:.6+E()*1.6,spin:.2+E()*1.5,red:.3+E()*.7,green:.3+E()*.7,blue:.3+E()*.7})),x=new Float32Array(16),$=new Float32Array(16),I=new Float32Array(16),_=new Float32Array(16);return $[0]=1,$[5]=1,$[10]=1,$[15]=1,$[14]=-60,{resize(H,G){s.width=Math.max(1,Math.round(H)),s.height=Math.max(1,Math.round(G)),o.viewport(0,0,s.width,s.height),pb(x,Math.PI/2,s.width/s.height,.1,500),hb(I,x,$)},render(H){let G=H*.001;fb(e.cpuIterations),o.enable(o.DEPTH_TEST),o.disable(o.BLEND),o.clearColor(.08,.09,.12,1),o.clear(o.COLOR_BUFFER_BIT|o.DEPTH_BUFFER_BIT),o.useProgram(n),o.bindVertexArray(p),o.uniformMatrix4fv(i,!1,I);for(let J of L)mb(_,J.x,J.y,J.z,G*J.spin,J.scale),o.uniformMatrix4fv(r,!1,_),o.uniform3f(a,J.red,J.green,J.blue),o.drawElements(o.TRIANGLES,h.indices.length,o.UNSIGNED_SHORT,0);o.disable(o.DEPTH_TEST),o.enable(o.BLEND),o.blendFunc(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA),o.useProgram(l),o.bindVertexArray(m),o.uniform1f(c,G);for(let J=0;J{"use strict";eo={draws:1200,meshSegments:10,overdraw:4,cpuIterations:2e5},nb=`#version 300 es +"use strict";(()=>{var Gg=Object.create;var zr=Object.defineProperty;var Wg=Object.getOwnPropertyDescriptor;var Vg=Object.getOwnPropertyNames;var Yg=Object.getPrototypeOf,Xg=Object.prototype.hasOwnProperty;var du=s=>e=>{var t=s[e];if(t)return t();throw new Error("Module not found in bundle: "+e)};var w=(s,e,t)=>()=>{if(t)throw t[0];try{return s&&(e=s(s=0)),e}catch(o){throw t=[o],o}};var we=(s,e)=>()=>{try{return e||s((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},A=(s,e)=>{for(var t in e)zr(s,t,{get:e[t],enumerable:!0})},Jg=(s,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Vg(e))!Xg.call(s,n)&&n!==t&&zr(s,n,{get:()=>e[n],enumerable:!(o=Wg(e,n))||o.enumerable});return s};var ue=(s,e,t)=>(t=s!=null?Gg(Yg(s)):{},Jg(e||!s||!s.__esModule?zr(t,"default",{value:s,enumerable:!0}):t,s));var At,Zo=w(()=>{At={autoDetect:{name:"Auto-Detect Best Settings",id:"autoDetect",description:"Tests the client and the game on your PC for about two minutes and picks what runs best. Don't touch mouse or keyboard meanwhile. You can undo it",type:"none",category:"General",button:"Run",buttonAction:"{{kute}}.autoDetect.setUp()",requiresLogin:!0,hostFeature:"autodetect-v2"},autoDetectResult:{name:"Last Auto-Detect Result",id:"autoDetectResult",description:"See what the last run measured and changed, and undo it",type:"none",category:"General",button:"Show",buttonAction:"{{kute}}.autoDetect.showLast()"},hotkeys:{name:"Hotkeys",id:"hotkeys",description:"Change or clear Kute's own keys (new lobby, matchmaker, reload, fullscreen, chat logs) and add keys for toggles",type:"none",category:"General",button:"Change",buttonAction:"{{kute}}.hotkeys.edit()",hostFeature:"hotkeys"},performanceMode:{name:"Disable & Hide All Non-Performance Settings",id:"performanceMode",description:"Turns off everything cosmetic and hides its settings. Turn this off again and all of them come back as they were",type:"checkbox",category:"General",defaultValue:!1,needsRefresh:!0,hostFeature:"performance-mode"},startMode:{name:"Start Mode",id:"startMode",description:"How the window opens when Kute starts",type:"select",category:"General",defaultValue:"Remember Previous",options:["Remember Previous","Borderless Fullscreen","Windowed","Maximized"]},gameFpsLimit:{name:"FPS Limit",id:"gameFpsLimit",description:"Caps your FPS to save power and heat. 0 means unlimited",type:"slider",category:"General",defaultValue:0,min:0,max:2e3,step:5},discordRPC:{name:"Discord Rich Presence",id:"discordRPC",description:"Shows your current mode and map on your Discord profile",type:"checkbox",category:"General",defaultValue:!0,needsRestart:!0},accountManager:{name:"Account Manager",id:"accountManager",description:"Save your Krunker accounts and switch between them from the menu",type:"checkbox",category:"General",defaultValue:!0},market:{name:"Kute Market",id:"market",description:"Enables market and trading features: K values, liquidity grades, trade verdicts and the market analyzer. In return, you allow Kute to see trading stats.",type:"checkbox",category:"General",defaultValue:!0,disabledBy:"disableOnlineFeatures"},obsCapturePlugin:{name:"OBS Capture Plugin",id:"obsCapturePlugin",platforms:["windows"],description:"Adds a Kute Capture source to OBS (close OBS first). For sound, add an Application Audio Capture of 'Kute audio window'",type:"checkbox",category:"General",defaultValue:!1},rawInput:{name:"Raw Input",id:"rawInput",platforms:["windows"],description:"Mouse movement comes straight from the device, without Windows pointer acceleration, and all of it reaches the game, also when you click or scroll mid-flick. Krunker's own Raw Mouse Input follows this setting",type:"checkbox",category:"Game",defaultValue:!0,needsRefresh:!0},rampBoost:{name:"Ramp Boosting",id:"rampBoost",description:"Scrolling makes you jump, for easier ramp boosts. Off in competitive. Turn it off if another tool already does this",type:"checkbox",category:"Game",defaultValue:!1},autoSpec:{name:"Auto Spectate",id:"autoSpec",description:"Joins public matches as a spectator instead of a player",type:"checkbox",category:"Game",defaultValue:!1},hsSound:{name:"Headshot Sound on Every Kill",id:"hsSound",performance:!1,description:"Plays the headshot sound on every kill, not just headshots",category:"Game",type:"checkbox",defaultValue:!1},hpEnemyCounter:{name:"Hardpoint Enemy Counter",id:"hpEnemyCounter",performance:!1,description:"Shows how many enemies are on the point in competitive Hardpoint",type:"checkbox",category:"Game",defaultValue:!0},showPing:{name:"Player List Ping",id:"showPing",performance:!1,description:"Shows everyone's ping next to their name in the player list",type:"checkbox",category:"Game",defaultValue:!0,needsRefresh:!0},realPing:{name:"Real Ping\u2122\uFE0F",id:"realPing",description:"Pings the lobby server directly and shows your real latency",type:"checkbox",category:"Game",defaultValue:!1,needsRestart:!0},matchmaker:{name:"Matchmaker (F6)",id:"matchmaker",description:"F6 joins the lowest ping lobby that matches your filters instead of a random one",type:"checkbox",category:"Game",defaultValue:!0,button:"Filters",buttonAction:"{{kute}}.matchmaker.showFilters()"},rankedAlert:{name:"Ranked Match Alert",id:"rankedAlert",description:"When Krunker's ranked queue finds a match while you are tabbed out, Kute comes to the front",type:"checkbox",category:"Game",defaultValue:!0,button:"Sound",buttonAction:"{{kute}}.queueSound.showOptions()"},accountEndMessage:{name:"Match End Message per Account",id:"accountEndMessage",description:"Remembers Krunker's Match End Message per account, an account without one sends nothing",type:"checkbox",category:"Game",defaultValue:!1,requiresLogin:!0},exitButton:{name:"Exit Button",id:"exitButton",performance:!1,description:"Adds an Exit button to the menu",type:"checkbox",category:"Interface",defaultValue:!0},menuTimer:{name:"Menu Timer",id:"menuTimer",performance:!1,description:"Shows the match timer while you are in the menu",type:"checkbox",category:"Interface",defaultValue:!0},classicMenu:{name:"Classic Menu",id:"classicMenu",performance:!1,description:"Season 9 menu layout, new buttons and features stay",type:"checkbox",category:"Interface",defaultValue:!1},betterChat:{name:"Better Chat",id:"betterChat",performance:!1,description:"Team and all chat in one view. Press Tab to switch where you send",type:"checkbox",category:"Interface",defaultValue:!0},chatLogs:{name:"Chat Logs",id:"chatLogs",description:"Keeps the last 2000 chat lines, also across lobbies, to search and copy. F1 opens them, change it in Hotkeys",type:"checkbox",category:"Interface",defaultValue:!0,button:"Open",buttonAction:"{{kute}}.chatLogs?.open()"},textSelect:{name:"Selectable Chat",id:"textSelect",performance:!1,description:"Lets you select and copy text from the chat",type:"checkbox",category:"Interface",defaultValue:!0},cleanUI:{name:"Cleaner Menu",id:"cleanUI",description:"Hides ads, promos, the Popular Now row and other clutter in the menu",type:"checkbox",category:"Interface",defaultValue:!1},hideBundles:{name:"Hide Bundle Popups",id:"hideBundles",description:"Stops store bundle popups from showing up outside the store",type:"checkbox",category:"Interface",defaultValue:!1},clanColors:{name:"Show Clan Colors",id:"clanColors",performance:!1,description:"Colors the tags of some clans in the player lists",type:"checkbox",category:"Interface",defaultValue:!0,disabledBy:"disableOnlineFeatures"},cuteBadge:{name:"Show Kute Badge",id:"cuteBadge",description:"Shows a badge next to other Kute players. This only affects what you see, others still see yours",type:"checkbox",category:"Interface",defaultValue:!0,disabledBy:"disableOnlineFeatures"},kuteIcons:{name:"Use Kute Icons",id:"kuteIcons",performance:!1,description:"Kute's own icons for counters, ammo, hitmarker, reticle and scope. Your game settings stay untouched",type:"checkbox",category:"Interface",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.kuteIcons.customize()"},hudLayout:{name:"HUD Editor",id:"hudLayout",description:"Move, resize and hide parts of the in-game HUD. Opens a private match while you edit",type:"none",category:"Interface",button:"Edit",buttonAction:"{{kute}}.hudEditor.edit()",requiresLogin:!0},keystrokes:{name:"Keystrokes",id:"keystrokes",performance:!1,description:"Shows your movement keys and mouse in the HUD and lights them up while pressed. Move it with the HUD Editor",type:"checkbox",category:"Interface",defaultValue:!1},spotifyOverlay:{name:"Spotify Overlay",id:"spotifyOverlay",performance:!1,description:"Shows the currently playing Spotify track in the HUD. Move and resize it with the HUD Editor",type:"checkbox",category:"Interface",defaultValue:!1,hostFeature:"spotify"},nukeCounter:{name:"Nuke Counter",id:"nukeCounter",performance:!1,description:"Shows your career nuke total in game. It updates when a match ends",type:"checkbox",category:"Interface",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.nukeCounter.showOptions()"},renderStats:{name:"Present FPS Counter",id:"renderStats",description:"The game counter shows how fast your PC runs the game, this adds the frames that reach your screen",type:"checkbox",category:"Interface",defaultValue:!1,needsRestart:!0,requires:"hardFlip"},kuteCss:{name:"Kute CSS",id:"kuteCss",performance:!1,description:"Kute's own look for menus, settings, HUD and social, with a few cats",type:"checkbox",category:"Customization",defaultValue:!1},motionBlur:{name:"Motion Blur",id:"motionBlur",performance:!1,description:"A slight blur while you turn the camera, the HUD stays sharp. Costs FPS: about 5 % fewer while it blurs",type:"checkbox",category:"Customization",defaultValue:!1},motionBlurStrength:{name:"Motion Blur Strength",id:"motionBlurStrength",performance:null,description:"How long the trail is when Motion Blur is on",type:"slider",category:"Customization",defaultValue:40,min:10,max:100,step:5},customSky:{name:"Custom Sky",id:"customSky",performance:!1,description:"Your own sky color gradient or image on every map. Applies from the next match",type:"checkbox",category:"Customization",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.customSky.showOptions()",hostFeature:"custom-sky"},swapper:{name:"Resource Swapper",id:"swapper",performance:!1,description:"Replaces game files like textures and sounds with the files in your swapper folder",type:"checkbox",category:"Customization",defaultValue:!0,button:"Manage",buttonAction:"{{kute}}.swapperManager.open()",needsRefresh:!0},customCss:{name:"CSS Manager",id:"customCss",performance:!1,description:"Your own CSS on top of Krunker's. Keep several files and switch between them, with a live preview",type:"checkbox",category:"Customization",defaultValue:!0,button:"Edit",buttonAction:"{{kute}}.customCss.open()"},userscripts:{name:"Userscripts",id:"userscripts",description:"Runs your own scripts. Crankshaft and idkr scripts work too",type:"checkbox",category:"Customization",defaultValue:!0,button:"Manage",buttonAction:"{{kute}}.userscriptManager.open()"},blocklist:{name:"URL Blocklist",id:"blocklist",description:"Blocks ads and trackers. Open the file to add your own entries",type:"checkbox",category:"Customization",defaultValue:!0,button:"Open file",buttonAction:"window.chrome.webview.postMessage('open, blocklist')",needsRestart:!0},disableCats:{name:"Disable Cats",id:"disableCats",performance:!0,description:"Blocks the cat models in the maps",type:"checkbox",category:"Customization",defaultValue:!0,needsRefresh:!0},disableVideoSkins:{name:"Disable Video Skins",id:"disableVideoSkins",performance:!0,description:"Video skins like Glitch are not loaded and show black instead, which can save FPS",type:"checkbox",category:"Customization",defaultValue:!1,needsRefresh:!0,hostFeature:"video-skins"},uncapFps:{name:"Uncap FPS",id:"uncapFps",description:"Removes the FPS cap at your monitor's refresh rate",type:"checkbox",category:"Advanced",defaultValue:!0,needsRestart:!0},audioFix:{name:"Fix Audio Stutters",id:"audioFix",description:"For sound that cuts out at high FPS. Moves sounds every 8 ms instead of every sample",type:"checkbox",category:"Advanced",defaultValue:!1,needsRestart:!0,hostFeature:"audio-fix"},angleBackend:{name:"Graphics Backend (ANGLE)",id:"angleBackend",platforms:["windows"],description:"Leave it on Default (D3D11). OpenGL and Vulkan turn off everything the swapchain hook does",type:"select",category:"Advanced",defaultValue:"Default",needsRestart:!0,options:["Default","D3D11","D3D11on12","OpenGL","Vulkan"]},displayServer:{name:"Display Server",id:"displayServer",platforms:["linux"],description:"Leave it on X11, it runs much faster than Wayland for now. X11 also works inside a Wayland session",type:"select",category:"Advanced",defaultValue:"X11",needsRestart:!0,options:["X11","Wayland"]},colorProfile:{name:"Color Profile",id:"colorProfile",description:"Try sRGB if colors look washed out or too strong",type:"select",category:"Advanced",defaultValue:"Default",needsRestart:!0,options:["Default","sRGB","Display P3 D65","Extended sRGB","scRGB linear","HDR10"]},webviewPriority:{name:"Process Priority",id:"webviewPriority",description:"Higher can help a little, but may make your PC less stable",type:"select",category:"Advanced",defaultValue:"Normal",needsRestart:!0,options:["High","Above Normal","Normal","Below Normal","Low","Idle"]},x3dCacheCores:{name:"Keep Kute on the 3D V-Cache cores",id:"x3dCacheCores",description:"Ryzen X3D with two core groups only: steadier frame pacing on the cores with the big cache",type:"checkbox",category:"Advanced",defaultValue:!0,needsRestart:!0,hostFeature:"x3d-cores"},throttle:{name:"CPU Throttling",id:"throttle",description:"Slows the game down on purpose (2 = half speed). Only for an unstable game, an FPS limit is usually better",type:"slider",min:1,max:3,step:.01,category:"Advanced",defaultValue:1},inMenuThrottle:{name:"CPU Throttling in Menu",id:"inMenuThrottle",description:"Same, but only in the menu. It also slows the match that runs behind the menu",type:"slider",min:1,max:3,step:.01,category:"Advanced",defaultValue:1},clearCache:{name:"Clear Cache & Storage",id:"clearCache",description:"Deletes the cache and local storage. This also resets your game settings",type:"none",category:"Advanced",button:"Clear Now",buttonAction:"if(confirm('Are you sure you want to clear cache and local storage?')) { localStorage.clear(); sessionStorage.clear(); window.chrome.webview.postMessage('clear-cache'); }"},hardFlip:{name:"DXGI Swapchain Hook",id:"hardFlip",platforms:["windows"],description:"Present FPS counter and OBS capture. Laptops with two graphics chips may run better without it",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0},laptopPowerBoost:{name:"Laptop Power Boost",id:"laptopPowerBoost",description:"Plugged in laptops only: switches the power mode to performance while Kute runs and puts yours back after",type:"checkbox",category:"Engine",defaultValue:!0,hostFeature:"hybrid-gpu"},primeOffload:{name:"NVIDIA PRIME Offload",id:"primeOffload",platforms:["linux"],description:"Hybrid laptops with the NVIDIA driver: the game renders on the NVIDIA chip instead of the built in one",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"prime-offload"},patchInputPriority:{name:"Input at Normal Priority",id:"patchInputPriority",description:"Chromium patch: mouse input no longer starves the game's server messages. Off brings back the aim freeze",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchFramePacing:{name:"Frame Pacing",id:"patchFramePacing",description:"Chromium patch: the game runs one frame ahead of the screen instead of flooding it. Off brings back the GPU stutter",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchFrameLimiter:{name:"Chromium FPS Limiter",id:"patchFrameLimiter",description:"Chromium patch: holds the FPS limit inside Chromium with the CPU idle, with or without the hook. Off uses the hook's limiter, or a busy wait without the hook",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchRawInputMovement:{name:"Raw Input Keeps Movement",id:"patchRawInputMovement",platforms:["windows"],description:"Chromium patch: no mouse movement is lost on a click. Off drops a few counts at every shot",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchAudioParamCoalesce:{name:"Coalesce Audio Automation",id:"patchAudioParamCoalesce",description:"Chromium patch: the game's per frame sound updates no longer pile up. Off makes FPS drop over a long match",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchCanvasBufferCache:{name:"WebGL Buffer Cache",id:"patchCanvasBufferCache",description:"Chromium patch: keeps three spare frame buffers instead of one. Off makes some starts land in a slow mode",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchHighQoS:{name:"Game Process at High QoS",id:"patchHighQoS",platforms:["windows"],description:"Chromium patch: Windows may not throttle the game's process to save power. Off leaves that to Windows",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},showChangelog:{name:"Show Changelog After Updates",id:"showChangelog",description:"Shows what's new after Kute updates",type:"checkbox",button:"Show Now",buttonAction:"{{kute}}.showChangelogPopup({{kute}}.version)",category:"About",defaultValue:!0},disableOnlineFeatures:{name:"Disable Kute Online Features",id:"disableOnlineFeatures",description:"Nothing is sent to or received from kute.lol. Turns off all Kute badges (yours too) and clan colors",type:"checkbox",category:"About",defaultValue:!1,needsRestart:!0},checkUpdates:{name:"Check For Updates",id:"checkUpdates",description:"Looks for a new Kute version when it starts",type:"checkbox",category:"About",defaultValue:!0,needsRestart:!0},exportClientSettings:{name:"Export Kute Settings",id:"exportClientSettings",description:"Saves Kute's settings, HUD positions, matchmaker filters and hotkeys as a file in Downloads",type:"none",category:"About",button:"Export",buttonAction:"{{kute}}.settingsTransfer.exportFile()"},importClientSettings:{name:"Import Kute Settings",id:"importClientSettings",description:"Loads a file from Export Kute Settings and restarts Kute",type:"none",category:"About",button:"Import",buttonAction:"{{kute}}.settingsTransfer.importFile()"},diagnosticsReport:{name:"Diagnostics Report",id:"diagnosticsReport",description:"Puts what helps fix a problem into one file you can send. You see all of it first, nothing is uploaded",type:"none",category:"About",button:"Create",buttonAction:"{{kute}}.diagnostics.open()",hostFeature:"diagnostics"}}});function Mo(s,e){return s.performanceMode===!0&&e in pu}function hu(s){return{...s,...Co}}function mn(s,e){let t=[];for(let[o,n]of Object.entries(pu)){if(n===null)continue;let r=s[o];e?(o in Co||(Co[o]=r),s[o]=n):o in Co&&(s[o]=Co[o],delete Co[o]),s[o]!==r&&t.push(o)}return t}var pu,Co,To=w(()=>{"use strict";Zo();pu=Object.fromEntries(Object.values(At).filter(s=>s.performance!==void 0).map(s=>[s.id,s.performance??null])),Co={}});function eb(s){let e="abcdefghijklmnopqrstuvwxyz",t=crypto.getRandomValues(new Uint8Array(s));return Array.from(t,o=>e[o%e.length]).join("")}var u,Ne,mu,Ue,F=w(()=>{"use strict";Zo();To();u={},Ne=new Promise(s=>{function e(t){if(t?.data?.settings||t?.data?.version){if(window.chrome.webview.removeEventListener("message",e),Object.assign(u,t.data),u.settings?.data)for(let o of Object.values(At))o.defaultValue!==void 0&&!(o.id in u.settings.data)&&(u.settings.data[o.id]=o.defaultValue);u.settings?.data&&mn(u.settings.data,u.settings.data.performanceMode===!0),s(u)}}window.chrome.webview.addEventListener("message",e),window.chrome.webview.postMessage("get-info")}),mu=eb(12);Object.defineProperty(window,mu,{value:u,enumerable:!1,writable:!1,configurable:!1});Ue=`window["${mu}"]`});function Te(s,e,t=2e3){return new Promise(o=>{let n={timer:0},r=i=>{i.data?.[e]!==void 0&&(clearTimeout(n.timer),window.chrome.webview.removeEventListener("message",r),o(i.data[e]))};n.timer=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),o(null)},t),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(s)})}var Hr,$e,U,ke,Oe,Ae=w(()=>{"use strict";Hr=(s,e,t)=>{let o=s.prototype[e];s.prototype[e]=function(...n){let r=t.call(this,n,o);return r===void 0?o.apply(this,n):r}},$e=(s,e=3e4)=>new Promise((t,o)=>{let n=document.querySelector(s);if(n){t(n);return}let r={timer:0},i=new MutationObserver(()=>{let a=document.querySelector(s);a&&(clearTimeout(r.timer),i.disconnect(),t(a))});r.timer=setTimeout(()=>{i.disconnect(),o(new Error(`element never showed up: ${s}`))},e),i.observe(document.body,{childList:!0,subtree:!0})}),U=(s,e=document)=>{let t=e.querySelector(s);if(!t)throw new Error(`element not found: ${s}`);return t},ke=(s,e=document)=>U(s,e),Oe=()=>!!document.querySelector(".cmpTmHed")});var gu={};A(gu,{setRampBoost:()=>to,syncScrollBinds:()=>Fr});function to(s){fu=s,window.chrome.webview.postMessage(`toggle-rboost, ${s}`)}function Fr(){let s=!1;try{s=Object.keys(localStorage).some(e=>e.startsWith("cont_")&&localStorage.getItem(e)===tb)}catch{return}s!==Or&&(Or=s,u.hostFeatures?.includes("scroll-binds")&&window.chrome.webview.postMessage(`wheel-to-page, ${s}`))}var tb,fu,Or,fn=w(()=>{"use strict";F();tb="20000",fu=!1;window.addEventListener("wheel",s=>{!fu||!document.pointerLockElement||!u.hostFeatures?.includes("ramp-boost")||(Or||(s.stopImmediatePropagation(),s.preventDefault()),window.chrome.webview.postMessage(`ramp-wheel, ${(s.deltaY||s.deltaX)<0?1:-1}`))},{capture:!0,passive:!1})});var wu={};A(wu,{claimAltShoot:()=>qr,hostSupports:()=>bn,prepareShootBind:()=>Kr,syncLeftClick:()=>es});function Dr(s){return Number(localStorage.getItem(s)??-1)}function vu(){let s=Dr(gn);return s!==-1&&s!==Qo}function bn(){return u.hostFeatures?.includes(sb)===!0}function qr(){return!vu()||!bn()}function Kr(){if(!vu()){localStorage.setItem(gn,String(Qo));return}Ne.then(()=>{bn()||localStorage.setItem(gn,String(Qo))})}function es(){if(!bn())return;let s=Dr(gn)===Qo||Dr(ob)===Qo;s!==bu&&(bu=s,window.chrome.webview.postMessage(`left-click-f20, ${s}`))}var Qo,gn,ob,sb,bu,vn=w(()=>{"use strict";F();Qo=131,gn="cont_shoot1Key_alt",ob="cont_shoot1Key",sb="left-click-f20"});var yu={};A(yu,{SLOTS:()=>Ao,postUrls:()=>oo});function jr(s){try{return localStorage.getItem(s)}catch{return null}}function rb(s){try{let e=JSON.parse(jr(s)??"[]");return Array.isArray(e)?e.map(t=>Array.isArray(t)?t[1]:null).filter(t=>typeof t=="string").slice(0,nb):[]}catch{return[]}}function oo(){let s={};for(let t of Ao){let o=[];for(let i of t.settings)o.push(jr(`kro_setngss_${i}`)??"");for(let i of t.keys??[])o.push(jr(i)??"");for(let i of t.lists??[])o.push(...rb(i));let n=t.element?document.getElementById(t.element):null;n instanceof HTMLImageElement&&o.push(n.src);let r=[...new Set(o)].filter(i=>i.startsWith("http"));r.length>0&&(s[t.id]=r)}let e=JSON.stringify(s);e!==ku&&(ku=e,window.chrome.webview.postMessage(`icon-urls ${e}`))}var ts,Ao,nb,ku,wn=w(()=>{"use strict";ts={id:"showUI",name:"Show UI",kind:"checkbox"},Ao=[{id:"kills",file:"kills.png",name:"Kill counter",settings:["customKills"],element:"killsIcon",hiddenBy:[ts,{id:"showKillC",name:"Show Kill Counter",kind:"checkbox"}]},{id:"deaths",file:"deaths.png",name:"Death counter",settings:["customDeaths"],element:"deathsIcon",hiddenBy:[ts,{id:"showDeaths",name:"Show Death Counter",kind:"checkbox"}]},{id:"streak",file:"streak.png",name:"Streak counter",settings:["customStreak"],element:"streakIcon",hiddenBy:[ts,{id:"showStreak",name:"Show Streak Counter",kind:"checkbox"}]},{id:"kdr",file:"kdr.png",name:"K/D counter",settings:[],element:"kdIcon",hiddenBy:[ts,{id:"showKD",name:"Show K/D Counter",kind:"checkbox"}]},{id:"ammo",file:"ammo.png",name:"Ammo",settings:["customAmmo"],element:"ammoIcon",hiddenBy:[ts]},{id:"hitmarker",file:"hitmarker.png",name:"Hitmarker",settings:["customHitmarker"],hiddenBy:[{id:"hitm",name:"Hitmarker: Show",kind:"checkbox"},{id:"hitOpac",name:"Hitmarker: Opacity",kind:"opacity"}]},{id:"reticle",file:"reticle.png",name:"Reticle",settings:[],keys:["savedReticle"],lists:["krk_custRet"],element:"aimDot",hiddenBy:[]},{id:"scope",file:"scope.png",name:"Scope",settings:[],keys:["savedScope"],lists:["krk_custScps"],element:"recticleImg",hiddenBy:[{id:"scopeOpac",name:"Scope Opacity",kind:"opacity"}]}],nb=30;ku=""});var xu={};A(xu,{canLoadLive:()=>Lt,loadScripts:()=>Lo,registry:()=>Je});var Je,Lt,Lo,os=w(()=>{"use strict";F();Je=window.__kuteUserscripts??null,Lt=()=>!!(Je&&u.hostFeatures?.includes("userscripts-live")),Lo=(s,e,t)=>{window.chrome.webview.postMessage(`scripts-load ${JSON.stringify({...s?{keys:s}:{},replace:e,start:t})}`)}});var Eu={};A(Eu,{default:()=>Rt,hostSupportsCustomCss:()=>ss});var Su,ss,Ur,Rt,kn=w(()=>{"use strict";F();Su=/@import\s+(?:url\([^)]*\)|"[^"]*"|'[^']*')[^;]*;?/gi,ss=()=>u.hostFeatures?.includes("custom-css")??!1,Ur=class{constructor(){this.saved=String(window.__kuteCustomCss??""),this.enabled=!0,this.sheet=null,this.importStyle=null,this.importText="",this.waitingForBody=!1,this.saved&&this.apply(this.saved),Ne.then(()=>{u.settings.toggleCustomCss=e=>this.toggle(e),u.settings.data.customCss===!1?this.toggle(!1):!this.saved&&ss()&&this.load().then(e=>this.apply(e))})}load(){return new Promise(e=>{let t=o=>{typeof o.data?.customCss?.content=="string"&&(window.chrome.webview.removeEventListener("message",t),this.saved=o.data.customCss.content,e(this.saved))};window.chrome.webview.addEventListener("message",t),window.chrome.webview.postMessage("css-read")})}apply(e){if(!this.enabled)return;let t=e.match(Su)??[],o=t.length?e.replace(Su,""):e;if(!this.sheet){if(!o.trim())return;this.sheet=new CSSStyleSheet,document.adoptedStyleSheets=[...document.adoptedStyleSheets,this.sheet]}this.sheet.replaceSync(o),this.setImports(t.join(` +`))}setImports(e){if(this.importText=e,!(!e&&!this.importStyle)){if(document.readyState==="loading"){if(this.waitingForBody)return;this.waitingForBody=!0,document.addEventListener("DOMContentLoaded",()=>this.setImports(this.importText),{once:!0});return}this.importStyle||(this.importStyle=document.createElement("style"),document.documentElement.append(this.importStyle)),this.importStyle.textContent!==e&&(this.importStyle.textContent=e)}}toggle(e){if(this.enabled=e,!e){this.sheet?.replaceSync(""),this.setImports("");return}this.saved?this.apply(this.saved):ss()&&this.load().then(t=>this.apply(t))}markSaved(e){this.saved=e,this.apply(e)}revert(){this.enabled&&this.apply(this.saved)}},Rt=new Ur});var Au={};A(Au,{holdRestart:()=>yn,restart:()=>Ro});function Ro(){location.assign("https://krunker.io/")}function yn(s){Mu=Date.now()+s}function Tu(){return localStorage.getItem($u)!==null||document.cookie.includes(`${$u}=`)}function ib(){try{return!!window.getGameActivity?.()?.id}catch{return!1}}function ab(s){let e=Date.now(),t=0,o=setInterval(()=>{if(ib()){sessionStorage.removeItem(Gr),clearInterval(o);return}if(Date.now()-e>9e4){clearInterval(o);return}if(!s||!Tu()||(t===0&&(t=Date.now()),Date.now()-t<1500))return;clearInterval(o);let n=Number(sessionStorage.getItem(Gr)??0);n>=2||(sessionStorage.setItem(Gr,String(n+1)),console.log("[kute] session: no lobby after the frvr login, reloading"),Ro())},1e3)}function lb(){let s=localStorage.getItem(Cu)!==null,e=!1;setInterval(()=>{if(e){document.pointerLockElement||Ro();return}let t=localStorage.getItem(Cu)!==null;s&&!t&&Date.now()>Mu&&(e=!0,console.log("[kute] session: logged out, reloading")),s=t},1e3)}var $u,Cu,Gr,Mu,xn=w(()=>{"use strict";$u="__FRVR_auth_refresh_token",Cu="krunker_token",Gr="kute_hang_reloads";Mu=0;location.hostname==="krunker.io"&&location.pathname==="/"&&(ab(!Tu()),lb())});var Pu={};A(Pu,{DEFAULT_LOAD:()=>so,cpuChecksum:()=>Xr,createScene:()=>Yr});function fb(s){let e=document.createElement("canvas");e.width=640,e.height=60+s.length*34;let t=e.getContext("2d");return t&&(t.fillStyle="rgba(30, 30, 30, 0.92)",t.beginPath(),t.roundRect(0,0,e.width,e.height,18),t.fill(),t.textAlign="center",t.textBaseline="middle",s.forEach((o,n)=>{t.font=n===0?"26px Consolas, monospace":"18px Consolas, monospace",t.fillStyle=n===0?"#35e0e8":"#bbbbbb",t.fillText(o,e.width/2,48+n*34)})),e}function Lu(s,e,t){let o=s.createShader(e);if(!o)throw new Error("cannot create shader");if(s.shaderSource(o,t),s.compileShader(o),!s.getShaderParameter(o,s.COMPILE_STATUS))throw new Error(s.getShaderInfoLog(o)??"shader compile failed");return o}function Wr(s,e,t){let o=s.createProgram();if(s.attachShader(o,Lu(s,s.VERTEX_SHADER,e)),s.attachShader(o,Lu(s,s.FRAGMENT_SHADER,t)),s.linkProgram(o),!s.getProgramParameter(o,s.LINK_STATUS))throw new Error(s.getProgramInfoLog(o)??"program link failed");return o}function gb(s){let e=[],t=[];for(let o=0;o<=s;o++){let n=o/s*Math.PI;for(let r=0;r<=s;r++){let i=r/s*Math.PI*2;e.push(Math.cos(i)*Math.sin(n),Math.cos(n),Math.sin(i)*Math.sin(n))}}for(let o=0;o0?fb(t):null,g=f?Wr(o,hb,mb):null,b=g?o.getUniformLocation(g,"uScale"):null,v=o.createVertexArray();f&&(o.bindVertexArray(v),o.bindBuffer(o.ARRAY_BUFFER,o.createBuffer()),o.bufferData(o.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,1]),o.STATIC_DRAW),o.enableVertexAttribArray(0),o.vertexAttribPointer(0,2,o.FLOAT,!1,0,0),o.bindVertexArray(null),o.bindTexture(o.TEXTURE_2D,o.createTexture()),o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,f),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE));let k=1337,E=()=>(k=k*1664525+1013904223>>>0,k/4294967296),L=Array.from({length:e.draws},()=>({x:(E()-.5)*80,y:(E()-.5)*50,z:(E()-.5)*40,scale:.6+E()*1.6,spin:.2+E()*1.5,red:.3+E()*.7,green:.3+E()*.7,blue:.3+E()*.7})),y=new Float32Array(16),C=new Float32Array(16),I=new Float32Array(16),_=new Float32Array(16);return C[0]=1,C[5]=1,C[10]=1,C[15]=1,C[14]=-60,{resize(H,G){s.width=Math.max(1,Math.round(H)),s.height=Math.max(1,Math.round(G)),o.viewport(0,0,s.width,s.height),bb(y,Math.PI/2,s.width/s.height,.1,500),vb(I,y,C)},render(H){let G=H*.001;kb(e.cpuIterations),o.enable(o.DEPTH_TEST),o.disable(o.BLEND),o.clearColor(.08,.09,.12,1),o.clear(o.COLOR_BUFFER_BIT|o.DEPTH_BUFFER_BIT),o.useProgram(n),o.bindVertexArray(p),o.uniformMatrix4fv(i,!1,I);for(let J of L)wb(_,J.x,J.y,J.z,G*J.spin,J.scale),o.uniformMatrix4fv(r,!1,_),o.uniform3f(a,J.red,J.green,J.blue),o.drawElements(o.TRIANGLES,h.indices.length,o.UNSIGNED_SHORT,0);o.disable(o.DEPTH_TEST),o.enable(o.BLEND),o.blendFunc(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA),o.useProgram(l),o.bindVertexArray(m),o.uniform1f(c,G);for(let J=0;J{"use strict";so={draws:1200,meshSegments:10,overdraw:4,cpuIterations:2e5},cb=`#version 300 es layout(location=0) in vec3 aPos; layout(location=1) in vec3 aNormal; uniform mat4 uModel; @@ -11,14 +11,14 @@ void main() { float light = 0.35 + 0.65 * max(dot(n, normalize(vec3(0.4, 0.8, 0.5))), 0.0); vColor = uColor * light; gl_Position = uViewProj * uModel * vec4(aPos, 1.0); -}`,rb=`#version 300 es +}`,db=`#version 300 es precision mediump float; in vec3 vColor; out vec4 outColor; -void main() { outColor = vec4(vColor, 1.0); }`,ib=`#version 300 es +void main() { outColor = vec4(vColor, 1.0); }`,ub=`#version 300 es layout(location=0) in vec2 aPos; out vec2 vUv; -void main() { vUv = aPos * 0.5 + 0.5; gl_Position = vec4(aPos, 0.0, 1.0); }`,ab=`#version 300 es +void main() { vUv = aPos * 0.5 + 0.5; gl_Position = vec4(aPos, 0.0, 1.0); }`,pb=`#version 300 es precision mediump float; in vec2 vUv; uniform float uTime; @@ -27,18 +27,18 @@ out vec4 outColor; void main() { float w = sin(vUv.x * 40.0 + uTime + uLayer) * cos(vUv.y * 30.0 - uTime * 0.7); outColor = vec4(0.3 + 0.2 * w, 0.2, 0.4 - 0.2 * w, 0.08); -}`,lb=`#version 300 es +}`,hb=`#version 300 es layout(location=0) in vec2 aPos; uniform vec2 uScale; out vec2 vUv; -void main() { vUv = vec2(aPos.x * 0.5 + 0.5, 0.5 - aPos.y * 0.5); gl_Position = vec4(aPos * uScale, 0.0, 1.0); }`,cb=`#version 300 es +void main() { vUv = vec2(aPos.x * 0.5 + 0.5, 0.5 - aPos.y * 0.5); gl_Position = vec4(aPos * uScale, 0.0, 1.0); }`,mb=`#version 300 es precision mediump float; in vec2 vUv; uniform sampler2D uLabel; out vec4 outColor; -void main() { outColor = texture(uLabel, vUv); }`;Gr=new Float32Array(4096),Mu=0});var Au={};A(Au,{FrameRecorder:()=>to,InputProbe:()=>os,TaskProbe:()=>oo});var to,os,oo,yn=w(()=>{"use strict";to=class{constructor(e=12e4){this.samples=new Float32Array(e),this.count=0,this.stored=0,this.last=-1,this.first=-1}frame(e){this.last>=0&&(this.count++,this.storedt[Math.min(t.length-1,Math.floor(h*t.length))],r=n(.5),i=Math.max(4*r,e),a=0,l=0,c=0;for(let h of t)a+=h,h>i&&(l++,c+=h-r);let d=Math.max(.001,a/1e3);return{frames:this.count,seconds:o,fps:this.count/o,meanMs:a/this.stored,p50:r,p95:n(.95),p99:n(.99),p999:n(.999),maxMs:t[t.length-1],hitches:l,hitchesPerSec:l/d,stallMs:c/d}}},os=class{constructor(){this.waits=new Float32Array(16384),this.events=0,this.packets=0,this.onMove=e=>{if(document.pointerLockElement===null)return;let t=e.getCoalescedEvents(),o=t.length>0?t[0].timeStamp:e.timeStamp;this.waits[this.events%this.waits.length]=performance.now()-o,this.events++,this.packets+=Math.max(1,t.length)}}start(){this.events=0,this.packets=0,window.addEventListener("pointermove",this.onMove,{capture:!0,passive:!0})}stop(){window.removeEventListener("pointermove",this.onMove,!0);let e=Math.min(this.events,this.waits.length),t=this.waits.slice(0,e).sort();return{events:this.events,packets:this.packets,p99:e>0?t[Math.min(e-1,Math.floor(e*.99))]:null,max:e>0?t[e-1]:null}}},oo=class{constructor(){this.delays=[],this.timer=0,this.sent=0,this.channel=new MessageChannel,this.channel.port1.onmessage=e=>{this.delays.push(performance.now()-e.data)}}start(){this.delays=[],this.sent=0;let e=performance.now()+10;this.timer=setInterval(()=>{this.sent++;let t=performance.now();this.channel.port2.postMessage(Math.min(t,e)),e=t+10},10)}stop(){clearInterval(this.timer);let e=[...this.delays].sort((t,o)=>t-o);return{sent:this.sent,ran:e.length,p99:e.length?e[Math.min(e.length-1,Math.floor(e.length*.99))]:null,max:e.length?e[e.length-1]:null}}}});var Iu={};function Ze(s,e){let t=Number(xn.get(s));return xn.has(s)&&Number.isFinite(t)?t:e}function Jr(s){window.chrome.webview.postMessage(`bench-finish ${JSON.stringify(s)}`)}function Eb(){let s=document.createElement("canvas");s.style.cssText="position:fixed;inset:0;width:100vw;height:100vh;display:block",document.body.append(s);let e=Lu>0?["Kute is testing this PC",`client test ${kb} of ${Lu}`,"this takes a moment, nothing to do for you"]:[],t=Wr(s,Ru,e);t.resize(window.innerWidth*devicePixelRatio,window.innerHeight*devicePixelRatio);let o=Xr.length>0?Array.from({length:Math.max(1,yb)},()=>Xr).flat():[null],n=[],r=0,i=performance.now(),a=null,l=new oo,c=Ze("cap",0),d=i,h=0,p=!1;s.addEventListener("webglcontextlost",()=>{p=!0});let m=g=>{i=g,a=null;let b=o[r];b!==null&&(c=Sb?b:0,d=g,window.chrome.webview.postMessage(`bench-cap ${b}`))};m(i);let f=g=>{if(c>0){for(;performance.now()0&&t.lost()){h===0&&Jr({ok:!1,error:"webgl context lost"}),t.destroy();return}if(t.render(g),h>0){b-h=v&&(a=new to,r===0&&window.chrome.webview.postMessage("bench-sample-start"),l.start()),a!==null&&(a.frame(b),b-i>=v+vb&&(n.push({cap:o[r]??c,stats:a.stats(wb),otherTasks:l.stop()}),r++,r0?n:void 0,load:Ru,width:s.width,height:s.height,checksum:Vr()})))),requestAnimationFrame(f)};requestAnimationFrame(f)}function Pu(){try{Eb()}catch(s){Jr({ok:!1,error:String(s)})}}var xn,gb,bb,vb,wb,kb,Lu,Xr,yb,xb,Sb,Ru,Zr=w(()=>{"use strict";Yr();yn();xn=new URLSearchParams(location.search);gb=400,bb=Ze("settle",700),vb=Ze("ms",2e3),wb=1e3/Ze("hz",60),kb=Ze("step",0),Lu=Ze("steps",0),Xr=(xn.get("caps")??"").split(".").filter(s=>s!=="").map(Number).filter(Number.isFinite),yb=Ze("rounds",1),xb=Ze("capsettle",700),Sb=xn.get("selfcap")==="1",Ru={draws:Ze("draws",eo.draws),meshSegments:eo.meshSegments,overdraw:Ze("overdraw",eo.overdraw),cpuIterations:Ze("cpu",eo.cpuIterations)};document.body?Pu():document.addEventListener("DOMContentLoaded",Pu,{once:!0})});var _u,Nu=w(()=>{_u=`#guidePopup{background-color:#182429}.guideHeader,.guideSubH{border-bottom-color:#35e0e81f}.guStepS:not(:last-child){border-bottom-color:#35e0e81f}a,a:active,a:visited{color:#35e0e8}#purchaseSelector{background-color:#111b1f}.roundScrV{border-bottom-color:#35e0e847}#reloadMsg,#interactMsg,#mobileUI #interactMsg{border-color:#35e0e847}#instructionsUpdate{background-color:#151f24}.instructionsHeader,.instructionsTabs{background-color:#070c0f}.endTablePfp{border-color:#35e0e847}th,tr{border-bottom-color:#35e0e81f}.followBut{background-color:#35e0e8;color:#0b1215}.lds-ring div{border-color:#35e0e847;border-color:rgba(53,224,232,.28) transparent transparent transparent}#spinItemName{background-image:linear-gradient(to right,#0000,#070c0fb3 40%,#070c0fe6 60%,#0000)}.spinPrevIcon,.spinSprayDiv,#spinPromo,.compClassPItm,.compPLstIcn,.compSwpTmB,.compMenBtnS,.compPlWpIcn{border-color:#35e0e847}.hostHeader{background-color:#070c0f}#bigMFeatHBtn{border-color:#35e0e847}#bigMFeatHBtn:hover,#bigMFeatHBtn:active,#bigMFeatPBtn:hover,#bigMFeatPBtn:active{border-color:#35e0e847!important}.biMFeatInfB{border-color:#35e0e847}.biMFeatInfB:hover{border-color:#35e0e847!important}.mapLICat{background-color:#151f24}.hostPresetBtn,#hostMenuBtn{background-color:#35e0e8;color:#0b1215}.serverHostOp{border-color:#35e0e81f}.hostCBtn{border-color:#35e0e847}#hostActionH{border-top-color:#35e0e847}#stickyHostH{background-color:#070c0f}.loadoutBtn{background-color:#35e0e8;color:#0b1215}#loadoutToolbar{background-color:#111b1f;border-bottom-color:#35e0e81f}.loadoutTab{background-color:#182429}.loadoutTab:hover{background-color:#1d2c32}.loadoutTabSel{background-color:#24343a}#charPreviewSlot{border-right-color:#35e0e81f}#menuWindow.eterno .bigMenTabs{background-color:#111b1fad}.quickJoin{border-color:#35e0e8}.settText{color:#35e0e8}.contactsHeader,.setHed{border-color:#35e0e81f;background-color:#1d2c32}.setHed:hover{background-color:#182429}.setHedS{border-color:#35e0e81f;background-color:#1d2c32}.settName,.settNameSmall{border-bottom-color:#35e0e81f}input:checked+.sliderSml{background-color:#35e0e8;color:#0b1215}input:focus+.sliderSml{box-shadow:0 0 1px #35e0e8}input:checked+.slider{background-color:#35e0e8;color:#0b1215}input:focus+.slider{box-shadow:0 0 1px #35e0e8}.sliderVal{border-color:#35e0e847!important}#modDropper{border-color:#35e0e81f}#profilePicM{background-color:#24343a}.mailFrom{color:#35e0e8;border-bottom-color:#35e0e847}.followFrom{color:#35e0e8}#mailCount{border-color:#35e0e81f}#policePopC{background-color:#151f24}.classXPBar{background-color:#111b1f}.clsXPBarC{background-color:#35e0e8;color:#0b1215}.skinPaintSwatch{border-color:#35e0e847}.sb1:before{border-left-color:#35e0e847;border-top-color:#35e0e847}.skinColorItem,.matchVote{border-color:#35e0e81f}.hostMap,#mobileJoystick .back,#mobileJoystick .front{border-color:#35e0e847}#chargeModalCard{background-color:#111b1f}.chargeModalBtn{background-color:#35e0e8;color:#0b1215}.settingsHeader,.serverHeader{background-color:#151f24}.setSugBox2,.setSugBox2:hover,.setSugBox,.setSugBox:hover{border-color:#35e0e847}.settingsBtn{background-color:#35e0e8;color:#0b1215}.settingTab:hover{border-bottom-color:#35e0e81f}.redVouchBtn,.searchBtn{background-color:#35e0e8;color:#0b1215}.challMapCrd,.challHeadrI{border-color:#35e0e847}.chalCard{background-color:#151f24}.chalRews{border-left-color:#35e0e847}.chalRewSkn{border-color:#35e0e847}.changeText{border-bottom-color:#35e0e81f}.crftRcpeCrd{background-color:#070c0f}.craftRcIcn,.crftRecSml,.crftItmReq{border-color:#35e0e847}.crftTim{background-color:#151f24}.hostToggle{background-color:#35e0e8;color:#0b1215}.titleRowLocked{border-bottom-color:#35e0e81f}input:checked+.optCheck{background-color:#35e0e8;color:#0b1215}.subPassChg,.subPassChg:hover,.updDisN,.updDisN:hover,.lnkTw:hover{background-color:#35e0e8;color:#0b1215}#popupContent{background-color:#151f24}.twitchPop,.nftPop,.confPop,.clientExitPop,#confPurchItemPop{border-color:#35e0e847}#bundlePop,#premiumPop{background-color:#151f24}.metaPop{border-color:#35e0e847}.confPremiumPop,.vouchPop{background-color:#151f24}.polConfPop{border-color:#35e0e847}.rankedPop,.promoPop{background-color:#151f24}.tListN.inv{background-color:#35e0e8;color:#0b1215}.tItemHolder,.dItemHolder,.tCurrencyItem{border-color:#35e0e847}.bigMenTab:hover,.bigMenTabA,.bigMenTabA:hover{border-bottom-color:#35e0e847}.dark .menuTabNew:hover{border-bottom-color:#35e0e81f!important}.dark .tabANew,.dark .tabANew:hover{border-bottom-color:#35e0e847!important}input:checked+.slider2{background-color:#35e0e8;color:#0b1215}input:focus+.slider2{box-shadow:0 0 1px #35e0e8}.tabHeader:hover{border-bottom-color:#35e0e847}#kdLayout,.crStat{border-color:#35e0e81f}.keyIcon{border-left-color:#35e0e81f;border-right-color:#35e0e81f;border-top-color:#35e0e847;border-bottom-color:#35e0e81f}.pfpPop,.dropsPop{background-color:#151f24}.accountCreatePop{background-color:#151f24;border-color:#35e0e847}#pubPfp{background-color:#35e0e8;color:#0b1215}#tradeChatInput,.tradeChatItem{background-color:#111b1f}#partnerProgB{background-color:#35e0e8;color:#0b1215}#partnrUpBtn{background-color:#35e0e8;border-bottom-color:#35e0e8;color:#0b1215}#partnrUpBtn:hover,#partnrUpBtn:active{border-bottom-color:#35e0e8}#partnrUpBtnD,#partnrUpBtnD:hover,#partnrUpBtnD:active{border-bottom-color:#35e0e847}.editLink{color:#35e0e8}.speedRunItem{border-bottom-color:#35e0e81f}#speedRunInfo{border-bottom-color:#35e0e847}#shopMainSellB{border-color:#35e0e847}.custBack:hover{background-color:#24343a85}#itemSearchH{background-color:#151f24}.skinReward{border-color:#35e0e847}.selectedItem{border-color:#35e0e847!important}.custContainer{border-color:#35e0e847}.custSubContainer{border-left-color:#35e0e847;border-bottom-color:#35e0e847}#findGameBtn{background-color:#35e0e8;color:#0b1215}#clanDeclineAll:hover,.logVersionHed,.viewAllUpdates,.viewAllUpdates:hover{border-color:#35e0e847}.followBack{border-color:#35e0e8!important}.followBack:hover{border-color:#35e0e847!important}.joinBtn{background-color:#35e0e8;color:#0b1215}.imagePop,.badgePop,.imageNewPop{background-color:#151f24}.openCollection{background-color:#35e0e8!important;color:#0b1215}.imageListHeader,.imageListFooter{background-color:#070c0f}.importPop,#bindsHeader,.disconnectPop{background-color:#151f24}.tooltip{background-color:#24343a}.tooltip2{background-color:#070c0f}.imageTab:hover{border-bottom-color:#35e0e81f}.tabAIMG,.tabAIMG:hover{border-bottom-color:#35e0e847}input:checked+.advancedSlider{background-color:#35e0e8;color:#0b1215}input:focus+.advancedSlider{box-shadow:0 0 1px #35e0e8}.quickPlayMap{border-color:#35e0e847}#custStreakSelH{border-top-color:#35e0e81f}.winSelH{background-color:#24343a}#spinHistoryBtn{border-color:#35e0e847}#spinHistoryBtn:hover{border-color:#35e0e847!important}#spinMultiToggleBtn{background-color:#35e0e8!important;box-shadow:inset 0 -7px #35e0e8!important;border-color:#35e0e847;color:#0b1215}#spinMultiToggleBtn:hover{border-color:#35e0e847!important}#spinHistoryPop{background-color:#151f24}.spinHistoryHeader{background-color:#070c0f}.clsStatXPBar{background-color:#0b1215}.eventPop{background-color:#151f24}.eventPopHeader,.bSliderBtn,.bSliderBtn:hover,.bSliderBtn:active{border-color:#35e0e847}.bSliderBtn.disabled{border-color:#35e0e81f}.bpLevelNum.completed{background-color:#24343a}.bpLevelNum.active{border-color:#35e0e847}.bpCard,.bpCard.free{border-color:#35e0e81f}.bpCard.free.completed,.bpCard.free.completed.claimed{border-color:#35e0e847}.bpCardSlot{border-color:#35e0e81f}.bpSliderArrow{border-right-color:#35e0e847}.bpInfoBalloon{background-color:#151f24}.bpInfoBalloon:after{background-color:#151f24}.bpClaimB{border-color:#35e0e847;background-color:#151f24}.bp-unlock-header{background-color:#151f24}.bp-generic-pop,.bp-purchase-pop{background-color:#151f24;border-color:#35e0e847}.clanSubmitBtn,.clanSubmitBtn:hover{background-color:#35e0e8;color:#0b1215}.spinErrorPop{background-color:#151f24}.popHeader,.dropsPopHeader{background-color:#070c0f}.charmErrorPop,.spinHistoryStatsPop{background-color:#151f24}#kpdCalls>* td,#kpdCalls>* th{border-bottom-color:#35e0e81f}.loadingPop,.autoLoadPop,.editMapPop,.responsePop{background-color:#151f24}.infoPop,.contPop{background-color:#1d2c32}.ticketPop{background-color:#151f24}.bundleCrd{background-color:#070c0f}.bundleItmReq,.bundleSliderBtn,.bundleSliderBtn:hover,.bundleSliderBtn:active,.bundleSliderBtn.disabled{border-color:#35e0e847}.bundleSliderArrow{border-right-color:#35e0e847}.dxp-pop{background-color:#151f24;border-color:#35e0e847}.dropsSliderBtn,.dropsSliderBtn:hover,.dropsSliderBtn:active,.dropsSliderBtn.disabled{border-color:#35e0e847}.dropsSliderArrow{border-right-color:#35e0e847}.rewItemHolder{border-color:#35e0e847}.abTestsPop{background-color:#151f24}.registerGiftPop{background-color:#151f24;border-color:#35e0e847}.rankedQueueModal{background-color:#151f24;border-color:#35e0e8;box-shadow:0 0 160px #35e0e875}.rankedMenuModal,.communityPopup,.tutorialPopup,.defaultModal,.krunkCupJoinModal,.krunkCupViewModal,.exchangeModal,.itemsModal,.socialModal,.moreKrunkerPopup{background-color:#151f24}.io-button{background-color:#151f24;border-color:#35e0e81f}.io-button:hover{background-color:#182429}.io-button--accept-secondary{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.io-input-field{border-color:#35e0e81f}.io-input-field:focus{border-color:#35e0e8}.io-popup-container{background-color:#111b1f}.io-section-header:after{background-color:#35e0e8;color:#0b1215}.io-card{border-color:#35e0e81f}.io-separator{border-bottom-color:#35e0e81f}.io-separator span{background-color:#111b1f}.strike-timer__info-holder,.strike-timer__timer-bg{background-color:#151f24}.bundle-popup-lmt-offer{background-color:#24343a}.ltm-offer-container__arrow{border-right-color:#35e0e847}.file-drop-target.svelte-145grbc{border-color:#35e0e81f}.file-drop-target.svelte-145grbc:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.file-drop-target.hovered.svelte-145grbc{border-color:#35e0e847}.file-drop-target.drag-over.svelte-145grbc{border-color:#35e0e8;background-color:#35e0e81a}.code-input.svelte-1xwmszg{border-color:#35e0e81f}.code-input.svelte-1xwmszg:focus{border-color:#35e0e8}.qr-code-image.svelte-1xwmszg,.slider-input.svelte-1xwmszg{border-color:#35e0e81f}.slider-input.svelte-1xwmszg::-webkit-slider-thumb{background-image:linear-gradient(145deg,#35e0e8,#3a7dce);border-color:#35e0e847}.slider-input.svelte-1xwmszg::-webkit-slider-runnable-track{background-image:linear-gradient(to right,#245d99,#35e0e8)}.slider-display.svelte-1xwmszg{color:#35e0e8}.info-message.svelte-1xwmszg{border-color:#35e0e8}.password-requirements.svelte-1xwmszg,.motd-input.svelte-15d5v89{border-color:#35e0e81f}.motd-input.svelte-15d5v89:focus{border-color:#35e0e81f}.motd-display.svelte-15d5v89{border-left-color:#35e0e81f}.item-showcase-container.svelte-2tp35a{background-color:#151f24bf}.more-info-btn.svelte-2tp35a,.more-info-btn.svelte-2tp35a:hover,.share-btn.svelte-2tp35a{border-color:#35e0e81f}.md-root.svelte-1kkpw01{background-color:#151f24}.md-header.svelte-1kkpw01{border-bottom-color:#35e0e81f;background-color:#111b1f}.md-back.svelte-1kkpw01{border-color:#35e0e81f}.md-header-icon.svelte-1kkpw01{color:#35e0e8}.md-thumb.svelte-1kkpw01{background-color:#0b1215}.md-info-bar.svelte-1kkpw01{border-bottom-color:#35e0e81f}.md-creator.svelte-1kkpw01{color:#35e0e8}.md-host-btn.svelte-1kkpw01,.md-icon-btn.svelte-1kkpw01{border-color:#35e0e81f}.md-tabs.svelte-1kkpw01{border-bottom-color:#35e0e81f}.md-tab.active.svelte-1kkpw01{color:#35e0e8;border-bottom-color:#35e0e8}.md-lb-name.svelte-1kkpw01{color:#35e0e8}.md-load-more.svelte-1kkpw01{border-color:#35e0e81f}.md-data-section-title.svelte-1kkpw01{color:#35e0e8;border-top-color:#35e0e81f}.md-data-table.svelte-1kkpw01{background-color:#111b1f;border-color:#35e0e81f}.md-data-table-row.svelte-1kkpw01{border-top-color:#35e0e81f}.md-data-header.svelte-1kkpw01{background-color:#111b1f;border-color:#35e0e81f}.md-data-search-btn.svelte-1kkpw01{border-color:#35e0e81f}.md-data-input.svelte-1kkpw01{background-color:#0b1215;border-color:#35e0e81f}.md-data-input.svelte-1kkpw01:focus{border-color:#35e0e8}.md-ver-row.svelte-1kkpw01{border-top-color:#35e0e81f}.md-ver-btn.svelte-1kkpw01{border-color:#35e0e81f}.mod-root.svelte-1v2j2f2{background-color:#151f24}.mod-header.svelte-1v2j2f2{border-bottom-color:#35e0e81f;background-color:#111b1f}.mod-back.svelte-1v2j2f2{border-color:#35e0e81f}.mod-header-icon.svelte-1v2j2f2{color:#35e0e8}.mod-thumb.svelte-1v2j2f2{background-color:#0b1215}.mod-info-bar.svelte-1v2j2f2{border-bottom-color:#35e0e81f}.mod-creator.svelte-1v2j2f2{color:#35e0e8}.mod-use-btn.svelte-1v2j2f2,.mod-use-btn.svelte-1v2j2f2:hover{background-color:#35e0e8;color:#0b1215}.mod-icon-btn.svelte-1v2j2f2{border-color:#35e0e81f}.style-container.svelte-143xo7r{background-color:#151f24bf}.slider-arrow.svelte-143xo7r{border-color:#35e0e81f}.slider-arrow.left.svelte-143xo7r .slider-arrow-icon.svelte-143xo7r{border-right-color:#35e0e847}.slider-arrow.right.svelte-143xo7r .slider-arrow-icon.svelte-143xo7r{border-left-color:#35e0e847}.swatch.svelte-143xo7r,.btn.svelte-143xo7r{border-color:#35e0e81f}.market-card.svelte-r5taai{background-color:#070c0fcc}.trade-label.inv.svelte-1lqen9w{background-color:#35e0e8;color:#0b1215}.trade-inv-item.svelte-1lqen9w{border-color:#35e0e847}.trade-search.svelte-1lqen9w{border-color:#35e0e81f}.trade-search.svelte-1lqen9w:focus{border-color:#35e0e81f}.gift-root.svelte-g5j1wf{background-color:#151f24}.gift-header.svelte-g5j1wf{border-bottom-color:#35e0e81f;background-color:#111b1f}.gift-back.svelte-g5j1wf{border-color:#35e0e81f}.gift-header-icon.svelte-g5j1wf{color:#35e0e8}.gift-input.svelte-g5j1wf{background-color:#0b1215;border-color:#35e0e81f}.gift-input.svelte-g5j1wf:focus{border-color:#35e0e8}.gift-send.svelte-g5j1wf{background-color:#35e0e8;color:#0b1215}.gift-done.svelte-g5j1wf{border-color:#35e0e81f}.buy-button.svelte-r01l8m:disabled{background-color:#24343a}.buy-button.svelte-r01l8m:disabled:hover{background-color:#24343a}.shop-header.svelte-1gtpoav{border-bottom-color:#35e0e81f}.rp-balance.svelte-1gtpoav,.guest-earned-collect__reward-items.svelte-1hb83uo,.guest-earned-collect__register-btn.svelte-1hb83uo,.guest-earned-collect__register-btn.svelte-1hb83uo:hover{border-color:#35e0e81f}.signup-rewards-list.svelte-1v6b0qm{background-color:#070c0fb3}.signup-rewards-register-button.svelte-1v6b0qm{border-color:#35e0e847!important}.product-row.svelte-14104bb{border-color:#35e0e81f}.product-row.svelte-14104bb:hover{border-color:#35e0e847}.gift-button.svelte-14104bb,.for-you-text.svelte-14104bb,.currency-shop-item.svelte-14104bb,.currency-shop-item.svelte-14104bb:hover{border-color:#35e0e81f}.verification-banner.svelte-165vbjp{background-color:#151f24cc}.spinner.svelte-165vbjp{border-color:#35e0e81f;border-top-color:#35e0e847}.section-title.svelte-e65miw .material-icons.svelte-e65miw{color:#35e0e8}.toggle-switch.svelte-e65miw input:checked+.slider.svelte-e65miw{background-color:#35e0e8;color:#0b1215}.texture-upload-item.svelte-e65miw,.texture-image.svelte-e65miw{border-color:#35e0e81f}.btn-generate.svelte-e65miw{background-color:#35e0e8;color:#0b1215}.btn-generate.svelte-e65miw:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.sgNum.svelte-1i1uhp7,.sgHex.svelte-1i1uhp7{border-color:#35e0e81f}.sgNum.svelte-1i1uhp7:focus,.sgHex.svelte-1i1uhp7:focus{border-color:#35e0e8}.sgSlider.svelte-1i1uhp7::-webkit-slider-thumb{background-color:#35e0e8;color:#0b1215}.sgSlider.svelte-1i1uhp7:focus-visible{outline-color:#35e0e8}.sgColorInput.svelte-1i1uhp7{border-color:#35e0e81f}.sgColorInput.svelte-1i1uhp7:focus-visible{outline-color:#35e0e8}.sgPalette.svelte-sxvv3c{background-color:#0b1215fa;border-color:#35e0e81f}.sgPaletteSearch.svelte-sxvv3c{border-color:#35e0e81f}.sgPaletteSearch.svelte-sxvv3c:focus{border-color:#35e0e8}.sgPaletteItem.active.svelte-sxvv3c,.sgPaletteItem.svelte-sxvv3c:focus-visible{background-color:#35e0e840}.sgEditor.svelte-upgo13{border-color:#35e0e81f}.sgToolbar.svelte-upgo13{border-bottom-color:#35e0e81f}.sgBtn.svelte-upgo13{border-color:#35e0e81f}.sgBtn.svelte-upgo13:focus-visible,.sgCanvas.svelte-upgo13:focus-visible,.sgErrorItem.svelte-upgo13:focus-visible,.sgMenuItem.svelte-upgo13:focus-visible{outline-color:#35e0e8}.sgBtnPrimary.svelte-upgo13{background-color:#35e0e840;border-color:#35e0e899;color:#35e0e8}.sgBtnPrimary.svelte-upgo13:hover:not(:disabled){background-color:#35e0e866}.sgMenu.svelte-upgo13{background-color:#0b1215fa;border-color:#35e0e81f}.sgMenuItem.svelte-upgo13:hover{background-color:#35e0e840}.sgCanvas.svelte-upgo13{background-color:#070c0fe6}.sgOverlay.svelte-upgo13{background-color:#070c0ffa;border-color:#35e0e81f}.sgIoText.svelte-upgo13{border-color:#35e0e81f}.sgIoText.svelte-upgo13:focus{border-color:#35e0e8}.sgFooter.svelte-upgo13{border-top-color:#35e0e81f}.io-action-bar-button.svelte-103lu6x{background-color:#35e0e8;color:#0b1215}.search-input.svelte-103lu6x{border-color:#35e0e81f}.search-input.svelte-103lu6x:focus{border-color:#35e0e8}.io-action-bar-button.svelte-103lu6x:hover,.action-btn.test-btn.svelte-103lu6x,.action-btn.test-btn.svelte-103lu6x:hover{background-color:#35e0e8;color:#0b1215}.skin-manager-table.svelte-103lu6x .table thead th{background-color:#0b1215}.tab-navigation.svelte-103lu6x{border-bottom-color:#35e0e81f}.tab-button.active.svelte-103lu6x{color:#35e0e8;background-color:#35e0e81a}.tab-button.active.svelte-103lu6x:after{background-color:#35e0e8;color:#0b1215}.preview-control-btn.svelte-103lu6x{border-color:#35e0e81f}.preview-control-btn.active.svelte-103lu6x{background-color:#35e0e84d;border-color:#35e0e8}.paint-select.svelte-103lu6x{border-color:#35e0e81f}.paint-select.svelte-103lu6x option.svelte-103lu6x{background-color:#0b1215}.connection.svelte-1fenhdo{background-color:#182429}.consequences.svelte-18wpngg{border-color:#35e0e81f}.loading-spinner.svelte-190e6fj{border-color:#35e0e81f;border-top-color:#35e0e847}.retry-button.svelte-190e6fj{background-color:#35e0e8;color:#0b1215}.benefits-card.svelte-190e6fj,.billing-info.svelte-190e6fj,.subscribe-btn.svelte-190e6fj{border-color:#35e0e81f}.subscribe-btn.svelte-190e6fj:hover{border-color:#35e0e847}.disabled-card.svelte-190e6fj .subscribe-btn.svelte-190e6fj{background-image:linear-gradient(135deg,#24343a,#1d2c32);border-color:#35e0e81f}.disabled-card.svelte-190e6fj .subscribe-btn.svelte-190e6fj:hover,.disabled-indicator.svelte-190e6fj{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.subscribed-btn.svelte-190e6fj{border-color:#35e0e81f}.renew-btn.svelte-190e6fj{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);border-color:#35e0e81f;box-shadow:0 8px 24px #35e0e866,0 4px 8px #0000004d,inset 0 1px #ffffff4d}.renew-btn.svelte-190e6fj:hover{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);box-shadow:0 12px 32px #35e0e880,0 6px 12px #0006,inset 0 1px #fff6;border-color:#35e0e847}.cancel-container.svelte-190e6fj,.cancel-btn.svelte-190e6fj,.cancel-btn.svelte-190e6fj:hover{border-color:#35e0e81f}.wild-offer-notification.svelte-1gcqcwy{background-image:linear-gradient(135deg,#000000f2,#070c0ffa)}.shop-btn.svelte-1gcqcwy,.shop-btn.svelte-1gcqcwy:hover,.player-bound-display.svelte-1nzacef,.player-bound-display.svelte-1nzacef:hover,.login-button.svelte-1nzacef,.login-button.svelte-1nzacef:hover{border-color:#35e0e81f}.data-table.svelte-69sryq thead.svelte-69sryq{background-color:#0b1215}.table-header.svelte-69sryq{color:#35e0e8}.table-header.sortable.svelte-69sryq:hover{background-color:#35e0e81a}.table-header.sortable.sort-asc.svelte-69sryq:after{border-bottom-color:#35e0e8}.table-header.sortable.sort-desc.svelte-69sryq:after{border-top-color:#35e0e8}.table-cell.svelte-69sryq{border-bottom-color:#35e0e81f}.qs-window.svelte-1o11rsf{background-color:#111b1f;border-color:#35e0e81f}.qs-item-preview.svelte-1o11rsf,.qs-values.svelte-1o11rsf,.qs-amount-select.svelte-1o11rsf{border-color:#35e0e81f}.qs-amount-select.svelte-1o11rsf:focus{border-color:#35e0e88c}.jy-filter-bar.svelte-1vqzycn{background-color:#111b1f;border-color:#35e0e81f}.jy-search-input.svelte-1vqzycn,.jy-sort-select.svelte-1vqzycn{background-color:#151f24;border-color:#35e0e81f}.sd-root.svelte-a9j4oe{background-color:#151f24}.sd-header.svelte-a9j4oe{border-bottom-color:#35e0e81f;background-color:#111b1f}.sd-back.svelte-a9j4oe{border-color:#35e0e81f}.sd-header-icon.svelte-a9j4oe{color:#35e0e8}.sd-del.svelte-a9j4oe{border-color:#35e0e81f}.sd-tabs.svelte-a9j4oe{border-bottom-color:#35e0e81f}.sd-tab.active.svelte-a9j4oe{color:#35e0e8;border-bottom-color:#35e0e8}.sd-row.svelte-a9j4oe{background-color:#111b1f;border-color:#35e0e81f}.sd-input.svelte-a9j4oe{background-color:#0b1215;border-color:#35e0e81f}.sd-input.svelte-a9j4oe:focus{border-color:#35e0e8}.sd-primary.svelte-a9j4oe{background-color:#35e0e8;color:#0b1215}.sd-mini.svelte-a9j4oe{border-color:#35e0e81f}.sd-kr.svelte-a9j4oe{background-color:#111b1f}.region-btn.svelte-1gdnqq5{border-color:#35e0e81f}.region-btn.active.svelte-1gdnqq5{background-color:#35e0e826;border-color:#35e0e880;color:#35e0e8}.season-select.svelte-1gdnqq5{border-color:#35e0e81f}.season-select.svelte-1gdnqq5 option.svelte-1gdnqq5{background-color:#0b1215}th.svelte-1gdnqq5{color:#35e0e8}td.svelte-1gdnqq5{border-bottom-color:#35e0e81f}.season-select.svelte-81ueoe{border-color:#35e0e81f}.season-select.svelte-81ueoe option.svelte-81ueoe{background-color:#0b1215}.kc-title.svelte-1xp8pv1{color:#35e0e8}.back-btn.svelte-1xp8pv1{border-color:#35e0e84d}.back-btn.svelte-1xp8pv1:hover{background-color:#35e0e81f;color:#35e0e8}.friend-list.svelte-e2g8p2{background-color:#111b1f;border-right-color:#35e0e81f}.friend-presence-dot.svelte-e2g8p2{border-color:#35e0e81f}.friend-presence-dot.offline.svelte-e2g8p2{background-color:#24343a}.friend-unread.svelte-e2g8p2{background-color:#35e0e8;color:#0b1215}.friend-list-search.svelte-e2g8p2{background-color:#111b1f;border-top-color:#35e0e81f}.conversation-root.svelte-128yn5i{background-color:#151f24}.conversation-header.svelte-128yn5i{border-bottom-color:#35e0e81f;background-color:#111b1f}.conversation-presence-dot.svelte-128yn5i{border-color:#35e0e81f}.conversation-presence-dot.offline.svelte-128yn5i{background-color:#24343a}.conversation-compose.svelte-128yn5i{border-top-color:#35e0e81f;background-color:#111b1f}.conversation-load-earlier.svelte-128yn5i{border-color:#35e0e81f}.conversation-input.svelte-128yn5i{background-color:#0b1215;border-color:#35e0e81f}.conversation-input.svelte-128yn5i:focus{border-color:#35e0e8}.conversation-emoji-button.svelte-128yn5i{background-color:#0b1215;border-color:#35e0e81f}.conversation-emoji-button.svelte-128yn5i:hover:not(:disabled){background-color:#111b1f;color:#35e0e8}.conversation-send-button.svelte-128yn5i{background-color:#35e0e8;color:#0b1215}.conversation-send-button.svelte-128yn5i:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.conversation-send-button.svelte-128yn5i:disabled{background-color:#1d2c32}.friends-root.svelte-u33r8v{background-color:#151f24}.friends-status-dot.svelte-u33r8v{background-color:#24343a}.player-card.svelte-dp3rf9{background-color:#0b1215cc;border-color:#35e0e81f}.player-card.svelte-dp3rf9:hover{background-color:#111b1fcc}.player-card.svelte-dp3rf9:focus-visible{outline-color:#35e0e847}.counterBadge.svelte-fgmdj8{background-color:#35e0e8;color:#0b1215}.territory-map-container.svelte-102279m{background-color:#111b1f;border-color:#35e0e81f}.territory-details-panel.svelte-102279m{border-color:#35e0e81f}.panel-header.svelte-102279m,.leaderboard-entry.svelte-102279m{border-bottom-color:#35e0e81f}.clickable-name.svelte-myp8tq:hover{color:var(--highlight-color, rgb(53, 224, 232))}.view-tab.svelte-myp8tq{border-color:#35e0e81f}.view-tab.active.svelte-myp8tq{background-color:#35e0e833;border-color:#35e0e866}.day-arrow.svelte-myp8tq,.day-input.svelte-myp8tq{border-color:#35e0e81f}.payouts-row.svelte-myp8tq,.payouts-row-header.svelte-myp8tq{border-bottom-color:#35e0e81f}.main-title.svelte-1sr7h97,.card-title.svelte-1sr7h97{color:#35e0e8}.map-badge.svelte-1sr7h97,.mode-badge.svelte-1sr7h97{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.section-title.svelte-1sr7h97{color:#35e0e8;border-left-color:#35e0e8}.rule-icon.svelte-1sr7h97,.tip-title.svelte-1sr7h97{color:#35e0e8}.filter-input.svelte-72bcy3{border-color:#35e0e84d}.filter-input.svelte-72bcy3:focus{border-color:#35e0e8}.post-card.svelte-72bcy3{border-color:#35e0e81f}.looking-for-label.svelte-72bcy3{color:#35e0e8}.req-badge.svelte-72bcy3{border-color:#35e0e81f}.player-clan.clickable-clan.svelte-7h12t9:hover{color:var(--highlight-color, rgb(53, 224, 232))}.tab-bar.svelte-7h12t9{border-bottom-color:#35e0e81f}.tab.active.svelte-7h12t9{border-bottom-color:var(--highlight-color, rgb(53, 224, 232))}.day-arrow.svelte-7h12t9,.day-input.svelte-7h12t9{border-color:#35e0e81f}.page-btn.svelte-7h12t9{background-color:#35e0e833;border-color:#35e0e866}.ct-row.svelte-7h12t9,.ct-header.svelte-7h12t9{border-bottom-color:#35e0e81f}.clickable-name.svelte-7h12t9:hover{color:var(--highlight-color, rgb(53, 224, 232))}.rank-display.svelte-19e82s0{border-color:#35e0e81f}.popup-box.svelte-6dkuug{background-color:#151f24}.moreKrunkerOption.svelte-19783yx{border-color:#35e0e847;background-color:#0b1215}.moreKrunkerOption.svelte-19783yx:hover{border-color:#35e0e847}.emoji-panel.svelte-13g6jqo{background-color:#151f24}.emoji-icon.svelte-13g6jqo{color:#35e0e8}.emoji-item.selected.svelte-13g6jqo,.emoji-item.svelte-13g6jqo:hover{border-color:#35e0e81f}.compose-window.svelte-qxxay9{background-color:#0b1215;border-color:#35e0e81f}.compose-input.svelte-qxxay9{border-color:#35e0e81f}.compose-input.svelte-qxxay9:focus{border-color:#35e0e899}.compose-input-num.svelte-qxxay9{border-color:#35e0e81f}.compose-btn-submit.svelte-qxxay9{background-color:#35e0e8;color:#0b1215}.compose-btn-submit.svelte-qxxay9:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.rewards-container.svelte-1sac6ik{border-color:#35e0e81f}.reward-card.flying.svelte-1sac6ik:after{border-color:#35e0e81f}.card-front.svelte-1sac6ik,.card-back.svelte-1sac6ik{background-color:#070c0fe6}.loading-spinner.svelte-172kpk5{border-color:#35e0e81f;border-top-color:#35e0e8}.socialsStickyFooter.svelte-1ley7u4{border-top-color:#35e0e81f}.pollBadge.svelte-1ley7u4,.pollVote.svelte-1ley7u4{background-color:#35e0e8;color:#0b1215}.eventLink.svelte-1ley7u4{color:#35e0e8;background-color:#35e0e81a}.eventLink.svelte-1ley7u4:hover{background-color:#35e0e833}.dm-emoji-panel.svelte-1ni3kfh{background-color:#151f24;border-color:#35e0e81f}.dm-emoji-header.svelte-1ni3kfh{border-bottom-color:#35e0e81f}.dm-emoji-header-icon.svelte-1ni3kfh{color:#35e0e8}.dm-emoji-thumb.svelte-1ni3kfh{background-color:#0b1215;border-color:#35e0e81f}.sub-tab-panel.svelte-lri212{border-color:#35e0e847}.bundle-card.svelte-lri212{background-color:#070c0f}.bundle-item-req.svelte-lri212{border-color:#35e0e847}.detail-window.svelte-h3kymj{background-color:#0b1215;border-color:#35e0e81f}.detail-head.svelte-h3kymj{border-bottom-color:#35e0e81f}.reply-input.svelte-h3kymj{border-color:#35e0e81f}.reply-input.svelte-h3kymj:focus{border-color:#35e0e880}.reply-btn.svelte-h3kymj{background-color:#35e0e8;color:#0b1215}.map-filter-select.svelte-c92dbh{border-color:#35e0e866}.map-filter-select.svelte-c92dbh:hover{border-color:#35e0e8}.map-filter-select.svelte-c92dbh:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.section-title.svelte-c92dbh{color:#35e0e8;border-left-color:#35e0e8}.day-arrow.svelte-c92dbh{border-color:#35e0e866;color:#35e0e8}.day-arrow.svelte-c92dbh:hover:not(:disabled){background-color:#35e0e833;border-color:#35e0e8}.day-input.svelte-c92dbh{border-color:#35e0e866}.day-input.svelte-c92dbh:focus{border-color:#35e0e8}.no-participation-title.svelte-c92dbh{color:#35e0e8}.page-btn.svelte-c92dbh{background-color:#35e0e833;border-color:#35e0e866}.overlay-content.svelte-jxc66d{background-color:#070c0f;border-color:#35e0e81f}.streams-overlay.svelte-60shhe{border-color:#35e0e81f}.hide-button.svelte-60shhe{background-color:#182429}.hide-button.svelte-60shhe:hover{background-color:#1d2c32}.spinner.svelte-60shhe{border-color:#35e0e81f}.featured-section.svelte-60shhe{background-color:#070c0fe6}.stream-card.svelte-60shhe{background-color:#0b1215cc;border-color:#35e0e81f}.thumbnail.svelte-60shhe{background-color:#0b1215}.thumbnail.svelte-60shhe:before{background-color:#0b1215}.tutorialSidebar.svelte-los391{background-image:linear-gradient(180deg,#111b1ff2,#0b1215f2)}.tutorialSidebar.svelte-los391:before{background-image:linear-gradient(180deg,rgba(17,27,31,.95) 0%,transparent 100%)}.tutorialSidebar.svelte-los391:after{background-image:linear-gradient(0deg,rgba(11,18,21,.95) 0%,transparent 100%)}.tutorialNavItem.svelte-los391{border-bottom-color:#35e0e81f}.matchmakingBarImage.svelte-los391,.inviteFriendsURLImage.svelte-los391,.spinsImage.svelte-los391,.matchmakingBarQuickMatchImage.svelte-los391,.hostFindGameImage.svelte-los391,.hostGameSetupImage.svelte-los391,.challengesImage.svelte-los391,.rankedImage.svelte-los391,.clanCreateImage.svelte-los391,.clanManageImage.svelte-los391,.tradingImage.svelte-los391,.challengeModeImage.svelte-los391,.challengeModeDifferenceImage.svelte-los391{border-color:#35e0e81f}.comment-text.svelte-7miv1g a{color:#35e0e8}.guide-section.svelte-4log2q{background-color:#070c0f}.guide-section-title.svelte-4log2q .material-icons.svelte-4log2q{color:#35e0e8}.guide-key.svelte-4log2q{background-color:#111b1f;border-color:#35e0e81f}.guide-rarity.dark.svelte-4log2q{border-color:#35e0e81f}.match-details.svelte-1irqx9a{border-top-color:#35e0e81f}.table-header.svelte-1irqx9a,.table-cell.svelte-1irqx9a{border-bottom-color:#35e0e81f}.page-btn.svelte-1irqx9a{border-color:#35e0e81f}.page-btn.svelte-1irqx9a:hover:not([disabled]){border-color:#35e0e81f}.currency-reward.svelte-1yk8fym,.gift-button.svelte-rew7ag{border-color:#35e0e81f}.modal-content.svelte-1pf0608{background-color:#111b1f;border-color:#35e0e81f}.price-input.svelte-1pf0608,.fee-breakdown.svelte-1pf0608{border-color:#35e0e81f}.season-banner.svelte-17kea4i{background-color:#35e0e8;color:#0b1215}.challenges-link-icon.svelte-17kea4i,.section-title.svelte-1x46pbz .material-icons.svelte-1x46pbz{color:#35e0e8}.param-chip.svelte-1x46pbz{border-color:#35e0e81f}.add-uniform-btn.svelte-1x46pbz{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.add-uniform-btn.svelte-1x46pbz:hover{background-color:#35e0e84d}.part-block.svelte-1x46pbz,.part-name-input.svelte-1x46pbz{border-color:#35e0e81f}.copy-defaults-btn.svelte-1x46pbz{background-color:#35e0e826;border-color:#35e0e84d;color:#35e0e8}.copy-defaults-btn.svelte-1x46pbz:hover:not(:disabled){background-color:#35e0e84d}.apply-btn.svelte-1x46pbz,.apply-btn.svelte-1x46pbz:hover{background-color:#35e0e8;color:#0b1215}.clear-btn.svelte-1x46pbz{border-color:#35e0e81f}.ph-xp-fill.svelte-da3zva{background-image:linear-gradient(to right,#ff6a0b,#35e0e8)}.survey-notification.svelte-1u0qxrf{background-image:linear-gradient(135deg,#000000f2,#070c0ffa)}.answer-btn.svelte-1u0qxrf{border-color:#35e0e81f}.icon-btn.list.svelte-hk8nq9{background-color:#35e0e8;color:#0b1215}.card-title.svelte-1k16b2z,.view-title.svelte-1k16b2z{color:#35e0e8}.trade-item.svelte-z9tzua,.trade-item-empty.svelte-z9tzua{border-color:#35e0e81f}.bm-card.svelte-dbcods{background-color:#070c0f}.bm-card-icon.svelte-dbcods{border-color:#35e0e847}.bm-locked-btn.svelte-dbcods{background-color:#111b1f}.modal-content.svelte-dbcods{background-color:#111b1f;border-color:#35e0e81f}.price-row.total.svelte-dbcods{border-top-color:#35e0e81f}.sma-dialog.svelte-1veg8cv{background-color:#151f24}.sma-header.svelte-1veg8cv{background-color:#111b1f;border-bottom-color:#35e0e81f}.sma-header-icon.svelte-1veg8cv{color:#35e0e8}.sma-rules.svelte-1veg8cv{background-color:#111b1f;border-color:#35e0e81f}.sma-input.svelte-1veg8cv{background-color:#0b1215;border-color:#35e0e81f}.sma-input.svelte-1veg8cv:focus{border-color:#35e0e8}.sma-map.svelte-1veg8cv{border-color:#35e0e81f}.sma-map.active.svelte-1veg8cv{border-color:#35e0e8;color:#35e0e8}.sma-footer.svelte-1veg8cv{border-top-color:#35e0e81f;background-color:#111b1f}.sma-secondary.svelte-1veg8cv{border-color:#35e0e81f}.sma-primary.svelte-1veg8cv{background-color:#35e0e8;color:#0b1215}.usernames-col.svelte-27udiy{border-color:#35e0e81f}.col-header.svelte-27udiy{border-bottom-color:#35e0e81f}.username-row.svelte-27udiy{border-color:#35e0e81f}.username-row.active.svelte-27udiy{border-color:#35e0e8}.leave-note.svelte-27udiy{border-left-color:#35e0e8}.username-active.svelte-27udiy{color:#35e0e8}#menuWindow.eterno .store-tabs.svelte-v85byk{background-color:#111b1fad}.store-tab.svelte-v85byk:hover,.store-tab-active.svelte-v85byk,.store-tab-active.svelte-v85byk:hover{border-bottom-color:#35e0e847}.register-notification.svelte-t1w66d{background-image:linear-gradient(135deg,#000000e6,#070c0ff2)}.table.svelte-12kndpz th.svelte-12kndpz,.table.svelte-12kndpz td.svelte-12kndpz{border-bottom-color:#35e0e81f}.pagination.svelte-12kndpz{border-top-color:#35e0e81f}.pagination-btn.svelte-12kndpz{background-color:#35e0e8;color:#0b1215}.pagination-btn.svelte-12kndpz:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.loading-spinner.svelte-1tteuk0{border-color:#35e0e81f}.load-more-btn.svelte-1tteuk0{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-1tteuk0:hover{background-color:#35e0e84d}.load-more-btn.svelte-1tteuk0:active{background-color:#35e0e866}.modal-content.svelte-1k428dj{background-color:#111b1f;border-color:#35e0e81f}.st-root.svelte-kqehnu{background-color:#151f24}.st-header.svelte-kqehnu{border-bottom-color:#35e0e81f;background-color:#111b1f}.st-back.svelte-kqehnu{border-color:#35e0e81f}.st-header-icon.svelte-kqehnu{color:#35e0e8}.st-row.svelte-kqehnu{background-color:#111b1f;border-color:#35e0e81f}.st-row.svelte-kqehnu:hover{background-color:#151f24}.st-invite.svelte-kqehnu:hover{background-color:#111b1f}.st-mini.svelte-kqehnu{border-color:#35e0e81f}.st-section-title.svelte-kqehnu{color:#35e0e8;border-top-color:#35e0e81f}.st-input.svelte-kqehnu{background-color:#0b1215;border-color:#35e0e81f}.st-input.svelte-kqehnu:focus{border-color:#35e0e8}.st-primary.svelte-kqehnu{background-color:#35e0e8;color:#0b1215}.card-title.svelte-raovk7,.view-title.svelte-raovk7{color:#35e0e8}.profile-detail-root.svelte-1hghrmf{background-color:#151f24}.profile-detail-header-bar.svelte-1hghrmf{border-bottom-color:#35e0e81f;background-color:#111b1f}.profile-detail-back.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-header-icon.svelte-1hghrmf{color:#35e0e8}.profile-detail-identity.svelte-1hghrmf,.profile-detail-avatar.svelte-1hghrmf{background-color:#111b1f;border-color:#35e0e81f}.profile-detail-online-dot.svelte-1hghrmf{background-color:#24343a;border-color:#35e0e81f}.profile-detail-creation-thumb.svelte-1hghrmf{background-color:#0b1215}.profile-detail-clan.svelte-1hghrmf{color:#35e0e8}.profile-detail-info-row.svelte-1hghrmf{border-top-color:#35e0e81f}.profile-detail-follow-box.svelte-1hghrmf{background-color:#111b1f}.profile-detail-follow-box.svelte-1hghrmf:hover{background-color:#151f24}.profile-detail-action.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-action.active.svelte-1hghrmf{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.profile-detail-action.active.svelte-1hghrmf i.svelte-1hghrmf{color:#35e0e8}.profile-detail-xp-strip.svelte-1hghrmf{border-top-color:#35e0e81f}.profile-detail-level-badge.svelte-1hghrmf,.profile-detail-xp-fill.svelte-1hghrmf{background-color:#35e0e8;color:#0b1215}.profile-detail-stat.svelte-1hghrmf,.profile-detail-class.svelte-1hghrmf,.profile-detail-raid-row.svelte-1hghrmf{background-color:#0b1215;border-color:#35e0e81f}.profile-detail-sales-panel.svelte-1hghrmf,.profile-detail-badges-panel.svelte-1hghrmf,.profile-detail-creations-panel.svelte-1hghrmf{background-color:#111b1f;border-color:#35e0e81f}.profile-detail-section-header.svelte-1hghrmf,.profile-detail-sales-header.svelte-1hghrmf{color:#35e0e8}.profile-detail-range-btn.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-range-btn.active.svelte-1hghrmf{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.profile-detail-listing-card.svelte-1hghrmf{background-color:#0b1215}.profile-detail-listing-card.svelte-1hghrmf:hover{background-color:#111b1f}.profile-detail-listing-thumb.svelte-1hghrmf{background-color:#070c0f}.profile-detail-title-item.svelte-1hghrmf,.profile-detail-badge-item.svelte-1hghrmf{background-color:#111b1f}.profile-detail-creation-card.svelte-1hghrmf{background-color:#0b1215}.profile-detail-creation-card.svelte-1hghrmf:hover{background-color:#111b1f}.modal-content.svelte-1ugt6n9{background-color:#111b1f;border-color:#35e0e81f}.section-title.svelte-awmvtb .material-icons.svelte-awmvtb{color:#35e0e8}.sound-info.svelte-awmvtb{border-color:#35e0e81f}.btn-replace.svelte-awmvtb{background-color:#35e0e8cc}.btn-replace.svelte-awmvtb:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.item-preview.svelte-1lii2o,.kid-display-container.svelte-lbi007{border-color:#35e0e81f}.kid-display-benefits.svelte-lbi007 h3.svelte-lbi007:after{background-color:#35e0e8;color:#0b1215}.partnership-info.svelte-lbi007{background-color:#35e0e81a;border-left-color:#35e0e8}.sgNode.svelte-wbsbny{background-color:#0b1215f5;border-color:#35e0e81f}.sgNode.selected.svelte-wbsbny{border-color:#35e0e8;box-shadow:0 0 0 1px #35e0e8,0 2px 10px #00000073}.sgNode.isOutput.svelte-wbsbny .sgNodeHeader.svelte-wbsbny{background-color:#35e0e840}.sgNodeHeader.svelte-wbsbny{border-bottom-color:#35e0e81f}.sgSelect.svelte-wbsbny,.sgText.svelte-wbsbny{border-color:#35e0e81f}.sgSelect.svelte-wbsbny option.svelte-wbsbny{background-color:#0b1215}.sgSelect.svelte-wbsbny:focus,.sgText.svelte-wbsbny:focus{border-color:#35e0e8}.sgCheck.svelte-wbsbny:focus-visible{outline-color:#35e0e8}.sgUnset.svelte-wbsbny{border-color:#35e0e81f}.sgUnset.svelte-wbsbny:hover:not(:disabled){border-color:#35e0e847}.sgUnset.svelte-wbsbny:focus-visible{outline-color:#35e0e8}.simple-tabs.svelte-1oqd18e{border-bottom-color:#35e0e81f}.simple-tab-active.svelte-1oqd18e{border-bottom-color:#35e0e8}.simple-tab-active.svelte-1oqd18e .simple-tab-icon.svelte-1oqd18e,.simple-tab-active.svelte-1oqd18e .simple-tab-label.svelte-1oqd18e{color:#35e0e8}.load-more-button.svelte-23mnz9{background-color:#35e0e833;border-color:#35e0e880;color:#35e0e8}.load-more-button.svelte-23mnz9:hover{background-color:#35e0e84d}.loading-spinner.svelte-gh77t9{border-color:#35e0e81f;border-top-color:#35e0e847}.retry-button.svelte-gh77t9{background-color:#35e0e8;color:#0b1215}.filter-input.svelte-1rpti7l{border-color:#35e0e84d}.filter-input.svelte-1rpti7l:focus{border-color:#35e0e8}.spin-promo-badge.svelte-5s5opu{border-color:#35e0e847}.no-offer-container.svelte-m5s1iy{background-color:#070c0fcc}.refresh-button.svelte-m5s1iy{background-image:linear-gradient(135deg,#ff5722,#ff9800,#35e0e8);border-color:#35e0e81f}.refresh-button.svelte-m5s1iy:hover:not(:disabled){border-color:#35e0e847}.optin__hero-fade.svelte-ga1m1g{background-image:linear-gradient(to top,#070c0ff2,#14141400 45%)}.report-root.svelte-18p16wl{background-color:#151f24}.report-header.svelte-18p16wl{border-bottom-color:#35e0e81f;background-color:#111b1f}.report-back.svelte-18p16wl{border-color:#35e0e81f}.report-input.svelte-18p16wl{background-color:#0b1215;border-color:#35e0e81f}.report-done.svelte-18p16wl{border-color:#35e0e81f}.trade-window.svelte-kfskmv{background-color:#151f24}.trade-message.svelte-kfskmv{border-color:#35e0e81f}.trade-message.svelte-kfskmv:focus{border-color:#35e0e81f}.trade-submit.disabled.svelte-kfskmv{background-color:#1d2c32}.profile-header.svelte-18dbnt3{border-bottom-color:#35e0e81f}.dynamic-shop-item.svelte-dif8c,.dynamic-shop-item.svelte-dif8c:hover,.dynamic-row.svelte-dif8c{border-color:#35e0e81f}.dynamic-row.svelte-dif8c:hover{border-color:#35e0e847}.next-step-hint.svelte-dif8c{color:#35e0e8}.dyn-buy-button.svelte-dif8c{border-color:#35e0e81f}.dyn-buy-button.virtual.svelte-dif8c{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);box-shadow:0 4px 12px #35e0e84d,0 2px 4px #0003,inset 0 1px #fff3}.dyn-buy-button.svelte-dif8c:hover:not(:disabled){border-color:#35e0e81f}.dyn-buy-button.svelte-dif8c:disabled{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.craft-recipe-card.svelte-ggnigm{background-color:#070c0f}.craft-icon.svelte-ggnigm,.craft-item-req.svelte-ggnigm{border-color:#35e0e847}.craft-item-req.missing.svelte-ggnigm{border-color:#35e0e847!important}.craft-timer.svelte-ggnigm{background-color:#151f24}.item-wrapper.selected.svelte-18k2d4k{box-shadow:0 0 0 2px #35e0e8}.section-title.svelte-gygf75 .material-icons.svelte-gygf75{color:#35e0e8}.btn-replace.svelte-gygf75{background-color:#35e0e8cc}.btn-replace.svelte-gygf75:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.highlight-name.svelte-1w0uz1r{background-color:#35e0e81a;border-color:#35e0e84d}.logo-image.svelte-1w0uz1r,.banner-color-swatch.svelte-1w0uz1r,.swatch.svelte-1w0uz1r,.swatch-fill.svelte-1w0uz1r,.text-notification.svelte-nrigjp,.share-btn.svelte-1524ito{border-color:#35e0e81f}.bubble-row.sent.svelte-jj9ljg .bubble.svelte-jj9ljg{background-color:#35e0e8;color:#0b1215}.quantity-button.svelte-jsgxg6:disabled{background-color:#24343a;border-color:#35e0e81f}.section-title.svelte-1rov8jm .material-icons.svelte-1rov8jm{color:#35e0e8}.tool-btn.svelte-1rov8jm,.attach-btn.svelte-1rov8jm{border-color:#35e0e81f}.tool-btn.active.svelte-1rov8jm{border-color:#35e0e8;background-color:#35e0e840}.fields.svelte-1rov8jm input[type=number].svelte-1rov8jm,.fields.svelte-1rov8jm select.svelte-1rov8jm,.fields.svelte-1rov8jm input[type=color].svelte-1rov8jm{border-color:#35e0e81f}.window-header.svelte-4fhlo6{border-bottom-color:#35e0e81f;background-color:#111b1f}.window-header-icon.svelte-4fhlo6,.section-title.svelte-wfs5t6 .material-icons.svelte-wfs5t6{color:#35e0e8}.form-select.svelte-wfs5t6{border-color:#35e0e81f}.form-select.svelte-wfs5t6:focus{border-color:#35e0e8}.form-select.svelte-wfs5t6 option.svelte-wfs5t6{background-color:#0b1215}.dye-color-input.svelte-wfs5t6{border-color:#35e0e81f}.dye-opacity-slider.svelte-wfs5t6::-webkit-slider-thumb{background-color:#35e0e8;border-color:#35e0e81f;color:#0b1215}.form-input.svelte-iy81sy,.form-select.svelte-iy81sy{border-color:#35e0e81f}.form-input.svelte-iy81sy:focus,.form-select.svelte-iy81sy:focus{border-color:#35e0e8}.form-select.svelte-iy81sy option.svelte-iy81sy{background-color:#0b1215}.add-all-button.svelte-1rj22es:disabled{background-color:#24343a;border-color:#35e0e81f}.lottery-window.theme-easter.svelte-1rj22es,.theme-easter.svelte-1rj22es .title-separator.svelte-1rj22es,.theme-easter.svelte-1rj22es .cost-column.themed-box.svelte-1rj22es{outline-color:#35e0e81f}.lottery-window.theme-neutral.svelte-1rj22es:after{border-color:#35e0e81f}.theme-neutral.svelte-1rj22es .draw-timer.svelte-1rj22es{border-color:#35e0e81f;background-color:#182429a6}.theme-neutral.svelte-1rj22es .cost-column.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .grand-prize-container.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .additional-prizes-box.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .last-draw-winners.themed-box.svelte-1rj22es{border-color:#35e0e81f;background-color:#18242980}.painted-badge-swatch.svelte-n0vhtc,.painted-inline-swatch.svelte-n0vhtc{border-color:#35e0e847}.milestone-number.svelte-6hxhl0{background-color:#182429}.milestone-bonus.svelte-6hxhl0{background-color:#151f24}.milestone-bonus.claimable.svelte-6hxhl0{background-color:#182429}.progression-summary.svelte-6hxhl0{border-top-color:#35e0e81f}.progression-details.svelte-6hxhl0{border-color:#35e0e81f}.offer-holder.svelte-1agthf7,.offer-holder.svelte-1agthf7:hover{background-color:#111b1f}.offer-name.svelte-1agthf7{color:#35e0e8}.filter-input.svelte-49w24t,.filter-select.svelte-49w24t{border-color:#35e0e84d}.filter-input.svelte-49w24t:focus,.filter-select.svelte-49w24t:focus{border-color:#35e0e8}.email-change-section.svelte-126q2op{border-top-color:#35e0e81f}.change-email-btn.svelte-126q2op{border-color:#35e0e8}.sidebar-tab.svelte-berov0{background-color:#151f24}.sidebar-tab.svelte-berov0:hover,.sidebar-tab.active.svelte-berov0,.sidebar-tab-badge.svelte-berov0{background-color:#35e0e8;color:#0b1215}.items-detail-root.svelte-dmu4q2{background-color:#151f24}.items-detail-header-bar.svelte-dmu4q2{border-bottom-color:#35e0e81f;background-color:#111b1f}.items-detail-back.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-header-icon.svelte-dmu4q2{color:#35e0e8}.items-detail-header-btn.svelte-dmu4q2,.preview-action-btn.svelte-dmu4q2{border-color:#35e0e81f}.preview-action-btn.svelte-dmu4q2:hover{border-color:#35e0e847}.preview-action-btn.active.svelte-dmu4q2{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.items-detail-wear-slider.svelte-dmu4q2,.items-detail-instance-overlay.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-paint-swatch.svelte-dmu4q2{border-color:#35e0e847}.items-detail-tabs-panel.svelte-dmu4q2{background-color:#111b1f;border-color:#35e0e81f}.items-detail-creator-link.svelte-dmu4q2{color:#35e0e8}.items-detail-stats-section.svelte-dmu4q2{border-top-color:#35e0e81f}.items-detail-stats-header.svelte-dmu4q2{color:#35e0e8}.items-detail-range-btn.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-range-btn.active.svelte-dmu4q2{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.items-detail-owner-row.svelte-dmu4q2{border-bottom-color:#35e0e81f}.items-detail-owner-name.svelte-dmu4q2:hover{color:#35e0e8}.items-detail-instance-table.svelte-dmu4q2 th.svelte-dmu4q2{background-color:#111b1f;border-bottom-color:#35e0e81f}.items-detail-instance-table.svelte-dmu4q2 td.svelte-dmu4q2,.items-detail-listing-row.svelte-dmu4q2{border-bottom-color:#35e0e81f}.items-detail-listing-seller.svelte-dmu4q2:hover,.no-clan-title.svelte-51j5cz,.clan-benefits.svelte-51j5cz h3.svelte-51j5cz{color:#35e0e8}.clan-benefits.svelte-51j5cz li.svelte-51j5cz:before{color:#35e0e8}.map-filter-select.svelte-51j5cz{border-color:#35e0e866}.map-filter-select.svelte-51j5cz:hover{border-color:#35e0e8}.map-filter-select.svelte-51j5cz:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.section-title.svelte-51j5cz{color:#35e0e8;border-left-color:#35e0e8}.day-arrow.svelte-51j5cz{border-color:#35e0e866;color:#35e0e8}.day-arrow.svelte-51j5cz:hover:not(:disabled){background-color:#35e0e833;border-color:#35e0e8}.day-input.svelte-51j5cz{border-color:#35e0e866}.day-input.svelte-51j5cz:focus{border-color:#35e0e8}.view-all-btn.svelte-51j5cz{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.view-all-btn.svelte-51j5cz:hover{background-color:#35e0e84d}.page-btn.svelte-51j5cz{background-color:#35e0e833;border-color:#35e0e866}.historical-day.svelte-51j5cz{border-color:#35e0e81f}.day-header.svelte-51j5cz{border-bottom-color:#35e0e81f}.day-label.svelte-51j5cz{color:#35e0e8}.clan-side.comparison-clan.no-comparison.svelte-51j5cz,.clan-side.svelte-51j5cz .clan-logo-small.svelte-51j5cz{border-color:#35e0e81f}.stat-row.svelte-51j5cz{border-bottom-color:#35e0e81f}.no-participation-title.svelte-51j5cz,.eligible-maps.svelte-51j5cz h3.svelte-51j5cz{color:#35e0e8}.eligible-maps.svelte-51j5cz li.svelte-51j5cz{background-color:#35e0e81a;border-color:#35e0e84d}.game-announcement.svelte-1m80xxc{border-color:#35e0e81f}.game-announcement.svelte-1m80xxc:before{border-bottom-color:#35e0e847}.ga-bundle.svelte-1m80xxc{border-color:#35e0e81f}.ga-bundle.svelte-1m80xxc:hover,.ga-action-btn.svelte-1m80xxc,.ga-action-btn.svelte-1m80xxc:hover,.ga-action-btn.disabled.svelte-1m80xxc:hover{border-color:#35e0e847}.login-button.svelte-16z1lxi{background-color:#070c0f;border-color:#35e0e847}.terms-privacy-notice.svelte-16z1lxi a.svelte-16z1lxi{color:#35e0e8}.item-wrapper.selected.svelte-zhgogl{box-shadow:0 0 0 2px #35e0e8}.loading-spinner.svelte-zhgogl{border-color:#35e0e81f}.load-more-btn.svelte-zhgogl{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-zhgogl:hover{background-color:#35e0e84d}.load-more-btn.svelte-zhgogl:active{background-color:#35e0e866}.tab.svelte-1o3qul6:hover,.tab-active.svelte-1o3qul6,.tab-active.svelte-1o3qul6:hover{border-bottom-color:#35e0e847}.trading-column-header.svelte-1r9fijr{border-bottom-color:#35e0e81f}.confirm-box.svelte-1r9fijr,.start-box.svelte-1r9fijr{background-color:#151f24;border-color:#35e0e81f}.start-input.svelte-1r9fijr{border-color:#35e0e81f}.start-input.svelte-1r9fijr:focus{border-color:#35e0e81f}.section-title.svelte-4e4ust .material-icons.svelte-4e4ust{color:#35e0e8}.texture-settings.svelte-4e4ust{border-color:#35e0e81f}.toggle-switch.svelte-4e4ust input:checked+.slider.svelte-4e4ust{background-color:#35e0e8;color:#0b1215}.form-select.svelte-4e4ust{border-color:#35e0e81f}.form-select.svelte-4e4ust:focus{border-color:#35e0e8}.form-select.svelte-4e4ust option.svelte-4e4ust{background-color:#0b1215}.texture-upload-item.svelte-4e4ust{border-color:#35e0e81f}.uploading-badge.svelte-4e4ust{background-color:#35e0e8cc}.texture-image.svelte-4e4ust{border-color:#35e0e81f}.btn-replace.svelte-4e4ust{background-color:#35e0e8cc}.btn-replace.svelte-4e4ust:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.item-wrapper.selected.svelte-1l3mtrv{box-shadow:0 0 0 2px #35e0e8}.news-item.svelte-1ult4vg{border-left-color:#35e0e8}.news-item.svelte-1ult4vg a{color:#35e0e8}.menu-container.svelte-mqcul7{background-color:#070c0f}.menu-item.active.svelte-mqcul7{border-bottom-color:#35e0e847}button.svelte-mqcul7{background-color:#35e0e8;color:#0b1215}button.svelte-mqcul7:hover{box-shadow:0 0 60px #35e0e875}.start-button.svelte-mqcul7{background-color:#35e0e8;color:#0b1215}.start-button[disabled].svelte-mqcul7{background-color:#1d2c32}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7{background-color:#0b1215;border-color:#35e0e8;box-shadow:0 0 #35e0e833}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7:hover{box-shadow:0 0 0 2px #35e0e833}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7:checked{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.paint-container.svelte-10qrqvt{background-color:#151f24bf}.slider-arrow.svelte-10qrqvt{border-color:#35e0e81f}.slider-arrow.left.svelte-10qrqvt .slider-arrow-icon.svelte-10qrqvt{border-right-color:#35e0e847}.slider-arrow.right.svelte-10qrqvt .slider-arrow-icon.svelte-10qrqvt{border-left-color:#35e0e847}.swatch.svelte-10qrqvt{border-color:#35e0e81f}.swatch.locked.selected.svelte-10qrqvt{border-color:#35e0e847}.swatch-fill.svelte-10qrqvt,.btn.svelte-10qrqvt{border-color:#35e0e81f}.inventory-filter.svelte-ga3en0{background-color:#111b1f;border-color:#35e0e81f}.filter-header.svelte-ga3en0{background-color:#111b1f}.reset-btn.svelte-ga3en0,.reset-btn.svelte-ga3en0:hover,.expand-btn.svelte-ga3en0,.expand-btn.svelte-ga3en0:hover{background-color:#24343a}.filter-content.svelte-ga3en0{border-top-color:#35e0e81f}.search-input.svelte-ga3en0,.season-select.svelte-ga3en0,.sort-select.svelte-ga3en0,.category-select.svelte-ga3en0{background-color:#151f24;border-color:#35e0e81f}.filter-tabs.svelte-ga3en0{border-bottom-color:#35e0e81f}.filter-tab.svelte-ga3en0{background-color:#151f24}.filter-tab.svelte-ga3en0:hover{background-color:#182429}.filter-tab.active.svelte-ga3en0{background-color:#35e0e8;color:#0b1215}.toggle-all-btn.svelte-ga3en0{background-color:#1d2c32}.toggle-all-btn.svelte-ga3en0:hover{background-color:#24343a}.filter-panel.svelte-ga3en0{background-color:#111b1f}.filter-item-wrapper.svelte-ga3en0{border-color:#35e0e81f}.filter-item.svelte-ga3en0:hover{background-color:#151f24}.only-btn.svelte-ga3en0{background-color:#1d2c32}.only-btn.svelte-ga3en0:hover{background-color:#24343a}.profile-search-form.svelte-fo44ss{background-color:#0b1215;border-color:#35e0e81f}.profile-search-form.svelte-fo44ss:focus-within{border-color:#35e0e8}.follow-root.svelte-1ef5zjv{background-color:#151f24}.follow-header.svelte-1ef5zjv{border-bottom-color:#35e0e81f;background-color:#111b1f}.follow-back.svelte-1ef5zjv{border-color:#35e0e81f}.follow-header-icon.svelte-1ef5zjv{color:#35e0e8}.follow-tabs.svelte-1ef5zjv{border-bottom-color:#35e0e81f;background-color:#111b1f}.follow-tab.active.svelte-1ef5zjv{border-bottom-color:#35e0e8}.follow-row.svelte-1ef5zjv{background-color:#0b1215cc;border-color:#35e0e81f}.follow-btn.svelte-1ef5zjv{background-color:#35e0e8;color:#0b1215}.follow-btn.following.svelte-1ef5zjv,.price-tag.svelte-1q06uv7{border-color:#35e0e81f}.buy-button.svelte-1q06uv7:disabled{background-color:#24343a}.buy-button.svelte-1q06uv7:disabled:hover{background-color:#24343a}.io-code-display.svelte-owjkr{border-color:#35e0e81f}.music-player.svelte-1ei19qi{background-color:#0b1215f2}.music-btn.svelte-1ei19qi{border-color:#35e0e847}.section-title.svelte-16sjsp2 .material-icons.svelte-16sjsp2{color:#35e0e8}.toggle-switch.svelte-16sjsp2 input:checked+.slider.svelte-16sjsp2{background-color:#35e0e8;color:#0b1215}.form-select.svelte-16sjsp2,.form-input.svelte-16sjsp2{border-color:#35e0e81f}.form-select.svelte-16sjsp2:focus,.form-input.svelte-16sjsp2:focus{border-color:#35e0e8}.form-select.svelte-16sjsp2 option.svelte-16sjsp2{background-color:#0b1215}.texture-upload-item.svelte-16sjsp2{border-color:#35e0e81f}.uploading-badge.svelte-16sjsp2{background-color:#35e0e8cc}.texture-image.svelte-16sjsp2,.post-item-card.svelte-10yvzvw,.post-item-card.svelte-10yvzvw:hover{border-color:#35e0e81f}.post-content-thumb.svelte-10yvzvw{background-color:#0b1215}.post-content-action.svelte-10yvzvw{color:#35e0e8}.post-follow-btn.svelte-10yvzvw{background-color:#35e0e8;color:#0b1215}.post-follow-btn.svelte-10yvzvw:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.postResRo.svelte-10yvzvw,.postResRoD.svelte-10yvzvw{border-bottom-color:#35e0e81f}.post-text.svelte-10yvzvw a{color:#35e0e8}.post-footer.svelte-10yvzvw{border-top-color:#35e0e81f}.vote-btn.svelte-10yvzvw{border-color:#35e0e81f}.vote-btn.svelte-10yvzvw:hover:not(:disabled){border-color:#35e0e847}.vote-btn.svelte-10yvzvw:disabled{border-color:#35e0e81f}.vote-btn-done.svelte-10yvzvw{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.vote-btn-done.svelte-10yvzvw:hover:not(:disabled){background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.owned-count-overlay.svelte-9ff17r{border-color:#35e0e81f}.section-title.svelte-3rvofx .material-icons.svelte-3rvofx{color:#35e0e8}.form-textarea.svelte-3rvofx{border-color:#35e0e81f}.form-textarea.svelte-3rvofx:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.automatic-attributes.svelte-3rvofx{border-color:#35e0e81f}.automatic-attributes-header.svelte-3rvofx{background-color:#35e0e81a;border-bottom-color:#35e0e81f}.automatic-attributes-title.svelte-3rvofx .material-icons.svelte-3rvofx{color:#35e0e8}.loot-updated-name.svelte-1ydnong{color:var(--highlight-color, rgb(53, 224, 232))}.popup.svelte-1wz7ymp{background-color:#151f24}.popup.translucent.svelte-1wz7ymp{background-color:#151f24bf}.popup.slim-border.svelte-1wz7ymp{border-color:#35e0e81f}.sort-select.svelte-111gya4{background-color:#151f24;border-color:#35e0e81f}.sort-select.svelte-111gya4:hover{border-color:#35e0e847}.sort-select.svelte-111gya4:focus{border-color:#35e0e8}.searching-indicator.svelte-111gya4{color:#35e0e8}.searching-indicator.svelte-111gya4:before{border-color:#35e0e8}.clan-view-root.svelte-5j94nj{background-color:#151f24}.clan-view-header-bar.svelte-5j94nj{border-bottom-color:#35e0e81f;background-color:#111b1f}.clan-view-back.svelte-5j94nj{border-color:#35e0e81f}.clan-view-header-icon.svelte-5j94nj{color:#35e0e8}.clan-view-identity.svelte-5j94nj{background-color:#111b1f;border-color:#35e0e81f}.clan-view-logo.svelte-5j94nj,.clan-view-logo-placeholder.svelte-5j94nj{background-color:#111b1f}.clan-view-info.svelte-5j94nj{border-top-color:#35e0e81f}.clan-view-link.svelte-5j94nj{color:#35e0e8}.clan-view-role-header.svelte-5j94nj{color:#35e0e8;border-bottom-color:#35e0e81f}.social-search-input.svelte-1dyc40r{background-color:#0b1215;border-color:#35e0e81f}.social-search-input.svelte-1dyc40r:focus{border-color:#35e0e8}.social-search-btn.svelte-1dyc40r{background-color:#0b1215;border-color:#35e0e81f}.social-search-btn.svelte-1dyc40r:hover{background-color:#111b1f;border-color:#35e0e81f}.social-compose-btn.svelte-1dyc40r,.social-compose-btn.svelte-1dyc40r:hover{background-color:#35e0e8;color:#0b1215}.item-detail-container.svelte-olnzsm{border-left-color:#35e0e81f}.item-detail-header.svelte-olnzsm{border-bottom-color:#35e0e81f}.item-showcase-section.svelte-olnzsm{border-right-color:#35e0e81f}.ownership-count.svelte-olnzsm,.full-details-btn.svelte-olnzsm{border-color:#35e0e81f}.tabs-section.svelte-olnzsm{border-bottom-color:#35e0e81f}.loading-spinner.svelte-olnzsm{border-color:#35e0e81f}.load-more-btn.svelte-olnzsm{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-olnzsm:hover{background-color:#35e0e84d}.load-more-btn.svelte-olnzsm:active{background-color:#35e0e866}.stats-controls.svelte-olnzsm{border-bottom-color:#35e0e81f}.days-back-select.svelte-olnzsm{border-color:#35e0e81f}.days-back-select.svelte-olnzsm:hover:not(:disabled){border-color:#35e0e81f}.days-back-select.svelte-olnzsm:focus{border-color:#35e0e8}.mission-briefing.svelte-1849bws{background-image:linear-gradient(135deg,#0b1215,#111b1f)}.mission-header.svelte-1849bws{background-image:linear-gradient(135deg,#000,#0b1215)}.abort-btn.svelte-1849bws{background-image:linear-gradient(135deg,#151f24,#1d2c32);border-color:#35e0e847}.abort-btn.svelte-1849bws:hover{background-image:linear-gradient(135deg,#1d2c32,#24343a)}.deploy-btn.svelte-1849bws{border-color:#35e0e8}th.svelte-1enb567{color:#35e0e8}td.svelte-1enb567{border-bottom-color:#35e0e81f}.page-button.svelte-1enb567{border-color:#35e0e8}.page-button.svelte-1enb567:hover:not(:disabled){background-color:#35e0e833}.page-button.svelte-1enb567:disabled{border-color:#35e0e84d}.page-indicator.svelte-1enb567{color:#35e0e8}.item-display-container.svelte-1p13km7{border-color:#35e0e81f}.section-title.svelte-sr5bk2 .material-icons.svelte-sr5bk2{color:#35e0e8}.tool-btn.svelte-sr5bk2,.attach-btn.svelte-sr5bk2{border-color:#35e0e81f}.tool-btn.active.svelte-sr5bk2{border-color:#35e0e8;background-color:#35e0e840}.fields.svelte-sr5bk2 input[type=number].svelte-sr5bk2{border-color:#35e0e81f}.wallet-root.svelte-l0gwpc{background-color:#151f24}.wallet-catalog-btn.svelte-l0gwpc{border-color:#35e0e81f}.currency-card.svelte-l0gwpc{background-image:linear-gradient(135deg,#111b1f,#182429);border-color:#35e0e81f}.items-grid.svelte-l0gwpc{background-color:#111b1f}.main-button.svelte-whnh40{background-color:#151f24;border-color:#35e0e81f}.main-button.svelte-whnh40:disabled,.main-button-disabled.svelte-whnh40{background-color:#0b1215}.main-button.svelte-whnh40:disabled:hover,.main-button-disabled.svelte-whnh40:hover{background-color:#0b1215}.main-button.svelte-whnh40:hover:not(:disabled):not(.main-button-disabled){background-color:#182429}.main-button-accept-secondary.svelte-whnh40{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.sort-btn.active.svelte-9t0md3{background-color:#35e0e833;color:#35e0e8;border-color:#35e0e8}.month-select.svelte-9t0md3 option.svelte-9t0md3{background-color:#0b1215}.section-title.svelte-1qb7o10 .material-icons.svelte-1qb7o10{color:#35e0e8}.paint-mode-btn.svelte-1qb7o10{border-color:#35e0e81f}.paint-mode-btn.svelte-1qb7o10:hover:not(:disabled){border-color:#35e0e847}.paint-mode-btn.active.svelte-1qb7o10{background-color:#35e0e826;border-color:#35e0e8;color:#35e0e8}.paint-color-input.svelte-1qb7o10{border-color:#35e0e81f}.paint-preview-base.svelte-1qb7o10{border-top-color:#35e0e81f}.preview-base-input.svelte-1qb7o10{border-color:#35e0e81f}.preview-base-input.svelte-1qb7o10:focus{border-color:#35e0e8}.preview-base-quick.svelte-1qb7o10{border-color:#35e0e81f}.preview-base-quick.svelte-1qb7o10:hover:not(:disabled){border-color:#35e0e8;color:#35e0e8}.buy-button.svelte-1ov1s5h{border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:hover:not(:disabled){border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:disabled{background-image:linear-gradient(135deg,#24343a,#1d2c32);border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:disabled:hover{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.ownership-count.svelte-kchhu3{border-color:#35e0e81f} -`});var zu,Bu=w(()=>{zu=`:root{--kute-cyan: #35e0e8;--kute-cyan-soft: rgba(53, 224, 232, .14);--kute-pink: #f5479b;--kute-pink-soft: rgba(245, 71, 155, .16);--kute-bg: #0b1215;--kute-panel: #111b1f;--kute-raised: #182429;--kute-line: rgba(53, 224, 232, .12);--kute-line-strong: rgba(53, 224, 232, .28);--kute-text: #eaf7f8;--kute-muted: rgba(234, 247, 248, .62);--kute-faint: rgba(234, 247, 248, .38);--kute-radius: 8px;--kute-radius-lg: 14px;--kute-paw: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23f5479b'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-paw-cyan: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%230b1215'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-ears: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 46 14'%3E%3Cpath fill='rgba(11,18,21,.78)' d='M1 14 9 1l8 13Zm28 0 8-13 8 13Z'/%3E%3Cpath fill='rgba(245,71,155,.7)' d='M5.5 14 9 7.5l3.5 6.5Zm28 0 3.5-6.5 3.5 6.5Z'/%3E%3C/svg%3E");--kute-paw-solid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%2335e0e8'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-grad: linear-gradient(90deg, var(--kute-cyan), var(--kute-pink));--div-black: rgba(11, 18, 21, .78);--div-grey: rgba(53, 224, 232, .07);--div-shadow: 0 2px 10px rgba(0, 0, 0, .5);--blue: var(--kute-cyan);--highlight-color: var(--kute-cyan);--highlight-hover-color: #5ce9ef;--card-bg-color: rgba(24, 36, 41, .7);--dark-bg-color: rgba(11, 18, 21, .5);--border-subtle: 1px solid var(--kute-line);--border-radius-sm: 6px;--border-radius-md: var(--kute-radius);--border-radius-lg: var(--kute-radius-lg);--box-shadow-lg: 0 18px 44px rgba(0, 0, 0, .6)}::selection{background:var(--kute-pink);color:#fff}a,a:visited{color:var(--kute-cyan)}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background-color:transparent;box-shadow:none}::-webkit-scrollbar-thumb{background:var(--kute-line-strong);border:3px solid transparent;border-radius:999px;background-clip:padding-box;box-shadow:none}::-webkit-scrollbar-thumb:hover{background-color:var(--kute-cyan)}#windowHolder.popupWin{background-color:#050a0cb8}#menuWindow.dark{background-color:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6,0 0 0 1px #0006}.settingsHeader{background-color:var(--kute-bg);border-bottom:1px solid var(--kute-line)}.setSugBox2{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);transition:background-color .15s,border-color .15s}.setSugBox2:hover{border-width:1px;background-color:var(--kute-raised);border-color:var(--kute-cyan)}.advancedSlider{background-color:#24343a;border-radius:999px}.advancedSlider:before{border-radius:50%;background:#fff var(--kute-paw) center / 20px no-repeat}input:checked+.advancedSlider{background-color:var(--kute-cyan)}input:checked+.advancedSlider:before{background-image:var(--kute-paw-cyan)}input:checked+.advancedSlider:after{color:var(--kute-bg)}.hostPresetBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px}.hostPresetBtn:hover{background-color:var(--kute-pink);color:#fff}#settingsTabLayout{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius);overflow:hidden}.settingTab{background-color:transparent;color:var(--kute-muted);border-bottom:3px solid transparent;transition:color .15s,background-color .15s}#menuWindow.dark .settingTab{color:var(--kute-muted)}.settingTab:hover{border-bottom:3px solid var(--kute-line-strong);background-color:var(--kute-cyan-soft)}#menuWindow.dark .settingTab:hover{color:var(--kute-text)}.dark .tabANew,.dark .tabANew:hover{border-bottom:3px solid var(--kute-cyan)!important;background-color:var(--kute-cyan-soft)}#menuWindow.dark .tabANew{color:var(--kute-cyan)}.setHed,.setHedS{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-left:3px solid var(--kute-cyan);border-radius:var(--kute-radius);transition:background-color .15s,border-color .15s}.setHed:hover,.setHedS:hover{background-color:#1d2c32;border-left-color:var(--kute-pink)}.setHed .plusOrMinus{color:var(--kute-cyan)}.setBodH{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.settName,.settNameSmall{border-bottom:1px solid var(--kute-line);color:var(--kute-muted)!important}.settNameIn:hover{background-color:var(--kute-cyan-soft)!important;color:var(--kute-text)!important}.settingsBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px;transition:background-color .15s,color .15s}#menuWindow.dark .settingsBtn{color:var(--kute-bg)}.settingsBtn:hover,#menuWindow.dark .settingsBtn:hover{background-color:var(--kute-pink);color:#fff}#settSearch,.inputGrey2,.sliderVal,#loadoutName,#loadoutSelect,#itemSearch{background:var(--kute-raised);color:var(--kute-text);border:1px solid var(--kute-line);border-radius:6px;outline:none;transition:border-color .15s}#settSearch:focus,.inputGrey2:focus,.sliderVal:focus,#loadoutName:focus,#loadoutSelect:focus{border-color:var(--kute-cyan)}#loadoutName{background:var(--kute-raised)!important;border:1px solid var(--kute-line)!important}.sliderVal{border-color:var(--kute-line-strong)!important}#settSearch::placeholder,#loadoutName::placeholder{color:var(--kute-faint)}.inputGrey2 option,#loadoutSelect option{background:var(--kute-panel);color:var(--kute-text)}#loadoutToolbar{background-color:var(--kute-panel);border-bottom:1px solid var(--kute-line)}.loadoutTab{background-color:transparent;transition:background-color .15s,color .15s}.loadoutTab:hover{background-color:var(--kute-cyan-soft)}.loadoutTabSel,.loadoutTabSel:hover{background-color:var(--kute-cyan-soft);border-bottom-color:var(--kute-cyan);color:var(--kute-cyan)!important}#charPreviewSlot{background:radial-gradient(circle at 50% 42%,rgba(53,224,232,.1),transparent 62%);border-right:1px solid var(--kute-line)}.custContainer,.custSubContainer{background-color:var(--kute-panel);border-color:var(--kute-line);box-shadow:none}.custContainer{border-radius:var(--kute-radius);transition:border-color .15s,background-color .15s}.custContainer.contCanSelect:hover{background-color:var(--kute-raised);border-color:var(--kute-cyan)}.custSubContainer{border-radius:0 var(--kute-radius) 0 var(--kute-radius)}.custClear{border-radius:6px}.custBack{background:var(--kute-raised);border-radius:6px}.custBack:hover{background:var(--kute-cyan-soft)}.classCard{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-radius:var(--kute-radius);overflow:hidden;transition:border-color .15s}.classCard:hover{border-color:var(--kute-cyan)}.classXPBar{background-color:var(--kute-bg)}.clsXPBarC{background-color:var(--kute-cyan)}.loadoutBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px}.loadoutBtn:hover{background-color:var(--kute-pink);color:#fff}.slider,.slider2{background-color:#24343a;border-radius:999px}.slider:before,.slider2:before{border-radius:50%;width:22px;background-color:#fff;background-image:var(--kute-paw);background-size:14px;background-position:center;background-repeat:no-repeat}.slider:before{left:5px}input:checked+.slider,input:checked+.slider2,input:checked+.sliderSml,input:checked+.sliderCent{background-color:var(--kute-cyan)}input:checked+.slider:before{transform:translate(28px);background-image:var(--kute-paw-cyan)}input:checked+.slider2:before{transform:translate(20px);background-image:var(--kute-paw-cyan)}input:focus+.slider,input:focus+.slider2,input:focus+.sliderSml{box-shadow:0 0 0 2px var(--kute-cyan-soft)}.sliderSml,.sliderCent{background-color:#24343a}.sliderM{background-color:#24343a;height:8px;border-radius:999px;margin-bottom:0}.sliderM::-webkit-slider-thumb{width:22px;height:22px;border-radius:50%;background:#fff var(--kute-paw) center / 14px no-repeat;box-shadow:0 0 0 3px var(--kute-cyan),0 2px 6px #00000080}#playerHeaderEl{background:var(--kute-grad) bottom / 100% 1px no-repeat,linear-gradient(#070c0feb,#070c0fbd)}.ph-item[class*=svelte-],.nav-item[class*=svelte-]{border-radius:12px;transition:background-color .15s}.ph-item[class*=svelte-]:hover,.nav-item[class*=svelte-]:hover{background-color:var(--kute-cyan-soft)}.nav-item[class*=svelte-] .material-icons,.nav-item[class*=svelte-] .material-icons-outlined{color:var(--kute-cyan)}#menuItemContainer .menuItem{position:relative;border-radius:10px;transition:transform .15s,background-color .15s}#menuItemContainer .menuItem:hover{background:linear-gradient(90deg,var(--kute-cyan-soft),transparent 85%);transform:translate(6px)}#menuItemContainer .menuItem:hover .menuItemTitle{color:var(--kute-cyan)}#menuItemContainer .menuItem:not(.bpItem):not(.dsItem):before{content:"";position:absolute;left:-18px;top:50%;width:14px;height:14px;background:var(--kute-paw-solid) center / contain no-repeat;opacity:0;transform:translate(-4px,-50%) rotate(-20deg);transition:opacity .15s,transform .15s;pointer-events:none}#menuItemContainer .menuItem:not(.bpItem):not(.dsItem):hover:before{opacity:1;transform:translateY(-50%) rotate(-20deg)}#menuItemContainer .menuItemIcon{color:var(--kute-cyan)}#menuItemContainer .sidebarDivider{background:linear-gradient(90deg,var(--kute-line-strong),transparent);border:0}@container not style(--kute-classic-menu: 1){#subLogoButtons>.actionCard{background:var(--kute-panel);border-color:rgba(var(--card-rgb),.45);border-radius:var(--kute-radius);box-shadow:none;transition:background-color .15s,border-color .15s}#subLogoButtons>.actionCard:hover{background:var(--kute-raised);border-color:rgb(var(--card-rgb))}#subLogoButtons>.actionCard .cardIcon{color:rgb(var(--card-rgb))}.popRailCard[class*=svelte-]{background:var(--kute-panel);border-color:var(--kute-line-strong);border-radius:var(--kute-radius);transition:background-color .15s,border-color .15s}.popRailCard[class*=svelte-]:hover{background:var(--kute-raised);border-color:var(--kute-cyan)}.popRailPlay[class*=svelte-]{color:var(--kute-cyan)}#customizeButton{border-radius:var(--kute-radius)}}.window-header[class*=svelte-],#loadoutToolbar,.profile-detail-header-bar[class*=svelte-],.instructionsHeader,.settingsHeader{background-image:var(--kute-grad);background-size:100% 1px;background-position:bottom;background-repeat:no-repeat}:is(#windowHolder,#popupHolder,#app) .button{border-radius:var(--kute-radius);background-color:#0b121599}:is(#windowHolder,#popupHolder,#app) .button:hover,:is(#windowHolder,#popupHolder,#app) .button:active{border-color:var(--kute-cyan)!important}:is(#windowHolder,#popupHolder,#app) .button:not([class*=buttonR]):not([class*=buttonG]):not([class*=buttonP]):not([class*=buttonO]):not([class*=buttonB]):not(:hover){border-color:var(--kute-line-strong)}#chatList{background-color:#0b12158c;border-radius:var(--kute-radius) var(--kute-radius) 0 0}#chatInputHolder{border-radius:0 0 var(--kute-radius) var(--kute-radius)}#chatInput{background-color:#182429cc;border:1px solid var(--kute-line);border-radius:6px}#chatInput:focus{border-color:var(--kute-cyan);outline:none}#instructionsUpdate{background:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6;overflow:hidden}.instructionsHeader,.instructionsTabs{background-color:var(--kute-panel);box-shadow:none}.instructionsHeader{border-bottom:1px solid var(--kute-line)}.instructionsTab{border-top:1px solid var(--kute-line);transition:background-color .15s,color .15s}.instructionsTab:hover{background-color:var(--kute-cyan-soft);border-color:var(--kute-line);color:var(--kute-cyan)}#ammoHolder,#bottomLeftPlayer,#timerHolder,.statIcon,#leaderboardHolder,#teamScores,#chatInputHolder{border-radius:var(--kute-radius)}#ammoHolder .greyInner,.statIcon .greyInner,#timerInner,#leaderContainer,#bottomLeftPlayerLeft,#bottomLeftPlayerRight,#bottomLeftTeamType,#bottomLeftTeamName,#bottomLeftHealthBar{border-radius:6px}#bottomLeftPlayerLeft{overflow:hidden}#ammoHolder,#bottomLeftPlayer{box-shadow:inset 0 -2px 0 var(--kute-cyan)}#bottomLeftPlayer{position:relative}#ammoHolder:before,#bottomLeftPlayer:before{content:"";position:absolute;top:-12px;width:46px;height:14px;background:var(--kute-ears) no-repeat center / contain;pointer-events:none}#ammoHolder:before{right:20px}#bottomLeftPlayer:before{left:19px}#reloadMsg{border-radius:6px}#ingameFPS,#pingText{color:var(--kute-cyan)}.bigMenTabs{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.bigMenTab:hover{border-bottom:3px solid var(--kute-line-strong)}.bigMenTabA,.bigMenTabA:hover{border-bottom:3px solid var(--kute-cyan);color:var(--kute-cyan)}#popupContent,#bundlePop,#premiumPop,#policePopC,#guidePopup,#chargeModalCard,#spinHistoryPop,.confPremiumPop,.vouchPop,.rankedPop,.promoPop,.pfpPop,.dropsPop,.accountCreatePop,.imagePop,.badgePop,.imageNewPop,.importPop,.disconnectPop,.eventPop,.bp-generic-pop,.bp-purchase-pop,.spinErrorPop,.charmErrorPop,.spinHistoryStatsPop,.loadingPop,.autoLoadPop,.editMapPop,.responsePop,.ticketPop,.dxp-pop,.abTestsPop,.registerGiftPop,.rankedQueueModal,.rankedMenuModal,.communityPopup,.tutorialPopup,.defaultModal,.krunkCupJoinModal,.krunkCupViewModal,.exchangeModal,.itemsModal,.moreKrunkerPopup,.infoPop,.contPop,.io-popup-container,.wallet-root[class*=svelte-]{background-color:var(--kute-bg);border-radius:var(--kute-radius-lg);box-shadow:0 0 0 1px var(--kute-line),0 24px 60px #000000a6}.twitchPop,.nftPop,.confPop,.clientExitPop,#confPurchItemPop,.metaPop,.polConfPop{border-color:var(--kute-line);border-radius:var(--kute-radius-lg)}.hostHeader,#stickyHostH,.imageListHeader,.imageListFooter,.spinHistoryHeader,.popHeader,.dropsPopHeader,.serverHeader,#itemSearchH,#bindsHeader,.tooltip2,.crftRcpeCrd,.bundleCrd,.bundle-card[class*=svelte-],.moreKrunkerOption[class*=svelte-],.items-grid[class*=svelte-],.filter-panel[class*=svelte-],.territory-map-container[class*=svelte-],.data-table[class*=svelte-] thead{background-color:var(--kute-panel)}#initLoader,.clsStatXPBar,.elo-progress-bar-bg{background-color:var(--kute-bg)}.featured-section[class*=svelte-],.stream-card[class*=svelte-],.emoji-panel[class*=svelte-],.verification-banner[class*=svelte-],.music-player[class*=svelte-],.market-card[class*=svelte-],.rank-popup-content{background-color:var(--kute-panel)}.hide-button[class*=svelte-],.kuteTopButton{background-color:var(--kute-raised)}.hide-button[class*=svelte-]:hover,.kuteTopButton:hover{background-color:#1d2c32}.contactsHeader{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-left:3px solid var(--kute-cyan);border-radius:var(--kute-radius)}.bpInfoBalloon,.bpInfoBalloon:after,.io-separator span{background-color:var(--kute-bg)}.bpClaimB,.bp-unlock-header,.io-button,.mapLICat,#tradeChatInput,.tradeChatItem,.main-button[class*=svelte-]{background-color:var(--kute-raised)}.io-button:hover,.mapLICat:hover,.main-button[class*=svelte-]:hover:not(:disabled):not(.main-button-disabled){background-color:#1d2c32}.main-button[class*=svelte-],.moreKrunkerOption[class*=svelte-],.territory-map-container[class*=svelte-],.territory-details-panel[class*=svelte-],.inventory-filter[class*=svelte-],.filter-item-wrapper[class*=svelte-]{border-color:var(--kute-line)}.moreKrunkerOption[class*=svelte-]:hover{border-color:var(--kute-cyan)}.inventory-filter[class*=svelte-],.filter-header[class*=svelte-]{background-color:var(--kute-panel)}.currency-card[class*=svelte-]{background:var(--kute-panel);border-color:var(--kute-line)}.search-input[class*=svelte-],.season-select[class*=svelte-],.sort-select[class*=svelte-],.category-select[class*=svelte-],.filter-tab[class*=svelte-],.filter-item[class*=svelte-]:hover,.reset-btn[class*=svelte-],.expand-btn[class*=svelte-],.toggle-all-btn[class*=svelte-],.only-btn[class*=svelte-]{background:var(--kute-raised);border-color:var(--kute-line)}.filter-tab[class*=svelte-]:hover,.reset-btn[class*=svelte-]:hover,.expand-btn[class*=svelte-]:hover,.toggle-all-btn[class*=svelte-]:hover,.only-btn[class*=svelte-]:hover{background:#1d2c32}.filter-tab.active[class*=svelte-]{background:var(--kute-cyan);color:var(--kute-bg)}.setSugBox,.viewAllUpdates,.bSliderBtn,.bundleSliderBtn,.dropsSliderBtn,.challHeadrI,.sub-tab-panel[class*=svelte-]{border-color:var(--kute-line-strong)}.challMapCrd:not(.chalCardH){border-color:var(--kute-line-strong)}.guideHeader,.guideSubH,.mailFrom,.speedRunItem,#hostActionH,#custStreakSelH{border-color:var(--kute-line)}.store-tabs[class*=svelte-],.tabs-container[class*=svelte-],#menuWindow.eterno .store-tabs[class*=svelte-]{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.store-tab[class*=svelte-]:hover,.tab[class*=svelte-]:hover{border-bottom-color:var(--kute-line-strong)}.store-tab-active[class*=svelte-],.store-tab-active[class*=svelte-]:hover,.tab-active[class*=svelte-],.tab-active[class*=svelte-]:hover,.tabHeader.selected{border-bottom-color:var(--kute-cyan);color:var(--kute-cyan)}#menuWindow.eterno{background-color:var(--kute-bg);border-color:var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6;animation:none}.followBut,#hostMenuBtn,.chargeModalBtn,.redVouchBtn,.searchBtn,.hostToggle,.subPassChg,.updDisN,#partnerProgB,#partnrUpBtn,#findGameBtn,.joinBtn,.openCollection,#spinMultiToggleBtn,.clanSubmitBtn,.main-button-accept-secondary[class*=svelte-]{background-color:var(--kute-cyan);border-color:var(--kute-cyan);color:var(--kute-bg)}input:checked+.optCheck{background-color:var(--kute-cyan)}.quickJoin,.followBack,.io-input-field:focus{border-color:var(--kute-cyan)}.io-section-header:after{background:var(--kute-cyan)}.counterBadge[class*=svelte-]{background:var(--kute-pink);color:#fff}.wallet-catalog-btn[class*=svelte-] i{color:var(--kute-cyan)}.stack-collapse-fab[class*=svelte-]{background:var(--kute-cyan)}.card-title[class*=svelte-],.view-title[class*=svelte-],.table-header[class*=svelte-],.no-clan-title[class*=svelte-],.no-participation-title[class*=svelte-],.clan-benefits[class*=svelte-] h3,.clan-benefits[class*=svelte-] li:before,.eligible-maps[class*=svelte-] h3,.day-label[class*=svelte-],.day-arrow[class*=svelte-],.view-all-btn[class*=svelte-]{color:var(--kute-cyan)}.section-title[class*=svelte-]{border-left-color:var(--kute-cyan);color:var(--kute-cyan)}.category-card[class*=svelte-],.map-filter-select[class*=svelte-],.day-arrow[class*=svelte-],.day-input[class*=svelte-],.data-table[class*=svelte-] thead tr{border-color:var(--kute-line-strong)}.category-card[class*=svelte-]:hover,.map-filter-select[class*=svelte-]:hover,.map-filter-select[class*=svelte-]:focus,.day-input[class*=svelte-]:focus{border-color:var(--kute-cyan)}.table-header.sortable.sort-asc[class*=svelte-]:after{border-bottom-color:var(--kute-cyan)}.table-header.sortable.sort-desc[class*=svelte-]:after{border-top-color:var(--kute-cyan)}.table-header.sortable[class*=svelte-]:hover,.data-table[class*=svelte-] tbody tr.clickable:hover,.data-table[class*=svelte-] tbody tr.highlight-row,.day-arrow[class*=svelte-]:hover:not(:disabled),.day-map[class*=svelte-],.eligible-maps[class*=svelte-] li,.view-all-btn[class*=svelte-],.page-btn[class*=svelte-],.view-tab.active[class*=svelte-]{background:var(--kute-cyan-soft);border-color:var(--kute-line-strong)}:is(#popupHolder,#app) .socialModal{background-color:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6}:is(#popupHolder,#app) .social-content{border-radius:var(--kute-radius-lg)}:is(#popupHolder,#app) .window-header{background:var(--kute-panel);border-bottom:1px solid var(--kute-line)}:is(#popupHolder,#app) .window-header-icon{color:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab{background:var(--kute-panel);transition:background-color .15s}:is(#popupHolder,#app) .sidebar-tab:hover{background:var(--kute-raised)}:is(#popupHolder,#app) .sidebar-tab:hover .sidebar-tab-icon,:is(#popupHolder,#app) .sidebar-tab:hover .sidebar-tab-label{color:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab.active{background:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab.active .sidebar-tab-icon,:is(#popupHolder,#app) .sidebar-tab.active .sidebar-tab-label{color:var(--kute-bg)}:is(#popupHolder,#app) .simple-tabs{border-bottom-color:var(--kute-line)}:is(#popupHolder,#app) .simple-tab-active{border-bottom-color:var(--kute-cyan)}:is(#popupHolder,#app) .simple-tab-active .simple-tab-icon,:is(#popupHolder,#app) .simple-tab-active .simple-tab-label{color:var(--kute-cyan)}:is(#popupHolder,#app) .social-search-input,:is(#popupHolder,#app) .social-search-btn,:is(#popupHolder,#app) .profile-search-form,:is(#popupHolder,#app) .conversation-input,:is(#popupHolder,#app) .conversation-emoji-button{background:var(--kute-raised);border-color:var(--kute-line);border-radius:6px}:is(#popupHolder,#app) .social-search-input:focus,:is(#popupHolder,#app) .profile-search-form:focus-within,:is(#popupHolder,#app) .conversation-input:focus{border-color:var(--kute-cyan)}:is(#popupHolder,#app) .social-search-btn:hover,:is(#popupHolder,#app) .conversation-emoji-button:hover:not(:disabled){background:#1d2c32;border-color:var(--kute-line-strong);color:var(--kute-cyan)}:is(#popupHolder,#app) .social-compose-btn,:is(#popupHolder,#app) .post-follow-btn,:is(#popupHolder,#app) .conversation-send-button{background:var(--kute-cyan);border-radius:6px;transition:background-color .15s}:is(#popupHolder,#app) .social-compose-btn:hover,:is(#popupHolder,#app) .post-follow-btn:hover:not(:disabled),:is(#popupHolder,#app) .conversation-send-button:hover:not(:disabled){background:var(--kute-pink)}:is(#popupHolder,#app) .social-compose-icon,:is(#popupHolder,#app) .social-compose-label,:is(#popupHolder,#app) .post-follow-btn i,:is(#popupHolder,#app) .conversation-send-button{color:var(--kute-bg)}:is(#popupHolder,#app) .conversation-send-button:disabled{background:#24343a;color:var(--kute-faint)}:is(#popupHolder,#app) .post-card{background:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .post-card-clickable:hover{background:var(--kute-raised)}:is(#popupHolder,#app) .post-item-card{background:#18242999;border-color:var(--kute-line);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .post-item-card:hover{background:var(--kute-raised);border-color:var(--kute-cyan)}:is(#popupHolder,#app) .postGameRes{background-color:var(--kute-bg);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .postResRo,:is(#popupHolder,#app) .postResRoD{border-bottom-color:var(--kute-line)}:is(#popupHolder,#app) .post-content-action{color:var(--kute-cyan)}:is(#popupHolder,#app) .vote-btn,:is(#popupHolder,#app) .share-btn{background:var(--kute-raised);border-color:var(--kute-line)}:is(#popupHolder,#app) .vote-btn:hover:not(:disabled),:is(#popupHolder,#app) .share-btn:hover{background:#1d2c32;border-color:var(--kute-line-strong)}:is(#popupHolder,#app) .comment-btn:hover{background:var(--kute-cyan-soft)}:is(#popupHolder,#app) .vote-btn-done,:is(#popupHolder,#app) .vote-btn-done:hover:not(:disabled){background:var(--kute-cyan);border-color:var(--kute-cyan)}:is(#popupHolder,#app) .vote-btn-done .vote-btn-icon,:is(#popupHolder,#app) .vote-btn-done .vote-btn-label,:is(#popupHolder,#app) .vote-btn-done .vote-btn-count{color:var(--kute-bg)}:is(#popupHolder,#app) .friends-root,:is(#popupHolder,#app) .conversation-root{background:var(--kute-bg)}:is(#popupHolder,#app) .friend-list{background:var(--kute-panel);border-right:1px solid var(--kute-line)}:is(#popupHolder,#app) .friend-item:hover{background:#35e0e80f}:is(#popupHolder,#app) .friend-item.selected{background:var(--kute-cyan-soft);border-left-color:var(--kute-cyan)}:is(#popupHolder,#app) .friend-presence-dot{border-color:var(--kute-panel)}:is(#popupHolder,#app) .friend-unread{background:var(--kute-pink);color:#fff}:is(#popupHolder,#app) .friend-list-search{background:var(--kute-raised);border-top:1px solid var(--kute-line)}:is(#popupHolder,#app) .conversation-header,:is(#popupHolder,#app) .conversation-compose{background:var(--kute-panel);border-color:var(--kute-line)}:is(#popupHolder,#app) .conversation-presence-dot{border-color:var(--kute-panel)}:is(#popupHolder,#app) .conversation-load-earlier{background:var(--kute-raised);border-color:var(--kute-line)}:is(#popupHolder,#app) .conversation-day-divider:before,:is(#popupHolder,#app) .conversation-day-divider:after{background:var(--kute-line)}:is(#popupHolder,#app) .bubble-row.sent .bubble{background:var(--kute-cyan)}:is(#popupHolder,#app) .bubble-row.sent .bubble,:is(#popupHolder,#app) .bubble-row.sent .bubble-time,:is(#popupHolder,#app) .bubble-row.sent .bubble-status-ok{color:var(--kute-bg)}:is(#popupHolder,#app) .bubble-row.received .bubble{background:var(--kute-raised)}#app .profile-detail-root{background:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6}#app .profile-detail-header-bar{background:var(--kute-panel);border-bottom-color:var(--kute-line)}#app .profile-detail-header-icon,#app .profile-detail-section-header,#app .profile-detail-sales-header{color:var(--kute-cyan)}#app .profile-detail-back,#app .profile-detail-action,#app .profile-detail-range-btn{background:var(--kute-raised);border-color:var(--kute-line)}#app .profile-detail-back:hover,#app .profile-detail-action:hover:not(:disabled){background:#1d2c32}#app .profile-detail-action.active,#app .profile-detail-action.active i{background:var(--kute-cyan-soft);border-color:var(--kute-line-strong);color:var(--kute-cyan)}#app .profile-detail-range-btn.active{background:var(--kute-cyan);border-color:var(--kute-cyan);color:var(--kute-bg)}#app .profile-detail-identity,#app .profile-detail-sales-panel,#app .profile-detail-badges-panel,#app .profile-detail-creations-panel{background:var(--kute-panel);border-color:var(--kute-line);border-radius:var(--kute-radius)}#app .profile-detail-avatar{background:var(--kute-raised);border-color:var(--kute-line-strong)}#app .profile-detail-online-dot{border-color:var(--kute-panel)}#app .profile-detail-follow-box,#app .profile-detail-title-item,#app .profile-detail-badge-item{background:var(--kute-raised)}#app .profile-detail-follow-box:hover{background:#1d2c32;border-color:var(--kute-line-strong)}#app .profile-detail-stat,#app .profile-detail-class,#app .profile-detail-raid-row,#app .profile-detail-listing-card,#app .profile-detail-creation-card{background:var(--kute-panel);border-color:var(--kute-line);border-radius:var(--kute-radius)}#app .profile-detail-listing-card:hover,#app .profile-detail-creation-card:hover{background:var(--kute-raised)}#app .profile-detail-level-badge,#app .profile-detail-xp-fill{background:var(--kute-cyan)}#app .profile-detail-level-badge{color:var(--kute-bg)}#app .profile-detail-xp-bar{background:var(--kute-raised)} -`});var ei={};A(ei,{default:()=>Tb});var Mb,Qr,Tb,ti=w(()=>{"use strict";D();Nu();Bu();Mb=_u+zu,Qr=class{constructor(){this.sheet=null,u.settings.toggleKuteCss=e=>this.toggle(e),this.toggle(!0)}toggle(e){if(!e){this.sheet?.replaceSync("");return}this.sheet||(this.sheet=new CSSStyleSheet,document.adoptedStyleSheets=[this.sheet,...document.adoptedStyleSheets]),this.sheet.replaceSync(Mb)}},Tb=new Qr});var ai={};A(ai,{setFrameEnd:()=>Mn,takeFrameWorkMs:()=>ri});function ri(){if(ss.length<10)return 0;let s=ss.sort((t,o)=>t-o);ss=[];let e=s.slice(0,Math.ceil(s.length*.9));return e.reduce((t,o)=>t+o,0)/e.length}function Nb(s){return function(e){e!==Hu&&(Hu=e,qu++>0&&(Ku=performance.now(),ju.port2.postMessage(0))),s(e)}}function _b(s,e){Lo<0&&(Lo=e),ns++;let t=e-Lo;if(ts*Lb?rs+1:0,rs>=2&&u.frameLimiter!=="viz"&&(is=!0),ns=0,Lo=e}function Uu(){!is||!Cn?.hardFlip||(is=!1,ns=0,rs=0,Lo=-1)}function Bb(s){let e;for(s>200?e=1e3/(s*1.0055):e=1e3/s;performance.now()e?Sn=t+e:Sn+=e}function zb(s){$n=s,ii?.(s)}function Gu(s){if(ii!==null&&!ni)return Hb(s);let e=Cn===null?0:Cn.gameFpsLimit;if(!(e>0)){oi=0;let o=++Ib%Rb;return o>=Pb?En(s):(o===0&&(qu=0),En(Nb(s)))}let t=Number(e);return En(function(o){t!==oi&&(oi=t,is=!1,ns=0,rs=0,Lo=-1),o!==Ou&&(Ou=o,is?Bb(t):_b(t,o)),s(o)})}function Hb(s){ni=!0;let e=Gu(t=>{$n=t,s(t)});return ni=!1,Du===$n&&Fu(si),Du=$n,si=En(zb),e}function Mn(s){ii=s,s===null&&Fu(si)}var En,Fu,Ab,Lb,Cn,Rb,Pb,Ib,qu,Hu,Ku,ss,ju,Sn,Ou,oi,is,Lo,ns,rs,ii,si,$n,Du,ni,as=w(()=>{"use strict";D();En=window.requestAnimationFrame,Fu=window.cancelAnimationFrame,Ab=2e3,Lb=1.15,Cn=null,Rb=256,Pb=12,Ib=0,qu=0,Hu=-1,Ku=0,ss=[],ju=new MessageChannel;ju.port1.onmessage=()=>{ss.length<512&&ss.push(performance.now()-Ku)};Ne.then(()=>{Cn=u.settings.data});Sn=0,Ou=-1,oi=0,is=!1,Lo=-1,ns=0,rs=0;document.addEventListener("pointerlockchange",Uu);window.addEventListener("resize",Uu);ii=null,si=0,$n=-1,Du=-2,ni=!1;window.requestAnimationFrame=Gu});var Tn=we((jx,Ob)=>{Ob.exports="data:image/webp;base64,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"});var ci={};A(ci,{default:()=>Db});var Wu,li,Db,di=w(()=>{"use strict";Wu=ue(Tn(),1),li=class{constructor(){if(!document.querySelector("#mainMenuUIMount"))return;let e=document.createElement("style");e.id="kute_logoBadgeCSS",e.textContent=` +void main() { outColor = texture(uLabel, vUv); }`;Vr=new Float32Array(4096),Ru=0});var Iu={};A(Iu,{FrameRecorder:()=>no,InputProbe:()=>ns,TaskProbe:()=>ro});var no,ns,ro,Sn=w(()=>{"use strict";no=class{constructor(e=12e4){this.samples=new Float32Array(e),this.count=0,this.stored=0,this.last=-1,this.first=-1}frame(e){this.last>=0&&(this.count++,this.storedt[Math.min(t.length-1,Math.floor(h*t.length))],r=n(.5),i=Math.max(4*r,e),a=0,l=0,c=0;for(let h of t)a+=h,h>i&&(l++,c+=h-r);let d=Math.max(.001,a/1e3);return{frames:this.count,seconds:o,fps:this.count/o,meanMs:a/this.stored,p50:r,p95:n(.95),p99:n(.99),p999:n(.999),maxMs:t[t.length-1],hitches:l,hitchesPerSec:l/d,stallMs:c/d}}},ns=class{constructor(){this.waits=new Float32Array(16384),this.events=0,this.packets=0,this.onMove=e=>{if(document.pointerLockElement===null)return;let t=e.getCoalescedEvents(),o=t.length>0?t[0].timeStamp:e.timeStamp;this.waits[this.events%this.waits.length]=performance.now()-o,this.events++,this.packets+=Math.max(1,t.length)}}start(){this.events=0,this.packets=0,window.addEventListener("pointermove",this.onMove,{capture:!0,passive:!0})}stop(){window.removeEventListener("pointermove",this.onMove,!0);let e=Math.min(this.events,this.waits.length),t=this.waits.slice(0,e).sort();return{events:this.events,packets:this.packets,p99:e>0?t[Math.min(e-1,Math.floor(e*.99))]:null,max:e>0?t[e-1]:null}}},ro=class{constructor(){this.delays=[],this.timer=0,this.sent=0,this.channel=new MessageChannel,this.channel.port1.onmessage=e=>{this.delays.push(performance.now()-e.data)}}start(){this.delays=[],this.sent=0;let e=performance.now()+10;this.timer=setInterval(()=>{this.sent++;let t=performance.now();this.channel.port2.postMessage(Math.min(t,e)),e=t+10},10)}stop(){clearInterval(this.timer);let e=[...this.delays].sort((t,o)=>t-o);return{sent:this.sent,ran:e.length,p99:e.length?e[Math.min(e.length-1,Math.floor(e.length*.99))]:null,max:e.length?e[e.length-1]:null}}}});var zu={};function Ze(s,e){let t=Number(En.get(s));return En.has(s)&&Number.isFinite(t)?t:e}function Qr(s){window.chrome.webview.postMessage(`bench-finish ${JSON.stringify(s)}`)}function Ab(){let s=document.createElement("canvas");s.style.cssText="position:fixed;inset:0;width:100vw;height:100vh;display:block",document.body.append(s);let e=Nu>0?["Kute is testing this PC",`client test ${$b} of ${Nu}`,"this takes a moment, nothing to do for you"]:[],t=Yr(s,_u,e);t.resize(window.innerWidth*devicePixelRatio,window.innerHeight*devicePixelRatio);let o=Zr.length>0?Array.from({length:Math.max(1,Cb)},()=>Zr).flat():[null],n=[],r=0,i=performance.now(),a=null,l=new ro,c=Ze("cap",0),d=i,h=0,p=!1;s.addEventListener("webglcontextlost",()=>{p=!0});let m=g=>{i=g,a=null;let b=o[r];b!==null&&(c=Tb?b:0,d=g,window.chrome.webview.postMessage(`bench-cap ${b}`))};m(i);let f=g=>{if(c>0){for(;performance.now()0&&t.lost()){h===0&&Qr({ok:!1,error:"webgl context lost"}),t.destroy();return}if(t.render(g),h>0){b-h=v&&(a=new no,r===0&&window.chrome.webview.postMessage("bench-sample-start"),l.start()),a!==null&&(a.frame(b),b-i>=v+Sb&&(n.push({cap:o[r]??c,stats:a.stats(Eb),otherTasks:l.stop()}),r++,r0?n:void 0,load:_u,width:s.width,height:s.height,checksum:Xr()})))),requestAnimationFrame(f)};requestAnimationFrame(f)}function Bu(){try{Ab()}catch(s){Qr({ok:!1,error:String(s)})}}var En,yb,xb,Sb,Eb,$b,Nu,Zr,Cb,Mb,Tb,_u,ei=w(()=>{"use strict";Jr();Sn();En=new URLSearchParams(location.search);yb=400,xb=Ze("settle",700),Sb=Ze("ms",2e3),Eb=1e3/Ze("hz",60),$b=Ze("step",0),Nu=Ze("steps",0),Zr=(En.get("caps")??"").split(".").filter(s=>s!=="").map(Number).filter(Number.isFinite),Cb=Ze("rounds",1),Mb=Ze("capsettle",700),Tb=En.get("selfcap")==="1",_u={draws:Ze("draws",so.draws),meshSegments:so.meshSegments,overdraw:Ze("overdraw",so.overdraw),cpuIterations:Ze("cpu",so.cpuIterations)};document.body?Bu():document.addEventListener("DOMContentLoaded",Bu,{once:!0})});var Ou,Hu=w(()=>{Ou=`#guidePopup{background-color:#182429}.guideHeader,.guideSubH{border-bottom-color:#35e0e81f}.guStepS:not(:last-child){border-bottom-color:#35e0e81f}a,a:active,a:visited{color:#35e0e8}#purchaseSelector{background-color:#111b1f}.roundScrV{border-bottom-color:#35e0e847}#reloadMsg,#interactMsg,#mobileUI #interactMsg{border-color:#35e0e847}#instructionsUpdate{background-color:#151f24}.instructionsHeader,.instructionsTabs{background-color:#070c0f}.endTablePfp{border-color:#35e0e847}th,tr{border-bottom-color:#35e0e81f}.followBut{background-color:#35e0e8;color:#0b1215}.lds-ring div{border-color:#35e0e847;border-color:rgba(53,224,232,.28) transparent transparent transparent}#spinItemName{background-image:linear-gradient(to right,#0000,#070c0fb3 40%,#070c0fe6 60%,#0000)}.spinPrevIcon,.spinSprayDiv,#spinPromo,.compClassPItm,.compPLstIcn,.compSwpTmB,.compMenBtnS,.compPlWpIcn{border-color:#35e0e847}.hostHeader{background-color:#070c0f}#bigMFeatHBtn{border-color:#35e0e847}#bigMFeatHBtn:hover,#bigMFeatHBtn:active,#bigMFeatPBtn:hover,#bigMFeatPBtn:active{border-color:#35e0e847!important}.biMFeatInfB{border-color:#35e0e847}.biMFeatInfB:hover{border-color:#35e0e847!important}.mapLICat{background-color:#151f24}.hostPresetBtn,#hostMenuBtn{background-color:#35e0e8;color:#0b1215}.serverHostOp{border-color:#35e0e81f}.hostCBtn{border-color:#35e0e847}#hostActionH{border-top-color:#35e0e847}#stickyHostH{background-color:#070c0f}.loadoutBtn{background-color:#35e0e8;color:#0b1215}#loadoutToolbar{background-color:#111b1f;border-bottom-color:#35e0e81f}.loadoutTab{background-color:#182429}.loadoutTab:hover{background-color:#1d2c32}.loadoutTabSel{background-color:#24343a}#charPreviewSlot{border-right-color:#35e0e81f}#menuWindow.eterno .bigMenTabs{background-color:#111b1fad}.quickJoin{border-color:#35e0e8}.settText{color:#35e0e8}.contactsHeader,.setHed{border-color:#35e0e81f;background-color:#1d2c32}.setHed:hover{background-color:#182429}.setHedS{border-color:#35e0e81f;background-color:#1d2c32}.settName,.settNameSmall{border-bottom-color:#35e0e81f}input:checked+.sliderSml{background-color:#35e0e8;color:#0b1215}input:focus+.sliderSml{box-shadow:0 0 1px #35e0e8}input:checked+.slider{background-color:#35e0e8;color:#0b1215}input:focus+.slider{box-shadow:0 0 1px #35e0e8}.sliderVal{border-color:#35e0e847!important}#modDropper{border-color:#35e0e81f}#profilePicM{background-color:#24343a}.mailFrom{color:#35e0e8;border-bottom-color:#35e0e847}.followFrom{color:#35e0e8}#mailCount{border-color:#35e0e81f}#policePopC{background-color:#151f24}.classXPBar{background-color:#111b1f}.clsXPBarC{background-color:#35e0e8;color:#0b1215}.skinPaintSwatch{border-color:#35e0e847}.sb1:before{border-left-color:#35e0e847;border-top-color:#35e0e847}.skinColorItem,.matchVote{border-color:#35e0e81f}.hostMap,#mobileJoystick .back,#mobileJoystick .front{border-color:#35e0e847}#chargeModalCard{background-color:#111b1f}.chargeModalBtn{background-color:#35e0e8;color:#0b1215}.settingsHeader,.serverHeader{background-color:#151f24}.setSugBox2,.setSugBox2:hover,.setSugBox,.setSugBox:hover{border-color:#35e0e847}.settingsBtn{background-color:#35e0e8;color:#0b1215}.settingTab:hover{border-bottom-color:#35e0e81f}.redVouchBtn,.searchBtn{background-color:#35e0e8;color:#0b1215}.challMapCrd,.challHeadrI{border-color:#35e0e847}.chalCard{background-color:#151f24}.chalRews{border-left-color:#35e0e847}.chalRewSkn{border-color:#35e0e847}.changeText{border-bottom-color:#35e0e81f}.crftRcpeCrd{background-color:#070c0f}.craftRcIcn,.crftRecSml,.crftItmReq{border-color:#35e0e847}.crftTim{background-color:#151f24}.hostToggle{background-color:#35e0e8;color:#0b1215}.titleRowLocked{border-bottom-color:#35e0e81f}input:checked+.optCheck{background-color:#35e0e8;color:#0b1215}.subPassChg,.subPassChg:hover,.updDisN,.updDisN:hover,.lnkTw:hover{background-color:#35e0e8;color:#0b1215}#popupContent{background-color:#151f24}.twitchPop,.nftPop,.confPop,.clientExitPop,#confPurchItemPop{border-color:#35e0e847}#bundlePop,#premiumPop{background-color:#151f24}.metaPop{border-color:#35e0e847}.confPremiumPop,.vouchPop{background-color:#151f24}.polConfPop{border-color:#35e0e847}.rankedPop,.promoPop{background-color:#151f24}.tListN.inv{background-color:#35e0e8;color:#0b1215}.tItemHolder,.dItemHolder,.tCurrencyItem{border-color:#35e0e847}.bigMenTab:hover,.bigMenTabA,.bigMenTabA:hover{border-bottom-color:#35e0e847}.dark .menuTabNew:hover{border-bottom-color:#35e0e81f!important}.dark .tabANew,.dark .tabANew:hover{border-bottom-color:#35e0e847!important}input:checked+.slider2{background-color:#35e0e8;color:#0b1215}input:focus+.slider2{box-shadow:0 0 1px #35e0e8}.tabHeader:hover{border-bottom-color:#35e0e847}#kdLayout,.crStat{border-color:#35e0e81f}.keyIcon{border-left-color:#35e0e81f;border-right-color:#35e0e81f;border-top-color:#35e0e847;border-bottom-color:#35e0e81f}.pfpPop,.dropsPop{background-color:#151f24}.accountCreatePop{background-color:#151f24;border-color:#35e0e847}#pubPfp{background-color:#35e0e8;color:#0b1215}#tradeChatInput,.tradeChatItem{background-color:#111b1f}#partnerProgB{background-color:#35e0e8;color:#0b1215}#partnrUpBtn{background-color:#35e0e8;border-bottom-color:#35e0e8;color:#0b1215}#partnrUpBtn:hover,#partnrUpBtn:active{border-bottom-color:#35e0e8}#partnrUpBtnD,#partnrUpBtnD:hover,#partnrUpBtnD:active{border-bottom-color:#35e0e847}.editLink{color:#35e0e8}.speedRunItem{border-bottom-color:#35e0e81f}#speedRunInfo{border-bottom-color:#35e0e847}#shopMainSellB{border-color:#35e0e847}.custBack:hover{background-color:#24343a85}#itemSearchH{background-color:#151f24}.skinReward{border-color:#35e0e847}.selectedItem{border-color:#35e0e847!important}.custContainer{border-color:#35e0e847}.custSubContainer{border-left-color:#35e0e847;border-bottom-color:#35e0e847}#findGameBtn{background-color:#35e0e8;color:#0b1215}#clanDeclineAll:hover,.logVersionHed,.viewAllUpdates,.viewAllUpdates:hover{border-color:#35e0e847}.followBack{border-color:#35e0e8!important}.followBack:hover{border-color:#35e0e847!important}.joinBtn{background-color:#35e0e8;color:#0b1215}.imagePop,.badgePop,.imageNewPop{background-color:#151f24}.openCollection{background-color:#35e0e8!important;color:#0b1215}.imageListHeader,.imageListFooter{background-color:#070c0f}.importPop,#bindsHeader,.disconnectPop{background-color:#151f24}.tooltip{background-color:#24343a}.tooltip2{background-color:#070c0f}.imageTab:hover{border-bottom-color:#35e0e81f}.tabAIMG,.tabAIMG:hover{border-bottom-color:#35e0e847}input:checked+.advancedSlider{background-color:#35e0e8;color:#0b1215}input:focus+.advancedSlider{box-shadow:0 0 1px #35e0e8}.quickPlayMap{border-color:#35e0e847}#custStreakSelH{border-top-color:#35e0e81f}.winSelH{background-color:#24343a}#spinHistoryBtn{border-color:#35e0e847}#spinHistoryBtn:hover{border-color:#35e0e847!important}#spinMultiToggleBtn{background-color:#35e0e8!important;box-shadow:inset 0 -7px #35e0e8!important;border-color:#35e0e847;color:#0b1215}#spinMultiToggleBtn:hover{border-color:#35e0e847!important}#spinHistoryPop{background-color:#151f24}.spinHistoryHeader{background-color:#070c0f}.clsStatXPBar{background-color:#0b1215}.eventPop{background-color:#151f24}.eventPopHeader,.bSliderBtn,.bSliderBtn:hover,.bSliderBtn:active{border-color:#35e0e847}.bSliderBtn.disabled{border-color:#35e0e81f}.bpLevelNum.completed{background-color:#24343a}.bpLevelNum.active{border-color:#35e0e847}.bpCard,.bpCard.free{border-color:#35e0e81f}.bpCard.free.completed,.bpCard.free.completed.claimed{border-color:#35e0e847}.bpCardSlot{border-color:#35e0e81f}.bpSliderArrow{border-right-color:#35e0e847}.bpInfoBalloon{background-color:#151f24}.bpInfoBalloon:after{background-color:#151f24}.bpClaimB{border-color:#35e0e847;background-color:#151f24}.bp-unlock-header{background-color:#151f24}.bp-generic-pop,.bp-purchase-pop{background-color:#151f24;border-color:#35e0e847}.clanSubmitBtn,.clanSubmitBtn:hover{background-color:#35e0e8;color:#0b1215}.spinErrorPop{background-color:#151f24}.popHeader,.dropsPopHeader{background-color:#070c0f}.charmErrorPop,.spinHistoryStatsPop{background-color:#151f24}#kpdCalls>* td,#kpdCalls>* th{border-bottom-color:#35e0e81f}.loadingPop,.autoLoadPop,.editMapPop,.responsePop{background-color:#151f24}.infoPop,.contPop{background-color:#1d2c32}.ticketPop{background-color:#151f24}.bundleCrd{background-color:#070c0f}.bundleItmReq,.bundleSliderBtn,.bundleSliderBtn:hover,.bundleSliderBtn:active,.bundleSliderBtn.disabled{border-color:#35e0e847}.bundleSliderArrow{border-right-color:#35e0e847}.dxp-pop{background-color:#151f24;border-color:#35e0e847}.dropsSliderBtn,.dropsSliderBtn:hover,.dropsSliderBtn:active,.dropsSliderBtn.disabled{border-color:#35e0e847}.dropsSliderArrow{border-right-color:#35e0e847}.rewItemHolder{border-color:#35e0e847}.abTestsPop{background-color:#151f24}.registerGiftPop{background-color:#151f24;border-color:#35e0e847}.rankedQueueModal{background-color:#151f24;border-color:#35e0e8;box-shadow:0 0 160px #35e0e875}.rankedMenuModal,.communityPopup,.tutorialPopup,.defaultModal,.krunkCupJoinModal,.krunkCupViewModal,.exchangeModal,.itemsModal,.socialModal,.moreKrunkerPopup{background-color:#151f24}.io-button{background-color:#151f24;border-color:#35e0e81f}.io-button:hover{background-color:#182429}.io-button--accept-secondary{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.io-input-field{border-color:#35e0e81f}.io-input-field:focus{border-color:#35e0e8}.io-popup-container{background-color:#111b1f}.io-section-header:after{background-color:#35e0e8;color:#0b1215}.io-card{border-color:#35e0e81f}.io-separator{border-bottom-color:#35e0e81f}.io-separator span{background-color:#111b1f}.strike-timer__info-holder,.strike-timer__timer-bg{background-color:#151f24}.bundle-popup-lmt-offer{background-color:#24343a}.ltm-offer-container__arrow{border-right-color:#35e0e847}.file-drop-target.svelte-145grbc{border-color:#35e0e81f}.file-drop-target.svelte-145grbc:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.file-drop-target.hovered.svelte-145grbc{border-color:#35e0e847}.file-drop-target.drag-over.svelte-145grbc{border-color:#35e0e8;background-color:#35e0e81a}.code-input.svelte-1xwmszg{border-color:#35e0e81f}.code-input.svelte-1xwmszg:focus{border-color:#35e0e8}.qr-code-image.svelte-1xwmszg,.slider-input.svelte-1xwmszg{border-color:#35e0e81f}.slider-input.svelte-1xwmszg::-webkit-slider-thumb{background-image:linear-gradient(145deg,#35e0e8,#3a7dce);border-color:#35e0e847}.slider-input.svelte-1xwmszg::-webkit-slider-runnable-track{background-image:linear-gradient(to right,#245d99,#35e0e8)}.slider-display.svelte-1xwmszg{color:#35e0e8}.info-message.svelte-1xwmszg{border-color:#35e0e8}.password-requirements.svelte-1xwmszg,.motd-input.svelte-15d5v89{border-color:#35e0e81f}.motd-input.svelte-15d5v89:focus{border-color:#35e0e81f}.motd-display.svelte-15d5v89{border-left-color:#35e0e81f}.item-showcase-container.svelte-2tp35a{background-color:#151f24bf}.more-info-btn.svelte-2tp35a,.more-info-btn.svelte-2tp35a:hover,.share-btn.svelte-2tp35a{border-color:#35e0e81f}.md-root.svelte-1kkpw01{background-color:#151f24}.md-header.svelte-1kkpw01{border-bottom-color:#35e0e81f;background-color:#111b1f}.md-back.svelte-1kkpw01{border-color:#35e0e81f}.md-header-icon.svelte-1kkpw01{color:#35e0e8}.md-thumb.svelte-1kkpw01{background-color:#0b1215}.md-info-bar.svelte-1kkpw01{border-bottom-color:#35e0e81f}.md-creator.svelte-1kkpw01{color:#35e0e8}.md-host-btn.svelte-1kkpw01,.md-icon-btn.svelte-1kkpw01{border-color:#35e0e81f}.md-tabs.svelte-1kkpw01{border-bottom-color:#35e0e81f}.md-tab.active.svelte-1kkpw01{color:#35e0e8;border-bottom-color:#35e0e8}.md-lb-name.svelte-1kkpw01{color:#35e0e8}.md-load-more.svelte-1kkpw01{border-color:#35e0e81f}.md-data-section-title.svelte-1kkpw01{color:#35e0e8;border-top-color:#35e0e81f}.md-data-table.svelte-1kkpw01{background-color:#111b1f;border-color:#35e0e81f}.md-data-table-row.svelte-1kkpw01{border-top-color:#35e0e81f}.md-data-header.svelte-1kkpw01{background-color:#111b1f;border-color:#35e0e81f}.md-data-search-btn.svelte-1kkpw01{border-color:#35e0e81f}.md-data-input.svelte-1kkpw01{background-color:#0b1215;border-color:#35e0e81f}.md-data-input.svelte-1kkpw01:focus{border-color:#35e0e8}.md-ver-row.svelte-1kkpw01{border-top-color:#35e0e81f}.md-ver-btn.svelte-1kkpw01{border-color:#35e0e81f}.mod-root.svelte-1v2j2f2{background-color:#151f24}.mod-header.svelte-1v2j2f2{border-bottom-color:#35e0e81f;background-color:#111b1f}.mod-back.svelte-1v2j2f2{border-color:#35e0e81f}.mod-header-icon.svelte-1v2j2f2{color:#35e0e8}.mod-thumb.svelte-1v2j2f2{background-color:#0b1215}.mod-info-bar.svelte-1v2j2f2{border-bottom-color:#35e0e81f}.mod-creator.svelte-1v2j2f2{color:#35e0e8}.mod-use-btn.svelte-1v2j2f2,.mod-use-btn.svelte-1v2j2f2:hover{background-color:#35e0e8;color:#0b1215}.mod-icon-btn.svelte-1v2j2f2{border-color:#35e0e81f}.style-container.svelte-143xo7r{background-color:#151f24bf}.slider-arrow.svelte-143xo7r{border-color:#35e0e81f}.slider-arrow.left.svelte-143xo7r .slider-arrow-icon.svelte-143xo7r{border-right-color:#35e0e847}.slider-arrow.right.svelte-143xo7r .slider-arrow-icon.svelte-143xo7r{border-left-color:#35e0e847}.swatch.svelte-143xo7r,.btn.svelte-143xo7r{border-color:#35e0e81f}.market-card.svelte-r5taai{background-color:#070c0fcc}.trade-label.inv.svelte-1lqen9w{background-color:#35e0e8;color:#0b1215}.trade-inv-item.svelte-1lqen9w{border-color:#35e0e847}.trade-search.svelte-1lqen9w{border-color:#35e0e81f}.trade-search.svelte-1lqen9w:focus{border-color:#35e0e81f}.gift-root.svelte-g5j1wf{background-color:#151f24}.gift-header.svelte-g5j1wf{border-bottom-color:#35e0e81f;background-color:#111b1f}.gift-back.svelte-g5j1wf{border-color:#35e0e81f}.gift-header-icon.svelte-g5j1wf{color:#35e0e8}.gift-input.svelte-g5j1wf{background-color:#0b1215;border-color:#35e0e81f}.gift-input.svelte-g5j1wf:focus{border-color:#35e0e8}.gift-send.svelte-g5j1wf{background-color:#35e0e8;color:#0b1215}.gift-done.svelte-g5j1wf{border-color:#35e0e81f}.buy-button.svelte-r01l8m:disabled{background-color:#24343a}.buy-button.svelte-r01l8m:disabled:hover{background-color:#24343a}.shop-header.svelte-1gtpoav{border-bottom-color:#35e0e81f}.rp-balance.svelte-1gtpoav,.guest-earned-collect__reward-items.svelte-1hb83uo,.guest-earned-collect__register-btn.svelte-1hb83uo,.guest-earned-collect__register-btn.svelte-1hb83uo:hover{border-color:#35e0e81f}.signup-rewards-list.svelte-1v6b0qm{background-color:#070c0fb3}.signup-rewards-register-button.svelte-1v6b0qm{border-color:#35e0e847!important}.product-row.svelte-14104bb{border-color:#35e0e81f}.product-row.svelte-14104bb:hover{border-color:#35e0e847}.gift-button.svelte-14104bb,.for-you-text.svelte-14104bb,.currency-shop-item.svelte-14104bb,.currency-shop-item.svelte-14104bb:hover{border-color:#35e0e81f}.verification-banner.svelte-165vbjp{background-color:#151f24cc}.spinner.svelte-165vbjp{border-color:#35e0e81f;border-top-color:#35e0e847}.section-title.svelte-e65miw .material-icons.svelte-e65miw{color:#35e0e8}.toggle-switch.svelte-e65miw input:checked+.slider.svelte-e65miw{background-color:#35e0e8;color:#0b1215}.texture-upload-item.svelte-e65miw,.texture-image.svelte-e65miw{border-color:#35e0e81f}.btn-generate.svelte-e65miw{background-color:#35e0e8;color:#0b1215}.btn-generate.svelte-e65miw:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.sgNum.svelte-1i1uhp7,.sgHex.svelte-1i1uhp7{border-color:#35e0e81f}.sgNum.svelte-1i1uhp7:focus,.sgHex.svelte-1i1uhp7:focus{border-color:#35e0e8}.sgSlider.svelte-1i1uhp7::-webkit-slider-thumb{background-color:#35e0e8;color:#0b1215}.sgSlider.svelte-1i1uhp7:focus-visible{outline-color:#35e0e8}.sgColorInput.svelte-1i1uhp7{border-color:#35e0e81f}.sgColorInput.svelte-1i1uhp7:focus-visible{outline-color:#35e0e8}.sgPalette.svelte-sxvv3c{background-color:#0b1215fa;border-color:#35e0e81f}.sgPaletteSearch.svelte-sxvv3c{border-color:#35e0e81f}.sgPaletteSearch.svelte-sxvv3c:focus{border-color:#35e0e8}.sgPaletteItem.active.svelte-sxvv3c,.sgPaletteItem.svelte-sxvv3c:focus-visible{background-color:#35e0e840}.sgEditor.svelte-upgo13{border-color:#35e0e81f}.sgToolbar.svelte-upgo13{border-bottom-color:#35e0e81f}.sgBtn.svelte-upgo13{border-color:#35e0e81f}.sgBtn.svelte-upgo13:focus-visible,.sgCanvas.svelte-upgo13:focus-visible,.sgErrorItem.svelte-upgo13:focus-visible,.sgMenuItem.svelte-upgo13:focus-visible{outline-color:#35e0e8}.sgBtnPrimary.svelte-upgo13{background-color:#35e0e840;border-color:#35e0e899;color:#35e0e8}.sgBtnPrimary.svelte-upgo13:hover:not(:disabled){background-color:#35e0e866}.sgMenu.svelte-upgo13{background-color:#0b1215fa;border-color:#35e0e81f}.sgMenuItem.svelte-upgo13:hover{background-color:#35e0e840}.sgCanvas.svelte-upgo13{background-color:#070c0fe6}.sgOverlay.svelte-upgo13{background-color:#070c0ffa;border-color:#35e0e81f}.sgIoText.svelte-upgo13{border-color:#35e0e81f}.sgIoText.svelte-upgo13:focus{border-color:#35e0e8}.sgFooter.svelte-upgo13{border-top-color:#35e0e81f}.io-action-bar-button.svelte-103lu6x{background-color:#35e0e8;color:#0b1215}.search-input.svelte-103lu6x{border-color:#35e0e81f}.search-input.svelte-103lu6x:focus{border-color:#35e0e8}.io-action-bar-button.svelte-103lu6x:hover,.action-btn.test-btn.svelte-103lu6x,.action-btn.test-btn.svelte-103lu6x:hover{background-color:#35e0e8;color:#0b1215}.skin-manager-table.svelte-103lu6x .table thead th{background-color:#0b1215}.tab-navigation.svelte-103lu6x{border-bottom-color:#35e0e81f}.tab-button.active.svelte-103lu6x{color:#35e0e8;background-color:#35e0e81a}.tab-button.active.svelte-103lu6x:after{background-color:#35e0e8;color:#0b1215}.preview-control-btn.svelte-103lu6x{border-color:#35e0e81f}.preview-control-btn.active.svelte-103lu6x{background-color:#35e0e84d;border-color:#35e0e8}.paint-select.svelte-103lu6x{border-color:#35e0e81f}.paint-select.svelte-103lu6x option.svelte-103lu6x{background-color:#0b1215}.connection.svelte-1fenhdo{background-color:#182429}.consequences.svelte-18wpngg{border-color:#35e0e81f}.loading-spinner.svelte-190e6fj{border-color:#35e0e81f;border-top-color:#35e0e847}.retry-button.svelte-190e6fj{background-color:#35e0e8;color:#0b1215}.benefits-card.svelte-190e6fj,.billing-info.svelte-190e6fj,.subscribe-btn.svelte-190e6fj{border-color:#35e0e81f}.subscribe-btn.svelte-190e6fj:hover{border-color:#35e0e847}.disabled-card.svelte-190e6fj .subscribe-btn.svelte-190e6fj{background-image:linear-gradient(135deg,#24343a,#1d2c32);border-color:#35e0e81f}.disabled-card.svelte-190e6fj .subscribe-btn.svelte-190e6fj:hover,.disabled-indicator.svelte-190e6fj{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.subscribed-btn.svelte-190e6fj{border-color:#35e0e81f}.renew-btn.svelte-190e6fj{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);border-color:#35e0e81f;box-shadow:0 8px 24px #35e0e866,0 4px 8px #0000004d,inset 0 1px #ffffff4d}.renew-btn.svelte-190e6fj:hover{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);box-shadow:0 12px 32px #35e0e880,0 6px 12px #0006,inset 0 1px #fff6;border-color:#35e0e847}.cancel-container.svelte-190e6fj,.cancel-btn.svelte-190e6fj,.cancel-btn.svelte-190e6fj:hover{border-color:#35e0e81f}.wild-offer-notification.svelte-1gcqcwy{background-image:linear-gradient(135deg,#000000f2,#070c0ffa)}.shop-btn.svelte-1gcqcwy,.shop-btn.svelte-1gcqcwy:hover,.player-bound-display.svelte-1nzacef,.player-bound-display.svelte-1nzacef:hover,.login-button.svelte-1nzacef,.login-button.svelte-1nzacef:hover{border-color:#35e0e81f}.data-table.svelte-69sryq thead.svelte-69sryq{background-color:#0b1215}.table-header.svelte-69sryq{color:#35e0e8}.table-header.sortable.svelte-69sryq:hover{background-color:#35e0e81a}.table-header.sortable.sort-asc.svelte-69sryq:after{border-bottom-color:#35e0e8}.table-header.sortable.sort-desc.svelte-69sryq:after{border-top-color:#35e0e8}.table-cell.svelte-69sryq{border-bottom-color:#35e0e81f}.qs-window.svelte-1o11rsf{background-color:#111b1f;border-color:#35e0e81f}.qs-item-preview.svelte-1o11rsf,.qs-values.svelte-1o11rsf,.qs-amount-select.svelte-1o11rsf{border-color:#35e0e81f}.qs-amount-select.svelte-1o11rsf:focus{border-color:#35e0e88c}.jy-filter-bar.svelte-1vqzycn{background-color:#111b1f;border-color:#35e0e81f}.jy-search-input.svelte-1vqzycn,.jy-sort-select.svelte-1vqzycn{background-color:#151f24;border-color:#35e0e81f}.sd-root.svelte-a9j4oe{background-color:#151f24}.sd-header.svelte-a9j4oe{border-bottom-color:#35e0e81f;background-color:#111b1f}.sd-back.svelte-a9j4oe{border-color:#35e0e81f}.sd-header-icon.svelte-a9j4oe{color:#35e0e8}.sd-del.svelte-a9j4oe{border-color:#35e0e81f}.sd-tabs.svelte-a9j4oe{border-bottom-color:#35e0e81f}.sd-tab.active.svelte-a9j4oe{color:#35e0e8;border-bottom-color:#35e0e8}.sd-row.svelte-a9j4oe{background-color:#111b1f;border-color:#35e0e81f}.sd-input.svelte-a9j4oe{background-color:#0b1215;border-color:#35e0e81f}.sd-input.svelte-a9j4oe:focus{border-color:#35e0e8}.sd-primary.svelte-a9j4oe{background-color:#35e0e8;color:#0b1215}.sd-mini.svelte-a9j4oe{border-color:#35e0e81f}.sd-kr.svelte-a9j4oe{background-color:#111b1f}.region-btn.svelte-1gdnqq5{border-color:#35e0e81f}.region-btn.active.svelte-1gdnqq5{background-color:#35e0e826;border-color:#35e0e880;color:#35e0e8}.season-select.svelte-1gdnqq5{border-color:#35e0e81f}.season-select.svelte-1gdnqq5 option.svelte-1gdnqq5{background-color:#0b1215}th.svelte-1gdnqq5{color:#35e0e8}td.svelte-1gdnqq5{border-bottom-color:#35e0e81f}.season-select.svelte-81ueoe{border-color:#35e0e81f}.season-select.svelte-81ueoe option.svelte-81ueoe{background-color:#0b1215}.kc-title.svelte-1xp8pv1{color:#35e0e8}.back-btn.svelte-1xp8pv1{border-color:#35e0e84d}.back-btn.svelte-1xp8pv1:hover{background-color:#35e0e81f;color:#35e0e8}.friend-list.svelte-e2g8p2{background-color:#111b1f;border-right-color:#35e0e81f}.friend-presence-dot.svelte-e2g8p2{border-color:#35e0e81f}.friend-presence-dot.offline.svelte-e2g8p2{background-color:#24343a}.friend-unread.svelte-e2g8p2{background-color:#35e0e8;color:#0b1215}.friend-list-search.svelte-e2g8p2{background-color:#111b1f;border-top-color:#35e0e81f}.conversation-root.svelte-128yn5i{background-color:#151f24}.conversation-header.svelte-128yn5i{border-bottom-color:#35e0e81f;background-color:#111b1f}.conversation-presence-dot.svelte-128yn5i{border-color:#35e0e81f}.conversation-presence-dot.offline.svelte-128yn5i{background-color:#24343a}.conversation-compose.svelte-128yn5i{border-top-color:#35e0e81f;background-color:#111b1f}.conversation-load-earlier.svelte-128yn5i{border-color:#35e0e81f}.conversation-input.svelte-128yn5i{background-color:#0b1215;border-color:#35e0e81f}.conversation-input.svelte-128yn5i:focus{border-color:#35e0e8}.conversation-emoji-button.svelte-128yn5i{background-color:#0b1215;border-color:#35e0e81f}.conversation-emoji-button.svelte-128yn5i:hover:not(:disabled){background-color:#111b1f;color:#35e0e8}.conversation-send-button.svelte-128yn5i{background-color:#35e0e8;color:#0b1215}.conversation-send-button.svelte-128yn5i:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.conversation-send-button.svelte-128yn5i:disabled{background-color:#1d2c32}.friends-root.svelte-u33r8v{background-color:#151f24}.friends-status-dot.svelte-u33r8v{background-color:#24343a}.player-card.svelte-dp3rf9{background-color:#0b1215cc;border-color:#35e0e81f}.player-card.svelte-dp3rf9:hover{background-color:#111b1fcc}.player-card.svelte-dp3rf9:focus-visible{outline-color:#35e0e847}.counterBadge.svelte-fgmdj8{background-color:#35e0e8;color:#0b1215}.territory-map-container.svelte-102279m{background-color:#111b1f;border-color:#35e0e81f}.territory-details-panel.svelte-102279m{border-color:#35e0e81f}.panel-header.svelte-102279m,.leaderboard-entry.svelte-102279m{border-bottom-color:#35e0e81f}.clickable-name.svelte-myp8tq:hover{color:var(--highlight-color, rgb(53, 224, 232))}.view-tab.svelte-myp8tq{border-color:#35e0e81f}.view-tab.active.svelte-myp8tq{background-color:#35e0e833;border-color:#35e0e866}.day-arrow.svelte-myp8tq,.day-input.svelte-myp8tq{border-color:#35e0e81f}.payouts-row.svelte-myp8tq,.payouts-row-header.svelte-myp8tq{border-bottom-color:#35e0e81f}.main-title.svelte-1sr7h97,.card-title.svelte-1sr7h97{color:#35e0e8}.map-badge.svelte-1sr7h97,.mode-badge.svelte-1sr7h97{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.section-title.svelte-1sr7h97{color:#35e0e8;border-left-color:#35e0e8}.rule-icon.svelte-1sr7h97,.tip-title.svelte-1sr7h97{color:#35e0e8}.filter-input.svelte-72bcy3{border-color:#35e0e84d}.filter-input.svelte-72bcy3:focus{border-color:#35e0e8}.post-card.svelte-72bcy3{border-color:#35e0e81f}.looking-for-label.svelte-72bcy3{color:#35e0e8}.req-badge.svelte-72bcy3{border-color:#35e0e81f}.player-clan.clickable-clan.svelte-7h12t9:hover{color:var(--highlight-color, rgb(53, 224, 232))}.tab-bar.svelte-7h12t9{border-bottom-color:#35e0e81f}.tab.active.svelte-7h12t9{border-bottom-color:var(--highlight-color, rgb(53, 224, 232))}.day-arrow.svelte-7h12t9,.day-input.svelte-7h12t9{border-color:#35e0e81f}.page-btn.svelte-7h12t9{background-color:#35e0e833;border-color:#35e0e866}.ct-row.svelte-7h12t9,.ct-header.svelte-7h12t9{border-bottom-color:#35e0e81f}.clickable-name.svelte-7h12t9:hover{color:var(--highlight-color, rgb(53, 224, 232))}.rank-display.svelte-19e82s0{border-color:#35e0e81f}.popup-box.svelte-6dkuug{background-color:#151f24}.moreKrunkerOption.svelte-19783yx{border-color:#35e0e847;background-color:#0b1215}.moreKrunkerOption.svelte-19783yx:hover{border-color:#35e0e847}.emoji-panel.svelte-13g6jqo{background-color:#151f24}.emoji-icon.svelte-13g6jqo{color:#35e0e8}.emoji-item.selected.svelte-13g6jqo,.emoji-item.svelte-13g6jqo:hover{border-color:#35e0e81f}.compose-window.svelte-qxxay9{background-color:#0b1215;border-color:#35e0e81f}.compose-input.svelte-qxxay9{border-color:#35e0e81f}.compose-input.svelte-qxxay9:focus{border-color:#35e0e899}.compose-input-num.svelte-qxxay9{border-color:#35e0e81f}.compose-btn-submit.svelte-qxxay9{background-color:#35e0e8;color:#0b1215}.compose-btn-submit.svelte-qxxay9:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.rewards-container.svelte-1sac6ik{border-color:#35e0e81f}.reward-card.flying.svelte-1sac6ik:after{border-color:#35e0e81f}.card-front.svelte-1sac6ik,.card-back.svelte-1sac6ik{background-color:#070c0fe6}.loading-spinner.svelte-172kpk5{border-color:#35e0e81f;border-top-color:#35e0e8}.socialsStickyFooter.svelte-1ley7u4{border-top-color:#35e0e81f}.pollBadge.svelte-1ley7u4,.pollVote.svelte-1ley7u4{background-color:#35e0e8;color:#0b1215}.eventLink.svelte-1ley7u4{color:#35e0e8;background-color:#35e0e81a}.eventLink.svelte-1ley7u4:hover{background-color:#35e0e833}.dm-emoji-panel.svelte-1ni3kfh{background-color:#151f24;border-color:#35e0e81f}.dm-emoji-header.svelte-1ni3kfh{border-bottom-color:#35e0e81f}.dm-emoji-header-icon.svelte-1ni3kfh{color:#35e0e8}.dm-emoji-thumb.svelte-1ni3kfh{background-color:#0b1215;border-color:#35e0e81f}.sub-tab-panel.svelte-lri212{border-color:#35e0e847}.bundle-card.svelte-lri212{background-color:#070c0f}.bundle-item-req.svelte-lri212{border-color:#35e0e847}.detail-window.svelte-h3kymj{background-color:#0b1215;border-color:#35e0e81f}.detail-head.svelte-h3kymj{border-bottom-color:#35e0e81f}.reply-input.svelte-h3kymj{border-color:#35e0e81f}.reply-input.svelte-h3kymj:focus{border-color:#35e0e880}.reply-btn.svelte-h3kymj{background-color:#35e0e8;color:#0b1215}.map-filter-select.svelte-c92dbh{border-color:#35e0e866}.map-filter-select.svelte-c92dbh:hover{border-color:#35e0e8}.map-filter-select.svelte-c92dbh:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.section-title.svelte-c92dbh{color:#35e0e8;border-left-color:#35e0e8}.day-arrow.svelte-c92dbh{border-color:#35e0e866;color:#35e0e8}.day-arrow.svelte-c92dbh:hover:not(:disabled){background-color:#35e0e833;border-color:#35e0e8}.day-input.svelte-c92dbh{border-color:#35e0e866}.day-input.svelte-c92dbh:focus{border-color:#35e0e8}.no-participation-title.svelte-c92dbh{color:#35e0e8}.page-btn.svelte-c92dbh{background-color:#35e0e833;border-color:#35e0e866}.overlay-content.svelte-jxc66d{background-color:#070c0f;border-color:#35e0e81f}.streams-overlay.svelte-60shhe{border-color:#35e0e81f}.hide-button.svelte-60shhe{background-color:#182429}.hide-button.svelte-60shhe:hover{background-color:#1d2c32}.spinner.svelte-60shhe{border-color:#35e0e81f}.featured-section.svelte-60shhe{background-color:#070c0fe6}.stream-card.svelte-60shhe{background-color:#0b1215cc;border-color:#35e0e81f}.thumbnail.svelte-60shhe{background-color:#0b1215}.thumbnail.svelte-60shhe:before{background-color:#0b1215}.tutorialSidebar.svelte-los391{background-image:linear-gradient(180deg,#111b1ff2,#0b1215f2)}.tutorialSidebar.svelte-los391:before{background-image:linear-gradient(180deg,rgba(17,27,31,.95) 0%,transparent 100%)}.tutorialSidebar.svelte-los391:after{background-image:linear-gradient(0deg,rgba(11,18,21,.95) 0%,transparent 100%)}.tutorialNavItem.svelte-los391{border-bottom-color:#35e0e81f}.matchmakingBarImage.svelte-los391,.inviteFriendsURLImage.svelte-los391,.spinsImage.svelte-los391,.matchmakingBarQuickMatchImage.svelte-los391,.hostFindGameImage.svelte-los391,.hostGameSetupImage.svelte-los391,.challengesImage.svelte-los391,.rankedImage.svelte-los391,.clanCreateImage.svelte-los391,.clanManageImage.svelte-los391,.tradingImage.svelte-los391,.challengeModeImage.svelte-los391,.challengeModeDifferenceImage.svelte-los391{border-color:#35e0e81f}.comment-text.svelte-7miv1g a{color:#35e0e8}.guide-section.svelte-4log2q{background-color:#070c0f}.guide-section-title.svelte-4log2q .material-icons.svelte-4log2q{color:#35e0e8}.guide-key.svelte-4log2q{background-color:#111b1f;border-color:#35e0e81f}.guide-rarity.dark.svelte-4log2q{border-color:#35e0e81f}.match-details.svelte-1irqx9a{border-top-color:#35e0e81f}.table-header.svelte-1irqx9a,.table-cell.svelte-1irqx9a{border-bottom-color:#35e0e81f}.page-btn.svelte-1irqx9a{border-color:#35e0e81f}.page-btn.svelte-1irqx9a:hover:not([disabled]){border-color:#35e0e81f}.currency-reward.svelte-1yk8fym,.gift-button.svelte-rew7ag{border-color:#35e0e81f}.modal-content.svelte-1pf0608{background-color:#111b1f;border-color:#35e0e81f}.price-input.svelte-1pf0608,.fee-breakdown.svelte-1pf0608{border-color:#35e0e81f}.season-banner.svelte-17kea4i{background-color:#35e0e8;color:#0b1215}.challenges-link-icon.svelte-17kea4i,.section-title.svelte-1x46pbz .material-icons.svelte-1x46pbz{color:#35e0e8}.param-chip.svelte-1x46pbz{border-color:#35e0e81f}.add-uniform-btn.svelte-1x46pbz{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.add-uniform-btn.svelte-1x46pbz:hover{background-color:#35e0e84d}.part-block.svelte-1x46pbz,.part-name-input.svelte-1x46pbz{border-color:#35e0e81f}.copy-defaults-btn.svelte-1x46pbz{background-color:#35e0e826;border-color:#35e0e84d;color:#35e0e8}.copy-defaults-btn.svelte-1x46pbz:hover:not(:disabled){background-color:#35e0e84d}.apply-btn.svelte-1x46pbz,.apply-btn.svelte-1x46pbz:hover{background-color:#35e0e8;color:#0b1215}.clear-btn.svelte-1x46pbz{border-color:#35e0e81f}.ph-xp-fill.svelte-da3zva{background-image:linear-gradient(to right,#ff6a0b,#35e0e8)}.survey-notification.svelte-1u0qxrf{background-image:linear-gradient(135deg,#000000f2,#070c0ffa)}.answer-btn.svelte-1u0qxrf{border-color:#35e0e81f}.icon-btn.list.svelte-hk8nq9{background-color:#35e0e8;color:#0b1215}.card-title.svelte-1k16b2z,.view-title.svelte-1k16b2z{color:#35e0e8}.trade-item.svelte-z9tzua,.trade-item-empty.svelte-z9tzua{border-color:#35e0e81f}.bm-card.svelte-dbcods{background-color:#070c0f}.bm-card-icon.svelte-dbcods{border-color:#35e0e847}.bm-locked-btn.svelte-dbcods{background-color:#111b1f}.modal-content.svelte-dbcods{background-color:#111b1f;border-color:#35e0e81f}.price-row.total.svelte-dbcods{border-top-color:#35e0e81f}.sma-dialog.svelte-1veg8cv{background-color:#151f24}.sma-header.svelte-1veg8cv{background-color:#111b1f;border-bottom-color:#35e0e81f}.sma-header-icon.svelte-1veg8cv{color:#35e0e8}.sma-rules.svelte-1veg8cv{background-color:#111b1f;border-color:#35e0e81f}.sma-input.svelte-1veg8cv{background-color:#0b1215;border-color:#35e0e81f}.sma-input.svelte-1veg8cv:focus{border-color:#35e0e8}.sma-map.svelte-1veg8cv{border-color:#35e0e81f}.sma-map.active.svelte-1veg8cv{border-color:#35e0e8;color:#35e0e8}.sma-footer.svelte-1veg8cv{border-top-color:#35e0e81f;background-color:#111b1f}.sma-secondary.svelte-1veg8cv{border-color:#35e0e81f}.sma-primary.svelte-1veg8cv{background-color:#35e0e8;color:#0b1215}.usernames-col.svelte-27udiy{border-color:#35e0e81f}.col-header.svelte-27udiy{border-bottom-color:#35e0e81f}.username-row.svelte-27udiy{border-color:#35e0e81f}.username-row.active.svelte-27udiy{border-color:#35e0e8}.leave-note.svelte-27udiy{border-left-color:#35e0e8}.username-active.svelte-27udiy{color:#35e0e8}#menuWindow.eterno .store-tabs.svelte-v85byk{background-color:#111b1fad}.store-tab.svelte-v85byk:hover,.store-tab-active.svelte-v85byk,.store-tab-active.svelte-v85byk:hover{border-bottom-color:#35e0e847}.register-notification.svelte-t1w66d{background-image:linear-gradient(135deg,#000000e6,#070c0ff2)}.table.svelte-12kndpz th.svelte-12kndpz,.table.svelte-12kndpz td.svelte-12kndpz{border-bottom-color:#35e0e81f}.pagination.svelte-12kndpz{border-top-color:#35e0e81f}.pagination-btn.svelte-12kndpz{background-color:#35e0e8;color:#0b1215}.pagination-btn.svelte-12kndpz:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.loading-spinner.svelte-1tteuk0{border-color:#35e0e81f}.load-more-btn.svelte-1tteuk0{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-1tteuk0:hover{background-color:#35e0e84d}.load-more-btn.svelte-1tteuk0:active{background-color:#35e0e866}.modal-content.svelte-1k428dj{background-color:#111b1f;border-color:#35e0e81f}.st-root.svelte-kqehnu{background-color:#151f24}.st-header.svelte-kqehnu{border-bottom-color:#35e0e81f;background-color:#111b1f}.st-back.svelte-kqehnu{border-color:#35e0e81f}.st-header-icon.svelte-kqehnu{color:#35e0e8}.st-row.svelte-kqehnu{background-color:#111b1f;border-color:#35e0e81f}.st-row.svelte-kqehnu:hover{background-color:#151f24}.st-invite.svelte-kqehnu:hover{background-color:#111b1f}.st-mini.svelte-kqehnu{border-color:#35e0e81f}.st-section-title.svelte-kqehnu{color:#35e0e8;border-top-color:#35e0e81f}.st-input.svelte-kqehnu{background-color:#0b1215;border-color:#35e0e81f}.st-input.svelte-kqehnu:focus{border-color:#35e0e8}.st-primary.svelte-kqehnu{background-color:#35e0e8;color:#0b1215}.card-title.svelte-raovk7,.view-title.svelte-raovk7{color:#35e0e8}.profile-detail-root.svelte-1hghrmf{background-color:#151f24}.profile-detail-header-bar.svelte-1hghrmf{border-bottom-color:#35e0e81f;background-color:#111b1f}.profile-detail-back.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-header-icon.svelte-1hghrmf{color:#35e0e8}.profile-detail-identity.svelte-1hghrmf,.profile-detail-avatar.svelte-1hghrmf{background-color:#111b1f;border-color:#35e0e81f}.profile-detail-online-dot.svelte-1hghrmf{background-color:#24343a;border-color:#35e0e81f}.profile-detail-creation-thumb.svelte-1hghrmf{background-color:#0b1215}.profile-detail-clan.svelte-1hghrmf{color:#35e0e8}.profile-detail-info-row.svelte-1hghrmf{border-top-color:#35e0e81f}.profile-detail-follow-box.svelte-1hghrmf{background-color:#111b1f}.profile-detail-follow-box.svelte-1hghrmf:hover{background-color:#151f24}.profile-detail-action.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-action.active.svelte-1hghrmf{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.profile-detail-action.active.svelte-1hghrmf i.svelte-1hghrmf{color:#35e0e8}.profile-detail-xp-strip.svelte-1hghrmf{border-top-color:#35e0e81f}.profile-detail-level-badge.svelte-1hghrmf,.profile-detail-xp-fill.svelte-1hghrmf{background-color:#35e0e8;color:#0b1215}.profile-detail-stat.svelte-1hghrmf,.profile-detail-class.svelte-1hghrmf,.profile-detail-raid-row.svelte-1hghrmf{background-color:#0b1215;border-color:#35e0e81f}.profile-detail-sales-panel.svelte-1hghrmf,.profile-detail-badges-panel.svelte-1hghrmf,.profile-detail-creations-panel.svelte-1hghrmf{background-color:#111b1f;border-color:#35e0e81f}.profile-detail-section-header.svelte-1hghrmf,.profile-detail-sales-header.svelte-1hghrmf{color:#35e0e8}.profile-detail-range-btn.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-range-btn.active.svelte-1hghrmf{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.profile-detail-listing-card.svelte-1hghrmf{background-color:#0b1215}.profile-detail-listing-card.svelte-1hghrmf:hover{background-color:#111b1f}.profile-detail-listing-thumb.svelte-1hghrmf{background-color:#070c0f}.profile-detail-title-item.svelte-1hghrmf,.profile-detail-badge-item.svelte-1hghrmf{background-color:#111b1f}.profile-detail-creation-card.svelte-1hghrmf{background-color:#0b1215}.profile-detail-creation-card.svelte-1hghrmf:hover{background-color:#111b1f}.modal-content.svelte-1ugt6n9{background-color:#111b1f;border-color:#35e0e81f}.section-title.svelte-awmvtb .material-icons.svelte-awmvtb{color:#35e0e8}.sound-info.svelte-awmvtb{border-color:#35e0e81f}.btn-replace.svelte-awmvtb{background-color:#35e0e8cc}.btn-replace.svelte-awmvtb:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.item-preview.svelte-1lii2o,.kid-display-container.svelte-lbi007{border-color:#35e0e81f}.kid-display-benefits.svelte-lbi007 h3.svelte-lbi007:after{background-color:#35e0e8;color:#0b1215}.partnership-info.svelte-lbi007{background-color:#35e0e81a;border-left-color:#35e0e8}.sgNode.svelte-wbsbny{background-color:#0b1215f5;border-color:#35e0e81f}.sgNode.selected.svelte-wbsbny{border-color:#35e0e8;box-shadow:0 0 0 1px #35e0e8,0 2px 10px #00000073}.sgNode.isOutput.svelte-wbsbny .sgNodeHeader.svelte-wbsbny{background-color:#35e0e840}.sgNodeHeader.svelte-wbsbny{border-bottom-color:#35e0e81f}.sgSelect.svelte-wbsbny,.sgText.svelte-wbsbny{border-color:#35e0e81f}.sgSelect.svelte-wbsbny option.svelte-wbsbny{background-color:#0b1215}.sgSelect.svelte-wbsbny:focus,.sgText.svelte-wbsbny:focus{border-color:#35e0e8}.sgCheck.svelte-wbsbny:focus-visible{outline-color:#35e0e8}.sgUnset.svelte-wbsbny{border-color:#35e0e81f}.sgUnset.svelte-wbsbny:hover:not(:disabled){border-color:#35e0e847}.sgUnset.svelte-wbsbny:focus-visible{outline-color:#35e0e8}.simple-tabs.svelte-1oqd18e{border-bottom-color:#35e0e81f}.simple-tab-active.svelte-1oqd18e{border-bottom-color:#35e0e8}.simple-tab-active.svelte-1oqd18e .simple-tab-icon.svelte-1oqd18e,.simple-tab-active.svelte-1oqd18e .simple-tab-label.svelte-1oqd18e{color:#35e0e8}.load-more-button.svelte-23mnz9{background-color:#35e0e833;border-color:#35e0e880;color:#35e0e8}.load-more-button.svelte-23mnz9:hover{background-color:#35e0e84d}.loading-spinner.svelte-gh77t9{border-color:#35e0e81f;border-top-color:#35e0e847}.retry-button.svelte-gh77t9{background-color:#35e0e8;color:#0b1215}.filter-input.svelte-1rpti7l{border-color:#35e0e84d}.filter-input.svelte-1rpti7l:focus{border-color:#35e0e8}.spin-promo-badge.svelte-5s5opu{border-color:#35e0e847}.no-offer-container.svelte-m5s1iy{background-color:#070c0fcc}.refresh-button.svelte-m5s1iy{background-image:linear-gradient(135deg,#ff5722,#ff9800,#35e0e8);border-color:#35e0e81f}.refresh-button.svelte-m5s1iy:hover:not(:disabled){border-color:#35e0e847}.optin__hero-fade.svelte-ga1m1g{background-image:linear-gradient(to top,#070c0ff2,#14141400 45%)}.report-root.svelte-18p16wl{background-color:#151f24}.report-header.svelte-18p16wl{border-bottom-color:#35e0e81f;background-color:#111b1f}.report-back.svelte-18p16wl{border-color:#35e0e81f}.report-input.svelte-18p16wl{background-color:#0b1215;border-color:#35e0e81f}.report-done.svelte-18p16wl{border-color:#35e0e81f}.trade-window.svelte-kfskmv{background-color:#151f24}.trade-message.svelte-kfskmv{border-color:#35e0e81f}.trade-message.svelte-kfskmv:focus{border-color:#35e0e81f}.trade-submit.disabled.svelte-kfskmv{background-color:#1d2c32}.profile-header.svelte-18dbnt3{border-bottom-color:#35e0e81f}.dynamic-shop-item.svelte-dif8c,.dynamic-shop-item.svelte-dif8c:hover,.dynamic-row.svelte-dif8c{border-color:#35e0e81f}.dynamic-row.svelte-dif8c:hover{border-color:#35e0e847}.next-step-hint.svelte-dif8c{color:#35e0e8}.dyn-buy-button.svelte-dif8c{border-color:#35e0e81f}.dyn-buy-button.virtual.svelte-dif8c{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);box-shadow:0 4px 12px #35e0e84d,0 2px 4px #0003,inset 0 1px #fff3}.dyn-buy-button.svelte-dif8c:hover:not(:disabled){border-color:#35e0e81f}.dyn-buy-button.svelte-dif8c:disabled{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.craft-recipe-card.svelte-ggnigm{background-color:#070c0f}.craft-icon.svelte-ggnigm,.craft-item-req.svelte-ggnigm{border-color:#35e0e847}.craft-item-req.missing.svelte-ggnigm{border-color:#35e0e847!important}.craft-timer.svelte-ggnigm{background-color:#151f24}.item-wrapper.selected.svelte-18k2d4k{box-shadow:0 0 0 2px #35e0e8}.section-title.svelte-gygf75 .material-icons.svelte-gygf75{color:#35e0e8}.btn-replace.svelte-gygf75{background-color:#35e0e8cc}.btn-replace.svelte-gygf75:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.highlight-name.svelte-1w0uz1r{background-color:#35e0e81a;border-color:#35e0e84d}.logo-image.svelte-1w0uz1r,.banner-color-swatch.svelte-1w0uz1r,.swatch.svelte-1w0uz1r,.swatch-fill.svelte-1w0uz1r,.text-notification.svelte-nrigjp,.share-btn.svelte-1524ito{border-color:#35e0e81f}.bubble-row.sent.svelte-jj9ljg .bubble.svelte-jj9ljg{background-color:#35e0e8;color:#0b1215}.quantity-button.svelte-jsgxg6:disabled{background-color:#24343a;border-color:#35e0e81f}.section-title.svelte-1rov8jm .material-icons.svelte-1rov8jm{color:#35e0e8}.tool-btn.svelte-1rov8jm,.attach-btn.svelte-1rov8jm{border-color:#35e0e81f}.tool-btn.active.svelte-1rov8jm{border-color:#35e0e8;background-color:#35e0e840}.fields.svelte-1rov8jm input[type=number].svelte-1rov8jm,.fields.svelte-1rov8jm select.svelte-1rov8jm,.fields.svelte-1rov8jm input[type=color].svelte-1rov8jm{border-color:#35e0e81f}.window-header.svelte-4fhlo6{border-bottom-color:#35e0e81f;background-color:#111b1f}.window-header-icon.svelte-4fhlo6,.section-title.svelte-wfs5t6 .material-icons.svelte-wfs5t6{color:#35e0e8}.form-select.svelte-wfs5t6{border-color:#35e0e81f}.form-select.svelte-wfs5t6:focus{border-color:#35e0e8}.form-select.svelte-wfs5t6 option.svelte-wfs5t6{background-color:#0b1215}.dye-color-input.svelte-wfs5t6{border-color:#35e0e81f}.dye-opacity-slider.svelte-wfs5t6::-webkit-slider-thumb{background-color:#35e0e8;border-color:#35e0e81f;color:#0b1215}.form-input.svelte-iy81sy,.form-select.svelte-iy81sy{border-color:#35e0e81f}.form-input.svelte-iy81sy:focus,.form-select.svelte-iy81sy:focus{border-color:#35e0e8}.form-select.svelte-iy81sy option.svelte-iy81sy{background-color:#0b1215}.add-all-button.svelte-1rj22es:disabled{background-color:#24343a;border-color:#35e0e81f}.lottery-window.theme-easter.svelte-1rj22es,.theme-easter.svelte-1rj22es .title-separator.svelte-1rj22es,.theme-easter.svelte-1rj22es .cost-column.themed-box.svelte-1rj22es{outline-color:#35e0e81f}.lottery-window.theme-neutral.svelte-1rj22es:after{border-color:#35e0e81f}.theme-neutral.svelte-1rj22es .draw-timer.svelte-1rj22es{border-color:#35e0e81f;background-color:#182429a6}.theme-neutral.svelte-1rj22es .cost-column.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .grand-prize-container.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .additional-prizes-box.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .last-draw-winners.themed-box.svelte-1rj22es{border-color:#35e0e81f;background-color:#18242980}.painted-badge-swatch.svelte-n0vhtc,.painted-inline-swatch.svelte-n0vhtc{border-color:#35e0e847}.milestone-number.svelte-6hxhl0{background-color:#182429}.milestone-bonus.svelte-6hxhl0{background-color:#151f24}.milestone-bonus.claimable.svelte-6hxhl0{background-color:#182429}.progression-summary.svelte-6hxhl0{border-top-color:#35e0e81f}.progression-details.svelte-6hxhl0{border-color:#35e0e81f}.offer-holder.svelte-1agthf7,.offer-holder.svelte-1agthf7:hover{background-color:#111b1f}.offer-name.svelte-1agthf7{color:#35e0e8}.filter-input.svelte-49w24t,.filter-select.svelte-49w24t{border-color:#35e0e84d}.filter-input.svelte-49w24t:focus,.filter-select.svelte-49w24t:focus{border-color:#35e0e8}.email-change-section.svelte-126q2op{border-top-color:#35e0e81f}.change-email-btn.svelte-126q2op{border-color:#35e0e8}.sidebar-tab.svelte-berov0{background-color:#151f24}.sidebar-tab.svelte-berov0:hover,.sidebar-tab.active.svelte-berov0,.sidebar-tab-badge.svelte-berov0{background-color:#35e0e8;color:#0b1215}.items-detail-root.svelte-dmu4q2{background-color:#151f24}.items-detail-header-bar.svelte-dmu4q2{border-bottom-color:#35e0e81f;background-color:#111b1f}.items-detail-back.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-header-icon.svelte-dmu4q2{color:#35e0e8}.items-detail-header-btn.svelte-dmu4q2,.preview-action-btn.svelte-dmu4q2{border-color:#35e0e81f}.preview-action-btn.svelte-dmu4q2:hover{border-color:#35e0e847}.preview-action-btn.active.svelte-dmu4q2{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.items-detail-wear-slider.svelte-dmu4q2,.items-detail-instance-overlay.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-paint-swatch.svelte-dmu4q2{border-color:#35e0e847}.items-detail-tabs-panel.svelte-dmu4q2{background-color:#111b1f;border-color:#35e0e81f}.items-detail-creator-link.svelte-dmu4q2{color:#35e0e8}.items-detail-stats-section.svelte-dmu4q2{border-top-color:#35e0e81f}.items-detail-stats-header.svelte-dmu4q2{color:#35e0e8}.items-detail-range-btn.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-range-btn.active.svelte-dmu4q2{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.items-detail-owner-row.svelte-dmu4q2{border-bottom-color:#35e0e81f}.items-detail-owner-name.svelte-dmu4q2:hover{color:#35e0e8}.items-detail-instance-table.svelte-dmu4q2 th.svelte-dmu4q2{background-color:#111b1f;border-bottom-color:#35e0e81f}.items-detail-instance-table.svelte-dmu4q2 td.svelte-dmu4q2,.items-detail-listing-row.svelte-dmu4q2{border-bottom-color:#35e0e81f}.items-detail-listing-seller.svelte-dmu4q2:hover,.no-clan-title.svelte-51j5cz,.clan-benefits.svelte-51j5cz h3.svelte-51j5cz{color:#35e0e8}.clan-benefits.svelte-51j5cz li.svelte-51j5cz:before{color:#35e0e8}.map-filter-select.svelte-51j5cz{border-color:#35e0e866}.map-filter-select.svelte-51j5cz:hover{border-color:#35e0e8}.map-filter-select.svelte-51j5cz:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.section-title.svelte-51j5cz{color:#35e0e8;border-left-color:#35e0e8}.day-arrow.svelte-51j5cz{border-color:#35e0e866;color:#35e0e8}.day-arrow.svelte-51j5cz:hover:not(:disabled){background-color:#35e0e833;border-color:#35e0e8}.day-input.svelte-51j5cz{border-color:#35e0e866}.day-input.svelte-51j5cz:focus{border-color:#35e0e8}.view-all-btn.svelte-51j5cz{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.view-all-btn.svelte-51j5cz:hover{background-color:#35e0e84d}.page-btn.svelte-51j5cz{background-color:#35e0e833;border-color:#35e0e866}.historical-day.svelte-51j5cz{border-color:#35e0e81f}.day-header.svelte-51j5cz{border-bottom-color:#35e0e81f}.day-label.svelte-51j5cz{color:#35e0e8}.clan-side.comparison-clan.no-comparison.svelte-51j5cz,.clan-side.svelte-51j5cz .clan-logo-small.svelte-51j5cz{border-color:#35e0e81f}.stat-row.svelte-51j5cz{border-bottom-color:#35e0e81f}.no-participation-title.svelte-51j5cz,.eligible-maps.svelte-51j5cz h3.svelte-51j5cz{color:#35e0e8}.eligible-maps.svelte-51j5cz li.svelte-51j5cz{background-color:#35e0e81a;border-color:#35e0e84d}.game-announcement.svelte-1m80xxc{border-color:#35e0e81f}.game-announcement.svelte-1m80xxc:before{border-bottom-color:#35e0e847}.ga-bundle.svelte-1m80xxc{border-color:#35e0e81f}.ga-bundle.svelte-1m80xxc:hover,.ga-action-btn.svelte-1m80xxc,.ga-action-btn.svelte-1m80xxc:hover,.ga-action-btn.disabled.svelte-1m80xxc:hover{border-color:#35e0e847}.login-button.svelte-16z1lxi{background-color:#070c0f;border-color:#35e0e847}.terms-privacy-notice.svelte-16z1lxi a.svelte-16z1lxi{color:#35e0e8}.item-wrapper.selected.svelte-zhgogl{box-shadow:0 0 0 2px #35e0e8}.loading-spinner.svelte-zhgogl{border-color:#35e0e81f}.load-more-btn.svelte-zhgogl{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-zhgogl:hover{background-color:#35e0e84d}.load-more-btn.svelte-zhgogl:active{background-color:#35e0e866}.tab.svelte-1o3qul6:hover,.tab-active.svelte-1o3qul6,.tab-active.svelte-1o3qul6:hover{border-bottom-color:#35e0e847}.trading-column-header.svelte-1r9fijr{border-bottom-color:#35e0e81f}.confirm-box.svelte-1r9fijr,.start-box.svelte-1r9fijr{background-color:#151f24;border-color:#35e0e81f}.start-input.svelte-1r9fijr{border-color:#35e0e81f}.start-input.svelte-1r9fijr:focus{border-color:#35e0e81f}.section-title.svelte-4e4ust .material-icons.svelte-4e4ust{color:#35e0e8}.texture-settings.svelte-4e4ust{border-color:#35e0e81f}.toggle-switch.svelte-4e4ust input:checked+.slider.svelte-4e4ust{background-color:#35e0e8;color:#0b1215}.form-select.svelte-4e4ust{border-color:#35e0e81f}.form-select.svelte-4e4ust:focus{border-color:#35e0e8}.form-select.svelte-4e4ust option.svelte-4e4ust{background-color:#0b1215}.texture-upload-item.svelte-4e4ust{border-color:#35e0e81f}.uploading-badge.svelte-4e4ust{background-color:#35e0e8cc}.texture-image.svelte-4e4ust{border-color:#35e0e81f}.btn-replace.svelte-4e4ust{background-color:#35e0e8cc}.btn-replace.svelte-4e4ust:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.item-wrapper.selected.svelte-1l3mtrv{box-shadow:0 0 0 2px #35e0e8}.news-item.svelte-1ult4vg{border-left-color:#35e0e8}.news-item.svelte-1ult4vg a{color:#35e0e8}.menu-container.svelte-mqcul7{background-color:#070c0f}.menu-item.active.svelte-mqcul7{border-bottom-color:#35e0e847}button.svelte-mqcul7{background-color:#35e0e8;color:#0b1215}button.svelte-mqcul7:hover{box-shadow:0 0 60px #35e0e875}.start-button.svelte-mqcul7{background-color:#35e0e8;color:#0b1215}.start-button[disabled].svelte-mqcul7{background-color:#1d2c32}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7{background-color:#0b1215;border-color:#35e0e8;box-shadow:0 0 #35e0e833}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7:hover{box-shadow:0 0 0 2px #35e0e833}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7:checked{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.paint-container.svelte-10qrqvt{background-color:#151f24bf}.slider-arrow.svelte-10qrqvt{border-color:#35e0e81f}.slider-arrow.left.svelte-10qrqvt .slider-arrow-icon.svelte-10qrqvt{border-right-color:#35e0e847}.slider-arrow.right.svelte-10qrqvt .slider-arrow-icon.svelte-10qrqvt{border-left-color:#35e0e847}.swatch.svelte-10qrqvt{border-color:#35e0e81f}.swatch.locked.selected.svelte-10qrqvt{border-color:#35e0e847}.swatch-fill.svelte-10qrqvt,.btn.svelte-10qrqvt{border-color:#35e0e81f}.inventory-filter.svelte-ga3en0{background-color:#111b1f;border-color:#35e0e81f}.filter-header.svelte-ga3en0{background-color:#111b1f}.reset-btn.svelte-ga3en0,.reset-btn.svelte-ga3en0:hover,.expand-btn.svelte-ga3en0,.expand-btn.svelte-ga3en0:hover{background-color:#24343a}.filter-content.svelte-ga3en0{border-top-color:#35e0e81f}.search-input.svelte-ga3en0,.season-select.svelte-ga3en0,.sort-select.svelte-ga3en0,.category-select.svelte-ga3en0{background-color:#151f24;border-color:#35e0e81f}.filter-tabs.svelte-ga3en0{border-bottom-color:#35e0e81f}.filter-tab.svelte-ga3en0{background-color:#151f24}.filter-tab.svelte-ga3en0:hover{background-color:#182429}.filter-tab.active.svelte-ga3en0{background-color:#35e0e8;color:#0b1215}.toggle-all-btn.svelte-ga3en0{background-color:#1d2c32}.toggle-all-btn.svelte-ga3en0:hover{background-color:#24343a}.filter-panel.svelte-ga3en0{background-color:#111b1f}.filter-item-wrapper.svelte-ga3en0{border-color:#35e0e81f}.filter-item.svelte-ga3en0:hover{background-color:#151f24}.only-btn.svelte-ga3en0{background-color:#1d2c32}.only-btn.svelte-ga3en0:hover{background-color:#24343a}.profile-search-form.svelte-fo44ss{background-color:#0b1215;border-color:#35e0e81f}.profile-search-form.svelte-fo44ss:focus-within{border-color:#35e0e8}.follow-root.svelte-1ef5zjv{background-color:#151f24}.follow-header.svelte-1ef5zjv{border-bottom-color:#35e0e81f;background-color:#111b1f}.follow-back.svelte-1ef5zjv{border-color:#35e0e81f}.follow-header-icon.svelte-1ef5zjv{color:#35e0e8}.follow-tabs.svelte-1ef5zjv{border-bottom-color:#35e0e81f;background-color:#111b1f}.follow-tab.active.svelte-1ef5zjv{border-bottom-color:#35e0e8}.follow-row.svelte-1ef5zjv{background-color:#0b1215cc;border-color:#35e0e81f}.follow-btn.svelte-1ef5zjv{background-color:#35e0e8;color:#0b1215}.follow-btn.following.svelte-1ef5zjv,.price-tag.svelte-1q06uv7{border-color:#35e0e81f}.buy-button.svelte-1q06uv7:disabled{background-color:#24343a}.buy-button.svelte-1q06uv7:disabled:hover{background-color:#24343a}.io-code-display.svelte-owjkr{border-color:#35e0e81f}.music-player.svelte-1ei19qi{background-color:#0b1215f2}.music-btn.svelte-1ei19qi{border-color:#35e0e847}.section-title.svelte-16sjsp2 .material-icons.svelte-16sjsp2{color:#35e0e8}.toggle-switch.svelte-16sjsp2 input:checked+.slider.svelte-16sjsp2{background-color:#35e0e8;color:#0b1215}.form-select.svelte-16sjsp2,.form-input.svelte-16sjsp2{border-color:#35e0e81f}.form-select.svelte-16sjsp2:focus,.form-input.svelte-16sjsp2:focus{border-color:#35e0e8}.form-select.svelte-16sjsp2 option.svelte-16sjsp2{background-color:#0b1215}.texture-upload-item.svelte-16sjsp2{border-color:#35e0e81f}.uploading-badge.svelte-16sjsp2{background-color:#35e0e8cc}.texture-image.svelte-16sjsp2,.post-item-card.svelte-10yvzvw,.post-item-card.svelte-10yvzvw:hover{border-color:#35e0e81f}.post-content-thumb.svelte-10yvzvw{background-color:#0b1215}.post-content-action.svelte-10yvzvw{color:#35e0e8}.post-follow-btn.svelte-10yvzvw{background-color:#35e0e8;color:#0b1215}.post-follow-btn.svelte-10yvzvw:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.postResRo.svelte-10yvzvw,.postResRoD.svelte-10yvzvw{border-bottom-color:#35e0e81f}.post-text.svelte-10yvzvw a{color:#35e0e8}.post-footer.svelte-10yvzvw{border-top-color:#35e0e81f}.vote-btn.svelte-10yvzvw{border-color:#35e0e81f}.vote-btn.svelte-10yvzvw:hover:not(:disabled){border-color:#35e0e847}.vote-btn.svelte-10yvzvw:disabled{border-color:#35e0e81f}.vote-btn-done.svelte-10yvzvw{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.vote-btn-done.svelte-10yvzvw:hover:not(:disabled){background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.owned-count-overlay.svelte-9ff17r{border-color:#35e0e81f}.section-title.svelte-3rvofx .material-icons.svelte-3rvofx{color:#35e0e8}.form-textarea.svelte-3rvofx{border-color:#35e0e81f}.form-textarea.svelte-3rvofx:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.automatic-attributes.svelte-3rvofx{border-color:#35e0e81f}.automatic-attributes-header.svelte-3rvofx{background-color:#35e0e81a;border-bottom-color:#35e0e81f}.automatic-attributes-title.svelte-3rvofx .material-icons.svelte-3rvofx{color:#35e0e8}.loot-updated-name.svelte-1ydnong{color:var(--highlight-color, rgb(53, 224, 232))}.popup.svelte-1wz7ymp{background-color:#151f24}.popup.translucent.svelte-1wz7ymp{background-color:#151f24bf}.popup.slim-border.svelte-1wz7ymp{border-color:#35e0e81f}.sort-select.svelte-111gya4{background-color:#151f24;border-color:#35e0e81f}.sort-select.svelte-111gya4:hover{border-color:#35e0e847}.sort-select.svelte-111gya4:focus{border-color:#35e0e8}.searching-indicator.svelte-111gya4{color:#35e0e8}.searching-indicator.svelte-111gya4:before{border-color:#35e0e8}.clan-view-root.svelte-5j94nj{background-color:#151f24}.clan-view-header-bar.svelte-5j94nj{border-bottom-color:#35e0e81f;background-color:#111b1f}.clan-view-back.svelte-5j94nj{border-color:#35e0e81f}.clan-view-header-icon.svelte-5j94nj{color:#35e0e8}.clan-view-identity.svelte-5j94nj{background-color:#111b1f;border-color:#35e0e81f}.clan-view-logo.svelte-5j94nj,.clan-view-logo-placeholder.svelte-5j94nj{background-color:#111b1f}.clan-view-info.svelte-5j94nj{border-top-color:#35e0e81f}.clan-view-link.svelte-5j94nj{color:#35e0e8}.clan-view-role-header.svelte-5j94nj{color:#35e0e8;border-bottom-color:#35e0e81f}.social-search-input.svelte-1dyc40r{background-color:#0b1215;border-color:#35e0e81f}.social-search-input.svelte-1dyc40r:focus{border-color:#35e0e8}.social-search-btn.svelte-1dyc40r{background-color:#0b1215;border-color:#35e0e81f}.social-search-btn.svelte-1dyc40r:hover{background-color:#111b1f;border-color:#35e0e81f}.social-compose-btn.svelte-1dyc40r,.social-compose-btn.svelte-1dyc40r:hover{background-color:#35e0e8;color:#0b1215}.item-detail-container.svelte-olnzsm{border-left-color:#35e0e81f}.item-detail-header.svelte-olnzsm{border-bottom-color:#35e0e81f}.item-showcase-section.svelte-olnzsm{border-right-color:#35e0e81f}.ownership-count.svelte-olnzsm,.full-details-btn.svelte-olnzsm{border-color:#35e0e81f}.tabs-section.svelte-olnzsm{border-bottom-color:#35e0e81f}.loading-spinner.svelte-olnzsm{border-color:#35e0e81f}.load-more-btn.svelte-olnzsm{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-olnzsm:hover{background-color:#35e0e84d}.load-more-btn.svelte-olnzsm:active{background-color:#35e0e866}.stats-controls.svelte-olnzsm{border-bottom-color:#35e0e81f}.days-back-select.svelte-olnzsm{border-color:#35e0e81f}.days-back-select.svelte-olnzsm:hover:not(:disabled){border-color:#35e0e81f}.days-back-select.svelte-olnzsm:focus{border-color:#35e0e8}.mission-briefing.svelte-1849bws{background-image:linear-gradient(135deg,#0b1215,#111b1f)}.mission-header.svelte-1849bws{background-image:linear-gradient(135deg,#000,#0b1215)}.abort-btn.svelte-1849bws{background-image:linear-gradient(135deg,#151f24,#1d2c32);border-color:#35e0e847}.abort-btn.svelte-1849bws:hover{background-image:linear-gradient(135deg,#1d2c32,#24343a)}.deploy-btn.svelte-1849bws{border-color:#35e0e8}th.svelte-1enb567{color:#35e0e8}td.svelte-1enb567{border-bottom-color:#35e0e81f}.page-button.svelte-1enb567{border-color:#35e0e8}.page-button.svelte-1enb567:hover:not(:disabled){background-color:#35e0e833}.page-button.svelte-1enb567:disabled{border-color:#35e0e84d}.page-indicator.svelte-1enb567{color:#35e0e8}.item-display-container.svelte-1p13km7{border-color:#35e0e81f}.section-title.svelte-sr5bk2 .material-icons.svelte-sr5bk2{color:#35e0e8}.tool-btn.svelte-sr5bk2,.attach-btn.svelte-sr5bk2{border-color:#35e0e81f}.tool-btn.active.svelte-sr5bk2{border-color:#35e0e8;background-color:#35e0e840}.fields.svelte-sr5bk2 input[type=number].svelte-sr5bk2{border-color:#35e0e81f}.wallet-root.svelte-l0gwpc{background-color:#151f24}.wallet-catalog-btn.svelte-l0gwpc{border-color:#35e0e81f}.currency-card.svelte-l0gwpc{background-image:linear-gradient(135deg,#111b1f,#182429);border-color:#35e0e81f}.items-grid.svelte-l0gwpc{background-color:#111b1f}.main-button.svelte-whnh40{background-color:#151f24;border-color:#35e0e81f}.main-button.svelte-whnh40:disabled,.main-button-disabled.svelte-whnh40{background-color:#0b1215}.main-button.svelte-whnh40:disabled:hover,.main-button-disabled.svelte-whnh40:hover{background-color:#0b1215}.main-button.svelte-whnh40:hover:not(:disabled):not(.main-button-disabled){background-color:#182429}.main-button-accept-secondary.svelte-whnh40{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.sort-btn.active.svelte-9t0md3{background-color:#35e0e833;color:#35e0e8;border-color:#35e0e8}.month-select.svelte-9t0md3 option.svelte-9t0md3{background-color:#0b1215}.section-title.svelte-1qb7o10 .material-icons.svelte-1qb7o10{color:#35e0e8}.paint-mode-btn.svelte-1qb7o10{border-color:#35e0e81f}.paint-mode-btn.svelte-1qb7o10:hover:not(:disabled){border-color:#35e0e847}.paint-mode-btn.active.svelte-1qb7o10{background-color:#35e0e826;border-color:#35e0e8;color:#35e0e8}.paint-color-input.svelte-1qb7o10{border-color:#35e0e81f}.paint-preview-base.svelte-1qb7o10{border-top-color:#35e0e81f}.preview-base-input.svelte-1qb7o10{border-color:#35e0e81f}.preview-base-input.svelte-1qb7o10:focus{border-color:#35e0e8}.preview-base-quick.svelte-1qb7o10{border-color:#35e0e81f}.preview-base-quick.svelte-1qb7o10:hover:not(:disabled){border-color:#35e0e8;color:#35e0e8}.buy-button.svelte-1ov1s5h{border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:hover:not(:disabled){border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:disabled{background-image:linear-gradient(135deg,#24343a,#1d2c32);border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:disabled:hover{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.ownership-count.svelte-kchhu3{border-color:#35e0e81f} +`});var Du,Fu=w(()=>{Du=`:root{--kute-cyan: #35e0e8;--kute-cyan-soft: rgba(53, 224, 232, .14);--kute-pink: #f5479b;--kute-pink-soft: rgba(245, 71, 155, .16);--kute-bg: #0b1215;--kute-panel: #111b1f;--kute-raised: #182429;--kute-line: rgba(53, 224, 232, .12);--kute-line-strong: rgba(53, 224, 232, .28);--kute-text: #eaf7f8;--kute-muted: rgba(234, 247, 248, .62);--kute-faint: rgba(234, 247, 248, .38);--kute-radius: 8px;--kute-radius-lg: 14px;--kute-paw: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23f5479b'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-paw-cyan: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%230b1215'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-ears: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 46 14'%3E%3Cpath fill='rgba(11,18,21,.78)' d='M1 14 9 1l8 13Zm28 0 8-13 8 13Z'/%3E%3Cpath fill='rgba(245,71,155,.7)' d='M5.5 14 9 7.5l3.5 6.5Zm28 0 3.5-6.5 3.5 6.5Z'/%3E%3C/svg%3E");--kute-paw-solid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%2335e0e8'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-grad: linear-gradient(90deg, var(--kute-cyan), var(--kute-pink));--div-black: rgba(11, 18, 21, .78);--div-grey: rgba(53, 224, 232, .07);--div-shadow: 0 2px 10px rgba(0, 0, 0, .5);--blue: var(--kute-cyan);--highlight-color: var(--kute-cyan);--highlight-hover-color: #5ce9ef;--card-bg-color: rgba(24, 36, 41, .7);--dark-bg-color: rgba(11, 18, 21, .5);--border-subtle: 1px solid var(--kute-line);--border-radius-sm: 6px;--border-radius-md: var(--kute-radius);--border-radius-lg: var(--kute-radius-lg);--box-shadow-lg: 0 18px 44px rgba(0, 0, 0, .6)}::selection{background:var(--kute-pink);color:#fff}a,a:visited{color:var(--kute-cyan)}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background-color:transparent;box-shadow:none}::-webkit-scrollbar-thumb{background:var(--kute-line-strong);border:3px solid transparent;border-radius:999px;background-clip:padding-box;box-shadow:none}::-webkit-scrollbar-thumb:hover{background-color:var(--kute-cyan)}#windowHolder.popupWin{background-color:#050a0cb8}#menuWindow.dark{background-color:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6,0 0 0 1px #0006}.settingsHeader{background-color:var(--kute-bg);border-bottom:1px solid var(--kute-line)}.setSugBox2{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);transition:background-color .15s,border-color .15s}.setSugBox2:hover{border-width:1px;background-color:var(--kute-raised);border-color:var(--kute-cyan)}.advancedSlider{background-color:#24343a;border-radius:999px}.advancedSlider:before{border-radius:50%;background:#fff var(--kute-paw) center / 20px no-repeat}input:checked+.advancedSlider{background-color:var(--kute-cyan)}input:checked+.advancedSlider:before{background-image:var(--kute-paw-cyan)}input:checked+.advancedSlider:after{color:var(--kute-bg)}.hostPresetBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px}.hostPresetBtn:hover{background-color:var(--kute-pink);color:#fff}#settingsTabLayout{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius);overflow:hidden}.settingTab{background-color:transparent;color:var(--kute-muted);border-bottom:3px solid transparent;transition:color .15s,background-color .15s}#menuWindow.dark .settingTab{color:var(--kute-muted)}.settingTab:hover{border-bottom:3px solid var(--kute-line-strong);background-color:var(--kute-cyan-soft)}#menuWindow.dark .settingTab:hover{color:var(--kute-text)}.dark .tabANew,.dark .tabANew:hover{border-bottom:3px solid var(--kute-cyan)!important;background-color:var(--kute-cyan-soft)}#menuWindow.dark .tabANew{color:var(--kute-cyan)}.setHed,.setHedS{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-left:3px solid var(--kute-cyan);border-radius:var(--kute-radius);transition:background-color .15s,border-color .15s}.setHed:hover,.setHedS:hover{background-color:#1d2c32;border-left-color:var(--kute-pink)}.setHed .plusOrMinus{color:var(--kute-cyan)}.setBodH{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.settName,.settNameSmall{border-bottom:1px solid var(--kute-line);color:var(--kute-muted)!important}.settNameIn:hover{background-color:var(--kute-cyan-soft)!important;color:var(--kute-text)!important}.settingsBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px;transition:background-color .15s,color .15s}#menuWindow.dark .settingsBtn{color:var(--kute-bg)}.settingsBtn:hover,#menuWindow.dark .settingsBtn:hover{background-color:var(--kute-pink);color:#fff}#settSearch,.inputGrey2,.sliderVal,#loadoutName,#loadoutSelect,#itemSearch{background:var(--kute-raised);color:var(--kute-text);border:1px solid var(--kute-line);border-radius:6px;outline:none;transition:border-color .15s}#settSearch:focus,.inputGrey2:focus,.sliderVal:focus,#loadoutName:focus,#loadoutSelect:focus{border-color:var(--kute-cyan)}#loadoutName{background:var(--kute-raised)!important;border:1px solid var(--kute-line)!important}.sliderVal{border-color:var(--kute-line-strong)!important}#settSearch::placeholder,#loadoutName::placeholder{color:var(--kute-faint)}.inputGrey2 option,#loadoutSelect option{background:var(--kute-panel);color:var(--kute-text)}#loadoutToolbar{background-color:var(--kute-panel);border-bottom:1px solid var(--kute-line)}.loadoutTab{background-color:transparent;transition:background-color .15s,color .15s}.loadoutTab:hover{background-color:var(--kute-cyan-soft)}.loadoutTabSel,.loadoutTabSel:hover{background-color:var(--kute-cyan-soft);border-bottom-color:var(--kute-cyan);color:var(--kute-cyan)!important}#charPreviewSlot{background:radial-gradient(circle at 50% 42%,rgba(53,224,232,.1),transparent 62%);border-right:1px solid var(--kute-line)}.custContainer,.custSubContainer{background-color:var(--kute-panel);border-color:var(--kute-line);box-shadow:none}.custContainer{border-radius:var(--kute-radius);transition:border-color .15s,background-color .15s}.custContainer.contCanSelect:hover{background-color:var(--kute-raised);border-color:var(--kute-cyan)}.custSubContainer{border-radius:0 var(--kute-radius) 0 var(--kute-radius)}.custClear{border-radius:6px}.custBack{background:var(--kute-raised);border-radius:6px}.custBack:hover{background:var(--kute-cyan-soft)}.classCard{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-radius:var(--kute-radius);overflow:hidden;transition:border-color .15s}.classCard:hover{border-color:var(--kute-cyan)}.classXPBar{background-color:var(--kute-bg)}.clsXPBarC{background-color:var(--kute-cyan)}.loadoutBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px}.loadoutBtn:hover{background-color:var(--kute-pink);color:#fff}.slider,.slider2{background-color:#24343a;border-radius:999px}.slider:before,.slider2:before{border-radius:50%;width:22px;background-color:#fff;background-image:var(--kute-paw);background-size:14px;background-position:center;background-repeat:no-repeat}.slider:before{left:5px}input:checked+.slider,input:checked+.slider2,input:checked+.sliderSml,input:checked+.sliderCent{background-color:var(--kute-cyan)}input:checked+.slider:before{transform:translate(28px);background-image:var(--kute-paw-cyan)}input:checked+.slider2:before{transform:translate(20px);background-image:var(--kute-paw-cyan)}input:focus+.slider,input:focus+.slider2,input:focus+.sliderSml{box-shadow:0 0 0 2px var(--kute-cyan-soft)}.sliderSml,.sliderCent{background-color:#24343a}.sliderM{background-color:#24343a;height:8px;border-radius:999px;margin-bottom:0}.sliderM::-webkit-slider-thumb{width:22px;height:22px;border-radius:50%;background:#fff var(--kute-paw) center / 14px no-repeat;box-shadow:0 0 0 3px var(--kute-cyan),0 2px 6px #00000080}#playerHeaderEl{background:var(--kute-grad) bottom / 100% 1px no-repeat,linear-gradient(#070c0feb,#070c0fbd)}.ph-item[class*=svelte-],.nav-item[class*=svelte-]{border-radius:12px;transition:background-color .15s}.ph-item[class*=svelte-]:hover,.nav-item[class*=svelte-]:hover{background-color:var(--kute-cyan-soft)}.nav-item[class*=svelte-] .material-icons,.nav-item[class*=svelte-] .material-icons-outlined{color:var(--kute-cyan)}#menuItemContainer .menuItem{position:relative;border-radius:10px;transition:transform .15s,background-color .15s}#menuItemContainer .menuItem:hover{background:linear-gradient(90deg,var(--kute-cyan-soft),transparent 85%);transform:translate(6px)}#menuItemContainer .menuItem:hover .menuItemTitle{color:var(--kute-cyan)}#menuItemContainer .menuItem:not(.bpItem):not(.dsItem):before{content:"";position:absolute;left:-18px;top:50%;width:14px;height:14px;background:var(--kute-paw-solid) center / contain no-repeat;opacity:0;transform:translate(-4px,-50%) rotate(-20deg);transition:opacity .15s,transform .15s;pointer-events:none}#menuItemContainer .menuItem:not(.bpItem):not(.dsItem):hover:before{opacity:1;transform:translateY(-50%) rotate(-20deg)}#menuItemContainer .menuItemIcon{color:var(--kute-cyan)}#menuItemContainer .sidebarDivider{background:linear-gradient(90deg,var(--kute-line-strong),transparent);border:0}@container not style(--kute-classic-menu: 1){#subLogoButtons>.actionCard{background:var(--kute-panel);border-color:rgba(var(--card-rgb),.45);border-radius:var(--kute-radius);box-shadow:none;transition:background-color .15s,border-color .15s}#subLogoButtons>.actionCard:hover{background:var(--kute-raised);border-color:rgb(var(--card-rgb))}#subLogoButtons>.actionCard .cardIcon{color:rgb(var(--card-rgb))}.popRailCard[class*=svelte-]{background:var(--kute-panel);border-color:var(--kute-line-strong);border-radius:var(--kute-radius);transition:background-color .15s,border-color .15s}.popRailCard[class*=svelte-]:hover{background:var(--kute-raised);border-color:var(--kute-cyan)}.popRailPlay[class*=svelte-]{color:var(--kute-cyan)}#customizeButton{border-radius:var(--kute-radius)}}.window-header[class*=svelte-],#loadoutToolbar,.profile-detail-header-bar[class*=svelte-],.instructionsHeader,.settingsHeader{background-image:var(--kute-grad);background-size:100% 1px;background-position:bottom;background-repeat:no-repeat}:is(#windowHolder,#popupHolder,#app) .button{border-radius:var(--kute-radius);background-color:#0b121599}:is(#windowHolder,#popupHolder,#app) .button:hover,:is(#windowHolder,#popupHolder,#app) .button:active{border-color:var(--kute-cyan)!important}:is(#windowHolder,#popupHolder,#app) .button:not([class*=buttonR]):not([class*=buttonG]):not([class*=buttonP]):not([class*=buttonO]):not([class*=buttonB]):not(:hover){border-color:var(--kute-line-strong)}#chatList{background-color:#0b12158c;border-radius:var(--kute-radius) var(--kute-radius) 0 0}#chatInputHolder{border-radius:0 0 var(--kute-radius) var(--kute-radius)}#chatInput{background-color:#182429cc;border:1px solid var(--kute-line);border-radius:6px}#chatInput:focus{border-color:var(--kute-cyan);outline:none}#instructionsUpdate{background:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6;overflow:hidden}.instructionsHeader,.instructionsTabs{background-color:var(--kute-panel);box-shadow:none}.instructionsHeader{border-bottom:1px solid var(--kute-line)}.instructionsTab{border-top:1px solid var(--kute-line);transition:background-color .15s,color .15s}.instructionsTab:hover{background-color:var(--kute-cyan-soft);border-color:var(--kute-line);color:var(--kute-cyan)}#ammoHolder,#bottomLeftPlayer,#timerHolder,.statIcon,#leaderboardHolder,#teamScores,#chatInputHolder{border-radius:var(--kute-radius)}#ammoHolder .greyInner,.statIcon .greyInner,#timerInner,#leaderContainer,#bottomLeftPlayerLeft,#bottomLeftPlayerRight,#bottomLeftTeamType,#bottomLeftTeamName,#bottomLeftHealthBar{border-radius:6px}#bottomLeftPlayerLeft{overflow:hidden}#ammoHolder,#bottomLeftPlayer{box-shadow:inset 0 -2px 0 var(--kute-cyan)}#bottomLeftPlayer{position:relative}#ammoHolder:before,#bottomLeftPlayer:before{content:"";position:absolute;top:-12px;width:46px;height:14px;background:var(--kute-ears) no-repeat center / contain;pointer-events:none}#ammoHolder:before{right:20px}#bottomLeftPlayer:before{left:19px}#reloadMsg{border-radius:6px}#ingameFPS,#pingText{color:var(--kute-cyan)}.bigMenTabs{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.bigMenTab:hover{border-bottom:3px solid var(--kute-line-strong)}.bigMenTabA,.bigMenTabA:hover{border-bottom:3px solid var(--kute-cyan);color:var(--kute-cyan)}#popupContent,#bundlePop,#premiumPop,#policePopC,#guidePopup,#chargeModalCard,#spinHistoryPop,.confPremiumPop,.vouchPop,.rankedPop,.promoPop,.pfpPop,.dropsPop,.accountCreatePop,.imagePop,.badgePop,.imageNewPop,.importPop,.disconnectPop,.eventPop,.bp-generic-pop,.bp-purchase-pop,.spinErrorPop,.charmErrorPop,.spinHistoryStatsPop,.loadingPop,.autoLoadPop,.editMapPop,.responsePop,.ticketPop,.dxp-pop,.abTestsPop,.registerGiftPop,.rankedQueueModal,.rankedMenuModal,.communityPopup,.tutorialPopup,.defaultModal,.krunkCupJoinModal,.krunkCupViewModal,.exchangeModal,.itemsModal,.moreKrunkerPopup,.infoPop,.contPop,.io-popup-container,.wallet-root[class*=svelte-]{background-color:var(--kute-bg);border-radius:var(--kute-radius-lg);box-shadow:0 0 0 1px var(--kute-line),0 24px 60px #000000a6}.twitchPop,.nftPop,.confPop,.clientExitPop,#confPurchItemPop,.metaPop,.polConfPop{border-color:var(--kute-line);border-radius:var(--kute-radius-lg)}.hostHeader,#stickyHostH,.imageListHeader,.imageListFooter,.spinHistoryHeader,.popHeader,.dropsPopHeader,.serverHeader,#itemSearchH,#bindsHeader,.tooltip2,.crftRcpeCrd,.bundleCrd,.bundle-card[class*=svelte-],.moreKrunkerOption[class*=svelte-],.items-grid[class*=svelte-],.filter-panel[class*=svelte-],.territory-map-container[class*=svelte-],.data-table[class*=svelte-] thead{background-color:var(--kute-panel)}#initLoader,.clsStatXPBar,.elo-progress-bar-bg{background-color:var(--kute-bg)}.featured-section[class*=svelte-],.stream-card[class*=svelte-],.emoji-panel[class*=svelte-],.verification-banner[class*=svelte-],.music-player[class*=svelte-],.market-card[class*=svelte-],.rank-popup-content{background-color:var(--kute-panel)}.hide-button[class*=svelte-],.kuteTopButton{background-color:var(--kute-raised)}.hide-button[class*=svelte-]:hover,.kuteTopButton:hover{background-color:#1d2c32}.contactsHeader{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-left:3px solid var(--kute-cyan);border-radius:var(--kute-radius)}.bpInfoBalloon,.bpInfoBalloon:after,.io-separator span{background-color:var(--kute-bg)}.bpClaimB,.bp-unlock-header,.io-button,.mapLICat,#tradeChatInput,.tradeChatItem,.main-button[class*=svelte-]{background-color:var(--kute-raised)}.io-button:hover,.mapLICat:hover,.main-button[class*=svelte-]:hover:not(:disabled):not(.main-button-disabled){background-color:#1d2c32}.main-button[class*=svelte-],.moreKrunkerOption[class*=svelte-],.territory-map-container[class*=svelte-],.territory-details-panel[class*=svelte-],.inventory-filter[class*=svelte-],.filter-item-wrapper[class*=svelte-]{border-color:var(--kute-line)}.moreKrunkerOption[class*=svelte-]:hover{border-color:var(--kute-cyan)}.inventory-filter[class*=svelte-],.filter-header[class*=svelte-]{background-color:var(--kute-panel)}.currency-card[class*=svelte-]{background:var(--kute-panel);border-color:var(--kute-line)}.search-input[class*=svelte-],.season-select[class*=svelte-],.sort-select[class*=svelte-],.category-select[class*=svelte-],.filter-tab[class*=svelte-],.filter-item[class*=svelte-]:hover,.reset-btn[class*=svelte-],.expand-btn[class*=svelte-],.toggle-all-btn[class*=svelte-],.only-btn[class*=svelte-]{background:var(--kute-raised);border-color:var(--kute-line)}.filter-tab[class*=svelte-]:hover,.reset-btn[class*=svelte-]:hover,.expand-btn[class*=svelte-]:hover,.toggle-all-btn[class*=svelte-]:hover,.only-btn[class*=svelte-]:hover{background:#1d2c32}.filter-tab.active[class*=svelte-]{background:var(--kute-cyan);color:var(--kute-bg)}.setSugBox,.viewAllUpdates,.bSliderBtn,.bundleSliderBtn,.dropsSliderBtn,.challHeadrI,.sub-tab-panel[class*=svelte-]{border-color:var(--kute-line-strong)}.challMapCrd:not(.chalCardH){border-color:var(--kute-line-strong)}.guideHeader,.guideSubH,.mailFrom,.speedRunItem,#hostActionH,#custStreakSelH{border-color:var(--kute-line)}.store-tabs[class*=svelte-],.tabs-container[class*=svelte-],#menuWindow.eterno .store-tabs[class*=svelte-]{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.store-tab[class*=svelte-]:hover,.tab[class*=svelte-]:hover{border-bottom-color:var(--kute-line-strong)}.store-tab-active[class*=svelte-],.store-tab-active[class*=svelte-]:hover,.tab-active[class*=svelte-],.tab-active[class*=svelte-]:hover,.tabHeader.selected{border-bottom-color:var(--kute-cyan);color:var(--kute-cyan)}#menuWindow.eterno{background-color:var(--kute-bg);border-color:var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6;animation:none}.followBut,#hostMenuBtn,.chargeModalBtn,.redVouchBtn,.searchBtn,.hostToggle,.subPassChg,.updDisN,#partnerProgB,#partnrUpBtn,#findGameBtn,.joinBtn,.openCollection,#spinMultiToggleBtn,.clanSubmitBtn,.main-button-accept-secondary[class*=svelte-]{background-color:var(--kute-cyan);border-color:var(--kute-cyan);color:var(--kute-bg)}input:checked+.optCheck{background-color:var(--kute-cyan)}.quickJoin,.followBack,.io-input-field:focus{border-color:var(--kute-cyan)}.io-section-header:after{background:var(--kute-cyan)}.counterBadge[class*=svelte-]{background:var(--kute-pink);color:#fff}.wallet-catalog-btn[class*=svelte-] i{color:var(--kute-cyan)}.stack-collapse-fab[class*=svelte-]{background:var(--kute-cyan)}.card-title[class*=svelte-],.view-title[class*=svelte-],.table-header[class*=svelte-],.no-clan-title[class*=svelte-],.no-participation-title[class*=svelte-],.clan-benefits[class*=svelte-] h3,.clan-benefits[class*=svelte-] li:before,.eligible-maps[class*=svelte-] h3,.day-label[class*=svelte-],.day-arrow[class*=svelte-],.view-all-btn[class*=svelte-]{color:var(--kute-cyan)}.section-title[class*=svelte-]{border-left-color:var(--kute-cyan);color:var(--kute-cyan)}.category-card[class*=svelte-],.map-filter-select[class*=svelte-],.day-arrow[class*=svelte-],.day-input[class*=svelte-],.data-table[class*=svelte-] thead tr{border-color:var(--kute-line-strong)}.category-card[class*=svelte-]:hover,.map-filter-select[class*=svelte-]:hover,.map-filter-select[class*=svelte-]:focus,.day-input[class*=svelte-]:focus{border-color:var(--kute-cyan)}.table-header.sortable.sort-asc[class*=svelte-]:after{border-bottom-color:var(--kute-cyan)}.table-header.sortable.sort-desc[class*=svelte-]:after{border-top-color:var(--kute-cyan)}.table-header.sortable[class*=svelte-]:hover,.data-table[class*=svelte-] tbody tr.clickable:hover,.data-table[class*=svelte-] tbody tr.highlight-row,.day-arrow[class*=svelte-]:hover:not(:disabled),.day-map[class*=svelte-],.eligible-maps[class*=svelte-] li,.view-all-btn[class*=svelte-],.page-btn[class*=svelte-],.view-tab.active[class*=svelte-]{background:var(--kute-cyan-soft);border-color:var(--kute-line-strong)}:is(#popupHolder,#app) .socialModal{background-color:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6}:is(#popupHolder,#app) .social-content{border-radius:var(--kute-radius-lg)}:is(#popupHolder,#app) .window-header{background:var(--kute-panel);border-bottom:1px solid var(--kute-line)}:is(#popupHolder,#app) .window-header-icon{color:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab{background:var(--kute-panel);transition:background-color .15s}:is(#popupHolder,#app) .sidebar-tab:hover{background:var(--kute-raised)}:is(#popupHolder,#app) .sidebar-tab:hover .sidebar-tab-icon,:is(#popupHolder,#app) .sidebar-tab:hover .sidebar-tab-label{color:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab.active{background:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab.active .sidebar-tab-icon,:is(#popupHolder,#app) .sidebar-tab.active .sidebar-tab-label{color:var(--kute-bg)}:is(#popupHolder,#app) .simple-tabs{border-bottom-color:var(--kute-line)}:is(#popupHolder,#app) .simple-tab-active{border-bottom-color:var(--kute-cyan)}:is(#popupHolder,#app) .simple-tab-active .simple-tab-icon,:is(#popupHolder,#app) .simple-tab-active .simple-tab-label{color:var(--kute-cyan)}:is(#popupHolder,#app) .social-search-input,:is(#popupHolder,#app) .social-search-btn,:is(#popupHolder,#app) .profile-search-form,:is(#popupHolder,#app) .conversation-input,:is(#popupHolder,#app) .conversation-emoji-button{background:var(--kute-raised);border-color:var(--kute-line);border-radius:6px}:is(#popupHolder,#app) .social-search-input:focus,:is(#popupHolder,#app) .profile-search-form:focus-within,:is(#popupHolder,#app) .conversation-input:focus{border-color:var(--kute-cyan)}:is(#popupHolder,#app) .social-search-btn:hover,:is(#popupHolder,#app) .conversation-emoji-button:hover:not(:disabled){background:#1d2c32;border-color:var(--kute-line-strong);color:var(--kute-cyan)}:is(#popupHolder,#app) .social-compose-btn,:is(#popupHolder,#app) .post-follow-btn,:is(#popupHolder,#app) .conversation-send-button{background:var(--kute-cyan);border-radius:6px;transition:background-color .15s}:is(#popupHolder,#app) .social-compose-btn:hover,:is(#popupHolder,#app) .post-follow-btn:hover:not(:disabled),:is(#popupHolder,#app) .conversation-send-button:hover:not(:disabled){background:var(--kute-pink)}:is(#popupHolder,#app) .social-compose-icon,:is(#popupHolder,#app) .social-compose-label,:is(#popupHolder,#app) .post-follow-btn i,:is(#popupHolder,#app) .conversation-send-button{color:var(--kute-bg)}:is(#popupHolder,#app) .conversation-send-button:disabled{background:#24343a;color:var(--kute-faint)}:is(#popupHolder,#app) .post-card{background:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .post-card-clickable:hover{background:var(--kute-raised)}:is(#popupHolder,#app) .post-item-card{background:#18242999;border-color:var(--kute-line);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .post-item-card:hover{background:var(--kute-raised);border-color:var(--kute-cyan)}:is(#popupHolder,#app) .postGameRes{background-color:var(--kute-bg);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .postResRo,:is(#popupHolder,#app) .postResRoD{border-bottom-color:var(--kute-line)}:is(#popupHolder,#app) .post-content-action{color:var(--kute-cyan)}:is(#popupHolder,#app) .vote-btn,:is(#popupHolder,#app) .share-btn{background:var(--kute-raised);border-color:var(--kute-line)}:is(#popupHolder,#app) .vote-btn:hover:not(:disabled),:is(#popupHolder,#app) .share-btn:hover{background:#1d2c32;border-color:var(--kute-line-strong)}:is(#popupHolder,#app) .comment-btn:hover{background:var(--kute-cyan-soft)}:is(#popupHolder,#app) .vote-btn-done,:is(#popupHolder,#app) .vote-btn-done:hover:not(:disabled){background:var(--kute-cyan);border-color:var(--kute-cyan)}:is(#popupHolder,#app) .vote-btn-done .vote-btn-icon,:is(#popupHolder,#app) .vote-btn-done .vote-btn-label,:is(#popupHolder,#app) .vote-btn-done .vote-btn-count{color:var(--kute-bg)}:is(#popupHolder,#app) .friends-root,:is(#popupHolder,#app) .conversation-root{background:var(--kute-bg)}:is(#popupHolder,#app) .friend-list{background:var(--kute-panel);border-right:1px solid var(--kute-line)}:is(#popupHolder,#app) .friend-item:hover{background:#35e0e80f}:is(#popupHolder,#app) .friend-item.selected{background:var(--kute-cyan-soft);border-left-color:var(--kute-cyan)}:is(#popupHolder,#app) .friend-presence-dot{border-color:var(--kute-panel)}:is(#popupHolder,#app) .friend-unread{background:var(--kute-pink);color:#fff}:is(#popupHolder,#app) .friend-list-search{background:var(--kute-raised);border-top:1px solid var(--kute-line)}:is(#popupHolder,#app) .conversation-header,:is(#popupHolder,#app) .conversation-compose{background:var(--kute-panel);border-color:var(--kute-line)}:is(#popupHolder,#app) .conversation-presence-dot{border-color:var(--kute-panel)}:is(#popupHolder,#app) .conversation-load-earlier{background:var(--kute-raised);border-color:var(--kute-line)}:is(#popupHolder,#app) .conversation-day-divider:before,:is(#popupHolder,#app) .conversation-day-divider:after{background:var(--kute-line)}:is(#popupHolder,#app) .bubble-row.sent .bubble{background:var(--kute-cyan)}:is(#popupHolder,#app) .bubble-row.sent .bubble,:is(#popupHolder,#app) .bubble-row.sent .bubble-time,:is(#popupHolder,#app) .bubble-row.sent .bubble-status-ok{color:var(--kute-bg)}:is(#popupHolder,#app) .bubble-row.received .bubble{background:var(--kute-raised)}#app .profile-detail-root{background:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6}#app .profile-detail-header-bar{background:var(--kute-panel);border-bottom-color:var(--kute-line)}#app .profile-detail-header-icon,#app .profile-detail-section-header,#app .profile-detail-sales-header{color:var(--kute-cyan)}#app .profile-detail-back,#app .profile-detail-action,#app .profile-detail-range-btn{background:var(--kute-raised);border-color:var(--kute-line)}#app .profile-detail-back:hover,#app .profile-detail-action:hover:not(:disabled){background:#1d2c32}#app .profile-detail-action.active,#app .profile-detail-action.active i{background:var(--kute-cyan-soft);border-color:var(--kute-line-strong);color:var(--kute-cyan)}#app .profile-detail-range-btn.active{background:var(--kute-cyan);border-color:var(--kute-cyan);color:var(--kute-bg)}#app .profile-detail-identity,#app .profile-detail-sales-panel,#app .profile-detail-badges-panel,#app .profile-detail-creations-panel{background:var(--kute-panel);border-color:var(--kute-line);border-radius:var(--kute-radius)}#app .profile-detail-avatar{background:var(--kute-raised);border-color:var(--kute-line-strong)}#app .profile-detail-online-dot{border-color:var(--kute-panel)}#app .profile-detail-follow-box,#app .profile-detail-title-item,#app .profile-detail-badge-item{background:var(--kute-raised)}#app .profile-detail-follow-box:hover{background:#1d2c32;border-color:var(--kute-line-strong)}#app .profile-detail-stat,#app .profile-detail-class,#app .profile-detail-raid-row,#app .profile-detail-listing-card,#app .profile-detail-creation-card{background:var(--kute-panel);border-color:var(--kute-line);border-radius:var(--kute-radius)}#app .profile-detail-listing-card:hover,#app .profile-detail-creation-card:hover{background:var(--kute-raised)}#app .profile-detail-level-badge,#app .profile-detail-xp-fill{background:var(--kute-cyan)}#app .profile-detail-level-badge{color:var(--kute-bg)}#app .profile-detail-xp-bar{background:var(--kute-raised)} +`});var oi={};A(oi,{default:()=>Ib});var Pb,ti,Ib,si=w(()=>{"use strict";F();Hu();Fu();Pb=Ou+Du,ti=class{constructor(){this.sheet=null,u.settings.toggleKuteCss=e=>this.toggle(e),this.toggle(!0)}toggle(e){if(!e){this.sheet?.replaceSync("");return}this.sheet||(this.sheet=new CSSStyleSheet,document.adoptedStyleSheets=[this.sheet,...document.adoptedStyleSheets]),this.sheet.replaceSync(Pb)}},Ib=new ti});var ci={};A(ci,{setFrameEnd:()=>An,takeFrameWorkMs:()=>ai});function ai(){if(rs.length<10)return 0;let s=rs.sort((t,o)=>t-o);rs=[];let e=s.slice(0,Math.ceil(s.length*.9));return e.reduce((t,o)=>t+o,0)/e.length}function Ob(s){return function(e){e!==qu&&(qu=e,Gu++>0&&(Wu=performance.now(),Vu.port2.postMessage(0))),s(e)}}function Fb(s,e){Po<0&&(Po=e),is++;let t=e-Po;if(ts*_b?as+1:0,as>=2&&u.frameLimiter!=="viz"&&(ls=!0),is=0,Po=e}function Yu(){!ls||!Tn?.hardFlip||(ls=!1,is=0,as=0,Po=-1)}function Db(s){let e;for(s>200?e=1e3/(s*1.0055):e=1e3/s;performance.now()<$n;);let t=performance.now();t-$n>e?$n=t+e:$n+=e}function qb(s){Mn=s,li?.(s)}function Xu(s){if(li!==null&&!ii)return Kb(s);let e=Tn===null?0:Tn.gameFpsLimit;if(!(e>0)){ni=0;let o=++Hb%Bb;return o>=zb?Cn(s):(o===0&&(Gu=0),Cn(Ob(s)))}let t=Number(e);return Cn(function(o){t!==ni&&(ni=t,ls=!1,is=0,as=0,Po=-1),o!==Ku&&(Ku=o,ls?Db(t):Fb(t,o)),s(o)})}function Kb(s){ii=!0;let e=Xu(t=>{Mn=t,s(t)});return ii=!1,ju===Mn&&Uu(ri),ju=Mn,ri=Cn(qb),e}function An(s){li=s,s===null&&Uu(ri)}var Cn,Uu,Nb,_b,Tn,Bb,zb,Hb,Gu,qu,Wu,rs,Vu,$n,Ku,ni,ls,Po,is,as,li,ri,Mn,ju,ii,cs=w(()=>{"use strict";F();Cn=window.requestAnimationFrame,Uu=window.cancelAnimationFrame,Nb=2e3,_b=1.15,Tn=null,Bb=256,zb=12,Hb=0,Gu=0,qu=-1,Wu=0,rs=[],Vu=new MessageChannel;Vu.port1.onmessage=()=>{rs.length<512&&rs.push(performance.now()-Wu)};Ne.then(()=>{Tn=u.settings.data});$n=0,Ku=-1,ni=0,ls=!1,Po=-1,is=0,as=0;document.addEventListener("pointerlockchange",Yu);window.addEventListener("resize",Yu);li=null,ri=0,Mn=-1,ju=-2,ii=!1;window.requestAnimationFrame=Xu});var Ln=we((Xx,jb)=>{jb.exports="data:image/webp;base64,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"});var ui={};A(ui,{default:()=>Ub});var Ju,di,Ub,pi=w(()=>{"use strict";Ju=ue(Ln(),1),di=class{constructor(){if(!document.querySelector("#mainMenuUIMount"))return;let e=document.createElement("style");e.id="kute_logoBadgeCSS",e.textContent=` #mainLogo { anchor-name: --kute-main-logo; } #gameNameHolder::after { content: ""; @@ -49,11 +49,11 @@ void main() { outColor = texture(uLabel, vUv); }`;Gr=new Float32Array(4096),Mu=0 left: calc((anchor(right) - anchor-size(width) * 0.22) - 15px); top: calc((anchor(bottom) - anchor-size(height) * 0.48) - 10px); transform: rotate(-25deg); - background: url(${Wu.default}) center / contain no-repeat; + background: url(${Ju.default}) center / contain no-repeat; pointer-events: none; - }`,document.head.append(e)}},Db=new li});var ui=we((Ux,Fb)=>{Fb.exports=`#tlInfHold,#newsHolder,#termsInfo,#bubbleContainer,body .popRail.popRail{display:none!important} -`});var pi=we((Gx,qb)=>{qb.exports=`:root{--kute-classic-menu: 1}#uiBase.onMenu #spectButton{top:calc(48% - 60px)}#instructions{top:50%}#subLogoButtons{right:auto;left:50%;bottom:139px;width:950px;display:grid;grid-template-columns:repeat(6,1fr);gap:10px;transform:translate(-50%) scale(.95);transform-origin:bottom center}#matchInfoHolder{grid-column:1 / -1;position:static;order:-2;box-sizing:border-box;width:100%;flex-wrap:wrap;justify-content:flex-start;row-gap:4px;transform:none;padding:0 0 12px;margin-bottom:10px;font-size:20px;background:none;border:none;border-bottom:5px solid #585858;border-radius:0;box-shadow:none;backdrop-filter:none}#matchInfoHolder>.match-divider:has(+.match-info-actions){flex-basis:100%;height:0;margin:0;border:none;background:none}#matchInfoHolder>.match-info-actions{padding-left:7px}#mapInfo{font-size:20px}#mapInfoHld{padding-left:7px}#subLogoButtons>.actionCard{grid-column:span 2;justify-content:center;box-sizing:border-box;width:auto;height:auto;padding:6px 18px;font-size:27px;text-transform:none;background:#0003;box-shadow:none}#subLogoButtons>.actionCard .cardIcon{display:none}#subLogoButtons>.actionCard .cardLabel{font-size:27px;text-transform:none;letter-spacing:normal}#subLogoButtons>#menuBtnQuickMatch,#subLogoButtons>#menuBtnRanked{grid-column:span 3}#menuBtnHost,#menuBtnBrowser{border-color:#ed4242!important}#subLogoButtons>.popRail{grid-column:1 / -1;order:1;margin-top:10px}#menuClassContainer{left:auto;right:21px;bottom:80px;text-align:right;transform:scale(.7);transform-origin:bottom right}#menuClassContainer:before{display:none}#menuClassFooter{flex-direction:column;align-items:flex-end;margin:0 0 0 auto}#menuClassContainerInner{justify-content:flex-end;width:449px;height:85px;padding:0;gap:0;background:none;border:none}#menuClassContainerInner:hover{background:none;filter:brightness(1.15)}#menuClassContainerInfo{height:85px;justify-content:space-between}#menuClassIcn{width:85px;height:85px;margin-left:10px;border:4px solid #353534;border-radius:4px}#menuClassName{font-size:17px}#menuClassSubtext{font-size:30px;margin-bottom:0}#classPreviewCanvas{margin-bottom:-100px;margin-right:-113px}#customizeButton{box-sizing:border-box;width:449px;padding:15px;font-size:27px!important}#bubbleContainer{right:420px}body #uiBase.onMenu .spectateInfo{top:calc(48% - 150px)} -`});var Vu=we((Wx,Kb)=>{Kb.exports='
          '});var jb={};var hi,Yu=w(()=>{"use strict";D();Ae();hi=class{constructor(e,t,o){this.message=e,this.reqUserInput=t,this.duration=o,this.notificationEl=document.createElement("div"),this.notificationEl.id="notification",this.countdown=void 0,this.handlePromise=void 0,t&&(this.promise=new Promise(n=>{this.resolvePromise=n})),this.show()}async createNotificationElement(){let e=await Promise.resolve().then(()=>ue(Vu(),1));this.notificationEl.innerHTML=e.default,U("#notification-content",this.notificationEl).textContent=this.message,U("#notification-timer",this.notificationEl).textContent=String(this.duration),this.reqUserInput&&(U("#notification-actions",this.notificationEl).style.display="block"),document.body.append(this.notificationEl)}startTimer(){this.countdown=setInterval(()=>{this.duration--,U("#notification-timer",this.notificationEl).textContent=String(this.duration),this.duration<=0&&(clearInterval(this.countdown),this.resolvePromise&&this.resolvePromise(!1),this.hide())},1e3)}hide(){clearInterval(this.countdown),this.handlePromise&&document.removeEventListener("keydown",this.handlePromise),this.notificationEl.classList.add("slide-out"),setTimeout(()=>this.notificationEl.remove(),2e3)}show(){this.createNotificationElement(),setTimeout(()=>this.notificationEl.classList.add("slide-in"),10),this.startTimer(),this.reqUserInput&&(this.handlePromise=e=>{if(e.key==="y"||e.key==="n"){let t=e.key==="y";U(`#${e.key}`,this.notificationEl).classList.add("bounce"),this.resolvePromise(t),this.hide()}},document.addEventListener("keydown",this.handlePromise))}};u.showNotification=(s,e,t)=>{let o=new hi(s,e,t);return e?o.promise:o}});var Xu=we((Xx,Ub)=>{Ub.exports='
          ×

          Kute

          A high-performance Krunker client with enhanced features - made by [cute]

          CREDITS
          • NullDev / NulPing - Main Developer / Maintainer
          • slavcp/glorp - base
          • 6ct/clientpp - flags
          • KraXen72/crankshaft - menu timer css
          • idkr-client/idkr - tweaks
          • bigjakk/Electron-Websocket-Fix - aim-freeze fix
          • bigjakk/Krunker-Civilian-Client - matchmaker, nuke counter
          • PC7 Client and Water Client - ideas
          '});var Ju={};async function Gb(){if(document.querySelector("#aboutPopupHost"))return;let[s,e]=await Promise.all([Promise.resolve().then(()=>ue(Xu(),1)),Promise.resolve().then(()=>ue(Tn(),1))]),t=document.createElement("div");t.style=` + }`,document.head.append(e)}},Ub=new di});var hi=we((Jx,Gb)=>{Gb.exports=`#tlInfHold,#newsHolder,#termsInfo,#bubbleContainer,body .popRail.popRail{display:none!important} +`});var mi=we((Zx,Wb)=>{Wb.exports=`:root{--kute-classic-menu: 1}#uiBase.onMenu #spectButton{top:calc(48% - 60px)}#instructions{top:50%}#subLogoButtons{right:auto;left:50%;bottom:139px;width:950px;display:grid;grid-template-columns:repeat(6,1fr);gap:10px;transform:translate(-50%) scale(.95);transform-origin:bottom center}#matchInfoHolder{grid-column:1 / -1;position:static;order:-2;box-sizing:border-box;width:100%;flex-wrap:wrap;justify-content:flex-start;row-gap:4px;transform:none;padding:0 0 12px;margin-bottom:10px;font-size:20px;background:none;border:none;border-bottom:5px solid #585858;border-radius:0;box-shadow:none;backdrop-filter:none}#matchInfoHolder>.match-divider:has(+.match-info-actions){flex-basis:100%;height:0;margin:0;border:none;background:none}#matchInfoHolder>.match-info-actions{padding-left:7px}#mapInfo{font-size:20px}#mapInfoHld{padding-left:7px}#subLogoButtons>.actionCard{grid-column:span 2;justify-content:center;box-sizing:border-box;width:auto;height:auto;padding:6px 18px;font-size:27px;text-transform:none;background:#0003;box-shadow:none}#subLogoButtons>.actionCard .cardIcon{display:none}#subLogoButtons>.actionCard .cardLabel{font-size:27px;text-transform:none;letter-spacing:normal}#subLogoButtons>#menuBtnQuickMatch,#subLogoButtons>#menuBtnRanked{grid-column:span 3}#menuBtnHost,#menuBtnBrowser{border-color:#ed4242!important}#subLogoButtons>.popRail{grid-column:1 / -1;order:1;margin-top:10px}#menuClassContainer{left:auto;right:21px;bottom:80px;text-align:right;transform:scale(.7);transform-origin:bottom right}#menuClassContainer:before{display:none}#menuClassFooter{flex-direction:column;align-items:flex-end;margin:0 0 0 auto}#menuClassContainerInner{justify-content:flex-end;width:449px;height:85px;padding:0;gap:0;background:none;border:none}#menuClassContainerInner:hover{background:none;filter:brightness(1.15)}#menuClassContainerInfo{height:85px;justify-content:space-between}#menuClassIcn{width:85px;height:85px;margin-left:10px;border:4px solid #353534;border-radius:4px}#menuClassName{font-size:17px}#menuClassSubtext{font-size:30px;margin-bottom:0}#classPreviewCanvas{margin-bottom:-100px;margin-right:-113px}#customizeButton{box-sizing:border-box;width:449px;padding:15px;font-size:27px!important}#bubbleContainer{right:420px}body #uiBase.onMenu .spectateInfo{top:calc(48% - 150px)} +`});var Zu=we((Qx,Vb)=>{Vb.exports='
          '});var Yb={};var fi,Qu=w(()=>{"use strict";F();Ae();fi=class{constructor(e,t,o){this.message=e,this.reqUserInput=t,this.duration=o,this.notificationEl=document.createElement("div"),this.notificationEl.id="notification",this.countdown=void 0,this.handlePromise=void 0,t&&(this.promise=new Promise(n=>{this.resolvePromise=n})),this.show()}async createNotificationElement(){let e=await Promise.resolve().then(()=>ue(Zu(),1));this.notificationEl.innerHTML=e.default,U("#notification-content",this.notificationEl).textContent=this.message,U("#notification-timer",this.notificationEl).textContent=String(this.duration),this.reqUserInput&&(U("#notification-actions",this.notificationEl).style.display="block"),document.body.append(this.notificationEl)}startTimer(){this.countdown=setInterval(()=>{this.duration--,U("#notification-timer",this.notificationEl).textContent=String(this.duration),this.duration<=0&&(clearInterval(this.countdown),this.resolvePromise&&this.resolvePromise(!1),this.hide())},1e3)}hide(){clearInterval(this.countdown),this.handlePromise&&document.removeEventListener("keydown",this.handlePromise),this.notificationEl.classList.add("slide-out"),setTimeout(()=>this.notificationEl.remove(),2e3)}show(){this.createNotificationElement(),setTimeout(()=>this.notificationEl.classList.add("slide-in"),10),this.startTimer(),this.reqUserInput&&(this.handlePromise=e=>{if(e.key==="y"||e.key==="n"){let t=e.key==="y";U(`#${e.key}`,this.notificationEl).classList.add("bounce"),this.resolvePromise(t),this.hide()}},document.addEventListener("keydown",this.handlePromise))}};u.showNotification=(s,e,t)=>{let o=new fi(s,e,t);return e?o.promise:o}});var ep=we((oS,Xb)=>{Xb.exports='
          ×

          Kute

          A high-performance Krunker client with enhanced features - made by [cute]

          CREDITS
          • NullDev / NulPing - Main Developer / Maintainer
          • slavcp/glorp - base
          • 6ct/clientpp - flags
          • KraXen72/crankshaft - menu timer css
          • idkr-client/idkr - tweaks
          • bigjakk/Electron-Websocket-Fix - aim-freeze fix
          • bigjakk/Krunker-Civilian-Client - matchmaker, nuke counter
          • PC7 Client and Water Client - ideas
          '});var tp={};async function Jb(){if(document.querySelector("#aboutPopupHost"))return;let[s,e]=await Promise.all([Promise.resolve().then(()=>ue(ep(),1)),Promise.resolve().then(()=>ue(Ln(),1))]),t=document.createElement("div");t.style=` position: fixed; top: 0; left: 0; @@ -64,37 +64,37 @@ void main() { outColor = texture(uLabel, vUv); }`;Gr=new Float32Array(4096),Mu=0 display: flex; justify-content: center; align-items: center; - `;let o=document.createElement("div");o.id="aboutPopupHost",t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=s.default;let r=n.querySelector("#aboutLogo");r&&(r.src=e.default);let i=n.querySelector("#aboutVersion");i&&(i.textContent=`Version ${u.version}`);for(let c of n.querySelectorAll("[data-url]"))c.addEventListener("click",()=>window.chrome.webview.postMessage(`open-url, ${c.getAttribute("data-url")}`));let a=new AbortController,l=()=>{a.abort(),t.remove()};n.querySelector("#aboutClose")?.addEventListener("click",l),t.addEventListener("mousedown",c=>{c.target===t&&l()}),document.addEventListener("keydown",c=>{c.key==="Escape"&&l()},{signal:a.signal}),document.body.append(t)}var mi=w(()=>{"use strict";D();u.showAboutPopup=Gb});var bi={};A(bi,{default:()=>Jb});function Zu(){if(!document.getElementById("signedInHeaderBar"))return null;try{return localStorage.getItem("krunker_username")||null}catch{return null}}function fi(){try{return localStorage.getItem(Wb)??""}catch{return""}}var Wb,Vb,Yb,Xb,gi,Jb,vi=w(()=>{"use strict";D();Wb="kro_setngss_endMessage",Vb="slid_endMessage",Yb="playerHeaderEl",Xb=500;gi=class{constructor(){this.account=void 0,this.header=new MutationObserver(()=>this.check()),this.saveTimer=0,this.editedFor=null,this.onInput=e=>{!(e.target instanceof HTMLInputElement)||e.target.id!==Vb||!this.account||(this.editedFor=this.account,clearTimeout(this.saveTimer),this.saveTimer=setTimeout(()=>this.flush(),Xb))},u.settings.toggleAccountEndMessage=e=>this.toggle(e,!0),this.toggle(!!u.settings.data.accountEndMessage,!1)}get messages(){return{...u.settings.data.endMessages}}save(e){u.settings.data.endMessages=e,window.chrome.webview.postMessage(`set-config-json endMessages ${JSON.stringify(e)}`)}remember(e,t){let{messages:o}=this;(o[e]??"")!==t&&(t?o[e]=t:delete o[e],this.save(o))}flush(){clearTimeout(this.saveTimer),this.editedFor&&this.remember(this.editedFor,fi()),this.editedFor=null}check(){let e=Zu();if(e===this.account)return;this.flush(),this.account=e;let t=e?this.messages[e]??"":"";fi()!==t&&window.setSetting("endMessage",t)}toggle(e,t){if(this.header.disconnect(),document.removeEventListener("input",this.onInput,!0),!e){this.flush(),this.account=void 0;return}let o=Zu();if(t&&o){let r=fi();this.remember(o,r),u.showNotification(r?`Kept "${r}" for ${o}. Other accounts send nothing until you give them one`:`End messages are now per account, ${o} has none`,!1,6)}document.addEventListener("input",this.onInput,!0);let n=document.getElementById(Yb);n?this.header.observe(n,{childList:!0}):console.error("[kute] end message: no account header"),this.check()}},Jb=new gi});var Qu=we((Qx,Zb)=>{Zb.exports='

          '});var ep={};A(ep,{confirmPopup:()=>Ce});async function Ce(s){let e=await Promise.resolve().then(()=>ue(Qu(),1)),t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default;let r=i=>n.querySelector(`#${i}`);r("confirmTitle").textContent=s.title;for(let i of s.paragraphs){let a=document.createElement("p");a.textContent=i,r("confirmText").append(a)}return r("confirmStay").textContent=s.stay,r("confirmLeave").textContent=s.leave,new Promise(i=>{let a=new AbortController,l=c=>{a.abort(),t.remove(),i(c)};r("confirmStay").onclick=()=>l(!1),r("confirmLeave").onclick=()=>l(!0),t.addEventListener("mousedown",c=>{c.target===t&&l(!1)}),document.addEventListener("keydown",c=>{c.key==="Escape"&&l(!1)},{signal:a.signal}),document.body.append(t)})}var Rt=w(()=>{"use strict"});var op,tp=w(()=>{op='

          Hotkeys

          Click a key, then press the new one. Escape cancels.
          Ctrl, Alt and Shift combinations work too.

          Lobby and window

          Toggles and windows

          Quick account login

          Reset to defaults
          Done
          '});var Si={};A(Si,{bindings:()=>ft,default:()=>pv,matches:()=>ls});function sv(){if(u.settings.data.chatLogs===!1||!u.chatLogs){u.showNotification("Chat Logs is off in the settings",!1,3);return}u.chatLogs.toggle()}function nv(s){if(u.settings.data.accountManager===!1||!u.accounts){u.showNotification("Account Manager is off in the settings",!1,3);return}u.accounts.loginSlot(s)}function ki(){return!!u.hostFeatures?.includes(ev)}function ft(){let s=ki()&&u.settings.data.hotkeys||{};return Object.fromEntries(An.map(e=>[e.id,s[e.id]??(e.id in s?null:e.fallback)]))}function sp(s,e){return!!e&&s.keyCode===e?.key&&s.ctrlKey===e.ctrl&&s.altKey===e.alt&&s.shiftKey===e.shift}function ls(s,e){return sp(s,ft()[e]??null)}function iv(s){let e=(t,o)=>{try{let n=window.localStorage.getItem(t);return n===null?o:Number(n)}catch{return o}};return rv.filter(([t,,o,n])=>e(`cont_${t}`,o)===s||e(`cont_${t}_alt`,n)===s).map(([,t])=>t)}function lv(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`Num ${s-96}`:s>=112&&s<=135?`F${s-111}`:av[s]??`Key ${s}`}function cv(s){let{code:e}=s,t=e;return/^Key[A-Z]$/.test(e)?t=e.slice(3):/^Digit\d$/.test(e)?t=e.slice(5):e.startsWith("Numpad")?t=`Num ${e.slice(6)}`:e.startsWith("Arrow")?t=e.slice(5):e||(t=lv(s.keyCode)),[s.ctrlKey&&"Ctrl",s.altKey&&"Alt",s.shiftKey&&"Shift",t].filter(Boolean).join("+")}function dv(s,e,t){let o=[],n=An.filter(i=>{let a=t[i.id];return i.id!==s.id&&a!==null&&a.key===e.key&&a.ctrl===e.ctrl&&a.alt===e.alt&&a.shift===e.shift});n.length>0&&o.push(`Also bound to Kute's ${n.map(i=>i.label).join(", ")}, pick another key.`);let r=iv(e.key);if(r.length>0){let i=r.length>3?` and ${r.length-3} more`:"";o.push(`Krunker uses this key for ${r.slice(0,3).join(", ")}${i}, the game still gets it.`)}return o}function uv(){let s=document.activeElement;for(;s?.shadowRoot?.activeElement;)s=s.shadowRoot.activeElement;return s instanceof HTMLInputElement||s instanceof HTMLTextAreaElement||s instanceof HTMLElement&&s.isContentEditable}var ev,tv,ov,Ro,wi,An,rv,av,yi,xi,pv,Po=w(()=>{"use strict";tp();D();Co();ev="hotkeys",tv=131,ov=new Set(["Shift","Control","Alt","Meta","AltGraph"]);Ro=(s,e)=>({key:s,ctrl:!1,alt:!1,shift:!1,name:e}),wi=s=>({id:`account${s}`,label:`Account ${s}`,note:`logs in account ${s} of the Accounts list`,group:"account",fallback:{key:48+s,ctrl:!0,alt:!0,shift:!1,name:`Ctrl+Alt+${s}`},run:()=>nv(s-1)}),An=[{id:"newLobby",label:"New lobby",group:"window",fallback:Ro(115,"F4")},{id:"matchmaker",label:"Matchmaker",note:"new lobby while the Matchmaker setting is off",group:"window",fallback:Ro(117,"F6")},{id:"reload",label:"Reload",group:"window",fallback:Ro(116,"F5")},{id:"fullscreen",label:"Fullscreen",group:"window",fallback:Ro(122,"F11")},{id:"devtools",label:"Developer tools",group:"window",fallback:Ro(123,"F12")},{id:"toggleSpotify",label:"Spotify overlay",note:"on and off",group:"toggle",fallback:null,setting:"spotifyOverlay"},{id:"toggleKeystrokes",label:"Keystrokes",note:"on and off",group:"toggle",fallback:null,setting:"keystrokes"},{id:"chatLogs",label:"Chat logs",note:"open and close",group:"toggle",fallback:Ro(112,"F1"),run:sv},wi(1),wi(2),wi(3)],rv=[["0","Forward",87,-1],["1","Back",83,-1],["2","Left",65,-1],["3","Right",68,-1],["jumpKey","Jump",32,-1],["crouchKey","Crouch",16,-1],["reloadKey","Reload",82,-1],["swapKey","Swap weapon",69,-1],["primKey","Primary weapon",84,-1],["meleeKey","Melee",81,-1],["equipKey","Equip",67,-1],["dropKey","Drop",90,-1],["inspKey","Inspect",88,-1],["wepVisKey","Hide weapon",-1,-1],["sprayKey","Spray",70,-1],["sprayWheelKey","Spray wheel",70,-1],["interactKey","Interact",71,-1],["interactSecKey","Second interact",72,-1],["confirmKey","Confirm",75,-1],["resetKey","Reset",66,-1],["resetLastKey","Reset to last",78,-1],["markPositionKey","Mark position",10002,-1],["chatKey","Chat",13,-1],["voiceKey","Voice chat",86,-1],["pListKey","Player list",18,-1],["sBoardKey","Scoreboard",9,-1],["hidePlayersKey","Hide players",-1,-1],["kickVoteYKey","Kick vote yes",49,-1],["kickVoteNKey","Kick vote no",50,-1],["kpdVoteYKey","Vote yes",89,-1],["kpdVoteNKey","Vote no",78,-1],["kpdVisionKey","Vision",187,-1],["specFreeKey","Spectate free camera",70,-1],["specObjKey","Spectate objective",72,-1],["specFirstKey","Spectate first person",82,-1],["specNamesKey","Spectate names",77,-1],["specMiniMap","Spectate minimap",189,-1],["specFocusKey","Spectate focus",190,-1],["propKey","Prop",80,-1],["propRandKey","Random prop",77,-1],["propRotKey","Rotate prop",82,-1],["propRotRKey","Rotate prop back",78,-1],["18","Streak 1",49,-1],["19","Streak 2",50,-1],["20","Streak 3",51,-1],...[0,1,2,3,4,5].map(s=>[`taunt${s}`,`Taunt ${s+1}`,49+s,-1]),...["27","28","29","30","31","32"].map((s,e)=>[s,`Toggle ${e+1}`,-1,-1]),...["43","44","45","46","47","48"].map((s,e)=>[s,`Chat message ${e+1}`,-1,-1])];av={8:"Backspace",9:"Tab",13:"Enter",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",45:"Insert",46:"Delete"};yi=class{constructor(e){this.owner=e,this.waiting=null,this.overlay=document.createElement("div"),this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");this.overlay.append(t),this.shadow=t.attachShadow({mode:"open"}),this.shadow.innerHTML=op,document.body.append(this.overlay),this.onKey=this.onKey.bind(this),window.addEventListener("keydown",this.onKey,!0),this.overlay.addEventListener("click",o=>{o.target===this.overlay&&this.close()}),this.element("hkDone").onclick=()=>this.close(),this.element("hkReset").onclick=()=>{this.owner.save({}),this.stopWaiting(),this.render()},this.render()}element(e){return this.shadow.querySelector(`#${e}`)}startWaiting(e){this.stopWaiting(),this.waiting=e,this.owner.capturing=!0,window.chrome.webview.postMessage("hotkeys-pause, true"),this.render()}stopWaiting(){this.waiting!==null&&(this.waiting=null,this.owner.capturing=!1,window.chrome.webview.postMessage("hotkeys-pause, false"),this.render())}assign(e,t){this.owner.save({...ft(),[e]:t}),this.stopWaiting(),this.render()}row(e,t){let o=t[e.id],n=document.createElement("div");n.className="hkRow";let r=document.createElement("div");if(r.className="hkLabel",r.textContent=e.label,e.note){let p=document.createElement("span");p.className="hkNote",p.textContent=e.note,r.append(p)}let i=this.waiting===e.id,a=document.createElement("div");a.className=`hkKey${i?" hkWaiting":""}${o?"":" hkNone"}`,a.textContent=i?"Press a key":o?.name??"No key",a.title="Click, then press the new key. Escape cancels",a.onclick=()=>this.startWaiting(e.id);let l=document.createElement("div");l.className="hkClear",l.textContent="Clear",l.style.visibility=o?"":"hidden",l.onclick=()=>this.assign(e.id,null),n.append(r,a,l);let c=o?dv(e,o,t):[];if(c.length===0)return n;let d=document.createElement("div");d.className="hkWarn",d.textContent=c.join(" ");let h=document.createElement("div");return h.append(n,d),h}render(){let e=ft();for(let t of["window","toggle","account"]){let o=An.filter(n=>n.group===t).map(n=>this.row(n,e));this.element(`hkGroup-${t}`).replaceChildren(...o)}}onKey(e){if(this.waiting===null){e.key==="Escape"&&this.close();return}if(e.preventDefault(),e.stopImmediatePropagation(),e.key==="Escape"){this.stopWaiting();return}ov.has(e.key)||e.keyCode===tv||e.keyCode===0||this.assign(this.waiting,{key:e.keyCode,ctrl:e.ctrlKey,alt:e.altKey,shift:e.shiftKey,name:cv(e)})}close(){this.stopWaiting(),window.removeEventListener("keydown",this.onKey,!0),this.overlay.remove()}},xi=class{constructor(){this.capturing=!1,u.hotkeys={edit:()=>this.edit()},window.addEventListener("keydown",e=>this.onKey(e),!0)}onKey(e){if(this.capturing||e.repeat||uv()||!ki())return;let t=ft();for(let o of An)o.group==="window"||!sp(e,t[o.id])||(o.run?o.run():o.setting&&this.flip(o.setting,o.label))}flip(e,t){if($o(u.settings.data,e)){u.showNotification(`${t} is off in performance mode`,!1,3);return}let o=!u.settings.data[e];u.settings.changeSetting(e,o,!1),u.showNotification(`${t} ${o?"on":"off"}`,!1,2)}save(e){u.settings.data.hotkeys=e,window.chrome.webview.postMessage(`set-config-json hotkeys ${JSON.stringify(e)}`)}edit(){if(!ki()){u.showNotification("Hotkeys need a newer Kute",!1,3);return}new yi(this)}},pv=new xi});var np=we((nS,hv)=>{hv.exports='
          ×

          Accounts

          Click an account to log in, drag ≡ to reorder
          Add account
          '});var Ci={};A(Ci,{default:()=>xv});function Pt(s){let e=decodeURIComponent(s),t=e.length;return e.split("").map(o=>String.fromCharCode(o.charCodeAt(0)-t)).join("")}function ap(s){let e=s.length,t=s.split("").map(o=>String.fromCharCode(o.charCodeAt(0)+e)).join("");return encodeURIComponent(t)}function cs(){try{let s=JSON.parse(localStorage.getItem(ds)||"[]");return Array.isArray(s)?s:[]}catch{return[]}}function kv(s){return typeof s=="string"&&/^#[\da-f]{6}$/i.test(s)?s:mv}function yv(s){let e=Number.parseInt(s.slice(1),16),t=e>>16&255,o=e>>8&255,n=e&255;return t*.299+o*.587+n*.114>150?"#111":"#fff"}function lp(s,e,t){let o=kv(e);s.style.background=o,s.style.color=yv(o),s.textContent=t.trim().slice(0,1)||"?"}var ds,mv,Ei,fv,rp,gv,bv,vv,wv,ip,$i,xv,Mi=w(()=>{"use strict";D();Ae();Rt();kn();Po();ds="accounts",mv="#35e0e8",Ei="kute_account_switch",fv=12e4,rp=3e4,gv=3e3,bv=2e4,vv=3e3,wv=5e3,ip=s=>new Promise(e=>{setTimeout(e,s)});$i=class{constructor(){this.button=document.createElement("div"),this.button.textContent="Accounts",this.button.classList.add("button","buttonB","bigShadowT"),this.button.style.cssText="display: block; padding-top: 7px; padding-bottom: 22px; font-size: 25px!important; padding-bottom: 22px; margin-top: 7px; height: 21px; line-height: 35px; width: 162px; font-size:20px!important; margin-left: 3px;",this.headerSeparator=document.createElement("div"),this.headerSeparator.style.cssText="width: 4px; height: 35px; margin: 0 6px; background: rgba(255, 255, 255, 0.12); flex-shrink: 0;",this.headerItem=document.createElement("div"),this.headerItem.style.cssText="display: flex; align-items: center; gap: 8px; padding: 8px 12px; cursor: pointer; color: #fff; font-weight: 700; font-size: 16px; white-space: nowrap;",this.headerItem.innerHTML='switch_accountAccounts',this.headerObserver=new MutationObserver(()=>this.placeButton()),this.overlay=null,this.shadow=null,this.menuController=null,this.asking=!1,this.accounts=[],this.legacy=!1,this.lastQuickLogin=0,this.suppressClick=!1,u.settings.toggleAccountManager=e=>this.toggle(e),u.accounts={loginSlot:e=>this.loginSlot(e)},this.toggle(!0),this.load()}async load(){let e=cs(),t=null;if(e.length>0){let o=e.filter(n=>typeof n?.username=="string"&&typeof n?.password=="string").map(n=>({username:Pt(n.username),password:Pt(n.password),color:n.color}));t=await Te(`accounts-migrate ${JSON.stringify(o)}`,"accounts",5e3),t!==null&&localStorage.removeItem(ds)}else t=await Te("accounts-list","accounts");t===null?(this.legacy=!0,this.accounts=e.map(o=>({username:Pt(o.username),color:o.color}))):this.accounts=t,this.renderAccounts(),this.resumeSwitch()}resumeSwitch(){let e=sessionStorage.getItem(Ei);if(e===null)return;sessionStorage.removeItem(Ei);let t={};try{t=JSON.parse(e)??{}}catch{return}if(Date.now()-Number(t.at)>fv||localStorage.getItem("krunker_token")!==null)return;let o=this.accounts.find(n=>n.username===t.username);o&&this.login(o)}async send(e,t){let o=await Te(`accounts-${e} ${JSON.stringify(t)}`,"accounts");o!==null&&(this.accounts=o,this.renderAccounts())}gameUpdateListener=e=>{e.data==="game-updated"&&setTimeout(()=>{He()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.button.style.cssText="display: block; padding: 14px 24px 22px; bottom: 0; right: 0; z-index: 9; font-size: 21px !important; position: absolute;",U("#compBtnLst").append(this.button))},2e3)};toggle(e){if(e)if(window.chrome.webview.addEventListener("message",this.gameUpdateListener),this.button.addEventListener("click",this.openMenu),this.headerItem.addEventListener("click",this.openMenu),He())window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.button.style.cssText="display: block; padding: 14px 24px 22px; bottom: 0; right: 0; z-index: 9; font-size: 21px !important; position: absolute;",U("#compBtnLst").append(this.button);else{this.placeButton();let t=document.querySelector("#playerHeaderEl");t&&this.headerObserver.observe(t,{childList:!0,subtree:!0})}else window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.headerObserver.disconnect(),this.button.removeEventListener("click",this.openMenu),this.headerItem.removeEventListener("click",this.openMenu),this.button.remove(),this.headerSeparator.remove(),this.headerItem.remove(),this.closeMenu()}placeButton(){let e=document.querySelector("#playerHeaderEl .headerBarRight");if(e){if(e.firstElementChild!==this.headerItem){let n=[...e.querySelector(".nav-item")?.classList??[]].find(r=>r.startsWith("svelte-"))??"";this.headerItem.style.cssText="",this.headerItem.className=`nav-item ${n}`,this.headerItem.innerHTML=`switch_account Accounts`,this.headerSeparator.className="verticalSeparator",this.headerSeparator.style.cssText="height: 35px;",e.prepend(this.headerItem,this.headerSeparator)}this.button.remove();return}let t=document.querySelector("#signedInHeaderBar");if(t){t.contains(this.headerItem)||t.append(this.headerSeparator,this.headerItem);return}let o=document.querySelector("#signedOutHeaderBar");o&&!o.contains(this.button)&&o.append(this.button)}openMenu=()=>{this.overlay||this.buildMenu().catch(e=>console.error("[kute] accounts:",e))};async buildMenu(){let e=await Promise.resolve().then(()=>ue(np(),1));if(this.overlay)return;let t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default,this.overlay=t,this.shadow=n;let r=new AbortController;this.menuController=r,U("#accClose",n).onclick=()=>this.closeMenu(),U("#accAdd",n).onclick=()=>this.showForm(!0),U("#accCancel",n).onclick=()=>this.showForm(!1),U("#accSave",n).onclick=()=>this.saveAccount(),U("#accFormHint",n).textContent=this.legacy?"Saved on this PC only":"Saved encrypted on this PC, never sent anywhere";let i=ke("#accUsername",n),a=ke("#accColor",n);i.oninput=()=>this.updatePreview(),a.oninput=()=>this.updatePreview();for(let l of[i,ke("#accPassword",n)])l.onkeydown=c=>{c.key==="Enter"&&this.saveAccount()};for(let l of["keydown","keyup","keypress"])n.addEventListener(l,c=>c.stopPropagation());t.addEventListener("mousedown",l=>{l.target===t&&this.closeMenu()}),document.addEventListener("keydown",l=>{l.key!=="Escape"||this.asking||(l.stopPropagation(),U("#accFormView",n).hidden?this.closeMenu():this.showForm(!1))},{signal:r.signal,capture:!0}),this.renderAccounts(),this.resetForm(),document.body.append(t)}closeMenu(){this.menuController?.abort(),this.menuController=null,this.overlay?.remove(),this.overlay=null,this.shadow=null}showForm(e){this.shadow&&(U("#accListView",this.shadow).hidden=e,U("#accFormView",this.shadow).hidden=!e,e&&(this.resetForm(),ke("#accUsername",this.shadow).focus()))}renderAccounts(){let{shadow:e}=this;if(!e)return;let t=U("#accList",e);t.textContent="";for(let n of this.accounts){let r=document.createElement("div");r.className="accRow",r.dataset.username=n.username,r.title=`Log in as ${n.username}`,r.onclick=()=>{this.suppressClick||this.login(n)};let i=document.createElement("div");i.className="accHandle",i.textContent="\u2261",i.title="Drag to reorder",i.onclick=p=>p.stopPropagation(),i.onpointerdown=p=>this.startDrag(p,r);let a=document.createElement("div");a.className="accIndex";let l=document.createElement("div");l.className="accAvatar",lp(l,n.color,n.username);let c=document.createElement("div");c.className="accName",c.textContent=n.username;let d=document.createElement("div");d.className="accRemove",d.textContent="\xD7",d.title="Remove",d.onclick=p=>{p.stopPropagation(),this.removeAccount(n).catch(m=>console.error("[kute] accounts:",m))};let h=document.createElement("div");h.className="accKey",r.append(i,a,l,c,h,d),t.append(r)}this.renumber(t);let o=this.accounts.length===0;U("#accEmpty",e).hidden=!o,U("#accListHint",e).hidden=o}renumber(e){let t=ft();[...e.children].forEach((o,n)=>{U(".accIndex",o).textContent=String(n+1),U(".accKey",o).textContent=t[`account${n+1}`]?.name??""})}canReorder(){return this.legacy||!!u.hostFeatures?.includes("accounts-order")}startDrag(e,t){if(e.button!==0)return;if(e.preventDefault(),!this.canReorder()){u.showNotification("Reordering accounts needs a newer Kute",!1,3);return}let o=t.parentElement,n=[...o.children].map(a=>a.dataset.username);t.classList.add("accDragging");let r=a=>{let l=[...o.children].filter(p=>p!==t),c=l.find(p=>{let m=p.getBoundingClientRect();return a.clientY!!(t.compareDocumentPosition(p)&Node.DOCUMENT_POSITION_PRECEDING)).length;if(d!==h){for(let p of l.slice(0,d))o.insertBefore(p,t);for(let p of l.slice(d))o.append(p);this.renumber(o)}},i=()=>{window.removeEventListener("pointermove",r,!0),window.removeEventListener("pointerup",i,!0),window.removeEventListener("pointercancel",i,!0),t.classList.remove("accDragging"),this.suppressClick=!0,setTimeout(()=>{this.suppressClick=!1});let a=[...o.children].map(l=>l.dataset.username??"");a.some((l,c)=>l!==n[c])&&this.saveOrder(a)};window.addEventListener("pointermove",r,!0),window.addEventListener("pointerup",i,!0),window.addEventListener("pointercancel",i,!0)}saveOrder(e){let t=o=>{let n=e.indexOf(o);return n===-1?e.length:n};if(this.accounts.sort((o,n)=>t(o.username)-t(n.username)),this.legacy){let o=cs().sort((n,r)=>t(Pt(n.username))-t(Pt(r.username)));localStorage.setItem(ds,JSON.stringify(o));return}this.send("order",e)}loginSlot(e){let t=this.accounts[e];if(!t){u.showNotification(`No account saved in slot ${e+1}`,!1,3);return}if(localStorage.getItem("krunker_token")!==null&&localStorage.getItem("krunker_username")===t.username){u.showNotification(`Already logged in as ${t.username}`,!1,2);return}Date.now()-this.lastQuickLoginconsole.error("[kute] accounts:",o)))}updatePreview(){if(!this.shadow)return;let e=ke("#accUsername",this.shadow).value,t=ke("#accColor",this.shadow).value;lp(U("#accPreviewAvatar",this.shadow),t,e),U("#accPreviewName",this.shadow).textContent=e.trim()||"Username"}resetForm(){this.shadow&&(ke("#accColor",this.shadow).value=`#${Math.floor(Math.random()*16777215).toString(16).padStart(6,"0")}`,ke("#accUsername",this.shadow).value="",ke("#accPassword",this.shadow).value="",U("#accError",this.shadow).textContent="",this.updatePreview())}saveAccount(){if(!this.shadow)return;let e=ke("#accUsername",this.shadow).value.trim(),t=ke("#accPassword",this.shadow).value,o=ke("#accColor",this.shadow).value,n=U("#accError",this.shadow);if(e===""){n.textContent="Enter a username";return}if(t===""){n.textContent="Enter a password";return}if(this.accounts.some(r=>r.username===e)){n.textContent=`${e} is already saved`;return}if(this.legacy){let r=cs();r.push({username:ap(e),password:ap(t),color:o}),localStorage.setItem(ds,JSON.stringify(r)),this.accounts.push({username:e,color:o}),this.renderAccounts()}else this.send("add",{username:e,password:t,color:o});this.showForm(!1)}async removeAccount(e){this.asking=!0;let t=await Ce({title:"Remove account",paragraphs:[`${e.username} gets removed from this list.`,"The Krunker account itself is not touched."],stay:"Keep",leave:"Remove"});if(this.asking=!1,!t)return;let o=this.accounts.findIndex(n=>n.username===e.username);o!==-1&&(this.legacy?(localStorage.setItem(ds,JSON.stringify(cs().filter(n=>Pt(n.username)!==e.username))),this.accounts.splice(o,1),this.renderAccounts()):this.send("remove",{username:e.username}))}async login(e){this.closeMenu();let t=window.FRVR?.auth,o=localStorage.getItem("krunker_token")!==null;if(typeof t?.loginAsAnonymous!="function"||typeof t.isLoggedIn!="function"){if(o){sessionStorage.setItem(Ei,JSON.stringify({username:e.username,at:Date.now()})),window.logoutAcc(),Ao();return}}else{if(o){wn(rp),window.logoutAcc();for(let n=0;nconsole.error("[kute] accounts:",n))}window.loginOrRegister(),queueMicrotask(()=>{let n=U(".auth-toggle-btn");n.textContent?.includes("username")&&n.click(),queueMicrotask(()=>{if(this.legacy){this.legacyLogin(e.username);return}this.send("login",{username:e.username})})})}async finishSwitch(e){let t=0;for(let o=0;o=vv)){wn(rp),Ao();return}}}legacyLogin(e){let t=cs().find(r=>Pt(r.username)===e);if(!t)return;let o=ke("#accName"),n=ke("#accPass");o.value=e,n.value=Pt(t.password),o.dispatchEvent(new Event("input",{bubbles:!0})),n.dispatchEvent(new Event("input",{bubbles:!0})),U(".io-button").click()}},xv=new $i});var dp={};A(dp,{default:()=>he});var Sv,Ev,$v,Ti,cp,he,It=w(()=>{"use strict";D();Sv=4e3,Ev=5e3,$v=3,Ti=class{constructor(){this.base=typeof u.apiBase=="string"?u.apiBase:"https://kute.lol/api",this.health=null,this.down=!1,this.failures=0,this.listeners=new Set,u.settings.toggleDisableOnlineFeatures=e=>this.setOffline(e)}offline(){return u.settings?.data?.disableOnlineFeatures===!0}setOffline(e){this.health=e?Promise.resolve(!1):null,this.down=e,this.failures=0;for(let t of this.listeners)t(!e)}available(){return this.health??=this.check(),this.health}retry(){return this.health=null,this.down=!1,this.failures=0,this.available()}async check(){if(await Ne,this.offline())return this.down=!0,!1;try{let e=await fetch(`${this.base}/health`,{cache:"no-store",signal:AbortSignal.timeout(Sv)}),t=e.ok?await e.json():null;this.down=t?.ok!==!0}catch{this.down=!0}return!this.down}async request(e,t={}){let{data:o}=await this.requestStatus(e,t);return o}async requestStatus(e,t={}){if(!await this.available()||this.down||this.offline())return{status:0,data:null};try{let o=AbortSignal.timeout(Ev),n=t.signal?AbortSignal.any([t.signal,o]):o,r=await fetch(this.base+e,{...t,signal:n});r.status>=500?this.failed():r.ok&&(this.failures=0);let i=await r.json().catch(()=>null),a=r.headers.get("Retry-After"),l=0;a!==null&&(l=/^\d+(\.\d+)?$/.test(a)?Date.now()+Number(a)*1e3:Date.parse(a));let c=Number(r.headers.get("X-RateLimit-Reset"))*1e3,d=Math.max(l||0,c||0,Number(i?.resetAt)||0),h=r.status===429?Math.max(Date.now()+1e3,d||Date.now()+6e4):void 0;return{status:r.status,data:r.ok?i:null,error:r.ok?null:i,retryAt:h}}catch{return t.signal?.aborted||this.failed(),{status:0,data:null}}}failed(){this.failures++,this.failures>=$v&&(this.down=!0)}},cp=new Ti;u.api=cp;he=cp});var hp={};var pp,Cv,Mv,up,Ai=w(()=>{"use strict";D();Ae();pp=async s=>{window.openHostWindow(!1,1),await $e(".hostTb0");let e=document.querySelector(`#${s.mapId}`);if(!e){let c=document.querySelectorAll(".hostMap .hostMapName"),d=Array.from(c).find(h=>h.innerText.trim().toLowerCase()===s.mapId.toLowerCase());d&&(e=d.parentElement?.querySelector('input[type="checkbox"]')??null)}if(!e)return;e.checked||e.click(),windows[7].switchTab(2);let t=await $e("#customSnameTeam1");t.value=s.team1Name;let o=await $e("#customSnameTeam2");o.value=s.team2Name;let n=await $e("#customStmSize"),r={"1v1":"0","2v2":"1","3v3":"2","4v4":"3"};if(s.team1Players){let c=await $e("#compRosterT1");c.value=s.team1Players}if(s.team2Players){let c=await $e("#compRosterT2");c.value=s.team2Players}if(s.spectators){let c=await $e("#compRosterSpecs");c.value=s.spectators}let i=await $e("#customSspecSlots");i.value="4";let a=["ak","sniper","smg","lmg","shotgun","rev","semi","rpg","uzi","runner","deagler","crossbow","famas","blaster","survivor","infiltrator"];if(s.classes){let c=JSON.parse(s.classes);for(let[d,h]of Object.entries(c)){let p=a.indexOf(d),m=await $e(`#customSclassLim${p}`);m.value=String(h)}}let l=r[s.teamSize]||s.teamSize;if(n.value=l,s.webhook)try{let c=await $e("#customSwebhook");c.value=decodeURIComponent(s.webhook)}catch{}window.createPrivateRoom()},Cv=async s=>{let e={FRA:"de-fra",SV:"us-ca-sv",SYD:"au-syd",TOK:"jb-hnd",SIN:"sgp",NY:"us-nj",MUM:"as-mb",DAL:"us-tx",BR:"brz",ME:"me-bhn"},t=e[s.toUpperCase()]||s;window.showWindow(1);let o=document.querySelector("select.inputGrey2");if(!o){typeof window.setSetting=="function"&&window.setSetting("defaultRegion",t);return}let n=Object.values(e),r=Array.from(document.querySelectorAll("select.inputGrey2")).find(i=>Array.from(i.options).some(a=>n.includes(a.value)))||o;if(r&&r.value!==t){let i=Array.from(r.options).findIndex(a=>a.value===t);i!==-1&&(r.selectedIndex=i,r.dispatchEvent(new Event("change",{bubbles:!0,cancelable:!0})))}window.showWindow(1)},Mv=s=>{let e=s.includes("?")?s.split("?")[1]:s;return Object.fromEntries(new URLSearchParams(e).entries())},up=sessionStorage.getItem("pendingCompHost");if(up){sessionStorage.removeItem("pendingCompHost");let s=JSON.parse(up);pp(s)}u.parseArgs=async s=>{let e=s.split(" ");for(let t of e)if(t.includes("action=host-comp")){let o=Mv(t);o.region?(sessionStorage.setItem("pendingCompHost",JSON.stringify(o)),await Cv(o.region),window.location.href="https://krunker.io/"):await pp(o)}};window.chrome.webview.addEventListener("message",async s=>{s.data?.args&&await u.parseArgs(s.data.args)})});var fp={};A(fp,{CLOCK_MS:()=>Tv,EXPERIENCE:()=>us,IMPORTANT_SHARE:()=>ps,TARGET_REFRESH_MULTIPLE:()=>bt,accept:()=>ws,atLimit:()=>_o,capCandidates:()=>zi,choose:()=>fs,chooseCap:()=>_i,collapses:()=>bs,compare:()=>Pi,experienceHolds:()=>Av,flooding:()=>vs,guard:()=>so,headroom:()=>Bi,refineCaps:()=>Hi,screen:()=>Ii,stalled:()=>gs,steady:()=>no,steadyLimit:()=>Ni,steadyRungs:()=>Ln,summarize:()=>ye,unsteady:()=>gt,wins:()=>No});function Ri(s){let e=[...s].sort((o,n)=>o-n),t=Math.floor(e.length/2);return e.length%2===1?e[t]:(e[t-1]+e[t])/2}function ye(s){let e=s.filter(o=>!o.invalid),t={};for(let o of Io){let r=e.map(c=>c[o]).filter(c=>typeof c=="number"&&Number.isFinite(c)),i=[Math.min(...r),Math.max(...r)],[a,l]=hs.has(o)?i:i.reverse();t[o]={n:r.length,median:r.length>0?Ri(r):null,spread:r.length>1?Math.abs(l-a):null,worst:r.length>0?a:null,best:r.length>0?l:null}}return t}function ms(s){return s==="fps"?0:2*.1}function Pi(s,e,t){let o=e[s],n=t[s];if(o.median===null||n.median===null||o.spread===null||n.spread===null)return"unknown";let r=hs.has(s)?o.median-n.median:n.median-o.median,i=Math.max(o.spread,n.spread,ms(s)),a=Math.max(Math.abs(o.median),Math.abs(n.median))*.1;return Math.abs(r)<=i||Math.abs(r)0?"better":"worse"}function so(s,e,t,o=ms(s)){let n=e[s],r=t[s];if(n.n<2||typeof n.worst!="number"||r.median===null||r.spread===null)return"unknown";let i=hs.has(s)?r.median-n.worst:n.worst-r.median,a=Math.max(Math.abs(n.worst),Math.abs(r.median))*.1;return i>Math.max(r.spread,o)&&i>=a?"worse":"ok"}function No(s,e,t){let o=e[s],n=t[s];if(o.n<2||n.n<2||typeof o.worst!="number"||typeof n.best!="number")return!1;let r=hs.has(s)?o.worst-n.best:n.best-o.worst;return r>ms(s)&&r>=Math.max(Math.abs(o.worst),Math.abs(n.best))*.1}function Ii(s,e){if(s.invalid)return"same";let t=!1;for(let o of Io){let n=s[o],r=e[o];if(typeof n!="number"||r.median===null||r.spread===null)continue;let i=hs.has(o)?n-r.median:r.median-n,a=Math.max(Math.abs(n),Math.abs(r.median))*.1;if(!(Math.abs(i)<=Math.max(r.spread,ms(o))||Math.abs(i)0&&(t=!0)}}return t?"contender":"same"}function fs(s,e,t={}){let o=ye(s.readings),n=e.map(c=>{let d=ye(c.readings),h={};for(let f of Io)h[f]=Pi(f,d,o);let p=us.some(f=>so(f,d,o)==="worse"),m=us.find(f=>No(f,d,o))??null;return m===null&&t.fpsCounts!==!1&&No("fps",d,o)&&(m="fps"),{id:c.id,summary:d,verdicts:h,rejected:p,decidedBy:m}}),r=n.length>0&&n.every(c=>Io.every(d=>c.verdicts[d]==="unknown")),i=c=>c.decidedBy===null?Io.length:Io.indexOf(c.decidedBy),l=n.filter(c=>!c.rejected&&c.decidedBy!==null).sort((c,d)=>i(c)-i(d))[0]??null;return{winner:l?.id??s.id,changed:l!==null,inconclusive:r,decidedBy:l?.decidedBy??null,incumbent:o,judged:n}}function gs(s){return!s.invalid&&typeof s.stallMs=="number"&&s.stallMs>1e3*.1}function gt(s,e){return s.some(t=>gs(t)||!t.invalid&&e>0&&typeof t.fps=="number"&&t.fps!t.invalid).length>=2&&!gt(s,e)}function bs(s){return[...s.values()].some(e=>e.filter(gs).length>=2)}function Ln(s){return Array.from({length:4},(e,t)=>(t+1)*s)}function Ni(s,e){let t=null,o=null;for(let n of Ln(s)){if(!no(e.get(n)??[],n))break;t=o??n,o=n}return{cap:t,steadyUpTo:o}}function vs(s){let{presentMs:e,p50:t}=s;return typeof e!="number"||typeof t!="number"?!1:e-t>Math.max(2*.1,e*.1)}function _o(s){let e=s.p50,t=r=>typeof r=="number"&&typeof e=="number"?Math.max(0,r-e):null,o=vs(s)?s.presentMs-e:0,n=typeof s.inputP99=="number"?s.inputP99+o:s.inputP99;return{...s,fps:null,p99:t(s.p99),maxMs:t(s.maxMs),inputP99:n}}function mp(s){return s==="p99"||s==="maxMs"?4*.1:ms(s)}function _i(s,e,t={}){let o=p=>ye((s.get(p)??[]).map(_o)),n=p=>{let m=(s.get(p)??[]).filter(f=>!f.invalid).map(f=>f.p50).filter(f=>typeof f=="number");return m.length>0?Ri(m):null},r=o(e),i=n(e),a=new Map,l=[...s.keys()].map(p=>{let m=o(p),f=n(p);if(p===e)return{cap:p,summary:m,frameMs:f,netMs:null,outcome:"yours"};if(gt(s.get(p)??[],p))return{cap:p,summary:m,frameMs:f,netMs:null,outcome:"not steady"};let g=Object.fromEntries(Li.map(H=>[H,Pi(H,m,r)])),b=e===0||p>0&&pNo(H,m,r)?(r[H].median??0)-(m[H].median??0):0,E=k("taskP99"),L=t.trade===!0&&so("inputP99",m,r)==="worse"?(m.inputP99.median??0)-(r.inputP99.median??0):0,x=g.inputP99==="unknown"?null:k("inputP99")-L,$=E+(x??i-f);a.set(p,E+(x??0));let I=L>0&&E>L,_="not better";return Li.some(H=>(H!=="inputP99"||!I)&&so(H,m,r,mp(H))==="worse")?_="worse":$>2*.1&&(_="better"),{cap:p,summary:m,frameMs:f,netMs:$,gains:{task:E,input:x},outcome:_}}),c=l.filter(p=>p.outcome==="better").sort((p,m)=>(m.netMs??0)-(p.netMs??0));if(c.length>0)return{winner:c[0].cap,changed:!0,decidedBy:"net",judged:l};let d=l.find(p=>p.cap===t.prefer&&p.cap!==e),h=d!==void 0&&(e===0||d.capd.filter(h=>!h.invalid);if(r(s).length<2)return{keep:!1,failed:"reference"};if(r(e).length<2)return{keep:!1,failed:"result"};let i=ye(s.map(_o)),a=ye(e.map(_o)),l=so("fps",ye(e),ye(s))==="worse";if(gt(e,o)&&!(gt(s,t)&&No("stallMs",a,i)&&!l))return{keep:!1,failed:"unsteady"};let c;for(let d of Li){let h=so(d,a,i,mp(d));if(h==="worse"&&d==="inputP99"&&n&&No("taskP99",a,i)){let p=(i.taskP99.median??0)-(a.taskP99.median??0),m=(a.inputP99.median??0)-(i.inputP99.median??0);if(p>m){c={task:p,input:m};continue}}if(h==="worse")return{keep:!1,failed:d};if(h==="unknown"&&d!=="inputP99")return{keep:!1,failed:"reference"}}if(so("inputP99",a,i)==="unknown"){let d=p=>Ri(r(p).map(m=>m.p50??0));if(d(e)-d(s)>Math.max(2*.1,d(e)*.1))return{keep:!1,failed:"frame"}}return t===o&&l?{keep:!1,failed:"fps"}:{keep:!0,failed:null,...c?{traded:c}:{}}}function Bi(s,e){return 1+Math.max(2*Math.abs(1-s),e)}function Av(s,e){let t=1e3/e,o=s.p99.median,n=s.stallMs.median;return(o===null||o<=t)&&(n===null||n<=t)}function zi({hz:s,capacity:e,current:t}){let o=i=>e===null||i<=e,n=[3*s,2*s,s].filter(o);return e!==null&&n.push(Math.round(e*.9)),t>0&&n.push(t),[0,...[...new Set(n.map(i=>Math.round(i)).filter(i=>i>0))].sort((i,a)=>a-i)]}function Hi(s,e,t,o){let n=l=>l===0?t??1/0:l,r=[...new Set(s)].sort((l,c)=>n(l)-n(c)),i=r.indexOf(e),a=[];for(let l of[r[i-1],r[i+1]]){if(l===void 0)continue;let c=(n(e)+n(l))/2;Number.isFinite(c)&&a.push(Math.round(c/o)*o)}return[...new Set(a)].filter(l=>l>0&&l!==e&&!s.includes(l))}var ps,bt,Tv,us,Io,hs,Li,ks=w(()=>{"use strict";ps=.1,bt=3,Tv=.1,us=["taskP99","inputP99","p99","stallMs","maxMs"],Io=[...us,"fps"],hs=new Set(["fps"]);Li=["taskP99","inputP99","p99","stallMs","maxMs"]});var vp={};A(vp,{PIPELINE:()=>Oe,cancel:()=>Di,currentPipeline:()=>Pn,measureCaps:()=>qi,searchPipeline:()=>Fi});function Pn(){return Object.fromEntries(Oe.map(s=>[s.setting,(u.running?.[s.setting]??u.settings.data[s.setting])!==!1]))}function bp(s,e){return s!=="hardFlip"||!e.hardFlip?null:u.settings.data.obsCapturePlugin===!0?"kept, OBS capture needs it":null}function ct(s,e){let t=Oe.map(r=>`${r.key}=${s[r.setting]?1:0}`),o=Rv.map(r=>`${r.key}=${u.settings.data[r.setting]??r.fallback?1:0}`),n=`limiter=${u.settings.data.patchFrameLimiter===!1?"hook":"viz"}`;return[...t,...o,n,e].filter(r=>r!=="").join(",")}function Oi(s,e,t){let o=n=>typeof n=="number"&&Number.isFinite(n)?n:null;return{fps:o(s?.fps),p50:o(s?.p50),p99:o(s?.p99),maxMs:o(s?.maxMs),stallMs:o(s?.stallMs),taskP99:o(e?.p99),inputP99:null,presentMs:o(t?.p50),invalid:!s||!(s.fps>0)}}function ys(s,e){let t=Date.now()*100+ ++_v%100;return new Promise(o=>{let n={timer:0},r=i=>{i.data?.benchMatrix===void 0||i.data.benchRun!==t||(clearTimeout(n.timer),window.chrome.webview.removeEventListener("message",r),o(i.data.cancelled?null:i.data.benchMatrix))};n.timer=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),window.chrome.webview.postMessage("bench-cancel"),o(null)},e),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(`run-bench-matrix ${t} ${JSON.stringify(s)}`)})}function Di(){window.chrome.webview.postMessage("bench-cancel")}async function Fi({hz:s,progress:e,cancelled:t}){let o=Pn();e("Testing the client (1 of 4)",0);let n=await ys([ct(o,`hz=${s}`)],Rn),r=Oi(n?.[0]?.page?.stats,n?.[0]?.page?.otherTasks);if(t()||r.invalid||r.fps===null)return null;let i=n?.[0]?.page?.load,a=Math.min(gp[1],Math.max(gp[0],r.fps/(s*3))),l=`hz=${s},draws=${Math.round(i.draws*a)},cpu=${Math.round(i.cpuIterations*a)}`,c=Oe.filter($=>bp($.setting,o)===null).map($=>({entry:$,pipeline:{...o,[$.setting]:!o[$.setting]}}));e("Testing the client (2 of 4)",.15);let d=await ys([ct(o,l),...c.map($=>ct($.pipeline,l)),ct(o,l)],Rn*(c.length+2));if(t()||d===null)return null;let h=$=>Oi($?.page?.stats,$?.page?.otherTasks,$?.present),p=[h(d[0]),h(d[d.length-1])],m=ye(p),f=Lv.some($=>{let{median:I,spread:_}=m[$];return I!==null&&_!==null&&_>Math.abs(I)*.1}),g=[{id:"current",label:"As you had it",pipeline:o,readings:p,outcome:"current"}];for(let $ of Oe){let I=bp($.setting,o);I!==null&&g.push({id:$.setting,label:`${$.label} off`,pipeline:o,readings:[],outcome:I})}let b=[];for(let[$,I]of c.entries()){let _=h(d[$+1]),H=_.invalid?"failed":Ii(_,m);f&&!_.invalid&&(H="contender");let G=`${I.entry.label} ${I.pipeline[I.entry.setting]?"on":"off"}`,J={id:I.entry.setting,label:G,pipeline:I.pipeline,readings:[_],outcome:Nv[H]};g.push(J),H==="contender"&&b.push(J)}if(b.length===0)return{winner:o,changed:!1,decidedBy:null,rows:g,common:l,capacity:m.fps.median};e("Testing the client (3 of 4)",.55);let v=await ys([...b.map($=>ct($.pipeline,l)),ct(o,l)],Rn*(b.length+1));if(t()||v===null)return null;for(let[$,I]of b.entries())I.readings.push(h(v[$]));p.push(h(v[v.length-1]));let k=fs({id:"current",readings:p},b.map($=>({id:$.id,readings:$.readings})));for(let $ of b){let I=k.judged.find(_=>_.id===$.id);$.outcome="not better",I?.rejected?$.outcome="worse":I?.decidedBy&&($.outcome="better")}let E=b.filter($=>$.outcome==="better"),L=g.find($=>$.id===k.winner)??g[0];if(E.length>1){e("Testing the client (4 of 4)",.8);let $={...o};for(let J of E)$[J.id]=J.pipeline[J.id];let I=await ys([ct($,l),ct(o,l),ct($,l)],Rn*3);if(t()||I===null)return null;p.push(h(I[1]));let _={id:"combined",label:E.map(J=>J.label).join(" and "),pipeline:$,readings:[h(I[0]),h(I[2])],outcome:"not better"};g.push(_);let H=fs({id:L.id,readings:L.readings},[{id:_.id,readings:_.readings}]),G=fs({id:"current",readings:p},[{id:_.id,readings:_.readings}]);H.changed&&G.changed&&(_.outcome="better",L=_,k=G)}let x=L.id!=="current";return{winner:L.pipeline,changed:x,decidedBy:x?k.decidedBy:null,rows:g,common:l,capacity:ye(L.readings).fps.median}}async function qi({pipeline:s,common:e,caps:t,cancelled:o}){let n=`${ct(s,e)},caps=${t.join(".")},rounds=2,ms=${Iv}`,i=(await ys([n],Pv))?.[0]?.page?.caps;if(o()||!Array.isArray(i))return null;let a=new Map(t.map(l=>[l,[]]));for(let l of i)a.get(Number(l.cap))?.push(Oi(l.stats,l.otherTasks));return a}var Lv,Oe,Rv,Rn,Pv,Iv,gp,Nv,_v,Ki=w(()=>{"use strict";D();ks();Lv=["fps","taskP99","p99"],Oe=[{setting:"hardFlip",key:"hook",label:"DXGI Swapchain Hook"},{setting:"patchFramePacing",key:"pacing",label:"Frame Pacing"},{setting:"patchCanvasBufferCache",key:"canvas",label:"WebGL Buffer Cache"},{setting:"patchHighQoS",key:"qos",label:"Game Process at High QoS"}].filter(s=>u.platform!=="linux"||s.setting!=="hardFlip"&&s.setting!=="patchHighQoS"),Rv=[{setting:"patchInputPriority",key:"inprio",fallback:!0},{setting:"patchRawInputMovement",key:"rawinput",fallback:!0},{setting:"patchAudioParamCoalesce",key:"coalesce",fallback:!0},{setting:"audioFix",key:"panner",fallback:!1},{setting:"uncapFps",key:"uncap",fallback:!0}],Rn=2e4,Pv=7e4,Iv=1500,gp=[.25,16],Nv={contender:"better",same:"not better",worse:"worse",failed:"failed"};_v=0});var kp={};A(kp,{MIN_RESOLUTION:()=>xs,SIGNIFICANT_RESOLUTION:()=>wp,SIGNIFICANT_SETTING:()=>In,decide:()=>Nn});function Nn({capacity:s,hz:e,headroom:t,halfResolutionGain:o,settings:n}){let r=e*3,i=r*t,a=s>=i,l="unknown";o!==null&&(l=o>=wp?"gpu":"cpu");let c=[],d=s;if(!a){let h=n.filter(p=>p.gain!==null&&p.steady&&p.current!==p.cheap&&p.gain>=In).sort((p,m)=>(m.gain??0)-(p.gain??0));for(let p of h){if(d>=i)break;let m=p.gain??1;d*=m,c.push({id:p.id,label:p.label,value:p.cheap,reason:`measured +${Math.round((m-1)*100)} %`})}}return{target:r,needed:i,holds:a,regime:l,predictedFps:d,tuneResolution:!a&&l==="gpu"&&d{"use strict";ks();In=1.05,wp=1.1,xs=.75});var Yi={};A(Yi,{ALL_IDS:()=>Gi,GAME_FRAME_CAP:()=>wt,PRESET:()=>Ui,RESOLUTION:()=>ro,SETTINGS:()=>vt,label:()=>Wi,opposite:()=>Vi,read:()=>Es,resetCache:()=>_n,write:()=>Me});function Wi(s){return vt.find(e=>e.id===s)?.label??s}function Bv(){if(Ss)return Ss;let s=window.windows[0],e=s.tabIndex,t=s.settingType,o="";try{s.settingType="advanced";for(let n=0;n{"use strict";vt=[{id:"postProcessing",label:"Post Processing",cheap:!1},{id:"shadowsDynamic",label:"Dynamic Shadows",cheap:!1},{id:"softShad",label:"Soft Shadows",cheap:!1,needsReload:!0},{id:"highResShad",label:"High-Res Shadows",cheap:!1,needsReload:!0},{id:"shadows",label:"Shadows",cheap:!1},{id:"antiAlias",label:"Antialiasing",cheap:!1,needsReload:!0},{id:"reflection",label:"Reflection Quality",cheap:"1",needsReload:!0},{id:"lighting",label:"Lighting",cheap:"0",needsReload:!0},{id:"weaponShine",label:"Weapons Shine",cheap:!1},{id:"ambientShading",label:"Old Shading",cheap:!1},{id:"particles",label:"Particles",cheap:!1,fightOnly:!0},{id:"showExplo",label:"Explosions",cheap:!1,fightOnly:!0},{id:"textureAnim",label:"Texture Animations",cheap:!1},{id:"objectAnim",label:"Object Animations",cheap:!1},{id:"bulletCasings",label:"Bullet Casings",cheap:!1,fightOnly:!0},{id:"impactHoles",label:"Bullet Impact Holes",cheap:!1,fightOnly:!0},{id:"noPaintAnim",label:"Disable Animated Paints",cheap:!0,needsReload:!0},{id:"mapDet",label:"Map Details",cheap:!1,needsReload:!0},{id:"lowSpec",label:"Low Spec",cheap:!0}],Ui={postProcessing:!1,particles:!1,showExplo:!1,bulletCasings:!1,impactHoles:!1,reflection:"1",lighting:"0",softShad:!1,highResShad:!1,noPaintAnim:!0},ro="resolution",wt="updateRate",Gi=[...vt.map(s=>s.id),ro,wt];Ss=null});var xp,yp=w(()=>{xp=`

          Auto-Detect

          Don't touch mouse or keyboard. Escape cancels
          Undo
          Details
          Advanced
          Run now
          OK
            `});var Sp={};A(Sp,{activity:()=>_t,hostLobby:()=>$s,inRoom:()=>Bn,spawn:()=>Cs,spawned:()=>Ji});function _t(){try{return window.getGameActivity?.()??{}}catch{return{}}}function Bn(s){let e=_t();return!!s&&!!e.custom&&e.id===s}async function $s(){if(typeof window.openHostWindow!="function"||typeof window.createPrivateRoom!="function")return null;let s=_t().id;for(let e=0;e<4;e++){window.openHostWindow(!1,0),await Nt(800),window.windows[7]?.switchTab?.(0),await Nt(300);let t=[...document.querySelectorAll("#windowHolder input[id^=gameMap]")],o=document.querySelector("#makePrivate");if(t.length===0||!o)return window.closWind?.(),null;for(let r of t)r.checked!==(r.id===Hv)&&r.click();let n=!o.checked;n&&o.click();try{window.createPrivateRoom();for(let r=0;r<32;r++){await Nt(250);let i=_t();if(i.custom&&i.id&&i.id!==s&&i.map)return i.id}}finally{n&&o.checked&&o.click()}window.closWind?.(),await Nt(1500)}return null}function Ji(){let s=document.querySelector("#instructions");return!!document.pointerLockElement||s!==null&&getComputedStyle(s).display==="none"}async function Cs(s){for(let o=0;o<40&&!(_t().map&&document.querySelector("#instructions"));o++)await Nt(250);await Nt(500);let e=Math.round(window.innerWidth/2),t=Math.round(window.innerHeight/2);for(let o=0;o<3&&!Ji();o++){if(!Bn(s))return!1;window.chrome.webview.postMessage(`click, ${e}, ${t}`),await Nt(1200)}return await Nt(800),Ji()}var Hv,Nt,zn=w(()=>{"use strict";Hv="gameMap0",Nt=s=>new Promise(e=>{setTimeout(e,s)})});var Cp={};A(Cp,{REPLAY_CIRCLE_MS:()=>Bt,takeInputDiagnostics:()=>Hn,takeReading:()=>Zi});function Hn(){let s=Qe;return Qe=$p(),s}function Zi({ms:s,hz:e,replay:t}){return new Promise((o,n)=>{let r=new to,i=new oo,a=new os,l=()=>document.hasFocus()&&document.visibilityState==="visible",c=document.pointerLockElement!==null,d=l()?null:"the window was not in front",h=()=>{l()||(d??="the window lost focus")},p=()=>{document.pointerLockElement!==null!==c&&(d??=c?"the game let go of the mouse":"the game took the mouse")},m=()=>{window.removeEventListener("blur",h),document.removeEventListener("visibilitychange",h),document.removeEventListener("pointerlockchange",p)};window.addEventListener("blur",h),document.addEventListener("visibilitychange",h),document.addEventListener("pointerlockchange",p);let f=setTimeout(()=>{m(),i.stop(),a.stop(),window.chrome.webview.postMessage("input-replay-stop"),n(new Error("the game stopped drawing frames"))},s+5e3);i.start(),a.start(),Qe.readings++,t&&c&&(Qe.asked++,window.chrome.webview.postMessage(`input-replay, ${s}`));let g=performance.now(),b=()=>{let v=performance.now();if(r.frame(v),v-g=Ep&&Qe.withInput++,L===null&&(d??="too few frames"),d!==null&&(Qe.invalid[d]=(Qe.invalid[d]??0)+1),o({fps:L?.fps??null,p50:L?.p50??null,p99:L?.p99??null,maxMs:L?.maxMs??null,stallMs:L?.stallMs??null,taskP99:k.p99,inputP99:E.events>=Ep?E.p99:null,invalid:d!==null,...d===null?{}:{why:d}})};requestAnimationFrame(b)})}var Bt,Ep,$p,Qe,Qi=w(()=>{"use strict";yn();Bt=600,Ep=20,$p=()=>({readings:0,asked:0,withInput:0,pageEvents:0,hostSteps:0,ended:{},invalid:{}}),Qe=$p();window.chrome.webview.addEventListener("message",s=>{let e=s.data?.inputReplay;e&&(Qe.hostSteps+=Number(e.sent)||0,Qe.ended[e.reason]=(Qe.ended[e.reason]??0)+1)})});var ia={};A(ia,{loggedIn:()=>As});function zt(){try{return JSON.parse(localStorage.getItem(qn)??"null")}catch{return null}}function Fe(s){localStorage.setItem(qn,JSON.stringify(s))}function As(){return document.querySelector("#signedInHeaderBar")!==null}function Ht(s,e){u.settings.data[s]=e,window.chrome.webview.postMessage(`set-config, ${s}, ${e}`);for(let t of[`#${s}`,`#slid_input_${s}`]){let o=document.querySelector(t);o&&(o.type==="checkbox"?o.checked=e===!0:o.value=String(e))}}function ut(s){return s==null?"default":String(s)==="true"?"on":String(s)==="false"?"off":String(s)}function Gv(){let s=/--autodetect-dev=(\S+)/.exec(u.launchArgs??""),e={};for(let t of s?.[1].split(",")??[]){let[o,n]=t.split(":");o==="hz"&&(e.hz=Number(n)),o==="battery"&&(e.battery=!0),o==="laptop"&&(e.laptop=!0),o==="force"&&(e.force=n),o==="collapse"&&(e.collapse=Number(n))}return e}function Pp(s){let e=Math.round((s-1)*100);return`${e>0?"+":""}${e} %`}function yt(s,e=1){return s===null?"?":s.toFixed(e)}function Dt(s){return s>0?`${s} FPS`:"no limit"}function Wv(s,e,t){if(s===null)return"measured as smooth, with fewer frames to draw";let o=`${yt(e[s].median)} to ${yt(t[s].median)}`;return{taskP99:`the game reacts sooner: other work waited up to ${o} ms`,inputP99:`mouse input waits ${o} ms`,p99:`slowest frames ${o} ms`,stallMs:`stutter ${o} ms per second`,maxMs:`longest frame ${o} ms`,fps:`${yt(e.fps.median,0)} to ${yt(t.fps.median,0)} FPS`}[s]}function Ip(s,e=""){return s===null?"-":`${e}${s.toFixed(1)} ms`}function Ot(s,e=""){return s===null?"-":`${e}${s.toFixed(1)}`}function sa(s){return`${yt(s.fps.median,0)}${Ot(s.p99.median)}${Ot(s.taskP99.median)}${Ot(s.inputP99.median)}`}function Kn(s){let e=s.filter(o=>typeof o=="number").sort((o,n)=>o-n);if(e.length===0)return null;let t=Math.floor(e.length/2);return e.length%2===1?e[t]:(e[t-1]+e[t])/2}function Vv(s){if(!s||s.readings===0)return"";if(s.withInput>0)return`

            Input test: ${s.withInput} of ${s.readings} readings in the match had mouse input from Kute (${s.hostSteps} steps sent, ${s.pageEvents} seen by the game).

            `;let e=Object.entries(s.ended).filter(([o])=>o!=="done"&&o!=="stopped").map(([o,n])=>`${o}: ${n}x`).join(", "),t="the game did not hold the mouse when the readings started";return s.asked>0&&(t=e||`Kute sent ${s.hostSteps} steps, the game saw ${s.pageEvents} mouse events`),`

            The input test did not reach the game (${t}). Mouse wait and settings that only cost in a fight were not measured.

            `}function dt(s,e){let t=s.filter(r=>typeof r=="number").map(Math.round);if(t.length===0)return"-";let[o,n]=[Math.min(...t),Math.max(...t)];return o===n?`${o} ${e}`:`${o} to ${n} ${e}`}function Yv(s){let e=[[`As you had it (${Dt(s.beforeCap)})`,s.played??[]],["no limit, first readings",s.unlimited??[]],...s.caps.filter(d=>d.where==="test match").map(d=>[Dt(d.cap),d.readings??[]])],{render:t=null,display:o=null}=s.adapters??{},n=t!==null&&o!==null&&t!==o,r=d=>{let h=(d?.nvidia??[]).map(p=>p.clockMhz).filter(p=>typeof p=="number");return h.length>0?Math.max(...h):null},i=d=>{let h=(d?.nvidia??[]).reduce((m,f)=>m|(f.heldBack??0),0),p=[[1,"heat"],[2,"power limit"],[4,"battery"],[16,"weak power supply"]].filter(([m])=>(h&Number(m))!==0).map(([,m])=>m);return p.length>0?p.join(", "):h===0?"no":`yes (${h})`},a=[...s.played??[],...s.unlimited??[]].some(d=>(d.load?.nvidia??[]).length>0),l=e.filter(([,d])=>d.some(h=>h.load)).map(([d,h])=>{let p=h.map(f=>f.load),m=(f,g)=>dt(p.map(b=>f===null?null:b?.gpu?.[f]?.[g]),"%");return`${d}${dt(h.map(f=>f.fps),"")}${dt(p.map(f=>f?.cpuBusy),"%")} - ${dt(p.map(f=>f?.cpuSpeed),"%")}${m(t,"render")}${a?`${dt(p.map(r),"MHz")}`:""} + `;let o=document.createElement("div");o.id="aboutPopupHost",t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=s.default;let r=n.querySelector("#aboutLogo");r&&(r.src=e.default);let i=n.querySelector("#aboutVersion");i&&(i.textContent=`Version ${u.version}`);for(let c of n.querySelectorAll("[data-url]"))c.addEventListener("click",()=>window.chrome.webview.postMessage(`open-url, ${c.getAttribute("data-url")}`));let a=new AbortController,l=()=>{a.abort(),t.remove()};n.querySelector("#aboutClose")?.addEventListener("click",l),t.addEventListener("mousedown",c=>{c.target===t&&l()}),document.addEventListener("keydown",c=>{c.key==="Escape"&&l()},{signal:a.signal}),document.body.append(t)}var gi=w(()=>{"use strict";F();u.showAboutPopup=Jb});var wi={};A(wi,{default:()=>ov});function op(){if(!document.getElementById("signedInHeaderBar"))return null;try{return localStorage.getItem("krunker_username")||null}catch{return null}}function bi(){try{return localStorage.getItem(Zb)??""}catch{return""}}var Zb,Qb,ev,tv,vi,ov,ki=w(()=>{"use strict";F();Zb="kro_setngss_endMessage",Qb="slid_endMessage",ev="playerHeaderEl",tv=500;vi=class{constructor(){this.account=void 0,this.header=new MutationObserver(()=>this.check()),this.saveTimer=0,this.editedFor=null,this.onInput=e=>{!(e.target instanceof HTMLInputElement)||e.target.id!==Qb||!this.account||(this.editedFor=this.account,clearTimeout(this.saveTimer),this.saveTimer=setTimeout(()=>this.flush(),tv))},u.settings.toggleAccountEndMessage=e=>this.toggle(e,!0),this.toggle(!!u.settings.data.accountEndMessage,!1)}get messages(){return{...u.settings.data.endMessages}}save(e){u.settings.data.endMessages=e,window.chrome.webview.postMessage(`set-config-json endMessages ${JSON.stringify(e)}`)}remember(e,t){let{messages:o}=this;(o[e]??"")!==t&&(t?o[e]=t:delete o[e],this.save(o))}flush(){clearTimeout(this.saveTimer),this.editedFor&&this.remember(this.editedFor,bi()),this.editedFor=null}check(){let e=op();if(e===this.account)return;this.flush(),this.account=e;let t=e?this.messages[e]??"":"";bi()!==t&&window.setSetting("endMessage",t)}toggle(e,t){if(this.header.disconnect(),document.removeEventListener("input",this.onInput,!0),!e){this.flush(),this.account=void 0;return}let o=op();if(t&&o){let r=bi();this.remember(o,r),u.showNotification(r?`Kept "${r}" for ${o}. Other accounts send nothing until you give them one`:`End messages are now per account, ${o} has none`,!1,6)}document.addEventListener("input",this.onInput,!0);let n=document.getElementById(ev);n?this.header.observe(n,{childList:!0}):console.error("[kute] end message: no account header"),this.check()}},ov=new vi});var sp=we((rS,sv)=>{sv.exports='

            '});var np={};A(np,{confirmPopup:()=>Ce});async function Ce(s){let e=await Promise.resolve().then(()=>ue(sp(),1)),t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default;let r=i=>n.querySelector(`#${i}`);r("confirmTitle").textContent=s.title;for(let i of s.paragraphs){let a=document.createElement("p");a.textContent=i,r("confirmText").append(a)}return r("confirmStay").textContent=s.stay,r("confirmLeave").textContent=s.leave,new Promise(i=>{let a=new AbortController,l=c=>{a.abort(),t.remove(),i(c)};r("confirmStay").onclick=()=>l(!1),r("confirmLeave").onclick=()=>l(!0),t.addEventListener("mousedown",c=>{c.target===t&&l(!1)}),document.addEventListener("keydown",c=>{c.key==="Escape"&&l(!1)},{signal:a.signal}),document.body.append(t)})}var Pt=w(()=>{"use strict"});var ip,rp=w(()=>{ip='

            Hotkeys

            Click a key, then press the new one. Escape cancels.
            Ctrl, Alt and Shift combinations work too.

            Lobby and window

            Toggles and windows

            Quick account login

            Reset to defaults
            Done
            '});var $i={};A($i,{bindings:()=>gt,default:()=>bv,matches:()=>ds});function lv(){if(u.settings.data.chatLogs===!1||!u.chatLogs){u.showNotification("Chat Logs is off in the settings",!1,3);return}u.chatLogs.toggle()}function cv(s){if(u.settings.data.accountManager===!1||!u.accounts){u.showNotification("Account Manager is off in the settings",!1,3);return}u.accounts.loginSlot(s)}function xi(){return!!u.hostFeatures?.includes(rv)}function gt(){let s=xi()&&u.settings.data.hotkeys||{};return Object.fromEntries(Rn.map(e=>[e.id,s[e.id]??(e.id in s?null:e.fallback)]))}function ap(s,e){return!!e&&s.keyCode===e?.key&&s.ctrlKey===e.ctrl&&s.altKey===e.alt&&s.shiftKey===e.shift}function ds(s,e){return ap(s,gt()[e]??null)}function uv(s){let e=(t,o)=>{try{let n=window.localStorage.getItem(t);return n===null?o:Number(n)}catch{return o}};return dv.filter(([t,,o,n])=>e(`cont_${t}`,o)===s||e(`cont_${t}_alt`,n)===s).map(([,t])=>t)}function hv(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`Num ${s-96}`:s>=112&&s<=135?`F${s-111}`:pv[s]??`Key ${s}`}function mv(s){let{code:e}=s,t=e;return/^Key[A-Z]$/.test(e)?t=e.slice(3):/^Digit\d$/.test(e)?t=e.slice(5):e.startsWith("Numpad")?t=`Num ${e.slice(6)}`:e.startsWith("Arrow")?t=e.slice(5):e||(t=hv(s.keyCode)),[s.ctrlKey&&"Ctrl",s.altKey&&"Alt",s.shiftKey&&"Shift",t].filter(Boolean).join("+")}function fv(s,e,t){let o=[],n=Rn.filter(i=>{let a=t[i.id];return i.id!==s.id&&a!==null&&a.key===e.key&&a.ctrl===e.ctrl&&a.alt===e.alt&&a.shift===e.shift});n.length>0&&o.push(`Also bound to Kute's ${n.map(i=>i.label).join(", ")}, pick another key.`);let r=uv(e.key);if(r.length>0){let i=r.length>3?` and ${r.length-3} more`:"";o.push(`Krunker uses this key for ${r.slice(0,3).join(", ")}${i}, the game still gets it.`)}return o}function gv(){let s=document.activeElement;for(;s?.shadowRoot?.activeElement;)s=s.shadowRoot.activeElement;return s instanceof HTMLInputElement||s instanceof HTMLTextAreaElement||s instanceof HTMLElement&&s.isContentEditable}var rv,iv,av,Io,yi,Rn,dv,pv,Si,Ei,bv,No=w(()=>{"use strict";rp();F();To();rv="hotkeys",iv=131,av=new Set(["Shift","Control","Alt","Meta","AltGraph"]);Io=(s,e)=>({key:s,ctrl:!1,alt:!1,shift:!1,name:e}),yi=s=>({id:`account${s}`,label:`Account ${s}`,note:`logs in account ${s} of the Accounts list`,group:"account",fallback:{key:48+s,ctrl:!0,alt:!0,shift:!1,name:`Ctrl+Alt+${s}`},run:()=>cv(s-1)}),Rn=[{id:"newLobby",label:"New lobby",group:"window",fallback:Io(115,"F4")},{id:"matchmaker",label:"Matchmaker",note:"new lobby while the Matchmaker setting is off",group:"window",fallback:Io(117,"F6")},{id:"reload",label:"Reload",group:"window",fallback:Io(116,"F5")},{id:"fullscreen",label:"Fullscreen",group:"window",fallback:Io(122,"F11")},{id:"devtools",label:"Developer tools",group:"window",fallback:Io(123,"F12")},{id:"toggleSpotify",label:"Spotify overlay",note:"on and off",group:"toggle",fallback:null,setting:"spotifyOverlay"},{id:"toggleKeystrokes",label:"Keystrokes",note:"on and off",group:"toggle",fallback:null,setting:"keystrokes"},{id:"chatLogs",label:"Chat logs",note:"open and close",group:"toggle",fallback:Io(112,"F1"),run:lv},yi(1),yi(2),yi(3)],dv=[["0","Forward",87,-1],["1","Back",83,-1],["2","Left",65,-1],["3","Right",68,-1],["jumpKey","Jump",32,-1],["crouchKey","Crouch",16,-1],["reloadKey","Reload",82,-1],["swapKey","Swap weapon",69,-1],["primKey","Primary weapon",84,-1],["meleeKey","Melee",81,-1],["equipKey","Equip",67,-1],["dropKey","Drop",90,-1],["inspKey","Inspect",88,-1],["wepVisKey","Hide weapon",-1,-1],["sprayKey","Spray",70,-1],["sprayWheelKey","Spray wheel",70,-1],["interactKey","Interact",71,-1],["interactSecKey","Second interact",72,-1],["confirmKey","Confirm",75,-1],["resetKey","Reset",66,-1],["resetLastKey","Reset to last",78,-1],["markPositionKey","Mark position",10002,-1],["chatKey","Chat",13,-1],["voiceKey","Voice chat",86,-1],["pListKey","Player list",18,-1],["sBoardKey","Scoreboard",9,-1],["hidePlayersKey","Hide players",-1,-1],["kickVoteYKey","Kick vote yes",49,-1],["kickVoteNKey","Kick vote no",50,-1],["kpdVoteYKey","Vote yes",89,-1],["kpdVoteNKey","Vote no",78,-1],["kpdVisionKey","Vision",187,-1],["specFreeKey","Spectate free camera",70,-1],["specObjKey","Spectate objective",72,-1],["specFirstKey","Spectate first person",82,-1],["specNamesKey","Spectate names",77,-1],["specMiniMap","Spectate minimap",189,-1],["specFocusKey","Spectate focus",190,-1],["propKey","Prop",80,-1],["propRandKey","Random prop",77,-1],["propRotKey","Rotate prop",82,-1],["propRotRKey","Rotate prop back",78,-1],["18","Streak 1",49,-1],["19","Streak 2",50,-1],["20","Streak 3",51,-1],...[0,1,2,3,4,5].map(s=>[`taunt${s}`,`Taunt ${s+1}`,49+s,-1]),...["27","28","29","30","31","32"].map((s,e)=>[s,`Toggle ${e+1}`,-1,-1]),...["43","44","45","46","47","48"].map((s,e)=>[s,`Chat message ${e+1}`,-1,-1])];pv={8:"Backspace",9:"Tab",13:"Enter",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",45:"Insert",46:"Delete"};Si=class{constructor(e){this.owner=e,this.waiting=null,this.overlay=document.createElement("div"),this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");this.overlay.append(t),this.shadow=t.attachShadow({mode:"open"}),this.shadow.innerHTML=ip,document.body.append(this.overlay),this.onKey=this.onKey.bind(this),window.addEventListener("keydown",this.onKey,!0),this.overlay.addEventListener("click",o=>{o.target===this.overlay&&this.close()}),this.element("hkDone").onclick=()=>this.close(),this.element("hkReset").onclick=()=>{this.owner.save({}),this.stopWaiting(),this.render()},this.render()}element(e){return this.shadow.querySelector(`#${e}`)}startWaiting(e){this.stopWaiting(),this.waiting=e,this.owner.capturing=!0,window.chrome.webview.postMessage("hotkeys-pause, true"),this.render()}stopWaiting(){this.waiting!==null&&(this.waiting=null,this.owner.capturing=!1,window.chrome.webview.postMessage("hotkeys-pause, false"),this.render())}assign(e,t){this.owner.save({...gt(),[e]:t}),this.stopWaiting(),this.render()}row(e,t){let o=t[e.id],n=document.createElement("div");n.className="hkRow";let r=document.createElement("div");if(r.className="hkLabel",r.textContent=e.label,e.note){let p=document.createElement("span");p.className="hkNote",p.textContent=e.note,r.append(p)}let i=this.waiting===e.id,a=document.createElement("div");a.className=`hkKey${i?" hkWaiting":""}${o?"":" hkNone"}`,a.textContent=i?"Press a key":o?.name??"No key",a.title="Click, then press the new key. Escape cancels",a.onclick=()=>this.startWaiting(e.id);let l=document.createElement("div");l.className="hkClear",l.textContent="Clear",l.style.visibility=o?"":"hidden",l.onclick=()=>this.assign(e.id,null),n.append(r,a,l);let c=o?fv(e,o,t):[];if(c.length===0)return n;let d=document.createElement("div");d.className="hkWarn",d.textContent=c.join(" ");let h=document.createElement("div");return h.append(n,d),h}render(){let e=gt();for(let t of["window","toggle","account"]){let o=Rn.filter(n=>n.group===t).map(n=>this.row(n,e));this.element(`hkGroup-${t}`).replaceChildren(...o)}}onKey(e){if(this.waiting===null){e.key==="Escape"&&this.close();return}if(e.preventDefault(),e.stopImmediatePropagation(),e.key==="Escape"){this.stopWaiting();return}av.has(e.key)||e.keyCode===iv||e.keyCode===0||this.assign(this.waiting,{key:e.keyCode,ctrl:e.ctrlKey,alt:e.altKey,shift:e.shiftKey,name:mv(e)})}close(){this.stopWaiting(),window.removeEventListener("keydown",this.onKey,!0),this.overlay.remove()}},Ei=class{constructor(){this.capturing=!1,u.hotkeys={edit:()=>this.edit()},window.addEventListener("keydown",e=>this.onKey(e),!0)}onKey(e){if(this.capturing||e.repeat||gv()||!xi())return;let t=gt();for(let o of Rn)o.group==="window"||!ap(e,t[o.id])||(o.run?o.run():o.setting&&this.flip(o.setting,o.label))}flip(e,t){if(Mo(u.settings.data,e)){u.showNotification(`${t} is off in performance mode`,!1,3);return}let o=!u.settings.data[e];u.settings.changeSetting(e,o,!1),u.showNotification(`${t} ${o?"on":"off"}`,!1,2)}save(e){u.settings.data.hotkeys=e,window.chrome.webview.postMessage(`set-config-json hotkeys ${JSON.stringify(e)}`)}edit(){if(!xi()){u.showNotification("Hotkeys need a newer Kute",!1,3);return}new Si(this)}},bv=new Ei});var lp=we((dS,vv)=>{vv.exports='
            ×

            Accounts

            Click an account to log in, drag ≡ to reorder
            Add account
            '});var Ti={};A(Ti,{default:()=>Mv});function It(s){let e=decodeURIComponent(s),t=e.length;return e.split("").map(o=>String.fromCharCode(o.charCodeAt(0)-t)).join("")}function up(s){let e=s.length,t=s.split("").map(o=>String.fromCharCode(o.charCodeAt(0)+e)).join("");return encodeURIComponent(t)}function us(){try{let s=JSON.parse(localStorage.getItem(ps)||"[]");return Array.isArray(s)?s:[]}catch{return[]}}function $v(s){return typeof s=="string"&&/^#[\da-f]{6}$/i.test(s)?s:wv}function Cv(s){let e=Number.parseInt(s.slice(1),16),t=e>>16&255,o=e>>8&255,n=e&255;return t*.299+o*.587+n*.114>150?"#111":"#fff"}function pp(s,e,t){let o=$v(e);s.style.background=o,s.style.color=Cv(o),s.textContent=t.trim().slice(0,1)||"?"}var ps,wv,Ci,kv,cp,yv,xv,Sv,Ev,dp,Mi,Mv,Ai=w(()=>{"use strict";F();Ae();Pt();xn();No();ps="accounts",wv="#35e0e8",Ci="kute_account_switch",kv=12e4,cp=3e4,yv=3e3,xv=2e4,Sv=3e3,Ev=5e3,dp=s=>new Promise(e=>{setTimeout(e,s)});Mi=class{constructor(){this.button=document.createElement("div"),this.button.textContent="Accounts",this.button.classList.add("button","buttonB","bigShadowT"),this.button.style.cssText="display: block; padding-top: 7px; padding-bottom: 22px; font-size: 25px!important; padding-bottom: 22px; margin-top: 7px; height: 21px; line-height: 35px; width: 162px; font-size:20px!important; margin-left: 3px;",this.headerSeparator=document.createElement("div"),this.headerSeparator.style.cssText="width: 4px; height: 35px; margin: 0 6px; background: rgba(255, 255, 255, 0.12); flex-shrink: 0;",this.headerItem=document.createElement("div"),this.headerItem.style.cssText="display: flex; align-items: center; gap: 8px; padding: 8px 12px; cursor: pointer; color: #fff; font-weight: 700; font-size: 16px; white-space: nowrap;",this.headerItem.innerHTML='switch_accountAccounts',this.headerObserver=new MutationObserver(()=>this.placeButton()),this.overlay=null,this.shadow=null,this.menuController=null,this.asking=!1,this.accounts=[],this.legacy=!1,this.lastQuickLogin=0,this.suppressClick=!1,u.settings.toggleAccountManager=e=>this.toggle(e),u.accounts={loginSlot:e=>this.loginSlot(e)},this.toggle(!0),this.load()}async load(){let e=us(),t=null;if(e.length>0){let o=e.filter(n=>typeof n?.username=="string"&&typeof n?.password=="string").map(n=>({username:It(n.username),password:It(n.password),color:n.color}));t=await Te(`accounts-migrate ${JSON.stringify(o)}`,"accounts",5e3),t!==null&&localStorage.removeItem(ps)}else t=await Te("accounts-list","accounts");t===null?(this.legacy=!0,this.accounts=e.map(o=>({username:It(o.username),color:o.color}))):this.accounts=t,this.renderAccounts(),this.resumeSwitch()}resumeSwitch(){let e=sessionStorage.getItem(Ci);if(e===null)return;sessionStorage.removeItem(Ci);let t={};try{t=JSON.parse(e)??{}}catch{return}if(Date.now()-Number(t.at)>kv||localStorage.getItem("krunker_token")!==null)return;let o=this.accounts.find(n=>n.username===t.username);o&&this.login(o)}async send(e,t){let o=await Te(`accounts-${e} ${JSON.stringify(t)}`,"accounts");o!==null&&(this.accounts=o,this.renderAccounts())}gameUpdateListener=e=>{e.data==="game-updated"&&setTimeout(()=>{Oe()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.button.style.cssText="display: block; padding: 14px 24px 22px; bottom: 0; right: 0; z-index: 9; font-size: 21px !important; position: absolute;",U("#compBtnLst").append(this.button))},2e3)};toggle(e){if(e)if(window.chrome.webview.addEventListener("message",this.gameUpdateListener),this.button.addEventListener("click",this.openMenu),this.headerItem.addEventListener("click",this.openMenu),Oe())window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.button.style.cssText="display: block; padding: 14px 24px 22px; bottom: 0; right: 0; z-index: 9; font-size: 21px !important; position: absolute;",U("#compBtnLst").append(this.button);else{this.placeButton();let t=document.querySelector("#playerHeaderEl");t&&this.headerObserver.observe(t,{childList:!0,subtree:!0})}else window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.headerObserver.disconnect(),this.button.removeEventListener("click",this.openMenu),this.headerItem.removeEventListener("click",this.openMenu),this.button.remove(),this.headerSeparator.remove(),this.headerItem.remove(),this.closeMenu()}placeButton(){let e=document.querySelector("#playerHeaderEl .headerBarRight");if(e){if(e.firstElementChild!==this.headerItem){let n=[...e.querySelector(".nav-item")?.classList??[]].find(r=>r.startsWith("svelte-"))??"";this.headerItem.style.cssText="",this.headerItem.className=`nav-item ${n}`,this.headerItem.innerHTML=`switch_account Accounts`,this.headerSeparator.className="verticalSeparator",this.headerSeparator.style.cssText="height: 35px;",e.prepend(this.headerItem,this.headerSeparator)}this.button.remove();return}let t=document.querySelector("#signedInHeaderBar");if(t){t.contains(this.headerItem)||t.append(this.headerSeparator,this.headerItem);return}let o=document.querySelector("#signedOutHeaderBar");o&&!o.contains(this.button)&&o.append(this.button)}openMenu=()=>{this.overlay||this.buildMenu().catch(e=>console.error("[kute] accounts:",e))};async buildMenu(){let e=await Promise.resolve().then(()=>ue(lp(),1));if(this.overlay)return;let t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default,this.overlay=t,this.shadow=n;let r=new AbortController;this.menuController=r,U("#accClose",n).onclick=()=>this.closeMenu(),U("#accAdd",n).onclick=()=>this.showForm(!0),U("#accCancel",n).onclick=()=>this.showForm(!1),U("#accSave",n).onclick=()=>this.saveAccount(),U("#accFormHint",n).textContent=this.legacy?"Saved on this PC only":"Saved encrypted on this PC, never sent anywhere";let i=ke("#accUsername",n),a=ke("#accColor",n);i.oninput=()=>this.updatePreview(),a.oninput=()=>this.updatePreview();for(let l of[i,ke("#accPassword",n)])l.onkeydown=c=>{c.key==="Enter"&&this.saveAccount()};for(let l of["keydown","keyup","keypress"])n.addEventListener(l,c=>c.stopPropagation());t.addEventListener("mousedown",l=>{l.target===t&&this.closeMenu()}),document.addEventListener("keydown",l=>{l.key!=="Escape"||this.asking||(l.stopPropagation(),U("#accFormView",n).hidden?this.closeMenu():this.showForm(!1))},{signal:r.signal,capture:!0}),this.renderAccounts(),this.resetForm(),document.body.append(t)}closeMenu(){this.menuController?.abort(),this.menuController=null,this.overlay?.remove(),this.overlay=null,this.shadow=null}showForm(e){this.shadow&&(U("#accListView",this.shadow).hidden=e,U("#accFormView",this.shadow).hidden=!e,e&&(this.resetForm(),ke("#accUsername",this.shadow).focus()))}renderAccounts(){let{shadow:e}=this;if(!e)return;let t=U("#accList",e);t.textContent="";for(let n of this.accounts){let r=document.createElement("div");r.className="accRow",r.dataset.username=n.username,r.title=`Log in as ${n.username}`,r.onclick=()=>{this.suppressClick||this.login(n)};let i=document.createElement("div");i.className="accHandle",i.textContent="\u2261",i.title="Drag to reorder",i.onclick=p=>p.stopPropagation(),i.onpointerdown=p=>this.startDrag(p,r);let a=document.createElement("div");a.className="accIndex";let l=document.createElement("div");l.className="accAvatar",pp(l,n.color,n.username);let c=document.createElement("div");c.className="accName",c.textContent=n.username;let d=document.createElement("div");d.className="accRemove",d.textContent="\xD7",d.title="Remove",d.onclick=p=>{p.stopPropagation(),this.removeAccount(n).catch(m=>console.error("[kute] accounts:",m))};let h=document.createElement("div");h.className="accKey",r.append(i,a,l,c,h,d),t.append(r)}this.renumber(t);let o=this.accounts.length===0;U("#accEmpty",e).hidden=!o,U("#accListHint",e).hidden=o}renumber(e){let t=gt();[...e.children].forEach((o,n)=>{U(".accIndex",o).textContent=String(n+1),U(".accKey",o).textContent=t[`account${n+1}`]?.name??""})}canReorder(){return this.legacy||!!u.hostFeatures?.includes("accounts-order")}startDrag(e,t){if(e.button!==0)return;if(e.preventDefault(),!this.canReorder()){u.showNotification("Reordering accounts needs a newer Kute",!1,3);return}let o=t.parentElement,n=[...o.children].map(a=>a.dataset.username);t.classList.add("accDragging");let r=a=>{let l=[...o.children].filter(p=>p!==t),c=l.find(p=>{let m=p.getBoundingClientRect();return a.clientY!!(t.compareDocumentPosition(p)&Node.DOCUMENT_POSITION_PRECEDING)).length;if(d!==h){for(let p of l.slice(0,d))o.insertBefore(p,t);for(let p of l.slice(d))o.append(p);this.renumber(o)}},i=()=>{window.removeEventListener("pointermove",r,!0),window.removeEventListener("pointerup",i,!0),window.removeEventListener("pointercancel",i,!0),t.classList.remove("accDragging"),this.suppressClick=!0,setTimeout(()=>{this.suppressClick=!1});let a=[...o.children].map(l=>l.dataset.username??"");a.some((l,c)=>l!==n[c])&&this.saveOrder(a)};window.addEventListener("pointermove",r,!0),window.addEventListener("pointerup",i,!0),window.addEventListener("pointercancel",i,!0)}saveOrder(e){let t=o=>{let n=e.indexOf(o);return n===-1?e.length:n};if(this.accounts.sort((o,n)=>t(o.username)-t(n.username)),this.legacy){let o=us().sort((n,r)=>t(It(n.username))-t(It(r.username)));localStorage.setItem(ps,JSON.stringify(o));return}this.send("order",e)}loginSlot(e){let t=this.accounts[e];if(!t){u.showNotification(`No account saved in slot ${e+1}`,!1,3);return}if(localStorage.getItem("krunker_token")!==null&&localStorage.getItem("krunker_username")===t.username){u.showNotification(`Already logged in as ${t.username}`,!1,2);return}Date.now()-this.lastQuickLoginconsole.error("[kute] accounts:",o)))}updatePreview(){if(!this.shadow)return;let e=ke("#accUsername",this.shadow).value,t=ke("#accColor",this.shadow).value;pp(U("#accPreviewAvatar",this.shadow),t,e),U("#accPreviewName",this.shadow).textContent=e.trim()||"Username"}resetForm(){this.shadow&&(ke("#accColor",this.shadow).value=`#${Math.floor(Math.random()*16777215).toString(16).padStart(6,"0")}`,ke("#accUsername",this.shadow).value="",ke("#accPassword",this.shadow).value="",U("#accError",this.shadow).textContent="",this.updatePreview())}saveAccount(){if(!this.shadow)return;let e=ke("#accUsername",this.shadow).value.trim(),t=ke("#accPassword",this.shadow).value,o=ke("#accColor",this.shadow).value,n=U("#accError",this.shadow);if(e===""){n.textContent="Enter a username";return}if(t===""){n.textContent="Enter a password";return}if(this.accounts.some(r=>r.username===e)){n.textContent=`${e} is already saved`;return}if(this.legacy){let r=us();r.push({username:up(e),password:up(t),color:o}),localStorage.setItem(ps,JSON.stringify(r)),this.accounts.push({username:e,color:o}),this.renderAccounts()}else this.send("add",{username:e,password:t,color:o});this.showForm(!1)}async removeAccount(e){this.asking=!0;let t=await Ce({title:"Remove account",paragraphs:[`${e.username} gets removed from this list.`,"The Krunker account itself is not touched."],stay:"Keep",leave:"Remove"});if(this.asking=!1,!t)return;let o=this.accounts.findIndex(n=>n.username===e.username);o!==-1&&(this.legacy?(localStorage.setItem(ps,JSON.stringify(us().filter(n=>It(n.username)!==e.username))),this.accounts.splice(o,1),this.renderAccounts()):this.send("remove",{username:e.username}))}async login(e){this.closeMenu();let t=window.FRVR?.auth,o=localStorage.getItem("krunker_token")!==null;if(typeof t?.loginAsAnonymous!="function"||typeof t.isLoggedIn!="function"){if(o){sessionStorage.setItem(Ci,JSON.stringify({username:e.username,at:Date.now()})),window.logoutAcc(),Ro();return}}else{if(o){yn(cp),window.logoutAcc();for(let n=0;nconsole.error("[kute] accounts:",n))}window.loginOrRegister(),queueMicrotask(()=>{let n=U(".auth-toggle-btn");n.textContent?.includes("username")&&n.click(),queueMicrotask(()=>{if(this.legacy){this.legacyLogin(e.username);return}this.send("login",{username:e.username})})})}async finishSwitch(e){let t=0;for(let o=0;o=Sv)){yn(cp),Ro();return}}}legacyLogin(e){let t=us().find(r=>It(r.username)===e);if(!t)return;let o=ke("#accName"),n=ke("#accPass");o.value=e,n.value=It(t.password),o.dispatchEvent(new Event("input",{bubbles:!0})),n.dispatchEvent(new Event("input",{bubbles:!0})),U(".io-button").click()}},Mv=new Mi});var mp={};A(mp,{default:()=>he});var Tv,Av,Lv,Li,hp,he,Nt=w(()=>{"use strict";F();Tv=4e3,Av=5e3,Lv=3,Li=class{constructor(){this.base=typeof u.apiBase=="string"?u.apiBase:"https://kute.lol/api",this.health=null,this.down=!1,this.failures=0,this.listeners=new Set,u.settings.toggleDisableOnlineFeatures=e=>this.setOffline(e)}offline(){return u.settings?.data?.disableOnlineFeatures===!0}setOffline(e){this.health=e?Promise.resolve(!1):null,this.down=e,this.failures=0;for(let t of this.listeners)t(!e)}available(){return this.health??=this.check(),this.health}retry(){return this.health=null,this.down=!1,this.failures=0,this.available()}async check(){if(await Ne,this.offline())return this.down=!0,!1;try{let e=await fetch(`${this.base}/health`,{cache:"no-store",signal:AbortSignal.timeout(Tv)}),t=e.ok?await e.json():null;this.down=t?.ok!==!0}catch{this.down=!0}return!this.down}async request(e,t={}){let{data:o}=await this.requestStatus(e,t);return o}async requestStatus(e,t={}){if(!await this.available()||this.down||this.offline())return{status:0,data:null};try{let o=AbortSignal.timeout(Av),n=t.signal?AbortSignal.any([t.signal,o]):o,r=await fetch(this.base+e,{...t,signal:n});r.status>=500?this.failed():r.ok&&(this.failures=0);let i=await r.json().catch(()=>null),a=r.headers.get("Retry-After"),l=0;a!==null&&(l=/^\d+(\.\d+)?$/.test(a)?Date.now()+Number(a)*1e3:Date.parse(a));let c=Number(r.headers.get("X-RateLimit-Reset"))*1e3,d=Math.max(l||0,c||0,Number(i?.resetAt)||0),h=r.status===429?Math.max(Date.now()+1e3,d||Date.now()+6e4):void 0;return{status:r.status,data:r.ok?i:null,error:r.ok?null:i,retryAt:h}}catch{return t.signal?.aborted||this.failed(),{status:0,data:null}}}failed(){this.failures++,this.failures>=Lv&&(this.down=!0)}},hp=new Li;u.api=hp;he=hp});var bp={};var gp,Rv,Pv,fp,Ri=w(()=>{"use strict";F();Ae();gp=async s=>{window.openHostWindow(!1,1),await $e(".hostTb0");let e=document.querySelector(`#${s.mapId}`);if(!e){let c=document.querySelectorAll(".hostMap .hostMapName"),d=Array.from(c).find(h=>h.innerText.trim().toLowerCase()===s.mapId.toLowerCase());d&&(e=d.parentElement?.querySelector('input[type="checkbox"]')??null)}if(!e)return;e.checked||e.click(),windows[7].switchTab(2);let t=await $e("#customSnameTeam1");t.value=s.team1Name;let o=await $e("#customSnameTeam2");o.value=s.team2Name;let n=await $e("#customStmSize"),r={"1v1":"0","2v2":"1","3v3":"2","4v4":"3"};if(s.team1Players){let c=await $e("#compRosterT1");c.value=s.team1Players}if(s.team2Players){let c=await $e("#compRosterT2");c.value=s.team2Players}if(s.spectators){let c=await $e("#compRosterSpecs");c.value=s.spectators}let i=await $e("#customSspecSlots");i.value="4";let a=["ak","sniper","smg","lmg","shotgun","rev","semi","rpg","uzi","runner","deagler","crossbow","famas","blaster","survivor","infiltrator"];if(s.classes){let c=JSON.parse(s.classes);for(let[d,h]of Object.entries(c)){let p=a.indexOf(d),m=await $e(`#customSclassLim${p}`);m.value=String(h)}}let l=r[s.teamSize]||s.teamSize;if(n.value=l,s.webhook)try{let c=await $e("#customSwebhook");c.value=decodeURIComponent(s.webhook)}catch{}window.createPrivateRoom()},Rv=async s=>{let e={FRA:"de-fra",SV:"us-ca-sv",SYD:"au-syd",TOK:"jb-hnd",SIN:"sgp",NY:"us-nj",MUM:"as-mb",DAL:"us-tx",BR:"brz",ME:"me-bhn"},t=e[s.toUpperCase()]||s;window.showWindow(1);let o=document.querySelector("select.inputGrey2");if(!o){typeof window.setSetting=="function"&&window.setSetting("defaultRegion",t);return}let n=Object.values(e),r=Array.from(document.querySelectorAll("select.inputGrey2")).find(i=>Array.from(i.options).some(a=>n.includes(a.value)))||o;if(r&&r.value!==t){let i=Array.from(r.options).findIndex(a=>a.value===t);i!==-1&&(r.selectedIndex=i,r.dispatchEvent(new Event("change",{bubbles:!0,cancelable:!0})))}window.showWindow(1)},Pv=s=>{let e=s.includes("?")?s.split("?")[1]:s;return Object.fromEntries(new URLSearchParams(e).entries())},fp=sessionStorage.getItem("pendingCompHost");if(fp){sessionStorage.removeItem("pendingCompHost");let s=JSON.parse(fp);gp(s)}u.parseArgs=async s=>{let e=s.split(" ");for(let t of e)if(t.includes("action=host-comp")){let o=Pv(t);o.region?(sessionStorage.setItem("pendingCompHost",JSON.stringify(o)),await Rv(o.region),window.location.href="https://krunker.io/"):await gp(o)}};window.chrome.webview.addEventListener("message",async s=>{s.data?.args&&await u.parseArgs(s.data.args)})});var wp={};A(wp,{CLOCK_MS:()=>Iv,EXPERIENCE:()=>hs,IMPORTANT_SHARE:()=>ms,TARGET_REFRESH_MULTIPLE:()=>vt,accept:()=>ys,atLimit:()=>zo,capCandidates:()=>Oi,choose:()=>bs,chooseCap:()=>zi,collapses:()=>ws,compare:()=>Ni,experienceHolds:()=>Nv,flooding:()=>ks,guard:()=>io,headroom:()=>Hi,refineCaps:()=>Fi,screen:()=>_i,stalled:()=>vs,steady:()=>ao,steadyLimit:()=>Bi,steadyRungs:()=>Pn,summarize:()=>ye,unsteady:()=>bt,wins:()=>Bo});function Ii(s){let e=[...s].sort((o,n)=>o-n),t=Math.floor(e.length/2);return e.length%2===1?e[t]:(e[t-1]+e[t])/2}function ye(s){let e=s.filter(o=>!o.invalid),t={};for(let o of _o){let r=e.map(c=>c[o]).filter(c=>typeof c=="number"&&Number.isFinite(c)),i=[Math.min(...r),Math.max(...r)],[a,l]=fs.has(o)?i:i.reverse();t[o]={n:r.length,median:r.length>0?Ii(r):null,spread:r.length>1?Math.abs(l-a):null,worst:r.length>0?a:null,best:r.length>0?l:null}}return t}function gs(s){return s==="fps"?0:2*.1}function Ni(s,e,t){let o=e[s],n=t[s];if(o.median===null||n.median===null||o.spread===null||n.spread===null)return"unknown";let r=fs.has(s)?o.median-n.median:n.median-o.median,i=Math.max(o.spread,n.spread,gs(s)),a=Math.max(Math.abs(o.median),Math.abs(n.median))*.1;return Math.abs(r)<=i||Math.abs(r)0?"better":"worse"}function io(s,e,t,o=gs(s)){let n=e[s],r=t[s];if(n.n<2||typeof n.worst!="number"||r.median===null||r.spread===null)return"unknown";let i=fs.has(s)?r.median-n.worst:n.worst-r.median,a=Math.max(Math.abs(n.worst),Math.abs(r.median))*.1;return i>Math.max(r.spread,o)&&i>=a?"worse":"ok"}function Bo(s,e,t){let o=e[s],n=t[s];if(o.n<2||n.n<2||typeof o.worst!="number"||typeof n.best!="number")return!1;let r=fs.has(s)?o.worst-n.best:n.best-o.worst;return r>gs(s)&&r>=Math.max(Math.abs(o.worst),Math.abs(n.best))*.1}function _i(s,e){if(s.invalid)return"same";let t=!1;for(let o of _o){let n=s[o],r=e[o];if(typeof n!="number"||r.median===null||r.spread===null)continue;let i=fs.has(o)?n-r.median:r.median-n,a=Math.max(Math.abs(n),Math.abs(r.median))*.1;if(!(Math.abs(i)<=Math.max(r.spread,gs(o))||Math.abs(i)0&&(t=!0)}}return t?"contender":"same"}function bs(s,e,t={}){let o=ye(s.readings),n=e.map(c=>{let d=ye(c.readings),h={};for(let f of _o)h[f]=Ni(f,d,o);let p=hs.some(f=>io(f,d,o)==="worse"),m=hs.find(f=>Bo(f,d,o))??null;return m===null&&t.fpsCounts!==!1&&Bo("fps",d,o)&&(m="fps"),{id:c.id,summary:d,verdicts:h,rejected:p,decidedBy:m}}),r=n.length>0&&n.every(c=>_o.every(d=>c.verdicts[d]==="unknown")),i=c=>c.decidedBy===null?_o.length:_o.indexOf(c.decidedBy),l=n.filter(c=>!c.rejected&&c.decidedBy!==null).sort((c,d)=>i(c)-i(d))[0]??null;return{winner:l?.id??s.id,changed:l!==null,inconclusive:r,decidedBy:l?.decidedBy??null,incumbent:o,judged:n}}function vs(s){return!s.invalid&&typeof s.stallMs=="number"&&s.stallMs>1e3*.1}function bt(s,e){return s.some(t=>vs(t)||!t.invalid&&e>0&&typeof t.fps=="number"&&t.fps!t.invalid).length>=2&&!bt(s,e)}function ws(s){return[...s.values()].some(e=>e.filter(vs).length>=2)}function Pn(s){return Array.from({length:4},(e,t)=>(t+1)*s)}function Bi(s,e){let t=null,o=null;for(let n of Pn(s)){if(!ao(e.get(n)??[],n))break;t=o??n,o=n}return{cap:t,steadyUpTo:o}}function ks(s){let{presentMs:e,p50:t}=s;return typeof e!="number"||typeof t!="number"?!1:e-t>Math.max(2*.1,e*.1)}function zo(s){let e=s.p50,t=r=>typeof r=="number"&&typeof e=="number"?Math.max(0,r-e):null,o=ks(s)?s.presentMs-e:0,n=typeof s.inputP99=="number"?s.inputP99+o:s.inputP99;return{...s,fps:null,p99:t(s.p99),maxMs:t(s.maxMs),inputP99:n}}function vp(s){return s==="p99"||s==="maxMs"?4*.1:gs(s)}function zi(s,e,t={}){let o=p=>ye((s.get(p)??[]).map(zo)),n=p=>{let m=(s.get(p)??[]).filter(f=>!f.invalid).map(f=>f.p50).filter(f=>typeof f=="number");return m.length>0?Ii(m):null},r=o(e),i=n(e),a=new Map,l=[...s.keys()].map(p=>{let m=o(p),f=n(p);if(p===e)return{cap:p,summary:m,frameMs:f,netMs:null,outcome:"yours"};if(bt(s.get(p)??[],p))return{cap:p,summary:m,frameMs:f,netMs:null,outcome:"not steady"};let g=Object.fromEntries(Pi.map(H=>[H,Ni(H,m,r)])),b=e===0||p>0&&pBo(H,m,r)?(r[H].median??0)-(m[H].median??0):0,E=k("taskP99"),L=t.trade===!0&&io("inputP99",m,r)==="worse"?(m.inputP99.median??0)-(r.inputP99.median??0):0,y=g.inputP99==="unknown"?null:k("inputP99")-L,C=E+(y??i-f);a.set(p,E+(y??0));let I=L>0&&E>L,_="not better";return Pi.some(H=>(H!=="inputP99"||!I)&&io(H,m,r,vp(H))==="worse")?_="worse":C>2*.1&&(_="better"),{cap:p,summary:m,frameMs:f,netMs:C,gains:{task:E,input:y},outcome:_}}),c=l.filter(p=>p.outcome==="better").sort((p,m)=>(m.netMs??0)-(p.netMs??0));if(c.length>0)return{winner:c[0].cap,changed:!0,decidedBy:"net",judged:l};let d=l.find(p=>p.cap===t.prefer&&p.cap!==e),h=d!==void 0&&(e===0||d.capd.filter(h=>!h.invalid);if(r(s).length<2)return{keep:!1,failed:"reference"};if(r(e).length<2)return{keep:!1,failed:"result"};let i=ye(s.map(zo)),a=ye(e.map(zo)),l=io("fps",ye(e),ye(s))==="worse";if(bt(e,o)&&!(bt(s,t)&&Bo("stallMs",a,i)&&!l))return{keep:!1,failed:"unsteady"};let c;for(let d of Pi){let h=io(d,a,i,vp(d));if(h==="worse"&&d==="inputP99"&&n&&Bo("taskP99",a,i)){let p=(i.taskP99.median??0)-(a.taskP99.median??0),m=(a.inputP99.median??0)-(i.inputP99.median??0);if(p>m){c={task:p,input:m};continue}}if(h==="worse")return{keep:!1,failed:d};if(h==="unknown"&&d!=="inputP99")return{keep:!1,failed:"reference"}}if(io("inputP99",a,i)==="unknown"){let d=p=>Ii(r(p).map(m=>m.p50??0));if(d(e)-d(s)>Math.max(2*.1,d(e)*.1))return{keep:!1,failed:"frame"}}return t===o&&l?{keep:!1,failed:"fps"}:{keep:!0,failed:null,...c?{traded:c}:{}}}function Hi(s,e){return 1+Math.max(2*Math.abs(1-s),e)}function Nv(s,e){let t=1e3/e,o=s.p99.median,n=s.stallMs.median;return(o===null||o<=t)&&(n===null||n<=t)}function Oi({hz:s,capacity:e,current:t}){let o=i=>e===null||i<=e,n=[3*s,2*s,s].filter(o);return e!==null&&n.push(Math.round(e*.9)),t>0&&n.push(t),[0,...[...new Set(n.map(i=>Math.round(i)).filter(i=>i>0))].sort((i,a)=>a-i)]}function Fi(s,e,t,o){let n=l=>l===0?t??1/0:l,r=[...new Set(s)].sort((l,c)=>n(l)-n(c)),i=r.indexOf(e),a=[];for(let l of[r[i-1],r[i+1]]){if(l===void 0)continue;let c=(n(e)+n(l))/2;Number.isFinite(c)&&a.push(Math.round(c/o)*o)}return[...new Set(a)].filter(l=>l>0&&l!==e&&!s.includes(l))}var ms,vt,Iv,hs,_o,fs,Pi,xs=w(()=>{"use strict";ms=.1,vt=3,Iv=.1,hs=["taskP99","inputP99","p99","stallMs","maxMs"],_o=[...hs,"fps"],fs=new Set(["fps"]);Pi=["taskP99","inputP99","p99","stallMs","maxMs"]});var xp={};A(xp,{PIPELINE:()=>Fe,cancel:()=>qi,currentPipeline:()=>Nn,measureCaps:()=>ji,searchPipeline:()=>Ki});function Nn(){return Object.fromEntries(Fe.map(s=>[s.setting,(u.running?.[s.setting]??u.settings.data[s.setting])!==!1]))}function yp(s,e){return s!=="hardFlip"||!e.hardFlip?null:u.settings.data.obsCapturePlugin===!0?"kept, OBS capture needs it":null}function dt(s,e){let t=Fe.map(r=>`${r.key}=${s[r.setting]?1:0}`),o=Bv.map(r=>`${r.key}=${u.settings.data[r.setting]??r.fallback?1:0}`),n=`limiter=${u.settings.data.patchFrameLimiter===!1?"hook":"viz"}`;return[...t,...o,n,e].filter(r=>r!=="").join(",")}function Di(s,e,t){let o=n=>typeof n=="number"&&Number.isFinite(n)?n:null;return{fps:o(s?.fps),p50:o(s?.p50),p99:o(s?.p99),maxMs:o(s?.maxMs),stallMs:o(s?.stallMs),taskP99:o(e?.p99),inputP99:null,presentMs:o(t?.p50),invalid:!s||!(s.fps>0)}}function Ss(s,e){let t=Date.now()*100+ ++Fv%100;return new Promise(o=>{let n={timer:0},r=i=>{i.data?.benchMatrix===void 0||i.data.benchRun!==t||(clearTimeout(n.timer),window.chrome.webview.removeEventListener("message",r),o(i.data.cancelled?null:i.data.benchMatrix))};n.timer=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),window.chrome.webview.postMessage("bench-cancel"),o(null)},e),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(`run-bench-matrix ${t} ${JSON.stringify(s)}`)})}function qi(){window.chrome.webview.postMessage("bench-cancel")}async function Ki({hz:s,progress:e,cancelled:t}){let o=Nn();e("Testing the client (1 of 4)",0);let n=await Ss([dt(o,`hz=${s}`)],In),r=Di(n?.[0]?.page?.stats,n?.[0]?.page?.otherTasks);if(t()||r.invalid||r.fps===null)return null;let i=n?.[0]?.page?.load,a=Math.min(kp[1],Math.max(kp[0],r.fps/(s*3))),l=`hz=${s},draws=${Math.round(i.draws*a)},cpu=${Math.round(i.cpuIterations*a)}`,c=Fe.filter(C=>yp(C.setting,o)===null).map(C=>({entry:C,pipeline:{...o,[C.setting]:!o[C.setting]}}));e("Testing the client (2 of 4)",.15);let d=await Ss([dt(o,l),...c.map(C=>dt(C.pipeline,l)),dt(o,l)],In*(c.length+2));if(t()||d===null)return null;let h=C=>Di(C?.page?.stats,C?.page?.otherTasks,C?.present),p=[h(d[0]),h(d[d.length-1])],m=ye(p),f=_v.some(C=>{let{median:I,spread:_}=m[C];return I!==null&&_!==null&&_>Math.abs(I)*.1}),g=[{id:"current",label:"As you had it",pipeline:o,readings:p,outcome:"current"}];for(let C of Fe){let I=yp(C.setting,o);I!==null&&g.push({id:C.setting,label:`${C.label} off`,pipeline:o,readings:[],outcome:I})}let b=[];for(let[C,I]of c.entries()){let _=h(d[C+1]),H=_.invalid?"failed":_i(_,m);f&&!_.invalid&&(H="contender");let G=`${I.entry.label} ${I.pipeline[I.entry.setting]?"on":"off"}`,J={id:I.entry.setting,label:G,pipeline:I.pipeline,readings:[_],outcome:Ov[H]};g.push(J),H==="contender"&&b.push(J)}if(b.length===0)return{winner:o,changed:!1,decidedBy:null,rows:g,common:l,capacity:m.fps.median};e("Testing the client (3 of 4)",.55);let v=await Ss([...b.map(C=>dt(C.pipeline,l)),dt(o,l)],In*(b.length+1));if(t()||v===null)return null;for(let[C,I]of b.entries())I.readings.push(h(v[C]));p.push(h(v[v.length-1]));let k=bs({id:"current",readings:p},b.map(C=>({id:C.id,readings:C.readings})));for(let C of b){let I=k.judged.find(_=>_.id===C.id);C.outcome="not better",I?.rejected?C.outcome="worse":I?.decidedBy&&(C.outcome="better")}let E=b.filter(C=>C.outcome==="better"),L=g.find(C=>C.id===k.winner)??g[0];if(E.length>1){e("Testing the client (4 of 4)",.8);let C={...o};for(let J of E)C[J.id]=J.pipeline[J.id];let I=await Ss([dt(C,l),dt(o,l),dt(C,l)],In*3);if(t()||I===null)return null;p.push(h(I[1]));let _={id:"combined",label:E.map(J=>J.label).join(" and "),pipeline:C,readings:[h(I[0]),h(I[2])],outcome:"not better"};g.push(_);let H=bs({id:L.id,readings:L.readings},[{id:_.id,readings:_.readings}]),G=bs({id:"current",readings:p},[{id:_.id,readings:_.readings}]);H.changed&&G.changed&&(_.outcome="better",L=_,k=G)}let y=L.id!=="current";return{winner:L.pipeline,changed:y,decidedBy:y?k.decidedBy:null,rows:g,common:l,capacity:ye(L.readings).fps.median}}async function ji({pipeline:s,common:e,caps:t,cancelled:o}){let n=`${dt(s,e)},caps=${t.join(".")},rounds=2,ms=${Hv}`,i=(await Ss([n],zv))?.[0]?.page?.caps;if(o()||!Array.isArray(i))return null;let a=new Map(t.map(l=>[l,[]]));for(let l of i)a.get(Number(l.cap))?.push(Di(l.stats,l.otherTasks));return a}var _v,Fe,Bv,In,zv,Hv,kp,Ov,Fv,Ui=w(()=>{"use strict";F();xs();_v=["fps","taskP99","p99"],Fe=[{setting:"hardFlip",key:"hook",label:"DXGI Swapchain Hook"},{setting:"patchFramePacing",key:"pacing",label:"Frame Pacing"},{setting:"patchCanvasBufferCache",key:"canvas",label:"WebGL Buffer Cache"},{setting:"patchHighQoS",key:"qos",label:"Game Process at High QoS"}].filter(s=>u.platform!=="linux"||s.setting!=="hardFlip"&&s.setting!=="patchHighQoS"),Bv=[{setting:"patchInputPriority",key:"inprio",fallback:!0},{setting:"patchRawInputMovement",key:"rawinput",fallback:!0},{setting:"patchAudioParamCoalesce",key:"coalesce",fallback:!0},{setting:"audioFix",key:"panner",fallback:!1},{setting:"uncapFps",key:"uncap",fallback:!0}],In=2e4,zv=7e4,Hv=1500,kp=[.25,16],Ov={contender:"better",same:"not better",worse:"worse",failed:"failed"};Fv=0});var Ep={};A(Ep,{MIN_RESOLUTION:()=>Es,SIGNIFICANT_RESOLUTION:()=>Sp,SIGNIFICANT_SETTING:()=>_n,decide:()=>Bn});function Bn({capacity:s,hz:e,headroom:t,halfResolutionGain:o,settings:n}){let r=e*3,i=r*t,a=s>=i,l="unknown";o!==null&&(l=o>=Sp?"gpu":"cpu");let c=[],d=s;if(!a){let h=n.filter(p=>p.gain!==null&&p.steady&&p.current!==p.cheap&&p.gain>=_n).sort((p,m)=>(m.gain??0)-(p.gain??0));for(let p of h){if(d>=i)break;let m=p.gain??1;d*=m,c.push({id:p.id,label:p.label,value:p.cheap,reason:`measured +${Math.round((m-1)*100)} %`})}}return{target:r,needed:i,holds:a,regime:l,predictedFps:d,tuneResolution:!a&&l==="gpu"&&d{"use strict";xs();_n=1.05,Sp=1.1,Es=.75});var Ji={};A(Ji,{ALL_IDS:()=>Vi,GAME_FRAME_CAP:()=>kt,PRESET:()=>Wi,RESOLUTION:()=>lo,SETTINGS:()=>wt,label:()=>Yi,opposite:()=>Xi,read:()=>Cs,resetCache:()=>zn,write:()=>Me});function Yi(s){return wt.find(e=>e.id===s)?.label??s}function Dv(){if($s)return $s;let s=window.windows[0],e=s.tabIndex,t=s.settingType,o="";try{s.settingType="advanced";for(let n=0;n{"use strict";wt=[{id:"postProcessing",label:"Post Processing",cheap:!1},{id:"shadowsDynamic",label:"Dynamic Shadows",cheap:!1},{id:"softShad",label:"Soft Shadows",cheap:!1,needsReload:!0},{id:"highResShad",label:"High-Res Shadows",cheap:!1,needsReload:!0},{id:"shadows",label:"Shadows",cheap:!1},{id:"antiAlias",label:"Antialiasing",cheap:!1,needsReload:!0},{id:"reflection",label:"Reflection Quality",cheap:"1",needsReload:!0},{id:"lighting",label:"Lighting",cheap:"0",needsReload:!0},{id:"weaponShine",label:"Weapons Shine",cheap:!1},{id:"ambientShading",label:"Old Shading",cheap:!1},{id:"particles",label:"Particles",cheap:!1,fightOnly:!0},{id:"showExplo",label:"Explosions",cheap:!1,fightOnly:!0},{id:"textureAnim",label:"Texture Animations",cheap:!1},{id:"objectAnim",label:"Object Animations",cheap:!1},{id:"bulletCasings",label:"Bullet Casings",cheap:!1,fightOnly:!0},{id:"impactHoles",label:"Bullet Impact Holes",cheap:!1,fightOnly:!0},{id:"noPaintAnim",label:"Disable Animated Paints",cheap:!0,needsReload:!0},{id:"mapDet",label:"Map Details",cheap:!1,needsReload:!0},{id:"lowSpec",label:"Low Spec",cheap:!0}],Wi={postProcessing:!1,particles:!1,showExplo:!1,bulletCasings:!1,impactHoles:!1,reflection:"1",lighting:"0",softShad:!1,highResShad:!1,noPaintAnim:!0},lo="resolution",kt="updateRate",Vi=[...wt.map(s=>s.id),lo,kt];$s=null});var Cp,$p=w(()=>{Cp=`

            Auto-Detect

            Don't touch mouse or keyboard. Escape cancels
            Undo
            Details
            Advanced
            Run now
            OK
              `});var Mp={};A(Mp,{activity:()=>Bt,hostLobby:()=>Ms,inRoom:()=>Hn,spawn:()=>Ts,spawned:()=>Qi});function Bt(){try{return window.getGameActivity?.()??{}}catch{return{}}}function Hn(s){let e=Bt();return!!s&&!!e.custom&&e.id===s}async function Ms(){if(typeof window.openHostWindow!="function"||typeof window.createPrivateRoom!="function")return null;let s=Bt().id;for(let e=0;e<4;e++){window.openHostWindow(!1,0),await _t(800),window.windows[7]?.switchTab?.(0),await _t(300);let t=[...document.querySelectorAll("#windowHolder input[id^=gameMap]")],o=document.querySelector("#makePrivate");if(t.length===0||!o)return window.closWind?.(),null;for(let r of t)r.checked!==(r.id===Kv)&&r.click();let n=!o.checked;n&&o.click();try{window.createPrivateRoom();for(let r=0;r<32;r++){await _t(250);let i=Bt();if(i.custom&&i.id&&i.id!==s&&i.map)return i.id}}finally{n&&o.checked&&o.click()}window.closWind?.(),await _t(1500)}return null}function Qi(){let s=document.querySelector("#instructions");return!!document.pointerLockElement||s!==null&&getComputedStyle(s).display==="none"}async function Ts(s){for(let o=0;o<40&&!(Bt().map&&document.querySelector("#instructions"));o++)await _t(250);await _t(500);let e=Math.round(window.innerWidth/2),t=Math.round(window.innerHeight/2);for(let o=0;o<3&&!Qi();o++){if(!Hn(s))return!1;window.chrome.webview.postMessage(`click, ${e}, ${t}`),await _t(1200)}return await _t(800),Qi()}var Kv,_t,On=w(()=>{"use strict";Kv="gameMap0",_t=s=>new Promise(e=>{setTimeout(e,s)})});var Lp={};A(Lp,{REPLAY_CIRCLE_MS:()=>zt,takeInputDiagnostics:()=>Fn,takeReading:()=>ea});function Fn(){let s=Qe;return Qe=Ap(),s}function ea({ms:s,hz:e,replay:t}){return new Promise((o,n)=>{let r=new no,i=new ro,a=new ns,l=()=>document.hasFocus()&&document.visibilityState==="visible",c=document.pointerLockElement!==null,d=l()?null:"the window was not in front",h=()=>{l()||(d??="the window lost focus")},p=()=>{document.pointerLockElement!==null!==c&&(d??=c?"the game let go of the mouse":"the game took the mouse")},m=()=>{window.removeEventListener("blur",h),document.removeEventListener("visibilitychange",h),document.removeEventListener("pointerlockchange",p)};window.addEventListener("blur",h),document.addEventListener("visibilitychange",h),document.addEventListener("pointerlockchange",p);let f=setTimeout(()=>{m(),i.stop(),a.stop(),window.chrome.webview.postMessage("input-replay-stop"),n(new Error("the game stopped drawing frames"))},s+5e3);i.start(),a.start(),Qe.readings++,t&&c&&(Qe.asked++,window.chrome.webview.postMessage(`input-replay, ${s}`));let g=performance.now(),b=()=>{let v=performance.now();if(r.frame(v),v-g=Tp&&Qe.withInput++,L===null&&(d??="too few frames"),d!==null&&(Qe.invalid[d]=(Qe.invalid[d]??0)+1),o({fps:L?.fps??null,p50:L?.p50??null,p99:L?.p99??null,maxMs:L?.maxMs??null,stallMs:L?.stallMs??null,taskP99:k.p99,inputP99:E.events>=Tp?E.p99:null,invalid:d!==null,...d===null?{}:{why:d}})};requestAnimationFrame(b)})}var zt,Tp,Ap,Qe,ta=w(()=>{"use strict";Sn();zt=600,Tp=20,Ap=()=>({readings:0,asked:0,withInput:0,pageEvents:0,hostSteps:0,ended:{},invalid:{}}),Qe=Ap();window.chrome.webview.addEventListener("message",s=>{let e=s.data?.inputReplay;e&&(Qe.hostSteps+=Number(e.sent)||0,Qe.ended[e.reason]=(Qe.ended[e.reason]??0)+1)})});var la={};A(la,{loggedIn:()=>Rs});function Ht(){try{return JSON.parse(localStorage.getItem(jn)??"null")}catch{return null}}function qe(s){localStorage.setItem(jn,JSON.stringify(s))}function Rs(){return document.querySelector("#signedInHeaderBar")!==null}function Ot(s,e){u.settings.data[s]=e,window.chrome.webview.postMessage(`set-config, ${s}, ${e}`);for(let t of[`#${s}`,`#slid_input_${s}`]){let o=document.querySelector(t);o&&(o.type==="checkbox"?o.checked=e===!0:o.value=String(e))}}function pt(s){return s==null?"default":String(s)==="true"?"on":String(s)==="false"?"off":String(s)}function Jv(){let s=/--autodetect-dev=(\S+)/.exec(u.launchArgs??""),e={};for(let t of s?.[1].split(",")??[]){let[o,n]=t.split(":");o==="hz"&&(e.hz=Number(n)),o==="battery"&&(e.battery=!0),o==="laptop"&&(e.laptop=!0),o==="force"&&(e.force=n),o==="collapse"&&(e.collapse=Number(n))}return e}function Bp(s){let e=Math.round((s-1)*100);return`${e>0?"+":""}${e} %`}function xt(s,e=1){return s===null?"?":s.toFixed(e)}function Dt(s){return s>0?`${s} FPS`:"no limit"}function Zv(s,e,t){if(s===null)return"measured as smooth, with fewer frames to draw";let o=`${xt(e[s].median)} to ${xt(t[s].median)}`;return{taskP99:`the game reacts sooner: other work waited up to ${o} ms`,inputP99:`mouse input waits ${o} ms`,p99:`slowest frames ${o} ms`,stallMs:`stutter ${o} ms per second`,maxMs:`longest frame ${o} ms`,fps:`${xt(e.fps.median,0)} to ${xt(t.fps.median,0)} FPS`}[s]}function zp(s,e=""){return s===null?"-":`${e}${s.toFixed(1)} ms`}function Ft(s,e=""){return s===null?"-":`${e}${s.toFixed(1)}`}function ra(s){return`${xt(s.fps.median,0)}${Ft(s.p99.median)}${Ft(s.taskP99.median)}${Ft(s.inputP99.median)}`}function Un(s){let e=s.filter(o=>typeof o=="number").sort((o,n)=>o-n);if(e.length===0)return null;let t=Math.floor(e.length/2);return e.length%2===1?e[t]:(e[t-1]+e[t])/2}function Qv(s){if(!s||s.readings===0)return"";if(s.withInput>0)return`

              Input test: ${s.withInput} of ${s.readings} readings in the match had mouse input from Kute (${s.hostSteps} steps sent, ${s.pageEvents} seen by the game).

              `;let e=Object.entries(s.ended).filter(([o])=>o!=="done"&&o!=="stopped").map(([o,n])=>`${o}: ${n}x`).join(", "),t="the game did not hold the mouse when the readings started";return s.asked>0&&(t=e||`Kute sent ${s.hostSteps} steps, the game saw ${s.pageEvents} mouse events`),`

              The input test did not reach the game (${t}). Mouse wait and settings that only cost in a fight were not measured.

              `}function ut(s,e){let t=s.filter(r=>typeof r=="number").map(Math.round);if(t.length===0)return"-";let[o,n]=[Math.min(...t),Math.max(...t)];return o===n?`${o} ${e}`:`${o} to ${n} ${e}`}function e0(s){let e=[[`As you had it (${Dt(s.beforeCap)})`,s.played??[]],["no limit, first readings",s.unlimited??[]],...s.caps.filter(d=>d.where==="test match").map(d=>[Dt(d.cap),d.readings??[]])],{render:t=null,display:o=null}=s.adapters??{},n=t!==null&&o!==null&&t!==o,r=d=>{let h=(d?.nvidia??[]).map(p=>p.clockMhz).filter(p=>typeof p=="number");return h.length>0?Math.max(...h):null},i=d=>{let h=(d?.nvidia??[]).reduce((m,f)=>m|(f.heldBack??0),0),p=[[1,"heat"],[2,"power limit"],[4,"battery"],[16,"weak power supply"]].filter(([m])=>(h&Number(m))!==0).map(([,m])=>m);return p.length>0?p.join(", "):h===0?"no":`yes (${h})`},a=[...s.played??[],...s.unlimited??[]].some(d=>(d.load?.nvidia??[]).length>0),l=e.filter(([,d])=>d.some(h=>h.load)).map(([d,h])=>{let p=h.map(f=>f.load),m=(f,g)=>ut(p.map(b=>f===null?null:b?.gpu?.[f]?.[g]),"%");return`${d}${ut(h.map(f=>f.fps),"")}${ut(p.map(f=>f?.cpuBusy),"%")} + ${ut(p.map(f=>f?.cpuSpeed),"%")}${m(t,"render")}${a?`${ut(p.map(r),"MHz")}`:""} ${n?`${m(o,"render")}${m(o,"copy")}`:""} - ${dt(p.map(f=>f?.temperature),"C")}${dt(p.map(f=>f?.thermalLimit),"%")}`});if(l.length===0)return"";let c=(s.trace??[]).map(d=>`${(d.ms/1e3).toFixed(1)} s${d.fps}${dt([d.load?.cpuSpeed],"%")} - ${dt([t===null?null:d.load?.gpu?.[t]?.render],"%")}${dt([r(d.load)],"MHz")}${i(d.load)}`);return`
              ${a?"":""} + `});if(l.length===0)return"";let c=(s.trace??[]).map(d=>` + `);return`
              FPSProcessor busyProcessor speedGraphics card busyGraphics clock${ut(p.map(f=>f?.temperature),"C")}${ut(p.map(f=>f?.thermalLimit),"%")}
              ${(d.ms/1e3).toFixed(1)} s${d.fps}${ut([d.load?.cpuSpeed],"%")}${ut([t===null?null:d.load?.gpu?.[t]?.render],"%")}${ut([r(d.load)],"MHz")}${i(d.load)}
              ${a?"":""} ${n?"":""}${l.join("")}
              FPSProcessor busyProcessor speedGraphics card busyGraphics clockScreen's chip busyScreen's chip copyingHottestHeat limit

              Processor speed is its share of the nominal clock: above 100 % with turbo, far below while the PC throttles it. A heat limit under 100 % means the firmware slows the PC down. A graphics clock that drops while the frame rate drops means the graphics driver is saving power.

              - ${c.length>0?`

              Without a limit, step by step

              ${c.join("")}
              TimeFPSProcessor speedGraphics card busyGraphics clockDriver holds it back
              `:""}`}function Xv(s){if(s.outcome!=="not steady")return"";let e=Math.max(0,...(s.readings??[]).map(t=>t.stallMs??0));return e>0?` (stood still ${Math.round(e/10)} % of the time)`:" (did not reach it)"}function Np(s,e=""){return`${s}${e}`}function Bo(s,e,{wide:t=!1,unit:o=""}={}){return`

              ${s}${o?`${o}`:""}

              ${e}
              `}function Dn(s,e,t="adNum"){return`
              ${s}${e.join("")}
              `}function Jv(s){let e=new Set(s.plan.changes.map(x=>x.id)),t=x=>x.gain===null&&!e.has(x.id)&&!!x.note,o=s.settings.filter(x=>!t(x)).map(x=>{let $=x.note??"";x.gain!==null&&($=x.steady?`${Pp(x.gain)} when ${ut(x.cheap)}`:"unsteady, not used");let I=e.has(x.id)?`set to ${ut(x.cheap)}`:'kept';return`${x.label}${ut(x.current)}${$}${I}`}),n=s.pipeline.map(x=>`${x.label}${sa(ye(x.readings))}${Np(x.outcome)}`),r='LimitFrame timeSlowest 1 %Other work waitsMouse waitsGainResult',i=["client test","test match"].map(x=>{let $=s.caps.filter(I=>I.where===x).map(I=>`${Dt(I.cap)}${Ot(I.frameMs)} - ${Ot(I.summary.p99.median,"+")}${Ot(I.summary.taskP99.median)}${Ot(I.summary.inputP99.median)} - ${I.netMs===null?"":Ot(I.netMs,I.netMs>0?"+":"")}${Np(I.outcome,Xv(I))}`);return{where:x,html:$.length>0?Dn(r,$):""}}).filter(x=>x.html),a={cpu:"the processor",gpu:"the graphics card",unknown:null}[s.plan.regime],l="Not measured whether the processor or the graphics card holds the frame rate back.";a&&(l=`Limited by ${a}${s.halfResolutionGain===null?"":` (half the resolution: ${Pp(s.halfResolutionGain)})`}.`);let c=new Map;for(let x of s.settings.filter(t)){let $=x.note??"";c.set($,[...c.get($)??[],`${x.label} ${ut(x.current)}`])}let d=[...c].map(([x,$])=>`

              ${x.charAt(0).toUpperCase()}${x.slice(1)}, kept as they were: ${$.join(", ")}.

              `),h=(o.length>0?Dn('SettingWasMeasuredResult',o,""):"")+d.join(""),p="";s.hybrid===!0?p=" Two graphics chips: frames get copied from one to the other.":s.hybrid===null&&(p=" Could not tell which graphics chip drives the screen.");let m="FPSSlowest 1 %Other work waitsMouse waits",f=`

              Without an FPS limit this PC ran ${Math.round(s.capacity)} FPS in the test match. Kute aims for at least ${s.plan.target} FPS + ${c.length>0?`

              Without a limit, step by step

              ${c.join("")}
              TimeFPSProcessor speedGraphics card busyGraphics clockDriver holds it back
              `:""}`}function t0(s){if(s.outcome!=="not steady")return"";let e=Math.max(0,...(s.readings??[]).map(t=>t.stallMs??0));return e>0?` (stood still ${Math.round(e/10)} % of the time)`:" (did not reach it)"}function Hp(s,e=""){return`${s}${e}`}function Ho(s,e,{wide:t=!1,unit:o=""}={}){return`

              ${s}${o?`${o}`:""}

              ${e}
              `}function qn(s,e,t="adNum"){return`
              ${s}${e.join("")}
              `}function o0(s){let e=new Set(s.plan.changes.map(y=>y.id)),t=y=>y.gain===null&&!e.has(y.id)&&!!y.note,o=s.settings.filter(y=>!t(y)).map(y=>{let C=y.note??"";y.gain!==null&&(C=y.steady?`${Bp(y.gain)} when ${pt(y.cheap)}`:"unsteady, not used");let I=e.has(y.id)?`set to ${pt(y.cheap)}`:'kept';return`${y.label}${pt(y.current)}${C}${I}`}),n=s.pipeline.map(y=>`${y.label}${ra(ye(y.readings))}${Hp(y.outcome)}`),r='LimitFrame timeSlowest 1 %Other work waitsMouse waitsGainResult',i=["client test","test match"].map(y=>{let C=s.caps.filter(I=>I.where===y).map(I=>`${Dt(I.cap)}${Ft(I.frameMs)} + ${Ft(I.summary.p99.median,"+")}${Ft(I.summary.taskP99.median)}${Ft(I.summary.inputP99.median)} + ${I.netMs===null?"":Ft(I.netMs,I.netMs>0?"+":"")}${Hp(I.outcome,t0(I))}`);return{where:y,html:C.length>0?qn(r,C):""}}).filter(y=>y.html),a={cpu:"the processor",gpu:"the graphics card",unknown:null}[s.plan.regime],l="Not measured whether the processor or the graphics card holds the frame rate back.";a&&(l=`Limited by ${a}${s.halfResolutionGain===null?"":` (half the resolution: ${Bp(s.halfResolutionGain)})`}.`);let c=new Map;for(let y of s.settings.filter(t)){let C=y.note??"";c.set(C,[...c.get(C)??[],`${y.label} ${pt(y.current)}`])}let d=[...c].map(([y,C])=>`

              ${y.charAt(0).toUpperCase()}${y.slice(1)}, kept as they were: ${C.join(", ")}.

              `),h=(o.length>0?qn('SettingWasMeasuredResult',o,""):"")+d.join(""),p="";s.hybrid===!0?p=" Two graphics chips: frames get copied from one to the other.":s.hybrid===null&&(p=" Could not tell which graphics chip drives the screen.");let m="FPSSlowest 1 %Other work waitsMouse waits",f=`

              Without an FPS limit this PC ran ${Math.round(s.capacity)} FPS in the test match. Kute aims for at least ${s.plan.target} FPS (${3}x your ${s.hz} Hz screen), and this PC needs ${Math.round(s.plan.needed)} to keep that in a fight: - samples of the same settings differ by ${Math.round(s.noise*100)} %, and it ended the run at ${Math.round(s.drift*100)} % of its starting speed.

              `;if(s.pushed){let x=(s.unlimited??[]).map(H=>yt(H.fps,0)).join(", "),{limit:$,steadyUpTo:I}=s.pushed,_=`No limit ran steadily, not even your screen's ${s.hz} FPS, so there was no limit to offer.`;$!==null&&I!==null&&(_=`Up to ${I} FPS it ran steadily in the empty test match. A real match is heavier than that, so the limit with room is the highest multiple of your ${s.hz} Hz - that has ${I>$?"one more steady step above it":"run steadily"}: ${$} FPS. A limit of your own that runs steadily is kept, a lower one would make the mouse wait longer.`),f=`

              This PC does not run steadily without an FPS limit: it stood still ${Math.round(s.pushed.stoodStill*100)} % of the time - (readings without a limit: ${x} FPS). That happens when a PC throttles itself under full load, common on laptops.

              -

              ${_} Game settings were not measured, their gain is read without a limit.

              `}let g=s.played??[],b=g.some(vs)?`

              The game drew more frames than reached the screen: one every ${Ip(Kn(g.map(x=>x.p50)))}, shown one every ${Ip(Kn(g.map(x=>x.presentMs)))}.

              `:"",v=Yv(s),k=s.pushed?"On a PC that does not run steadily without a limit, the limits are not compared with each other: each one only has to run steadily.":"A limit is taken when the game reacts sooner or the mouse waits less with it than with yours (gain above zero), and never when anything measures worse. A lower limit's longer frames are in the mouse wait. Slowest 1 % counts beyond the frame time.",E=i.map((x,$)=>Bo(`${x.where}: FPS limits`,`${x.html}${$===i.length-1?`

              ${k}

              `:""}`,{unit:"times in ms"}));return`
              ${[Bo("This PC",`

              ${s.gpu}
              ${s.cpu}${s.laptop?" (laptop)":""}, ${s.hz} Hz${s.powerOverlay?`, Windows power mode: ${s.powerOverlay}`:""}.${p}

              - ${f}${s.rolledBack?`

              ${s.rolledBack}

              `:""}${s.pipelineRefused?`

              ${s.pipelineRefused}

              `:""}${Vv(s.input)}${b}`),Bo("Before and after",`${Dn(`${m}`,[`Before (${Dt(s.beforeCap)})${sa(s.before)}`,s.after?`After (${Dt(s.afterCap)})${sa(s.after)}`:""])}${s.after?"":'

              Your setup stayed as it was, so there is no after to measure.

              '}`,{unit:"times in ms"}),Bo("Client test: setup",n.length>0?Dn(`Setup${m}Result`,n,"adNum adWrap"):"

              The client test did not run, the client's own setup was left alone.

              ",{unit:"times in ms"}),...E,Bo("Test match: game settings",`

              ${l}

              ${h} -

              Settings that need a reload cannot be measured in one test match, they were not changed.

              `),v?Bo("What the PC did",v,{wide:!0}):""].join("")}
              + samples of the same settings differ by ${Math.round(s.noise*100)} %, and it ended the run at ${Math.round(s.drift*100)} % of its starting speed.

              `;if(s.pushed){let y=(s.unlimited??[]).map(H=>xt(H.fps,0)).join(", "),{limit:C,steadyUpTo:I}=s.pushed,_=`No limit ran steadily, not even your screen's ${s.hz} FPS, so there was no limit to offer.`;C!==null&&I!==null&&(_=`Up to ${I} FPS it ran steadily in the empty test match. A real match is heavier than that, so the limit with room is the highest multiple of your ${s.hz} Hz + that has ${I>C?"one more steady step above it":"run steadily"}: ${C} FPS. A limit of your own that runs steadily is kept, a lower one would make the mouse wait longer.`),f=`

              This PC does not run steadily without an FPS limit: it stood still ${Math.round(s.pushed.stoodStill*100)} % of the time + (readings without a limit: ${y} FPS). That happens when a PC throttles itself under full load, common on laptops.

              +

              ${_} Game settings were not measured, their gain is read without a limit.

              `}let g=s.played??[],b=g.some(ks)?`

              The game drew more frames than reached the screen: one every ${zp(Un(g.map(y=>y.p50)))}, shown one every ${zp(Un(g.map(y=>y.presentMs)))}.

              `:"",v=e0(s),k=s.pushed?"On a PC that does not run steadily without a limit, the limits are not compared with each other: each one only has to run steadily.":"A limit is taken when the game reacts sooner or the mouse waits less with it than with yours (gain above zero), and never when anything measures worse. A lower limit's longer frames are in the mouse wait. Slowest 1 % counts beyond the frame time.",E=i.map((y,C)=>Ho(`${y.where}: FPS limits`,`${y.html}${C===i.length-1?`

              ${k}

              `:""}`,{unit:"times in ms"}));return`
              ${[Ho("This PC",`

              ${s.gpu}
              ${s.cpu}${s.laptop?" (laptop)":""}, ${s.hz} Hz${s.powerOverlay?`, Windows power mode: ${s.powerOverlay}`:""}.${p}

              + ${f}${s.rolledBack?`

              ${s.rolledBack}

              `:""}${s.pipelineRefused?`

              ${s.pipelineRefused}

              `:""}${Qv(s.input)}${b}`),Ho("Before and after",`${qn(`${m}`,[`Before (${Dt(s.beforeCap)})${ra(s.before)}`,s.after?`After (${Dt(s.afterCap)})${ra(s.after)}`:""])}${s.after?"":'

              Your setup stayed as it was, so there is no after to measure.

              '}`,{unit:"times in ms"}),Ho("Client test: setup",n.length>0?qn(`Setup${m}Result`,n,"adNum adWrap"):"

              The client test did not run, the client's own setup was left alone.

              ",{unit:"times in ms"}),...E,Ho("Test match: game settings",`

              ${l}

              ${h} +

              Settings that need a reload cannot be measured in one test match, they were not changed.

              `),v?Ho("What the PC did",v,{wide:!0}):""].join("")}

              The run took ${s.seconds.toFixed(0)} s. A difference only counts when it is bigger than the spread between two samples of the same setup, - and a setup that measures worse anywhere is never taken.

              Copy this report
              `}function na(s,e,t,o,n=!1){let r=_i(s,e,{prefer:o,inputRequired:t==="test match",trade:n}),i=r.judged.map(d=>({cap:d.cap,where:t,summary:d.summary,frameMs:d.frameMs,netMs:d.netMs,outcome:d.outcome})),a=r.judged.find(d=>d.cap===r.winner),l="measures as smooth as before, with fewer frames to draw";if(r.decidedBy==="net"){let{task:d=0,input:h=null}=a?.gains??{},p=[];d>0&&p.push(`the game reacts ${yt(d)} ms sooner`),h!==null&&h>0&&p.push(`the mouse waits ${yt(h)} ms less`),h!==null&&h<0&&p.push(`the mouse waits ${yt(-h)} ms longer, which the sooner reaction outweighs on a PC below its target`),l=p.length>0?p.join(", "):"frames come sooner and nothing waits longer"}let c=r.judged.filter(d=>d.cap!==e&&d.outcome!=="worse"&&d.outcome!=="not steady").sort((d,h)=>(h.netMs??-1/0)-(d.netMs??-1/0)).map(d=>d.cap);return{rows:i,winner:r.winner,reason:l,order:c}}function _p(s){u.hostFeatures?.includes("mute")&&window.chrome.webview.postMessage(`mute, ${s}`)}function Bp(){return`Takes about two minutes. Don't touch mouse or keyboard meanwhile: a test window opens and closes a few times, then Kute plays a private match by itself, turning the view and firing.${u.hostFeatures?.includes("mute")?" The game is muted meanwhile.":""}`}function Ts(){return Oe.some(s=>u.settings.data[s.setting]!==!1!=(u.running?.[s.setting]!==!1))}function zp(s){return s.report?.version===2?s.report:void 0}function Hp(s){return new Promise(e=>{let t=performance.now(),o={frames:0,done:!1,watchdog:0},n=()=>{o.frames++;let r=performance.now()-t;if(r{o.done||e(null)},s+2e3)})}async function Zv(s){if(s===0)return!0;let e=performance.now()+Fv;for(;performance.now()typeof t=="number"?Math.round(t*100)/100:null;return{fps:e(s.fps),p50:e(s.p50),p99:e(s.p99),maxMs:e(s.maxMs),stallMs:e(s.stallMs),taskP99:e(s.taskP99),inputP99:e(s.inputP99),...typeof s.presentMs=="number"?{presentMs:e(s.presentMs)}:{},...s.invalid?{invalid:!0,why:s.why}:{},...s.load?{load:s.load}:{}}}function io(s){return ye(s).fps.median??0}var qn,Mp,Tp,ea,Ov,Dv,ta,On,Ap,Fv,Ms,qv,Kv,jv,Lp,Rp,oa,Uv,De,kt,ra,Op,aa=w(()=>{"use strict";yp();D();zn();Ae();Ki();ji();ks();Qi();Xi();qn="kute_autodetect",Mp="kute_autodetect_asked",Tp=250,ea=1500,Ov=3e5,Dv=2e4,ta=3*Bt,On=2*Bt,Ap=6*Bt,Fv=6e3,Ms=450,qv=700,Kv=.08,jv=["gameFpsLimit","throttle",...Oe.map(s=>s.setting)],Lp="autodetect-v2",Rp="https://krunker.io/",oa="kute_autodetect_stopped",Uv={taskP99:"the game reacted later",inputP99:"the mouse waited longer",p99:"slow frames came later",stallMs:"more stutter",maxMs:"a longer freeze",frame:"frames took longer, and the mouse wait could not be measured",unsteady:"it did not run steadily"},De=s=>new Promise(e=>{setTimeout(e,s)});kt=class{constructor(){document.querySelector("#adPanelHost")?.parentElement?.remove(),this.overlay=document.createElement("div"),this.onEscape=void 0,this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.93)";let e=document.createElement("div");e.id="adPanelHost",this.overlay.append(e),this.root=e.attachShadow({mode:"open"}),this.root.innerHTML=xp,document.body.append(this.overlay)}element(e){return this.root.querySelector(`#${e}`)}progress(e,t){this.element("adStatus").textContent=e,this.element("adBarFill").style.width=`${Math.round(t*100)}%`}choose(e,t,o,n){let r=o.find(l=>l.cancel);this.dismissWith(r?()=>r.onPick():void 0),this.element("adTitle").textContent=e,this.element("adStatus").textContent=t;let i=this.element("adNote");i.textContent=n??"",i.style.display=n?"block":"none",this.element("adBar").style.display="none",this.element("adHint").style.display="none";let a=this.element("adActions");a.style.display="flex",a.innerHTML="";for(let l of o){let c=document.createElement("div");c.className="adButton",c.textContent=l.label,c.onclick=()=>l.onPick(),a.append(c)}}result(e,t={}){this.dismissWith(()=>this.close()),this.element("adTitle").textContent=e.title,this.element("adStatus").textContent=e.line,this.element("adNote").style.display="none",this.element("adBar").style.display="none",this.element("adHint").style.display="none",this.element("adActions").style.display="flex",this.element("adDetailsButton").style.display="none",this.element("adUndo").style.display=e.changed&&t.onUndo?"":"none",this.element("adRun").style.display=t.onRun?"":"none",this.element("adRestart").style.display=e.needsRestart?"":"none",this.element("adRestart").onclick=()=>window.chrome.webview.postMessage("restart"),this.element("adAdvancedButton").style.display=t.report?"":"none";let o=this.element("adDetails");if(o.innerHTML=e.details.map(n=>`
            • ${n}
            • `).join(""),o.style.display=e.details.length>0?"block":"none",t.report){let n=this.element("adAdvanced");n.innerHTML=Jv(t.report);let r=this.element("adAdvancedButton");r.textContent="Advanced",r.onclick=()=>{let i=n.style.display!=="block";n.style.display=i?"block":"none",this.element("adPanel").classList.toggle("adWide",i),r.textContent=i?"Hide advanced":"Advanced"},this.element("adCopy").onclick=()=>{let i=JSON.stringify({kute:u.version,...t.report},null,2);navigator.clipboard.writeText(i).then(()=>{this.element("adCopy").textContent="Copied"},()=>{this.element("adCopy").textContent="Copying failed"})}}this.element("adOk").onclick=()=>this.close(),this.element("adUndo").onclick=()=>{this.close(),t.onUndo?.()},this.element("adRun").onclick=()=>{this.close(),t.onRun?.()}}clickThrough(e){this.overlay.style.pointerEvents=e?"none":""}dismissWith(e){this.unbindEscape(),this.overlay.onclick=e?t=>{t.target===this.overlay&&e()}:null,e&&(this.onEscape=t=>{t.key==="Escape"&&(t.stopPropagation(),e())},document.addEventListener("keydown",this.onEscape,!0))}unbindEscape(){this.onEscape&&document.removeEventListener("keydown",this.onEscape,!0),this.onEscape=void 0}close(){this.unbindEscape(),this.overlay.remove()}};ra=class{constructor(){this.running=!1,this.cancelled=!1}snapshot(){return{client:Object.fromEntries(jv.map(e=>[e,u.settings.data[e]])),game:Object.fromEntries(Gi.map(e=>[e,Es(e)]))}}restore(e){_n();for(let[t,o]of Object.entries(e.game))o!==null&&Es(t)!==o&&Me(t,o);for(let[t,o]of Object.entries(e.client))o!==void 0&&u.settings.data[t]!==o&&Ht(t,o)}undo(){let e=zt();if(!e?.undoable){u.showNotification("Nothing to undo",!1,3);return}let t=new Set(vt.filter(i=>i.needsReload).map(i=>i.id)),o=Object.entries(e.snapshot.game).some(([i,a])=>t.has(i)&&a!==null&&Es(i)!==a);this.restore(e.snapshot);let n=Ts();e.undoable=!1;let r="Your previous settings are back.";o&&(r="Your previous settings are back, the game reloads once to apply them."),n&&(r+=" Restart Kute to finish."),e.summary={title:"Undone",line:r,details:[],changed:!1,needsRestart:n},Fe(e),u.showNotification(`Auto-detect undone. ${r.replace("Your previous settings are back","Your settings are back")}`,!1,5),o&&setTimeout(()=>location.reload(),1200)}dropUndo(){let e=zt();e?.undoable&&(e.undoable=!1,Fe(e))}showLast(){let e=zt();if(!e?.summary){u.showNotification("Auto-detect has not run yet",!1,3);return}new kt().result(e.summary,{onUndo:e.undoable?()=>this.undo():void 0,report:zp(e)})}async start(e={}){if(this.running)return;if(!u.hostFeatures?.includes(Lp)){u.showNotification("Auto-detect needs a newer Kute, update the client to use it",!1,6);return}if(u.recovery){u.showNotification("Auto-detect can't run in safe mode or while Kute looks for the cause of a crash",!1,6);return}if(!As()){u.showNotification("Log in first: auto-detect measures in a private test match, and hosting one needs an account",!1,6);return}if(document.pointerLockElement||He()){u.showNotification("Open the menu outside of a competitive match first",!1,4);return}if(!e.resume&&Ts()){u.showNotification("Restart Kute first: a setting you changed only applies after a restart, auto-detect would test the old one",!1,7);return}this.running=!0,this.cancelled=!1,window.closWind?.();let t,o;if(e.resume)t=e.resume,o=t.previous??null;else{o=zt(),o&&(delete o.wizard,delete o.wizardDetails);let l=this.snapshot();t={status:"running",at:Date.now(),snapshot:e.snapshot??l,baseline:l,previous:o,details:e.details??[]},Fe(t)}let n=new kt,r=l=>{l.key==="Escape"&&(this.cancelled=!0,Di())};document.addEventListener("keydown",r,!0);let i={inMatch:!1},a=()=>{window.chrome.webview.postMessage("input-replay-stop"),this.restore(t.snapshot),Fe(o||{status:"prompted",at:Date.now(),snapshot:t.snapshot}),n.close(),Ts()&&u.showNotification("Your settings are back. Restart Kute to finish",!1,7),i.inMatch&&(document.exitPointerLock(),location.href=Rp)};try{let l=await this.run(n,t,i);if(l==="restarting")return;if(l===null){a();return}t.status="done",t.summary=l.summary,t.report=l.report,t.undoable=l.summary.changed,!l.summary.changed&&o?.undoable&&(t.snapshot=o.snapshot,t.undoable=!0),delete t.previous,delete t.baseline,delete t.carry,delete t.details,t.showSummary=!0,Fe(t),n.progress("Leaving the test match",1),document.exitPointerLock(),await De(800),location.href=Rp}catch(l){let c=`Auto-detect stopped: ${l instanceof Error?l.message:String(l)}`;i.inMatch&&sessionStorage.setItem(oa,c),a(),u.showNotification(c,!1,7)}finally{document.removeEventListener("keydown",r,!0),_p(!1),window.chrome.webview.postMessage("throttle, menu"),this.running=!1}}async run(e,t,o){let n=Gv(),r=t.baseline??t.snapshot,i=t.details??[],a=performance.now()-(t.carry?.elapsedMs??0),l=!!t.carry;e.progress("Reading your hardware",.02);let c=await Te("get-specs","specs");if(c===null)throw new Error("this needs a newer version of the client");let d=c.displays??[],h=d.find(M=>M.hostsWindow)??d[0],p=n.hz??(h?.hz>1?h.hz:60),m=(c.gpus??[]).filter(M=>!M.software),f=c.renderAdapter?.name??[...m].sort((M,F)=>F.vramMb-M.vramMb)[0]?.name??"unknown graphics card",g=n.battery??!!c.onBattery,b=n.laptop??(!!c.laptop||c.hybrid===!0),v=p*3,k=u.hostFeatures?.includes("load-sample")===!0,E=u.running?.hardFlip!==!1,L=Number(r.game[wt])||0,x=Number(r.client.gameFpsLimit)||0,$=Number(r.client.throttle)||1,I=[x,L].filter(M=>M>0),_=I.length>0?Math.min(...I):0,H=Pn(),G=null,J=[],B=[];if(!l){if(G=await Fi({hz:p,hybrid:c.hybrid===!0,progress:(M,F)=>e.progress(M,.03+.27*F),cancelled:()=>this.cancelled}),this.cancelled)return null;if(G&&n.force&&n.force in H&&(G={...G,winner:{...H,[n.force]:!H[n.force]},changed:!0,decidedBy:"p99"}),G){e.progress("Testing FPS limits",.31);let M=[...new Set([0,v,2*p,p,_])].sort((q,ee)=>ee-q),F=await qi({pipeline:G.winner,common:G.common,caps:M,cancelled:()=>this.cancelled});if(this.cancelled)return null;if(F){let q=na(F,_,"client test",b?v:void 0);J=q.rows,B=q.order}}}e.progress("Opening a private test match",.38),_p(!0),e.clickThrough(!0);let re=await $s(),je=!1;if(re&&(e.progress("Joining the test match",.41),je=await Cs(re)),e.clickThrough(!1),!je)throw window.closWind?.(),new Error("could not open a private test match (is a host slot free?)");o.inMatch=!0;let be=()=>{if(!Bn(re))throw new Error("left the private test match")};if(this.cancelled)return null;L>0&&l&&Me(wt,"0");let Ee=Number(u.settings.data.gameFpsLimit)||0,j=!0;Hn(),window.chrome.webview.postMessage("throttle, game"),await De(2500),await De(300),window.chrome.webview.postMessage("bring-to-front");let X=async(M,F=ta)=>{M!==Ee&&(Ht("gameFpsLimit",M),Ee=M,await De(qv),j=await Zv(M)),be(),k&&await Te("load-sample","loadSample",500),E&&await Te("get-present-intervals","presentIntervals",400);let q=await Zi({ms:F,hz:p,replay:!0});if(E){let ee=await Te("get-present-intervals","presentIntervals",400);ee&&ee.samples>0&&(q.presentMs=ee.p50)}if(k&&(q.load=await Te("load-sample","loadSample",500)),be(),!j&&!q.invalid&&(q.invalid=!0,q.why="nothing held the FPS limit"),n.collapse!==void 0&&(M===0||M>=n.collapse)){let ee=(te,O)=>(te??0)+O;return{...q,fps:(q.fps??0)/2,stallMs:400,p99:ee(q.p99,25),maxMs:ee(q.maxMs,40),taskP99:ee(q.taskP99,40),inputP99:ee(q.inputP99,30)}}return q},Y=async()=>{if(!k)return[];await X(0,Bt),window.chrome.webview.postMessage(`input-replay, ${10*Bt}`);let M=[],F=performance.now();for(await Te("load-sample","loadSample",500);performance.now()-F<10*Bt&&!this.cancelled;){let q=await Hp(300);if(q===null)break;M.push({ms:Math.round(performance.now()-F),fps:Math.round(q),load:await Te("load-sample","loadSample",500)})}return window.chrome.webview.postMessage("input-replay-stop"),M},y=async(M,F=ta)=>{let q=[];for(let ee=0;ee<5&&q.length<2&&!this.cancelled;ee++){let te=await X(M,F);te.invalid||q.push(te)}return q},C=async M=>{for(let F=0;F<4&&!this.cancelled;F++)if(!gt([await X(M,On)],M))return},R=async M=>{let F=new Map(M.map(q=>[q,[]]));for(let q=0;q<2;q++)for(let ee of M){if(this.cancelled)return F;F.get(ee)?.push(await X(ee))}return F},{carry:K}=t;if(!K){e.progress("Measuring how the game runs now",.45),await X(Ee);let M=await y(Ee);if(this.cancelled)return null;if(M.length<2)throw new Error("the game could not be measured, the Kute window has to stay in front during the test");L>0&&Me(wt,"0"),$>1&&(Ht("throttle",1),window.chrome.webview.postMessage("throttle, game"),await De(Ms)),e.progress("Measuring what this PC can do",.5);let q=_===0&&$<=1?[...M,await X(0)]:[await X(0),await X(0),await X(0)];if(this.cancelled)return null;if(K={asPlayed:M,uncapped:q,playedCap:_,pipelineBefore:H,pipelineAfter:G?.winner??H,pipelineChanged:!!G?.changed,decidedBy:G?.decidedBy??null,rows:G?.rows??[],benchCaps:J,capOrder:B,elapsedMs:performance.now()-a},K.pipelineChanged){t.carry=K,Fe(t),L>0&&Me(wt,String(L)),Ee!==x&&Ht("gameFpsLimit",x);for(let ee of Oe)K.pipelineAfter[ee.setting]!==H[ee.setting]&&Ht(ee.setting,K.pipelineAfter[ee.setting]);return document.exitPointerLock(),e.choose("Kute restarts once","The client test found a setup that runs better on this PC. Kute restarts with it and checks it in the game, the test goes on by itself.",[]),await De(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}}let{playedCap:z}=K,N=K,V=M=>({version:2,gpu:f,cpu:`${c.cpu?.name??"unknown processor"}, ${c.cpu?.threads??"?"} threads`,hz:p,laptop:!!c.laptop,hybrid:typeof c.hybrid=="boolean"?c.hybrid:null,powerOverlay:c.powerOverlay??null,capacity:io(N.uncapped),unlimited:N.uncapped.map(Fn),played:N.asPlayed.map(Fn),adapters:{render:c.renderAdapter?.luid??null,display:h?.adapter??null},hybridSource:c.hybridSource??null,client:{...Object.fromEntries(["gameFpsLimit","throttle","inMenuThrottle","uncapFps","patchFrameLimiter","obsCapturePlugin","renderStats","performanceMode","webviewPriority",...Oe.map(F=>F.setting)].map(F=>[F,r.client[F]??u.settings.data[F]??null])),gameFrameCap:L,hook:c.hook??null,limiter:u.frameLimiter??null,running:u.running??null},noise:0,drift:1,headroom:1,beforeCap:z,before:ye(N.asPlayed),afterCap:z,after:null,pipeline:N.rows,caps:N.benchCaps,halfResolutionGain:null,settings:[],plan:Nn({capacity:io(N.uncapped),hz:p,headroom:1,halfResolutionGain:null,settings:[]}),input:Hn(),rolledBack:null,pipelineRefused:N.pipelineRefused??null,recheck:N.recheck??[],seconds:(performance.now()-a)/1e3,...M}),de=(M,F={})=>{this.restore(t.snapshot);let q=Ts();return{summary:{title:"Nothing changed",line:q?`${M} Restart Kute to finish.`:M,details:[],changed:!1,needsRestart:q},report:V({...F,rolledBack:M})}},Z=io(N.uncapped){let{keep:ee,failed:te}=ws(M,F,{capBefore:z,capAfter:q,trade:Z});return ee?null:te==="reference"?"Kute could not measure the game with your own settings well enough to compare (its window has to stay in front), so it put yours back.":te==="result"?"Kute could not measure the result (its window has to stay in front), so it put your settings back.":`The new settings measured worse than yours (${te==="fps"?`${Math.round(io(F))} FPS, ${Math.round(io(M))} before`:Uv[te??""]}), so Kute put yours back.`},le=[...i];if($>1&&le.push(`CPU Throttling: ${$} \u2192 off (it slows the game down on purpose, the result is checked against how the game ran with it)`),l&&N.pipelineChanged&&!N.pipelineRefused){e.progress("Checking the new setup in the game",.5);let M=await y(z);if(this.cancelled)return null;let F={recheck:M.map(Fn)},q=gt(N.asPlayed,z)&>(M,z)?null:ge(N.asPlayed,M,z);if(q&&ws(N.asPlayed,M,{capBefore:z,capAfter:z,trade:Z}).failed==="result")return de(q.replace("The new settings","The setup that won the client test"),F);if(q){for(let O of Oe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&Ht(O.setting,N.pipelineBefore[O.setting]);return L>0&&Me(wt,String(L)),Ee!==x&&Ht("gameFpsLimit",x),t.carry={...N,pipelineRefused:q.replace("The new settings","The setup that won the client test"),...F,elapsedMs:performance.now()-a,resumed:!1},Fe(t),document.exitPointerLock(),e.choose("Kute restarts once more","The setup from the client test ran worse in the game, so Kute goes back to yours and tests the FPS limits on it.",[]),await De(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}let ee=N.rows.find(O=>Oe.every(ve=>O.pipeline[ve.setting]===N.pipelineAfter[ve.setting])),te=ee?Wv(N.decidedBy,ye(N.rows[0].readings),ye(ee.readings)):"measured better";for(let O of Oe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&le.push(`${O.label}: ${ut(N.pipelineBefore[O.setting])} \u2192 ${ut(N.pipelineAfter[O.setting])} (${te})`)}e.progress("Finding the FPS limit that runs best",.56);let Be=io(N.uncapped),Yt=Be>=v?v:p,xo=M=>!g||M===z||M!==0&&M<=v,zg=N.uncapped.filter(vs).length>=2,Ar=(b||zg)&&Be>=v?v:void 0,ze=new Map,Xt=[],se=z,Go="",Ie=Be,at=bs(new Map([[0,N.uncapped]]));if(!at){let M=N.capOrder.length>0?N.capOrder.slice(0,2):zi({hz:p,capacity:Be,current:z}).slice(1,3),F=[...new Set([z,0,...M,...Ar?[Ar]:[],...g?[Yt]:[]])].filter(xo);if(ze=await R(F),this.cancelled)return null;at=bs(ze);let q=na(ze,z,"test match",Ar,Z);if(Xt=q.rows,!at){se=q.winner,Go=q.reason,Ie=io(ze.get(0)??[])||Be;let ee=Hi([...ze.keys()],se,Ie,p).filter(te=>xo(te)&&te0){e.progress("Fine tuning the FPS limit",.64);let te=await R(ee);if(this.cancelled)return null;let O=na(new Map([[se,ze.get(se)??[]],...te]),se,"test match",void 0,Z);Xt.push(...O.rows.filter(ve=>ve.cap!==se));for(let[ve,Ye]of te)ze.set(ve,Ye);O.winner!==se&&(se=O.winner,Go=O.reason),at=bs(ze)}}}let Wo;if(at){e.progress("Finding the FPS limit this PC holds steadily",.62);let M=new Map;await C(p);for(let te of Ln(p)){if(this.cancelled)return null;let O=await y(te,Ap);if(M.set(te,O),!no(O,te))break}if(this.cancelled)return null;let F=Ni(p,M),q=(Kn([...N.uncapped,...ze.get(0)??[]].filter(gs).map(te=>te.stallMs))??0)/1e3;Wo={stoodStill:q,steadyUpTo:F.steadyUpTo,limit:F.cap};for(let te of Xt)te.outcome==="better"&&(te.outcome="not used");for(let[te,O]of M){let ve=no(O,te)?"steady":"not steady";Xt.push({cap:te,where:"test match",summary:ye(O.map(_o)),frameMs:Kn(O.map(Ye=>Ye.p50)),netMs:null,outcome:ve}),ze.set(te,O)}let ee=z>0&&no(N.asPlayed,z);se=z,ee||(se=[...new Set([F.cap,F.steadyUpTo])].filter(O=>O!==null).find(O=>ws(N.asPlayed,M.get(O)??[],{capBefore:z,capAfter:O}).keep)??z),Go=`without a limit this PC stood still ${Math.round(q*100)} % of the time. Up to ${F.steadyUpTo} FPS it ran steadily in the empty test match, ${se} FPS ${(F.steadyUpTo??0)>se?"leaves a step of room for a real match":"is the highest that did"}`}let Vo=Xt.find(M=>M.cap===Yt),Hg=Vo!==void 0&&(Vo.outcome==="steady"||Vo.netMs!==null&&(Vo.outcome==="better"||Vo.outcome==="not better"));g&&(se===0||se>v)&&Hg&&(se=Yt,Go="on battery");for(let M of Xt)M.cap===se&&M.cap!==z&&M.outcome!=="not steady"&&(M.outcome="chosen"),M.readings=(ze.get(M.cap)??[]).map(Fn);let ln=N.uncapped.map(M=>M.fps).filter(M=>typeof M=="number"),Jd=ln.length>1?(Math.max(...ln)-Math.min(...ln))/Math.max(1,...ln):0,Lr=1,cn=1,Rr=null;if(!at){Rr=await X(0);let M=(l?ze.get(0)?.[0]:N.uncapped[0])?.fps??Ie;Lr=(Rr.fps??Ie)/Math.max(1,M),cn=Bi(Lr,Jd)}let Og=v*cn,So=[],Pr=null,Yo=Number(r.game[ro])||1;if(at)for(let M of vt)So.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC does not run steadily without a limit)"});else if(IeO.inputP99!==null),F=Rr?.fps??Ie,q=async(O,ve)=>{let Ye=F;O(),await De(Ms);let lt=async()=>{let ru=await X(0,On);return ru.invalid?null:ru.fps},Jt=await lt();ve(),await De(Ms);let Xe=await lt();if(Jt===null||Xe===null)return{ratio:1,steady:!1,raw:[Ye,Jt??0,Xe??0]};F=Xe;let nu=(Ye+Xe)/2;return{ratio:Jt/Math.max(1,nu),steady:Math.abs(Ye-Xe)/Math.max(1,nu)<=Kv,raw:[Ye,Jt,Xe]}},ee=vt.filter(O=>!O.needsReload&&(M||!O.fightOnly));for(let O of vt){let ve=r.game[O.id],Ye=String(O.cheap),lt={id:O.id,label:O.label,current:ve??"default",cheap:Ye,gain:null,steady:!0};if(So.push(lt),O.needsReload){lt.note="not tested (needs a reload)";continue}if(O.fightOnly&&!M){lt.note="not tested (only costs in a fight)";continue}if(ve===null){lt.note="value unknown";continue}if(this.cancelled)return null;e.progress(`Measuring ${O.label}`,.68+.17*ee.indexOf(O)/ee.length);let Jt=Vi(ve),Xe=await q(()=>Me(O.id,Jt),()=>Me(O.id,ve));lt.gain=Jt===Ye?Xe.ratio:1/Math.max(.01,Xe.ratio),lt.steady=Xe.steady,lt.raw=Xe.raw}for(let O of So){if(O.gain===null||!O.steady||O.current===O.cheap||O.gainMe(O.id,O.cheap),()=>Me(O.id,O.current));O.confirmGain=ve.ratio,O.gain=Math.min(O.gain,ve.ratio),O.steady=ve.steady}e.progress("Checking the graphics card",.88);let te=await q(()=>Me(ro,String(Math.max(.1,Yo*.5))),()=>Me(ro,String(Yo)));Pr=te.steady&&te.ratio>.92?te.ratio:null}else for(let M of vt)So.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC reaches its target)"});if(this.cancelled)return null;let Ct=Nn({capacity:Ie,hz:p,headroom:cn,halfResolutionGain:Pr,settings:So});for(let M of Ct.changes)le.push(`${M.label}: ${ut(r.game[M.id])} \u2192 ${ut(M.value)} (${M.reason})`),Me(M.id,String(M.value));let Mt=null;if((Ct.changes.length>0||Ct.tuneResolution)&&(await De(Ms),Mt=(await X(0,On)).fps),Ct.tuneResolution&&Mt!==null){let M=Yo;for(let F=0;F<2&&Mt!==null&&Mtxs&&!this.cancelled;F++){let q=F===0?M*Math.sqrt(Mt/Ct.needed):xs;M=Math.min(M,Math.max(xs,Math.floor(q*20)/20)),e.progress(`Trying resolution ${M}`,.9+F*.01),Me(ro,String(M)),await De(Ms),Mt=(await X(0,On)).fps}M!==Yo&&le.push(`Resolution: ${Yo} \u2192 ${M} (the graphics card is the limit)`)}if(this.cancelled)return null;e.progress("Checking the result",.94),Ct.changes.length>0&&await X(se);let Zd=at?await Y():[];at&&await C(se);let Qd=await y(se,at?Ap:ta);if(this.cancelled)return null;let Ir={capacity:Ie,noise:Jd,drift:Lr,headroom:cn,afterCap:se,after:ye(Qd),caps:[...N.benchCaps,...Xt],halfResolutionGain:Pr,settings:So,plan:Ct,pushed:Wo,...Zd.length>0?{trace:Zd}:{}},Nr=se!==z,Dg=!Nr&&L>0&&(x===0||LFPS Limit: ${Dt(z)} \u2192 ${Dt(se)} (${Go})`):Dg&&le.push(`FPS Limit: ${Dt(se)}, now held by Kute instead of the game's frame cap (the game's cap keeps the processor busy while it waits)`);let dn=le.length>0,eu=le.length>i.length;if(eu){let M=(ze.get(z)??[]).filter(ee=>!ee.invalid),F=l||L>0||$>1,q=ge(!F&&M.length>=2?M:N.asPlayed,Qd,se);if(q)return de(q,Ir)}else L>0&&Me(wt,String(L)),Ee!==x&&Ht("gameFpsLimit",x);_n();let un=`${v} FPS (${3}x your ${p} Hz screen)`,tu=`${le.length} setting${le.length===1?"":"s"} changed.`,mt=`Your PC ran ${Math.round(Ie)} FPS in the test match, above the ${un} Kute aims for. Nothing needed changing.`;dn&&Mt!==null?mt=`${tu} Test match without a limit: ${Math.round(Ie)} FPS before, ${Math.round(Mt)} after. Kute aims for at least ${un} with no stutter.`:dn?mt=`${tu} Without a limit your PC runs ${Math.round(Ie)} FPS in the test match, Kute aims for at least ${un} with no stutter.`:Iese?" with room to spare":""}.`;else if(se>0&&no(N.asPlayed,se)){let ee=F!==null&&FsetTimeout(()=>this.offer(),1500),{once:!0});return}sessionStorage.setItem(Mp,"1");let e=new kt;e.choose("Set Kute up for this PC?","Kute can set the game up for what this PC can do: it measures in a private test match, and everything it changes can be undone. You have to be logged in for that.",[{label:"Yes",onPick:()=>{this.setUp(e)}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"No",cancel:!0,onPick:()=>this.decline(e)}],Bp())}decline(e){e.close(),this.remember("declined"),u.showNotification("Got it. You can always start the setup from Settings, Client",!1,5)}async signedIn(){if(As())return!0;if(!localStorage.getItem("krunker_token"))return!1;let e=Date.now()+Dv;for(;Date.now(){e.close(),window.loginOrRegister(),this.waitForLogin()}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}])}waitForLogin(){let e=Date.now()+Ov,t=setInterval(()=>{if(As()){clearInterval(t),this.askSettings();return}Date.now()>e&&clearInterval(t)},1e3)}askSettings(e=new kt){this.remember("settings"),e.choose("Where should your game settings come from?","Kute measures this PC either way and sets what it finds. This is only about the settings it starts from.",[{label:"Import a settings.txt",onPick:()=>{e.close(),this.remember("import"),window.importSettingsPopup()}},{label:"Kute's preset",onPick:()=>{e.close(),this.applyPreset()}},{label:"Keep my settings",onPick:()=>{e.close(),this.start()}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}],Bp())}afterImport(){if(zt()?.wizard!=="import")return;let e=this.snapshot();this.remember("run",e,[]),setTimeout(()=>{zt()?.wizard==="run"&&this.start({snapshot:e})},1500)}applyPreset(){let e=this.snapshot(),t=[];for(let[o,n]of Object.entries(Ui))String(e.game[o])!==String(n)&&(Me(o,n),t.push(`${Wi(o)}: ${ut(e.game[o])} \u2192 ${ut(n)} (Kute's preset)`));this.remember("run",e,t),u.showNotification("Applying Kute's preset, the game reloads once",!1,4),setTimeout(()=>location.reload(),1200)}resume(){let e=zt();if(e?.status==="running"){if(e.carry&&!e.carry.resumed){e.carry.resumed=!0,Fe(e),setTimeout(async()=>{if(await this.signedIn()){this.start({resume:e});return}this.restore(e.snapshot),e.previous?Fe(e.previous):localStorage.removeItem(qn),u.showNotification("Auto-detect could not go on (not logged in). Your settings are back, restart Kute to finish",!1,8)},ea);return}this.restore(e.snapshot),e.previous?Fe(e.previous):localStorage.removeItem(qn);return}let t=sessionStorage.getItem(oa);if(t&&(sessionStorage.removeItem(oa),setTimeout(()=>u.showNotification(t,!1,12),ea)),e?.showSummary&&e.summary){e.showSummary=!1,Fe(e),new kt().result(e.summary,{onUndo:()=>this.undo(),report:zp(e)});return}if(e?.wizard==="run"){setTimeout(async()=>{await this.signedIn()&&this.start({snapshot:e.snapshot,details:e.wizardDetails??[]})},ea);return}if(e?.wizard==="login"||e?.wizard==="settings"||e?.wizard==="import"){setTimeout(()=>this.setUp(),Tp);return}e&&e.wizard!=="later"||setTimeout(()=>this.offer(),Tp)}},Op=new ra;u.autoDetect=Op;Op.resume()});var Fp={};A(Fp,{clanTag:()=>Ls,default:()=>pt});function Ls(s){for(let e of s.children){if(e.tagName!=="SPAN")continue;let t=Qv.exec(e.textContent??"");if(t)return{span:e,tag:t[1]}}return null}function o0(s){let e="";for(let t of s.childNodes)t.nodeType===Node.TEXT_NODE&&(e+=t.textContent??"");return e.trim()}var Qv,Dp,e0,t0,la,pt,jn=w(()=>{"use strict";Qv=/^\s*\[(.+)\]\s*$/;Dp=[{list:"leaderContainer",kind:"leader",root:"leaderboardHolder"},{list:"ingameTable",kind:"ingame",root:"centerLeaderDisplay"},{list:"endTable",kind:"end",root:"endUI"},{list:"playerListH",kind:"alt",root:"menuWindow"}],e0=1e3,t0='.pListName, [class^="newLeaderName"], [class^="leaderName"], .endTableN';la=class{constructor(){this.decorators=new Map,this.watched=[],this.timer=0}add(e,t){this.decorators.set(e,t),this.watched.length===0&&this.observe(),this.refresh()}remove(e){if(this.decorators.delete(e),!(this.decorators.size>0)){for(let{observer:t}of this.watched)t.disconnect();this.watched=[],clearInterval(this.timer),this.timer=0}}observe(){for(let{root:e,list:t,kind:o}of Dp){let n=document.getElementById(e);n&&this.watch(n,t,o)}this.timer=setInterval(()=>this.discover(),e0)}watch(e,t,o){let n={observer:new MutationObserver(()=>this.walk(n)),target:e,list:t,kind:o};n.observer.observe(e,{childList:!0,subtree:!0}),this.watched.push(n),this.walk(n)}discover(){this.watched=this.watched.filter(e=>e.target.isConnected?!0:(e.observer.disconnect(),!1));for(let{list:e,kind:t}of Dp){let o=document.getElementById(e);o&&!this.watched.some(n=>n.target.contains(o))&&this.watch(o,e,t)}}refresh(){for(let e of this.watched)this.walk(e)}walk(e){let t=document.querySelectorAll(`#${e.list}`);if(t.length>0){for(let o of t)for(let n of o.querySelectorAll(t0)){let r={element:n,name:o0(n),kind:e.kind};for(let i of this.decorators.keys())i(r)}for(let o of this.decorators.values())o?.(e.kind)}e.observer.takeRecords()}},pt=new la});var Kp={};A(Kp,{default:()=>et,playerHash:()=>Un});function a0(){if(document.getElementById("signedInHeaderBar")===null)return"";let s=window.getGameActivity?.()?.id;return typeof s=="string"?s:""}function l0(){let s=window.getGameActivity?.()?.user;if(typeof s!="string")return"";if(localStorage.getItem("kro_setngss_premiumBadge")==="false"){let e=localStorage.getItem("krunker_username");if(e)return e}return s}async function Un(s,e){let t=new TextEncoder().encode(s+` -`+e),o=new Uint8Array(await crypto.subtle.digest("SHA-256",t));return Array.from(o.subarray(0,16),n=>n.toString(16).padStart(2,"0")).join("")}function c0(s,e,t){return new Promise(o=>{let n=0,r=i=>{let a=i?.data?.devProof;a?.nonce===s&&(clearTimeout(n),window.chrome.webview.removeEventListener("message",r),o(typeof a.user=="string"&&typeof a.proof=="string"?{user:a.user,proof:a.proof}:null))};n=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),o(null)},i0),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(`dev-proof, ${s}, ${e}, ${t}`)})}var s0,n0,r0,i0,ca,qp,et,da=w(()=>{"use strict";D();It();s0=[2,4,8,16,30],n0=2e3,r0=3e4,i0=1e3;ca=class{constructor(){this.game="",this.roster=new Set,this.devs=new Map,this.nonce="",this.listeners=new Set,this.socket=null,this.failures=0,this.timer=0,this.joined="",he.available().then(e=>{e&&this.open()}),he.listeners.add(e=>{if(!e){this.socket?.close();return}this.failures=0,he.available().then(t=>{t&&!this.socket&&this.open()})})}open(){if(he.down||he.offline())return;let e=new WebSocket(he.base.replace(/^http/,"ws")+"/ws");this.socket=e,e.addEventListener("open",()=>{setTimeout(()=>{this.socket===e&&(this.failures=0)},r0),e.send(JSON.stringify(u.settings.data.counted===!0?{t:"hi"}:{t:"hi",first:!0})),this.sync(),this.timer=setInterval(()=>this.sync(),n0)}),e.addEventListener("message",t=>this.receive(t.data)),e.addEventListener("close",()=>{clearInterval(this.timer),this.socket=null,this.joined="",this.nonce="",this.setRoster("",[]);let t=s0[this.failures++];t!==void 0&&setTimeout(()=>this.open(),t*1e3)})}async sync(){let e=a0(),t=e?l0():"",o=e&&t?e+` -`+t:"";if(o===this.joined)return;if(this.joined=o,!o){this.send({t:"leave"}),this.setRoster("",[]);return}let n=await Un(e,t);if(this.joined!==o)return;let r=u.dev===!0&&this.nonce?await c0(this.nonce,e,n):null;this.joined===o&&this.send(r?{t:"join",game:e,hash:n,dev:r}:{t:"join",game:e,hash:n})}send(e){this.socket?.readyState===WebSocket.OPEN&&this.socket.send(JSON.stringify(e))}receive(e){let t;try{t=JSON.parse(String(e))}catch{return}t?.t==="hello"&&typeof t.nonce=="string"?this.nonce=t.nonce:t?.t==="roster"&&typeof t.game=="string"&&Array.isArray(t.players)?this.joined.startsWith(t.game+` -`)&&this.setRoster(t.game,t.players):t?.t==="+"&&typeof t.h=="string"?(this.remember(t.h,t.d===1?t.c:void 0),this.changed()):t?.t==="-"&&typeof t.h=="string"?(this.roster.delete(t.h),this.devs.delete(t.h),this.changed()):t?.t==="counted"&&(u.settings.data.counted=!0,window.chrome.webview.postMessage("set-config, counted, true"))}remember(e,t){this.roster.add(e),typeof t=="string"&&t!==""?this.devs.set(e,t):this.devs.delete(e)}setRoster(e,t){if(!(e===this.game&&t.length===0&&this.roster.size===0)){this.game=e,this.roster=new Set,this.devs=new Map;for(let o of t)Array.isArray(o)&&typeof o[0]=="string"&&this.remember(o[0],o[1]===1?o[2]?.c:void 0);this.changed()}}changed(){for(let e of this.listeners)e()}},qp=new ca;u.presence=qp;et=qp});var Up,jp=w(()=>{Up="data:image/webp;base64,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"});var Wp,Gp=w(()=>{Wp="data:image/webp;base64,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"});var pa={};A(pa,{default:()=>g0});function Vp(s){let e=s?`[data-kute-badge="${s}"]`:"[data-kute-badge]";for(let o of document.querySelectorAll(e))o.remove();let t=s?`[data-kute-badged="${s}"]`:"[data-kute-badged]";for(let o of document.querySelectorAll(t))o.removeAttribute("data-kute-badged")}function Yp(s){(s.querySelector("[data-kute-badge]")??s.parentElement?.querySelector("[data-kute-badge]"))?.remove(),s.removeAttribute("data-kute-badged")}var p0,h0,m0,f0,ua,Xp,g0,ha=w(()=>{"use strict";D();jn();da();jp();Gp();p0="2px",h0={leader:"margin-top:5px;vertical-align:middle;height:21px;margin-left:2px",ingame:"margin-top:3px;vertical-align:middle;height:21px;margin-left:2px",end:"margin-top:-12px;vertical-align:middle;width:26px;margin-left:2px",alt:"vertical-align:middle;height:21px;margin-left:6px;position:relative;top:-0.35em"},m0={kute:Up,dev:Wp},f0={kute:"Kute",dev:"Kute Developer"};ua=class{constructor(){this.game="",this.hashes=new Map,this.pending=new Set,this.found=!1,this.candidates=[],this.enabled=u.settings.data.cuteBadge!==!1,this.decorator=e=>this.decorate(e),this.finisher=()=>this.finish(),u.settings.toggleCuteBadge=e=>this.toggle(e),et.listeners.add(()=>this.rosterChanged())}toggle(e){this.enabled=e,e||Vp("kute"),pt.refresh()}rosterChanged(){if(et.game!==this.game&&(this.game=et.game,this.hashes.clear(),this.pending.clear()),Vp(),et.roster.size===0){pt.remove(this.decorator);return}pt.add(this.decorator,this.finisher)}decorate(e){if(et.roster.size===0||e.name==="")return;let t=this.hashes.get(e.name);if(t===void 0){this.learn(e.name);return}if(et.devs.has(t)){this.candidates.push({row:e,hash:t,tag:Ls(e.element)?.tag});return}this.enabled&&!e.element.hasAttribute("data-kute-badged")&&et.roster.has(t)&&this.insert(e,"kute")}finish(){if(this.candidates.length===0)return;let e=new Map;for(let t of this.candidates){let o=e.get(t.hash);o?o.push(t):e.set(t.hash,[t])}for(let[t,o]of e){let n=o.filter(i=>i.tag===et.devs.get(t)),r=null;n.length===1?r=n[0].row:n.length===0&&o.length===1&&(r=o[0].row);for(let i of o){let a=i.row.element.getAttribute("data-kute-badged");if(i.row!==r){a&&Yp(i.row.element);continue}a!=="dev"&&(a&&Yp(i.row.element),this.insert(i.row,"dev"))}}this.candidates.length=0}async learn(e){if(this.pending.has(e))return;this.pending.add(e);let{game:t}=this,o=await Un(t,e);t===this.game&&(this.pending.delete(e),this.hashes.set(e,o),et.roster.has(o)&&(this.found=!0),!(this.pending.size>0||!this.found)&&(this.found=!1,pt.refresh()))}insert(e,t){let{element:o}=e,n=o.parentElement;if(!n)return;let r=document.createElement("img");r.src=m0[t],r.setAttribute("data-kute-badge",t),r.alt="",r.title=f0[t],r.style.cssText=h0[e.kind],e.kind==="alt"?o.append(r):e.kind==="end"?n.insertBefore(r,o.nextSibling):n.insertBefore(r,n.firstElementChild?.nextSibling??o),r.nextElementSibling?.tagName==="I"&&(r.style.marginRight=p0),o.setAttribute("data-kute-badged",t)}},Xp=new ua;u.badges=Xp;g0=Xp});var Jp=we((_S,b0)=>{b0.exports=`#chatList>*{display:block!important}#chatInputHolder{opacity:1;transition:opacity .2s ease-in-out,transform .2s ease-in-out}#chatList::-webkit-scrollbar{display:none}#chatList{transition:margin-bottom .2s ease-in-out}#uiBase.onGame #chatList{margin-bottom:-50px}#uiBase.onMenu #chatInputHolder{transition:none}#uiBase.onGame #chatInputHolder{opacity:0;transform:translateY(50px)}#uiBase.onGame #chatHolder:focus-within #chatInputHolder{opacity:1;transform:translateY(0)}#uiBase.onGame #chatHolder:focus-within #chatList{margin-bottom:0}#uiBase.onSpect #chatInputHolder{opacity:1;transform:translateY(0)}#uiBase.onSpect #chatList{margin-bottom:0} -`});var fa={};A(fa,{default:()=>v0});var ma,v0,ga=w(()=>{"use strict";D();Ae();ma=class{constructor(){this.teamModes=new Set(["Team Deathmatch","Hardpoint","Capture the Flag","Hide & Seek","Infected","Last Man Standing","Simon Says","Prop Hunt","Boss Hunt","Deposit","Stalker","Kill Confirmed","Defuse","Traitor","Blitz","Domination","Squad Deathmatch","Team Defender"]),this.styles=document.createElement("style"),Promise.resolve().then(()=>ue(Jp(),1)).then(e=>{this.styles.innerHTML=e.default}),u.settings.toggleBetterChat=e=>this.toggle(e),this.chatHolder=U("#chatHolder"),this.chatList=U("#chatList"),this.chatInput=ke("#chatInput"),this.chatSwitch=U("#chatSwitch"),this.channelT=document.createElement("div"),this.channelA=document.createElement("div"),this.channelT.style.cssText="float: left; display: inline-block; margin-right: 5px; color: #9eeb56;",this.channelT.textContent="[T]",this.channelA.style.cssText="float: left; display: inline-block; margin-right: 5px; color: #eb5656;",this.channelA.textContent="[M]",this.observer=new MutationObserver(e=>this.parseMessages(e)),this.toggle(!0)}switchChat=e=>{e.key==="Tab"&&(window.switchChat(this.chatSwitch),e.preventDefault())};parseMessages(e){let t=!1;for(let o of e)for(let n of o.addedNodes){if(!(n instanceof HTMLElement))continue;let r=n.querySelector(".chatItem");if(!r)continue;let i=r.querySelector(".chatMsg");if(!i)continue;if(i.textContent.includes("Text & Voice Chat")){n.remove();continue}let{tab:a}=n.dataset;!a||!r.textContent.includes("\u200E:")||!this.teamModes.has(window.getGameActivity().mode)||(a==="0"?i.insertBefore(this.channelA.cloneNode(!0),i.firstChild):a==="1"&&i.insertBefore(this.channelT.cloneNode(!0),i.firstChild),t=!0)}t&&(this.chatList.scrollTop=1e9)}toggle(e){e?(document.head.append(this.styles),this.chatInput.addEventListener("keydown",this.switchChat,{capture:!0}),this.observer.observe(this.chatList,{childList:!0})):(this.styles.remove(),this.chatInput.removeEventListener("keydown",this.switchChat,{capture:!0}),this.observer.disconnect())}},v0=new ma});var eh={};function Zp(){return Array.from(document.querySelectorAll(".bpClaimB")).filter(s=>s.offsetParent!==null&&s.textContent.trim()==="Claim")}function Qp(){let s=Zp().length>0;s?Ft.classList.remove("disabled"):Ft.classList.add("disabled"),Ft.textContent=s?"Claim All":"Nothing to Claim"}async function w0(){let s=Zp();if(s.length!==0){for(let e of s)e.getAttribute("onclick")?.includes("windows[5].claimItem(")&&e.click(),await new Promise(o=>setTimeout(o,200));Qp()}}function k0(){let s=document.querySelector(".bpBotH");s&&(s.append(Ft),Qp())}var Ft,y0,ba=w(()=>{"use strict";Ft=document.createElement("div");Ft.className="bpBtn skip";Ft.id="claimAllBtn";Ft.textContent="Claim All";Ft.onclick=()=>{window.playSelect?.(.1),w0()};y0=window.showWindow;window.showWindow=(...s)=>(s[0]===6&&queueMicrotask(()=>k0()),y0(...s))});function ya(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function dh(s){co=s}function zo(s){let e=[];return t=>{let o=Math.max(0,Math.min(3,t-1)),n=e[o];return n||(n=s(o),e[o]=n),n}}function Q(s,e=""){let t=typeof s=="string"?s:s.source,o={replace:(n,r)=>{let i=typeof r=="string"?r:r.source;return i=i.replace(Le.caret,"$1"),t=t.replace(n,i),o},getRegex:()=>new RegExp(t,e)};return o}function qe(s,e){if(e){if(Le.escapeTest.test(s))return s.replace(Le.escapeReplace,nh)}else if(Le.escapeTestNoEncode.test(s))return s.replace(Le.escapeReplaceNoEncode,nh);return s}function rh(s){try{s=encodeURI(s).replace(Le.percentDecode,"%")}catch{return null}return s}function ih(s,e){let t=s.replace(Le.findPipe,(r,i,a)=>{let l=!1,c=i;for(;--c>=0&&a[c]==="\\";)l=!l;return l?"|":" |"}),o=t.split(Le.splitPipe),n=0;if(o[0].trim()||o.shift(),o.length>0&&!o.at(-1)?.trim()&&o.pop(),e)if(o.length>e)o.splice(e);else for(;o.length
              Copy this report
              `}function ia(s,e,t,o,n=!1){let r=zi(s,e,{prefer:o,inputRequired:t==="test match",trade:n}),i=r.judged.map(d=>({cap:d.cap,where:t,summary:d.summary,frameMs:d.frameMs,netMs:d.netMs,outcome:d.outcome})),a=r.judged.find(d=>d.cap===r.winner),l="measures as smooth as before, with fewer frames to draw";if(r.decidedBy==="net"){let{task:d=0,input:h=null}=a?.gains??{},p=[];d>0&&p.push(`the game reacts ${xt(d)} ms sooner`),h!==null&&h>0&&p.push(`the mouse waits ${xt(h)} ms less`),h!==null&&h<0&&p.push(`the mouse waits ${xt(-h)} ms longer, which the sooner reaction outweighs on a PC below its target`),l=p.length>0?p.join(", "):"frames come sooner and nothing waits longer"}let c=r.judged.filter(d=>d.cap!==e&&d.outcome!=="worse"&&d.outcome!=="not steady").sort((d,h)=>(h.netMs??-1/0)-(d.netMs??-1/0)).map(d=>d.cap);return{rows:i,winner:r.winner,reason:l,order:c}}function Op(s){u.hostFeatures?.includes("mute")&&window.chrome.webview.postMessage(`mute, ${s}`)}function Fp(){return`Takes about two minutes. Don't touch mouse or keyboard meanwhile: a test window opens and closes a few times, then Kute plays a private match by itself, turning the view and firing.${u.hostFeatures?.includes("mute")?" The game is muted meanwhile.":""}`}function Ls(){return Fe.some(s=>u.settings.data[s.setting]!==!1!=(u.running?.[s.setting]!==!1))}function Dp(s){return s.report?.version===2?s.report:void 0}function qp(s){return new Promise(e=>{let t=performance.now(),o={frames:0,done:!1,watchdog:0},n=()=>{o.frames++;let r=performance.now()-t;if(r{o.done||e(null)},s+2e3)})}async function s0(s){if(s===0)return!0;let e=performance.now()+Gv;for(;performance.now()typeof t=="number"?Math.round(t*100)/100:null;return{fps:e(s.fps),p50:e(s.p50),p99:e(s.p99),maxMs:e(s.maxMs),stallMs:e(s.stallMs),taskP99:e(s.taskP99),inputP99:e(s.inputP99),...typeof s.presentMs=="number"?{presentMs:e(s.presentMs)}:{},...s.invalid?{invalid:!0,why:s.why}:{},...s.load?{load:s.load}:{}}}function co(s){return ye(s).fps.median??0}var jn,Rp,Pp,oa,jv,Uv,sa,Dn,Ip,Gv,As,Wv,Vv,Yv,Np,_p,na,Xv,De,yt,aa,Kp,ca=w(()=>{"use strict";$p();F();On();Ae();Ui();Gi();xs();ta();Zi();jn="kute_autodetect",Rp="kute_autodetect_asked",Pp=250,oa=1500,jv=3e5,Uv=2e4,sa=3*zt,Dn=2*zt,Ip=6*zt,Gv=6e3,As=450,Wv=700,Vv=.08,Yv=["gameFpsLimit","throttle",...Fe.map(s=>s.setting)],Np="autodetect-v2",_p="https://krunker.io/",na="kute_autodetect_stopped",Xv={taskP99:"the game reacted later",inputP99:"the mouse waited longer",p99:"slow frames came later",stallMs:"more stutter",maxMs:"a longer freeze",frame:"frames took longer, and the mouse wait could not be measured",unsteady:"it did not run steadily"},De=s=>new Promise(e=>{setTimeout(e,s)});yt=class{constructor(){document.querySelector("#adPanelHost")?.parentElement?.remove(),this.overlay=document.createElement("div"),this.onEscape=void 0,this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.93)";let e=document.createElement("div");e.id="adPanelHost",this.overlay.append(e),this.root=e.attachShadow({mode:"open"}),this.root.innerHTML=Cp,document.body.append(this.overlay)}element(e){return this.root.querySelector(`#${e}`)}progress(e,t){this.element("adStatus").textContent=e,this.element("adBarFill").style.width=`${Math.round(t*100)}%`}choose(e,t,o,n){let r=o.find(l=>l.cancel);this.dismissWith(r?()=>r.onPick():void 0),this.element("adTitle").textContent=e,this.element("adStatus").textContent=t;let i=this.element("adNote");i.textContent=n??"",i.style.display=n?"block":"none",this.element("adBar").style.display="none",this.element("adHint").style.display="none";let a=this.element("adActions");a.style.display="flex",a.innerHTML="";for(let l of o){let c=document.createElement("div");c.className="adButton",c.textContent=l.label,c.onclick=()=>l.onPick(),a.append(c)}}result(e,t={}){this.dismissWith(()=>this.close()),this.element("adTitle").textContent=e.title,this.element("adStatus").textContent=e.line,this.element("adNote").style.display="none",this.element("adBar").style.display="none",this.element("adHint").style.display="none",this.element("adActions").style.display="flex",this.element("adDetailsButton").style.display="none",this.element("adUndo").style.display=e.changed&&t.onUndo?"":"none",this.element("adRun").style.display=t.onRun?"":"none",this.element("adRestart").style.display=e.needsRestart?"":"none",this.element("adRestart").onclick=()=>window.chrome.webview.postMessage("restart"),this.element("adAdvancedButton").style.display=t.report?"":"none";let o=this.element("adDetails");if(o.innerHTML=e.details.map(n=>`
            • ${n}
            • `).join(""),o.style.display=e.details.length>0?"block":"none",t.report){let n=this.element("adAdvanced");n.innerHTML=o0(t.report);let r=this.element("adAdvancedButton");r.textContent="Advanced",r.onclick=()=>{let i=n.style.display!=="block";n.style.display=i?"block":"none",this.element("adPanel").classList.toggle("adWide",i),r.textContent=i?"Hide advanced":"Advanced"},this.element("adCopy").onclick=()=>{let i=JSON.stringify({kute:u.version,...t.report},null,2);navigator.clipboard.writeText(i).then(()=>{this.element("adCopy").textContent="Copied"},()=>{this.element("adCopy").textContent="Copying failed"})}}this.element("adOk").onclick=()=>this.close(),this.element("adUndo").onclick=()=>{this.close(),t.onUndo?.()},this.element("adRun").onclick=()=>{this.close(),t.onRun?.()}}clickThrough(e){this.overlay.style.pointerEvents=e?"none":""}dismissWith(e){this.unbindEscape(),this.overlay.onclick=e?t=>{t.target===this.overlay&&e()}:null,e&&(this.onEscape=t=>{t.key==="Escape"&&(t.stopPropagation(),e())},document.addEventListener("keydown",this.onEscape,!0))}unbindEscape(){this.onEscape&&document.removeEventListener("keydown",this.onEscape,!0),this.onEscape=void 0}close(){this.unbindEscape(),this.overlay.remove()}};aa=class{constructor(){this.running=!1,this.cancelled=!1}snapshot(){return{client:Object.fromEntries(Yv.map(e=>[e,u.settings.data[e]])),game:Object.fromEntries(Vi.map(e=>[e,Cs(e)]))}}restore(e){zn();for(let[t,o]of Object.entries(e.game))o!==null&&Cs(t)!==o&&Me(t,o);for(let[t,o]of Object.entries(e.client))o!==void 0&&u.settings.data[t]!==o&&Ot(t,o)}undo(){let e=Ht();if(!e?.undoable){u.showNotification("Nothing to undo",!1,3);return}let t=new Set(wt.filter(i=>i.needsReload).map(i=>i.id)),o=Object.entries(e.snapshot.game).some(([i,a])=>t.has(i)&&a!==null&&Cs(i)!==a);this.restore(e.snapshot);let n=Ls();e.undoable=!1;let r="Your previous settings are back.";o&&(r="Your previous settings are back, the game reloads once to apply them."),n&&(r+=" Restart Kute to finish."),e.summary={title:"Undone",line:r,details:[],changed:!1,needsRestart:n},qe(e),u.showNotification(`Auto-detect undone. ${r.replace("Your previous settings are back","Your settings are back")}`,!1,5),o&&setTimeout(()=>location.reload(),1200)}dropUndo(){let e=Ht();e?.undoable&&(e.undoable=!1,qe(e))}showLast(){let e=Ht();if(!e?.summary){u.showNotification("Auto-detect has not run yet",!1,3);return}new yt().result(e.summary,{onUndo:e.undoable?()=>this.undo():void 0,report:Dp(e)})}async start(e={}){if(this.running)return;if(!u.hostFeatures?.includes(Np)){u.showNotification("Auto-detect needs a newer Kute, update the client to use it",!1,6);return}if(u.recovery){u.showNotification("Auto-detect can't run in safe mode or while Kute looks for the cause of a crash",!1,6);return}if(!Rs()){u.showNotification("Log in first: auto-detect measures in a private test match, and hosting one needs an account",!1,6);return}if(document.pointerLockElement||Oe()){u.showNotification("Open the menu outside of a competitive match first",!1,4);return}if(!e.resume&&Ls()){u.showNotification("Restart Kute first: a setting you changed only applies after a restart, auto-detect would test the old one",!1,7);return}this.running=!0,this.cancelled=!1,window.closWind?.();let t,o;if(e.resume)t=e.resume,o=t.previous??null;else{o=Ht(),o&&(delete o.wizard,delete o.wizardDetails);let l=this.snapshot();t={status:"running",at:Date.now(),snapshot:e.snapshot??l,baseline:l,previous:o,details:e.details??[]},qe(t)}let n=new yt,r=l=>{l.key==="Escape"&&(this.cancelled=!0,qi())};document.addEventListener("keydown",r,!0);let i={inMatch:!1},a=()=>{window.chrome.webview.postMessage("input-replay-stop"),this.restore(t.snapshot),qe(o||{status:"prompted",at:Date.now(),snapshot:t.snapshot}),n.close(),Ls()&&u.showNotification("Your settings are back. Restart Kute to finish",!1,7),i.inMatch&&(document.exitPointerLock(),location.href=_p)};try{let l=await this.run(n,t,i);if(l==="restarting")return;if(l===null){a();return}t.status="done",t.summary=l.summary,t.report=l.report,t.undoable=l.summary.changed,!l.summary.changed&&o?.undoable&&(t.snapshot=o.snapshot,t.undoable=!0),delete t.previous,delete t.baseline,delete t.carry,delete t.details,t.showSummary=!0,qe(t),n.progress("Leaving the test match",1),document.exitPointerLock(),await De(800),location.href=_p}catch(l){let c=`Auto-detect stopped: ${l instanceof Error?l.message:String(l)}`;i.inMatch&&sessionStorage.setItem(na,c),a(),u.showNotification(c,!1,7)}finally{document.removeEventListener("keydown",r,!0),Op(!1),window.chrome.webview.postMessage("throttle, menu"),this.running=!1}}async run(e,t,o){let n=Jv(),r=t.baseline??t.snapshot,i=t.details??[],a=performance.now()-(t.carry?.elapsedMs??0),l=!!t.carry;e.progress("Reading your hardware",.02);let c=await Te("get-specs","specs");if(c===null)throw new Error("this needs a newer version of the client");let d=c.displays??[],h=d.find(M=>M.hostsWindow)??d[0],p=n.hz??(h?.hz>1?h.hz:60),m=(c.gpus??[]).filter(M=>!M.software),f=c.renderAdapter?.name??[...m].sort((M,D)=>D.vramMb-M.vramMb)[0]?.name??"unknown graphics card",g=n.battery??!!c.onBattery,b=n.laptop??(!!c.laptop||c.hybrid===!0),v=p*3,k=u.hostFeatures?.includes("load-sample")===!0,E=u.running?.hardFlip!==!1,L=Number(r.game[kt])||0,y=Number(r.client.gameFpsLimit)||0,C=Number(r.client.throttle)||1,I=[y,L].filter(M=>M>0),_=I.length>0?Math.min(...I):0,H=Nn(),G=null,J=[],B=[];if(!l){if(G=await Ki({hz:p,hybrid:c.hybrid===!0,progress:(M,D)=>e.progress(M,.03+.27*D),cancelled:()=>this.cancelled}),this.cancelled)return null;if(G&&n.force&&n.force in H&&(G={...G,winner:{...H,[n.force]:!H[n.force]},changed:!0,decidedBy:"p99"}),G){e.progress("Testing FPS limits",.31);let M=[...new Set([0,v,2*p,p,_])].sort((q,ee)=>ee-q),D=await ji({pipeline:G.winner,common:G.common,caps:M,cancelled:()=>this.cancelled});if(this.cancelled)return null;if(D){let q=ia(D,_,"client test",b?v:void 0);J=q.rows,B=q.order}}}e.progress("Opening a private test match",.38),Op(!0),e.clickThrough(!0);let re=await Ms(),je=!1;if(re&&(e.progress("Joining the test match",.41),je=await Ts(re)),e.clickThrough(!1),!je)throw window.closWind?.(),new Error("could not open a private test match (is a host slot free?)");o.inMatch=!0;let be=()=>{if(!Hn(re))throw new Error("left the private test match")};if(this.cancelled)return null;L>0&&l&&Me(kt,"0");let Ee=Number(u.settings.data.gameFpsLimit)||0,j=!0;Fn(),window.chrome.webview.postMessage("throttle, game"),await De(2500),await De(300),window.chrome.webview.postMessage("bring-to-front");let X=async(M,D=sa)=>{M!==Ee&&(Ot("gameFpsLimit",M),Ee=M,await De(Wv),j=await s0(M)),be(),k&&await Te("load-sample","loadSample",500),E&&await Te("get-present-intervals","presentIntervals",400);let q=await ea({ms:D,hz:p,replay:!0});if(E){let ee=await Te("get-present-intervals","presentIntervals",400);ee&&ee.samples>0&&(q.presentMs=ee.p50)}if(k&&(q.load=await Te("load-sample","loadSample",500)),be(),!j&&!q.invalid&&(q.invalid=!0,q.why="nothing held the FPS limit"),n.collapse!==void 0&&(M===0||M>=n.collapse)){let ee=(te,O)=>(te??0)+O;return{...q,fps:(q.fps??0)/2,stallMs:400,p99:ee(q.p99,25),maxMs:ee(q.maxMs,40),taskP99:ee(q.taskP99,40),inputP99:ee(q.inputP99,30)}}return q},Y=async()=>{if(!k)return[];await X(0,zt),window.chrome.webview.postMessage(`input-replay, ${10*zt}`);let M=[],D=performance.now();for(await Te("load-sample","loadSample",500);performance.now()-D<10*zt&&!this.cancelled;){let q=await qp(300);if(q===null)break;M.push({ms:Math.round(performance.now()-D),fps:Math.round(q),load:await Te("load-sample","loadSample",500)})}return window.chrome.webview.postMessage("input-replay-stop"),M},x=async(M,D=sa)=>{let q=[];for(let ee=0;ee<5&&q.length<2&&!this.cancelled;ee++){let te=await X(M,D);te.invalid||q.push(te)}return q},$=async M=>{for(let D=0;D<4&&!this.cancelled;D++)if(!bt([await X(M,Dn)],M))return},R=async M=>{let D=new Map(M.map(q=>[q,[]]));for(let q=0;q<2;q++)for(let ee of M){if(this.cancelled)return D;D.get(ee)?.push(await X(ee))}return D},{carry:K}=t;if(!K){e.progress("Measuring how the game runs now",.45),await X(Ee);let M=await x(Ee);if(this.cancelled)return null;if(M.length<2)throw new Error("the game could not be measured, the Kute window has to stay in front during the test");L>0&&Me(kt,"0"),C>1&&(Ot("throttle",1),window.chrome.webview.postMessage("throttle, game"),await De(As)),e.progress("Measuring what this PC can do",.5);let q=_===0&&C<=1?[...M,await X(0)]:[await X(0),await X(0),await X(0)];if(this.cancelled)return null;if(K={asPlayed:M,uncapped:q,playedCap:_,pipelineBefore:H,pipelineAfter:G?.winner??H,pipelineChanged:!!G?.changed,decidedBy:G?.decidedBy??null,rows:G?.rows??[],benchCaps:J,capOrder:B,elapsedMs:performance.now()-a},K.pipelineChanged){t.carry=K,qe(t),L>0&&Me(kt,String(L)),Ee!==y&&Ot("gameFpsLimit",y);for(let ee of Fe)K.pipelineAfter[ee.setting]!==H[ee.setting]&&Ot(ee.setting,K.pipelineAfter[ee.setting]);return document.exitPointerLock(),e.choose("Kute restarts once","The client test found a setup that runs better on this PC. Kute restarts with it and checks it in the game, the test goes on by itself.",[]),await De(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}}let{playedCap:z}=K,N=K,V=M=>({version:2,gpu:f,cpu:`${c.cpu?.name??"unknown processor"}, ${c.cpu?.threads??"?"} threads`,hz:p,laptop:!!c.laptop,hybrid:typeof c.hybrid=="boolean"?c.hybrid:null,powerOverlay:c.powerOverlay??null,capacity:co(N.uncapped),unlimited:N.uncapped.map(Kn),played:N.asPlayed.map(Kn),adapters:{render:c.renderAdapter?.luid??null,display:h?.adapter??null},hybridSource:c.hybridSource??null,client:{...Object.fromEntries(["gameFpsLimit","throttle","inMenuThrottle","uncapFps","patchFrameLimiter","obsCapturePlugin","renderStats","performanceMode","webviewPriority",...Fe.map(D=>D.setting)].map(D=>[D,r.client[D]??u.settings.data[D]??null])),gameFrameCap:L,hook:c.hook??null,limiter:u.frameLimiter??null,running:u.running??null},noise:0,drift:1,headroom:1,beforeCap:z,before:ye(N.asPlayed),afterCap:z,after:null,pipeline:N.rows,caps:N.benchCaps,halfResolutionGain:null,settings:[],plan:Bn({capacity:co(N.uncapped),hz:p,headroom:1,halfResolutionGain:null,settings:[]}),input:Fn(),rolledBack:null,pipelineRefused:N.pipelineRefused??null,recheck:N.recheck??[],seconds:(performance.now()-a)/1e3,...M}),de=(M,D={})=>{this.restore(t.snapshot);let q=Ls();return{summary:{title:"Nothing changed",line:q?`${M} Restart Kute to finish.`:M,details:[],changed:!1,needsRestart:q},report:V({...D,rolledBack:M})}},Z=co(N.uncapped){let{keep:ee,failed:te}=ys(M,D,{capBefore:z,capAfter:q,trade:Z});return ee?null:te==="reference"?"Kute could not measure the game with your own settings well enough to compare (its window has to stay in front), so it put yours back.":te==="result"?"Kute could not measure the result (its window has to stay in front), so it put your settings back.":`The new settings measured worse than yours (${te==="fps"?`${Math.round(co(D))} FPS, ${Math.round(co(M))} before`:Xv[te??""]}), so Kute put yours back.`},le=[...i];if(C>1&&le.push(`CPU Throttling: ${C} \u2192 off (it slows the game down on purpose, the result is checked against how the game ran with it)`),l&&N.pipelineChanged&&!N.pipelineRefused){e.progress("Checking the new setup in the game",.5);let M=await x(z);if(this.cancelled)return null;let D={recheck:M.map(Kn)},q=bt(N.asPlayed,z)&&bt(M,z)?null:ge(N.asPlayed,M,z);if(q&&ys(N.asPlayed,M,{capBefore:z,capAfter:z,trade:Z}).failed==="result")return de(q.replace("The new settings","The setup that won the client test"),D);if(q){for(let O of Fe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&Ot(O.setting,N.pipelineBefore[O.setting]);return L>0&&Me(kt,String(L)),Ee!==y&&Ot("gameFpsLimit",y),t.carry={...N,pipelineRefused:q.replace("The new settings","The setup that won the client test"),...D,elapsedMs:performance.now()-a,resumed:!1},qe(t),document.exitPointerLock(),e.choose("Kute restarts once more","The setup from the client test ran worse in the game, so Kute goes back to yours and tests the FPS limits on it.",[]),await De(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}let ee=N.rows.find(O=>Fe.every(ve=>O.pipeline[ve.setting]===N.pipelineAfter[ve.setting])),te=ee?Zv(N.decidedBy,ye(N.rows[0].readings),ye(ee.readings)):"measured better";for(let O of Fe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&le.push(`${O.label}: ${pt(N.pipelineBefore[O.setting])} \u2192 ${pt(N.pipelineAfter[O.setting])} (${te})`)}e.progress("Finding the FPS limit that runs best",.56);let ze=co(N.uncapped),Zt=ze>=v?v:p,Eo=M=>!g||M===z||M!==0&&M<=v,qg=N.uncapped.filter(ks).length>=2,Rr=(b||qg)&&ze>=v?v:void 0,He=new Map,Qt=[],se=z,Vo="",Ie=ze,lt=ws(new Map([[0,N.uncapped]]));if(!lt){let M=N.capOrder.length>0?N.capOrder.slice(0,2):Oi({hz:p,capacity:ze,current:z}).slice(1,3),D=[...new Set([z,0,...M,...Rr?[Rr]:[],...g?[Zt]:[]])].filter(Eo);if(He=await R(D),this.cancelled)return null;lt=ws(He);let q=ia(He,z,"test match",Rr,Z);if(Qt=q.rows,!lt){se=q.winner,Vo=q.reason,Ie=co(He.get(0)??[])||ze;let ee=Fi([...He.keys()],se,Ie,p).filter(te=>Eo(te)&&te0){e.progress("Fine tuning the FPS limit",.64);let te=await R(ee);if(this.cancelled)return null;let O=ia(new Map([[se,He.get(se)??[]],...te]),se,"test match",void 0,Z);Qt.push(...O.rows.filter(ve=>ve.cap!==se));for(let[ve,Ye]of te)He.set(ve,Ye);O.winner!==se&&(se=O.winner,Vo=O.reason),lt=ws(He)}}}let Yo;if(lt){e.progress("Finding the FPS limit this PC holds steadily",.62);let M=new Map;await $(p);for(let te of Pn(p)){if(this.cancelled)return null;let O=await x(te,Ip);if(M.set(te,O),!ao(O,te))break}if(this.cancelled)return null;let D=Bi(p,M),q=(Un([...N.uncapped,...He.get(0)??[]].filter(vs).map(te=>te.stallMs))??0)/1e3;Yo={stoodStill:q,steadyUpTo:D.steadyUpTo,limit:D.cap};for(let te of Qt)te.outcome==="better"&&(te.outcome="not used");for(let[te,O]of M){let ve=ao(O,te)?"steady":"not steady";Qt.push({cap:te,where:"test match",summary:ye(O.map(zo)),frameMs:Un(O.map(Ye=>Ye.p50)),netMs:null,outcome:ve}),He.set(te,O)}let ee=z>0&&ao(N.asPlayed,z);se=z,ee||(se=[...new Set([D.cap,D.steadyUpTo])].filter(O=>O!==null).find(O=>ys(N.asPlayed,M.get(O)??[],{capBefore:z,capAfter:O}).keep)??z),Vo=`without a limit this PC stood still ${Math.round(q*100)} % of the time. Up to ${D.steadyUpTo} FPS it ran steadily in the empty test match, ${se} FPS ${(D.steadyUpTo??0)>se?"leaves a step of room for a real match":"is the highest that did"}`}let Xo=Qt.find(M=>M.cap===Zt),Kg=Xo!==void 0&&(Xo.outcome==="steady"||Xo.netMs!==null&&(Xo.outcome==="better"||Xo.outcome==="not better"));g&&(se===0||se>v)&&Kg&&(se=Zt,Vo="on battery");for(let M of Qt)M.cap===se&&M.cap!==z&&M.outcome!=="not steady"&&(M.outcome="chosen"),M.readings=(He.get(M.cap)??[]).map(Kn);let dn=N.uncapped.map(M=>M.fps).filter(M=>typeof M=="number"),tu=dn.length>1?(Math.max(...dn)-Math.min(...dn))/Math.max(1,...dn):0,Pr=1,un=1,Ir=null;if(!lt){Ir=await X(0);let M=(l?He.get(0)?.[0]:N.uncapped[0])?.fps??Ie;Pr=(Ir.fps??Ie)/Math.max(1,M),un=Hi(Pr,tu)}let jg=v*un,$o=[],Nr=null,Jo=Number(r.game[lo])||1;if(lt)for(let M of wt)$o.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC does not run steadily without a limit)"});else if(IeO.inputP99!==null),D=Ir?.fps??Ie,q=async(O,ve)=>{let Ye=D;O(),await De(As);let ct=async()=>{let cu=await X(0,Dn);return cu.invalid?null:cu.fps},eo=await ct();ve(),await De(As);let Xe=await ct();if(eo===null||Xe===null)return{ratio:1,steady:!1,raw:[Ye,eo??0,Xe??0]};D=Xe;let lu=(Ye+Xe)/2;return{ratio:eo/Math.max(1,lu),steady:Math.abs(Ye-Xe)/Math.max(1,lu)<=Vv,raw:[Ye,eo,Xe]}},ee=wt.filter(O=>!O.needsReload&&(M||!O.fightOnly));for(let O of wt){let ve=r.game[O.id],Ye=String(O.cheap),ct={id:O.id,label:O.label,current:ve??"default",cheap:Ye,gain:null,steady:!0};if($o.push(ct),O.needsReload){ct.note="not tested (needs a reload)";continue}if(O.fightOnly&&!M){ct.note="not tested (only costs in a fight)";continue}if(ve===null){ct.note="value unknown";continue}if(this.cancelled)return null;e.progress(`Measuring ${O.label}`,.68+.17*ee.indexOf(O)/ee.length);let eo=Xi(ve),Xe=await q(()=>Me(O.id,eo),()=>Me(O.id,ve));ct.gain=eo===Ye?Xe.ratio:1/Math.max(.01,Xe.ratio),ct.steady=Xe.steady,ct.raw=Xe.raw}for(let O of $o){if(O.gain===null||!O.steady||O.current===O.cheap||O.gain<_n)continue;if(this.cancelled)return null;e.progress(`Confirming ${O.label}`,.86);let ve=await q(()=>Me(O.id,O.cheap),()=>Me(O.id,O.current));O.confirmGain=ve.ratio,O.gain=Math.min(O.gain,ve.ratio),O.steady=ve.steady}e.progress("Checking the graphics card",.88);let te=await q(()=>Me(lo,String(Math.max(.1,Jo*.5))),()=>Me(lo,String(Jo)));Nr=te.steady&&te.ratio>.92?te.ratio:null}else for(let M of wt)$o.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC reaches its target)"});if(this.cancelled)return null;let Mt=Bn({capacity:Ie,hz:p,headroom:un,halfResolutionGain:Nr,settings:$o});for(let M of Mt.changes)le.push(`${M.label}: ${pt(r.game[M.id])} \u2192 ${pt(M.value)} (${M.reason})`),Me(M.id,String(M.value));let Tt=null;if((Mt.changes.length>0||Mt.tuneResolution)&&(await De(As),Tt=(await X(0,Dn)).fps),Mt.tuneResolution&&Tt!==null){let M=Jo;for(let D=0;D<2&&Tt!==null&&TtEs&&!this.cancelled;D++){let q=D===0?M*Math.sqrt(Tt/Mt.needed):Es;M=Math.min(M,Math.max(Es,Math.floor(q*20)/20)),e.progress(`Trying resolution ${M}`,.9+D*.01),Me(lo,String(M)),await De(As),Tt=(await X(0,Dn)).fps}M!==Jo&&le.push(`Resolution: ${Jo} \u2192 ${M} (the graphics card is the limit)`)}if(this.cancelled)return null;e.progress("Checking the result",.94),Mt.changes.length>0&&await X(se);let ou=lt?await Y():[];lt&&await $(se);let su=await x(se,lt?Ip:sa);if(this.cancelled)return null;let _r={capacity:Ie,noise:tu,drift:Pr,headroom:un,afterCap:se,after:ye(su),caps:[...N.benchCaps,...Qt],halfResolutionGain:Nr,settings:$o,plan:Mt,pushed:Yo,...ou.length>0?{trace:ou}:{}},Br=se!==z,Ug=!Br&&L>0&&(y===0||LFPS Limit: ${Dt(z)} \u2192 ${Dt(se)} (${Vo})`):Ug&&le.push(`FPS Limit: ${Dt(se)}, now held by Kute instead of the game's frame cap (the game's cap keeps the processor busy while it waits)`);let pn=le.length>0,nu=le.length>i.length;if(nu){let M=(He.get(z)??[]).filter(ee=>!ee.invalid),D=l||L>0||C>1,q=ge(!D&&M.length>=2?M:N.asPlayed,su,se);if(q)return de(q,_r)}else L>0&&Me(kt,String(L)),Ee!==y&&Ot("gameFpsLimit",y);zn();let hn=`${v} FPS (${3}x your ${p} Hz screen)`,ru=`${le.length} setting${le.length===1?"":"s"} changed.`,ft=`Your PC ran ${Math.round(Ie)} FPS in the test match, above the ${hn} Kute aims for. Nothing needed changing.`;pn&&Tt!==null?ft=`${ru} Test match without a limit: ${Math.round(Ie)} FPS before, ${Math.round(Tt)} after. Kute aims for at least ${hn} with no stutter.`:pn?ft=`${ru} Without a limit your PC runs ${Math.round(Ie)} FPS in the test match, Kute aims for at least ${hn} with no stutter.`:Iese?" with room to spare":""}.`;else if(se>0&&ao(N.asPlayed,se)){let ee=D!==null&&DsetTimeout(()=>this.offer(),1500),{once:!0});return}sessionStorage.setItem(Rp,"1");let e=new yt;e.choose("Set Kute up for this PC?","Kute can set the game up for what this PC can do: it measures in a private test match, and everything it changes can be undone. You have to be logged in for that.",[{label:"Yes",onPick:()=>{this.setUp(e)}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"No",cancel:!0,onPick:()=>this.decline(e)}],Fp())}decline(e){e.close(),this.remember("declined"),u.showNotification("Got it. You can always start the setup from Settings, Client",!1,5)}async signedIn(){if(Rs())return!0;if(!localStorage.getItem("krunker_token"))return!1;let e=Date.now()+Uv;for(;Date.now(){e.close(),window.loginOrRegister(),this.waitForLogin()}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}])}waitForLogin(){let e=Date.now()+jv,t=setInterval(()=>{if(Rs()){clearInterval(t),this.askSettings();return}Date.now()>e&&clearInterval(t)},1e3)}askSettings(e=new yt){this.remember("settings"),e.choose("Where should your game settings come from?","Kute measures this PC either way and sets what it finds. This is only about the settings it starts from.",[{label:"Import a settings.txt",onPick:()=>{e.close(),this.remember("import"),window.importSettingsPopup()}},{label:"Kute's preset",onPick:()=>{e.close(),this.applyPreset()}},{label:"Keep my settings",onPick:()=>{e.close(),this.start()}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}],Fp())}afterImport(){if(Ht()?.wizard!=="import")return;let e=this.snapshot();this.remember("run",e,[]),setTimeout(()=>{Ht()?.wizard==="run"&&this.start({snapshot:e})},1500)}applyPreset(){let e=this.snapshot(),t=[];for(let[o,n]of Object.entries(Wi))String(e.game[o])!==String(n)&&(Me(o,n),t.push(`${Yi(o)}: ${pt(e.game[o])} \u2192 ${pt(n)} (Kute's preset)`));this.remember("run",e,t),u.showNotification("Applying Kute's preset, the game reloads once",!1,4),setTimeout(()=>location.reload(),1200)}resume(){let e=Ht();if(e?.status==="running"){if(e.carry&&!e.carry.resumed){e.carry.resumed=!0,qe(e),setTimeout(async()=>{if(await this.signedIn()){this.start({resume:e});return}this.restore(e.snapshot),e.previous?qe(e.previous):localStorage.removeItem(jn),u.showNotification("Auto-detect could not go on (not logged in). Your settings are back, restart Kute to finish",!1,8)},oa);return}this.restore(e.snapshot),e.previous?qe(e.previous):localStorage.removeItem(jn);return}let t=sessionStorage.getItem(na);if(t&&(sessionStorage.removeItem(na),setTimeout(()=>u.showNotification(t,!1,12),oa)),e?.showSummary&&e.summary){e.showSummary=!1,qe(e),new yt().result(e.summary,{onUndo:()=>this.undo(),report:Dp(e)});return}if(e?.wizard==="run"){setTimeout(async()=>{await this.signedIn()&&this.start({snapshot:e.snapshot,details:e.wizardDetails??[]})},oa);return}if(e?.wizard==="login"||e?.wizard==="settings"||e?.wizard==="import"){setTimeout(()=>this.setUp(),Pp);return}e&&e.wizard!=="later"||setTimeout(()=>this.offer(),Pp)}},Kp=new aa;u.autoDetect=Kp;Kp.resume()});var Up={};A(Up,{clanTag:()=>Ps,default:()=>ht});function Ps(s){for(let e of s.children){if(e.tagName!=="SPAN")continue;let t=n0.exec(e.textContent??"");if(t)return{span:e,tag:t[1]}}return null}function a0(s){let e="";for(let t of s.childNodes)t.nodeType===Node.TEXT_NODE&&(e+=t.textContent??"");return e.trim()}var n0,jp,r0,i0,da,ht,Gn=w(()=>{"use strict";n0=/^\s*\[(.+)\]\s*$/;jp=[{list:"leaderContainer",kind:"leader",root:"leaderboardHolder"},{list:"ingameTable",kind:"ingame",root:"centerLeaderDisplay"},{list:"endTable",kind:"end",root:"endUI"},{list:"playerListH",kind:"alt",root:"menuWindow"}],r0=1e3,i0='.pListName, [class^="newLeaderName"], [class^="leaderName"], .endTableN';da=class{constructor(){this.decorators=new Map,this.watched=[],this.timer=0}add(e,t){this.decorators.set(e,t),this.watched.length===0&&this.observe(),this.refresh()}remove(e){if(this.decorators.delete(e),!(this.decorators.size>0)){for(let{observer:t}of this.watched)t.disconnect();this.watched=[],clearInterval(this.timer),this.timer=0}}observe(){for(let{root:e,list:t,kind:o}of jp){let n=document.getElementById(e);n&&this.watch(n,t,o)}this.timer=setInterval(()=>this.discover(),r0)}watch(e,t,o){let n={observer:new MutationObserver(()=>this.walk(n)),target:e,list:t,kind:o};n.observer.observe(e,{childList:!0,subtree:!0}),this.watched.push(n),this.walk(n)}discover(){this.watched=this.watched.filter(e=>e.target.isConnected?!0:(e.observer.disconnect(),!1));for(let{list:e,kind:t}of jp){let o=document.getElementById(e);o&&!this.watched.some(n=>n.target.contains(o))&&this.watch(o,e,t)}}refresh(){for(let e of this.watched)this.walk(e)}walk(e){let t=document.querySelectorAll(`#${e.list}`);if(t.length>0){for(let o of t)for(let n of o.querySelectorAll(i0)){let r={element:n,name:a0(n),kind:e.kind};for(let i of this.decorators.keys())i(r)}for(let o of this.decorators.values())o?.(e.kind)}e.observer.takeRecords()}},ht=new da});var Wp={};A(Wp,{default:()=>et,playerHash:()=>Wn});function p0(){if(document.getElementById("signedInHeaderBar")===null)return"";let s=window.getGameActivity?.()?.id;return typeof s=="string"?s:""}function h0(){let s=window.getGameActivity?.()?.user;if(typeof s!="string")return"";if(localStorage.getItem("kro_setngss_premiumBadge")==="false"){let e=localStorage.getItem("krunker_username");if(e)return e}return s}async function Wn(s,e){let t=new TextEncoder().encode(s+` +`+e),o=new Uint8Array(await crypto.subtle.digest("SHA-256",t));return Array.from(o.subarray(0,16),n=>n.toString(16).padStart(2,"0")).join("")}function m0(s,e,t){return new Promise(o=>{let n=0,r=i=>{let a=i?.data?.devProof;a?.nonce===s&&(clearTimeout(n),window.chrome.webview.removeEventListener("message",r),o(typeof a.user=="string"&&typeof a.proof=="string"?{user:a.user,proof:a.proof}:null))};n=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),o(null)},u0),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(`dev-proof, ${s}, ${e}, ${t}`)})}var l0,c0,d0,u0,ua,Gp,et,pa=w(()=>{"use strict";F();Nt();l0=[2,4,8,16,30],c0=2e3,d0=3e4,u0=1e3;ua=class{constructor(){this.game="",this.roster=new Set,this.devs=new Map,this.nonce="",this.listeners=new Set,this.socket=null,this.failures=0,this.timer=0,this.joined="",he.available().then(e=>{e&&this.open()}),he.listeners.add(e=>{if(!e){this.socket?.close();return}this.failures=0,he.available().then(t=>{t&&!this.socket&&this.open()})})}open(){if(he.down||he.offline())return;let e=new WebSocket(he.base.replace(/^http/,"ws")+"/ws");this.socket=e,e.addEventListener("open",()=>{setTimeout(()=>{this.socket===e&&(this.failures=0)},d0),e.send(JSON.stringify(u.settings.data.counted===!0?{t:"hi"}:{t:"hi",first:!0})),this.sync(),this.timer=setInterval(()=>this.sync(),c0)}),e.addEventListener("message",t=>this.receive(t.data)),e.addEventListener("close",()=>{clearInterval(this.timer),this.socket=null,this.joined="",this.nonce="",this.setRoster("",[]);let t=l0[this.failures++];t!==void 0&&setTimeout(()=>this.open(),t*1e3)})}async sync(){let e=p0(),t=e?h0():"",o=e&&t?e+` +`+t:"";if(o===this.joined)return;if(this.joined=o,!o){this.send({t:"leave"}),this.setRoster("",[]);return}let n=await Wn(e,t);if(this.joined!==o)return;let r=u.dev===!0&&this.nonce?await m0(this.nonce,e,n):null;this.joined===o&&this.send(r?{t:"join",game:e,hash:n,dev:r}:{t:"join",game:e,hash:n})}send(e){this.socket?.readyState===WebSocket.OPEN&&this.socket.send(JSON.stringify(e))}receive(e){let t;try{t=JSON.parse(String(e))}catch{return}t?.t==="hello"&&typeof t.nonce=="string"?this.nonce=t.nonce:t?.t==="roster"&&typeof t.game=="string"&&Array.isArray(t.players)?this.joined.startsWith(t.game+` +`)&&this.setRoster(t.game,t.players):t?.t==="+"&&typeof t.h=="string"?(this.remember(t.h,t.d===1?t.c:void 0),this.changed()):t?.t==="-"&&typeof t.h=="string"?(this.roster.delete(t.h),this.devs.delete(t.h),this.changed()):t?.t==="counted"&&(u.settings.data.counted=!0,window.chrome.webview.postMessage("set-config, counted, true"))}remember(e,t){this.roster.add(e),typeof t=="string"&&t!==""?this.devs.set(e,t):this.devs.delete(e)}setRoster(e,t){if(!(e===this.game&&t.length===0&&this.roster.size===0)){this.game=e,this.roster=new Set,this.devs=new Map;for(let o of t)Array.isArray(o)&&typeof o[0]=="string"&&this.remember(o[0],o[1]===1?o[2]?.c:void 0);this.changed()}}changed(){for(let e of this.listeners)e()}},Gp=new ua;u.presence=Gp;et=Gp});var Yp,Vp=w(()=>{Yp="data:image/webp;base64,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"});var Jp,Xp=w(()=>{Jp="data:image/webp;base64,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"});var ma={};A(ma,{default:()=>y0});function Zp(s){let e=s?`[data-kute-badge="${s}"]`:"[data-kute-badge]";for(let o of document.querySelectorAll(e))o.remove();let t=s?`[data-kute-badged="${s}"]`:"[data-kute-badged]";for(let o of document.querySelectorAll(t))o.removeAttribute("data-kute-badged")}function Qp(s){(s.querySelector("[data-kute-badge]")??s.parentElement?.querySelector("[data-kute-badge]"))?.remove(),s.removeAttribute("data-kute-badged")}var b0,v0,w0,k0,ha,eh,y0,fa=w(()=>{"use strict";F();Gn();pa();Vp();Xp();b0="2px",v0={leader:"margin-top:5px;vertical-align:middle;height:21px;margin-left:2px",ingame:"margin-top:3px;vertical-align:middle;height:21px;margin-left:2px",end:"margin-top:-12px;vertical-align:middle;width:26px;margin-left:2px",alt:"vertical-align:middle;height:21px;margin-left:6px;position:relative;top:-0.35em"},w0={kute:Yp,dev:Jp},k0={kute:"Kute",dev:"Kute Developer"};ha=class{constructor(){this.game="",this.hashes=new Map,this.pending=new Set,this.found=!1,this.candidates=[],this.enabled=u.settings.data.cuteBadge!==!1,this.decorator=e=>this.decorate(e),this.finisher=()=>this.finish(),u.settings.toggleCuteBadge=e=>this.toggle(e),et.listeners.add(()=>this.rosterChanged())}toggle(e){this.enabled=e,e||Zp("kute"),ht.refresh()}rosterChanged(){if(et.game!==this.game&&(this.game=et.game,this.hashes.clear(),this.pending.clear()),Zp(),et.roster.size===0){ht.remove(this.decorator);return}ht.add(this.decorator,this.finisher)}decorate(e){if(et.roster.size===0||e.name==="")return;let t=this.hashes.get(e.name);if(t===void 0){this.learn(e.name);return}if(et.devs.has(t)){this.candidates.push({row:e,hash:t,tag:Ps(e.element)?.tag});return}this.enabled&&!e.element.hasAttribute("data-kute-badged")&&et.roster.has(t)&&this.insert(e,"kute")}finish(){if(this.candidates.length===0)return;let e=new Map;for(let t of this.candidates){let o=e.get(t.hash);o?o.push(t):e.set(t.hash,[t])}for(let[t,o]of e){let n=o.filter(i=>i.tag===et.devs.get(t)),r=null;n.length===1?r=n[0].row:n.length===0&&o.length===1&&(r=o[0].row);for(let i of o){let a=i.row.element.getAttribute("data-kute-badged");if(i.row!==r){a&&Qp(i.row.element);continue}a!=="dev"&&(a&&Qp(i.row.element),this.insert(i.row,"dev"))}}this.candidates.length=0}async learn(e){if(this.pending.has(e))return;this.pending.add(e);let{game:t}=this,o=await Wn(t,e);t===this.game&&(this.pending.delete(e),this.hashes.set(e,o),et.roster.has(o)&&(this.found=!0),!(this.pending.size>0||!this.found)&&(this.found=!1,ht.refresh()))}insert(e,t){let{element:o}=e,n=o.parentElement;if(!n)return;let r=document.createElement("img");r.src=w0[t],r.setAttribute("data-kute-badge",t),r.alt="",r.title=k0[t],r.style.cssText=v0[e.kind],e.kind==="alt"?o.append(r):e.kind==="end"?n.insertBefore(r,o.nextSibling):n.insertBefore(r,n.firstElementChild?.nextSibling??o),r.nextElementSibling?.tagName==="I"&&(r.style.marginRight=b0),o.setAttribute("data-kute-badged",t)}},eh=new ha;u.badges=eh;y0=eh});var th=we((DS,x0)=>{x0.exports=`#chatList>*{display:block!important}#chatInputHolder{opacity:1;transition:opacity .2s ease-in-out,transform .2s ease-in-out}#chatList::-webkit-scrollbar{display:none}#chatList{transition:margin-bottom .2s ease-in-out}#uiBase.onGame #chatList{margin-bottom:-50px}#uiBase.onMenu #chatInputHolder{transition:none}#uiBase.onGame #chatInputHolder{opacity:0;transform:translateY(50px)}#uiBase.onGame #chatHolder:focus-within #chatInputHolder{opacity:1;transform:translateY(0)}#uiBase.onGame #chatHolder:focus-within #chatList{margin-bottom:0}#uiBase.onSpect #chatInputHolder{opacity:1;transform:translateY(0)}#uiBase.onSpect #chatList{margin-bottom:0} +`});var ba={};A(ba,{default:()=>S0});var ga,S0,va=w(()=>{"use strict";F();Ae();ga=class{constructor(){this.teamModes=new Set(["Team Deathmatch","Hardpoint","Capture the Flag","Hide & Seek","Infected","Last Man Standing","Simon Says","Prop Hunt","Boss Hunt","Deposit","Stalker","Kill Confirmed","Defuse","Traitor","Blitz","Domination","Squad Deathmatch","Team Defender"]),this.styles=document.createElement("style"),Promise.resolve().then(()=>ue(th(),1)).then(e=>{this.styles.innerHTML=e.default}),u.settings.toggleBetterChat=e=>this.toggle(e),this.chatHolder=U("#chatHolder"),this.chatList=U("#chatList"),this.chatInput=ke("#chatInput"),this.chatSwitch=U("#chatSwitch"),this.channelT=document.createElement("div"),this.channelA=document.createElement("div"),this.channelT.style.cssText="float: left; display: inline-block; margin-right: 5px; color: #9eeb56;",this.channelT.textContent="[T]",this.channelA.style.cssText="float: left; display: inline-block; margin-right: 5px; color: #eb5656;",this.channelA.textContent="[M]",this.observer=new MutationObserver(e=>this.parseMessages(e)),this.toggle(!0)}switchChat=e=>{e.key==="Tab"&&(window.switchChat(this.chatSwitch),e.preventDefault())};parseMessages(e){let t=!1;for(let o of e)for(let n of o.addedNodes){if(!(n instanceof HTMLElement))continue;let r=n.querySelector(".chatItem");if(!r)continue;let i=r.querySelector(".chatMsg");if(!i)continue;if(i.textContent.includes("Text & Voice Chat")){n.remove();continue}let{tab:a}=n.dataset;!a||!r.textContent.includes("\u200E:")||!this.teamModes.has(window.getGameActivity().mode)||(a==="0"?i.insertBefore(this.channelA.cloneNode(!0),i.firstChild):a==="1"&&i.insertBefore(this.channelT.cloneNode(!0),i.firstChild),t=!0)}t&&(this.chatList.scrollTop=1e9)}toggle(e){e?(document.head.append(this.styles),this.chatInput.addEventListener("keydown",this.switchChat,{capture:!0}),this.observer.observe(this.chatList,{childList:!0})):(this.styles.remove(),this.chatInput.removeEventListener("keydown",this.switchChat,{capture:!0}),this.observer.disconnect())}},S0=new ga});var nh={};function oh(){return Array.from(document.querySelectorAll(".bpClaimB")).filter(s=>s.offsetParent!==null&&s.textContent.trim()==="Claim")}function sh(){let s=oh().length>0;s?qt.classList.remove("disabled"):qt.classList.add("disabled"),qt.textContent=s?"Claim All":"Nothing to Claim"}async function E0(){let s=oh();if(s.length!==0){for(let e of s)e.getAttribute("onclick")?.includes("windows[5].claimItem(")&&e.click(),await new Promise(o=>setTimeout(o,200));sh()}}function $0(){let s=document.querySelector(".bpBotH");s&&(s.append(qt),sh())}var qt,C0,wa=w(()=>{"use strict";qt=document.createElement("div");qt.className="bpBtn skip";qt.id="claimAllBtn";qt.textContent="Claim All";qt.onclick=()=>{window.playSelect?.(.1),E0()};C0=window.showWindow;window.showWindow=(...s)=>(s[0]===6&&queueMicrotask(()=>$0()),C0(...s))});function Sa(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function mh(s){ho=s}function Oo(s){let e=[];return t=>{let o=Math.max(0,Math.min(3,t-1)),n=e[o];return n||(n=s(o),e[o]=n),n}}function Q(s,e=""){let t=typeof s=="string"?s:s.source,o={replace:(n,r)=>{let i=typeof r=="string"?r:r.source;return i=i.replace(Le.caret,"$1"),t=t.replace(n,i),o},getRegex:()=>new RegExp(t,e)};return o}function Ke(s,e){if(e){if(Le.escapeTest.test(s))return s.replace(Le.escapeReplace,lh)}else if(Le.escapeTestNoEncode.test(s))return s.replace(Le.escapeReplaceNoEncode,lh);return s}function ch(s){try{s=encodeURI(s).replace(Le.percentDecode,"%")}catch{return null}return s}function dh(s,e){let t=s.replace(Le.findPipe,(r,i,a)=>{let l=!1,c=i;for(;--c>=0&&a[c]==="\\";)l=!l;return l?"|":" |"}),o=t.split(Le.splitPipe),n=0;if(o[0].trim()||o.shift(),o.length>0&&!o.at(-1)?.trim()&&o.pop(),e)if(o.length>e)o.splice(e);else for(;o.length=0&&Le.blankLine.test(e[t]);)t--;return e.length-t<=2?s:e.slice(0,t+1).join(` -`)}function Vn(s){return s.toLowerCase().toUpperCase().toLowerCase()}function bw(s,e){if(s.indexOf(e[1])===-1)return-1;let t=0;for(let o=0;o0?-2:-1}function vw(s,e=0){let t=e,o="";for(let n of s)if(n===" "){let r=4-t%4;o+=" ".repeat(r),t+=r}else o+=n,t++;return o}function lh(s,e,t,o,n){let r=e.href,i=e.title||null,a=s[1].replace(n.other.outputLinkReplace,"$1"),l=s[0].charAt(0)==="!";o.state.inLink=!0;let c=o.state.linkEmitted,d=o.state.inRawBlock;o.state.linkEmitted=!1;let h=o.inlineTokens(a),p=o.state.linkEmitted;if(o.state.linkEmitted=c,o.state.inLink=!1,!l){if(p){o.state.inRawBlock=d;return}o.state.linkEmitted=!0}return{type:l?"image":"link",raw:t,href:r,title:i,text:a,tokens:h}}function ww(s,e,t){let o=s.match(t.other.indentCodeCompensation);if(o===null)return e;let n=o[1];return e.split(` +`)}function Xn(s){return s.toLowerCase().toUpperCase().toLowerCase()}function xw(s,e){if(s.indexOf(e[1])===-1)return-1;let t=0;for(let o=0;o0?-2:-1}function Sw(s,e=0){let t=e,o="";for(let n of s)if(n===" "){let r=4-t%4;o+=" ".repeat(r),t+=r}else o+=n,t++;return o}function ph(s,e,t,o,n){let r=e.href,i=e.title||null,a=s[1].replace(n.other.outputLinkReplace,"$1"),l=s[0].charAt(0)==="!";o.state.inLink=!0;let c=o.state.linkEmitted,d=o.state.inRawBlock;o.state.linkEmitted=!1;let h=o.inlineTokens(a),p=o.state.linkEmitted;if(o.state.linkEmitted=c,o.state.inLink=!1,!l){if(p){o.state.inRawBlock=d;return}o.state.linkEmitted=!0}return{type:l?"image":"link",raw:t,href:r,title:i,text:a,tokens:h}}function Ew(s,e,t){let o=s.match(t.other.indentCodeCompensation);if(o===null)return e;let n=o[1];return e.split(` `).map(r=>{let i=r.match(t.other.beginningSpace);if(i===null)return r;let[a]=i;return r.slice(Math.min(a.length,n.length))}).join(` -`)}function ch(s,e,t,o){if(!e.includes("<"))return!1;for(let n=0;ne.length-n)return!0;n+=i[0].length-1}}return!1}function ie(s,e){return lo.parse(s,e)}function yw(...s){return lo.use(...s),ie.defaults=lo.defaults,dh(ie.defaults),ie}var co,ao,x0,Le,S0,E0,$0,Is,C0,xa,uh,ph,M0,Sa,T0,Ea,A0,L0,Ns,$a,R0,hh,P0,I0,N0,Ca,th,_0,B0,z0,H0,mh,O0,xt,Ho,_s,D0,F0,fh,q0,K0,j0,gh,U0,G0,W0,V0,bh,Y0,X0,J0,Z0,Q0,ew,tw,ow,sw,nw,rw,iw,aw,lw,vh,Wn,cw,dw,uw,oh,pw,hw,sh,Ma,mw,va,fw,Gn,Rs,gw,nh,Yn,tt,Xn,Ta,ot,Ps,kw,lo,HS,OS,DS,FS,qS,KS,wh=w(()=>{co=ya();ao={exec:()=>null};x0=((s="")=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:s=>new RegExp(`^( {0,3}${s})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:zo(s=>new RegExp(`^ {0,${s}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:zo(s=>new RegExp(`^ {0,${s}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)),fencesBeginRegex:zo(s=>new RegExp(`^ {0,${s}}(?:\`\`\`|~~~)`)),headingBeginRegex:zo(s=>new RegExp(`^ {0,${s}}#`)),htmlBeginRegex:zo(s=>new RegExp(`^ {0,${s}}(?:)|<(?:script|pre|style|textarea|!--))`,"i")),blockquoteBeginRegex:zo(s=>new RegExp(`^ {0,${s}}>`))},S0=/^(?:[ \t]*(?:\n|$))+/,E0=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,$0=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Is=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,C0=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,xa=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,uh=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,ph=Q(uh).replace(/bull/g,xa).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),M0=Q(uh).replace(/bull/g,xa).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Sa=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,T0=/^[^\n]+/,Ea=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,A0=Q(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Ea).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),L0=Q(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,xa).getRegex(),Ns="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",$a=/|$))/,R0=Q("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",$a).replace("tag",Ns).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),hh=s=>Q(Sa).replace("hr",Is).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",s).replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Ns).getRegex(),P0=hh(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),I0=hh(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),N0=Q(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",I0).getRegex(),Ca={blockquote:N0,code:E0,def:A0,fences:$0,heading:C0,hr:Is,html:R0,lheading:ph,list:L0,newline:S0,paragraph:P0,table:ao,text:T0},th=Q("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Is).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Ns).getRegex(),_0={...Ca,lheading:M0,table:th,paragraph:Q(Sa).replace("hr",Is).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",th).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Ns).getRegex()},B0={...Ca,html:Q(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",$a).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:ao,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Q(Sa).replace("hr",Is).replace("heading",` *#{1,6} *[^ -]`).replace("lheading",ph).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},z0=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,H0=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,mh=/^( {2,}|\\)\n(?!\s*$)[ \t]*/,O0=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",x0?"(?`+)[^`]+\k(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),gh=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,U0=Q(gh,"u").replace(/punct/g,xt).getRegex(),G0=Q(gh,"u").replace(/punct/g,fh).getRegex(),W0=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,V0=Q(W0,"u").replace(/openQuote/g,F0).replace(/punct/g,xt).getRegex(),bh="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Y0=Q(bh,"gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),X0=Q(bh,"gu").replace(/notPunctSpace/g,K0).replace(/punctSpace/g,q0).replace(/punct/g,fh).getRegex(),J0="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",Z0=Q(J0,"gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),Q0=Q("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),ew="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",tw=Q(ew,"gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),ow=Q(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,xt).getRegex(),sw="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",nw=Q(sw,"gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),rw=Q(/\\(punct)/,"gu").replace(/punct/g,xt).getRegex(),iw=Q(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),aw=Q($a).replace("(?:-->|$)","-->").getRegex(),lw=Q("^comment|^|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",aw).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),vh=/\[(?:\\[\s\S]|[^\[\]\\])*\]/,Wn=Q(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets",vh).getRegex(),cw=Q(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",Wn).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),dw=Q(/^!?\[(label)\]\[(ref)\]/).replace("label",Wn).replace("ref",Ea).getRegex(),uw=Q(/^!?\[(ref)\](?:\[\])?/).replace("ref",Ea).getRegex(),oh=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/,pw=Q(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets",vh).getRegex(),hw=Q("reflink|nolink(?!\\()","g").replace("reflink",Q(/^!?\[(label)\]\[(ref)\]/).replace("label",pw).replace("ref",oh).getRegex()).replace("nolink",Q(/^!?\[(ref)\](?:\[\])?/).replace("ref",oh).getRegex()).getRegex(),sh=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Ma={_backpedal:ao,anyPunctuation:rw,autolink:iw,blockSkip:j0,br:mh,code:H0,del:ao,delLDelim:ao,delRDelim:ao,emStrongLDelim:U0,emStrongRDelimAst:Y0,emStrongRDelimUnd:Q0,escape:z0,link:cw,nolink:uw,punctuation:D0,reflink:dw,reflinkSearch:hw,tag:lw,text:O0,url:ao},mw={...Ma,emStrongLDelim:V0,emStrongRDelimAst:Z0,emStrongRDelimUnd:tw,link:Q(/^!?\[(label)\]\((.*?)\)/).replace("label",Wn).getRegex(),reflink:Q(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Wn).getRegex()},va={...Ma,emStrongRDelimAst:X0,emStrongLDelim:G0,delLDelim:ow,delRDelim:nw,url:Q(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",sh).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:Q(/^(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},nh=s=>gw[s];Yn=class{options;rules;lexer;constructor(s){this.options=s||co}space(s){let e=this.rules.block.newline.exec(s);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(s){let e=this.rules.block.code.exec(s);if(e){let t=this.options.pedantic?e[0]:ah(e[0]),o=t.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t,codeBlockStyle:"indented",text:o}}}fences(s){let e=this.rules.block.fences.exec(s);if(e){let t=e[0],o=ww(t,e[3]||"",this.rules);return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:o}}}heading(s){let e=this.rules.block.heading.exec(s);if(e){let t=e[2].trim();if(this.rules.other.endingHash.test(t)){let o=qt(t,"#");(this.options.pedantic||!o||this.rules.other.endingSpaceTabChar.test(o))&&(t=o.trim())}return{type:"heading",raw:qt(e[0],` -`),depth:e[1].length,text:t,tokens:this.lexer.inline(t)}}}hr(s){let e=this.rules.block.hr.exec(s);if(e)return{type:"hr",raw:qt(e[0],` -`)}}blockquote(s){let e=this.rules.block.blockquote.exec(s);if(e){let t=qt(e[0],` +`)}function hh(s,e,t,o){if(!e.includes("<"))return!1;for(let n=0;ne.length-n)return!0;n+=i[0].length-1}}return!1}function ie(s,e){return po.parse(s,e)}function Cw(...s){return po.use(...s),ie.defaults=po.defaults,mh(ie.defaults),ie}var ho,uo,M0,Le,T0,A0,L0,_s,R0,Ea,fh,gh,P0,$a,I0,Ca,N0,_0,Bs,Ma,B0,bh,z0,H0,O0,Ta,rh,F0,D0,q0,K0,vh,j0,St,Fo,zs,U0,G0,wh,W0,V0,Y0,kh,X0,J0,Z0,Q0,yh,ew,tw,ow,sw,nw,rw,iw,aw,lw,cw,dw,uw,pw,hw,xh,Yn,mw,fw,gw,ih,bw,vw,ah,Aa,ww,ka,kw,Vn,Is,yw,lh,Jn,tt,Zn,La,ot,Ns,$w,po,jS,US,GS,WS,VS,YS,Sh=w(()=>{ho=Sa();uo={exec:()=>null};M0=((s="")=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:s=>new RegExp(`^( {0,3}${s})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:Oo(s=>new RegExp(`^ {0,${s}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:Oo(s=>new RegExp(`^ {0,${s}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)),fencesBeginRegex:Oo(s=>new RegExp(`^ {0,${s}}(?:\`\`\`|~~~)`)),headingBeginRegex:Oo(s=>new RegExp(`^ {0,${s}}#`)),htmlBeginRegex:Oo(s=>new RegExp(`^ {0,${s}}(?:)|<(?:script|pre|style|textarea|!--))`,"i")),blockquoteBeginRegex:Oo(s=>new RegExp(`^ {0,${s}}>`))},T0=/^(?:[ \t]*(?:\n|$))+/,A0=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,L0=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,_s=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,R0=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Ea=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,fh=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,gh=Q(fh).replace(/bull/g,Ea).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),P0=Q(fh).replace(/bull/g,Ea).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),$a=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,I0=/^[^\n]+/,Ca=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,N0=Q(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Ca).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),_0=Q(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,Ea).getRegex(),Bs="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Ma=/|$))/,B0=Q("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Ma).replace("tag",Bs).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),bh=s=>Q($a).replace("hr",_s).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",s).replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Bs).getRegex(),z0=bh(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),H0=bh(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),O0=Q(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",H0).getRegex(),Ta={blockquote:O0,code:A0,def:N0,fences:L0,heading:R0,hr:_s,html:B0,lheading:gh,list:_0,newline:T0,paragraph:z0,table:uo,text:I0},rh=Q("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",_s).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Bs).getRegex(),F0={...Ta,lheading:P0,table:rh,paragraph:Q($a).replace("hr",_s).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",rh).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Bs).getRegex()},D0={...Ta,html:Q(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Ma).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:uo,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Q($a).replace("hr",_s).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",gh).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},q0=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,K0=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,vh=/^( {2,}|\\)\n(?!\s*$)[ \t]*/,j0=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",M0?"(?`+)[^`]+\k(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),kh=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,X0=Q(kh,"u").replace(/punct/g,St).getRegex(),J0=Q(kh,"u").replace(/punct/g,wh).getRegex(),Z0=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,Q0=Q(Z0,"u").replace(/openQuote/g,G0).replace(/punct/g,St).getRegex(),yh="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",ew=Q(yh,"gu").replace(/notPunctSpace/g,zs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),tw=Q(yh,"gu").replace(/notPunctSpace/g,V0).replace(/punctSpace/g,W0).replace(/punct/g,wh).getRegex(),ow="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",sw=Q(ow,"gu").replace(/notPunctSpace/g,zs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),nw=Q("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,zs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),rw="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",iw=Q(rw,"gu").replace(/notPunctSpace/g,zs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),aw=Q(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,St).getRegex(),lw="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",cw=Q(lw,"gu").replace(/notPunctSpace/g,zs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),dw=Q(/\\(punct)/,"gu").replace(/punct/g,St).getRegex(),uw=Q(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),pw=Q(Ma).replace("(?:-->|$)","-->").getRegex(),hw=Q("^comment|^|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",pw).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),xh=/\[(?:\\[\s\S]|[^\[\]\\])*\]/,Yn=Q(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets",xh).getRegex(),mw=Q(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",Yn).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),fw=Q(/^!?\[(label)\]\[(ref)\]/).replace("label",Yn).replace("ref",Ca).getRegex(),gw=Q(/^!?\[(ref)\](?:\[\])?/).replace("ref",Ca).getRegex(),ih=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/,bw=Q(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets",xh).getRegex(),vw=Q("reflink|nolink(?!\\()","g").replace("reflink",Q(/^!?\[(label)\]\[(ref)\]/).replace("label",bw).replace("ref",ih).getRegex()).replace("nolink",Q(/^!?\[(ref)\](?:\[\])?/).replace("ref",ih).getRegex()).getRegex(),ah=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Aa={_backpedal:uo,anyPunctuation:dw,autolink:uw,blockSkip:Y0,br:vh,code:K0,del:uo,delLDelim:uo,delRDelim:uo,emStrongLDelim:X0,emStrongRDelimAst:ew,emStrongRDelimUnd:nw,escape:q0,link:mw,nolink:gw,punctuation:U0,reflink:fw,reflinkSearch:vw,tag:hw,text:j0,url:uo},ww={...Aa,emStrongLDelim:Q0,emStrongRDelimAst:sw,emStrongRDelimUnd:iw,link:Q(/^!?\[(label)\]\((.*?)\)/).replace("label",Yn).getRegex(),reflink:Q(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Yn).getRegex()},ka={...Aa,emStrongRDelimAst:tw,emStrongLDelim:J0,delLDelim:aw,delRDelim:cw,url:Q(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",ah).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:Q(/^(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},lh=s=>yw[s];Jn=class{options;rules;lexer;constructor(s){this.options=s||ho}space(s){let e=this.rules.block.newline.exec(s);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(s){let e=this.rules.block.code.exec(s);if(e){let t=this.options.pedantic?e[0]:uh(e[0]),o=t.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t,codeBlockStyle:"indented",text:o}}}fences(s){let e=this.rules.block.fences.exec(s);if(e){let t=e[0],o=Ew(t,e[3]||"",this.rules);return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:o}}}heading(s){let e=this.rules.block.heading.exec(s);if(e){let t=e[2].trim();if(this.rules.other.endingHash.test(t)){let o=Kt(t,"#");(this.options.pedantic||!o||this.rules.other.endingSpaceTabChar.test(o))&&(t=o.trim())}return{type:"heading",raw:Kt(e[0],` +`),depth:e[1].length,text:t,tokens:this.lexer.inline(t)}}}hr(s){let e=this.rules.block.hr.exec(s);if(e)return{type:"hr",raw:Kt(e[0],` +`)}}blockquote(s){let e=this.rules.block.blockquote.exec(s);if(e){let t=Kt(e[0],` `).split(` `),o="",n="",r=[];for(;t.length>0;){let i=!1,a=[],l;for(l=0;l1,n={type:"list",raw:"",ordered:o,start:o?+t.slice(0,-1):"",loose:!1,items:[]};t=o?`\\d{1,9}\\${t.slice(-1)}`:`\\${t}`,this.options.pedantic&&(t=o?t:"[*+-]");let r=this.rules.other.listItemRegex(t),i=!1;for(;s;){let l=!1,c="",d="";if(!(e=r.exec(s))||this.rules.block.hr.test(s))break;c=e[0],s=s.substring(c.length);let h=vw(e[2].split(` +`);continue}}return{type:"blockquote",raw:o,tokens:r,text:n}}}list(s){let e=this.rules.block.list.exec(s);if(e){let t=e[1].trim(),o=t.length>1,n={type:"list",raw:"",ordered:o,start:o?+t.slice(0,-1):"",loose:!1,items:[]};t=o?`\\d{1,9}\\${t.slice(-1)}`:`\\${t}`,this.options.pedantic&&(t=o?t:"[*+-]");let r=this.rules.other.listItemRegex(t),i=!1;for(;s;){let l=!1,c="",d="";if(!(e=r.exec(s))||this.rules.block.hr.test(s))break;c=e[0],s=s.substring(c.length);let h=Sw(e[2].split(` `,1)[0],e[1].length),p=s.split(` `,1)[0],m=!h.trim(),f=0;if(this.options.pedantic?(f=2,d=h.trimStart()):m?f=e[1].length+1:(f=h.search(this.rules.other.nonSpaceChar),f=f>4?1:f,d=h.slice(f),f+=e[1].length),m&&this.rules.other.blankLine.test(p)&&(c+=p+` -`,s=s.substring(p.length+1),l=!0),!l){let g=this.rules.other.nextBulletRegex(f),b=this.rules.other.hrRegex(f),v=this.rules.other.fencesBeginRegex(f),k=this.rules.other.headingBeginRegex(f),E=this.rules.other.htmlBeginRegex(f),L=this.rules.other.blockquoteBeginRegex(f);for(;s;){let x=s.split(` -`,1)[0],$;if(p=x,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting," "),$=p):$=p.replace(this.rules.other.tabCharGlobal," "),v.test(p)||k.test(p)||E.test(p)||L.test(p)||g.test(p)||b.test(p))break;if($.search(this.rules.other.nonSpaceChar)>=f||!p.trim())d+=` -`+$.slice(f);else{if(m||h.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||v.test(h)||k.test(h)||b.test(h))break;d+=` -`+p}m=!p.trim(),c+=x+` -`,s=s.substring(x.length+1),h=$.slice(f)}}n.loose||(i?n.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(i=!0)),n.items.push({type:"list_item",raw:c,task:!!this.options.gfm&&this.rules.other.listIsTask.test(d),loose:!1,text:d,tokens:[]}),n.raw+=c}let a=n.items.at(-1);if(a)a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd();else return;n.raw=n.raw.trimEnd();for(let l of n.items)if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),!n.loose){let c=l.tokens.filter(h=>h.type==="space"),d=c.length>0&&c.some(h=>this.rules.other.anyLine.test(h.raw));n.loose=d}for(let l of n.items){let c=l.tokens[0];if(l.task&&(c?.type==="text"||c?.type==="paragraph")){l.text=l.text.replace(this.rules.other.listReplaceTask,""),c.raw=c.raw.replace(this.rules.other.listReplaceTask,""),c.text=c.text.replace(this.rules.other.listReplaceTask,"");for(let h=this.lexer.inlineQueue.length-1;h>=0;h--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[h].src)){this.lexer.inlineQueue[h].src=this.lexer.inlineQueue[h].src.replace(this.rules.other.listReplaceTask,"");break}let d=this.rules.other.listTaskCheckbox.exec(l.raw);if(d){let h={type:"checkbox",raw:d[0]+" ",checked:d[0]!=="[ ]"};l.checked=h.checked,n.loose?l.tokens[0]&&["paragraph","text"].includes(l.tokens[0].type)&&"tokens"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=h.raw+l.tokens[0].raw,l.tokens[0].text=h.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(h)):l.tokens.unshift({type:"paragraph",raw:h.raw,text:h.raw,tokens:[h]}):l.tokens.unshift(h)}}else l.task&&(l.task=!1)}if(n.loose)for(let l of n.items){l.loose=!0;for(let c of l.tokens)c.type==="text"&&(c.type="paragraph")}return n}}html(s){let e=this.rules.block.html.exec(s);if(e){let t=ah(e[0]);return{type:"html",block:!0,raw:t,pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:t}}}def(s){let e=this.rules.block.def.exec(s);if(e){let t=Vn(e[1]).replace(this.rules.other.multipleSpaceGlobal," "),o=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",n=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:t,raw:qt(e[0],` -`),href:o,title:n}}}table(s){let e=this.rules.block.table.exec(s);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let t=ih(e[1]),o=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),n=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(` -`):[],r={type:"table",raw:qt(e[0],` -`),header:[],align:[],rows:[]};if(t.length===o.length){for(let i of o)this.rules.other.tableAlignRight.test(i)?r.align.push("right"):this.rules.other.tableAlignCenter.test(i)?r.align.push("center"):this.rules.other.tableAlignLeft.test(i)?r.align.push("left"):r.align.push(null);for(let i=0;i({text:a,tokens:this.lexer.inline(a),header:!1,align:r.align[l]})));return r}}lheading(s){let e=this.rules.block.lheading.exec(s);if(e){let t=e[1].trim();return{type:"heading",raw:qt(e[0],` +`,s=s.substring(p.length+1),l=!0),!l){let g=this.rules.other.nextBulletRegex(f),b=this.rules.other.hrRegex(f),v=this.rules.other.fencesBeginRegex(f),k=this.rules.other.headingBeginRegex(f),E=this.rules.other.htmlBeginRegex(f),L=this.rules.other.blockquoteBeginRegex(f);for(;s;){let y=s.split(` +`,1)[0],C;if(p=y,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting," "),C=p):C=p.replace(this.rules.other.tabCharGlobal," "),v.test(p)||k.test(p)||E.test(p)||L.test(p)||g.test(p)||b.test(p))break;if(C.search(this.rules.other.nonSpaceChar)>=f||!p.trim())d+=` +`+C.slice(f);else{if(m||h.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||v.test(h)||k.test(h)||b.test(h))break;d+=` +`+p}m=!p.trim(),c+=y+` +`,s=s.substring(y.length+1),h=C.slice(f)}}n.loose||(i?n.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(i=!0)),n.items.push({type:"list_item",raw:c,task:!!this.options.gfm&&this.rules.other.listIsTask.test(d),loose:!1,text:d,tokens:[]}),n.raw+=c}let a=n.items.at(-1);if(a)a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd();else return;n.raw=n.raw.trimEnd();for(let l of n.items)if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),!n.loose){let c=l.tokens.filter(h=>h.type==="space"),d=c.length>0&&c.some(h=>this.rules.other.anyLine.test(h.raw));n.loose=d}for(let l of n.items){let c=l.tokens[0];if(l.task&&(c?.type==="text"||c?.type==="paragraph")){l.text=l.text.replace(this.rules.other.listReplaceTask,""),c.raw=c.raw.replace(this.rules.other.listReplaceTask,""),c.text=c.text.replace(this.rules.other.listReplaceTask,"");for(let h=this.lexer.inlineQueue.length-1;h>=0;h--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[h].src)){this.lexer.inlineQueue[h].src=this.lexer.inlineQueue[h].src.replace(this.rules.other.listReplaceTask,"");break}let d=this.rules.other.listTaskCheckbox.exec(l.raw);if(d){let h={type:"checkbox",raw:d[0]+" ",checked:d[0]!=="[ ]"};l.checked=h.checked,n.loose?l.tokens[0]&&["paragraph","text"].includes(l.tokens[0].type)&&"tokens"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=h.raw+l.tokens[0].raw,l.tokens[0].text=h.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(h)):l.tokens.unshift({type:"paragraph",raw:h.raw,text:h.raw,tokens:[h]}):l.tokens.unshift(h)}}else l.task&&(l.task=!1)}if(n.loose)for(let l of n.items){l.loose=!0;for(let c of l.tokens)c.type==="text"&&(c.type="paragraph")}return n}}html(s){let e=this.rules.block.html.exec(s);if(e){let t=uh(e[0]);return{type:"html",block:!0,raw:t,pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:t}}}def(s){let e=this.rules.block.def.exec(s);if(e){let t=Xn(e[1]).replace(this.rules.other.multipleSpaceGlobal," "),o=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",n=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:t,raw:Kt(e[0],` +`),href:o,title:n}}}table(s){let e=this.rules.block.table.exec(s);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let t=dh(e[1]),o=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),n=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(` +`):[],r={type:"table",raw:Kt(e[0],` +`),header:[],align:[],rows:[]};if(t.length===o.length){for(let i of o)this.rules.other.tableAlignRight.test(i)?r.align.push("right"):this.rules.other.tableAlignCenter.test(i)?r.align.push("center"):this.rules.other.tableAlignLeft.test(i)?r.align.push("left"):r.align.push(null);for(let i=0;i({text:a,tokens:this.lexer.inline(a),header:!1,align:r.align[l]})));return r}}lheading(s){let e=this.rules.block.lheading.exec(s);if(e){let t=e[1].trim();return{type:"heading",raw:Kt(e[0],` `),depth:e[2].charAt(0)==="="?1:2,text:t,tokens:this.lexer.inline(t)}}}paragraph(s){let e=this.rules.block.paragraph.exec(s);if(e){let t=e[1].charAt(e[1].length-1)===` -`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(s){let e=this.rules.block.text.exec(s);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(s){let e=this.rules.inline.escape.exec(s);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(s){let e=this.rules.inline.tag.exec(s);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(s){let e=this.rules.inline.link.exec(s);if(e){let t=e[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&ch(s,e[1],t,this.rules))return;let o=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(o)){if(!this.rules.other.endAngleBracket.test(o))return;let i=qt(o.slice(0,-1),"\\");if((o.length-i.length)%2===0)return}else{let i=bw(e[2],"()");if(i===-2)return;if(i>-1){let a=(e[0].indexOf("!")===0?5:4)+e[1].length+i;e[2]=e[2].substring(0,i),e[0]=e[0].substring(0,a).trim(),e[3]=""}}let n=e[2],r="";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(n);i&&(n=i[1],r=i[3])}else r=e[3]?e[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(o)?n=n.slice(1):n=n.slice(1,-1)),lh(e,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(s,e){let t;if((t=this.rules.inline.reflink.exec(s))||(t=this.rules.inline.nolink.exec(s))){let o=t[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&ch(s,t[1],o,this.rules))return;let n=(t[2]||t[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=e[Vn(n)];if(!r){let i=t[0].charAt(0);return{type:"text",raw:i,text:i}}return lh(t,r,t[0],this.lexer,this.rules)}}emStrong(s,e,t=""){let o=this.rules.inline.emStrongLDelim.exec(s);if(!(!o||!o[1]&&!o[2]&&!o[3]&&!o[4]||o[4]&&t.match(this.rules.other.unicodeAlphaNumeric))&&(!(o[1]||o[3])||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=0,c=o[0][0],d=t===c,h=c==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(h.lastIndex=0,e=e.slice(-1*s.length+n);(o=h.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r)continue;if(i=[...r].length,o[3]||o[4]){a+=i;continue}else if(o[5]||o[6]){if(n%3&&!((n+i)%3)){l+=i;continue}if(d)break}if(a-=i,a>0)continue;i=Math.min(i,i+a+l);let p=[...o[0]][0].length,m=s.slice(0,n+o.index+p+i);if(Math.min(n,i)%2){let g=m.slice(1,-1);return{type:"em",raw:m,text:g,tokens:this.lexer.inlineTokens(g)}}let f=m.slice(2,-2);return{type:"strong",raw:m,text:f,tokens:this.lexer.inlineTokens(f)}}}}codespan(s){let e=this.rules.inline.code.exec(s);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," "),o=this.rules.other.nonSpaceChar.test(t),n=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return o&&n&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(s){let e=this.rules.inline.br.exec(s);if(e)return{type:"br",raw:e[0]}}del(s,e,t=""){let o=this.rules.inline.delLDelim.exec(s);if(o&&(!o[1]||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=this.rules.inline.delRDelim;for(l.lastIndex=0,e=e.slice(-1*s.length+n);(o=l.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r||(i=[...r].length,i!==n))continue;if(o[3]||o[4]){a+=i;continue}if(a-=i,a>0)continue;i=Math.min(i,i+a);let c=[...o[0]][0].length,d=s.slice(0,n+o.index+c+i),h=d.slice(n,-n);return{type:"del",raw:d,text:h,tokens:this.lexer.inlineTokens(h)}}}}autolink(s){let e=this.rules.inline.autolink.exec(s);if(e){let t,o;return e[2]==="@"?(t=e[1],o="mailto:"+t):(t=e[1],o=t),{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}url(s){let e;if(e=this.rules.inline.url.exec(s)){let t,o;if(e[2]==="@")t=e[0],o="mailto:"+t;else{let n;do n=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(n!==e[0]);t=e[0],e[1]==="www."?o="http://"+e[0]:o=e[0]}return{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}inlineText(s){let e=this.rules.inline.text.exec(s);if(e){let t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:t}}}},tt=class wa{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||co,this.options.tokenizer=this.options.tokenizer||new Yn,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let t={other:Le,block:Gn.normal,inline:Rs.normal};this.options.pedantic?(t.block=Gn.pedantic,t.inline=Rs.pedantic):this.options.gfm&&(t.block=Gn.gfm,this.options.breaks?t.inline=Rs.breaks:t.inline=Rs.gfm),this.tokenizer.rules=t}static get rules(){return{block:Gn,inline:Rs}}static lex(e,t){return new wa(t).lex(e)}static lexInline(e,t){return new wa(t).inlineTokens(e)}lex(e){e=e.replace(Le.carriageReturn,` +`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(s){let e=this.rules.block.text.exec(s);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(s){let e=this.rules.inline.escape.exec(s);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(s){let e=this.rules.inline.tag.exec(s);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(s){let e=this.rules.inline.link.exec(s);if(e){let t=e[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&hh(s,e[1],t,this.rules))return;let o=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(o)){if(!this.rules.other.endAngleBracket.test(o))return;let i=Kt(o.slice(0,-1),"\\");if((o.length-i.length)%2===0)return}else{let i=xw(e[2],"()");if(i===-2)return;if(i>-1){let a=(e[0].indexOf("!")===0?5:4)+e[1].length+i;e[2]=e[2].substring(0,i),e[0]=e[0].substring(0,a).trim(),e[3]=""}}let n=e[2],r="";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(n);i&&(n=i[1],r=i[3])}else r=e[3]?e[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(o)?n=n.slice(1):n=n.slice(1,-1)),ph(e,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(s,e){let t;if((t=this.rules.inline.reflink.exec(s))||(t=this.rules.inline.nolink.exec(s))){let o=t[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&hh(s,t[1],o,this.rules))return;let n=(t[2]||t[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=e[Xn(n)];if(!r){let i=t[0].charAt(0);return{type:"text",raw:i,text:i}}return ph(t,r,t[0],this.lexer,this.rules)}}emStrong(s,e,t=""){let o=this.rules.inline.emStrongLDelim.exec(s);if(!(!o||!o[1]&&!o[2]&&!o[3]&&!o[4]||o[4]&&t.match(this.rules.other.unicodeAlphaNumeric))&&(!(o[1]||o[3])||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=0,c=o[0][0],d=t===c,h=c==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(h.lastIndex=0,e=e.slice(-1*s.length+n);(o=h.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r)continue;if(i=[...r].length,o[3]||o[4]){a+=i;continue}else if(o[5]||o[6]){if(n%3&&!((n+i)%3)){l+=i;continue}if(d)break}if(a-=i,a>0)continue;i=Math.min(i,i+a+l);let p=[...o[0]][0].length,m=s.slice(0,n+o.index+p+i);if(Math.min(n,i)%2){let g=m.slice(1,-1);return{type:"em",raw:m,text:g,tokens:this.lexer.inlineTokens(g)}}let f=m.slice(2,-2);return{type:"strong",raw:m,text:f,tokens:this.lexer.inlineTokens(f)}}}}codespan(s){let e=this.rules.inline.code.exec(s);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," "),o=this.rules.other.nonSpaceChar.test(t),n=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return o&&n&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(s){let e=this.rules.inline.br.exec(s);if(e)return{type:"br",raw:e[0]}}del(s,e,t=""){let o=this.rules.inline.delLDelim.exec(s);if(o&&(!o[1]||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=this.rules.inline.delRDelim;for(l.lastIndex=0,e=e.slice(-1*s.length+n);(o=l.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r||(i=[...r].length,i!==n))continue;if(o[3]||o[4]){a+=i;continue}if(a-=i,a>0)continue;i=Math.min(i,i+a);let c=[...o[0]][0].length,d=s.slice(0,n+o.index+c+i),h=d.slice(n,-n);return{type:"del",raw:d,text:h,tokens:this.lexer.inlineTokens(h)}}}}autolink(s){let e=this.rules.inline.autolink.exec(s);if(e){let t,o;return e[2]==="@"?(t=e[1],o="mailto:"+t):(t=e[1],o=t),{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}url(s){let e;if(e=this.rules.inline.url.exec(s)){let t,o;if(e[2]==="@")t=e[0],o="mailto:"+t;else{let n;do n=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(n!==e[0]);t=e[0],e[1]==="www."?o="http://"+e[0]:o=e[0]}return{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}inlineText(s){let e=this.rules.inline.text.exec(s);if(e){let t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:t}}}},tt=class ya{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||ho,this.options.tokenizer=this.options.tokenizer||new Jn,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let t={other:Le,block:Vn.normal,inline:Is.normal};this.options.pedantic?(t.block=Vn.pedantic,t.inline=Is.pedantic):this.options.gfm&&(t.block=Vn.gfm,this.options.breaks?t.inline=Is.breaks:t.inline=Is.gfm),this.tokenizer.rules=t}static get rules(){return{block:Vn,inline:Is}}static lex(e,t){return new ya(t).lex(e)}static lexInline(e,t){return new ya(t).inlineTokens(e)}lex(e){e=e.replace(Le.carriageReturn,` `),this.blockTokens(e,this.tokens);for(let t=0;t(r=a.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let a=t.at(-1);r.raw.length===1&&a!==void 0?a.raw+=` `:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let a=t.at(-1);a?.type==="paragraph"||a?.type==="text"?(a.raw+=(a.raw.endsWith(` `)?"":` @@ -132,9 +132,9 @@ ${f}`,n=n.substring(0,n.length-m.text.length)+b.text;break}else if(p?.type==="li `+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):t.push(r),o=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let a=t.at(-1);a?.type==="text"?(a.raw+=(a.raw.endsWith(` `)?"":` `)+r.raw,a.text+=` -`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):t.push(r);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}linkInText(e){if(!e.includes("["))return!1;let t=this.tokenizer.rules.inline.link;for(let o of e.matchAll(this.tokenizer.rules.inline.blockSkip))if(t.test(o[0])&&e.charAt(o.index-1)!=="!")return!0;for(let o of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let n=o[0],r=n.lastIndexOf("[");if(!(n.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,Vn(n.slice(r+1,-1))))&&!(r>1&&this.linkInText(n.slice(1,r-1))))return!0}return!1}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let o=e;if(this.tokens.links&&e.includes("[")){let a=this.tokenizer.rules.inline.reflinkSearch,l=c=>{let d=c.lastIndexOf("[");if(!Object.hasOwn(this.tokens.links,Vn(c.slice(d+1,-1))))return c;if(d>1&&c.charAt(0)!=="!"){let h=c.slice(1,d-1);if(this.linkInText(h))return"["+h.replace(a,l)+"]["+"a".repeat(c.length-d-2)+"]"}return"["+"a".repeat(c.length-2)+"]"};o=o.replace(a,l)}o=o.replace(this.tokenizer.rules.inline.anyPunctuation,a=>"+".repeat(a.length)),o=o.replace(this.tokenizer.rules.inline.blockSkip,(a,l,c)=>{let d=c?c.length:0;return a.slice(0,d)+"["+"a".repeat(a.length-d-2)+"]"}),o=this.options.hooks?.emStrongMask?.call({lexer:this},o)??o;let n=!1,r="",i=1/0;for(;e;){if(e.length(a=c.call({lexer:this},e,t))?(e=e.substring(a.raw.length),t.push(a),!0):!1))continue;if(a=this.tokenizer.escape(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.tag(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.link(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(a.raw.length);let c=t.at(-1);a.type==="text"&&c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):t.push(a);continue}if(a=this.tokenizer.emStrong(e,o,r)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.codespan(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.br(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.del(e,o,r)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.autolink(e)){e=e.substring(a.raw.length),t.push(a);continue}if(!this.state.inLink&&(a=this.tokenizer.url(e))){e=e.substring(a.raw.length),t.push(a);continue}let l=e;if(this.options.extensions?.startInline){let c=1/0,d=e.slice(1),h;this.options.extensions.startInline.forEach(p=>{h=p.call({lexer:this},d),typeof h=="number"&&h>=0&&(c=Math.min(c,h))}),c<1/0&&c>=0&&(l=e.substring(0,c+1))}if(a=this.tokenizer.inlineText(l)){e=e.substring(a.raw.length),a.raw.slice(-1)!=="_"&&(r=a.raw.slice(-1)),n=!0;let c=t.at(-1);c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):t.push(a);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t="Infinite loop on byte: "+e;if(this.options.silent)console.error(t);else throw new Error(t)}},Xn=class{options;parser;constructor(s){this.options=s||co}space(s){return""}code({text:s,lang:e,escaped:t}){let o=(e||"").match(Le.notSpaceStart)?.[0],n=s?s.replace(Le.endingNewline,"")+` -`:"";return o?'
              '+(t?n:qe(n,!0))+`
              -`:"
              "+(t?n:qe(n,!0))+`
              +`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):t.push(r);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}linkInText(e){if(!e.includes("["))return!1;let t=this.tokenizer.rules.inline.link;for(let o of e.matchAll(this.tokenizer.rules.inline.blockSkip))if(t.test(o[0])&&e.charAt(o.index-1)!=="!")return!0;for(let o of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let n=o[0],r=n.lastIndexOf("[");if(!(n.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,Xn(n.slice(r+1,-1))))&&!(r>1&&this.linkInText(n.slice(1,r-1))))return!0}return!1}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let o=e;if(this.tokens.links&&e.includes("[")){let a=this.tokenizer.rules.inline.reflinkSearch,l=c=>{let d=c.lastIndexOf("[");if(!Object.hasOwn(this.tokens.links,Xn(c.slice(d+1,-1))))return c;if(d>1&&c.charAt(0)!=="!"){let h=c.slice(1,d-1);if(this.linkInText(h))return"["+h.replace(a,l)+"]["+"a".repeat(c.length-d-2)+"]"}return"["+"a".repeat(c.length-2)+"]"};o=o.replace(a,l)}o=o.replace(this.tokenizer.rules.inline.anyPunctuation,a=>"+".repeat(a.length)),o=o.replace(this.tokenizer.rules.inline.blockSkip,(a,l,c)=>{let d=c?c.length:0;return a.slice(0,d)+"["+"a".repeat(a.length-d-2)+"]"}),o=this.options.hooks?.emStrongMask?.call({lexer:this},o)??o;let n=!1,r="",i=1/0;for(;e;){if(e.length(a=c.call({lexer:this},e,t))?(e=e.substring(a.raw.length),t.push(a),!0):!1))continue;if(a=this.tokenizer.escape(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.tag(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.link(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(a.raw.length);let c=t.at(-1);a.type==="text"&&c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):t.push(a);continue}if(a=this.tokenizer.emStrong(e,o,r)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.codespan(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.br(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.del(e,o,r)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.autolink(e)){e=e.substring(a.raw.length),t.push(a);continue}if(!this.state.inLink&&(a=this.tokenizer.url(e))){e=e.substring(a.raw.length),t.push(a);continue}let l=e;if(this.options.extensions?.startInline){let c=1/0,d=e.slice(1),h;this.options.extensions.startInline.forEach(p=>{h=p.call({lexer:this},d),typeof h=="number"&&h>=0&&(c=Math.min(c,h))}),c<1/0&&c>=0&&(l=e.substring(0,c+1))}if(a=this.tokenizer.inlineText(l)){e=e.substring(a.raw.length),a.raw.slice(-1)!=="_"&&(r=a.raw.slice(-1)),n=!0;let c=t.at(-1);c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):t.push(a);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t="Infinite loop on byte: "+e;if(this.options.silent)console.error(t);else throw new Error(t)}},Zn=class{options;parser;constructor(s){this.options=s||ho}space(s){return""}code({text:s,lang:e,escaped:t}){let o=(e||"").match(Le.notSpaceStart)?.[0],n=s?s.replace(Le.endingNewline,"")+` +`:"";return o?'
              '+(t?n:Ke(n,!0))+`
              +`:"
              "+(t?n:Ke(n,!0))+`
              `}blockquote({tokens:s}){return`
              ${this.parser.parse(s)}
              `}html({text:s}){return s}def(s){return""}heading({tokens:s,depth:e}){return`${this.parser.parseInline(s)} @@ -150,8 +150,8 @@ ${this.parser.parse(s)} `}tablerow({text:s}){return` ${s} `}tablecell(s){let e=this.parser.parseInline(s.tokens),t=s.header?"th":"td";return(s.align?`<${t} align="${s.align}">`:`<${t}>`)+e+` -`}strong({tokens:s}){return`${this.parser.parseInline(s)}`}em({tokens:s}){return`${this.parser.parseInline(s)}`}codespan({text:s}){return`${qe(s,!0)}`}br(s){return"
              "}del({tokens:s}){return`${this.parser.parseInline(s)}`}link({href:s,title:e,text:t,tokens:o,autolink:n}){let r=n?qe(t,!0):this.parser.parseInline(o),i=rh(s);if(i===null)return r;s=qe(i,n);let a='
              ",a}image({href:s,title:e,text:t,tokens:o}){o&&(t=this.parser.parseInline(o,this.parser.textRenderer));let n=rh(s);if(n===null)return qe(t);s=n;let r=`${qe(t)}{let i=n[r].flat(1/0);t=t.concat(this.walkTokens(i,e))}):n.tokens&&(t=t.concat(this.walkTokens(n.tokens,e)))}}return t}use(...s){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return s.forEach(t=>{let o={...t};if(o.async=this.defaults.async||o.async||!1,t.extensions&&(t.extensions.forEach(n=>{if(!n.name)throw new Error("extension name required");if("renderer"in n){let r=e.renderers[n.name];r?e.renderers[n.name]=function(...i){let a=n.renderer.apply(this,i);return a===!1&&(a=r.apply(this,i)),a}:e.renderers[n.name]=n.renderer}if("tokenizer"in n){if(!n.level||n.level!=="block"&&n.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let r=e[n.level];r?r.unshift(n.tokenizer):e[n.level]=[n.tokenizer],n.start&&(n.level==="block"?e.startBlock?e.startBlock.push(n.start):e.startBlock=[n.start]:n.level==="inline"&&(e.startInline?e.startInline.push(n.start):e.startInline=[n.start]))}"childTokens"in n&&n.childTokens&&(e.childTokens[n.name]=n.childTokens)}),o.extensions=e),t.renderer){let n=this.defaults.renderer||new Xn(this.defaults);for(let r in t.renderer){if(!(r in n))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let i=r,a=t.renderer[i],l=n[i];n[i]=(...c)=>{let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d||""}}o.renderer=n}if(t.tokenizer){let n=this.defaults.tokenizer||new Yn(this.defaults);for(let r in t.tokenizer){if(!(r in n))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let i=r,a=t.tokenizer[i],l=n[i];n[i]=(...c)=>{let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d}}o.tokenizer=n}if(t.hooks){let n=this.defaults.hooks||new Ps;for(let r in t.hooks){if(!(r in n))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let i=r,a=t.hooks[i],l=n[i];Ps.passThroughHooks.has(r)?n[i]=c=>{if(this.defaults.async&&Ps.passThroughHooksRespectAsync.has(r))return(async()=>{let h=await a.call(n,c);return l.call(n,h)})();let d=a.call(n,c);return l.call(n,d)}:n[i]=(...c)=>{if(this.defaults.async)return(async()=>{let h=await a.apply(n,c);return h===!1&&(h=await l.apply(n,c)),h})();let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d}}o.hooks=n}if(t.walkTokens){let n=this.defaults.walkTokens,r=t.walkTokens;o.walkTokens=function(i){let a=[];return a.push(r.call(this,i)),n&&(a=a.concat(n.call(this,i))),a}}this.defaults={...this.defaults,...o}}),this}setOptions(s){return this.defaults={...this.defaults,...s},this}lexer(s,e){return tt.lex(s,e??this.defaults)}parser(s,e){return ot.parse(s,e??this.defaults)}parseMarkdown(s){return(e,t)=>{let o={...t},n={...this.defaults,...o},r=this.onError(!!n.silent,!!n.async);if(this.defaults.async===!0&&o.async===!1)return r(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return r(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return r(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(n.hooks&&(n.hooks.options=n,n.hooks.block=s),n.async)return(async()=>{let i=n.hooks?await n.hooks.preprocess(e):e,a=await(n.hooks?await n.hooks.provideLexer(s):s?tt.lex:tt.lexInline)(i,n),l=n.hooks?await n.hooks.processAllTokens(a):a;n.walkTokens&&await Promise.all(this.walkTokens(l,n.walkTokens));let c=await(n.hooks?await n.hooks.provideParser(s):s?ot.parse:ot.parseInline)(l,n);return n.hooks?await n.hooks.postprocess(c):c})().catch(r);try{n.hooks&&(e=n.hooks.preprocess(e));let i=(n.hooks?n.hooks.provideLexer(s):s?tt.lex:tt.lexInline)(e,n);n.hooks&&(i=n.hooks.processAllTokens(i)),n.walkTokens&&this.walkTokens(i,n.walkTokens);let a=(n.hooks?n.hooks.provideParser(s):s?ot.parse:ot.parseInline)(i,n);return n.hooks&&(a=n.hooks.postprocess(a)),a}catch(i){return r(i)}}}onError(s,e){return t=>{if(t.message+=` -Please report this to https://github.com/markedjs/marked.`,s){let o="

              An error occurred:

              "+qe(t.message+"",!0)+"
              ";return e?Promise.resolve(o):o}if(e)return Promise.reject(t);throw t}}},lo=new kw;ie.options=ie.setOptions=function(s){return lo.setOptions(s),ie.defaults=lo.defaults,dh(ie.defaults),ie};ie.getDefaults=ya;ie.defaults=co;ie.use=yw;ie.walkTokens=function(s,e){return lo.walkTokens(s,e)};ie.parseInline=lo.parseInline;ie.Parser=ot;ie.parser=ot.parse;ie.Renderer=Xn;ie.TextRenderer=Ta;ie.Lexer=tt;ie.lexer=tt.lex;ie.Tokenizer=Yn;ie.Hooks=Ps;ie.parse=ie;HS=ie.options,OS=ie.setOptions,DS=ie.walkTokens,FS=ie.parseInline,qS=ot.parse,KS=tt.lex});var kh=we((XS,xw)=>{xw.exports=`
              ×
              [ WHAT'S NEW ]

              Kute

              View on GitHub
              Done
              `});var xh={};function yh(s,e){return s.localeCompare(e,void 0,{numeric:!0,sensitivity:"case",caseFirst:"upper"})}function La(s){let e=Aa.get(s);return e||(e=fetch(`${Sw}/releases?per_page=1&page=${s}`).then(async t=>{if(!t.ok)throw new Error(`github ${t.status}`);let o=await t.json(),n=(t.headers.get("link")??"").match(/[?&]page=(\d+)>; rel="last"/);n?uo=Number(n[1]):o.length>0&&(uo=Math.max(uo??0,s));let[r]=o;return r?{tag:String(r.tag_name),body:String(r.body??""),date:String(r.published_at??"").slice(0,10)}:null}).catch(()=>(Aa.delete(s),null)),Aa.set(s,e)),e}async function Ew(s){let e=await La(1);if(!e||e.tag===s||uo===null)return 1;let t=2,o=uo;for(;t<=o;){let n=Math.floor((t+o)/2),r=await La(n);if(!r)return 1;let i=yh(r.tag,s);if(i===0)return n;i>0?t=n+1:o=n-1}return 1}var Sw,Aa,uo,Ra=w(()=>{"use strict";wh();D();Sw="https://api.github.com/repos/NullDev/Kute",Aa=new Map,uo=null;(async()=>{async function s(n){let[r,i]=await Promise.all([Promise.resolve().then(()=>ue(kh(),1)),Promise.resolve().then(()=>ue(Tn(),1))]),a=document.createElement("div");a.style=` +`}strong({tokens:s}){return`${this.parser.parseInline(s)}`}em({tokens:s}){return`${this.parser.parseInline(s)}`}codespan({text:s}){return`${Ke(s,!0)}`}br(s){return"
              "}del({tokens:s}){return`${this.parser.parseInline(s)}`}link({href:s,title:e,text:t,tokens:o,autolink:n}){let r=n?Ke(t,!0):this.parser.parseInline(o),i=ch(s);if(i===null)return r;s=Ke(i,n);let a='
              ",a}image({href:s,title:e,text:t,tokens:o}){o&&(t=this.parser.parseInline(o,this.parser.textRenderer));let n=ch(s);if(n===null)return Ke(t);s=n;let r=`${Ke(t)}{let i=n[r].flat(1/0);t=t.concat(this.walkTokens(i,e))}):n.tokens&&(t=t.concat(this.walkTokens(n.tokens,e)))}}return t}use(...s){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return s.forEach(t=>{let o={...t};if(o.async=this.defaults.async||o.async||!1,t.extensions&&(t.extensions.forEach(n=>{if(!n.name)throw new Error("extension name required");if("renderer"in n){let r=e.renderers[n.name];r?e.renderers[n.name]=function(...i){let a=n.renderer.apply(this,i);return a===!1&&(a=r.apply(this,i)),a}:e.renderers[n.name]=n.renderer}if("tokenizer"in n){if(!n.level||n.level!=="block"&&n.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let r=e[n.level];r?r.unshift(n.tokenizer):e[n.level]=[n.tokenizer],n.start&&(n.level==="block"?e.startBlock?e.startBlock.push(n.start):e.startBlock=[n.start]:n.level==="inline"&&(e.startInline?e.startInline.push(n.start):e.startInline=[n.start]))}"childTokens"in n&&n.childTokens&&(e.childTokens[n.name]=n.childTokens)}),o.extensions=e),t.renderer){let n=this.defaults.renderer||new Zn(this.defaults);for(let r in t.renderer){if(!(r in n))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let i=r,a=t.renderer[i],l=n[i];n[i]=(...c)=>{let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d||""}}o.renderer=n}if(t.tokenizer){let n=this.defaults.tokenizer||new Jn(this.defaults);for(let r in t.tokenizer){if(!(r in n))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let i=r,a=t.tokenizer[i],l=n[i];n[i]=(...c)=>{let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d}}o.tokenizer=n}if(t.hooks){let n=this.defaults.hooks||new Ns;for(let r in t.hooks){if(!(r in n))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let i=r,a=t.hooks[i],l=n[i];Ns.passThroughHooks.has(r)?n[i]=c=>{if(this.defaults.async&&Ns.passThroughHooksRespectAsync.has(r))return(async()=>{let h=await a.call(n,c);return l.call(n,h)})();let d=a.call(n,c);return l.call(n,d)}:n[i]=(...c)=>{if(this.defaults.async)return(async()=>{let h=await a.apply(n,c);return h===!1&&(h=await l.apply(n,c)),h})();let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d}}o.hooks=n}if(t.walkTokens){let n=this.defaults.walkTokens,r=t.walkTokens;o.walkTokens=function(i){let a=[];return a.push(r.call(this,i)),n&&(a=a.concat(n.call(this,i))),a}}this.defaults={...this.defaults,...o}}),this}setOptions(s){return this.defaults={...this.defaults,...s},this}lexer(s,e){return tt.lex(s,e??this.defaults)}parser(s,e){return ot.parse(s,e??this.defaults)}parseMarkdown(s){return(e,t)=>{let o={...t},n={...this.defaults,...o},r=this.onError(!!n.silent,!!n.async);if(this.defaults.async===!0&&o.async===!1)return r(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return r(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return r(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(n.hooks&&(n.hooks.options=n,n.hooks.block=s),n.async)return(async()=>{let i=n.hooks?await n.hooks.preprocess(e):e,a=await(n.hooks?await n.hooks.provideLexer(s):s?tt.lex:tt.lexInline)(i,n),l=n.hooks?await n.hooks.processAllTokens(a):a;n.walkTokens&&await Promise.all(this.walkTokens(l,n.walkTokens));let c=await(n.hooks?await n.hooks.provideParser(s):s?ot.parse:ot.parseInline)(l,n);return n.hooks?await n.hooks.postprocess(c):c})().catch(r);try{n.hooks&&(e=n.hooks.preprocess(e));let i=(n.hooks?n.hooks.provideLexer(s):s?tt.lex:tt.lexInline)(e,n);n.hooks&&(i=n.hooks.processAllTokens(i)),n.walkTokens&&this.walkTokens(i,n.walkTokens);let a=(n.hooks?n.hooks.provideParser(s):s?ot.parse:ot.parseInline)(i,n);return n.hooks&&(a=n.hooks.postprocess(a)),a}catch(i){return r(i)}}}onError(s,e){return t=>{if(t.message+=` +Please report this to https://github.com/markedjs/marked.`,s){let o="

              An error occurred:

              "+Ke(t.message+"",!0)+"
              ";return e?Promise.resolve(o):o}if(e)return Promise.reject(t);throw t}}},po=new $w;ie.options=ie.setOptions=function(s){return po.setOptions(s),ie.defaults=po.defaults,mh(ie.defaults),ie};ie.getDefaults=Sa;ie.defaults=ho;ie.use=Cw;ie.walkTokens=function(s,e){return po.walkTokens(s,e)};ie.parseInline=po.parseInline;ie.Parser=ot;ie.parser=ot.parse;ie.Renderer=Zn;ie.TextRenderer=La;ie.Lexer=tt;ie.lexer=tt.lex;ie.Tokenizer=Jn;ie.Hooks=Ns;ie.parse=ie;jS=ie.options,US=ie.setOptions,GS=ie.walkTokens,WS=ie.parseInline,VS=ot.parse,YS=tt.lex});var Eh=we((o3,Mw)=>{Mw.exports=`
              ×
              [ WHAT'S NEW ]

              Kute

              View on GitHub
              Done
              `});var Ch={};function $h(s,e){return s.localeCompare(e,void 0,{numeric:!0,sensitivity:"case",caseFirst:"upper"})}function Pa(s){let e=Ra.get(s);return e||(e=fetch(`${Tw}/releases?per_page=1&page=${s}`).then(async t=>{if(!t.ok)throw new Error(`github ${t.status}`);let o=await t.json(),n=(t.headers.get("link")??"").match(/[?&]page=(\d+)>; rel="last"/);n?mo=Number(n[1]):o.length>0&&(mo=Math.max(mo??0,s));let[r]=o;return r?{tag:String(r.tag_name),body:String(r.body??""),date:String(r.published_at??"").slice(0,10)}:null}).catch(()=>(Ra.delete(s),null)),Ra.set(s,e)),e}async function Aw(s){let e=await Pa(1);if(!e||e.tag===s||mo===null)return 1;let t=2,o=mo;for(;t<=o;){let n=Math.floor((t+o)/2),r=await Pa(n);if(!r)return 1;let i=$h(r.tag,s);if(i===0)return n;i>0?t=n+1:o=n-1}return 1}var Tw,Ra,mo,Ia=w(()=>{"use strict";Sh();F();Tw="https://api.github.com/repos/NullDev/Kute",Ra=new Map,mo=null;(async()=>{async function s(n){let[r,i]=await Promise.all([Promise.resolve().then(()=>ue(Eh(),1)),Promise.resolve().then(()=>ue(Ln(),1))]),a=document.createElement("div");a.style=` position: fixed; top: 0; left: 0; @@ -162,17 +162,17 @@ Please report this to https://github.com/markedjs/marked.`,s){let o="

              An error display: flex; justify-content: center; align-items: center; - `,document.body.append(a);let l=document.createElement("div");l.id="changelogPopupHost",a.append(l);let c=l.attachShadow({mode:"open"}),d=document.createElement("div");for(d.innerHTML=r.default;d.firstChild;)c.append(d.firstChild);let h=_=>c.getElementById(_),p=h("changelogLogo");p&&(p.src=i.default);let m=h("changelogContent");m&&(m.textContent="Loading release notes...");let f=h("changelogVersion");f&&(f.textContent=n);let g=new AbortController,b=()=>{g.abort(),a.remove()};for(let _ of["changelogClose","changelogDone"]){let H=h(_);H&&(H.onclick=b)}a.addEventListener("mousedown",_=>{_.target===a&&b()});let v=1,k=0,E=()=>{let _=uo??1,H=h("changelogPosition");H&&(H.textContent=`${v} / ${_}`),h("changelogNewer")?.classList.toggle("changelogDisabled",v<=1),h("changelogOlder")?.classList.toggle("changelogDisabled",v>=_);let G=h("changelogNav");G&&(G.style.display=_>1?"":"none")},L=async _=>{v=Math.min(Math.max(_,1),uo??1);let H=++k;E();let G=await La(v);if(H!==k||!m)return;if(!G){m.innerHTML="Could not load the release notes. View them on GitHub instead.";let be=h("changelogGithub");be&&(be.onclick=()=>window.chrome.webview.postMessage(`open-url, https://github.com/NullDev/Kute/releases/tag/${n}`));return}let J=`https://github.com/NullDev/Kute/releases/tag/${G.tag}`;f&&(f.textContent=G.tag);let B=h("changelogEyebrow");B&&(B.textContent=G.tag===n?"[ WHAT'S NEW ]":`[ RELEASED ${G.date} ]`);let re=h("changelogGithub");re&&(re.onclick=()=>window.chrome.webview.postMessage(`open-url, ${J}`));let je=await ie.parse(G.body||"No release notes found.",{breaks:!0,async:!0});if(H===k){m.innerHTML=je,h("changelogContentWrapper")?.scrollTo(0,0);for(let be of m.querySelectorAll("a"))be.getAttribute("href")?.startsWith("#")&&be.setAttribute("href",J+be.getAttribute("href")),be.setAttribute("target","_blank"),be.setAttribute("rel","noopener")}},x=h("changelogOlder");x&&(x.onclick=()=>L(v+1));let $=h("changelogNewer");$&&($.onclick=()=>L(v-1)),document.addEventListener("keydown",_=>{if(_.key==="Escape")b();else if(_.key==="ArrowLeft")L(v-1);else if(_.key==="ArrowRight")L(v+1);else return;_.stopPropagation()},{signal:g.signal,capture:!0});let I=await Ew(n);g.signal.aborted||await L(I)}let e=u?.version,t=window.localStorage.getItem("kute_lastSeenVersion"),o=t!==null&&yh(e,t)>0;window.localStorage.setItem("kute_lastSeenVersion",e),u?.settings.data?.showChangelog&&t&&e&&o&&await s(e),u.showChangelogPopup=s})()});var Ia={};A(Ia,{default:()=>$w});var Pa,$w,Na=w(()=>{"use strict";Pa=class{tracked=new WeakSet;draft=null;observer=null;pending=null;sentAt=0;constructor(){document.addEventListener("focusin",e=>{let t=e.target;t instanceof HTMLTextAreaElement&&t.classList.contains("conversation-input")&&this.track(t)})}friendOf(e){return e.closest(".conversation-root")?.querySelector(".conversation-header-name")?.textContent??""}track(e){this.tracked.has(e)||(this.tracked.add(e),e.addEventListener("input",()=>this.save(e)),e.addEventListener("keydown",t=>{t.key==="Enter"&&!t.shiftKey&&!t.isComposing&&(this.sentAt=performance.now())}),e.closest(".conversation-compose")?.querySelector(".conversation-send-button")?.addEventListener("click",()=>{this.sentAt=performance.now()}),e.value&&this.save(e))}save(e){if(!e.value){this.stop();return}if(this.draft={input:e,friend:this.friendOf(e),text:e.value,start:e.selectionStart,end:e.selectionEnd},this.observer)return;let t=e.closest(".conversation-root");t&&(this.observer=new MutationObserver(()=>this.schedule()),this.observer.observe(t,{childList:!0,subtree:!0,characterData:!0}))}schedule(){this.pending===null&&(this.pending=setTimeout(()=>this.check(),0))}check(){this.pending=null;let{draft:e}=this;if(!e)return;let{input:t}=e;if(!t.isConnected||this.friendOf(t)!==e.friend){this.stop();return}if(t.value){this.save(t);return}if(performance.now()-this.sentAt<250){this.stop();return}t.value=e.text,document.activeElement===t&&t.setSelectionRange(e.start,e.end),t.dispatchEvent(new Event("input",{bubbles:!0}))}stop(){this.draft=null,this.observer?.disconnect(),this.observer=null}},$w=new Pa});var Eh,Sh=w(()=>{Eh='

              Chat Logs

              Copy
              Clear
              Close
              '});var Ba={};A(Ba,{default:()=>Nw});function Lw(s){if(!s.hasAttribute("data-tab"))return"kill";let e=s.querySelector(".chatItem"),t=e?.querySelector(".chatMsg");return!e||!(t instanceof HTMLElement)||e.querySelector(".tradeMsg")?"event":e.firstChild!==t?"player":t.style.color?"server":"event"}function Rw(s){let e="",t=!1,o=[];for(let n of s.querySelector(".chatMsg")?.childNodes??[]){if(!(n instanceof HTMLImageElement)){e+=n.textContent??"";continue}let r=n.getAttribute("src")??"";r.includes("headshot")?o.push("headshot"):r.includes("wallbang")?o.push("wallbang"):t||(t=!0,e+=" \u25B8 ")}return o.length>0?`${e.trim()} (${o.join(", ")})`:e}function $h(s){let e=new Date(s);return[e.getHours(),e.getMinutes(),e.getSeconds()].map(t=>String(t).padStart(2,"0")).join(":")}function Pw(){try{let s=JSON.parse(window.sessionStorage.getItem(Ch)??"[]");return Array.isArray(s)?s.slice(-Jn):[]}catch{return[]}}function Iw(){try{let{mode:s,map:e}=window.getGameActivity();if(s&&e)return`${s} on ${e}`}catch{}return"New lobby"}var Jn,Ch,Mw,Tw,Aw,_a,Nw,za=w(()=>{"use strict";Sh();D();Po();Jn=2e3,Ch="kute_chat_logs",Mw="\u200E",Tw=[["player","Players"],["kill","Kills"],["event","Events"],["server","Server"]],Aw={player:"",kill:"clKill",event:"clEvent",server:"clServer",lobby:"clLobby"};_a=class{constructor(){this.entries=Pw(),this.entries.length>0&&this.entries[this.entries.length-1].cat!=="lobby"&&this.entries.push({t:Date.now(),cat:"lobby",text:Iw()}),this.shown=new Set,this.view=null,this.stick=!0,this.observer=new MutationObserver(e=>{for(let t of e)for(let o of t.addedNodes)this.add(o)}),this.save=()=>{try{window.sessionStorage.setItem(Ch,JSON.stringify(this.entries))}catch{}},u.chatLogs={open:()=>this.open(),toggle:()=>this.toggle()},u.settings.toggleChatLogs=e=>this.setEnabled(e),this.setEnabled(!0)}setEnabled(e){if(this.observer.disconnect(),window.removeEventListener("pagehide",this.save),!e){this.close();return}let t=document.getElementById("chatList");if(t){for(let o of t.children)this.add(o);this.observer.observe(t,{childList:!0}),window.addEventListener("pagehide",this.save)}}add(e){if(!(e instanceof HTMLElement))return;let t=Lw(e),o=(t==="kill"?Rw(e):e.textContent??"").replaceAll(Mw,"").trim();if(!o)return;let n={t:Date.now(),cat:t,text:o};if(this.entries.push(n),this.entries.length>Jn&&this.entries.splice(0,this.entries.length-Jn),!this.view||!this.visible(n))return;let{list:r}=this.view;r.querySelector(".clEmpty")?.remove(),r.append(this.row(n)),r.childElementCount>Jn&&r.firstElementChild?.remove(),this.stick&&(r.scrollTop=1e9)}visible(e){let t=this.view?.search.value.trim().toLowerCase()??"";return e.cat==="lobby"?this.shown.size===0&&!t:this.shown.size>0&&!this.shown.has(e.cat)?!1:!t||e.text.toLowerCase().includes(t)}row(e){let t=document.createElement("div");t.className=`clRow ${Aw[e.cat]??""}`;let o=document.createElement("span");return o.className="clTime",o.textContent=$h(e.t),t.append(o,e.text),t}render(){if(!this.view)return;let e=this.entries.filter(t=>this.visible(t)).map(t=>this.row(t));if(e.length===0){let t=document.createElement("div");t.className="clEmpty",t.textContent=this.entries.length===0?"Nothing in the chat yet":"No line matches",e.push(t)}this.view.list.replaceChildren(...e),this.view.list.scrollTop=1e9,this.stick=!0,this.renderFilters()}renderFilters(){if(!this.view)return;let e=(n,r,i)=>{let a=document.createElement("div");return a.className=`clFilter${r?" clOn":""}`,a.textContent=n,a.onclick=i,a},t=e("All",this.shown.size===0,()=>{this.shown.clear(),this.render()}),o=Tw.map(([n,r])=>e(r,this.shown.has(n),()=>{this.shown.has(n)?this.shown.delete(n):this.shown.add(n),this.render()}));this.view.shadow.querySelector("#clFilters").replaceChildren(t,...o)}open(){if(this.view)return;document.pointerLockElement&&document.exitPointerLock();let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=Eh;let n=l=>o.querySelector(`#${l}`),r=n("clList"),i=n("clSearch");this.view={overlay:e,shadow:o,list:r,search:i};let a=ft().chatLogs;n("clHint").textContent=`${a?`${a.name} opens and closes this. `:""}Select lines and copy with Ctrl+C`,e.addEventListener("click",l=>{l.target===e&&this.close()});for(let l of["keydown","keyup","keypress"])t.addEventListener(l,c=>{let d=c;l==="keydown"&&!d.repeat&&(d.key==="Escape"||ls(d,"chatLogs"))&&this.close(),c.stopPropagation()});r.addEventListener("scroll",()=>{this.stick=r.scrollTop+r.clientHeight>=r.scrollHeight-30},{passive:!0}),i.addEventListener("input",()=>this.render()),n("clCopy").onclick=()=>{let l=this.entries.filter(c=>this.visible(c)).map(c=>`${$h(c.t)} ${c.text}`).join(` -`);navigator.clipboard.writeText(l).then(()=>u.showNotification("Chat log copied",!1,2),()=>u.showNotification("Could not copy the chat log",!1,3))},n("clClear").onclick=()=>{this.entries=[],this.save(),this.render()},n("clClose").onclick=()=>this.close(),document.body.append(e),this.render(),i.focus()}close(){this.view?.overlay.remove(),this.view=null}toggle(){this.view?this.close():this.open()}},Nw=new _a});var Oa={};A(Oa,{default:()=>zw});function Bw(s){return s.split(";").map(e=>e.trim()).filter(e=>{let t=e.split(":")[0]?.trim().toLowerCase();return!!t&&e.includes(":")&&_w.has(t)}).join(";")}var _w,Ha,Mh,zw,Da=w(()=>{"use strict";D();jn();It();_w=new Set(["background","background-image","background-color","background-clip","-webkit-background-clip","background-size","background-position","color","-webkit-text-fill-color","-webkit-text-stroke","text-shadow","text-decoration","filter","opacity","animation"]);Ha=class{constructor(){this.styles={},this.fetched={},this.watching=!1,this.decorator=e=>this.restyle(e),u.settings.toggleClanColors=e=>this.toggle(e),this.load()}toggle(e){if(e){Object.keys(this.fetched).length>0?this.apply(this.fetched):this.load();return}pt.remove(this.decorator),this.watching=!1,this.styles={};for(let t of document.querySelectorAll("[data-kute-clan]"))t.setAttribute("style",t.getAttribute("data-kute-style")??""),t.removeAttribute("data-kute-clan"),t.removeAttribute("data-kute-style")}async load(){let e=await he.request("/meta");typeof e?.clanTagColors=="object"&&e.clanTagColors!==null&&(this.fetched=e.clanTagColors),u.settings.data.clanColors!==!1&&this.apply(this.fetched)}apply(e){if(!(typeof e!="object"||e===null)){this.styles={};for(let[t,o]of Object.entries(e)){if(typeof o!="string"||t.length===0||t.length>16)continue;let n=Bw(o);n&&(this.styles[t]=n)}Object.keys(this.styles).length!==0&&(this.watching?pt.refresh():pt.add(this.decorator),this.watching=!0)}}restyle(e){let t=Ls(e.element);if(!t)return;let o=this.styles[t.tag];!o||t.span.getAttribute("data-kute-clan")===t.tag||(t.span.hasAttribute("data-kute-style")||t.span.setAttribute("data-kute-style",t.span.getAttribute("style")??""),t.span.setAttribute("style",o),t.span.setAttribute("data-kute-clan",t.tag))}},Mh=new Ha;u.clanColors=Mh;zw=Mh});var Th=we((i3,Hw)=>{Hw.exports='

              Custom Sky

              Replaces the sky of every map. It applies from the next match
              Gradient
              Image
              Open folder
              Refresh
              Put PNG, JPG or WEBP images into Documents\\kute\\skies
              Done
              '});var qa={};A(qa,{default:()=>qw});var Ow,Ah,Dw,Fw,Fa,qw,Ka=w(()=>{"use strict";D();Ow={mode:"gradient",zenith:"#1E5AA8",horizon:"#9FD0F0",image:""},Ah="preset:",Dw=[["Vaporwave","#ff00aa","#00ffcc"],["Kute","#0b2e3a","#35e0e8"],["Sunset","#2b1055","#ff8a4c"],["Midnight","#03040f","#243b73"],["Toxic","#0a2a12","#a6ff3b"],["Blood Moon","#120006","#b3122e"],["Cotton Candy","#8fb8ff","#ffc2e2"]],Fw={starfield:"Starfield",aurora:"Aurora",nebula:"Nebula",synthwave:"Synthwave",sunset:"Sunset",candy:"Cotton Clouds"},Fa=class{constructor(){u.customSky={showOptions:()=>this.showOptions()}}get config(){return{...Ow,...u.settings.data.customSkyConfig}}saveConfig(e){u.settings.data.customSkyConfig=e,window.chrome.webview.postMessage(`set-config-json customSkyConfig ${JSON.stringify(e)}`)}listImages(){return new Promise(e=>{let t=0,o=n=>{Array.isArray(n.data?.skies)&&(window.chrome.webview.removeEventListener("message",o),clearTimeout(t),e({files:n.data.skies,presets:Array.isArray(n.data.skyPresets)?n.data.skyPresets:[]}))};t=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",o),e({files:[],presets:[]})},3e3),window.chrome.webview.addEventListener("message",o),window.chrome.webview.postMessage("sky-list")})}async showOptions(){let e=await Promise.resolve().then(()=>ue(Th(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=i("skZenith"),l=i("skHorizon"),c=i("skImage"),d=()=>{i("skModeGradient").classList.toggle("active",t.mode==="gradient"),i("skModeImage").classList.toggle("active",t.mode==="image"),i("skGradientPane").hidden=t.mode!=="gradient",i("skImagePane").hidden=t.mode!=="image",i("skPreview").style.background=`linear-gradient(${t.zenith}, ${t.horizon})`},h=async()=>{let{files:g,presets:b}=await this.listImages(),v=(E,L)=>{let x=document.createElement("optgroup");return x.label=E,x.append(...L.map(([$,I])=>new Option(I,$))),x},k=[...b.map(E=>Ah+E),...g];c.replaceChildren(...b.length?[v("Kute",b.map(E=>[Ah+E,Fw[E]??E]))]:[],...g.length?[v("Your images",g.map(E=>[E,E]))]:[]),k.length>0&&!k.includes(t.image)&&(t.image=k[0]),c.value=t.image,c.disabled=k.length===0,i("skImageHint").textContent=g.length===0?"Add your own: put PNG, JPG or WEBP images into Documents\\kute\\skies, then press Refresh":"Put PNG, JPG or WEBP images into Documents\\kute\\skies"},p=i("skSwatches");for(let[g,b,v]of Dw){let k=document.createElement("div");k.className="skSwatch",k.title=g,k.style.background=`linear-gradient(${b}, ${v})`,k.onclick=()=>{t.zenith=b,t.horizon=v,a.value=b,l.value=v,d()},p.append(k)}a.value=t.zenith.toLowerCase(),l.value=t.horizon.toLowerCase(),a.oninput=()=>{t.zenith=a.value,d()},l.oninput=()=>{t.horizon=l.value,d()},c.onchange=()=>{t.image=c.value},i("skModeGradient").onclick=()=>{t.mode="gradient",d()},i("skModeImage").onclick=()=>{t.mode="image",d()},i("skOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, skies"),i("skRefresh").onclick=()=>h();let m=new AbortController,f=()=>{m.abort(),o.remove(),this.saveConfig(t)};i("skDone").onclick=f,o.addEventListener("mousedown",g=>{g.target===o&&f()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),f())},{signal:m.signal,capture:!0}),d(),document.body.append(o),await h()}},qw=new Fa});var Rh,Lh=w(()=>{Rh='

              Diagnostics Report

              These are all the files that will be included. You can choose what to exclude, but keeping all of them is recommended.
              Collecting...
              Close
              Save dump
              '});var Ih={};A(Ih,{createCodeEditor:()=>Ph,createEditorView:()=>po,highlight:()=>Qn,languageFor:()=>ja});function Qn(s,e="js"){if(e==="text")return Zn(s);let t=e==="css",o="",n=0;for(let r of s.matchAll(t?Ww:Gw)){let i=r.index??0,[a]=r,l="";if(t){let[,c,d,h,p,m]=r;if(c)l="c";else if(d)l="s";else if(h)l="k";else if(p)l="n";else if(m){let f=i+m.length;s[f]==="("?l="f":(m.startsWith("--")||Vw(s,f))&&(l="l")}}else{let[,c,d,h,p]=r;c?l="c":d?l=e==="json"&&/^\s*:/.test(s.slice(i+a.length,i+a.length+20))?"p":"s":h?l="n":p&&(jw.has(p)?l="k":Uw.has(p)?l="l":/^\s*\(/.test(s.slice(i+p.length,i+p.length+40))&&(l="f"))}l&&(o+=Zn(s.slice(n,i))+`${Zn(a)}`,n=i+a.length)}return o+Zn(s.slice(n))}function Ph(s,e,{onSave:t,onDirtyChange:o,onChange:n,language:r="js"}){s.innerHTML=`
              -
              `;let i=s.querySelector(".editorGutter"),a=s.querySelector("pre"),l=s.querySelector("code"),c=s.querySelector("textarea");c.value=e;let d=e,h=!1,p=0,m=0,f=()=>{a.scrollTop=c.scrollTop,a.scrollLeft=c.scrollLeft,i.scrollTop=c.scrollTop},g=()=>{m=0;let{value:k}=c;l.innerHTML=`${Qn(k,r)} + `,document.body.append(a);let l=document.createElement("div");l.id="changelogPopupHost",a.append(l);let c=l.attachShadow({mode:"open"}),d=document.createElement("div");for(d.innerHTML=r.default;d.firstChild;)c.append(d.firstChild);let h=_=>c.getElementById(_),p=h("changelogLogo");p&&(p.src=i.default);let m=h("changelogContent");m&&(m.textContent="Loading release notes...");let f=h("changelogVersion");f&&(f.textContent=n);let g=new AbortController,b=()=>{g.abort(),a.remove()};for(let _ of["changelogClose","changelogDone"]){let H=h(_);H&&(H.onclick=b)}a.addEventListener("mousedown",_=>{_.target===a&&b()});let v=1,k=0,E=()=>{let _=mo??1,H=h("changelogPosition");H&&(H.textContent=`${v} / ${_}`),h("changelogNewer")?.classList.toggle("changelogDisabled",v<=1),h("changelogOlder")?.classList.toggle("changelogDisabled",v>=_);let G=h("changelogNav");G&&(G.style.display=_>1?"":"none")},L=async _=>{v=Math.min(Math.max(_,1),mo??1);let H=++k;E();let G=await Pa(v);if(H!==k||!m)return;if(!G){m.innerHTML="Could not load the release notes. View them on GitHub instead.";let be=h("changelogGithub");be&&(be.onclick=()=>window.chrome.webview.postMessage(`open-url, https://github.com/NullDev/Kute/releases/tag/${n}`));return}let J=`https://github.com/NullDev/Kute/releases/tag/${G.tag}`;f&&(f.textContent=G.tag);let B=h("changelogEyebrow");B&&(B.textContent=G.tag===n?"[ WHAT'S NEW ]":`[ RELEASED ${G.date} ]`);let re=h("changelogGithub");re&&(re.onclick=()=>window.chrome.webview.postMessage(`open-url, ${J}`));let je=await ie.parse(G.body||"No release notes found.",{breaks:!0,async:!0});if(H===k){m.innerHTML=je,h("changelogContentWrapper")?.scrollTo(0,0);for(let be of m.querySelectorAll("a"))be.getAttribute("href")?.startsWith("#")&&be.setAttribute("href",J+be.getAttribute("href")),be.setAttribute("target","_blank"),be.setAttribute("rel","noopener")}},y=h("changelogOlder");y&&(y.onclick=()=>L(v+1));let C=h("changelogNewer");C&&(C.onclick=()=>L(v-1)),document.addEventListener("keydown",_=>{if(_.key==="Escape")b();else if(_.key==="ArrowLeft")L(v-1);else if(_.key==="ArrowRight")L(v+1);else return;_.stopPropagation()},{signal:g.signal,capture:!0});let I=await Aw(n);g.signal.aborted||await L(I)}let e=u?.version,t=window.localStorage.getItem("kute_lastSeenVersion"),o=t!==null&&$h(e,t)>0;window.localStorage.setItem("kute_lastSeenVersion",e),u?.settings.data?.showChangelog&&t&&e&&o&&await s(e),u.showChangelogPopup=s})()});var _a={};A(_a,{default:()=>Lw});var Na,Lw,Ba=w(()=>{"use strict";Na=class{tracked=new WeakSet;draft=null;observer=null;pending=null;sentAt=0;constructor(){document.addEventListener("focusin",e=>{let t=e.target;t instanceof HTMLTextAreaElement&&t.classList.contains("conversation-input")&&this.track(t)})}friendOf(e){return e.closest(".conversation-root")?.querySelector(".conversation-header-name")?.textContent??""}track(e){this.tracked.has(e)||(this.tracked.add(e),e.addEventListener("input",()=>this.save(e)),e.addEventListener("keydown",t=>{t.key==="Enter"&&!t.shiftKey&&!t.isComposing&&(this.sentAt=performance.now())}),e.closest(".conversation-compose")?.querySelector(".conversation-send-button")?.addEventListener("click",()=>{this.sentAt=performance.now()}),e.value&&this.save(e))}save(e){if(!e.value){this.stop();return}if(this.draft={input:e,friend:this.friendOf(e),text:e.value,start:e.selectionStart,end:e.selectionEnd},this.observer)return;let t=e.closest(".conversation-root");t&&(this.observer=new MutationObserver(()=>this.schedule()),this.observer.observe(t,{childList:!0,subtree:!0,characterData:!0}))}schedule(){this.pending===null&&(this.pending=setTimeout(()=>this.check(),0))}check(){this.pending=null;let{draft:e}=this;if(!e)return;let{input:t}=e;if(!t.isConnected||this.friendOf(t)!==e.friend){this.stop();return}if(t.value){this.save(t);return}if(performance.now()-this.sentAt<250){this.stop();return}t.value=e.text,document.activeElement===t&&t.setSelectionRange(e.start,e.end),t.dispatchEvent(new Event("input",{bubbles:!0}))}stop(){this.draft=null,this.observer?.disconnect(),this.observer=null}},Lw=new Na});var Th,Mh=w(()=>{Th='

              Chat Logs

              Copy
              Clear
              Close
              '});var Ha={};A(Ha,{default:()=>Ow});function _w(s){if(!s.hasAttribute("data-tab"))return"kill";let e=s.querySelector(".chatItem"),t=e?.querySelector(".chatMsg");return!e||!(t instanceof HTMLElement)||e.querySelector(".tradeMsg")?"event":e.firstChild!==t?"player":t.style.color?"server":"event"}function Bw(s){let e="",t=!1,o=[];for(let n of s.querySelector(".chatMsg")?.childNodes??[]){if(!(n instanceof HTMLImageElement)){e+=n.textContent??"";continue}let r=n.getAttribute("src")??"";r.includes("headshot")?o.push("headshot"):r.includes("wallbang")?o.push("wallbang"):t||(t=!0,e+=" \u25B8 ")}return o.length>0?`${e.trim()} (${o.join(", ")})`:e}function Ah(s){let e=new Date(s);return[e.getHours(),e.getMinutes(),e.getSeconds()].map(t=>String(t).padStart(2,"0")).join(":")}function zw(){try{let s=JSON.parse(window.sessionStorage.getItem(Lh)??"[]");return Array.isArray(s)?s.slice(-Qn):[]}catch{return[]}}function Hw(){try{let{mode:s,map:e}=window.getGameActivity();if(s&&e)return`${s} on ${e}`}catch{}return"New lobby"}var Qn,Lh,Pw,Iw,Nw,za,Ow,Oa=w(()=>{"use strict";Mh();F();No();Qn=2e3,Lh="kute_chat_logs",Pw="\u200E",Iw=[["player","Players"],["kill","Kills"],["event","Events"],["server","Server"]],Nw={player:"",kill:"clKill",event:"clEvent",server:"clServer",lobby:"clLobby"};za=class{constructor(){this.entries=zw(),this.entries.length>0&&this.entries[this.entries.length-1].cat!=="lobby"&&this.entries.push({t:Date.now(),cat:"lobby",text:Hw()}),this.shown=new Set,this.view=null,this.stick=!0,this.observer=new MutationObserver(e=>{for(let t of e)for(let o of t.addedNodes)this.add(o)}),this.save=()=>{try{window.sessionStorage.setItem(Lh,JSON.stringify(this.entries))}catch{}},u.chatLogs={open:()=>this.open(),toggle:()=>this.toggle()},u.settings.toggleChatLogs=e=>this.setEnabled(e),this.setEnabled(!0)}setEnabled(e){if(this.observer.disconnect(),window.removeEventListener("pagehide",this.save),!e){this.close();return}let t=document.getElementById("chatList");if(t){for(let o of t.children)this.add(o);this.observer.observe(t,{childList:!0}),window.addEventListener("pagehide",this.save)}}add(e){if(!(e instanceof HTMLElement))return;let t=_w(e),o=(t==="kill"?Bw(e):e.textContent??"").replaceAll(Pw,"").trim();if(!o)return;let n={t:Date.now(),cat:t,text:o};if(this.entries.push(n),this.entries.length>Qn&&this.entries.splice(0,this.entries.length-Qn),!this.view||!this.visible(n))return;let{list:r}=this.view;r.querySelector(".clEmpty")?.remove(),r.append(this.row(n)),r.childElementCount>Qn&&r.firstElementChild?.remove(),this.stick&&(r.scrollTop=1e9)}visible(e){let t=this.view?.search.value.trim().toLowerCase()??"";return e.cat==="lobby"?this.shown.size===0&&!t:this.shown.size>0&&!this.shown.has(e.cat)?!1:!t||e.text.toLowerCase().includes(t)}row(e){let t=document.createElement("div");t.className=`clRow ${Nw[e.cat]??""}`;let o=document.createElement("span");return o.className="clTime",o.textContent=Ah(e.t),t.append(o,e.text),t}render(){if(!this.view)return;let e=this.entries.filter(t=>this.visible(t)).map(t=>this.row(t));if(e.length===0){let t=document.createElement("div");t.className="clEmpty",t.textContent=this.entries.length===0?"Nothing in the chat yet":"No line matches",e.push(t)}this.view.list.replaceChildren(...e),this.view.list.scrollTop=1e9,this.stick=!0,this.renderFilters()}renderFilters(){if(!this.view)return;let e=(n,r,i)=>{let a=document.createElement("div");return a.className=`clFilter${r?" clOn":""}`,a.textContent=n,a.onclick=i,a},t=e("All",this.shown.size===0,()=>{this.shown.clear(),this.render()}),o=Iw.map(([n,r])=>e(r,this.shown.has(n),()=>{this.shown.has(n)?this.shown.delete(n):this.shown.add(n),this.render()}));this.view.shadow.querySelector("#clFilters").replaceChildren(t,...o)}open(){if(this.view)return;document.pointerLockElement&&document.exitPointerLock();let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=Th;let n=l=>o.querySelector(`#${l}`),r=n("clList"),i=n("clSearch");this.view={overlay:e,shadow:o,list:r,search:i};let a=gt().chatLogs;n("clHint").textContent=`${a?`${a.name} opens and closes this. `:""}Select lines and copy with Ctrl+C`,e.addEventListener("click",l=>{l.target===e&&this.close()});for(let l of["keydown","keyup","keypress"])t.addEventListener(l,c=>{let d=c;l==="keydown"&&!d.repeat&&(d.key==="Escape"||ds(d,"chatLogs"))&&this.close(),c.stopPropagation()});r.addEventListener("scroll",()=>{this.stick=r.scrollTop+r.clientHeight>=r.scrollHeight-30},{passive:!0}),i.addEventListener("input",()=>this.render()),n("clCopy").onclick=()=>{let l=this.entries.filter(c=>this.visible(c)).map(c=>`${Ah(c.t)} ${c.text}`).join(` +`);navigator.clipboard.writeText(l).then(()=>u.showNotification("Chat log copied",!1,2),()=>u.showNotification("Could not copy the chat log",!1,3))},n("clClear").onclick=()=>{this.entries=[],this.save(),this.render()},n("clClose").onclick=()=>this.close(),document.body.append(e),this.render(),i.focus()}close(){this.view?.overlay.remove(),this.view=null}toggle(){this.view?this.close():this.open()}},Ow=new za});var Da={};A(Da,{default:()=>qw});function Dw(s){return s.split(";").map(e=>e.trim()).filter(e=>{let t=e.split(":")[0]?.trim().toLowerCase();return!!t&&e.includes(":")&&Fw.has(t)}).join(";")}var Fw,Fa,Rh,qw,qa=w(()=>{"use strict";F();Gn();Nt();Fw=new Set(["background","background-image","background-color","background-clip","-webkit-background-clip","background-size","background-position","color","-webkit-text-fill-color","-webkit-text-stroke","text-shadow","text-decoration","filter","opacity","animation"]);Fa=class{constructor(){this.styles={},this.fetched={},this.watching=!1,this.decorator=e=>this.restyle(e),u.settings.toggleClanColors=e=>this.toggle(e),this.load()}toggle(e){if(e){Object.keys(this.fetched).length>0?this.apply(this.fetched):this.load();return}ht.remove(this.decorator),this.watching=!1,this.styles={};for(let t of document.querySelectorAll("[data-kute-clan]"))t.setAttribute("style",t.getAttribute("data-kute-style")??""),t.removeAttribute("data-kute-clan"),t.removeAttribute("data-kute-style")}async load(){let e=await he.request("/meta");typeof e?.clanTagColors=="object"&&e.clanTagColors!==null&&(this.fetched=e.clanTagColors),u.settings.data.clanColors!==!1&&this.apply(this.fetched)}apply(e){if(!(typeof e!="object"||e===null)){this.styles={};for(let[t,o]of Object.entries(e)){if(typeof o!="string"||t.length===0||t.length>16)continue;let n=Dw(o);n&&(this.styles[t]=n)}Object.keys(this.styles).length!==0&&(this.watching?ht.refresh():ht.add(this.decorator),this.watching=!0)}}restyle(e){let t=Ps(e.element);if(!t)return;let o=this.styles[t.tag];!o||t.span.getAttribute("data-kute-clan")===t.tag||(t.span.hasAttribute("data-kute-style")||t.span.setAttribute("data-kute-style",t.span.getAttribute("style")??""),t.span.setAttribute("style",o),t.span.setAttribute("data-kute-clan",t.tag))}},Rh=new Fa;u.clanColors=Rh;qw=Rh});var Ph=we((p3,Kw)=>{Kw.exports='

              Custom Sky

              Replaces the sky of every map. It applies from the next match
              Gradient
              Image
              Open folder
              Refresh
              Put PNG, JPG or WEBP images into Documents\\kute\\skies
              Done
              '});var ja={};A(ja,{default:()=>Ww});var jw,Ih,Uw,Gw,Ka,Ww,Ua=w(()=>{"use strict";F();jw={mode:"gradient",zenith:"#1E5AA8",horizon:"#9FD0F0",image:""},Ih="preset:",Uw=[["Vaporwave","#ff00aa","#00ffcc"],["Kute","#0b2e3a","#35e0e8"],["Sunset","#2b1055","#ff8a4c"],["Midnight","#03040f","#243b73"],["Toxic","#0a2a12","#a6ff3b"],["Blood Moon","#120006","#b3122e"],["Cotton Candy","#8fb8ff","#ffc2e2"]],Gw={starfield:"Starfield",aurora:"Aurora",nebula:"Nebula",synthwave:"Synthwave",sunset:"Sunset",candy:"Cotton Clouds"},Ka=class{constructor(){u.customSky={showOptions:()=>this.showOptions()}}get config(){return{...jw,...u.settings.data.customSkyConfig}}saveConfig(e){u.settings.data.customSkyConfig=e,window.chrome.webview.postMessage(`set-config-json customSkyConfig ${JSON.stringify(e)}`)}listImages(){return new Promise(e=>{let t=0,o=n=>{Array.isArray(n.data?.skies)&&(window.chrome.webview.removeEventListener("message",o),clearTimeout(t),e({files:n.data.skies,presets:Array.isArray(n.data.skyPresets)?n.data.skyPresets:[]}))};t=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",o),e({files:[],presets:[]})},3e3),window.chrome.webview.addEventListener("message",o),window.chrome.webview.postMessage("sky-list")})}async showOptions(){let e=await Promise.resolve().then(()=>ue(Ph(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=i("skZenith"),l=i("skHorizon"),c=i("skImage"),d=()=>{i("skModeGradient").classList.toggle("active",t.mode==="gradient"),i("skModeImage").classList.toggle("active",t.mode==="image"),i("skGradientPane").hidden=t.mode!=="gradient",i("skImagePane").hidden=t.mode!=="image",i("skPreview").style.background=`linear-gradient(${t.zenith}, ${t.horizon})`},h=async()=>{let{files:g,presets:b}=await this.listImages(),v=(E,L)=>{let y=document.createElement("optgroup");return y.label=E,y.append(...L.map(([C,I])=>new Option(I,C))),y},k=[...b.map(E=>Ih+E),...g];c.replaceChildren(...b.length?[v("Kute",b.map(E=>[Ih+E,Gw[E]??E]))]:[],...g.length?[v("Your images",g.map(E=>[E,E]))]:[]),k.length>0&&!k.includes(t.image)&&(t.image=k[0]),c.value=t.image,c.disabled=k.length===0,i("skImageHint").textContent=g.length===0?"Add your own: put PNG, JPG or WEBP images into Documents\\kute\\skies, then press Refresh":"Put PNG, JPG or WEBP images into Documents\\kute\\skies"},p=i("skSwatches");for(let[g,b,v]of Uw){let k=document.createElement("div");k.className="skSwatch",k.title=g,k.style.background=`linear-gradient(${b}, ${v})`,k.onclick=()=>{t.zenith=b,t.horizon=v,a.value=b,l.value=v,d()},p.append(k)}a.value=t.zenith.toLowerCase(),l.value=t.horizon.toLowerCase(),a.oninput=()=>{t.zenith=a.value,d()},l.oninput=()=>{t.horizon=l.value,d()},c.onchange=()=>{t.image=c.value},i("skModeGradient").onclick=()=>{t.mode="gradient",d()},i("skModeImage").onclick=()=>{t.mode="image",d()},i("skOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, skies"),i("skRefresh").onclick=()=>h();let m=new AbortController,f=()=>{m.abort(),o.remove(),this.saveConfig(t)};i("skDone").onclick=f,o.addEventListener("mousedown",g=>{g.target===o&&f()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),f())},{signal:m.signal,capture:!0}),d(),document.body.append(o),await h()}},Ww=new Ka});var _h,Nh=w(()=>{_h='

              Diagnostics Report

              These are all the files that will be included. You can choose what to exclude, but keeping all of them is recommended.
              Collecting...
              Close
              Save dump
              '});var zh={};A(zh,{createCodeEditor:()=>Bh,createEditorView:()=>fo,highlight:()=>tr,languageFor:()=>Ga});function tr(s,e="js"){if(e==="text")return er(s);let t=e==="css",o="",n=0;for(let r of s.matchAll(t?Zw:Jw)){let i=r.index??0,[a]=r,l="";if(t){let[,c,d,h,p,m]=r;if(c)l="c";else if(d)l="s";else if(h)l="k";else if(p)l="n";else if(m){let f=i+m.length;s[f]==="("?l="f":(m.startsWith("--")||Qw(s,f))&&(l="l")}}else{let[,c,d,h,p]=r;c?l="c":d?l=e==="json"&&/^\s*:/.test(s.slice(i+a.length,i+a.length+20))?"p":"s":h?l="n":p&&(Yw.has(p)?l="k":Xw.has(p)?l="l":/^\s*\(/.test(s.slice(i+p.length,i+p.length+40))&&(l="f"))}l&&(o+=er(s.slice(n,i))+`${er(a)}`,n=i+a.length)}return o+er(s.slice(n))}function Bh(s,e,{onSave:t,onDirtyChange:o,onChange:n,language:r="js"}){s.innerHTML=`
              +
              `;let i=s.querySelector(".editorGutter"),a=s.querySelector("pre"),l=s.querySelector("code"),c=s.querySelector("textarea");c.value=e;let d=e,h=!1,p=0,m=0,f=()=>{a.scrollTop=c.scrollTop,a.scrollLeft=c.scrollLeft,i.scrollTop=c.scrollTop},g=()=>{m=0;let{value:k}=c;l.innerHTML=`${tr(k,r)} `;let E=k.split(` -`).length;E!==p&&(p=E,i.textContent=Array.from({length:E},(x,$)=>$+1).join(` -`)),f();let L=k!==d;L!==h&&(h=L,o(h))},b=k=>{document.execCommand("insertText",!1,k)},v=()=>{g(),n?.(c.value)};return c.addEventListener("input",()=>{c.value.length<15e4?v():m||(m=setTimeout(v,150))}),c.addEventListener("scroll",f),c.addEventListener("keydown",k=>{if((k.ctrlKey||k.metaKey)&&k.key.toLowerCase()==="s"){k.preventDefault(),t();return}if(k.key==="Tab"&&!k.ctrlKey&&!k.altKey){k.preventDefault();let{selectionStart:E,selectionEnd:L,value:x}=c,$=x.lastIndexOf(` -`,E-1)+1;if(k.shiftKey){let I=/^ {1,4}/.exec(x.slice($))?.[0].length??0;if(!I)return;c.setSelectionRange($,$+I),document.execCommand("delete"),c.setSelectionRange(Math.max($,E-I),Math.max($,L-I));return}b(" ");return}if(k.key==="Enter"&&!k.ctrlKey&&!k.altKey&&!k.shiftKey){k.preventDefault();let{selectionStart:E,value:L}=c,x=L.lastIndexOf(` -`,E-1)+1,$=L.slice(x,E),I=/^\s*/.exec($)?.[0]??"",_=r!=="text"&&/[{[(]\s*$/.test($)?" ":"";b(` -${I}${_}`)}}),g(),{getValue:()=>c.value,isDirty:()=>h,markSaved(k=c.value){d=k,g()},focus(){c.focus(),c.setSelectionRange(0,0)}}}function po(s,{title:e,content:t,language:o,isNew:n=!1,onSave:r,onClose:i,onChange:a}){s.textContent="";let l=St("div","editorView"),c=St("div","editorBar"),d=St("div","editorFile",e),h=St("span","dirty",n?" (new, not saved yet)":"");d.append(h);let p=St("div","btn primary","Save"),m=St("div","btn","Save & close"),f=St("div","btn","Close");p.onclick=()=>r(!1),m.onclick=()=>r(!0),f.onclick=i,c.append(d,p,m,f);let g=St("div","");g.style.cssText="display:flex;flex:1 1 auto;min-height:0",l.append(c,g,St("div","editorKeys","Ctrl+S save \xB7 Ctrl+Z / Ctrl+Y undo, redo \xB7 Tab / Shift+Tab indent \xB7 Esc close")),s.append(l);let b=Ph(g,t,{language:o,onChange:a,onSave:()=>r(!1),onDirtyChange:v=>{h.textContent=v?" \u25CF unsaved":""}});return b.focus(),{editor:b,bar:c,saveButton:p}}var jw,Uw,Gw,Zn,Ww,ja,Vw,St,Oo=w(()=>{"use strict";jw=new Set("async await break case catch class const continue debugger default delete do else export extends finally for function if import in instanceof let new of return static super switch throw try typeof var void while with yield get set".split(" ")),Uw=new Set(["true","false","null","undefined","this","NaN","Infinity"]),Gw=/(\/\/[^\n]*|\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?|`(?:[^`\\]|\\[\s\S])*`?)|(\b\d[\d_]*(?:\.[\d_]+)?(?:e[+-]?\d+)?n?\b|\b0x[\da-fA-F_]+n?\b)|([A-Za-z_$][\w$]*)/g,Zn=s=>s.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">"),Ww=/(\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?)|(@[\w-]+|!\s*important\b)|(#[\da-fA-F]{3,8}\b|-?(?:\d*\.)?\d+(?:e[+-]?\d+)?(?:%|[a-zA-Z]+)?)|(-?-?[a-zA-Z_][\w-]*)/g,ja=s=>{let e=s.slice(s.lastIndexOf(".")+1).toLowerCase();return e==="css"?"css":e==="json"?"json":["js","mjs"].includes(e)?"js":"text"},Vw=(s,e)=>/^\s*:[^{};]*(?:[;}]|$)/.test(s.slice(e,e+400));St=(s,e,t="")=>{let o=document.createElement(s);return o.className=e,o.textContent=t,o}});var Wa={};A(Wa,{default:()=>tk});function Ua(s){return s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`}function Zw(){let s=new Date;return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}function Qw(){let s=document.createElement("canvas").getContext("webgl2");if(!s)return null;let e=s.getExtension("WEBGL_debug_renderer_info"),t=e?{vendor:String(s.getParameter(e.UNMASKED_VENDOR_WEBGL)),renderer:String(s.getParameter(e.UNMASKED_RENDERER_WEBGL))}:null;return s.getExtension("WEBGL_lose_context")?.loseContext(),t}function ek(){let s={};for(let n=0;n{"use strict";Lh();D();Oo();Yw="diagnostics",Xw="kro_setngss_",Jw=256*1024;Ga=class{constructor(){this.overlay=null,this.shadow=null,this.entries=[],this.excluded=new Set,this.compressed=0,this.onMessage=e=>this.receive(e.data),this.onKey=e=>{e.key==="Escape"&&this.close()},u.diagnostics={open:()=>this.open()}}open(){if(!u.hostFeatures?.includes(Yw)){u.showNotification("The Diagnostics Report needs a newer Kute",!1,4);return}if(this.overlay)return;this.entries=[],this.excluded.clear(),this.overlay=document.createElement("div"),this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let e=document.createElement("div");this.overlay.append(e),this.shadow=e.attachShadow({mode:"open"}),this.shadow.innerHTML=Rh,this.element("dgClose").onclick=()=>this.close(),this.element("dgSave").onclick=()=>this.save(),this.overlay.addEventListener("mousedown",t=>{t.target===this.overlay&&this.close()}),document.addEventListener("keydown",this.onKey),window.chrome.webview.addEventListener("message",this.onMessage),document.body.append(this.overlay),window.chrome.webview.postMessage(`diagnostics-collect ${JSON.stringify(ek())}`)}close(){window.chrome.webview.removeEventListener("message",this.onMessage),document.removeEventListener("keydown",this.onKey),this.overlay?.remove(),this.overlay=null,this.shadow=null,this.entries=[]}element(e){return this.shadow?.querySelector(`#${e}`)}receive(e){if(this.shadow){if(e?.diagnostics)this.entries=e.diagnostics.entries??[],this.compressed=e.diagnostics.compressed??0,this.element("dgSave").classList.remove("dgBusy"),this.renderList(),this.select(this.entries.find(t=>t.name!=="manifest.json")?.name??"manifest.json");else if(e?.diagnosticsSaved){let{file:t,error:o}=e.diagnosticsSaved;if(this.element("dgSave").classList.remove("dgBusy"),o){u.showNotification(`Could not save the report: ${o}`,!1,5);return}u.showNotification(`Saved ${t} to your Downloads folder`,!1,5),this.close()}}}renderList(){let e=this.element("dgEntries");e.replaceChildren();for(let t of this.entries){let o=document.createElement("div");o.className="dgEntry",o.dataset.name=t.name;let n=document.createElement("input");n.type="checkbox",n.checked=!this.excluded.has(t.name),n.disabled=t.name==="manifest.json",n.onclick=l=>{l.stopPropagation(),n.checked?this.excluded.delete(t.name):this.excluded.add(t.name),o.classList.toggle("dgOff",!n.checked),this.renderTotal()};let r=document.createElement("div"),i=document.createElement("span");i.className="dgName",i.textContent=t.name;let a=document.createElement("span");a.className="dgSize",a.textContent=Ua(t.bytes),r.append(i,a),o.append(n,r),o.onclick=()=>this.select(t.name),e.append(o)}this.renderTotal()}select(e){let t=this.entries.find(n=>n.name===e);if(!t)return;for(let n of this.element("dgEntries").querySelectorAll(".dgEntry"))n.classList.toggle("dgSelected",n.dataset.name===e);this.element("dgNote").textContent=t.note;let o=this.element("dgText");t.kind==="binary"?o.textContent=`${t.name}: ${Ua(t.bytes)} of binary data, goes into the file as it is.`:t.kind==="json"&&!t.truncated&&(t.text??"").length<=Jw?o.innerHTML=Qn(t.text??"","json"):o.textContent=t.truncated?`${t.text} +`).length;E!==p&&(p=E,i.textContent=Array.from({length:E},(y,C)=>C+1).join(` +`)),f();let L=k!==d;L!==h&&(h=L,o(h))},b=k=>{document.execCommand("insertText",!1,k)},v=()=>{g(),n?.(c.value)};return c.addEventListener("input",()=>{c.value.length<15e4?v():m||(m=setTimeout(v,150))}),c.addEventListener("scroll",f),c.addEventListener("keydown",k=>{if((k.ctrlKey||k.metaKey)&&k.key.toLowerCase()==="s"){k.preventDefault(),t();return}if(k.key==="Tab"&&!k.ctrlKey&&!k.altKey){k.preventDefault();let{selectionStart:E,selectionEnd:L,value:y}=c,C=y.lastIndexOf(` +`,E-1)+1;if(k.shiftKey){let I=/^ {1,4}/.exec(y.slice(C))?.[0].length??0;if(!I)return;c.setSelectionRange(C,C+I),document.execCommand("delete"),c.setSelectionRange(Math.max(C,E-I),Math.max(C,L-I));return}b(" ");return}if(k.key==="Enter"&&!k.ctrlKey&&!k.altKey&&!k.shiftKey){k.preventDefault();let{selectionStart:E,value:L}=c,y=L.lastIndexOf(` +`,E-1)+1,C=L.slice(y,E),I=/^\s*/.exec(C)?.[0]??"",_=r!=="text"&&/[{[(]\s*$/.test(C)?" ":"";b(` +${I}${_}`)}}),g(),{getValue:()=>c.value,isDirty:()=>h,markSaved(k=c.value){d=k,g()},focus(){c.focus(),c.setSelectionRange(0,0)}}}function fo(s,{title:e,content:t,language:o,isNew:n=!1,onSave:r,onClose:i,onChange:a}){s.textContent="";let l=Et("div","editorView"),c=Et("div","editorBar"),d=Et("div","editorFile",e),h=Et("span","dirty",n?" (new, not saved yet)":"");d.append(h);let p=Et("div","btn primary","Save"),m=Et("div","btn","Save & close"),f=Et("div","btn","Close");p.onclick=()=>r(!1),m.onclick=()=>r(!0),f.onclick=i,c.append(d,p,m,f);let g=Et("div","");g.style.cssText="display:flex;flex:1 1 auto;min-height:0",l.append(c,g,Et("div","editorKeys","Ctrl+S save \xB7 Ctrl+Z / Ctrl+Y undo, redo \xB7 Tab / Shift+Tab indent \xB7 Esc close")),s.append(l);let b=Bh(g,t,{language:o,onChange:a,onSave:()=>r(!1),onDirtyChange:v=>{h.textContent=v?" \u25CF unsaved":""}});return b.focus(),{editor:b,bar:c,saveButton:p}}var Yw,Xw,Jw,er,Zw,Ga,Qw,Et,Do=w(()=>{"use strict";Yw=new Set("async await break case catch class const continue debugger default delete do else export extends finally for function if import in instanceof let new of return static super switch throw try typeof var void while with yield get set".split(" ")),Xw=new Set(["true","false","null","undefined","this","NaN","Infinity"]),Jw=/(\/\/[^\n]*|\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?|`(?:[^`\\]|\\[\s\S])*`?)|(\b\d[\d_]*(?:\.[\d_]+)?(?:e[+-]?\d+)?n?\b|\b0x[\da-fA-F_]+n?\b)|([A-Za-z_$][\w$]*)/g,er=s=>s.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">"),Zw=/(\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?)|(@[\w-]+|!\s*important\b)|(#[\da-fA-F]{3,8}\b|-?(?:\d*\.)?\d+(?:e[+-]?\d+)?(?:%|[a-zA-Z]+)?)|(-?-?[a-zA-Z_][\w-]*)/g,Ga=s=>{let e=s.slice(s.lastIndexOf(".")+1).toLowerCase();return e==="css"?"css":e==="json"?"json":["js","mjs"].includes(e)?"js":"text"},Qw=(s,e)=>/^\s*:[^{};]*(?:[;}]|$)/.test(s.slice(e,e+400));Et=(s,e,t="")=>{let o=document.createElement(s);return o.className=e,o.textContent=t,o}});var Ya={};A(Ya,{default:()=>ik});function Wa(s){return s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`}function sk(){let s=new Date;return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}function nk(){let s=document.createElement("canvas").getContext("webgl2");if(!s)return null;let e=s.getExtension("WEBGL_debug_renderer_info"),t=e?{vendor:String(s.getParameter(e.UNMASKED_VENDOR_WEBGL)),renderer:String(s.getParameter(e.UNMASKED_RENDERER_WEBGL))}:null;return s.getExtension("WEBGL_lose_context")?.loseContext(),t}function rk(){let s={};for(let n=0;n{"use strict";Nh();F();Do();ek="diagnostics",tk="kro_setngss_",ok=256*1024;Va=class{constructor(){this.overlay=null,this.shadow=null,this.entries=[],this.excluded=new Set,this.compressed=0,this.onMessage=e=>this.receive(e.data),this.onKey=e=>{e.key==="Escape"&&this.close()},u.diagnostics={open:()=>this.open()}}open(){if(!u.hostFeatures?.includes(ek)){u.showNotification("The Diagnostics Report needs a newer Kute",!1,4);return}if(this.overlay)return;this.entries=[],this.excluded.clear(),this.overlay=document.createElement("div"),this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let e=document.createElement("div");this.overlay.append(e),this.shadow=e.attachShadow({mode:"open"}),this.shadow.innerHTML=_h,this.element("dgClose").onclick=()=>this.close(),this.element("dgSave").onclick=()=>this.save(),this.overlay.addEventListener("mousedown",t=>{t.target===this.overlay&&this.close()}),document.addEventListener("keydown",this.onKey),window.chrome.webview.addEventListener("message",this.onMessage),document.body.append(this.overlay),window.chrome.webview.postMessage(`diagnostics-collect ${JSON.stringify(rk())}`)}close(){window.chrome.webview.removeEventListener("message",this.onMessage),document.removeEventListener("keydown",this.onKey),this.overlay?.remove(),this.overlay=null,this.shadow=null,this.entries=[]}element(e){return this.shadow?.querySelector(`#${e}`)}receive(e){if(this.shadow){if(e?.diagnostics)this.entries=e.diagnostics.entries??[],this.compressed=e.diagnostics.compressed??0,this.element("dgSave").classList.remove("dgBusy"),this.renderList(),this.select(this.entries.find(t=>t.name!=="manifest.json")?.name??"manifest.json");else if(e?.diagnosticsSaved){let{file:t,error:o}=e.diagnosticsSaved;if(this.element("dgSave").classList.remove("dgBusy"),o){u.showNotification(`Could not save the report: ${o}`,!1,5);return}u.showNotification(`Saved ${t} to your Downloads folder`,!1,5),this.close()}}}renderList(){let e=this.element("dgEntries");e.replaceChildren();for(let t of this.entries){let o=document.createElement("div");o.className="dgEntry",o.dataset.name=t.name;let n=document.createElement("input");n.type="checkbox",n.checked=!this.excluded.has(t.name),n.disabled=t.name==="manifest.json",n.onclick=l=>{l.stopPropagation(),n.checked?this.excluded.delete(t.name):this.excluded.add(t.name),o.classList.toggle("dgOff",!n.checked),this.renderTotal()};let r=document.createElement("div"),i=document.createElement("span");i.className="dgName",i.textContent=t.name;let a=document.createElement("span");a.className="dgSize",a.textContent=Wa(t.bytes),r.append(i,a),o.append(n,r),o.onclick=()=>this.select(t.name),e.append(o)}this.renderTotal()}select(e){let t=this.entries.find(n=>n.name===e);if(!t)return;for(let n of this.element("dgEntries").querySelectorAll(".dgEntry"))n.classList.toggle("dgSelected",n.dataset.name===e);this.element("dgNote").textContent=t.note;let o=this.element("dgText");t.kind==="binary"?o.textContent=`${t.name}: ${Wa(t.bytes)} of binary data, goes into the file as it is.`:t.kind==="json"&&!t.truncated&&(t.text??"").length<=ok?o.innerHTML=tr(t.text??"","json"):o.textContent=t.truncated?`${t.text} -... (the preview ends here, the file holds all of it)`:t.text??"",o.scrollTop=0}renderTotal(){let e=this.entries.filter(r=>!this.excluded.has(r.name)),t=e.reduce((r,i)=>r+i.bytes,0),o=this.entries.reduce((r,i)=>r+i.bytes,0),n=o>0?this.compressed*t/o:0;this.element("dgTotal").textContent=`${e.length} of ${this.entries.length} files, about ${Ua(Math.round(n))} as a file`}save(){this.element("dgSave").classList.add("dgBusy"),window.chrome.webview.postMessage(`diagnostics-save ${JSON.stringify([...this.excluded])}`)}},tk=new Ga});var Nh={};A(Nh,{OFFICIAL_MAPS:()=>er,mapImageUrl:()=>Bs,mapLabel:()=>Xa,officialMaps:()=>Ja});function Ja(){return Ya??=fetch(ok,{signal:AbortSignal.timeout(4e3)}).then(s=>s.json()).then(s=>{let e=[];for(let t of Array.isArray(s?.data)?s.data:[])Number.isInteger(t?.id)&&t.id>=0&&typeof t?.name=="string"&&e.push([t.id,t.name]);if(e.length===0)throw new Error("empty map list");return e}).catch(()=>(Ya=null,er.map((s,e)=>[e,s]))),Ya}var er,ok,Bs,Xa,Ya,tr=w(()=>{"use strict";er=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Shipment","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Bureau","Tortuga","Tropicano","Krunk_Plaza","Arena","Habitat","Atomic","Old_Burg","Throwback","Stockade","Facility","Clockwork","Laboratory","Shipyard","Soul Sanctum","Bazaar","Erupt","HQ","Khepri","Lush","Vivo","Slide Moonlight","Eterno Simulator","Stalk Factory","Eterno Jump","Frontier","Bastion","Piazza","Barnyard"],ok="https://gapi.svc.krunker.io/maps",Bs=s=>`https://assets.krunker.io/img/maps/map_${s}.png`,Xa=s=>s.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),Ya=null});var _h=we((p3,sk)=>{sk.exports="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"});var Bh=we((h3,nk)=>{nk.exports=`

              Match Found Sound

              Plays in Kute's queue window when it finds a match
              Play
              Open folder
              Refresh
              Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds
              Done
              `});var Dh={};A(Dh,{chosenSound:()=>Qa,default:()=>ak,kuteSound:()=>zs,volume:()=>mo});function Hh(s,e){return new Promise(t=>{let o=0,n=r=>{let i=e(r.data);i!==void 0&&(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(i))};o=setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},ik),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(s)})}async function Qa(){let s=String(u.settings.data.queueSoundFile??ho);if(s!==ho&&zh()){let e=await Oh(s);if(e?.data)return e.data}return zs()}var ho,rk,ik,zh,mo,zs,Oh,Za,ak,el=w(()=>{"use strict";D();ho="",rk=40,ik=5e3,zh=()=>u.hostFeatures?.includes("custom-sounds")??!1,mo=()=>Math.min(1,Math.max(0,Number(u.settings.data.queueSoundVolume??rk)/100||0));zs=()=>Promise.resolve().then(()=>ue(_h(),1)).then(s=>s.default),Oh=s=>Hh(`sound-get ${JSON.stringify({name:s})}`,e=>e?.sound?.name===s?e.sound:void 0);Za=class{constructor(){this.context=null,this.playing=null,this.gain=null,u.queueSound={showOptions:()=>this.showOptions()}}async play(e){this.stop(),this.context??=new AudioContext,this.context.state==="suspended"&&await this.context.resume();let t=Uint8Array.from(atob(e),i=>i.charCodeAt(0)),o=await this.context.decodeAudioData(t.buffer),n=this.context.createGain();n.gain.value=mo(),n.connect(this.context.destination);let r=this.context.createBufferSource();r.buffer=o,r.connect(n),r.onended=()=>{this.playing===r&&(this.playing=null),r.disconnect(),n.disconnect()},r.start(),this.playing=r,this.gain=n}stop(){this.playing?.stop(),this.playing=null}async showOptions(){let e=await Promise.resolve().then(()=>ue(Bh(),1)),t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default;let r=b=>n.querySelector(`#${b}`),i=r("qsSound"),a=r("qsVolume"),l=Math.round(mo()*100),c=r("qsError"),d=String(u.settings.data.queueSoundFile??ho),h=b=>{c.textContent=b,c.hidden=!b},p=async()=>{let b=zh(),v=b?await Hh("sound-list",L=>Array.isArray(L?.sounds)?L.sounds:void 0)??[]:[],k=[new Option("Kute's sound",ho)];if(v.length){let L=document.createElement("optgroup");L.label="Your sounds",L.append(...v.map(x=>new Option(x,x))),k.push(L)}d!==ho&&!v.includes(d)&&k.push(new Option(`${d} (missing)`,d)),i.replaceChildren(...k),i.value=d,r("qsOpenFolder").hidden=!b,r("qsRefresh").hidden=!b;let E="Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds";b?v.length===0&&(E="Add your own: put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds, then press Refresh"):E="Your own sounds need a newer Kute. Update Kute to use them.",r("qsFileHint").textContent=E},m=()=>{r("qsVolumeValue").textContent=`${a.value} %`};a.value=String(l),m(),a.oninput=()=>{u.settings.data.queueSoundVolume=Number(a.value),m(),this.playing&&this.gain&&(this.gain.gain.value=mo())},i.onchange=()=>{d=i.value,h("")},r("qsPlay").onclick=async()=>{h(""),mo()===0&&h("The volume is at 0.");try{if(d===ho){await this.play(await zs());return}let b=await Oh(d);if(!b?.data){h(b?.error??"Kute did not answer.");return}await this.play(b.data)}catch{h("This file cannot be played. Try MP3, OGG or WAV.")}},r("qsOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, sounds"),r("qsRefresh").onclick=()=>p();let f=new AbortController,g=()=>{f.abort(),this.stop(),t.remove(),Number(a.value)!==l&&window.chrome.webview.postMessage(`set-config-json queueSoundVolume ${Number(a.value)}`),d!==String(u.settings.data.queueSoundFile??ho)&&(u.settings.data.queueSoundFile=d,window.chrome.webview.postMessage(`set-config-json queueSoundFile ${JSON.stringify(d)}`))};r("qsDone").onclick=g,t.addEventListener("mousedown",b=>{b.target===t&&g()}),document.addEventListener("keydown",b=>{b.key==="Escape"&&(b.stopPropagation(),g())},{signal:f.signal,capture:!0}),document.body.append(t),await p()}},ak=new Za});var Fh=we((f3,lk)=>{lk.exports=' External Queue
              Ready
              00:00:00

              Select Maps

              '});var qh=we((g3,ck)=>{ck.exports='(()=>{const{info:r}=window;function o(e){const n=document.querySelector(e);if(!n)throw new Error(`queue window: ${e} is missing`);return n}const y=r.maps,R={na:"North America",eu:"Europe",as:"Asia"},T=60,O=o("#queueStatus"),D=o("#statusArea"),q=o("#queueTimerDisplay"),A=o("#regionCheckboxes"),k=o("#matchPopupOverlay"),B=o("#countDownTimer"),$=o("#foundRegion"),_=o("#mapSelectorButton"),p=o("#mapSelectorOverlay"),j=o("#closeMapSelector"),I=o("#mapGrid"),s=o("#queueButton"),G=o("#closeButton");let m=!1,g=!1,N=0,E=0,v=0,w=null,l=null,S=null,u=null;const i=new Set,h=window.opener?.localStorage??window.localStorage;function x(){const e=Array.from(A.querySelectorAll("input:checked"),n=>n.id);h.setItem("queue_selectedRegions",JSON.stringify(e)),h.setItem("queue_newSelectedMaps",JSON.stringify(Array.from(i)))}function J(){try{for(const n of JSON.parse(h.getItem("queue_selectedRegions")??"[]")){const t=document.getElementById(n);t&&(t.checked=!0)}const e=h.getItem("queue_newSelectedMaps");for(const n of e?JSON.parse(e):Object.values(y).map(t=>t.number))i.add(Number(n))}catch{for(const e of Object.values(y))i.add(e.number)}}function C(e){const n=t=>String(Math.floor(t)).padStart(2,"0");return`${n(e/3600)}:${n(e%3600/60)}:${n(e%60)}`}function b(e,n){O.textContent=n,O.classList.toggle("active",e),D.classList.toggle("active",e)}function d(e="Ready"){m=!1,g=!1,clearInterval(E),s.textContent="Start Queue",s.classList.remove("in-queue"),s.disabled=!1,q.textContent="00:00:00",b(!1,e)}async function Q(){l=new AudioContext,l.state==="suspended"&&await l.resume();const e=n=>l.decodeAudioData(Uint8Array.from(atob(n),t=>t.charCodeAt(0)).buffer);try{S=await e(r.sound)}catch{S=await e(r.fallbackSound??r.sound)}}function L(){u&&(u.stop(),u.disconnect(),u=null)}function P(){if(!S||l?.state!=="running")return;L();let e=1;try{e=r.volume?.()??1}catch{}if(!(e>0))return;const n=l.createGain();n.gain.value=e,n.connect(l.destination);const t=l.createBufferSource();t.buffer=S,t.connect(n),t.start(0),u=t,t.onended=()=>{u===t&&(u=null),t.disconnect(),n.disconnect()}}function U(e){const n=Date.now()+e,t=()=>{const a=Math.ceil((n-Date.now())/1e3);if(a<=0){b(!1,"Ready"),s.disabled=!1;return}b(!1,`Cooldown: ${C(a)}`),s.disabled=!0,setTimeout(t,1e3)};t()}function z(e,n){P(),k.classList.add("active");const t=Object.entries(y).find(([,f])=>f.number===Number.parseInt(e,10))?.[0]??"unknown",a=R[n.slice(2)]??n.slice(2);$.textContent=`${a}, ${t}`;const c=Date.now();clearInterval(v),v=setInterval(()=>{const f=Math.max(0,T-Math.floor((Date.now()-c)/1e3));B.textContent=C(f),f<=0&&(clearInterval(v),k.classList.remove("active"))},1e3),d()}function W(){const e=Array.from(A.querySelectorAll("input:checked"),a=>a.value);if(e.length===0||i.size===0){d(e.length===0?"Select at least one region":"Select at least one map");return}const n=`wss://gamefrontend.svc.krunker.io/v1/matchmaking/queue?token=${r.token}&maps=${Array.from(i).join(",")}®ions=${e.join(",")}`;let t;try{t=new WebSocket(n)}catch{d("Connection failed");return}w=t,t.onerror=()=>d("Connection error"),t.onclose=()=>{(m||g)&&d()},t.onopen=()=>{m=!0,g=!1,N=Date.now(),s.textContent="Leave Queue",s.classList.add("in-queue"),s.disabled=!1,b(!0,"In queue"),q.textContent=C(0),E=setInterval(()=>{q.textContent=C((Date.now()-N)/1e3)},1e3)},t.onmessage=a=>{const c=JSON.parse(a.data);if(c.type==="QUEUE_STATUS"&&c.payload?.status==="MATCHED"){const f=c.payload.assignment.extensions;z(String(f.map).trim(),String(f.region))}else c.type==="ERROR"&&c.payload?.code==="COOLDOWN"?(d(),t.close(),U(Number(c.payload.payload.cooldown))):c.type==="INTERNAL_ERROR"&&(d(),t.close())}}function F(e){const n=!i.has(e);n?i.add(e):i.delete(e),I.querySelector(`.map-item[data-map="${e}"]`)?.classList.toggle("selected",n),m&&w?.close(),x()}function H(){I.replaceChildren();for(const[e,n]of Object.entries(y)){const t=document.createElement("div");t.className="map-item",t.dataset.map=String(n.number),t.classList.toggle("selected",i.has(n.number));const a=document.createElement("img");a.src=n.url,a.loading="lazy";const c=document.createElement("span");c.textContent=e,t.append(a,c),t.onclick=()=>F(n.number),I.append(t)}}J();const M=r.region?document.getElementById(r.region):null;M&&(M.checked=!0),H(),_.onclick=()=>p.classList.add("active"),j.onclick=()=>p.classList.remove("active"),p.onclick=e=>{e.target===p&&p.classList.remove("active")},s.onclick=async()=>{if(!g){if(m){w?.close();return}s.disabled=!0,g=!0;try{S||await Q()}catch{}W()}},G.onclick=()=>{clearInterval(v),k.classList.remove("active"),L()};const K=()=>{m&&w?.close(),x()};for(const e of A.querySelectorAll("input"))e.onclick=K})();\n'});var Kh={};function uk(){let s=window.screen.width,e=window.screen.height,t=850,o=350,n=(s-t)/2,r=(e-o)/2,i=window.open("about:blank","_blank",`width=${t},height=${o},left=${n},top=${r}`);if(!i)return;let a=(U(".region-indicator").textContent??"").split(": ")[1];switch(a){case"North America":a="na";break;case"Europe":a="eu";break;case"Asia":a="as";break;default:break}let l=localStorage.getItem("__FRVR_auth_access_token")??"";l=l.replace(/"/g,""),l=l.replace("/","");let c=localStorage.getItem("s_rankedAllRegions")==="true";Promise.all([Promise.resolve().then(()=>ue(Fh(),1)),Promise.resolve().then(()=>ue(qh(),1)),Qa(),zs(),Ja()]).then(([d,h,p,m,f])=>{let g=Object.fromEntries(f.map(([k,E])=>[Xa(E),{url:Bs(k),number:k}]));i.info={allRegions:c,token:l,region:a,sound:p,fallbackSound:m,volume:mo,maps:g};let b=new DOMParser().parseFromString(d.default,"text/html");i.document.head.append(...Array.from(b.head.children,k=>i.document.importNode(k,!0))),i.document.body.append(...Array.from(b.body.children,k=>i.document.importNode(k,!0)));let v=i.document.createElement("script");v.textContent=h.default,i.document.head.append(v)})}var or,dk,tl=w(()=>{"use strict";Ae();tr();el();or=document.createElement("button");or.textContent="open_in_new";or.style=`background-color: #5ce05a; +... (the preview ends here, the file holds all of it)`:t.text??"",o.scrollTop=0}renderTotal(){let e=this.entries.filter(r=>!this.excluded.has(r.name)),t=e.reduce((r,i)=>r+i.bytes,0),o=this.entries.reduce((r,i)=>r+i.bytes,0),n=o>0?this.compressed*t/o:0;this.element("dgTotal").textContent=`${e.length} of ${this.entries.length} files, about ${Wa(Math.round(n))} as a file`}save(){this.element("dgSave").classList.add("dgBusy"),window.chrome.webview.postMessage(`diagnostics-save ${JSON.stringify([...this.excluded])}`)}},ik=new Va});var Hh={};A(Hh,{OFFICIAL_MAPS:()=>or,mapImageUrl:()=>Hs,mapLabel:()=>Za,officialMaps:()=>Qa});function Qa(){return Ja??=fetch(ak,{signal:AbortSignal.timeout(4e3)}).then(s=>s.json()).then(s=>{let e=[];for(let t of Array.isArray(s?.data)?s.data:[])Number.isInteger(t?.id)&&t.id>=0&&typeof t?.name=="string"&&e.push([t.id,t.name]);if(e.length===0)throw new Error("empty map list");return e}).catch(()=>(Ja=null,or.map((s,e)=>[e,s]))),Ja}var or,ak,Hs,Za,Ja,sr=w(()=>{"use strict";or=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Shipment","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Bureau","Tortuga","Tropicano","Krunk_Plaza","Arena","Habitat","Atomic","Old_Burg","Throwback","Stockade","Facility","Clockwork","Laboratory","Shipyard","Soul Sanctum","Bazaar","Erupt","HQ","Khepri","Lush","Vivo","Slide Moonlight","Eterno Simulator","Stalk Factory","Eterno Jump","Frontier","Bastion","Piazza","Barnyard"],ak="https://gapi.svc.krunker.io/maps",Hs=s=>`https://assets.krunker.io/img/maps/map_${s}.png`,Za=s=>s.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),Ja=null});var Oh=we((v3,lk)=>{lk.exports="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"});var Fh=we((w3,ck)=>{ck.exports=`

              Match Found Sound

              Plays in Kute's queue window when it finds a match
              Play
              Open folder
              Refresh
              Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds
              Done
              `});var jh={};A(jh,{chosenSound:()=>tl,default:()=>pk,kuteSound:()=>Os,volume:()=>bo});function qh(s,e){return new Promise(t=>{let o=0,n=r=>{let i=e(r.data);i!==void 0&&(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(i))};o=setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},uk),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(s)})}async function tl(){let s=String(u.settings.data.queueSoundFile??go);if(s!==go&&Dh()){let e=await Kh(s);if(e?.data)return e.data}return Os()}var go,dk,uk,Dh,bo,Os,Kh,el,pk,ol=w(()=>{"use strict";F();go="",dk=40,uk=5e3,Dh=()=>u.hostFeatures?.includes("custom-sounds")??!1,bo=()=>Math.min(1,Math.max(0,Number(u.settings.data.queueSoundVolume??dk)/100||0));Os=()=>Promise.resolve().then(()=>ue(Oh(),1)).then(s=>s.default),Kh=s=>qh(`sound-get ${JSON.stringify({name:s})}`,e=>e?.sound?.name===s?e.sound:void 0);el=class{constructor(){this.context=null,this.playing=null,this.gain=null,u.queueSound={showOptions:()=>this.showOptions()}}async play(e){this.stop(),this.context??=new AudioContext,this.context.state==="suspended"&&await this.context.resume();let t=Uint8Array.from(atob(e),i=>i.charCodeAt(0)),o=await this.context.decodeAudioData(t.buffer),n=this.context.createGain();n.gain.value=bo(),n.connect(this.context.destination);let r=this.context.createBufferSource();r.buffer=o,r.connect(n),r.onended=()=>{this.playing===r&&(this.playing=null),r.disconnect(),n.disconnect()},r.start(),this.playing=r,this.gain=n}stop(){this.playing?.stop(),this.playing=null}async showOptions(){let e=await Promise.resolve().then(()=>ue(Fh(),1)),t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default;let r=b=>n.querySelector(`#${b}`),i=r("qsSound"),a=r("qsVolume"),l=Math.round(bo()*100),c=r("qsError"),d=String(u.settings.data.queueSoundFile??go),h=b=>{c.textContent=b,c.hidden=!b},p=async()=>{let b=Dh(),v=b?await qh("sound-list",L=>Array.isArray(L?.sounds)?L.sounds:void 0)??[]:[],k=[new Option("Kute's sound",go)];if(v.length){let L=document.createElement("optgroup");L.label="Your sounds",L.append(...v.map(y=>new Option(y,y))),k.push(L)}d!==go&&!v.includes(d)&&k.push(new Option(`${d} (missing)`,d)),i.replaceChildren(...k),i.value=d,r("qsOpenFolder").hidden=!b,r("qsRefresh").hidden=!b;let E="Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds";b?v.length===0&&(E="Add your own: put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds, then press Refresh"):E="Your own sounds need a newer Kute. Update Kute to use them.",r("qsFileHint").textContent=E},m=()=>{r("qsVolumeValue").textContent=`${a.value} %`};a.value=String(l),m(),a.oninput=()=>{u.settings.data.queueSoundVolume=Number(a.value),m(),this.playing&&this.gain&&(this.gain.gain.value=bo())},i.onchange=()=>{d=i.value,h("")},r("qsPlay").onclick=async()=>{h(""),bo()===0&&h("The volume is at 0.");try{if(d===go){await this.play(await Os());return}let b=await Kh(d);if(!b?.data){h(b?.error??"Kute did not answer.");return}await this.play(b.data)}catch{h("This file cannot be played. Try MP3, OGG or WAV.")}},r("qsOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, sounds"),r("qsRefresh").onclick=()=>p();let f=new AbortController,g=()=>{f.abort(),this.stop(),t.remove(),Number(a.value)!==l&&window.chrome.webview.postMessage(`set-config-json queueSoundVolume ${Number(a.value)}`),d!==String(u.settings.data.queueSoundFile??go)&&(u.settings.data.queueSoundFile=d,window.chrome.webview.postMessage(`set-config-json queueSoundFile ${JSON.stringify(d)}`))};r("qsDone").onclick=g,t.addEventListener("mousedown",b=>{b.target===t&&g()}),document.addEventListener("keydown",b=>{b.key==="Escape"&&(b.stopPropagation(),g())},{signal:f.signal,capture:!0}),document.body.append(t),await p()}},pk=new el});var Uh=we((y3,hk)=>{hk.exports=' External Queue
              Ready
              00:00:00

              Select Maps

              '});var Gh=we((x3,mk)=>{mk.exports='(()=>{const{info:r}=window;function o(e){const n=document.querySelector(e);if(!n)throw new Error(`queue window: ${e} is missing`);return n}const y=r.maps,R={na:"North America",eu:"Europe",as:"Asia"},T=60,O=o("#queueStatus"),D=o("#statusArea"),q=o("#queueTimerDisplay"),A=o("#regionCheckboxes"),k=o("#matchPopupOverlay"),B=o("#countDownTimer"),$=o("#foundRegion"),_=o("#mapSelectorButton"),p=o("#mapSelectorOverlay"),j=o("#closeMapSelector"),I=o("#mapGrid"),s=o("#queueButton"),G=o("#closeButton");let m=!1,g=!1,N=0,E=0,v=0,w=null,l=null,S=null,u=null;const i=new Set,h=window.opener?.localStorage??window.localStorage;function x(){const e=Array.from(A.querySelectorAll("input:checked"),n=>n.id);h.setItem("queue_selectedRegions",JSON.stringify(e)),h.setItem("queue_newSelectedMaps",JSON.stringify(Array.from(i)))}function J(){try{for(const n of JSON.parse(h.getItem("queue_selectedRegions")??"[]")){const t=document.getElementById(n);t&&(t.checked=!0)}const e=h.getItem("queue_newSelectedMaps");for(const n of e?JSON.parse(e):Object.values(y).map(t=>t.number))i.add(Number(n))}catch{for(const e of Object.values(y))i.add(e.number)}}function C(e){const n=t=>String(Math.floor(t)).padStart(2,"0");return`${n(e/3600)}:${n(e%3600/60)}:${n(e%60)}`}function b(e,n){O.textContent=n,O.classList.toggle("active",e),D.classList.toggle("active",e)}function d(e="Ready"){m=!1,g=!1,clearInterval(E),s.textContent="Start Queue",s.classList.remove("in-queue"),s.disabled=!1,q.textContent="00:00:00",b(!1,e)}async function Q(){l=new AudioContext,l.state==="suspended"&&await l.resume();const e=n=>l.decodeAudioData(Uint8Array.from(atob(n),t=>t.charCodeAt(0)).buffer);try{S=await e(r.sound)}catch{S=await e(r.fallbackSound??r.sound)}}function L(){u&&(u.stop(),u.disconnect(),u=null)}function P(){if(!S||l?.state!=="running")return;L();let e=1;try{e=r.volume?.()??1}catch{}if(!(e>0))return;const n=l.createGain();n.gain.value=e,n.connect(l.destination);const t=l.createBufferSource();t.buffer=S,t.connect(n),t.start(0),u=t,t.onended=()=>{u===t&&(u=null),t.disconnect(),n.disconnect()}}function U(e){const n=Date.now()+e,t=()=>{const a=Math.ceil((n-Date.now())/1e3);if(a<=0){b(!1,"Ready"),s.disabled=!1;return}b(!1,`Cooldown: ${C(a)}`),s.disabled=!0,setTimeout(t,1e3)};t()}function z(e,n){P(),k.classList.add("active");const t=Object.entries(y).find(([,f])=>f.number===Number.parseInt(e,10))?.[0]??"unknown",a=R[n.slice(2)]??n.slice(2);$.textContent=`${a}, ${t}`;const c=Date.now();clearInterval(v),v=setInterval(()=>{const f=Math.max(0,T-Math.floor((Date.now()-c)/1e3));B.textContent=C(f),f<=0&&(clearInterval(v),k.classList.remove("active"))},1e3),d()}function W(){const e=Array.from(A.querySelectorAll("input:checked"),a=>a.value);if(e.length===0||i.size===0){d(e.length===0?"Select at least one region":"Select at least one map");return}const n=`wss://gamefrontend.svc.krunker.io/v1/matchmaking/queue?token=${r.token}&maps=${Array.from(i).join(",")}®ions=${e.join(",")}`;let t;try{t=new WebSocket(n)}catch{d("Connection failed");return}w=t,t.onerror=()=>d("Connection error"),t.onclose=()=>{(m||g)&&d()},t.onopen=()=>{m=!0,g=!1,N=Date.now(),s.textContent="Leave Queue",s.classList.add("in-queue"),s.disabled=!1,b(!0,"In queue"),q.textContent=C(0),E=setInterval(()=>{q.textContent=C((Date.now()-N)/1e3)},1e3)},t.onmessage=a=>{const c=JSON.parse(a.data);if(c.type==="QUEUE_STATUS"&&c.payload?.status==="MATCHED"){const f=c.payload.assignment.extensions;z(String(f.map).trim(),String(f.region))}else c.type==="ERROR"&&c.payload?.code==="COOLDOWN"?(d(),t.close(),U(Number(c.payload.payload.cooldown))):c.type==="INTERNAL_ERROR"&&(d(),t.close())}}function F(e){const n=!i.has(e);n?i.add(e):i.delete(e),I.querySelector(`.map-item[data-map="${e}"]`)?.classList.toggle("selected",n),m&&w?.close(),x()}function H(){I.replaceChildren();for(const[e,n]of Object.entries(y)){const t=document.createElement("div");t.className="map-item",t.dataset.map=String(n.number),t.classList.toggle("selected",i.has(n.number));const a=document.createElement("img");a.src=n.url,a.loading="lazy";const c=document.createElement("span");c.textContent=e,t.append(a,c),t.onclick=()=>F(n.number),I.append(t)}}J();const M=r.region?document.getElementById(r.region):null;M&&(M.checked=!0),H(),_.onclick=()=>p.classList.add("active"),j.onclick=()=>p.classList.remove("active"),p.onclick=e=>{e.target===p&&p.classList.remove("active")},s.onclick=async()=>{if(!g){if(m){w?.close();return}s.disabled=!0,g=!0;try{S||await Q()}catch{}W()}},G.onclick=()=>{clearInterval(v),k.classList.remove("active"),L()};const K=()=>{m&&w?.close(),x()};for(const e of A.querySelectorAll("input"))e.onclick=K})();\n'});var Wh={};function gk(){let s=window.screen.width,e=window.screen.height,t=850,o=350,n=(s-t)/2,r=(e-o)/2,i=window.open("about:blank","_blank",`width=${t},height=${o},left=${n},top=${r}`);if(!i)return;let a=(U(".region-indicator").textContent??"").split(": ")[1];switch(a){case"North America":a="na";break;case"Europe":a="eu";break;case"Asia":a="as";break;default:break}let l=localStorage.getItem("__FRVR_auth_access_token")??"";l=l.replace(/"/g,""),l=l.replace("/","");let c=localStorage.getItem("s_rankedAllRegions")==="true";Promise.all([Promise.resolve().then(()=>ue(Uh(),1)),Promise.resolve().then(()=>ue(Gh(),1)),tl(),Os(),Qa()]).then(([d,h,p,m,f])=>{let g=Object.fromEntries(f.map(([k,E])=>[Za(E),{url:Hs(k),number:k}]));i.info={allRegions:c,token:l,region:a,sound:p,fallbackSound:m,volume:bo,maps:g};let b=new DOMParser().parseFromString(d.default,"text/html");i.document.head.append(...Array.from(b.head.children,k=>i.document.importNode(k,!0))),i.document.body.append(...Array.from(b.body.children,k=>i.document.importNode(k,!0)));let v=i.document.createElement("script");v.textContent=h.default,i.document.head.append(v)})}var nr,fk,sl=w(()=>{"use strict";Ae();sr();ol();nr=document.createElement("button");nr.textContent="open_in_new";nr.style=`background-color: #5ce05a; color: #ffffff; border-radius: 9px; padding: 20px 21px; @@ -180,20 +180,20 @@ ${I}${_}`)}}),g(),{getValue:()=>c.value,isDirty:()=>h,markSaved(k=c.value){d=k,g cursor: pointer; font-size: 20px; text-shadow: 2px 2px 0px black !important; - margin-left: 2px;`;dk=window.openRankedMenu;window.openRankedMenu=()=>{dk();let s=U(".footer-controls"),e=s.lastElementChild;s.insertBefore(or,e)};or.onclick=uk});var jh={};var pk,hk,mk,ol=w(()=>{"use strict";D();gn();window.chrome.webview.postMessage("drag, true");window.chrome.webview.postMessage("throttle, menu");pk=window.exportSettings;window.exportSettings=s=>(s||u.showNotification("Settings exported to Downloads!",!1,3),pk(s));hk=window.showWindow;window.showWindow=(...s)=>{switch(s[0]){case 3:case 53:window.chrome.webview.postMessage("throttle, game");break;case 15:case 26:case 52:case 9:case 44:case 43:case 40:case 38:case 50:case 17:case 39:case 51:case 16:case 34:window.chrome.webview.postMessage("throttle, menu");break;default:break}return hk(...s)};mk=window.closWind;window.closWind=(...s)=>(window.chrome.webview.postMessage("drag, true"),window.chrome.webview.postMessage("throttle, menu"),mk(...s));u.bindShoot=()=>{if(Dr()){window.changeCont("shoot",1,void 0);let s={key:"F20",code:"F20",keyCode:131,which:131,bubbles:!0,cancelable:!0};window.dispatchEvent(new KeyboardEvent("keydown",s)),window.dispatchEvent(new KeyboardEvent("keyup",s))}Zo()}});var nl={};A(nl,{default:()=>fk});var sl,fk,rl=w(()=>{"use strict";D();Ae();sl=class{constructor(){this.numberDisplay=document.createElement("div"),this.numberDisplay.id="hpEnemyCounter",this.numberDisplay.classList.add("statIcon"),this.numberDisplay.style.cssText="transform: translate(0, -2.7px);",this.numberDisplay.innerHTML=` + margin-left: 2px;`;fk=window.openRankedMenu;window.openRankedMenu=()=>{fk();let s=U(".footer-controls"),e=s.lastElementChild;s.insertBefore(nr,e)};nr.onclick=gk});var Vh={};var bk,vk,wk,nl=w(()=>{"use strict";F();vn();window.chrome.webview.postMessage("drag, true");window.chrome.webview.postMessage("throttle, menu");bk=window.exportSettings;window.exportSettings=s=>(s||u.showNotification("Settings exported to Downloads!",!1,3),bk(s));vk=window.showWindow;window.showWindow=(...s)=>{switch(s[0]){case 3:case 53:window.chrome.webview.postMessage("throttle, game");break;case 15:case 26:case 52:case 9:case 44:case 43:case 40:case 38:case 50:case 17:case 39:case 51:case 16:case 34:window.chrome.webview.postMessage("throttle, menu");break;default:break}return vk(...s)};wk=window.closWind;window.closWind=(...s)=>(window.chrome.webview.postMessage("drag, true"),window.chrome.webview.postMessage("throttle, menu"),wk(...s));u.bindShoot=()=>{if(qr()){window.changeCont("shoot",1,void 0);let s={key:"F20",code:"F20",keyCode:131,which:131,bubbles:!0,cancelable:!0};window.dispatchEvent(new KeyboardEvent("keydown",s)),window.dispatchEvent(new KeyboardEvent("keyup",s))}es()}});var il={};A(il,{default:()=>kk});var rl,kk,al=w(()=>{"use strict";F();Ae();rl=class{constructor(){this.numberDisplay=document.createElement("div"),this.numberDisplay.id="hpEnemyCounter",this.numberDisplay.classList.add("statIcon"),this.numberDisplay.style.cssText="transform: translate(0, -2.7px);",this.numberDisplay.innerHTML=`
              on 0 -
              `,this.enemyOBJ=0,this.enemyTimeout=null,this.observer=null,this.pointCounter=null,this.gameUpdateListener=e=>{e.data==="game-updated"&&setTimeout(()=>{He()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.setupDisplay())},2e3)},u.settings.toggleHpEnemyCounter=e=>this.toggle(e),this.toggle(!0)}toggle(e){e?(window.chrome.webview.addEventListener("message",this.gameUpdateListener),He()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.setupDisplay())):(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.observer?.disconnect(),this.numberDisplay.remove())}processTeamScores=()=>{let{pointCounter:e}=this;if(e){for(let t of document.querySelectorAll("#tScoreC1, #tScoreC2"))if(t&&!t.className.includes("you")){let o=t.nextElementSibling;if(!o)continue;let n=Number.parseInt(o.textContent??"",10);if(Number.isNaN(n))continue;n>this.enemyOBJ&&(e.textContent=String((n-this.enemyOBJ)/10),this.enemyTimeout&&clearTimeout(this.enemyTimeout),this.enemyTimeout=setTimeout(()=>{e.textContent="0",this.enemyTimeout=null},1600)),this.enemyOBJ=n}}};setupDisplay(){let e=U(".pointVal",this.numberDisplay);this.pointCounter=e,U(".topRightCounters").append(this.numberDisplay),this.observer?.disconnect(),this.observer=new MutationObserver(this.processTeamScores),this.observer.observe(U("#teamScores"),{childList:!0,subtree:!0})}},fk=new sl});var al={};A(al,{default:()=>gk});var il,gk,ll=w(()=>{"use strict";D();il=class{constructor(){this.originalPlay=()=>{},this.observer=new MutationObserver(e=>this.parseChat(e)),u.settings.toggleHsSound=e=>this.toggle(e),this.setupSoundHook()}setupSoundHook(){window.SOUND?.play?(this.originalPlay=window.SOUND.play,this.toggle(!0)):setTimeout(()=>this.setupSoundHook(),100)}toggle(e){if(e){let t=document.querySelector("#chatList");t&&this.observer.observe(t,{childList:!0});let o=this;window.SOUND.play=function(n,r,i){if(!(n==="headshot_0"&&r===void 0))return o.originalPlay.call(window.SOUND,n,r,i)}}else window.SOUND.play=this.originalPlay,this.observer.disconnect()}parseChat(e){for(let t of e)if(t.type==="childList")for(let o of t.addedNodes){if(!(o instanceof HTMLElement)||o.tagName!=="DIV")continue;let n=o.querySelector("span.chatMsg");if(!n)continue;let r=n.querySelectorAll("span[style*='color:#'], span[style*='color: rgb']");if(r.length<=0)continue;let i=r[0],a=i.style.color.trim().toLowerCase(),l=i.textContent.trim();a==="rgb(255, 255, 255)"&&l==="You"&&n.querySelector("img")&&window.SOUND.play("headshot_0",1,!1)}}},gk=new il});var Gh,Uh=w(()=>{Gh=`html.kuteHudEdit #app,html.kuteHudEdit #fullMenHider{opacity:.1!important;pointer-events:none!important}html.kuteHudEdit #kuteHudEditor{position:fixed;inset:0;z-index:2147483000;background:#00000073;font-family:Consolas,monospace;color:#fff}.hudBox{position:absolute;box-sizing:border-box;border:1px solid rgba(53,224,232,.65);border-radius:4px;background:#35e0e81a;cursor:grab;touch-action:none}.hudBox:hover,.hudBox.hudActive{border-color:#35e0e8;background:#35e0e840}.hudBox.hudDragging{cursor:grabbing}.hudBox.hudEmpty{border-style:dashed}.hudBox.hudOff{border-color:#ffffff4d;background:#ffffff0f}.hudLabel{position:absolute;bottom:100%;left:-1px;padding:0 .35em;border-radius:3px 3px 0 0;background:#35e0e8d9;color:#05201f;font-size:11px;line-height:1.5;white-space:nowrap;pointer-events:none}.hudBox.hudLabelBelow .hudLabel{top:100%;bottom:auto;border-radius:0 0 3px 3px}.hudBox.hudOff .hudLabel{background:#fff6;color:#111}.hudGuide{position:absolute;background:#ffc147;pointer-events:none}.hudGuide.hudGuideV{top:0;width:1px;height:100%}.hudGuide.hudGuideH{left:0;width:100%;height:1px} -`});var Vh,Wh=w(()=>{Vh='
              HUD Layout
              Boxes are where things sit in the match.
              Drag to move, wheel to resize, arrows nudge
              Reset all
              Done
              '});var Yh={};A(Yh,{HUD_ELEMENTS:()=>Kt,gameSettingOn:()=>cl});function cl(s){try{return window.localStorage.getItem(`kro_setngss_${s}`)!=="false"}catch{return!0}}var Kt,sr=w(()=>{"use strict";Kt=[{key:"timer",name:"Timer",group:"Match",selector:"#timerHolder",size:[188,77]},{key:"matchInfo",name:"Mode and map",group:"Match",selector:"#matchInfo",size:[110,50]},{key:"teamScores",name:"Team scores",group:"Match",selector:"#teamScores",display:"block",size:[220,40],note:"team modes"},{key:"rounds",name:"Rounds",group:"Match",selector:"#roundsDisplay",display:"inline-block",size:[200,60],note:"round based"},{key:"zoneCount",name:"Zone count",group:"Match",selector:"#scoreZoneCount",display:"inline-block",size:[57,43],note:"hardpoint"},{key:"lives",name:"Lives",group:"Match",selector:"#livesCount",display:"inline-block",size:[57,43],note:"LMS, infected"},{key:"gameMessage",name:"Match message",group:"Match",selector:"#gameMessage",size:[400,30]},{key:"roundMessage",name:"Round message",group:"Match",selector:"#roundMessage",size:[400,30]},{key:"challenge",name:"Challenge banner",group:"Match",selector:"#chalDisplay",size:[300,30]},{key:"fps",name:"FPS",group:"Stats",selector:"#fpsDisplay",setting:"showFPS",display:"block",size:[72,23]},{key:"ping",name:"Ping",group:"Stats",selector:"#pingDisplay",setting:"showPing",display:"block",size:[72,23]},{key:"kills",name:"Kills",group:"Stats",selector:"#killCount",setting:"showKillC",display:"inline-block",size:[57,43]},{key:"deaths",name:"Deaths",group:"Stats",selector:"#deathCount",setting:"showDeaths",display:"inline-block",size:[57,43]},{key:"streak",name:"Streak",group:"Stats",selector:"#streakCount",setting:"showStreak",display:"inline-block",size:[57,43]},{key:"kd",name:"K/D",group:"Stats",selector:"#kdCount",setting:"showKD",display:"inline-block",size:[77,43]},{key:"score",name:"Score",group:"Stats",selector:"#scoreCount",setting:"showScore",display:"inline-block",size:[57,43]},{key:"speedRun",name:"Parkour timer",group:"Stats",selector:"#speedRunHolder",display:"block",size:[200,60],note:"parkour"},{key:"leaderboard",name:"Leaderboard",group:"Feed",selector:"#leaderboardHolder",size:[327,54]},{key:"centerLeader",name:"Center leaderboard",group:"Feed",selector:"#centerLeaderDisplay",display:"block",size:[300,120],note:"comp"},{key:"killFeed",name:"Kill feed",group:"Feed",selector:"#killFeed",setting:"showKills",display:"inline-grid",size:[240,120]},{key:"chat",name:"Chat",group:"Feed",selector:"#chatHolder",rule:"#uiBase.onGame #chatHolder",size:[386,248]},{key:"weapons",name:"Weapons",group:"Combat",selector:"#weapHolder",size:[127,203]},{key:"ammo",name:"Ammo",group:"Combat",selector:"#ammoHolder",size:[148,63]},{key:"perks",name:"Perks",group:"Combat",selector:"#perkHolder",size:[65,40]},{key:"krTag",name:"Deposit coins",group:"Combat",selector:"#krTagHolder",size:[71,65],note:"deposit"},{key:"giftTag",name:"Gift drops",group:"Combat",selector:"#giftTagHolder",size:[65,65]},{key:"powerUps",name:"Powerups",group:"Combat",selector:"#powerUpHolder",size:[65,65]},{key:"killStreak",name:"Kill streak",group:"Combat",selector:"#killStreakHolder",size:[65,65]},{key:"player",name:"Health and class",group:"Player",selector:"#bottomLeftPlayer",size:[376,90]},{key:"zPerks",name:"Class perks",group:"Player",selector:"#zPerksHolder",size:[65,40]},{key:"nuke",name:"Nuke counter",group:"Kute",selector:"#kuteNukeCounter",clientSetting:"nukeCounter",display:"flex",size:[90,56]},{key:"keystrokes",name:"Keystrokes",group:"Kute",selector:"#kuteKeystrokes",clientSetting:"keystrokes",display:"flex",size:[190,82]},{key:"spotify",name:"Spotify",group:"Kute",selector:"#kuteSpotifyOverlay",clientSetting:"spotifyOverlay",display:"flex",size:[320,82]},{key:"menuTimer",name:"Menu timer",group:"Kute",selector:"#uiBase.onMenu .spectateInfo",clientSetting:"menuTimer",size:[150,60],note:"menu",menu:(s,e)=>[s/2,e*.4-105]}]});var dl={};A(dl,{HudEditor:()=>nr,default:()=>Sk,implicitShift:()=>Hs});function Hs(s,e){if(s!=="spotify"||!u.settings.data.keystrokes)return 0;let t=e.spotify??{},o=e.keystrokes??{};if(t.x||t.y||o.x||o.y)return 0;let n=kk*(1+(o.s??1))/2,r=yk*(1-(t.s??1))/2;return Math.round(n+xk-r)}var wk,Xh,kk,yk,xk,nr,Sk,rr=w(()=>{"use strict";D();sr();Rt();zn();wk="kute_hudLayoutCSS",Xh="kute_hud_geometry",kk=190,yk=320,xk=12;nr=class{constructor(){this.style=null,this.open=!1,this.menuRects={},u.hudEditor={edit:()=>this.edit(),apply:()=>this.apply()},this.migrateNukeCounter(),this.apply(),Object.keys(this.measureMenuWidgets()).length===0&&setTimeout(()=>this.measureMenuWidgets(),3e3)}get layout(){return{...u.settings.data.hudLayout}}save(e){u.settings.data.hudLayout=e,window.chrome.webview.postMessage(`set-config-json hudLayout ${JSON.stringify(e)}`),this.apply()}migrateNukeCounter(){let e=u.settings.data.nukeCounterConfig;if(!e||e.x===void 0&&e.y===void 0&&e.scale===void 0)return;let{layout:t}=this;t.nuke??={x:Math.round(((e.x??94)-94)*100)/100,y:Math.round(((e.y??50)-50)*100)/100,s:e.scale??1};let o={goal:e.goal??0,background:e.background??!0};u.settings.data.nukeCounterConfig=o,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(o)}`),this.save(t)}apply(){let{layout:e}=this,t="";for(let o of Kt){let n=e[o.key]??{},r=(n.x??0)!==0||(n.y??0)!==0,i=(n.s??1)!==1,a=Hs(o.key,e);if(!r&&!i&&!a)continue;let l=[];r?l.push(`translate:${n.x??0}vw ${n.y??0}vh`):a&&l.push(`translate:${a}px 0`),i&&l.push(`scale:${n.s}`),t+=`${o.rule??o.selector}{${l.join(";")}}`}this.style||(this.style=document.createElement("style"),this.style.id=wk,document.head.append(this.style)),this.style.textContent=t}inMatch(){let e=document.querySelector("#inGameUI");return!!e&&window.getComputedStyle(e).display!=="none"}snapshot(){if(!this.inMatch())return null;let e=[];for(let i of Kt){if(i.menu)continue;let a=document.querySelector(i.selector);a&&e.push({def:i,element:a,visible:window.getComputedStyle(a).display!=="none"})}let t={vw:window.innerWidth,vh:window.innerHeight,factor:1,game:_t().id??"",rects:{}},o=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let{def:i,element:a,visible:l}of e){if(!l)continue;let c=a.getBoundingClientRect();c.width<=0||(t.rects[i.key]=[c.x,c.y,c.width,c.height,1],c.width>60&&a.offsetWidth>0&&(t.factor=c.width/a.offsetWidth))}let n=e.filter(({def:i})=>!t.rects[i.key]&&i.display);if(n.length>0){let i=document.createElement("style");i.textContent=n.map(({def:a})=>`${a.selector}{display:${a.display}!important}`).join(""),document.head.append(i);for(let{def:a,element:l}of n){let c=l.getBoundingClientRect();c.width>0&&(t.rects[a.key]=[c.x,c.y,c.width,c.height,0])}i.remove()}for(let{def:i,element:a}of e){if(t.rects[i.key])continue;let l=a.getBoundingClientRect();t.rects[i.key]=[l.x,l.y,l.width,l.height,0]}let r=this.menuRects[`${t.vw}x${t.vh}`]??{};for(let i of Kt){if(!i.menu)continue;if(r[i.key]){t.rects[i.key]=r[i.key];continue}let[a,l]=i.menu(t.vw,t.vh),[c,d]=i.size??[0,0];t.rects[i.key]=[a-c/2,l-d/2,c,d,1]}this.style&&(this.style.textContent=o);try{window.localStorage.setItem(Xh,JSON.stringify(t))}catch{}return t}geometry(){if(this.inMatch())return this.snapshot();let e=null;try{e=JSON.parse(window.localStorage.getItem(Xh)??"null")}catch{e=null}return!e?.rects||e.vw!==window.innerWidth||e.vh!==window.innerHeight?null:this.withMenuWidgets(e)}measureMenuWidgets(){let e={},t=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let o of Kt){if(!o.menu)continue;let n=document.querySelector(o.selector)?.getBoundingClientRect();n&&n.width>0&&(e[o.key]=[n.x,n.y,n.width,n.height,1])}return this.style&&(this.style.textContent=t),Object.keys(e).length>0&&(this.menuRects[`${window.innerWidth}x${window.innerHeight}`]=e),e}withMenuWidgets(e){return{...e,rects:{...e.rects,...this.measureMenuWidgets()}}}async edit(){if(this.open)return;if(this.inMatch()){this.show(this.snapshot());return}let e=this.geometry();if(e?.game&&e.game===_t().id){this.show(e);return}if(!await Ce({title:"Set up your HUD",paragraphs:["The editor places everything exactly where it sits in a match, so it needs a match to measure.","Kute opens a private one for you, nobody else can join it. If you are in a game right now, you leave it."],stay:"Not now",leave:"Open a private match"})||this.open)return;if(document.querySelector("#signedInHeaderBar")===null){u.showNotification?.("Log in first, a private match needs an account",!1,5);return}this.open=!0,u.showNotification?.("Opening a private match",!1,4);let o=await $s();if(!(o!==null&&await Cs(o))){this.open=!1,u.showNotification?.("Could not open a private match. Is a host slot free?",!1,6);return}await new Promise(r=>{setTimeout(r,1500)}),this.open=!1,this.show(this.snapshot()??this.geometry())}show(e){if(!e){u.showNotification?.("Could not measure the HUD, try again",!1,6);return}this.open=!0,Promise.resolve().then(()=>(pl(),ul)).then(t=>t.openEditor(this,e)).catch(t=>{this.open=!1,console.error("[kute] hud editor:",t)})}closed(){this.open=!1}},Sk=new nr});var ul={};A(ul,{openEditor:()=>Ek});async function Ek(s,e){document.pointerLockElement&&document.exitPointerLock(),await new Promise(y=>setTimeout(y,0));let{layout:t}=s,o=document.createElement("style");o.id="kute_hudEditorCSS",o.textContent=Gh,document.head.append(o),document.documentElement.classList.add("kuteHudEdit");let n=document.createElement("div");n.id="kuteHudEditor",document.body.append(n);let r=(y,C)=>{let[R,K,z,N,V]=C,de=!V||z<=0||N<=0,Z=z>window.innerWidth*.5,ge=N>window.innerHeight*.5,le=de?ir:z,Be=de?ir:N,Yt=R,xo=K;return!de&&Z&&(le=y.size?.[0]??ir,Yt=R+z/2-le/2),!de&&ge&&(Be=y.size?.[1]??ir,xo=K+N/2-Be/2),de&&R>window.innerWidth/2&&(Yt=R-le),de&&K>window.innerHeight/2&&(xo=K-Be),le=Math.min(le,window.innerWidth),Be=Math.min(Be,window.innerHeight),{x:ar(Yt,0,window.innerWidth-le),y:ar(xo,0,window.innerHeight-Be),w:le,h:Be,empty:de}},i=y=>{let C=y.filter(R=>!R.empty);for(let R of y)if(R.empty){for(let K=0;K<12;K++){let z=C.find(V=>R.xV.x&&R.yV.y);if(!z)break;R.y+R.h+2+R.h<=window.innerHeight?R.y=Math.min(z.y+z.h+2,window.innerHeight-R.h):R.x=ar(z.x+z.w+2,0,window.innerWidth-R.w)}C.push(R)}},a=[];for(let y of Kt){let C=e.rects[y.key];if(!C||y.clientSetting&&$o(u.settings.data,y.clientSetting))continue;let R=document.createElement("div");R.className="hudBox";let K=document.createElement("div");K.className="hudLabel",K.textContent=y.name,R.append(K),n.append(R),a.push({def:y,box:R,...r(y,C),drawn:null})}i(a);let l=!1;for(let y of a){y.w>60&&(l=!1);let C=l&&y.y+y.h+2060?!1:!l}let c=[];for(let y of["hudGuideV","hudGuideH"]){let C=document.createElement("div");C.className=`hudGuide ${y}`,C.style.display="none",n.append(C),c.push(C)}let d=y=>y.setting?cl(y.setting):y.clientSetting?u.settings.data[y.clientSetting]!==!1:!0,h=y=>t[y]??={},p=y=>{let C={...h(y)},R=Hs(y,t);return R&&(C.x=lr(R/window.innerWidth*100)),C},m=(y,C)=>[y/100*window.innerWidth*e.factor,C/100*window.innerHeight*e.factor],f=y=>{let C=t[y.def.key]??{},[R,K]=m(C.x??0,C.y??0),z=R+Hs(y.def.key,t)*e.factor,N=C.s??1,V=y.w*N,de=y.h*N,Z=y.x+y.w/2+z-V/2,ge=y.y+y.h/2+K-de/2;y.box.style.left=`${Math.round(Z)}px`,y.box.style.top=`${Math.round(ge)}px`,y.box.style.width=`${Math.round(V)}px`,y.box.style.height=`${Math.round(de)}px`,y.box.classList.toggle("hudOff",!d(y.def)),y.box.classList.toggle("hudEmpty",y.empty),y.drawn=new DOMRect(Z,ge,V,de)},g=()=>{for(let y of a)f(y)},b=()=>{u.settings.data.hudLayout=t,s.apply()},v=new Map,k=new Map,E=()=>{for(let y of a){let C=v.get(y.def.key);if(!C)continue;let R=t[y.def.key],K=R?.s??1,z=!!R&&((R.x??0)!==0||(R.y??0)!==0||K!==1);C.classList.toggle("hpChanged",z);let N=C.querySelector(".hpMoved");N&&(N.textContent=K===1?"":`${Math.round(K*100)}%`);let V=k.get(y.def.key);V&&(V.checked=d(y.def))}},L=null,x=(y,C)=>y.box.classList.toggle("hudActive",C||L===y),$=y=>{L=y;for(let C of a)C.box.classList.toggle("hudActive",C===y)},I=(y,C,R,K)=>{let z=h(y.def.key),N=e.factor||1;z.x=lr((K.x??0)+C/(window.innerWidth*N)*100),z.y=lr((K.y??0)+R/(window.innerHeight*N)*100),b()},_=(y,C,R,K)=>{let z=[0,window.innerWidth/2,window.innerWidth],N=[0,window.innerHeight/2,window.innerHeight];for(let Z of a)Z===y||!Z.drawn||(z.push(Z.drawn.left,Z.drawn.left+Z.drawn.width/2,Z.drawn.right),N.push(Z.drawn.top,Z.drawn.top+Z.drawn.height/2,Z.drawn.bottom));let V=null,de=null;for(let Z of[C.left+R,C.left+R+C.width/2,C.right+R])for(let ge of z){let le=ge-Z;Math.abs(le)<=Jh&&(V===null||Math.abs(le){z.preventDefault(),$(y),C.setPointerCapture(z.pointerId),C.classList.add("hudDragging"),R={x:z.clientX,y:z.clientY,rect:y.drawn??C.getBoundingClientRect(),from:p(y.def.key)}},C.onpointermove=z=>{if(!R||!C.hasPointerCapture(z.pointerId))return;let[N,V]=_(y,R.rect,z.clientX-R.x,z.clientY-R.y);I(y,N,V,R.from),g()};let K=()=>{R&&(R=null,C.classList.remove("hudDragging"),c[0].style.display="none",c[1].style.display="none",E())};C.onpointerup=K,C.onpointercancel=K,C.onwheel=z=>{z.preventDefault(),$(y);let N=h(y.def.key);N.s=lr(ar((N.s??1)+(z.deltaY<0?.05:-.05),.3,3)),b(),g(),E()}}let H=document.createElement("div");H.style.cssText="position:fixed;top:50%;left:50%;transform:translate(-50%, -50%)",n.append(H);let G=H.attachShadow({mode:"open"});G.innerHTML=Vh;let J=y=>G.querySelector(`#${y}`),B=(y,C)=>{if(y.setting)window.setSetting(y.setting,C);else if(y.clientSetting){let R=y.clientSetting;u.settings.data[R]=C,window.chrome.webview.postMessage(`set-config, ${R}, ${C}`);let K=`toggle${R.charAt(0).toUpperCase()}${R.slice(1)}`;typeof u.settings[K]=="function"&&u.settings[K](C);let z=document.querySelector(`#${R}`);z&&(z.checked=C)}g(),E()},re=J("hpList"),je="";for(let y of a){let{def:C}=y;if(C.group!==je){({group:je}=C);let V=document.createElement("div");V.className="hpGroup",V.textContent=je.toUpperCase(),re.append(V)}let R=document.createElement("label");R.className="hpRow";let K=document.createElement("span");if(K.className="hpName",K.textContent=C.name,C.note){let V=document.createElement("span");V.className="hpNote",V.textContent=` ${C.note}`,K.append(V)}let z=document.createElement("span");z.className="hpMoved";let N=document.createElement("span");if(N.className="hpReset",N.textContent="reset",N.title="Put it back where Krunker had it",N.onclick=V=>{V.preventDefault(),delete t[C.key],b(),g(),E()},R.append(K,z,N),C.setting||C.clientSetting){let V=document.createElement("input");V.type="checkbox",V.checked=d(C),V.onchange=()=>B(C,V.checked),R.append(V),k.set(C.key,V)}R.onpointerenter=()=>x(y,!0),R.onpointerleave=()=>x(y,!1),re.append(R),v.set(C.key,R)}let be=J("hpPanel"),Ee=J("hpHead"),j=null;Ee.onpointerdown=y=>{let C=H.getBoundingClientRect();H.style.cssText=`position:fixed;left:${Math.round(C.left)}px;top:${Math.round(C.top)}px`,Ee.setPointerCapture(y.pointerId),j={x:y.clientX-C.left,y:y.clientY-C.top},be.classList.add("hpBusy")},Ee.onpointermove=y=>{j&&(H.style.left=`${Math.round(y.clientX-j.x)}px`,H.style.top=`${Math.round(y.clientY-j.y)}px`)},Ee.onpointerup=()=>{j=null,be.classList.remove("hpBusy")};let X=new AbortController,Y=()=>{X.abort(),n.remove(),o.remove(),document.documentElement.classList.remove("kuteHudEdit"),s.save(t),s.closed()};J("hpDone").onclick=Y,window.addEventListener("resize",()=>{Y(),u.showNotification?.("The window changed size, open the HUD editor again",!1,5)},{signal:X.signal}),J("hpReset").onclick=()=>{for(let y of Object.keys(t))delete t[y];b(),g(),E()},document.addEventListener("keydown",y=>{if(y.key==="Escape"){y.preventDefault(),y.stopPropagation(),Y();return}if(!L||!y.key.startsWith("Arrow"))return;y.preventDefault(),y.stopPropagation();let C=y.shiftKey?10:1,R=(y.key==="ArrowRight"?C:0)-(y.key==="ArrowLeft"?C:0),K=(y.key==="ArrowDown"?C:0)-(y.key==="ArrowUp"?C:0);I(L,R,K,p(L.def.key)),g(),E()},{signal:X.signal,capture:!0}),g(),E()}var Jh,ir,ar,lr,pl=w(()=>{"use strict";Uh();Wh();D();sr();rr();Co();Jh=6,ir=24,ar=(s,e,t)=>Math.min(t,Math.max(e,s)),lr=s=>Math.round(s*100)/100});var tm={};function Mk(){document.querySelector("#settSearch")&&(window.closWind?.(Qh),window.showWindow?.(Qh))}var cr,Zh,em,$k,Ck,Qh,hl=w(()=>{"use strict";D();Ae();cr=document.createElement("div");cr.className="settName";cr.style.cssText="display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px 12px;margin-top:10px";Zh={Keybinds:localStorage.getItem("kute_Keybinds")==="true"||localStorage.getItem("kute_Keybinds")===null,Sensitivity:localStorage.getItem("kute_Sensitivity")==="true"||localStorage.getItem("kute_Sensitivity")===null,Sound:localStorage.getItem("kute_Sound")==="true"||localStorage.getItem("kute_Sound")===null},em="";for(let s in Zh)em+=`Import ${s} + `,this.enemyOBJ=0,this.enemyTimeout=null,this.observer=null,this.pointCounter=null,this.gameUpdateListener=e=>{e.data==="game-updated"&&setTimeout(()=>{Oe()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.setupDisplay())},2e3)},u.settings.toggleHpEnemyCounter=e=>this.toggle(e),this.toggle(!0)}toggle(e){e?(window.chrome.webview.addEventListener("message",this.gameUpdateListener),Oe()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.setupDisplay())):(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.observer?.disconnect(),this.numberDisplay.remove())}processTeamScores=()=>{let{pointCounter:e}=this;if(e){for(let t of document.querySelectorAll("#tScoreC1, #tScoreC2"))if(t&&!t.className.includes("you")){let o=t.nextElementSibling;if(!o)continue;let n=Number.parseInt(o.textContent??"",10);if(Number.isNaN(n))continue;n>this.enemyOBJ&&(e.textContent=String((n-this.enemyOBJ)/10),this.enemyTimeout&&clearTimeout(this.enemyTimeout),this.enemyTimeout=setTimeout(()=>{e.textContent="0",this.enemyTimeout=null},1600)),this.enemyOBJ=n}}};setupDisplay(){let e=U(".pointVal",this.numberDisplay);this.pointCounter=e,U(".topRightCounters").append(this.numberDisplay),this.observer?.disconnect(),this.observer=new MutationObserver(this.processTeamScores),this.observer.observe(U("#teamScores"),{childList:!0,subtree:!0})}},kk=new rl});var cl={};A(cl,{default:()=>yk});var ll,yk,dl=w(()=>{"use strict";F();ll=class{constructor(){this.originalPlay=()=>{},this.observer=new MutationObserver(e=>this.parseChat(e)),u.settings.toggleHsSound=e=>this.toggle(e),this.setupSoundHook()}setupSoundHook(){window.SOUND?.play?(this.originalPlay=window.SOUND.play,this.toggle(!0)):setTimeout(()=>this.setupSoundHook(),100)}toggle(e){if(e){let t=document.querySelector("#chatList");t&&this.observer.observe(t,{childList:!0});let o=this;window.SOUND.play=function(n,r,i){if(!(n==="headshot_0"&&r===void 0))return o.originalPlay.call(window.SOUND,n,r,i)}}else window.SOUND.play=this.originalPlay,this.observer.disconnect()}parseChat(e){for(let t of e)if(t.type==="childList")for(let o of t.addedNodes){if(!(o instanceof HTMLElement)||o.tagName!=="DIV")continue;let n=o.querySelector("span.chatMsg");if(!n)continue;let r=n.querySelectorAll("span[style*='color:#'], span[style*='color: rgb']");if(r.length<=0)continue;let i=r[0],a=i.style.color.trim().toLowerCase(),l=i.textContent.trim();a==="rgb(255, 255, 255)"&&l==="You"&&n.querySelector("img")&&window.SOUND.play("headshot_0",1,!1)}}},yk=new ll});var Xh,Yh=w(()=>{Xh=`html.kuteHudEdit #app,html.kuteHudEdit #fullMenHider{opacity:.1!important;pointer-events:none!important}html.kuteHudEdit #kuteHudEditor{position:fixed;inset:0;z-index:2147483000;background:#00000073;font-family:Consolas,monospace;color:#fff}.hudBox{position:absolute;box-sizing:border-box;border:1px solid rgba(53,224,232,.65);border-radius:4px;background:#35e0e81a;cursor:grab;touch-action:none}.hudBox:hover,.hudBox.hudActive{border-color:#35e0e8;background:#35e0e840}.hudBox.hudDragging{cursor:grabbing}.hudBox.hudEmpty{border-style:dashed}.hudBox.hudOff{border-color:#ffffff4d;background:#ffffff0f}.hudLabel{position:absolute;bottom:100%;left:-1px;padding:0 .35em;border-radius:3px 3px 0 0;background:#35e0e8d9;color:#05201f;font-size:11px;line-height:1.5;white-space:nowrap;pointer-events:none}.hudBox.hudLabelBelow .hudLabel{top:100%;bottom:auto;border-radius:0 0 3px 3px}.hudBox.hudOff .hudLabel{background:#fff6;color:#111}.hudGuide{position:absolute;background:#ffc147;pointer-events:none}.hudGuide.hudGuideV{top:0;width:1px;height:100%}.hudGuide.hudGuideH{left:0;width:100%;height:1px} +`});var Zh,Jh=w(()=>{Zh='
              HUD Layout
              Boxes are where things sit in the match.
              Drag to move, wheel to resize, arrows nudge
              Reset all
              Done
              '});var Qh={};A(Qh,{HUD_ELEMENTS:()=>jt,gameSettingOn:()=>ul});function ul(s){try{return window.localStorage.getItem(`kro_setngss_${s}`)!=="false"}catch{return!0}}var jt,rr=w(()=>{"use strict";jt=[{key:"timer",name:"Timer",group:"Match",selector:"#timerHolder",size:[188,77]},{key:"matchInfo",name:"Mode and map",group:"Match",selector:"#matchInfo",size:[110,50]},{key:"teamScores",name:"Team scores",group:"Match",selector:"#teamScores",display:"block",size:[220,40],note:"team modes"},{key:"rounds",name:"Rounds",group:"Match",selector:"#roundsDisplay",display:"inline-block",size:[200,60],note:"round based"},{key:"zoneCount",name:"Zone count",group:"Match",selector:"#scoreZoneCount",display:"inline-block",size:[57,43],note:"hardpoint"},{key:"lives",name:"Lives",group:"Match",selector:"#livesCount",display:"inline-block",size:[57,43],note:"LMS, infected"},{key:"gameMessage",name:"Match message",group:"Match",selector:"#gameMessage",size:[400,30]},{key:"roundMessage",name:"Round message",group:"Match",selector:"#roundMessage",size:[400,30]},{key:"challenge",name:"Challenge banner",group:"Match",selector:"#chalDisplay",size:[300,30]},{key:"fps",name:"FPS",group:"Stats",selector:"#fpsDisplay",setting:"showFPS",display:"block",size:[72,23]},{key:"ping",name:"Ping",group:"Stats",selector:"#pingDisplay",setting:"showPing",display:"block",size:[72,23]},{key:"kills",name:"Kills",group:"Stats",selector:"#killCount",setting:"showKillC",display:"inline-block",size:[57,43]},{key:"deaths",name:"Deaths",group:"Stats",selector:"#deathCount",setting:"showDeaths",display:"inline-block",size:[57,43]},{key:"streak",name:"Streak",group:"Stats",selector:"#streakCount",setting:"showStreak",display:"inline-block",size:[57,43]},{key:"kd",name:"K/D",group:"Stats",selector:"#kdCount",setting:"showKD",display:"inline-block",size:[77,43]},{key:"score",name:"Score",group:"Stats",selector:"#scoreCount",setting:"showScore",display:"inline-block",size:[57,43]},{key:"speedRun",name:"Parkour timer",group:"Stats",selector:"#speedRunHolder",display:"block",size:[200,60],note:"parkour"},{key:"leaderboard",name:"Leaderboard",group:"Feed",selector:"#leaderboardHolder",size:[327,54]},{key:"centerLeader",name:"Center leaderboard",group:"Feed",selector:"#centerLeaderDisplay",display:"block",size:[300,120],note:"comp"},{key:"killFeed",name:"Kill feed",group:"Feed",selector:"#killFeed",setting:"showKills",display:"inline-grid",size:[240,120]},{key:"chat",name:"Chat",group:"Feed",selector:"#chatHolder",rule:"#uiBase.onGame #chatHolder",size:[386,248]},{key:"weapons",name:"Weapons",group:"Combat",selector:"#weapHolder",size:[127,203]},{key:"ammo",name:"Ammo",group:"Combat",selector:"#ammoHolder",size:[148,63]},{key:"perks",name:"Perks",group:"Combat",selector:"#perkHolder",size:[65,40]},{key:"krTag",name:"Deposit coins",group:"Combat",selector:"#krTagHolder",size:[71,65],note:"deposit"},{key:"giftTag",name:"Gift drops",group:"Combat",selector:"#giftTagHolder",size:[65,65]},{key:"powerUps",name:"Powerups",group:"Combat",selector:"#powerUpHolder",size:[65,65]},{key:"killStreak",name:"Kill streak",group:"Combat",selector:"#killStreakHolder",size:[65,65]},{key:"player",name:"Health and class",group:"Player",selector:"#bottomLeftPlayer",size:[376,90]},{key:"zPerks",name:"Class perks",group:"Player",selector:"#zPerksHolder",size:[65,40]},{key:"nuke",name:"Nuke counter",group:"Kute",selector:"#kuteNukeCounter",clientSetting:"nukeCounter",display:"flex",size:[90,56]},{key:"keystrokes",name:"Keystrokes",group:"Kute",selector:"#kuteKeystrokes",clientSetting:"keystrokes",display:"flex",size:[190,82]},{key:"spotify",name:"Spotify",group:"Kute",selector:"#kuteSpotifyOverlay",clientSetting:"spotifyOverlay",display:"flex",size:[320,82]},{key:"menuTimer",name:"Menu timer",group:"Kute",selector:"#uiBase.onMenu .spectateInfo",clientSetting:"menuTimer",size:[150,60],note:"menu",menu:(s,e)=>[s/2,e*.4-105]}]});var pl={};A(pl,{HudEditor:()=>ir,default:()=>Tk,implicitShift:()=>Fs});function Fs(s,e){if(s!=="spotify"||!u.settings.data.keystrokes)return 0;let t=e.spotify??{},o=e.keystrokes??{};if(t.x||t.y||o.x||o.y)return 0;let n=$k*(1+(o.s??1))/2,r=Ck*(1-(t.s??1))/2;return Math.round(n+Mk-r)}var Ek,em,$k,Ck,Mk,ir,Tk,ar=w(()=>{"use strict";F();rr();Pt();On();Ek="kute_hudLayoutCSS",em="kute_hud_geometry",$k=190,Ck=320,Mk=12;ir=class{constructor(){this.style=null,this.open=!1,this.menuRects={},u.hudEditor={edit:()=>this.edit(),apply:()=>this.apply()},this.migrateNukeCounter(),this.apply(),Object.keys(this.measureMenuWidgets()).length===0&&setTimeout(()=>this.measureMenuWidgets(),3e3)}get layout(){return{...u.settings.data.hudLayout}}save(e){u.settings.data.hudLayout=e,window.chrome.webview.postMessage(`set-config-json hudLayout ${JSON.stringify(e)}`),this.apply()}migrateNukeCounter(){let e=u.settings.data.nukeCounterConfig;if(!e||e.x===void 0&&e.y===void 0&&e.scale===void 0)return;let{layout:t}=this;t.nuke??={x:Math.round(((e.x??94)-94)*100)/100,y:Math.round(((e.y??50)-50)*100)/100,s:e.scale??1};let o={goal:e.goal??0,background:e.background??!0};u.settings.data.nukeCounterConfig=o,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(o)}`),this.save(t)}apply(){let{layout:e}=this,t="";for(let o of jt){let n=e[o.key]??{},r=(n.x??0)!==0||(n.y??0)!==0,i=(n.s??1)!==1,a=Fs(o.key,e);if(!r&&!i&&!a)continue;let l=[];r?l.push(`translate:${n.x??0}vw ${n.y??0}vh`):a&&l.push(`translate:${a}px 0`),i&&l.push(`scale:${n.s}`),t+=`${o.rule??o.selector}{${l.join(";")}}`}this.style||(this.style=document.createElement("style"),this.style.id=Ek,document.head.append(this.style)),this.style.textContent=t}inMatch(){let e=document.querySelector("#inGameUI");return!!e&&window.getComputedStyle(e).display!=="none"}snapshot(){if(!this.inMatch())return null;let e=[];for(let i of jt){if(i.menu)continue;let a=document.querySelector(i.selector);a&&e.push({def:i,element:a,visible:window.getComputedStyle(a).display!=="none"})}let t={vw:window.innerWidth,vh:window.innerHeight,factor:1,game:Bt().id??"",rects:{}},o=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let{def:i,element:a,visible:l}of e){if(!l)continue;let c=a.getBoundingClientRect();c.width<=0||(t.rects[i.key]=[c.x,c.y,c.width,c.height,1],c.width>60&&a.offsetWidth>0&&(t.factor=c.width/a.offsetWidth))}let n=e.filter(({def:i})=>!t.rects[i.key]&&i.display);if(n.length>0){let i=document.createElement("style");i.textContent=n.map(({def:a})=>`${a.selector}{display:${a.display}!important}`).join(""),document.head.append(i);for(let{def:a,element:l}of n){let c=l.getBoundingClientRect();c.width>0&&(t.rects[a.key]=[c.x,c.y,c.width,c.height,0])}i.remove()}for(let{def:i,element:a}of e){if(t.rects[i.key])continue;let l=a.getBoundingClientRect();t.rects[i.key]=[l.x,l.y,l.width,l.height,0]}let r=this.menuRects[`${t.vw}x${t.vh}`]??{};for(let i of jt){if(!i.menu)continue;if(r[i.key]){t.rects[i.key]=r[i.key];continue}let[a,l]=i.menu(t.vw,t.vh),[c,d]=i.size??[0,0];t.rects[i.key]=[a-c/2,l-d/2,c,d,1]}this.style&&(this.style.textContent=o);try{window.localStorage.setItem(em,JSON.stringify(t))}catch{}return t}geometry(){if(this.inMatch())return this.snapshot();let e=null;try{e=JSON.parse(window.localStorage.getItem(em)??"null")}catch{e=null}return!e?.rects||e.vw!==window.innerWidth||e.vh!==window.innerHeight?null:this.withMenuWidgets(e)}measureMenuWidgets(){let e={},t=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let o of jt){if(!o.menu)continue;let n=document.querySelector(o.selector)?.getBoundingClientRect();n&&n.width>0&&(e[o.key]=[n.x,n.y,n.width,n.height,1])}return this.style&&(this.style.textContent=t),Object.keys(e).length>0&&(this.menuRects[`${window.innerWidth}x${window.innerHeight}`]=e),e}withMenuWidgets(e){return{...e,rects:{...e.rects,...this.measureMenuWidgets()}}}async edit(){if(this.open)return;if(this.inMatch()){this.show(this.snapshot());return}let e=this.geometry();if(e?.game&&e.game===Bt().id){this.show(e);return}if(!await Ce({title:"Set up your HUD",paragraphs:["The editor places everything exactly where it sits in a match, so it needs a match to measure.","Kute opens a private one for you, nobody else can join it. If you are in a game right now, you leave it."],stay:"Not now",leave:"Open a private match"})||this.open)return;if(document.querySelector("#signedInHeaderBar")===null){u.showNotification?.("Log in first, a private match needs an account",!1,5);return}this.open=!0,u.showNotification?.("Opening a private match",!1,4);let o=await Ms();if(!(o!==null&&await Ts(o))){this.open=!1,u.showNotification?.("Could not open a private match. Is a host slot free?",!1,6);return}await new Promise(r=>{setTimeout(r,1500)}),this.open=!1,this.show(this.snapshot()??this.geometry())}show(e){if(!e){u.showNotification?.("Could not measure the HUD, try again",!1,6);return}this.open=!0,Promise.resolve().then(()=>(ml(),hl)).then(t=>t.openEditor(this,e)).catch(t=>{this.open=!1,console.error("[kute] hud editor:",t)})}closed(){this.open=!1}},Tk=new ir});var hl={};A(hl,{openEditor:()=>Ak});async function Ak(s,e){document.pointerLockElement&&document.exitPointerLock(),await new Promise(x=>setTimeout(x,0));let{layout:t}=s,o=document.createElement("style");o.id="kute_hudEditorCSS",o.textContent=Xh,document.head.append(o),document.documentElement.classList.add("kuteHudEdit");let n=document.createElement("div");n.id="kuteHudEditor",document.body.append(n);let r=(x,$)=>{let[R,K,z,N,V]=$,de=!V||z<=0||N<=0,Z=z>window.innerWidth*.5,ge=N>window.innerHeight*.5,le=de?lr:z,ze=de?lr:N,Zt=R,Eo=K;return!de&&Z&&(le=x.size?.[0]??lr,Zt=R+z/2-le/2),!de&&ge&&(ze=x.size?.[1]??lr,Eo=K+N/2-ze/2),de&&R>window.innerWidth/2&&(Zt=R-le),de&&K>window.innerHeight/2&&(Eo=K-ze),le=Math.min(le,window.innerWidth),ze=Math.min(ze,window.innerHeight),{x:cr(Zt,0,window.innerWidth-le),y:cr(Eo,0,window.innerHeight-ze),w:le,h:ze,empty:de}},i=x=>{let $=x.filter(R=>!R.empty);for(let R of x)if(R.empty){for(let K=0;K<12;K++){let z=$.find(V=>R.xV.x&&R.yV.y);if(!z)break;R.y+R.h+2+R.h<=window.innerHeight?R.y=Math.min(z.y+z.h+2,window.innerHeight-R.h):R.x=cr(z.x+z.w+2,0,window.innerWidth-R.w)}$.push(R)}},a=[];for(let x of jt){let $=e.rects[x.key];if(!$||x.clientSetting&&Mo(u.settings.data,x.clientSetting))continue;let R=document.createElement("div");R.className="hudBox";let K=document.createElement("div");K.className="hudLabel",K.textContent=x.name,R.append(K),n.append(R),a.push({def:x,box:R,...r(x,$),drawn:null})}i(a);let l=!1;for(let x of a){x.w>60&&(l=!1);let $=l&&x.y+x.h+2060?!1:!l}let c=[];for(let x of["hudGuideV","hudGuideH"]){let $=document.createElement("div");$.className=`hudGuide ${x}`,$.style.display="none",n.append($),c.push($)}let d=x=>x.setting?ul(x.setting):x.clientSetting?u.settings.data[x.clientSetting]!==!1:!0,h=x=>t[x]??={},p=x=>{let $={...h(x)},R=Fs(x,t);return R&&($.x=dr(R/window.innerWidth*100)),$},m=(x,$)=>[x/100*window.innerWidth*e.factor,$/100*window.innerHeight*e.factor],f=x=>{let $=t[x.def.key]??{},[R,K]=m($.x??0,$.y??0),z=R+Fs(x.def.key,t)*e.factor,N=$.s??1,V=x.w*N,de=x.h*N,Z=x.x+x.w/2+z-V/2,ge=x.y+x.h/2+K-de/2;x.box.style.left=`${Math.round(Z)}px`,x.box.style.top=`${Math.round(ge)}px`,x.box.style.width=`${Math.round(V)}px`,x.box.style.height=`${Math.round(de)}px`,x.box.classList.toggle("hudOff",!d(x.def)),x.box.classList.toggle("hudEmpty",x.empty),x.drawn=new DOMRect(Z,ge,V,de)},g=()=>{for(let x of a)f(x)},b=()=>{u.settings.data.hudLayout=t,s.apply()},v=new Map,k=new Map,E=()=>{for(let x of a){let $=v.get(x.def.key);if(!$)continue;let R=t[x.def.key],K=R?.s??1,z=!!R&&((R.x??0)!==0||(R.y??0)!==0||K!==1);$.classList.toggle("hpChanged",z);let N=$.querySelector(".hpMoved");N&&(N.textContent=K===1?"":`${Math.round(K*100)}%`);let V=k.get(x.def.key);V&&(V.checked=d(x.def))}},L=null,y=(x,$)=>x.box.classList.toggle("hudActive",$||L===x),C=x=>{L=x;for(let $ of a)$.box.classList.toggle("hudActive",$===x)},I=(x,$,R,K)=>{let z=h(x.def.key),N=e.factor||1;z.x=dr((K.x??0)+$/(window.innerWidth*N)*100),z.y=dr((K.y??0)+R/(window.innerHeight*N)*100),b()},_=(x,$,R,K)=>{let z=[0,window.innerWidth/2,window.innerWidth],N=[0,window.innerHeight/2,window.innerHeight];for(let Z of a)Z===x||!Z.drawn||(z.push(Z.drawn.left,Z.drawn.left+Z.drawn.width/2,Z.drawn.right),N.push(Z.drawn.top,Z.drawn.top+Z.drawn.height/2,Z.drawn.bottom));let V=null,de=null;for(let Z of[$.left+R,$.left+R+$.width/2,$.right+R])for(let ge of z){let le=ge-Z;Math.abs(le)<=tm&&(V===null||Math.abs(le){z.preventDefault(),C(x),$.setPointerCapture(z.pointerId),$.classList.add("hudDragging"),R={x:z.clientX,y:z.clientY,rect:x.drawn??$.getBoundingClientRect(),from:p(x.def.key)}},$.onpointermove=z=>{if(!R||!$.hasPointerCapture(z.pointerId))return;let[N,V]=_(x,R.rect,z.clientX-R.x,z.clientY-R.y);I(x,N,V,R.from),g()};let K=()=>{R&&(R=null,$.classList.remove("hudDragging"),c[0].style.display="none",c[1].style.display="none",E())};$.onpointerup=K,$.onpointercancel=K,$.onwheel=z=>{z.preventDefault(),C(x);let N=h(x.def.key);N.s=dr(cr((N.s??1)+(z.deltaY<0?.05:-.05),.3,3)),b(),g(),E()}}let H=document.createElement("div");H.style.cssText="position:fixed;top:50%;left:50%;transform:translate(-50%, -50%)",n.append(H);let G=H.attachShadow({mode:"open"});G.innerHTML=Zh;let J=x=>G.querySelector(`#${x}`),B=(x,$)=>{if(x.setting)window.setSetting(x.setting,$);else if(x.clientSetting){let R=x.clientSetting;u.settings.data[R]=$,window.chrome.webview.postMessage(`set-config, ${R}, ${$}`);let K=`toggle${R.charAt(0).toUpperCase()}${R.slice(1)}`;typeof u.settings[K]=="function"&&u.settings[K]($);let z=document.querySelector(`#${R}`);z&&(z.checked=$)}g(),E()},re=J("hpList"),je="";for(let x of a){let{def:$}=x;if($.group!==je){({group:je}=$);let V=document.createElement("div");V.className="hpGroup",V.textContent=je.toUpperCase(),re.append(V)}let R=document.createElement("label");R.className="hpRow";let K=document.createElement("span");if(K.className="hpName",K.textContent=$.name,$.note){let V=document.createElement("span");V.className="hpNote",V.textContent=` ${$.note}`,K.append(V)}let z=document.createElement("span");z.className="hpMoved";let N=document.createElement("span");if(N.className="hpReset",N.textContent="reset",N.title="Put it back where Krunker had it",N.onclick=V=>{V.preventDefault(),delete t[$.key],b(),g(),E()},R.append(K,z,N),$.setting||$.clientSetting){let V=document.createElement("input");V.type="checkbox",V.checked=d($),V.onchange=()=>B($,V.checked),R.append(V),k.set($.key,V)}R.onpointerenter=()=>y(x,!0),R.onpointerleave=()=>y(x,!1),re.append(R),v.set($.key,R)}let be=J("hpPanel"),Ee=J("hpHead"),j=null;Ee.onpointerdown=x=>{let $=H.getBoundingClientRect();H.style.cssText=`position:fixed;left:${Math.round($.left)}px;top:${Math.round($.top)}px`,Ee.setPointerCapture(x.pointerId),j={x:x.clientX-$.left,y:x.clientY-$.top},be.classList.add("hpBusy")},Ee.onpointermove=x=>{j&&(H.style.left=`${Math.round(x.clientX-j.x)}px`,H.style.top=`${Math.round(x.clientY-j.y)}px`)},Ee.onpointerup=()=>{j=null,be.classList.remove("hpBusy")};let X=new AbortController,Y=()=>{X.abort(),n.remove(),o.remove(),document.documentElement.classList.remove("kuteHudEdit"),s.save(t),s.closed()};J("hpDone").onclick=Y,window.addEventListener("resize",()=>{Y(),u.showNotification?.("The window changed size, open the HUD editor again",!1,5)},{signal:X.signal}),J("hpReset").onclick=()=>{for(let x of Object.keys(t))delete t[x];b(),g(),E()},document.addEventListener("keydown",x=>{if(x.key==="Escape"){x.preventDefault(),x.stopPropagation(),Y();return}if(!L||!x.key.startsWith("Arrow"))return;x.preventDefault(),x.stopPropagation();let $=x.shiftKey?10:1,R=(x.key==="ArrowRight"?$:0)-(x.key==="ArrowLeft"?$:0),K=(x.key==="ArrowDown"?$:0)-(x.key==="ArrowUp"?$:0);I(L,R,K,p(L.def.key)),g(),E()},{signal:X.signal,capture:!0}),g(),E()}var tm,lr,cr,dr,ml=w(()=>{"use strict";Yh();Jh();F();rr();ar();To();tm=6,lr=24,cr=(s,e,t)=>Math.min(t,Math.max(e,s)),dr=s=>Math.round(s*100)/100});var rm={};function Pk(){document.querySelector("#settSearch")&&(window.closWind?.(sm),window.showWindow?.(sm))}var ur,om,nm,Lk,Rk,sm,fl=w(()=>{"use strict";F();Ae();ur=document.createElement("div");ur.className="settName";ur.style.cssText="display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px 12px;margin-top:10px";om={Keybinds:localStorage.getItem("kute_Keybinds")==="true"||localStorage.getItem("kute_Keybinds")===null,Sensitivity:localStorage.getItem("kute_Sensitivity")==="true"||localStorage.getItem("kute_Sensitivity")===null,Sound:localStorage.getItem("kute_Sound")==="true"||localStorage.getItem("kute_Sound")===null},nm="";for(let s in om)nm+=`Import ${s} `;cr.innerHTML=em;$k=window.importSettingsPopup,Ck=window.importSettings,Qh=1;window.importSettingsPopup=()=>{$k(),queueMicrotask(()=>{U("#importTxt").after(cr)})};window.importSettings=()=>{let s=U("#importTxt"),e=JSON.parse(s.value);localStorage.getItem("kute_Sensitivity")==="false"&&(e.sensitivityX=localStorage.getItem("kro_setngss_sensitivityX"),e.sensitivityY=localStorage.getItem("kro_setngss_sensitivityY"),e.aimSensitivityX=localStorage.getItem("kro_setngss_aimSensitivityX"),e.aimSensitivityY=localStorage.getItem("kro_setngss_aimSensitivityY")),localStorage.getItem("kute_Sound")==="false"&&(e.sound=localStorage.getItem("kro_setngss_sound"),e.ambientVolume=localStorage.getItem("kro_setngss_ambientVolume"),e.dialogueVolume=localStorage.getItem("kro_setngss_dialogueVolume"),e.micVolume=localStorage.getItem("kro_setngss_micVolume"),e.voiceVolume=localStorage.getItem("kro_setngss_voiceVolume"),e.voiceDistance=localStorage.getItem("kro_setngss_voiceDistance"),e.gunsVolume=localStorage.getItem("kro_setngss_gunsVolume"),e.playerVolume=localStorage.getItem("kro_setngss_playerVolume"),e.skinVolume=localStorage.getItem("kro_setngss_skinVolume"),e.uiVolume=localStorage.getItem("kro_setngss_uiVolume"),e.assetVolume=localStorage.getItem("kro_setngss_assetVolume")),localStorage.getItem("kute_Keybinds")==="false"&&delete e.controls,s.value=JSON.stringify(e),Ck(),u.bindShoot(),Mk(),u.kuteIcons?.refresh(),u.autoDetect?.dropUndo(),u.autoDetect?.afterImport()}});var fl={};A(fl,{default:()=>Rk});function Ak(s){let e=s.nextElementSibling;return e instanceof HTMLElement&&e.matches(".market-grid-sentinel")?e:null}async function om(s){for(let e=0;e{"use strict";Tk=".view-stack-overlay, .modal-overlay";Lk=()=>new Promise(s=>{requestAnimationFrame(()=>s())});ml=class{constructor(){this.watched=new WeakSet,this.popupClickAt=-1/0,this.lastTop=0,this.lastHeight=0,this.restore=null,this.onWheel=()=>this.finish(!1),document.addEventListener("scroll",e=>this.onScroll(e),{capture:!0,passive:!0}),document.addEventListener("click",e=>{e.target instanceof Element&&e.target.closest(Tk)&&(this.popupClickAt=performance.now())},{capture:!0,passive:!0})}onScroll(e){let t=e.target;if(!(t instanceof HTMLElement))return;if(this.restore){t===this.restore.scroller&&t.scrollTop!==this.restore.top&&(t.scrollTop=this.restore.top);return}let o=t.querySelector(":scope > .market-grid");o instanceof HTMLElement&&(this.watch(t,o),this.lastTop=t.scrollTop,this.lastHeight=o.offsetHeight)}watch(e,t){if(this.watched.has(t))return;this.watched.add(t);let o=t.children.length;new MutationObserver(n=>{let r=n.reduce((l,c)=>l+c.removedNodes.length,0),i=o;if(o=t.children.length,this.restore?.grid===t){o>i&&this.pageArrived();return}i>0&&r>=i&&this.lastTop>e.clientHeight&&performance.now()-this.popupClickAt<5e3&&this.start(e,t,i,n.flatMap(l=>[...l.removedNodes]))}).observe(t,{childList:!0})}start(e,t,o,n){let r=document.createElement("div");r.className=t.className,r.style.cssText=t.style.cssText,r.append(...n),this.restore={scroller:e,grid:t,sentinels:new Set,top:this.lastTop,count:o,until:performance.now()+1e4,pageTimer:0,picture:r},t.style.minHeight=`${this.lastHeight}px`,t.style.alignContent="start",Object.assign(r.style,{position:"absolute",top:`${t.offsetTop}px`,left:`${t.offsetLeft}px`,width:`${t.offsetWidth}px`,margin:"0",zIndex:"1",pointerEvents:"none"}),e.append(r),e.style.overflowAnchor="none",e.scrollTop=this.lastTop,e.addEventListener("wheel",this.onWheel,{passive:!0}),this.waitForPage(),this.blink(this.restore).catch(i=>console.error("[kute] inventory scroll:",i))}pageArrived(){let{restore:e}=this;e&&(e.grid.children.length>=e.count-1||performance.now()>e.until?this.finish(!0):this.waitForPage())}waitForPage(){let{restore:e}=this;e&&(clearTimeout(e.pageTimer),e.pageTimer=window.setTimeout(()=>this.finish(!0),1500))}async blink(e){for(;this.restore===e;){let t=Ak(e.grid);t&&(e.sentinels.add(t),t.style.position="sticky",t.style.bottom="0",t.style.display="none",await om(2),t.style.display=""),await om(2)}}finish(e){let{restore:t}=this;if(t){this.restore=null,clearTimeout(t.pageTimer),t.scroller.removeEventListener("wheel",this.onWheel),t.picture.remove(),t.grid.style.minHeight="",t.grid.style.alignContent="",t.scroller.style.overflowAnchor="";for(let o of t.sentinels)o.style.position="",o.style.bottom="",o.style.display="";e&&(t.scroller.scrollTop=t.top),this.lastTop=t.scroller.scrollTop,this.lastHeight=t.grid.offsetHeight}}},Rk=new ml});var nm,sm=w(()=>{nm=`#kuteKeystrokes{position:absolute;left:463px;bottom:23px;z-index:10;display:flex;align-items:center;gap:12px;box-sizing:border-box;width:190px;height:82px;padding:5px 10px;border:1px solid rgba(53,224,232,.7);border-radius:8px;background:#0a1416e0;box-shadow:0 4px 18px #00000059;color:#cfeff1;font-family:Arial,sans-serif;font-weight:700;pointer-events:none}#kuteKeystrokesKeys{display:grid;grid-template-columns:repeat(4,24px);grid-template-rows:repeat(3,20px);gap:4px}.kuteKey{display:flex;justify-content:center;align-items:center;overflow:hidden;border:1px solid rgba(53,224,232,.35);border-radius:4px;background:#35e0e814;font-size:10px;white-space:nowrap}.kuteKey.on,#kuteMouse>.on,#kuteWheel>.on{border-color:#35e0e8;background:#35e0e8;color:#0a1416;box-shadow:0 0 8px #35e0e8cc}#kuteKeyMelee{grid-area:1 / 1}#kuteKeyForward{grid-area:1 / 2}#kuteKeySwap{grid-area:1 / 3}#kuteKeyReload{grid-area:1 / 4}#kuteKeyLeft{grid-area:2 / 1}#kuteKeyBack{grid-area:2 / 2}#kuteKeyRight{grid-area:2 / 3}#kuteKeyCrouch{grid-area:3 / 1 / 4 / 3}#kuteKeyJump{grid-area:3 / 3 / 4 / 5}#kuteMouseBox{position:relative;padding:5px}.kuteMove{--arc: rgba(53, 224, 232, .14);position:absolute;inset:0;box-sizing:border-box;border:2px solid transparent;border-radius:24px 24px 19px 19px}.kuteMove.on{--arc: rgba(53, 224, 232, .6)}.kuteMove.fast{--arc: #35e0e8}#kuteMoveLeft{border-left-color:var(--arc)}#kuteMoveRight{border-right-color:var(--arc)}#kuteMoveUp{border-top-color:var(--arc)}#kuteMoveDown{border-bottom-color:var(--arc)}#kuteMouse{position:relative;width:38px;height:58px;box-sizing:border-box;border:1px solid rgba(53,224,232,.35);border-radius:19px 19px 14px 14px;overflow:hidden}#kuteMouseLeft,#kuteMouseRight{position:absolute;top:0;width:50%;height:45%;border-bottom:1px solid rgba(53,224,232,.35);box-sizing:border-box;background:#35e0e814}#kuteMouseLeft{left:0}#kuteMouseRight{right:0}#kuteMouseSplit{position:absolute;top:0;left:calc(50% - .5px);width:1px;height:45%;background:#35e0e859}#kuteWheel{position:absolute;top:6px;left:50%;z-index:1;display:flex;flex-direction:column;box-sizing:border-box;width:10px;height:18px;margin-left:-5px;overflow:hidden;border:1px solid rgba(53,224,232,.5);border-radius:5px;background:#0a1416}#kuteWheel.on{border-color:#35e0e8;background:#35e0e8;box-shadow:0 0 8px #35e0e8cc}#kuteWheelUp,#kuteWheelDown{flex:1 1 0}#kuteWheelUp{border-bottom:1px solid rgba(53,224,232,.35)} -`});var im,rm=w(()=>{im='
              '});var kl={};A(kl,{default:()=>Kk});function pm(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`N${s-96}`:s>=112&&s<=123?`F${s-111}`:Fk[s]??"?"}function qk(s,e){let t=[],o=[[`cont_${s}_alt`,-1],[`cont_${s}`,e]];for(let[n,r]of o){let i=null;try{i=window.localStorage.getItem(n)}catch{i=null}let a=i===null?r:Number(i);a>0&&a<1e4&&t.push(a)}return t}var Nk,_k,am,lm,bl,Bk,zk,vl,cm,dm,Hk,um,Ok,Dk,Fk,wl,Kk,yl=w(()=>{"use strict";sm();rm();D();Nk=131,_k=120,am=32,lm=80,bl=.02,Bk=.35,zk=20,vl=80,cm=3,dm=3e3,Hk=3,um="kute_keystrokes_speed",Ok=120,Dk=[["kuteKeyForward","0",87],["kuteKeyBack","1",83],["kuteKeyLeft","2",65],["kuteKeyRight","3",68],["kuteKeyJump","jumpKey",32],["kuteKeyCrouch","crouchKey",16],["kuteKeyReload","reloadKey",82],["kuteKeyMelee","meleeKey",81],["kuteKeySwap","swapKey",69]],Fk={8:"BKSP",9:"TAB",13:"ENT",16:"SHIFT",17:"CTRL",18:"ALT",20:"CAPS",32:"SPACE",37:"\u2190",38:"\u2191",39:"\u2192",40:"\u2193",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"};wl=class{constructor(){this.widget=null,this.byCode=new Map,this.wheelTimers=new Map,this.rampWheelAt=-1/0,this.spaceDownAt=-1/0,this.spaceIgnored=!1,this.arcs=[],this.moveX=0,this.moveY=0,this.lastMove=-1/0,this.moveTimer=0,this.typical=Hk,this.typicalMs=0,this.fastUntil=[0,0,0,0],this.onKeyDown=e=>this.key(e.keyCode,!0),this.onKeyUp=e=>this.key(e.keyCode,!1),this.onMouseDown=e=>this.button(e.button,!0),this.onMouseUp=e=>this.button(e.button,!1),this.onWheel=e=>this.wheel(e.deltaY<0),this.onMouseMove=e=>this.move(e),this.onMoveIdle=()=>{this.moveTimer=0;let e=performance.now()-this.lastMove;if(e{let{data:t}=e;typeof t?.wheel=="number"&&t.wheel!==0?this.wheel(t.wheel>0):typeof t?.rampWheel=="number"&&t.rampWheel!==0&&this.rampWheel(t.rampWheel>0)},this.releaseAll=()=>{for(let e of this.widget?.querySelectorAll(".on")??[])e.classList.remove("on");this.moveX=0,this.moveY=0,this.fastUntil.fill(0),this.drawMove()},this.onPointerLockChange=()=>{if(document.pointerLockElement){this.readBinds();return}this.releaseAll();try{window.localStorage.setItem(um,this.typical.toFixed(3))}catch{}},u.settings.toggleKeystrokes=e=>this.toggle(e),this.toggle(!!u.settings.data.keystrokes)}toggle(e){if(queueMicrotask(()=>u.hudEditor?.apply()),!e){this.remove();return}if(this.widget)return;let t=document.createElement("style");t.id="kuteKeystrokesCSS",t.textContent=nm,document.head.append(t),this.widget=document.createElement("div"),this.widget.id="kuteKeystrokes",this.widget.innerHTML=im,(document.querySelector("#uiBase")??document.body).append(this.widget),this.readBinds(),this.loadTypical();let{widget:o}=this,n=[["kuteMoveLeft",-1,0],["kuteMoveRight",1,0],["kuteMoveUp",0,-1],["kuteMoveDown",0,1]];this.arcs=n.map(([r,i,a])=>[o.querySelector(`#${r}`),i,a]),window.addEventListener("keydown",this.onKeyDown,!0),window.addEventListener("keyup",this.onKeyUp,!0),window.addEventListener("mousedown",this.onMouseDown,!0),window.addEventListener("mouseup",this.onMouseUp,!0),window.addEventListener("mousemove",this.onMouseMove,{capture:!0,passive:!0}),window.addEventListener("wheel",this.onWheel,{capture:!0,passive:!0}),window.addEventListener("blur",this.releaseAll),document.addEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.addEventListener("message",this.onHostMessage)}remove(){window.removeEventListener("keydown",this.onKeyDown,!0),window.removeEventListener("keyup",this.onKeyUp,!0),window.removeEventListener("mousedown",this.onMouseDown,!0),window.removeEventListener("mouseup",this.onMouseUp,!0),window.removeEventListener("mousemove",this.onMouseMove,!0),window.removeEventListener("wheel",this.onWheel,!0),window.removeEventListener("blur",this.releaseAll),document.removeEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.removeEventListener("message",this.onHostMessage);for(let e of this.wheelTimers.values())clearTimeout(e);this.wheelTimers.clear(),clearTimeout(this.moveTimer),this.moveTimer=0,this.arcs=[],this.widget?.remove(),this.widget=null,this.byCode.clear(),document.querySelector("#kuteKeystrokesCSS")?.remove()}readBinds(){if(this.widget){this.byCode.clear();for(let[e,t,o]of Dk){let n=this.widget.querySelector(`#${e}`);if(!n)continue;let r=qk(t,o);n.textContent=r.length>0?pm(r[0]):"",n.title=r.map(pm).join(" / ");for(let i of r){let a=this.byCode.get(i)??[];a.push(n),this.byCode.set(i,a)}}}}key(e,t){if(e===Nk){this.button(0,t);return}if(e===am){t&&(this.spaceDownAt=performance.now(),this.spaceIgnored=this.spaceDownAt-this.rampWheelAt=100,n=Math.min(t-this.lastMove,100);if(this.lastMove=t,!(n>0))return;let r=Math.exp(-n/zk);this.moveX=this.moveX*r+e.movementX/n*(1-r),this.moveY=this.moveY*r+e.movementY/n*(1-r);let i=Math.hypot(this.moveX,this.moveY);!o&&i>bl&&(this.typicalMs=Math.min(this.typicalMs+n,dm),this.typical+=(Math.min(i,this.typical*cm)-this.typical)*(n/this.typicalMs)),this.drawMove(t),this.moveTimer||(this.moveTimer=window.setTimeout(this.onMoveIdle,vl))}loadTypical(){let e=NaN;try{e=Number(window.localStorage.getItem(um))}catch{e=NaN}e>0&&(this.typical=e,this.typicalMs=dm)}drawMove(e=performance.now()){let t=Math.hypot(this.moveX,this.moveY),o=Math.max(this.typical,bl)*cm;this.arcs.forEach(([n,r,i],a)=>{let l=this.moveX*r+this.moveY*i;l>o&&(this.fastUntil[a]=e+Ok);let c="kuteMove";this.fastUntil[a]>e?c="kuteMove on fast":t>bl&&l>=t*Bk&&(c="kuteMove on"),n.className!==c&&(n.className=c)})}rampWheel(e){if(this.rampWheelAt=performance.now(),this.rampWheelAt-this.spaceDownAt{this.widget?.querySelector(`#${t}`)?.classList.remove("on"),this.wheelTimers.delete(t)},_k))}},Kk=new wl});var mm,hm=w(()=>{mm='

              Kute Icons

              Tick all
              Done
              '});var El={};A(El,{default:()=>Gk});function km(){let s=u.settings.data[xl];return s&&typeof s=="object"?s:{}}function fm(){return u.hostFeatures?.includes("kute-icons")??!1}function gm(s){return km()[s.id]!==!1}function bm(s){return s.hiddenBy.filter(e=>{let t=null;try{t=localStorage.getItem(`kro_setngss_${e.id}`)}catch{return!1}return t===null?!1:e.kind==="checkbox"?t==="false":Number(t)===0})}function vm(s){return s.kind==="checkbox"?`${s.name} is off`:`${s.name} is 0`}async function wm(s){await Ce({title:"Reload the game?",paragraphs:[s,"The game keeps the images it already loaded, so this shows after a reload. Nothing else changes, and you can do it later."],stay:"Later",leave:"Reload now"})&&window.chrome.webview.postMessage("hard-reload")}var Uk,xl,Sl,Gk,$l=w(()=>{"use strict";hm();D();Rt();bn();Uk="https://krunker.io/kute-icons/",xl="kuteIconSlots";Sl=class{constructor(){this.asking=!1,this.watched=new WeakSet,u.kuteIcons={customize:()=>this.customize(),refresh:()=>this.refresh()},u.settings.toggleKuteIcons=e=>this.onToggle(!!e),this.refresh(),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&setTimeout(()=>this.refresh(),1500)})}refresh(){for(let e of Mo){let t=e.element?document.getElementById(e.element):null;!t||this.watched.has(t)||(this.watched.add(t),new MutationObserver(()=>Qt()).observe(t,{attributes:!0,attributeFilter:["src"]}))}Qt()}async onToggle(e){if(Qt(),!fm()){e&&u.showNotification("Kute icons need a newer Kute, update the client",!1,4);return}e&&await this.warnHidden(Mo.filter(gm)),await wm(e?"Kute icons are on.":"Kute icons are off, your own icons are back.")}async warnHidden(e){let t=new Map,o=[];for(let r of e){let i=bm(r);if(i.length!==0){for(let a of i)t.set(a.id,a);o.push(`${r.name}: ${i.map(a=>vm(a)).join(", ")}`)}}if(o.length===0||(this.asking=!0,!await Ce({title:"Hidden by your Krunker settings",paragraphs:[o.length===1?"This Kute icon will not show:":"These Kute icons will not show:",...o,"Switch those Krunker settings on for you?"],stay:"Leave them",leave:"Switch on"}).finally(()=>{this.asking=!1})))return!1;for(let r of t.values())window.setSetting(r.id,r.kind==="checkbox"?!0:"1");return u.showNotification("Switched on in your Krunker settings",!1,3),!0}customize(){let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=mm;let n=f=>o.querySelector(`#${f}`),r=fm(),i=u.settings.data.kuteIcons===!0,a="Ticked icons show Kute's version. Your Krunker settings stay as they are.";i||(a="Use Kute Icons is off, so none of these show yet."),r||(a="This needs a newer Kute. Update the client to use Kute icons."),n("kiHint").textContent=a;let l=!1,c=[],d=()=>{for(let{slot:f,box:g,note:b}of c){let v=g.checked?bm(f):[];if(b.replaceChildren(),v.length===0)continue;b.append(`Hidden: ${v.map(E=>vm(E)).join(", ")} `);let k=document.createElement("span");k.className="kiShow",k.textContent="Show it",k.onclick=async E=>{E.preventDefault(),E.stopPropagation(),await this.warnHidden([f]),d()},b.append(k)}},h=(f,g)=>{l=!0;let b={...km(),[f.id]:g};u.settings.data[xl]=b,window.chrome.webview.postMessage(`set-config-json ${xl} ${JSON.stringify(b)}`)};for(let f of Mo){let g=document.createElement("label");g.className="kiRow";let b=document.createElement("img");b.src=Uk+f.file,b.alt="";let v=document.createElement("span");v.textContent=f.name;let k=document.createElement("span");k.className="kiHidden",v.append(k);let E=document.createElement("input");E.type="checkbox",E.checked=gm(f),E.onchange=async()=>{h(f,E.checked),E.checked&&await this.warnHidden([f]),d()},g.append(b,v,E),n("kiRows").append(g),c.push({slot:f,box:E,note:k})}d(),n("kiAll").onclick=async()=>{let f=c.filter(({box:g})=>!g.checked);for(let{slot:g,box:b}of f)b.checked=!0,h(g,!0);await this.warnHidden(f.map(({slot:g})=>g)),d()};let p=new AbortController,m=()=>{p.abort(),e.remove(),l&&r&&u.settings.data.kuteIcons===!0&&wm("Your Kute icons changed.")};n("kiDone").onclick=m,e.addEventListener("mousedown",f=>{f.target===e&&m()}),document.addEventListener("keydown",f=>{f.key!=="Escape"||this.asking||(f.stopPropagation(),m())},{signal:p.signal,capture:!0}),document.body.append(e)}},Gk=new Sl});var Tl={};A(Tl,{default:()=>Vk});var ym,xm,Cl,Sm,Wk,Ml,Vk,Al=w(()=>{"use strict";D();Rt();ym="kute_update_asked",xm="kute_update_ready",Cl=[.25,.5,.75],Sm=()=>new Promise(s=>{let e=()=>{document.pointerLockElement?setTimeout(e,2e3):s()};e()}),Wk=s=>`${Math.round(s/1048576)} MB`,Ml=class{constructor(){this.step=0,this.busy=!1,!(u.platform!=="linux"||!u.hostFeatures?.includes("appimage-update"))&&(window.chrome.webview.addEventListener("message",e=>{let t=e.data?.update;t&&typeof t=="object"&&this.receive(t).catch(()=>{})}),window.chrome.webview.postMessage("update-state"))}async receive(e){e.stage==="offer"?await this.offer(e):e.stage==="downloading"?this.progress(e):e.stage==="ready"?await this.ready(e):e.stage==="failed"&&u.showNotification(`The update to Kute ${e.version} failed: ${e.error??"unknown error"}`,!1,8)}async offer(e){if(this.busy||sessionStorage.getItem(ym)===e.version)return;this.busy=!0,await Sm(),sessionStorage.setItem(ym,e.version);let t=e.install===!0,o=await Ce({title:`Kute ${e.version} is out`,paragraphs:t?[`You have ${e.current}. The update${e.size?` (${Wk(e.size)})`:""} downloads while you play.`,"It replaces your Kute AppImage and starts the next time you open Kute."]:[`You have ${e.current}.`,"This copy of Kute does not run as an AppImage and cannot update itself. The download page has the new version."],stay:"Later",leave:t?"Update":"Open download page"});this.busy=!1,o&&(window.chrome.webview.postMessage(t?"update-install":"update-page"),t&&u.showNotification(`Downloading Kute ${e.version}`,!1,4))}progress(e){if(!e.total||!e.done)return;let t=e.done/e.total;for(;this.step=Cl[this.step];)u.showNotification(`Downloading Kute ${e.version}: ${Math.round(Cl[this.step]*100)} %`,!1,3),this.step++}async ready(e){if(sessionStorage.getItem(xm)===e.version)return;await Sm(),sessionStorage.setItem(xm,e.version),await Ce({title:`Kute ${e.version} is ready`,paragraphs:["It starts the next time you open Kute. Restart now to use it right away."],stay:"Later",leave:"Restart now"})&&window.chrome.webview.postMessage("update-restart")}},Vk=new Ml});var $m,Em=w(()=>{$m=`

              CSS Manager

              visibilityHold to peek
              folder_openShow folder
              storeCSS Store
              ×
              One file is active at a time and loads after all of Krunker's styles, so a rule with the same selector wins. Krunker's inline styles and its own !important rules still need !important here. Files live in Documents\\kute\\css.
              Your CSS
              Click a file to edit it, the circle makes it active
              addNew
              content_pastePaste
              upload_fileImport
              `});var Mm,Cm=w(()=>{Mm=`:host{--accent: #35e0e8;--bg: #1e1e1e;--panel: #252525;--line: #333;--muted: #999;--ok: #5ce05a;--warn: #ffb74d;--bad: #eb5656}.managerPopup{position:relative;box-sizing:border-box;display:flex;flex-direction:column;width:min(1020px,94vw);height:min(760px,90vh);background:var(--bg);color:#fff;border-radius:14px;box-shadow:0 8px 48px #000c;font-family:Consolas,monospace;font-size:14px;overflow:hidden}.managerHeader{display:flex;align-items:center;gap:.6em;padding:1em 1.2em .8em 1.4em;border-bottom:1px solid var(--line)}.managerTitle{margin:0 auto 0 0;font-size:1.6em;letter-spacing:1px;color:var(--accent)}.managerClose{margin-left:.4em;font-size:1.6em;line-height:1;color:var(--muted);cursor:pointer}.managerClose:hover{color:#fff}.managerHint{padding:.7em 1.4em;color:var(--muted);line-height:1.5;border-bottom:1px solid var(--line)}.managerHint code{padding:.05em .35em;border-radius:4px;background:#181818;color:var(--accent)}.managerBody{flex:1 1 auto;min-height:0;overflow-y:auto;padding:1em 1.4em}.managerError,.managerNotice{margin:.8em 1.4em 0;padding:.6em .9em;border-radius:8px;white-space:pre-wrap;line-height:1.5}.managerError{background:#4a1d1d;color:#ffb4b4}.managerNotice{display:flex;align-items:center;gap:1em;background:#173a52;color:#cfe8ff}.managerNotice span{flex:1}[hidden]{display:none!important}.btn{display:inline-flex;align-items:center;gap:.4em;padding:.45em .9em;border-radius:7px;background:#2d2d2d;color:#fff;cursor:pointer;user-select:none;white-space:nowrap}.btn:hover{background:#383838;color:var(--accent)}.btn.primary{background:#1b5e63}.btn.primary:hover{background:#23777d;color:#fff}.btn.small{padding:.25em .55em;font-size:.92em}.iconBtn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:var(--muted);cursor:pointer;user-select:none}.iconBtn:hover{background:#333;color:#fff}.iconBtn.danger:hover{color:var(--bad)}.mi{font-family:Material Icons;font-weight:400;font-style:normal;font-size:18px;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;font-feature-settings:"liga"}.group{margin-bottom:1.2em;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.groupHead{display:flex;align-items:center;gap:.7em;padding:.7em .9em;border-bottom:1px solid var(--line)}.groupTitle{font-size:1.15em;color:#fff}.groupRuns{margin-right:auto;color:var(--muted);font-size:.9em}.empty{padding:.9em;color:var(--muted)}.dropZone{margin:.7em;padding:.8em;border:2px dashed #444;border-radius:8px;color:#777;text-align:center}.dropHover{border-color:var(--accent)!important;background:#35e0e814!important;color:var(--accent)}.toggle{position:relative;flex:0 0 auto;width:38px;height:20px;border-radius:10px;background:#444;cursor:pointer;transition:background .15s}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#ddd;transition:left .15s}.toggle.on{background:#1b8f96}.toggle.on:after{left:21px;background:#fff}.state{flex:0 0 auto;padding:.1em .5em;border-radius:5px;font-size:.85em;background:#333;color:var(--muted)}.state.ok{background:#1f3d1f;color:var(--ok)}.state.warn{background:#3d321f;color:var(--warn)}.state.bad{background:#3d1f1f;color:var(--bad);cursor:help}.askBackdrop{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background:#0009}.askBox{width:min(480px,90%);padding:1.3em 1.4em;border-radius:12px;background:#262626;box-shadow:0 8px 32px #000c}.askTitle{margin-bottom:.8em;font-size:1.1em;color:var(--accent)}.askInput,.field{box-sizing:border-box;width:100%;padding:.5em .7em;border:1px solid #444;border-radius:6px;background:#181818;color:#fff;font:inherit;outline:none}.askInput:focus,.field:focus{border-color:var(--accent)}.askHint{margin-top:.5em;color:var(--muted);font-size:.9em;line-height:1.4}.askActions{display:flex;justify-content:flex-end;gap:.6em;margin-top:1em}.editor{position:relative;display:flex;flex:1 1 auto;min-height:0;border:1px solid var(--line);border-radius:8px;background:#181818;overflow:hidden;font-family:Consolas,Cascadia Mono,monospace;font-size:13.5px;line-height:1.5;tab-size:4}.editorGutter{flex:0 0 auto;padding:.6em .6em .6em .8em;overflow:hidden;color:#555;text-align:right;white-space:pre;user-select:none;border-right:1px solid #2a2a2a}.editorCode{position:relative;flex:1 1 auto;min-width:0}.editorCode pre,.editorCode textarea{position:absolute;inset:0;box-sizing:border-box;margin:0;padding:.6em .8em;border:0;font:inherit;line-height:inherit;tab-size:inherit;white-space:pre;overflow-wrap:normal;letter-spacing:normal}.editorCode pre{overflow:hidden;color:#d4d4d4;pointer-events:none}.editorCode textarea{resize:none;overflow:auto;background:transparent;color:transparent;caret-color:#fff;outline:none}.editorCode textarea::selection{background:#3578c873;color:transparent}.tk-c{color:#6a9955}.tk-s{color:#ce9178}.tk-n{color:#b5cea8}.tk-k{color:#c586c0}.tk-l{color:#569cd6}.tk-f{color:#dcdcaa}.tk-p{color:#9cdcfe}.editorBar{display:flex;align-items:center;gap:.6em;margin-bottom:.7em}.editorFile{margin-right:auto;color:#fff;font-size:1.05em}.editorFile .dirty{color:var(--warn)}.editorView{display:flex;flex-direction:column;height:100%}.editorKeys{margin-top:.5em;color:#666;font-size:.85em} -`});var Tm={};A(Tm,{askConfirm:()=>Re,askText:()=>nt,formatSize:()=>go,hostSupportsManagers:()=>Os,makeDropTarget:()=>st,openManagerPopup:()=>fo,readBase64:()=>Rl});function st(s,e){Ll.set(s,e)}function Zk(s){let e=[...s.items].filter(n=>n.kind==="file").map(n=>n.webkitGetAsEntry()).filter(n=>n!==null);if(!e.length)return Promise.resolve([...s.files].map(n=>({path:n.name,file:n})));let t=[],o=async n=>{if(t.length>=Jk)return;if(n.isFile){let i=await new Promise((a,l)=>n.file(a,l));t.push({path:n.fullPath.replace(/^\/+/,""),file:i});return}let r=n.createReader();for(;;){let i=await new Promise((a,l)=>r.readEntries(a,l));if(!i.length)break;for(let a of i)await o(a)}};return Promise.all(e.map(o)).then(()=>t)}function fo(s,{onMessage:e,canClose:t,onEscape:o}){let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let r=document.createElement("div");n.append(r);let i=r.attachShadow({mode:"open"});i.innerHTML=`${s}`;let a=new AbortController,{signal:l}=a,c=v=>{v.data&&typeof v.data=="object"&&e(v.data)};window.chrome.webview.addEventListener("message",c);let d=()=>{l.aborted||t&&!t()||(a.abort(),window.chrome.webview.removeEventListener("message",c),n.remove())};for(let v of["keydown","keyup","keypress"])i.addEventListener(v,k=>k.stopPropagation());document.addEventListener("keydown",v=>{if(v.key!=="Escape")return;v.stopPropagation();let k=i.querySelector(".askBackdrop [data-cancel]");k?k.click():o?.()||d()},{signal:l,capture:!0}),n.addEventListener("mousedown",v=>{v.target===n&&d()});let h=i.querySelector("[data-error]"),p=0,m=v=>{h&&(h.textContent=v,h.hidden=!1,clearTimeout(p),p=setTimeout(()=>{h.hidden=!0},8e3))},f=null,g=v=>{f!==v&&(f?.classList.remove("dropHover"),f=v,v?.classList.add("dropHover"))},b=v=>{for(let k of v.composedPath()){if(k===n)break;if(k instanceof HTMLElement&&Ll.has(k))return k}return null};return n.addEventListener("dragover",v=>{v.preventDefault();let k=b(v);g(k),v.dataTransfer&&(v.dataTransfer.dropEffect=k?"copy":"none")}),n.addEventListener("dragleave",v=>{v.relatedTarget||g(null)}),n.addEventListener("drop",v=>{v.preventDefault();let k=b(v);g(null);let E=k&&Ll.get(k);!E||!v.dataTransfer||Zk(v.dataTransfer).then(L=>{L.length&&E(L)}).catch(L=>m(`Could not read the dropped files: ${L?.message??L}`))}),i.querySelector("[data-close]")?.addEventListener("click",d),document.body.append(n),{shadow:i,close:d,signal:l,showError:m}}function nt(s,e,t,o=""){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
              -
              Cancel
              OK
              `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=o;let r=n.querySelector(".askInput");r.value=t,(s.querySelector(".managerPopup")??s).append(n),r.focus();let a=t.lastIndexOf(".");return r.setSelectionRange(t.lastIndexOf("/")+1,a>0?a:t.length),new Promise(l=>{let c=d=>{n.remove(),l(d)};n.querySelector("[data-ok]").onclick=()=>c(r.value.trim()||null),n.querySelector("[data-cancel]").onclick=()=>c(null),r.onkeydown=d=>{d.key==="Enter"&&c(r.value.trim()||null)}})}function Re(s,e,t,o){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
              -
              Cancel
              `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=t;let r=n.querySelector("[data-ok]");return r.textContent=o,(s.querySelector(".managerPopup")??s).append(n),new Promise(i=>{let a=l=>{n.remove(),i(l)};r.onclick=()=>a(!0),n.querySelector("[data-cancel]").onclick=()=>a(!1)})}var Os,Ll,Jk,Rl,go,Ds=w(()=>{"use strict";D();Cm();Os=()=>u.hostFeatures?.includes("script-manager")??!1,Ll=new WeakMap,Jk=5e3;Rl=s=>new Promise((e,t)=>{let o=new FileReader;o.onload=()=>e(String(o.result).slice(String(o.result).indexOf(",")+1)),o.onerror=()=>t(o.error),o.readAsDataURL(s)});go=s=>s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`});var Nl={};A(Nl,{open:()=>sy});var Qk,ey,Pl,ty,Do,Ge,Il,oy,sy,_l=w(()=>{"use strict";D();Em();vn();Ds();Oo();Qk=120,ey=4*1024*1024,Pl="custom.css",ty=()=>u.hostFeatures?.includes("css-manager")??!1,Do=s=>/\.css$/i.test(s)?s:`${s}.css`,Ge=(s,e)=>window.chrome.webview.postMessage(e?`css-${s} ${JSON.stringify(e)}`:`css-${s}`),Il=class{constructor(){this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.files=[],this.active=null,this.listed=!1,this.saving=null,this.savingName=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.closeAfterSave=!1,this.forceClose=!1,this.legacy=!1,this.live=!0,this.previewTimer=0}open(){if(this.popup)return;if(!ts()){u.showNotification("The CSS Manager needs a newer Kute. Update Kute to use it.",!1,6);return}this.legacy=!ty(),this.popup=fo($m,{onMessage:i=>this.receive(i),canClose:()=>this.canClose()});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{clearTimeout(this.previewTimer),Lt.revert(),this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.listed=!1,this.saving=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.forceClose=!1}),this.$("#ccFolder").onclick=()=>Ge("reveal",{name:this.editing??""}),this.$("#ccOff").hidden=u.settings.data.customCss!==!1,this.$("#ccStore").onclick=()=>this.openStore(),this.$("#ccStoreBack").onclick=()=>{this.$("#ccStorePanel").hidden=!0,this.$(".managerBody").classList.remove("storeOpen")};let o=this.$("#ccLive");o.checked=this.live,o.onchange=()=>{this.live=o.checked,this.preview()};let n=e.host.parentElement;if(this.$("#ccPeek").onpointerdown=i=>{i.preventDefault(),n.style.opacity="0",window.addEventListener("pointerup",()=>{n.style.opacity=""},{once:!0,signal:t})},this.legacy){this.$(".managerPopup").classList.add("legacy"),this.$("#ccHint").textContent="Loaded after all of Krunker's styles, so a rule with the same selector wins. Saved as Documents\\kute\\custom.css. Update Kute to keep several CSS files and switch between them.",this.$("#ccEditor").textContent="Loading...",Ge("read");return}this.$("#ccNew").onclick=()=>this.create(),this.$("#ccPaste").onclick=()=>this.paste();let r=this.$("#ccImportInput");this.$("#ccImport").onclick=()=>r.click(),r.onchange=()=>{this.importFiles([...r.files??[]]),r.value=""},st(this.$("#ccFiles"),i=>this.importFiles(i.map(a=>a.file))),this.$("#ccEditor").textContent="Loading...",Ge("list")}async openStore(){let e=this.$("#ccStorePanel"),t=this.$("#ccStoreList");this.$(".managerBody").classList.add("storeOpen"),e.hidden=!1,t.replaceChildren();let o=document.createElement("p");o.textContent="Loading the CSS Store...",t.append(o);try{let n=await fetch("https://raw.githubusercontent.com/Liamoulee/KSS/main/index.json");if(!n.ok)throw new Error(`HTTP ${n.status}`);let r=await n.json();t.replaceChildren();for(let i of r){let a=document.createElement("div");if(a.className="storeCard",i.preview){let m=document.createElement("img");m.src=i.preview.startsWith("https://")?i.preview:"https://raw.githubusercontent.com/Liamoulee/KSS/main/"+i.preview.split("/").map(encodeURIComponent).join("/"),m.alt=`${i.name} preview`,m.onerror=()=>m.remove(),a.append(m)}let l=document.createElement("h3");l.textContent=i.name;let c=document.createElement("p");c.textContent=`By ${i.author}`;let d=document.createElement("button");d.className="storeDownloadBtn";let h=this.files.some(m=>m.name.toLowerCase()===Do(i.name).toLowerCase()),p=m=>{d.textContent=m};p(h?"Already downloaded":"Download the CSS"),h&&(d.classList.add("installed"),d.disabled=!0),d.onclick=async()=>{if(h=this.files.some(m=>m.name.toLowerCase()===Do(i.name).toLowerCase()),h){p("Already downloaded"),d.classList.add("installed"),d.disabled=!0;return}d.disabled=!0,p("Downloading...");try{let m=await fetch("https://raw.githubusercontent.com/Liamoulee/KSS/main/"+i.file.split("/").map(encodeURIComponent).join("/"));if(!m.ok)throw new Error(`HTTP ${m.status}`);let f=await m.text();Ge("import",{name:Do(i.name),content:f}),h=!0,p("Already downloaded"),d.classList.add("installed"),d.disabled=!0}catch(m){console.error("CSS Store import failed:",m),d.disabled=!1,p("Try again")}},a.append(l,c,d),t.append(a)}r.length===0&&(t.textContent="No CSS available.")}catch(n){console.error("CSS Store failed to load:",n),t.replaceChildren();let r=document.createElement("p");r.textContent="Unable to load the CSS Store. Please try again later.",t.append(r)}}$(e){return this.popup?.shadow.querySelector(e)}receive(e){if(typeof e.managerError=="string"&&this.popup?.showError(e.managerError),this.legacy){typeof e.customCss?.content=="string"&&!this.editor&&(this.active=Pl,this.showEditor(Pl,e.customCss.content)),e.customCssSaved&&this.saving!==null&&this.saved(e.customCssSaved.error,Pl);return}e.cssFiles&&this.updateList(e.cssFiles),e.cssFile&&e.cssFile.name===this.loading&&(this.loading=null,typeof e.cssFile.content=="string"?this.showEditor(e.cssFile.name,e.cssFile.content):this.popup?.showError(`Could not read ${e.cssFile.name}`)),e.cssSaved&&this.saving!==null&&e.cssSaved.name===this.savingName&&this.saved(e.cssSaved.error,e.cssSaved.name),e.cssImported&&this.imported(e.cssImported),e.cssActivated&&(this.activating=!1,e.cssActivated.error?this.popup?.showError(`Could not switch: ${e.cssActivated.error}`):Lt.markSaved(String(e.cssActivated.content??"")),this.preview())}updateList(e){this.files=Array.isArray(e.files)?e.files:[];let t=this.active;this.active=e.active??null,t&&!this.active&&!this.activating&&(Lt.markSaved(""),this.preview());let o=new Set(this.files.map(n=>n.name));if(this.renaming&&this.editing===this.renaming.from&&o.has(this.renaming.to)){this.editing=this.renaming.to;let n=this.popup?.shadow.querySelector(".editorFile")?.firstChild;n&&(n.textContent=this.editing)}if(this.renaming=null,this.editing&&!o.has(this.editing)&&this.closeEditor(),!this.listed){this.listed=!0;let n=this.active??this.files[0]?.name;n?this.load(n):this.closeEditor()}this.renderList()}renderList(){let e=this.$("#ccList");if(e){if(e.textContent="",!this.files.length){let t=document.createElement("div");t.className="empty",t.textContent="No CSS files yet. Make one with New, paste one, or import .css files.",e.append(t)}for(let t of this.files)e.append(this.row(t));e.append(this.row(null))}}row(e){let t=e?.name??"",o=document.createElement("div");o.className="cssRow",o.classList.toggle("none",!e),o.classList.toggle("active",(this.active??"")===t),o.classList.toggle("editing",!!e&&this.editing===t);let n=document.createElement("div");n.className="cssRadio",n.title=e?"Use this one":"No CSS",n.onclick=l=>{l.stopPropagation(),this.activate(t)};let r=document.createElement("div");if(r.className="cssName",r.textContent=e?t:"None",o.append(n,r),!e)return o.onclick=()=>this.activate(""),o;let i=document.createElement("div");i.className="cssSize",i.textContent=go(e.size);let a=document.createElement("div");a.className="cssActions";for(let[l,c,d,h]of[["edit","Rename",()=>this.rename(t),!1],["delete","Delete",()=>this.remove(t),!0]]){let p=document.createElement("div");p.className=h?"iconBtn danger":"iconBtn",p.title=c,p.innerHTML=`${l}`,p.onclick=m=>{m.stopPropagation(),d()},a.append(p)}return o.append(i,a),o.onclick=()=>this.load(t),o}async load(e){e===this.editing&&this.editor||await this.discardChanges()&&(this.loading=e,Ge("get",{name:e}))}showEditor(e,t){let o=this.$("#ccEditor");if(!o)return;let{editor:n}=po(o,{title:e,content:t,language:"css",onSave:r=>this.save(r),onClose:()=>this.popup?.close(),onChange:()=>{clearTimeout(this.previewTimer),this.previewTimer=setTimeout(()=>this.preview(),Qk)}});this.editor=n,this.editing=e,this.renderList(),this.preview()}closeEditor(){this.editor=null,this.editing=null;let e=this.$("#ccEditor");e&&(e.innerHTML='
              Pick a file below to edit it.
              '),this.preview()}preview(){let{editor:e}=this;this.live&&e&&(this.editing===this.active||e.isDirty())?Lt.apply(e.getValue()):Lt.revert()}async discardChanges(){return!this.editor?.isDirty()||!this.popup?!0:Re(this.popup.shadow,"Unsaved changes",`Throw the changes to ${this.editing} away?`,"Discard")}save(e){!this.editor||!this.editing||this.saving!==null||(this.closeAfterSave=e,this.saving=this.editor.getValue(),this.savingName=this.editing,this.legacy?window.chrome.webview.postMessage(`css-write ${JSON.stringify({content:this.saving})}`):Ge("save",{name:this.editing,content:this.saving}))}saved(e,t){let o=this.saving??"";if(this.saving=null,e){this.popup?.showError(`Could not save: ${e}`);return}t===this.active&&Lt.markSaved(o),t===this.editing&&this.editor?.markSaved(o),this.preview(),this.closeAfterSave&&this.popup?.close()}activate(e){e===(this.active??"")||this.activating||(this.activating=!0,Ge("activate",{name:e}))}async create(){if(!this.popup)return;let e=await nt(this.popup.shadow,"New CSS file","theme.css","Ends in .css");e&&(this.openAfterImport=Do(e),Ge("import",{name:this.openAfterImport,content:""}))}async paste(){if(!this.popup)return;let e="";try{e=await navigator.clipboard.readText()}catch{this.popup.showError("Could not read the clipboard.");return}if(!e.trim()){this.popup.showError("The clipboard has no text in it. Copy the CSS first.");return}let t=await nt(this.popup.shadow,"Name for the pasted CSS","pasted.css","Ends in .css");t&&(this.openAfterImport=Do(t),Ge("import",{name:this.openAfterImport,content:e}))}async importFiles(e){let t=[];for(let o of e){if(!/\.css$/i.test(o.name)||o.size>ey){t.push(o.name);continue}Ge("import",{name:o.name,content:await o.text()})}t.length&&this.popup?.showError(`Not imported (only .css files up to 4 MB): ${t.join(", ")}`)}imported(e){if(e.error){this.popup?.showError(`Could not add ${e.requested}: ${e.error}`);return}this.active||this.activate(e.name),e.requested===this.openAfterImport?(this.openAfterImport=null,this.load(e.name)):this.editing||this.load(e.name)}async rename(e){if(!this.popup)return;let t=await nt(this.popup.shadow,`Rename ${e}`,e,"Ends in .css");if(!t)return;let o=Do(t);o!==e&&(this.renaming={from:e,to:o},Ge("rename",{from:e,to:o}))}async remove(e){!this.popup||!await Re(this.popup.shadow,`Delete ${e}?`,"It goes to the recycle bin.","Delete")||Ge("delete",{name:e})}canClose(){return this.forceClose||!this.editor?.isDirty()||!this.popup?!0:(Re(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},oy=new Il,sy=()=>oy.open()});var Am={};A(Am,{hostWatchesSwapper:()=>dr,reloadStylesheets:()=>Fs});var dr,Fs,ur=w(()=>{"use strict";D();dr=()=>u.hostFeatures?.includes("swapper-watch")??!1,Fs=s=>{for(let e of document.querySelectorAll('link[rel="stylesheet"]')){if(!(e instanceof HTMLLinkElement)||!e.href)continue;let t=new URL(e.href);if(!/(^|\.)krunker\.io$/.test(t.hostname)||!s.has(t.pathname.slice(1).toLowerCase()))continue;t.searchParams.set("kuteSwap",String(Date.now()));let o=e.cloneNode();o.href=t.href,o.addEventListener("load",()=>e.remove(),{once:!0}),o.addEventListener("error",()=>o.remove(),{once:!0}),e.after(o)}}});var Rm,Lm=w(()=>{Rm='

              Userscripts

              Userscripts off
              folder_openOpen scripts folder
              ×
              Scripts run inside Krunker. Only add scripts you trust, and never anything that breaks krunker.io/docs/terms.txt. Drop .js files onto a group, or create one with New script.
              '});var zl={};A(zl,{open:()=>ly});var ry,iy,oe,qs,Bl,ay,ly,Hl=w(()=>{"use strict";D();Lm();es();Ds();Oo();ry=4*1024*1024,iy=`// ==UserScript== + `;ur.innerHTML=nm;Lk=window.importSettingsPopup,Rk=window.importSettings,sm=1;window.importSettingsPopup=()=>{Lk(),queueMicrotask(()=>{U("#importTxt").after(ur)})};window.importSettings=()=>{let s=U("#importTxt"),e=JSON.parse(s.value);localStorage.getItem("kute_Sensitivity")==="false"&&(e.sensitivityX=localStorage.getItem("kro_setngss_sensitivityX"),e.sensitivityY=localStorage.getItem("kro_setngss_sensitivityY"),e.aimSensitivityX=localStorage.getItem("kro_setngss_aimSensitivityX"),e.aimSensitivityY=localStorage.getItem("kro_setngss_aimSensitivityY")),localStorage.getItem("kute_Sound")==="false"&&(e.sound=localStorage.getItem("kro_setngss_sound"),e.ambientVolume=localStorage.getItem("kro_setngss_ambientVolume"),e.dialogueVolume=localStorage.getItem("kro_setngss_dialogueVolume"),e.micVolume=localStorage.getItem("kro_setngss_micVolume"),e.voiceVolume=localStorage.getItem("kro_setngss_voiceVolume"),e.voiceDistance=localStorage.getItem("kro_setngss_voiceDistance"),e.gunsVolume=localStorage.getItem("kro_setngss_gunsVolume"),e.playerVolume=localStorage.getItem("kro_setngss_playerVolume"),e.skinVolume=localStorage.getItem("kro_setngss_skinVolume"),e.uiVolume=localStorage.getItem("kro_setngss_uiVolume"),e.assetVolume=localStorage.getItem("kro_setngss_assetVolume")),localStorage.getItem("kute_Keybinds")==="false"&&delete e.controls,s.value=JSON.stringify(e),Rk(),u.bindShoot(),Pk(),u.kuteIcons?.refresh(),u.autoDetect?.dropUndo(),u.autoDetect?.afterImport()}});var bl={};A(bl,{default:()=>Bk});function Nk(s){let e=s.nextElementSibling;return e instanceof HTMLElement&&e.matches(".market-grid-sentinel")?e:null}async function im(s){for(let e=0;e{"use strict";Ik=".view-stack-overlay, .modal-overlay";_k=()=>new Promise(s=>{requestAnimationFrame(()=>s())});gl=class{constructor(){this.watched=new WeakSet,this.popupClickAt=-1/0,this.lastTop=0,this.lastHeight=0,this.restore=null,this.onWheel=()=>this.finish(!1),document.addEventListener("scroll",e=>this.onScroll(e),{capture:!0,passive:!0}),document.addEventListener("click",e=>{e.target instanceof Element&&e.target.closest(Ik)&&(this.popupClickAt=performance.now())},{capture:!0,passive:!0})}onScroll(e){let t=e.target;if(!(t instanceof HTMLElement))return;if(this.restore){t===this.restore.scroller&&t.scrollTop!==this.restore.top&&(t.scrollTop=this.restore.top);return}let o=t.querySelector(":scope > .market-grid");o instanceof HTMLElement&&(this.watch(t,o),this.lastTop=t.scrollTop,this.lastHeight=o.offsetHeight)}watch(e,t){if(this.watched.has(t))return;this.watched.add(t);let o=t.children.length;new MutationObserver(n=>{let r=n.reduce((l,c)=>l+c.removedNodes.length,0),i=o;if(o=t.children.length,this.restore?.grid===t){o>i&&this.pageArrived();return}i>0&&r>=i&&this.lastTop>e.clientHeight&&performance.now()-this.popupClickAt<5e3&&this.start(e,t,i,n.flatMap(l=>[...l.removedNodes]))}).observe(t,{childList:!0})}start(e,t,o,n){let r=document.createElement("div");r.className=t.className,r.style.cssText=t.style.cssText,r.append(...n),this.restore={scroller:e,grid:t,sentinels:new Set,top:this.lastTop,count:o,until:performance.now()+1e4,pageTimer:0,picture:r},t.style.minHeight=`${this.lastHeight}px`,t.style.alignContent="start",Object.assign(r.style,{position:"absolute",top:`${t.offsetTop}px`,left:`${t.offsetLeft}px`,width:`${t.offsetWidth}px`,margin:"0",zIndex:"1",pointerEvents:"none"}),e.append(r),e.style.overflowAnchor="none",e.scrollTop=this.lastTop,e.addEventListener("wheel",this.onWheel,{passive:!0}),this.waitForPage(),this.blink(this.restore).catch(i=>console.error("[kute] inventory scroll:",i))}pageArrived(){let{restore:e}=this;e&&(e.grid.children.length>=e.count-1||performance.now()>e.until?this.finish(!0):this.waitForPage())}waitForPage(){let{restore:e}=this;e&&(clearTimeout(e.pageTimer),e.pageTimer=window.setTimeout(()=>this.finish(!0),1500))}async blink(e){for(;this.restore===e;){let t=Nk(e.grid);t&&(e.sentinels.add(t),t.style.position="sticky",t.style.bottom="0",t.style.display="none",await im(2),t.style.display=""),await im(2)}}finish(e){let{restore:t}=this;if(t){this.restore=null,clearTimeout(t.pageTimer),t.scroller.removeEventListener("wheel",this.onWheel),t.picture.remove(),t.grid.style.minHeight="",t.grid.style.alignContent="",t.scroller.style.overflowAnchor="";for(let o of t.sentinels)o.style.position="",o.style.bottom="",o.style.display="";e&&(t.scroller.scrollTop=t.top),this.lastTop=t.scroller.scrollTop,this.lastHeight=t.grid.offsetHeight}}},Bk=new gl});var lm,am=w(()=>{lm=`#kuteKeystrokes{position:absolute;left:463px;bottom:23px;z-index:10;display:flex;align-items:center;gap:12px;box-sizing:border-box;width:190px;height:82px;padding:5px 10px;border:1px solid rgba(53,224,232,.7);border-radius:8px;background:#0a1416e0;box-shadow:0 4px 18px #00000059;color:#cfeff1;font-family:Arial,sans-serif;font-weight:700;pointer-events:none}#kuteKeystrokesKeys{display:grid;grid-template-columns:repeat(4,24px);grid-template-rows:repeat(3,20px);gap:4px}.kuteKey{display:flex;justify-content:center;align-items:center;overflow:hidden;border:1px solid rgba(53,224,232,.35);border-radius:4px;background:#35e0e814;font-size:10px;white-space:nowrap}.kuteKey.on,#kuteMouse>.on,#kuteWheel>.on{border-color:#35e0e8;background:#35e0e8;color:#0a1416;box-shadow:0 0 8px #35e0e8cc}#kuteKeyMelee{grid-area:1 / 1}#kuteKeyForward{grid-area:1 / 2}#kuteKeySwap{grid-area:1 / 3}#kuteKeyReload{grid-area:1 / 4}#kuteKeyLeft{grid-area:2 / 1}#kuteKeyBack{grid-area:2 / 2}#kuteKeyRight{grid-area:2 / 3}#kuteKeyCrouch{grid-area:3 / 1 / 4 / 3}#kuteKeyJump{grid-area:3 / 3 / 4 / 5}#kuteMouseBox{position:relative;padding:5px}.kuteMove{--arc: rgba(53, 224, 232, .14);position:absolute;inset:0;box-sizing:border-box;border:2px solid transparent;border-radius:24px 24px 19px 19px}.kuteMove.on{--arc: rgba(53, 224, 232, .6)}.kuteMove.fast{--arc: #35e0e8}#kuteMoveLeft{border-left-color:var(--arc)}#kuteMoveRight{border-right-color:var(--arc)}#kuteMoveUp{border-top-color:var(--arc)}#kuteMoveDown{border-bottom-color:var(--arc)}#kuteMouse{position:relative;width:38px;height:58px;box-sizing:border-box;border:1px solid rgba(53,224,232,.35);border-radius:19px 19px 14px 14px;overflow:hidden}#kuteMouseLeft,#kuteMouseRight{position:absolute;top:0;width:50%;height:45%;border-bottom:1px solid rgba(53,224,232,.35);box-sizing:border-box;background:#35e0e814}#kuteMouseLeft{left:0}#kuteMouseRight{right:0}#kuteMouseSplit{position:absolute;top:0;left:calc(50% - .5px);width:1px;height:45%;background:#35e0e859}#kuteWheel{position:absolute;top:6px;left:50%;z-index:1;display:flex;flex-direction:column;box-sizing:border-box;width:10px;height:18px;margin-left:-5px;overflow:hidden;border:1px solid rgba(53,224,232,.5);border-radius:5px;background:#0a1416}#kuteWheel.on{border-color:#35e0e8;background:#35e0e8;box-shadow:0 0 8px #35e0e8cc}#kuteWheelUp,#kuteWheelDown{flex:1 1 0}#kuteWheelUp{border-bottom:1px solid rgba(53,224,232,.35)} +`});var dm,cm=w(()=>{dm='
              '});var xl={};A(xl,{default:()=>Vk});function gm(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`N${s-96}`:s>=112&&s<=123?`F${s-111}`:Gk[s]??"?"}function Wk(s,e){let t=[],o=[[`cont_${s}_alt`,-1],[`cont_${s}`,e]];for(let[n,r]of o){let i=null;try{i=window.localStorage.getItem(n)}catch{i=null}let a=i===null?r:Number(i);a>0&&a<1e4&&t.push(a)}return t}var Ok,Fk,um,pm,wl,Dk,qk,kl,hm,mm,Kk,fm,jk,Uk,Gk,yl,Vk,Sl=w(()=>{"use strict";am();cm();F();Ok=131,Fk=120,um=32,pm=80,wl=.02,Dk=.35,qk=20,kl=80,hm=3,mm=3e3,Kk=3,fm="kute_keystrokes_speed",jk=120,Uk=[["kuteKeyForward","0",87],["kuteKeyBack","1",83],["kuteKeyLeft","2",65],["kuteKeyRight","3",68],["kuteKeyJump","jumpKey",32],["kuteKeyCrouch","crouchKey",16],["kuteKeyReload","reloadKey",82],["kuteKeyMelee","meleeKey",81],["kuteKeySwap","swapKey",69]],Gk={8:"BKSP",9:"TAB",13:"ENT",16:"SHIFT",17:"CTRL",18:"ALT",20:"CAPS",32:"SPACE",37:"\u2190",38:"\u2191",39:"\u2192",40:"\u2193",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"};yl=class{constructor(){this.widget=null,this.byCode=new Map,this.wheelTimers=new Map,this.rampWheelAt=-1/0,this.spaceDownAt=-1/0,this.spaceIgnored=!1,this.arcs=[],this.moveX=0,this.moveY=0,this.lastMove=-1/0,this.moveTimer=0,this.typical=Kk,this.typicalMs=0,this.fastUntil=[0,0,0,0],this.onKeyDown=e=>this.key(e.keyCode,!0),this.onKeyUp=e=>this.key(e.keyCode,!1),this.onMouseDown=e=>this.button(e.button,!0),this.onMouseUp=e=>this.button(e.button,!1),this.onWheel=e=>this.wheel(e.deltaY<0),this.onMouseMove=e=>this.move(e),this.onMoveIdle=()=>{this.moveTimer=0;let e=performance.now()-this.lastMove;if(e{let{data:t}=e;typeof t?.wheel=="number"&&t.wheel!==0?this.wheel(t.wheel>0):typeof t?.rampWheel=="number"&&t.rampWheel!==0&&this.rampWheel(t.rampWheel>0)},this.releaseAll=()=>{for(let e of this.widget?.querySelectorAll(".on")??[])e.classList.remove("on");this.moveX=0,this.moveY=0,this.fastUntil.fill(0),this.drawMove()},this.onPointerLockChange=()=>{if(document.pointerLockElement){this.readBinds();return}this.releaseAll();try{window.localStorage.setItem(fm,this.typical.toFixed(3))}catch{}},u.settings.toggleKeystrokes=e=>this.toggle(e),this.toggle(!!u.settings.data.keystrokes)}toggle(e){if(queueMicrotask(()=>u.hudEditor?.apply()),!e){this.remove();return}if(this.widget)return;let t=document.createElement("style");t.id="kuteKeystrokesCSS",t.textContent=lm,document.head.append(t),this.widget=document.createElement("div"),this.widget.id="kuteKeystrokes",this.widget.innerHTML=dm,(document.querySelector("#uiBase")??document.body).append(this.widget),this.readBinds(),this.loadTypical();let{widget:o}=this,n=[["kuteMoveLeft",-1,0],["kuteMoveRight",1,0],["kuteMoveUp",0,-1],["kuteMoveDown",0,1]];this.arcs=n.map(([r,i,a])=>[o.querySelector(`#${r}`),i,a]),window.addEventListener("keydown",this.onKeyDown,!0),window.addEventListener("keyup",this.onKeyUp,!0),window.addEventListener("mousedown",this.onMouseDown,!0),window.addEventListener("mouseup",this.onMouseUp,!0),window.addEventListener("mousemove",this.onMouseMove,{capture:!0,passive:!0}),window.addEventListener("wheel",this.onWheel,{capture:!0,passive:!0}),window.addEventListener("blur",this.releaseAll),document.addEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.addEventListener("message",this.onHostMessage)}remove(){window.removeEventListener("keydown",this.onKeyDown,!0),window.removeEventListener("keyup",this.onKeyUp,!0),window.removeEventListener("mousedown",this.onMouseDown,!0),window.removeEventListener("mouseup",this.onMouseUp,!0),window.removeEventListener("mousemove",this.onMouseMove,!0),window.removeEventListener("wheel",this.onWheel,!0),window.removeEventListener("blur",this.releaseAll),document.removeEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.removeEventListener("message",this.onHostMessage);for(let e of this.wheelTimers.values())clearTimeout(e);this.wheelTimers.clear(),clearTimeout(this.moveTimer),this.moveTimer=0,this.arcs=[],this.widget?.remove(),this.widget=null,this.byCode.clear(),document.querySelector("#kuteKeystrokesCSS")?.remove()}readBinds(){if(this.widget){this.byCode.clear();for(let[e,t,o]of Uk){let n=this.widget.querySelector(`#${e}`);if(!n)continue;let r=Wk(t,o);n.textContent=r.length>0?gm(r[0]):"",n.title=r.map(gm).join(" / ");for(let i of r){let a=this.byCode.get(i)??[];a.push(n),this.byCode.set(i,a)}}}}key(e,t){if(e===Ok){this.button(0,t);return}if(e===um){t&&(this.spaceDownAt=performance.now(),this.spaceIgnored=this.spaceDownAt-this.rampWheelAt=100,n=Math.min(t-this.lastMove,100);if(this.lastMove=t,!(n>0))return;let r=Math.exp(-n/qk);this.moveX=this.moveX*r+e.movementX/n*(1-r),this.moveY=this.moveY*r+e.movementY/n*(1-r);let i=Math.hypot(this.moveX,this.moveY);!o&&i>wl&&(this.typicalMs=Math.min(this.typicalMs+n,mm),this.typical+=(Math.min(i,this.typical*hm)-this.typical)*(n/this.typicalMs)),this.drawMove(t),this.moveTimer||(this.moveTimer=window.setTimeout(this.onMoveIdle,kl))}loadTypical(){let e=NaN;try{e=Number(window.localStorage.getItem(fm))}catch{e=NaN}e>0&&(this.typical=e,this.typicalMs=mm)}drawMove(e=performance.now()){let t=Math.hypot(this.moveX,this.moveY),o=Math.max(this.typical,wl)*hm;this.arcs.forEach(([n,r,i],a)=>{let l=this.moveX*r+this.moveY*i;l>o&&(this.fastUntil[a]=e+jk);let c="kuteMove";this.fastUntil[a]>e?c="kuteMove on fast":t>wl&&l>=t*Dk&&(c="kuteMove on"),n.className!==c&&(n.className=c)})}rampWheel(e){if(this.rampWheelAt=performance.now(),this.rampWheelAt-this.spaceDownAt{this.widget?.querySelector(`#${t}`)?.classList.remove("on"),this.wheelTimers.delete(t)},Fk))}},Vk=new yl});var vm,bm=w(()=>{vm='

              Kute Icons

              Tick all
              Done
              '});var Cl={};A(Cl,{default:()=>Jk});function Em(){let s=u.settings.data[El];return s&&typeof s=="object"?s:{}}function wm(){return u.hostFeatures?.includes("kute-icons")??!1}function km(s){return Em()[s.id]!==!1}function ym(s){return s.hiddenBy.filter(e=>{let t=null;try{t=localStorage.getItem(`kro_setngss_${e.id}`)}catch{return!1}return t===null?!1:e.kind==="checkbox"?t==="false":Number(t)===0})}function xm(s){return s.kind==="checkbox"?`${s.name} is off`:`${s.name} is 0`}async function Sm(s){await Ce({title:"Reload the game?",paragraphs:[s,"The game keeps the images it already loaded, so this shows after a reload. Nothing else changes, and you can do it later."],stay:"Later",leave:"Reload now"})&&window.chrome.webview.postMessage("hard-reload")}var Xk,El,$l,Jk,Ml=w(()=>{"use strict";bm();F();Pt();wn();Xk="https://krunker.io/kute-icons/",El="kuteIconSlots";$l=class{constructor(){this.asking=!1,this.watched=new WeakSet,u.kuteIcons={customize:()=>this.customize(),refresh:()=>this.refresh()},u.settings.toggleKuteIcons=e=>this.onToggle(!!e),this.refresh(),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&setTimeout(()=>this.refresh(),1500)})}refresh(){for(let e of Ao){let t=e.element?document.getElementById(e.element):null;!t||this.watched.has(t)||(this.watched.add(t),new MutationObserver(()=>oo()).observe(t,{attributes:!0,attributeFilter:["src"]}))}oo()}async onToggle(e){if(oo(),!wm()){e&&u.showNotification("Kute icons need a newer Kute, update the client",!1,4);return}e&&await this.warnHidden(Ao.filter(km)),await Sm(e?"Kute icons are on.":"Kute icons are off, your own icons are back.")}async warnHidden(e){let t=new Map,o=[];for(let r of e){let i=ym(r);if(i.length!==0){for(let a of i)t.set(a.id,a);o.push(`${r.name}: ${i.map(a=>xm(a)).join(", ")}`)}}if(o.length===0||(this.asking=!0,!await Ce({title:"Hidden by your Krunker settings",paragraphs:[o.length===1?"This Kute icon will not show:":"These Kute icons will not show:",...o,"Switch those Krunker settings on for you?"],stay:"Leave them",leave:"Switch on"}).finally(()=>{this.asking=!1})))return!1;for(let r of t.values())window.setSetting(r.id,r.kind==="checkbox"?!0:"1");return u.showNotification("Switched on in your Krunker settings",!1,3),!0}customize(){let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=vm;let n=f=>o.querySelector(`#${f}`),r=wm(),i=u.settings.data.kuteIcons===!0,a="Ticked icons show Kute's version. Your Krunker settings stay as they are.";i||(a="Use Kute Icons is off, so none of these show yet."),r||(a="This needs a newer Kute. Update the client to use Kute icons."),n("kiHint").textContent=a;let l=!1,c=[],d=()=>{for(let{slot:f,box:g,note:b}of c){let v=g.checked?ym(f):[];if(b.replaceChildren(),v.length===0)continue;b.append(`Hidden: ${v.map(E=>xm(E)).join(", ")} `);let k=document.createElement("span");k.className="kiShow",k.textContent="Show it",k.onclick=async E=>{E.preventDefault(),E.stopPropagation(),await this.warnHidden([f]),d()},b.append(k)}},h=(f,g)=>{l=!0;let b={...Em(),[f.id]:g};u.settings.data[El]=b,window.chrome.webview.postMessage(`set-config-json ${El} ${JSON.stringify(b)}`)};for(let f of Ao){let g=document.createElement("label");g.className="kiRow";let b=document.createElement("img");b.src=Xk+f.file,b.alt="";let v=document.createElement("span");v.textContent=f.name;let k=document.createElement("span");k.className="kiHidden",v.append(k);let E=document.createElement("input");E.type="checkbox",E.checked=km(f),E.onchange=async()=>{h(f,E.checked),E.checked&&await this.warnHidden([f]),d()},g.append(b,v,E),n("kiRows").append(g),c.push({slot:f,box:E,note:k})}d(),n("kiAll").onclick=async()=>{let f=c.filter(({box:g})=>!g.checked);for(let{slot:g,box:b}of f)b.checked=!0,h(g,!0);await this.warnHidden(f.map(({slot:g})=>g)),d()};let p=new AbortController,m=()=>{p.abort(),e.remove(),l&&r&&u.settings.data.kuteIcons===!0&&Sm("Your Kute icons changed.")};n("kiDone").onclick=m,e.addEventListener("mousedown",f=>{f.target===e&&m()}),document.addEventListener("keydown",f=>{f.key!=="Escape"||this.asking||(f.stopPropagation(),m())},{signal:p.signal,capture:!0}),document.body.append(e)}},Jk=new $l});var Ll={};A(Ll,{default:()=>Qk});var $m,Cm,Tl,Mm,Zk,Al,Qk,Rl=w(()=>{"use strict";F();Pt();$m="kute_update_asked",Cm="kute_update_ready",Tl=[.25,.5,.75],Mm=()=>new Promise(s=>{let e=()=>{document.pointerLockElement?setTimeout(e,2e3):s()};e()}),Zk=s=>`${Math.round(s/1048576)} MB`,Al=class{constructor(){this.step=0,this.busy=!1,!(u.platform!=="linux"||!u.hostFeatures?.includes("appimage-update"))&&(window.chrome.webview.addEventListener("message",e=>{let t=e.data?.update;t&&typeof t=="object"&&this.receive(t).catch(()=>{})}),window.chrome.webview.postMessage("update-state"))}async receive(e){e.stage==="offer"?await this.offer(e):e.stage==="downloading"?this.progress(e):e.stage==="ready"?await this.ready(e):e.stage==="failed"&&u.showNotification(`The update to Kute ${e.version} failed: ${e.error??"unknown error"}`,!1,8)}async offer(e){if(this.busy||sessionStorage.getItem($m)===e.version)return;this.busy=!0,await Mm(),sessionStorage.setItem($m,e.version);let t=e.install===!0,o=await Ce({title:`Kute ${e.version} is out`,paragraphs:t?[`You have ${e.current}. The update${e.size?` (${Zk(e.size)})`:""} downloads while you play.`,"It replaces your Kute AppImage and starts the next time you open Kute."]:[`You have ${e.current}.`,"This copy of Kute does not run as an AppImage and cannot update itself. The download page has the new version."],stay:"Later",leave:t?"Update":"Open download page"});this.busy=!1,o&&(window.chrome.webview.postMessage(t?"update-install":"update-page"),t&&u.showNotification(`Downloading Kute ${e.version}`,!1,4))}progress(e){if(!e.total||!e.done)return;let t=e.done/e.total;for(;this.step=Tl[this.step];)u.showNotification(`Downloading Kute ${e.version}: ${Math.round(Tl[this.step]*100)} %`,!1,3),this.step++}async ready(e){if(sessionStorage.getItem(Cm)===e.version)return;await Mm(),sessionStorage.setItem(Cm,e.version),await Ce({title:`Kute ${e.version} is ready`,paragraphs:["It starts the next time you open Kute. Restart now to use it right away."],stay:"Later",leave:"Restart now"})&&window.chrome.webview.postMessage("update-restart")}},Qk=new Al});var Am,Tm=w(()=>{Am=`

              CSS Manager

              visibilityHold to peek
              folder_openShow folder
              storeCSS Store
              ×
              One file is active at a time and loads after all of Krunker's styles, so a rule with the same selector wins. Krunker's inline styles and its own !important rules still need !important here. Files live in Documents\\kute\\css.
              Your CSS
              Click a file to edit it, the circle makes it active
              addNew
              content_pastePaste
              upload_fileImport
              `});var Rm,Lm=w(()=>{Rm=`:host{--accent: #35e0e8;--bg: #1e1e1e;--panel: #252525;--line: #333;--muted: #999;--ok: #5ce05a;--warn: #ffb74d;--bad: #eb5656}.managerPopup{position:relative;box-sizing:border-box;display:flex;flex-direction:column;width:min(1020px,94vw);height:min(760px,90vh);background:var(--bg);color:#fff;border-radius:14px;box-shadow:0 8px 48px #000c;font-family:Consolas,monospace;font-size:14px;overflow:hidden}.managerHeader{display:flex;align-items:center;gap:.6em;padding:1em 1.2em .8em 1.4em;border-bottom:1px solid var(--line)}.managerTitle{margin:0 auto 0 0;font-size:1.6em;letter-spacing:1px;color:var(--accent)}.managerClose{margin-left:.4em;font-size:1.6em;line-height:1;color:var(--muted);cursor:pointer}.managerClose:hover{color:#fff}.managerHint{padding:.7em 1.4em;color:var(--muted);line-height:1.5;border-bottom:1px solid var(--line)}.managerHint code{padding:.05em .35em;border-radius:4px;background:#181818;color:var(--accent)}.managerBody{flex:1 1 auto;min-height:0;overflow-y:auto;padding:1em 1.4em}.managerError,.managerNotice{margin:.8em 1.4em 0;padding:.6em .9em;border-radius:8px;white-space:pre-wrap;line-height:1.5}.managerError{background:#4a1d1d;color:#ffb4b4}.managerNotice{display:flex;align-items:center;gap:1em;background:#173a52;color:#cfe8ff}.managerNotice span{flex:1}[hidden]{display:none!important}.btn{display:inline-flex;align-items:center;gap:.4em;padding:.45em .9em;border-radius:7px;background:#2d2d2d;color:#fff;cursor:pointer;user-select:none;white-space:nowrap}.btn:hover{background:#383838;color:var(--accent)}.btn.primary{background:#1b5e63}.btn.primary:hover{background:#23777d;color:#fff}.btn.small{padding:.25em .55em;font-size:.92em}.iconBtn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:var(--muted);cursor:pointer;user-select:none}.iconBtn:hover{background:#333;color:#fff}.iconBtn.danger:hover{color:var(--bad)}.mi{font-family:Material Icons;font-weight:400;font-style:normal;font-size:18px;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;font-feature-settings:"liga"}.group{margin-bottom:1.2em;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.groupHead{display:flex;align-items:center;gap:.7em;padding:.7em .9em;border-bottom:1px solid var(--line)}.groupTitle{font-size:1.15em;color:#fff}.groupRuns{margin-right:auto;color:var(--muted);font-size:.9em}.empty{padding:.9em;color:var(--muted)}.dropZone{margin:.7em;padding:.8em;border:2px dashed #444;border-radius:8px;color:#777;text-align:center}.dropHover{border-color:var(--accent)!important;background:#35e0e814!important;color:var(--accent)}.toggle{position:relative;flex:0 0 auto;width:38px;height:20px;border-radius:10px;background:#444;cursor:pointer;transition:background .15s}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#ddd;transition:left .15s}.toggle.on{background:#1b8f96}.toggle.on:after{left:21px;background:#fff}.state{flex:0 0 auto;padding:.1em .5em;border-radius:5px;font-size:.85em;background:#333;color:var(--muted)}.state.ok{background:#1f3d1f;color:var(--ok)}.state.warn{background:#3d321f;color:var(--warn)}.state.bad{background:#3d1f1f;color:var(--bad);cursor:help}.askBackdrop{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background:#0009}.askBox{width:min(480px,90%);padding:1.3em 1.4em;border-radius:12px;background:#262626;box-shadow:0 8px 32px #000c}.askTitle{margin-bottom:.8em;font-size:1.1em;color:var(--accent)}.askInput,.field{box-sizing:border-box;width:100%;padding:.5em .7em;border:1px solid #444;border-radius:6px;background:#181818;color:#fff;font:inherit;outline:none}.askInput:focus,.field:focus{border-color:var(--accent)}.askHint{margin-top:.5em;color:var(--muted);font-size:.9em;line-height:1.4}.askActions{display:flex;justify-content:flex-end;gap:.6em;margin-top:1em}.editor{position:relative;display:flex;flex:1 1 auto;min-height:0;border:1px solid var(--line);border-radius:8px;background:#181818;overflow:hidden;font-family:Consolas,Cascadia Mono,monospace;font-size:13.5px;line-height:1.5;tab-size:4}.editorGutter{flex:0 0 auto;padding:.6em .6em .6em .8em;overflow:hidden;color:#555;text-align:right;white-space:pre;user-select:none;border-right:1px solid #2a2a2a}.editorCode{position:relative;flex:1 1 auto;min-width:0}.editorCode pre,.editorCode textarea{position:absolute;inset:0;box-sizing:border-box;margin:0;padding:.6em .8em;border:0;font:inherit;line-height:inherit;tab-size:inherit;white-space:pre;overflow-wrap:normal;letter-spacing:normal}.editorCode pre{overflow:hidden;color:#d4d4d4;pointer-events:none}.editorCode textarea{resize:none;overflow:auto;background:transparent;color:transparent;caret-color:#fff;outline:none}.editorCode textarea::selection{background:#3578c873;color:transparent}.tk-c{color:#6a9955}.tk-s{color:#ce9178}.tk-n{color:#b5cea8}.tk-k{color:#c586c0}.tk-l{color:#569cd6}.tk-f{color:#dcdcaa}.tk-p{color:#9cdcfe}.editorBar{display:flex;align-items:center;gap:.6em;margin-bottom:.7em}.editorFile{margin-right:auto;color:#fff;font-size:1.05em}.editorFile .dirty{color:var(--warn)}.editorView{display:flex;flex-direction:column;height:100%}.editorKeys{margin-top:.5em;color:#666;font-size:.85em} +`});var Pm={};A(Pm,{askConfirm:()=>Pe,askText:()=>nt,formatSize:()=>wo,hostSupportsManagers:()=>Ds,makeDropTarget:()=>st,openManagerPopup:()=>vo,readBase64:()=>Il});function st(s,e){Pl.set(s,e)}function sy(s){let e=[...s.items].filter(n=>n.kind==="file").map(n=>n.webkitGetAsEntry()).filter(n=>n!==null);if(!e.length)return Promise.resolve([...s.files].map(n=>({path:n.name,file:n})));let t=[],o=async n=>{if(t.length>=oy)return;if(n.isFile){let i=await new Promise((a,l)=>n.file(a,l));t.push({path:n.fullPath.replace(/^\/+/,""),file:i});return}let r=n.createReader();for(;;){let i=await new Promise((a,l)=>r.readEntries(a,l));if(!i.length)break;for(let a of i)await o(a)}};return Promise.all(e.map(o)).then(()=>t)}function vo(s,{onMessage:e,canClose:t,onEscape:o}){let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let r=document.createElement("div");n.append(r);let i=r.attachShadow({mode:"open"});i.innerHTML=`${s}`;let a=new AbortController,{signal:l}=a,c=v=>{v.data&&typeof v.data=="object"&&e(v.data)};window.chrome.webview.addEventListener("message",c);let d=()=>{l.aborted||t&&!t()||(a.abort(),window.chrome.webview.removeEventListener("message",c),n.remove())};for(let v of["keydown","keyup","keypress"])i.addEventListener(v,k=>k.stopPropagation());document.addEventListener("keydown",v=>{if(v.key!=="Escape")return;v.stopPropagation();let k=i.querySelector(".askBackdrop [data-cancel]");k?k.click():o?.()||d()},{signal:l,capture:!0}),n.addEventListener("mousedown",v=>{v.target===n&&d()});let h=i.querySelector("[data-error]"),p=0,m=v=>{h&&(h.textContent=v,h.hidden=!1,clearTimeout(p),p=setTimeout(()=>{h.hidden=!0},8e3))},f=null,g=v=>{f!==v&&(f?.classList.remove("dropHover"),f=v,v?.classList.add("dropHover"))},b=v=>{for(let k of v.composedPath()){if(k===n)break;if(k instanceof HTMLElement&&Pl.has(k))return k}return null};return n.addEventListener("dragover",v=>{v.preventDefault();let k=b(v);g(k),v.dataTransfer&&(v.dataTransfer.dropEffect=k?"copy":"none")}),n.addEventListener("dragleave",v=>{v.relatedTarget||g(null)}),n.addEventListener("drop",v=>{v.preventDefault();let k=b(v);g(null);let E=k&&Pl.get(k);!E||!v.dataTransfer||sy(v.dataTransfer).then(L=>{L.length&&E(L)}).catch(L=>m(`Could not read the dropped files: ${L?.message??L}`))}),i.querySelector("[data-close]")?.addEventListener("click",d),document.body.append(n),{shadow:i,close:d,signal:l,showError:m}}function nt(s,e,t,o=""){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
              +
              Cancel
              OK
              `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=o;let r=n.querySelector(".askInput");r.value=t,(s.querySelector(".managerPopup")??s).append(n),r.focus();let a=t.lastIndexOf(".");return r.setSelectionRange(t.lastIndexOf("/")+1,a>0?a:t.length),new Promise(l=>{let c=d=>{n.remove(),l(d)};n.querySelector("[data-ok]").onclick=()=>c(r.value.trim()||null),n.querySelector("[data-cancel]").onclick=()=>c(null),r.onkeydown=d=>{d.key==="Enter"&&c(r.value.trim()||null)}})}function Pe(s,e,t,o){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
              +
              Cancel
              `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=t;let r=n.querySelector("[data-ok]");return r.textContent=o,(s.querySelector(".managerPopup")??s).append(n),new Promise(i=>{let a=l=>{n.remove(),i(l)};r.onclick=()=>a(!0),n.querySelector("[data-cancel]").onclick=()=>a(!1)})}var Ds,Pl,oy,Il,wo,qs=w(()=>{"use strict";F();Lm();Ds=()=>u.hostFeatures?.includes("script-manager")??!1,Pl=new WeakMap,oy=5e3;Il=s=>new Promise((e,t)=>{let o=new FileReader;o.onload=()=>e(String(o.result).slice(String(o.result).indexOf(",")+1)),o.onerror=()=>t(o.error),o.readAsDataURL(s)});wo=s=>s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`});var Bl={};A(Bl,{open:()=>ly});var ny,ry,Nl,iy,qo,Ge,_l,ay,ly,zl=w(()=>{"use strict";F();Tm();kn();qs();Do();ny=120,ry=4*1024*1024,Nl="custom.css",iy=()=>u.hostFeatures?.includes("css-manager")??!1,qo=s=>/\.css$/i.test(s)?s:`${s}.css`,Ge=(s,e)=>window.chrome.webview.postMessage(e?`css-${s} ${JSON.stringify(e)}`:`css-${s}`),_l=class{constructor(){this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.files=[],this.active=null,this.listed=!1,this.saving=null,this.savingName=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.closeAfterSave=!1,this.forceClose=!1,this.legacy=!1,this.live=!0,this.previewTimer=0}open(){if(this.popup)return;if(!ss()){u.showNotification("The CSS Manager needs a newer Kute. Update Kute to use it.",!1,6);return}this.legacy=!iy(),this.popup=vo(Am,{onMessage:i=>this.receive(i),canClose:()=>this.canClose()});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{clearTimeout(this.previewTimer),Rt.revert(),this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.listed=!1,this.saving=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.forceClose=!1}),this.$("#ccFolder").onclick=()=>Ge("reveal",{name:this.editing??""}),this.$("#ccOff").hidden=u.settings.data.customCss!==!1,this.$("#ccStore").onclick=()=>this.openStore(),this.$("#ccStoreBack").onclick=()=>{this.$("#ccStorePanel").hidden=!0,this.$(".managerBody").classList.remove("storeOpen")};let o=this.$("#ccLive");o.checked=this.live,o.onchange=()=>{this.live=o.checked,this.preview()};let n=e.host.parentElement;if(this.$("#ccPeek").onpointerdown=i=>{i.preventDefault(),n.style.opacity="0",window.addEventListener("pointerup",()=>{n.style.opacity=""},{once:!0,signal:t})},this.legacy){this.$(".managerPopup").classList.add("legacy"),this.$("#ccHint").textContent="Loaded after all of Krunker's styles, so a rule with the same selector wins. Saved as Documents\\kute\\custom.css. Update Kute to keep several CSS files and switch between them.",this.$("#ccEditor").textContent="Loading...",Ge("read");return}this.$("#ccNew").onclick=()=>this.create(),this.$("#ccPaste").onclick=()=>this.paste();let r=this.$("#ccImportInput");this.$("#ccImport").onclick=()=>r.click(),r.onchange=()=>{this.importFiles([...r.files??[]]),r.value=""},st(this.$("#ccFiles"),i=>this.importFiles(i.map(a=>a.file))),this.$("#ccEditor").textContent="Loading...",Ge("list")}async openStore(){let e=this.$("#ccStorePanel"),t=this.$("#ccStoreList");this.$(".managerBody").classList.add("storeOpen"),e.hidden=!1,t.replaceChildren();let o=document.createElement("p");o.textContent="Loading the CSS Store...",t.append(o);try{let n=await fetch("https://raw.githubusercontent.com/Liamoulee/KSS/main/index.json");if(!n.ok)throw new Error(`HTTP ${n.status}`);let r=await n.json();t.replaceChildren();for(let i of r){let a=document.createElement("div");if(a.className="storeCard",i.preview){let m=document.createElement("img");m.src=i.preview.startsWith("https://")?i.preview:"https://raw.githubusercontent.com/Liamoulee/KSS/main/"+i.preview.split("/").map(encodeURIComponent).join("/"),m.alt=`${i.name} preview`,m.onerror=()=>m.remove(),a.append(m)}let l=document.createElement("h3");l.textContent=i.name;let c=document.createElement("p");c.textContent=`By ${i.author}`;let d=document.createElement("button");d.className="storeDownloadBtn";let h=this.files.some(m=>m.name.toLowerCase()===qo(i.name).toLowerCase()),p=m=>{d.textContent=m};p(h?"Already downloaded":"Download the CSS"),h&&(d.classList.add("installed"),d.disabled=!0),d.onclick=async()=>{if(h=this.files.some(m=>m.name.toLowerCase()===qo(i.name).toLowerCase()),h){p("Already downloaded"),d.classList.add("installed"),d.disabled=!0;return}d.disabled=!0,p("Downloading...");try{let m=await fetch("https://raw.githubusercontent.com/Liamoulee/KSS/main/"+i.file.split("/").map(encodeURIComponent).join("/"));if(!m.ok)throw new Error(`HTTP ${m.status}`);let f=await m.text();Ge("import",{name:qo(i.name),content:f}),h=!0,p("Already downloaded"),d.classList.add("installed"),d.disabled=!0}catch(m){console.error("CSS Store import failed:",m),d.disabled=!1,p("Try again")}},a.append(l,c,d),t.append(a)}r.length===0&&(t.textContent="No CSS available.")}catch(n){console.error("CSS Store failed to load:",n),t.replaceChildren();let r=document.createElement("p");r.textContent="Unable to load the CSS Store. Please try again later.",t.append(r)}}$(e){return this.popup?.shadow.querySelector(e)}receive(e){if(typeof e.managerError=="string"&&this.popup?.showError(e.managerError),this.legacy){typeof e.customCss?.content=="string"&&!this.editor&&(this.active=Nl,this.showEditor(Nl,e.customCss.content)),e.customCssSaved&&this.saving!==null&&this.saved(e.customCssSaved.error,Nl);return}e.cssFiles&&this.updateList(e.cssFiles),e.cssFile&&e.cssFile.name===this.loading&&(this.loading=null,typeof e.cssFile.content=="string"?this.showEditor(e.cssFile.name,e.cssFile.content):this.popup?.showError(`Could not read ${e.cssFile.name}`)),e.cssSaved&&this.saving!==null&&e.cssSaved.name===this.savingName&&this.saved(e.cssSaved.error,e.cssSaved.name),e.cssImported&&this.imported(e.cssImported),e.cssActivated&&(this.activating=!1,e.cssActivated.error?this.popup?.showError(`Could not switch: ${e.cssActivated.error}`):Rt.markSaved(String(e.cssActivated.content??"")),this.preview())}updateList(e){this.files=Array.isArray(e.files)?e.files:[];let t=this.active;this.active=e.active??null,t&&!this.active&&!this.activating&&(Rt.markSaved(""),this.preview());let o=new Set(this.files.map(n=>n.name));if(this.renaming&&this.editing===this.renaming.from&&o.has(this.renaming.to)){this.editing=this.renaming.to;let n=this.popup?.shadow.querySelector(".editorFile")?.firstChild;n&&(n.textContent=this.editing)}if(this.renaming=null,this.editing&&!o.has(this.editing)&&this.closeEditor(),!this.listed){this.listed=!0;let n=this.active??this.files[0]?.name;n?this.load(n):this.closeEditor()}this.renderList()}renderList(){let e=this.$("#ccList");if(e){if(e.textContent="",!this.files.length){let t=document.createElement("div");t.className="empty",t.textContent="No CSS files yet. Make one with New, paste one, or import .css files.",e.append(t)}for(let t of this.files)e.append(this.row(t));e.append(this.row(null))}}row(e){let t=e?.name??"",o=document.createElement("div");o.className="cssRow",o.classList.toggle("none",!e),o.classList.toggle("active",(this.active??"")===t),o.classList.toggle("editing",!!e&&this.editing===t);let n=document.createElement("div");n.className="cssRadio",n.title=e?"Use this one":"No CSS",n.onclick=l=>{l.stopPropagation(),this.activate(t)};let r=document.createElement("div");if(r.className="cssName",r.textContent=e?t:"None",o.append(n,r),!e)return o.onclick=()=>this.activate(""),o;let i=document.createElement("div");i.className="cssSize",i.textContent=wo(e.size);let a=document.createElement("div");a.className="cssActions";for(let[l,c,d,h]of[["edit","Rename",()=>this.rename(t),!1],["delete","Delete",()=>this.remove(t),!0]]){let p=document.createElement("div");p.className=h?"iconBtn danger":"iconBtn",p.title=c,p.innerHTML=`${l}`,p.onclick=m=>{m.stopPropagation(),d()},a.append(p)}return o.append(i,a),o.onclick=()=>this.load(t),o}async load(e){e===this.editing&&this.editor||await this.discardChanges()&&(this.loading=e,Ge("get",{name:e}))}showEditor(e,t){let o=this.$("#ccEditor");if(!o)return;let{editor:n}=fo(o,{title:e,content:t,language:"css",onSave:r=>this.save(r),onClose:()=>this.popup?.close(),onChange:()=>{clearTimeout(this.previewTimer),this.previewTimer=setTimeout(()=>this.preview(),ny)}});this.editor=n,this.editing=e,this.renderList(),this.preview()}closeEditor(){this.editor=null,this.editing=null;let e=this.$("#ccEditor");e&&(e.innerHTML='
              Pick a file below to edit it.
              '),this.preview()}preview(){let{editor:e}=this;this.live&&e&&(this.editing===this.active||e.isDirty())?Rt.apply(e.getValue()):Rt.revert()}async discardChanges(){return!this.editor?.isDirty()||!this.popup?!0:Pe(this.popup.shadow,"Unsaved changes",`Throw the changes to ${this.editing} away?`,"Discard")}save(e){!this.editor||!this.editing||this.saving!==null||(this.closeAfterSave=e,this.saving=this.editor.getValue(),this.savingName=this.editing,this.legacy?window.chrome.webview.postMessage(`css-write ${JSON.stringify({content:this.saving})}`):Ge("save",{name:this.editing,content:this.saving}))}saved(e,t){let o=this.saving??"";if(this.saving=null,e){this.popup?.showError(`Could not save: ${e}`);return}t===this.active&&Rt.markSaved(o),t===this.editing&&this.editor?.markSaved(o),this.preview(),this.closeAfterSave&&this.popup?.close()}activate(e){e===(this.active??"")||this.activating||(this.activating=!0,Ge("activate",{name:e}))}async create(){if(!this.popup)return;let e=await nt(this.popup.shadow,"New CSS file","theme.css","Ends in .css");e&&(this.openAfterImport=qo(e),Ge("import",{name:this.openAfterImport,content:""}))}async paste(){if(!this.popup)return;let e="";try{e=await navigator.clipboard.readText()}catch{this.popup.showError("Could not read the clipboard.");return}if(!e.trim()){this.popup.showError("The clipboard has no text in it. Copy the CSS first.");return}let t=await nt(this.popup.shadow,"Name for the pasted CSS","pasted.css","Ends in .css");t&&(this.openAfterImport=qo(t),Ge("import",{name:this.openAfterImport,content:e}))}async importFiles(e){let t=[];for(let o of e){if(!/\.css$/i.test(o.name)||o.size>ry){t.push(o.name);continue}Ge("import",{name:o.name,content:await o.text()})}t.length&&this.popup?.showError(`Not imported (only .css files up to 4 MB): ${t.join(", ")}`)}imported(e){if(e.error){this.popup?.showError(`Could not add ${e.requested}: ${e.error}`);return}this.active||this.activate(e.name),e.requested===this.openAfterImport?(this.openAfterImport=null,this.load(e.name)):this.editing||this.load(e.name)}async rename(e){if(!this.popup)return;let t=await nt(this.popup.shadow,`Rename ${e}`,e,"Ends in .css");if(!t)return;let o=qo(t);o!==e&&(this.renaming={from:e,to:o},Ge("rename",{from:e,to:o}))}async remove(e){!this.popup||!await Pe(this.popup.shadow,`Delete ${e}?`,"It goes to the recycle bin.","Delete")||Ge("delete",{name:e})}canClose(){return this.forceClose||!this.editor?.isDirty()||!this.popup?!0:(Pe(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},ay=new _l,ly=()=>ay.open()});var Im={};A(Im,{hostWatchesSwapper:()=>pr,reloadStylesheets:()=>Ks});var pr,Ks,hr=w(()=>{"use strict";F();pr=()=>u.hostFeatures?.includes("swapper-watch")??!1,Ks=s=>{for(let e of document.querySelectorAll('link[rel="stylesheet"]')){if(!(e instanceof HTMLLinkElement)||!e.href)continue;let t=new URL(e.href);if(!/(^|\.)krunker\.io$/.test(t.hostname)||!s.has(t.pathname.slice(1).toLowerCase()))continue;t.searchParams.set("kuteSwap",String(Date.now()));let o=e.cloneNode();o.href=t.href,o.addEventListener("load",()=>e.remove(),{once:!0}),o.addEventListener("error",()=>o.remove(),{once:!0}),e.after(o)}}});var _m,Nm=w(()=>{_m='

              Userscripts

              Userscripts off
              folder_openOpen scripts folder
              ×
              Scripts run inside Krunker. Only add scripts you trust, and never anything that breaks krunker.io/docs/terms.txt. Drop .js files onto a group, or create one with New script.
              '});var Ol={};A(Ol,{open:()=>hy});var dy,uy,oe,js,Hl,py,hy,Fl=w(()=>{"use strict";F();Nm();os();qs();Do();dy=4*1024*1024,uy=`// ==UserScript== // @name {{name}} // @author // @version 1.0 @@ -207,24 +207,25 @@ this._console.log("{{name}} is running"); this.unload = () => {}; return this; -`,oe=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},qs=(s,e,t,o="")=>{let n=oe("div",`iconBtn ${o}`);return n.title=e,n.append(oe("span","mi",s)),n.onclick=t,n},Bl=class{constructor(){this.popup=null,this.groups=[],this.openSettings=new Set,this.editing=null,this.pendingRead=null,this.pendingSave=null,this.needsRefresh=!1,this.renderQueued=!1,this.forceClose=!1,this.prefsTimers=new Map,Je&&(Je.onChange=()=>this.queueRender()),u.userscriptManager.masterChanged=e=>this.onMasterChanged(e)}masterOn(){return u.settings?.data?.userscripts!==!1}onMasterChanged(e){if(e&&!Je)this.needsRefresh=!0;else if(e&&!At())for(let t of this.groups.filter(o=>o.id==="game").flatMap(o=>o.scripts)){let o=this.entryFor(t.key);!o||!t.enabled||(o.start(),(o.tainted||o.state!=="running"&&o.state!=="waiting"&&o.state!=="error")&&(this.needsRefresh=!0))}this.updateNotice(),this.editing||this.render()}reload(e){return e.length?At()?(To(e,!0,this.masterOn()),!0):!1:!0}applyMaster(){let e=this.popup?.shadow;if(!e)return;let t=this.masterOn();e.querySelector(".managerPopup")?.classList.toggle("scriptsOff",!t);let o=e.querySelector("#usMaster");o&&(o.classList.toggle("on",t),o.querySelector(".toggle")?.classList.toggle("on",t),o.querySelector("span").textContent=t?"Userscripts on":"Userscripts off")}open(){if(this.popup)return;if(!Os()){window.chrome.webview.postMessage("open, userscripts"),u.showNotification("This Kute version can only open the scripts folder. Update Kute for the script manager.",!1,6);return}this.popup=fo(Rm,{onMessage:t=>this.receive(t),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1}),this.popup.signal.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.forceClose=!1});let{shadow:e}=this.popup;e.querySelector("#usFolder").onclick=()=>this.send("reveal",{}),e.querySelector("#usRefreshNow").onclick=()=>location.reload(),e.querySelector("#usMaster").onclick=()=>u.settings.changeSetting("userscripts",!this.masterOn(),!1),this.applyMaster(),this.body().textContent="Loading...",this.send("list",{})}send(e,t){window.chrome.webview.postMessage(`scripts-${e} ${JSON.stringify(t)}`)}body(){return this.popup?.shadow.querySelector("#usBody")}receive(e){if(e.managerError&&(this.popup?.showError(e.managerError),this.pendingSave&&(this.pendingSave=null)),e.userscripts){if(this.groups=e.userscripts.groups??[],this.pendingSave&&this.editing){let{closeAfter:t}=this.pendingSave;this.pendingSave=null,this.editing.editor.markSaved(),this.editing.group==="game"&&!this.reload([this.editing.file])&&(this.needsRefresh=!0),t&&(this.editing=null)}this.editing||this.render(),this.updateNotice()}if(e.userscriptSource&&e.userscriptSource.key===this.pendingRead){this.pendingRead=null;let t=this.findScript(e.userscriptSource.key);t&&typeof e.userscriptSource.content=="string"?this.showEditor(t.group,t.file,e.userscriptSource.content):this.popup?.showError("The script could not be read.")}}findScript(e){for(let t of this.groups){let o=t.scripts.find(n=>n.key===e);if(o)return o}}entryFor(e){return Je?.entries?.find(t=>t.key===e)}queueRender(){!this.popup||this.renderQueued||(this.renderQueued=!0,queueMicrotask(()=>{this.renderQueued=!1,this.updateNotice(),this.popup&&!this.editing&&this.render()}))}updateNotice(){let e=this.popup?.shadow.querySelector("#usRefresh");if(!e)return;let t=this.masterOn(),o=Je?.entries?.some(n=>n.outdated||!t&&n.state==="running");e.hidden=!this.needsRefresh&&!o}render(){let e=this.body();if(!(!e||!this.popup)){this.applyMaster(),e.textContent="";for(let t of this.groups)e.append(this.renderGroup(t))}}renderGroup(e){let t=oe("div","group"),o=oe("div","groupHead");o.append(oe("div","groupTitle",e.label),oe("div","groupRuns",`runs in ${e.runs}`));let n=oe("div","btn small");n.append(oe("span","mi","add"),"New script"),n.onclick=()=>this.createScript(e.id),o.append(n),t.append(o),e.scripts.length===0&&t.append(oe("div","empty","No scripts yet."));for(let r of e.scripts)this.renderScript(t,e,r);return t.append(oe("div","dropZone",`Drop .js files here to add them to ${e.label}`)),st(t,r=>this.importFiles(e,r)),t}async importFiles(e,t){if(!this.popup)return;let o=[],n=t.filter(({file:a})=>{if(!/\.js$/i.test(a.name))o.push(`${a.name}: not a .js file`);else if(a.size>ry)o.push(`${a.name}: larger than 4 MB`);else return!0;return!1}),r=new Set(e.scripts.map(a=>a.file.toLowerCase())),i=n.filter(({file:a})=>r.has(a.name.toLowerCase())).map(({file:a})=>a.name);if(i.length){let a=`${i.join(", ")} already exist in ${e.label}. Replace them with the dropped files?`;if(!await Re(this.popup.shadow,"Replace scripts?",a,"Replace"))return}for(let{file:a}of n)this.send("write",{group:e.id,file:a.name,content:await a.text(),noList:!0});this.send("list",{}),e.id==="game"&&!this.reload(n.map(({file:a})=>a.name))&&(this.needsRefresh=!0),this.updateNotice(),o.length&&this.popup?.showError(o.join(` -`))}stateOf(e,t,o){return t?.state==="error"?["Error","bad",t.error]:t?.outdated?["Old version","warn","Your changes apply after a refresh, this script has no unload to stop the running version"]:this.masterOn()?o||!Je?e.enabled?["On","ok",""]:["Off","",""]:e.enabled?t?.state==="running"?["Running","ok",t.late?"Started after the page loaded. It is a document-start script, refresh if it misses something":""]:t?.state==="waiting"?["Starting","ok","Starts once the page has loaded"]:!t&&At()?["Starting","ok",""]:["After refresh","warn","On, starts with the next page load"]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:["Off","",""]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:e.enabled?["On","","Runs once userscripts are on"]:["Off","",""]}renderScript(e,t,o){let n=t.id!=="game",r=n?void 0:this.entryFor(o.key),i=r?.meta??o.meta,a=oe("div","scriptRow"),l=oe("div",`toggle${o.enabled?" on":""}`);l.title=o.enabled?"Turn off":"Turn on",l.onclick=()=>this.toggle(o,r,n);let c=oe("div","scriptInfo"),d=oe("div","scriptName",i.name||o.file);i.version&&d.append(oe("span","version",`v${i.version}`)),i.author&&d.append(oe("span","author",`by ${i.author}`)),c.append(d);let h=[i.desc,i.name?o.file:"",go(o.size)].filter(Boolean).join(" \xB7 ");c.append(oe("div","scriptDesc",h)),c.title=[i.desc,`${o.file}, ${o.runAt}${o.priority?`, priority ${o.priority}`:""}`].filter(Boolean).join(` -`);let[p,m,f]=this.stateOf(o,r,n),g=oe("div",`state ${m}`,p);f&&(g.title=f);let b=oe("div","scriptActions");r?.settings&&Object.keys(r.settings).length&&b.append(qs("tune","Script settings",()=>{this.openSettings.has(o.key)?this.openSettings.delete(o.key):this.openSettings.add(o.key),this.render()})),b.append(qs("edit","Edit",()=>{this.pendingRead=o.key,this.send("read",{key:o.key})}),qs("swap_horiz",`Move to ${n?"Game":"Social"}`,()=>this.move(o,r,n)),qs("folder_open","Show in folder",()=>this.send("reveal",{key:o.key})),qs("delete","Delete (goes to the recycle bin)",()=>this.deleteScript(o,r),"danger")),a.append(l,c,g,b),e.append(a),r?.settings&&this.openSettings.has(o.key)&&e.append(this.renderSettings(o,r))}toggle(e,t,o){e.enabled=!e.enabled,this.send("toggle",{key:e.key,enabled:e.enabled}),o||this.masterOn()&&(t?e.enabled?(t.start(),(t.tainted||t.state!=="running"&&t.state!=="waiting"&&t.state!=="error")&&(this.needsRefresh=!0)):t.stop()||(this.needsRefresh=!0):e.enabled&&At()?To([e.key],!1,!0):e.enabled&&(this.needsRefresh=!0)),this.updateNotice(),this.render()}move(e,t,o){t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("move",{key:e.key,group:o?"game":"social"}),o&&!this.reload([e.file])&&(this.needsRefresh=!0),this.updateNotice()}async deleteScript(e,t){!this.popup||!await Re(this.popup.shadow,`Delete ${e.file}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||(t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("delete",{key:e.key}))}async createScript(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New script","my-script.js","The file name. It ends up in the scripts folder of this group.");if(!t)return;let o=/\.js$/i.test(t)?t:`${t}.js`;if(this.groups.some(r=>r.id===e&&r.scripts.some(i=>i.file.toLowerCase()===o.toLowerCase()))){this.popup.showError(`${o} already exists in this group.`);return}this.showEditor(e,o,iy.replaceAll("{{name}}",o.replace(/\.js$/i,"")),!0)}renderSettings(e,t){let o=oe("div","scriptSettings"),n=t.settings??{},r=()=>{clearTimeout(this.prefsTimers.get(e.key)),this.prefsTimers.set(e.key,setTimeout(()=>{this.prefsTimers.delete(e.key);let a=Object.fromEntries(Object.entries(n).map(([l,c])=>[l,c.value]));this.send("prefs",{key:e.key,prefs:a})},300))},i=(a,l)=>{t.setPref(a,l),r()};for(let[a,l]of Object.entries(n)){let c=oe("div","settingRow"),d=oe("div","settingLabel",l.title||a);l.desc&&d.append(oe("small","",l.desc)),c.append(d,this.settingControl(a,l,i)),o.append(c)}return o}settingControl(e,t,o){switch(t.type){case"bool":{let n=oe("div",`toggle${t.value?" on":""}`);return n.onclick=()=>{o(e,!t.value),n.classList.toggle("on",!!t.value)},n}case"num":{let n=oe("div");n.style.cssText="display:flex;gap:.6em;align-items:center";let r=oe("input");if(r.type="number",r.style.width="90px",r.value=String(t.value),t.min!==void 0&&(r.min=String(t.min)),t.max!==void 0&&(r.max=String(t.max)),r.step=String(t.step??"any"),t.min!==void 0&&t.max!==void 0){let i=oe("input");i.type="range",i.min=String(t.min),i.max=String(t.max),i.step=String(t.step??"any"),i.value=String(t.value),i.oninput=()=>{r.value=i.value,o(e,Number(i.value))},r.onchange=()=>{i.value=r.value},n.append(i)}return r.addEventListener("change",()=>{r.value!==""&&Number.isFinite(Number(r.value))&&o(e,Number(r.value))}),n.append(r),n}case"sel":{let n=oe("select");for(let r of t.opts??[]){let i=oe("option","",String(r));i.value=String(r),i.selected=r===t.value,n.append(i)}return n.onchange=()=>{let r=(t.opts??[]).find(i=>String(i)===n.value);o(e,r??n.value)},n}case"color":{let n=oe("input");return n.type="color",n.value=String(t.value),n.onchange=()=>o(e,n.value),n}case"text":{let n=oe("input");return n.type="text",n.value=String(t.value??""),n.onchange=()=>o(e,n.value),n}case"keybind":{let n=i=>[i?.ctrl&&"Ctrl",i?.alt&&"Alt",i?.shift&&"Shift",i?.key||"none"].filter(Boolean).join(" + "),r=oe("div","btn small",n(t.value));return r.onclick=()=>{r.textContent="Press a key...";let i=a=>{if(["Control","Alt","Shift","Meta"].includes(a.key))return;a.preventDefault(),a.stopPropagation(),window.removeEventListener("keydown",i,!0);let l={key:a.key.toLowerCase(),ctrl:a.ctrlKey,alt:a.altKey,shift:a.shiftKey};o(e,l),r.textContent=n(l)};window.addEventListener("keydown",i,!0)},r}default:return oe("div","scriptFile",`unsupported type "${t.type}"`)}}showEditor(e,t,o,n=!1){let r=this.body();if(!r)return;let{editor:i}=po(r,{title:t,content:o,language:"js",isNew:n,onSave:a=>{this.editing&&(this.pendingSave={closeAfter:a},this.editing.closeAfterSave=a,this.send("write",{group:e,file:t,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={group:e,file:t,editor:i,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Re(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||(this.editing=null,this.render())}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Re(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},ay=new Bl,ly=()=>ay.open()});var Im,Pm=w(()=>{Im=`

              Swapper

              refreshReload list
              folder_openOpen swapper folder
              ×
              A file in the swapper folder replaces the game's file with the same path: swapper/textures/pistol.png replaces krunker.io/textures/pistol.png. Easiest way: drop your file onto the game file it should replace (right side), it gets the right folder and name. Folder names do not care about case. Text files like CSS can be written right here: New file, or the edit button on a game file to start from a copy.
              Your swaps
              note_addNew file
              create_new_folderNew folder
              Drop files or folders here to put them into the swapper folder as they are
              Game files
              `});var ql={};A(ql,{open:()=>my});var dy,uy,Nm,pr,py,Ol,ce,rt,Ks,Bm,_m,Dl,Fl,hy,my,Kl=w(()=>{"use strict";D();Pm();Ds();Oo();ur();dy=new Set(["css","js","mjs","json","txt","html","htm","svg","xml","obj","mtl","glsl","frag","vert","md","csv"]),uy=4*1024*1024,Nm=s=>dy.has(s.slice(s.lastIndexOf(".")+1).toLowerCase()),pr=()=>u.hostFeatures?.includes("swapper-editor")??!1,py=32*1024*1024,Ol=400,ce=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},rt=(s,e,t,o="")=>{let n=ce("div",`iconBtn ${o}`);return n.title=e,n.append(ce("span","mi",s)),n.onclick=r=>{r.stopPropagation(),t()},n},Ks=s=>s.slice(s.lastIndexOf("/")+1),Bm=s=>s.includes("/")?s.slice(0,s.lastIndexOf("/")):"",_m=(s,e)=>{let t={name:"",path:"",folders:new Map,files:[]},o=n=>{let r=t;for(let i of n.split("/").filter(Boolean)){let a=r.folders.get(i);a||(a={name:i,path:r.path?`${r.path}/${i}`:i,folders:new Map,files:[]},r.folders.set(i,a)),r=a}return r};for(let n of e)o(n);for(let n of s)o(Bm(n.path)).files.push({name:Ks(n.path),path:n.path,size:n.size});return t},Dl=s=>s.files.length+[...s.folders.values()].reduce((e,t)=>e+Dl(t),0),Fl=class{constructor(){this.popup=null,this.list=null,this.collapsedOwn=new Set,this.expandedGame=new Set,this.search="",this.touched=new Set,this.stale=new Set,this.uploadDone=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1}open(){if(this.popup)return;if(!Os()){window.chrome.webview.postMessage("open, swapper"),u.showNotification("This Kute version can only open the swapper folder. Update Kute for the swapper manager.",!1,6);return}this.popup=fo(Im,{onMessage:r=>this.receive(r),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1,this.uploadDone?.(null),this.uploadDone=null}),e.querySelector("#swFolder").onclick=()=>this.send("reveal",{path:""}),e.querySelector("#swReload").onclick=()=>this.send("list",{}),e.querySelector("#swRefreshNow").onclick=()=>location.reload(),e.querySelector("#swNewFolder").onclick=()=>this.newFolder("");let o=e.querySelector("#swNewFile");pr()||(o.style.display="none"),o.onclick=()=>this.newFile(""),st(e.querySelector("#swOwnColumn"),r=>this.drop("",r));let n=e.querySelector("#swSearch");n.value=this.search,n.oninput=()=>{this.search=n.value.trim().toLowerCase(),this.renderGame()},e.querySelector("#swOwnTree").textContent="Loading...",this.send("list",{}),dr()||window.addEventListener("focus",()=>{!this.editing&&!this.uploadDone&&this.send("list",{})},{signal:t})}send(e,t){window.chrome.webview.postMessage(`swapper-${e} ${JSON.stringify(t)}`)}async drop(e,t){let o=t;!e&&o.every(({path:n})=>n.toLowerCase().startsWith("swapper/"))&&(o=o.map(({path:n,file:r})=>({path:n.slice(8),file:r}))),await this.upload(o.map(({path:n,file:r})=>({path:e?`${e}/${n}`:n,file:r})))}async replace(e,t){if(!this.popup)return;if(t.length!==1){this.popup.showError("Drop exactly one file onto a game file. Drop several onto a folder instead.");return}let[{file:o}]=t,n=r=>r.slice(r.lastIndexOf(".")+1).toLowerCase();if(n(o.name)!==n(e)){let r=`${o.name} is saved as ${Ks(e)}, the game will read it as .${n(e)}. Go ahead?`;if(!await Re(this.popup.shadow,"Different file type",r,"Save anyway"))return}await this.upload([{path:e,file:o}])}async upload(e){let t=[];for(let{path:o,file:n}of e){if(!this.popup)return;if(n.size>py){t.push(`${o}: larger than 32 MB, put it in with Open swapper folder`);continue}let r=await Rl(n),i=await new Promise(a=>{this.uploadDone=a,this.send("upload",{path:o,data:r})});i?t.push(i):this.touched.add(o.toLowerCase())}this.send("list",{}),t.length&&this.popup?.showError(t.join(` -`))}receive(e){if(e.managerError&&this.popup?.showError(e.managerError),e.swapperUploaded){let o=this.uploadDone;this.uploadDone=null,o?.(e.swapperUploaded.error??null)}if(e.swapperSource&&e.swapperSource.path===this.pendingRead&&(this.pendingRead=null,typeof e.swapperSource.content=="string"?this.showEditor(e.swapperSource.path,e.swapperSource.content):this.popup?.showError(`${e.swapperSource.path} could not be read as text.`)),e.swapperWritten&&this.saving&&(this.saving=!1,e.swapperWritten.error?this.popup?.showError(e.swapperWritten.error):this.editing&&(this.touched.add(this.editing.path.toLowerCase()),this.editing.editor.markSaved(),this.editing.closeAfterSave&&this.closeEditor())),e.swapperChanged&&!this.editing&&!this.uploadDone&&this.send("list",{}),!e.swapper)return;let t=this.list;this.list=e.swapper,t&&this.applyChanges(t,e.swapper),this.render()}applyChanges(e,t){let o=c=>new Map(c.files.map(d=>[d.path.toLowerCase(),d.size])),n=o(e),r=o(t),i=new Set(this.touched);if(this.touched.clear(),e.enabled!==t.enabled)for(let c of[...n.keys(),...r.keys()])i.add(c);for(let[c,d]of r)n.get(c)!==d&&i.add(c);for(let c of n.keys())r.has(c)||i.add(c);if(!i.size)return;let a=new Set([...i].filter(c=>c.endsWith(".css")));a.size&&!dr()&&Fs(a);let l=new Set(t.seen.map(c=>c.toLowerCase()));for(let c of i)!a.has(c)&&l.has(c)&&this.stale.add(c)}get(e){return this.popup?.shadow.querySelector(e)}render(){if(!this.popup||!this.list)return;let e=this.get("#swNotice"),t=this.list.enabled===!1;e.hidden=!t&&!this.stale.size;let o=this.stale.size;e.querySelector("span").textContent=t?"The swapper is switched off (Settings, Customization), none of these files are used.":`The game already loaded ${o===1?"1 changed file":`${o} changed files`}, ${o===1?"it changes":"they change"} after a page refresh.`,this.renderOwn(),this.renderGame()}renderOwn(){if(!this.list)return;let e=this.get("#swOwnTree");e.textContent="";let t=_m(this.list.files,this.list.dirs);if(this.get("#swOwnCount").textContent=`${this.list.files.length} file${this.list.files.length===1?"":"s"}`,!this.list.files.length&&!this.list.dirs.length){e.append(ce("div","treeNote","Nothing swapped yet. Drop a file onto one of the game files on the right, or drop a whole swapper pack here."));return}let o=new Map(this.list.seen.map(i=>[i.toLowerCase(),i])),n=new Map;for(let i of this.list.seen){let a=Ks(i).toLowerCase();n.set(a,[...n.get(a)??[],i])}let r=(i,a)=>{for(let l of[...i.folders.values()].sort((c,d)=>c.name.localeCompare(d.name))){let c=this.collapsedOwn.has(l.path),d=this.folderRow(l.name,a,!c,`${Dl(l)}`);d.onclick=()=>{c?this.collapsedOwn.delete(l.path):this.collapsedOwn.add(l.path),this.renderOwn()};let h=d.querySelector(".scriptActions");pr()&&h?.append(rt("note_add","New file inside",()=>this.newFile(l.path))),h?.append(rt("create_new_folder","New folder inside",()=>this.newFolder(l.path)),rt("drive_file_rename_outline","Rename or move",()=>this.move(l.path)),rt("folder_open","Open in Explorer",()=>this.send("reveal",{path:l.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(l.path),"danger")),st(d,p=>this.drop(l.path,p)),e.append(d),c||r(l,a+1)}for(let l of[...i.files].sort((c,d)=>c.name.localeCompare(d.name)))e.append(this.ownFileRow(l,a,o,n))};r(t,0)}folderRow(e,t,o,n){let r=ce("div","node folder");return r.style.setProperty("--depth",String(t)),r.append(ce("span","mi",o?"expand_more":"chevron_right"),ce("span","mi kind",o?"folder_open":"folder")),r.append(ce("span","nodeName",e),ce("span","nodeSize",n),ce("div","scriptActions")),r}ownFileRow(e,t,o,n){let r=ce("div","node");r.style.setProperty("--depth",String(t+1)),r.append(ce("span","mi","description"),ce("span","nodeName",e.name),ce("span","nodeSize",go(e.size)));let i=o.get(e.path.toLowerCase()),a=(n.get(e.name.toLowerCase())??[]).filter(c=>c.toLowerCase()!==e.path.toLowerCase());if(i){let c=ce("span","state ok","Used");c.title=`The game loaded krunker.io/${i} this session, this file replaced it.`,r.append(c)}else if(a.length){let[c]=a,d=ce("span","state warn","Wrong folder?");d.title=`The game asks for this file as ${a.join(", ")}`;let h=ce("div","btn small","Move there");h.title=`Move to ${c}`,h.onclick=()=>this.send("move",{from:e.path,to:c}),r.append(d,h)}else{let c=ce("span","state","Not requested");c.title="The game did not ask for this path in this session. It may still come (another map, a skin), or the path does not match any game file.",r.append(c)}let l=ce("div","scriptActions");return pr()&&Nm(e.path)&&e.size<=uy&&(l.append(rt("edit","Edit",()=>this.edit(e.path))),r.ondblclick=()=>this.edit(e.path)),l.append(rt("drive_file_rename_outline","Rename or move",()=>this.move(e.path)),rt("folder_open","Show in Explorer",()=>this.send("reveal",{path:e.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(e.path),"danger")),r.append(l),st(r,c=>this.drop(Bm(e.path),c)),r}renderGame(){if(!this.list||!this.popup)return;let e=this.get("#swGameTree");e.textContent="";let{seen:t}=this.list;this.get("#swGameCount").textContent=`${t.length} loaded this session`;let o=new Set(this.list.files.map(a=>a.path.toLowerCase()));if(!t.length){e.append(ce("div","treeNote","The game has not loaded any files yet. Play a round or open a menu, then Reload list."));return}let n=(a,l)=>{let c=ce("div","node");if(c.style.setProperty("--depth",String(l)),c.title=`krunker.io/${a} -Drop a file here to replace it`,c.append(ce("span","mi","insert_drive_file"),ce("span","nodeName",l?Ks(a):a)),o.has(a.toLowerCase())&&c.append(ce("span","swapped","swapped")),pr()&&Nm(a)){let d=this.list?.files.find(p=>p.path.toLowerCase()===a.toLowerCase()),h=ce("div","scriptActions");d?h.append(rt("edit","Edit your swap",()=>this.edit(d.path))):h.append(rt("edit_note","Edit a copy, saving it swaps the file",()=>this.editCopy(a))),c.append(h)}return st(c,d=>this.replace(a,d)),c};if(this.search){let a=t.filter(l=>l.toLowerCase().includes(this.search));for(let l of a.slice(0,Ol))e.append(n(l,0));a.length||e.append(ce("div","treeNote","No game file matches.")),a.length>Ol&&e.append(ce("div","treeNote",`${a.length-Ol} more, search for something longer.`));return}let r=_m(t.map(a=>({path:a,size:0})),[]),i=(a,l)=>{for(let c of[...a.folders.values()].sort((d,h)=>d.name.localeCompare(h.name))){let d=this.expandedGame.has(c.path),h=this.folderRow(c.name,l,d,`${Dl(c)}`);h.title="Drop files here to put them into this folder",h.onclick=()=>{d?this.expandedGame.delete(c.path):this.expandedGame.add(c.path),this.renderGame()},st(h,p=>this.drop(c.path,p)),e.append(h),d&&i(c,l+1)}for(let c of[...a.files].sort((d,h)=>d.name.localeCompare(h.name)))e.append(n(c.path,l+1))};i(r,0)}async newFile(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New file",e?`${e}/new.css`:"css/new.css","A path inside the swapper folder, the same path the game loads the file from");if(!t)return;let o=t.replace(/^\/+/,"");if(this.list?.files.some(n=>n.path.toLowerCase()===o.toLowerCase())){this.popup.showError(`${o} already exists, edit it instead.`);return}this.showEditor(o,"",!0)}edit(e){this.pendingRead||this.editing||(this.pendingRead=e,this.send("read",{path:e}))}async editCopy(e){if(this.pendingRead||this.editing)return;this.pendingRead=e;let t=null;for(let o of["https://krunker.io","https://assets.krunker.io"])try{let n=await fetch(`${o}/${e}`);if(n.ok){t=await n.text();break}}catch{}this.pendingRead===e&&(this.pendingRead=null,t===null&&(this.popup?.showError(`Could not download krunker.io/${e}, starting with an empty file.`),t=""),this.showEditor(e,t,!0))}showEditor(e,t,o=!1){if(!this.popup)return;let n=this.get("#swEditor");this.get(".swapColumns").style.display="none",n.style.display="";let{editor:r}=po(n,{title:e,content:t,language:ja(e),isNew:o,onSave:i=>{!this.editing||this.saving||(this.saving=!0,this.editing.closeAfterSave=i,this.send("write",{path:e,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={path:e,editor:r,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Re(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||this.closeEditor()}closeEditor(){if(this.editing=null,!this.popup)return;let e=this.get("#swEditor");e.textContent="",e.style.display="none",this.get(".swapColumns").style.display="",this.render()}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Re(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}async newFolder(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New folder",e?`${e}/`:"textures","A path inside the swapper folder, for example textures/weapons");t&&this.send("mkdir",{path:t})}async move(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"Rename or move",e,"The new path inside the swapper folder. Change the folders in front to move it.");!t||t===e||this.send("move",{from:e,to:t})}async remove(e){!this.popup||!await Re(this.popup.shadow,`Delete ${Ks(e)}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||this.send("delete",{path:e})}},hy=new Fl,my=()=>hy.open()});var zm={};var jl=w(()=>{"use strict";D();es();ur();u.userscriptManager={open:()=>{Promise.resolve().then(()=>(Hl(),zl)).then(s=>s.open()).catch(s=>console.error("[kute] userscript manager:",s))}};u.settings.toggleUserscripts=s=>{if(u.settings.data.userscripts=s,s)At()?To(null,!1,!0):u.userscriptManager.masterChanged||u.showNotification("Refresh the page to start your userscripts.",!1,5);else{let e=(Je?.entries??[]).filter(t=>(t.state==="running"||t.state==="waiting")&&!t.stop()).map(t=>t.meta.name||t.key);e.length&&u.showNotification(`${e.join(", ")} cannot be stopped and keeps running until the next refresh.`,!1,6)}u.userscriptManager.masterChanged?.(s)};window.chrome.webview.addEventListener("message",s=>{let e=s.data?.swapperChanged?.css;Array.isArray(e)&&e.length&&Fs(new Set(e.map(String)))});u.swapperManager={open:()=>{Promise.resolve().then(()=>(Kl(),ql)).then(s=>s.open()).catch(s=>console.error("[kute] swapper manager:",s))}};u.customCss={open:()=>{Promise.resolve().then(()=>(_l(),Nl)).then(s=>s.open()).catch(s=>console.error("[kute] custom css:",s))}}});var Om={};A(Om,{default:()=>W});var Ul,fy,gy,Hm,Gl,by,W,xe=w(()=>{"use strict";D();It();Ul="kute_market_session",fy="x-kute-session",gy=3e3,Hm=3600*1e3,Gl=class{constructor(){this.sessionPromise=null,this.memorySession=null,this.cache=new Map,this.lastError="",this.retryAt=0}loggedIn(){try{return localStorage.getItem("krunker_token")!==null}catch{return!1}}hostSupported(){return u.hostFeatures?.includes("market-attest")===!0}stored(){if(this.memorySession&&Date.now()t.expiresAt-Hm?null:t}catch{return null}}forget(e){if(this.stored()?.session===e){try{localStorage.removeItem(Ul)}catch{}this.memorySession=null}}attest(e){return new Promise(t=>{let o=0,n=r=>{let i=null;try{i=typeof r.data=="string"?JSON.parse(r.data):r.data}catch{return}let a=i?.marketAttest;!a||a.challenge!==e||(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(a))};o=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},gy),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(`market-attest, ${e}, ${this.loggedIn()}`)})}session(){let e=this.stored();return e?Promise.resolve(e.session):(this.sessionPromise??=this.newSession().finally(()=>{this.sessionPromise=null}),this.sessionPromise)}async newSession(){if(this.lastError="",!this.loggedIn())return this.lastError="log in to Krunker to use the market",null;if(!this.hostSupported())return this.lastError="this Kute version cannot sign in to the market, update Kute",null;let e=await he.requestStatus("/market/session",{method:"POST"});if(!e.data?.challenge)return this.lastError=e.status===503?"the market is not available right now":"could not reach the market",e.status===429&&this.limited(e.retryAt),null;let t=await this.attest(e.data.challenge);if(!t)return this.lastError="Kute did not answer the sign in",null;let o=await he.requestStatus("/market/session/confirm",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({challenge:t.challenge,sig:t.sig,version:t.version,loggedIn:t.loggedIn})});if(!o.data?.session)return this.lastError=typeof o.error?.error=="string"?o.error.error:"the market refused the sign in",o.status===429&&this.limited(o.retryAt),null;this.memorySession={session:o.data.session,expiresAt:o.data.expiresAt};try{localStorage.setItem(Ul,JSON.stringify(this.memorySession))}catch{}return o.data.session}async request(e,t={},o=!1){return(await this.requestStatus(e,t,o)).data}async requestStatus(e,t={},o=!1){if(Date.now()this.request(e)){let n=Date.now(),r=this.cache.get(e);if(r&&n-r.at(a===null&&this.cache.delete(e),a));if(this.cache.set(e,{at:n,ttl:t,value:i}),this.cache.size>500){let a=this.cache.keys().next();a.done||this.cache.delete(a.value)}return i}retry(){return Date.now(){let n=await this.requestStatus(o);if(n.status!==404)return n.data;let r=await this.cached(`/market/item/${e}`,3e5);if(!r)return null;let[i,a]=await Promise.all([this.cached(`/market/item/${e}/history?range=${t}`,3e5),this.cached(`/market/item/${e}/listings`,6e4)]);return{item:r,history:i,listings:a}})}async values(e){let t=[...new Set(e)].sort((n,r)=>n-r),o={};for(let n=0;njs,RARITIES:()=>bo,formatAge:()=>We,formatKr:()=>Pe,formatPercent:()=>it});function Pe(s){return Number.isFinite(s)?Math.abs(s)>=1e6?`${(s/1e6).toFixed(s%1e6===0?0:1)}M`:Math.round(s).toLocaleString("en-US"):"?"}function it(s){if(s==null||!Number.isFinite(s))return"\u2013";let e=s*100;return`${e>0?"+":""}${Math.abs(e)>=100?e.toFixed(0):e.toFixed(1)} %`}function We(s){if(!Number.isFinite(s)||s<0)return"\u2013";let e=s/6e4;if(e<60)return`${Math.max(1,Math.round(e))} min`;let t=e/60;return t<48?`${Math.round(t)} h`:`${Math.round(t/24)} d`}var bo,js,Ve=w(()=>{"use strict";bo=[{name:"Uncommon",color:"#b2f252"},{name:"Rare",color:"#2196F3"},{name:"Epic",color:"#E040FB"},{name:"Legendary",color:"#FBC02D"},{name:"Relic",color:"#ff5722"},{name:"Contraband",color:"#f44336"},{name:"Unobtainable",color:"#ffffff"},{name:"NFT",color:"#9e9e9e"}],js={A:"#5ce05a",B:"#9ccc65",C:"#fbc02d",D:"#ff9800",F:"#f44336"}});var Fm={};A(Fm,{TRADE_VERDICTS:()=>jt,TYPE_NAMES:()=>Et,activityLabel:()=>Wl,change:()=>ae,empty:()=>fe,esc:()=>S,evidenceLabel:()=>Gs,identity:()=>me,money:()=>T,stat:()=>ne,verdictOf:()=>Us});var Et,jt,Us,S,T,ae,Gs,Wl,me,fe,ne,pe=w(()=>{"use strict";Ve();Et=["Weapons","Hats","Bodies","Melee","Sprays","Dyes","Waists","Faces","Charms","Emotes","Stickers","Skydomes","Poses","Spin tickets","Capes","Heads","Paints","Backs","Consumables"],jt={good:{label:"Favorable trade",detail:"More estimated value coming in"},fair:{label:"Fair trade",detail:"Similar estimated value"},bad:{label:"Unfavorable trade",detail:"More estimated value going out"},uncertain:{label:"Not enough evidence",detail:"Estimates are too uncertain for a verdict"}},Us=s=>Object.hasOwn(jt,s)?s:"uncertain",S=s=>String(s??"").replace(/[&<>"']/g,e=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[e]??e),T=s=>s==null?"Unavailable":Pe(s),ae=s=>{if(s==null)return'No trend yet';let e="muted";return s>.005&&(e="positive"),s<-.005&&(e="negative"),`${S(it(s))}`},Gs=s=>s.method?.includes("trades")?s.method.startsWith("sales")?"Sales + private trades":"Private-trade estimate":s.method?.startsWith("sales")?(s.sales7d??0)>=5?"Recent sales":"Sparse sales":"Limited evidence",Wl=s=>s.privateTrading?.trades7d?`${s.privateTrading.trades7d} private trade${s.privateTrading.trades7d===1?"":"s"} this week${s.sales7d?` + ${s.sales7d} sales`:""}`:(s.sales7d??0)>=7?"Active this week":(s.sales7d??0)>0?"Traded this week":"No reported sales this week",me=s=>`${s.thumbnail?``:'K'}${S(s.name)}${S(bo[s.rarity??-1]?.name??"Item")}`,fe=(s,e,t="")=>`
              ◇

              ${S(s)}

              ${S(e)}

              ${t}
              `,ne=(s,e,t)=>`
              ${S(s)}${e}${t}
              `});var Km={};A(Km,{default:()=>hr});var vy,vo,Ke,qm,wy,ky,yy,Vl,xy,Yl,Sy,hr,Xl=w(()=>{"use strict";D();xe();Ve();pe();vy=1500,vo="data-kute-market",Ke="kuteMarketLine",qm="kuteMarketCardStyle",wy=".market-card, .market-item-card",ky=` +`,oe=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},js=(s,e,t,o="")=>{let n=oe("div",`iconBtn ${o}`);return n.title=e,n.append(oe("span","mi",s)),n.onclick=t,n},Hl=class{constructor(){this.popup=null,this.groups=[],this.openSettings=new Set,this.editing=null,this.pendingRead=null,this.pendingSave=null,this.needsRefresh=!1,this.renderQueued=!1,this.forceClose=!1,this.prefsTimers=new Map,Je&&(Je.onChange=()=>this.queueRender()),u.userscriptManager.masterChanged=e=>this.onMasterChanged(e)}masterOn(){return u.settings?.data?.userscripts!==!1}onMasterChanged(e){if(e&&!Je)this.needsRefresh=!0;else if(e&&!Lt())for(let t of this.groups.filter(o=>o.id==="game").flatMap(o=>o.scripts)){let o=this.entryFor(t.key);!o||!t.enabled||(o.start(),(o.tainted||o.state!=="running"&&o.state!=="waiting"&&o.state!=="error")&&(this.needsRefresh=!0))}this.updateNotice(),this.editing||this.render()}reload(e){return e.length?Lt()?(Lo(e,!0,this.masterOn()),!0):!1:!0}applyMaster(){let e=this.popup?.shadow;if(!e)return;let t=this.masterOn();e.querySelector(".managerPopup")?.classList.toggle("scriptsOff",!t);let o=e.querySelector("#usMaster");o&&(o.classList.toggle("on",t),o.querySelector(".toggle")?.classList.toggle("on",t),o.querySelector("span").textContent=t?"Userscripts on":"Userscripts off")}open(){if(this.popup)return;if(!Ds()){window.chrome.webview.postMessage("open, userscripts"),u.showNotification("This Kute version can only open the scripts folder. Update Kute for the script manager.",!1,6);return}this.popup=vo(_m,{onMessage:t=>this.receive(t),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1}),this.popup.signal.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.forceClose=!1});let{shadow:e}=this.popup;e.querySelector("#usFolder").onclick=()=>this.send("reveal",{}),e.querySelector("#usRefreshNow").onclick=()=>location.reload(),e.querySelector("#usMaster").onclick=()=>u.settings.changeSetting("userscripts",!this.masterOn(),!1),this.applyMaster(),this.body().textContent="Loading...",this.send("list",{})}send(e,t){window.chrome.webview.postMessage(`scripts-${e} ${JSON.stringify(t)}`)}body(){return this.popup?.shadow.querySelector("#usBody")}receive(e){if(e.managerError&&(this.popup?.showError(e.managerError),this.pendingSave&&(this.pendingSave=null)),e.userscripts){if(this.groups=e.userscripts.groups??[],this.pendingSave&&this.editing){let{closeAfter:t}=this.pendingSave;this.pendingSave=null,this.editing.editor.markSaved(),this.editing.group==="game"&&!this.reload([this.editing.file])&&(this.needsRefresh=!0),t&&(this.editing=null)}this.editing||this.render(),this.updateNotice()}if(e.userscriptSource&&e.userscriptSource.key===this.pendingRead){this.pendingRead=null;let t=this.findScript(e.userscriptSource.key);t&&typeof e.userscriptSource.content=="string"?this.showEditor(t.group,t.file,e.userscriptSource.content):this.popup?.showError("The script could not be read.")}}findScript(e){for(let t of this.groups){let o=t.scripts.find(n=>n.key===e);if(o)return o}}entryFor(e){return Je?.entries?.find(t=>t.key===e)}queueRender(){!this.popup||this.renderQueued||(this.renderQueued=!0,queueMicrotask(()=>{this.renderQueued=!1,this.updateNotice(),this.popup&&!this.editing&&this.render()}))}updateNotice(){let e=this.popup?.shadow.querySelector("#usRefresh");if(!e)return;let t=this.masterOn(),o=Je?.entries?.some(n=>n.outdated||!t&&n.state==="running");e.hidden=!this.needsRefresh&&!o}render(){let e=this.body();if(!(!e||!this.popup)){this.applyMaster(),e.textContent="";for(let t of this.groups)e.append(this.renderGroup(t))}}renderGroup(e){let t=oe("div","group"),o=oe("div","groupHead");o.append(oe("div","groupTitle",e.label),oe("div","groupRuns",`runs in ${e.runs}`));let n=oe("div","btn small");n.append(oe("span","mi","add"),"New script"),n.onclick=()=>this.createScript(e.id),o.append(n),t.append(o),e.scripts.length===0&&t.append(oe("div","empty","No scripts yet."));for(let r of e.scripts)this.renderScript(t,e,r);return t.append(oe("div","dropZone",`Drop .js files here to add them to ${e.label}`)),st(t,r=>this.importFiles(e,r)),t}async importFiles(e,t){if(!this.popup)return;let o=[],n=t.filter(({file:a})=>{if(!/\.js$/i.test(a.name))o.push(`${a.name}: not a .js file`);else if(a.size>dy)o.push(`${a.name}: larger than 4 MB`);else return!0;return!1}),r=new Set(e.scripts.map(a=>a.file.toLowerCase())),i=n.filter(({file:a})=>r.has(a.name.toLowerCase())).map(({file:a})=>a.name);if(i.length){let a=`${i.join(", ")} already exist in ${e.label}. Replace them with the dropped files?`;if(!await Pe(this.popup.shadow,"Replace scripts?",a,"Replace"))return}for(let{file:a}of n)this.send("write",{group:e.id,file:a.name,content:await a.text(),noList:!0});this.send("list",{}),e.id==="game"&&!this.reload(n.map(({file:a})=>a.name))&&(this.needsRefresh=!0),this.updateNotice(),o.length&&this.popup?.showError(o.join(` +`))}stateOf(e,t,o){return t?.state==="error"?["Error","bad",t.error]:t?.outdated?["Old version","warn","Your changes apply after a refresh, this script has no unload to stop the running version"]:this.masterOn()?o||!Je?e.enabled?["On","ok",""]:["Off","",""]:e.enabled?t?.state==="running"?["Running","ok",t.late?"Started after the page loaded. It is a document-start script, refresh if it misses something":""]:t?.state==="waiting"?["Starting","ok","Starts once the page has loaded"]:!t&&Lt()?["Starting","ok",""]:["After refresh","warn","On, starts with the next page load"]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:["Off","",""]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:e.enabled?["On","","Runs once userscripts are on"]:["Off","",""]}renderScript(e,t,o){let n=t.id!=="game",r=n?void 0:this.entryFor(o.key),i=r?.meta??o.meta,a=oe("div","scriptRow"),l=oe("div",`toggle${o.enabled?" on":""}`);l.title=o.enabled?"Turn off":"Turn on",l.onclick=()=>this.toggle(o,r,n);let c=oe("div","scriptInfo"),d=oe("div","scriptName",i.name||o.file);i.version&&d.append(oe("span","version",`v${i.version}`)),i.author&&d.append(oe("span","author",`by ${i.author}`)),c.append(d);let h=[i.desc,i.name?o.file:"",wo(o.size)].filter(Boolean).join(" \xB7 ");c.append(oe("div","scriptDesc",h)),c.title=[i.desc,`${o.file}, ${o.runAt}${o.priority?`, priority ${o.priority}`:""}`].filter(Boolean).join(` +`);let[p,m,f]=this.stateOf(o,r,n),g=oe("div",`state ${m}`,p);f&&(g.title=f);let b=oe("div","scriptActions");r?.settings&&Object.keys(r.settings).length&&b.append(js("tune","Script settings",()=>{this.openSettings.has(o.key)?this.openSettings.delete(o.key):this.openSettings.add(o.key),this.render()})),b.append(js("edit","Edit",()=>{this.pendingRead=o.key,this.send("read",{key:o.key})}),js("swap_horiz",`Move to ${n?"Game":"Social"}`,()=>this.move(o,r,n)),js("folder_open","Show in folder",()=>this.send("reveal",{key:o.key})),js("delete","Delete (goes to the recycle bin)",()=>this.deleteScript(o,r),"danger")),a.append(l,c,g,b),e.append(a),r?.settings&&this.openSettings.has(o.key)&&e.append(this.renderSettings(o,r))}toggle(e,t,o){e.enabled=!e.enabled,this.send("toggle",{key:e.key,enabled:e.enabled}),o||this.masterOn()&&(t?e.enabled?(t.start(),(t.tainted||t.state!=="running"&&t.state!=="waiting"&&t.state!=="error")&&(this.needsRefresh=!0)):t.stop()||(this.needsRefresh=!0):e.enabled&&Lt()?Lo([e.key],!1,!0):e.enabled&&(this.needsRefresh=!0)),this.updateNotice(),this.render()}move(e,t,o){t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("move",{key:e.key,group:o?"game":"social"}),o&&!this.reload([e.file])&&(this.needsRefresh=!0),this.updateNotice()}async deleteScript(e,t){!this.popup||!await Pe(this.popup.shadow,`Delete ${e.file}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||(t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("delete",{key:e.key}))}async createScript(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New script","my-script.js","The file name. It ends up in the scripts folder of this group.");if(!t)return;let o=/\.js$/i.test(t)?t:`${t}.js`;if(this.groups.some(r=>r.id===e&&r.scripts.some(i=>i.file.toLowerCase()===o.toLowerCase()))){this.popup.showError(`${o} already exists in this group.`);return}this.showEditor(e,o,uy.replaceAll("{{name}}",o.replace(/\.js$/i,"")),!0)}renderSettings(e,t){let o=oe("div","scriptSettings"),n=t.settings??{},r=()=>{clearTimeout(this.prefsTimers.get(e.key)),this.prefsTimers.set(e.key,setTimeout(()=>{this.prefsTimers.delete(e.key);let a=Object.fromEntries(Object.entries(n).map(([l,c])=>[l,c.value]));this.send("prefs",{key:e.key,prefs:a})},300))},i=(a,l)=>{t.setPref(a,l),r()};for(let[a,l]of Object.entries(n)){let c=oe("div","settingRow"),d=oe("div","settingLabel",l.title||a);l.desc&&d.append(oe("small","",l.desc)),c.append(d,this.settingControl(a,l,i)),o.append(c)}return o}settingControl(e,t,o){switch(t.type){case"bool":{let n=oe("div",`toggle${t.value?" on":""}`);return n.onclick=()=>{o(e,!t.value),n.classList.toggle("on",!!t.value)},n}case"num":{let n=oe("div");n.style.cssText="display:flex;gap:.6em;align-items:center";let r=oe("input");if(r.type="number",r.style.width="90px",r.value=String(t.value),t.min!==void 0&&(r.min=String(t.min)),t.max!==void 0&&(r.max=String(t.max)),r.step=String(t.step??"any"),t.min!==void 0&&t.max!==void 0){let i=oe("input");i.type="range",i.min=String(t.min),i.max=String(t.max),i.step=String(t.step??"any"),i.value=String(t.value),i.oninput=()=>{r.value=i.value,o(e,Number(i.value))},r.onchange=()=>{i.value=r.value},n.append(i)}return r.addEventListener("change",()=>{r.value!==""&&Number.isFinite(Number(r.value))&&o(e,Number(r.value))}),n.append(r),n}case"sel":{let n=oe("select");for(let r of t.opts??[]){let i=oe("option","",String(r));i.value=String(r),i.selected=r===t.value,n.append(i)}return n.onchange=()=>{let r=(t.opts??[]).find(i=>String(i)===n.value);o(e,r??n.value)},n}case"color":{let n=oe("input");return n.type="color",n.value=String(t.value),n.onchange=()=>o(e,n.value),n}case"text":{let n=oe("input");return n.type="text",n.value=String(t.value??""),n.onchange=()=>o(e,n.value),n}case"keybind":{let n=i=>[i?.ctrl&&"Ctrl",i?.alt&&"Alt",i?.shift&&"Shift",i?.key||"none"].filter(Boolean).join(" + "),r=oe("div","btn small",n(t.value));return r.onclick=()=>{r.textContent="Press a key...";let i=a=>{if(["Control","Alt","Shift","Meta"].includes(a.key))return;a.preventDefault(),a.stopPropagation(),window.removeEventListener("keydown",i,!0);let l={key:a.key.toLowerCase(),ctrl:a.ctrlKey,alt:a.altKey,shift:a.shiftKey};o(e,l),r.textContent=n(l)};window.addEventListener("keydown",i,!0)},r}default:return oe("div","scriptFile",`unsupported type "${t.type}"`)}}showEditor(e,t,o,n=!1){let r=this.body();if(!r)return;let{editor:i}=fo(r,{title:t,content:o,language:"js",isNew:n,onSave:a=>{this.editing&&(this.pendingSave={closeAfter:a},this.editing.closeAfterSave=a,this.send("write",{group:e,file:t,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={group:e,file:t,editor:i,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Pe(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||(this.editing=null,this.render())}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Pe(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},py=new Hl,hy=()=>py.open()});var zm,Bm=w(()=>{zm=`

              Swapper

              refreshReload list
              folder_openOpen swapper folder
              ×
              A file in the swapper folder replaces the game's file with the same path: swapper/textures/pistol.png replaces krunker.io/textures/pistol.png. Easiest way: drop your file onto the game file it should replace (right side), it gets the right folder and name. Folder names do not care about case. Text files like CSS can be written right here: New file, or the edit button on a game file to start from a copy.
              Your swaps
              note_addNew file
              create_new_folderNew folder
              Drop files or folders here to put them into the swapper folder as they are
              Game files
              `});var jl={};A(jl,{open:()=>wy});var fy,gy,Hm,mr,by,Dl,ce,rt,Us,Fm,Om,ql,Kl,vy,wy,Ul=w(()=>{"use strict";F();Bm();qs();Do();hr();fy=new Set(["css","js","mjs","json","txt","html","htm","svg","xml","obj","mtl","glsl","frag","vert","md","csv"]),gy=4*1024*1024,Hm=s=>fy.has(s.slice(s.lastIndexOf(".")+1).toLowerCase()),mr=()=>u.hostFeatures?.includes("swapper-editor")??!1,by=32*1024*1024,Dl=400,ce=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},rt=(s,e,t,o="")=>{let n=ce("div",`iconBtn ${o}`);return n.title=e,n.append(ce("span","mi",s)),n.onclick=r=>{r.stopPropagation(),t()},n},Us=s=>s.slice(s.lastIndexOf("/")+1),Fm=s=>s.includes("/")?s.slice(0,s.lastIndexOf("/")):"",Om=(s,e)=>{let t={name:"",path:"",folders:new Map,files:[]},o=n=>{let r=t;for(let i of n.split("/").filter(Boolean)){let a=r.folders.get(i);a||(a={name:i,path:r.path?`${r.path}/${i}`:i,folders:new Map,files:[]},r.folders.set(i,a)),r=a}return r};for(let n of e)o(n);for(let n of s)o(Fm(n.path)).files.push({name:Us(n.path),path:n.path,size:n.size});return t},ql=s=>s.files.length+[...s.folders.values()].reduce((e,t)=>e+ql(t),0),Kl=class{constructor(){this.popup=null,this.list=null,this.collapsedOwn=new Set,this.expandedGame=new Set,this.search="",this.touched=new Set,this.stale=new Set,this.uploadDone=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1}open(){if(this.popup)return;if(!Ds()){window.chrome.webview.postMessage("open, swapper"),u.showNotification("This Kute version can only open the swapper folder. Update Kute for the swapper manager.",!1,6);return}this.popup=vo(zm,{onMessage:r=>this.receive(r),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1,this.uploadDone?.(null),this.uploadDone=null}),e.querySelector("#swFolder").onclick=()=>this.send("reveal",{path:""}),e.querySelector("#swReload").onclick=()=>this.send("list",{}),e.querySelector("#swRefreshNow").onclick=()=>location.reload(),e.querySelector("#swNewFolder").onclick=()=>this.newFolder("");let o=e.querySelector("#swNewFile");mr()||(o.style.display="none"),o.onclick=()=>this.newFile(""),st(e.querySelector("#swOwnColumn"),r=>this.drop("",r));let n=e.querySelector("#swSearch");n.value=this.search,n.oninput=()=>{this.search=n.value.trim().toLowerCase(),this.renderGame()},e.querySelector("#swOwnTree").textContent="Loading...",this.send("list",{}),pr()||window.addEventListener("focus",()=>{!this.editing&&!this.uploadDone&&this.send("list",{})},{signal:t})}send(e,t){window.chrome.webview.postMessage(`swapper-${e} ${JSON.stringify(t)}`)}async drop(e,t){let o=t;!e&&o.every(({path:n})=>n.toLowerCase().startsWith("swapper/"))&&(o=o.map(({path:n,file:r})=>({path:n.slice(8),file:r}))),await this.upload(o.map(({path:n,file:r})=>({path:e?`${e}/${n}`:n,file:r})))}async replace(e,t){if(!this.popup)return;if(t.length!==1){this.popup.showError("Drop exactly one file onto a game file. Drop several onto a folder instead.");return}let[{file:o}]=t,n=r=>r.slice(r.lastIndexOf(".")+1).toLowerCase();if(n(o.name)!==n(e)){let r=`${o.name} is saved as ${Us(e)}, the game will read it as .${n(e)}. Go ahead?`;if(!await Pe(this.popup.shadow,"Different file type",r,"Save anyway"))return}await this.upload([{path:e,file:o}])}async upload(e){let t=[];for(let{path:o,file:n}of e){if(!this.popup)return;if(n.size>by){t.push(`${o}: larger than 32 MB, put it in with Open swapper folder`);continue}let r=await Il(n),i=await new Promise(a=>{this.uploadDone=a,this.send("upload",{path:o,data:r})});i?t.push(i):this.touched.add(o.toLowerCase())}this.send("list",{}),t.length&&this.popup?.showError(t.join(` +`))}receive(e){if(e.managerError&&this.popup?.showError(e.managerError),e.swapperUploaded){let o=this.uploadDone;this.uploadDone=null,o?.(e.swapperUploaded.error??null)}if(e.swapperSource&&e.swapperSource.path===this.pendingRead&&(this.pendingRead=null,typeof e.swapperSource.content=="string"?this.showEditor(e.swapperSource.path,e.swapperSource.content):this.popup?.showError(`${e.swapperSource.path} could not be read as text.`)),e.swapperWritten&&this.saving&&(this.saving=!1,e.swapperWritten.error?this.popup?.showError(e.swapperWritten.error):this.editing&&(this.touched.add(this.editing.path.toLowerCase()),this.editing.editor.markSaved(),this.editing.closeAfterSave&&this.closeEditor())),e.swapperChanged&&!this.editing&&!this.uploadDone&&this.send("list",{}),!e.swapper)return;let t=this.list;this.list=e.swapper,t&&this.applyChanges(t,e.swapper),this.render()}applyChanges(e,t){let o=c=>new Map(c.files.map(d=>[d.path.toLowerCase(),d.size])),n=o(e),r=o(t),i=new Set(this.touched);if(this.touched.clear(),e.enabled!==t.enabled)for(let c of[...n.keys(),...r.keys()])i.add(c);for(let[c,d]of r)n.get(c)!==d&&i.add(c);for(let c of n.keys())r.has(c)||i.add(c);if(!i.size)return;let a=new Set([...i].filter(c=>c.endsWith(".css")));a.size&&!pr()&&Ks(a);let l=new Set(t.seen.map(c=>c.toLowerCase()));for(let c of i)!a.has(c)&&l.has(c)&&this.stale.add(c)}get(e){return this.popup?.shadow.querySelector(e)}render(){if(!this.popup||!this.list)return;let e=this.get("#swNotice"),t=this.list.enabled===!1;e.hidden=!t&&!this.stale.size;let o=this.stale.size;e.querySelector("span").textContent=t?"The swapper is switched off (Settings, Customization), none of these files are used.":`The game already loaded ${o===1?"1 changed file":`${o} changed files`}, ${o===1?"it changes":"they change"} after a page refresh.`,this.renderOwn(),this.renderGame()}renderOwn(){if(!this.list)return;let e=this.get("#swOwnTree");e.textContent="";let t=Om(this.list.files,this.list.dirs);if(this.get("#swOwnCount").textContent=`${this.list.files.length} file${this.list.files.length===1?"":"s"}`,!this.list.files.length&&!this.list.dirs.length){e.append(ce("div","treeNote","Nothing swapped yet. Drop a file onto one of the game files on the right, or drop a whole swapper pack here."));return}let o=new Map(this.list.seen.map(i=>[i.toLowerCase(),i])),n=new Map;for(let i of this.list.seen){let a=Us(i).toLowerCase();n.set(a,[...n.get(a)??[],i])}let r=(i,a)=>{for(let l of[...i.folders.values()].sort((c,d)=>c.name.localeCompare(d.name))){let c=this.collapsedOwn.has(l.path),d=this.folderRow(l.name,a,!c,`${ql(l)}`);d.onclick=()=>{c?this.collapsedOwn.delete(l.path):this.collapsedOwn.add(l.path),this.renderOwn()};let h=d.querySelector(".scriptActions");mr()&&h?.append(rt("note_add","New file inside",()=>this.newFile(l.path))),h?.append(rt("create_new_folder","New folder inside",()=>this.newFolder(l.path)),rt("drive_file_rename_outline","Rename or move",()=>this.move(l.path)),rt("folder_open","Open in Explorer",()=>this.send("reveal",{path:l.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(l.path),"danger")),st(d,p=>this.drop(l.path,p)),e.append(d),c||r(l,a+1)}for(let l of[...i.files].sort((c,d)=>c.name.localeCompare(d.name)))e.append(this.ownFileRow(l,a,o,n))};r(t,0)}folderRow(e,t,o,n){let r=ce("div","node folder");return r.style.setProperty("--depth",String(t)),r.append(ce("span","mi",o?"expand_more":"chevron_right"),ce("span","mi kind",o?"folder_open":"folder")),r.append(ce("span","nodeName",e),ce("span","nodeSize",n),ce("div","scriptActions")),r}ownFileRow(e,t,o,n){let r=ce("div","node");r.style.setProperty("--depth",String(t+1)),r.append(ce("span","mi","description"),ce("span","nodeName",e.name),ce("span","nodeSize",wo(e.size)));let i=o.get(e.path.toLowerCase()),a=(n.get(e.name.toLowerCase())??[]).filter(c=>c.toLowerCase()!==e.path.toLowerCase());if(i){let c=ce("span","state ok","Used");c.title=`The game loaded krunker.io/${i} this session, this file replaced it.`,r.append(c)}else if(a.length){let[c]=a,d=ce("span","state warn","Wrong folder?");d.title=`The game asks for this file as ${a.join(", ")}`;let h=ce("div","btn small","Move there");h.title=`Move to ${c}`,h.onclick=()=>this.send("move",{from:e.path,to:c}),r.append(d,h)}else{let c=ce("span","state","Not requested");c.title="The game did not ask for this path in this session. It may still come (another map, a skin), or the path does not match any game file.",r.append(c)}let l=ce("div","scriptActions");return mr()&&Hm(e.path)&&e.size<=gy&&(l.append(rt("edit","Edit",()=>this.edit(e.path))),r.ondblclick=()=>this.edit(e.path)),l.append(rt("drive_file_rename_outline","Rename or move",()=>this.move(e.path)),rt("folder_open","Show in Explorer",()=>this.send("reveal",{path:e.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(e.path),"danger")),r.append(l),st(r,c=>this.drop(Fm(e.path),c)),r}renderGame(){if(!this.list||!this.popup)return;let e=this.get("#swGameTree");e.textContent="";let{seen:t}=this.list;this.get("#swGameCount").textContent=`${t.length} loaded this session`;let o=new Set(this.list.files.map(a=>a.path.toLowerCase()));if(!t.length){e.append(ce("div","treeNote","The game has not loaded any files yet. Play a round or open a menu, then Reload list."));return}let n=(a,l)=>{let c=ce("div","node");if(c.style.setProperty("--depth",String(l)),c.title=`krunker.io/${a} +Drop a file here to replace it`,c.append(ce("span","mi","insert_drive_file"),ce("span","nodeName",l?Us(a):a)),o.has(a.toLowerCase())&&c.append(ce("span","swapped","swapped")),mr()&&Hm(a)){let d=this.list?.files.find(p=>p.path.toLowerCase()===a.toLowerCase()),h=ce("div","scriptActions");d?h.append(rt("edit","Edit your swap",()=>this.edit(d.path))):h.append(rt("edit_note","Edit a copy, saving it swaps the file",()=>this.editCopy(a))),c.append(h)}return st(c,d=>this.replace(a,d)),c};if(this.search){let a=t.filter(l=>l.toLowerCase().includes(this.search));for(let l of a.slice(0,Dl))e.append(n(l,0));a.length||e.append(ce("div","treeNote","No game file matches.")),a.length>Dl&&e.append(ce("div","treeNote",`${a.length-Dl} more, search for something longer.`));return}let r=Om(t.map(a=>({path:a,size:0})),[]),i=(a,l)=>{for(let c of[...a.folders.values()].sort((d,h)=>d.name.localeCompare(h.name))){let d=this.expandedGame.has(c.path),h=this.folderRow(c.name,l,d,`${ql(c)}`);h.title="Drop files here to put them into this folder",h.onclick=()=>{d?this.expandedGame.delete(c.path):this.expandedGame.add(c.path),this.renderGame()},st(h,p=>this.drop(c.path,p)),e.append(h),d&&i(c,l+1)}for(let c of[...a.files].sort((d,h)=>d.name.localeCompare(h.name)))e.append(n(c.path,l+1))};i(r,0)}async newFile(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New file",e?`${e}/new.css`:"css/new.css","A path inside the swapper folder, the same path the game loads the file from");if(!t)return;let o=t.replace(/^\/+/,"");if(this.list?.files.some(n=>n.path.toLowerCase()===o.toLowerCase())){this.popup.showError(`${o} already exists, edit it instead.`);return}this.showEditor(o,"",!0)}edit(e){this.pendingRead||this.editing||(this.pendingRead=e,this.send("read",{path:e}))}async editCopy(e){if(this.pendingRead||this.editing)return;this.pendingRead=e;let t=null;for(let o of["https://krunker.io","https://assets.krunker.io"])try{let n=await fetch(`${o}/${e}`);if(n.ok){t=await n.text();break}}catch{}this.pendingRead===e&&(this.pendingRead=null,t===null&&(this.popup?.showError(`Could not download krunker.io/${e}, starting with an empty file.`),t=""),this.showEditor(e,t,!0))}showEditor(e,t,o=!1){if(!this.popup)return;let n=this.get("#swEditor");this.get(".swapColumns").style.display="none",n.style.display="";let{editor:r}=fo(n,{title:e,content:t,language:Ga(e),isNew:o,onSave:i=>{!this.editing||this.saving||(this.saving=!0,this.editing.closeAfterSave=i,this.send("write",{path:e,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={path:e,editor:r,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Pe(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||this.closeEditor()}closeEditor(){if(this.editing=null,!this.popup)return;let e=this.get("#swEditor");e.textContent="",e.style.display="none",this.get(".swapColumns").style.display="",this.render()}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Pe(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}async newFolder(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New folder",e?`${e}/`:"textures","A path inside the swapper folder, for example textures/weapons");t&&this.send("mkdir",{path:t})}async move(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"Rename or move",e,"The new path inside the swapper folder. Change the folders in front to move it.");!t||t===e||this.send("move",{from:e,to:t})}async remove(e){!this.popup||!await Pe(this.popup.shadow,`Delete ${Us(e)}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||this.send("delete",{path:e})}},vy=new Kl,wy=()=>vy.open()});var Dm={};var Gl=w(()=>{"use strict";F();os();hr();u.userscriptManager={open:()=>{Promise.resolve().then(()=>(Fl(),Ol)).then(s=>s.open()).catch(s=>console.error("[kute] userscript manager:",s))}};u.settings.toggleUserscripts=s=>{if(u.settings.data.userscripts=s,s)Lt()?Lo(null,!1,!0):u.userscriptManager.masterChanged||u.showNotification("Refresh the page to start your userscripts.",!1,5);else{let e=(Je?.entries??[]).filter(t=>(t.state==="running"||t.state==="waiting")&&!t.stop()).map(t=>t.meta.name||t.key);e.length&&u.showNotification(`${e.join(", ")} cannot be stopped and keeps running until the next refresh.`,!1,6)}u.userscriptManager.masterChanged?.(s)};window.chrome.webview.addEventListener("message",s=>{let e=s.data?.swapperChanged?.css;Array.isArray(e)&&e.length&&Ks(new Set(e.map(String)))});u.swapperManager={open:()=>{Promise.resolve().then(()=>(Ul(),jl)).then(s=>s.open()).catch(s=>console.error("[kute] swapper manager:",s))}};u.customCss={open:()=>{Promise.resolve().then(()=>(zl(),Bl)).then(s=>s.open()).catch(s=>console.error("[kute] custom css:",s))}}});var Km={};A(Km,{default:()=>W});var Wl,ky,yy,qm,Vl,xy,W,xe=w(()=>{"use strict";F();Nt();Wl="kute_market_session",ky="x-kute-session",yy=3e3,qm=3600*1e3,Vl=class{constructor(){this.sessionPromise=null,this.memorySession=null,this.cache=new Map,this.lastError="",this.retryAt=0}loggedIn(){try{return localStorage.getItem("krunker_token")!==null}catch{return!1}}hostSupported(){return u.hostFeatures?.includes("market-attest")===!0}stored(){if(this.memorySession&&Date.now()t.expiresAt-qm?null:t}catch{return null}}forget(e){if(this.stored()?.session===e){try{localStorage.removeItem(Wl)}catch{}this.memorySession=null}}attest(e){return new Promise(t=>{let o=0,n=r=>{let i=null;try{i=typeof r.data=="string"?JSON.parse(r.data):r.data}catch{return}let a=i?.marketAttest;!a||a.challenge!==e||(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(a))};o=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},yy),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(`market-attest, ${e}, ${this.loggedIn()}`)})}session(){let e=this.stored();return e?Promise.resolve(e.session):(this.sessionPromise??=this.newSession().finally(()=>{this.sessionPromise=null}),this.sessionPromise)}async newSession(){if(this.lastError="",!this.loggedIn())return this.lastError="log in to Krunker to use the market",null;if(!this.hostSupported())return this.lastError="this Kute version cannot sign in to the market, update Kute",null;let e=await he.requestStatus("/market/session",{method:"POST"});if(!e.data?.challenge)return this.lastError=e.status===503?"the market is not available right now":"could not reach the market",e.status===429&&this.limited(e.retryAt),null;let t=await this.attest(e.data.challenge);if(!t)return this.lastError="Kute did not answer the sign in",null;let o=await he.requestStatus("/market/session/confirm",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({challenge:t.challenge,sig:t.sig,version:t.version,loggedIn:t.loggedIn})});if(!o.data?.session)return this.lastError=typeof o.error?.error=="string"?o.error.error:"the market refused the sign in",o.status===429&&this.limited(o.retryAt),null;this.memorySession={session:o.data.session,expiresAt:o.data.expiresAt};try{localStorage.setItem(Wl,JSON.stringify(this.memorySession))}catch{}return o.data.session}async request(e,t={},o=!1){return(await this.requestStatus(e,t,o)).data}async requestStatus(e,t={},o=!1){if(Date.now()this.request(e)){let n=Date.now(),r=this.cache.get(e);if(r&&n-r.at(a===null&&this.cache.delete(e),a));if(this.cache.set(e,{at:n,ttl:t,value:i}),this.cache.size>500){let a=this.cache.keys().next();a.done||this.cache.delete(a.value)}return i}retry(){return Date.now(){let n=await this.requestStatus(o);if(n.status!==404)return n.data;let r=await this.cached(`/market/item/${e}`,3e5);if(!r)return null;let[i,a]=await Promise.all([this.cached(`/market/item/${e}/history?range=${t}`,3e5),this.cached(`/market/item/${e}/listings`,6e4)]);return{item:r,history:i,listings:a}})}async values(e){let t=[...new Set(e)].sort((n,r)=>n-r),o={};for(let n=0;nGs,RARITIES:()=>Ut,formatAge:()=>We,formatKr:()=>Re,formatPercent:()=>it});function Re(s){return Number.isFinite(s)?Math.abs(s)>=1e6?`${(s/1e6).toFixed(s%1e6===0?0:1)}M`:Math.round(s).toLocaleString("en-US"):"?"}function it(s){if(s==null||!Number.isFinite(s))return"\u2013";let e=s*100;return`${e>0?"+":""}${Math.abs(e)>=100?e.toFixed(0):e.toFixed(1)} %`}function We(s){if(!Number.isFinite(s)||s<0)return"\u2013";let e=s/6e4;if(e<60)return`${Math.max(1,Math.round(e))} min`;let t=e/60;return t<48?`${Math.round(t)} h`:`${Math.round(t/24)} d`}var Ut,Gs,Ve=w(()=>{"use strict";Ut=[{name:"Uncommon",color:"#b2f252"},{name:"Rare",color:"#2196F3"},{name:"Epic",color:"#E040FB"},{name:"Legendary",color:"#FBC02D"},{name:"Relic",color:"#ff5722"},{name:"Contraband",color:"#f44336"},{name:"Unobtainable",color:"#ffffff"},{name:"NFT",color:"#9e9e9e"}],Gs={A:"#5ce05a",B:"#9ccc65",C:"#fbc02d",D:"#ff9800",F:"#f44336"}});var Um={};A(Um,{TRADE_VERDICTS:()=>Gt,TYPE_NAMES:()=>$t,activityLabel:()=>Jl,change:()=>ae,empty:()=>fe,esc:()=>S,evidenceLabel:()=>Vs,fairValue:()=>at,identity:()=>me,lineNote:()=>Xl,money:()=>T,noEvidence:()=>Wt,singleListing:()=>Yl,stat:()=>ne,verdictOf:()=>Ws});var $t,Gt,Ws,S,T,ae,Wt,Yl,at,Xl,Vs,Jl,me,fe,ne,pe=w(()=>{"use strict";Ve();$t=["Weapons","Hats","Bodies","Melee","Sprays","Dyes","Waists","Faces","Charms","Emotes","Stickers","Skydomes","Poses","Spin tickets","Capes","Heads","Paints","Backs","Consumables"],Gt={good:{label:"Favorable trade",detail:"More estimated value coming in"},fair:{label:"Fair trade",detail:"Similar estimated value"},bad:{label:"Unfavorable trade",detail:"More estimated value going out"},uncertain:{label:"Not enough evidence",detail:"Estimates are too uncertain for a verdict"}},Ws=s=>Object.hasOwn(Gt,s)?s:"uncertain",S=s=>String(s??"").replace(/[&<>"']/g,e=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[e]??e),T=s=>s==null?"Unavailable":Re(s),ae=s=>{if(s==null)return'No trend yet';let e="muted";return s>.005&&(e="positive"),s<-.005&&(e="negative"),`${S(it(s))}`},Wt=s=>s.method==="floor"||s.method==="krunker",Yl=s=>s.method==="ask"&&s.onS===1,at=(s,e="")=>s?Wt(s)?`${T(s.fair)}${e}${s.method==="floor"?"floor":"krunker"}`:Yl(s)?`${T(s.fair)}${e}1 listing`:`${T(s.fair)}${e}`:T(void 0),Xl=s=>s.unknown?Wt(s)?`No price evidence · ${s.method==="floor"?"floor":"Krunker"} ${T(s.fair)}`:"Needs more evidence":`${T(s.fair)} KR each`,Vs=s=>s.method==="floor"?"No price evidence, quick-sell floor":s.method==="krunker"?"No price evidence, Krunker's estimate":Yl(s)?"One listing only":s.method?.includes("trades")?s.method.startsWith("sales")?"Sales + private trades":"Private-trade estimate":s.method?.startsWith("sales")?(s.sales7d??0)>=5?"Recent sales":"Sparse sales":"Limited evidence",Jl=s=>s.privateTrading?.trades7d?`${s.privateTrading.trades7d} private trade${s.privateTrading.trades7d===1?"":"s"} this week${s.sales7d?` + ${s.sales7d} sales`:""}`:(s.sales7d??0)>=7?"Active this week":(s.sales7d??0)>0?"Traded this week":"No reported sales this week",me=s=>`${s.thumbnail?``:'K'}${S(s.name)}${S(Ut[s.rarity??-1]?.name??"Item")}`,fe=(s,e,t="")=>`
              ◇

              ${S(s)}

              ${S(e)}

              ${t}
              `,ne=(s,e,t)=>`
              ${S(s)}${e}${t}
              `});var Wm={};A(Wm,{default:()=>fr});var Sy,ko,_e,Gm,Ey,$y,Cy,Zl,My,Ql,Ty,fr,ec=w(()=>{"use strict";F();xe();Ve();pe();Sy=1500,ko="data-kute-market",_e="kuteMarketLine",Gm="kuteMarketCardStyle",Ey=".market-card, .market-item-card",$y=` .market-card,.market-item-card{position:relative} -.${Ke}{display:inline-flex!important;align-items:center;gap:.35em;white-space:nowrap;cursor:pointer;pointer-events:auto} -.${Ke}:hover{filter:brightness(1.25)} -.${Ke}.kuteFloating{position:absolute;left:6px;bottom:6px;z-index:3;background:rgba(0,0,0,.72);color:#fff;padding:2px 7px;border-radius:5px;font-size:12px;font-weight:700} -.${Ke} .kuteMark{color:#f5479b;font-weight:900} -.${Ke} .kuteGrade{display:inline-flex;align-items:center;justify-content:center;min-width:1.4em;height:1.4em;border-radius:3px;padding:0 .25em;color:#111;font-size:.75em;line-height:1} -.${Ke} .kuteDelta{font-size:.85em} -.${Ke} .kuteDelta.kuteDeal{color:#5ce05a} -.${Ke} .kuteDelta.kuteOver{color:#f44336} +.${_e}{display:inline-flex!important;align-items:center;gap:.35em;white-space:nowrap;cursor:pointer;pointer-events:auto} +.${_e}:hover{filter:brightness(1.25)} +.${_e}.kuteFloating{position:absolute;left:6px;bottom:6px;z-index:3;background:rgba(0,0,0,.72);color:#fff;padding:2px 7px;border-radius:5px;font-size:12px;font-weight:700} +.${_e} .kuteMark{color:#f5479b;font-weight:900} +.${_e} .kuteGrade{display:inline-flex;align-items:center;justify-content:center;min-width:1.4em;height:1.4em;border-radius:3px;padding:0 .25em;color:#111;font-size:.75em;line-height:1} +.${_e} .kuteDelta{font-size:.85em} +.${_e} .kuteDelta.kuteDeal{color:#5ce05a} +.${_e} .kuteDelta.kuteOver{color:#f44336} +.${_e} .kuteNone{opacity:.6} .kuteDetailBtn .kuteMark{color:#f5479b;font-weight:900;margin-right:2px} -`,yy=".item-detail-container, .items-detail-root",Vl="kuteDetailBtn",xy=5e3,Yl=class s{constructor(){this.timer=void 0,this.busy=!1,this.pick=null,this.onPick=e=>{if(document.pointerLockElement||!(e.target instanceof Element))return;let t=e.target.closest("[id^='trd_'], .trade-inv-item[data-index]");if(!t)return;let o=/^trd_(?:sel_|inv_)?\d+_(\d+)/.exec(t.id),n=o?o[1]:t.getAttribute("data-index");if(n===null||!/^\d+$/.test(n))return;let r=t.querySelector(".tItemN")?.textContent?.trim()??"";this.pick={skin:Number(n),name:r,at:Date.now()}}}start(){if(this.timer===void 0){if(!document.getElementById(qm)){let e=document.createElement("style");e.id=qm,e.textContent=ky,document.head.append(e)}this.timer=window.setInterval(()=>this.tick(),vy),document.addEventListener("pointerdown",this.onPick,!0)}}stop(){clearInterval(this.timer),this.timer=void 0,document.removeEventListener("pointerdown",this.onPick,!0),this.pick=null;for(let e of document.querySelectorAll(`.${Ke}, .${Vl}`))e.remove();for(let e of document.querySelectorAll(`[${vo}]`))e.removeAttribute(vo)}static thumbPath(e){let t=/\/textures\/previews\/([^?#]+)/.exec(e);return t?t[1]:null}static askOf(e){let t=e.querySelector(".inline-price");if(t){let o=Number((t.textContent??"").replace(/[^\d.]/g,""));return Number.isFinite(o)&&o>0?o:null}for(let o of e.querySelectorAll("span, div")){if(o.classList.contains(Ke)||o.children.length)continue;let n=o.textContent?.trim()??"";if(/^~/.test(n))continue;let r=/^([\d,.]+)\s*KR$/i.exec(n)??/^([\d,.]+)$/.exec(n);if(r&&o.closest(".estimate-badge")===null){let i=Number(r[1].replace(/,/g,""));if(Number.isFinite(i)&&i>0)return i}}return null}async tick(){if(this.busy||document.pointerLockElement)return;let e=document.querySelector(yy),t=e?.getAttribute("aria-label")??"1";e&&e.getAttribute(vo)!==t&&(e.setAttribute(vo,t),e.querySelector(`.${Vl}`)?.remove(),await this.detailButton(e,t));let o=[...document.querySelectorAll(wy)].filter(n=>!n.hasAttribute(vo));if(o.length){this.busy=!0;try{let n=new Map;for(let i of o){i.setAttribute(vo,"1");let a=i.querySelector("img"),l=a instanceof HTMLImageElement?s.thumbPath(a.currentSrc||a.src):null;if(!l)continue;let c=n.get(l)??[];c.push(i),n.set(l,c)}if(!n.size)return;let r=await W.valuesByThumbnails([...n.keys()]);for(let[i,a]of n){let l=r[i];for(let c of a)c.isConnected&&this.draw(c,l??null)}}finally{this.busy=!1}}}async detailValue(e,t){let{pick:o}=this;if(o&&Date.now()-o.atc.name.toLowerCase()===t.toLowerCase())??[];return l.length===1?l[0]:null}async detailButton(e,t){let o=e.querySelector(".full-details-container, .items-detail-header-actions");if(!o)return;let n=document.createElement("button");n.type="button";let r=o.querySelector("button");n.className=`${r?.className??""} ${Vl}`.trim();let i=r?.querySelector("i")?.className??"material-icons";n.innerHTML=`candlestick_chart Kute Market`,n.title="K value, liquidity, price history, depth and owners in Kute Market",o.append(n);let a=await this.detailValue(e,t);if(!a||e.getAttribute(vo)!==t){n.remove();return}let l=n.querySelector("span");l&&(l.textContent=`Kute Market \xB7 K ${Pe(a.fair)} ${a.grade}`),n.addEventListener("click",c=>{c.stopPropagation(),u.market?.open("item",a.skin)})}draw(e,t){if(e.querySelector(`.${Ke}`)?.remove(),!t)return;let o=document.createElement("div"),n=e.querySelector(".estimate-badge");o.className=n?`${n.className} ${Ke}`:`${Ke} kuteFloating`;let r=s.askOf(e),i="";if(r!==null&&t.fair>0){let a=r/t.fair-1,l="";a<=-.1&&t.confidence>=40?l="kuteDeal":a>=.25&&(l="kuteOver");let c=Math.round(Math.abs(a)*100);i=`${a<0?"\u2212":"+"}${c}%`}o.innerHTML=`K ${Pe(t.fair)}${S(t.grade)}${i}`,o.title=`Kute fair value ${Pe(t.fair)} kr, evidence score ${t.confidence}/100, public-market activity grade ${t.grade}`+(t.privateTrading?.trades7d?`, ${t.privateTrading.trades7d} reported private trades this week`:"")+(t.exchange?.status==="applied"?", includes private exchange evidence":"")+(r!==null?`, this ask ${it(r/t.fair-1)} against it`:"")+". Click for the item in Kute Market",o.addEventListener("click",a=>{a.stopPropagation(),a.preventDefault(),u.market?.open("item",t.skin)}),n?n.after(o):e.append(o)}},Sy=new Yl,hr=Sy});var Um,jm=w(()=>{Um='
              '});var Gm={};A(Gm,{default:()=>mr});var $y,Jl,Cy,mr,Zl=w(()=>{"use strict";xe();Ve();pe();jm();$y=1200,Jl=class s{constructor(){this.timer=void 0,this.lastKey="",this.retryAt=0,this.failures=0,this.generation=0,this.busy=!1,this.expanded=!1,this.dismiss=e=>{let t=this.box?.shadowRoot?.querySelector("details");if(t?.open){if(e instanceof KeyboardEvent){if(e.key!=="Escape")return;e.preventDefault(),e.stopPropagation(),t.querySelector("summary")?.focus()}else if(e.target instanceof Node&&this.box?.contains(e.target))return;t.open=!1,this.expanded=!1}},this.box=null}start(){this.timer===void 0&&(this.timer=window.setInterval(()=>this.tick(),$y),window.addEventListener("pointerdown",this.dismiss,!0),window.addEventListener("keydown",this.dismiss,!0))}stop(){clearInterval(this.timer),this.timer=void 0,this.generation++,window.removeEventListener("pointerdown",this.dismiss,!0),window.removeEventListener("keydown",this.dismiss,!0),this.clear()}clear(){this.box?.remove(),this.box=null,this.lastKey="",this.expanded=!1}static kr(e){let t=/([\d,.]+)/.exec(e.replace(/[~\s]/g,""));return t&&Number(t[1].replace(/,/g,""))||0}static row(e,t){let o=e.parentElement;for(;o&&!o.contains(t);)o=o.parentElement;return o&&o!==document.body?o:null}snapshot(){let e=[...document.querySelectorAll(".trade-window .trade-side")].filter(d=>d.getClientRects().length);if(e.length>=2){let d=s.row(e[0],e[1]);if(!d)return null;let h=f=>[...f.querySelectorAll(".trade-offer-scroll .trade-inv-item")].map(g=>{let b=g.getAttribute("data-index"),v=b!==null&&/^\d+$/.test(b)?Number(b):-1,k=g.querySelector("img")?.getAttribute("src")??"",E={skin:v,count:s.kr(g.querySelector(".trade-item-count")?.textContent??"1")||1};v<0&&(E.path=/\/textures\/previews\/([^?#]+)/.exec(k)?.[1]??"");for(let[L,x]of[["serial","data-serial"],["wear","data-wear-float"],["style","data-style"]]){let $=g.getAttribute(x);$!==null&&$!==""&&Number.isFinite(Number($))&&(E[L]=Number($))}return E}),p=h(e[0]),m=h(e[1]);return{give:p,get:m,giveKr:0,getKr:0,anchor:d,key:JSON.stringify([p,m])}}let t=[document.getElementById("tradeList0"),document.getElementById("tradeList1")];if(!t[0]?.getClientRects().length||!t[1]?.getClientRects().length)return null;let o=s.row(t[0],t[1]);if(!o)return null;let n=d=>[...d.querySelectorAll("[id^='trd_']")].flatMap(h=>{let p=/^trd_(?:sel_)?\d+_(\d+)(?:_\d+)?$/.exec(h.id);return p?[{skin:Number(p[1]),count:s.kr(h.querySelector(".tItemCnt")?.textContent??"1")||1}]:[]}),r=d=>Math.max(0,s.kr(document.getElementById(`currency_item_${d}_1`)?.querySelector(".tCurrencyAmount")?.textContent??"0")),i=n(t[0]),a=n(t[1]),l=r(0),c=r(1);return{give:i,get:a,giveKr:l,getKr:c,anchor:o,key:JSON.stringify([i,a,l,c])}}current(e,t){if(this.timer===void 0||t!==this.generation||document.pointerLockElement||document.hidden)return!1;let o=this.snapshot();return o?.anchor===e.anchor&&o.key===e.key}async tick(){if(this.busy||this.timer===void 0||document.pointerLockElement||document.hidden)return;this.busy=!0;let{generation:e}=this;try{let t=this.snapshot();if(!t){this.clear();return}if(Date.now()p.skin<0&&p.path).map(p=>p.path),r=n.length?await W.valuesByThumbnails(n):{};if(!this.current(t,e))return;let i=p=>p.map(({path:m,...f})=>({...f,skin:f.skin<0?r[m??""]?.skin??-1:f.skin})),a=i(t.give),l=i(t.get);if([...a,...l].some(p=>p.skin<0)){this.render(t,null,"An item could not be identified. A complete comparison is unavailable.");return}let c=await W.analyzeStatus({give:a,get:l,giveKr:t.giveKr,getKr:t.getKr}),d=c.data;if(d?(this.failures=0,this.retryAt=0):(this.failures++,this.retryAt=c.status===429?c.retryAt??Date.now()+6e4:Date.now()+Math.min(6e4,5e3*2**(this.failures-1)),this.lastKey=""),!this.current(t,e))return;let h=c.status===429?`Request limit reached. Estimates resume after ${new Date(this.retryAt).toLocaleTimeString()}.`:"Estimates unavailable. Retrying with a longer delay.";this.render(t,d,h)}finally{this.busy=!1}}render(e,t,o){this.box||(this.box=document.createElement("div"),this.box.className="kuteTradeBox",this.box.style.cssText="all:initial;display:block;box-sizing:border-box;width:100%;min-width:0;margin:0 0 10px;",this.box.attachShadow({mode:"open"}).innerHTML=Um);let n=this.box.shadowRoot?.querySelector(".panel");if(!n)return;n.className=`panel${e.give.length||e.get.length||e.giveKr||e.getKr?" filled":""}`,this.expanded=n.querySelector("details")?.open??this.expanded;let r='
              Kute trade insight';if(!t)r+=`

              ${S(o)}

              `;else{let i=!e.give.length&&!e.giveKr||!e.get.length&&!e.getKr,a=[...t.give.items,...t.get.items].some(f=>f.unknown),l=Us(t.verdict),c=i?"Add items on both sides to compare":jt[l].detail,d=jt[l].label;a&&(d="Incomplete comparison"),i&&(d="Add both sides"),r+=`${c}`;let h=(f,g)=>{let b=f.items.reduce((k,E)=>k+E.count,0),v=f.items.some(k=>k.unknown);return`
              ${g}${Pe(f.value)}${v?"+":""} KR${b} ${b===1?"item":"items"}${f.kr?` + ${Pe(f.kr)} KR`:""} · ${v?"Partial estimate":"Estimated value"}
              `},p=i||a?'–Incomplete comparison':`${t.difference>0?"+":""}${Pe(t.difference)} KR${S(it(t.differenceShare))} of the larger side`;r+=`
              ${h(t.give,"You give")}
              ${d}${p}
              ${h(t.get,"You receive")}
              `;let m=(f,g)=>`

              ${g}

              ${f.items.map(b=>`
              ${b.count>1?`${b.count} × `:""}${S(b.name)}${b.serial!==void 0?` #${S(b.serial)}`:""}${b.wear!==void 0?` · wear ${b.wear.toFixed(4)}`:""}${b.unknown?"":`${S(b.grade)}`}${b.unknown?"Unvalued":`${Pe(b.lineValue)} KR`}
              `).join("")}${f.kr?`
              Added KR${Pe(f.kr)} KR
              `:""}${!f.items.length&&!f.kr?'No items added':""}
              `;r+=`Item breakdown & evidenceHide item breakdown & evidence
              ${m(t.give,"You give")}${m(t.get,"You receive")}
              • Estimates describe market data, not guaranteed sale prices. Activity grades do not guarantee a selling time.
              • ${t.drivers.filter(f=>!f.startsWith("Liquidity adjustments")).map(f=>`
              • ${S(f)}
              • `).join("")}
              `}n.innerHTML=r,this.box.nextElementSibling!==e.anchor&&e.anchor.before(this.box)}},Cy=new Jl,mr=Cy});var Vm={};A(Vm,{readWatchlist:()=>Se,saveWatchlist:()=>wo,toggleWatch:()=>Ql});function Se(){try{let s=JSON.parse(localStorage.getItem(Wm)??"[]");if(!Array.isArray(s))return[];let e=new Set;return s.filter(t=>!t||!Number.isInteger(t.skin)||t.skin<0||e.has(t.skin)||typeof t.name!="string"?!1:(e.add(t.skin),!0)).slice(0,100).map(t=>({skin:t.skin,name:t.name,rarity:Number.isInteger(t.rarity)?t.rarity:void 0,thumbnail:typeof t.thumbnail=="string"?t.thumbnail:null,target:Number.isFinite(t.target)&&t.target>0?t.target:null}))}catch{return[]}}function wo(s){try{return localStorage.setItem(Wm,JSON.stringify(s.slice(0,100))),window.dispatchEvent(new Event("kute-market-watch-changed")),!0}catch{return!1}}function Ql(s){let e=Se(),t=e.some(o=>o.skin===s.skin);return!t&&e.length>=100?!1:wo(t?e.filter(o=>o.skin!==s.skin):[...e,{skin:s.skin,name:s.name,rarity:s.rarity,thumbnail:s.thumbnail??null,target:null}])}var Wm,Ut=w(()=>{"use strict";Wm="kute_market_watch"});var Zm={};A(Zm,{UNREAD_EVENT:()=>Ws,default:()=>$t});var My,Ty,Ym,Xm,Jm,Ws,Ay,ec,Ly,$t,fr=w(()=>{"use strict";D();It();xe();Ut();Ve();My=5*6e4,Ty=3*36e5,Ym="kute_market_alerts",Xm="kute_market_watch_report",Jm="kute_market_alerts_unread",Ws="kute-market-alerts-unread",Ay=2*36e5,ec=class{constructor(){this.timer=0,this.busy=!1,this.seen=new Map;try{let e=JSON.parse(localStorage.getItem(Ym)??"[]");if(Array.isArray(e))for(let[t,o]of e.slice(0,100))Number.isInteger(t)&&Number.isFinite(o?.target)&&typeof o?.reached=="boolean"&&this.seen.set(t,o)}catch{this.seen.clear()}this.unread=new Set;try{let e=JSON.parse(localStorage.getItem(Jm)??"[]");if(Array.isArray(e))for(let t of e.slice(0,100))Number.isInteger(t)&&this.unread.add(t)}catch{this.unread.clear()}this.onChange=()=>{this.check(),this.report()}}start(){this.timer||(this.timer=window.setInterval(()=>{this.check()},My),window.addEventListener("kute-market-watch-changed",this.onChange),this.check(),this.report())}async report(){if(!this.active())return;let e=Se().map(n=>n.skin).sort((n,r)=>n-r),t=e.join(","),o={};try{o=JSON.parse(localStorage.getItem(Xm)??"{}")??{}}catch{}if(!(o.key===t&&Date.now()-(o.at??0)o.target!==null);for(let o of this.seen.keys())e.some(n=>n.skin===o)||this.seen.delete(o);this.save();let t=this.unread.size;for(let o of this.unread)e.some(n=>n.skin===o)||this.unread.delete(o);if(this.unread.size!==t&&this.saveUnread(),!!e.length){this.busy=!0;try{let o=await W.values(e.map(i=>i.skin));if(!this.active())return;let n=Se(),r=[];for(let i of e){if(i.target===null||!n.some(d=>d.skin===i.skin&&d.target===i.target))continue;let a=o[i.skin];if(!a||!a.bookAt||!a.valuedAt||Date.now()-Math.min(a.bookAt,a.valuedAt)>Ty||a.lowest===null)continue;let l=a.lowest<=i.target,c=this.seen.get(i.skin);l&&(!c?.reached||c.target!==i.target)&&(r.push({name:i.name,price:a.lowest}),this.unread.add(i.skin)),this.seen.set(i.skin,{target:i.target,reached:l})}if(r.length){this.saveUnread();let i=r[0],a=r.length>1?` and ${r.length-1} more`:"";u.showNotification(`Watchlist: ${i.name} at ${Pe(i.price)} KR${a}. Observed ask reached your target.`,!1,8)}this.save()}catch{}finally{this.busy=!1}}}},Ly=new ec,$t=Ly});var ef={};A(ef,{contributedItem:()=>tc,contributedSale:()=>sc,contributedTrade:()=>oc});function Vs(s){let e=s;if(typeof e=="string")try{e=JSON.parse(e)}catch{return null}return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function tc(s){let e=typeof s=="number"?{ind:s}:Vs(s);if(!e)return null;let t=e.ind??e.skinindex??e.skin_index??e.i??e.index,o=e.count??e.cnt??e.c??1;if(!ht(t)||!ht(o,1)||o>1e4)return null;let n=Vs(e.m??e.metadata??e.meta)??{},r={skin:t,count:o};for(let i of["serial","wear","style","paint","instance"]){let a=e[i]??n[i];if(a!=null){if(i==="wear"?typeof a!="number"||!Number.isFinite(a)||a<0||a>1:!ht(a))return null;r[i]=a}}return r}function Qm(s){if(typeof s=="number")return ht(s)?[{id:1,amount:s}]:null;if(!Array.isArray(s)||s.length>64)return null;let e=new Map;for(let t of s){let o=Vs(t);if(!o||!ht(o.cid,1)||typeof o.amt!="number"||!Number.isFinite(o.amt)||o.amt<0||o.amt>1e9||o.cid===1&&!ht(o.amt))return null;let n=(e.get(o.cid)??0)+o.amt;if(!Number.isFinite(n)||n>1e9)return null;e.set(o.cid,n)}return[...e].filter(([,t])=>t>0).map(([t,o])=>({id:t,amount:o}))}function oc(s,e){let t=Vs(s);if(!t||!ht(t.trid,1,Number.MAX_SAFE_INTEGER)||t.status&&t.status!=="completed")return null;let o=Date.parse(t.dte??t.date??"");if(!Number.isFinite(o)||oe||!Array.isArray(t.sksell)||!Array.isArray(t.skbuy)||t.sksell.length+t.skbuy.length>40)return null;let n=t.sksell.map(tc),r=t.skbuy.map(tc);if([...n,...r].some(l=>!l)||!n.length&&!r.length)return null;let i=Qm(t.csell??[]),a=Qm(t.cbuy??[]);return!i||!a?null:{trid:t.trid,at:o,context:"history",give:n,get:r,giveCurrencies:i,getCurrencies:a,giveKr:i.find(l=>l.id===1)?.amount??0,getKr:a.find(l=>l.id===1)?.amount??0}}function sc(s,e){let t=Vs(s);if(!t||t.status!=="completed"||!ht(t.marketid,1,Number.MAX_SAFE_INTEGER)||!ht(t.skinindex)||!ht(t.amount,1))return null;let o=Date.parse(t.date);return!Number.isFinite(o)||oe||!["buy","sell"].includes(t.type)?null:{marketid:t.marketid,type:t.type,skinindex:t.skinindex,amount:t.amount,date:new Date(o).toISOString()}}var ht,nc=w(()=>{"use strict";ht=(s,e=0,t=1e9)=>typeof s=="number"&&Number.isSafeInteger(s)&&s>=e&&s<=t});var nf={};A(nf,{default:()=>gr});function tf(s){let e=2166136261,t=84696351;for(let o=0;o>>0,t=Math.imul(t^s.charCodeAt(o),16777619)>>>0;return e.toString(36)+t.toString(36)}function Ry(){try{let s=JSON.parse(localStorage.getItem(of)??"[]");return new Set(Array.isArray(s)?s.filter(e=>typeof e=="string").slice(-sf):[])}catch{return new Set}}var of,sf,rc,Py,gr,ic=w(()=>{"use strict";D();It();xe();nc();of="kute_market_sent",sf=2e3;rc=class{constructor(){this.running=!1,this.generation=0,this.nextPostAt=0,this.failures=0,this.account="",this.queue=new Map,this.sent=Ry(),this.timer=void 0,this.controller=null,this.listings=new Map,this.openTrades=new Map,this.seen=new Set,this.listener=e=>this.receive(e)}start(){this.running||!u.hostFeatures?.includes("history-capture")||(this.running=!0,this.generation++,window.chrome.webview.addEventListener("message",this.listener))}stop(){this.running&&window.chrome.webview.removeEventListener("message",this.listener),this.running=!1,this.generation++,clearTimeout(this.timer),this.controller?.abort(),this.controller=null,this.queue.clear(),this.forgetCaptured()}useAccount(e){this.account!==e&&(this.queue.clear(),this.forgetCaptured(),this.account=e)}forgetCaptured(){this.listings.clear(),this.openTrades.clear(),this.seen.clear()}active(){return this.running&&!document.hidden&&!document.pointerLockElement&&!he.down&&!he.offline()&&W.loggedIn()}currentAccount(){try{return localStorage.getItem("krunker_username")??""}catch{return""}}current(e,t){return this.active()&&e===this.generation&&t===this.currentAccount()}receive(e){let t=null;try{t=typeof e.data=="string"?JSON.parse(e.data):e.data}catch{return}if(u.hostFeatures?.includes("market-capture")){t?.marketCapture&&this.captured(t.marketCapture);return}let o=t?.marketHistory;!o||o.kind!=="sales"&&o.kind!=="trades"||this.capture(o.data,o.kind)}captured(e){if(typeof e.path!="string"||e.data?.error)return;let t=e.path.split(/[?#]/)[0],o=e.data?.data;if(e.method==="GET"){if(t==="/market/history")this.capture(e.data,"sales");else if(t==="/trades/history"){if(Array.isArray(o?.open)){this.openTrades.clear();for(let i of o.open.slice(0,100))Number.isSafeInteger(i?.trid)&&this.openTrades.set(i.trid,i)}this.capture(e.data,"trades")}else t==="/market/listings"&&Array.isArray(o?.listings)&&this.listed(o.listings);return}if(e.method!=="POST")return;if(t==="/market/purchase"){let i=this.listings.get(o?.mid);if(i&&i.skin===o?.skn){let a={marketid:o.mid,type:"buy",date:new Date().toISOString(),skinindex:o.skn,amount:i.price,status:"completed"};this.capture({history:[a]},"sales")}return}let n=/^\/trades\/(\d+)\/accept$/.exec(t),r=n&&this.openTrades.get(Number(n[1]));r&&this.capture({completed:[r]},"trades")}listed(e){if(this.active()){this.useAccount(this.currentAccount());for(let t of e.slice(0,200))!Number.isSafeInteger(t?.marketid)||!Number.isSafeInteger(t?.skinindex)||!Number.isSafeInteger(t?.funds)||(this.listings.delete(t.marketid),this.listings.set(t.marketid,{skin:t.skinindex,price:t.funds}),this.seen.size<200&&this.seen.add(t.skinindex));for(;this.listings.size>3e3;)this.listings.delete(this.listings.keys().next().value??0);this.schedule()}}capture(e,t){if(!this.active()||e?.error)return;let o=this.currentAccount(),n=e?.data??e,r=t==="trades"?n?.completed:n?.history;if(!Array.isArray(r))return;this.useAccount(o);let i=Date.now();for(let a of r.slice(0,500)){let l=t==="trades"?oc(a,i):sc(a,i);if(!l)continue;let c=t+JSON.stringify(l);this.sent.has(tf(`${o} -${c}`))||this.queue.set(c,{kind:t,row:l})}for(;this.queue.size>300;)this.queue.delete(this.queue.keys().next().value??"");this.schedule()}schedule(){if(clearTimeout(this.timer),!this.running||!this.queue.size&&!this.seen.size)return;let e=Math.max(100,this.nextPostAt-Date.now(),W.retryAt-Date.now());this.timer=window.setTimeout(()=>{this.flush()},e)}async flush(){if(!this.running||this.controller||!this.queue.size&&!this.seen.size)return;if(this.account!==this.currentAccount()){this.queue.clear(),this.seen.clear();return}if(!this.active()||Date.now()sf;)this.sent.delete(this.sent.values().next().value??"");try{localStorage.setItem(of,JSON.stringify([...this.sent]))}catch{}this.failures=0}catch{e===this.generation&&(this.failures++,this.nextPostAt=Date.now()+Math.min(6e4,5e3*2**Math.min(this.failures-1,4)))}finally{this.controller===i&&(this.controller=null,this.schedule())}}},Py=new rc,gr=Py});var rf={};A(rf,{DISCOVERY_TABS:()=>br,TITLES:()=>Ys});var Ys,br,vr=w(()=>{"use strict";Ys={overview:"Market",intelligence:"Discover",search:"Discover",active:"Discover",movers:"Discover",deals:"Discover",indices:"Market",watchlist:"Watchlist",portfolio:"Inventory",analyze:"Trade",help:"How it works",item:"Item overview"},br=["search","active","deals","movers","intelligence"]});var af={};A(af,{element:()=>Fo,html:()=>P,markup:()=>Xs});function Fo(s,e,...t){let o=Object.entries(e).filter(([,r])=>r!==!1&&r!==null).map(([r,i])=>i===!0?` ${r}`:` ${r}="${S(String(i))}"`).join(""),n=t.map(r=>typeof r=="object"?r.html:S(String(r))).join("");return`<${s}${o}>${n}`}var Xs,P,_e=w(()=>{"use strict";pe();Xs=s=>({html:s});P=(s,...e)=>s.reduce((t,o,n)=>t+String(e[n-1])+o)});var cf={};A(cf,{itemDesk:()=>ac,marketDesk:()=>lc});function ac(s){let e=s.analytics;if(!e)return'

              Advanced analytics unavailable

              This server does not yet provide the detailed metrics for this item.

              ';let{book:t}=e,o=!!t.observedAt&&Date.now()-t.observedAt<=3*36e5,n=a=>e.latest!==null&&a!==null?`${ae(e.latest/a-1)} latest daily mean vs average`:"Needs consecutive daily sale prices",{position:r}=e.range90,i=t.ladder.length?`
              ${t.ladder.map(a=>``).join("")}
              Ask ceilingListingsTotal asks / KR
              ${T(a.price)} KR${a.premium?`Within +${Math.round(a.premium*100)}% of lowest`:"At the lowest ask"}
              ${a.count}
              ${T(a.kr)}
              `:'

              The next successful book observation will populate the ask ladder.

              ';return`
              ADVANCED / TRADING DESK

              Price, activity & supply

              Completed daily means through ${S(e.throughDay)} UTC. ${e.observedDays30} of 30 days have observed sale prices.

              Descriptive analytics
              Sale-price return / 7D ${ae(e.change7d)}30D ${ae(e.change30d)}Latest daily mean ${Js(e.latest)}
              ${ne("Sales-weighted price / 30D",Js(e.weightedPrice30),e.weightedPrice30===null?"No completed sale-price observations":`${ae(e.estimateVsWeighted)} Kute estimate vs benchmark`)}${ne("Simple moving average / 7D",Js(e.sma7),n(e.sma7))}${ne("Simple moving average / 30D",Js(e.sma30),n(e.sma30))}${ne("RSI / 14 periods",Qs(e.rsi14),e.rsi14===null?`Needs 15 consecutive priced days; ${e.consecutiveDays} available`:"Wilder smoothing of daily sale means; scale 0 to 100")}${ne("Daily volatility / 30D",Gt(e.dailyVolatility30),`${e.returnPairs30} adjacent daily returns; needs 10; not annualized`)}${ne("Max drawdown / 90D",Gt(e.maxDrawdown90),`${e.observedDays90} priced days; gaps can hide larger declines`)}${ne("Range position / 90D",Gt(r),e.range90.low!==null?`${T(e.range90.low)} to ${T(e.range90.high)} KR in daily means`:"Needs at least 5 observed price days")}${ne("Reported turnover / 30D",Js(e.turnover30d),"Daily mean price multiplied by units sold")}

              Activity & supply pressure

              Supply ${lf(e.statsAt)}
              `+Zs("Weekly sales",e.reportedDays7?`${T(e.sales7d)} units`:"No reports",`${e.priorReportedDays7?T(e.priorSales7d):"No reports"} in the prior week; reports on ${e.reportedDays7}/7 and ${e.priorReportedDays7}/7 days`)+Zs("Relative weekly volume",Qs(e.activityRatio,"x"),"Latest 7 days / prior 7; requires reports for both full weeks")+Zs("Listed supply / daily sales",Qs(e.daysListedAtRecentPace," days"),"Reported listings / recent daily sales; a supply ratio, not time to sell")+Zs("Circulating supply listed",Gt(e.listedShare),`${T(e.reportedListed)} reported listed / ${T(e.circulation)} circulating`)+Zs("30D turnover / circulation",Gt(e.turnoverShare),"Reported units sold / current supply; an item can trade more than once")+'

              Ask-side depth ladder

              '+lf(t.observedAt)+"
              "+(o?"":'

              This book needs a fresh observation. The ladder describes the stored sample.

              ')+i+`

              Cumulative counts in ${t.sampled} sampled listings; ${e.reportedListed} reported listed. These rows overlap. ${t.belowEstimate} sampled asks are below the Kute estimate.

              Largest observed seller${t.sellers} identified sellers; identity available for ${t.knownSellerListings}/${t.sampled} listings
              ${Gt(t.largestSellerShare)}
              Read the metrics

              All technical indicators use completed daily average sale prices, not exchange closing prices or individual transactions. Moving averages require every day in their window. RSI resets at a missing price day; a flat sequence is shown as 50. A high or low RSI describes past momentum and does not establish a buy or sell signal.

              Volatility is the sample standard deviation of log returns between adjacent observed days. Drawdown is the largest observed peak-to-trough decline. The sales-weighted benchmark weights each daily mean by its reported sale count. Missing days are excluded, never treated as zero-price trades.

              The ladder contains asking prices only. We have no bid book, so it cannot measure bid/ask spread, execution slippage, or buyer demand. Supply ratios require a supply observation within 24 hours. These metrics do not enable unvalidated forecasts.

              `}function lc(s){let e=s.diagnostics,t=s.breadth;return!e||!t?"":`
              ADVANCED / MARKET DIAGNOSTICS

              How broad is the move?

              ${t.eligible} eligible items
              ${ne("Advance / decline ratio",Qs(e.advanceDeclineRatio,"x"),`${t.rising} rising / ${t.falling} falling; 0.5% movement threshold`)}${ne("Median item return / 7D",ae(e.medianChange),"Equal item weighting among eligible estimates")}${ne("Middle half of returns",`${ae(e.lowerQuartile)} to ${ae(e.upperQuartile)}`,"25th to 75th percentile; dispersion across items")}${ne("Top 10 turnover share",Gt(e.top10VolumeShare),"Concentration of 30D KR turnover in eligible items")}
              ${(s.categories??[]).map(o=>``).join("")}
              CategoryEligible7D medianRising / falling30D KR turnoverTurnover share
              ${S(Et[o.type]??"Other")}${o.items}${ae(o.change)}${o.rising??"?"} / ${o.falling??"?"}${T(o.volume)}${Gt(e.eligibleVolume>0?o.volume/e.eligibleVolume:null)}

              Coverage: ${t.eligible} of ${T(t.total)} tradable items. Requires a sales-based estimate updated within 24 hours, at least 5 sales in 7 days, and a measured 7D trend. Turnover shares describe this eligible set, not the entire market. Price changes use Kute estimates.

              `}var Qs,Gt,Js,lf,Zs,wr=w(()=>{"use strict";pe();Ve();Qs=(s,e="")=>s==null?"Unavailable":s.toFixed(1)+e,Gt=s=>s==null?"Unavailable":Qs(s*100,"%"),Js=s=>s==null?"Unavailable":`${T(s)} KR`,lf=s=>s?`${We(Math.max(0,Date.now()-s))} ago`:"freshness unknown",Zs=(s,e,t)=>`
              ${s}${t}
              ${e}
              `});var uf={};A(uf,{overviewView:()=>cc});async function cc(s){let[e,t]=await Promise.all([W.cached("/market/overview",5*df),W.cached("/market/indices",60*df)]);if(!e)return s.unavailable();let o=new Date().toISOString().slice(0,10),n=e.days.filter(m=>m.daym.name==="kute-100"),l=Se().slice(0,4),c=l.length?await W.values(l.map(m=>m.skin)):{},d=l.length?P` +`,Cy=".item-detail-container, .items-detail-root",Zl="kuteDetailBtn",My=5e3,Ql=class s{constructor(){this.timer=void 0,this.busy=!1,this.pick=null,this.onPick=e=>{if(document.pointerLockElement||!(e.target instanceof Element))return;let t=e.target.closest("[id^='trd_'], .trade-inv-item[data-index]");if(!t)return;let o=/^trd_(?:sel_|inv_)?\d+_(\d+)/.exec(t.id),n=o?o[1]:t.getAttribute("data-index");if(n===null||!/^\d+$/.test(n))return;let r=t.querySelector(".tItemN")?.textContent?.trim()??"";this.pick={skin:Number(n),name:r,at:Date.now()}}}start(){if(this.timer===void 0){if(!document.getElementById(Gm)){let e=document.createElement("style");e.id=Gm,e.textContent=$y,document.head.append(e)}this.timer=window.setInterval(()=>this.tick(),Sy),document.addEventListener("pointerdown",this.onPick,!0)}}stop(){clearInterval(this.timer),this.timer=void 0,document.removeEventListener("pointerdown",this.onPick,!0),this.pick=null;for(let e of document.querySelectorAll(`.${_e}, .${Zl}`))e.remove();for(let e of document.querySelectorAll(`[${ko}]`))e.removeAttribute(ko)}static thumbPath(e){let t=/\/textures\/previews\/([^?#]+)/.exec(e);return t?t[1]:null}static askOf(e){let t=e.querySelector(".inline-price");if(t){let o=Number((t.textContent??"").replace(/[^\d.]/g,""));return Number.isFinite(o)&&o>0?o:null}for(let o of e.querySelectorAll("span, div")){if(o.classList.contains(_e)||o.children.length)continue;let n=o.textContent?.trim()??"";if(/^~/.test(n))continue;let r=/^([\d,.]+)\s*KR$/i.exec(n)??/^([\d,.]+)$/.exec(n);if(r&&o.closest(".estimate-badge")===null){let i=Number(r[1].replace(/,/g,""));if(Number.isFinite(i)&&i>0)return i}}return null}async tick(){if(this.busy||document.pointerLockElement)return;let e=document.querySelector(Cy),t=e?.getAttribute("aria-label")??"1";e&&e.getAttribute(ko)!==t&&(e.setAttribute(ko,t),e.querySelector(`.${Zl}`)?.remove(),await this.detailButton(e,t));let o=[...document.querySelectorAll(Ey)].filter(n=>!n.hasAttribute(ko));if(o.length){this.busy=!0;try{let n=new Map;for(let i of o){i.setAttribute(ko,"1");let a=i.querySelector("img"),l=a instanceof HTMLImageElement?s.thumbPath(a.currentSrc||a.src):null;if(!l)continue;let c=n.get(l)??[];c.push(i),n.set(l,c)}if(!n.size)return;let r=await W.valuesByThumbnails([...n.keys()]);for(let[i,a]of n){let l=r[i];for(let c of a)c.isConnected&&this.draw(c,l??null)}}finally{this.busy=!1}}}async detailValue(e,t){let{pick:o}=this;if(o&&Date.now()-o.atc.name.toLowerCase()===t.toLowerCase())??[];return l.length===1?l[0]:null}async detailButton(e,t){let o=e.querySelector(".full-details-container, .items-detail-header-actions");if(!o)return;let n=document.createElement("button");n.type="button";let r=o.querySelector("button");n.className=`${r?.className??""} ${Zl}`.trim();let i=r?.querySelector("i")?.className??"material-icons";n.innerHTML=`candlestick_chart Kute Market`,n.title="K value, liquidity, price history, depth and owners in Kute Market",o.append(n);let a=await this.detailValue(e,t);if(!a||e.getAttribute(ko)!==t){n.remove();return}let l=n.querySelector("span");l&&(l.textContent=Wt(a)?"Kute Market \xB7 no price data":`Kute Market \xB7 K ${Re(a.fair)} ${a.grade}`),n.addEventListener("click",c=>{c.stopPropagation(),u.market?.open("item",a.skin)})}draw(e,t){if(e.querySelector(`.${_e}`)?.remove(),!t)return;let o=document.createElement("div"),n=e.querySelector(".estimate-badge");o.className=n?`${n.className} ${_e}`:`${_e} kuteFloating`;let r=s.askOf(e);if(Wt(t))o.innerHTML='K no data',o.title=`Kute has no price evidence for this item: no sale, trade or listing it could see. ${t.method==="floor"?"The game's quick-sell floor":"Krunker's estimate"} is ${Re(t.fair)} kr, and such items are often worth far more. Click for the item in Kute Market`;else{let i="";if(r!==null&&t.fair>0){let a=r/t.fair-1,l="";a<=-.1&&t.confidence>=40?l="kuteDeal":a>=.25&&(l="kuteOver");let c=Math.round(Math.abs(a)*100);i=`${a<0?"\u2212":"+"}${c}%`}o.innerHTML=`K ${Re(t.fair)}${S(t.grade)}${i}`,o.title=`Kute fair value ${Re(t.fair)} kr, evidence score ${t.confidence}/100, public-market activity grade ${t.grade}`+(t.privateTrading?.trades7d?`, ${t.privateTrading.trades7d} reported private trades this week`:"")+(t.exchange?.status==="applied"?", includes private exchange evidence":"")+(r!==null?`, this ask ${it(r/t.fair-1)} against it`:"")+". Click for the item in Kute Market"}o.addEventListener("click",i=>{i.stopPropagation(),i.preventDefault(),u.market?.open("item",t.skin)}),n?n.after(o):e.append(o)}},Ty=new Ql,fr=Ty});var Ym,Vm=w(()=>{Ym='
              '});var Xm={};A(Xm,{default:()=>gr});var Ly,tc,Ry,gr,oc=w(()=>{"use strict";xe();Ve();pe();Vm();Ly=1200,tc=class s{constructor(){this.timer=void 0,this.lastKey="",this.retryAt=0,this.failures=0,this.generation=0,this.busy=!1,this.expanded=!1,this.dismiss=e=>{let t=this.box?.shadowRoot?.querySelector("details");if(t?.open){if(e instanceof KeyboardEvent){if(e.key!=="Escape")return;e.preventDefault(),e.stopPropagation(),t.querySelector("summary")?.focus()}else if(e.target instanceof Node&&this.box?.contains(e.target))return;t.open=!1,this.expanded=!1}},this.box=null,this.chatList=null}placed(e){return e.slot?e.slot.firstElementChild===this.box:this.box?.nextElementSibling===e.anchor}start(){this.timer===void 0&&(this.timer=window.setInterval(()=>this.tick(),Ly),window.addEventListener("pointerdown",this.dismiss,!0),window.addEventListener("keydown",this.dismiss,!0))}stop(){clearInterval(this.timer),this.timer=void 0,this.generation++,window.removeEventListener("pointerdown",this.dismiss,!0),window.removeEventListener("keydown",this.dismiss,!0),this.clear()}clear(){this.box?.remove(),this.box=null,this.chatList&&(this.chatList.style.maxHeight=""),this.chatList=null,this.lastKey="",this.expanded=!1}static kr(e){let t=/([\d,.]+)/.exec(e.replace(/[~\s]/g,""));return t&&Number(t[1].replace(/,/g,""))||0}static row(e,t){let o=e.parentElement;for(;o&&!o.contains(t);)o=o.parentElement;return o&&o!==document.body?o:null}snapshot(){let e=[...document.querySelectorAll(".trade-window .trade-side")].filter(p=>p.getClientRects().length);if(e.length>=2){let p=s.row(e[0],e[1]);if(!p)return null;let m=b=>[...b.querySelectorAll(".trade-offer-scroll .trade-inv-item")].map(v=>{let k=v.getAttribute("data-index"),E=k!==null&&/^\d+$/.test(k)?Number(k):-1,L=v.querySelector("img")?.getAttribute("src")??"",y={skin:E,count:s.kr(v.querySelector(".trade-item-count")?.textContent??"1")||1};E<0&&(y.path=/\/textures\/previews\/([^?#]+)/.exec(L)?.[1]??"");for(let[C,I]of[["serial","data-serial"],["wear","data-wear-float"],["style","data-style"]]){let _=v.getAttribute(I);_!==null&&_!==""&&Number.isFinite(Number(_))&&(y[C]=Number(_))}return y}),f=m(e[0]),g=m(e[1]);return{give:f,get:g,giveKr:0,getKr:0,anchor:p,key:JSON.stringify([f,g])}}let t=[document.getElementById("tradeList0"),document.getElementById("tradeList1")];if(!t[0]?.getClientRects().length||!t[1]?.getClientRects().length)return null;let o=s.row(t[0],t[1]);if(!o)return null;let n=p=>[...p.querySelectorAll("[id^='trd_']")].flatMap(m=>{let f=/^trd_(?:sel_)?\d+_(\d+)(?:_\d+)?$/.exec(m.id);return f?[{skin:Number(f[1]),count:s.kr(m.querySelector(".tItemCnt")?.textContent??"1")||1}]:[]}),r=p=>Math.max(0,s.kr(document.getElementById(`currency_item_${p}_1`)?.querySelector(".tCurrencyAmount")?.textContent??"0")),i=n(t[0]),a=n(t[1]),l=r(0),c=r(1),d=document.getElementById("tradeChatHolder"),h=d?.getClientRects().length?d:null;return{give:i,get:a,giveKr:l,getKr:c,anchor:o,slot:h,key:JSON.stringify([i,a,l,c])}}current(e,t){if(this.timer===void 0||t!==this.generation||document.pointerLockElement||document.hidden)return!1;let o=this.snapshot();return o?.anchor===e.anchor&&o.key===e.key}async tick(){if(this.busy||this.timer===void 0||document.pointerLockElement||document.hidden)return;this.busy=!0;let{generation:e}=this;try{let t=this.snapshot();if(!t){this.clear();return}if(Date.now()p.skin<0&&p.path).map(p=>p.path),r=n.length?await W.valuesByThumbnails(n):{};if(!this.current(t,e))return;let i=p=>p.map(({path:m,...f})=>({...f,skin:f.skin<0?r[m??""]?.skin??-1:f.skin})),a=i(t.give),l=i(t.get);if([...a,...l].some(p=>p.skin<0)){this.render(t,null,"An item could not be identified. A complete comparison is unavailable.");return}let c=await W.analyzeStatus({give:a,get:l,giveKr:t.giveKr,getKr:t.getKr}),d=c.data;if(d?(this.failures=0,this.retryAt=0):(this.failures++,this.retryAt=c.status===429?c.retryAt??Date.now()+6e4:Date.now()+Math.min(6e4,5e3*2**(this.failures-1)),this.lastKey=""),!this.current(t,e))return;let h=c.status===429?`Request limit reached. Estimates resume after ${new Date(this.retryAt).toLocaleTimeString()}.`:"Estimates unavailable. Retrying with a longer delay.";this.render(t,d,h)}finally{this.busy=!1}}render(e,t,o){this.box||(this.box=document.createElement("div"),this.box.className="kuteTradeBox",this.box.style.cssText="all:initial;display:block;box-sizing:border-box;width:100%;min-width:0;margin:0 0 10px;container-type:inline-size;",this.box.attachShadow({mode:"open"}).innerHTML=Ym);let n=this.box.shadowRoot?.querySelector(".panel");if(!n)return;n.className=`panel${e.give.length||e.get.length||e.giveKr||e.getKr?" filled":""}`,this.expanded=n.querySelector("details")?.open??this.expanded;let r='
              Kute trade insight';if(!t)r+=`

              ${S(o)}

              `;else{let i=!e.give.length&&!e.giveKr||!e.get.length&&!e.getKr,a=[...t.give.items,...t.get.items].some(f=>f.unknown),l=Ws(t.verdict),c=i?"Add items on both sides to compare":Gt[l].detail,d=Gt[l].label;a&&(d="Incomplete comparison"),i&&(d="Add both sides"),r+=`${c}`;let h=(f,g)=>{let b=f.items.reduce((k,E)=>k+E.count,0),v=f.items.some(k=>k.unknown);return`
              ${g}${Re(f.value)}${v?"+":""} KR${b} ${b===1?"item":"items"}${f.kr?` + ${Re(f.kr)} KR`:""} · ${v?"Partial estimate":"Estimated value"}
              `},p=i||a?'–Incomplete comparison':`${t.difference>0?"+":""}${Re(t.difference)} KR${S(it(t.differenceShare))} of the larger side`;r+=`
              ${h(t.give,"You give")}
              ${d}${p}
              ${h(t.get,"You receive")}
              `;let m=(f,g)=>`

              ${g}

              ${f.items.map(b=>`
              ${b.count>1?`${b.count} × `:""}${S(b.name)}${b.serial!==void 0?` #${S(b.serial)}`:""}${b.wear!==void 0?` · wear ${b.wear.toFixed(4)}`:""}${b.unknown?"":`${S(b.grade)}`}${b.unknown?"Unvalued":`${Re(b.lineValue)} KR`}
              `).join("")}${f.kr?`
              Added KR${Re(f.kr)} KR
              `:""}${!f.items.length&&!f.kr?'No items added':""}
              `;r+=`Item breakdown & evidenceHide item breakdown & evidence
              ${m(t.give,"You give")}${m(t.get,"You receive")}
              • Estimates describe market data, not guaranteed sale prices. Activity grades do not guarantee a selling time.
              • ${t.drivers.filter(f=>!f.startsWith("Liquidity adjustments")).map(f=>`
              • ${S(f)}
              • `).join("")}
              `}if(n.innerHTML=r,e.slot){this.placed(e)||e.slot.prepend(this.box),this.chatList=document.getElementById("tradeChatList");let i=document.getElementById("tradeChatInput");this.chatList&&(this.chatList.style.maxHeight=`${Math.max(80,e.slot.clientHeight-this.box.offsetHeight-(i?.offsetHeight??0)-20)}px`)}else this.placed(e)||e.anchor.before(this.box)}},Ry=new tc,gr=Ry});var Zm={};A(Zm,{readWatchlist:()=>Se,saveWatchlist:()=>yo,toggleWatch:()=>sc});function Se(){try{let s=JSON.parse(localStorage.getItem(Jm)??"[]");if(!Array.isArray(s))return[];let e=new Set;return s.filter(t=>!t||!Number.isInteger(t.skin)||t.skin<0||e.has(t.skin)||typeof t.name!="string"?!1:(e.add(t.skin),!0)).slice(0,100).map(t=>({skin:t.skin,name:t.name,rarity:Number.isInteger(t.rarity)?t.rarity:void 0,thumbnail:typeof t.thumbnail=="string"?t.thumbnail:null,target:Number.isFinite(t.target)&&t.target>0?t.target:null}))}catch{return[]}}function yo(s){try{return localStorage.setItem(Jm,JSON.stringify(s.slice(0,100))),window.dispatchEvent(new Event("kute-market-watch-changed")),!0}catch{return!1}}function sc(s){let e=Se(),t=e.some(o=>o.skin===s.skin);return!t&&e.length>=100?!1:yo(t?e.filter(o=>o.skin!==s.skin):[...e,{skin:s.skin,name:s.name,rarity:s.rarity,thumbnail:s.thumbnail??null,target:null}])}var Jm,Vt=w(()=>{"use strict";Jm="kute_market_watch"});var of={};A(of,{UNREAD_EVENT:()=>Ys,default:()=>Ct});var Py,Iy,Qm,ef,tf,Ys,Ny,nc,_y,Ct,br=w(()=>{"use strict";F();Nt();xe();Vt();Ve();Py=5*6e4,Iy=3*36e5,Qm="kute_market_alerts",ef="kute_market_watch_report",tf="kute_market_alerts_unread",Ys="kute-market-alerts-unread",Ny=2*36e5,nc=class{constructor(){this.timer=0,this.busy=!1,this.seen=new Map;try{let e=JSON.parse(localStorage.getItem(Qm)??"[]");if(Array.isArray(e))for(let[t,o]of e.slice(0,100))Number.isInteger(t)&&Number.isFinite(o?.target)&&typeof o?.reached=="boolean"&&this.seen.set(t,o)}catch{this.seen.clear()}this.unread=new Set;try{let e=JSON.parse(localStorage.getItem(tf)??"[]");if(Array.isArray(e))for(let t of e.slice(0,100))Number.isInteger(t)&&this.unread.add(t)}catch{this.unread.clear()}this.onChange=()=>{this.check(),this.report()}}start(){this.timer||(this.timer=window.setInterval(()=>{this.check()},Py),window.addEventListener("kute-market-watch-changed",this.onChange),this.check(),this.report())}async report(){if(!this.active())return;let e=Se().map(n=>n.skin).sort((n,r)=>n-r),t=e.join(","),o={};try{o=JSON.parse(localStorage.getItem(ef)??"{}")??{}}catch{}if(!(o.key===t&&Date.now()-(o.at??0)o.target!==null);for(let o of this.seen.keys())e.some(n=>n.skin===o)||this.seen.delete(o);this.save();let t=this.unread.size;for(let o of this.unread)e.some(n=>n.skin===o)||this.unread.delete(o);if(this.unread.size!==t&&this.saveUnread(),!!e.length){this.busy=!0;try{let o=await W.values(e.map(i=>i.skin));if(!this.active())return;let n=Se(),r=[];for(let i of e){if(i.target===null||!n.some(d=>d.skin===i.skin&&d.target===i.target))continue;let a=o[i.skin];if(!a||!a.bookAt||!a.valuedAt||Date.now()-Math.min(a.bookAt,a.valuedAt)>Iy||a.lowest===null)continue;let l=a.lowest<=i.target,c=this.seen.get(i.skin);l&&(!c?.reached||c.target!==i.target)&&(r.push({name:i.name,price:a.lowest}),this.unread.add(i.skin)),this.seen.set(i.skin,{target:i.target,reached:l})}if(r.length){this.saveUnread();let i=r[0],a=r.length>1?` and ${r.length-1} more`:"";u.showNotification(`Watchlist: ${i.name} at ${Re(i.price)} KR${a}. Observed ask reached your target.`,!1,8)}this.save()}catch{}finally{this.busy=!1}}}},_y=new nc,Ct=_y});var rf={};A(rf,{contributedItem:()=>rc,contributedSale:()=>ac,contributedTrade:()=>ic});function Xs(s){let e=s;if(typeof e=="string")try{e=JSON.parse(e)}catch{return null}return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function rc(s){let e=typeof s=="number"?{ind:s}:Xs(s);if(!e)return null;let t=e.ind??e.skinindex??e.skin_index??e.i??e.index,o=e.count??e.cnt??e.c??1;if(!mt(t)||!mt(o,1)||o>1e4)return null;let n=Xs(e.m??e.metadata??e.meta)??{},r={skin:t,count:o};for(let i of["serial","wear","style","paint","instance"]){let a=e[i]??n[i];if(a!=null){if(i==="wear"?typeof a!="number"||!Number.isFinite(a)||a<0||a>1:!mt(a))return null;r[i]=a}}return r}function sf(s){if(typeof s=="number")return mt(s)?[{id:1,amount:s}]:null;if(!Array.isArray(s)||s.length>64)return null;let e=new Map;for(let t of s){let o=Xs(t);if(!o||!mt(o.cid,1)||typeof o.amt!="number"||!Number.isFinite(o.amt)||o.amt<0||o.amt>1e9||o.cid===1&&!mt(o.amt))return null;let n=(e.get(o.cid)??0)+o.amt;if(!Number.isFinite(n)||n>1e9)return null;e.set(o.cid,n)}return[...e].filter(([,t])=>t>0).map(([t,o])=>({id:t,amount:o}))}function ic(s,e){let t=Xs(s);if(!t||!mt(t.trid,1,Number.MAX_SAFE_INTEGER)||t.status&&t.status!=="completed")return null;let o=nf(t.dte??t.date);if(!Number.isFinite(o)||oe||!Array.isArray(t.sksell)||!Array.isArray(t.skbuy)||t.sksell.length+t.skbuy.length>40)return null;let n=t.sksell.map(rc),r=t.skbuy.map(rc);if([...n,...r].some(l=>!l)||!n.length&&!r.length)return null;let i=sf(t.csell??[]),a=sf(t.cbuy??[]);return!i||!a?null:{trid:t.trid,at:o,context:"history",give:n,get:r,giveCurrencies:i,getCurrencies:a,giveKr:i.find(l=>l.id===1)?.amount??0,getKr:a.find(l=>l.id===1)?.amount??0}}function ac(s,e){let t=Xs(s);if(!t||t.status!=="completed"||!mt(t.marketid,1,Number.MAX_SAFE_INTEGER)||!mt(t.skinindex)||!mt(t.amount,1))return null;let o=nf(t.date);return!Number.isFinite(o)||oe||!["buy","sell"].includes(t.type)?null:{marketid:t.marketid,type:t.type,skinindex:t.skinindex,amount:t.amount,date:new Date(o).toISOString()}}var mt,nf,lc=w(()=>{"use strict";mt=(s,e=0,t=1e9)=>typeof s=="number"&&Number.isSafeInteger(s)&&s>=e&&s<=t,nf=s=>typeof s=="string"?Date.parse(/^\d{4}-\d\d-\d\d \d\d:\d\d(:\d\d)?$/.test(s)?`${s.replace(" ","T")}Z`:s):NaN});var df={};A(df,{default:()=>vr});function af(s){let e=2166136261,t=84696351;for(let o=0;o>>0,t=Math.imul(t^s.charCodeAt(o),16777619)>>>0;return e.toString(36)+t.toString(36)}function By(){try{let s=JSON.parse(localStorage.getItem(lf)??"[]");return new Set(Array.isArray(s)?s.filter(e=>typeof e=="string").slice(-cf):[])}catch{return new Set}}var lf,cf,cc,zy,vr,dc=w(()=>{"use strict";F();Nt();xe();lc();lf="kute_market_sent",cf=2e3;cc=class{constructor(){this.running=!1,this.generation=0,this.nextPostAt=0,this.failures=0,this.account="",this.queue=new Map,this.sent=By(),this.timer=void 0,this.controller=null,this.listings=new Map,this.openTrades=new Map,this.seen=new Set,this.listener=e=>this.receive(e)}start(){this.running||!u.hostFeatures?.includes("history-capture")||(this.running=!0,this.generation++,window.chrome.webview.addEventListener("message",this.listener))}stop(){this.running&&window.chrome.webview.removeEventListener("message",this.listener),this.running=!1,this.generation++,clearTimeout(this.timer),this.controller?.abort(),this.controller=null,this.queue.clear(),this.forgetCaptured()}useAccount(e){this.account!==e&&(this.queue.clear(),this.forgetCaptured(),this.account=e)}forgetCaptured(){this.listings.clear(),this.openTrades.clear(),this.seen.clear()}active(){return this.running&&!document.hidden&&!document.pointerLockElement&&!he.down&&!he.offline()&&W.loggedIn()}currentAccount(){try{return localStorage.getItem("krunker_username")??""}catch{return""}}current(e,t){return this.active()&&e===this.generation&&t===this.currentAccount()}receive(e){let t=null;try{t=typeof e.data=="string"?JSON.parse(e.data):e.data}catch{return}if(u.hostFeatures?.includes("market-capture")){t?.marketCapture&&this.captured(t.marketCapture);return}let o=t?.marketHistory;!o||o.kind!=="sales"&&o.kind!=="trades"||this.capture(o.data,o.kind)}captured(e){if(typeof e.path!="string"||e.data?.error)return;let t=e.path.split(/[?#]/)[0],o=e.data?.data;if(e.method==="GET"){if(t==="/market/history")this.capture(e.data,"sales");else if(t==="/trades/history"){if(Array.isArray(o?.open)){this.openTrades.clear();for(let i of o.open.slice(0,100))Number.isSafeInteger(i?.trid)&&this.openTrades.set(i.trid,i)}this.capture(e.data,"trades")}else t==="/market/listings"&&Array.isArray(o?.listings)&&this.listed(o.listings);return}if(e.method!=="POST")return;if(t==="/market/purchase"){let i=this.listings.get(o?.mid);if(i&&i.skin===o?.skn){let a={marketid:o.mid,type:"buy",date:new Date().toISOString(),skinindex:o.skn,amount:i.price,status:"completed"};this.capture({history:[a]},"sales")}return}let n=/^\/trades\/(\d+)\/accept$/.exec(t),r=n&&this.openTrades.get(Number(n[1]));r&&this.capture({completed:[r]},"trades")}listed(e){if(this.active()){this.useAccount(this.currentAccount());for(let t of e.slice(0,200))!Number.isSafeInteger(t?.marketid)||!Number.isSafeInteger(t?.skinindex)||!Number.isSafeInteger(t?.funds)||(this.listings.delete(t.marketid),this.listings.set(t.marketid,{skin:t.skinindex,price:t.funds}),this.seen.size<200&&this.seen.add(t.skinindex));for(;this.listings.size>3e3;)this.listings.delete(this.listings.keys().next().value??0);this.schedule()}}capture(e,t){if(!this.active()||e?.error)return;let o=this.currentAccount(),n=e?.data??e,r=t==="trades"?n?.completed:n?.history;if(!Array.isArray(r))return;this.useAccount(o);let i=Date.now();for(let a of r.slice(0,500)){let l=t==="trades"?ic(a,i):ac(a,i);if(!l)continue;let c=t+JSON.stringify(l);this.sent.has(af(`${o} +${c}`))||this.queue.set(c,{kind:t,row:l})}for(;this.queue.size>300;)this.queue.delete(this.queue.keys().next().value??"");this.schedule()}schedule(){if(clearTimeout(this.timer),!this.running||!this.queue.size&&!this.seen.size)return;let e=Math.max(100,this.nextPostAt-Date.now(),W.retryAt-Date.now());this.timer=window.setTimeout(()=>{this.flush()},e)}async flush(){if(!this.running||this.controller||!this.queue.size&&!this.seen.size)return;if(this.account!==this.currentAccount()){this.queue.clear(),this.seen.clear();return}if(!this.active()||Date.now()cf;)this.sent.delete(this.sent.values().next().value??"");try{localStorage.setItem(lf,JSON.stringify([...this.sent]))}catch{}this.failures=0}catch{e===this.generation&&(this.failures++,this.nextPostAt=Date.now()+Math.min(6e4,5e3*2**Math.min(this.failures-1,4)))}finally{this.controller===i&&(this.controller=null,this.schedule())}}},zy=new cc,vr=zy});var uf={};A(uf,{DISCOVERY_TABS:()=>wr,TITLES:()=>Js});var Js,wr,kr=w(()=>{"use strict";Js={overview:"Market",intelligence:"Discover",search:"Discover",active:"Discover",movers:"Discover",deals:"Discover",indices:"Market",watchlist:"Watchlist",portfolio:"Inventory",analyze:"Trade",help:"How it works",item:"Item overview"},wr=["search","active","deals","movers","intelligence"]});var pf={};A(pf,{element:()=>Ko,html:()=>P,markup:()=>Zs});function Ko(s,e,...t){let o=Object.entries(e).filter(([,r])=>r!==!1&&r!==null).map(([r,i])=>i===!0?` ${r}`:` ${r}="${S(String(i))}"`).join(""),n=t.map(r=>typeof r=="object"?r.html:S(String(r))).join("");return`<${s}${o}>${n}`}var Zs,P,Be=w(()=>{"use strict";pe();Zs=s=>({html:s});P=(s,...e)=>s.reduce((t,o,n)=>t+String(e[n-1])+o)});var mf={};A(mf,{itemDesk:()=>uc,marketDesk:()=>pc});function uc(s){let e=s.analytics;if(!e)return'

              Advanced analytics unavailable

              This server does not yet provide the detailed metrics for this item.

              ';let{book:t}=e,o=!!t.observedAt&&Date.now()-t.observedAt<=3*36e5,n=a=>e.latest!==null&&a!==null?`${ae(e.latest/a-1)} latest daily mean vs average`:"Needs consecutive daily sale prices",{position:r}=e.range90,i=t.ladder.length?`
              ${t.ladder.map(a=>``).join("")}
              Ask ceilingListingsTotal asks / KR
              ${T(a.price)} KR${a.premium?`Within +${Math.round(a.premium*100)}% of lowest`:"At the lowest ask"}
              ${a.count}
              ${T(a.kr)}
              `:'

              The next successful book observation will populate the ask ladder.

              ';return`
              ADVANCED / TRADING DESK

              Price, activity & supply

              Completed daily means through ${S(e.throughDay)} UTC. ${e.observedDays30} of 30 days have observed sale prices.

              Descriptive analytics
              Sale-price return / 7D ${ae(e.change7d)}30D ${ae(e.change30d)}Latest daily mean ${Qs(e.latest)}
              ${ne("Sales-weighted price / 30D",Qs(e.weightedPrice30),e.weightedPrice30===null?"No completed sale-price observations":`${ae(e.estimateVsWeighted)} Kute estimate vs benchmark`)}${ne("Simple moving average / 7D",Qs(e.sma7),n(e.sma7))}${ne("Simple moving average / 30D",Qs(e.sma30),n(e.sma30))}${ne("RSI / 14 periods",tn(e.rsi14),e.rsi14===null?`Needs 15 consecutive priced days; ${e.consecutiveDays} available`:"Wilder smoothing of daily sale means; scale 0 to 100")}${ne("Daily volatility / 30D",Yt(e.dailyVolatility30),`${e.returnPairs30} adjacent daily returns; needs 10; not annualized`)}${ne("Max drawdown / 90D",Yt(e.maxDrawdown90),`${e.observedDays90} priced days; gaps can hide larger declines`)}${ne("Range position / 90D",Yt(r),e.range90.low!==null?`${T(e.range90.low)} to ${T(e.range90.high)} KR in daily means`:"Needs at least 5 observed price days")}${ne("Reported turnover / 30D",Qs(e.turnover30d),"Daily mean price multiplied by units sold")}

              Activity & supply pressure

              Supply ${hf(e.statsAt)}
              `+en("Weekly sales",e.reportedDays7?`${T(e.sales7d)} units`:"No reports",`${e.priorReportedDays7?T(e.priorSales7d):"No reports"} in the prior week; reports on ${e.reportedDays7}/7 and ${e.priorReportedDays7}/7 days`)+en("Relative weekly volume",tn(e.activityRatio,"x"),"Latest 7 days / prior 7; requires reports for both full weeks")+en("Listed supply / daily sales",tn(e.daysListedAtRecentPace," days"),"Reported listings / recent daily sales; a supply ratio, not time to sell")+en("Circulating supply listed",Yt(e.listedShare),`${T(e.reportedListed)} reported listed / ${T(e.circulation)} circulating`)+en("30D turnover / circulation",Yt(e.turnoverShare),"Reported units sold / current supply; an item can trade more than once")+'

              Ask-side depth ladder

              '+hf(t.observedAt)+"
              "+(o?"":'

              This book needs a fresh observation. The ladder describes the stored sample.

              ')+i+`

              Cumulative counts in ${t.sampled} sampled listings; ${e.reportedListed} reported listed. These rows overlap. ${t.belowEstimate} sampled asks are below the Kute estimate.

              Largest observed seller${t.sellers} identified sellers; identity available for ${t.knownSellerListings}/${t.sampled} listings
              ${Yt(t.largestSellerShare)}
              Read the metrics

              All technical indicators use completed daily average sale prices, not exchange closing prices or individual transactions. Moving averages require every day in their window. RSI resets at a missing price day; a flat sequence is shown as 50. A high or low RSI describes past momentum and does not establish a buy or sell signal.

              Volatility is the sample standard deviation of log returns between adjacent observed days. Drawdown is the largest observed peak-to-trough decline. The sales-weighted benchmark weights each daily mean by its reported sale count. Missing days are excluded, never treated as zero-price trades.

              The ladder contains asking prices only. We have no bid book, so it cannot measure bid/ask spread, execution slippage, or buyer demand. Supply ratios require a supply observation within 24 hours. These metrics do not enable unvalidated forecasts.

              `}function pc(s){let e=s.diagnostics,t=s.breadth;return!e||!t?"":`
              ADVANCED / MARKET DIAGNOSTICS

              How broad is the move?

              ${t.eligible} eligible items
              ${ne("Advance / decline ratio",tn(e.advanceDeclineRatio,"x"),`${t.rising} rising / ${t.falling} falling; 0.5% movement threshold`)}${ne("Median item return / 7D",ae(e.medianChange),"Equal item weighting among eligible estimates")}${ne("Middle half of returns",`${ae(e.lowerQuartile)} to ${ae(e.upperQuartile)}`,"25th to 75th percentile; dispersion across items")}${ne("Top 10 turnover share",Yt(e.top10VolumeShare),"Concentration of 30D KR turnover in eligible items")}
              ${(s.categories??[]).map(o=>``).join("")}
              CategoryEligible7D medianRising / falling30D KR turnoverTurnover share
              ${S($t[o.type]??"Other")}${o.items}${ae(o.change)}${o.rising??"?"} / ${o.falling??"?"}${T(o.volume)}${Yt(e.eligibleVolume>0?o.volume/e.eligibleVolume:null)}

              Coverage: ${t.eligible} of ${T(t.total)} tradable items. Requires a sales-based estimate updated within 24 hours, at least 5 sales in 7 days, and a measured 7D trend. Turnover shares describe this eligible set, not the entire market. Price changes use Kute estimates.

              `}var tn,Yt,Qs,hf,en,yr=w(()=>{"use strict";pe();Ve();tn=(s,e="")=>s==null?"Unavailable":s.toFixed(1)+e,Yt=s=>s==null?"Unavailable":tn(s*100,"%"),Qs=s=>s==null?"Unavailable":`${T(s)} KR`,hf=s=>s?`${We(Math.max(0,Date.now()-s))} ago`:"freshness unknown",en=(s,e,t)=>`
              ${s}${t}
              ${e}
              `});var gf={};A(gf,{overviewView:()=>hc});async function hc(s){let[e,t]=await Promise.all([W.cached("/market/overview",5*ff),W.cached("/market/indices",60*ff)]);if(!e)return s.unavailable();let o=new Date().toISOString().slice(0,10),n=e.days.filter(m=>m.daym.name==="kute-100"),l=Se().slice(0,4),c=l.length?await W.values(l.map(m=>m.skin)):{},d=l.length?P`
              ${l.map(m=>{let f=c[m.skin];return P` @@ -322,11 +323,11 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
              ${s.compactList(e.active??[])} - `,points:n.map(m=>({t:Date.parse(m.day+"T00:00:00Z"),values:[m.volume]})),series:[{label:"KR traded",color:"#f580b4"}]}}var df,dc=w(()=>{"use strict";_e();xe();pe();Ut();wr();df=6e4});var pf={};A(pf,{default:()=>qo,itemSearch:()=>ko});var ko,qo,Ko=w(()=>{"use strict";xe();pe();ko=(s,e,t,o="")=>`
              `,qo=class{constructor(e,t,o,n,r){this.root=e,this.select=o,this.browse=n,this.holdings=r,this.input=null,this.list=null,this.items=[],this.active=-1,this.sequence=0,this.timer=0,e.addEventListener("input",i=>{i.target instanceof HTMLInputElement&&i.target.dataset.itemSearch&&this.search(i.target)},{signal:t}),e.addEventListener("focusin",i=>{i.target!==this.input&&!(i.target instanceof Element&&this.list?.contains(i.target))&&this.dismiss()},{signal:t}),e.addEventListener("pointerdown",i=>{i.target instanceof Element&&(this.list?.contains(i.target)?i.preventDefault():i.target!==this.input&&this.dismiss())},{signal:t}),e.addEventListener("click",i=>{let a=i.target instanceof Element?i.target.closest("[data-suggestion],[data-search-all]"):null;if(!(!(a instanceof HTMLElement)||!this.list?.contains(a)))if(a.dataset.suggestion!==void 0)this.choose(Number(a.dataset.suggestion));else{let l=this.input?.value.trim()??"",c=this.input?.dataset.itemSearch??"global";this.dismiss(),this.browse(l,c)}},{signal:t}),t.addEventListener("abort",()=>this.dismiss(),{once:!0})}dismiss(){clearTimeout(this.timer),this.sequence++,this.list&&(this.list.hidden=!0),this.input?.setAttribute("aria-expanded","false"),this.input?.removeAttribute("aria-activedescendant"),this.input=null,this.list=null,this.items=[],this.active=-1}search(e){this.dismiss();let t=e.value.trim();if(!t)return;let o=this.root.getElementById(`${e.id}List`);if(!o)return;this.input=e,this.list=o,o.hidden=!1,o.innerHTML=`
              Searching items...
              `,e.setAttribute("aria-expanded","true");let{sequence:n}=this;this.timer=window.setTimeout(async()=>{let r=null;try{e.dataset.itemSearch==="holdings"?r=this.holdings().filter(c=>c.name.toLocaleLowerCase().includes(t.toLocaleLowerCase())):r=(await W.cached(`/market/search?q=${encodeURIComponent(t)}&sort=volume&page=1`,6e4))?.items??null}catch{r=null}if(n!==this.sequence||!e.isConnected||e.value.trim()!==t)return;this.items=r?.slice(0,8)??[];let i=e.dataset.itemSearch,a=i==="holdings"?"Your holdings":"All items",l=i==="give"||i==="get"?"Add":"Open";o.innerHTML=`
              ${a}${l} an item
              ${this.items.map((c,d)=>``).join("")}
              ${!r||!r.length?`
              ${r?"No matching items":"Search unavailable. Try typing again."}
              `:""}${i==="global"||i==="discover"?'':""}`},250)}choose(e){let t=this.items[e],o=this.input?.dataset.itemSearch;!t||!o||(this.dismiss(),this.select(t,o))}key(e){if(e.isComposing)return!1;let t=this.root.activeElement;if(!(t instanceof HTMLInputElement)||!t.dataset.itemSearch)return!1;if(e.key==="Tab")return this.dismiss(),!1;if(e.key==="Escape"&&this.input)return this.dismiss(),e.preventDefault(),!0;if(e.key==="Enter"&&this.active>=0)return this.choose(this.active),e.preventDefault(),!0;if(e.key!=="ArrowDown"&&e.key!=="ArrowUp")return!1;if(e.preventDefault(),this.input!==t)return this.search(t),!0;if(!this.items.length)return!0;let o=this.active+(e.key==="ArrowDown"?1:-1);this.active<0&&e.key==="ArrowUp"&&(o=this.items.length-1),this.active=(o+this.items.length)%this.items.length,this.list?.querySelectorAll("[data-suggestion]").forEach((r,i)=>r.setAttribute("aria-selected",String(i===this.active)));let n=`${t.id}Option${this.active}`;return t.setAttribute("aria-activedescendant",n),this.root.getElementById(n)?.scrollIntoView({block:"nearest"}),!0}}});var hf={};A(hf,{searchView:()=>uc});async function uc(s){let e=s.searchState(),t=new URLSearchParams({sort:e.sort,page:String(e.page)});for(let[i,a]of Object.entries({q:e.q,rarity:e.rarity,type:e.type,budget:e.budget,[s.tab==="active"?"min_activity":"min_sales"]:e.minSales}))a!==""&&t.set(i,a);let o=await W.cached(`/market/search?${t}`,Iy);if(!o)return s.unavailable();let n=(i,a)=>i.map((l,c)=>P` + `,points:n.map(m=>({t:Date.parse(m.day+"T00:00:00Z"),values:[m.volume]})),series:[{label:"KR traded",color:"#f580b4"}]}}var ff,mc=w(()=>{"use strict";Be();xe();pe();Vt();yr();ff=6e4});var bf={};A(bf,{default:()=>jo,itemSearch:()=>xo});var xo,jo,Uo=w(()=>{"use strict";xe();pe();xo=(s,e,t,o="")=>`
              `,jo=class{constructor(e,t,o,n,r){this.root=e,this.select=o,this.browse=n,this.holdings=r,this.input=null,this.list=null,this.items=[],this.active=-1,this.sequence=0,this.timer=0,e.addEventListener("input",i=>{i.target instanceof HTMLInputElement&&i.target.dataset.itemSearch&&this.search(i.target)},{signal:t}),e.addEventListener("focusin",i=>{i.target!==this.input&&!(i.target instanceof Element&&this.list?.contains(i.target))&&this.dismiss()},{signal:t}),e.addEventListener("pointerdown",i=>{i.target instanceof Element&&(this.list?.contains(i.target)?i.preventDefault():i.target!==this.input&&this.dismiss())},{signal:t}),e.addEventListener("click",i=>{let a=i.target instanceof Element?i.target.closest("[data-suggestion],[data-search-all]"):null;if(!(!(a instanceof HTMLElement)||!this.list?.contains(a)))if(a.dataset.suggestion!==void 0)this.choose(Number(a.dataset.suggestion));else{let l=this.input?.value.trim()??"",c=this.input?.dataset.itemSearch??"global";this.dismiss(),this.browse(l,c)}},{signal:t}),t.addEventListener("abort",()=>this.dismiss(),{once:!0})}dismiss(){clearTimeout(this.timer),this.sequence++,this.list&&(this.list.hidden=!0),this.input?.setAttribute("aria-expanded","false"),this.input?.removeAttribute("aria-activedescendant"),this.input=null,this.list=null,this.items=[],this.active=-1}search(e){this.dismiss();let t=e.value.trim();if(!t)return;let o=this.root.getElementById(`${e.id}List`);if(!o)return;this.input=e,this.list=o,o.hidden=!1,o.innerHTML=`
              Searching items...
              `,e.setAttribute("aria-expanded","true");let{sequence:n}=this;this.timer=window.setTimeout(async()=>{let r=null;try{e.dataset.itemSearch==="holdings"?r=this.holdings().filter(c=>c.name.toLocaleLowerCase().includes(t.toLocaleLowerCase())):r=(await W.cached(`/market/search?q=${encodeURIComponent(t)}&sort=volume&page=1`,6e4))?.items??null}catch{r=null}if(n!==this.sequence||!e.isConnected||e.value.trim()!==t)return;this.items=r?.slice(0,8)??[];let i=e.dataset.itemSearch,a=i==="holdings"?"Your holdings":"All items",l=i==="give"||i==="get"?"Add":"Open";o.innerHTML=`
              ${a}${l} an item
              ${this.items.map((c,d)=>``).join("")}
              ${!r||!r.length?`
              ${r?"No matching items":"Search unavailable. Try typing again."}
              `:""}${i==="global"||i==="discover"?'':""}`},250)}choose(e){let t=this.items[e],o=this.input?.dataset.itemSearch;!t||!o||(this.dismiss(),this.select(t,o))}key(e){if(e.isComposing)return!1;let t=this.root.activeElement;if(!(t instanceof HTMLInputElement)||!t.dataset.itemSearch)return!1;if(e.key==="Tab")return this.dismiss(),!1;if(e.key==="Escape"&&this.input)return this.dismiss(),e.preventDefault(),!0;if(e.key==="Enter"&&this.active>=0)return this.choose(this.active),e.preventDefault(),!0;if(e.key!=="ArrowDown"&&e.key!=="ArrowUp")return!1;if(e.preventDefault(),this.input!==t)return this.search(t),!0;if(!this.items.length)return!0;let o=this.active+(e.key==="ArrowDown"?1:-1);this.active<0&&e.key==="ArrowUp"&&(o=this.items.length-1),this.active=(o+this.items.length)%this.items.length,this.list?.querySelectorAll("[data-suggestion]").forEach((r,i)=>r.setAttribute("aria-selected",String(i===this.active)));let n=`${t.id}Option${this.active}`;return t.setAttribute("aria-activedescendant",n),this.root.getElementById(n)?.scrollIntoView({block:"nearest"}),!0}}});var vf={};A(vf,{searchView:()=>fc});async function fc(s){let e=s.searchState(),t=new URLSearchParams({sort:e.sort,page:String(e.page)});for(let[i,a]of Object.entries({q:e.q,rarity:e.rarity,type:e.type,budget:e.budget,[s.tab==="active"?"min_activity":"min_sales"]:e.minSales}))a!==""&&t.set(i,a);let o=await W.cached(`/market/search?${t}`,Hy);if(!o)return s.unavailable();let n=(i,a)=>i.map((l,c)=>P` `).join(""),r=Math.max(1,Math.ceil(o.total/o.perPage));return{asOf:o.asOf,html:s.intro(s.tab==="active"?"Find items that are trading.":"Find your next item.",s.tab==="active"?`At least ${e.minSales} public sales or reported private exchanges in seven days. Private activity is shown separately from cash-sale liquidity.`:"Browse by budget, recent activity, or the items you already have in mind.",'')+P`
              `}return n?`${e}`:t?`${e}`:""}},Tx=new eu});var uu=`@keyframes chat-moveup{0%{transform:translateY(375px)}to{transform:translateY(0)}}@keyframes death-ui-moveup{0%{transform:translateY(340px)}to{transform:translateY(0)}}.entry-info{z-index:9}#gameNameHolder{top:33px}#teamSelector{bottom:290px!important}div #setHed_local,.kuteSettings .setHed:first-of-type{margin-top:10px}.setBodH{margin-top:5px}.carousel,.onSpect #hpEnemyCounter,#settHolder div.setHed:not([id]),#newUserGuide,#phonePop,#signupRewardsButton,#streamContainer,#aHider,#adCon,#rightABox,#aContainer,#topRightAdHolder,#braveWarning,.webpush-container,.nav-notif-section+.verticalSeparator,.endAHolder{display:none!important}.death-ui-bottom{backdrop-filter:none;animation:none}#menuAccountUsername{border:0}.ranked-matchmaking-status{box-shadow:none!important}#homeStoreAdC,#menuAccountUsername,#uiBase.onDeathScrn #chatHolder,.ranked-matchmaking-status{animation:none!important}#phonePop{top:0;bottom:0}.chatItem{max-width:387px}.moreKrunkerPopup{width:600px}.moreKrunkerClient{display:none!important}#mLevelCont{background-color:transparent}.bpBtn.skip.disabled{background:#333;border-color:#444;color:#888;cursor:not-allowed;opacity:1!important}.kuteTopButtons{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 4px}.kuteTopButton{display:flex;align-items:center;justify-content:center;gap:10px;padding:8px 10px;border:3px solid var(--kute-top, #35e0e8);border-radius:4px;background:#222;color:#fff;font-size:21px;cursor:pointer;user-select:none;transition:background .1s}.kuteTopButton:hover{background:#333}.kuteTopButton .material-icons{font-size:24px}.kuteTopBlue{--kute-top: #35e0e8}.kuteTopPink{--kute-top: #f5479b}.kuteTopOrange{--kute-top: #ff8a1f}#menuWindow .kuteHiddenBanner{display:flex;align-items:center;gap:10px;margin:8px 0 4px;padding:8px 12px;border:3px solid #eb5656;border-radius:4px;background:#eb56562e;color:#fff;font-size:17px;line-height:27px}#menuWindow .kuteHiddenBanner .material-icons{color:#eb5656;font-size:26px}.kuteLegend{float:right;margin-right:8px;color:#aaa;font-size:16px}.kuteLegend span{margin-left:12px}#menuWindow .settName .kuteDesc{margin-top:2px;color:#ffffff73;font-size:15px;line-height:1.3}#menuWindow .switch input:disabled+.slider{opacity:.35;cursor:not-allowed} +`;F();Ae();fn();vn();wn();os();kn();xn();var cn=location.pathname==="/kute-bench";cn&&Promise.resolve().then(()=>(ei(),zu));!cn&&localStorage.getItem("krk_advanced")===null&&localStorage.setItem("krk_advanced","1");cn||oo();cn||Ne.then(()=>{u.settings?.data?.kuteCss===!0&&Promise.resolve().then(()=>(si(),oi)).catch(()=>{})});location.hostname==="krunker.io"&&location.pathname==="/"&&Ne.then(()=>{u.settings?.data?.accountEndMessage&&localStorage.setItem("kro_setngss_endMessage","")});var Dg=!0;window.OffCliV=!0;window.closeClient=()=>window.chrome.webview.postMessage("close");document.addEventListener("DOMContentLoaded",()=>{if(cn)return;Kr(),Promise.resolve().then(()=>cs()),Promise.resolve().then(()=>pi());let s=document.createElement("style");s.textContent=uu,document.head.append(s);let e=null;Hr(HTMLCanvasElement,"addEventListener",t=>{let[o,n]=t;o==="wheel"&&(e=n)}),window.chrome.webview.addEventListener("message",t=>{typeof t.data?.wheel=="number"&&e?.(new WheelEvent("wheel",{deltaY:t.data.wheel}))}),window.addEventListener("wheel",t=>{if(!document.pointerLockElement){for(let o of t.composedPath()){if(o===document.body||o===document.documentElement)break;if(!(o instanceof Element))continue;let n=getComputedStyle(o),r=(n.overflowY==="auto"||n.overflowY==="scroll")&&o.scrollHeight>o.clientHeight,i=(n.overflowX==="auto"||n.overflowX==="scroll")&&o.scrollWidth>o.clientWidth;if(r||i)return}t.preventDefault()}},{capture:!0,passive:!1}),document.addEventListener("input",t=>{let{target:o}=t;t instanceof InputEvent&&t.inputType==="insertText"||!(o instanceof HTMLInputElement)||o.getAttribute("onkeypress")?.includes("delayExecute")&&o.dispatchEvent(new KeyboardEvent("keypress"))},!0),Hr(HTMLCanvasElement,"requestPointerLock",function(t,o){es(),Fr(),window.chrome.webview.postMessage("drag, false"),window.chrome.webview.postMessage("throttle, game");let n=u.platform!=="linux"&&u?.settings?.data?.rawInput;return o.call(this,{...t[0],unadjustedMovement:n})}),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement?window.chrome.webview.postMessage("throttle, game"):(window.chrome.webview.postMessage("drag, true"),window.chrome.webview.postMessage("throttle, menu"))}),Ne.then(()=>{u.settings.data.hidePopularNow===!0&&(u.settings.data.hidePopularNow=!1,window.chrome.webview.postMessage("set-config, hidePopularNow, false"),u.settings.data.cleanUI=!0,window.chrome.webview.postMessage("set-config, cleanUI, true")),u.settings.data.cleanUI&&Promise.resolve().then(()=>ue(hi(),1)).then(t=>{let o=document.createElement("style");o.id="kute_cleanCSS",o.textContent=t.default,document.head.append(o)})}),Ne.then(()=>{u.settings.data.classicMenu&&Promise.resolve().then(()=>ue(mi(),1)).then(t=>{let o=document.createElement("style");o.id="kute_classicMenuCSS",o.textContent=t.default,document.head.append(o)})})},{once:!0});Object.defineProperty(window,"gameLoaded",{async set(s){if(!s||(await Ne,window.chrome.webview.postMessage("game-updated"),!Dg))return;sessionStorage.getItem("justLaunched")===null?sessionStorage.setItem("justLaunched","true"):sessionStorage.setItem("justLaunched","false"),Dg=!1,localStorage.setItem("logs","true"),U("#compBtnLst").insertAdjacentHTML("beforeend",`
              color_lens
              -
              star
              `);let e;for(let i of U("#clientExit .menuItemTitle").classList)if(i.startsWith("svelte-")){e=i;break}U("#menuItemContainer").lastElementChild?.insertAdjacentHTML("beforebegin",``);let t=document.querySelector(".whats-new-version")?.className,o=t?`class="${t}"`:'style="font-size:.7em;font-weight:700;color:rgba(255,255,255,.5)"',n=u.version?` - v${u.version}`:"";U("#clientExit").insertAdjacentHTML("beforebegin",``),Promise.resolve().then(()=>Yu()),Promise.resolve().then(()=>_g()),Promise.resolve().then(()=>Ra()),Promise.resolve().then(()=>mi()),Promise.resolve().then(()=>jl()),Promise.resolve().then(()=>Wd()),Promise.resolve().then(()=>aa()),u?.settings?.data?.clanColors!==!1&&u?.settings?.data?.disableOnlineFeatures!==!0&&Promise.resolve().then(()=>(Da(),Oa)),Promise.resolve().then(()=>ha()),Promise.resolve().then(()=>tl());let r=u.settings.data.performanceMode===!0;if(r||Promise.resolve().then(()=>(ba(),eh)),Promise.resolve().then(()=>Ai()),Promise.resolve().then(()=>ol()),Promise.resolve().then(()=>gl()),Promise.resolve().then(()=>Na()),r||Promise.resolve().then(()=>(Ud(),jd)),r||Promise.resolve().then(()=>(vd(),bd)),Promise.resolve().then(()=>hl()),Promise.resolve().then(()=>Qc()),Promise.resolve().then(()=>Po()),Promise.resolve().then(()=>Bd()),Promise.resolve().then(()=>Va()),u.recovery&&Promise.resolve().then(()=>(Md(),Cd)),Promise.resolve().then(()=>fd()),Promise.resolve().then(()=>vi()),Promise.resolve().then(()=>$l()),Promise.resolve().then(()=>sd()),Promise.resolve().then(()=>rr()),u?.settings?.data?.hsSound&&Promise.resolve().then(()=>(ll(),al)),u?.settings?.data?.betterChat&&Promise.resolve().then(()=>(ga(),fa)),u?.settings?.data?.chatLogs&&Promise.resolve().then(()=>(za(),Ba)),Promise.resolve().then(()=>ad()),Promise.resolve().then(()=>Id()),u?.settings?.data?.rankedAlert&&Promise.resolve().then(()=>(yd(),kd)),u?.settings?.data?.hpEnemyCounter&&Promise.resolve().then(()=>(rl(),nl)),u?.settings?.data?.accountManager&&Promise.resolve().then(()=>(Mi(),Ci)),u?.settings?.data?.market!==!1&&u?.settings?.data?.disableOnlineFeatures!==!0&&Promise.resolve().then(()=>($r(),Vc)).catch(()=>{}),u?.settings?.data?.showPing&&Promise.resolve().then(()=>(Od(),Hd)),u?.settings?.data?.realPing&&Promise.resolve().then(()=>(Ed(),Sd)),u?.settings?.data?.exitButton&&(U("#clientExit").style.display="flex"),Promise.resolve().then(()=>Ld()),u?.settings?.data?.spotifyOverlay&&u.hostFeatures?.includes("spotify")&&Promise.resolve().then(()=>(qd(),Fd)),u?.settings?.data?.motionBlur&&Promise.resolve().then(()=>(ud(),dd)),u?.settings?.data?.keystrokes&&Promise.resolve().then(()=>(yl(),kl)),u.hostFeatures?.includes("custom-sky")&&Promise.resolve().then(()=>(Ka(),qa)),u.hostFeatures?.includes("appimage-update")&&Promise.resolve().then(()=>(Al(),Tl)).catch(()=>{}),u?.settings?.data?.rampBoost&&!He()){Zt(!0);let i=a=>{a.data==="game-updated"&&setTimeout(()=>{He()&&(window.chrome.webview.removeEventListener("message",i),Zt(!1))},2e3)};window.chrome.webview.addEventListener("message",i)}if(u?.settings.data?.hideBundles){let i=window.bundlePopup;window.bundlePopup=(...a)=>{let l=document.querySelector("#windowHolder");l&&l.style.display!=="none"&&U("#windowHeader").textContent==="Store"&&i(...a)}}if(setTimeout(()=>{sessionStorage.getItem("justLaunched")==="true"&&u?.launchArgs&&u.parseArgs(u.launchArgs)},2e3),u?.settings.data?.autoSpec){let i=0,a=()=>{let l=window.getGameActivity();if(l.map===null){++i<600&&setTimeout(a,100);return}l.custom||window.setSpect(!0)};a()}if(u?.settings.data?.discordRPC&&window.chrome.webview.addEventListener("message",i=>{i.data==="game-updated"&&setTimeout(()=>{let a=window.getGameActivity();window.chrome.webview.postMessage(`rpc-update, ${a.mode}, ${a.map}`)},2e3)}),u?.settings.data?.textSelect){let i=document.createElement("style");i.id="kute_textSelectCSS",i.textContent="#chatHolder * { user-select: text }",document.head.append(i)}}});})(); +
              star
              `);let e;for(let i of U("#clientExit .menuItemTitle").classList)if(i.startsWith("svelte-")){e=i;break}U("#menuItemContainer").lastElementChild?.insertAdjacentHTML("beforebegin",``);let t=document.querySelector(".whats-new-version")?.className,o=t?`class="${t}"`:'style="font-size:.7em;font-weight:700;color:rgba(255,255,255,.5)"',n=u.version?` - v${u.version}`:"";U("#clientExit").insertAdjacentHTML("beforebegin",``),Promise.resolve().then(()=>Qu()),Promise.resolve().then(()=>Fg()),Promise.resolve().then(()=>Ia()),Promise.resolve().then(()=>gi()),Promise.resolve().then(()=>Gl()),Promise.resolve().then(()=>Jd()),Promise.resolve().then(()=>ca()),u?.settings?.data?.clanColors!==!1&&u?.settings?.data?.disableOnlineFeatures!==!0&&Promise.resolve().then(()=>(qa(),Da)),Promise.resolve().then(()=>fa()),Promise.resolve().then(()=>sl());let r=u.settings.data.performanceMode===!0;if(r||Promise.resolve().then(()=>(wa(),nh)),Promise.resolve().then(()=>Ri()),Promise.resolve().then(()=>nl()),Promise.resolve().then(()=>vl()),Promise.resolve().then(()=>Ba()),r||Promise.resolve().then(()=>(Yd(),Vd)),r||Promise.resolve().then(()=>(xd(),yd)),Promise.resolve().then(()=>fl()),Promise.resolve().then(()=>sd()),Promise.resolve().then(()=>No()),Promise.resolve().then(()=>Fd()),Promise.resolve().then(()=>Xa()),u.recovery&&Promise.resolve().then(()=>(Rd(),Ld)),Promise.resolve().then(()=>wd()),Promise.resolve().then(()=>ki()),Promise.resolve().then(()=>Ml()),Promise.resolve().then(()=>ad()),Promise.resolve().then(()=>ar()),u?.settings?.data?.hsSound&&Promise.resolve().then(()=>(dl(),cl)),u?.settings?.data?.betterChat&&Promise.resolve().then(()=>(va(),ba)),u?.settings?.data?.chatLogs&&Promise.resolve().then(()=>(Oa(),Ha)),Promise.resolve().then(()=>ud()),Promise.resolve().then(()=>zd()),u?.settings?.data?.rankedAlert&&Promise.resolve().then(()=>($d(),Ed)),u?.settings?.data?.hpEnemyCounter&&Promise.resolve().then(()=>(al(),il)),u?.settings?.data?.accountManager&&Promise.resolve().then(()=>(Ai(),Ti)),u?.settings?.data?.market!==!1&&u?.settings?.data?.disableOnlineFeatures!==!0&&Promise.resolve().then(()=>(Mr(),Zc)).catch(()=>{}),u?.settings?.data?.showPing&&Promise.resolve().then(()=>(Kd(),qd)),u?.settings?.data?.realPing&&Promise.resolve().then(()=>(Td(),Md)),u?.settings?.data?.exitButton&&(U("#clientExit").style.display="flex"),Promise.resolve().then(()=>Nd()),u?.settings?.data?.spotifyOverlay&&u.hostFeatures?.includes("spotify")&&Promise.resolve().then(()=>(Gd(),Ud)),u?.settings?.data?.motionBlur&&Promise.resolve().then(()=>(fd(),md)),u?.settings?.data?.keystrokes&&Promise.resolve().then(()=>(Sl(),xl)),u.hostFeatures?.includes("custom-sky")&&Promise.resolve().then(()=>(Ua(),ja)),u.hostFeatures?.includes("appimage-update")&&Promise.resolve().then(()=>(Rl(),Ll)).catch(()=>{}),u?.settings?.data?.rampBoost&&!Oe()){to(!0);let i=a=>{a.data==="game-updated"&&setTimeout(()=>{Oe()&&(window.chrome.webview.removeEventListener("message",i),to(!1))},2e3)};window.chrome.webview.addEventListener("message",i)}if(u?.settings.data?.hideBundles){let i=window.bundlePopup;window.bundlePopup=(...a)=>{let l=document.querySelector("#windowHolder");l&&l.style.display!=="none"&&U("#windowHeader").textContent==="Store"&&i(...a)}}if(setTimeout(()=>{sessionStorage.getItem("justLaunched")==="true"&&u?.launchArgs&&u.parseArgs(u.launchArgs)},2e3),u?.settings.data?.autoSpec){let i=0,a=()=>{let l=window.getGameActivity();if(l.map===null){++i<600&&setTimeout(a,100);return}l.custom||window.setSpect(!0)};a()}if(u?.settings.data?.discordRPC&&window.chrome.webview.addEventListener("message",i=>{i.data==="game-updated"&&setTimeout(()=>{let a=window.getGameActivity();window.chrome.webview.postMessage(`rpc-update, ${a.mode}, ${a.map}`)},2e3)}),u?.settings.data?.textSelect){let i=document.createElement("style");i.id="kute_textSelectCSS",i.textContent="#chatHolder * { user-select: text }",document.head.append(i)}}});})(); From 0be56ac37dc501b1dc983ad2fdfea7702d71583f Mon Sep 17 00:00:00 2001 From: "NullDev (Shadow)" Date: Fri, 23 Oct 2026 14:29:39 +0200 Subject: [PATCH 09/18] drop unrelated formatting changes in css manager --- src/frontend/modules/managers/customCss.js | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/src/frontend/modules/managers/customCss.js b/src/frontend/modules/managers/customCss.js index 10eb3e3a..28ee0d03 100644 --- a/src/frontend/modules/managers/customCss.js +++ b/src/frontend/modules/managers/customCss.js @@ -68,15 +68,12 @@ class CssManager { kute.showNotification("The CSS Manager needs a newer Kute. Update Kute to use it.", false, 6); return; } - this.legacy = !hostSupportsManager(); this.popup = openManagerPopup(html, { onMessage: (data) => this.receive(data), canClose: () => this.canClose(), }); - const { shadow, signal } = this.popup; - signal.addEventListener("abort", () => { clearTimeout(this.previewTimer); // closing without saving drops the preview @@ -92,7 +89,6 @@ class CssManager { this.activating = false; this.forceClose = false; }); - this.$("#ccFolder").onclick = () => post("reveal", { name: this.editing ?? "" }); this.$("#ccOff").hidden = kute.settings.data.customCss !== false; @@ -123,7 +119,7 @@ class CssManager { if (this.legacy){ this.$(".managerPopup").classList.add("legacy"); this.$("#ccHint").textContent = "Loaded after all of Krunker's styles, so a rule with the same selector wins. " + - "Saved as Documents\\kute\\custom.css. Update Kute to keep several CSS files and switch between them."; + "Saved as Documents\\kute\\custom.css. Update Kute to keep several CSS files and switch between them."; this.$("#ccEditor").textContent = "Loading..."; post("read"); return; @@ -131,19 +127,13 @@ class CssManager { this.$("#ccNew").onclick = () => this.create(); this.$("#ccPaste").onclick = () => this.paste(); - const input = /** @type {HTMLInputElement} */ (this.$("#ccImportInput")); this.$("#ccImport").onclick = () => input.click(); input.onchange = () => { this.importFiles([...input.files ?? []]); input.value = ""; }; - - makeDropTarget( - this.$("#ccFiles"), - (dropped) => this.importFiles(dropped.map((entry) => entry.file)), - ); - + makeDropTarget(this.$("#ccFiles"), (dropped) => this.importFiles(dropped.map((entry) => entry.file))); this.$("#ccEditor").textContent = "Loading..."; post("list"); } From c9220c5b3a3382e892c729c19dfc76ff36c6eb57 Mon Sep 17 00:00:00 2001 From: "NullDev (Shadow)" Date: Fri, 23 Oct 2026 14:31:33 +0200 Subject: [PATCH 10/18] load css store from the kute-client repo and validate its catalog --- src/frontend/modules/managers/customCss.js | 264 +++++++++++---------- 1 file changed, 138 insertions(+), 126 deletions(-) diff --git a/src/frontend/modules/managers/customCss.js b/src/frontend/modules/managers/customCss.js index 28ee0d03..49a48d96 100644 --- a/src/frontend/modules/managers/customCss.js +++ b/src/frontend/modules/managers/customCss.js @@ -21,6 +21,40 @@ const hostSupportsManager = () => kute.hostFeatures?.includes("css-manager") ?? */ const cssName = (name) => (/\.css$/i.test(name) ? name : `${name}.css`); +const STORE_BASE = "https://raw.githubusercontent.com/kute-client/kute-css-store/main/"; +const STORE_TIMEOUT = 8000; + +/** @typedef {{name: string, author: string, file: string, preview: string}} StoreItem */ + +// a ".." segment would leave the repo on raw.githubusercontent +/** + * @param {unknown} path + * @return {path is string} + */ +const storePath = (path) => typeof path === "string" && path.split("/").every((part) => part !== "" && part !== "." && part !== ".."); + +/** + * @param {string} path + * @return {string} + */ +const storeUrl = (path) => STORE_BASE + path.split("/").map(encodeURIComponent).join("/"); + +/** + * @param {any} entry + * @return {StoreItem|null} + */ +const storeItem = (entry) => { + // the host refuses these in file names + const name = typeof entry?.name === "string" ? entry.name.replace(/[\\/:*?"<>|]/g, "").trim() : ""; + if (!name || !storePath(entry.file) || !/\.css$/i.test(entry.file)) return null; + return { + name: cssName(name), + author: typeof entry.author === "string" ? entry.author : "", + file: entry.file, + preview: storePath(entry.preview) ? entry.preview : "", + }; +}; + /** * @param {string} command * @param {object} [payload] @@ -60,6 +94,12 @@ class CssManager { this.live = true; /** @type {number} */ this.previewTimer = 0; + /** @type {Map} store file name to its download button */ + this.storeButtons = new Map(); + /** @type {Set} store downloads the host has not written yet */ + this.downloading = new Set(); + this.storeLoaded = false; + this.storeRun = 0; } open(){ @@ -88,17 +128,16 @@ class CssManager { this.openAfterImport = null; this.activating = false; this.forceClose = false; + this.storeButtons.clear(); + this.downloading.clear(); + this.storeLoaded = false; + this.storeRun++; }); this.$("#ccFolder").onclick = () => post("reveal", { name: this.editing ?? "" }); this.$("#ccOff").hidden = kute.settings.data.customCss !== false; - // CSS Store this.$("#ccStore").onclick = () => this.openStore(); - - this.$("#ccStoreBack").onclick = () => { - this.$("#ccStorePanel").hidden = true; - this.$(".managerBody").classList.remove("storeOpen"); - }; + this.$("#ccStoreBack").onclick = () => this.$(".managerBody").classList.remove("storeOpen"); const live = /** @type {HTMLInputElement} */ (this.$("#ccLive")); live.checked = this.live; @@ -138,138 +177,109 @@ class CssManager { post("list"); } - async openStore(){ - const panel = this.$("#ccStorePanel"); - const list = this.$("#ccStoreList"); - + if (!this.popup) return; this.$(".managerBody").classList.add("storeOpen"); - panel.hidden = false; - list.replaceChildren(); - - const status = document.createElement("p"); - status.textContent = "Loading the CSS Store..."; - list.append(status); - + if (this.storeLoaded) return; + const run = ++this.storeRun; + const list = this.$("#ccStoreList"); + list.innerHTML = "
              Loading the CSS Store...
              "; + /** @type {StoreItem[]} */ + let items; try { - const response = await fetch( - "https://raw.githubusercontent.com/Liamoulee/KSS/main/index.json", - ); - - if (!response.ok){ - throw new Error(`HTTP ${response.status}`); - } - + const response = await fetch(storeUrl("index.json"), { signal: AbortSignal.any([this.popup.signal, AbortSignal.timeout(STORE_TIMEOUT)]) }); + if (!response.ok) throw new Error(`HTTP ${response.status}`); const catalog = await response.json(); - list.replaceChildren(); - - for (const item of catalog){ - const card = document.createElement("div"); - card.className = "storeCard"; - - if (item.preview){ - const image = document.createElement("img"); - - image.src = item.preview.startsWith("https://") - ? item.preview - : "https://raw.githubusercontent.com/Liamoulee/KSS/main/" + - item.preview.split("/").map(encodeURIComponent).join("/"); - - image.alt = `${item.name} preview`; - image.onerror = () => image.remove(); - - card.append(image); - } - - const title = document.createElement("h3"); - title.textContent = item.name; - - const author = document.createElement("p"); - author.textContent = `By ${item.author}`; - - const button = document.createElement("button"); - button.className = "storeDownloadBtn"; - - let installed = this.files.some( - file => file.name.toLowerCase() === cssName(item.name).toLowerCase(), - ); - - /** @param {string} text */ - const setButtonText = (text) => { - button.textContent = text; - }; - - setButtonText(installed ? "Already downloaded" : "Download the CSS"); - if (installed){ - button.classList.add("installed"); - button.disabled = true; - } - - button.onclick = async() => { - installed = this.files.some( - file => file.name.toLowerCase() === cssName(item.name).toLowerCase(), - ); - - if (installed){ - setButtonText("Already downloaded"); - button.classList.add("installed"); - button.disabled = true; - return; - } - - button.disabled = true; - setButtonText("Downloading..."); - - try { - const cssResponse = await fetch( - "https://raw.githubusercontent.com/Liamoulee/KSS/main/" + - item.file.split("/").map(encodeURIComponent).join("/"), - ); - - if (!cssResponse.ok){ - throw new Error(`HTTP ${cssResponse.status}`); - } - - const content = await cssResponse.text(); - - post("import", { - name: cssName(item.name), - content, - }); - - installed = true; - setButtonText("Already downloaded"); - button.classList.add("installed"); - button.disabled = true; - } - catch (error){ - console.error("CSS Store import failed:", error); - button.disabled = false; - setButtonText("Try again"); - } - }; - - card.append(title, author, button); - list.append(card); - } + if (!Array.isArray(catalog)) throw new Error("index.json is no list"); + items = /** @type {StoreItem[]} */ (catalog.map(storeItem).filter(Boolean)); + } + catch { + if (run === this.storeRun) list.innerHTML = "
              Could not load the CSS Store. Go back and open it again to retry.
              "; + return; + } + if (run !== this.storeRun) return; + this.storeLoaded = true; + this.storeButtons.clear(); + list.textContent = ""; + if (!items.length) list.innerHTML = "
              Nothing in the CSS Store yet.
              "; + for (const item of items) list.append(this.storeCard(item)); + this.refreshStore(); + } - if (catalog.length === 0){ - list.textContent = "No CSS available."; - } + /** + * @param {StoreItem} item + * @return {HTMLElement} + */ + storeCard(item){ + const card = document.createElement("div"); + card.className = "storeCard"; + const image = document.createElement("img"); + image.alt = ""; + image.loading = "lazy"; + image.decoding = "async"; + if (item.preview){ + image.src = storeUrl(item.preview); + image.onerror = () => image.classList.add("missing"); + } + else image.classList.add("missing"); + const title = document.createElement("div"); + title.className = "storeName"; + title.textContent = item.name.replace(/\.css$/i, ""); + const author = document.createElement("div"); + author.className = "storeAuthor"; + author.textContent = item.author ? `by ${item.author}` : ""; + const button = document.createElement("div"); + button.className = "btn small"; + button.onclick = () => this.download(item); + this.storeButtons.set(item.name, button); + card.append(image, title, author, button); + return card; + } + + /** + * @param {StoreItem} item + */ + async download(item){ + if (!this.popup || this.downloading.has(item.name) || this.hasFile(item.name)) return; + this.downloading.add(item.name); + this.refreshStore(); + try { + const response = await fetch(storeUrl(item.file), { signal: AbortSignal.any([this.popup.signal, AbortSignal.timeout(STORE_TIMEOUT)]) }); + if (!response.ok) throw new Error(`HTTP ${response.status}`); + const content = await response.text(); + if (content.length > MAX_SIZE) throw new Error("larger than 4 MB"); + // the button stays busy until the host's import reply + post("import", { name: item.name, content }); } catch (error){ - console.error("CSS Store failed to load:", error); - list.replaceChildren(); + if (!this.popup) return; + this.downloading.delete(item.name); + this.popup.showError(`Could not download ${item.name}: ${error instanceof Error ? error.message : error}`); + this.refreshStore(); + } + } - const errorMessage = document.createElement("p"); - errorMessage.textContent = - "Unable to load the CSS Store. Please try again later."; + /** + * @param {string} name + * @return {boolean} + */ + hasFile(name){ + const lower = name.toLowerCase(); + return this.files.some((file) => file.name.toLowerCase() === lower); + } - list.append(errorMessage); + refreshStore(){ + for (const [name, button] of this.storeButtons){ + const busy = this.downloading.has(name); + const have = !busy && this.hasFile(name); + button.classList.toggle("primary", !busy && !have); + button.classList.toggle("done", busy || have); + if (busy) button.textContent = "Downloading..."; + else if (have) button.innerHTML = "checkDownloaded"; + else button.innerHTML = "downloadDownload"; } } - /** * @param {string} selector * @return {HTMLElement} @@ -334,6 +344,7 @@ class CssManager { else this.closeEditor(); } this.renderList(); + this.refreshStore(); } renderList(){ @@ -545,6 +556,7 @@ class CssManager { * @param {{requested: string, name: string, error?: string|null}} result */ imported(result){ + if (this.downloading.delete(result.requested)) this.refreshStore(); if (result.error){ this.popup?.showError(`Could not add ${result.requested}: ${result.error}`); return; From dc9d1fde9ab286d835a857753195f1727a4035ce Mon Sep 17 00:00:00 2001 From: "NullDev (Shadow)" Date: Fri, 23 Oct 2026 14:31:33 +0200 Subject: [PATCH 11/18] restyle css store with the manager styles --- .../components/managers/customCss.html | 161 +++++++----------- 1 file changed, 59 insertions(+), 102 deletions(-) diff --git a/src/frontend/components/managers/customCss.html b/src/frontend/components/managers/customCss.html index 156f2325..e9d0c906 100644 --- a/src/frontend/components/managers/customCss.html +++ b/src/frontend/components/managers/customCss.html @@ -104,124 +104,81 @@ } #ccStorePanel { - flex: 1; - min-height: 0; - overflow-y: auto; -} - -#ccStoreList { - display: grid; - grid-template-columns: repeat(3, minmax(0, 1fr)); - gap: 16px; - padding: 12px 0; -} - -.storeCard { - padding: 12px; - border: 1px solid #333; - border-radius: 8px; - background: #202020; -} - -.storeCard img { - width: 100%; - max-height: 165px; - object-fit: cover; - border-radius: 5px; -} - -.storeCard h3 { - margin: 10px 0 5px; -} - -.storeCard p { - color: var(--muted); - font-size: 0.9em; -} - -.storeCard button { - margin-top: 8px; + flex: 1 1 auto; + min-height: 0; + margin-bottom: 0; + overflow-y: auto; } +.managerBody:not(.storeOpen) > #ccStorePanel, .managerBody.storeOpen > #ccEditor, -.managerBody.storeOpen > #ccFiles { - display: none; -} - -.managerBody.storeOpen > #ccStorePanel { - display: block; +.managerBody.storeOpen > #ccFiles, +.managerPopup.legacy #ccStore { + display: none; } #ccStoreBack { - margin-left: auto; + margin-left: auto; } -.storeDownloadBtn { - display: flex; - align-items: center; - justify-content: center; - gap: 8px; - - width: 100%; - padding: 11px 16px; - - border: 1px solid var(--accent); - border-radius: 8px; - - background: var(--accent); - color: #fff; - - font: inherit; - font-size: 13px; - font-weight: 600; - letter-spacing: 0.2px; +#ccStoreList { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); + gap: 0.9em; + padding: 0.9em; +} - cursor: pointer; - transition: - background 0.2s ease, - border-color 0.2s ease, - transform 0.2s ease, - box-shadow 0.2s ease; +#ccStoreList > .empty { + grid-column: 1 / -1; } -.storeDownloadBtn:disabled { - opacity: 0.65; - cursor: not-allowed; - transform: none; - box-shadow: none; +.storeCard { + display: flex; + flex-direction: column; + gap: 0.3em; + padding: 0.6em; + border: 1px solid var(--line); + border-radius: 8px; + background: #202020; } -.storeDownloadBtn.installed { - background: #292929; - border-color: #444; - color: var(--muted); +.storeCard img { + width: 100%; + aspect-ratio: 16 / 9; + border-radius: 5px; + background: #2b2b2b; + object-fit: cover; } -.storeDownloadBtn i { - font-size: 14px; +.storeCard img.missing { + visibility: hidden; } -.storeDownloadBtn:hover { - filter: brightness(1.12); - transform: translateY(-1px); - box-shadow: 0 4px 14px rgba(0, 0, 0, 0.2); +.storeName { + overflow: hidden; + color: #fff; + text-overflow: ellipsis; + white-space: nowrap; } -.storeDownloadBtn:active { - transform: translateY(0); - box-shadow: none; +.storeAuthor { + min-height: 1.2em; + overflow: hidden; + color: var(--muted); + font-size: 0.85em; + text-overflow: ellipsis; + white-space: nowrap; } -.storeDownloadBtn:focus-visible { - outline: 2px solid var(--accent); - outline-offset: 3px; +.storeCard .btn { + justify-content: center; + margin-top: 0.3em; } -.storeDownloadBtn:disabled { - opacity: 0.55; - cursor: not-allowed; - transform: none; - box-shadow: none; +.storeCard .btn.done { + color: var(--muted); + cursor: default; + pointer-events: none; }
              @@ -230,7 +187,7 @@

              CSS Manager

              visibilityHold to peek
              folder_openShow folder
              -
              storeCSS Store
              +
              storefrontCSS Store
              ×
              One file is active at a time and loads after all of Krunker's styles, so a rule with the same selector wins. @@ -238,12 +195,12 @@

              CSS Manager

              - ${s.compactList(e.active??[])} - `,points:n.map(m=>({t:Date.parse(m.day+"T00:00:00Z"),values:[m.volume]})),series:[{label:"KR traded",color:"#f580b4"}]}}var ff,mc=w(()=>{"use strict";Be();xe();pe();Vt();yr();ff=6e4});var bf={};A(bf,{default:()=>jo,itemSearch:()=>xo});var xo,jo,Uo=w(()=>{"use strict";xe();pe();xo=(s,e,t,o="")=>`
              `,jo=class{constructor(e,t,o,n,r){this.root=e,this.select=o,this.browse=n,this.holdings=r,this.input=null,this.list=null,this.items=[],this.active=-1,this.sequence=0,this.timer=0,e.addEventListener("input",i=>{i.target instanceof HTMLInputElement&&i.target.dataset.itemSearch&&this.search(i.target)},{signal:t}),e.addEventListener("focusin",i=>{i.target!==this.input&&!(i.target instanceof Element&&this.list?.contains(i.target))&&this.dismiss()},{signal:t}),e.addEventListener("pointerdown",i=>{i.target instanceof Element&&(this.list?.contains(i.target)?i.preventDefault():i.target!==this.input&&this.dismiss())},{signal:t}),e.addEventListener("click",i=>{let a=i.target instanceof Element?i.target.closest("[data-suggestion],[data-search-all]"):null;if(!(!(a instanceof HTMLElement)||!this.list?.contains(a)))if(a.dataset.suggestion!==void 0)this.choose(Number(a.dataset.suggestion));else{let l=this.input?.value.trim()??"",c=this.input?.dataset.itemSearch??"global";this.dismiss(),this.browse(l,c)}},{signal:t}),t.addEventListener("abort",()=>this.dismiss(),{once:!0})}dismiss(){clearTimeout(this.timer),this.sequence++,this.list&&(this.list.hidden=!0),this.input?.setAttribute("aria-expanded","false"),this.input?.removeAttribute("aria-activedescendant"),this.input=null,this.list=null,this.items=[],this.active=-1}search(e){this.dismiss();let t=e.value.trim();if(!t)return;let o=this.root.getElementById(`${e.id}List`);if(!o)return;this.input=e,this.list=o,o.hidden=!1,o.innerHTML=`
              Searching items...
              `,e.setAttribute("aria-expanded","true");let{sequence:n}=this;this.timer=window.setTimeout(async()=>{let r=null;try{e.dataset.itemSearch==="holdings"?r=this.holdings().filter(c=>c.name.toLocaleLowerCase().includes(t.toLocaleLowerCase())):r=(await W.cached(`/market/search?q=${encodeURIComponent(t)}&sort=volume&page=1`,6e4))?.items??null}catch{r=null}if(n!==this.sequence||!e.isConnected||e.value.trim()!==t)return;this.items=r?.slice(0,8)??[];let i=e.dataset.itemSearch,a=i==="holdings"?"Your holdings":"All items",l=i==="give"||i==="get"?"Add":"Open";o.innerHTML=`
              ${a}${l} an item
              ${this.items.map((c,d)=>``).join("")}
              ${!r||!r.length?`
              ${r?"No matching items":"Search unavailable. Try typing again."}
              `:""}${i==="global"||i==="discover"?'':""}`},250)}choose(e){let t=this.items[e],o=this.input?.dataset.itemSearch;!t||!o||(this.dismiss(),this.select(t,o))}key(e){if(e.isComposing)return!1;let t=this.root.activeElement;if(!(t instanceof HTMLInputElement)||!t.dataset.itemSearch)return!1;if(e.key==="Tab")return this.dismiss(),!1;if(e.key==="Escape"&&this.input)return this.dismiss(),e.preventDefault(),!0;if(e.key==="Enter"&&this.active>=0)return this.choose(this.active),e.preventDefault(),!0;if(e.key!=="ArrowDown"&&e.key!=="ArrowUp")return!1;if(e.preventDefault(),this.input!==t)return this.search(t),!0;if(!this.items.length)return!0;let o=this.active+(e.key==="ArrowDown"?1:-1);this.active<0&&e.key==="ArrowUp"&&(o=this.items.length-1),this.active=(o+this.items.length)%this.items.length,this.list?.querySelectorAll("[data-suggestion]").forEach((r,i)=>r.setAttribute("aria-selected",String(i===this.active)));let n=`${t.id}Option${this.active}`;return t.setAttribute("aria-activedescendant",n),this.root.getElementById(n)?.scrollIntoView({block:"nearest"}),!0}}});var vf={};A(vf,{searchView:()=>fc});async function fc(s){let e=s.searchState(),t=new URLSearchParams({sort:e.sort,page:String(e.page)});for(let[i,a]of Object.entries({q:e.q,rarity:e.rarity,type:e.type,budget:e.budget,[s.tab==="active"?"min_activity":"min_sales"]:e.minSales}))a!==""&&t.set(i,a);let o=await W.cached(`/market/search?${t}`,Hy);if(!o)return s.unavailable();let n=(i,a)=>i.map((l,c)=>P` + `,points:n.map(f=>({t:Date.parse(f.day+"T00:00:00Z"),values:[f.volume]})),series:[{label:"KR traded",color:"#f580b4"}]}}var wf,fc=w(()=>{"use strict";Be();xe();pe();Vt();yr();wf=6e4});var yf={};A(yf,{default:()=>Ko,itemSearch:()=>xo});var xo,Ko,jo=w(()=>{"use strict";xe();pe();xo=(s,e,t,o="")=>`
              `,Ko=class{constructor(e,t,o,n,r){this.root=e,this.select=o,this.browse=n,this.holdings=r,this.input=null,this.list=null,this.items=[],this.active=-1,this.sequence=0,this.timer=0,e.addEventListener("input",i=>{i.target instanceof HTMLInputElement&&i.target.dataset.itemSearch&&this.search(i.target)},{signal:t}),e.addEventListener("focusin",i=>{i.target!==this.input&&!(i.target instanceof Element&&this.list?.contains(i.target))&&this.dismiss()},{signal:t}),e.addEventListener("pointerdown",i=>{i.target instanceof Element&&(this.list?.contains(i.target)?i.preventDefault():i.target!==this.input&&this.dismiss())},{signal:t}),e.addEventListener("click",i=>{let a=i.target instanceof Element?i.target.closest("[data-suggestion],[data-search-all]"):null;if(!(!(a instanceof HTMLElement)||!this.list?.contains(a)))if(a.dataset.suggestion!==void 0)this.choose(Number(a.dataset.suggestion));else{let l=this.input?.value.trim()??"",c=this.input?.dataset.itemSearch??"global";this.dismiss(),this.browse(l,c)}},{signal:t}),t.addEventListener("abort",()=>this.dismiss(),{once:!0})}dismiss(){clearTimeout(this.timer),this.sequence++,this.list&&(this.list.hidden=!0),this.input?.setAttribute("aria-expanded","false"),this.input?.removeAttribute("aria-activedescendant"),this.input=null,this.list=null,this.items=[],this.active=-1}search(e){this.dismiss();let t=e.value.trim();if(!t)return;let o=this.root.getElementById(`${e.id}List`);if(!o)return;this.input=e,this.list=o,o.hidden=!1,o.innerHTML=`
              Searching items...
              `,e.setAttribute("aria-expanded","true");let{sequence:n}=this;this.timer=window.setTimeout(async()=>{let r=null;try{e.dataset.itemSearch==="holdings"?r=this.holdings().filter(c=>c.name.toLocaleLowerCase().includes(t.toLocaleLowerCase())):r=(await W.cached(`/market/search?q=${encodeURIComponent(t)}&sort=volume&page=1`,6e4))?.items??null}catch{r=null}if(n!==this.sequence||!e.isConnected||e.value.trim()!==t)return;this.items=r?.slice(0,8)??[];let i=e.dataset.itemSearch,a=i==="holdings"?"Your holdings":"All items",l=i==="give"||i==="get"?"Add":"Open";o.innerHTML=`
              ${a}${l} an item
              ${this.items.map((c,u)=>``).join("")}
              ${!r||!r.length?`
              ${r?"No matching items":"Search unavailable. Try typing again."}
              `:""}${i==="global"||i==="discover"?'':""}`},250)}choose(e){let t=this.items[e],o=this.input?.dataset.itemSearch;!t||!o||(this.dismiss(),this.select(t,o))}key(e){if(e.isComposing)return!1;let t=this.root.activeElement;if(!(t instanceof HTMLInputElement)||!t.dataset.itemSearch)return!1;if(e.key==="Tab")return this.dismiss(),!1;if(e.key==="Escape"&&this.input)return this.dismiss(),e.preventDefault(),!0;if(e.key==="Enter"&&this.active>=0)return this.choose(this.active),e.preventDefault(),!0;if(e.key!=="ArrowDown"&&e.key!=="ArrowUp")return!1;if(e.preventDefault(),this.input!==t)return this.search(t),!0;if(!this.items.length)return!0;let o=this.active+(e.key==="ArrowDown"?1:-1);this.active<0&&e.key==="ArrowUp"&&(o=this.items.length-1),this.active=(o+this.items.length)%this.items.length,this.list?.querySelectorAll("[data-suggestion]").forEach((r,i)=>r.setAttribute("aria-selected",String(i===this.active)));let n=`${t.id}Option${this.active}`;return t.setAttribute("aria-activedescendant",n),this.root.getElementById(n)?.scrollIntoView({block:"nearest"}),!0}}});var xf={};A(xf,{searchView:()=>gc});async function gc(s){let e=s.searchState(),t=new URLSearchParams({sort:e.sort,page:String(e.page)});for(let[i,a]of Object.entries({q:e.q,rarity:e.rarity,type:e.type,budget:e.budget,[s.tab==="active"?"min_activity":"min_sales"]:e.minSales}))a!==""&&t.set(i,a);let o=await W.cached(`/market/search?${t}`,Ky);if(!o)return s.unavailable();let n=(i,a)=>i.map((l,c)=>P` `).join(""),r=Math.max(1,Math.ceil(o.total/o.perPage));return{asOf:o.asOf,html:s.intro(s.tab==="active"?"Find items that are trading.":"Find your next item.",s.tab==="active"?`At least ${e.minSales} public sales or reported private exchanges in seven days. Private activity is shown separately from cash-sale liquidity.`:"Browse by budget, recent activity, or the items you already have in mind.",'')+P`
              @@ -371,8 +371,8 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del
              - `}}var Hy,gc=w(()=>{"use strict";Be();xe();Ve();pe();Uo();Hy=6e4});var wf={};A(wf,{dealEvidence:()=>bc,intelligenceView:()=>wc,itemIntelligence:()=>vc});function bc(s){let{assessment:e}=s;if(!e)return"";let t=e.risks[0]??"Supported by recent sales";return`${S(t)}${e.risks.length>1?` +${e.risks.length-1} risk${e.risks.length>2?"s":""}`:""}`}function vc(s,e=!1){if(!s)return"";let{outlook:t}=s,o=s.signals.slice(0,e?2:4);if(!o.length&&t.state!=="published")return"";let n="";return t.state==="published"&&(n=`
              {"use strict";Be();xe();Ve();pe();jo();Ky=6e4});var Sf={};A(Sf,{dealEvidence:()=>vc,intelligenceView:()=>kc,itemIntelligence:()=>wc});function vc(s){let{assessment:e}=s;if(!e)return"";let t=e.risks[0]??"Supported by recent sales";return`${S(t)}${e.risks.length>1?` +${e.risks.length-1} risk${e.risks.length>2?"s":""}`:""}`}function wc(s,e=!1){if(!s)return"";let{outlook:t}=s,o=s.signals.slice(0,e?2:4);if(!o.length&&t.state!=="published")return"";let n="";return t.state==="published"&&(n=`
              7-DAY REPORTED-PRICE OUTLOOK @@ -392,7 +392,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del ${S(r.title)}

              ${S(r.detail)}

              -
              `).join(""):'

              No observation to highlight.

              '}${n}`}function wc(s,e,t,o){let{model:n}=s,r=n?.historical,i=n?.forward,a=r?.skill??null,l=[["","All signals"],["activity","Activity"],["supply","Supply"],["relative","Relative value"],["risk","Risks"],["availability","Availability"]],c=[...s.items].sort((h,p)=>Number(o.includes(p.skin))-Number(o.includes(h.skin))),d=h=>`${T(h.samples)} +
              `).join(""):'

              No observation to highlight.

              '}${n}`}function kc(s,e,t,o){let{model:n}=s,r=n?.historical,i=n?.forward,a=r?.skill??null,l=[["","All signals"],["activity","Activity"],["supply","Supply"],["relative","Relative value"],["risk","Risks"],["availability","Availability"]],c=[...s.items].sort((h,p)=>Number(o.includes(p.skin))-Number(o.includes(h.skin))),u=h=>`${T(h.samples)} ${h.weeks} ${h.modelError===null?"Pending":h.modelError.toFixed(3)} ${h.skill===null?"Pending":xr(h.skill)} @@ -426,18 +426,18 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del role="group" aria-label="Signal type">${l.map(([h,p])=>``).join("")}`+(c.length?`
              ${c.map(h=>{let m=h.intelligence.signals.filter(g=>!e||g.kind===e)[0],f=h.intelligence.signals.find(g=>g!==m&&g.kind==="risk");return`
              ${c.map(h=>{let f=h.intelligence.signals.filter(g=>!e||g.kind===e)[0],m=h.intelligence.signals.find(g=>g!==f&&g.kind==="risk");return`
              ${o.includes(h.skin)?'Watching':""}
              ${S(m?.kind??"signal")}
              -

              ${S(m?.title)}

              + class="eyebrow ${S(f?.tone??"muted")}">${S(f?.kind??"signal")}
              +

              ${S(f?.title)}

              ${S(m?.detail)}

              ${f?`

              ${S(f.title)}

              `:""}
              ${S(f?.detail)}

              ${m?`

              ${S(m.title)}

              `:""}
              ${T(h.fair)} KR estimate · ${h.sales7d} sales / 7D @@ -465,9 +465,9 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del -Historical holdouts${d(r)} +Historical holdouts${u(r)} -Actually issued${d(i)} +Actually issued${u(i)}
              @@ -484,7 +484,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del class="coverageRow">${s.sources.map(h=>`${S(h.source)}: ${h.records} records · ${S(We(Date.now()-h.observedAt))} ago`).join("")}
              `:'

              News and catalog feeds have not been collected yet.

              '}`+(s.news.length?`

              Official news

              ${s.news.map(h=>`

              ${h.url?``:S(h.title)}

              `).join("")}
              `:"")}var xr,on=w(()=>{"use strict";pe();Ve();xr=s=>s===null?"Not available":`${(s*100).toFixed(1)}%`});var kf={};A(kf,{contributionEvidence:()=>kc});function kc(s){if(!s||!s.trades30d&&!s.sales30d)return"";let{cash:e,sales:t,swaps:o}=s;return`
              + class="sub">${h.url?``:S(h.title)}

              `).join("")}
              `:"")}var xr,tn=w(()=>{"use strict";pe();Ve();xr=s=>s===null?"Not available":`${(s*100).toFixed(1)}%`});var Ef={};A(Ef,{contributionEvidence:()=>yc});function yc(s){if(!s||!s.trades30d&&!s.sales30d)return"";let{cash:e,sales:t,swaps:o}=s;return`

              Completed trade reports

              30 days

              ${T(s.trades30d)} reported private trades involved this item. ${T(s.matchedSales30d)} of ${T(s.sales30d)} contributed market sales match independently sampled listings and fit official daily totals.

              @@ -499,7 +499,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del Comparisons require multiple reports, source sessions and dates; source sessions do not identify unique players. These descriptive samples exclude bundles and reported serial, wear, style and paint attributes. The valuation model separately uses supported bundles with KR anchors; its contribution is explained above.

              -
              `}var yc=w(()=>{"use strict";pe()});var yf={};A(yf,{exchangeEvidence:()=>xc});function xc(s,e){let t=s.exchange;if(!t&&!s.privateTrading?.trades30d)return"";let o=t?.status==="applied";return`
              +
              `}var xc=w(()=>{"use strict";pe()});var $f={};A($f,{exchangeEvidence:()=>Sc});function Sc(s,e){let t=s.exchange;if(!t&&!s.privateTrading?.trades30d)return"";let o=t?.status==="applied";return`

              ${o?"Private trades contribute to this value":"Private trading activity"}

              ${o&&t.confidence<35?"Tentative evidence":"Reported exchanges"}
              ${o?`

              ${T(t.reports)} eligible exchanges inform the ${T(s.fair)} KR Kute estimate. @@ -507,13 +507,13 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del ${S(t?.reason??"These reports establish activity; their currencies or instance attributes do not yet support a base-item KR estimate.")}

              `} ${s.privateTrading?`

              ${T(s.privateTrading.trades7d)} private trades in seven days. Latest reported trade date: ${S(s.privateTrading.lastTradeDay)} UTC.

              `:""} ${e&&o?`
              -
              Public-data baseline${T(t.baseline)} KR${S(Oy[t.baselineMethod]??"Public evidence")}
              +
              Public-data baseline${T(t.baseline)} KR${S(jy[t.baselineMethod]??"Public evidence")}
              Model sensitivity range${T(t.low)} to ${T(t.high)}KR; not a calibrated prediction interval
              Report diversity${S(t.sources)} source${t.sources===1?"":"s"} / ${S(t.days)} day${t.days===1?"":"s"}Anonymous connections, not verified unique players
              `:""}

              Client reports can be incomplete or inaccurate. A verdict needs sufficient combined public and private evidence. Private trading does not establish cash-sale liquidity. The letter grade still describes public-market activity.

              -
              `}var Oy,Sc=w(()=>{"use strict";pe();Oy={sales7d:"7-day public sales",sales30d:"30-day public sales",sales90d:"90-day public sales",ask:"Sampled asking prices",krunker:"Krunker estimate",floor:"Fallback estimate"}});var Sf={};A(Sf,{candleSeries:()=>$c,lineSegments:()=>Ec});function Ec(s,e,t){let o=[],n=null,r=!1;for(let i of s){let a=i.values[e];if(a==null||!Number.isFinite(a)){r=!0;continue}n&&o.push({from:n,to:i,gap:r||i.t-n.t>t*1.5}),n=i,r=!1}return o}function xf(s,e,t){let o=new Map,n=e===7*864e5?4*864e5:0;for(let a of[...s].sort((l,c)=>l.t-c.t)){let l=Math.floor((a.t-n)/e)*e+n,c=o.get(l);c||(c={t:l,end:l+e,values:[],volume:null,ask:null,partial:!1},o.set(l,c));for(let[h,p]of a.values.entries())p!==null&&Number.isFinite(p)&&(c.values[h]=p);a.volume!==null&&a.volume!==void 0&&Number.isFinite(a.volume)&&(c.volume=(c.volume??0)+a.volume);let d=a.ask;d&&(c.ask?(c.ask.high=Math.max(c.ask.high,d.high),c.ask.low=Math.min(c.ask.low,d.low),c.ask.close=d.close,c.ask.samples+=d.samples):c.ask={...d})}let r=Math.min(...s.map(a=>a.t)),i=Math.max(...s.map(a=>a.t+t));for(let a of o.values())a.partial=a.ti||(a.end??0)>Date.now();return[...o.values()]}function $c(s,e){let t=e,o=xf(s,t,e),n=a=>{let l=a.filter(c=>c.ask);return{count:l.length,share:l.filter(c=>(c.ask?.samples??0)>1).length/Math.max(1,l.length)}},r=n(o);for(let a of Fy.filter(l=>l>e)){if(r.share>=.6||r.count<2)break;let l=xf(s,a,e),c=n(l);c.count<2||c.share<=r.share||(t=a,o=l,r=c)}let i=t>=864e5?`${t/864e5}D`:`${t/36e5}h`;return{points:o,stepMs:t,label:i}}var Fy,Sr=w(()=>{"use strict";Fy=[36e5,144e5,432e5,864e5,6048e5]});var Ef={};A(Ef,{itemView:()=>Cc});function qy(s,e){let t=Ut[s.rarity]?.name??"items",o=[`Nobody has sold, traded or listed this item where Kute could see it, so ${s.method==="floor"?"the number above is only what the game pays on quick sell":"the number above is Krunker's own estimate"}. It can be worth far more.`];if(e&&e.pricedItems>=5&&e.low!==null&&e.high!==null&&o.push(`For reference, ${t} items with recent sales mostly went for ${T(e.low)} to ${T(e.high)} KR (middle half of ${e.pricedItems} items). Rare items of the same rarity can be worth many times that.`),e&&e.krunkerItems>=5&&e.krunkerRatio!==null){let n=Math.abs(e.krunkerRatio-1)<.1?"close to their real sale prices":`${e.krunkerRatio<1?"above":"below"} their real sale prices (ratio ${e.krunkerRatio})`;o.push(`Where ${t} items do sell, Krunker's estimate sits ${n}, but it is missing for most items without sales.`)}return`
              ${o.map(S).join("
              ")}
              `}async function Cc(s){let e=s.itemState(),t=!e.candles&&e.range==="7D"?"1M":e.range,o=await W.itemDesk(e.skin,t);t!==e.range&&o?.history&&!o.history.points.some(B=>B.t>=Date.now()-7*864e5&&B.avg!==null)&&(t=e.range,o=await W.itemDesk(e.skin,t)??o);let{item:n,history:r,listings:i}=o??{};if(!n)return s.unavailable();let a=n.skin,l=n.evidence,c=Se().some(B=>B.skin===a.skin),d=l?.dailyRange,h=l?`${l.sales} sales across ${l.days} trading days in 30D`:`${n.liquidity.sales30d} sales in 30 days`,p=a.exchange?.status==="applied"?`${a.exchange.reports} eligible private exchanges${a.method.startsWith("sales")?" + public sales":"; tentative when sparse"}`:h,m=l?.reasons??[p,`The estimate is based on ${a.method.startsWith("sales")?"historical sales aggregates":"limited market evidence"}.`],f=[{label:r?.resolution==="hour"?"Lowest observed ask":"Daily average sale",color:"#f580b4"}];e.overlay!=="none"&&f.push({label:{fair:"Kute estimate",lowest:"Lowest observed ask",krunker:"Krunker estimate"}[e.overlay]??"Comparison",color:"#87b8f7"});let g=(r?.points??[]).filter(B=>t===e.range||B.t>=Date.now()-7*864e5).map(B=>({t:B.t,values:[r?.resolution==="hour"?B.lowest:B.avg,...f.length>1?[{fair:B.fair,lowest:B.lowest,krunker:B.krunker}[e.overlay]??null]:[]],volume:r?.resolution==="day"&&B.salesObserved!==!1?B.sales:null,ask:B.ask})),b=r?.resolution==="hour"?36e5:864e5,v=e.candles?$c(g,b):null;v&&({points:g,stepMs:b}=v);let k="Daily average completed-sale prices. Today's point, when present, is incomplete. Dashed connections cross missing observations; they do not supply prices for those dates.";r?.resolution==="hour"&&(k="Intraday lines show sampled asks. Dashed connections cross unsampled periods. Official sales data is daily; individual transaction timing is unavailable."),v&&(k=`Auto interval: ${v.label}. Sparse quotes use larger intervals when they can support multiple candles. Green and red show rising and falling sampled asks; gray ticks show one quote or an unchanged close. Empty intervals remain empty. These are asking-price candles, not transaction candles.`);let E=Math.max(8,Math.ceil(g.length/e.zoom)),L=Math.max(1,Math.floor(E/2)),y=(i?.listings??[]).slice(0,s.advanced?250:5),C=i?.observedAt??l?.bookAt,I=!C||Date.now()-C>3*36e5,_=i?.highest,H="Unavailable",G="No available quote";_===null?H="None observed":_!==void 0&&(H=P` + `}var jy,Ec=w(()=>{"use strict";pe();jy={sales7d:"7-day public sales",sales30d:"30-day public sales",sales90d:"90-day public sales",ask:"Sampled asking prices",krunker:"Krunker estimate",floor:"Fallback estimate"}});var Mf={};A(Mf,{candleSeries:()=>Cc,lineSegments:()=>$c});function $c(s,e,t){let o=[],n=null,r=!1;for(let i of s){let a=i.values[e];if(a==null||!Number.isFinite(a)){r=!0;continue}n&&o.push({from:n,to:i,gap:r||i.t-n.t>t*1.5}),n=i,r=!1}return o}function Cf(s,e,t){let o=new Map,n=e===7*864e5?4*864e5:0;for(let a of[...s].sort((l,c)=>l.t-c.t)){let l=Math.floor((a.t-n)/e)*e+n,c=o.get(l);c||(c={t:l,end:l+e,values:[],volume:null,ask:null,partial:!1},o.set(l,c));for(let[h,p]of a.values.entries())p!==null&&Number.isFinite(p)&&(c.values[h]=p);a.volume!==null&&a.volume!==void 0&&Number.isFinite(a.volume)&&(c.volume=(c.volume??0)+a.volume);let u=a.ask;u&&(c.ask?(c.ask.high=Math.max(c.ask.high,u.high),c.ask.low=Math.min(c.ask.low,u.low),c.ask.close=u.close,c.ask.samples+=u.samples):c.ask={...u})}let r=Math.min(...s.map(a=>a.t)),i=Math.max(...s.map(a=>a.t+t));for(let a of o.values())a.partial=a.ti||(a.end??0)>Date.now();return[...o.values()]}function Cc(s,e){let t=e,o=Cf(s,t,e),n=a=>{let l=a.filter(c=>c.ask);return{count:l.length,share:l.filter(c=>(c.ask?.samples??0)>1).length/Math.max(1,l.length)}},r=n(o);for(let a of Uy.filter(l=>l>e)){if(r.share>=.6||r.count<2)break;let l=Cf(s,a,e),c=n(l);c.count<2||c.share<=r.share||(t=a,o=l,r=c)}let i=t>=864e5?`${t/864e5}D`:`${t/36e5}h`;return{points:o,stepMs:t,label:i}}var Uy,Sr=w(()=>{"use strict";Uy=[36e5,144e5,432e5,864e5,6048e5]});var Tf={};A(Tf,{itemView:()=>Mc});function Wy(s,e){let t=Ut[s.rarity]?.name??"items",o=[`Nobody has sold, traded or listed this item where Kute could see it, so ${s.method==="floor"?"the number above is only what the game pays on quick sell":"the number above is Krunker's own estimate"}. It can be worth far more.`];if(e&&e.pricedItems>=5&&e.low!==null&&e.high!==null&&o.push(`For reference, ${t} items with recent sales mostly went for ${T(e.low)} to ${T(e.high)} KR (middle half of ${e.pricedItems} items). Rare items of the same rarity can be worth many times that.`),e&&e.krunkerItems>=5&&e.krunkerRatio!==null){let n=Math.abs(e.krunkerRatio-1)<.1?"close to their real sale prices":`${e.krunkerRatio<1?"above":"below"} their real sale prices (ratio ${e.krunkerRatio})`;o.push(`Where ${t} items do sell, Krunker's estimate sits ${n}, but it is missing for most items without sales.`)}return`
              ${o.map(S).join("
              ")}
              `}async function Mc(s){let e=s.itemState(),t=!e.candles&&e.range==="7D"?"1M":e.range,o=await W.itemDesk(e.skin,t);t!==e.range&&o?.history&&!o.history.points.some(B=>B.t>=Date.now()-7*864e5&&B.avg!==null)&&(t=e.range,o=await W.itemDesk(e.skin,t)??o);let{item:n,history:r,listings:i}=o??{};if(!n)return s.unavailable();let a=n.skin,l=n.evidence,c=Se().some(B=>B.skin===a.skin),u=l?.dailyRange,h=l?`${l.sales} sales across ${l.days} trading days in 30D`:`${n.liquidity.sales30d} sales in 30 days`,p=a.exchange?.status==="applied"?`${a.exchange.reports} eligible private exchanges${a.method.startsWith("sales")?" + public sales":"; tentative when sparse"}`:h,f=l?.reasons??[p,`The estimate is based on ${a.method.startsWith("sales")?"historical sales aggregates":"limited market evidence"}.`],m=[{label:r?.resolution==="hour"?"Lowest observed ask":"Daily average sale",color:"#f580b4"}];e.overlay!=="none"&&m.push({label:{fair:"Kute estimate",lowest:"Lowest observed ask",krunker:"Krunker estimate"}[e.overlay]??"Comparison",color:"#87b8f7"});let g=(r?.points??[]).filter(B=>t===e.range||B.t>=Date.now()-7*864e5).map(B=>({t:B.t,values:[r?.resolution==="hour"?B.lowest:B.avg,...m.length>1?[{fair:B.fair,lowest:B.lowest,krunker:B.krunker}[e.overlay]??null]:[]],volume:r?.resolution==="day"&&B.salesObserved!==!1?B.sales:null,ask:B.ask})),b=r?.resolution==="hour"?36e5:864e5,v=e.candles?Cc(g,b):null;v&&({points:g,stepMs:b}=v);let k="Daily average completed-sale prices. Today's point, when present, is incomplete. Dashed connections cross missing observations; they do not supply prices for those dates.";r?.resolution==="hour"&&(k="Intraday lines show sampled asks. Dashed connections cross unsampled periods. Official sales data is daily; individual transaction timing is unavailable."),v&&(k=`Auto interval: ${v.label}. Sparse quotes use larger intervals when they can support multiple candles. Green and red show rising and falling sampled asks; gray ticks show one quote or an unchanged close. Empty intervals remain empty. These are asking-price candles, not transaction candles.`);let E=Math.max(8,Math.ceil(g.length/e.zoom)),L=Math.max(1,Math.floor(E/2)),y=(i?.listings??[]).slice(0,s.advanced?250:5),C=i?.observedAt??l?.bookAt,I=!C||Date.now()-C>3*36e5,_=i?.highest,H="Unavailable",G="No available quote";_===null?H="None observed":_!==void 0&&(H=P` ${T(_)} KR `,G=`Sampled ask, not a sale price${I?" · quote needs updating":""}`);let J=B=>P` @@ -537,9 +537,9 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del - `;return{item:n,listings:i,asOf:a.valuedAt??n.asOf,points:r?g:void 0,series:f,chartOptions:{candles:e.candles,volume:r?.resolution==="day",zoom:e.zoom,stepMs:b,connectGaps:!0,offset:e.offset},html:P` + `;return{item:n,listings:i,asOf:a.valuedAt??n.asOf,points:r?g:void 0,series:m,chartOptions:{candles:e.candles,volume:r?.resolution==="day",zoom:e.zoom,stepMs:b,connectGaps:!0,offset:e.offset},html:P`
              @@ -554,9 +554,9 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del

              ${S(a.name)}

              - ${S(Jl(a))} + ${S(Zl(a))} · - ${S(Vs(a))} + ${S(Ws(a))}

              @@ -572,13 +572,13 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del KR `,a.spread!==null?ae(a.spread)+` vs estimate${I?" · quote needs updating":""}`:"No available quote")}${ne("Highest observed ask",H,G)}${ne("Sales in the last 7 days",String(a.sales7d),`${a.onS} currently listed · ${T(a.inC)} in circulation`)}
              - ${Wt(a)?qy(a,n.rarityContext):""} + ${Wt(a)?Wy(a,n.rarityContext):""} `+P`

              Price history

              - ${Dy.map(B=>P` + ${Gy.map(B=>P` `).join("")}
              @@ -622,17 +622,17 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del Single quote or unchanged close - `+f.slice(1).map(B=>P` + `+m.slice(1).map(B=>P` ${S(B.label)} - `).join(""):f.map(B=>P` + `).join(""):m.map(B=>P` ${S(B.label)} - `).join("")}${!v||f.length>1?'Dashed: missing observations':""}${r?.resolution==="day"?P` + `).join("")}${!v||m.length>1?'Dashed: missing observations':""}${r?.resolution==="day"?P` Bars: reported sales${v?" / "+v.label:" / day"} `:""}
              @@ -641,33 +641,33 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del

              ${r?k:""} Dates and times are UTC.

              - `+xc(a,s.advanced)+vc(n.intelligence)+(s.advanced?uc(n)+kc(n.contributions):"")+P` + `+Sc(a,s.advanced)+wc(n.intelligence)+(s.advanced?pc(n)+yc(n.contributions):"")+P`
              THE CONTEXT

              What the data says

                - ${m.map(B=>P` + ${f.map(B=>P`
              • ${S(B)}
              • `).join("")}
              RECENT SALE-PRICE RANGE
              -

              ${d?`${T(d.low)} to ${T(d.high)} KR`:"More trading history needed"}

              +

              ${u?`${T(u.low)} to ${T(u.high)} KR`:"More trading history needed"}

              - ${d?"Central range of observed daily average prices over 30 days. This is historical context, not a forecast.":"A useful range needs several completed trading days."} + ${u?"Central range of observed daily average prices over 30 days. This is historical context, not a forecast.":"A useful range needs several completed trading days."}

              - ${d?P` + ${u?P`
              - ${T(d.low)} + ${T(u.low)} Current estimate - ${T(d.high)} + ${T(u.high)}
              `:""}

              @@ -841,7 +841,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del

              ${J(n.instances.serial)}${J(n.instances.wear)}
              - `:"")}}var Dy,Mc=w(()=>{"use strict";Be();xe();kr();Ve();pe();Vt();yr();on();yc();Sc();Sr();Dy=["1D","7D","1M","3M","1Y","ALL"]});var $f={};A($f,{watchlistView:()=>Tc});async function Tc(s){let e=Se(),t=s.intro("Your eye on the market.","Watch prices and set targets. Your list is saved only on this device.",'');if(!e.length)return{html:t+'
              '+fe("Start with something you like","Open an item and choose Watch item. It will appear here with its latest estimate and asking price.",'')+"
              "};let o=e.filter(a=>a.rarity===void 0);if(o.length){let a=await Promise.all(o.map(l=>W.cached(`/market/item/${l.skin}`,3e5)));o.forEach((l,c)=>{let d=a[c]?.skin?.rarity;Number.isInteger(d)&&(l.rarity=d)}),o.some(l=>l.rarity!==void 0)&&yo(e)}let n=await W.values(e.map(a=>a.skin)),r=new Set(Ct.unread);queueMicrotask(()=>Ct.markRead());let i=Math.min(...Object.values(n).flatMap(a=>a.valuedAt?[a.valuedAt]:[]));return{asOf:Number.isFinite(i)?i:void 0,html:t+P` + `:"")}}var Gy,Tc=w(()=>{"use strict";Be();xe();kr();Ve();pe();Vt();yr();tn();xc();Ec();Sr();Gy=["1D","7D","1M","3M","1Y","ALL"]});var Af={};A(Af,{watchlistView:()=>Ac});async function Ac(s){let e=Se(),t=s.intro("Your eye on the market.","Watch prices and set targets. Your list is saved only on this device.",'');if(!e.length)return{html:t+'
              '+fe("Start with something you like","Open an item and choose Watch item. It will appear here with its latest estimate and asking price.",'')+"
              "};let o=e.filter(a=>a.rarity===void 0);if(o.length){let a=await Promise.all(o.map(l=>W.cached(`/market/item/${l.skin}`,3e5)));o.forEach((l,c)=>{let u=a[c]?.skin?.rarity;Number.isInteger(u)&&(l.rarity=u)}),o.some(l=>l.rarity!==void 0)&&yo(e)}let n=await W.values(e.map(a=>a.skin)),r=new Set(Ct.unread);queueMicrotask(()=>Ct.markRead());let i=Math.min(...Object.values(n).flatMap(a=>a.valuedAt?[a.valuedAt]:[]));return{asOf:Number.isFinite(i)?i:void 0,html:t+P`
              @@ -892,7 +892,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del Targets compare against the latest observed ask. Check the item page for listing freshness. Target alerts are checked in the menu, never during gameplay.

              - `}}var Ac=w(()=>{"use strict";Be();xe();pe();Vt();br()});var Cf={};A(Cf,{moversView:()=>Lc});async function Lc(s){let e=typeof s.arg=="string"?s.arg:"7D",t=await W.cached(`/market/movers?window=${e}`,5*Ky);if(!t)return s.unavailable();let o=n=>P` + `}}var Lc=w(()=>{"use strict";Be();xe();pe();Vt();br()});var Lf={};A(Lf,{moversView:()=>Rc});async function Rc(s){let e=typeof s.arg=="string"?s.arg:"7D",t=await W.cached(`/market/movers?window=${e}`,5*Vy);if(!t)return s.unavailable();let o=n=>P`
              ${n.slice(0,10).map(r=>P`
              - `}}var Ky,Rc=w(()=>{"use strict";Be();xe();pe();Ky=6e4});var Mf={};A(Mf,{dealsView:()=>Pc});async function Pc(s){let e=s.arg?.budget??"",t=P` + `}}var Vy,Pc=w(()=>{"use strict";Be();xe();pe();Vy=6e4});var Rf={};A(Rf,{dealsView:()=>Ic});async function Ic(s){let e=s.arg?.budget??"",t=P`
              cf;)this.sent.del />
              - `,o=await W.cached(`/market/deals?min_grade=C&limit=100&budget=${encodeURIComponent(e)}`,jy);return o?{asOf:o.asOf,asOfLabel:"Quotes observed",html:s.intro("Worth a closer look.","Observed asks below a sales-based estimate. Inspect the evidence before deciding.")+t+(o.deals.length?P` + `,o=await W.cached(`/market/deals?min_grade=C&limit=100&budget=${encodeURIComponent(e)}`,Yy);return o?{asOf:o.asOf,asOfLabel:"Quotes observed",html:s.intro("Worth a closer look.","Observed asks below a sales-based estimate. Inspect the evidence before deciding.")+t+(o.deals.length?P`
              @@ -953,7 +953,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del ${o.deals.map(n=>P` - + @@ -970,7 +970,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del recent lower prices, unstable prices, supply changes and concentrated listings. Quotes older than three hours are excluded; availability can still change.

              - `:'
              '+fe("No supported candidates right now","The scanner only includes sales-based estimates with sufficient activity and a meaningful discount. Your watchlist can track specific items in the meantime.",'')+"
              ")}:s.unavailable()}var jy,Ic=w(()=>{"use strict";Be();xe();pe();on();jy=6e4});var Tf={};A(Tf,{indicesView:()=>Nc});async function Nc(s){let e=await W.cached("/market/indices",60*Uy);if(!e)return s.unavailable();let t=e.indices.find(o=>o.name===s.arg)??e.indices.find(o=>o.name==="kute-100")??e.indices[0];return{asOf:e.asOf,html:s.intro("The wider picture.","Equal-weighted indices of eligible items. Base 100 at launch, rebalanced monthly.",'')+P` + `:'
              '+fe("No supported candidates right now","The scanner only includes sales-based estimates with sufficient activity and a meaningful discount. Your watchlist can track specific items in the meantime.",'')+"
              ")}:s.unavailable()}var Yy,Nc=w(()=>{"use strict";Be();xe();pe();tn();Yy=6e4});var Pf={};A(Pf,{indicesView:()=>_c});async function _c(s){let e=await W.cached("/market/indices",60*Xy);if(!e)return s.unavailable();let t=e.indices.find(o=>o.name===s.arg)??e.indices.find(o=>o.name==="kute-100")??e.indices[0];return{asOf:e.asOf,html:s.intro("The wider picture.","Equal-weighted indices of eligible items. Base 100 at launch, rebalanced monthly.",'')+P`

              ${S(t?.name??"Index history")}

              @@ -1003,12 +1003,12 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del
              ${me(n)}${bc(n)}${me(n)}${vc(n)} ${T(n.price)} ${T(n.fair)} ${Math.round(n.discount*100)}%
              - `,points:(t?.series??[]).map(o=>({t:Date.parse(o.day+"T00:00:00Z"),values:[o.value]})),series:[{label:t?.name??"Index",color:"#f580b4"}]}}var Uy,_c=w(()=>{"use strict";Be();xe();pe();Uy=6e4});var Af={};A(Af,{portfolioView:()=>Bc});async function Bc(s){let e=typeof s.arg=="string"?s.arg:"";if(!e)try{e=localStorage.getItem("krunker_username")??""}catch{e=""}let t=s.intro("Know what you hold.","A view of today's holdings, their estimated value, and where it is concentrated."),o=P` + `,points:(t?.series??[]).map(o=>({t:Date.parse(o.day+"T00:00:00Z"),values:[o.value]})),series:[{label:t?.name??"Index",color:"#f580b4"}]}}var Xy,Bc=w(()=>{"use strict";Be();xe();pe();Xy=6e4});var If={};A(If,{portfolioView:()=>zc});async function zc(s){let e=typeof s.arg=="string"?s.arg:"";if(!e)try{e=localStorage.getItem("krunker_username")??""}catch{e=""}let t=s.intro("Know what you hold.","A view of today's holdings, their estimated value, and where it is concentrated."),o=P`
              - `;if(!e)return{html:t+o+fe("Choose an inventory","Enter a username to value its public inventory.")};let n=await W.cached(`/market/portfolio?name=${encodeURIComponent(e)}`,5*Gy);if(!n)return{html:t+o+fe("Inventory is unavailable","The player may not exist, or their inventory could not be loaded.",'')};let r=new Map(n.historyCoverage?.map(h=>[h.day,h])??[]),i=n.historyBasket,a=i?.series??n.series,l=i&&i.itemsTry again')};let r=new Map(n.historyCoverage?.map(h=>[h.day,h])??[]),i=n.historyBasket,a=i?.series??n.series,l=i&&i.items

              ${S(c)} Historical prices applied to what you own today; this is not personal profit. Marks expire after @@ -1045,7 +1045,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del

              ${l}

              90 days - ${d} + ${u}
              ${xo("kmHoldingFilter","holdings","Filter your holdings",s.portfolioFilter)} @@ -1079,11 +1079,11 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del
              - `,points:a.map(h=>({t:Date.parse(h.day+"T00:00:00Z"),values:[!i&&r.has(h.day)&&r.get(h.day)?.priced!==r.get(h.day)?.total?null:h.value]})),series:[{label:"Covered holdings at historical prices",color:"#f580b4"}]}}var Gy,zc=w(()=>{"use strict";Be();xe();pe();Uo();Gy=6e4});var Lf={};A(Lf,{analyzeView:()=>Hc});async function Hc(s){let{analyzer:e}=s,t=!!(e.give.length||e.get.length||e.giveKr||e.getKr),o=t?await W.analyze({give:e.give.map(({skin:i,count:a})=>({skin:i,count:a})),get:e.get.map(({skin:i,count:a})=>({skin:i,count:a})),giveKr:e.giveKr,getKr:e.getKr}):null,n=i=>{let a=o?.[i],l=i==="give"?e.giveKr:e.getKr,c=a?.items.some(p=>p.unknown)??!1,d=e[i].reduce((p,m)=>p+m.count,0),h=t?"Unavailable":"0";return a&&(h=T(a.value)),P` + `,points:a.map(h=>({t:Date.parse(h.day+"T00:00:00Z"),values:[!i&&r.has(h.day)&&r.get(h.day)?.priced!==r.get(h.day)?.total?null:h.value]})),series:[{label:"Covered holdings at historical prices",color:"#f580b4"}]}}var Jy,Hc=w(()=>{"use strict";Be();xe();pe();jo();Jy=6e4});var Nf={};A(Nf,{analyzeView:()=>Oc});async function Oc(s){let{analyzer:e}=s,t=!!(e.give.length||e.get.length||e.giveKr||e.getKr),o=t?await W.analyze({give:e.give.map(({skin:i,count:a})=>({skin:i,count:a})),get:e.get.map(({skin:i,count:a})=>({skin:i,count:a})),giveKr:e.giveKr,getKr:e.getKr}):null,n=i=>{let a=o?.[i],l=i==="give"?e.giveKr:e.getKr,c=a?.items.some(p=>p.unknown)??!1,u=e[i].reduce((p,f)=>p+f.count,0),h=t?"Unavailable":"0";return a&&(h=T(a.value)),P`

              ${i==="give"?"You give":"You receive"}

              - ${d} item${d===1?"":"s"} + ${u} item${u===1?"":"s"}
              @@ -1094,11 +1094,11 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del
              ${xo(`kmPick${i}`,i,"Add an item...")}
              - ${e[i].length?e[i].map((p,m)=>{let f=a?.items.find(b=>b.skin===p.skin),g=f&&!f.unknown?T(f.lineValue)+" KR":"Value unavailable";return P` + ${e[i].length?e[i].map((p,f)=>{let m=a?.items.find(b=>b.skin===p.skin),g=m&&!m.unknown?T(m.lineValue)+" KR":"Value unavailable";return P`
              - `),o){let i=Ws(o.verdict),a=Gt[i].label,l={good:"positive",bad:"negative",fair:"",uncertain:""}[i];r=P` + `),o){let i=Gs(o.verdict),a=Gt[i].label,l={good:"positive",bad:"negative",fair:"",uncertain:""}[i];r=P`
              THE DIFFERENCE
              @@ -1181,7 +1181,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del `}return{asOf:o?.asOf,html:s.intro("Compare the trade.","Your items on the left, theirs on the right. Add KR to either side.",'')+P`
              ${n("give")}${n("get")}
              ${r}
              - `}}var Oc=w(()=>{"use strict";Be();xe();pe();Uo()});var Rf={};A(Rf,{researchView:()=>Fc});async function Fc(s){let e=typeof s.arg=="string"?s.arg:"",t=await W.cached(`/market/intelligence?kind=${encodeURIComponent(e)}`,Wy);return t?{asOf:t.asOf,asOfLabel:"Analyzed",html:wc(t,e,s.advanced,Se().map(o=>o.skin))}:s.unavailable()}var Wy,Dc=w(()=>{"use strict";xe();Vt();on();Wy=6e4});var Pf={};A(Pf,{introView:()=>sn});function sn(s,e,t,o=""){let n=Ko("h1",{},e),r=Ko("p",{class:"sub"},t);return Ko("div",{class:"pageIntro"},Zs(Ko("div",{},Zs(n+r))),Zs(o))}var Er=w(()=>{"use strict";Be()});var If={};A(If,{tableView:()=>qc});function qc(s,e){return e.length?P` + `}}var Fc=w(()=>{"use strict";Be();xe();pe();jo()});var _f={};A(_f,{researchView:()=>Dc});async function Dc(s){let e=typeof s.arg=="string"?s.arg:"",t=await W.cached(`/market/intelligence?kind=${encodeURIComponent(e)}`,Zy);return t?{asOf:t.asOf,asOfLabel:"Analyzed",html:kc(t,e,s.advanced,Se().map(o=>o.skin))}:s.unavailable()}var Zy,qc=w(()=>{"use strict";xe();Vt();tn();Zy=6e4});var Bf={};A(Bf,{introView:()=>on});function on(s,e,t,o=""){let n=qo("h1",{},e),r=qo("p",{class:"sub"},t);return qo("div",{class:"pageIntro"},Js(qo("div",{},Js(n+r))),Js(o))}var Er=w(()=>{"use strict";Be()});var zf={};A(zf,{tableView:()=>Kc});function Kc(s,e){return e.length?P`
              @@ -1213,14 +1213,14 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del ${s.advanced?P` - + `:""} `).join("")}
              ${t.onS}${S(Vs(t))}${S(Ws(t))}
              - `:fe("No matching items","Try a wider budget or fewer filters.")}var Kc=w(()=>{"use strict";Be();Ve();pe()});var Nf={};A(Nf,{compactListView:()=>jc});function jc(s,e){return P` + `:fe("No matching items","Try a wider budget or fewer filters.")}var jc=w(()=>{"use strict";Be();Ve();pe()});var Hf={};A(Hf,{compactListView:()=>Uc});function Uc(s,e){return P`
              ${e.map(t=>P` `).join("")}
              - `}var Uc=w(()=>{"use strict";Be();pe()});var Bf,_f=w(()=>{Bf=`

              The numbers

              K
              Kute estimate

              What the item is worth, from recent sales and trades.

              Ask
              Lowest ask

              The cheapest listing right now.

              %
              Ask vs estimate

              Plus means the ask is above the estimate, minus means below.

              0-100
              Evidence score

              How much data backs the estimate. Low means take it with a grain of salt.

              Activity grades

              A
              Very active

              Sells often, easy to get rid of.

              B
              Active

              Sells regularly.

              C
              Moderate

              Might take a while or a lower price.

              D
              Thin

              Few sales, hard to sell.

              F
              Very limited

              Barely trades, the estimate is a rough guess.

              Trade verdicts

              +
              Favorable

              You get more value than you give.

              =
              Fair

              Both sides are about even.

              -
              Unfavorable

              You give more value than you get.

              ?
              Not enough evidence

              Some items can't be valued well enough to say.

              Estimates, not promises. Kute never buys, sells or trades for you.

              `});var zf={};A(zf,{helpView:()=>Gc});function Gc(s){return{html:sn(s,"How it works.","What the numbers mean.")+Bf}}var Wc=w(()=>{"use strict";_f();Er()});var Hf={};A(Hf,{default:()=>Go});var Go,Vc=w(()=>{"use strict";pe();Sr();Go=class{constructor(e,t,o,n={}){this.host=e,this.points=t,this.series=o,this.options=n,this.observer=new ResizeObserver(r=>this.draw(r[0]?.contentRect.width??700)),this.observer.observe(e),this.draw(e.clientWidth||700)}destroy(){this.observer.disconnect(),this.host.replaceChildren()}draw(e){let{host:t,series:o,options:n}=this,r=Math.max(8,Math.ceil(this.points.length/(n.zoom??1))),i=Math.max(Math.min(r,this.points.length),this.points.length-(n.offset??0)),a=this.points.slice(Math.max(0,i-r),i),l=!!n.candles,c=a.flatMap(j=>l?[...j.ask?[j.ask.low,j.ask.high]:[],...j.values.slice(1)]:j.values).flatMap(j=>j!==null&&Number.isFinite(j)?[j]:[]);if(!c.length){t.innerHTML=`
              ${l?"No sampled asking-price candles in this period. Try a longer range or switch to the line chart.":"No price observations in this period. Try a longer range."}
              `;return}let d=Math.max(280,e),h=270,p=62,m=d-16,f=20,g=n.volume?196:230,b=Math.min(...c),v=Math.max(...c),k=v-b||Math.max(1,v*.1),E=Math.max(0,b-k*.12),L=v+k*.12,y=a[0].t,I=((l?a.at(-1)?.end:a.at(-1)?.t)??y)-y||864e5,_=j=>p+(j-y)/I*(m-p),H=j=>g-(j-E)/(L-E)*(g-f),G=j=>l&&j.end?(j.t+j.end)/2:j.t,J=n.stepMs??864e5,B=o.map((j,X)=>Ec(a,X,J)),re="";for(let j=0;j<=4;j++){let X=E+(L-E)*j/4,Y=L-E<10?X.toFixed(2):T(X);re+=`${S(Y)}`}for(let j=0;j<=4;j++){let X=y+I*j/4,Y=new Date(X),x=I<=2*864e5?Y.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",timeZone:"UTC"}):Y.toLocaleDateString([],{month:"short",day:"numeric",timeZone:"UTC"}),$="middle";j===0&&($="start"),j===4&&($="end"),re+=`${S(x)}`}if(n.volume){let j=Math.max(1,...a.map(Y=>Y.volume??0)),X=Math.max(1,Math.min(14,(m-p)/Math.max(1,a.length)*.6));re+=a.filter(Y=>Y.volume!==null&&Y.volume!==void 0).map(Y=>``).join("")}if(l){let j=Math.max(3,Math.min(14,(m-p)*J/I*.65));for(let X of a){let Y=X.ask;if(!Y)continue;let x="flat",$="#9698a7";Y.samples<=1?x="single":Y.close!==Y.open&&(x=Y.close>Y.open?"up":"down",$=Y.close>Y.open?"#71d9b0":"#f68c9b");let R=_(G(X));re+=``,Y.samples>1&&(re+=``),x==="single"||x==="flat"?re+=``:re+=``,re+=""}}for(let[j,X]of o.entries()){if(l&&j===0)continue;let Y="",x="";for(let $ of B[j]){let R=`M${_(G($.from))},${H($.from.values[j])} L${_(G($.to))},${H($.to.values[j])} `;$.gap?n.connectGaps&&(x+=R):Y+=R}for(let $ of a){let R=$.values[j];R==null||!Number.isFinite(R)||(re+=``)}re+=``,x&&(re+=``)}t.innerHTML=`j.label).join(", "))}">${re}`;let je=t.querySelector("svg"),be=t.querySelector(".chartTooltip"),Ee=t.querySelector(".crosshair");je.addEventListener("pointermove",j=>{let X=je.getBoundingClientRect(),Y=(j.clientX-X.left)*d/X.width,x=y+(Y-p)/(m-p)*I,$=a.find(Z=>l&&Z.end&&x>=Z.t&&xMath.abs(G(ge)-x)Z.gap&&_(Z.from.t)+5=$.end),z=$.ask,N=o.map((Z,ge)=>`${S(Z.label)} ${T($.values[ge])}`).join("
              ");l&&(N="No quote in this bucket",z?.samples===1&&!K?N=`Observed ask ${T(z.close)}
              1 sampled quote; direction unknown`:z&&!K&&(N=`Open ${T(z.open)} · High ${T(z.high)}
              Low ${T(z.low)} · Close ${T(z.close)}
              ${S(z.samples)} sampled quotes`),$.partial&&!K&&(N+="
              Partial interval")),l&&!K&&o.length>1&&(N+="
              Last observed in interval:
              "+o.slice(1).map((Z,ge)=>`${S(Z.label)} ${T($.values[ge+1])}`).join("
              ")),R&&(N="No price observation in this gap.
              Dashed line connects recorded values.");let V=Z=>new Date(Z).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",timeZone:"UTC"}),de=V(R||K?x:$.t);l&&$.end&&!K&&(de=`${V($.t)} to ${V($.end)}`),be.innerHTML=`${S(de)} UTC
              ${N}${!R&&!K&&n.volume&&$.volume!==null&&$.volume!==void 0?`
              Reported sales ${$.volume}`:""}`,be.hidden=!1,be.style.left=`${Math.max(0,Math.min(Y+14,d-240))}px`,Ee.setAttribute("x1",String(R||K?Y:_(G($)))),Ee.setAttribute("x2",String(R||K?Y:_(G($)))),Ee.setAttribute("visibility","visible")}),je.addEventListener("pointerleave",()=>{be.hidden=!0,Ee.setAttribute("visibility","hidden")})}}});var Of=we((lE,Yy)=>{Yy.exports=' '});var Yc={};A(Yc,{Terminal:()=>Cr,default:()=>Jy});var Ff,Df,$r,qf,Kf,So,Cr,Xy,Jy,Xc=w(()=>{"use strict";F();kr();mc();gc();Mc();Ac();Rc();Ic();_c();zc();Oc();Dc();Er();Kc();Uc();Wc();xe();Ve();pe();Vt();Vc();Uo();Ff="kute_market_advanced",Df="kute_market_layout",$r=[.8,.9,1,1.1,1.2,1.35,1.5],qf=480,Kf=360,So=()=>({q:"",rarity:"",type:"",sort:"volume",page:1,budget:"",minSales:""}),Cr=class{constructor(){this.overlay=null,this.shadow=null,this.controller=null,this.chart=null,this.returnFocus=null,this.tab="overview",this.discoveryTab="search",this.arg=void 0,this.generation=0,this.advanced=!1,this.view=null,this.saved=new Map,this.previous="search",this.portfolioFilter="",this.itemSearch=null,this.holdings=[],this.tradeRevision=0,this.analyzer={give:[],get:[],giveKr:0,getKr:0};try{this.advanced=localStorage.getItem(Ff)==="1"}catch{this.advanced=!1}this.layout={width:0,height:0,scale:1,maximized:!1};try{let e=JSON.parse(localStorage.getItem(Df)??"{}");Number.isFinite(e.width)&&(this.layout.width=e.width),Number.isFinite(e.height)&&(this.layout.height=e.height),$r.includes(e.scale)&&(this.layout.scale=e.scale),this.layout.maximized=e.maximized===!0}catch{}}frame(){return this.shadow?.querySelector("#km")??null}applyLayout(){let e=this.frame();if(!e)return;let{scale:t,maximized:o}=this.layout,n=window.innerWidth-(o?0:16),r=window.innerHeight-(o?0:16),i=o?n:Math.max(Math.min(qf,n),Math.min(this.layout.width||Math.min(1320,window.innerWidth*.96),n)),a=o?r:Math.max(Math.min(Kf,r),Math.min(this.layout.height||Math.min(880,window.innerHeight*.92),r));e.style.zoom=String(t),e.style.width=`${i/t}px`,e.style.height=`${a/t}px`,e.classList.toggle("maximized",o);let l=this.shadow?.querySelector("#kmMaximize");l?.setAttribute("aria-pressed",String(o)),l?.setAttribute("title",o?"Restore size (double-click the header)":"Maximize (double-click the header)");let c=this.shadow?.querySelector("#kmScaleValue");c&&(c.textContent=`${Math.round(t*100)}%`)}saveLayout(){this.applyLayout();try{localStorage.setItem(Df,JSON.stringify(this.layout))}catch{}}rescale(e){let t=$r.indexOf(this.layout.scale);this.layout.scale=e?$r[Math.max(0,Math.min($r.length-1,t+e))]:1,this.saveLayout()}toggleMaximized(){this.layout.maximized=!this.layout.maximized,this.saveLayout()}startResize(e){let{target:t}=e,o=this.frame();if(!(t instanceof HTMLElement)||!o||e.button!==0)return;let{grip:n}=t.dataset;if(!n)return;e.preventDefault(),t.setPointerCapture(e.pointerId);let r=o.getBoundingClientRect(),{clientX:i,clientY:a}=e,l=Number(n.includes("e"))-Number(n.includes("w")),c=Number(n.includes("s"))-Number(n.includes("n"));o.classList.add("resizing");let d=p=>{l&&(this.layout.width=Math.max(qf,r.width+2*l*(p.clientX-i))),c&&(this.layout.height=Math.max(Kf,r.height+2*c*(p.clientY-a))),this.applyLayout()},h=()=>{t.removeEventListener("pointermove",d),o.classList.remove("resizing"),this.layout.width=Math.round(Math.min(this.layout.width,window.innerWidth-16)),this.layout.height=Math.round(Math.min(this.layout.height,window.innerHeight-16)),this.saveLayout()};t.addEventListener("pointermove",d),t.addEventListener("lostpointercapture",h,{once:!0})}async open(e,t){if(!document.pointerLockElement){if(!this.overlay){let o=await Promise.resolve().then(()=>ue(Of(),1)).catch(()=>null);if(!o||document.pointerLockElement)return;if(this.overlay){await this.show(e??this.tab,t);return}this.returnFocus=document.activeElement instanceof HTMLElement?document.activeElement:null;let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483647;display:grid;place-items:center;background:rgba(7,8,13,.78)";let r=document.createElement("div");n.append(r),this.shadow=r.attachShadow({mode:"open"}),this.shadow.innerHTML=o.default,this.overlay=n,this.controller=new AbortController;let{signal:i}=this.controller;document.body.append(n),this.applyLayout(),window.addEventListener("resize",()=>this.applyLayout(),{signal:i}),this.shadow.addEventListener("pointerdown",l=>this.startResize(l),{signal:i}),this.shadow.querySelector(".kmHead")?.addEventListener("dblclick",l=>{l.target instanceof Element&&!l.target.closest("button,input,label,form")&&this.toggleMaximized()},{signal:i}),this.itemSearch=new jo(this.shadow,i,(l,c)=>this.selectItem(l,c),(l,c)=>this.show(c==="discover"?this.searchTab():"search",{...c==="discover"?this.readFilters(1):So(),q:l,page:1}),()=>this.holdings),this.shadow.addEventListener("click",l=>this.click(l),{signal:i}),this.shadow.addEventListener("change",l=>this.changed(l),{signal:i}),this.shadow.addEventListener("input",l=>this.input(l),{signal:i}),this.shadow.querySelector("#kmSearchForm")?.addEventListener("submit",l=>{l.preventDefault(),this.show("search",{...So(),q:this.value("#kmGlobalSearch")})},{signal:i}),n.addEventListener("click",l=>{l.target===n&&this.close()},{signal:i}),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&this.close()},{signal:i}),document.addEventListener("keydown",l=>this.key(l),{signal:i,capture:!0});let a=this.shadow.querySelector("#kmAdvanced");a.checked=this.advanced,this.shadow.querySelector("#kmGlobalSearch")?.focus()}await this.show(e??this.tab,t)}}close(){this.remember(),this.controller?.abort(),this.controller=null,this.itemSearch=null,this.chart?.destroy(),this.chart=null,this.overlay?.remove(),this.overlay=null,this.shadow=null,this.generation++,this.returnFocus?.focus({preventScroll:!0})}remember(){let e=this.shadow?.querySelector("#kmBody");this.tab==="item"&&(this.arg=this.itemState()),(this.tab==="search"||this.tab==="active")&&this.shadow?.querySelector("#kmQ")&&(this.arg=this.readFilters(this.searchState().page)),this.tab==="deals"&&this.shadow?.querySelector("#kmDealBudget")&&(this.arg={budget:this.value("#kmDealBudget")}),e&&this.saved.set(this.tab,{arg:this.arg,scroll:e.scrollTop})}value(e){return this.shadow?.querySelector(e)?.value??""}searchState(){let e={...So(),...this.tab==="active"?{minSales:"1",sort:"liquidity"}:{},...typeof this.arg=="object"&&this.arg?this.arg:{}};return this.tab==="active"&&(e.minSales=String(Math.max(1,Number(e.minSales)||1))),e}searchTab(){return this.tab==="active"?"active":"search"}itemState(){let e={skin:typeof this.arg=="number"?this.arg:0,range:"1M",candles:!1,overlay:"none",zoom:1,offset:0,...typeof this.arg=="object"&&this.arg?this.arg:{}};if(this.view?.item?.skin.skin===e.skin)for(let[t,o]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"}))this.shadow?.querySelector("#"+o)&&Object.assign(e,{[t]:this.value("#"+o)});return e}async show(e,t,o=!1){if(!this.shadow)return;this.remember(),e==="item"&&this.tab!=="item"&&(this.previous=this.tab);let n=this.saved.get(this.tab)?.scroll??0,r=this.saved.get(e);this.tab=e,this.arg=t===void 0?r?.arg:t;let i=++this.generation;this.itemSearch?.dismiss(),this.chart?.destroy(),this.chart=null;let a=this.shadow.querySelector("#kmBody"),l=wr.includes(e);l&&(this.discoveryTab=e);let c=this.shadow.querySelector("#kmDiscoverTabs");c.hidden=!l;for(let p of c.querySelectorAll("button")){let m=p.dataset.discover===e;p.setAttribute("aria-selected",String(m)),p.tabIndex=m?0:-1}l?(a.setAttribute("role","tabpanel"),a.setAttribute("aria-labelledby",`kmDiscover-${e}`)):(a.removeAttribute("role"),a.removeAttribute("aria-labelledby")),a.setAttribute("aria-busy","true"),a.innerHTML=fe("Loading market data","Fetching the latest available observations.");let d=this.shadow.querySelector("#kmTitle");d&&(d.textContent=Js[e]??"Market");let h=e==="item"?this.previous:e;wr.includes(h)&&(h="search"),h==="indices"&&(h="overview");for(let p of this.shadow.querySelectorAll("[data-nav]")){let m=p.dataset.nav===h;p.classList.toggle("on",m),m?p.setAttribute("aria-current","page"):p.removeAttribute("aria-current")}this.updateWatchCount();try{let p=await this.render(e);if(i!==this.generation||!this.shadow)return;this.view=p,this.holdings=p.holdings??[],a.innerHTML=p.html,a.scrollTop=t===void 0?r?.scroll??0:0,o&&(a.scrollTop=n);let m=this.shadow.querySelector("#kmFootRight");m&&(m.textContent=p.asOf?`${p.asOfLabel??"Estimates calculated"} ${We(Math.max(0,Date.now()-p.asOf))} ago`:"Estimates from observed market data");let f=a.querySelector(".chart");if(f&&p.points&&p.series&&(this.chart=new Go(f,p.points,p.series,p.chartOptions)),e==="portfolio"&&this.filterHoldings(),e==="item"){let g=this.arg;for(let[b,v]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"})){let k=a.querySelector("#"+v),E=g?.[b];k&&typeof E=="string"&&(k.value=E)}this.updatePlanner(),this.filterListings()}}catch{if(i!==this.generation)return;a.innerHTML=fe("Market data is unavailable","Try again in a moment. Your saved watchlist stays on this device.",'')}finally{i===this.generation&&a.setAttribute("aria-busy","false")}}updateWatchCount(){let e=this.shadow?.querySelector("#kmWatchCount");e&&(e.textContent=String(Se().length))}async render(e){switch(e){case"overview":return this.overview();case"intelligence":return this.intelligence();case"search":return this.search();case"active":return this.search();case"item":return this.item();case"watchlist":return this.watchlist();case"movers":return this.movers();case"deals":return this.deals();case"indices":return this.indices();case"portfolio":return this.portfolio();case"analyze":return this.analyze();default:return this.help()}}intelligence(){return Fc(this)}unavailable(){return{html:fe("Market data is unavailable",W.lastError||"The market server could not be reached. Try again in a moment.",'')}}intro(e,t,o=""){return sn(this,e,t,o)}table(e){return qc(this,e)}compactList(e){return jc(this,e)}overview(){return hc(this)}search(){return fc(this)}item(){return Cc(this)}watchlist(){return Tc(this)}movers(){return Lc(this)}deals(){return Pc(this)}indices(){return Nc(this)}portfolio(){return Bc(this)}async selectItem(e,t){if(t!=="give"&&t!=="get"){this.show("item",e.skin);return}let o=this.analyzer[t].find(n=>n.skin===e.skin);o?o.count=Math.min(1e4,o.count+1):this.analyzer[t].push({...e,count:1}),await this.show("analyze",this.arg,!0),this.tab==="analyze"&&this.shadow?.querySelector(`#kmPick${t}`)?.focus({preventScroll:!0})}analyze(){return Hc(this)}async refreshTrade(){let{generation:e}=this,t=++this.tradeRevision;this.shadow?.querySelector("#kmTradeOutcome")?.setAttribute("aria-busy","true");let n=this.shadow?.querySelector("#kmFootRight");n&&(n.textContent="Updating trade estimates...");let r=await this.analyze();if(e!==this.generation||t!==this.tradeRevision||!this.shadow)return;let i=document.createElement("div");i.innerHTML=r.html;for(let a of[".tradeSideHead>span",".tradeTotal",".tradeItemValue","#kmTradeOutcome"]){let l=i.querySelectorAll(a);this.shadow.querySelectorAll(a).forEach((c,d)=>{l[d]&&c.replaceWith(l[d])})}n&&(n.textContent=r.asOf?`Estimates calculated ${We(Math.max(0,Date.now()-r.asOf))} ago`:"Estimates from observed market data"),this.view=r}help(){return Gc(this)}updatePlanner(){let e=this.shadow?.querySelector("#kmPlannerResult");if(!e||!this.view?.item)return;let t=Number(this.value("#kmSellPrice")),o=Number(this.value("#kmSellQuantity"));if(!Number.isFinite(t)||t<=0||!Number.isInteger(o)||o<1||o>1e4){e.textContent="Enter a positive asking price and a quantity from 1 to 10,000.";return}let n=this.view.listings;if(!n){e.textContent="Competing listings are unavailable. Try again when market data is available.";return}let r=n?.listings.filter(a=>a.pricen.listings.length;e.innerHTML=`${i?"At least ":""}${r} cheaper listing${r===1?"":"s"} observed${n?"":" (listing data unavailable)"}.
              + `}var Gc=w(()=>{"use strict";Be();pe()});var Ff,Of=w(()=>{Ff=`

              The numbers

              K
              Kute estimate

              What the item is worth, from recent sales and trades.

              Ask
              Lowest ask

              The cheapest listing right now.

              %
              Ask vs estimate

              Plus means the ask is above the estimate, minus means below.

              0-100
              Evidence score

              How much data backs the estimate. Low means take it with a grain of salt.

              Activity grades

              A
              Very active

              Sells often, easy to get rid of.

              B
              Active

              Sells regularly.

              C
              Moderate

              Might take a while or a lower price.

              D
              Thin

              Few sales, hard to sell.

              F
              Very limited

              Barely trades, the estimate is a rough guess.

              Trade verdicts

              +
              Favorable

              You get more value than you give.

              =
              Fair

              Both sides are about even.

              -
              Unfavorable

              You give more value than you get.

              ?
              Not enough evidence

              Some items can't be valued well enough to say.

              Estimates, not promises. Kute never buys, sells or trades for you.

              `});var Df={};A(Df,{helpView:()=>Wc});function Wc(s){return{html:on(s,"How it works.","What the numbers mean.")+Ff}}var Vc=w(()=>{"use strict";Of();Er()});var qf={};A(qf,{default:()=>Uo});var Uo,Yc=w(()=>{"use strict";pe();Sr();Uo=class{constructor(e,t,o,n={}){this.host=e,this.points=t,this.series=o,this.options=n,this.observer=new ResizeObserver(r=>this.draw(r[0]?.contentRect.width??700)),this.observer.observe(e),this.draw(e.clientWidth||700)}destroy(){this.observer.disconnect(),this.host.replaceChildren()}draw(e){let{host:t,series:o,options:n}=this,r=Math.max(8,Math.ceil(this.points.length/(n.zoom??1))),i=Math.max(Math.min(r,this.points.length),this.points.length-(n.offset??0)),a=this.points.slice(Math.max(0,i-r),i),l=!!n.candles,c=a.flatMap(j=>l?[...j.ask?[j.ask.low,j.ask.high]:[],...j.values.slice(1)]:j.values).flatMap(j=>j!==null&&Number.isFinite(j)?[j]:[]);if(!c.length){t.innerHTML=`
              ${l?"No sampled asking-price candles in this period. Try a longer range or switch to the line chart.":"No price observations in this period. Try a longer range."}
              `;return}let u=Math.max(280,e),h=270,p=62,f=u-16,m=20,g=n.volume?196:230,b=Math.min(...c),v=Math.max(...c),k=v-b||Math.max(1,v*.1),E=Math.max(0,b-k*.12),L=v+k*.12,y=a[0].t,I=((l?a.at(-1)?.end:a.at(-1)?.t)??y)-y||864e5,_=j=>p+(j-y)/I*(f-p),H=j=>g-(j-E)/(L-E)*(g-m),G=j=>l&&j.end?(j.t+j.end)/2:j.t,J=n.stepMs??864e5,B=o.map((j,X)=>$c(a,X,J)),re="";for(let j=0;j<=4;j++){let X=E+(L-E)*j/4,Y=L-E<10?X.toFixed(2):T(X);re+=`${S(Y)}`}for(let j=0;j<=4;j++){let X=y+I*j/4,Y=new Date(X),x=I<=2*864e5?Y.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",timeZone:"UTC"}):Y.toLocaleDateString([],{month:"short",day:"numeric",timeZone:"UTC"}),$="middle";j===0&&($="start"),j===4&&($="end"),re+=`${S(x)}`}if(n.volume){let j=Math.max(1,...a.map(Y=>Y.volume??0)),X=Math.max(1,Math.min(14,(f-p)/Math.max(1,a.length)*.6));re+=a.filter(Y=>Y.volume!==null&&Y.volume!==void 0).map(Y=>``).join("")}if(l){let j=Math.max(3,Math.min(14,(f-p)*J/I*.65));for(let X of a){let Y=X.ask;if(!Y)continue;let x="flat",$="#9698a7";Y.samples<=1?x="single":Y.close!==Y.open&&(x=Y.close>Y.open?"up":"down",$=Y.close>Y.open?"#71d9b0":"#f68c9b");let R=_(G(X));re+=``,Y.samples>1&&(re+=``),x==="single"||x==="flat"?re+=``:re+=``,re+=""}}for(let[j,X]of o.entries()){if(l&&j===0)continue;let Y="",x="";for(let $ of B[j]){let R=`M${_(G($.from))},${H($.from.values[j])} L${_(G($.to))},${H($.to.values[j])} `;$.gap?n.connectGaps&&(x+=R):Y+=R}for(let $ of a){let R=$.values[j];R==null||!Number.isFinite(R)||(re+=``)}re+=``,x&&(re+=``)}t.innerHTML=`j.label).join(", "))}">${re}`;let je=t.querySelector("svg"),be=t.querySelector(".chartTooltip"),Ee=t.querySelector(".crosshair");je.addEventListener("pointermove",j=>{let X=je.getBoundingClientRect(),Y=(j.clientX-X.left)*u/X.width,x=y+(Y-p)/(f-p)*I,$=a.find(Z=>l&&Z.end&&x>=Z.t&&xMath.abs(G(ge)-x)Z.gap&&_(Z.from.t)+5=$.end),z=$.ask,N=o.map((Z,ge)=>`${S(Z.label)} ${T($.values[ge])}`).join("
              ");l&&(N="No quote in this bucket",z?.samples===1&&!K?N=`Observed ask ${T(z.close)}
              1 sampled quote; direction unknown`:z&&!K&&(N=`Open ${T(z.open)} · High ${T(z.high)}
              Low ${T(z.low)} · Close ${T(z.close)}
              ${S(z.samples)} sampled quotes`),$.partial&&!K&&(N+="
              Partial interval")),l&&!K&&o.length>1&&(N+="
              Last observed in interval:
              "+o.slice(1).map((Z,ge)=>`${S(Z.label)} ${T($.values[ge+1])}`).join("
              ")),R&&(N="No price observation in this gap.
              Dashed line connects recorded values.");let V=Z=>new Date(Z).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",timeZone:"UTC"}),de=V(R||K?x:$.t);l&&$.end&&!K&&(de=`${V($.t)} to ${V($.end)}`),be.innerHTML=`${S(de)} UTC
              ${N}${!R&&!K&&n.volume&&$.volume!==null&&$.volume!==void 0?`
              Reported sales ${$.volume}`:""}`,be.hidden=!1,be.style.left=`${Math.max(0,Math.min(Y+14,u-240))}px`,Ee.setAttribute("x1",String(R||K?Y:_(G($)))),Ee.setAttribute("x2",String(R||K?Y:_(G($)))),Ee.setAttribute("visibility","visible")}),je.addEventListener("pointerleave",()=>{be.hidden=!0,Ee.setAttribute("visibility","hidden")})}}});var Kf=we((hE,e1)=>{e1.exports=' '});var Xc={};A(Xc,{Terminal:()=>Cr,default:()=>o1});var jf,Uf,$r,Gf,Wf,So,Cr,t1,o1,Jc=w(()=>{"use strict";F();kr();fc();bc();Tc();Lc();Pc();Nc();Bc();Hc();Fc();qc();Er();jc();Gc();Vc();xe();Ve();pe();Vt();Yc();jo();jf="kute_market_advanced",Uf="kute_market_layout",$r=[.8,.9,1,1.1,1.2,1.35,1.5],Gf=480,Wf=360,So=()=>({q:"",rarity:"",type:"",sort:"volume",page:1,budget:"",minSales:""}),Cr=class{constructor(){this.overlay=null,this.shadow=null,this.controller=null,this.chart=null,this.returnFocus=null,this.tab="overview",this.discoveryTab="search",this.arg=void 0,this.generation=0,this.advanced=!1,this.view=null,this.saved=new Map,this.previous="search",this.portfolioFilter="",this.itemSearch=null,this.holdings=[],this.tradeRevision=0,this.analyzer={give:[],get:[],giveKr:0,getKr:0};try{this.advanced=localStorage.getItem(jf)==="1"}catch{this.advanced=!1}this.layout={width:0,height:0,scale:1,maximized:!1};try{let e=JSON.parse(localStorage.getItem(Uf)??"{}");Number.isFinite(e.width)&&(this.layout.width=e.width),Number.isFinite(e.height)&&(this.layout.height=e.height),$r.includes(e.scale)&&(this.layout.scale=e.scale),this.layout.maximized=e.maximized===!0}catch{}}frame(){return this.shadow?.querySelector("#km")??null}applyLayout(){let e=this.frame();if(!e)return;let{scale:t,maximized:o}=this.layout,n=window.innerWidth-(o?0:16),r=window.innerHeight-(o?0:16),i=o?n:Math.max(Math.min(Gf,n),Math.min(this.layout.width||Math.min(1320,window.innerWidth*.96),n)),a=o?r:Math.max(Math.min(Wf,r),Math.min(this.layout.height||Math.min(880,window.innerHeight*.92),r));e.style.zoom=String(t),e.style.width=`${i/t}px`,e.style.height=`${a/t}px`,e.classList.toggle("maximized",o);let l=this.shadow?.querySelector("#kmMaximize");l?.setAttribute("aria-pressed",String(o)),l?.setAttribute("title",o?"Restore size (double-click the header)":"Maximize (double-click the header)");let c=this.shadow?.querySelector("#kmScaleValue");c&&(c.textContent=`${Math.round(t*100)}%`)}saveLayout(){this.applyLayout();try{localStorage.setItem(Uf,JSON.stringify(this.layout))}catch{}}rescale(e){let t=$r.indexOf(this.layout.scale);this.layout.scale=e?$r[Math.max(0,Math.min($r.length-1,t+e))]:1,this.saveLayout()}toggleMaximized(){this.layout.maximized=!this.layout.maximized,this.saveLayout()}startResize(e){let{target:t}=e,o=this.frame();if(!(t instanceof HTMLElement)||!o||e.button!==0)return;let{grip:n}=t.dataset;if(!n)return;e.preventDefault(),t.setPointerCapture(e.pointerId);let r=o.getBoundingClientRect(),{clientX:i,clientY:a}=e,l=Number(n.includes("e"))-Number(n.includes("w")),c=Number(n.includes("s"))-Number(n.includes("n"));o.classList.add("resizing");let u=p=>{l&&(this.layout.width=Math.max(Gf,r.width+2*l*(p.clientX-i))),c&&(this.layout.height=Math.max(Wf,r.height+2*c*(p.clientY-a))),this.applyLayout()},h=()=>{t.removeEventListener("pointermove",u),o.classList.remove("resizing"),this.layout.width=Math.round(Math.min(this.layout.width,window.innerWidth-16)),this.layout.height=Math.round(Math.min(this.layout.height,window.innerHeight-16)),this.saveLayout()};t.addEventListener("pointermove",u),t.addEventListener("lostpointercapture",h,{once:!0})}async open(e,t){if(!document.pointerLockElement){if(!this.overlay){let o=await Promise.resolve().then(()=>ue(Kf(),1)).catch(()=>null);if(!o||document.pointerLockElement)return;if(this.overlay){await this.show(e??this.tab,t);return}this.returnFocus=document.activeElement instanceof HTMLElement?document.activeElement:null;let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483647;display:grid;place-items:center;background:rgba(7,8,13,.78)";let r=document.createElement("div");n.append(r),this.shadow=r.attachShadow({mode:"open"}),this.shadow.innerHTML=o.default,this.overlay=n,this.controller=new AbortController;let{signal:i}=this.controller;document.body.append(n),this.applyLayout(),window.addEventListener("resize",()=>this.applyLayout(),{signal:i}),this.shadow.addEventListener("pointerdown",l=>this.startResize(l),{signal:i}),this.shadow.querySelector(".kmHead")?.addEventListener("dblclick",l=>{l.target instanceof Element&&!l.target.closest("button,input,label,form")&&this.toggleMaximized()},{signal:i}),this.itemSearch=new Ko(this.shadow,i,(l,c)=>this.selectItem(l,c),(l,c)=>this.show(c==="discover"?this.searchTab():"search",{...c==="discover"?this.readFilters(1):So(),q:l,page:1}),()=>this.holdings),this.shadow.addEventListener("click",l=>this.click(l),{signal:i}),this.shadow.addEventListener("change",l=>this.changed(l),{signal:i}),this.shadow.addEventListener("input",l=>this.input(l),{signal:i}),this.shadow.querySelector("#kmSearchForm")?.addEventListener("submit",l=>{l.preventDefault(),this.show("search",{...So(),q:this.value("#kmGlobalSearch")})},{signal:i}),n.addEventListener("click",l=>{l.target===n&&this.close()},{signal:i}),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&this.close()},{signal:i}),document.addEventListener("keydown",l=>this.key(l),{signal:i,capture:!0});let a=this.shadow.querySelector("#kmAdvanced");a.checked=this.advanced,this.shadow.querySelector("#kmGlobalSearch")?.focus()}await this.show(e??this.tab,t)}}close(){this.remember(),this.controller?.abort(),this.controller=null,this.itemSearch=null,this.chart?.destroy(),this.chart=null,this.overlay?.remove(),this.overlay=null,this.shadow=null,this.generation++,this.returnFocus?.focus({preventScroll:!0})}remember(){let e=this.shadow?.querySelector("#kmBody");this.tab==="item"&&(this.arg=this.itemState()),(this.tab==="search"||this.tab==="active")&&this.shadow?.querySelector("#kmQ")&&(this.arg=this.readFilters(this.searchState().page)),this.tab==="deals"&&this.shadow?.querySelector("#kmDealBudget")&&(this.arg={budget:this.value("#kmDealBudget")}),e&&this.saved.set(this.tab,{arg:this.arg,scroll:e.scrollTop})}value(e){return this.shadow?.querySelector(e)?.value??""}searchState(){let e={...So(),...this.tab==="active"?{minSales:"1",sort:"liquidity"}:{},...typeof this.arg=="object"&&this.arg?this.arg:{}};return this.tab==="active"&&(e.minSales=String(Math.max(1,Number(e.minSales)||1))),e}searchTab(){return this.tab==="active"?"active":"search"}itemState(){let e={skin:typeof this.arg=="number"?this.arg:0,range:"1M",candles:!1,overlay:"none",zoom:1,offset:0,...typeof this.arg=="object"&&this.arg?this.arg:{}};if(this.view?.item?.skin.skin===e.skin)for(let[t,o]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"}))this.shadow?.querySelector("#"+o)&&Object.assign(e,{[t]:this.value("#"+o)});return e}async show(e,t,o=!1){if(!this.shadow)return;this.remember(),e==="item"&&this.tab!=="item"&&(this.previous=this.tab);let n=this.saved.get(this.tab)?.scroll??0,r=this.saved.get(e);this.tab=e,this.arg=t===void 0?r?.arg:t;let i=++this.generation;this.itemSearch?.dismiss(),this.chart?.destroy(),this.chart=null;let a=this.shadow.querySelector("#kmBody"),l=wr.includes(e);l&&(this.discoveryTab=e);let c=this.shadow.querySelector("#kmDiscoverTabs");c.hidden=!l;for(let p of c.querySelectorAll("button")){let f=p.dataset.discover===e;p.setAttribute("aria-selected",String(f)),p.tabIndex=f?0:-1}l?(a.setAttribute("role","tabpanel"),a.setAttribute("aria-labelledby",`kmDiscover-${e}`)):(a.removeAttribute("role"),a.removeAttribute("aria-labelledby")),a.setAttribute("aria-busy","true"),a.innerHTML=fe("Loading market data","Fetching the latest available observations.");let u=this.shadow.querySelector("#kmTitle");u&&(u.textContent=Xs[e]??"Market");let h=e==="item"?this.previous:e;wr.includes(h)&&(h="search"),h==="indices"&&(h="overview");for(let p of this.shadow.querySelectorAll("[data-nav]")){let f=p.dataset.nav===h;p.classList.toggle("on",f),f?p.setAttribute("aria-current","page"):p.removeAttribute("aria-current")}this.updateWatchCount();try{let p=await this.render(e);if(i!==this.generation||!this.shadow)return;this.view=p,this.holdings=p.holdings??[],a.innerHTML=p.html,a.scrollTop=t===void 0?r?.scroll??0:0,o&&(a.scrollTop=n);let f=this.shadow.querySelector("#kmFootRight");f&&(f.textContent=p.asOf?`${p.asOfLabel??"Estimates calculated"} ${We(Math.max(0,Date.now()-p.asOf))} ago`:"Estimates from observed market data");let m=a.querySelector(".chart");if(m&&p.points&&p.series&&(this.chart=new Uo(m,p.points,p.series,p.chartOptions)),e==="portfolio"&&this.filterHoldings(),e==="item"){let g=this.arg;for(let[b,v]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"})){let k=a.querySelector("#"+v),E=g?.[b];k&&typeof E=="string"&&(k.value=E)}this.updatePlanner(),this.filterListings()}}catch{if(i!==this.generation)return;a.innerHTML=fe("Market data is unavailable","Try again in a moment. Your saved watchlist stays on this device.",'')}finally{i===this.generation&&a.setAttribute("aria-busy","false")}}updateWatchCount(){let e=this.shadow?.querySelector("#kmWatchCount");e&&(e.textContent=String(Se().length))}async render(e){switch(e){case"overview":return this.overview();case"intelligence":return this.intelligence();case"search":return this.search();case"active":return this.search();case"item":return this.item();case"watchlist":return this.watchlist();case"movers":return this.movers();case"deals":return this.deals();case"indices":return this.indices();case"portfolio":return this.portfolio();case"analyze":return this.analyze();default:return this.help()}}intelligence(){return Dc(this)}unavailable(){return{html:fe("Market data is unavailable",W.lastError||"The market server could not be reached. Try again in a moment.",'')}}intro(e,t,o=""){return on(this,e,t,o)}table(e){return Kc(this,e)}compactList(e){return Uc(this,e)}overview(){return mc(this)}search(){return gc(this)}item(){return Mc(this)}watchlist(){return Ac(this)}movers(){return Rc(this)}deals(){return Ic(this)}indices(){return _c(this)}portfolio(){return zc(this)}async selectItem(e,t){if(t!=="give"&&t!=="get"){this.show("item",e.skin);return}let o=this.analyzer[t].find(n=>n.skin===e.skin);o?o.count=Math.min(1e4,o.count+1):this.analyzer[t].push({...e,count:1}),await this.show("analyze",this.arg,!0),this.tab==="analyze"&&this.shadow?.querySelector(`#kmPick${t}`)?.focus({preventScroll:!0})}analyze(){return Oc(this)}async refreshTrade(){let{generation:e}=this,t=++this.tradeRevision;this.shadow?.querySelector("#kmTradeOutcome")?.setAttribute("aria-busy","true");let n=this.shadow?.querySelector("#kmFootRight");n&&(n.textContent="Updating trade estimates...");let r=await this.analyze();if(e!==this.generation||t!==this.tradeRevision||!this.shadow)return;let i=document.createElement("div");i.innerHTML=r.html;for(let a of[".tradeSideHead>span",".tradeTotal",".tradeItemValue","#kmTradeOutcome"]){let l=i.querySelectorAll(a);this.shadow.querySelectorAll(a).forEach((c,u)=>{l[u]&&c.replaceWith(l[u])})}n&&(n.textContent=r.asOf?`Estimates calculated ${We(Math.max(0,Date.now()-r.asOf))} ago`:"Estimates from observed market data"),this.view=r}help(){return Wc(this)}updatePlanner(){let e=this.shadow?.querySelector("#kmPlannerResult");if(!e||!this.view?.item)return;let t=Number(this.value("#kmSellPrice")),o=Number(this.value("#kmSellQuantity"));if(!Number.isFinite(t)||t<=0||!Number.isInteger(o)||o<1||o>1e4){e.textContent="Enter a positive asking price and a quantity from 1 to 10,000.";return}let n=this.view.listings;if(!n){e.textContent="Competing listings are unavailable. Try again when market data is available.";return}let r=n?.listings.filter(a=>a.pricen.listings.length;e.innerHTML=`${i?"At least ":""}${r} cheaper listing${r===1?"":"s"} observed${n?"":" (listing data unavailable)"}.
              ${T(t*o)} KR gross if all ${o} sell · ${it(t/this.view.item.skin.fair-1)} vs estimate.`}filterHoldings(){let e=this.portfolioFilter.toLocaleLowerCase().trim();for(let t of this.shadow?.querySelectorAll("tr[data-skin]")??[]){let o=t;o.hidden=!o.querySelector(".itemIdentity")?.textContent?.toLocaleLowerCase().includes(e)}}filterListings(){let e=this.value("#kmListingMax"),t=this.value("#kmSerialMax"),o=this.value("#kmWearMax"),n=this.value("#kmAgeMax"),r=this.value("#kmSellerMax");for(let c of this.shadow?.querySelectorAll("#kmListingRows tr")??[]){let d=c;d.hidden=!!(e&&Number(d.dataset.price)>Number(e))||!!(t&&(!d.dataset.serial||Number(d.dataset.serial)>Number(t)))||!!(o&&(!d.dataset.wear||Number(d.dataset.wear)>Number(o)))||!!(n&&(!d.dataset.age||Number(d.dataset.age)>Number(n)))||!!(r&&(!d.dataset.sellerCount||Number(d.dataset.sellerCount)>Number(r)))}let i=this.shadow?.querySelector("#kmListingCount"),l=[...this.shadow?.querySelectorAll("#kmListingRows tr")??[]].filter(c=>!c.hidden).length;i&&(i.textContent=`${l} sampled listings shown; ${this.view?.listings?.total??"unknown"} reported listed.`)}applyFilters(e=1){this.show(this.searchTab(),this.readFilters(e))}readFilters(e){return{q:this.value("#kmQ").trim(),rarity:this.value("#kmRarity"),type:this.value("#kmType"),sort:this.value("#kmSort"),budget:this.value("#kmBudget"),minSales:this.value("#kmSales"),page:e}}click(e){let t=e.target instanceof Element?e.target.closest("button,tr[data-skin],tr[data-index-name],tr[data-category]"):null;if(!t||t.hasAttribute("disabled"))return;let o=t.dataset;if(o.externalUrl){e.preventDefault();try{let n=new URL(o.externalUrl);if(n.protocol!=="https:"||n.username||n.password||n.port)return;if(!(["github.com","kute.lol","krunker.io"].includes(n.hostname)||n.hostname==="discord.com"&&n.pathname.startsWith("/invite/"))){u.showNotification("This news link is not supported by Kute.",!1,6);return}if(n.hostname==="krunker.io"&&!u.hostFeatures?.includes("krunker-links")){u.showNotification("Update the Kute application to open Krunker news links.",!1,6);return}window.chrome.webview.postMessage(`open-url, ${n.href}`)}catch{}return}if(o.intelKind!==void 0){this.show("intelligence",o.intelKind);return}if(t.id==="kmClose"){this.close();return}if(t.id==="kmMaximize"){this.toggleMaximized();return}if(o.scale!==void 0){this.rescale(Number(o.scale));return}if(o.discover){if(o.discover===this.tab)return;o.discover==="deals"&&!this.saved.has("deals")&&(this.tab==="search"||this.tab==="active")?this.show("deals",{budget:this.value("#kmBudget")}):this.show(o.discover);return}if(o.nav==="search"){this.show(this.discoveryTab);return}if(o.nav){this.show(o.nav);return}if(o.skin){this.show("item",Number(o.skin));return}if(o.category){this.show("search",{...So(),type:o.category,minSales:"1"});return}if(o.page){this.applyFilters(Number(o.page));return}if(o.range){this.show("item",{...this.itemState(),range:o.range,zoom:1,offset:0},!0);return}if(o.chartMode){this.show("item",{...this.itemState(),candles:o.chartMode==="candles"},!0);return}if(o.pan!==void 0){this.show("item",{...this.itemState(),offset:Number(o.pan)},!0);return}if(o.zoom){this.show("item",{...this.itemState(),zoom:Number(o.zoom),offset:o.zoom==="1"?0:this.itemState().offset},!0);return}if(o.window){this.show("movers",o.window);return}if(o.indexName){this.show("indices",o.indexName);return}if(o.unwatch){if(!yo(Se().filter(n=>n.skin!==Number(o.unwatch)))){this.storageError();return}this.show("watchlist",this.arg,!0);return}if(o.remove!==void 0&&o.side){this.analyzer[o.side].splice(Number(o.remove),1),this.show("analyze",this.arg,!0);return}switch(o.action){case"discover":this.show("search",So());break;case"reset-search":this.show(this.searchTab(),this.tab==="active"?{...So(),minSales:"1",sort:"liquidity"}:So());break;case"back":this.show(this.previous);break;case"retry":this.retry();break;case"filters":this.applyFilters();break;case"deal-budget":this.show("deals",{budget:this.value("#kmDealBudget")});break;case"inventory":this.show("portfolio",this.value("#kmName").trim());break;case"analyze":this.show("analyze",this.arg,!0);break;case"clear-trade":this.analyzer={give:[],get:[],giveKr:0,getKr:0},this.show("analyze");break;case"watch":if(this.view?.item){if(!sc(this.view.item.skin)){this.storageError();return}this.show("item",this.arg,!0)}break;default:break}}storageError(){let e=this.shadow?.querySelector("#kmFootRight");e&&(e.textContent="Could not save on this device. The watchlist holds up to 100 items.")}async retry(){let{generation:e}=this;await W.retry(),e===this.generation&&await this.show(this.tab,this.arg)}changed(e){let t=e.target;if(t instanceof HTMLInputElement||t instanceof HTMLSelectElement)if(t.id==="kmAdvanced"){this.advanced=t.checked;try{localStorage.setItem(Ff,this.advanced?"1":"0")}catch{this.storageError()}this.show(this.tab,void 0,!0)}else if(t.id==="kmOverlay")this.show("item",{...this.itemState(),overlay:t.value},!0);else if(t.dataset.target){let o=Number(t.value),n=Se().map(r=>r.skin===Number(t.dataset.target)?{...r,target:o>0&&Number.isFinite(o)?o:null}:r);if(!yo(n)){this.storageError();return}this.show("watchlist",this.arg,!0)}else if(t.dataset.count!==void 0&&t.dataset.side){let o=this.analyzer[t.dataset.side][Number(t.dataset.count)];o&&(o.count=Math.min(1e4,Math.max(1,Math.floor(Number(t.value)||1))),t.value=String(o.count)),this.refreshTrade()}else if(t.dataset.kr){let o=Math.max(0,Math.min(1e9,Math.floor(Number(t.value)||0)));t.dataset.kr==="give"?this.analyzer.giveKr=o:this.analyzer.getKr=o,t.value=String(o),this.refreshTrade()}else t.closest("#kmFilters")&&t instanceof HTMLSelectElement&&this.applyFilters()}input(e){let t=e.target;if(t instanceof HTMLInputElement){if(t.id==="kmSellPrice"||t.id==="kmSellQuantity"){this.updatePlanner();return}if(["kmListingMax","kmSerialMax","kmWearMax","kmAgeMax","kmSellerMax"].includes(t.id)){this.filterListings();return}if(t.id==="kmHoldingFilter"){this.portfolioFilter=t.value,this.filterHoldings();return}}}key(e){if(!this.shadow||(e.stopImmediatePropagation(),this.itemSearch?.key(e))||e.isComposing)return;if(e.key==="Escape"){e.stopImmediatePropagation(),e.preventDefault(),this.close();return}if(e.ctrlKey&&!e.altKey&&["+","=","-","0"].includes(e.key)){e.preventDefault(),this.rescale({"-":-1,0:0}[e.key]??1);return}let t=this.shadow.activeElement;if(t?.matches("[data-discover]")&&["ArrowLeft","ArrowRight","Home","End"].includes(e.key)){e.preventDefault();let i=[...this.shadow.querySelectorAll("#kmDiscoverTabs button")],l=(i.indexOf(t)+(e.key==="ArrowRight"?1:-1)+i.length)%i.length;e.key==="Home"&&(l=0),e.key==="End"&&(l=i.length-1);let c=i[l];c.focus(),c.click();return}if(e.key==="Enter"&&t&&(t.closest("#kmFilters")?(e.preventDefault(),this.applyFilters()):t.id==="kmName"?(e.preventDefault(),this.show("portfolio",this.value("#kmName").trim())):t.matches("tr[data-skin],tr[data-index-name],tr[data-category]")&&(e.preventDefault(),t.click())),e.key!=="Tab")return;let o=[...this.shadow.querySelectorAll("button:not(:disabled):not([tabindex='-1']),input:not([type=hidden]),select,summary,[tabindex='0']")].filter(i=>i instanceof HTMLElement&&i.getClientRects().length&&!i.closest("[hidden]")),n=o[0],r=o.at(-1);e.shiftKey&&(t===n||!t)?(e.preventDefault(),r?.focus()):!e.shiftKey&&(t===r||!t)&&(e.preventDefault(),n?.focus())}},Xy=new Cr,Jy=Xy});var Zc={};A(Zc,{default:()=>Qy});var Jc,Zy,Qy,Mr=w(()=>{"use strict";F();Nt();xe();ec();oc();br();dc();Jc=class{constructor(){this.headerItem=document.createElement("div"),this.headerSeparator=document.createElement("div"),this.headerObserver=new MutationObserver(()=>this.placeButton()),this.onUnread=()=>this.updateBadge(),this.terminal=null,this.running=!1,this.warned=!1,u.settings.toggleMarket=e=>this.toggle(e),u.market={open:(e,t)=>this.open(e,t),toggle:e=>this.toggle(e)},this.toggle(!0)}toggle(e){if(e!==this.running)if(this.running=e,e){if(!W.hostSupported()){this.warned||(this.warned=!0,u.showNotification("The Kute Market needs a newer Kute. Update Kute to use it.",!1,8)),this.running=!1;return}if(he.offline()){this.running=!1;return}this.placeButton();let t=document.querySelector("#playerHeaderEl");t&&this.headerObserver.observe(t,{childList:!0,subtree:!0}),window.addEventListener(Ys,this.onUnread),fr.start(),gr.start(),Ct.start(),vr.start()}else this.headerObserver.disconnect(),window.removeEventListener(Ys,this.onUnread),this.headerItem.remove(),this.headerSeparator.remove(),fr.stop(),gr.stop(),Ct.stop(),vr.stop(),this.terminal?.close()}placeButton(){let e=document.querySelector("#playerHeaderEl .headerBarRight");if(!e||e.contains(this.headerItem))return;let t=[...e.querySelector(".nav-item")?.classList??[]].find(o=>o.startsWith("svelte-"))??"";this.headerItem.className=`nav-item ${t}`,this.headerItem.innerHTML=` Kute Market `,this.headerItem.onclick=()=>this.open(Ct.unread.size?"watchlist":void 0),this.headerSeparator.className="verticalSeparator",this.headerSeparator.style.cssText="height: 35px;",e.prepend(this.headerItem,this.headerSeparator),this.updateBadge()}updateBadge(){let e=this.headerItem.querySelector(".nav-badge");if(!e)return;let t=Ct.unread.size;e.textContent=String(Math.min(99,t)),e.style.display=t?"inline-block":"none"}async open(e,t){if(this.running){if(!this.terminal){let o=await Promise.resolve().then(()=>(Xc(),Yc)).catch(()=>null);if(!o)return;this.terminal=o.default}await this.terminal.open(e,t)}}},Zy=new Jc,Qy=Zy});var e1={};var jf=w(()=>{"use strict";Mr()});var Gf,Uf=w(()=>{Gf=`@keyframes kuteMmSlideDown{0%{transform:translate(-50%,-500%)}to{transform:translate(-50%)}}#kuteMatchmaker{position:absolute;top:8em;left:50%;z-index:2147482000;box-sizing:border-box;width:24em;padding:18px 22px;border-radius:14px;overflow:hidden;pointer-events:all;background:#12121699;backdrop-filter:blur(14px) saturate(120%);box-shadow:0 8px 48px #000c;display:flex;flex-direction:column;color:#fff;animation:kuteMmSlideDown .4s cubic-bezier(.16,1,.3,1) forwards}#kuteMmStatus{font-size:1.4em;color:#35e0e8;margin-bottom:.6em;text-align:center}#kuteMmStatus.mm-fail{color:#eb5656}#kuteMmFeed{display:flex;flex-direction:column;gap:.15em;overflow:hidden;min-height:5.6em;margin-bottom:.6em}#kuteMmFeed.mm-result{justify-content:center}@keyframes kuteMmFeedIn{0%{opacity:0;transform:translate(1em)}to{opacity:1;transform:translate(0)}}@keyframes kuteMmGrow{0%{opacity:0;transform:scale(.55)}65%{opacity:1;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}.mm-entry{display:flex;gap:.8em;padding:.2em .5em;font-size:.95em;font-family:GameFont,monospace;border-radius:.2em;animation:kuteMmFeedIn .12s ease forwards}.mm-entry:last-child:before{content:"\\25b8";color:#ffc147}.mm-entry.mm-pass{background:#4caf501a}.mm-entry.mm-pass .mm-region{color:#35e0e8}.mm-entry.mm-pass .mm-map{color:#ffffffe6}.mm-entry.mm-pass .mm-players{color:#4caf50}.mm-entry.mm-skip{background:#ffffff05}.mm-entry.mm-skip .mm-region{color:#ffffff4d}.mm-entry.mm-skip .mm-map{color:#ffffff80}.mm-entry.mm-skip .mm-players{color:#eb5656}.mm-entry.mm-skip .mm-icon{opacity:.45}.mm-region{min-width:2.5em;font-weight:700}.mm-map{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mm-players{min-width:3em;text-align:right;font-weight:600}.mm-icon{width:1.7em;height:1.7em;flex:none;object-fit:cover;border-radius:.25em;align-self:center;background:#ffffff0f}.mm-entry.mm-landed{box-shadow:inset 0 0 0 2px #35e0e8}.mm-entry.mm-found,.mm-entry.mm-none{justify-content:center;transform-origin:center;animation:kuteMmGrow .34s cubic-bezier(.2,.85,.3,1.25) forwards}.mm-entry.mm-found{font-size:1.25em;gap:.7em}.mm-entry.mm-found .mm-icon{width:2.4em;height:2.4em;border-radius:.3em}.mm-entry.mm-none{font-size:1.2em;color:#ffffff8c;background:#ffffff08}.mm-entry.mm-found:before,.mm-entry.mm-none:before{content:none}#kuteMmCounter{font-size:.85em;color:#ffc147;text-align:center;margin-bottom:.5em}#kuteMmCancel{text-align:center;border:.2em solid #eb5656;border-radius:.3em;font-size:1.1em;background:#0000004d;padding:.2em 1.2em;cursor:pointer;margin:0 auto;width:fit-content;transition:all .08s}#kuteMmCancel:hover{border-color:#fff;transform:scale(.95)}#kuteMmCancel:active{transform:scale(.85)} -`});var Wf=we((FE,o1)=>{o1.exports='

              Matchmaker Filters

              F6 joins the best lobby for these. Nothing picked in a group means all of it

              Regions

              Modes \u2605 on a mode to prefer it

              Preferred first, then any other mode. Modes rank above maps
              Drag to reorder, click to move to the top

              Maps \u2605 on a map to prefer it

              Preferred first, then any other map
              Drag to reorder, click to move to the top

              Lobby

              Reset
              Done
              '});var od={};A(od,{default:()=>b1});function eg(s){let e=i1.get(Xt(s));return e===void 0?null:Hs(e)}function g1(s,e){let t=eg(s);if(!t)return null;let o=document.createElement("img");return o.className=e,o.src=t,o.alt="",o.loading="lazy",o.onerror=()=>o.remove(),o}function an(s,e){let t=document.createElement("span");return t.className=s,t.textContent=e,t}function ed(s,e){let t=document.createElement("div");t.className=`mm-entry ${e}`;let o=g1(s.map,"mm-icon");return o&&t.append(o),t.append(an("mm-region",s.region),an("mm-map",s.map),an("mm-players",`${s.players}/${s.limit}`)),t}async function Xf(){let e=await(await fetch(d1,{signal:AbortSignal.timeout(Qf)})).json();return Array.isArray(e?.games)?e.games:[]}function Jf(s,e){let t=e.maps.length>0?new Set(e.maps.map(Xt)):a1;return s.map(o=>{let n=String(o[0]),r=o[4]??{},i=r.c===0||r.oc===1,a=String(r.i??""),l=Xt(a),c={id:n,region:n.split(":")[0],server:String(o[1]),players:Number(o[2]),limit:Number(o[3]),map:a,mode:s1[r.g]??"Unknown",timeLeft:Number(o[5]),passes:!1};return c.passes=i&&!c1.test(n)&&(e.regions.length===0||e.regions.includes(c.region))&&(e.modes.length===0||e.modes.includes(c.mode))&&t.has(l)&&c.players>=e.minPlayers&&c.players<=e.maxPlayers&&c.players0?c.timeLeft>=e.minTime:l1.has(l))&&!location.href.includes(n),c})}var s1,n1,Vf,Zf,r1,Xt,i1,a1,l1,c1,d1,Qf,u1,Yf,Qc,p1,h1,m1,f1,nn,rn,td,b1,sd=w(()=>{"use strict";Uf();F();Ae();No();sr();s1=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Hide & Seek","Infected","Race","Last Man Standing","Simon Says","Gun Game","Prop Hunt","Boss Hunt","Classic FFA","Deposit","Stalker","King of the Hill","One in the Chamber","Trade","Kill Confirmed","Defuse","Sharp Shooter","Traitor","Raid","Blitz","Domination","Squad Deathmatch","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],n1=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Gun Game","Classic FFA","Deposit","Kill Confirmed","Sharp Shooter","Domination","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],Vf={SV:"Silicon Valley",TOK:"Tokyo",FRA:"Frankfurt",MBI:"Mumbai",SYD:"Sydney",SIN:"Singapore",DAL:"Dallas",BHN:"Bahrain",BRZ:"Brazil",NY:"New York"},Zf=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Tropicano","Habitat","Atomic","Old_Burg","Throwback","Clockwork","Bazaar","Erupt","HQ","Lush","Vivo","Slide Moonlight","Eterno Simulator","Eterno Jump","Frontier","Piazza","Barnyard"],r1={SkyTemple:"Sky Temple",Krunk_Plaza:"Krunk Plaza",Old_Burg:"Old Burg"},Xt=s=>s.toLowerCase().replace(/[^a-z0-9]/g,""),i1=new Map(or.map((s,e)=>[Xt(s),e])),a1=new Set(Zf.map(Xt)),l1=new Set(["Eterno Jump","Slide Moonlight"].map(Xt)),c1=/[\s&#?/%\\]/,d1="https://matchmaker.krunker.io/game-list?hostname=krunker.io",Qf=1e4,u1=4,Yf=1100,Qc=80,p1=20,h1=180,m1=1200,f1=1100,nn={regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[],minPlayers:1,maxPlayers:6,minTime:120,sortByPlayers:!1,serverBrowser:!0,animation:!0,searchAfterMatch:!1},rn=s=>new Promise(e=>setTimeout(e,s));td=class{constructor(){this.activeRun=0,this.runCounter=0,this.candidates=[],this.popup=document.createElement("div"),this.popup.id="kuteMatchmaker",this.status=document.createElement("div"),this.status.id="kuteMmStatus",this.feed=document.createElement("div"),this.feed.id="kuteMmFeed",this.counter=document.createElement("div"),this.counter.id="kuteMmCounter";let e=document.createElement("div");e.id="kuteMmCancel",e.textContent="Cancel",e.onmouseenter=()=>window.SOUND?.play("tick_0",.1),e.onclick=()=>this.abort(),this.popup.append(this.status,this.feed,this.counter,e),this.cancelKey=t=>{t.key!=="Escape"||document.pointerLockElement||(t.preventDefault(),t.stopPropagation(),this.abort())},u.matchmaker={showFilters:()=>this.showFilters()},u.settings.toggleMatchmaker=()=>{},u.hostFeatures?.includes("matchmaker")&&(window.addEventListener("keydown",t=>{!ds(t,"matchmaker")||t.repeat||!u.settings.data.matchmaker||document.activeElement?.tagName!=="INPUT"&&this.start().catch(o=>console.error("[kute] matchmaker:",o))},!0),this.watchEndScreen())}watchEndScreen(){let e=document.getElementById("endUI");if(!e)return;let t=!1,o=e.style.display!=="none";document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&(t=!0)}),new MutationObserver(()=>{let n=e.style.display!=="none";n!==o&&(o=n,!(!n||!t)&&(t=!1,!(!u.settings.data.matchmaker||!this.filter.searchAfterMatch||window.getGameActivity?.()?.custom)&&this.start().catch(r=>console.error("[kute] matchmaker:",r))))}).observe(e,{attributes:!0,attributeFilter:["style"]})}get filter(){return{...nn,...u.settings.data.matchmakerFilter}}saveFilter(e){u.settings.data.matchmakerFilter=e,window.chrome.webview.postMessage(`set-config-json matchmakerFilter ${JSON.stringify(e)}`)}cancelled(e){return e!==this.activeRun}abort(){this.activeRun=0,window.playSelect?.(),this.dismiss()}dismiss(){document.removeEventListener("keydown",this.cancelKey,!0),this.popup.remove()}showPopup(){if(!document.querySelector("#kuteMatchmakerCSS")){let e=document.createElement("style");e.id="kuteMatchmakerCSS",e.textContent=Gf,document.head.append(e)}this.status.textContent="Connecting...",this.status.classList.remove("mm-fail"),this.feed.replaceChildren(),this.feed.classList.remove("mm-result"),this.counter.textContent="",document.addEventListener("keydown",this.cancelKey,!0),(document.querySelector("#uiBase")??document.body).append(this.popup)}pushEntry(e){for(this.feed.append(e);this.feed.children.length>u1;)this.feed.firstElementChild?.remove()}async animateScan(e,t,o){let n=t.length;if(n===0)return;this.status.textContent="Scanning lobbies...";let r=Math.floor(Yf/Qc),i=n>r?n/r:1,a=n>r?Qc:Math.max(p1,Math.min(Qc,Yf/n));for(let l=0;l[l.id,l])),a=[t,...this.candidates.filter(l=>l!==t)].find(l=>r.get(l.id)?.passes);a?this.join(a.id):this.openServerBrowser(o)}async start(){if(this.activeRun!==0)return;let e=++this.runCounter;this.activeRun=e;try{await this.search(e)}finally{this.activeRun===e&&(this.activeRun=0)}}async search(e){let{filter:t}=this;t.animation&&this.showPopup();let o,n;try{let[p,m]=await Promise.all([Xf(),Te("ping-regions","regionPings",Qf)]);o=Jf(p,t),n=m??{}}catch(p){if(console.error("[kute] matchmaker: no lobby list",p),this.cancelled(e)||!t.animation)return;this.status.textContent="Failed to fetch lobbies",this.status.classList.add("mm-fail"),await rn(2e3),this.cancelled(e)||this.dismiss();return}if(this.cancelled(e))return;let r=p=>n[p.server]??999,i=new Map(t.preferredMaps.map((p,m)=>[Xt(p),m])),a=new Map(t.preferredModes.map((p,m)=>[p,m])),l=p=>(a.get(p.mode)??a.size)*(i.size+1)+(i.get(Xt(p.map))??i.size),c=p=>p.limit-p.players<=1?1:0,d=o.filter(p=>p.passes);d.sort((p,m)=>{let f=l(p)-l(m),g=c(p)-c(m),b=r(p)-r(m),v=m.players-p.players;return t.sortByPlayers?f||g||v||b:f||g||b||v}),this.candidates=d;let h;if(d.length>0){let p=d[0],m=d.filter(f=>l(f)===l(p)&&c(f)===c(p)&&Math.abs(r(f)-r(p))<=20&&p.players-f.players<=2);h=m[Math.floor(Math.random()*m.length)]}if(t.animation&&await this.animateScan(e,o,h),!this.cancelled(e)){if(!h){if(t.animation){this.status.textContent="No Lobby Found",this.status.classList.add("mm-fail"),this.feed.classList.add("mm-result");let p=document.createElement("div");if(p.className="mm-entry mm-none",p.textContent="No matching lobbies",this.feed.replaceChildren(p),this.counter.textContent=t.serverBrowser?"Opening server browser...":"",await rn(f1),this.cancelled(e))return}this.openServerBrowser(t);return}if(t.animation){this.status.textContent="Lobby Found!",this.feed.classList.add("mm-result"),this.feed.replaceChildren(ed(h,"mm-pass mm-found"));let p=n[h.server]===void 0?"?":String(n[h.server]);if(this.counter.textContent=`${h.mode} \xB7 ${Vf[h.region]??h.region} \xB7 ${p}ms`,await rn(m1),this.cancelled(e))return}await this.verifyAndJoin(e,h,t)}}async showFilters(){let e=await Promise.resolve().then(()=>ue(Wf(),1)),{filter:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=(g,b,v)=>{let k=i(g);k.replaceChildren();for(let E of b){let L=document.createElement("div");if(L.className=`mmChip${v.includes(E.value)?" on":""}`,E.icon){let y=document.createElement("img");y.src=E.icon,y.alt="",y.loading="lazy",y.onerror=()=>y.remove(),L.append(y)}L.append(E.label),L.onclick=()=>{let y=v.indexOf(E.value);y===-1?v.push(E.value):v.splice(y,1),L.classList.toggle("on",y===-1)},k.append(L)}},l=(g,b,v)=>{if(!g)return;let k=document.createElement("img");k.src=g,k.alt="",v?k.loading="lazy":k.draggable=!1,k.onerror=()=>k.remove(),b.append(k)},c=g=>{let{preferred:b}=g,v=i(g.boxId);v.hidden=b.length===0;let k=v.querySelector(".mmGrid");k.replaceChildren();let E=()=>k.querySelectorAll(".mmNum").forEach((L,y)=>L.textContent=String(y+1));for(let L of b){let y=document.createElement("div");y.className="mmChip on mmRank",y.append(an("mmNum","")),l(g.icon(L),y,!1),y.append(g.label(L));let C=null;y.onpointerdown=I=>{y.setPointerCapture(I.pointerId),C={x:I.clientX,y:I.clientY,moved:!1}},y.onpointermove=I=>{if(!C||!C.moved&&Math.hypot(I.clientX-C.x,I.clientY-C.y)<5)return;C.moved=!0,y.classList.add("dragging");let _=[...k.children],H=_.findIndex(J=>{let B=J.getBoundingClientRect();return I.clientX>=B.left&&I.clientX<=B.right&&I.clientY>=B.top&&I.clientY<=B.bottom}),G=_.indexOf(y);H===-1||H===G||(b.splice(H,0,...b.splice(G,1)),y.remove(),k.insertBefore(y,k.children[H]??null),E())},y.onpointerup=()=>{y.classList.remove("dragging"),C&&!C.moved&&(b.unshift(...b.splice(b.indexOf(L),1)),window.SOUND?.play("tick_0",.1),c(g)),C=null},y.onpointercancel=y.onpointerup,k.append(y)}E()},d=g=>{let{picked:b,preferred:v}=g,k=i(g.gridId);k.replaceChildren();for(let E of g.values){let L=v.includes(E),y=document.createElement("div");y.className=`mmChip${b.includes(E)?" on":""}${L?" preferred":""}`,l(g.icon(E),y,!0),y.append(g.label(E));let C=an("mmStar","\u2605");C.title=L?"Preferred, click to remove":`Prefer this ${g.noun}`,C.onclick=I=>{I.stopPropagation(),L?v.splice(v.indexOf(E),1):(v.push(E),b.length>0&&!b.includes(E)&&b.push(E)),d(g)},y.append(C),y.onclick=()=>{let I=b.indexOf(E);I!==-1?(b.splice(I,1),L&&v.splice(v.indexOf(E),1)):b.length===0?b.push(...new Set([...v,E])):b.push(E),d(g)},k.append(y)}c(g)},h=()=>{a("mmRegions",Object.entries(Vf).map(([g,b])=>({value:g,label:b})),t.regions),d({gridId:"mmModes",boxId:"mmModeRanks",noun:"mode",values:n1,picked:t.modes,preferred:t.preferredModes,label:g=>g,icon:()=>null}),d({gridId:"mmMaps",boxId:"mmMapRanks",noun:"map",values:Zf,picked:t.maps,preferred:t.preferredMaps,label:g=>r1[g]??g,icon:eg}),i("mmMinPlayers").value=String(t.minPlayers),i("mmMaxPlayers").value=String(t.maxPlayers),i("mmMinTime").value=String(t.minTime),i("mmSortByPlayers").checked=t.sortByPlayers,i("mmServerBrowser").checked=t.serverBrowser,i("mmAnimation").checked=t.animation,i("mmSearchAfterMatch").checked=t.searchAfterMatch};t.regions=[...t.regions],t.modes=[...t.modes],t.maps=[...t.maps],t.preferredMaps=[...t.preferredMaps],t.preferredModes=[...t.preferredModes],h();let p=(g,b,v,k)=>{let E=Number.parseInt(i(g).value,10);return Number.isNaN(E)?k:Math.min(v,Math.max(b,E))},m=new AbortController,f=()=>{m.abort(),o.remove(),this.saveFilter({...t,minPlayers:p("mmMinPlayers",0,7,nn.minPlayers),maxPlayers:p("mmMaxPlayers",0,7,nn.maxPlayers),minTime:p("mmMinTime",0,480,nn.minTime),sortByPlayers:i("mmSortByPlayers").checked,serverBrowser:i("mmServerBrowser").checked,animation:i("mmAnimation").checked,searchAfterMatch:i("mmSearchAfterMatch").checked})};i("mmDone").onclick=f,i("mmReset").onclick=()=>{Object.assign(t,nn,{regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[]}),h()},o.addEventListener("mousedown",g=>{g.target===o&&f()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),f())},{signal:m.signal,capture:!0}),document.body.append(o)}},b1=new td});var nd=we((GE,v1)=>{v1.exports=`#uiBase.onMenu #spectateUI{display:block!important}#uiBase.onCompMenu.onMenu #specTimer,#uiBase.onMenu #specGMessage,#uiBase.onMenu #spec1,#uiBase.onMenu #specGameInfo,#uiBase.onMenu #spec0,#uiBase.onMenu #specControlHolder,#uiBase.onMenu #specNames{display:none!important}#uiBase.onMenu #spectateUI>#spectateHUD{box-sizing:border-box;display:flex!important;justify-content:center;height:.5rem;white-space:nowrap;width:max-content;position:fixed;top:calc(50% + 140px)}#uiBase.onMenu #spectateHUD #specGMessage{top:0}#uiBase.onMenu #spectateUI>#spectateHUD{z-index:1;transform:unset}#uiBase.onMenu .spectateInfo{position:fixed;top:calc(40% - 105px);left:50%;transform:translate(-50%,-50%)}#uiBase.onMenu #spectateUI div .spectateInfo #specTimer{background-color:#0000;padding:0 25px;font-size:42px;border-radius:.5em}#uiBase.onMenu #specKPDContr{display:none}#uiBase.onMenu #spectateUI div#specStats{position:absolute;top:calc(50% + 13em);left:50%;transform:translate(-50%);z-index:1}#uiBase.onMenu #spectateUI div#specStats:before{content:"Spectating";position:absolute;bottom:100%;left:50%;transform:translate(-50%);font-size:1.2em;padding-bottom:.5em} -`});var id={};A(id,{default:()=>w1});var og,tg,rd,w1,ad=w(()=>{"use strict";og=ue(nd(),1);F();tg="kute_menuTimerCSS",rd=class{constructor(){u.settings.toggleMenuTimer=e=>this.toggle(e),this.toggle(u.settings.data.menuTimer!==!1)}toggle(e){let t=document.getElementById(tg);if(!e){t?.remove();return}if(t)return;let o=document.createElement("style");o.id=tg,o.textContent=og.default,document.head.append(o)}},w1=new rd});var dd={};A(dd,{default:()=>M1});function ng(s){let e=/loadUserMod\(\s*(["`])(.*?)\1\s*,\s*(["`])(.*?)\3/.exec(s);return e?{name:e[2],url:e[4]}:null}function rg(s){try{let e=new URL(s);return e.protocol!=="https:"?null:e.hostname==="krunker.io"||e.hostname.endsWith(".krunker.io")?e.href:e.hostname==="dropbox.com"||e.hostname==="www.dropbox.com"?(e.hostname="dl.dropboxusercontent.com",e.search="",e.href):null}catch{return null}}function E1(s){return`${s.replace(/[\u0000-\u001f<>:"/\\|?*]/g,"").replace(/\s+/g," ").trim().replace(/[ .]+$/,"").slice(0,80)||"mod"}.zip`}async function $1(s){let e=await fetch(s);if(e.status===403||e.status===404)throw new Error("This mod's file is gone, its creator removed it");if(!e.ok)throw new Error(`The mod server answered ${e.status}`);if(Number(e.headers.get("content-length")??0)>sg)throw new Error("That mod is too large");let t=await e.blob();if(t.size>sg)throw new Error("That mod is too large");let o=new Uint8Array(await t.slice(0,2).arrayBuffer());if(o[0]!==80||o[1]!==75)throw new Error("That mod is not a zip file");return t}function C1(s,e){let t=document.createElement("a");t.href=URL.createObjectURL(s),t.download=e,t.click(),setTimeout(()=>URL.revokeObjectURL(t.href),6e4)}function ig(s,e,t,o){let n=!1;s.addEventListener("click",r=>{if(r.stopPropagation(),n)return;n=!0,e.style.color=ld.busy,e.textContent="hourglass_top";let i=E1(t);$1(o).then(a=>{C1(a,i),e.style.color=ld.done,e.textContent="download_done",u.showNotification(`Saved ${i} to your Downloads folder`,!1,4)}).catch(a=>{e.style.color=ld.failed,e.textContent="error_outline",u.showNotification(a instanceof TypeError?"Could not download the mod":a.message,!1,4)}).finally(()=>{n=!1})})}function ag(s){let e=document.createElement("span");return e.className="material-icons",e.style.cssText=s,e.textContent="download",e}var ln,sg,k1,y1,x1,S1,ld,cd,M1,ud=w(()=>{"use strict";F();ln="data-kute-mod",sg=300*1024*1024,k1='[onclick^="downloadPack"]',y1="font-size:70px;color:#fff;",x1="position:absolute;right:30px;bottom:92px;box-sizing:content-box;width:240px;height:37px;padding:10px 6px 6px;border:3px solid #35e0e8;border-radius:6px;background:rgba(0,0,0,0.6);color:#fff;font-size:21px;text-align:center;cursor:pointer;",S1="font-size:32px;color:#fff;vertical-align:top;margin-top:-3px;margin-left:5px;",ld={busy:"#777",done:"#35e0e8",failed:"#ff7a7a"};cd=class{constructor(){this.pending=null,this.observer=new MutationObserver(()=>{this.pending===null&&(this.pending=setTimeout(()=>this.scan(),150))});let e=document.getElementById("menuWindow");e&&(this.observer.observe(e,{childList:!0,subtree:!0}),this.scan())}scan(){this.pending=null;let e=document.getElementById("menuWindow");if(!e)return;let t=[];for(let r of e.querySelectorAll('.mapActionB[onclick^="loadUserMod"]')){let i=r.parentElement;if(!i||i.querySelector(`[${ln}], ${k1}`))continue;let a=ng(r.getAttribute("onclick")??""),l=a&&rg(a.url);a&&l&&t.push([i,this.listButton(a.name,l)])}let o=document.getElementById("bigMFeatPBtn"),n=o?.parentElement;if(o&&n&&!n.querySelector(`[${ln}]`)){let r=ng(o.getAttribute("onclick")??""),i=r&&rg(r.url);r&&i&&t.push([n,[this.featuredButton(r.name,i)]])}if(t.length!==0){this.observer.disconnect();for(let[r,i]of t)r.append(...i);this.observer.observe(e,{childList:!0,subtree:!0})}}listButton(e,t){let o=document.createElement("div");o.className="mapActionSep",o.setAttribute(ln,"");let n=document.createElement("div");n.className="mapActionB",n.title="Download",n.setAttribute(ln,"");let r=ag(y1);return n.append(r),ig(n,r,e,t),[o,n]}featuredButton(e,t){let o=document.createElement("div");o.setAttribute(ln,""),o.style.cssText=x1;let n=ag(S1);return o.append("Download ",n),ig(o,n,e,t),o}},M1=new cd});var md={};A(md,{default:()=>_1});function Tr(s,e,t){return Math.min(t,Math.max(e,s))}function pd(s,e){let t=parseFloat(localStorage.getItem("kro_setngss_"+s)??"");return Number.isFinite(t)&&t>0?t:e}function ug(s,e){let t=s.createProgram();for(let[o,n]of[[s.VERTEX_SHADER,P1],[s.FRAGMENT_SHADER,e]]){let r=s.createShader(o);if(!r)return null;s.shaderSource(r,n),s.compileShader(r),s.attachShader(t,r)}return s.linkProgram(t),s.getProgramParameter(t,s.LINK_STATUS)?t:null}var T1,lg,A1,L1,cg,R1,dg,P1,I1,N1,hd,_1,fd=w(()=>{"use strict";F();cs();T1="kuteMotionBlur",lg=1e3/60,A1=.4,L1=.002,cg=.2,R1=2,dg=.0024,P1=`#version 300 es + class="muted">${T(t*o)} KR gross if all ${o} sell · ${it(t/this.view.item.skin.fair-1)} vs estimate.`}filterHoldings(){let e=this.portfolioFilter.toLocaleLowerCase().trim();for(let t of this.shadow?.querySelectorAll("tr[data-skin]")??[]){let o=t;o.hidden=!o.querySelector(".itemIdentity")?.textContent?.toLocaleLowerCase().includes(e)}}filterListings(){let e=this.value("#kmListingMax"),t=this.value("#kmSerialMax"),o=this.value("#kmWearMax"),n=this.value("#kmAgeMax"),r=this.value("#kmSellerMax");for(let c of this.shadow?.querySelectorAll("#kmListingRows tr")??[]){let u=c;u.hidden=!!(e&&Number(u.dataset.price)>Number(e))||!!(t&&(!u.dataset.serial||Number(u.dataset.serial)>Number(t)))||!!(o&&(!u.dataset.wear||Number(u.dataset.wear)>Number(o)))||!!(n&&(!u.dataset.age||Number(u.dataset.age)>Number(n)))||!!(r&&(!u.dataset.sellerCount||Number(u.dataset.sellerCount)>Number(r)))}let i=this.shadow?.querySelector("#kmListingCount"),l=[...this.shadow?.querySelectorAll("#kmListingRows tr")??[]].filter(c=>!c.hidden).length;i&&(i.textContent=`${l} sampled listings shown; ${this.view?.listings?.total??"unknown"} reported listed.`)}applyFilters(e=1){this.show(this.searchTab(),this.readFilters(e))}readFilters(e){return{q:this.value("#kmQ").trim(),rarity:this.value("#kmRarity"),type:this.value("#kmType"),sort:this.value("#kmSort"),budget:this.value("#kmBudget"),minSales:this.value("#kmSales"),page:e}}click(e){let t=e.target instanceof Element?e.target.closest("button,tr[data-skin],tr[data-index-name],tr[data-category]"):null;if(!t||t.hasAttribute("disabled"))return;let o=t.dataset;if(o.externalUrl){e.preventDefault();try{let n=new URL(o.externalUrl);if(n.protocol!=="https:"||n.username||n.password||n.port)return;if(!(["github.com","kute.lol","krunker.io"].includes(n.hostname)||n.hostname==="discord.com"&&n.pathname.startsWith("/invite/"))){d.showNotification("This news link is not supported by Kute.",!1,6);return}if(n.hostname==="krunker.io"&&!d.hostFeatures?.includes("krunker-links")){d.showNotification("Update the Kute application to open Krunker news links.",!1,6);return}window.chrome.webview.postMessage(`open-url, ${n.href}`)}catch{}return}if(o.intelKind!==void 0){this.show("intelligence",o.intelKind);return}if(t.id==="kmClose"){this.close();return}if(t.id==="kmMaximize"){this.toggleMaximized();return}if(o.scale!==void 0){this.rescale(Number(o.scale));return}if(o.discover){if(o.discover===this.tab)return;o.discover==="deals"&&!this.saved.has("deals")&&(this.tab==="search"||this.tab==="active")?this.show("deals",{budget:this.value("#kmBudget")}):this.show(o.discover);return}if(o.nav==="search"){this.show(this.discoveryTab);return}if(o.nav){this.show(o.nav);return}if(o.skin){this.show("item",Number(o.skin));return}if(o.category){this.show("search",{...So(),type:o.category,minSales:"1"});return}if(o.page){this.applyFilters(Number(o.page));return}if(o.range){this.show("item",{...this.itemState(),range:o.range,zoom:1,offset:0},!0);return}if(o.chartMode){this.show("item",{...this.itemState(),candles:o.chartMode==="candles"},!0);return}if(o.pan!==void 0){this.show("item",{...this.itemState(),offset:Number(o.pan)},!0);return}if(o.zoom){this.show("item",{...this.itemState(),zoom:Number(o.zoom),offset:o.zoom==="1"?0:this.itemState().offset},!0);return}if(o.window){this.show("movers",o.window);return}if(o.indexName){this.show("indices",o.indexName);return}if(o.unwatch){if(!yo(Se().filter(n=>n.skin!==Number(o.unwatch)))){this.storageError();return}this.show("watchlist",this.arg,!0);return}if(o.remove!==void 0&&o.side){this.analyzer[o.side].splice(Number(o.remove),1),this.show("analyze",this.arg,!0);return}switch(o.action){case"discover":this.show("search",So());break;case"reset-search":this.show(this.searchTab(),this.tab==="active"?{...So(),minSales:"1",sort:"liquidity"}:So());break;case"back":this.show(this.previous);break;case"retry":this.retry();break;case"filters":this.applyFilters();break;case"deal-budget":this.show("deals",{budget:this.value("#kmDealBudget")});break;case"inventory":this.show("portfolio",this.value("#kmName").trim());break;case"analyze":this.show("analyze",this.arg,!0);break;case"clear-trade":this.analyzer={give:[],get:[],giveKr:0,getKr:0},this.show("analyze");break;case"watch":if(this.view?.item){if(!nc(this.view.item.skin)){this.storageError();return}this.show("item",this.arg,!0)}break;default:break}}storageError(){let e=this.shadow?.querySelector("#kmFootRight");e&&(e.textContent="Could not save on this device. The watchlist holds up to 100 items.")}async retry(){let{generation:e}=this;await W.retry(),e===this.generation&&await this.show(this.tab,this.arg)}changed(e){let t=e.target;if(t instanceof HTMLInputElement||t instanceof HTMLSelectElement)if(t.id==="kmAdvanced"){this.advanced=t.checked;try{localStorage.setItem(jf,this.advanced?"1":"0")}catch{this.storageError()}this.show(this.tab,void 0,!0)}else if(t.id==="kmOverlay")this.show("item",{...this.itemState(),overlay:t.value},!0);else if(t.dataset.target){let o=Number(t.value),n=Se().map(r=>r.skin===Number(t.dataset.target)?{...r,target:o>0&&Number.isFinite(o)?o:null}:r);if(!yo(n)){this.storageError();return}this.show("watchlist",this.arg,!0)}else if(t.dataset.count!==void 0&&t.dataset.side){let o=this.analyzer[t.dataset.side][Number(t.dataset.count)];o&&(o.count=Math.min(1e4,Math.max(1,Math.floor(Number(t.value)||1))),t.value=String(o.count)),this.refreshTrade()}else if(t.dataset.kr){let o=Math.max(0,Math.min(1e9,Math.floor(Number(t.value)||0)));t.dataset.kr==="give"?this.analyzer.giveKr=o:this.analyzer.getKr=o,t.value=String(o),this.refreshTrade()}else t.closest("#kmFilters")&&t instanceof HTMLSelectElement&&this.applyFilters()}input(e){let t=e.target;if(t instanceof HTMLInputElement){if(t.id==="kmSellPrice"||t.id==="kmSellQuantity"){this.updatePlanner();return}if(["kmListingMax","kmSerialMax","kmWearMax","kmAgeMax","kmSellerMax"].includes(t.id)){this.filterListings();return}if(t.id==="kmHoldingFilter"){this.portfolioFilter=t.value,this.filterHoldings();return}}}key(e){if(!this.shadow||(e.stopImmediatePropagation(),this.itemSearch?.key(e))||e.isComposing)return;if(e.key==="Escape"){e.stopImmediatePropagation(),e.preventDefault(),this.close();return}if(e.ctrlKey&&!e.altKey&&["+","=","-","0"].includes(e.key)){e.preventDefault(),this.rescale({"-":-1,0:0}[e.key]??1);return}let t=this.shadow.activeElement;if(t?.matches("[data-discover]")&&["ArrowLeft","ArrowRight","Home","End"].includes(e.key)){e.preventDefault();let i=[...this.shadow.querySelectorAll("#kmDiscoverTabs button")],l=(i.indexOf(t)+(e.key==="ArrowRight"?1:-1)+i.length)%i.length;e.key==="Home"&&(l=0),e.key==="End"&&(l=i.length-1);let c=i[l];c.focus(),c.click();return}if(e.key==="Enter"&&t&&(t.closest("#kmFilters")?(e.preventDefault(),this.applyFilters()):t.id==="kmName"?(e.preventDefault(),this.show("portfolio",this.value("#kmName").trim())):t.matches("tr[data-skin],tr[data-index-name],tr[data-category]")&&(e.preventDefault(),t.click())),e.key!=="Tab")return;let o=[...this.shadow.querySelectorAll("button:not(:disabled):not([tabindex='-1']),input:not([type=hidden]),select,summary,[tabindex='0']")].filter(i=>i instanceof HTMLElement&&i.getClientRects().length&&!i.closest("[hidden]")),n=o[0],r=o.at(-1);e.shiftKey&&(t===n||!t)?(e.preventDefault(),r?.focus()):!e.shiftKey&&(t===r||!t)&&(e.preventDefault(),n?.focus())}},t1=new Cr,o1=t1});var Qc={};A(Qc,{default:()=>n1});var Zc,s1,n1,Mr=w(()=>{"use strict";F();Nt();xe();tc();sc();br();uc();Zc=class{constructor(){this.headerItem=document.createElement("div"),this.headerSeparator=document.createElement("div"),this.headerObserver=new MutationObserver(()=>this.placeButton()),this.onUnread=()=>this.updateBadge(),this.terminal=null,this.running=!1,this.warned=!1,d.settings.toggleMarket=e=>this.toggle(e),d.market={open:(e,t)=>this.open(e,t),toggle:e=>this.toggle(e)},this.toggle(!0)}toggle(e){if(e!==this.running)if(this.running=e,e){if(!W.hostSupported()){this.warned||(this.warned=!0,d.showNotification("The Kute Market needs a newer Kute. Update Kute to use it.",!1,8)),this.running=!1;return}if(he.offline()){this.running=!1;return}this.placeButton();let t=document.querySelector("#playerHeaderEl");t&&this.headerObserver.observe(t,{childList:!0,subtree:!0}),window.addEventListener(Vs,this.onUnread),fr.start(),gr.start(),Ct.start(),vr.start()}else this.headerObserver.disconnect(),window.removeEventListener(Vs,this.onUnread),this.headerItem.remove(),this.headerSeparator.remove(),fr.stop(),gr.stop(),Ct.stop(),vr.stop(),this.terminal?.close()}placeButton(){let e=document.querySelector("#playerHeaderEl .headerBarRight");if(!e||e.contains(this.headerItem))return;let t=[...e.querySelector(".nav-item")?.classList??[]].find(o=>o.startsWith("svelte-"))??"";this.headerItem.className=`nav-item ${t}`,this.headerItem.innerHTML=` Kute Market `,this.headerItem.onclick=()=>this.open(Ct.unread.size?"watchlist":void 0),this.headerSeparator.className="verticalSeparator",this.headerSeparator.style.cssText="height: 35px;",e.prepend(this.headerItem,this.headerSeparator),this.updateBadge()}updateBadge(){let e=this.headerItem.querySelector(".nav-badge");if(!e)return;let t=Ct.unread.size;e.textContent=String(Math.min(99,t)),e.style.display=t?"inline-block":"none"}async open(e,t){if(this.running){if(!this.terminal){let o=await Promise.resolve().then(()=>(Jc(),Xc)).catch(()=>null);if(!o)return;this.terminal=o.default}await this.terminal.open(e,t)}}},s1=new Zc,n1=s1});var r1={};var Vf=w(()=>{"use strict";Mr()});var Xf,Yf=w(()=>{Xf=`@keyframes kuteMmSlideDown{0%{transform:translate(-50%,-500%)}to{transform:translate(-50%)}}#kuteMatchmaker{position:absolute;top:8em;left:50%;z-index:2147482000;box-sizing:border-box;width:24em;padding:18px 22px;border-radius:14px;overflow:hidden;pointer-events:all;background:#12121699;backdrop-filter:blur(14px) saturate(120%);box-shadow:0 8px 48px #000c;display:flex;flex-direction:column;color:#fff;animation:kuteMmSlideDown .4s cubic-bezier(.16,1,.3,1) forwards}#kuteMmStatus{font-size:1.4em;color:#35e0e8;margin-bottom:.6em;text-align:center}#kuteMmStatus.mm-fail{color:#eb5656}#kuteMmFeed{display:flex;flex-direction:column;gap:.15em;overflow:hidden;min-height:5.6em;margin-bottom:.6em}#kuteMmFeed.mm-result{justify-content:center}@keyframes kuteMmFeedIn{0%{opacity:0;transform:translate(1em)}to{opacity:1;transform:translate(0)}}@keyframes kuteMmGrow{0%{opacity:0;transform:scale(.55)}65%{opacity:1;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}.mm-entry{display:flex;gap:.8em;padding:.2em .5em;font-size:.95em;font-family:GameFont,monospace;border-radius:.2em;animation:kuteMmFeedIn .12s ease forwards}.mm-entry:last-child:before{content:"\\25b8";color:#ffc147}.mm-entry.mm-pass{background:#4caf501a}.mm-entry.mm-pass .mm-region{color:#35e0e8}.mm-entry.mm-pass .mm-map{color:#ffffffe6}.mm-entry.mm-pass .mm-players{color:#4caf50}.mm-entry.mm-skip{background:#ffffff05}.mm-entry.mm-skip .mm-region{color:#ffffff4d}.mm-entry.mm-skip .mm-map{color:#ffffff80}.mm-entry.mm-skip .mm-players{color:#eb5656}.mm-entry.mm-skip .mm-icon{opacity:.45}.mm-region{min-width:2.5em;font-weight:700}.mm-map{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mm-players{min-width:3em;text-align:right;font-weight:600}.mm-icon{width:1.7em;height:1.7em;flex:none;object-fit:cover;border-radius:.25em;align-self:center;background:#ffffff0f}.mm-entry.mm-landed{box-shadow:inset 0 0 0 2px #35e0e8}.mm-entry.mm-found,.mm-entry.mm-none{justify-content:center;transform-origin:center;animation:kuteMmGrow .34s cubic-bezier(.2,.85,.3,1.25) forwards}.mm-entry.mm-found{font-size:1.25em;gap:.7em}.mm-entry.mm-found .mm-icon{width:2.4em;height:2.4em;border-radius:.3em}.mm-entry.mm-none{font-size:1.2em;color:#ffffff8c;background:#ffffff08}.mm-entry.mm-found:before,.mm-entry.mm-none:before{content:none}#kuteMmCounter{font-size:.85em;color:#ffc147;text-align:center;margin-bottom:.5em}#kuteMmCancel{text-align:center;border:.2em solid #eb5656;border-radius:.3em;font-size:1.1em;background:#0000004d;padding:.2em 1.2em;cursor:pointer;margin:0 auto;width:fit-content;transition:all .08s}#kuteMmCancel:hover{border-color:#fff;transform:scale(.95)}#kuteMmCancel:active{transform:scale(.85)} +`});var Jf=we((UE,a1)=>{a1.exports='

              Matchmaker Filters

              F6 joins the best lobby for these. Nothing picked in a group means all of it

              Regions

              Modes \u2605 on a mode to prefer it

              Preferred first, then any other mode. Modes rank above maps
              Drag to reorder, click to move to the top

              Maps \u2605 on a map to prefer it

              Preferred first, then any other map
              Drag to reorder, click to move to the top

              Lobby

              Reset
              Done
              '});var sd={};A(sd,{default:()=>x1});function ng(s){let e=u1.get(Xt(s));return e===void 0?null:zs(e)}function y1(s,e){let t=ng(s);if(!t)return null;let o=document.createElement("img");return o.className=e,o.src=t,o.alt="",o.loading="lazy",o.onerror=()=>o.remove(),o}function rn(s,e){let t=document.createElement("span");return t.className=s,t.textContent=e,t}function td(s,e){let t=document.createElement("div");t.className=`mm-entry ${e}`;let o=y1(s.map,"mm-icon");return o&&t.append(o),t.append(rn("mm-region",s.region),rn("mm-map",s.map),rn("mm-players",`${s.players}/${s.limit}`)),t}async function eg(){let e=await(await fetch(f1,{signal:AbortSignal.timeout(sg)})).json();return Array.isArray(e?.games)?e.games:[]}function tg(s,e){let t=e.maps.length>0?new Set(e.maps.map(Xt)):p1;return s.map(o=>{let n=String(o[0]),r=o[4]??{},i=r.c===0||r.oc===1,a=String(r.i??""),l=Xt(a),c={id:n,region:n.split(":")[0],server:String(o[1]),players:Number(o[2]),limit:Number(o[3]),map:a,mode:l1[r.g]??"Unknown",timeLeft:Number(o[5]),passes:!1};return c.passes=i&&!m1.test(n)&&(e.regions.length===0||e.regions.includes(c.region))&&(e.modes.length===0||e.modes.includes(c.mode))&&t.has(l)&&c.players>=e.minPlayers&&c.players<=e.maxPlayers&&c.players0?c.timeLeft>=e.minTime:h1.has(l))&&!location.href.includes(n),c})}var l1,c1,Zf,og,d1,Xt,u1,p1,h1,m1,f1,sg,g1,Qf,ed,b1,v1,w1,k1,sn,nn,od,x1,nd=w(()=>{"use strict";Yf();F();Ae();No();or();l1=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Hide & Seek","Infected","Race","Last Man Standing","Simon Says","Gun Game","Prop Hunt","Boss Hunt","Classic FFA","Deposit","Stalker","King of the Hill","One in the Chamber","Trade","Kill Confirmed","Defuse","Sharp Shooter","Traitor","Raid","Blitz","Domination","Squad Deathmatch","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],c1=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Gun Game","Classic FFA","Deposit","Kill Confirmed","Sharp Shooter","Domination","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],Zf={SV:"Silicon Valley",TOK:"Tokyo",FRA:"Frankfurt",MBI:"Mumbai",SYD:"Sydney",SIN:"Singapore",DAL:"Dallas",BHN:"Bahrain",BRZ:"Brazil",NY:"New York"},og=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Tropicano","Habitat","Atomic","Old_Burg","Throwback","Clockwork","Bazaar","Erupt","HQ","Lush","Vivo","Slide Moonlight","Eterno Simulator","Eterno Jump","Frontier","Piazza","Barnyard"],d1={SkyTemple:"Sky Temple",Krunk_Plaza:"Krunk Plaza",Old_Burg:"Old Burg"},Xt=s=>s.toLowerCase().replace(/[^a-z0-9]/g,""),u1=new Map(tr.map((s,e)=>[Xt(s),e])),p1=new Set(og.map(Xt)),h1=new Set(["Eterno Jump","Slide Moonlight"].map(Xt)),m1=/[\s&#?/%\\]/,f1="https://matchmaker.krunker.io/game-list?hostname=krunker.io",sg=1e4,g1=4,Qf=1100,ed=80,b1=20,v1=180,w1=1200,k1=1100,sn={regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[],minPlayers:1,maxPlayers:6,minTime:120,sortByPlayers:!1,serverBrowser:!0,animation:!0,searchAfterMatch:!1},nn=s=>new Promise(e=>setTimeout(e,s));od=class{constructor(){this.activeRun=0,this.runCounter=0,this.candidates=[],this.popup=document.createElement("div"),this.popup.id="kuteMatchmaker",this.status=document.createElement("div"),this.status.id="kuteMmStatus",this.feed=document.createElement("div"),this.feed.id="kuteMmFeed",this.counter=document.createElement("div"),this.counter.id="kuteMmCounter";let e=document.createElement("div");e.id="kuteMmCancel",e.textContent="Cancel",e.onmouseenter=()=>window.SOUND?.play("tick_0",.1),e.onclick=()=>this.abort(),this.popup.append(this.status,this.feed,this.counter,e),this.cancelKey=t=>{t.key!=="Escape"||document.pointerLockElement||(t.preventDefault(),t.stopPropagation(),this.abort())},d.matchmaker={showFilters:()=>this.showFilters()},d.settings.toggleMatchmaker=()=>{},d.hostFeatures?.includes("matchmaker")&&(window.addEventListener("keydown",t=>{!cs(t,"matchmaker")||t.repeat||!d.settings.data.matchmaker||document.activeElement?.tagName!=="INPUT"&&this.start().catch(o=>console.error("[kute] matchmaker:",o))},!0),this.watchEndScreen())}watchEndScreen(){let e=document.getElementById("endUI");if(!e)return;let t=!1,o=e.style.display!=="none";document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&(t=!0)}),new MutationObserver(()=>{let n=e.style.display!=="none";n!==o&&(o=n,!(!n||!t)&&(t=!1,!(!d.settings.data.matchmaker||!this.filter.searchAfterMatch||window.getGameActivity?.()?.custom)&&this.start().catch(r=>console.error("[kute] matchmaker:",r))))}).observe(e,{attributes:!0,attributeFilter:["style"]})}get filter(){return{...sn,...d.settings.data.matchmakerFilter}}saveFilter(e){d.settings.data.matchmakerFilter=e,window.chrome.webview.postMessage(`set-config-json matchmakerFilter ${JSON.stringify(e)}`)}cancelled(e){return e!==this.activeRun}abort(){this.activeRun=0,window.playSelect?.(),this.dismiss()}dismiss(){document.removeEventListener("keydown",this.cancelKey,!0),this.popup.remove()}showPopup(){if(!document.querySelector("#kuteMatchmakerCSS")){let e=document.createElement("style");e.id="kuteMatchmakerCSS",e.textContent=Xf,document.head.append(e)}this.status.textContent="Connecting...",this.status.classList.remove("mm-fail"),this.feed.replaceChildren(),this.feed.classList.remove("mm-result"),this.counter.textContent="",document.addEventListener("keydown",this.cancelKey,!0),(document.querySelector("#uiBase")??document.body).append(this.popup)}pushEntry(e){for(this.feed.append(e);this.feed.children.length>g1;)this.feed.firstElementChild?.remove()}async animateScan(e,t,o){let n=t.length;if(n===0)return;this.status.textContent="Scanning lobbies...";let r=Math.floor(Qf/ed),i=n>r?n/r:1,a=n>r?ed:Math.max(b1,Math.min(ed,Qf/n));for(let l=0;l[l.id,l])),a=[t,...this.candidates.filter(l=>l!==t)].find(l=>r.get(l.id)?.passes);a?this.join(a.id):this.openServerBrowser(o)}async start(){if(this.activeRun!==0)return;let e=++this.runCounter;this.activeRun=e;try{await this.search(e)}finally{this.activeRun===e&&(this.activeRun=0)}}async search(e){let{filter:t}=this;t.animation&&this.showPopup();let o,n;try{let[p,f]=await Promise.all([eg(),Te("ping-regions","regionPings",sg)]);o=tg(p,t),n=f??{}}catch(p){if(console.error("[kute] matchmaker: no lobby list",p),this.cancelled(e)||!t.animation)return;this.status.textContent="Failed to fetch lobbies",this.status.classList.add("mm-fail"),await nn(2e3),this.cancelled(e)||this.dismiss();return}if(this.cancelled(e))return;let r=p=>n[p.server]??999,i=new Map(t.preferredMaps.map((p,f)=>[Xt(p),f])),a=new Map(t.preferredModes.map((p,f)=>[p,f])),l=p=>(a.get(p.mode)??a.size)*(i.size+1)+(i.get(Xt(p.map))??i.size),c=p=>p.limit-p.players<=1?1:0,u=o.filter(p=>p.passes);u.sort((p,f)=>{let m=l(p)-l(f),g=c(p)-c(f),b=r(p)-r(f),v=f.players-p.players;return t.sortByPlayers?m||g||v||b:m||g||b||v}),this.candidates=u;let h;if(u.length>0){let p=u[0],f=u.filter(m=>l(m)===l(p)&&c(m)===c(p)&&Math.abs(r(m)-r(p))<=20&&p.players-m.players<=2);h=f[Math.floor(Math.random()*f.length)]}if(t.animation&&await this.animateScan(e,o,h),!this.cancelled(e)){if(!h){if(t.animation){this.status.textContent="No Lobby Found",this.status.classList.add("mm-fail"),this.feed.classList.add("mm-result");let p=document.createElement("div");if(p.className="mm-entry mm-none",p.textContent="No matching lobbies",this.feed.replaceChildren(p),this.counter.textContent=t.serverBrowser?"Opening server browser...":"",await nn(k1),this.cancelled(e))return}this.openServerBrowser(t);return}if(t.animation){this.status.textContent="Lobby Found!",this.feed.classList.add("mm-result"),this.feed.replaceChildren(td(h,"mm-pass mm-found"));let p=n[h.server]===void 0?"?":String(n[h.server]);if(this.counter.textContent=`${h.mode} \xB7 ${Zf[h.region]??h.region} \xB7 ${p}ms`,await nn(w1),this.cancelled(e))return}await this.verifyAndJoin(e,h,t)}}async showFilters(){let e=await Promise.resolve().then(()=>ue(Jf(),1)),{filter:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=(g,b,v)=>{let k=i(g);k.replaceChildren();for(let E of b){let L=document.createElement("div");if(L.className=`mmChip${v.includes(E.value)?" on":""}`,E.icon){let y=document.createElement("img");y.src=E.icon,y.alt="",y.loading="lazy",y.onerror=()=>y.remove(),L.append(y)}L.append(E.label),L.onclick=()=>{let y=v.indexOf(E.value);y===-1?v.push(E.value):v.splice(y,1),L.classList.toggle("on",y===-1)},k.append(L)}},l=(g,b,v)=>{if(!g)return;let k=document.createElement("img");k.src=g,k.alt="",v?k.loading="lazy":k.draggable=!1,k.onerror=()=>k.remove(),b.append(k)},c=g=>{let{preferred:b}=g,v=i(g.boxId);v.hidden=b.length===0;let k=v.querySelector(".mmGrid");k.replaceChildren();let E=()=>k.querySelectorAll(".mmNum").forEach((L,y)=>L.textContent=String(y+1));for(let L of b){let y=document.createElement("div");y.className="mmChip on mmRank",y.append(rn("mmNum","")),l(g.icon(L),y,!1),y.append(g.label(L));let C=null;y.onpointerdown=I=>{y.setPointerCapture(I.pointerId),C={x:I.clientX,y:I.clientY,moved:!1}},y.onpointermove=I=>{if(!C||!C.moved&&Math.hypot(I.clientX-C.x,I.clientY-C.y)<5)return;C.moved=!0,y.classList.add("dragging");let _=[...k.children],H=_.findIndex(J=>{let B=J.getBoundingClientRect();return I.clientX>=B.left&&I.clientX<=B.right&&I.clientY>=B.top&&I.clientY<=B.bottom}),G=_.indexOf(y);H===-1||H===G||(b.splice(H,0,...b.splice(G,1)),y.remove(),k.insertBefore(y,k.children[H]??null),E())},y.onpointerup=()=>{y.classList.remove("dragging"),C&&!C.moved&&(b.unshift(...b.splice(b.indexOf(L),1)),window.SOUND?.play("tick_0",.1),c(g)),C=null},y.onpointercancel=y.onpointerup,k.append(y)}E()},u=g=>{let{picked:b,preferred:v}=g,k=i(g.gridId);k.replaceChildren();for(let E of g.values){let L=v.includes(E),y=document.createElement("div");y.className=`mmChip${b.includes(E)?" on":""}${L?" preferred":""}`,l(g.icon(E),y,!0),y.append(g.label(E));let C=rn("mmStar","\u2605");C.title=L?"Preferred, click to remove":`Prefer this ${g.noun}`,C.onclick=I=>{I.stopPropagation(),L?v.splice(v.indexOf(E),1):(v.push(E),b.length>0&&!b.includes(E)&&b.push(E)),u(g)},y.append(C),y.onclick=()=>{let I=b.indexOf(E);I!==-1?(b.splice(I,1),L&&v.splice(v.indexOf(E),1)):b.length===0?b.push(...new Set([...v,E])):b.push(E),u(g)},k.append(y)}c(g)},h=()=>{a("mmRegions",Object.entries(Zf).map(([g,b])=>({value:g,label:b})),t.regions),u({gridId:"mmModes",boxId:"mmModeRanks",noun:"mode",values:c1,picked:t.modes,preferred:t.preferredModes,label:g=>g,icon:()=>null}),u({gridId:"mmMaps",boxId:"mmMapRanks",noun:"map",values:og,picked:t.maps,preferred:t.preferredMaps,label:g=>d1[g]??g,icon:ng}),i("mmMinPlayers").value=String(t.minPlayers),i("mmMaxPlayers").value=String(t.maxPlayers),i("mmMinTime").value=String(t.minTime),i("mmSortByPlayers").checked=t.sortByPlayers,i("mmServerBrowser").checked=t.serverBrowser,i("mmAnimation").checked=t.animation,i("mmSearchAfterMatch").checked=t.searchAfterMatch};t.regions=[...t.regions],t.modes=[...t.modes],t.maps=[...t.maps],t.preferredMaps=[...t.preferredMaps],t.preferredModes=[...t.preferredModes],h();let p=(g,b,v,k)=>{let E=Number.parseInt(i(g).value,10);return Number.isNaN(E)?k:Math.min(v,Math.max(b,E))},f=new AbortController,m=()=>{f.abort(),o.remove(),this.saveFilter({...t,minPlayers:p("mmMinPlayers",0,7,sn.minPlayers),maxPlayers:p("mmMaxPlayers",0,7,sn.maxPlayers),minTime:p("mmMinTime",0,480,sn.minTime),sortByPlayers:i("mmSortByPlayers").checked,serverBrowser:i("mmServerBrowser").checked,animation:i("mmAnimation").checked,searchAfterMatch:i("mmSearchAfterMatch").checked})};i("mmDone").onclick=m,i("mmReset").onclick=()=>{Object.assign(t,sn,{regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[]}),h()},o.addEventListener("mousedown",g=>{g.target===o&&m()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),m())},{signal:f.signal,capture:!0}),document.body.append(o)}},x1=new od});var rd=we((JE,S1)=>{S1.exports=`#uiBase.onMenu #spectateUI{display:block!important}#uiBase.onCompMenu.onMenu #specTimer,#uiBase.onMenu #specGMessage,#uiBase.onMenu #spec1,#uiBase.onMenu #specGameInfo,#uiBase.onMenu #spec0,#uiBase.onMenu #specControlHolder,#uiBase.onMenu #specNames{display:none!important}#uiBase.onMenu #spectateUI>#spectateHUD{box-sizing:border-box;display:flex!important;justify-content:center;height:.5rem;white-space:nowrap;width:max-content;position:fixed;top:calc(50% + 140px)}#uiBase.onMenu #spectateHUD #specGMessage{top:0}#uiBase.onMenu #spectateUI>#spectateHUD{z-index:1;transform:unset}#uiBase.onMenu .spectateInfo{position:fixed;top:calc(40% - 105px);left:50%;transform:translate(-50%,-50%)}#uiBase.onMenu #spectateUI div .spectateInfo #specTimer{background-color:#0000;padding:0 25px;font-size:42px;border-radius:.5em}#uiBase.onMenu #specKPDContr{display:none}#uiBase.onMenu #spectateUI div#specStats{position:absolute;top:calc(50% + 13em);left:50%;transform:translate(-50%);z-index:1}#uiBase.onMenu #spectateUI div#specStats:before{content:"Spectating";position:absolute;bottom:100%;left:50%;transform:translate(-50%);font-size:1.2em;padding-bottom:.5em} +`});var ad={};A(ad,{default:()=>E1});var ig,rg,id,E1,ld=w(()=>{"use strict";ig=ue(rd(),1);F();rg="kute_menuTimerCSS",id=class{constructor(){d.settings.toggleMenuTimer=e=>this.toggle(e),this.toggle(d.settings.data.menuTimer!==!1)}toggle(e){let t=document.getElementById(rg);if(!e){t?.remove();return}if(t)return;let o=document.createElement("style");o.id=rg,o.textContent=ig.default,document.head.append(o)}},E1=new id});var ud={};A(ud,{default:()=>P1});function lg(s){let e=/loadUserMod\(\s*(["`])(.*?)\1\s*,\s*(["`])(.*?)\3/.exec(s);return e?{name:e[2],url:e[4]}:null}function cg(s){try{let e=new URL(s);return e.protocol!=="https:"?null:e.hostname==="krunker.io"||e.hostname.endsWith(".krunker.io")?e.href:e.hostname==="dropbox.com"||e.hostname==="www.dropbox.com"?(e.hostname="dl.dropboxusercontent.com",e.search="",e.href):null}catch{return null}}function A1(s){return`${s.replace(/[\u0000-\u001f<>:"/\\|?*]/g,"").replace(/\s+/g," ").trim().replace(/[ .]+$/,"").slice(0,80)||"mod"}.zip`}async function L1(s){let e=await fetch(s);if(e.status===403||e.status===404)throw new Error("This mod's file is gone, its creator removed it");if(!e.ok)throw new Error(`The mod server answered ${e.status}`);if(Number(e.headers.get("content-length")??0)>ag)throw new Error("That mod is too large");let t=await e.blob();if(t.size>ag)throw new Error("That mod is too large");let o=new Uint8Array(await t.slice(0,2).arrayBuffer());if(o[0]!==80||o[1]!==75)throw new Error("That mod is not a zip file");return t}function R1(s,e){let t=document.createElement("a");t.href=URL.createObjectURL(s),t.download=e,t.click(),setTimeout(()=>URL.revokeObjectURL(t.href),6e4)}function dg(s,e,t,o){let n=!1;s.addEventListener("click",r=>{if(r.stopPropagation(),n)return;n=!0,e.style.color=cd.busy,e.textContent="hourglass_top";let i=A1(t);L1(o).then(a=>{R1(a,i),e.style.color=cd.done,e.textContent="download_done",d.showNotification(`Saved ${i} to your Downloads folder`,!1,4)}).catch(a=>{e.style.color=cd.failed,e.textContent="error_outline",d.showNotification(a instanceof TypeError?"Could not download the mod":a.message,!1,4)}).finally(()=>{n=!1})})}function ug(s){let e=document.createElement("span");return e.className="material-icons",e.style.cssText=s,e.textContent="download",e}var an,ag,$1,C1,M1,T1,cd,dd,P1,pd=w(()=>{"use strict";F();an="data-kute-mod",ag=300*1024*1024,$1='[onclick^="downloadPack"]',C1="font-size:70px;color:#fff;",M1="position:absolute;right:30px;bottom:92px;box-sizing:content-box;width:240px;height:37px;padding:10px 6px 6px;border:3px solid #35e0e8;border-radius:6px;background:rgba(0,0,0,0.6);color:#fff;font-size:21px;text-align:center;cursor:pointer;",T1="font-size:32px;color:#fff;vertical-align:top;margin-top:-3px;margin-left:5px;",cd={busy:"#777",done:"#35e0e8",failed:"#ff7a7a"};dd=class{constructor(){this.pending=null,this.observer=new MutationObserver(()=>{this.pending===null&&(this.pending=setTimeout(()=>this.scan(),150))});let e=document.getElementById("menuWindow");e&&(this.observer.observe(e,{childList:!0,subtree:!0}),this.scan())}scan(){this.pending=null;let e=document.getElementById("menuWindow");if(!e)return;let t=[];for(let r of e.querySelectorAll('.mapActionB[onclick^="loadUserMod"]')){let i=r.parentElement;if(!i||i.querySelector(`[${an}], ${$1}`))continue;let a=lg(r.getAttribute("onclick")??""),l=a&&cg(a.url);a&&l&&t.push([i,this.listButton(a.name,l)])}let o=document.getElementById("bigMFeatPBtn"),n=o?.parentElement;if(o&&n&&!n.querySelector(`[${an}]`)){let r=lg(o.getAttribute("onclick")??""),i=r&&cg(r.url);r&&i&&t.push([n,[this.featuredButton(r.name,i)]])}if(t.length!==0){this.observer.disconnect();for(let[r,i]of t)r.append(...i);this.observer.observe(e,{childList:!0,subtree:!0})}}listButton(e,t){let o=document.createElement("div");o.className="mapActionSep",o.setAttribute(an,"");let n=document.createElement("div");n.className="mapActionB",n.title="Download",n.setAttribute(an,"");let r=ug(C1);return n.append(r),dg(n,r,e,t),[o,n]}featuredButton(e,t){let o=document.createElement("div");o.setAttribute(an,""),o.style.cssText=M1;let n=ug(T1);return o.append("Download ",n),dg(o,n,e,t),o}},P1=new dd});var fd={};A(fd,{default:()=>F1});function Tr(s,e,t){return Math.min(t,Math.max(e,s))}function hd(s,e){let t=parseFloat(localStorage.getItem("kro_setngss_"+s)??"");return Number.isFinite(t)&&t>0?t:e}function fg(s,e){let t=s.createProgram();for(let[o,n]of[[s.VERTEX_SHADER,z1],[s.FRAGMENT_SHADER,e]]){let r=s.createShader(o);if(!r)return null;s.shaderSource(r,n),s.compileShader(r),s.attachShader(t,r)}return s.linkProgram(t),s.getProgramParameter(t,s.LINK_STATUS)?t:null}var I1,pg,N1,_1,hg,B1,mg,z1,H1,O1,md,F1,gd=w(()=>{"use strict";F();ls();I1="kuteMotionBlur",pg=1e3/60,N1=.4,_1=.002,hg=.2,B1=2,mg=.0024,z1=`#version 300 es void main(){ vec2 p = vec2((gl_VertexID << 1) & 2, gl_VertexID & 2); gl_Position = vec4(p * 2.0 - 1.0, 0.0, 1.0); -}`,I1=s=>`#version 300 es +}`,H1=s=>`#version 300 es precision highp float; uniform sampler2D source; out vec4 color; @@ -1249,15 +1249,15 @@ void main(){ ivec2 p = ivec2(gl_FragCoord.xy); vec3 c = texelFetch(source, ivec2(p.x, size.y - 1 - p.y), 0).rgb; color = vec4(pow(c, vec3(${s})), 1.0); -}`,N1=s=>`#version 300 es +}`,O1=s=>`#version 300 es precision highp float; uniform sampler2D history; out vec4 color; void main(){ color = vec4(pow(texelFetch(history, ivec2(gl_FragCoord.xy), 0).rgb, vec3(1.0 / ${s})), 1.0); -}`;hd=class{constructor(){this.enabled=!1,this.running=!1,this.moveX=0,this.moveY=0,this.scaleX=0,this.scaleY=0,this.weight=0,this.lastFrame=0,this.hasHistory=!1,this.game=null,this.overlay=null,this.gl=null,this.accumulate=null,this.present=null,this.source=null,this.history=null,this.historyBuffer=null,this.historyFormat=0,this.unsupported=!1,this.onMouseMove=e=>{document.pointerLockElement!==null&&(this.moveX+=e.movementX,this.moveY+=e.movementY,this.running||(this.running=!0,this.lastFrame=0,this.readScale(),An(this.onFrameEnd)))},this.onPointerLockChange=()=>this.stop(),this.onFrameEnd=e=>this.frame(e),this.onContextLost=()=>this.release(),u.settings.toggleMotionBlur=e=>this.toggle(e),this.toggle(!!u.settings.data.motionBlur)}toggle(e){if(e!==this.enabled){if(this.enabled=e,e){window.addEventListener("mousemove",this.onMouseMove,!0),document.addEventListener("pointerlockchange",this.onPointerLockChange);return}window.removeEventListener("mousemove",this.onMouseMove,!0),document.removeEventListener("pointerlockchange",this.onPointerLockChange),this.stop(),this.unsupported=!1,this.gl?.getExtension("WEBGL_lose_context")?.loseContext(),this.release(),this.game=null}}stop(){this.running&&An(null),this.running=!1,this.moveX=0,this.moveY=0,this.weight=0,this.hasHistory=!1,this.overlay&&(this.overlay.style.display="none")}release(){this.overlay?.removeEventListener("webglcontextlost",this.onContextLost),this.overlay?.remove(),this.overlay=null,this.gl=null,this.accumulate=null,this.present=null,this.source=null,this.history=null,this.historyBuffer=null,this.hasHistory=!1}readScale(){let e=Tr(pd("fov",100),10,170)*Math.PI/180,t=.5/Math.tan(e/2);this.scaleX=dg*pd("sensitivityX",1)*t,this.scaleY=dg*pd("sensitivityY",1)*t}createContext(){let e=document.createElement("canvas");e.id=T1,e.style.cssText="position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;contain:strict;display:none";let t=e.getContext("webgl2",{alpha:!1,antialias:!1,depth:!1,stencil:!1,preserveDrawingBuffer:!1});if(!t)return!1;let o=!!(t.getExtension("EXT_color_buffer_float")||t.getExtension("EXT_color_buffer_half_float")),n=o?"2.2":"1.0",r=ug(t,I1(n)),i=ug(t,N1(n));if(!r||!i)return!1;t.useProgram(r),t.uniform1i(t.getUniformLocation(r,"source"),0),t.useProgram(i),t.uniform1i(t.getUniformLocation(i,"history"),1);let a=t.createTexture();t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,a),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let l=t.createTexture();t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,l),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let c=t.createFramebuffer();return t.blendFunc(t.CONSTANT_ALPHA,t.ONE_MINUS_CONSTANT_ALPHA),e.addEventListener("webglcontextlost",this.onContextLost),this.overlay=e,this.gl=t,this.accumulate=r,this.present=i,this.source=a,this.history=l,this.historyBuffer=c,this.historyFormat=o?t.RGBA16F:t.RGBA8,!0}attach(){this.game?.isConnected||(this.game=document.querySelector("body > canvas:not([id])"));let{game:e}=this;if(!e)return!1;if(!this.overlay&&(this.unsupported||!this.createContext()))return this.unsupported=!0,!1;let{overlay:t,gl:o}=this;return!t||!o?!1:(t.previousElementSibling!==e&&e.after(t),(t.width!==e.width||t.height!==e.height)&&(t.width=e.width,t.height=e.height,o.viewport(0,0,e.width,e.height),o.activeTexture(o.TEXTURE1),o.texImage2D(o.TEXTURE_2D,0,this.historyFormat,e.width,e.height,0,o.RGBA,this.historyFormat===o.RGBA8?o.UNSIGNED_BYTE:o.HALF_FLOAT,null),o.bindFramebuffer(o.FRAMEBUFFER,this.historyBuffer),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,this.history,0),this.hasHistory=!1),!0)}frame(e){let t=this.lastFrame?Tr(e-this.lastFrame,1,100):lg;this.lastFrame=e;let o=Math.hypot(this.moveX*this.scaleX,this.moveY*this.scaleY)*(1e3/t);this.moveX=0,this.moveY=0;let n=Tr((o-cg)/(R1-cg),0,1),i=Tr(Number(u.settings.data.motionBlurStrength)||0,0,100)/100*A1*n*n*(3-2*n);if(this.weight+=(i-this.weight)*(1-Math.exp(-t/(i>this.weight?6:12))),this.weight{hg=`#kuteNukeCounter{position:absolute;left:94%;top:50%;transform:translate(-50%,-50%);z-index:10;display:flex;align-items:center;gap:.3em;font-family:GameFont,monospace;font-size:26px;color:#fff;white-space:nowrap;pointer-events:none;text-shadow:1px 1px 3px rgba(0,0,0,.9)}#uiBase.onMenu #kuteNukeCounter{display:none}#kuteNukeCounter.nukeBg{padding:.2em .5em;border-radius:.25em;background:#00000059}.nukeIcon{color:#ffc147}.nukeGoal{color:#fff9}#kuteNukeCounter.nukeGoalMet .nukeCount{color:#9eeb56}@keyframes kuteNukeGain{0%{opacity:0;transform:scale(.6)}12%{opacity:1;transform:scale(1)}80%{opacity:1}to{opacity:0}}.nukeGain{color:#9eeb56;animation:kuteNukeGain 8s ease forwards} -`});var mg=we((ZE,z1)=>{z1.exports='

              Nuke Counter

              Your nuke total, in game. It updates when a match ends
              Where it sits and how big it is belongs to the HUD editor
              Place it
              Done
              '});var vd={};A(vd,{default:()=>j1});function K1(s,e,t){return Math.min(t,Math.max(e,Number(s)||0))}function gd(s){return s.toLocaleString("en-US")}var H1,O1,F1,D1,fg,q1,bd,j1,wd=w(()=>{"use strict";pg();F();H1={goal:0,background:!0},O1="https://gapi.svc.krunker.io/players/",F1=2e3,D1=3e4,fg=[5e3,2e4],q1=8e3;bd=class{constructor(){this.overlay=null,this.nukes=null,this.nukesFor="",this.noStat=!1,this.fetching=!1,this.lastTry=0,this.endWasUp=!1,this.tick=null,this.commitTimers=[],u.nukeCounter={showOptions:()=>this.showOptions()},u.settings.toggleNukeCounter=e=>this.toggle(e),this.toggle(!!u.settings.data.nukeCounter)}accountName(){try{return window.localStorage.getItem("krunker_username")??""}catch{return""}}get config(){return{...H1,...u.settings.data.nukeCounterConfig}}saveConfig(e){u.settings.data.nukeCounterConfig=e,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(e)}`)}toggle(e){if(!e){this.destroy();return}if(!document.querySelector("#kuteNukeCounterCSS")){let t=document.createElement("style");t.id="kuteNukeCounterCSS",t.textContent=hg,document.head.append(t)}this.inject(),this.nukes===null&&this.refresh(),this.tick??=setInterval(()=>this.onTick(),F1)}destroy(){this.tick!==null&&(clearInterval(this.tick),this.tick=null);for(let e of this.commitTimers)clearTimeout(e);this.commitTimers=[],this.overlay?.remove(),this.overlay=null,document.querySelector("#kuteNukeCounterCSS")?.remove(),this.endWasUp=!1}inject(){if(!this.accountName()||this.overlay?.isConnected)return;this.overlay?.remove();let e=document.createElement("div");e.id="kuteNukeCounter",e.innerHTML='\u2622\u2014',(document.querySelector("#uiBase")??document.body).append(e),this.overlay=e,this.applyConfig(),this.render()}applyConfig(){this.overlay?.classList.toggle("nukeBg",this.config.background)}render(){let{overlay:e}=this;if(!e)return;let{goal:t}=this.config,o=e.querySelector(".nukeCount"),n=e.querySelector(".nukeGoal");o&&(o.textContent=this.nukes===null?"\u2014":gd(this.nukes)),n&&(n.style.display=t>0?"":"none",n.textContent=`/ ${gd(t)}`),e.classList.toggle("nukeGoalMet",t>0&&this.nukes!==null&&this.nukes>=t)}showGain(e){let{overlay:t}=this;if(!t||e<=0)return;t.querySelector(".nukeGain")?.remove();let o=document.createElement("span");o.className="nukeGain",o.textContent=`+${gd(e)}`,t.append(o),setTimeout(()=>o.remove(),q1)}refresh(){let e=this.accountName();!e||this.fetching||(this.fetching=!0,this.lastTry=Date.now(),window.fetch(O1+encodeURIComponent(e),{credentials:"omit",signal:AbortSignal.timeout(1e4)}).then(t=>t.ok?t.json():null).then(t=>{let o=t?.data?.player_stats?.n;if(typeof o=="number"){let n=this.nukes===null||this.nukesFor!==e?0:o-this.nukes;this.nukes=o,this.noStat=!1,this.nukesFor=e,this.render(),this.showGain(n)}else t&&(this.noStat=!0,this.nukesFor=e)}).catch(()=>{}).finally(()=>{this.fetching=!1}))}onTick(){this.inject(),this.accountName()!==this.nukesFor&&(this.nukes!==null||this.noStat)&&(this.nukes=null,this.noStat=!1,this.lastTry=0,this.render()),this.nukes===null&&!this.noStat&&Date.now()-this.lastTry>D1&&this.refresh();let t=document.querySelector("#endUI"),o=!!t&&t.style.display!=="none";o&&!this.endWasUp&&this.commitTimers.length===0&&(this.commitTimers=fg.map((n,r)=>setTimeout(()=>{r===fg.length-1&&(this.commitTimers=[]),this.refresh()},n))),this.endWasUp=o}async showOptions(){let e=await Promise.resolve().then(()=>ue(mg(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=d=>r.querySelector(`#${d}`),a=()=>{u.settings.data.nukeCounterConfig=t,this.applyConfig(),this.render()};i("nkGoalInput").value=String(t.goal),i("nkBackground").checked=t.background,i("nkGoalInput").oninput=d=>{let h=Number.parseInt(d.target.value,10);t.goal=Number.isNaN(h)?0:K1(h,0,1e6),a()},i("nkBackground").onchange=d=>{t.background=d.target.checked,a()};let l=new AbortController,c=()=>{l.abort(),o.remove(),this.saveConfig(t)};i("nkDone").onclick=c,i("nkPlace").onclick=()=>{c(),u.hudEditor?.edit()},o.addEventListener("mousedown",d=>{d.target===o&&c()}),document.addEventListener("keydown",d=>{d.key==="Escape"&&(d.stopPropagation(),c())},{signal:l.signal,capture:!0}),document.body.append(o)}},j1=new bd});var gg=we((t8,U1)=>{U1.exports=`#kute-rank-list-btn{position:absolute;top:15px;right:30px;background-color:#5ce05a;color:#000;font-family:GameFont,sans-serif;font-size:14px;font-weight:700;padding:5px 15px;border-radius:4px;letter-spacing:1px;cursor:pointer;transition:transform .2s,background-color .2s;display:flex;align-items:center;z-index:10;text-transform:uppercase;box-shadow:0 2px 4px #0006}#kute-rank-list-btn:hover{transform:scale(1.05);background-color:#6efc6c;color:#000}#kute-rank-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000d9;z-index:99999;display:flex;justify-content:center;align-items:center;backdrop-filter:blur(4px)}.rank-popup-content{background:#151515;border:2px solid #333;border-top:4px solid #5ce05a;width:700px;max-width:90%;max-height:85vh;border-radius:8px;box-shadow:0 10px 40px #000c;display:flex;flex-direction:column;overflow:hidden;animation:popIn .3s cubic-bezier(.18,.89,.32,1.28)}@keyframes popIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.rank-popup-header{padding:20px;background:#ffffff08;border-bottom:2px solid rgba(255,255,255,.05);display:flex;justify-content:space-between;align-items:center}.rank-popup-header h2{margin:0;color:#fff;font-family:GameFont,sans-serif;font-size:24px;letter-spacing:1px}.rank-popup-close{font-size:24px;color:#aaa;cursor:pointer;font-weight:700;line-height:1}.rank-popup-close:hover{color:#eb5656}.rank-grid-container{padding:20px;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.rank-grid-item{background:#ffffff0d;padding:10px;border-radius:6px;display:flex;align-items:center;gap:12px;border:1px solid transparent}.rank-grid-item:hover{background:#ffffff1a;border-color:#fff3}.rank-grid-item img{height:45px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5))}.r-details{display:flex;flex-direction:column}.r-name{font-family:GameFont,sans-serif;font-size:16px;font-weight:700;margin-bottom:2px;text-shadow:1px 1px 0 #000}.r-elo{font-family:monospace;color:#888;font-size:13px;background:#0000004d;padding:2px 6px;border-radius:4px;display:inline-block;width:max-content}.rank-grid-container::-webkit-scrollbar{width:8px}.rank-grid-container::-webkit-scrollbar-thumb{background:#444;border-radius:4px}.rank-grid-container::-webkit-scrollbar-thumb:hover{background:#5ce05a}#kute-elo-tracker{width:100%;margin-top:5px;margin-bottom:10px;background:#0006;padding:8px 12px;border-radius:6px;border:1px solid rgba(255,255,255,.08);box-sizing:border-box}.elo-info-row{display:flex;align-items:center;gap:15px;justify-content:space-between}.elo-rank-img{height:28px;width:auto;display:block;margin-bottom:2px;filter:drop-shadow(0px 0px 3px rgba(0,0,0,.5))}.rank-current-container,.rank-next-container{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#bbb;font-family:GameFont,sans-serif;font-size:10px;line-height:1;min-width:50px}.rank-next-container span,.rank-current-container span{color:#fff;text-transform:uppercase;font-weight:700;letter-spacing:.5px}#kute-rank-list-btn span{font-size:16px!important;vertical-align:middle;margin-right:4px}.elo-progress-bar-bg{flex-grow:1;height:22px;background:#151515;border-radius:4px;position:relative;overflow:hidden;box-shadow:inset 0 2px 5px #00000080;border:1px solid #333}.elo-progress-bar-fill{height:100%;background-color:#fb8c00;background-image:linear-gradient(180deg,#fff3,#fff0);transition:width .8s cubic-bezier(.22,1,.36,1);box-shadow:0 0 10px #fb8c0066;position:relative}.elo-progress-bar-fill:after{content:"";position:absolute;right:0;top:0;bottom:0;width:1px;background:#fff;opacity:.7;box-shadow:0 0 5px #fff}.rank-name{margin-bottom:2px!important}.elo-progress-text{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;align-items:center;justify-content:center;color:#fff;text-shadow:1px 1px 2px #000,0 0 4px #000;font-weight:700;font-family:GameFont,sans-serif;font-size:14px;z-index:5;letter-spacing:1px}.rank-and-stats{justify-content:flex-start;gap:5px}.season-banner.svelte-s4rbwd{right:150px!important} -`});var yd={};A(yd,{default:()=>G1});var kd,G1,xd=w(()=>{"use strict";Ae();kd=class{constructor(){this.ranks=[{rank:"Unranked",elo:null,color:"#FFFFFF",image:"rank_unranked.svg"},{rank:"Bronze 1",elo:0,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Bronze 2",elo:200,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Bronze 3",elo:400,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Silver 1",elo:700,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Silver 2",elo:900,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Silver 3",elo:1100,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Gold 1",elo:1300,color:"#FFD700",image:"rank_gold.svg"},{rank:"Gold 2",elo:1600,color:"#FFD700",image:"rank_gold.svg"},{rank:"Gold 3",elo:2e3,color:"#FFD700",image:"rank_gold.svg"},{rank:"Platinum",elo:2300,color:"#4B69FF",image:"rank_platinum.svg"},{rank:"Diamond",elo:3e3,color:"#4B69FF",image:"rank_diamond.svg"},{rank:"Master",elo:3300,color:"#EE7032",image:"rank_master.svg"},{rank:"Kracked",elo:4700,color:"#FF0000",image:"rank_kracked.svg"}],this.observer=new MutationObserver(()=>this.checkForMenu());let e=window.openRankedMenu;window.openRankedMenu=()=>{e(),this.observer.observe(U(".rankedMenuModal"),{childList:!0,subtree:!0});let t=setInterval(()=>{document.querySelector(".rankedMenuModal")||(clearInterval(t),this.observer.disconnect())},5e3)},Promise.resolve().then(()=>ue(gg(),1)).then(t=>{let o=document.createElement("style");o.textContent=t.default,document.head.append(o)})}checkForMenu(){let e=document.querySelector(".rank-card"),t=document.querySelector(".rank-and-stats");e&&t&&(t.querySelector("#kute-elo-tracker")||this.injectBar(t),e.querySelector("#kute-rank-list-btn")||this.injectRankListButton(e))}injectRankListButton(e){let t=document.createElement("div");t.id="kute-rank-list-btn",t.className="season-banner",t.innerHTML='list Ranks',t.onclick=()=>this.openPopup(),window.getComputedStyle(e).position==="static"&&(e.style.position="relative"),e.appendChild(t)}openPopup(){if(document.getElementById("kute-rank-overlay"))return;let e="";for(let o of this.ranks)e+=` +}`;md=class{constructor(){this.enabled=!1,this.running=!1,this.moveX=0,this.moveY=0,this.scaleX=0,this.scaleY=0,this.weight=0,this.lastFrame=0,this.hasHistory=!1,this.game=null,this.overlay=null,this.gl=null,this.accumulate=null,this.present=null,this.source=null,this.history=null,this.historyBuffer=null,this.historyFormat=0,this.unsupported=!1,this.onMouseMove=e=>{document.pointerLockElement!==null&&(this.moveX+=e.movementX,this.moveY+=e.movementY,this.running||(this.running=!0,this.lastFrame=0,this.readScale(),Tn(this.onFrameEnd)))},this.onPointerLockChange=()=>this.stop(),this.onFrameEnd=e=>this.frame(e),this.onContextLost=()=>this.release(),d.settings.toggleMotionBlur=e=>this.toggle(e),this.toggle(!!d.settings.data.motionBlur)}toggle(e){if(e!==this.enabled){if(this.enabled=e,e){window.addEventListener("mousemove",this.onMouseMove,!0),document.addEventListener("pointerlockchange",this.onPointerLockChange);return}window.removeEventListener("mousemove",this.onMouseMove,!0),document.removeEventListener("pointerlockchange",this.onPointerLockChange),this.stop(),this.unsupported=!1,this.gl?.getExtension("WEBGL_lose_context")?.loseContext(),this.release(),this.game=null}}stop(){this.running&&Tn(null),this.running=!1,this.moveX=0,this.moveY=0,this.weight=0,this.hasHistory=!1,this.overlay&&(this.overlay.style.display="none")}release(){this.overlay?.removeEventListener("webglcontextlost",this.onContextLost),this.overlay?.remove(),this.overlay=null,this.gl=null,this.accumulate=null,this.present=null,this.source=null,this.history=null,this.historyBuffer=null,this.hasHistory=!1}readScale(){let e=Tr(hd("fov",100),10,170)*Math.PI/180,t=.5/Math.tan(e/2);this.scaleX=mg*hd("sensitivityX",1)*t,this.scaleY=mg*hd("sensitivityY",1)*t}createContext(){let e=document.createElement("canvas");e.id=I1,e.style.cssText="position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;contain:strict;display:none";let t=e.getContext("webgl2",{alpha:!1,antialias:!1,depth:!1,stencil:!1,preserveDrawingBuffer:!1});if(!t)return!1;let o=!!(t.getExtension("EXT_color_buffer_float")||t.getExtension("EXT_color_buffer_half_float")),n=o?"2.2":"1.0",r=fg(t,H1(n)),i=fg(t,O1(n));if(!r||!i)return!1;t.useProgram(r),t.uniform1i(t.getUniformLocation(r,"source"),0),t.useProgram(i),t.uniform1i(t.getUniformLocation(i,"history"),1);let a=t.createTexture();t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,a),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let l=t.createTexture();t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,l),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let c=t.createFramebuffer();return t.blendFunc(t.CONSTANT_ALPHA,t.ONE_MINUS_CONSTANT_ALPHA),e.addEventListener("webglcontextlost",this.onContextLost),this.overlay=e,this.gl=t,this.accumulate=r,this.present=i,this.source=a,this.history=l,this.historyBuffer=c,this.historyFormat=o?t.RGBA16F:t.RGBA8,!0}attach(){this.game?.isConnected||(this.game=document.querySelector("body > canvas:not([id])"));let{game:e}=this;if(!e)return!1;if(!this.overlay&&(this.unsupported||!this.createContext()))return this.unsupported=!0,!1;let{overlay:t,gl:o}=this;return!t||!o?!1:(t.previousElementSibling!==e&&e.after(t),(t.width!==e.width||t.height!==e.height)&&(t.width=e.width,t.height=e.height,o.viewport(0,0,e.width,e.height),o.activeTexture(o.TEXTURE1),o.texImage2D(o.TEXTURE_2D,0,this.historyFormat,e.width,e.height,0,o.RGBA,this.historyFormat===o.RGBA8?o.UNSIGNED_BYTE:o.HALF_FLOAT,null),o.bindFramebuffer(o.FRAMEBUFFER,this.historyBuffer),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,this.history,0),this.hasHistory=!1),!0)}frame(e){let t=this.lastFrame?Tr(e-this.lastFrame,1,100):pg;this.lastFrame=e;let o=Math.hypot(this.moveX*this.scaleX,this.moveY*this.scaleY)*(1e3/t);this.moveX=0,this.moveY=0;let n=Tr((o-hg)/(B1-hg),0,1),i=Tr(Number(d.settings.data.motionBlurStrength)||0,0,100)/100*N1*n*n*(3-2*n);if(this.weight+=(i-this.weight)*(1-Math.exp(-t/(i>this.weight?6:12))),this.weight<_1){this.stop();return}if(!this.attach()||!this.overlay||!this.gl||!this.game){this.stop();return}let{gl:a,overlay:l,game:c}=this;a.activeTexture(a.TEXTURE0),a.texImage2D(a.TEXTURE_2D,0,a.RGBA8,a.RGBA,a.UNSIGNED_BYTE,c),a.bindFramebuffer(a.FRAMEBUFFER,this.historyBuffer),a.useProgram(this.accumulate),this.hasHistory?(a.enable(a.BLEND),a.blendColor(0,0,0,1-this.weight**(t/pg))):a.disable(a.BLEND),a.drawArrays(a.TRIANGLES,0,3),a.disable(a.BLEND),a.bindFramebuffer(a.FRAMEBUFFER,null),a.useProgram(this.present),a.drawArrays(a.TRIANGLES,0,3),this.hasHistory||(this.hasHistory=!0,l.style.filter=c.style.filter,l.style.display="block")}},F1=new md});var bg,gg=w(()=>{bg=`#kuteNukeCounter{position:absolute;left:94%;top:50%;transform:translate(-50%,-50%);z-index:10;display:flex;align-items:center;gap:.3em;font-family:GameFont,monospace;font-size:26px;color:#fff;white-space:nowrap;pointer-events:none;text-shadow:1px 1px 3px rgba(0,0,0,.9)}#uiBase.onMenu #kuteNukeCounter{display:none}#kuteNukeCounter.nukeBg{padding:.2em .5em;border-radius:.25em;background:#00000059}.nukeIcon{color:#ffc147}.nukeGoal{color:#fff9}#kuteNukeCounter.nukeGoalMet .nukeCount{color:#9eeb56}@keyframes kuteNukeGain{0%{opacity:0;transform:scale(.6)}12%{opacity:1;transform:scale(1)}80%{opacity:1}to{opacity:0}}.nukeGain{color:#9eeb56;animation:kuteNukeGain 8s ease forwards} +`});var vg=we((s8,q1)=>{q1.exports='

              Nuke Counter

              Your nuke total, in game. It updates when a match ends
              Where it sits and how big it is belongs to the HUD editor
              Place it
              Done
              '});var wd={};A(wd,{default:()=>Y1});function V1(s,e,t){return Math.min(t,Math.max(e,Number(s)||0))}function bd(s){return s.toLocaleString("en-US")}var K1,j1,U1,G1,wg,W1,vd,Y1,kd=w(()=>{"use strict";gg();F();K1={goal:0,background:!0},j1="https://gapi.svc.krunker.io/players/",U1=2e3,G1=3e4,wg=[5e3,2e4],W1=8e3;vd=class{constructor(){this.overlay=null,this.nukes=null,this.nukesFor="",this.noStat=!1,this.fetching=!1,this.lastTry=0,this.endWasUp=!1,this.tick=null,this.commitTimers=[],d.nukeCounter={showOptions:()=>this.showOptions()},d.settings.toggleNukeCounter=e=>this.toggle(e),this.toggle(!!d.settings.data.nukeCounter)}accountName(){try{return window.localStorage.getItem("krunker_username")??""}catch{return""}}get config(){return{...K1,...d.settings.data.nukeCounterConfig}}saveConfig(e){d.settings.data.nukeCounterConfig=e,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(e)}`)}toggle(e){if(!e){this.destroy();return}if(!document.querySelector("#kuteNukeCounterCSS")){let t=document.createElement("style");t.id="kuteNukeCounterCSS",t.textContent=bg,document.head.append(t)}this.inject(),this.nukes===null&&this.refresh(),this.tick??=setInterval(()=>this.onTick(),U1)}destroy(){this.tick!==null&&(clearInterval(this.tick),this.tick=null);for(let e of this.commitTimers)clearTimeout(e);this.commitTimers=[],this.overlay?.remove(),this.overlay=null,document.querySelector("#kuteNukeCounterCSS")?.remove(),this.endWasUp=!1}inject(){if(!this.accountName()||this.overlay?.isConnected)return;this.overlay?.remove();let e=document.createElement("div");e.id="kuteNukeCounter",e.innerHTML='\u2622\u2014',(document.querySelector("#uiBase")??document.body).append(e),this.overlay=e,this.applyConfig(),this.render()}applyConfig(){this.overlay?.classList.toggle("nukeBg",this.config.background)}render(){let{overlay:e}=this;if(!e)return;let{goal:t}=this.config,o=e.querySelector(".nukeCount"),n=e.querySelector(".nukeGoal");o&&(o.textContent=this.nukes===null?"\u2014":bd(this.nukes)),n&&(n.style.display=t>0?"":"none",n.textContent=`/ ${bd(t)}`),e.classList.toggle("nukeGoalMet",t>0&&this.nukes!==null&&this.nukes>=t)}showGain(e){let{overlay:t}=this;if(!t||e<=0)return;t.querySelector(".nukeGain")?.remove();let o=document.createElement("span");o.className="nukeGain",o.textContent=`+${bd(e)}`,t.append(o),setTimeout(()=>o.remove(),W1)}refresh(){let e=this.accountName();!e||this.fetching||(this.fetching=!0,this.lastTry=Date.now(),window.fetch(j1+encodeURIComponent(e),{credentials:"omit",signal:AbortSignal.timeout(1e4)}).then(t=>t.ok?t.json():null).then(t=>{let o=t?.data?.player_stats?.n;if(typeof o=="number"){let n=this.nukes===null||this.nukesFor!==e?0:o-this.nukes;this.nukes=o,this.noStat=!1,this.nukesFor=e,this.render(),this.showGain(n)}else t&&(this.noStat=!0,this.nukesFor=e)}).catch(()=>{}).finally(()=>{this.fetching=!1}))}onTick(){this.inject(),this.accountName()!==this.nukesFor&&(this.nukes!==null||this.noStat)&&(this.nukes=null,this.noStat=!1,this.lastTry=0,this.render()),this.nukes===null&&!this.noStat&&Date.now()-this.lastTry>G1&&this.refresh();let t=document.querySelector("#endUI"),o=!!t&&t.style.display!=="none";o&&!this.endWasUp&&this.commitTimers.length===0&&(this.commitTimers=wg.map((n,r)=>setTimeout(()=>{r===wg.length-1&&(this.commitTimers=[]),this.refresh()},n))),this.endWasUp=o}async showOptions(){let e=await Promise.resolve().then(()=>ue(vg(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=u=>r.querySelector(`#${u}`),a=()=>{d.settings.data.nukeCounterConfig=t,this.applyConfig(),this.render()};i("nkGoalInput").value=String(t.goal),i("nkBackground").checked=t.background,i("nkGoalInput").oninput=u=>{let h=Number.parseInt(u.target.value,10);t.goal=Number.isNaN(h)?0:V1(h,0,1e6),a()},i("nkBackground").onchange=u=>{t.background=u.target.checked,a()};let l=new AbortController,c=()=>{l.abort(),o.remove(),this.saveConfig(t)};i("nkDone").onclick=c,i("nkPlace").onclick=()=>{c(),d.hudEditor?.edit()},o.addEventListener("mousedown",u=>{u.target===o&&c()}),document.addEventListener("keydown",u=>{u.key==="Escape"&&(u.stopPropagation(),c())},{signal:l.signal,capture:!0}),document.body.append(o)}},Y1=new vd});var kg=we((i8,X1)=>{X1.exports=`#kute-rank-list-btn{position:absolute;top:15px;right:30px;background-color:#5ce05a;color:#000;font-family:GameFont,sans-serif;font-size:14px;font-weight:700;padding:5px 15px;border-radius:4px;letter-spacing:1px;cursor:pointer;transition:transform .2s,background-color .2s;display:flex;align-items:center;z-index:10;text-transform:uppercase;box-shadow:0 2px 4px #0006}#kute-rank-list-btn:hover{transform:scale(1.05);background-color:#6efc6c;color:#000}#kute-rank-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000d9;z-index:99999;display:flex;justify-content:center;align-items:center;backdrop-filter:blur(4px)}.rank-popup-content{background:#151515;border:2px solid #333;border-top:4px solid #5ce05a;width:700px;max-width:90%;max-height:85vh;border-radius:8px;box-shadow:0 10px 40px #000c;display:flex;flex-direction:column;overflow:hidden;animation:popIn .3s cubic-bezier(.18,.89,.32,1.28)}@keyframes popIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.rank-popup-header{padding:20px;background:#ffffff08;border-bottom:2px solid rgba(255,255,255,.05);display:flex;justify-content:space-between;align-items:center}.rank-popup-header h2{margin:0;color:#fff;font-family:GameFont,sans-serif;font-size:24px;letter-spacing:1px}.rank-popup-close{font-size:24px;color:#aaa;cursor:pointer;font-weight:700;line-height:1}.rank-popup-close:hover{color:#eb5656}.rank-grid-container{padding:20px;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.rank-grid-item{background:#ffffff0d;padding:10px;border-radius:6px;display:flex;align-items:center;gap:12px;border:1px solid transparent}.rank-grid-item:hover{background:#ffffff1a;border-color:#fff3}.rank-grid-item img{height:45px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5))}.r-details{display:flex;flex-direction:column}.r-name{font-family:GameFont,sans-serif;font-size:16px;font-weight:700;margin-bottom:2px;text-shadow:1px 1px 0 #000}.r-elo{font-family:monospace;color:#888;font-size:13px;background:#0000004d;padding:2px 6px;border-radius:4px;display:inline-block;width:max-content}.rank-grid-container::-webkit-scrollbar{width:8px}.rank-grid-container::-webkit-scrollbar-thumb{background:#444;border-radius:4px}.rank-grid-container::-webkit-scrollbar-thumb:hover{background:#5ce05a}#kute-elo-tracker{width:100%;margin-top:5px;margin-bottom:10px;background:#0006;padding:8px 12px;border-radius:6px;border:1px solid rgba(255,255,255,.08);box-sizing:border-box}.elo-info-row{display:flex;align-items:center;gap:15px;justify-content:space-between}.elo-rank-img{height:28px;width:auto;display:block;margin-bottom:2px;filter:drop-shadow(0px 0px 3px rgba(0,0,0,.5))}.rank-current-container,.rank-next-container{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#bbb;font-family:GameFont,sans-serif;font-size:10px;line-height:1;min-width:50px}.rank-next-container span,.rank-current-container span{color:#fff;text-transform:uppercase;font-weight:700;letter-spacing:.5px}#kute-rank-list-btn span{font-size:16px!important;vertical-align:middle;margin-right:4px}.elo-progress-bar-bg{flex-grow:1;height:22px;background:#151515;border-radius:4px;position:relative;overflow:hidden;box-shadow:inset 0 2px 5px #00000080;border:1px solid #333}.elo-progress-bar-fill{height:100%;background-color:#fb8c00;background-image:linear-gradient(180deg,#fff3,#fff0);transition:width .8s cubic-bezier(.22,1,.36,1);box-shadow:0 0 10px #fb8c0066;position:relative}.elo-progress-bar-fill:after{content:"";position:absolute;right:0;top:0;bottom:0;width:1px;background:#fff;opacity:.7;box-shadow:0 0 5px #fff}.rank-name{margin-bottom:2px!important}.elo-progress-text{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;align-items:center;justify-content:center;color:#fff;text-shadow:1px 1px 2px #000,0 0 4px #000;font-weight:700;font-family:GameFont,sans-serif;font-size:14px;z-index:5;letter-spacing:1px}.rank-and-stats{justify-content:flex-start;gap:5px}.season-banner.svelte-s4rbwd{right:150px!important} +`});var xd={};A(xd,{default:()=>J1});var yd,J1,Sd=w(()=>{"use strict";Ae();yd=class{constructor(){this.ranks=[{rank:"Unranked",elo:null,color:"#FFFFFF",image:"rank_unranked.svg"},{rank:"Bronze 1",elo:0,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Bronze 2",elo:200,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Bronze 3",elo:400,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Silver 1",elo:700,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Silver 2",elo:900,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Silver 3",elo:1100,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Gold 1",elo:1300,color:"#FFD700",image:"rank_gold.svg"},{rank:"Gold 2",elo:1600,color:"#FFD700",image:"rank_gold.svg"},{rank:"Gold 3",elo:2e3,color:"#FFD700",image:"rank_gold.svg"},{rank:"Platinum",elo:2300,color:"#4B69FF",image:"rank_platinum.svg"},{rank:"Diamond",elo:3e3,color:"#4B69FF",image:"rank_diamond.svg"},{rank:"Master",elo:3300,color:"#EE7032",image:"rank_master.svg"},{rank:"Kracked",elo:4700,color:"#FF0000",image:"rank_kracked.svg"}],this.observer=new MutationObserver(()=>this.checkForMenu());let e=window.openRankedMenu;window.openRankedMenu=()=>{e(),this.observer.observe(U(".rankedMenuModal"),{childList:!0,subtree:!0});let t=setInterval(()=>{document.querySelector(".rankedMenuModal")||(clearInterval(t),this.observer.disconnect())},5e3)},Promise.resolve().then(()=>ue(kg(),1)).then(t=>{let o=document.createElement("style");o.textContent=t.default,document.head.append(o)})}checkForMenu(){let e=document.querySelector(".rank-card"),t=document.querySelector(".rank-and-stats");e&&t&&(t.querySelector("#kute-elo-tracker")||this.injectBar(t),e.querySelector("#kute-rank-list-btn")||this.injectRankListButton(e))}injectRankListButton(e){let t=document.createElement("div");t.id="kute-rank-list-btn",t.className="season-banner",t.innerHTML='list Ranks',t.onclick=()=>this.openPopup(),window.getComputedStyle(e).position==="static"&&(e.style.position="relative"),e.appendChild(t)}openPopup(){if(document.getElementById("kute-rank-overlay"))return;let e="";for(let o of this.ranks)e+=`
              @@ -1290,16 +1290,16 @@ void main(){
              ${i}
              - `;let l=e.querySelector(".quick-stats");l?e.insertBefore(r,l):e.append(r)}},G1=new kd});var Ed={};A(Ed,{default:()=>Y1});var W1,V1,Sd,Y1,$d=w(()=>{"use strict";F();W1=".ranked-matchmaking-status",V1="Match found!",Sd=class{constructor(){this.found=!1,this.status=null,this.observer=new MutationObserver(()=>this.check()),u.settings.toggleRankedAlert=e=>this.toggle(e),this.toggle(!0)}toggle(e){this.observer.disconnect(),e&&(this.status=document.querySelector(W1),this.status&&(this.observer.observe(this.status,{attributes:!0,attributeFilter:["class"],childList:!0,characterData:!0,subtree:!0}),this.found=this.shown()))}shown(){return!!this.status?.classList.contains("show")&&this.status?.textContent===V1}check(){let e=this.shown();e&&!this.found&&window.chrome.webview.postMessage("bring-to-front"),this.found=e}},Y1=new Sd});var Md={};A(Md,{default:()=>X1});var Cd,X1,Td=w(()=>{"use strict";F();Ae();Cd=class{constructor(){this.ingamePing=null,this.menuPing=null,this.interval=null,this.listener=null,u.settings.toggleRealPing=e=>this.toggle(e),this.toggle(!0)}applyPingDisplay(e){e&&Object.defineProperty(e,"textContent",{set:()=>{},configurable:!0})}async toggle(e){let[t,o]=await Promise.all([$e("#pingText"),$e("#menuPingText")]);this.ingamePing=t,this.menuPing=o,e?(this.applyPingDisplay(t),this.applyPingDisplay(o),this.interval=setInterval(()=>{window.chrome.webview.postMessage("ping")},3e3),this.listener=n=>{let r=n.data?.pingInfo;r&&(t.innerText=r,o.innerText=r)},window.chrome.webview.addEventListener("message",this.listener)):(this.interval!==null&&clearInterval(this.interval),this.listener&&window.chrome.webview.removeEventListener("message",this.listener),this.interval=null,this.listener=null,Reflect.deleteProperty(t,"textContent"),Reflect.deleteProperty(o,"textContent"))}},X1=new Cd});var vg,bg=w(()=>{vg='
              '});var Ld={};A(Ld,{default:()=>Z1});var Ar,Ad,Z1,Rd=w(()=>{"use strict";bg();F();Pt();Ar=s=>window.chrome.webview.postMessage(`recovery-${s}`),Ad=class{constructor(){this.host=null,this.shadow=null,document.addEventListener("pointerlockchange",()=>{this.host&&(this.host.style.display=document.pointerLockElement?"none":"flex")}),window.chrome.webview.addEventListener("message",e=>{e.data?.recovery&&this.show(e.data.recovery)}),u.recovery&&this.show(u.recovery)}banner(e,t,o){this.host||(this.host=document.createElement("div"),this.host.style.cssText="position:fixed;top:12px;left:0;right:0;display:flex;justify-content:center;pointer-events:none;z-index:2147482000",this.shadow=this.host.attachShadow({mode:"open"}),this.shadow.innerHTML=vg,document.body.append(this.host));let{shadow:n}=this;n.querySelector("#rcTitle").textContent=e,n.querySelector("#rcBody").textContent=t;let r=n.querySelector("#rcActions");r.replaceChildren();for(let[i,a,l]of o){let c=document.createElement("div");c.className=l?"rcButton rcMain":"rcButton",c.textContent=i,c.onclick=()=>Ar(a),r.append(c)}}show(e){if(e.mode==="safe"){let t=[["Restart normally","normal",!e.canFind]];e.canFind&&t.unshift(["Find the cause","find",!0]),this.banner("Safe mode:","your userscripts, swaps, custom CSS, flags and engine tweaks are off for this start. Nothing of yours was changed.",t)}else if(e.mode==="test"){let t=`${e.suspects} ${e.suspects===1?"thing":"things"} left to check.`;e.ranFine?this.banner(`Finding the cause, test ${e.step}:`,`this test passed, ${t} Restart for the next one.`,[["Next test","next",!0],["Stop","stop"]]):e.kind==="startup"?this.banner(`Finding the cause, test ${e.step}:`,`${t} Kute restarts by itself, nothing to do.`,[["Stop","stop"]]):this.banner(`Finding the cause, test ${e.step}:`,`${t} Play as usual. After ${e.minutes} min without a crash this test passes.`,[["Stop","stop"]])}else e.mode==="result"?this.result(e).catch(t=>console.error("[kute] recovery:",t)):e.mode==="offer"&&this.offer().catch(t=>console.error("[kute] recovery:",t))}async result(e){let t=`${e.tests?.crashed??0} tests crashed, ${e.tests?.ranFine??0} ran fine.`;if(e.verdict==="notTheSetup"){let i=!await Ce({title:"Not your setup",paragraphs:["Kute crashed even with everything of yours switched off, so it is most likely a driver, the PC or another program.","A Diagnostics Report (About settings) helps us look into it.",t],stay:"Create a report",leave:"Close"});Ar("dismiss"),i&&u.diagnostics?.open();return}let o=e.culprits??[],n=o.every(i=>i.fixable),r=!await Ce({title:"Found the cause",paragraphs:[`Kute crashed with ${o.length===1?"this":"these together"} and ran fine without:`,...o.map(i=>i.label),n?"It is off for this start. Switch it off for good, or keep it and Kute starts with it again next time.":"It is off for this start. To keep it off, remove it from the file in Documents\\kute.",t],stay:n?"Switch it off":"OK",leave:"Keep it"});Ar(r&&n?"apply":"dismiss"),r&&n&&u.showNotification("Switched off",!1,3)}async offer(){let e=!await Ce({title:"Kute crashed the last times it ran",paragraphs:["Safe mode starts without your userscripts, swaps, custom CSS, flags and engine tweaks, and can find which one causes it. Nothing of yours gets changed."],stay:"Restart in safe mode",leave:"Not now"});Ar(e?"safe":"dismiss")}},Z1=new Ad});var Id={};A(Id,{default:()=>nx});var Q1,ex,tx,ox,sx,Pd,nx,Nd=w(()=>{"use strict";F();Ae();cs();Q1=2e3,ex=.25,tx=60,ox=3e3,sx=.3,Pd=class{constructor(){this.ingameFPS=null,this.menuFPS=null,this.listener=null,this.gameFPS=null,this.rawGameFPS=null,this.potentialFps=0,this.presentEnabled=!!u.settings?.data?.renderStats,this.presentFps=0,this.presentAt=0,this.showPresent=!0,this.disagreeSince=0,this.shown="",u.settings.toggleRenderFps=e=>this.toggle(e),this.toggle(!0)}presentUsable(){if(performance.now()-this.presentAt>Q1)return!1;let e=Number.parseFloat(this.rawGameFPS??"");return!Number.isFinite(e)||e<=0?!0:!(this.presentFps=ox&&(this.showPresent=!this.showPresent,this.disagreeSince=0,this.showPresent||this.explainOnce()):this.disagreeSince=e,this.render()}explainOnce(){try{if(sessionStorage.getItem("kute_presentFpsHidden"))return;sessionStorage.setItem("kute_presentFpsHidden","1")}catch{return}u.showNotification?.(u.settings?.data?.hardFlip===!1?"Present FPS needs the DXGI Swapchain Hook (Settings, Engine), which is off. Showing the game's FPS":"Present FPS is hidden: the swap chain hook does not see the game's frames on this PC, its number would be wrong. Showing the game's FPS",!1,8)}render(){let e=this.showPresent&&this.presentAt>0?`${this.gameFPS??""} ${this.presentFps}`:this.gameFPS??"";e!==this.shown&&(this.shown=e,this.ingameFPS&&(this.ingameFPS.innerText=e),this.menuFPS&&(this.menuFPS.innerText=e))}withPotential(e){let t=Number.parseFloat(e),o=ai();if(!Number.isFinite(t)||t<=0||Number(u.settings?.data?.gameFpsLimit)>0)return e;if(o>0){let n=1e3/t,r=1e3/Math.max(o,n-o);this.potentialFps=this.potentialFps?this.potentialFps+(r-this.potentialFps)*sx:r}return this.potentialFps>t?String(Math.round(this.potentialFps)):e}applyFpsDisplay(e){e&&Object.defineProperty(e,"textContent",{set:t=>{this.rawGameFPS=t,this.gameFPS=this.withPotential(t),this.evaluate()},configurable:!0})}async toggle(e){let[t,o]=await Promise.all([$e("#ingameFPS"),$e("#menuFPS")]);this.ingameFPS=t,this.menuFPS=o,e?(this.applyFpsDisplay(t),this.applyFpsDisplay(o),this.listener=n=>{let r=n.data?.fpsInfo;typeof r=="number"&&(this.presentFps=r,this.presentAt=performance.now(),this.showPresent&&this.render())},window.chrome.webview.addEventListener("message",this.listener)):(this.listener&&(window.chrome.webview.removeEventListener("message",this.listener),this.listener=null),Reflect.deleteProperty(t,"textContent"),Reflect.deleteProperty(o,"textContent"))}},nx=new Pd});var Bd={};A(Bd,{default:()=>dx});var Wo,rx,ix,ax,lx,cx,wg,_d,dx,zd=w(()=>{"use strict";Ae();Wo="data-kute-ping",rx=6e4,ix=1e4,ax={FRA:"de-fra",NY:"us-nj",DAL:"us-tx",SV:"us-ca-sv",BRZ:"brz",SIN:"sgp",TOK:"jb-hnd",SYD:"au-syd",MBI:"as-mb",BHN:"me-bhn",SSS:"sss"},lx={"New York":"us-nj",Dallas:"us-tx",Frankfurt:"de-fra","Silicon Valley":"us-ca-sv",Sydney:"au-syd",Tokyo:"jb-hnd",Singapore:"sgp",Mumbai:"as-mb",Brazil:"brz","Middle East":"me-bhn","EU Super Secret Servers":"sss"},cx=` + `;let l=e.querySelector(".quick-stats");l?e.insertBefore(r,l):e.append(r)}},J1=new yd});var $d={};A($d,{default:()=>ex});var Z1,Q1,Ed,ex,Cd=w(()=>{"use strict";F();Z1=".ranked-matchmaking-status",Q1="Match found!",Ed=class{constructor(){this.found=!1,this.status=null,this.observer=new MutationObserver(()=>this.check()),d.settings.toggleRankedAlert=e=>this.toggle(e),this.toggle(!0)}toggle(e){this.observer.disconnect(),e&&(this.status=document.querySelector(Z1),this.status&&(this.observer.observe(this.status,{attributes:!0,attributeFilter:["class"],childList:!0,characterData:!0,subtree:!0}),this.found=this.shown()))}shown(){return!!this.status?.classList.contains("show")&&this.status?.textContent===Q1}check(){let e=this.shown();e&&!this.found&&window.chrome.webview.postMessage("bring-to-front"),this.found=e}},ex=new Ed});var Td={};A(Td,{default:()=>tx});var Md,tx,Ad=w(()=>{"use strict";F();Ae();Md=class{constructor(){this.ingamePing=null,this.menuPing=null,this.interval=null,this.listener=null,d.settings.toggleRealPing=e=>this.toggle(e),this.toggle(!0)}applyPingDisplay(e){e&&Object.defineProperty(e,"textContent",{set:()=>{},configurable:!0})}async toggle(e){let[t,o]=await Promise.all([$e("#pingText"),$e("#menuPingText")]);this.ingamePing=t,this.menuPing=o,e?(this.applyPingDisplay(t),this.applyPingDisplay(o),this.interval=setInterval(()=>{window.chrome.webview.postMessage("ping")},3e3),this.listener=n=>{let r=n.data?.pingInfo;r&&(t.innerText=r,o.innerText=r)},window.chrome.webview.addEventListener("message",this.listener)):(this.interval!==null&&clearInterval(this.interval),this.listener&&window.chrome.webview.removeEventListener("message",this.listener),this.interval=null,this.listener=null,Reflect.deleteProperty(t,"textContent"),Reflect.deleteProperty(o,"textContent"))}},tx=new Md});var xg,yg=w(()=>{xg='
              '});var Rd={};A(Rd,{default:()=>sx});var Ar,Ld,sx,Pd=w(()=>{"use strict";yg();F();Pt();Ar=s=>window.chrome.webview.postMessage(`recovery-${s}`),Ld=class{constructor(){this.host=null,this.shadow=null,document.addEventListener("pointerlockchange",()=>{this.host&&(this.host.style.display=document.pointerLockElement?"none":"flex")}),window.chrome.webview.addEventListener("message",e=>{e.data?.recovery&&this.show(e.data.recovery)}),d.recovery&&this.show(d.recovery)}banner(e,t,o){this.host||(this.host=document.createElement("div"),this.host.style.cssText="position:fixed;top:12px;left:0;right:0;display:flex;justify-content:center;pointer-events:none;z-index:2147482000",this.shadow=this.host.attachShadow({mode:"open"}),this.shadow.innerHTML=xg,document.body.append(this.host));let{shadow:n}=this;n.querySelector("#rcTitle").textContent=e,n.querySelector("#rcBody").textContent=t;let r=n.querySelector("#rcActions");r.replaceChildren();for(let[i,a,l]of o){let c=document.createElement("div");c.className=l?"rcButton rcMain":"rcButton",c.textContent=i,c.onclick=()=>Ar(a),r.append(c)}}show(e){if(e.mode==="safe"){let t=[["Restart normally","normal",!e.canFind]];e.canFind&&t.unshift(["Find the cause","find",!0]),this.banner("Safe mode:","your userscripts, swaps, custom CSS, flags and engine tweaks are off for this start. Nothing of yours was changed.",t)}else if(e.mode==="test"){let t=`${e.suspects} ${e.suspects===1?"thing":"things"} left to check.`;e.ranFine?this.banner(`Finding the cause, test ${e.step}:`,`this test passed, ${t} Restart for the next one.`,[["Next test","next",!0],["Stop","stop"]]):e.kind==="startup"?this.banner(`Finding the cause, test ${e.step}:`,`${t} Kute restarts by itself, nothing to do.`,[["Stop","stop"]]):this.banner(`Finding the cause, test ${e.step}:`,`${t} Play as usual. After ${e.minutes} min without a crash this test passes.`,[["Stop","stop"]])}else e.mode==="result"?this.result(e).catch(t=>console.error("[kute] recovery:",t)):e.mode==="offer"&&this.offer().catch(t=>console.error("[kute] recovery:",t))}async result(e){let t=`${e.tests?.crashed??0} tests crashed, ${e.tests?.ranFine??0} ran fine.`;if(e.verdict==="notTheSetup"){let i=!await Ce({title:"Not your setup",paragraphs:["Kute crashed even with everything of yours switched off, so it is most likely a driver, the PC or another program.","A Diagnostics Report (About settings) helps us look into it.",t],stay:"Create a report",leave:"Close"});Ar("dismiss"),i&&d.diagnostics?.open();return}let o=e.culprits??[],n=o.every(i=>i.fixable),r=!await Ce({title:"Found the cause",paragraphs:[`Kute crashed with ${o.length===1?"this":"these together"} and ran fine without:`,...o.map(i=>i.label),n?"It is off for this start. Switch it off for good, or keep it and Kute starts with it again next time.":"It is off for this start. To keep it off, remove it from the file in Documents\\kute.",t],stay:n?"Switch it off":"OK",leave:"Keep it"});Ar(r&&n?"apply":"dismiss"),r&&n&&d.showNotification("Switched off",!1,3)}async offer(){let e=!await Ce({title:"Kute crashed the last times it ran",paragraphs:["Safe mode starts without your userscripts, swaps, custom CSS, flags and engine tweaks, and can find which one causes it. Nothing of yours gets changed."],stay:"Restart in safe mode",leave:"Not now"});Ar(e?"safe":"dismiss")}},sx=new Ld});var Nd={};A(Nd,{default:()=>cx});var nx,rx,ix,ax,lx,Id,cx,_d=w(()=>{"use strict";F();Ae();ls();nx=2e3,rx=.25,ix=60,ax=3e3,lx=.3,Id=class{constructor(){this.ingameFPS=null,this.menuFPS=null,this.listener=null,this.gameFPS=null,this.rawGameFPS=null,this.potentialFps=0,this.presentEnabled=!!d.settings?.data?.renderStats,this.presentFps=0,this.presentAt=0,this.showPresent=!0,this.disagreeSince=0,this.shown="",d.settings.toggleRenderFps=e=>this.toggle(e),this.toggle(!0)}presentUsable(){if(performance.now()-this.presentAt>nx)return!1;let e=Number.parseFloat(this.rawGameFPS??"");return!Number.isFinite(e)||e<=0?!0:!(this.presentFps=ax&&(this.showPresent=!this.showPresent,this.disagreeSince=0,this.showPresent||this.explainOnce()):this.disagreeSince=e,this.render()}explainOnce(){try{if(sessionStorage.getItem("kute_presentFpsHidden"))return;sessionStorage.setItem("kute_presentFpsHidden","1")}catch{return}d.showNotification?.(d.settings?.data?.hardFlip===!1?"Present FPS needs the DXGI Swapchain Hook (Settings, Engine), which is off. Showing the game's FPS":"Present FPS is hidden: the swap chain hook does not see the game's frames on this PC, its number would be wrong. Showing the game's FPS",!1,8)}render(){let e=this.showPresent&&this.presentAt>0?`${this.gameFPS??""} ${this.presentFps}`:this.gameFPS??"";e!==this.shown&&(this.shown=e,this.ingameFPS&&(this.ingameFPS.innerText=e),this.menuFPS&&(this.menuFPS.innerText=e))}withPotential(e){let t=Number.parseFloat(e),o=ai();if(!Number.isFinite(t)||t<=0||Number(d.settings?.data?.gameFpsLimit)>0)return e;if(o>0){let n=1e3/t,r=1e3/Math.max(o,n-o);this.potentialFps=this.potentialFps?this.potentialFps+(r-this.potentialFps)*lx:r}return this.potentialFps>t?String(Math.round(this.potentialFps)):e}applyFpsDisplay(e){e&&Object.defineProperty(e,"textContent",{set:t=>{this.rawGameFPS=t,this.gameFPS=this.withPotential(t),this.evaluate()},configurable:!0})}async toggle(e){let[t,o]=await Promise.all([$e("#ingameFPS"),$e("#menuFPS")]);this.ingameFPS=t,this.menuFPS=o,e?(this.applyFpsDisplay(t),this.applyFpsDisplay(o),this.listener=n=>{let r=n.data?.fpsInfo;typeof r=="number"&&(this.presentFps=r,this.presentAt=performance.now(),this.showPresent&&this.render())},window.chrome.webview.addEventListener("message",this.listener)):(this.listener&&(window.chrome.webview.removeEventListener("message",this.listener),this.listener=null),Reflect.deleteProperty(t,"textContent"),Reflect.deleteProperty(o,"textContent"))}},cx=new Id});var zd={};A(zd,{default:()=>fx});var Go,dx,ux,px,hx,mx,Sg,Bd,fx,Hd=w(()=>{"use strict";Ae();Go="data-kute-ping",dx=6e4,ux=1e4,px={FRA:"de-fra",NY:"us-nj",DAL:"us-tx",SV:"us-ca-sv",BRZ:"brz",SIN:"sgp",TOK:"jb-hnd",SYD:"au-syd",MBI:"as-mb",BHN:"me-bhn",SSS:"sss"},hx={"New York":"us-nj",Dallas:"us-tx",Frankfurt:"de-fra","Silicon Valley":"us-ca-sv",Sydney:"au-syd",Tokyo:"jb-hnd",Singapore:"sgp",Mumbai:"as-mb",Brazil:"brz","Middle East":"me-bhn","EU Super Secret Servers":"sss"},mx=` #serverHolder .settNameIn .kutePing { float: right; margin-right: 8px; color: #35e0e8; font-size: 13px; line-height: 44px; } #serverHolder .setHed .kutePing { float: right; margin-right: 14px; color: #35e0e8; font-size: 0.75em; line-height: 42px; } -`,wg=s=>s===void 0?"":`${s} ms`,_d=class{constructor(){this.pings={},this.fetchedAt=0,this.fetching=!1,this.pending=null,this.observer=new MutationObserver(()=>{this.pending===null&&(this.pending=setTimeout(()=>this.scan(),150))});let e=document.createElement("style");e.textContent=cx,document.head.append(e);let t=document.getElementById("menuWindow");t&&(this.menu=t,this.observer.observe(t,{childList:!0,subtree:!0}))}refresh(){this.fetching||Date.now()-this.fetchedAt{this.fetching=!1,this.fetchedAt=Date.now(),e&&(this.pings=e,this.menu?.querySelectorAll(".kutePing").forEach(t=>t.remove()),this.menu?.querySelectorAll(`[${Wo}]`).forEach(t=>t.removeAttribute(Wo)),this.scan())}))}scan(){this.pending=null;let e=document.getElementById("serverHolder");e&&(this.refresh(),Object.keys(this.pings).length!==0&&(this.observer.disconnect(),this.labelRows(e),this.sortRegions(e),this.menu&&this.observer.observe(this.menu,{childList:!0,subtree:!0})))}labelRows(e){for(let t of e.querySelectorAll(`.settNameIn:not([${Wo}])`)){t.setAttribute(Wo,"");let o=/checkedSwitchServer\("([A-Z]+):/.exec(t.getAttribute("onclick")??"")?.[1],n=o?this.pings[ax[o]]:void 0,r=t.querySelector(".serverPing");if(n===void 0||!r)continue;let i=document.createElement("span");i.className="kutePing",i.textContent=wg(n),r.after(i)}}sortRegions(e){let t=[];for(let n of e.children)if(n.classList.contains("setHed")){let r=Array.from(n.childNodes,a=>a.nodeType===Node.TEXT_NODE?a.textContent:"").join("").trim(),i=this.pings[lx[r]];if(i!==void 0&&!n.hasAttribute(Wo)){n.setAttribute(Wo,"");let a=document.createElement("span");a.className="kutePing",a.textContent=wg(i),n.querySelector(".quickJoin")?.before(a)}t.push({nodes:[n],ping:i??-1})}else t.at(-1)?.nodes.push(n);if(t.length<2)return;let o=t.map((n,r)=>({...n,index:r})).sort((n,r)=>n.ping-r.ping||n.index-r.index);if(!o.every((n,r)=>n.index===r))for(let n of o)e.append(...n.nodes)}},dx=new _d});var Od={};A(Od,{default:()=>mx});function hx(s,e){if(JSON.stringify(e)?.length>px)return!1;if(Sg.includes(s))return e===null||typeof e=="object"&&!Array.isArray(e);let t=Eg.find(o=>o.id===s);return!t||typeof e!=typeof t.defaultValue||t.options&&!t.options.includes(e)?!1:typeof e!="number"||Number.isFinite(e)}function xg(){let s=new Date;return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}var kg,yg,ux,px,Sg,Eg,Hd,mx,Fd=w(()=>{"use strict";Zo();F();To();Pt();kg="kute-settings",yg=1,ux=256*1024,px=16*1024,Sg=["hudLayout","matchmakerFilter","hotkeys","nukeCounterConfig","customSkyConfig","kuteIconSlots","kuteIconUrls"],Eg=Object.values(At).filter(s=>"defaultValue"in s);Hd=class{constructor(){u.settingsTransfer={exportFile:()=>this.export(),importFile:()=>this.pick()}}export(){let e=hu(u.settings.data),t=[...Eg.map(i=>i.id),...Sg],o=Object.fromEntries(t.filter(i=>e[i]!==void 0).map(i=>[i,e[i]])),n={format:kg,version:yg,kute:u.version,exported:xg(),settings:o},r=document.createElement("a");r.href=URL.createObjectURL(new Blob([JSON.stringify(n,null,2)],{type:"application/json"})),r.download=`kute-settings-${xg()}.json`,r.click(),setTimeout(()=>URL.revokeObjectURL(r.href),1e4),u.showNotification(`Exported ${Object.keys(o).length} settings to your Downloads folder`,!1,4)}pick(){let e=document.createElement("input");e.type="file",e.accept=".json,application/json",e.onchange=()=>{let t=e.files?.[0];t&&this.read(t).catch(o=>console.error("[kute] settings import:",o))},e.click()}async read(e){if(e.size>ux){u.showNotification("That file is too big for a Kute settings file",!1,4);return}let t=null;try{t=JSON.parse(await e.text())}catch{t=null}if(t?.format!==kg||typeof t.settings!="object"||t.settings===null){u.showNotification("That is not a Kute settings file",!1,4);return}if(typeof t.version!="number"||t.version>yg){u.showNotification("That file comes from a newer Kute, update first",!1,4);return}let o=Object.entries(t.settings).filter(([i,a])=>hx(i,a));if(o.length===0){u.showNotification("That file holds no settings this Kute knows",!1,4);return}let n=typeof t.kute=="string"?` from Kute ${t.kute}`:"";if(await Ce({title:"Import Kute settings",paragraphs:[`${o.length} settings${n} in ${e.name}.`,"They replace your client settings, HUD positions, matchmaker filters and hotkeys. Kute restarts to apply them.","Userscripts, swapper files, custom CSS and your own sky images are files in Documents\\kute and are not part of it."],stay:"Cancel",leave:"Import and restart"})){for(let[i,a]of o)u.settings.data[i]=a,window.chrome.webview.postMessage(`set-config-json ${i} ${JSON.stringify(a)}`);window.chrome.webview.postMessage("restart")}}},mx=new Hd});var qd={};A(qd,{default:()=>fx});var Dd,fx,Kd=w(()=>{"use strict";F();Dd=class{constructor(){this.originalGenList=window.windows[22].genList,this.template=document.createElement("template"),u.settings.toggleShowPing=e=>this.toggle(e),this.toggle(!0)}toggle(e){let t=this;e?window.windows[22].genList=function(){return t.modifiedGenList(this)}:window.windows[22].genList=this.originalGenList}modifiedGenList(e){let t=this.originalGenList.call(e);this.template.innerHTML=t;let o=this.template.content.querySelectorAll(".pListPing.material-icons");for(let n of o){let r=n.getAttribute("title");n.classList.remove("pListPing","material-icons"),n.removeAttribute("title"),n.textContent=`${r||"N/A"} `}return this.template.innerHTML}},fx=new Dd});var Cg,$g=w(()=>{Cg=`#kuteSpotifyOverlay{position:absolute;left:463px;bottom:23px;z-index:10;display:flex;align-items:center;gap:12px;box-sizing:border-box;width:320px;min-height:82px;padding:10px;border:1px solid rgba(29,185,84,.7);border-radius:8px;background:#0c120fe0;box-shadow:0 4px 18px #00000059;color:#fff;font-family:Arial,sans-serif;pointer-events:none}#kuteSpotifyOverlay[hidden]{display:none}#kuteSpotifyOverlay.paused{opacity:.72}#kuteSpotifyArtwork{width:60px;height:60px;flex:0 0 60px;border-radius:4px;background:#26302a;object-fit:cover}#kuteSpotifyInfo{min-width:0;flex:1 1 auto}#kuteSpotifyTitle,#kuteSpotifyArtist{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#kuteSpotifyTitle{font-size:14px;font-weight:700}#kuteSpotifyArtist{margin-top:3px;color:#b8c8bc;font-size:12px}#kuteSpotifyProgress{height:3px;margin-top:9px;border-radius:2px;background:#536258;overflow:hidden}#kuteSpotifyProgress>div{height:100%;background:#1db954;transform:scaleX(0);transform-origin:left} -`});var Tg,Mg=w(()=>{Tg='
              '});var Ud={};A(Ud,{default:()=>wx});var vx,jd,wx,Gd=w(()=>{"use strict";$g();Mg();F();vx=1e3,jd=class{constructor(){this.overlay=null,this.playback=null,this.timer=null,this.artwork=null,this.listener=e=>{let{data:t}=e;typeof t!="object"||t===null||("spotify"in t?this.song(t.spotify):"spotifyState"in t&&this.state(t.spotifyState))},u.settings.toggleSpotifyOverlay=e=>this.toggle(e),this.toggle(!!u.settings.data.spotifyOverlay)}toggle(e){if(!e){window.chrome.webview.removeEventListener("message",this.listener),window.chrome.webview.postMessage("spotify-stop"),this.stopProgress(),this.overlay?.remove(),this.overlay=null,this.artwork=null,document.querySelector("#kuteSpotifyOverlayCSS")?.remove();return}if(this.overlay)return;let t=document.createElement("style");t.id="kuteSpotifyOverlayCSS",t.textContent=Cg,document.head.append(t),this.overlay=document.createElement("div"),this.overlay.id="kuteSpotifyOverlay",this.overlay.hidden=!0,this.overlay.innerHTML=Tg,(document.querySelector("#uiBase")??document.body).append(this.overlay),window.chrome.webview.addEventListener("message",this.listener),window.chrome.webview.postMessage("spotify-start")}song(e){if(!this.overlay||(this.overlay.hidden=!e,!e))return;let t=this.overlay.querySelector("#kuteSpotifyArtwork");e.artwork!==this.artwork&&(this.artwork=e.artwork,t.src=e.artwork??""),t.alt=e.album,this.overlay.querySelector("#kuteSpotifyTitle").textContent=e.title,this.overlay.querySelector("#kuteSpotifyArtist").textContent=e.artist,this.state(e)}state({playing:e,position:t,duration:o}){this.overlay&&(this.overlay.classList.toggle("paused",!e),this.playback={playing:e,position:t,duration:o,at:performance.now()},this.drawProgress(),e&&this.timer===null?this.timer=window.setInterval(()=>this.drawProgress(),vx):e||this.stopProgress())}drawProgress(){let e=this.overlay?.querySelector("#kuteSpotifyProgress > div")??null;if(!e||!this.playback)return;let{playing:t,position:o,duration:n,at:r}=this.playback,i=o+(t?performance.now()-r:0);e.style.transform=`scaleX(${n>0?Math.min(1,i/n).toFixed(4):0})`}stopProgress(){this.timer!==null&&window.clearInterval(this.timer),this.timer=null}},wx=new jd});var Vd={};A(Vd,{default:()=>kx});var Wd,kx,Yd=w(()=>{"use strict";F();Wd=class{constructor(){if(!u.version)return;let e=document.createElement("style");e.id="kute_versionTagCSS",e.textContent=` +`,Sg=s=>s===void 0?"":`${s} ms`,Bd=class{constructor(){this.pings={},this.fetchedAt=0,this.fetching=!1,this.pending=null,this.observer=new MutationObserver(()=>{this.pending===null&&(this.pending=setTimeout(()=>this.scan(),150))});let e=document.createElement("style");e.textContent=mx,document.head.append(e);let t=document.getElementById("menuWindow");t&&(this.menu=t,this.observer.observe(t,{childList:!0,subtree:!0}))}refresh(){this.fetching||Date.now()-this.fetchedAt{this.fetching=!1,this.fetchedAt=Date.now(),e&&(this.pings=e,this.menu?.querySelectorAll(".kutePing").forEach(t=>t.remove()),this.menu?.querySelectorAll(`[${Go}]`).forEach(t=>t.removeAttribute(Go)),this.scan())}))}scan(){this.pending=null;let e=document.getElementById("serverHolder");e&&(this.refresh(),Object.keys(this.pings).length!==0&&(this.observer.disconnect(),this.labelRows(e),this.sortRegions(e),this.menu&&this.observer.observe(this.menu,{childList:!0,subtree:!0})))}labelRows(e){for(let t of e.querySelectorAll(`.settNameIn:not([${Go}])`)){t.setAttribute(Go,"");let o=/checkedSwitchServer\("([A-Z]+):/.exec(t.getAttribute("onclick")??"")?.[1],n=o?this.pings[px[o]]:void 0,r=t.querySelector(".serverPing");if(n===void 0||!r)continue;let i=document.createElement("span");i.className="kutePing",i.textContent=Sg(n),r.after(i)}}sortRegions(e){let t=[];for(let n of e.children)if(n.classList.contains("setHed")){let r=Array.from(n.childNodes,a=>a.nodeType===Node.TEXT_NODE?a.textContent:"").join("").trim(),i=this.pings[hx[r]];if(i!==void 0&&!n.hasAttribute(Go)){n.setAttribute(Go,"");let a=document.createElement("span");a.className="kutePing",a.textContent=Sg(i),n.querySelector(".quickJoin")?.before(a)}t.push({nodes:[n],ping:i??-1})}else t.at(-1)?.nodes.push(n);if(t.length<2)return;let o=t.map((n,r)=>({...n,index:r})).sort((n,r)=>n.ping-r.ping||n.index-r.index);if(!o.every((n,r)=>n.index===r))for(let n of o)e.append(...n.nodes)}},fx=new Bd});var Fd={};A(Fd,{default:()=>wx});function vx(s,e){if(JSON.stringify(e)?.length>bx)return!1;if(Mg.includes(s))return e===null||typeof e=="object"&&!Array.isArray(e);let t=Tg.find(o=>o.id===s);return!t||typeof e!=typeof t.defaultValue||t.options&&!t.options.includes(e)?!1:typeof e!="number"||Number.isFinite(e)}function Cg(){let s=new Date;return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}var Eg,$g,gx,bx,Mg,Tg,Od,wx,Dd=w(()=>{"use strict";Jo();F();To();Pt();Eg="kute-settings",$g=1,gx=256*1024,bx=16*1024,Mg=["hudLayout","matchmakerFilter","hotkeys","nukeCounterConfig","customSkyConfig","kuteIconSlots","kuteIconUrls"],Tg=Object.values(At).filter(s=>"defaultValue"in s);Od=class{constructor(){d.settingsTransfer={exportFile:()=>this.export(),importFile:()=>this.pick()}}export(){let e=mu(d.settings.data),t=[...Tg.map(i=>i.id),...Mg],o=Object.fromEntries(t.filter(i=>e[i]!==void 0).map(i=>[i,e[i]])),n={format:Eg,version:$g,kute:d.version,exported:Cg(),settings:o},r=document.createElement("a");r.href=URL.createObjectURL(new Blob([JSON.stringify(n,null,2)],{type:"application/json"})),r.download=`kute-settings-${Cg()}.json`,r.click(),setTimeout(()=>URL.revokeObjectURL(r.href),1e4),d.showNotification(`Exported ${Object.keys(o).length} settings to your Downloads folder`,!1,4)}pick(){let e=document.createElement("input");e.type="file",e.accept=".json,application/json",e.onchange=()=>{let t=e.files?.[0];t&&this.read(t).catch(o=>console.error("[kute] settings import:",o))},e.click()}async read(e){if(e.size>gx){d.showNotification("That file is too big for a Kute settings file",!1,4);return}let t=null;try{t=JSON.parse(await e.text())}catch{t=null}if(t?.format!==Eg||typeof t.settings!="object"||t.settings===null){d.showNotification("That is not a Kute settings file",!1,4);return}if(typeof t.version!="number"||t.version>$g){d.showNotification("That file comes from a newer Kute, update first",!1,4);return}let o=Object.entries(t.settings).filter(([i,a])=>vx(i,a));if(o.length===0){d.showNotification("That file holds no settings this Kute knows",!1,4);return}let n=typeof t.kute=="string"?` from Kute ${t.kute}`:"";if(await Ce({title:"Import Kute settings",paragraphs:[`${o.length} settings${n} in ${e.name}.`,"They replace your client settings, HUD positions, matchmaker filters and hotkeys. Kute restarts to apply them.","Userscripts, swapper files, custom CSS and your own sky images are files in Documents\\kute and are not part of it."],stay:"Cancel",leave:"Import and restart"})){for(let[i,a]of o)d.settings.data[i]=a,window.chrome.webview.postMessage(`set-config-json ${i} ${JSON.stringify(a)}`);window.chrome.webview.postMessage("restart")}}},wx=new Od});var Kd={};A(Kd,{default:()=>kx});var qd,kx,jd=w(()=>{"use strict";F();qd=class{constructor(){this.originalGenList=window.windows[22].genList,this.template=document.createElement("template"),d.settings.toggleShowPing=e=>this.toggle(e),this.toggle(!0)}toggle(e){let t=this;e?window.windows[22].genList=function(){return t.modifiedGenList(this)}:window.windows[22].genList=this.originalGenList}modifiedGenList(e){let t=this.originalGenList.call(e);this.template.innerHTML=t;let o=this.template.content.querySelectorAll(".pListPing.material-icons");for(let n of o){let r=n.getAttribute("title");n.classList.remove("pListPing","material-icons"),n.removeAttribute("title"),n.textContent=`${r||"N/A"} `}return this.template.innerHTML}},kx=new qd});var Lg,Ag=w(()=>{Lg=`#kuteSpotifyOverlay{position:absolute;left:463px;bottom:23px;z-index:10;display:flex;align-items:center;gap:12px;box-sizing:border-box;width:320px;min-height:82px;padding:10px;border:1px solid rgba(29,185,84,.7);border-radius:8px;background:#0c120fe0;box-shadow:0 4px 18px #00000059;color:#fff;font-family:Arial,sans-serif;pointer-events:none}#kuteSpotifyOverlay[hidden]{display:none}#kuteSpotifyOverlay.paused{opacity:.72}#kuteSpotifyArtwork{width:60px;height:60px;flex:0 0 60px;border-radius:4px;background:#26302a;object-fit:cover}#kuteSpotifyInfo{min-width:0;flex:1 1 auto}#kuteSpotifyTitle,#kuteSpotifyArtist{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#kuteSpotifyTitle{font-size:14px;font-weight:700}#kuteSpotifyArtist{margin-top:3px;color:#b8c8bc;font-size:12px}#kuteSpotifyProgress{height:3px;margin-top:9px;border-radius:2px;background:#536258;overflow:hidden}#kuteSpotifyProgress>div{height:100%;background:#1db954;transform:scaleX(0);transform-origin:left} +`});var Pg,Rg=w(()=>{Pg='
              '});var Gd={};A(Gd,{default:()=>Ex});var Sx,Ud,Ex,Wd=w(()=>{"use strict";Ag();Rg();F();Sx=1e3,Ud=class{constructor(){this.overlay=null,this.playback=null,this.timer=null,this.artwork=null,this.listener=e=>{let{data:t}=e;typeof t!="object"||t===null||("spotify"in t?this.song(t.spotify):"spotifyState"in t&&this.state(t.spotifyState))},d.settings.toggleSpotifyOverlay=e=>this.toggle(e),this.toggle(!!d.settings.data.spotifyOverlay)}toggle(e){if(!e){window.chrome.webview.removeEventListener("message",this.listener),window.chrome.webview.postMessage("spotify-stop"),this.stopProgress(),this.overlay?.remove(),this.overlay=null,this.artwork=null,document.querySelector("#kuteSpotifyOverlayCSS")?.remove();return}if(this.overlay)return;let t=document.createElement("style");t.id="kuteSpotifyOverlayCSS",t.textContent=Lg,document.head.append(t),this.overlay=document.createElement("div"),this.overlay.id="kuteSpotifyOverlay",this.overlay.hidden=!0,this.overlay.innerHTML=Pg,(document.querySelector("#uiBase")??document.body).append(this.overlay),window.chrome.webview.addEventListener("message",this.listener),window.chrome.webview.postMessage("spotify-start")}song(e){if(!this.overlay||(this.overlay.hidden=!e,!e))return;let t=this.overlay.querySelector("#kuteSpotifyArtwork");e.artwork!==this.artwork&&(this.artwork=e.artwork,t.src=e.artwork??""),t.alt=e.album,this.overlay.querySelector("#kuteSpotifyTitle").textContent=e.title,this.overlay.querySelector("#kuteSpotifyArtist").textContent=e.artist,this.state(e)}state({playing:e,position:t,duration:o}){this.overlay&&(this.overlay.classList.toggle("paused",!e),this.playback={playing:e,position:t,duration:o,at:performance.now()},this.drawProgress(),e&&this.timer===null?this.timer=window.setInterval(()=>this.drawProgress(),Sx):e||this.stopProgress())}drawProgress(){let e=this.overlay?.querySelector("#kuteSpotifyProgress > div")??null;if(!e||!this.playback)return;let{playing:t,position:o,duration:n,at:r}=this.playback,i=o+(t?performance.now()-r:0);e.style.transform=`scaleX(${n>0?Math.min(1,i/n).toFixed(4):0})`}stopProgress(){this.timer!==null&&window.clearInterval(this.timer),this.timer=null}},Ex=new Ud});var Yd={};A(Yd,{default:()=>$x});var Vd,$x,Xd=w(()=>{"use strict";F();Vd=class{constructor(){if(!d.version)return;let e=document.createElement("style");e.id="kute_versionTagCSS",e.textContent=` #matchInfo > div:first-of-type::before { - content: ${JSON.stringify(`Kute v${u.version}`)}; + content: ${JSON.stringify(`Kute v${d.version}`)}; display: block; color: #35e0e8; - }`,document.head.append(e)}},kx=new Wd});var Rg={};var yx,Ag,xx,Lg,Xd,Jd=w(()=>{"use strict";yx=[{key:"scoreboardName.js",name:"Scoreboard Name",author:"Kute"}],Ag="kute_withdrawn",xx=1e4,Lg=localStorage.getItem(Ag)??"",Xd=yx.filter(s=>!Lg.split(",").includes(s.key));if(Xd.length>0){let s=0,e=t=>{let o=t.data?.userscripts?.groups;if(!Array.isArray(o))return;window.chrome.webview.removeEventListener("message",e),clearTimeout(s);let n=o.flatMap(r=>r.scripts??[]);for(let r of Xd)n.find(a=>a.key===r.key&&a.meta?.name===r.name&&a.meta?.author===r.author)&&(window.chrome.webview.postMessage(`scripts-toggle ${JSON.stringify({key:r.key,enabled:!1})}`),window.chrome.webview.postMessage(`scripts-delete ${JSON.stringify({key:r.key})}`));localStorage.setItem(Ag,[...Lg.split(",").filter(Boolean),...Xd.map(r=>r.key)].join(","))};s=setTimeout(()=>window.chrome.webview.removeEventListener("message",e),xx),window.chrome.webview.addEventListener("message",e),window.chrome.webview.postMessage("scripts-list {}")}});var _g,Zd=w(()=>{_g=du({"./modules/about.js":()=>Promise.resolve().then(()=>(gi(),tp)),"./modules/accountEndMessage.js":()=>Promise.resolve().then(()=>(ki(),wi)),"./modules/accountManager.js":()=>Promise.resolve().then(()=>(Ai(),Ti)),"./modules/api.js":()=>Promise.resolve().then(()=>(Nt(),mp)),"./modules/args.js":()=>Promise.resolve().then(()=>(Ri(),bp)),"./modules/autoDetect/bench.js":()=>Promise.resolve().then(()=>(ei(),zu)),"./modules/autoDetect/clientBench.js":()=>Promise.resolve().then(()=>(Ui(),xp)),"./modules/autoDetect/decide.js":()=>Promise.resolve().then(()=>(Gi(),Ep)),"./modules/autoDetect/gameSettings.js":()=>Promise.resolve().then(()=>(Zi(),Ji)),"./modules/autoDetect/index.js":()=>Promise.resolve().then(()=>(ca(),la)),"./modules/autoDetect/metrics.js":()=>Promise.resolve().then(()=>(Sn(),Iu)),"./modules/autoDetect/policy.js":()=>Promise.resolve().then(()=>(xs(),wp)),"./modules/autoDetect/sample.js":()=>Promise.resolve().then(()=>(ta(),Lp)),"./modules/autoDetect/scene.js":()=>Promise.resolve().then(()=>(Jr(),Pu)),"./modules/badges.js":()=>Promise.resolve().then(()=>(fa(),ma)),"./modules/betterChat.js":()=>Promise.resolve().then(()=>(va(),ba)),"./modules/bpClaimAll.js":()=>Promise.resolve().then(()=>(wa(),nh)),"./modules/changelog.js":()=>Promise.resolve().then(()=>(Ia(),Ch)),"./modules/chatDraft.js":()=>Promise.resolve().then(()=>(Ba(),_a)),"./modules/chatLogs.js":()=>Promise.resolve().then(()=>(Oa(),Ha)),"./modules/clanColors.js":()=>Promise.resolve().then(()=>(qa(),Da)),"./modules/confirmPopup.js":()=>Promise.resolve().then(()=>(Pt(),np)),"./modules/customCss.js":()=>Promise.resolve().then(()=>(kn(),Eu)),"./modules/customSky.js":()=>Promise.resolve().then(()=>(Ua(),ja)),"./modules/diagnostics.js":()=>Promise.resolve().then(()=>(Xa(),Ya)),"./modules/externalQueue.js":()=>Promise.resolve().then(()=>(sl(),Wh)),"./modules/fixes.js":()=>Promise.resolve().then(()=>(nl(),Vh)),"./modules/gameFpsLimit.js":()=>Promise.resolve().then(()=>(cs(),ci)),"./modules/hotkeys.js":()=>Promise.resolve().then(()=>(No(),$i)),"./modules/hpEnemyCounter.js":()=>Promise.resolve().then(()=>(al(),il)),"./modules/hsSound.js":()=>Promise.resolve().then(()=>(dl(),cl)),"./modules/hudEditor/editor.js":()=>Promise.resolve().then(()=>(ml(),hl)),"./modules/hudEditor/elements.js":()=>Promise.resolve().then(()=>(rr(),Qh)),"./modules/hudEditor/index.js":()=>Promise.resolve().then(()=>(ar(),pl)),"./modules/importSettings.js":()=>Promise.resolve().then(()=>(fl(),rm)),"./modules/inventoryScroll.js":()=>Promise.resolve().then(()=>(vl(),bl)),"./modules/keystrokes.js":()=>Promise.resolve().then(()=>(Sl(),xl)),"./modules/kuteCss.js":()=>Promise.resolve().then(()=>(si(),oi)),"./modules/kuteIcons/index.js":()=>Promise.resolve().then(()=>(Ml(),Cl)),"./modules/kuteIcons/slots.js":()=>Promise.resolve().then(()=>(wn(),yu)),"./modules/leftClick.js":()=>Promise.resolve().then(()=>(vn(),wu)),"./modules/linuxUpdate.js":()=>Promise.resolve().then(()=>(Rl(),Ll)),"./modules/logoBadge.js":()=>Promise.resolve().then(()=>(pi(),ui)),"./modules/managers/customCss.js":()=>Promise.resolve().then(()=>(zl(),Bl)),"./modules/managers/editor.js":()=>Promise.resolve().then(()=>(Do(),zh)),"./modules/managers/index.js":()=>Promise.resolve().then(()=>(Gl(),Dm)),"./modules/managers/popup.js":()=>Promise.resolve().then(()=>(qs(),Pm)),"./modules/managers/registry.js":()=>Promise.resolve().then(()=>(os(),xu)),"./modules/managers/stylesheets.js":()=>Promise.resolve().then(()=>(hr(),Im)),"./modules/managers/swapper.js":()=>Promise.resolve().then(()=>(Ul(),jl)),"./modules/managers/userscripts.js":()=>Promise.resolve().then(()=>(Fl(),Ol)),"./modules/maps.js":()=>Promise.resolve().then(()=>(sr(),Hh)),"./modules/market.js":()=>Promise.resolve().then(()=>(jf(),e1)),"./modules/market/alerts.js":()=>Promise.resolve().then(()=>(br(),of)),"./modules/market/analytics.js":()=>Promise.resolve().then(()=>(yr(),mf)),"./modules/market/api.js":()=>Promise.resolve().then(()=>(xe(),Km)),"./modules/market/cards.js":()=>Promise.resolve().then(()=>(ec(),Wm)),"./modules/market/chart.js":()=>Promise.resolve().then(()=>(Vc(),Hf)),"./modules/market/chartData.js":()=>Promise.resolve().then(()=>(Sr(),Sf)),"./modules/market/contrib.js":()=>Promise.resolve().then(()=>(dc(),df)),"./modules/market/contributionData.js":()=>Promise.resolve().then(()=>(lc(),rf)),"./modules/market/contributionEvidence.js":()=>Promise.resolve().then(()=>(yc(),kf)),"./modules/market/element.js":()=>Promise.resolve().then(()=>(Be(),pf)),"./modules/market/exchangeEvidence.js":()=>Promise.resolve().then(()=>(Sc(),yf)),"./modules/market/index.js":()=>Promise.resolve().then(()=>(Mr(),Zc)),"./modules/market/intelligence.js":()=>Promise.resolve().then(()=>(on(),wf)),"./modules/market/itemSearch.js":()=>Promise.resolve().then(()=>(Uo(),bf)),"./modules/market/navigation.js":()=>Promise.resolve().then(()=>(kr(),uf)),"./modules/market/presentation.js":()=>Promise.resolve().then(()=>(pe(),Um)),"./modules/market/terminal.js":()=>Promise.resolve().then(()=>(Xc(),Yc)),"./modules/market/trade.js":()=>Promise.resolve().then(()=>(oc(),Xm)),"./modules/market/types.js":()=>Promise.resolve().then(()=>(Ve(),jm)),"./modules/market/views/analyze.js":()=>Promise.resolve().then(()=>(Oc(),Lf)),"./modules/market/views/compactList.js":()=>Promise.resolve().then(()=>(Uc(),Nf)),"./modules/market/views/deals.js":()=>Promise.resolve().then(()=>(Ic(),Mf)),"./modules/market/views/help.js":()=>Promise.resolve().then(()=>(Wc(),zf)),"./modules/market/views/indices.js":()=>Promise.resolve().then(()=>(_c(),Tf)),"./modules/market/views/intelligence.js":()=>Promise.resolve().then(()=>(Dc(),Rf)),"./modules/market/views/intro.js":()=>Promise.resolve().then(()=>(Er(),Pf)),"./modules/market/views/item.js":()=>Promise.resolve().then(()=>(Mc(),Ef)),"./modules/market/views/movers.js":()=>Promise.resolve().then(()=>(Rc(),Cf)),"./modules/market/views/overview.js":()=>Promise.resolve().then(()=>(mc(),gf)),"./modules/market/views/portfolio.js":()=>Promise.resolve().then(()=>(zc(),Af)),"./modules/market/views/search.js":()=>Promise.resolve().then(()=>(gc(),vf)),"./modules/market/views/table.js":()=>Promise.resolve().then(()=>(Kc(),If)),"./modules/market/views/watchlist.js":()=>Promise.resolve().then(()=>(Ac(),$f)),"./modules/market/watchlist.js":()=>Promise.resolve().then(()=>(Vt(),Zm)),"./modules/matchmaker.js":()=>Promise.resolve().then(()=>(sd(),od)),"./modules/menuTimer.js":()=>Promise.resolve().then(()=>(ad(),id)),"./modules/modDownload.js":()=>Promise.resolve().then(()=>(ud(),dd)),"./modules/motionBlur.js":()=>Promise.resolve().then(()=>(fd(),md)),"./modules/nukeCounter.js":()=>Promise.resolve().then(()=>(wd(),vd)),"./modules/playerLists.js":()=>Promise.resolve().then(()=>(Gn(),Up)),"./modules/presence.js":()=>Promise.resolve().then(()=>(pa(),Wp)),"./modules/privateMatch.js":()=>Promise.resolve().then(()=>(On(),Mp)),"./modules/queueSound.js":()=>Promise.resolve().then(()=>(ol(),jh)),"./modules/rampBoost.js":()=>Promise.resolve().then(()=>(fn(),gu)),"./modules/rankProgress.js":()=>Promise.resolve().then(()=>(xd(),yd)),"./modules/rankedAlert.js":()=>Promise.resolve().then(()=>($d(),Ed)),"./modules/realPing.js":()=>Promise.resolve().then(()=>(Td(),Md)),"./modules/recovery.js":()=>Promise.resolve().then(()=>(Rd(),Ld)),"./modules/renderFps.js":()=>Promise.resolve().then(()=>(Nd(),Id)),"./modules/serverPings.js":()=>Promise.resolve().then(()=>(zd(),Bd)),"./modules/sessionRecovery.js":()=>Promise.resolve().then(()=>(xn(),Au)),"./modules/settingsTransfer.js":()=>Promise.resolve().then(()=>(Fd(),Od)),"./modules/showPing.js":()=>Promise.resolve().then(()=>(Kd(),qd)),"./modules/spotifyOverlay.js":()=>Promise.resolve().then(()=>(Gd(),Ud)),"./modules/versionTag.js":()=>Promise.resolve().then(()=>(Yd(),Vd)),"./modules/withdrawn.js":()=>Promise.resolve().then(()=>(Jd(),Rg))})});var Og={};A(Og,{default:()=>Tx});function Bg(s){return`toggle${s.charAt(0).toUpperCase()+s.slice(1)}`}function Pg(s){let e=s.disabledBy?Jt[s.disabledBy]:null;return e&&u.settings.data[e.id]===!0?e:null}function zg(s,e){let t=u.settings[Bg(s)];if(typeof t=="function"){t(e);return}if(e)try{_g(`./modules/${s}.js`).catch(()=>{})}catch{}}function Hg(s,e){switch(s){case"exitButton":U("#clientExit").style.display=`${e?"flex":"none"}`;break;case"menuTimer":e?Promise.resolve().then(()=>ue(nd(),1)).then(t=>{let o=document.createElement("style");o.id="kute_menuTimerCSS",o.textContent=t.default,document.head.append(o)}):document.querySelector("#kute_menuTimerCSS")?.remove();break;case"classicMenu":e?Promise.resolve().then(()=>ue(mi(),1)).then(t=>{let o=document.createElement("style");o.id="kute_classicMenuCSS",o.textContent=t.default,document.head.append(o)}):document.querySelector("#kute_classicMenuCSS")?.remove();break;case"cleanUI":{e?Promise.resolve().then(()=>ue(hi(),1)).then(t=>{let o=document.createElement("style");o.id="kute_cleanCSS",o.textContent=t.default,document.head.append(o)}):document.querySelector("#kute_cleanCSS")?.remove();break}case"textSelect":{if(e){let t=document.createElement("style");t.id="kute_textSelectCSS",t.textContent="#chatHolder * { user-select: text }",document.head.append(t)}else document.querySelector("#kute_textSelectCSS")?.remove();break}default:break}}function Cx(s,e){for(let t of Object.values(Jt)){if(t.disabledBy!==s)continue;let o=!e&&!!u.settings.data[t.id],n=document.querySelector(`#${t.id}`);if(n instanceof HTMLInputElement){n.checked=o,n.disabled=e;let r=n.closest("label");r&&(r.style.cssText=e?Lr:"",r.title=e?`Off while ${Jt[s].name} is on`:"")}zg(t.id,o)}}var Qd,Lr,Sx,Ex,$x,Jt,Ig,Ng,Mx,eu,Tx,Fg=w(()=>{"use strict";Zo();F();Ae();To();fn();Zd();Qd=new Map,Lr="opacity: 0.35; cursor: not-allowed",Sx='window.setSetting("rawMouse"',Ex="Controlled by Kute's Raw Input setting",$x="Not available on Linux",Jt=At;u.settings.changeSetting=(s,e,t)=>{if(e==="")return;let o=document.querySelector(`#${s}`);o instanceof HTMLInputElement&&(o.value=String(e),o.type==="checkbox"&&(o.checked=e===!0));let n=e;typeof n=="string"&&/^-?\d*\.?\d+$/.test(n)&&(n.includes(".")?n=Number.parseFloat(n):n=Number.parseInt(n,10));let r=document.querySelector(`#slid_input_${s}`);if(r&&t){r.value=String(n),clearTimeout(Qd.get(s)),Qd.set(s,setTimeout(()=>{u.settings.data[s]=n,window.chrome.webview.postMessage(`set-config, ${s}, ${n}`),Qd.delete(s)},500));return}switch(s){case"obsCapturePlugin":if(n&&!confirm("Install the Kute Capture plugin into OBS? OBS must be closed, and Windows may ask for administrator permission.")){ke("#obsCapturePlugin").checked=!1;return}window.chrome.webview.postMessage(`obs-plugin, ${n}`);break;case"rampBoost":n?Oe()||to(!0):to(!1);break;default:Hg(s,n);break}let i=Bg(s);if(typeof u.settings[i]!="function")try{_g(`./modules/${s}.js`).catch(()=>{})}catch{}else u.settings[i](n);u.settings.data[s]=n,window.chrome.webview.postMessage(`set-config, ${s}, ${n}`),Cx(s,n===!0)};Ig=' *',Ng=' *',Mx=()=>{let s=e=>`window.chrome.webview.postMessage('open-url, ${e}')`;return[["About","info","kuteTopBlue",`${Ue}.showAboutPopup()`],["Website","language","kuteTopBlue",s("https://kute.lol")],["Source Code","code","kuteTopPink",s("https://github.com/NullDev/Kute")],["Report Issue","bug_report","kuteTopPink",s("https://github.com/NullDev/Kute/issues/choose")],["Manage Swapper","swap_horiz","kuteTopOrange",`${Ue}.swapperManager.open()`],["Manage Userscripts","extension","kuteTopOrange",`${Ue}.userscriptManager.open()`]]},eu=class{constructor(){this.settingsWindow=window.windows[0],this.init()}init(){let e=this.settingsWindow.getSettings;this.settingsWindow.getSettings=(...t)=>{let o=this.lockRawMouse(e.call(this.settingsWindow,...t)),n=this.getCSettings();if(!n)return o;let r=o.startsWith("
              ");return(r?o.slice(6):o)+n+(r?"
              ":"")},this.settingsWindow.getCSettings=()=>this.getCSettings(),u.settings.togglePerformanceMode=t=>{for(let o of mn(u.settings.data,t)){let n=u.settings.data[o];Hg(o,n),zg(o,n===!0&&!Pg(Jt[o]))}setTimeout(()=>this.rerender(),0)},u.openKuteSettings=()=>{window.showWindow(1),this.settingsWindow.changeTab(this.settingsWindow.tabs[this.settingsWindow.settingType].length-1)},window.chrome.webview.addEventListener("message",t=>{let o=t.data;if(o?.type==="obs-plugin"){if(!o.ok){u.settings.data.obsCapturePlugin=!1;let n=document.querySelector("#obsCapturePlugin");n&&(n.checked=!1)}u.showNotification(o.message,!1,5)}})}rerender(){let e=this.settingsWindow.tabs[this.settingsWindow.settingType];(this.settingsWindow.tabIndex===e.length-1||this.settingsWindow.settingSearch)&&this.settingsWindow.changeTab(this.settingsWindow.tabIndex)}lockRawMouse(e){let t=e.indexOf(Sx);if(t<0)return e;let o=e.lastIndexOf("",t),r=e.lastIndexOf("",r);if(i<0||i>o)return e;let a=e.slice(o,n).replace(/\s+checked\b/,"")+(u.settings.data.rawInput&&u.platform!=="linux"?" checked":"")+" disabled>",l=u.platform==="linux"?$x:Ex;return e.slice(0,i)+` title="${l}">`+e.slice(i+1,o)+a+e.slice(n+1)}searchMatches(e){let t=this.settingsWindow.settingSearch.toLowerCase()||"";return[e.name,e.category,e.description??""].some(o=>o.toLowerCase().includes(t))}generateHtml(e){let t=u.settings.data[e.id],o=e.buttonAction?.replaceAll("{{kute}}",Ue).replaceAll('"',""")??"",n=e.requiresLogin&&document.querySelector("#signedInHeaderBar")===null,r="",i=e.type==="checkbox"?"margin-right: 8px; ":"";switch(e.button&&n?r=`
              ${e.button}
              `:e.button&&(r=`
              ${e.button}
              `),e.type){case"checkbox":{let a=Pg(e);if(a)return`
              ");return(r?o.slice(6):o)+n+(r?"":"")},this.settingsWindow.getCSettings=()=>this.getCSettings(),d.settings.togglePerformanceMode=t=>{for(let o of hn(d.settings.data,t)){let n=d.settings.data[o];qg(o,n),Dg(o,n===!0&&!Bg(Jt[o]))}setTimeout(()=>this.rerender(),0)},d.openKuteSettings=()=>{window.showWindow(1),this.settingsWindow.changeTab(this.settingsWindow.tabs[this.settingsWindow.settingType].length-1)},window.chrome.webview.addEventListener("message",t=>{let o=t.data;if(o?.type==="obs-plugin"){if(!o.ok){d.settings.data.obsCapturePlugin=!1;let n=document.querySelector("#obsCapturePlugin");n&&(n.checked=!1)}d.showNotification(o.message,!1,5)}})}rerender(){let e=this.settingsWindow.tabs[this.settingsWindow.settingType];(this.settingsWindow.tabIndex===e.length-1||this.settingsWindow.settingSearch)&&this.settingsWindow.changeTab(this.settingsWindow.tabIndex)}lockRawMouse(e){let t=e.indexOf(Tx);if(t<0)return e;let o=e.lastIndexOf("",t),r=e.lastIndexOf("",r);if(i<0||i>o)return e;let a=e.slice(o,n).replace(/\s+checked\b/,"")+(d.settings.data.rawInput&&d.platform!=="linux"?" checked":"")+" disabled>",l=d.platform==="linux"?Lx:Ax;return e.slice(0,i)+` title="${l}">`+e.slice(i+1,o)+a+e.slice(n+1)}searchMatches(e){let t=this.settingsWindow.settingSearch.toLowerCase()||"";return[e.name,e.category,e.description??""].some(o=>o.toLowerCase().includes(t))}generateHtml(e){let t=d.settings.data[e.id],o=e.buttonAction?.replaceAll("{{kute}}",Ue).replaceAll('"',""")??"",n=e.requiresLogin&&document.querySelector("#signedInHeaderBar")===null,r="",i=e.type==="checkbox"?"margin-right: 8px; ":"";switch(e.button&&n?r=`
              ${e.button}
              `:e.button&&(r=`
              ${e.button}
              `),e.type){case"checkbox":{let a=Bg(e);if(a)return` - ${r}`;let l=e.requires?Jt[e.requires]:null;return l&&u.settings.data[l.id]===!1?``;dr.innerHTML=rm;Nk=window.importSettingsPopup,_k=window.importSettings,nm=1;window.importSettingsPopup=()=>{Nk(),queueMicrotask(()=>{U("#importTxt").after(dr)})};window.importSettings=()=>{let s=U("#importTxt"),e=JSON.parse(s.value);localStorage.getItem("kute_Sensitivity")==="false"&&(e.sensitivityX=localStorage.getItem("kro_setngss_sensitivityX"),e.sensitivityY=localStorage.getItem("kro_setngss_sensitivityY"),e.aimSensitivityX=localStorage.getItem("kro_setngss_aimSensitivityX"),e.aimSensitivityY=localStorage.getItem("kro_setngss_aimSensitivityY")),localStorage.getItem("kute_Sound")==="false"&&(e.sound=localStorage.getItem("kro_setngss_sound"),e.ambientVolume=localStorage.getItem("kro_setngss_ambientVolume"),e.dialogueVolume=localStorage.getItem("kro_setngss_dialogueVolume"),e.micVolume=localStorage.getItem("kro_setngss_micVolume"),e.voiceVolume=localStorage.getItem("kro_setngss_voiceVolume"),e.voiceDistance=localStorage.getItem("kro_setngss_voiceDistance"),e.gunsVolume=localStorage.getItem("kro_setngss_gunsVolume"),e.playerVolume=localStorage.getItem("kro_setngss_playerVolume"),e.skinVolume=localStorage.getItem("kro_setngss_skinVolume"),e.uiVolume=localStorage.getItem("kro_setngss_uiVolume"),e.assetVolume=localStorage.getItem("kro_setngss_assetVolume")),localStorage.getItem("kute_Keybinds")==="false"&&delete e.controls,s.value=JSON.stringify(e),_k(),d.bindShoot(),Bk(),d.kuteIcons?.refresh(),d.autoDetect?.dropUndo(),d.autoDetect?.afterImport()}});var bl={};A(bl,{default:()=>Fk});function Hk(s){let e=s.nextElementSibling;return e instanceof HTMLElement&&e.matches(".market-grid-sentinel")?e:null}async function am(s){for(let e=0;e{"use strict";zk=".view-stack-overlay, .modal-overlay";Ok=()=>new Promise(s=>{requestAnimationFrame(()=>s())});gl=class{constructor(){this.watched=new WeakSet,this.popupClickAt=-1/0,this.lastTop=0,this.lastHeight=0,this.restore=null,this.onWheel=()=>this.finish(!1),document.addEventListener("scroll",e=>this.onScroll(e),{capture:!0,passive:!0}),document.addEventListener("click",e=>{e.target instanceof Element&&e.target.closest(zk)&&(this.popupClickAt=performance.now())},{capture:!0,passive:!0})}onScroll(e){let t=e.target;if(!(t instanceof HTMLElement))return;if(this.restore){t===this.restore.scroller&&t.scrollTop!==this.restore.top&&(t.scrollTop=this.restore.top);return}let o=t.querySelector(":scope > .market-grid");o instanceof HTMLElement&&(this.watch(t,o),this.lastTop=t.scrollTop,this.lastHeight=o.offsetHeight)}watch(e,t){if(this.watched.has(t))return;this.watched.add(t);let o=t.children.length;new MutationObserver(n=>{let r=n.reduce((l,c)=>l+c.removedNodes.length,0),i=o;if(o=t.children.length,this.restore?.grid===t){o>i&&this.pageArrived();return}i>0&&r>=i&&this.lastTop>e.clientHeight&&performance.now()-this.popupClickAt<5e3&&this.start(e,t,i,n.flatMap(l=>[...l.removedNodes]))}).observe(t,{childList:!0})}start(e,t,o,n){let r=document.createElement("div");r.className=t.className,r.style.cssText=t.style.cssText,r.append(...n),this.restore={scroller:e,grid:t,sentinels:new Set,top:this.lastTop,count:o,until:performance.now()+1e4,pageTimer:0,picture:r},t.style.minHeight=`${this.lastHeight}px`,t.style.alignContent="start",Object.assign(r.style,{position:"absolute",top:`${t.offsetTop}px`,left:`${t.offsetLeft}px`,width:`${t.offsetWidth}px`,margin:"0",zIndex:"1",pointerEvents:"none"}),e.append(r),e.style.overflowAnchor="none",e.scrollTop=this.lastTop,e.addEventListener("wheel",this.onWheel,{passive:!0}),this.waitForPage(),this.blink(this.restore).catch(i=>console.error("[kute] inventory scroll:",i))}pageArrived(){let{restore:e}=this;e&&(e.grid.children.length>=e.count-1||performance.now()>e.until?this.finish(!0):this.waitForPage())}waitForPage(){let{restore:e}=this;e&&(clearTimeout(e.pageTimer),e.pageTimer=window.setTimeout(()=>this.finish(!0),1500))}async blink(e){for(;this.restore===e;){let t=Hk(e.grid);t&&(e.sentinels.add(t),t.style.position="sticky",t.style.bottom="0",t.style.display="none",await am(2),t.style.display=""),await am(2)}}finish(e){let{restore:t}=this;if(t){this.restore=null,clearTimeout(t.pageTimer),t.scroller.removeEventListener("wheel",this.onWheel),t.picture.remove(),t.grid.style.minHeight="",t.grid.style.alignContent="",t.scroller.style.overflowAnchor="";for(let o of t.sentinels)o.style.position="",o.style.bottom="",o.style.display="";e&&(t.scroller.scrollTop=t.top),this.lastTop=t.scroller.scrollTop,this.lastHeight=t.grid.offsetHeight}}},Fk=new gl});var cm,lm=w(()=>{cm=`#kuteKeystrokes{position:absolute;left:463px;bottom:23px;z-index:10;display:flex;align-items:center;gap:12px;box-sizing:border-box;width:190px;height:82px;padding:5px 10px;border:1px solid rgba(53,224,232,.7);border-radius:8px;background:#0a1416e0;box-shadow:0 4px 18px #00000059;color:#cfeff1;font-family:Arial,sans-serif;font-weight:700;pointer-events:none}#kuteKeystrokesKeys{display:grid;grid-template-columns:repeat(4,24px);grid-template-rows:repeat(3,20px);gap:4px}.kuteKey{display:flex;justify-content:center;align-items:center;overflow:hidden;border:1px solid rgba(53,224,232,.35);border-radius:4px;background:#35e0e814;font-size:10px;white-space:nowrap}.kuteKey.on,#kuteMouse>.on,#kuteWheel>.on{border-color:#35e0e8;background:#35e0e8;color:#0a1416;box-shadow:0 0 8px #35e0e8cc}#kuteKeyMelee{grid-area:1 / 1}#kuteKeyForward{grid-area:1 / 2}#kuteKeySwap{grid-area:1 / 3}#kuteKeyReload{grid-area:1 / 4}#kuteKeyLeft{grid-area:2 / 1}#kuteKeyBack{grid-area:2 / 2}#kuteKeyRight{grid-area:2 / 3}#kuteKeyCrouch{grid-area:3 / 1 / 4 / 3}#kuteKeyJump{grid-area:3 / 3 / 4 / 5}#kuteMouseBox{position:relative;padding:5px}.kuteMove{--arc: rgba(53, 224, 232, .14);position:absolute;inset:0;box-sizing:border-box;border:2px solid transparent;border-radius:24px 24px 19px 19px}.kuteMove.on{--arc: rgba(53, 224, 232, .6)}.kuteMove.fast{--arc: #35e0e8}#kuteMoveLeft{border-left-color:var(--arc)}#kuteMoveRight{border-right-color:var(--arc)}#kuteMoveUp{border-top-color:var(--arc)}#kuteMoveDown{border-bottom-color:var(--arc)}#kuteMouse{position:relative;width:38px;height:58px;box-sizing:border-box;border:1px solid rgba(53,224,232,.35);border-radius:19px 19px 14px 14px;overflow:hidden}#kuteMouseLeft,#kuteMouseRight{position:absolute;top:0;width:50%;height:45%;border-bottom:1px solid rgba(53,224,232,.35);box-sizing:border-box;background:#35e0e814}#kuteMouseLeft{left:0}#kuteMouseRight{right:0}#kuteMouseSplit{position:absolute;top:0;left:calc(50% - .5px);width:1px;height:45%;background:#35e0e859}#kuteWheel{position:absolute;top:6px;left:50%;z-index:1;display:flex;flex-direction:column;box-sizing:border-box;width:10px;height:18px;margin-left:-5px;overflow:hidden;border:1px solid rgba(53,224,232,.5);border-radius:5px;background:#0a1416}#kuteWheel.on{border-color:#35e0e8;background:#35e0e8;box-shadow:0 0 8px #35e0e8cc}#kuteWheelUp,#kuteWheelDown{flex:1 1 0}#kuteWheelUp{border-bottom:1px solid rgba(53,224,232,.35)} -`});var um,dm=w(()=>{um='
              '});var xl={};A(xl,{default:()=>Zk});function bm(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`N${s-96}`:s>=112&&s<=123?`F${s-111}`:Xk[s]??"?"}function Jk(s,e){let t=[],o=[[`cont_${s}_alt`,-1],[`cont_${s}`,e]];for(let[n,r]of o){let i=null;try{i=window.localStorage.getItem(n)}catch{i=null}let a=i===null?r:Number(i);a>0&&a<1e4&&t.push(a)}return t}var Kk,jk,pm,hm,wl,Uk,Gk,kl,mm,fm,Wk,gm,Vk,Yk,Xk,yl,Zk,Sl=w(()=>{"use strict";lm();dm();F();Kk=131,jk=120,pm=32,hm=80,wl=.02,Uk=.35,Gk=20,kl=80,mm=3,fm=3e3,Wk=3,gm="kute_keystrokes_speed",Vk=120,Yk=[["kuteKeyForward","0",87],["kuteKeyBack","1",83],["kuteKeyLeft","2",65],["kuteKeyRight","3",68],["kuteKeyJump","jumpKey",32],["kuteKeyCrouch","crouchKey",16],["kuteKeyReload","reloadKey",82],["kuteKeyMelee","meleeKey",81],["kuteKeySwap","swapKey",69]],Xk={8:"BKSP",9:"TAB",13:"ENT",16:"SHIFT",17:"CTRL",18:"ALT",20:"CAPS",32:"SPACE",37:"\u2190",38:"\u2191",39:"\u2192",40:"\u2193",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"};yl=class{constructor(){this.widget=null,this.byCode=new Map,this.wheelTimers=new Map,this.rampWheelAt=-1/0,this.spaceDownAt=-1/0,this.spaceIgnored=!1,this.arcs=[],this.moveX=0,this.moveY=0,this.lastMove=-1/0,this.moveTimer=0,this.typical=Wk,this.typicalMs=0,this.fastUntil=[0,0,0,0],this.onKeyDown=e=>this.key(e.keyCode,!0),this.onKeyUp=e=>this.key(e.keyCode,!1),this.onMouseDown=e=>this.button(e.button,!0),this.onMouseUp=e=>this.button(e.button,!1),this.onWheel=e=>this.wheel(e.deltaY<0),this.onMouseMove=e=>this.move(e),this.onMoveIdle=()=>{this.moveTimer=0;let e=performance.now()-this.lastMove;if(e{let{data:t}=e;typeof t?.wheel=="number"&&t.wheel!==0?this.wheel(t.wheel>0):typeof t?.rampWheel=="number"&&t.rampWheel!==0&&this.rampWheel(t.rampWheel>0)},this.releaseAll=()=>{for(let e of this.widget?.querySelectorAll(".on")??[])e.classList.remove("on");this.moveX=0,this.moveY=0,this.fastUntil.fill(0),this.drawMove()},this.onPointerLockChange=()=>{if(document.pointerLockElement){this.readBinds();return}this.releaseAll();try{window.localStorage.setItem(gm,this.typical.toFixed(3))}catch{}},d.settings.toggleKeystrokes=e=>this.toggle(e),this.toggle(!!d.settings.data.keystrokes)}toggle(e){if(queueMicrotask(()=>d.hudEditor?.apply()),!e){this.remove();return}if(this.widget)return;let t=document.createElement("style");t.id="kuteKeystrokesCSS",t.textContent=cm,document.head.append(t),this.widget=document.createElement("div"),this.widget.id="kuteKeystrokes",this.widget.innerHTML=um,(document.querySelector("#uiBase")??document.body).append(this.widget),this.readBinds(),this.loadTypical();let{widget:o}=this,n=[["kuteMoveLeft",-1,0],["kuteMoveRight",1,0],["kuteMoveUp",0,-1],["kuteMoveDown",0,1]];this.arcs=n.map(([r,i,a])=>[o.querySelector(`#${r}`),i,a]),window.addEventListener("keydown",this.onKeyDown,!0),window.addEventListener("keyup",this.onKeyUp,!0),window.addEventListener("mousedown",this.onMouseDown,!0),window.addEventListener("mouseup",this.onMouseUp,!0),window.addEventListener("mousemove",this.onMouseMove,{capture:!0,passive:!0}),window.addEventListener("wheel",this.onWheel,{capture:!0,passive:!0}),window.addEventListener("blur",this.releaseAll),document.addEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.addEventListener("message",this.onHostMessage)}remove(){window.removeEventListener("keydown",this.onKeyDown,!0),window.removeEventListener("keyup",this.onKeyUp,!0),window.removeEventListener("mousedown",this.onMouseDown,!0),window.removeEventListener("mouseup",this.onMouseUp,!0),window.removeEventListener("mousemove",this.onMouseMove,!0),window.removeEventListener("wheel",this.onWheel,!0),window.removeEventListener("blur",this.releaseAll),document.removeEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.removeEventListener("message",this.onHostMessage);for(let e of this.wheelTimers.values())clearTimeout(e);this.wheelTimers.clear(),clearTimeout(this.moveTimer),this.moveTimer=0,this.arcs=[],this.widget?.remove(),this.widget=null,this.byCode.clear(),document.querySelector("#kuteKeystrokesCSS")?.remove()}readBinds(){if(this.widget){this.byCode.clear();for(let[e,t,o]of Yk){let n=this.widget.querySelector(`#${e}`);if(!n)continue;let r=Jk(t,o);n.textContent=r.length>0?bm(r[0]):"",n.title=r.map(bm).join(" / ");for(let i of r){let a=this.byCode.get(i)??[];a.push(n),this.byCode.set(i,a)}}}}key(e,t){if(e===Kk){this.button(0,t);return}if(e===pm){t&&(this.spaceDownAt=performance.now(),this.spaceIgnored=this.spaceDownAt-this.rampWheelAt=100,n=Math.min(t-this.lastMove,100);if(this.lastMove=t,!(n>0))return;let r=Math.exp(-n/Gk);this.moveX=this.moveX*r+e.movementX/n*(1-r),this.moveY=this.moveY*r+e.movementY/n*(1-r);let i=Math.hypot(this.moveX,this.moveY);!o&&i>wl&&(this.typicalMs=Math.min(this.typicalMs+n,fm),this.typical+=(Math.min(i,this.typical*mm)-this.typical)*(n/this.typicalMs)),this.drawMove(t),this.moveTimer||(this.moveTimer=window.setTimeout(this.onMoveIdle,kl))}loadTypical(){let e=NaN;try{e=Number(window.localStorage.getItem(gm))}catch{e=NaN}e>0&&(this.typical=e,this.typicalMs=fm)}drawMove(e=performance.now()){let t=Math.hypot(this.moveX,this.moveY),o=Math.max(this.typical,wl)*mm;this.arcs.forEach(([n,r,i],a)=>{let l=this.moveX*r+this.moveY*i;l>o&&(this.fastUntil[a]=e+Vk);let c="kuteMove";this.fastUntil[a]>e?c="kuteMove on fast":t>wl&&l>=t*Uk&&(c="kuteMove on"),n.className!==c&&(n.className=c)})}rampWheel(e){if(this.rampWheelAt=performance.now(),this.rampWheelAt-this.spaceDownAt{this.widget?.querySelector(`#${t}`)?.classList.remove("on"),this.wheelTimers.delete(t)},jk))}},Zk=new yl});var wm,vm=w(()=>{wm='

              Kute Icons

              Tick all
              Done
              '});var Cl={};A(Cl,{default:()=>ty});function $m(){let s=d.settings.data[El];return s&&typeof s=="object"?s:{}}function km(){return d.hostFeatures?.includes("kute-icons")??!1}function ym(s){return $m()[s.id]!==!1}function xm(s){return s.hiddenBy.filter(e=>{let t=null;try{t=localStorage.getItem(`kro_setngss_${e.id}`)}catch{return!1}return t===null?!1:e.kind==="checkbox"?t==="false":Number(t)===0})}function Sm(s){return s.kind==="checkbox"?`${s.name} is off`:`${s.name} is 0`}async function Em(s){await Ce({title:"Reload the game?",paragraphs:[s,"The game keeps the images it already loaded, so this shows after a reload. Nothing else changes, and you can do it later."],stay:"Later",leave:"Reload now"})&&window.chrome.webview.postMessage("hard-reload")}var ey,El,$l,ty,Ml=w(()=>{"use strict";vm();F();Pt();vn();ey="https://krunker.io/kute-icons/",El="kuteIconSlots";$l=class{constructor(){this.asking=!1,this.watched=new WeakSet,d.kuteIcons={customize:()=>this.customize(),refresh:()=>this.refresh()},d.settings.toggleKuteIcons=e=>this.onToggle(!!e),this.refresh(),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&setTimeout(()=>this.refresh(),1500)})}refresh(){for(let e of Ao){let t=e.element?document.getElementById(e.element):null;!t||this.watched.has(t)||(this.watched.add(t),new MutationObserver(()=>oo()).observe(t,{attributes:!0,attributeFilter:["src"]}))}oo()}async onToggle(e){if(oo(),!km()){e&&d.showNotification("Kute icons need a newer Kute, update the client",!1,4);return}e&&await this.warnHidden(Ao.filter(ym)),await Em(e?"Kute icons are on.":"Kute icons are off, your own icons are back.")}async warnHidden(e){let t=new Map,o=[];for(let r of e){let i=xm(r);if(i.length!==0){for(let a of i)t.set(a.id,a);o.push(`${r.name}: ${i.map(a=>Sm(a)).join(", ")}`)}}if(o.length===0||(this.asking=!0,!await Ce({title:"Hidden by your Krunker settings",paragraphs:[o.length===1?"This Kute icon will not show:":"These Kute icons will not show:",...o,"Switch those Krunker settings on for you?"],stay:"Leave them",leave:"Switch on"}).finally(()=>{this.asking=!1})))return!1;for(let r of t.values())window.setSetting(r.id,r.kind==="checkbox"?!0:"1");return d.showNotification("Switched on in your Krunker settings",!1,3),!0}customize(){let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=wm;let n=m=>o.querySelector(`#${m}`),r=km(),i=d.settings.data.kuteIcons===!0,a="Ticked icons show Kute's version. Your Krunker settings stay as they are.";i||(a="Use Kute Icons is off, so none of these show yet."),r||(a="This needs a newer Kute. Update the client to use Kute icons."),n("kiHint").textContent=a;let l=!1,c=[],u=()=>{for(let{slot:m,box:g,note:b}of c){let v=g.checked?xm(m):[];if(b.replaceChildren(),v.length===0)continue;b.append(`Hidden: ${v.map(E=>Sm(E)).join(", ")} `);let k=document.createElement("span");k.className="kiShow",k.textContent="Show it",k.onclick=async E=>{E.preventDefault(),E.stopPropagation(),await this.warnHidden([m]),u()},b.append(k)}},h=(m,g)=>{l=!0;let b={...$m(),[m.id]:g};d.settings.data[El]=b,window.chrome.webview.postMessage(`set-config-json ${El} ${JSON.stringify(b)}`)};for(let m of Ao){let g=document.createElement("label");g.className="kiRow";let b=document.createElement("img");b.src=ey+m.file,b.alt="";let v=document.createElement("span");v.textContent=m.name;let k=document.createElement("span");k.className="kiHidden",v.append(k);let E=document.createElement("input");E.type="checkbox",E.checked=ym(m),E.onchange=async()=>{h(m,E.checked),E.checked&&await this.warnHidden([m]),u()},g.append(b,v,E),n("kiRows").append(g),c.push({slot:m,box:E,note:k})}u(),n("kiAll").onclick=async()=>{let m=c.filter(({box:g})=>!g.checked);for(let{slot:g,box:b}of m)b.checked=!0,h(g,!0);await this.warnHidden(m.map(({slot:g})=>g)),u()};let p=new AbortController,f=()=>{p.abort(),e.remove(),l&&r&&d.settings.data.kuteIcons===!0&&Em("Your Kute icons changed.")};n("kiDone").onclick=f,e.addEventListener("mousedown",m=>{m.target===e&&f()}),document.addEventListener("keydown",m=>{m.key!=="Escape"||this.asking||(m.stopPropagation(),f())},{signal:p.signal,capture:!0}),document.body.append(e)}},ty=new $l});var Ll={};A(Ll,{default:()=>sy});var Cm,Mm,Tl,Tm,oy,Al,sy,Rl=w(()=>{"use strict";F();Pt();Cm="kute_update_asked",Mm="kute_update_ready",Tl=[.25,.5,.75],Tm=()=>new Promise(s=>{let e=()=>{document.pointerLockElement?setTimeout(e,2e3):s()};e()}),oy=s=>`${Math.round(s/1048576)} MB`,Al=class{constructor(){this.step=0,this.busy=!1,!(d.platform!=="linux"||!d.hostFeatures?.includes("appimage-update"))&&(window.chrome.webview.addEventListener("message",e=>{let t=e.data?.update;t&&typeof t=="object"&&this.receive(t).catch(()=>{})}),window.chrome.webview.postMessage("update-state"))}async receive(e){e.stage==="offer"?await this.offer(e):e.stage==="downloading"?this.progress(e):e.stage==="ready"?await this.ready(e):e.stage==="failed"&&d.showNotification(`The update to Kute ${e.version} failed: ${e.error??"unknown error"}`,!1,8)}async offer(e){if(this.busy||sessionStorage.getItem(Cm)===e.version)return;this.busy=!0,await Tm(),sessionStorage.setItem(Cm,e.version);let t=e.install===!0,o=await Ce({title:`Kute ${e.version} is out`,paragraphs:t?[`You have ${e.current}. The update${e.size?` (${oy(e.size)})`:""} downloads while you play.`,"It replaces your Kute AppImage and starts the next time you open Kute."]:[`You have ${e.current}.`,"This copy of Kute does not run as an AppImage and cannot update itself. The download page has the new version."],stay:"Later",leave:t?"Update":"Open download page"});this.busy=!1,o&&(window.chrome.webview.postMessage(t?"update-install":"update-page"),t&&d.showNotification(`Downloading Kute ${e.version}`,!1,4))}progress(e){if(!e.total||!e.done)return;let t=e.done/e.total;for(;this.step=Tl[this.step];)d.showNotification(`Downloading Kute ${e.version}: ${Math.round(Tl[this.step]*100)} %`,!1,3),this.step++}async ready(e){if(sessionStorage.getItem(Mm)===e.version)return;await Tm(),sessionStorage.setItem(Mm,e.version),await Ce({title:`Kute ${e.version} is ready`,paragraphs:["It starts the next time you open Kute. Restart now to use it right away."],stay:"Later",leave:"Restart now"})&&window.chrome.webview.postMessage("update-restart")}},sy=new Al});var Lm,Am=w(()=>{Lm=`

              CSS Manager

              visibilityHold to peek
              folder_openShow folder
              storefrontCSS Store
              ×
              One file is active at a time and loads after all of Krunker's styles, so a rule with the same selector wins. Krunker's inline styles and its own !important rules still need !important here. Files live in Documents\\kute\\css.
              CSS Store
              arrow_backBack
              Your CSS
              Click a file to edit it, the circle makes it active
              addNew
              content_pastePaste
              upload_fileImport
              `});var Pm,Rm=w(()=>{Pm=`:host{--accent: #35e0e8;--bg: #1e1e1e;--panel: #252525;--line: #333;--muted: #999;--ok: #5ce05a;--warn: #ffb74d;--bad: #eb5656}.managerPopup{position:relative;box-sizing:border-box;display:flex;flex-direction:column;width:min(1020px,94vw);height:min(760px,90vh);background:var(--bg);color:#fff;border-radius:14px;box-shadow:0 8px 48px #000c;font-family:Consolas,monospace;font-size:14px;overflow:hidden}.managerHeader{display:flex;align-items:center;gap:.6em;padding:1em 1.2em .8em 1.4em;border-bottom:1px solid var(--line)}.managerTitle{margin:0 auto 0 0;font-size:1.6em;letter-spacing:1px;color:var(--accent)}.managerClose{margin-left:.4em;font-size:1.6em;line-height:1;color:var(--muted);cursor:pointer}.managerClose:hover{color:#fff}.managerHint{padding:.7em 1.4em;color:var(--muted);line-height:1.5;border-bottom:1px solid var(--line)}.managerHint code{padding:.05em .35em;border-radius:4px;background:#181818;color:var(--accent)}.managerBody{flex:1 1 auto;min-height:0;overflow-y:auto;padding:1em 1.4em}.managerError,.managerNotice{margin:.8em 1.4em 0;padding:.6em .9em;border-radius:8px;white-space:pre-wrap;line-height:1.5}.managerError{background:#4a1d1d;color:#ffb4b4}.managerNotice{display:flex;align-items:center;gap:1em;background:#173a52;color:#cfe8ff}.managerNotice span{flex:1}[hidden]{display:none!important}.btn{display:inline-flex;align-items:center;gap:.4em;padding:.45em .9em;border-radius:7px;background:#2d2d2d;color:#fff;cursor:pointer;user-select:none;white-space:nowrap}.btn:hover{background:#383838;color:var(--accent)}.btn.primary{background:#1b5e63}.btn.primary:hover{background:#23777d;color:#fff}.btn.small{padding:.25em .55em;font-size:.92em}.iconBtn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:var(--muted);cursor:pointer;user-select:none}.iconBtn:hover{background:#333;color:#fff}.iconBtn.danger:hover{color:var(--bad)}.mi{font-family:Material Icons;font-weight:400;font-style:normal;font-size:18px;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;font-feature-settings:"liga"}.group{margin-bottom:1.2em;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.groupHead{display:flex;align-items:center;gap:.7em;padding:.7em .9em;border-bottom:1px solid var(--line)}.groupTitle{font-size:1.15em;color:#fff}.groupRuns{margin-right:auto;color:var(--muted);font-size:.9em}.empty{padding:.9em;color:var(--muted)}.dropZone{margin:.7em;padding:.8em;border:2px dashed #444;border-radius:8px;color:#777;text-align:center}.dropHover{border-color:var(--accent)!important;background:#35e0e814!important;color:var(--accent)}.toggle{position:relative;flex:0 0 auto;width:38px;height:20px;border-radius:10px;background:#444;cursor:pointer;transition:background .15s}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#ddd;transition:left .15s}.toggle.on{background:#1b8f96}.toggle.on:after{left:21px;background:#fff}.state{flex:0 0 auto;padding:.1em .5em;border-radius:5px;font-size:.85em;background:#333;color:var(--muted)}.state.ok{background:#1f3d1f;color:var(--ok)}.state.warn{background:#3d321f;color:var(--warn)}.state.bad{background:#3d1f1f;color:var(--bad);cursor:help}.askBackdrop{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background:#0009}.askBox{width:min(480px,90%);padding:1.3em 1.4em;border-radius:12px;background:#262626;box-shadow:0 8px 32px #000c}.askTitle{margin-bottom:.8em;font-size:1.1em;color:var(--accent)}.askInput,.field{box-sizing:border-box;width:100%;padding:.5em .7em;border:1px solid #444;border-radius:6px;background:#181818;color:#fff;font:inherit;outline:none}.askInput:focus,.field:focus{border-color:var(--accent)}.askHint{margin-top:.5em;color:var(--muted);font-size:.9em;line-height:1.4}.askActions{display:flex;justify-content:flex-end;gap:.6em;margin-top:1em}.editor{position:relative;display:flex;flex:1 1 auto;min-height:0;border:1px solid var(--line);border-radius:8px;background:#181818;overflow:hidden;font-family:Consolas,Cascadia Mono,monospace;font-size:13.5px;line-height:1.5;tab-size:4}.editorGutter{flex:0 0 auto;padding:.6em .6em .6em .8em;overflow:hidden;color:#555;text-align:right;white-space:pre;user-select:none;border-right:1px solid #2a2a2a}.editorCode{position:relative;flex:1 1 auto;min-width:0}.editorCode pre,.editorCode textarea{position:absolute;inset:0;box-sizing:border-box;margin:0;padding:.6em .8em;border:0;font:inherit;line-height:inherit;tab-size:inherit;white-space:pre;overflow-wrap:normal;letter-spacing:normal}.editorCode pre{overflow:hidden;color:#d4d4d4;pointer-events:none}.editorCode textarea{resize:none;overflow:auto;background:transparent;color:transparent;caret-color:#fff;outline:none}.editorCode textarea::selection{background:#3578c873;color:transparent}.tk-c{color:#6a9955}.tk-s{color:#ce9178}.tk-n{color:#b5cea8}.tk-k{color:#c586c0}.tk-l{color:#569cd6}.tk-f{color:#dcdcaa}.tk-p{color:#9cdcfe}.editorBar{display:flex;align-items:center;gap:.6em;margin-bottom:.7em}.editorFile{margin-right:auto;color:#fff;font-size:1.05em}.editorFile .dirty{color:var(--warn)}.editorView{display:flex;flex-direction:column;height:100%}.editorKeys{margin-top:.5em;color:#666;font-size:.85em} +`});var um,dm=w(()=>{um='
              '});var xl={};A(xl,{default:()=>Zk});function bm(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`N${s-96}`:s>=112&&s<=123?`F${s-111}`:Xk[s]??"?"}function Jk(s,e){let t=[],o=[[`cont_${s}_alt`,-1],[`cont_${s}`,e]];for(let[n,r]of o){let i=null;try{i=window.localStorage.getItem(n)}catch{i=null}let a=i===null?r:Number(i);a>0&&a<1e4&&t.push(a)}return t}var Kk,jk,pm,hm,wl,Uk,Gk,kl,mm,fm,Wk,gm,Vk,Yk,Xk,yl,Zk,Sl=w(()=>{"use strict";lm();dm();F();Kk=131,jk=120,pm=32,hm=80,wl=.02,Uk=.35,Gk=20,kl=80,mm=3,fm=3e3,Wk=3,gm="kute_keystrokes_speed",Vk=120,Yk=[["kuteKeyForward","0",87],["kuteKeyBack","1",83],["kuteKeyLeft","2",65],["kuteKeyRight","3",68],["kuteKeyJump","jumpKey",32],["kuteKeyCrouch","crouchKey",16],["kuteKeyReload","reloadKey",82],["kuteKeyMelee","meleeKey",81],["kuteKeySwap","swapKey",69]],Xk={8:"BKSP",9:"TAB",13:"ENT",16:"SHIFT",17:"CTRL",18:"ALT",20:"CAPS",32:"SPACE",37:"\u2190",38:"\u2191",39:"\u2192",40:"\u2193",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"};yl=class{constructor(){this.widget=null,this.byCode=new Map,this.wheelTimers=new Map,this.rampWheelAt=-1/0,this.spaceDownAt=-1/0,this.spaceIgnored=!1,this.arcs=[],this.moveX=0,this.moveY=0,this.lastMove=-1/0,this.moveTimer=0,this.typical=Wk,this.typicalMs=0,this.fastUntil=[0,0,0,0],this.onKeyDown=e=>this.key(e.keyCode,!0),this.onKeyUp=e=>this.key(e.keyCode,!1),this.onMouseDown=e=>this.button(e.button,!0),this.onMouseUp=e=>this.button(e.button,!1),this.onWheel=e=>this.wheel(e.deltaY<0),this.onMouseMove=e=>this.move(e),this.onMoveIdle=()=>{this.moveTimer=0;let e=performance.now()-this.lastMove;if(e{let{data:t}=e;typeof t?.wheel=="number"&&t.wheel!==0?this.wheel(t.wheel>0):typeof t?.rampWheel=="number"&&t.rampWheel!==0&&this.rampWheel(t.rampWheel>0)},this.releaseAll=()=>{for(let e of this.widget?.querySelectorAll(".on")??[])e.classList.remove("on");this.moveX=0,this.moveY=0,this.fastUntil.fill(0),this.drawMove()},this.onPointerLockChange=()=>{if(document.pointerLockElement){this.readBinds();return}this.releaseAll();try{window.localStorage.setItem(gm,this.typical.toFixed(3))}catch{}},d.settings.toggleKeystrokes=e=>this.toggle(e),this.toggle(!!d.settings.data.keystrokes)}toggle(e){if(queueMicrotask(()=>d.hudEditor?.apply()),!e){this.remove();return}if(this.widget)return;let t=document.createElement("style");t.id="kuteKeystrokesCSS",t.textContent=cm,document.head.append(t),this.widget=document.createElement("div"),this.widget.id="kuteKeystrokes",this.widget.innerHTML=um,(document.querySelector("#uiBase")??document.body).append(this.widget),this.readBinds(),this.loadTypical();let{widget:o}=this,n=[["kuteMoveLeft",-1,0],["kuteMoveRight",1,0],["kuteMoveUp",0,-1],["kuteMoveDown",0,1]];this.arcs=n.map(([r,i,a])=>[o.querySelector(`#${r}`),i,a]),window.addEventListener("keydown",this.onKeyDown,!0),window.addEventListener("keyup",this.onKeyUp,!0),window.addEventListener("mousedown",this.onMouseDown,!0),window.addEventListener("mouseup",this.onMouseUp,!0),window.addEventListener("mousemove",this.onMouseMove,{capture:!0,passive:!0}),window.addEventListener("wheel",this.onWheel,{capture:!0,passive:!0}),window.addEventListener("blur",this.releaseAll),document.addEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.addEventListener("message",this.onHostMessage)}remove(){window.removeEventListener("keydown",this.onKeyDown,!0),window.removeEventListener("keyup",this.onKeyUp,!0),window.removeEventListener("mousedown",this.onMouseDown,!0),window.removeEventListener("mouseup",this.onMouseUp,!0),window.removeEventListener("mousemove",this.onMouseMove,!0),window.removeEventListener("wheel",this.onWheel,!0),window.removeEventListener("blur",this.releaseAll),document.removeEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.removeEventListener("message",this.onHostMessage);for(let e of this.wheelTimers.values())clearTimeout(e);this.wheelTimers.clear(),clearTimeout(this.moveTimer),this.moveTimer=0,this.arcs=[],this.widget?.remove(),this.widget=null,this.byCode.clear(),document.querySelector("#kuteKeystrokesCSS")?.remove()}readBinds(){if(this.widget){this.byCode.clear();for(let[e,t,o]of Yk){let n=this.widget.querySelector(`#${e}`);if(!n)continue;let r=Jk(t,o);n.textContent=r.length>0?bm(r[0]):"",n.title=r.map(bm).join(" / ");for(let i of r){let a=this.byCode.get(i)??[];a.push(n),this.byCode.set(i,a)}}}}key(e,t){if(e===Kk){this.button(0,t);return}if(e===pm){t&&(this.spaceDownAt=performance.now(),this.spaceIgnored=this.spaceDownAt-this.rampWheelAt=100,n=Math.min(t-this.lastMove,100);if(this.lastMove=t,!(n>0))return;let r=Math.exp(-n/Gk);this.moveX=this.moveX*r+e.movementX/n*(1-r),this.moveY=this.moveY*r+e.movementY/n*(1-r);let i=Math.hypot(this.moveX,this.moveY);!o&&i>wl&&(this.typicalMs=Math.min(this.typicalMs+n,fm),this.typical+=(Math.min(i,this.typical*mm)-this.typical)*(n/this.typicalMs)),this.drawMove(t),this.moveTimer||(this.moveTimer=window.setTimeout(this.onMoveIdle,kl))}loadTypical(){let e=NaN;try{e=Number(window.localStorage.getItem(gm))}catch{e=NaN}e>0&&(this.typical=e,this.typicalMs=fm)}drawMove(e=performance.now()){let t=Math.hypot(this.moveX,this.moveY),o=Math.max(this.typical,wl)*mm;this.arcs.forEach(([n,r,i],a)=>{let l=this.moveX*r+this.moveY*i;l>o&&(this.fastUntil[a]=e+Vk);let c="kuteMove";this.fastUntil[a]>e?c="kuteMove on fast":t>wl&&l>=t*Uk&&(c="kuteMove on"),n.className!==c&&(n.className=c)})}rampWheel(e){if(this.rampWheelAt=performance.now(),this.rampWheelAt-this.spaceDownAt{this.widget?.querySelector(`#${t}`)?.classList.remove("on"),this.wheelTimers.delete(t)},jk))}},Zk=new yl});var wm,vm=w(()=>{wm='

              Kute Icons

              Tick all
              Done
              '});var Cl={};A(Cl,{default:()=>ty});function $m(){let s=d.settings.data[El];return s&&typeof s=="object"?s:{}}function km(){return d.hostFeatures?.includes("kute-icons")??!1}function ym(s){return $m()[s.id]!==!1}function xm(s){return s.hiddenBy.filter(e=>{let t=null;try{t=localStorage.getItem(`kro_setngss_${e.id}`)}catch{return!1}return t===null?!1:e.kind==="checkbox"?t==="false":Number(t)===0})}function Sm(s){return s.kind==="checkbox"?`${s.name} is off`:`${s.name} is 0`}async function Em(s){await Ce({title:"Reload the game?",paragraphs:[s,"The game keeps the images it already loaded, so this shows after a reload. Nothing else changes, and you can do it later."],stay:"Later",leave:"Reload now"})&&window.chrome.webview.postMessage("hard-reload")}var ey,El,$l,ty,Ml=w(()=>{"use strict";vm();F();Pt();vn();ey="https://krunker.io/kute-icons/",El="kuteIconSlots";$l=class{constructor(){this.asking=!1,this.watched=new WeakSet,d.kuteIcons={customize:()=>this.customize(),refresh:()=>this.refresh()},d.settings.toggleKuteIcons=e=>this.onToggle(!!e),this.refresh(),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&setTimeout(()=>this.refresh(),1500)})}refresh(){for(let e of Ao){let t=e.element?document.getElementById(e.element):null;!t||this.watched.has(t)||(this.watched.add(t),new MutationObserver(()=>oo()).observe(t,{attributes:!0,attributeFilter:["src"]}))}oo()}async onToggle(e){if(oo(),!km()){e&&d.showNotification("Kute icons need a newer Kute, update the client",!1,4);return}e&&await this.warnHidden(Ao.filter(ym)),await Em(e?"Kute icons are on.":"Kute icons are off, your own icons are back.")}async warnHidden(e){let t=new Map,o=[];for(let r of e){let i=xm(r);if(i.length!==0){for(let a of i)t.set(a.id,a);o.push(`${r.name}: ${i.map(a=>Sm(a)).join(", ")}`)}}if(o.length===0||(this.asking=!0,!await Ce({title:"Hidden by your Krunker settings",paragraphs:[o.length===1?"This Kute icon will not show:":"These Kute icons will not show:",...o,"Switch those Krunker settings on for you?"],stay:"Leave them",leave:"Switch on"}).finally(()=>{this.asking=!1})))return!1;for(let r of t.values())window.setSetting(r.id,r.kind==="checkbox"?!0:"1");return d.showNotification("Switched on in your Krunker settings",!1,3),!0}customize(){let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=wm;let n=m=>o.querySelector(`#${m}`),r=km(),i=d.settings.data.kuteIcons===!0,a="Ticked icons show Kute's version. Your Krunker settings stay as they are.";i||(a="Use Kute Icons is off, so none of these show yet."),r||(a="This needs a newer Kute. Update the client to use Kute icons."),n("kiHint").textContent=a;let l=!1,c=[],u=()=>{for(let{slot:m,box:g,note:b}of c){let v=g.checked?xm(m):[];if(b.replaceChildren(),v.length===0)continue;b.append(`Hidden: ${v.map(E=>Sm(E)).join(", ")} `);let k=document.createElement("span");k.className="kiShow",k.textContent="Show it",k.onclick=async E=>{E.preventDefault(),E.stopPropagation(),await this.warnHidden([m]),u()},b.append(k)}},h=(m,g)=>{l=!0;let b={...$m(),[m.id]:g};d.settings.data[El]=b,window.chrome.webview.postMessage(`set-config-json ${El} ${JSON.stringify(b)}`)};for(let m of Ao){let g=document.createElement("label");g.className="kiRow";let b=document.createElement("img");b.src=ey+m.file,b.alt="";let v=document.createElement("span");v.textContent=m.name;let k=document.createElement("span");k.className="kiHidden",v.append(k);let E=document.createElement("input");E.type="checkbox",E.checked=ym(m),E.onchange=async()=>{h(m,E.checked),E.checked&&await this.warnHidden([m]),u()},g.append(b,v,E),n("kiRows").append(g),c.push({slot:m,box:E,note:k})}u(),n("kiAll").onclick=async()=>{let m=c.filter(({box:g})=>!g.checked);for(let{slot:g,box:b}of m)b.checked=!0,h(g,!0);await this.warnHidden(m.map(({slot:g})=>g)),u()};let p=new AbortController,f=()=>{p.abort(),e.remove(),l&&r&&d.settings.data.kuteIcons===!0&&Em("Your Kute icons changed.")};n("kiDone").onclick=f,e.addEventListener("mousedown",m=>{m.target===e&&f()}),document.addEventListener("keydown",m=>{m.key!=="Escape"||this.asking||(m.stopPropagation(),f())},{signal:p.signal,capture:!0}),document.body.append(e)}},ty=new $l});var Ll={};A(Ll,{default:()=>sy});var Cm,Mm,Tl,Tm,oy,Al,sy,Rl=w(()=>{"use strict";F();Pt();Cm="kute_update_asked",Mm="kute_update_ready",Tl=[.25,.5,.75],Tm=()=>new Promise(s=>{let e=()=>{document.pointerLockElement?setTimeout(e,2e3):s()};e()}),oy=s=>`${Math.round(s/1048576)} MB`,Al=class{constructor(){this.step=0,this.busy=!1,!(d.platform!=="linux"||!d.hostFeatures?.includes("appimage-update"))&&(window.chrome.webview.addEventListener("message",e=>{let t=e.data?.update;t&&typeof t=="object"&&this.receive(t).catch(()=>{})}),window.chrome.webview.postMessage("update-state"))}async receive(e){e.stage==="offer"?await this.offer(e):e.stage==="downloading"?this.progress(e):e.stage==="ready"?await this.ready(e):e.stage==="failed"&&d.showNotification(`The update to Kute ${e.version} failed: ${e.error??"unknown error"}`,!1,8)}async offer(e){if(this.busy||sessionStorage.getItem(Cm)===e.version)return;this.busy=!0,await Tm(),sessionStorage.setItem(Cm,e.version);let t=e.install===!0,o=await Ce({title:`Kute ${e.version} is out`,paragraphs:t?[`You have ${e.current}. The update${e.size?` (${oy(e.size)})`:""} downloads while you play.`,"It replaces your Kute AppImage and starts the next time you open Kute."]:[`You have ${e.current}.`,"This copy of Kute does not run as an AppImage and cannot update itself. The download page has the new version."],stay:"Later",leave:t?"Update":"Open download page"});this.busy=!1,o&&(window.chrome.webview.postMessage(t?"update-install":"update-page"),t&&d.showNotification(`Downloading Kute ${e.version}`,!1,4))}progress(e){if(!e.total||!e.done)return;let t=e.done/e.total;for(;this.step=Tl[this.step];)d.showNotification(`Downloading Kute ${e.version}: ${Math.round(Tl[this.step]*100)} %`,!1,3),this.step++}async ready(e){if(sessionStorage.getItem(Mm)===e.version)return;await Tm(),sessionStorage.setItem(Mm,e.version),await Ce({title:`Kute ${e.version} is ready`,paragraphs:["It starts the next time you open Kute. Restart now to use it right away."],stay:"Later",leave:"Restart now"})&&window.chrome.webview.postMessage("update-restart")}},sy=new Al});var Lm,Am=w(()=>{Lm=`

              CSS Manager

              visibilityHold to peek
              folder_openShow folder
              storefrontCSS Store
              ×
              One file is active at a time and loads after all of Krunker's styles, so a rule with the same selector wins. Krunker's inline styles and its own !important rules still need !important here. Files live in Documents\\kute\\css.
              CSS Store
              arrow_backBack
              Your CSS
              Click a file to edit it, the circle makes it active
              addNew
              content_pastePaste
              upload_fileImport
              `});var Pm,Rm=w(()=>{Pm=`:host{--accent: #35e0e8;--bg: #1e1e1e;--panel: #252525;--line: #333;--muted: #999;--ok: #5ce05a;--warn: #ffb74d;--bad: #eb5656}.managerPopup{position:relative;box-sizing:border-box;display:flex;flex-direction:column;width:min(1020px,94vw);height:min(760px,90vh);background:var(--bg);color:#fff;border-radius:14px;box-shadow:0 8px 48px #000c;font-family:Consolas,monospace;font-size:14px;overflow:hidden}.managerHeader{display:flex;align-items:center;gap:.6em;padding:1em 1.2em .8em 1.4em;border-bottom:1px solid var(--line)}.managerTitle{margin:0 auto 0 0;font-size:1.6em;letter-spacing:1px;color:var(--accent)}.managerClose{margin-left:.4em;font-size:1.6em;line-height:1;color:var(--muted);cursor:pointer}.managerClose:hover{color:#fff}.managerHint{padding:.7em 1.4em;color:var(--muted);line-height:1.5;border-bottom:1px solid var(--line)}.managerHint code{padding:.05em .35em;border-radius:4px;background:#181818;color:var(--accent)}.managerBody{flex:1 1 auto;min-height:0;overflow-y:auto;padding:1em 1.4em}.managerError,.managerNotice{margin:.8em 1.4em 0;padding:.6em .9em;border-radius:8px;white-space:pre-wrap;line-height:1.5}.managerError{background:#4a1d1d;color:#ffb4b4}.managerNotice{display:flex;align-items:center;gap:1em;background:#173a52;color:#cfe8ff}.managerNotice span{flex:1}[hidden]{display:none!important}.btn{display:inline-flex;align-items:center;gap:.4em;padding:.45em .9em;border-radius:7px;background:#2d2d2d;color:#fff;cursor:pointer;user-select:none;white-space:nowrap}.btn:hover{background:#383838;color:var(--accent)}.btn.primary{background:#1b5e63}.btn.primary:hover{background:#23777d;color:#fff}.btn.small{padding:.25em .55em;font-size:.92em}.iconBtn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:var(--muted);cursor:pointer;user-select:none}.iconBtn:hover{background:#333;color:#fff}.iconBtn.danger:hover{color:var(--bad)}.mi{font-family:Material Icons;font-weight:400;font-style:normal;font-size:18px;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;font-feature-settings:"liga"}.group{margin-bottom:1.2em;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.groupHead{display:flex;align-items:center;gap:.7em;padding:.7em .9em;border-bottom:1px solid var(--line)}.groupTitle{font-size:1.15em;color:#fff}.groupRuns{margin-right:auto;color:var(--muted);font-size:.9em}.empty{padding:.9em;color:var(--muted)}.dropZone{margin:.7em;padding:.8em;border:2px dashed #444;border-radius:8px;color:#777;text-align:center}.dropHover{border-color:var(--accent)!important;background:#35e0e814!important;color:var(--accent)}.toggle{position:relative;flex:0 0 auto;width:38px;height:20px;border-radius:10px;background:#444;cursor:pointer;transition:background .15s}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#ddd;transition:left .15s}.toggle.on{background:#1b8f96}.toggle.on:after{left:21px;background:#fff}.state{flex:0 0 auto;padding:.1em .5em;border-radius:5px;font-size:.85em;background:#333;color:var(--muted)}.state.ok{background:#1f3d1f;color:var(--ok)}.state.warn{background:#3d321f;color:var(--warn)}.state.bad{background:#3d1f1f;color:var(--bad);cursor:help}.askBackdrop{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background:#0009}.askBox{width:min(480px,90%);padding:1.3em 1.4em;border-radius:12px;background:#262626;box-shadow:0 8px 32px #000c}.askTitle{margin-bottom:.8em;font-size:1.1em;color:var(--accent)}.askInput,.field{box-sizing:border-box;width:100%;padding:.5em .7em;border:1px solid #444;border-radius:6px;background:#181818;color:#fff;font:inherit;outline:none}.askInput:focus,.field:focus{border-color:var(--accent)}.askHint{margin-top:.5em;color:var(--muted);font-size:.9em;line-height:1.4}.askActions{display:flex;justify-content:flex-end;gap:.6em;margin-top:1em}.editor{position:relative;display:flex;flex:1 1 auto;min-height:0;border:1px solid var(--line);border-radius:8px;background:#181818;overflow:hidden;font-family:Consolas,Cascadia Mono,monospace;font-size:13.5px;line-height:1.5;tab-size:4}.editorGutter{flex:0 0 auto;padding:.6em .6em .6em .8em;overflow:hidden;color:#555;text-align:right;white-space:pre;user-select:none;border-right:1px solid #2a2a2a}.editorCode{position:relative;flex:1 1 auto;min-width:0}.editorCode pre,.editorCode textarea{position:absolute;inset:0;box-sizing:border-box;margin:0;padding:.6em .8em;border:0;font:inherit;line-height:inherit;tab-size:inherit;white-space:pre;overflow-wrap:normal;letter-spacing:normal}.editorCode pre{overflow:hidden;color:#d4d4d4;pointer-events:none}.editorCode textarea{resize:none;overflow:auto;background:transparent;color:transparent;caret-color:#fff;outline:none}.editorCode textarea::selection{background:#3578c873;color:transparent}.tk-c{color:#6a9955}.tk-s{color:#ce9178}.tk-n{color:#b5cea8}.tk-k{color:#c586c0}.tk-l{color:#569cd6}.tk-f{color:#dcdcaa}.tk-p{color:#9cdcfe}.editorBar{display:flex;align-items:center;gap:.6em;margin-bottom:.7em}.editorFile{margin-right:auto;color:#fff;font-size:1.05em}.editorFile .dirty{color:var(--warn)}.editorView{display:flex;flex-direction:column;height:100%}.editorKeys{margin-top:.5em;color:#666;font-size:.85em} `});var Im={};A(Im,{askConfirm:()=>Pe,askText:()=>nt,formatSize:()=>wo,hostSupportsManagers:()=>Fs,makeDropTarget:()=>st,openManagerPopup:()=>vo,readBase64:()=>Il});function st(s,e){Pl.set(s,e)}function ay(s){let e=[...s.items].filter(n=>n.kind==="file").map(n=>n.webkitGetAsEntry()).filter(n=>n!==null);if(!e.length)return Promise.resolve([...s.files].map(n=>({path:n.name,file:n})));let t=[],o=async n=>{if(t.length>=iy)return;if(n.isFile){let i=await new Promise((a,l)=>n.file(a,l));t.push({path:n.fullPath.replace(/^\/+/,""),file:i});return}let r=n.createReader();for(;;){let i=await new Promise((a,l)=>r.readEntries(a,l));if(!i.length)break;for(let a of i)await o(a)}};return Promise.all(e.map(o)).then(()=>t)}function vo(s,{onMessage:e,canClose:t,onEscape:o}){let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let r=document.createElement("div");n.append(r);let i=r.attachShadow({mode:"open"});i.innerHTML=`${s}`;let a=new AbortController,{signal:l}=a,c=v=>{v.data&&typeof v.data=="object"&&e(v.data)};window.chrome.webview.addEventListener("message",c);let u=()=>{l.aborted||t&&!t()||(a.abort(),window.chrome.webview.removeEventListener("message",c),n.remove())};for(let v of["keydown","keyup","keypress"])i.addEventListener(v,k=>k.stopPropagation());document.addEventListener("keydown",v=>{if(v.key!=="Escape")return;v.stopPropagation();let k=i.querySelector(".askBackdrop [data-cancel]");k?k.click():o?.()||u()},{signal:l,capture:!0}),n.addEventListener("mousedown",v=>{v.target===n&&u()});let h=i.querySelector("[data-error]"),p=0,f=v=>{h&&(h.textContent=v,h.hidden=!1,clearTimeout(p),p=setTimeout(()=>{h.hidden=!0},8e3))},m=null,g=v=>{m!==v&&(m?.classList.remove("dropHover"),m=v,v?.classList.add("dropHover"))},b=v=>{for(let k of v.composedPath()){if(k===n)break;if(k instanceof HTMLElement&&Pl.has(k))return k}return null};return n.addEventListener("dragover",v=>{v.preventDefault();let k=b(v);g(k),v.dataTransfer&&(v.dataTransfer.dropEffect=k?"copy":"none")}),n.addEventListener("dragleave",v=>{v.relatedTarget||g(null)}),n.addEventListener("drop",v=>{v.preventDefault();let k=b(v);g(null);let E=k&&Pl.get(k);!E||!v.dataTransfer||ay(v.dataTransfer).then(L=>{L.length&&E(L)}).catch(L=>f(`Could not read the dropped files: ${L?.message??L}`))}),i.querySelector("[data-close]")?.addEventListener("click",u),document.body.append(n),{shadow:i,close:u,signal:l,showError:f}}function nt(s,e,t,o=""){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
              Cancel
              OK
              `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=o;let r=n.querySelector(".askInput");r.value=t,(s.querySelector(".managerPopup")??s).append(n),r.focus();let a=t.lastIndexOf(".");return r.setSelectionRange(t.lastIndexOf("/")+1,a>0?a:t.length),new Promise(l=>{let c=u=>{n.remove(),l(u)};n.querySelector("[data-ok]").onclick=()=>c(r.value.trim()||null),n.querySelector("[data-cancel]").onclick=()=>c(null),r.onkeydown=u=>{u.key==="Enter"&&c(r.value.trim()||null)}})}function Pe(s,e,t,o){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
              -
              Cancel
              `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=t;let r=n.querySelector("[data-ok]");return r.textContent=o,(s.querySelector(".managerPopup")??s).append(n),new Promise(i=>{let a=l=>{n.remove(),i(l)};r.onclick=()=>a(!0),n.querySelector("[data-cancel]").onclick=()=>a(!1)})}var Fs,Pl,iy,Il,wo,Ds=w(()=>{"use strict";F();Rm();Fs=()=>d.hostFeatures?.includes("script-manager")??!1,Pl=new WeakMap,iy=5e3;Il=s=>new Promise((e,t)=>{let o=new FileReader;o.onload=()=>e(String(o.result).slice(String(o.result).indexOf(",")+1)),o.onerror=()=>t(o.error),o.readAsDataURL(s)});wo=s=>s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`});var zl={};A(zl,{open:()=>hy});var ly,Nm,Nl,cy,ur,dy,_m,Bm,_l,uy,Ge,Bl,py,hy,Hl=w(()=>{"use strict";F();Am();wn();Ds();Do();ly=120,Nm=4*1024*1024,Nl="custom.css",cy=()=>d.hostFeatures?.includes("css-manager")??!1,ur=s=>/\.css$/i.test(s)?s:`${s}.css`,dy="https://raw.githubusercontent.com/kute-client/kute-css-store/main/",_m=8e3,Bm=s=>typeof s=="string"&&s.split("/").every(e=>e!==""&&e!=="."&&e!==".."),_l=s=>dy+s.split("/").map(encodeURIComponent).join("/"),uy=s=>{let e=typeof s?.name=="string"?s.name.replace(/[\\/:*?"<>|]/g,"").trim():"";return!e||!Bm(s.file)||!/\.css$/i.test(s.file)?null:{name:ur(e),author:typeof s.author=="string"?s.author:"",file:s.file,preview:Bm(s.preview)?s.preview:""}},Ge=(s,e)=>window.chrome.webview.postMessage(e?`css-${s} ${JSON.stringify(e)}`:`css-${s}`),Bl=class{constructor(){this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.files=[],this.active=null,this.listed=!1,this.saving=null,this.savingName=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.closeAfterSave=!1,this.forceClose=!1,this.legacy=!1,this.live=!0,this.previewTimer=0,this.storeButtons=new Map,this.downloading=new Set,this.storeLoaded=!1,this.storeRun=0}open(){if(this.popup)return;if(!os()){d.showNotification("The CSS Manager needs a newer Kute. Update Kute to use it.",!1,6);return}this.legacy=!cy(),this.popup=vo(Lm,{onMessage:i=>this.receive(i),canClose:()=>this.canClose()});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{clearTimeout(this.previewTimer),Rt.revert(),this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.listed=!1,this.saving=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.forceClose=!1,this.storeButtons.clear(),this.downloading.clear(),this.storeLoaded=!1,this.storeRun++}),this.$("#ccFolder").onclick=()=>Ge("reveal",{name:this.editing??""}),this.$("#ccOff").hidden=d.settings.data.customCss!==!1,this.$("#ccStore").onclick=()=>this.openStore(),this.$("#ccStoreBack").onclick=()=>this.$(".managerBody").classList.remove("storeOpen");let o=this.$("#ccLive");o.checked=this.live,o.onchange=()=>{this.live=o.checked,this.preview()};let n=e.host.parentElement;if(this.$("#ccPeek").onpointerdown=i=>{i.preventDefault(),n.style.opacity="0",window.addEventListener("pointerup",()=>{n.style.opacity=""},{once:!0,signal:t})},this.legacy){this.$(".managerPopup").classList.add("legacy"),this.$("#ccHint").textContent="Loaded after all of Krunker's styles, so a rule with the same selector wins. Saved as Documents\\kute\\custom.css. Update Kute to keep several CSS files and switch between them.",this.$("#ccEditor").textContent="Loading...",Ge("read");return}this.$("#ccNew").onclick=()=>this.create(),this.$("#ccPaste").onclick=()=>this.paste();let r=this.$("#ccImportInput");this.$("#ccImport").onclick=()=>r.click(),r.onchange=()=>{this.importFiles([...r.files??[]]),r.value=""},st(this.$("#ccFiles"),i=>this.importFiles(i.map(a=>a.file))),this.$("#ccEditor").textContent="Loading...",Ge("list")}async openStore(){if(!this.popup||(this.$(".managerBody").classList.add("storeOpen"),this.storeLoaded))return;let e=++this.storeRun,t=this.$("#ccStoreList");t.innerHTML='
              Loading the CSS Store...
              ';let o;try{let n=await fetch(_l("index.json"),{signal:AbortSignal.any([this.popup.signal,AbortSignal.timeout(_m)])});if(!n.ok)throw new Error(`HTTP ${n.status}`);let r=await n.json();if(!Array.isArray(r))throw new Error("index.json is no list");o=r.map(uy).filter(Boolean)}catch{e===this.storeRun&&(t.innerHTML='
              Could not load the CSS Store. Go back and open it again to retry.
              ');return}if(e===this.storeRun){this.storeLoaded=!0,this.storeButtons.clear(),t.textContent="",o.length||(t.innerHTML='
              Nothing in the CSS Store yet.
              ');for(let n of o)t.append(this.storeCard(n));this.refreshStore()}}openImagePreview(e,t){if(!this.popup)return;this.$("#cssImagePreview")?.remove();let o=document.createElement("div");o.id="cssImagePreview",Object.assign(o.style,{position:"fixed",inset:"0",zIndex:"999999",display:"flex",alignItems:"center",justifyContent:"center",padding:"40px",boxSizing:"border-box",background:"rgba(0, 0, 0, 0.88)",backdropFilter:"blur(8px)",cursor:"zoom-out"});let n=document.createElement("img");n.src=e,n.alt=t,Object.assign(n.style,{display:"block",maxWidth:"100%",maxHeight:"100%",width:"auto",height:"auto",objectFit:"contain",borderRadius:"8px",boxShadow:"0 10px 50px rgba(0, 0, 0, 0.5)",cursor:"default"});let r=document.createElement("button");r.type="button",r.textContent="\xD7",r.setAttribute("aria-label","Close preview"),Object.assign(r.style,{position:"absolute",top:"16px",right:"24px",border:"none",background:"transparent",color:"#fff",fontSize:"36px",cursor:"pointer",lineHeight:"1"});let i=()=>{o.remove(),document.removeEventListener("keydown",a)},a=l=>{l.key==="Escape"&&i()};r.onclick=i,o.addEventListener("click",l=>{l.target===o&&i()}),n.addEventListener("click",l=>{l.stopPropagation()}),o.append(n,r),this.popup.shadow.append(o),document.addEventListener("keydown",a)}storeCard(e){let t=document.createElement("div");t.className="storeCard";let o=document.createElement("div");if(o.className="storeShot",o.innerHTML='image',e.preview){let a=document.createElement("img");a.alt=`Preview of ${e.name}`,a.loading="lazy",a.decoding="async",a.src=_l(e.preview),a.onerror=()=>a.remove(),a.style.cursor="zoom-in",a.title="Click to preview",a.addEventListener("click",l=>{l.stopPropagation(),this.openImagePreview(a.src,e.name)}),o.append(a)}let n=document.createElement("div");n.className="storeName",n.textContent=e.name.replace(/\.css$/i,"");let r=document.createElement("div");r.className="storeAuthor",r.textContent=e.author?`by ${e.author}`:"";let i=document.createElement("div");return i.className="btn small",i.onclick=()=>this.download(e),this.storeButtons.set(e.name,i),t.append(o,n,r,i),t}async download(e){if(!(!this.popup||this.downloading.has(e.name)||this.hasFile(e.name))){this.downloading.add(e.name),this.refreshStore();try{let t=await fetch(_l(e.file),{signal:AbortSignal.any([this.popup.signal,AbortSignal.timeout(_m)])});if(!t.ok)throw new Error(`HTTP ${t.status}`);let o=await t.text();if(o.length>Nm)throw new Error("larger than 4 MB");Ge("import",{name:e.name,content:o})}catch(t){if(!this.popup)return;this.downloading.delete(e.name),this.popup.showError(`Could not download ${e.name}: ${t instanceof Error?t.message:t}`),this.refreshStore()}}}hasFile(e){let t=e.toLowerCase();return this.files.some(o=>o.name.toLowerCase()===t)}refreshStore(){for(let[e,t]of this.storeButtons){let o=this.downloading.has(e),n=!o&&this.hasFile(e);t.classList.toggle("primary",!o&&!n),t.classList.toggle("done",o||n),o?t.textContent="Downloading...":n?t.innerHTML='checkDownloaded':t.innerHTML='downloadDownload'}}$(e){return this.popup?.shadow.querySelector(e)}receive(e){if(typeof e.managerError=="string"&&this.popup?.showError(e.managerError),this.legacy){typeof e.customCss?.content=="string"&&!this.editor&&(this.active=Nl,this.showEditor(Nl,e.customCss.content)),e.customCssSaved&&this.saving!==null&&this.saved(e.customCssSaved.error,Nl);return}e.cssFiles&&this.updateList(e.cssFiles),e.cssFile&&e.cssFile.name===this.loading&&(this.loading=null,typeof e.cssFile.content=="string"?this.showEditor(e.cssFile.name,e.cssFile.content):this.popup?.showError(`Could not read ${e.cssFile.name}`)),e.cssSaved&&this.saving!==null&&e.cssSaved.name===this.savingName&&this.saved(e.cssSaved.error,e.cssSaved.name),e.cssImported&&this.imported(e.cssImported),e.cssActivated&&(this.activating=!1,e.cssActivated.error?this.popup?.showError(`Could not switch: ${e.cssActivated.error}`):Rt.markSaved(String(e.cssActivated.content??"")),this.preview())}updateList(e){this.files=Array.isArray(e.files)?e.files:[];let t=this.active;this.active=e.active??null,t&&!this.active&&!this.activating&&(Rt.markSaved(""),this.preview());let o=new Set(this.files.map(n=>n.name));if(this.renaming&&this.editing===this.renaming.from&&o.has(this.renaming.to)){this.editing=this.renaming.to;let n=this.popup?.shadow.querySelector(".editorFile")?.firstChild;n&&(n.textContent=this.editing)}if(this.renaming=null,this.editing&&!o.has(this.editing)&&this.closeEditor(),!this.listed){this.listed=!0;let n=this.active??this.files[0]?.name;n?this.load(n):this.closeEditor()}this.renderList(),this.refreshStore()}renderList(){let e=this.$("#ccList");if(e){if(e.textContent="",!this.files.length){let t=document.createElement("div");t.className="empty",t.textContent="No CSS files yet. Make one with New, paste one, or import .css files.",e.append(t)}for(let t of this.files)e.append(this.row(t));e.append(this.row(null))}}row(e){let t=e?.name??"",o=document.createElement("div");o.className="cssRow",o.classList.toggle("none",!e),o.classList.toggle("active",(this.active??"")===t),o.classList.toggle("editing",!!e&&this.editing===t);let n=document.createElement("div");n.className="cssRadio",n.title=e?"Use this one":"No CSS",n.onclick=l=>{l.stopPropagation(),this.activate(t)};let r=document.createElement("div");if(r.className="cssName",r.textContent=e?t:"None",o.append(n,r),!e)return o.onclick=()=>this.activate(""),o;let i=document.createElement("div");i.className="cssSize",i.textContent=wo(e.size);let a=document.createElement("div");a.className="cssActions";for(let[l,c,u,h]of[["edit","Rename",()=>this.rename(t),!1],["delete","Delete",()=>this.remove(t),!0]]){let p=document.createElement("div");p.className=h?"iconBtn danger":"iconBtn",p.title=c,p.innerHTML=`${l}`,p.onclick=f=>{f.stopPropagation(),u()},a.append(p)}return o.append(i,a),o.onclick=()=>this.load(t),o}async load(e){e===this.editing&&this.editor||await this.discardChanges()&&(this.loading=e,Ge("get",{name:e}))}showEditor(e,t){let o=this.$("#ccEditor");if(!o)return;let{editor:n}=fo(o,{title:e,content:t,language:"css",onSave:r=>this.save(r),onClose:()=>this.popup?.close(),onChange:()=>{clearTimeout(this.previewTimer),this.previewTimer=setTimeout(()=>this.preview(),ly)}});this.editor=n,this.editing=e,this.renderList(),this.preview()}closeEditor(){this.editor=null,this.editing=null;let e=this.$("#ccEditor");e&&(e.innerHTML='
              Pick a file below to edit it.
              '),this.preview()}preview(){let{editor:e}=this;this.live&&e&&(this.editing===this.active||e.isDirty())?Rt.apply(e.getValue()):Rt.revert()}async discardChanges(){return!this.editor?.isDirty()||!this.popup?!0:Pe(this.popup.shadow,"Unsaved changes",`Throw the changes to ${this.editing} away?`,"Discard")}save(e){!this.editor||!this.editing||this.saving!==null||(this.closeAfterSave=e,this.saving=this.editor.getValue(),this.savingName=this.editing,this.legacy?window.chrome.webview.postMessage(`css-write ${JSON.stringify({content:this.saving})}`):Ge("save",{name:this.editing,content:this.saving}))}saved(e,t){let o=this.saving??"";if(this.saving=null,e){this.popup?.showError(`Could not save: ${e}`);return}t===this.active&&Rt.markSaved(o),t===this.editing&&this.editor?.markSaved(o),this.preview(),this.closeAfterSave&&this.popup?.close()}activate(e){e===(this.active??"")||this.activating||(this.activating=!0,Ge("activate",{name:e}))}async create(){if(!this.popup)return;let e=await nt(this.popup.shadow,"New CSS file","theme.css","Ends in .css");e&&(this.openAfterImport=ur(e),Ge("import",{name:this.openAfterImport,content:""}))}async paste(){if(!this.popup)return;let e="";try{e=await navigator.clipboard.readText()}catch{this.popup.showError("Could not read the clipboard.");return}if(!e.trim()){this.popup.showError("The clipboard has no text in it. Copy the CSS first.");return}let t=await nt(this.popup.shadow,"Name for the pasted CSS","pasted.css","Ends in .css");t&&(this.openAfterImport=ur(t),Ge("import",{name:this.openAfterImport,content:e}))}async importFiles(e){let t=[];for(let o of e){if(!/\.css$/i.test(o.name)||o.size>Nm){t.push(o.name);continue}Ge("import",{name:o.name,content:await o.text()})}t.length&&this.popup?.showError(`Not imported (only .css files up to 4 MB): ${t.join(", ")}`)}imported(e){if(this.downloading.delete(e.requested)&&this.refreshStore(),e.error){this.popup?.showError(`Could not add ${e.requested}: ${e.error}`);return}this.active||this.activate(e.name),e.requested===this.openAfterImport?(this.openAfterImport=null,this.load(e.name)):this.editing||this.load(e.name)}async rename(e){if(!this.popup)return;let t=await nt(this.popup.shadow,`Rename ${e}`,e,"Ends in .css");if(!t)return;let o=ur(t);o!==e&&(this.renaming={from:e,to:o},Ge("rename",{from:e,to:o}))}async remove(e){!this.popup||!await Pe(this.popup.shadow,`Delete ${e}?`,"It goes to the recycle bin.","Delete")||Ge("delete",{name:e})}canClose(){return this.forceClose||!this.editor?.isDirty()||!this.popup?!0:(Pe(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},py=new Bl,hy=()=>py.open()});var zm={};A(zm,{hostWatchesSwapper:()=>pr,reloadStylesheets:()=>qs});var pr,qs,hr=w(()=>{"use strict";F();pr=()=>d.hostFeatures?.includes("swapper-watch")??!1,qs=s=>{for(let e of document.querySelectorAll('link[rel="stylesheet"]')){if(!(e instanceof HTMLLinkElement)||!e.href)continue;let t=new URL(e.href);if(!/(^|\.)krunker\.io$/.test(t.hostname)||!s.has(t.pathname.slice(1).toLowerCase()))continue;t.searchParams.set("kuteSwap",String(Date.now()));let o=e.cloneNode();o.href=t.href,o.addEventListener("load",()=>e.remove(),{once:!0}),o.addEventListener("error",()=>o.remove(),{once:!0}),e.after(o)}}});var Om,Hm=w(()=>{Om='

              Userscripts

              Userscripts off
              folder_openOpen scripts folder
              ×
              Scripts run inside Krunker. Only add scripts you trust, and never anything that breaks krunker.io/docs/terms.txt. Drop .js files onto a group, or create one with New script.
              '});var Fl={};A(Fl,{open:()=>vy});var fy,gy,oe,Ks,Ol,by,vy,Dl=w(()=>{"use strict";F();Hm();ts();Ds();Do();fy=4*1024*1024,gy=`// ==UserScript== +
              Cancel
              `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=t;let r=n.querySelector("[data-ok]");return r.textContent=o,(s.querySelector(".managerPopup")??s).append(n),new Promise(i=>{let a=l=>{n.remove(),i(l)};r.onclick=()=>a(!0),n.querySelector("[data-cancel]").onclick=()=>a(!1)})}var Fs,Pl,iy,Il,wo,Ds=w(()=>{"use strict";F();Rm();Fs=()=>d.hostFeatures?.includes("script-manager")??!1,Pl=new WeakMap,iy=5e3;Il=s=>new Promise((e,t)=>{let o=new FileReader;o.onload=()=>e(String(o.result).slice(String(o.result).indexOf(",")+1)),o.onerror=()=>t(o.error),o.readAsDataURL(s)});wo=s=>s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`});var zl={};A(zl,{open:()=>hy});var ly,Nm,Nl,cy,ur,dy,_m,Bm,_l,uy,Ge,Bl,py,hy,Hl=w(()=>{"use strict";F();Am();wn();Ds();Do();ly=120,Nm=4*1024*1024,Nl="custom.css",cy=()=>d.hostFeatures?.includes("css-manager")??!1,ur=s=>/\.css$/i.test(s)?s:`${s}.css`,dy="https://raw.githubusercontent.com/kute-client/kute-css-store/main/",_m=8e3,Bm=s=>typeof s=="string"&&s.split("/").every(e=>e!==""&&e!=="."&&e!==".."),_l=s=>dy+s.split("/").map(encodeURIComponent).join("/"),uy=s=>{let e=typeof s?.name=="string"?s.name.replace(/[\\/:*?"<>|]/g,"").trim():"";return!e||!Bm(s.file)||!/\.css$/i.test(s.file)?null:{name:ur(e),author:typeof s.author=="string"?s.author:"",file:s.file,preview:Bm(s.preview)?s.preview:""}},Ge=(s,e)=>window.chrome.webview.postMessage(e?`css-${s} ${JSON.stringify(e)}`:`css-${s}`),Bl=class{constructor(){this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.files=[],this.active=null,this.listed=!1,this.saving=null,this.savingName=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.closeAfterSave=!1,this.forceClose=!1,this.legacy=!1,this.live=!0,this.previewTimer=0,this.storeButtons=new Map,this.downloading=new Set,this.storeLoaded=!1,this.storeRun=0}open(){if(this.popup)return;if(!os()){d.showNotification("The CSS Manager needs a newer Kute. Update Kute to use it.",!1,6);return}this.legacy=!cy(),this.popup=vo(Lm,{onMessage:i=>this.receive(i),canClose:()=>this.canClose(),onEscape:()=>this.unzoom()});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{clearTimeout(this.previewTimer),Rt.revert(),this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.listed=!1,this.saving=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.forceClose=!1,this.storeButtons.clear(),this.downloading.clear(),this.storeLoaded=!1,this.storeRun++}),this.$("#ccFolder").onclick=()=>Ge("reveal",{name:this.editing??""}),this.$("#ccOff").hidden=d.settings.data.customCss!==!1,this.$("#ccStore").onclick=()=>this.openStore(),this.$("#ccStoreBack").onclick=()=>this.$(".managerBody").classList.remove("storeOpen");let o=this.$("#ccLive");o.checked=this.live,o.onchange=()=>{this.live=o.checked,this.preview()};let n=e.host.parentElement;if(this.$("#ccPeek").onpointerdown=i=>{i.preventDefault(),n.style.opacity="0",window.addEventListener("pointerup",()=>{n.style.opacity=""},{once:!0,signal:t})},this.legacy){this.$(".managerPopup").classList.add("legacy"),this.$("#ccHint").textContent="Loaded after all of Krunker's styles, so a rule with the same selector wins. Saved as Documents\\kute\\custom.css. Update Kute to keep several CSS files and switch between them.",this.$("#ccEditor").textContent="Loading...",Ge("read");return}this.$("#ccNew").onclick=()=>this.create(),this.$("#ccPaste").onclick=()=>this.paste();let r=this.$("#ccImportInput");this.$("#ccImport").onclick=()=>r.click(),r.onchange=()=>{this.importFiles([...r.files??[]]),r.value=""},st(this.$("#ccFiles"),i=>this.importFiles(i.map(a=>a.file))),this.$("#ccEditor").textContent="Loading...",Ge("list")}async openStore(){if(!this.popup||(this.$(".managerBody").classList.add("storeOpen"),this.storeLoaded))return;let e=++this.storeRun,t=this.$("#ccStoreList");t.innerHTML='
              Loading the CSS Store...
              ';let o;try{let n=await fetch(_l("index.json"),{signal:AbortSignal.any([this.popup.signal,AbortSignal.timeout(_m)])});if(!n.ok)throw new Error(`HTTP ${n.status}`);let r=await n.json();if(!Array.isArray(r))throw new Error("index.json is no list");o=r.map(uy).filter(Boolean)}catch{e===this.storeRun&&(t.innerHTML='
              Could not load the CSS Store. Go back and open it again to retry.
              ');return}if(e===this.storeRun){this.storeLoaded=!0,this.storeButtons.clear(),t.textContent="",o.length||(t.innerHTML='
              Nothing in the CSS Store yet.
              ');for(let n of o)t.append(this.storeCard(n));this.refreshStore()}}zoom(e,t){if(!this.popup)return;this.unzoom();let o=document.createElement("div");o.id="ccZoom",o.innerHTML='
              ×
              ';let n=document.createElement("img");n.src=e,n.alt=t,o.append(n),o.onclick=r=>{r.target!==n&&o.remove()},this.$(".managerPopup").append(o)}unzoom(){let e=this.$("#ccZoom");return e?.remove(),!!e}storeCard(e){let t=document.createElement("div");t.className="storeCard";let o=document.createElement("div");if(o.className="storeShot",o.innerHTML='image',e.preview){let a=document.createElement("img");a.alt="",a.title="Click to enlarge",a.loading="lazy",a.decoding="async",a.src=_l(e.preview),a.onerror=()=>a.remove(),a.onclick=()=>this.zoom(a.src,e.name),o.append(a)}let n=document.createElement("div");n.className="storeName",n.textContent=e.name.replace(/\.css$/i,"");let r=document.createElement("div");r.className="storeAuthor",r.textContent=e.author?`by ${e.author}`:"";let i=document.createElement("div");return i.className="btn small",i.onclick=()=>this.download(e),this.storeButtons.set(e.name,i),t.append(o,n,r,i),t}async download(e){if(!(!this.popup||this.downloading.has(e.name)||this.hasFile(e.name))){this.downloading.add(e.name),this.refreshStore();try{let t=await fetch(_l(e.file),{signal:AbortSignal.any([this.popup.signal,AbortSignal.timeout(_m)])});if(!t.ok)throw new Error(`HTTP ${t.status}`);let o=await t.text();if(o.length>Nm)throw new Error("larger than 4 MB");Ge("import",{name:e.name,content:o})}catch(t){if(!this.popup)return;this.downloading.delete(e.name),this.popup.showError(`Could not download ${e.name}: ${t instanceof Error?t.message:t}`),this.refreshStore()}}}hasFile(e){let t=e.toLowerCase();return this.files.some(o=>o.name.toLowerCase()===t)}refreshStore(){for(let[e,t]of this.storeButtons){let o=this.downloading.has(e),n=!o&&this.hasFile(e);t.classList.toggle("primary",!o&&!n),t.classList.toggle("done",o||n),o?t.textContent="Downloading...":n?t.innerHTML='checkDownloaded':t.innerHTML='downloadDownload'}}$(e){return this.popup?.shadow.querySelector(e)}receive(e){if(typeof e.managerError=="string"&&this.popup?.showError(e.managerError),this.legacy){typeof e.customCss?.content=="string"&&!this.editor&&(this.active=Nl,this.showEditor(Nl,e.customCss.content)),e.customCssSaved&&this.saving!==null&&this.saved(e.customCssSaved.error,Nl);return}e.cssFiles&&this.updateList(e.cssFiles),e.cssFile&&e.cssFile.name===this.loading&&(this.loading=null,typeof e.cssFile.content=="string"?this.showEditor(e.cssFile.name,e.cssFile.content):this.popup?.showError(`Could not read ${e.cssFile.name}`)),e.cssSaved&&this.saving!==null&&e.cssSaved.name===this.savingName&&this.saved(e.cssSaved.error,e.cssSaved.name),e.cssImported&&this.imported(e.cssImported),e.cssActivated&&(this.activating=!1,e.cssActivated.error?this.popup?.showError(`Could not switch: ${e.cssActivated.error}`):Rt.markSaved(String(e.cssActivated.content??"")),this.preview())}updateList(e){this.files=Array.isArray(e.files)?e.files:[];let t=this.active;this.active=e.active??null,t&&!this.active&&!this.activating&&(Rt.markSaved(""),this.preview());let o=new Set(this.files.map(n=>n.name));if(this.renaming&&this.editing===this.renaming.from&&o.has(this.renaming.to)){this.editing=this.renaming.to;let n=this.popup?.shadow.querySelector(".editorFile")?.firstChild;n&&(n.textContent=this.editing)}if(this.renaming=null,this.editing&&!o.has(this.editing)&&this.closeEditor(),!this.listed){this.listed=!0;let n=this.active??this.files[0]?.name;n?this.load(n):this.closeEditor()}this.renderList(),this.refreshStore()}renderList(){let e=this.$("#ccList");if(e){if(e.textContent="",!this.files.length){let t=document.createElement("div");t.className="empty",t.textContent="No CSS files yet. Make one with New, paste one, or import .css files.",e.append(t)}for(let t of this.files)e.append(this.row(t));e.append(this.row(null))}}row(e){let t=e?.name??"",o=document.createElement("div");o.className="cssRow",o.classList.toggle("none",!e),o.classList.toggle("active",(this.active??"")===t),o.classList.toggle("editing",!!e&&this.editing===t);let n=document.createElement("div");n.className="cssRadio",n.title=e?"Use this one":"No CSS",n.onclick=l=>{l.stopPropagation(),this.activate(t)};let r=document.createElement("div");if(r.className="cssName",r.textContent=e?t:"None",o.append(n,r),!e)return o.onclick=()=>this.activate(""),o;let i=document.createElement("div");i.className="cssSize",i.textContent=wo(e.size);let a=document.createElement("div");a.className="cssActions";for(let[l,c,u,h]of[["edit","Rename",()=>this.rename(t),!1],["delete","Delete",()=>this.remove(t),!0]]){let p=document.createElement("div");p.className=h?"iconBtn danger":"iconBtn",p.title=c,p.innerHTML=`${l}`,p.onclick=f=>{f.stopPropagation(),u()},a.append(p)}return o.append(i,a),o.onclick=()=>this.load(t),o}async load(e){e===this.editing&&this.editor||await this.discardChanges()&&(this.loading=e,Ge("get",{name:e}))}showEditor(e,t){let o=this.$("#ccEditor");if(!o)return;let{editor:n}=fo(o,{title:e,content:t,language:"css",onSave:r=>this.save(r),onClose:()=>this.popup?.close(),onChange:()=>{clearTimeout(this.previewTimer),this.previewTimer=setTimeout(()=>this.preview(),ly)}});this.editor=n,this.editing=e,this.renderList(),this.preview()}closeEditor(){this.editor=null,this.editing=null;let e=this.$("#ccEditor");e&&(e.innerHTML='
              Pick a file below to edit it.
              '),this.preview()}preview(){let{editor:e}=this;this.live&&e&&(this.editing===this.active||e.isDirty())?Rt.apply(e.getValue()):Rt.revert()}async discardChanges(){return!this.editor?.isDirty()||!this.popup?!0:Pe(this.popup.shadow,"Unsaved changes",`Throw the changes to ${this.editing} away?`,"Discard")}save(e){!this.editor||!this.editing||this.saving!==null||(this.closeAfterSave=e,this.saving=this.editor.getValue(),this.savingName=this.editing,this.legacy?window.chrome.webview.postMessage(`css-write ${JSON.stringify({content:this.saving})}`):Ge("save",{name:this.editing,content:this.saving}))}saved(e,t){let o=this.saving??"";if(this.saving=null,e){this.popup?.showError(`Could not save: ${e}`);return}t===this.active&&Rt.markSaved(o),t===this.editing&&this.editor?.markSaved(o),this.preview(),this.closeAfterSave&&this.popup?.close()}activate(e){e===(this.active??"")||this.activating||(this.activating=!0,Ge("activate",{name:e}))}async create(){if(!this.popup)return;let e=await nt(this.popup.shadow,"New CSS file","theme.css","Ends in .css");e&&(this.openAfterImport=ur(e),Ge("import",{name:this.openAfterImport,content:""}))}async paste(){if(!this.popup)return;let e="";try{e=await navigator.clipboard.readText()}catch{this.popup.showError("Could not read the clipboard.");return}if(!e.trim()){this.popup.showError("The clipboard has no text in it. Copy the CSS first.");return}let t=await nt(this.popup.shadow,"Name for the pasted CSS","pasted.css","Ends in .css");t&&(this.openAfterImport=ur(t),Ge("import",{name:this.openAfterImport,content:e}))}async importFiles(e){let t=[];for(let o of e){if(!/\.css$/i.test(o.name)||o.size>Nm){t.push(o.name);continue}Ge("import",{name:o.name,content:await o.text()})}t.length&&this.popup?.showError(`Not imported (only .css files up to 4 MB): ${t.join(", ")}`)}imported(e){if(this.downloading.delete(e.requested)&&this.refreshStore(),e.error){this.popup?.showError(`Could not add ${e.requested}: ${e.error}`);return}this.active||this.activate(e.name),e.requested===this.openAfterImport?(this.openAfterImport=null,this.load(e.name)):this.editing||this.load(e.name)}async rename(e){if(!this.popup)return;let t=await nt(this.popup.shadow,`Rename ${e}`,e,"Ends in .css");if(!t)return;let o=ur(t);o!==e&&(this.renaming={from:e,to:o},Ge("rename",{from:e,to:o}))}async remove(e){!this.popup||!await Pe(this.popup.shadow,`Delete ${e}?`,"It goes to the recycle bin.","Delete")||Ge("delete",{name:e})}canClose(){return this.forceClose||!this.editor?.isDirty()||!this.popup?!0:(Pe(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},py=new Bl,hy=()=>py.open()});var zm={};A(zm,{hostWatchesSwapper:()=>pr,reloadStylesheets:()=>qs});var pr,qs,hr=w(()=>{"use strict";F();pr=()=>d.hostFeatures?.includes("swapper-watch")??!1,qs=s=>{for(let e of document.querySelectorAll('link[rel="stylesheet"]')){if(!(e instanceof HTMLLinkElement)||!e.href)continue;let t=new URL(e.href);if(!/(^|\.)krunker\.io$/.test(t.hostname)||!s.has(t.pathname.slice(1).toLowerCase()))continue;t.searchParams.set("kuteSwap",String(Date.now()));let o=e.cloneNode();o.href=t.href,o.addEventListener("load",()=>e.remove(),{once:!0}),o.addEventListener("error",()=>o.remove(),{once:!0}),e.after(o)}}});var Om,Hm=w(()=>{Om='

              Userscripts

              Userscripts off
              folder_openOpen scripts folder
              ×
              Scripts run inside Krunker. Only add scripts you trust, and never anything that breaks krunker.io/docs/terms.txt. Drop .js files onto a group, or create one with New script.
              '});var Fl={};A(Fl,{open:()=>vy});var fy,gy,oe,Ks,Ol,by,vy,Dl=w(()=>{"use strict";F();Hm();ts();Ds();Do();fy=4*1024*1024,gy=`// ==UserScript== // @name {{name}} // @author // @version 1.0
              - ${ko("kmQ","discover","Search all items",e.q)} + ${xo("kmQ","discover","Search all items",e.q)} sf;)this.sent.del /> ${s.advanced?P` `:P` @@ -370,8 +371,8 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del - `}}var Iy,pc=w(()=>{"use strict";_e();xe();Ve();pe();Ko();Iy=6e4});var mf={};A(mf,{dealEvidence:()=>hc,intelligenceView:()=>fc,itemIntelligence:()=>mc});function hc(s){let{assessment:e}=s;if(!e)return"";let t=e.risks[0]??"Supported by recent sales";return`${S(t)}${e.risks.length>1?` +${e.risks.length-1} risk${e.risks.length>2?"s":""}`:""}`}function mc(s,e=!1){if(!s)return"";let{outlook:t}=s,o=s.signals.slice(0,e?2:4);if(!o.length&&t.state!=="published")return"";let n="";return t.state==="published"&&(n=`
              {"use strict";Be();xe();Ve();pe();Uo();Hy=6e4});var wf={};A(wf,{dealEvidence:()=>bc,intelligenceView:()=>wc,itemIntelligence:()=>vc});function bc(s){let{assessment:e}=s;if(!e)return"";let t=e.risks[0]??"Supported by recent sales";return`${S(t)}${e.risks.length>1?` +${e.risks.length-1} risk${e.risks.length>2?"s":""}`:""}`}function vc(s,e=!1){if(!s)return"";let{outlook:t}=s,o=s.signals.slice(0,e?2:4);if(!o.length&&t.state!=="published")return"";let n="";return t.state==="published"&&(n=`
              7-DAY REPORTED-PRICE OUTLOOK @@ -391,11 +392,11 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${S(r.title)}

              ${S(r.detail)}

              -
              `).join(""):'

              No observation to highlight.

              '}${n}`}function fc(s,e,t,o){let{model:n}=s,r=n?.historical,i=n?.forward,a=r?.skill??null,l=[["","All signals"],["activity","Activity"],["supply","Supply"],["relative","Relative value"],["risk","Risks"],["availability","Availability"]],c=[...s.items].sort((h,p)=>Number(o.includes(p.skin))-Number(o.includes(h.skin))),d=h=>`${T(h.samples)} +
              `).join(""):'

              No observation to highlight.

              '}${n}`}function wc(s,e,t,o){let{model:n}=s,r=n?.historical,i=n?.forward,a=r?.skill??null,l=[["","All signals"],["activity","Activity"],["supply","Supply"],["relative","Relative value"],["risk","Risks"],["availability","Availability"]],c=[...s.items].sort((h,p)=>Number(o.includes(p.skin))-Number(o.includes(h.skin))),d=h=>`${T(h.samples)} ${h.weeks} ${h.modelError===null?"Pending":h.modelError.toFixed(3)} -${h.skill===null?"Pending":kr(h.skill)} -${h.coverage===null?"Pending":kr(h.coverage)}`;return`
              +${h.skill===null?"Pending":xr(h.skill)} +${h.coverage===null?"Pending":xr(h.coverage)}`;return`
              KUTE INTELLIGENCE

              Read the market.

              @@ -415,7 +416,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del class="intelligenceProof"> Historical error reduction ${a===null?"Pending":kr(a)} + class="${a!==null&&a>0?"positive":"muted"}">${a===null?"Pending":xr(a)}
              vs the better of two baselines
              ${T(r?.samples??0)} held-out predictions
              ${T(i?.samples??0)} forward outcomes @@ -471,7 +472,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del

              Lower log error is better. Error reduction compares with the better of unchanged last price and the existing valuation baseline. Historical mean range width: ${kr(r.width)} of the predicted price. Forward publication requires 200 outcomes, 20 items, four issue weeks, at least 5% lower error, 85-95% range coverage and mean range width no greater than the predicted price.

              `:""}
              Lower log error is better. Error reduction compares with the better of unchanged last price and the existing valuation baseline. Historical mean range width: ${xr(r.width)} of the predicted price. Forward publication requires 200 outcomes, 20 items, four issue weeks, at least 5% lower error, 85-95% range coverage and mean range width no greater than the predicted price.

              `:""}
              ${T(s.coverage.dailyRows)} daily observations @@ -483,7 +484,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del class="coverageRow">${s.sources.map(h=>`${S(h.source)}: ${h.records} records · ${S(We(Date.now()-h.observedAt))} ago`).join("")}
              `:'

              News and catalog feeds have not been collected yet.

              '}`+(s.news.length?`

              Official news

              ${s.news.map(h=>`

              ${h.url?``:S(h.title)}

              `).join("")}
              `:"")}var kr,en=w(()=>{"use strict";pe();Ve();kr=s=>s===null?"Not available":`${(s*100).toFixed(1)}%`});var ff={};A(ff,{contributionEvidence:()=>gc});function gc(s){if(!s||!s.trades30d&&!s.sales30d)return"";let{cash:e,sales:t,swaps:o}=s;return`
              + class="sub">${h.url?``:S(h.title)}

              `).join("")}
              `:"")}var xr,on=w(()=>{"use strict";pe();Ve();xr=s=>s===null?"Not available":`${(s*100).toFixed(1)}%`});var kf={};A(kf,{contributionEvidence:()=>kc});function kc(s){if(!s||!s.trades30d&&!s.sales30d)return"";let{cash:e,sales:t,swaps:o}=s;return`

              Completed trade reports

              30 days

              ${T(s.trades30d)} reported private trades involved this item. ${T(s.matchedSales30d)} of ${T(s.sales30d)} contributed market sales match independently sampled listings and fit official daily totals.

              @@ -498,7 +499,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del Comparisons require multiple reports, source sessions and dates; source sessions do not identify unique players. These descriptive samples exclude bundles and reported serial, wear, style and paint attributes. The valuation model separately uses supported bundles with KR anchors; its contribution is explained above.

              -
              `}var bc=w(()=>{"use strict";pe()});var gf={};A(gf,{exchangeEvidence:()=>vc});function vc(s,e){let t=s.exchange;if(!t&&!s.privateTrading?.trades30d)return"";let o=t?.status==="applied";return`
              +
              `}var yc=w(()=>{"use strict";pe()});var yf={};A(yf,{exchangeEvidence:()=>xc});function xc(s,e){let t=s.exchange;if(!t&&!s.privateTrading?.trades30d)return"";let o=t?.status==="applied";return`

              ${o?"Private trades contribute to this value":"Private trading activity"}

              ${o&&t.confidence<35?"Tentative evidence":"Reported exchanges"}
              ${o?`

              ${T(t.reports)} eligible exchanges inform the ${T(s.fair)} KR Kute estimate. @@ -506,13 +507,13 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${S(t?.reason??"These reports establish activity; their currencies or instance attributes do not yet support a base-item KR estimate.")}

              `} ${s.privateTrading?`

              ${T(s.privateTrading.trades7d)} private trades in seven days. Latest reported trade date: ${S(s.privateTrading.lastTradeDay)} UTC.

              `:""} ${e&&o?`
              -
              Public-data baseline${T(t.baseline)} KR${S(Ny[t.baselineMethod]??"Public evidence")}
              +
              Public-data baseline${T(t.baseline)} KR${S(Oy[t.baselineMethod]??"Public evidence")}
              Model sensitivity range${T(t.low)} to ${T(t.high)}KR; not a calibrated prediction interval
              Report diversity${S(t.sources)} source${t.sources===1?"":"s"} / ${S(t.days)} day${t.days===1?"":"s"}Anonymous connections, not verified unique players
              `:""}

              Client reports can be incomplete or inaccurate. A verdict needs sufficient combined public and private evidence. Private trading does not establish cash-sale liquidity. The letter grade still describes public-market activity.

              -
              `}var Ny,wc=w(()=>{"use strict";pe();Ny={sales7d:"7-day public sales",sales30d:"30-day public sales",sales90d:"90-day public sales",ask:"Sampled asking prices",krunker:"Krunker estimate",floor:"Fallback estimate"}});var vf={};A(vf,{candleSeries:()=>yc,lineSegments:()=>kc});function kc(s,e,t){let o=[],n=null,r=!1;for(let i of s){let a=i.values[e];if(a==null||!Number.isFinite(a)){r=!0;continue}n&&o.push({from:n,to:i,gap:r||i.t-n.t>t*1.5}),n=i,r=!1}return o}function bf(s,e,t){let o=new Map,n=e===7*864e5?4*864e5:0;for(let a of[...s].sort((l,c)=>l.t-c.t)){let l=Math.floor((a.t-n)/e)*e+n,c=o.get(l);c||(c={t:l,end:l+e,values:[],volume:null,ask:null,partial:!1},o.set(l,c));for(let[h,p]of a.values.entries())p!==null&&Number.isFinite(p)&&(c.values[h]=p);a.volume!==null&&a.volume!==void 0&&Number.isFinite(a.volume)&&(c.volume=(c.volume??0)+a.volume);let d=a.ask;d&&(c.ask?(c.ask.high=Math.max(c.ask.high,d.high),c.ask.low=Math.min(c.ask.low,d.low),c.ask.close=d.close,c.ask.samples+=d.samples):c.ask={...d})}let r=Math.min(...s.map(a=>a.t)),i=Math.max(...s.map(a=>a.t+t));for(let a of o.values())a.partial=a.ti||(a.end??0)>Date.now();return[...o.values()]}function yc(s,e){let t=e,o=bf(s,t,e),n=a=>{let l=a.filter(c=>c.ask);return{count:l.length,share:l.filter(c=>(c.ask?.samples??0)>1).length/Math.max(1,l.length)}},r=n(o);for(let a of _y.filter(l=>l>e)){if(r.share>=.6||r.count<2)break;let l=bf(s,a,e),c=n(l);c.count<2||c.share<=r.share||(t=a,o=l,r=c)}let i=t>=864e5?`${t/864e5}D`:`${t/36e5}h`;return{points:o,stepMs:t,label:i}}var _y,yr=w(()=>{"use strict";_y=[36e5,144e5,432e5,864e5,6048e5]});var wf={};A(wf,{itemView:()=>xc});async function xc(s){let e=s.itemState(),t=!e.candles&&e.range==="7D"?"1M":e.range,o=await W.itemDesk(e.skin,t);t!==e.range&&o?.history&&!o.history.points.some(B=>B.t>=Date.now()-7*864e5&&B.avg!==null)&&(t=e.range,o=await W.itemDesk(e.skin,t)??o);let{item:n,history:r,listings:i}=o??{};if(!n)return s.unavailable();let a=n.skin,l=n.evidence,c=Se().some(B=>B.skin===a.skin),d=l?.dailyRange,h=l?`${l.sales} sales across ${l.days} trading days in 30D`:`${n.liquidity.sales30d} sales in 30 days`,p=a.exchange?.status==="applied"?`${a.exchange.reports} eligible private exchanges${a.method.startsWith("sales")?" + public sales":"; tentative when sparse"}`:h,m=l?.reasons??[p,`The estimate is based on ${a.method.startsWith("sales")?"historical sales aggregates":"limited market evidence"}.`],f=[{label:r?.resolution==="hour"?"Lowest observed ask":"Daily average sale",color:"#f580b4"}];e.overlay!=="none"&&f.push({label:{fair:"Kute estimate",lowest:"Lowest observed ask",krunker:"Krunker estimate"}[e.overlay]??"Comparison",color:"#87b8f7"});let g=(r?.points??[]).filter(B=>t===e.range||B.t>=Date.now()-7*864e5).map(B=>({t:B.t,values:[r?.resolution==="hour"?B.lowest:B.avg,...f.length>1?[{fair:B.fair,lowest:B.lowest,krunker:B.krunker}[e.overlay]??null]:[]],volume:r?.resolution==="day"&&B.salesObserved!==!1?B.sales:null,ask:B.ask})),b=r?.resolution==="hour"?36e5:864e5,v=e.candles?yc(g,b):null;v&&({points:g,stepMs:b}=v);let k="Daily average completed-sale prices. Today's point, when present, is incomplete. Dashed connections cross missing observations; they do not supply prices for those dates.";r?.resolution==="hour"&&(k="Intraday lines show sampled asks. Dashed connections cross unsampled periods. Official sales data is daily; individual transaction timing is unavailable."),v&&(k=`Auto interval: ${v.label}. Sparse quotes use larger intervals when they can support multiple candles. Green and red show rising and falling sampled asks; gray ticks show one quote or an unchanged close. Empty intervals remain empty. These are asking-price candles, not transaction candles.`);let E=Math.max(8,Math.ceil(g.length/e.zoom)),L=Math.max(1,Math.floor(E/2)),x=(i?.listings??[]).slice(0,s.advanced?250:5),$=i?.observedAt??l?.bookAt,I=!$||Date.now()-$>3*36e5,_=i?.highest,H="Unavailable",G="No available quote";_===null?H="None observed":_!==void 0&&(H=P` + `}var Oy,Sc=w(()=>{"use strict";pe();Oy={sales7d:"7-day public sales",sales30d:"30-day public sales",sales90d:"90-day public sales",ask:"Sampled asking prices",krunker:"Krunker estimate",floor:"Fallback estimate"}});var Sf={};A(Sf,{candleSeries:()=>$c,lineSegments:()=>Ec});function Ec(s,e,t){let o=[],n=null,r=!1;for(let i of s){let a=i.values[e];if(a==null||!Number.isFinite(a)){r=!0;continue}n&&o.push({from:n,to:i,gap:r||i.t-n.t>t*1.5}),n=i,r=!1}return o}function xf(s,e,t){let o=new Map,n=e===7*864e5?4*864e5:0;for(let a of[...s].sort((l,c)=>l.t-c.t)){let l=Math.floor((a.t-n)/e)*e+n,c=o.get(l);c||(c={t:l,end:l+e,values:[],volume:null,ask:null,partial:!1},o.set(l,c));for(let[h,p]of a.values.entries())p!==null&&Number.isFinite(p)&&(c.values[h]=p);a.volume!==null&&a.volume!==void 0&&Number.isFinite(a.volume)&&(c.volume=(c.volume??0)+a.volume);let d=a.ask;d&&(c.ask?(c.ask.high=Math.max(c.ask.high,d.high),c.ask.low=Math.min(c.ask.low,d.low),c.ask.close=d.close,c.ask.samples+=d.samples):c.ask={...d})}let r=Math.min(...s.map(a=>a.t)),i=Math.max(...s.map(a=>a.t+t));for(let a of o.values())a.partial=a.ti||(a.end??0)>Date.now();return[...o.values()]}function $c(s,e){let t=e,o=xf(s,t,e),n=a=>{let l=a.filter(c=>c.ask);return{count:l.length,share:l.filter(c=>(c.ask?.samples??0)>1).length/Math.max(1,l.length)}},r=n(o);for(let a of Fy.filter(l=>l>e)){if(r.share>=.6||r.count<2)break;let l=xf(s,a,e),c=n(l);c.count<2||c.share<=r.share||(t=a,o=l,r=c)}let i=t>=864e5?`${t/864e5}D`:`${t/36e5}h`;return{points:o,stepMs:t,label:i}}var Fy,Sr=w(()=>{"use strict";Fy=[36e5,144e5,432e5,864e5,6048e5]});var Ef={};A(Ef,{itemView:()=>Cc});function qy(s,e){let t=Ut[s.rarity]?.name??"items",o=[`Nobody has sold, traded or listed this item where Kute could see it, so ${s.method==="floor"?"the number above is only what the game pays on quick sell":"the number above is Krunker's own estimate"}. It can be worth far more.`];if(e&&e.pricedItems>=5&&e.low!==null&&e.high!==null&&o.push(`For reference, ${t} items with recent sales mostly went for ${T(e.low)} to ${T(e.high)} KR (middle half of ${e.pricedItems} items). Rare items of the same rarity can be worth many times that.`),e&&e.krunkerItems>=5&&e.krunkerRatio!==null){let n=Math.abs(e.krunkerRatio-1)<.1?"close to their real sale prices":`${e.krunkerRatio<1?"above":"below"} their real sale prices (ratio ${e.krunkerRatio})`;o.push(`Where ${t} items do sell, Krunker's estimate sits ${n}, but it is missing for most items without sales.`)}return`
              ${o.map(S).join("
              ")}
              `}async function Cc(s){let e=s.itemState(),t=!e.candles&&e.range==="7D"?"1M":e.range,o=await W.itemDesk(e.skin,t);t!==e.range&&o?.history&&!o.history.points.some(B=>B.t>=Date.now()-7*864e5&&B.avg!==null)&&(t=e.range,o=await W.itemDesk(e.skin,t)??o);let{item:n,history:r,listings:i}=o??{};if(!n)return s.unavailable();let a=n.skin,l=n.evidence,c=Se().some(B=>B.skin===a.skin),d=l?.dailyRange,h=l?`${l.sales} sales across ${l.days} trading days in 30D`:`${n.liquidity.sales30d} sales in 30 days`,p=a.exchange?.status==="applied"?`${a.exchange.reports} eligible private exchanges${a.method.startsWith("sales")?" + public sales":"; tentative when sparse"}`:h,m=l?.reasons??[p,`The estimate is based on ${a.method.startsWith("sales")?"historical sales aggregates":"limited market evidence"}.`],f=[{label:r?.resolution==="hour"?"Lowest observed ask":"Daily average sale",color:"#f580b4"}];e.overlay!=="none"&&f.push({label:{fair:"Kute estimate",lowest:"Lowest observed ask",krunker:"Krunker estimate"}[e.overlay]??"Comparison",color:"#87b8f7"});let g=(r?.points??[]).filter(B=>t===e.range||B.t>=Date.now()-7*864e5).map(B=>({t:B.t,values:[r?.resolution==="hour"?B.lowest:B.avg,...f.length>1?[{fair:B.fair,lowest:B.lowest,krunker:B.krunker}[e.overlay]??null]:[]],volume:r?.resolution==="day"&&B.salesObserved!==!1?B.sales:null,ask:B.ask})),b=r?.resolution==="hour"?36e5:864e5,v=e.candles?$c(g,b):null;v&&({points:g,stepMs:b}=v);let k="Daily average completed-sale prices. Today's point, when present, is incomplete. Dashed connections cross missing observations; they do not supply prices for those dates.";r?.resolution==="hour"&&(k="Intraday lines show sampled asks. Dashed connections cross unsampled periods. Official sales data is daily; individual transaction timing is unavailable."),v&&(k=`Auto interval: ${v.label}. Sparse quotes use larger intervals when they can support multiple candles. Green and red show rising and falling sampled asks; gray ticks show one quote or an unchanged close. Empty intervals remain empty. These are asking-price candles, not transaction candles.`);let E=Math.max(8,Math.ceil(g.length/e.zoom)),L=Math.max(1,Math.floor(E/2)),y=(i?.listings??[]).slice(0,s.advanced?250:5),C=i?.observedAt??l?.bookAt,I=!C||Date.now()-C>3*36e5,_=i?.highest,H="Unavailable",G="No available quote";_===null?H="None observed":_!==void 0&&(H=P` ${T(_)} KR `,G=`Sampled ask, not a sale price${I?" · quote needs updating":""}`);let J=B=>P` @@ -538,7 +539,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
              `;return{item:n,listings:i,asOf:a.valuedAt??n.asOf,points:r?g:void 0,series:f,chartOptions:{candles:e.candles,volume:r?.resolution==="day",zoom:e.zoom,stepMs:b,connectGaps:!0,offset:e.offset},html:P`
              @@ -548,14 +549,14 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
              - ${S(bo[a.rarity]?.name)} · - ${S(Et[a.type])}${a.season?` · Season ${a.season}`:""} + ${S(Ut[a.rarity]?.name)} · + ${S($t[a.type])}${a.season?` · Season ${a.season}`:""}

              ${S(a.name)}

              - ${S(Wl(a))} + ${S(Jl(a))} · - ${S(Gs(a))} + ${S(Vs(a))}

              @@ -566,20 +567,18 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
              `+P`
              - ${ne("Kute estimate",P` - ${T(a.fair)} - KR - `,S(p))}${ne("Lowest observed ask",a.lowest===null?"None listed":P` + ${ne("Kute estimate",at(a,' KR'),S(p))}${ne("Lowest observed ask",a.lowest===null?"None listed":P` ${T(a.lowest)} KR `,a.spread!==null?ae(a.spread)+` vs estimate${I?" · quote needs updating":""}`:"No available quote")}${ne("Highest observed ask",H,G)}${ne("Sales in the last 7 days",String(a.sales7d),`${a.onS} currently listed · ${T(a.inC)} in circulation`)}
              + ${Wt(a)?qy(a,n.rarityContext):""} `+P`

              Price history

              - ${By.map(B=>P` + ${Dy.map(B=>P` `).join("")}
              @@ -642,7 +641,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del

              ${r?k:""} Dates and times are UTC.

              - `+vc(a,s.advanced)+mc(n.intelligence)+(s.advanced?ac(n)+gc(n.contributions):"")+P` + `+xc(a,s.advanced)+vc(n.intelligence)+(s.advanced?uc(n)+kc(n.contributions):"")+P`
              THE CONTEXT
              @@ -707,7 +706,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del

              Available listings

              ${i?i.total:"Unknown total"} reported - listed${$?` · observed ${We(Date.now()-$)} ago`:" · freshness unknown"} + listed${C?` · observed ${We(Date.now()-C)} ago`:" · freshness unknown"}
              ${I?'
              These quotes need a fresh market observation. A listing may have changed or sold since it was last seen.
              ':""}${s.advanced?P` @@ -842,7 +841,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del

              ${J(n.instances.serial)}${J(n.instances.wear)}
              - `:"")}}var By,Sc=w(()=>{"use strict";_e();xe();vr();Ve();pe();Ut();wr();en();bc();wc();yr();By=["1D","7D","1M","3M","1Y","ALL"]});var kf={};A(kf,{watchlistView:()=>Ec});async function Ec(s){let e=Se(),t=s.intro("Your eye on the market.","Watch prices and set targets. Your list is saved only on this device.",'');if(!e.length)return{html:t+'
              '+fe("Start with something you like","Open an item and choose Watch item. It will appear here with its latest estimate and asking price.",'')+"
              "};let o=e.filter(a=>a.rarity===void 0);if(o.length){let a=await Promise.all(o.map(l=>W.cached(`/market/item/${l.skin}`,3e5)));o.forEach((l,c)=>{let d=a[c]?.skin?.rarity;Number.isInteger(d)&&(l.rarity=d)}),o.some(l=>l.rarity!==void 0)&&wo(e)}let n=await W.values(e.map(a=>a.skin)),r=new Set($t.unread);queueMicrotask(()=>$t.markRead());let i=Math.min(...Object.values(n).flatMap(a=>a.valuedAt?[a.valuedAt]:[]));return{asOf:Number.isFinite(i)?i:void 0,html:t+P` + `:"")}}var Dy,Mc=w(()=>{"use strict";Be();xe();kr();Ve();pe();Vt();yr();on();yc();Sc();Sr();Dy=["1D","7D","1M","3M","1Y","ALL"]});var $f={};A($f,{watchlistView:()=>Tc});async function Tc(s){let e=Se(),t=s.intro("Your eye on the market.","Watch prices and set targets. Your list is saved only on this device.",'');if(!e.length)return{html:t+'
              '+fe("Start with something you like","Open an item and choose Watch item. It will appear here with its latest estimate and asking price.",'')+"
              "};let o=e.filter(a=>a.rarity===void 0);if(o.length){let a=await Promise.all(o.map(l=>W.cached(`/market/item/${l.skin}`,3e5)));o.forEach((l,c)=>{let d=a[c]?.skin?.rarity;Number.isInteger(d)&&(l.rarity=d)}),o.some(l=>l.rarity!==void 0)&&yo(e)}let n=await W.values(e.map(a=>a.skin)),r=new Set(Ct.unread);queueMicrotask(()=>Ct.markRead());let i=Math.min(...Object.values(n).flatMap(a=>a.valuedAt?[a.valuedAt]:[]));return{asOf:Number.isFinite(i)?i:void 0,html:t+P`
              @@ -861,7 +860,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del - + - - + + ${s.advanced?P` @@ -1075,7 +1079,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
              ${T(l?.fair)}${at(l)} ${T(l?.lowest)} sf;)this.sent.del Targets compare against the latest observed ask. Check the item page for listing freshness. Target alerts are checked in the menu, never during gameplay.

              - `}}var $c=w(()=>{"use strict";_e();xe();pe();Ut();fr()});var yf={};A(yf,{moversView:()=>Cc});async function Cc(s){let e=typeof s.arg=="string"?s.arg:"7D",t=await W.cached(`/market/movers?window=${e}`,5*zy);if(!t)return s.unavailable();let o=n=>P` + `}}var Ac=w(()=>{"use strict";Be();xe();pe();Vt();br()});var Cf={};A(Cf,{moversView:()=>Lc});async function Lc(s){let e=typeof s.arg=="string"?s.arg:"7D",t=await W.cached(`/market/movers?window=${e}`,5*Ky);if(!t)return s.unavailable();let o=n=>P`
              ${n.slice(0,10).map(r=>P`
              - `}}var zy,Mc=w(()=>{"use strict";_e();xe();pe();zy=6e4});var xf={};A(xf,{dealsView:()=>Tc});async function Tc(s){let e=s.arg?.budget??"",t=P` + `}}var Ky,Rc=w(()=>{"use strict";Be();xe();pe();Ky=6e4});var Mf={};A(Mf,{dealsView:()=>Pc});async function Pc(s){let e=s.arg?.budget??"",t=P`
              sf;)this.sent.del />
              - `,o=await W.cached(`/market/deals?min_grade=C&limit=100&budget=${encodeURIComponent(e)}`,Hy);return o?{asOf:o.asOf,asOfLabel:"Quotes observed",html:s.intro("Worth a closer look.","Observed asks below a sales-based estimate. Inspect the evidence before deciding.")+t+(o.deals.length?P` + `,o=await W.cached(`/market/deals?min_grade=C&limit=100&budget=${encodeURIComponent(e)}`,jy);return o?{asOf:o.asOf,asOfLabel:"Quotes observed",html:s.intro("Worth a closer look.","Observed asks below a sales-based estimate. Inspect the evidence before deciding.")+t+(o.deals.length?P`
              @@ -954,7 +953,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${o.deals.map(n=>P` - + @@ -971,7 +970,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del recent lower prices, unstable prices, supply changes and concentrated listings. Quotes older than three hours are excluded; availability can still change.

              - `:'
              '+fe("No supported candidates right now","The scanner only includes sales-based estimates with sufficient activity and a meaningful discount. Your watchlist can track specific items in the meantime.",'')+"
              ")}:s.unavailable()}var Hy,Ac=w(()=>{"use strict";_e();xe();pe();en();Hy=6e4});var Sf={};A(Sf,{indicesView:()=>Lc});async function Lc(s){let e=await W.cached("/market/indices",60*Oy);if(!e)return s.unavailable();let t=e.indices.find(o=>o.name===s.arg)??e.indices.find(o=>o.name==="kute-100")??e.indices[0];return{asOf:e.asOf,html:s.intro("The wider picture.","Equal-weighted indices of eligible items. Base 100 at launch, rebalanced monthly.",'')+P` + `:'
              '+fe("No supported candidates right now","The scanner only includes sales-based estimates with sufficient activity and a meaningful discount. Your watchlist can track specific items in the meantime.",'')+"
              ")}:s.unavailable()}var jy,Ic=w(()=>{"use strict";Be();xe();pe();on();jy=6e4});var Tf={};A(Tf,{indicesView:()=>Nc});async function Nc(s){let e=await W.cached("/market/indices",60*Uy);if(!e)return s.unavailable();let t=e.indices.find(o=>o.name===s.arg)??e.indices.find(o=>o.name==="kute-100")??e.indices[0];return{asOf:e.asOf,html:s.intro("The wider picture.","Equal-weighted indices of eligible items. Base 100 at launch, rebalanced monthly.",'')+P`

              ${S(t?.name??"Index history")}

              @@ -1004,12 +1003,12 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
              ${me(n)}${hc(n)}${me(n)}${bc(n)} ${T(n.price)} ${T(n.fair)} ${Math.round(n.discount*100)}%
              - `,points:(t?.series??[]).map(o=>({t:Date.parse(o.day+"T00:00:00Z"),values:[o.value]})),series:[{label:t?.name??"Index",color:"#f580b4"}]}}var Oy,Rc=w(()=>{"use strict";_e();xe();pe();Oy=6e4});var Ef={};A(Ef,{portfolioView:()=>Pc});async function Pc(s){let e=typeof s.arg=="string"?s.arg:"";if(!e)try{e=localStorage.getItem("krunker_username")??""}catch{e=""}let t=s.intro("Know what you hold.","A view of today's holdings, their estimated value, and where it is concentrated."),o=P` + `,points:(t?.series??[]).map(o=>({t:Date.parse(o.day+"T00:00:00Z"),values:[o.value]})),series:[{label:t?.name??"Index",color:"#f580b4"}]}}var Uy,_c=w(()=>{"use strict";Be();xe();pe();Uy=6e4});var Af={};A(Af,{portfolioView:()=>Bc});async function Bc(s){let e=typeof s.arg=="string"?s.arg:"";if(!e)try{e=localStorage.getItem("krunker_username")??""}catch{e=""}let t=s.intro("Know what you hold.","A view of today's holdings, their estimated value, and where it is concentrated."),o=P`
              - `;if(!e)return{html:t+o+fe("Choose an inventory","Enter a username to value its public inventory.")};let n=await W.cached(`/market/portfolio?name=${encodeURIComponent(e)}`,5*Dy);if(!n)return{html:t+o+fe("Inventory is unavailable","The player may not exist, or their inventory could not be loaded.",'')};let r=new Map(n.historyCoverage?.map(h=>[h.day,h])??[]),i=n.historyBasket,a=i?.series??n.series,l=i&&i.itemsTry again')};let r=new Map(n.historyCoverage?.map(h=>[h.day,h])??[]),i=n.historyBasket,a=i?.series??n.series,l=i&&i.items

              ${S(c)} Historical prices applied to what you own today; this is not personal profit. Marks expire after @@ -1020,7 +1019,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${ne("Estimated inventory value",P` ${T(n.totalValue)} KR - `,`${n.items.length} valued item types`)}${ne("In more active items",P` + `,`${n.items.length-(n.noEvidenceItems??0)} valued item types`)}${ne("In more active items",P` ${Math.round(n.liquidShare*100)} % `,"Share in activity grades A to C")}${ne("Largest two positions",P` @@ -1033,6 +1032,11 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${n.limitedEvidenceItems} item types (${T(n.limitedEvidenceValue)} KR of the total) have limited sales evidence or use fallback estimates. + `:""}${n.noEvidenceItems?P` +

              + ${n.noEvidenceItems} item types have no price evidence and are not in the total. At the quick-sell floor or + Krunker's estimate they would add ${T(n.noEvidenceReference??0)} KR, but such items are often worth far more. +
              `:""}${n.unvaluedItems?P`
              ${n.unvaluedItems} item types have no usable valuation and are excluded from the total.
              `:""} @@ -1044,7 +1048,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${d}
              - ${ko("kmHoldingFilter","holdings","Filter your holdings",s.portfolioFilter)} + ${xo("kmHoldingFilter","holdings","Filter your holdings",s.portfolioFilter)} Largest positions first
              @@ -1064,8 +1068,8 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
              ${me(h)} ${h.count}${T(h.fair)}${T(h.value)}${at(h)}${h.noEvidence?'Not counted':T(h.value)} ${ae(h.trend7d)}${S(h.grade)}
              - `,points:a.map(h=>({t:Date.parse(h.day+"T00:00:00Z"),values:[!i&&r.has(h.day)&&r.get(h.day)?.priced!==r.get(h.day)?.total?null:h.value]})),series:[{label:"Covered holdings at historical prices",color:"#f580b4"}]}}var Dy,Ic=w(()=>{"use strict";_e();xe();pe();Ko();Dy=6e4});var $f={};A($f,{analyzeView:()=>Nc});async function Nc(s){let{analyzer:e}=s,t=!!(e.give.length||e.get.length||e.giveKr||e.getKr),o=t?await W.analyze({give:e.give.map(({skin:i,count:a})=>({skin:i,count:a})),get:e.get.map(({skin:i,count:a})=>({skin:i,count:a})),giveKr:e.giveKr,getKr:e.getKr}):null,n=i=>{let a=o?.[i],l=i==="give"?e.giveKr:e.getKr,c=a?.items.some(p=>p.unknown)??!1,d=e[i].reduce((p,m)=>p+m.count,0),h=t?"Unavailable":"0";return a&&(h=T(a.value)),P` + `,points:a.map(h=>({t:Date.parse(h.day+"T00:00:00Z"),values:[!i&&r.has(h.day)&&r.get(h.day)?.priced!==r.get(h.day)?.total?null:h.value]})),series:[{label:"Covered holdings at historical prices",color:"#f580b4"}]}}var Gy,zc=w(()=>{"use strict";Be();xe();pe();Uo();Gy=6e4});var Lf={};A(Lf,{analyzeView:()=>Hc});async function Hc(s){let{analyzer:e}=s,t=!!(e.give.length||e.get.length||e.giveKr||e.getKr),o=t?await W.analyze({give:e.give.map(({skin:i,count:a})=>({skin:i,count:a})),get:e.get.map(({skin:i,count:a})=>({skin:i,count:a})),giveKr:e.giveKr,getKr:e.getKr}):null,n=i=>{let a=o?.[i],l=i==="give"?e.giveKr:e.getKr,c=a?.items.some(p=>p.unknown)??!1,d=e[i].reduce((p,m)=>p+m.count,0),h=t?"Unavailable":"0";return a&&(h=T(a.value)),P`

              ${i==="give"?"You give":"You receive"}

              @@ -1088,7 +1092,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${c?"Partial estimate. Unvalued items excluded.":"Estimated value, including KR"}
              - ${ko(`kmPick${i}`,i,"Add an item...")} + ${xo(`kmPick${i}`,i,"Add an item...")}
              ${e[i].length?e[i].map((p,m)=>{let f=a?.items.find(b=>b.skin===p.skin),g=f&&!f.unknown?T(f.lineValue)+" KR":"Value unavailable";return P`
              @@ -1104,7 +1108,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
              ${g} - ${f&&!f.unknown?`${T(f.fair)} KR each`:"Needs more evidence"} + ${f?Xl(f):"Needs more evidence"}
              - `),o){let i=Us(o.verdict),a=jt[i].label,l={good:"positive",bad:"negative",fair:"",uncertain:""}[i];r=P` + `),o){let i=Ws(o.verdict),a=Gt[i].label,l={good:"positive",bad:"negative",fair:"",uncertain:""}[i];r=P`
              THE DIFFERENCE
              ${a}
              - ${jt[i].detail} + ${Gt[i].detail}
              @@ -1177,7 +1181,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del `}return{asOf:o?.asOf,html:s.intro("Compare the trade.","Your items on the left, theirs on the right. Add KR to either side.",'')+P`
              ${n("give")}${n("get")}
              ${r}
              - `}}var _c=w(()=>{"use strict";_e();xe();pe();Ko()});var Cf={};A(Cf,{researchView:()=>Bc});async function Bc(s){let e=typeof s.arg=="string"?s.arg:"",t=await W.cached(`/market/intelligence?kind=${encodeURIComponent(e)}`,Fy);return t?{asOf:t.asOf,asOfLabel:"Analyzed",html:fc(t,e,s.advanced,Se().map(o=>o.skin))}:s.unavailable()}var Fy,zc=w(()=>{"use strict";xe();Ut();en();Fy=6e4});var Mf={};A(Mf,{introView:()=>tn});function tn(s,e,t,o=""){let n=Fo("h1",{},e),r=Fo("p",{class:"sub"},t);return Fo("div",{class:"pageIntro"},Xs(Fo("div",{},Xs(n+r))),Xs(o))}var xr=w(()=>{"use strict";_e()});var Tf={};A(Tf,{tableView:()=>Hc});function Hc(s,e){return e.length?P` + `}}var Oc=w(()=>{"use strict";Be();xe();pe();Uo()});var Rf={};A(Rf,{researchView:()=>Fc});async function Fc(s){let e=typeof s.arg=="string"?s.arg:"",t=await W.cached(`/market/intelligence?kind=${encodeURIComponent(e)}`,Wy);return t?{asOf:t.asOf,asOfLabel:"Analyzed",html:wc(t,e,s.advanced,Se().map(o=>o.skin))}:s.unavailable()}var Wy,Dc=w(()=>{"use strict";xe();Vt();on();Wy=6e4});var Pf={};A(Pf,{introView:()=>sn});function sn(s,e,t,o=""){let n=Ko("h1",{},e),r=Ko("p",{class:"sub"},t);return Ko("div",{class:"pageIntro"},Zs(Ko("div",{},Zs(n+r))),Zs(o))}var Er=w(()=>{"use strict";Be()});var If={};A(If,{tableView:()=>qc});function qc(s,e){return e.length?P`
              @@ -1195,8 +1199,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${s.advanced?P` - + `:""} `).join("")}
              ${me(t)} - ${T(t.fair)} - KR + ${at(t," KR")} ${t.lowest===null?"No listings":T(t.lowest)} @@ -1210,35 +1213,34 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${t.onS}${S(Gs(t))}${S(Vs(t))}
              - `:fe("No matching items","Try a wider budget or fewer filters.")}var Oc=w(()=>{"use strict";_e();Ve();pe()});var Af={};A(Af,{compactListView:()=>Dc});function Dc(s,e){return P` + `:fe("No matching items","Try a wider budget or fewer filters.")}var Kc=w(()=>{"use strict";Be();Ve();pe()});var Nf={};A(Nf,{compactListView:()=>jc});function jc(s,e){return P`
              ${e.map(t=>P` `).join("")}
              - `}var Fc=w(()=>{"use strict";_e();pe()});var Rf,Lf=w(()=>{Rf=`

              The numbers

              K
              Kute estimate

              What the item is worth, from recent sales and trades.

              Ask
              Lowest ask

              The cheapest listing right now.

              %
              Ask vs estimate

              Plus means the ask is above the estimate, minus means below.

              0-100
              Evidence score

              How much data backs the estimate. Low means take it with a grain of salt.

              Activity grades

              A
              Very active

              Sells often, easy to get rid of.

              B
              Active

              Sells regularly.

              C
              Moderate

              Might take a while or a lower price.

              D
              Thin

              Few sales, hard to sell.

              F
              Very limited

              Barely trades, the estimate is a rough guess.

              Trade verdicts

              +
              Favorable

              You get more value than you give.

              =
              Fair

              Both sides are about even.

              -
              Unfavorable

              You give more value than you get.

              ?
              Not enough evidence

              Some items can't be valued well enough to say.

              Estimates, not promises. Kute never buys, sells or trades for you.

              `});var Pf={};A(Pf,{helpView:()=>qc});function qc(s){return{html:tn(s,"How it works.","What the numbers mean.")+Rf}}var Kc=w(()=>{"use strict";Lf();xr()});var If={};A(If,{default:()=>jo});var jo,jc=w(()=>{"use strict";pe();yr();jo=class{constructor(e,t,o,n={}){this.host=e,this.points=t,this.series=o,this.options=n,this.observer=new ResizeObserver(r=>this.draw(r[0]?.contentRect.width??700)),this.observer.observe(e),this.draw(e.clientWidth||700)}destroy(){this.observer.disconnect(),this.host.replaceChildren()}draw(e){let{host:t,series:o,options:n}=this,r=Math.max(8,Math.ceil(this.points.length/(n.zoom??1))),i=Math.max(Math.min(r,this.points.length),this.points.length-(n.offset??0)),a=this.points.slice(Math.max(0,i-r),i),l=!!n.candles,c=a.flatMap(j=>l?[...j.ask?[j.ask.low,j.ask.high]:[],...j.values.slice(1)]:j.values).flatMap(j=>j!==null&&Number.isFinite(j)?[j]:[]);if(!c.length){t.innerHTML=`
              ${l?"No sampled asking-price candles in this period. Try a longer range or switch to the line chart.":"No price observations in this period. Try a longer range."}
              `;return}let d=Math.max(280,e),h=270,p=62,m=d-16,f=20,g=n.volume?196:230,b=Math.min(...c),v=Math.max(...c),k=v-b||Math.max(1,v*.1),E=Math.max(0,b-k*.12),L=v+k*.12,x=a[0].t,I=((l?a.at(-1)?.end:a.at(-1)?.t)??x)-x||864e5,_=j=>p+(j-x)/I*(m-p),H=j=>g-(j-E)/(L-E)*(g-f),G=j=>l&&j.end?(j.t+j.end)/2:j.t,J=n.stepMs??864e5,B=o.map((j,X)=>kc(a,X,J)),re="";for(let j=0;j<=4;j++){let X=E+(L-E)*j/4,Y=L-E<10?X.toFixed(2):T(X);re+=`${S(Y)}`}for(let j=0;j<=4;j++){let X=x+I*j/4,Y=new Date(X),y=I<=2*864e5?Y.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",timeZone:"UTC"}):Y.toLocaleDateString([],{month:"short",day:"numeric",timeZone:"UTC"}),C="middle";j===0&&(C="start"),j===4&&(C="end"),re+=`${S(y)}`}if(n.volume){let j=Math.max(1,...a.map(Y=>Y.volume??0)),X=Math.max(1,Math.min(14,(m-p)/Math.max(1,a.length)*.6));re+=a.filter(Y=>Y.volume!==null&&Y.volume!==void 0).map(Y=>``).join("")}if(l){let j=Math.max(3,Math.min(14,(m-p)*J/I*.65));for(let X of a){let Y=X.ask;if(!Y)continue;let y="flat",C="#9698a7";Y.samples<=1?y="single":Y.close!==Y.open&&(y=Y.close>Y.open?"up":"down",C=Y.close>Y.open?"#71d9b0":"#f68c9b");let R=_(G(X));re+=``,Y.samples>1&&(re+=``),y==="single"||y==="flat"?re+=``:re+=``,re+=""}}for(let[j,X]of o.entries()){if(l&&j===0)continue;let Y="",y="";for(let C of B[j]){let R=`M${_(G(C.from))},${H(C.from.values[j])} L${_(G(C.to))},${H(C.to.values[j])} `;C.gap?n.connectGaps&&(y+=R):Y+=R}for(let C of a){let R=C.values[j];R==null||!Number.isFinite(R)||(re+=``)}re+=``,y&&(re+=``)}t.innerHTML=`j.label).join(", "))}">${re}`;let je=t.querySelector("svg"),be=t.querySelector(".chartTooltip"),Ee=t.querySelector(".crosshair");je.addEventListener("pointermove",j=>{let X=je.getBoundingClientRect(),Y=(j.clientX-X.left)*d/X.width,y=x+(Y-p)/(m-p)*I,C=a.find(Z=>l&&Z.end&&y>=Z.t&&yMath.abs(G(ge)-y)Z.gap&&_(Z.from.t)+5=C.end),z=C.ask,N=o.map((Z,ge)=>`${S(Z.label)} ${T(C.values[ge])}`).join("
              ");l&&(N="No quote in this bucket",z?.samples===1&&!K?N=`Observed ask ${T(z.close)}
              1 sampled quote; direction unknown`:z&&!K&&(N=`Open ${T(z.open)} · High ${T(z.high)}
              Low ${T(z.low)} · Close ${T(z.close)}
              ${S(z.samples)} sampled quotes`),C.partial&&!K&&(N+="
              Partial interval")),l&&!K&&o.length>1&&(N+="
              Last observed in interval:
              "+o.slice(1).map((Z,ge)=>`${S(Z.label)} ${T(C.values[ge+1])}`).join("
              ")),R&&(N="No price observation in this gap.
              Dashed line connects recorded values.");let V=Z=>new Date(Z).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",timeZone:"UTC"}),de=V(R||K?y:C.t);l&&C.end&&!K&&(de=`${V(C.t)} to ${V(C.end)}`),be.innerHTML=`${S(de)} UTC
              ${N}${!R&&!K&&n.volume&&C.volume!==null&&C.volume!==void 0?`
              Reported sales ${C.volume}`:""}`,be.hidden=!1,be.style.left=`${Math.max(0,Math.min(Y+14,d-240))}px`,Ee.setAttribute("x1",String(R||K?Y:_(G(C)))),Ee.setAttribute("x2",String(R||K?Y:_(G(C)))),Ee.setAttribute("visibility","visible")}),je.addEventListener("pointerleave",()=>{be.hidden=!0,Ee.setAttribute("visibility","hidden")})}}});var Nf=we((oE,Ky)=>{Ky.exports=' '});var Uc={};A(Uc,{Terminal:()=>Er,default:()=>Uy});var _f,Bf,Sr,zf,Hf,yo,Er,jy,Uy,Gc=w(()=>{"use strict";D();vr();dc();pc();Sc();$c();Mc();Ac();Rc();Ic();_c();zc();xr();Oc();Fc();Kc();xe();Ve();pe();Ut();jc();Ko();_f="kute_market_advanced",Bf="kute_market_layout",Sr=[.8,.9,1,1.1,1.2,1.35,1.5],zf=480,Hf=360,yo=()=>({q:"",rarity:"",type:"",sort:"volume",page:1,budget:"",minSales:""}),Er=class{constructor(){this.overlay=null,this.shadow=null,this.controller=null,this.chart=null,this.returnFocus=null,this.tab="overview",this.discoveryTab="search",this.arg=void 0,this.generation=0,this.advanced=!1,this.view=null,this.saved=new Map,this.previous="search",this.portfolioFilter="",this.itemSearch=null,this.holdings=[],this.tradeRevision=0,this.analyzer={give:[],get:[],giveKr:0,getKr:0};try{this.advanced=localStorage.getItem(_f)==="1"}catch{this.advanced=!1}this.layout={width:0,height:0,scale:1,maximized:!1};try{let e=JSON.parse(localStorage.getItem(Bf)??"{}");Number.isFinite(e.width)&&(this.layout.width=e.width),Number.isFinite(e.height)&&(this.layout.height=e.height),Sr.includes(e.scale)&&(this.layout.scale=e.scale),this.layout.maximized=e.maximized===!0}catch{}}frame(){return this.shadow?.querySelector("#km")??null}applyLayout(){let e=this.frame();if(!e)return;let{scale:t,maximized:o}=this.layout,n=window.innerWidth-(o?0:16),r=window.innerHeight-(o?0:16),i=o?n:Math.max(Math.min(zf,n),Math.min(this.layout.width||Math.min(1320,window.innerWidth*.96),n)),a=o?r:Math.max(Math.min(Hf,r),Math.min(this.layout.height||Math.min(880,window.innerHeight*.92),r));e.style.zoom=String(t),e.style.width=`${i/t}px`,e.style.height=`${a/t}px`,e.classList.toggle("maximized",o);let l=this.shadow?.querySelector("#kmMaximize");l?.setAttribute("aria-pressed",String(o)),l?.setAttribute("title",o?"Restore size (double-click the header)":"Maximize (double-click the header)");let c=this.shadow?.querySelector("#kmScaleValue");c&&(c.textContent=`${Math.round(t*100)}%`)}saveLayout(){this.applyLayout();try{localStorage.setItem(Bf,JSON.stringify(this.layout))}catch{}}rescale(e){let t=Sr.indexOf(this.layout.scale);this.layout.scale=e?Sr[Math.max(0,Math.min(Sr.length-1,t+e))]:1,this.saveLayout()}toggleMaximized(){this.layout.maximized=!this.layout.maximized,this.saveLayout()}startResize(e){let{target:t}=e,o=this.frame();if(!(t instanceof HTMLElement)||!o||e.button!==0)return;let{grip:n}=t.dataset;if(!n)return;e.preventDefault(),t.setPointerCapture(e.pointerId);let r=o.getBoundingClientRect(),{clientX:i,clientY:a}=e,l=Number(n.includes("e"))-Number(n.includes("w")),c=Number(n.includes("s"))-Number(n.includes("n"));o.classList.add("resizing");let d=p=>{l&&(this.layout.width=Math.max(zf,r.width+2*l*(p.clientX-i))),c&&(this.layout.height=Math.max(Hf,r.height+2*c*(p.clientY-a))),this.applyLayout()},h=()=>{t.removeEventListener("pointermove",d),o.classList.remove("resizing"),this.layout.width=Math.round(Math.min(this.layout.width,window.innerWidth-16)),this.layout.height=Math.round(Math.min(this.layout.height,window.innerHeight-16)),this.saveLayout()};t.addEventListener("pointermove",d),t.addEventListener("lostpointercapture",h,{once:!0})}async open(e,t){if(!document.pointerLockElement){if(!this.overlay){let o=await Promise.resolve().then(()=>ue(Nf(),1)).catch(()=>null);if(!o||document.pointerLockElement)return;if(this.overlay){await this.show(e??this.tab,t);return}this.returnFocus=document.activeElement instanceof HTMLElement?document.activeElement:null;let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483647;display:grid;place-items:center;background:rgba(7,8,13,.78)";let r=document.createElement("div");n.append(r),this.shadow=r.attachShadow({mode:"open"}),this.shadow.innerHTML=o.default,this.overlay=n,this.controller=new AbortController;let{signal:i}=this.controller;document.body.append(n),this.applyLayout(),window.addEventListener("resize",()=>this.applyLayout(),{signal:i}),this.shadow.addEventListener("pointerdown",l=>this.startResize(l),{signal:i}),this.shadow.querySelector(".kmHead")?.addEventListener("dblclick",l=>{l.target instanceof Element&&!l.target.closest("button,input,label,form")&&this.toggleMaximized()},{signal:i}),this.itemSearch=new qo(this.shadow,i,(l,c)=>this.selectItem(l,c),(l,c)=>this.show(c==="discover"?this.searchTab():"search",{...c==="discover"?this.readFilters(1):yo(),q:l,page:1}),()=>this.holdings),this.shadow.addEventListener("click",l=>this.click(l),{signal:i}),this.shadow.addEventListener("change",l=>this.changed(l),{signal:i}),this.shadow.addEventListener("input",l=>this.input(l),{signal:i}),this.shadow.querySelector("#kmSearchForm")?.addEventListener("submit",l=>{l.preventDefault(),this.show("search",{...yo(),q:this.value("#kmGlobalSearch")})},{signal:i}),n.addEventListener("click",l=>{l.target===n&&this.close()},{signal:i}),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&this.close()},{signal:i}),document.addEventListener("keydown",l=>this.key(l),{signal:i,capture:!0});let a=this.shadow.querySelector("#kmAdvanced");a.checked=this.advanced,this.shadow.querySelector("#kmGlobalSearch")?.focus()}await this.show(e??this.tab,t)}}close(){this.remember(),this.controller?.abort(),this.controller=null,this.itemSearch=null,this.chart?.destroy(),this.chart=null,this.overlay?.remove(),this.overlay=null,this.shadow=null,this.generation++,this.returnFocus?.focus({preventScroll:!0})}remember(){let e=this.shadow?.querySelector("#kmBody");this.tab==="item"&&(this.arg=this.itemState()),(this.tab==="search"||this.tab==="active")&&this.shadow?.querySelector("#kmQ")&&(this.arg=this.readFilters(this.searchState().page)),this.tab==="deals"&&this.shadow?.querySelector("#kmDealBudget")&&(this.arg={budget:this.value("#kmDealBudget")}),e&&this.saved.set(this.tab,{arg:this.arg,scroll:e.scrollTop})}value(e){return this.shadow?.querySelector(e)?.value??""}searchState(){let e={...yo(),...this.tab==="active"?{minSales:"1",sort:"liquidity"}:{},...typeof this.arg=="object"&&this.arg?this.arg:{}};return this.tab==="active"&&(e.minSales=String(Math.max(1,Number(e.minSales)||1))),e}searchTab(){return this.tab==="active"?"active":"search"}itemState(){let e={skin:typeof this.arg=="number"?this.arg:0,range:"1M",candles:!1,overlay:"none",zoom:1,offset:0,...typeof this.arg=="object"&&this.arg?this.arg:{}};if(this.view?.item?.skin.skin===e.skin)for(let[t,o]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"}))this.shadow?.querySelector("#"+o)&&Object.assign(e,{[t]:this.value("#"+o)});return e}async show(e,t,o=!1){if(!this.shadow)return;this.remember(),e==="item"&&this.tab!=="item"&&(this.previous=this.tab);let n=this.saved.get(this.tab)?.scroll??0,r=this.saved.get(e);this.tab=e,this.arg=t===void 0?r?.arg:t;let i=++this.generation;this.itemSearch?.dismiss(),this.chart?.destroy(),this.chart=null;let a=this.shadow.querySelector("#kmBody"),l=br.includes(e);l&&(this.discoveryTab=e);let c=this.shadow.querySelector("#kmDiscoverTabs");c.hidden=!l;for(let p of c.querySelectorAll("button")){let m=p.dataset.discover===e;p.setAttribute("aria-selected",String(m)),p.tabIndex=m?0:-1}l?(a.setAttribute("role","tabpanel"),a.setAttribute("aria-labelledby",`kmDiscover-${e}`)):(a.removeAttribute("role"),a.removeAttribute("aria-labelledby")),a.setAttribute("aria-busy","true"),a.innerHTML=fe("Loading market data","Fetching the latest available observations.");let d=this.shadow.querySelector("#kmTitle");d&&(d.textContent=Ys[e]??"Market");let h=e==="item"?this.previous:e;br.includes(h)&&(h="search"),h==="indices"&&(h="overview");for(let p of this.shadow.querySelectorAll("[data-nav]")){let m=p.dataset.nav===h;p.classList.toggle("on",m),m?p.setAttribute("aria-current","page"):p.removeAttribute("aria-current")}this.updateWatchCount();try{let p=await this.render(e);if(i!==this.generation||!this.shadow)return;this.view=p,this.holdings=p.holdings??[],a.innerHTML=p.html,a.scrollTop=t===void 0?r?.scroll??0:0,o&&(a.scrollTop=n);let m=this.shadow.querySelector("#kmFootRight");m&&(m.textContent=p.asOf?`${p.asOfLabel??"Estimates calculated"} ${We(Math.max(0,Date.now()-p.asOf))} ago`:"Estimates from observed market data");let f=a.querySelector(".chart");if(f&&p.points&&p.series&&(this.chart=new jo(f,p.points,p.series,p.chartOptions)),e==="portfolio"&&this.filterHoldings(),e==="item"){let g=this.arg;for(let[b,v]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"})){let k=a.querySelector("#"+v),E=g?.[b];k&&typeof E=="string"&&(k.value=E)}this.updatePlanner(),this.filterListings()}}catch{if(i!==this.generation)return;a.innerHTML=fe("Market data is unavailable","Try again in a moment. Your saved watchlist stays on this device.",'')}finally{i===this.generation&&a.setAttribute("aria-busy","false")}}updateWatchCount(){let e=this.shadow?.querySelector("#kmWatchCount");e&&(e.textContent=String(Se().length))}async render(e){switch(e){case"overview":return this.overview();case"intelligence":return this.intelligence();case"search":return this.search();case"active":return this.search();case"item":return this.item();case"watchlist":return this.watchlist();case"movers":return this.movers();case"deals":return this.deals();case"indices":return this.indices();case"portfolio":return this.portfolio();case"analyze":return this.analyze();default:return this.help()}}intelligence(){return Bc(this)}unavailable(){return{html:fe("Market data is unavailable",W.lastError||"The market server could not be reached. Try again in a moment.",'')}}intro(e,t,o=""){return tn(this,e,t,o)}table(e){return Hc(this,e)}compactList(e){return Dc(this,e)}overview(){return cc(this)}search(){return uc(this)}item(){return xc(this)}watchlist(){return Ec(this)}movers(){return Cc(this)}deals(){return Tc(this)}indices(){return Lc(this)}portfolio(){return Pc(this)}async selectItem(e,t){if(t!=="give"&&t!=="get"){this.show("item",e.skin);return}let o=this.analyzer[t].find(n=>n.skin===e.skin);o?o.count=Math.min(1e4,o.count+1):this.analyzer[t].push({...e,count:1}),await this.show("analyze",this.arg,!0),this.tab==="analyze"&&this.shadow?.querySelector(`#kmPick${t}`)?.focus({preventScroll:!0})}analyze(){return Nc(this)}async refreshTrade(){let{generation:e}=this,t=++this.tradeRevision;this.shadow?.querySelector("#kmTradeOutcome")?.setAttribute("aria-busy","true");let n=this.shadow?.querySelector("#kmFootRight");n&&(n.textContent="Updating trade estimates...");let r=await this.analyze();if(e!==this.generation||t!==this.tradeRevision||!this.shadow)return;let i=document.createElement("div");i.innerHTML=r.html;for(let a of[".tradeSideHead>span",".tradeTotal",".tradeItemValue","#kmTradeOutcome"]){let l=i.querySelectorAll(a);this.shadow.querySelectorAll(a).forEach((c,d)=>{l[d]&&c.replaceWith(l[d])})}n&&(n.textContent=r.asOf?`Estimates calculated ${We(Math.max(0,Date.now()-r.asOf))} ago`:"Estimates from observed market data"),this.view=r}help(){return qc(this)}updatePlanner(){let e=this.shadow?.querySelector("#kmPlannerResult");if(!e||!this.view?.item)return;let t=Number(this.value("#kmSellPrice")),o=Number(this.value("#kmSellQuantity"));if(!Number.isFinite(t)||t<=0||!Number.isInteger(o)||o<1||o>1e4){e.textContent="Enter a positive asking price and a quantity from 1 to 10,000.";return}let n=this.view.listings;if(!n){e.textContent="Competing listings are unavailable. Try again when market data is available.";return}let r=n?.listings.filter(a=>a.pricen.listings.length;e.innerHTML=`${i?"At least ":""}${r} cheaper listing${r===1?"":"s"} observed${n?"":" (listing data unavailable)"}.
              + `}var Uc=w(()=>{"use strict";Be();pe()});var Bf,_f=w(()=>{Bf=`

              The numbers

              K
              Kute estimate

              What the item is worth, from recent sales and trades.

              Ask
              Lowest ask

              The cheapest listing right now.

              %
              Ask vs estimate

              Plus means the ask is above the estimate, minus means below.

              0-100
              Evidence score

              How much data backs the estimate. Low means take it with a grain of salt.

              Activity grades

              A
              Very active

              Sells often, easy to get rid of.

              B
              Active

              Sells regularly.

              C
              Moderate

              Might take a while or a lower price.

              D
              Thin

              Few sales, hard to sell.

              F
              Very limited

              Barely trades, the estimate is a rough guess.

              Trade verdicts

              +
              Favorable

              You get more value than you give.

              =
              Fair

              Both sides are about even.

              -
              Unfavorable

              You give more value than you get.

              ?
              Not enough evidence

              Some items can't be valued well enough to say.

              Estimates, not promises. Kute never buys, sells or trades for you.

              `});var zf={};A(zf,{helpView:()=>Gc});function Gc(s){return{html:sn(s,"How it works.","What the numbers mean.")+Bf}}var Wc=w(()=>{"use strict";_f();Er()});var Hf={};A(Hf,{default:()=>Go});var Go,Vc=w(()=>{"use strict";pe();Sr();Go=class{constructor(e,t,o,n={}){this.host=e,this.points=t,this.series=o,this.options=n,this.observer=new ResizeObserver(r=>this.draw(r[0]?.contentRect.width??700)),this.observer.observe(e),this.draw(e.clientWidth||700)}destroy(){this.observer.disconnect(),this.host.replaceChildren()}draw(e){let{host:t,series:o,options:n}=this,r=Math.max(8,Math.ceil(this.points.length/(n.zoom??1))),i=Math.max(Math.min(r,this.points.length),this.points.length-(n.offset??0)),a=this.points.slice(Math.max(0,i-r),i),l=!!n.candles,c=a.flatMap(j=>l?[...j.ask?[j.ask.low,j.ask.high]:[],...j.values.slice(1)]:j.values).flatMap(j=>j!==null&&Number.isFinite(j)?[j]:[]);if(!c.length){t.innerHTML=`
              ${l?"No sampled asking-price candles in this period. Try a longer range or switch to the line chart.":"No price observations in this period. Try a longer range."}
              `;return}let d=Math.max(280,e),h=270,p=62,m=d-16,f=20,g=n.volume?196:230,b=Math.min(...c),v=Math.max(...c),k=v-b||Math.max(1,v*.1),E=Math.max(0,b-k*.12),L=v+k*.12,y=a[0].t,I=((l?a.at(-1)?.end:a.at(-1)?.t)??y)-y||864e5,_=j=>p+(j-y)/I*(m-p),H=j=>g-(j-E)/(L-E)*(g-f),G=j=>l&&j.end?(j.t+j.end)/2:j.t,J=n.stepMs??864e5,B=o.map((j,X)=>Ec(a,X,J)),re="";for(let j=0;j<=4;j++){let X=E+(L-E)*j/4,Y=L-E<10?X.toFixed(2):T(X);re+=`${S(Y)}`}for(let j=0;j<=4;j++){let X=y+I*j/4,Y=new Date(X),x=I<=2*864e5?Y.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",timeZone:"UTC"}):Y.toLocaleDateString([],{month:"short",day:"numeric",timeZone:"UTC"}),$="middle";j===0&&($="start"),j===4&&($="end"),re+=`${S(x)}`}if(n.volume){let j=Math.max(1,...a.map(Y=>Y.volume??0)),X=Math.max(1,Math.min(14,(m-p)/Math.max(1,a.length)*.6));re+=a.filter(Y=>Y.volume!==null&&Y.volume!==void 0).map(Y=>``).join("")}if(l){let j=Math.max(3,Math.min(14,(m-p)*J/I*.65));for(let X of a){let Y=X.ask;if(!Y)continue;let x="flat",$="#9698a7";Y.samples<=1?x="single":Y.close!==Y.open&&(x=Y.close>Y.open?"up":"down",$=Y.close>Y.open?"#71d9b0":"#f68c9b");let R=_(G(X));re+=``,Y.samples>1&&(re+=``),x==="single"||x==="flat"?re+=``:re+=``,re+=""}}for(let[j,X]of o.entries()){if(l&&j===0)continue;let Y="",x="";for(let $ of B[j]){let R=`M${_(G($.from))},${H($.from.values[j])} L${_(G($.to))},${H($.to.values[j])} `;$.gap?n.connectGaps&&(x+=R):Y+=R}for(let $ of a){let R=$.values[j];R==null||!Number.isFinite(R)||(re+=``)}re+=``,x&&(re+=``)}t.innerHTML=`j.label).join(", "))}">${re}`;let je=t.querySelector("svg"),be=t.querySelector(".chartTooltip"),Ee=t.querySelector(".crosshair");je.addEventListener("pointermove",j=>{let X=je.getBoundingClientRect(),Y=(j.clientX-X.left)*d/X.width,x=y+(Y-p)/(m-p)*I,$=a.find(Z=>l&&Z.end&&x>=Z.t&&xMath.abs(G(ge)-x)Z.gap&&_(Z.from.t)+5=$.end),z=$.ask,N=o.map((Z,ge)=>`${S(Z.label)} ${T($.values[ge])}`).join("
              ");l&&(N="No quote in this bucket",z?.samples===1&&!K?N=`Observed ask ${T(z.close)}
              1 sampled quote; direction unknown`:z&&!K&&(N=`Open ${T(z.open)} · High ${T(z.high)}
              Low ${T(z.low)} · Close ${T(z.close)}
              ${S(z.samples)} sampled quotes`),$.partial&&!K&&(N+="
              Partial interval")),l&&!K&&o.length>1&&(N+="
              Last observed in interval:
              "+o.slice(1).map((Z,ge)=>`${S(Z.label)} ${T($.values[ge+1])}`).join("
              ")),R&&(N="No price observation in this gap.
              Dashed line connects recorded values.");let V=Z=>new Date(Z).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",timeZone:"UTC"}),de=V(R||K?x:$.t);l&&$.end&&!K&&(de=`${V($.t)} to ${V($.end)}`),be.innerHTML=`${S(de)} UTC
              ${N}${!R&&!K&&n.volume&&$.volume!==null&&$.volume!==void 0?`
              Reported sales ${$.volume}`:""}`,be.hidden=!1,be.style.left=`${Math.max(0,Math.min(Y+14,d-240))}px`,Ee.setAttribute("x1",String(R||K?Y:_(G($)))),Ee.setAttribute("x2",String(R||K?Y:_(G($)))),Ee.setAttribute("visibility","visible")}),je.addEventListener("pointerleave",()=>{be.hidden=!0,Ee.setAttribute("visibility","hidden")})}}});var Of=we((lE,Yy)=>{Yy.exports=' '});var Yc={};A(Yc,{Terminal:()=>Cr,default:()=>Jy});var Ff,Df,$r,qf,Kf,So,Cr,Xy,Jy,Xc=w(()=>{"use strict";F();kr();mc();gc();Mc();Ac();Rc();Ic();_c();zc();Oc();Dc();Er();Kc();Uc();Wc();xe();Ve();pe();Vt();Vc();Uo();Ff="kute_market_advanced",Df="kute_market_layout",$r=[.8,.9,1,1.1,1.2,1.35,1.5],qf=480,Kf=360,So=()=>({q:"",rarity:"",type:"",sort:"volume",page:1,budget:"",minSales:""}),Cr=class{constructor(){this.overlay=null,this.shadow=null,this.controller=null,this.chart=null,this.returnFocus=null,this.tab="overview",this.discoveryTab="search",this.arg=void 0,this.generation=0,this.advanced=!1,this.view=null,this.saved=new Map,this.previous="search",this.portfolioFilter="",this.itemSearch=null,this.holdings=[],this.tradeRevision=0,this.analyzer={give:[],get:[],giveKr:0,getKr:0};try{this.advanced=localStorage.getItem(Ff)==="1"}catch{this.advanced=!1}this.layout={width:0,height:0,scale:1,maximized:!1};try{let e=JSON.parse(localStorage.getItem(Df)??"{}");Number.isFinite(e.width)&&(this.layout.width=e.width),Number.isFinite(e.height)&&(this.layout.height=e.height),$r.includes(e.scale)&&(this.layout.scale=e.scale),this.layout.maximized=e.maximized===!0}catch{}}frame(){return this.shadow?.querySelector("#km")??null}applyLayout(){let e=this.frame();if(!e)return;let{scale:t,maximized:o}=this.layout,n=window.innerWidth-(o?0:16),r=window.innerHeight-(o?0:16),i=o?n:Math.max(Math.min(qf,n),Math.min(this.layout.width||Math.min(1320,window.innerWidth*.96),n)),a=o?r:Math.max(Math.min(Kf,r),Math.min(this.layout.height||Math.min(880,window.innerHeight*.92),r));e.style.zoom=String(t),e.style.width=`${i/t}px`,e.style.height=`${a/t}px`,e.classList.toggle("maximized",o);let l=this.shadow?.querySelector("#kmMaximize");l?.setAttribute("aria-pressed",String(o)),l?.setAttribute("title",o?"Restore size (double-click the header)":"Maximize (double-click the header)");let c=this.shadow?.querySelector("#kmScaleValue");c&&(c.textContent=`${Math.round(t*100)}%`)}saveLayout(){this.applyLayout();try{localStorage.setItem(Df,JSON.stringify(this.layout))}catch{}}rescale(e){let t=$r.indexOf(this.layout.scale);this.layout.scale=e?$r[Math.max(0,Math.min($r.length-1,t+e))]:1,this.saveLayout()}toggleMaximized(){this.layout.maximized=!this.layout.maximized,this.saveLayout()}startResize(e){let{target:t}=e,o=this.frame();if(!(t instanceof HTMLElement)||!o||e.button!==0)return;let{grip:n}=t.dataset;if(!n)return;e.preventDefault(),t.setPointerCapture(e.pointerId);let r=o.getBoundingClientRect(),{clientX:i,clientY:a}=e,l=Number(n.includes("e"))-Number(n.includes("w")),c=Number(n.includes("s"))-Number(n.includes("n"));o.classList.add("resizing");let d=p=>{l&&(this.layout.width=Math.max(qf,r.width+2*l*(p.clientX-i))),c&&(this.layout.height=Math.max(Kf,r.height+2*c*(p.clientY-a))),this.applyLayout()},h=()=>{t.removeEventListener("pointermove",d),o.classList.remove("resizing"),this.layout.width=Math.round(Math.min(this.layout.width,window.innerWidth-16)),this.layout.height=Math.round(Math.min(this.layout.height,window.innerHeight-16)),this.saveLayout()};t.addEventListener("pointermove",d),t.addEventListener("lostpointercapture",h,{once:!0})}async open(e,t){if(!document.pointerLockElement){if(!this.overlay){let o=await Promise.resolve().then(()=>ue(Of(),1)).catch(()=>null);if(!o||document.pointerLockElement)return;if(this.overlay){await this.show(e??this.tab,t);return}this.returnFocus=document.activeElement instanceof HTMLElement?document.activeElement:null;let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483647;display:grid;place-items:center;background:rgba(7,8,13,.78)";let r=document.createElement("div");n.append(r),this.shadow=r.attachShadow({mode:"open"}),this.shadow.innerHTML=o.default,this.overlay=n,this.controller=new AbortController;let{signal:i}=this.controller;document.body.append(n),this.applyLayout(),window.addEventListener("resize",()=>this.applyLayout(),{signal:i}),this.shadow.addEventListener("pointerdown",l=>this.startResize(l),{signal:i}),this.shadow.querySelector(".kmHead")?.addEventListener("dblclick",l=>{l.target instanceof Element&&!l.target.closest("button,input,label,form")&&this.toggleMaximized()},{signal:i}),this.itemSearch=new jo(this.shadow,i,(l,c)=>this.selectItem(l,c),(l,c)=>this.show(c==="discover"?this.searchTab():"search",{...c==="discover"?this.readFilters(1):So(),q:l,page:1}),()=>this.holdings),this.shadow.addEventListener("click",l=>this.click(l),{signal:i}),this.shadow.addEventListener("change",l=>this.changed(l),{signal:i}),this.shadow.addEventListener("input",l=>this.input(l),{signal:i}),this.shadow.querySelector("#kmSearchForm")?.addEventListener("submit",l=>{l.preventDefault(),this.show("search",{...So(),q:this.value("#kmGlobalSearch")})},{signal:i}),n.addEventListener("click",l=>{l.target===n&&this.close()},{signal:i}),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&this.close()},{signal:i}),document.addEventListener("keydown",l=>this.key(l),{signal:i,capture:!0});let a=this.shadow.querySelector("#kmAdvanced");a.checked=this.advanced,this.shadow.querySelector("#kmGlobalSearch")?.focus()}await this.show(e??this.tab,t)}}close(){this.remember(),this.controller?.abort(),this.controller=null,this.itemSearch=null,this.chart?.destroy(),this.chart=null,this.overlay?.remove(),this.overlay=null,this.shadow=null,this.generation++,this.returnFocus?.focus({preventScroll:!0})}remember(){let e=this.shadow?.querySelector("#kmBody");this.tab==="item"&&(this.arg=this.itemState()),(this.tab==="search"||this.tab==="active")&&this.shadow?.querySelector("#kmQ")&&(this.arg=this.readFilters(this.searchState().page)),this.tab==="deals"&&this.shadow?.querySelector("#kmDealBudget")&&(this.arg={budget:this.value("#kmDealBudget")}),e&&this.saved.set(this.tab,{arg:this.arg,scroll:e.scrollTop})}value(e){return this.shadow?.querySelector(e)?.value??""}searchState(){let e={...So(),...this.tab==="active"?{minSales:"1",sort:"liquidity"}:{},...typeof this.arg=="object"&&this.arg?this.arg:{}};return this.tab==="active"&&(e.minSales=String(Math.max(1,Number(e.minSales)||1))),e}searchTab(){return this.tab==="active"?"active":"search"}itemState(){let e={skin:typeof this.arg=="number"?this.arg:0,range:"1M",candles:!1,overlay:"none",zoom:1,offset:0,...typeof this.arg=="object"&&this.arg?this.arg:{}};if(this.view?.item?.skin.skin===e.skin)for(let[t,o]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"}))this.shadow?.querySelector("#"+o)&&Object.assign(e,{[t]:this.value("#"+o)});return e}async show(e,t,o=!1){if(!this.shadow)return;this.remember(),e==="item"&&this.tab!=="item"&&(this.previous=this.tab);let n=this.saved.get(this.tab)?.scroll??0,r=this.saved.get(e);this.tab=e,this.arg=t===void 0?r?.arg:t;let i=++this.generation;this.itemSearch?.dismiss(),this.chart?.destroy(),this.chart=null;let a=this.shadow.querySelector("#kmBody"),l=wr.includes(e);l&&(this.discoveryTab=e);let c=this.shadow.querySelector("#kmDiscoverTabs");c.hidden=!l;for(let p of c.querySelectorAll("button")){let m=p.dataset.discover===e;p.setAttribute("aria-selected",String(m)),p.tabIndex=m?0:-1}l?(a.setAttribute("role","tabpanel"),a.setAttribute("aria-labelledby",`kmDiscover-${e}`)):(a.removeAttribute("role"),a.removeAttribute("aria-labelledby")),a.setAttribute("aria-busy","true"),a.innerHTML=fe("Loading market data","Fetching the latest available observations.");let d=this.shadow.querySelector("#kmTitle");d&&(d.textContent=Js[e]??"Market");let h=e==="item"?this.previous:e;wr.includes(h)&&(h="search"),h==="indices"&&(h="overview");for(let p of this.shadow.querySelectorAll("[data-nav]")){let m=p.dataset.nav===h;p.classList.toggle("on",m),m?p.setAttribute("aria-current","page"):p.removeAttribute("aria-current")}this.updateWatchCount();try{let p=await this.render(e);if(i!==this.generation||!this.shadow)return;this.view=p,this.holdings=p.holdings??[],a.innerHTML=p.html,a.scrollTop=t===void 0?r?.scroll??0:0,o&&(a.scrollTop=n);let m=this.shadow.querySelector("#kmFootRight");m&&(m.textContent=p.asOf?`${p.asOfLabel??"Estimates calculated"} ${We(Math.max(0,Date.now()-p.asOf))} ago`:"Estimates from observed market data");let f=a.querySelector(".chart");if(f&&p.points&&p.series&&(this.chart=new Go(f,p.points,p.series,p.chartOptions)),e==="portfolio"&&this.filterHoldings(),e==="item"){let g=this.arg;for(let[b,v]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"})){let k=a.querySelector("#"+v),E=g?.[b];k&&typeof E=="string"&&(k.value=E)}this.updatePlanner(),this.filterListings()}}catch{if(i!==this.generation)return;a.innerHTML=fe("Market data is unavailable","Try again in a moment. Your saved watchlist stays on this device.",'')}finally{i===this.generation&&a.setAttribute("aria-busy","false")}}updateWatchCount(){let e=this.shadow?.querySelector("#kmWatchCount");e&&(e.textContent=String(Se().length))}async render(e){switch(e){case"overview":return this.overview();case"intelligence":return this.intelligence();case"search":return this.search();case"active":return this.search();case"item":return this.item();case"watchlist":return this.watchlist();case"movers":return this.movers();case"deals":return this.deals();case"indices":return this.indices();case"portfolio":return this.portfolio();case"analyze":return this.analyze();default:return this.help()}}intelligence(){return Fc(this)}unavailable(){return{html:fe("Market data is unavailable",W.lastError||"The market server could not be reached. Try again in a moment.",'')}}intro(e,t,o=""){return sn(this,e,t,o)}table(e){return qc(this,e)}compactList(e){return jc(this,e)}overview(){return hc(this)}search(){return fc(this)}item(){return Cc(this)}watchlist(){return Tc(this)}movers(){return Lc(this)}deals(){return Pc(this)}indices(){return Nc(this)}portfolio(){return Bc(this)}async selectItem(e,t){if(t!=="give"&&t!=="get"){this.show("item",e.skin);return}let o=this.analyzer[t].find(n=>n.skin===e.skin);o?o.count=Math.min(1e4,o.count+1):this.analyzer[t].push({...e,count:1}),await this.show("analyze",this.arg,!0),this.tab==="analyze"&&this.shadow?.querySelector(`#kmPick${t}`)?.focus({preventScroll:!0})}analyze(){return Hc(this)}async refreshTrade(){let{generation:e}=this,t=++this.tradeRevision;this.shadow?.querySelector("#kmTradeOutcome")?.setAttribute("aria-busy","true");let n=this.shadow?.querySelector("#kmFootRight");n&&(n.textContent="Updating trade estimates...");let r=await this.analyze();if(e!==this.generation||t!==this.tradeRevision||!this.shadow)return;let i=document.createElement("div");i.innerHTML=r.html;for(let a of[".tradeSideHead>span",".tradeTotal",".tradeItemValue","#kmTradeOutcome"]){let l=i.querySelectorAll(a);this.shadow.querySelectorAll(a).forEach((c,d)=>{l[d]&&c.replaceWith(l[d])})}n&&(n.textContent=r.asOf?`Estimates calculated ${We(Math.max(0,Date.now()-r.asOf))} ago`:"Estimates from observed market data"),this.view=r}help(){return Gc(this)}updatePlanner(){let e=this.shadow?.querySelector("#kmPlannerResult");if(!e||!this.view?.item)return;let t=Number(this.value("#kmSellPrice")),o=Number(this.value("#kmSellQuantity"));if(!Number.isFinite(t)||t<=0||!Number.isInteger(o)||o<1||o>1e4){e.textContent="Enter a positive asking price and a quantity from 1 to 10,000.";return}let n=this.view.listings;if(!n){e.textContent="Competing listings are unavailable. Try again when market data is available.";return}let r=n?.listings.filter(a=>a.pricen.listings.length;e.innerHTML=`${i?"At least ":""}${r} cheaper listing${r===1?"":"s"} observed${n?"":" (listing data unavailable)"}.
              ${T(t*o)} KR gross if all ${o} sell · ${it(t/this.view.item.skin.fair-1)} vs estimate.`}filterHoldings(){let e=this.portfolioFilter.toLocaleLowerCase().trim();for(let t of this.shadow?.querySelectorAll("tr[data-skin]")??[]){let o=t;o.hidden=!o.querySelector(".itemIdentity")?.textContent?.toLocaleLowerCase().includes(e)}}filterListings(){let e=this.value("#kmListingMax"),t=this.value("#kmSerialMax"),o=this.value("#kmWearMax"),n=this.value("#kmAgeMax"),r=this.value("#kmSellerMax");for(let c of this.shadow?.querySelectorAll("#kmListingRows tr")??[]){let d=c;d.hidden=!!(e&&Number(d.dataset.price)>Number(e))||!!(t&&(!d.dataset.serial||Number(d.dataset.serial)>Number(t)))||!!(o&&(!d.dataset.wear||Number(d.dataset.wear)>Number(o)))||!!(n&&(!d.dataset.age||Number(d.dataset.age)>Number(n)))||!!(r&&(!d.dataset.sellerCount||Number(d.dataset.sellerCount)>Number(r)))}let i=this.shadow?.querySelector("#kmListingCount"),l=[...this.shadow?.querySelectorAll("#kmListingRows tr")??[]].filter(c=>!c.hidden).length;i&&(i.textContent=`${l} sampled listings shown; ${this.view?.listings?.total??"unknown"} reported listed.`)}applyFilters(e=1){this.show(this.searchTab(),this.readFilters(e))}readFilters(e){return{q:this.value("#kmQ").trim(),rarity:this.value("#kmRarity"),type:this.value("#kmType"),sort:this.value("#kmSort"),budget:this.value("#kmBudget"),minSales:this.value("#kmSales"),page:e}}click(e){let t=e.target instanceof Element?e.target.closest("button,tr[data-skin],tr[data-index-name],tr[data-category]"):null;if(!t||t.hasAttribute("disabled"))return;let o=t.dataset;if(o.externalUrl){e.preventDefault();try{let n=new URL(o.externalUrl);if(n.protocol!=="https:"||n.username||n.password||n.port)return;if(!(["github.com","kute.lol","krunker.io"].includes(n.hostname)||n.hostname==="discord.com"&&n.pathname.startsWith("/invite/"))){u.showNotification("This news link is not supported by Kute.",!1,6);return}if(n.hostname==="krunker.io"&&!u.hostFeatures?.includes("krunker-links")){u.showNotification("Update the Kute application to open Krunker news links.",!1,6);return}window.chrome.webview.postMessage(`open-url, ${n.href}`)}catch{}return}if(o.intelKind!==void 0){this.show("intelligence",o.intelKind);return}if(t.id==="kmClose"){this.close();return}if(t.id==="kmMaximize"){this.toggleMaximized();return}if(o.scale!==void 0){this.rescale(Number(o.scale));return}if(o.discover){if(o.discover===this.tab)return;o.discover==="deals"&&!this.saved.has("deals")&&(this.tab==="search"||this.tab==="active")?this.show("deals",{budget:this.value("#kmBudget")}):this.show(o.discover);return}if(o.nav==="search"){this.show(this.discoveryTab);return}if(o.nav){this.show(o.nav);return}if(o.skin){this.show("item",Number(o.skin));return}if(o.category){this.show("search",{...yo(),type:o.category,minSales:"1"});return}if(o.page){this.applyFilters(Number(o.page));return}if(o.range){this.show("item",{...this.itemState(),range:o.range,zoom:1,offset:0},!0);return}if(o.chartMode){this.show("item",{...this.itemState(),candles:o.chartMode==="candles"},!0);return}if(o.pan!==void 0){this.show("item",{...this.itemState(),offset:Number(o.pan)},!0);return}if(o.zoom){this.show("item",{...this.itemState(),zoom:Number(o.zoom),offset:o.zoom==="1"?0:this.itemState().offset},!0);return}if(o.window){this.show("movers",o.window);return}if(o.indexName){this.show("indices",o.indexName);return}if(o.unwatch){if(!wo(Se().filter(n=>n.skin!==Number(o.unwatch)))){this.storageError();return}this.show("watchlist",this.arg,!0);return}if(o.remove!==void 0&&o.side){this.analyzer[o.side].splice(Number(o.remove),1),this.show("analyze",this.arg,!0);return}switch(o.action){case"discover":this.show("search",yo());break;case"reset-search":this.show(this.searchTab(),this.tab==="active"?{...yo(),minSales:"1",sort:"liquidity"}:yo());break;case"back":this.show(this.previous);break;case"retry":this.retry();break;case"filters":this.applyFilters();break;case"deal-budget":this.show("deals",{budget:this.value("#kmDealBudget")});break;case"inventory":this.show("portfolio",this.value("#kmName").trim());break;case"analyze":this.show("analyze",this.arg,!0);break;case"clear-trade":this.analyzer={give:[],get:[],giveKr:0,getKr:0},this.show("analyze");break;case"watch":if(this.view?.item){if(!Ql(this.view.item.skin)){this.storageError();return}this.show("item",this.arg,!0)}break;default:break}}storageError(){let e=this.shadow?.querySelector("#kmFootRight");e&&(e.textContent="Could not save on this device. The watchlist holds up to 100 items.")}async retry(){let{generation:e}=this;await W.retry(),e===this.generation&&await this.show(this.tab,this.arg)}changed(e){let t=e.target;if(t instanceof HTMLInputElement||t instanceof HTMLSelectElement)if(t.id==="kmAdvanced"){this.advanced=t.checked;try{localStorage.setItem(_f,this.advanced?"1":"0")}catch{this.storageError()}this.show(this.tab,void 0,!0)}else if(t.id==="kmOverlay")this.show("item",{...this.itemState(),overlay:t.value},!0);else if(t.dataset.target){let o=Number(t.value),n=Se().map(r=>r.skin===Number(t.dataset.target)?{...r,target:o>0&&Number.isFinite(o)?o:null}:r);if(!wo(n)){this.storageError();return}this.show("watchlist",this.arg,!0)}else if(t.dataset.count!==void 0&&t.dataset.side){let o=this.analyzer[t.dataset.side][Number(t.dataset.count)];o&&(o.count=Math.min(1e4,Math.max(1,Math.floor(Number(t.value)||1))),t.value=String(o.count)),this.refreshTrade()}else if(t.dataset.kr){let o=Math.max(0,Math.min(1e9,Math.floor(Number(t.value)||0)));t.dataset.kr==="give"?this.analyzer.giveKr=o:this.analyzer.getKr=o,t.value=String(o),this.refreshTrade()}else t.closest("#kmFilters")&&t instanceof HTMLSelectElement&&this.applyFilters()}input(e){let t=e.target;if(t instanceof HTMLInputElement){if(t.id==="kmSellPrice"||t.id==="kmSellQuantity"){this.updatePlanner();return}if(["kmListingMax","kmSerialMax","kmWearMax","kmAgeMax","kmSellerMax"].includes(t.id)){this.filterListings();return}if(t.id==="kmHoldingFilter"){this.portfolioFilter=t.value,this.filterHoldings();return}}}key(e){if(!this.shadow||(e.stopImmediatePropagation(),this.itemSearch?.key(e))||e.isComposing)return;if(e.key==="Escape"){e.stopImmediatePropagation(),e.preventDefault(),this.close();return}if(e.ctrlKey&&!e.altKey&&["+","=","-","0"].includes(e.key)){e.preventDefault(),this.rescale({"-":-1,0:0}[e.key]??1);return}let t=this.shadow.activeElement;if(t?.matches("[data-discover]")&&["ArrowLeft","ArrowRight","Home","End"].includes(e.key)){e.preventDefault();let i=[...this.shadow.querySelectorAll("#kmDiscoverTabs button")],l=(i.indexOf(t)+(e.key==="ArrowRight"?1:-1)+i.length)%i.length;e.key==="Home"&&(l=0),e.key==="End"&&(l=i.length-1);let c=i[l];c.focus(),c.click();return}if(e.key==="Enter"&&t&&(t.closest("#kmFilters")?(e.preventDefault(),this.applyFilters()):t.id==="kmName"?(e.preventDefault(),this.show("portfolio",this.value("#kmName").trim())):t.matches("tr[data-skin],tr[data-index-name],tr[data-category]")&&(e.preventDefault(),t.click())),e.key!=="Tab")return;let o=[...this.shadow.querySelectorAll("button:not(:disabled):not([tabindex='-1']),input:not([type=hidden]),select,summary,[tabindex='0']")].filter(i=>i instanceof HTMLElement&&i.getClientRects().length&&!i.closest("[hidden]")),n=o[0],r=o.at(-1);e.shiftKey&&(t===n||!t)?(e.preventDefault(),r?.focus()):!e.shiftKey&&(t===r||!t)&&(e.preventDefault(),n?.focus())}},jy=new Er,Uy=jy});var Vc={};A(Vc,{default:()=>Wy});var Wc,Gy,Wy,$r=w(()=>{"use strict";D();It();xe();Xl();Zl();fr();ic();Wc=class{constructor(){this.headerItem=document.createElement("div"),this.headerSeparator=document.createElement("div"),this.headerObserver=new MutationObserver(()=>this.placeButton()),this.onUnread=()=>this.updateBadge(),this.terminal=null,this.running=!1,this.warned=!1,u.settings.toggleMarket=e=>this.toggle(e),u.market={open:(e,t)=>this.open(e,t),toggle:e=>this.toggle(e)},this.toggle(!0)}toggle(e){if(e!==this.running)if(this.running=e,e){if(!W.hostSupported()){this.warned||(this.warned=!0,u.showNotification("The Kute Market needs a newer Kute. Update Kute to use it.",!1,8)),this.running=!1;return}if(he.offline()){this.running=!1;return}this.placeButton();let t=document.querySelector("#playerHeaderEl");t&&this.headerObserver.observe(t,{childList:!0,subtree:!0}),window.addEventListener(Ws,this.onUnread),hr.start(),mr.start(),$t.start(),gr.start()}else this.headerObserver.disconnect(),window.removeEventListener(Ws,this.onUnread),this.headerItem.remove(),this.headerSeparator.remove(),hr.stop(),mr.stop(),$t.stop(),gr.stop(),this.terminal?.close()}placeButton(){let e=document.querySelector("#playerHeaderEl .headerBarRight");if(!e||e.contains(this.headerItem))return;let t=[...e.querySelector(".nav-item")?.classList??[]].find(o=>o.startsWith("svelte-"))??"";this.headerItem.className=`nav-item ${t}`,this.headerItem.innerHTML=` Kute Market `,this.headerItem.onclick=()=>this.open($t.unread.size?"watchlist":void 0),this.headerSeparator.className="verticalSeparator",this.headerSeparator.style.cssText="height: 35px;",e.prepend(this.headerItem,this.headerSeparator),this.updateBadge()}updateBadge(){let e=this.headerItem.querySelector(".nav-badge");if(!e)return;let t=$t.unread.size;e.textContent=String(Math.min(99,t)),e.style.display=t?"inline-block":"none"}async open(e,t){if(this.running){if(!this.terminal){let o=await Promise.resolve().then(()=>(Gc(),Uc)).catch(()=>null);if(!o)return;this.terminal=o.default}await this.terminal.open(e,t)}}},Gy=new Wc,Wy=Gy});var Vy={};var Of=w(()=>{"use strict";$r()});var Ff,Df=w(()=>{Ff=`@keyframes kuteMmSlideDown{0%{transform:translate(-50%,-500%)}to{transform:translate(-50%)}}#kuteMatchmaker{position:absolute;top:8em;left:50%;z-index:2147482000;box-sizing:border-box;width:24em;padding:18px 22px;border-radius:14px;overflow:hidden;pointer-events:all;background:#12121699;backdrop-filter:blur(14px) saturate(120%);box-shadow:0 8px 48px #000c;display:flex;flex-direction:column;color:#fff;animation:kuteMmSlideDown .4s cubic-bezier(.16,1,.3,1) forwards}#kuteMmStatus{font-size:1.4em;color:#35e0e8;margin-bottom:.6em;text-align:center}#kuteMmStatus.mm-fail{color:#eb5656}#kuteMmFeed{display:flex;flex-direction:column;gap:.15em;overflow:hidden;min-height:5.6em;margin-bottom:.6em}#kuteMmFeed.mm-result{justify-content:center}@keyframes kuteMmFeedIn{0%{opacity:0;transform:translate(1em)}to{opacity:1;transform:translate(0)}}@keyframes kuteMmGrow{0%{opacity:0;transform:scale(.55)}65%{opacity:1;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}.mm-entry{display:flex;gap:.8em;padding:.2em .5em;font-size:.95em;font-family:GameFont,monospace;border-radius:.2em;animation:kuteMmFeedIn .12s ease forwards}.mm-entry:last-child:before{content:"\\25b8";color:#ffc147}.mm-entry.mm-pass{background:#4caf501a}.mm-entry.mm-pass .mm-region{color:#35e0e8}.mm-entry.mm-pass .mm-map{color:#ffffffe6}.mm-entry.mm-pass .mm-players{color:#4caf50}.mm-entry.mm-skip{background:#ffffff05}.mm-entry.mm-skip .mm-region{color:#ffffff4d}.mm-entry.mm-skip .mm-map{color:#ffffff80}.mm-entry.mm-skip .mm-players{color:#eb5656}.mm-entry.mm-skip .mm-icon{opacity:.45}.mm-region{min-width:2.5em;font-weight:700}.mm-map{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mm-players{min-width:3em;text-align:right;font-weight:600}.mm-icon{width:1.7em;height:1.7em;flex:none;object-fit:cover;border-radius:.25em;align-self:center;background:#ffffff0f}.mm-entry.mm-landed{box-shadow:inset 0 0 0 2px #35e0e8}.mm-entry.mm-found,.mm-entry.mm-none{justify-content:center;transform-origin:center;animation:kuteMmGrow .34s cubic-bezier(.2,.85,.3,1.25) forwards}.mm-entry.mm-found{font-size:1.25em;gap:.7em}.mm-entry.mm-found .mm-icon{width:2.4em;height:2.4em;border-radius:.3em}.mm-entry.mm-none{font-size:1.2em;color:#ffffff8c;background:#ffffff08}.mm-entry.mm-found:before,.mm-entry.mm-none:before{content:none}#kuteMmCounter{font-size:.85em;color:#ffc147;text-align:center;margin-bottom:.5em}#kuteMmCancel{text-align:center;border:.2em solid #eb5656;border-radius:.3em;font-size:1.1em;background:#0000004d;padding:.2em 1.2em;cursor:pointer;margin:0 auto;width:fit-content;transition:all .08s}#kuteMmCancel:hover{border-color:#fff;transform:scale(.95)}#kuteMmCancel:active{transform:scale(.85)} -`});var qf=we((NE,Xy)=>{Xy.exports='

              Matchmaker Filters

              F6 joins the best lobby for these. Nothing picked in a group means all of it

              Regions

              Modes \u2605 on a mode to prefer it

              Preferred first, then any other mode. Modes rank above maps
              Drag to reorder, click to move to the top

              Maps \u2605 on a map to prefer it

              Preferred first, then any other map
              Drag to reorder, click to move to the top

              Lobby

              Reset
              Done
              '});var Zc={};A(Zc,{default:()=>u1});function Yf(s){let e=e1.get(Wt(s));return e===void 0?null:Bs(e)}function d1(s,e){let t=Yf(s);if(!t)return null;let o=document.createElement("img");return o.className=e,o.src=t,o.alt="",o.loading="lazy",o.onerror=()=>o.remove(),o}function nn(s,e){let t=document.createElement("span");return t.className=s,t.textContent=e,t}function Xc(s,e){let t=document.createElement("div");t.className=`mm-entry ${e}`;let o=d1(s.map,"mm-icon");return o&&t.append(o),t.append(nn("mm-region",s.region),nn("mm-map",s.map),nn("mm-players",`${s.players}/${s.limit}`)),t}async function Uf(){let e=await(await fetch(n1,{signal:AbortSignal.timeout(Vf)})).json();return Array.isArray(e?.games)?e.games:[]}function Gf(s,e){let t=e.maps.length>0?new Set(e.maps.map(Wt)):t1;return s.map(o=>{let n=String(o[0]),r=o[4]??{},i=r.c===0||r.oc===1,a=String(r.i??""),l=Wt(a),c={id:n,region:n.split(":")[0],server:String(o[1]),players:Number(o[2]),limit:Number(o[3]),map:a,mode:Jy[r.g]??"Unknown",timeLeft:Number(o[5]),passes:!1};return c.passes=i&&!s1.test(n)&&(e.regions.length===0||e.regions.includes(c.region))&&(e.modes.length===0||e.modes.includes(c.mode))&&t.has(l)&&c.players>=e.minPlayers&&c.players<=e.maxPlayers&&c.players0?c.timeLeft>=e.minTime:o1.has(l))&&!location.href.includes(n),c})}var Jy,Zy,Kf,Wf,Qy,Wt,e1,t1,o1,s1,n1,Vf,r1,jf,Yc,i1,a1,l1,c1,on,sn,Jc,u1,Qc=w(()=>{"use strict";Df();D();Ae();Po();tr();Jy=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Hide & Seek","Infected","Race","Last Man Standing","Simon Says","Gun Game","Prop Hunt","Boss Hunt","Classic FFA","Deposit","Stalker","King of the Hill","One in the Chamber","Trade","Kill Confirmed","Defuse","Sharp Shooter","Traitor","Raid","Blitz","Domination","Squad Deathmatch","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],Zy=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Gun Game","Classic FFA","Deposit","Kill Confirmed","Sharp Shooter","Domination","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],Kf={SV:"Silicon Valley",TOK:"Tokyo",FRA:"Frankfurt",MBI:"Mumbai",SYD:"Sydney",SIN:"Singapore",DAL:"Dallas",BHN:"Bahrain",BRZ:"Brazil",NY:"New York"},Wf=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Tropicano","Habitat","Atomic","Old_Burg","Throwback","Clockwork","Bazaar","Erupt","HQ","Lush","Vivo","Slide Moonlight","Eterno Simulator","Eterno Jump","Frontier","Piazza","Barnyard"],Qy={SkyTemple:"Sky Temple",Krunk_Plaza:"Krunk Plaza",Old_Burg:"Old Burg"},Wt=s=>s.toLowerCase().replace(/[^a-z0-9]/g,""),e1=new Map(er.map((s,e)=>[Wt(s),e])),t1=new Set(Wf.map(Wt)),o1=new Set(["Eterno Jump","Slide Moonlight"].map(Wt)),s1=/[\s&#?/%\\]/,n1="https://matchmaker.krunker.io/game-list?hostname=krunker.io",Vf=1e4,r1=4,jf=1100,Yc=80,i1=20,a1=180,l1=1200,c1=1100,on={regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[],minPlayers:1,maxPlayers:6,minTime:120,sortByPlayers:!1,serverBrowser:!0,animation:!0,searchAfterMatch:!1},sn=s=>new Promise(e=>setTimeout(e,s));Jc=class{constructor(){this.activeRun=0,this.runCounter=0,this.candidates=[],this.popup=document.createElement("div"),this.popup.id="kuteMatchmaker",this.status=document.createElement("div"),this.status.id="kuteMmStatus",this.feed=document.createElement("div"),this.feed.id="kuteMmFeed",this.counter=document.createElement("div"),this.counter.id="kuteMmCounter";let e=document.createElement("div");e.id="kuteMmCancel",e.textContent="Cancel",e.onmouseenter=()=>window.SOUND?.play("tick_0",.1),e.onclick=()=>this.abort(),this.popup.append(this.status,this.feed,this.counter,e),this.cancelKey=t=>{t.key!=="Escape"||document.pointerLockElement||(t.preventDefault(),t.stopPropagation(),this.abort())},u.matchmaker={showFilters:()=>this.showFilters()},u.settings.toggleMatchmaker=()=>{},u.hostFeatures?.includes("matchmaker")&&(window.addEventListener("keydown",t=>{!ls(t,"matchmaker")||t.repeat||!u.settings.data.matchmaker||document.activeElement?.tagName!=="INPUT"&&this.start().catch(o=>console.error("[kute] matchmaker:",o))},!0),this.watchEndScreen())}watchEndScreen(){let e=document.getElementById("endUI");if(!e)return;let t=!1,o=e.style.display!=="none";document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&(t=!0)}),new MutationObserver(()=>{let n=e.style.display!=="none";n!==o&&(o=n,!(!n||!t)&&(t=!1,!(!u.settings.data.matchmaker||!this.filter.searchAfterMatch||window.getGameActivity?.()?.custom)&&this.start().catch(r=>console.error("[kute] matchmaker:",r))))}).observe(e,{attributes:!0,attributeFilter:["style"]})}get filter(){return{...on,...u.settings.data.matchmakerFilter}}saveFilter(e){u.settings.data.matchmakerFilter=e,window.chrome.webview.postMessage(`set-config-json matchmakerFilter ${JSON.stringify(e)}`)}cancelled(e){return e!==this.activeRun}abort(){this.activeRun=0,window.playSelect?.(),this.dismiss()}dismiss(){document.removeEventListener("keydown",this.cancelKey,!0),this.popup.remove()}showPopup(){if(!document.querySelector("#kuteMatchmakerCSS")){let e=document.createElement("style");e.id="kuteMatchmakerCSS",e.textContent=Ff,document.head.append(e)}this.status.textContent="Connecting...",this.status.classList.remove("mm-fail"),this.feed.replaceChildren(),this.feed.classList.remove("mm-result"),this.counter.textContent="",document.addEventListener("keydown",this.cancelKey,!0),(document.querySelector("#uiBase")??document.body).append(this.popup)}pushEntry(e){for(this.feed.append(e);this.feed.children.length>r1;)this.feed.firstElementChild?.remove()}async animateScan(e,t,o){let n=t.length;if(n===0)return;this.status.textContent="Scanning lobbies...";let r=Math.floor(jf/Yc),i=n>r?n/r:1,a=n>r?Yc:Math.max(i1,Math.min(Yc,jf/n));for(let l=0;l[l.id,l])),a=[t,...this.candidates.filter(l=>l!==t)].find(l=>r.get(l.id)?.passes);a?this.join(a.id):this.openServerBrowser(o)}async start(){if(this.activeRun!==0)return;let e=++this.runCounter;this.activeRun=e;try{await this.search(e)}finally{this.activeRun===e&&(this.activeRun=0)}}async search(e){let{filter:t}=this;t.animation&&this.showPopup();let o,n;try{let[p,m]=await Promise.all([Uf(),Te("ping-regions","regionPings",Vf)]);o=Gf(p,t),n=m??{}}catch(p){if(console.error("[kute] matchmaker: no lobby list",p),this.cancelled(e)||!t.animation)return;this.status.textContent="Failed to fetch lobbies",this.status.classList.add("mm-fail"),await sn(2e3),this.cancelled(e)||this.dismiss();return}if(this.cancelled(e))return;let r=p=>n[p.server]??999,i=new Map(t.preferredMaps.map((p,m)=>[Wt(p),m])),a=new Map(t.preferredModes.map((p,m)=>[p,m])),l=p=>(a.get(p.mode)??a.size)*(i.size+1)+(i.get(Wt(p.map))??i.size),c=p=>p.limit-p.players<=1?1:0,d=o.filter(p=>p.passes);d.sort((p,m)=>{let f=l(p)-l(m),g=c(p)-c(m),b=r(p)-r(m),v=m.players-p.players;return t.sortByPlayers?f||g||v||b:f||g||b||v}),this.candidates=d;let h;if(d.length>0){let p=d[0],m=d.filter(f=>l(f)===l(p)&&c(f)===c(p)&&Math.abs(r(f)-r(p))<=20&&p.players-f.players<=2);h=m[Math.floor(Math.random()*m.length)]}if(t.animation&&await this.animateScan(e,o,h),!this.cancelled(e)){if(!h){if(t.animation){this.status.textContent="No Lobby Found",this.status.classList.add("mm-fail"),this.feed.classList.add("mm-result");let p=document.createElement("div");if(p.className="mm-entry mm-none",p.textContent="No matching lobbies",this.feed.replaceChildren(p),this.counter.textContent=t.serverBrowser?"Opening server browser...":"",await sn(c1),this.cancelled(e))return}this.openServerBrowser(t);return}if(t.animation){this.status.textContent="Lobby Found!",this.feed.classList.add("mm-result"),this.feed.replaceChildren(Xc(h,"mm-pass mm-found"));let p=n[h.server]===void 0?"?":String(n[h.server]);if(this.counter.textContent=`${h.mode} \xB7 ${Kf[h.region]??h.region} \xB7 ${p}ms`,await sn(l1),this.cancelled(e))return}await this.verifyAndJoin(e,h,t)}}async showFilters(){let e=await Promise.resolve().then(()=>ue(qf(),1)),{filter:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=(g,b,v)=>{let k=i(g);k.replaceChildren();for(let E of b){let L=document.createElement("div");if(L.className=`mmChip${v.includes(E.value)?" on":""}`,E.icon){let x=document.createElement("img");x.src=E.icon,x.alt="",x.loading="lazy",x.onerror=()=>x.remove(),L.append(x)}L.append(E.label),L.onclick=()=>{let x=v.indexOf(E.value);x===-1?v.push(E.value):v.splice(x,1),L.classList.toggle("on",x===-1)},k.append(L)}},l=(g,b,v)=>{if(!g)return;let k=document.createElement("img");k.src=g,k.alt="",v?k.loading="lazy":k.draggable=!1,k.onerror=()=>k.remove(),b.append(k)},c=g=>{let{preferred:b}=g,v=i(g.boxId);v.hidden=b.length===0;let k=v.querySelector(".mmGrid");k.replaceChildren();let E=()=>k.querySelectorAll(".mmNum").forEach((L,x)=>L.textContent=String(x+1));for(let L of b){let x=document.createElement("div");x.className="mmChip on mmRank",x.append(nn("mmNum","")),l(g.icon(L),x,!1),x.append(g.label(L));let $=null;x.onpointerdown=I=>{x.setPointerCapture(I.pointerId),$={x:I.clientX,y:I.clientY,moved:!1}},x.onpointermove=I=>{if(!$||!$.moved&&Math.hypot(I.clientX-$.x,I.clientY-$.y)<5)return;$.moved=!0,x.classList.add("dragging");let _=[...k.children],H=_.findIndex(J=>{let B=J.getBoundingClientRect();return I.clientX>=B.left&&I.clientX<=B.right&&I.clientY>=B.top&&I.clientY<=B.bottom}),G=_.indexOf(x);H===-1||H===G||(b.splice(H,0,...b.splice(G,1)),x.remove(),k.insertBefore(x,k.children[H]??null),E())},x.onpointerup=()=>{x.classList.remove("dragging"),$&&!$.moved&&(b.unshift(...b.splice(b.indexOf(L),1)),window.SOUND?.play("tick_0",.1),c(g)),$=null},x.onpointercancel=x.onpointerup,k.append(x)}E()},d=g=>{let{picked:b,preferred:v}=g,k=i(g.gridId);k.replaceChildren();for(let E of g.values){let L=v.includes(E),x=document.createElement("div");x.className=`mmChip${b.includes(E)?" on":""}${L?" preferred":""}`,l(g.icon(E),x,!0),x.append(g.label(E));let $=nn("mmStar","\u2605");$.title=L?"Preferred, click to remove":`Prefer this ${g.noun}`,$.onclick=I=>{I.stopPropagation(),L?v.splice(v.indexOf(E),1):(v.push(E),b.length>0&&!b.includes(E)&&b.push(E)),d(g)},x.append($),x.onclick=()=>{let I=b.indexOf(E);I!==-1?(b.splice(I,1),L&&v.splice(v.indexOf(E),1)):b.length===0?b.push(...new Set([...v,E])):b.push(E),d(g)},k.append(x)}c(g)},h=()=>{a("mmRegions",Object.entries(Kf).map(([g,b])=>({value:g,label:b})),t.regions),d({gridId:"mmModes",boxId:"mmModeRanks",noun:"mode",values:Zy,picked:t.modes,preferred:t.preferredModes,label:g=>g,icon:()=>null}),d({gridId:"mmMaps",boxId:"mmMapRanks",noun:"map",values:Wf,picked:t.maps,preferred:t.preferredMaps,label:g=>Qy[g]??g,icon:Yf}),i("mmMinPlayers").value=String(t.minPlayers),i("mmMaxPlayers").value=String(t.maxPlayers),i("mmMinTime").value=String(t.minTime),i("mmSortByPlayers").checked=t.sortByPlayers,i("mmServerBrowser").checked=t.serverBrowser,i("mmAnimation").checked=t.animation,i("mmSearchAfterMatch").checked=t.searchAfterMatch};t.regions=[...t.regions],t.modes=[...t.modes],t.maps=[...t.maps],t.preferredMaps=[...t.preferredMaps],t.preferredModes=[...t.preferredModes],h();let p=(g,b,v,k)=>{let E=Number.parseInt(i(g).value,10);return Number.isNaN(E)?k:Math.min(v,Math.max(b,E))},m=new AbortController,f=()=>{m.abort(),o.remove(),this.saveFilter({...t,minPlayers:p("mmMinPlayers",0,7,on.minPlayers),maxPlayers:p("mmMaxPlayers",0,7,on.maxPlayers),minTime:p("mmMinTime",0,480,on.minTime),sortByPlayers:i("mmSortByPlayers").checked,serverBrowser:i("mmServerBrowser").checked,animation:i("mmAnimation").checked,searchAfterMatch:i("mmSearchAfterMatch").checked})};i("mmDone").onclick=f,i("mmReset").onclick=()=>{Object.assign(t,on,{regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[]}),h()},o.addEventListener("mousedown",g=>{g.target===o&&f()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),f())},{signal:m.signal,capture:!0}),document.body.append(o)}},u1=new Jc});var ed=we((DE,p1)=>{p1.exports=`#uiBase.onMenu #spectateUI{display:block!important}#uiBase.onCompMenu.onMenu #specTimer,#uiBase.onMenu #specGMessage,#uiBase.onMenu #spec1,#uiBase.onMenu #specGameInfo,#uiBase.onMenu #spec0,#uiBase.onMenu #specControlHolder,#uiBase.onMenu #specNames{display:none!important}#uiBase.onMenu #spectateUI>#spectateHUD{box-sizing:border-box;display:flex!important;justify-content:center;height:.5rem;white-space:nowrap;width:max-content;position:fixed;top:calc(50% + 140px)}#uiBase.onMenu #spectateHUD #specGMessage{top:0}#uiBase.onMenu #spectateUI>#spectateHUD{z-index:1;transform:unset}#uiBase.onMenu .spectateInfo{position:fixed;top:calc(40% - 105px);left:50%;transform:translate(-50%,-50%)}#uiBase.onMenu #spectateUI div .spectateInfo #specTimer{background-color:#0000;padding:0 25px;font-size:42px;border-radius:.5em}#uiBase.onMenu #specKPDContr{display:none}#uiBase.onMenu #spectateUI div#specStats{position:absolute;top:calc(50% + 13em);left:50%;transform:translate(-50%);z-index:1}#uiBase.onMenu #spectateUI div#specStats:before{content:"Spectating";position:absolute;bottom:100%;left:50%;transform:translate(-50%);font-size:1.2em;padding-bottom:.5em} -`});var od={};A(od,{default:()=>h1});var Jf,Xf,td,h1,sd=w(()=>{"use strict";Jf=ue(ed(),1);D();Xf="kute_menuTimerCSS",td=class{constructor(){u.settings.toggleMenuTimer=e=>this.toggle(e),this.toggle(u.settings.data.menuTimer!==!1)}toggle(e){let t=document.getElementById(Xf);if(!e){t?.remove();return}if(t)return;let o=document.createElement("style");o.id=Xf,o.textContent=Jf.default,document.head.append(o)}},h1=new td});var id={};A(id,{default:()=>y1});function Qf(s){let e=/loadUserMod\(\s*(["`])(.*?)\1\s*,\s*(["`])(.*?)\3/.exec(s);return e?{name:e[2],url:e[4]}:null}function eg(s){try{let e=new URL(s);return e.protocol!=="https:"?null:e.hostname==="krunker.io"||e.hostname.endsWith(".krunker.io")?e.href:e.hostname==="dropbox.com"||e.hostname==="www.dropbox.com"?(e.hostname="dl.dropboxusercontent.com",e.search="",e.href):null}catch{return null}}function v1(s){return`${s.replace(/[\u0000-\u001f<>:"/\\|?*]/g,"").replace(/\s+/g," ").trim().replace(/[ .]+$/,"").slice(0,80)||"mod"}.zip`}async function w1(s){let e=await fetch(s);if(e.status===403||e.status===404)throw new Error("This mod's file is gone, its creator removed it");if(!e.ok)throw new Error(`The mod server answered ${e.status}`);if(Number(e.headers.get("content-length")??0)>Zf)throw new Error("That mod is too large");let t=await e.blob();if(t.size>Zf)throw new Error("That mod is too large");let o=new Uint8Array(await t.slice(0,2).arrayBuffer());if(o[0]!==80||o[1]!==75)throw new Error("That mod is not a zip file");return t}function k1(s,e){let t=document.createElement("a");t.href=URL.createObjectURL(s),t.download=e,t.click(),setTimeout(()=>URL.revokeObjectURL(t.href),6e4)}function tg(s,e,t,o){let n=!1;s.addEventListener("click",r=>{if(r.stopPropagation(),n)return;n=!0,e.style.color=nd.busy,e.textContent="hourglass_top";let i=v1(t);w1(o).then(a=>{k1(a,i),e.style.color=nd.done,e.textContent="download_done",u.showNotification(`Saved ${i} to your Downloads folder`,!1,4)}).catch(a=>{e.style.color=nd.failed,e.textContent="error_outline",u.showNotification(a instanceof TypeError?"Could not download the mod":a.message,!1,4)}).finally(()=>{n=!1})})}function og(s){let e=document.createElement("span");return e.className="material-icons",e.style.cssText=s,e.textContent="download",e}var rn,Zf,m1,f1,g1,b1,nd,rd,y1,ad=w(()=>{"use strict";D();rn="data-kute-mod",Zf=300*1024*1024,m1='[onclick^="downloadPack"]',f1="font-size:70px;color:#fff;",g1="position:absolute;right:30px;bottom:92px;box-sizing:content-box;width:240px;height:37px;padding:10px 6px 6px;border:3px solid #35e0e8;border-radius:6px;background:rgba(0,0,0,0.6);color:#fff;font-size:21px;text-align:center;cursor:pointer;",b1="font-size:32px;color:#fff;vertical-align:top;margin-top:-3px;margin-left:5px;",nd={busy:"#777",done:"#35e0e8",failed:"#ff7a7a"};rd=class{constructor(){this.pending=null,this.observer=new MutationObserver(()=>{this.pending===null&&(this.pending=setTimeout(()=>this.scan(),150))});let e=document.getElementById("menuWindow");e&&(this.observer.observe(e,{childList:!0,subtree:!0}),this.scan())}scan(){this.pending=null;let e=document.getElementById("menuWindow");if(!e)return;let t=[];for(let r of e.querySelectorAll('.mapActionB[onclick^="loadUserMod"]')){let i=r.parentElement;if(!i||i.querySelector(`[${rn}], ${m1}`))continue;let a=Qf(r.getAttribute("onclick")??""),l=a&&eg(a.url);a&&l&&t.push([i,this.listButton(a.name,l)])}let o=document.getElementById("bigMFeatPBtn"),n=o?.parentElement;if(o&&n&&!n.querySelector(`[${rn}]`)){let r=Qf(o.getAttribute("onclick")??""),i=r&&eg(r.url);r&&i&&t.push([n,[this.featuredButton(r.name,i)]])}if(t.length!==0){this.observer.disconnect();for(let[r,i]of t)r.append(...i);this.observer.observe(e,{childList:!0,subtree:!0})}}listButton(e,t){let o=document.createElement("div");o.className="mapActionSep",o.setAttribute(rn,"");let n=document.createElement("div");n.className="mapActionB",n.title="Download",n.setAttribute(rn,"");let r=og(f1);return n.append(r),tg(n,r,e,t),[o,n]}featuredButton(e,t){let o=document.createElement("div");o.setAttribute(rn,""),o.style.cssText=g1;let n=og(b1);return o.append("Download ",n),tg(o,n,e,t),o}},y1=new rd});var dd={};A(dd,{default:()=>A1});function Cr(s,e,t){return Math.min(t,Math.max(e,s))}function ld(s,e){let t=parseFloat(localStorage.getItem("kro_setngss_"+s)??"");return Number.isFinite(t)&&t>0?t:e}function ig(s,e){let t=s.createProgram();for(let[o,n]of[[s.VERTEX_SHADER,C1],[s.FRAGMENT_SHADER,e]]){let r=s.createShader(o);if(!r)return null;s.shaderSource(r,n),s.compileShader(r),s.attachShader(t,r)}return s.linkProgram(t),s.getProgramParameter(t,s.LINK_STATUS)?t:null}var x1,sg,S1,E1,ng,$1,rg,C1,M1,T1,cd,A1,ud=w(()=>{"use strict";D();as();x1="kuteMotionBlur",sg=1e3/60,S1=.4,E1=.002,ng=.2,$1=2,rg=.0024,C1=`#version 300 es + class="muted">${T(t*o)} KR gross if all ${o} sell · ${it(t/this.view.item.skin.fair-1)} vs estimate.`}filterHoldings(){let e=this.portfolioFilter.toLocaleLowerCase().trim();for(let t of this.shadow?.querySelectorAll("tr[data-skin]")??[]){let o=t;o.hidden=!o.querySelector(".itemIdentity")?.textContent?.toLocaleLowerCase().includes(e)}}filterListings(){let e=this.value("#kmListingMax"),t=this.value("#kmSerialMax"),o=this.value("#kmWearMax"),n=this.value("#kmAgeMax"),r=this.value("#kmSellerMax");for(let c of this.shadow?.querySelectorAll("#kmListingRows tr")??[]){let d=c;d.hidden=!!(e&&Number(d.dataset.price)>Number(e))||!!(t&&(!d.dataset.serial||Number(d.dataset.serial)>Number(t)))||!!(o&&(!d.dataset.wear||Number(d.dataset.wear)>Number(o)))||!!(n&&(!d.dataset.age||Number(d.dataset.age)>Number(n)))||!!(r&&(!d.dataset.sellerCount||Number(d.dataset.sellerCount)>Number(r)))}let i=this.shadow?.querySelector("#kmListingCount"),l=[...this.shadow?.querySelectorAll("#kmListingRows tr")??[]].filter(c=>!c.hidden).length;i&&(i.textContent=`${l} sampled listings shown; ${this.view?.listings?.total??"unknown"} reported listed.`)}applyFilters(e=1){this.show(this.searchTab(),this.readFilters(e))}readFilters(e){return{q:this.value("#kmQ").trim(),rarity:this.value("#kmRarity"),type:this.value("#kmType"),sort:this.value("#kmSort"),budget:this.value("#kmBudget"),minSales:this.value("#kmSales"),page:e}}click(e){let t=e.target instanceof Element?e.target.closest("button,tr[data-skin],tr[data-index-name],tr[data-category]"):null;if(!t||t.hasAttribute("disabled"))return;let o=t.dataset;if(o.externalUrl){e.preventDefault();try{let n=new URL(o.externalUrl);if(n.protocol!=="https:"||n.username||n.password||n.port)return;if(!(["github.com","kute.lol","krunker.io"].includes(n.hostname)||n.hostname==="discord.com"&&n.pathname.startsWith("/invite/"))){u.showNotification("This news link is not supported by Kute.",!1,6);return}if(n.hostname==="krunker.io"&&!u.hostFeatures?.includes("krunker-links")){u.showNotification("Update the Kute application to open Krunker news links.",!1,6);return}window.chrome.webview.postMessage(`open-url, ${n.href}`)}catch{}return}if(o.intelKind!==void 0){this.show("intelligence",o.intelKind);return}if(t.id==="kmClose"){this.close();return}if(t.id==="kmMaximize"){this.toggleMaximized();return}if(o.scale!==void 0){this.rescale(Number(o.scale));return}if(o.discover){if(o.discover===this.tab)return;o.discover==="deals"&&!this.saved.has("deals")&&(this.tab==="search"||this.tab==="active")?this.show("deals",{budget:this.value("#kmBudget")}):this.show(o.discover);return}if(o.nav==="search"){this.show(this.discoveryTab);return}if(o.nav){this.show(o.nav);return}if(o.skin){this.show("item",Number(o.skin));return}if(o.category){this.show("search",{...So(),type:o.category,minSales:"1"});return}if(o.page){this.applyFilters(Number(o.page));return}if(o.range){this.show("item",{...this.itemState(),range:o.range,zoom:1,offset:0},!0);return}if(o.chartMode){this.show("item",{...this.itemState(),candles:o.chartMode==="candles"},!0);return}if(o.pan!==void 0){this.show("item",{...this.itemState(),offset:Number(o.pan)},!0);return}if(o.zoom){this.show("item",{...this.itemState(),zoom:Number(o.zoom),offset:o.zoom==="1"?0:this.itemState().offset},!0);return}if(o.window){this.show("movers",o.window);return}if(o.indexName){this.show("indices",o.indexName);return}if(o.unwatch){if(!yo(Se().filter(n=>n.skin!==Number(o.unwatch)))){this.storageError();return}this.show("watchlist",this.arg,!0);return}if(o.remove!==void 0&&o.side){this.analyzer[o.side].splice(Number(o.remove),1),this.show("analyze",this.arg,!0);return}switch(o.action){case"discover":this.show("search",So());break;case"reset-search":this.show(this.searchTab(),this.tab==="active"?{...So(),minSales:"1",sort:"liquidity"}:So());break;case"back":this.show(this.previous);break;case"retry":this.retry();break;case"filters":this.applyFilters();break;case"deal-budget":this.show("deals",{budget:this.value("#kmDealBudget")});break;case"inventory":this.show("portfolio",this.value("#kmName").trim());break;case"analyze":this.show("analyze",this.arg,!0);break;case"clear-trade":this.analyzer={give:[],get:[],giveKr:0,getKr:0},this.show("analyze");break;case"watch":if(this.view?.item){if(!sc(this.view.item.skin)){this.storageError();return}this.show("item",this.arg,!0)}break;default:break}}storageError(){let e=this.shadow?.querySelector("#kmFootRight");e&&(e.textContent="Could not save on this device. The watchlist holds up to 100 items.")}async retry(){let{generation:e}=this;await W.retry(),e===this.generation&&await this.show(this.tab,this.arg)}changed(e){let t=e.target;if(t instanceof HTMLInputElement||t instanceof HTMLSelectElement)if(t.id==="kmAdvanced"){this.advanced=t.checked;try{localStorage.setItem(Ff,this.advanced?"1":"0")}catch{this.storageError()}this.show(this.tab,void 0,!0)}else if(t.id==="kmOverlay")this.show("item",{...this.itemState(),overlay:t.value},!0);else if(t.dataset.target){let o=Number(t.value),n=Se().map(r=>r.skin===Number(t.dataset.target)?{...r,target:o>0&&Number.isFinite(o)?o:null}:r);if(!yo(n)){this.storageError();return}this.show("watchlist",this.arg,!0)}else if(t.dataset.count!==void 0&&t.dataset.side){let o=this.analyzer[t.dataset.side][Number(t.dataset.count)];o&&(o.count=Math.min(1e4,Math.max(1,Math.floor(Number(t.value)||1))),t.value=String(o.count)),this.refreshTrade()}else if(t.dataset.kr){let o=Math.max(0,Math.min(1e9,Math.floor(Number(t.value)||0)));t.dataset.kr==="give"?this.analyzer.giveKr=o:this.analyzer.getKr=o,t.value=String(o),this.refreshTrade()}else t.closest("#kmFilters")&&t instanceof HTMLSelectElement&&this.applyFilters()}input(e){let t=e.target;if(t instanceof HTMLInputElement){if(t.id==="kmSellPrice"||t.id==="kmSellQuantity"){this.updatePlanner();return}if(["kmListingMax","kmSerialMax","kmWearMax","kmAgeMax","kmSellerMax"].includes(t.id)){this.filterListings();return}if(t.id==="kmHoldingFilter"){this.portfolioFilter=t.value,this.filterHoldings();return}}}key(e){if(!this.shadow||(e.stopImmediatePropagation(),this.itemSearch?.key(e))||e.isComposing)return;if(e.key==="Escape"){e.stopImmediatePropagation(),e.preventDefault(),this.close();return}if(e.ctrlKey&&!e.altKey&&["+","=","-","0"].includes(e.key)){e.preventDefault(),this.rescale({"-":-1,0:0}[e.key]??1);return}let t=this.shadow.activeElement;if(t?.matches("[data-discover]")&&["ArrowLeft","ArrowRight","Home","End"].includes(e.key)){e.preventDefault();let i=[...this.shadow.querySelectorAll("#kmDiscoverTabs button")],l=(i.indexOf(t)+(e.key==="ArrowRight"?1:-1)+i.length)%i.length;e.key==="Home"&&(l=0),e.key==="End"&&(l=i.length-1);let c=i[l];c.focus(),c.click();return}if(e.key==="Enter"&&t&&(t.closest("#kmFilters")?(e.preventDefault(),this.applyFilters()):t.id==="kmName"?(e.preventDefault(),this.show("portfolio",this.value("#kmName").trim())):t.matches("tr[data-skin],tr[data-index-name],tr[data-category]")&&(e.preventDefault(),t.click())),e.key!=="Tab")return;let o=[...this.shadow.querySelectorAll("button:not(:disabled):not([tabindex='-1']),input:not([type=hidden]),select,summary,[tabindex='0']")].filter(i=>i instanceof HTMLElement&&i.getClientRects().length&&!i.closest("[hidden]")),n=o[0],r=o.at(-1);e.shiftKey&&(t===n||!t)?(e.preventDefault(),r?.focus()):!e.shiftKey&&(t===r||!t)&&(e.preventDefault(),n?.focus())}},Xy=new Cr,Jy=Xy});var Zc={};A(Zc,{default:()=>Qy});var Jc,Zy,Qy,Mr=w(()=>{"use strict";F();Nt();xe();ec();oc();br();dc();Jc=class{constructor(){this.headerItem=document.createElement("div"),this.headerSeparator=document.createElement("div"),this.headerObserver=new MutationObserver(()=>this.placeButton()),this.onUnread=()=>this.updateBadge(),this.terminal=null,this.running=!1,this.warned=!1,u.settings.toggleMarket=e=>this.toggle(e),u.market={open:(e,t)=>this.open(e,t),toggle:e=>this.toggle(e)},this.toggle(!0)}toggle(e){if(e!==this.running)if(this.running=e,e){if(!W.hostSupported()){this.warned||(this.warned=!0,u.showNotification("The Kute Market needs a newer Kute. Update Kute to use it.",!1,8)),this.running=!1;return}if(he.offline()){this.running=!1;return}this.placeButton();let t=document.querySelector("#playerHeaderEl");t&&this.headerObserver.observe(t,{childList:!0,subtree:!0}),window.addEventListener(Ys,this.onUnread),fr.start(),gr.start(),Ct.start(),vr.start()}else this.headerObserver.disconnect(),window.removeEventListener(Ys,this.onUnread),this.headerItem.remove(),this.headerSeparator.remove(),fr.stop(),gr.stop(),Ct.stop(),vr.stop(),this.terminal?.close()}placeButton(){let e=document.querySelector("#playerHeaderEl .headerBarRight");if(!e||e.contains(this.headerItem))return;let t=[...e.querySelector(".nav-item")?.classList??[]].find(o=>o.startsWith("svelte-"))??"";this.headerItem.className=`nav-item ${t}`,this.headerItem.innerHTML=` Kute Market `,this.headerItem.onclick=()=>this.open(Ct.unread.size?"watchlist":void 0),this.headerSeparator.className="verticalSeparator",this.headerSeparator.style.cssText="height: 35px;",e.prepend(this.headerItem,this.headerSeparator),this.updateBadge()}updateBadge(){let e=this.headerItem.querySelector(".nav-badge");if(!e)return;let t=Ct.unread.size;e.textContent=String(Math.min(99,t)),e.style.display=t?"inline-block":"none"}async open(e,t){if(this.running){if(!this.terminal){let o=await Promise.resolve().then(()=>(Xc(),Yc)).catch(()=>null);if(!o)return;this.terminal=o.default}await this.terminal.open(e,t)}}},Zy=new Jc,Qy=Zy});var e1={};var jf=w(()=>{"use strict";Mr()});var Gf,Uf=w(()=>{Gf=`@keyframes kuteMmSlideDown{0%{transform:translate(-50%,-500%)}to{transform:translate(-50%)}}#kuteMatchmaker{position:absolute;top:8em;left:50%;z-index:2147482000;box-sizing:border-box;width:24em;padding:18px 22px;border-radius:14px;overflow:hidden;pointer-events:all;background:#12121699;backdrop-filter:blur(14px) saturate(120%);box-shadow:0 8px 48px #000c;display:flex;flex-direction:column;color:#fff;animation:kuteMmSlideDown .4s cubic-bezier(.16,1,.3,1) forwards}#kuteMmStatus{font-size:1.4em;color:#35e0e8;margin-bottom:.6em;text-align:center}#kuteMmStatus.mm-fail{color:#eb5656}#kuteMmFeed{display:flex;flex-direction:column;gap:.15em;overflow:hidden;min-height:5.6em;margin-bottom:.6em}#kuteMmFeed.mm-result{justify-content:center}@keyframes kuteMmFeedIn{0%{opacity:0;transform:translate(1em)}to{opacity:1;transform:translate(0)}}@keyframes kuteMmGrow{0%{opacity:0;transform:scale(.55)}65%{opacity:1;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}.mm-entry{display:flex;gap:.8em;padding:.2em .5em;font-size:.95em;font-family:GameFont,monospace;border-radius:.2em;animation:kuteMmFeedIn .12s ease forwards}.mm-entry:last-child:before{content:"\\25b8";color:#ffc147}.mm-entry.mm-pass{background:#4caf501a}.mm-entry.mm-pass .mm-region{color:#35e0e8}.mm-entry.mm-pass .mm-map{color:#ffffffe6}.mm-entry.mm-pass .mm-players{color:#4caf50}.mm-entry.mm-skip{background:#ffffff05}.mm-entry.mm-skip .mm-region{color:#ffffff4d}.mm-entry.mm-skip .mm-map{color:#ffffff80}.mm-entry.mm-skip .mm-players{color:#eb5656}.mm-entry.mm-skip .mm-icon{opacity:.45}.mm-region{min-width:2.5em;font-weight:700}.mm-map{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mm-players{min-width:3em;text-align:right;font-weight:600}.mm-icon{width:1.7em;height:1.7em;flex:none;object-fit:cover;border-radius:.25em;align-self:center;background:#ffffff0f}.mm-entry.mm-landed{box-shadow:inset 0 0 0 2px #35e0e8}.mm-entry.mm-found,.mm-entry.mm-none{justify-content:center;transform-origin:center;animation:kuteMmGrow .34s cubic-bezier(.2,.85,.3,1.25) forwards}.mm-entry.mm-found{font-size:1.25em;gap:.7em}.mm-entry.mm-found .mm-icon{width:2.4em;height:2.4em;border-radius:.3em}.mm-entry.mm-none{font-size:1.2em;color:#ffffff8c;background:#ffffff08}.mm-entry.mm-found:before,.mm-entry.mm-none:before{content:none}#kuteMmCounter{font-size:.85em;color:#ffc147;text-align:center;margin-bottom:.5em}#kuteMmCancel{text-align:center;border:.2em solid #eb5656;border-radius:.3em;font-size:1.1em;background:#0000004d;padding:.2em 1.2em;cursor:pointer;margin:0 auto;width:fit-content;transition:all .08s}#kuteMmCancel:hover{border-color:#fff;transform:scale(.95)}#kuteMmCancel:active{transform:scale(.85)} +`});var Wf=we((FE,o1)=>{o1.exports='

              Matchmaker Filters

              F6 joins the best lobby for these. Nothing picked in a group means all of it

              Regions

              Modes \u2605 on a mode to prefer it

              Preferred first, then any other mode. Modes rank above maps
              Drag to reorder, click to move to the top

              Maps \u2605 on a map to prefer it

              Preferred first, then any other map
              Drag to reorder, click to move to the top

              Lobby

              Reset
              Done
              '});var od={};A(od,{default:()=>b1});function eg(s){let e=i1.get(Xt(s));return e===void 0?null:Hs(e)}function g1(s,e){let t=eg(s);if(!t)return null;let o=document.createElement("img");return o.className=e,o.src=t,o.alt="",o.loading="lazy",o.onerror=()=>o.remove(),o}function an(s,e){let t=document.createElement("span");return t.className=s,t.textContent=e,t}function ed(s,e){let t=document.createElement("div");t.className=`mm-entry ${e}`;let o=g1(s.map,"mm-icon");return o&&t.append(o),t.append(an("mm-region",s.region),an("mm-map",s.map),an("mm-players",`${s.players}/${s.limit}`)),t}async function Xf(){let e=await(await fetch(d1,{signal:AbortSignal.timeout(Qf)})).json();return Array.isArray(e?.games)?e.games:[]}function Jf(s,e){let t=e.maps.length>0?new Set(e.maps.map(Xt)):a1;return s.map(o=>{let n=String(o[0]),r=o[4]??{},i=r.c===0||r.oc===1,a=String(r.i??""),l=Xt(a),c={id:n,region:n.split(":")[0],server:String(o[1]),players:Number(o[2]),limit:Number(o[3]),map:a,mode:s1[r.g]??"Unknown",timeLeft:Number(o[5]),passes:!1};return c.passes=i&&!c1.test(n)&&(e.regions.length===0||e.regions.includes(c.region))&&(e.modes.length===0||e.modes.includes(c.mode))&&t.has(l)&&c.players>=e.minPlayers&&c.players<=e.maxPlayers&&c.players0?c.timeLeft>=e.minTime:l1.has(l))&&!location.href.includes(n),c})}var s1,n1,Vf,Zf,r1,Xt,i1,a1,l1,c1,d1,Qf,u1,Yf,Qc,p1,h1,m1,f1,nn,rn,td,b1,sd=w(()=>{"use strict";Uf();F();Ae();No();sr();s1=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Hide & Seek","Infected","Race","Last Man Standing","Simon Says","Gun Game","Prop Hunt","Boss Hunt","Classic FFA","Deposit","Stalker","King of the Hill","One in the Chamber","Trade","Kill Confirmed","Defuse","Sharp Shooter","Traitor","Raid","Blitz","Domination","Squad Deathmatch","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],n1=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Gun Game","Classic FFA","Deposit","Kill Confirmed","Sharp Shooter","Domination","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],Vf={SV:"Silicon Valley",TOK:"Tokyo",FRA:"Frankfurt",MBI:"Mumbai",SYD:"Sydney",SIN:"Singapore",DAL:"Dallas",BHN:"Bahrain",BRZ:"Brazil",NY:"New York"},Zf=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Tropicano","Habitat","Atomic","Old_Burg","Throwback","Clockwork","Bazaar","Erupt","HQ","Lush","Vivo","Slide Moonlight","Eterno Simulator","Eterno Jump","Frontier","Piazza","Barnyard"],r1={SkyTemple:"Sky Temple",Krunk_Plaza:"Krunk Plaza",Old_Burg:"Old Burg"},Xt=s=>s.toLowerCase().replace(/[^a-z0-9]/g,""),i1=new Map(or.map((s,e)=>[Xt(s),e])),a1=new Set(Zf.map(Xt)),l1=new Set(["Eterno Jump","Slide Moonlight"].map(Xt)),c1=/[\s&#?/%\\]/,d1="https://matchmaker.krunker.io/game-list?hostname=krunker.io",Qf=1e4,u1=4,Yf=1100,Qc=80,p1=20,h1=180,m1=1200,f1=1100,nn={regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[],minPlayers:1,maxPlayers:6,minTime:120,sortByPlayers:!1,serverBrowser:!0,animation:!0,searchAfterMatch:!1},rn=s=>new Promise(e=>setTimeout(e,s));td=class{constructor(){this.activeRun=0,this.runCounter=0,this.candidates=[],this.popup=document.createElement("div"),this.popup.id="kuteMatchmaker",this.status=document.createElement("div"),this.status.id="kuteMmStatus",this.feed=document.createElement("div"),this.feed.id="kuteMmFeed",this.counter=document.createElement("div"),this.counter.id="kuteMmCounter";let e=document.createElement("div");e.id="kuteMmCancel",e.textContent="Cancel",e.onmouseenter=()=>window.SOUND?.play("tick_0",.1),e.onclick=()=>this.abort(),this.popup.append(this.status,this.feed,this.counter,e),this.cancelKey=t=>{t.key!=="Escape"||document.pointerLockElement||(t.preventDefault(),t.stopPropagation(),this.abort())},u.matchmaker={showFilters:()=>this.showFilters()},u.settings.toggleMatchmaker=()=>{},u.hostFeatures?.includes("matchmaker")&&(window.addEventListener("keydown",t=>{!ds(t,"matchmaker")||t.repeat||!u.settings.data.matchmaker||document.activeElement?.tagName!=="INPUT"&&this.start().catch(o=>console.error("[kute] matchmaker:",o))},!0),this.watchEndScreen())}watchEndScreen(){let e=document.getElementById("endUI");if(!e)return;let t=!1,o=e.style.display!=="none";document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&(t=!0)}),new MutationObserver(()=>{let n=e.style.display!=="none";n!==o&&(o=n,!(!n||!t)&&(t=!1,!(!u.settings.data.matchmaker||!this.filter.searchAfterMatch||window.getGameActivity?.()?.custom)&&this.start().catch(r=>console.error("[kute] matchmaker:",r))))}).observe(e,{attributes:!0,attributeFilter:["style"]})}get filter(){return{...nn,...u.settings.data.matchmakerFilter}}saveFilter(e){u.settings.data.matchmakerFilter=e,window.chrome.webview.postMessage(`set-config-json matchmakerFilter ${JSON.stringify(e)}`)}cancelled(e){return e!==this.activeRun}abort(){this.activeRun=0,window.playSelect?.(),this.dismiss()}dismiss(){document.removeEventListener("keydown",this.cancelKey,!0),this.popup.remove()}showPopup(){if(!document.querySelector("#kuteMatchmakerCSS")){let e=document.createElement("style");e.id="kuteMatchmakerCSS",e.textContent=Gf,document.head.append(e)}this.status.textContent="Connecting...",this.status.classList.remove("mm-fail"),this.feed.replaceChildren(),this.feed.classList.remove("mm-result"),this.counter.textContent="",document.addEventListener("keydown",this.cancelKey,!0),(document.querySelector("#uiBase")??document.body).append(this.popup)}pushEntry(e){for(this.feed.append(e);this.feed.children.length>u1;)this.feed.firstElementChild?.remove()}async animateScan(e,t,o){let n=t.length;if(n===0)return;this.status.textContent="Scanning lobbies...";let r=Math.floor(Yf/Qc),i=n>r?n/r:1,a=n>r?Qc:Math.max(p1,Math.min(Qc,Yf/n));for(let l=0;l[l.id,l])),a=[t,...this.candidates.filter(l=>l!==t)].find(l=>r.get(l.id)?.passes);a?this.join(a.id):this.openServerBrowser(o)}async start(){if(this.activeRun!==0)return;let e=++this.runCounter;this.activeRun=e;try{await this.search(e)}finally{this.activeRun===e&&(this.activeRun=0)}}async search(e){let{filter:t}=this;t.animation&&this.showPopup();let o,n;try{let[p,m]=await Promise.all([Xf(),Te("ping-regions","regionPings",Qf)]);o=Jf(p,t),n=m??{}}catch(p){if(console.error("[kute] matchmaker: no lobby list",p),this.cancelled(e)||!t.animation)return;this.status.textContent="Failed to fetch lobbies",this.status.classList.add("mm-fail"),await rn(2e3),this.cancelled(e)||this.dismiss();return}if(this.cancelled(e))return;let r=p=>n[p.server]??999,i=new Map(t.preferredMaps.map((p,m)=>[Xt(p),m])),a=new Map(t.preferredModes.map((p,m)=>[p,m])),l=p=>(a.get(p.mode)??a.size)*(i.size+1)+(i.get(Xt(p.map))??i.size),c=p=>p.limit-p.players<=1?1:0,d=o.filter(p=>p.passes);d.sort((p,m)=>{let f=l(p)-l(m),g=c(p)-c(m),b=r(p)-r(m),v=m.players-p.players;return t.sortByPlayers?f||g||v||b:f||g||b||v}),this.candidates=d;let h;if(d.length>0){let p=d[0],m=d.filter(f=>l(f)===l(p)&&c(f)===c(p)&&Math.abs(r(f)-r(p))<=20&&p.players-f.players<=2);h=m[Math.floor(Math.random()*m.length)]}if(t.animation&&await this.animateScan(e,o,h),!this.cancelled(e)){if(!h){if(t.animation){this.status.textContent="No Lobby Found",this.status.classList.add("mm-fail"),this.feed.classList.add("mm-result");let p=document.createElement("div");if(p.className="mm-entry mm-none",p.textContent="No matching lobbies",this.feed.replaceChildren(p),this.counter.textContent=t.serverBrowser?"Opening server browser...":"",await rn(f1),this.cancelled(e))return}this.openServerBrowser(t);return}if(t.animation){this.status.textContent="Lobby Found!",this.feed.classList.add("mm-result"),this.feed.replaceChildren(ed(h,"mm-pass mm-found"));let p=n[h.server]===void 0?"?":String(n[h.server]);if(this.counter.textContent=`${h.mode} \xB7 ${Vf[h.region]??h.region} \xB7 ${p}ms`,await rn(m1),this.cancelled(e))return}await this.verifyAndJoin(e,h,t)}}async showFilters(){let e=await Promise.resolve().then(()=>ue(Wf(),1)),{filter:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=(g,b,v)=>{let k=i(g);k.replaceChildren();for(let E of b){let L=document.createElement("div");if(L.className=`mmChip${v.includes(E.value)?" on":""}`,E.icon){let y=document.createElement("img");y.src=E.icon,y.alt="",y.loading="lazy",y.onerror=()=>y.remove(),L.append(y)}L.append(E.label),L.onclick=()=>{let y=v.indexOf(E.value);y===-1?v.push(E.value):v.splice(y,1),L.classList.toggle("on",y===-1)},k.append(L)}},l=(g,b,v)=>{if(!g)return;let k=document.createElement("img");k.src=g,k.alt="",v?k.loading="lazy":k.draggable=!1,k.onerror=()=>k.remove(),b.append(k)},c=g=>{let{preferred:b}=g,v=i(g.boxId);v.hidden=b.length===0;let k=v.querySelector(".mmGrid");k.replaceChildren();let E=()=>k.querySelectorAll(".mmNum").forEach((L,y)=>L.textContent=String(y+1));for(let L of b){let y=document.createElement("div");y.className="mmChip on mmRank",y.append(an("mmNum","")),l(g.icon(L),y,!1),y.append(g.label(L));let C=null;y.onpointerdown=I=>{y.setPointerCapture(I.pointerId),C={x:I.clientX,y:I.clientY,moved:!1}},y.onpointermove=I=>{if(!C||!C.moved&&Math.hypot(I.clientX-C.x,I.clientY-C.y)<5)return;C.moved=!0,y.classList.add("dragging");let _=[...k.children],H=_.findIndex(J=>{let B=J.getBoundingClientRect();return I.clientX>=B.left&&I.clientX<=B.right&&I.clientY>=B.top&&I.clientY<=B.bottom}),G=_.indexOf(y);H===-1||H===G||(b.splice(H,0,...b.splice(G,1)),y.remove(),k.insertBefore(y,k.children[H]??null),E())},y.onpointerup=()=>{y.classList.remove("dragging"),C&&!C.moved&&(b.unshift(...b.splice(b.indexOf(L),1)),window.SOUND?.play("tick_0",.1),c(g)),C=null},y.onpointercancel=y.onpointerup,k.append(y)}E()},d=g=>{let{picked:b,preferred:v}=g,k=i(g.gridId);k.replaceChildren();for(let E of g.values){let L=v.includes(E),y=document.createElement("div");y.className=`mmChip${b.includes(E)?" on":""}${L?" preferred":""}`,l(g.icon(E),y,!0),y.append(g.label(E));let C=an("mmStar","\u2605");C.title=L?"Preferred, click to remove":`Prefer this ${g.noun}`,C.onclick=I=>{I.stopPropagation(),L?v.splice(v.indexOf(E),1):(v.push(E),b.length>0&&!b.includes(E)&&b.push(E)),d(g)},y.append(C),y.onclick=()=>{let I=b.indexOf(E);I!==-1?(b.splice(I,1),L&&v.splice(v.indexOf(E),1)):b.length===0?b.push(...new Set([...v,E])):b.push(E),d(g)},k.append(y)}c(g)},h=()=>{a("mmRegions",Object.entries(Vf).map(([g,b])=>({value:g,label:b})),t.regions),d({gridId:"mmModes",boxId:"mmModeRanks",noun:"mode",values:n1,picked:t.modes,preferred:t.preferredModes,label:g=>g,icon:()=>null}),d({gridId:"mmMaps",boxId:"mmMapRanks",noun:"map",values:Zf,picked:t.maps,preferred:t.preferredMaps,label:g=>r1[g]??g,icon:eg}),i("mmMinPlayers").value=String(t.minPlayers),i("mmMaxPlayers").value=String(t.maxPlayers),i("mmMinTime").value=String(t.minTime),i("mmSortByPlayers").checked=t.sortByPlayers,i("mmServerBrowser").checked=t.serverBrowser,i("mmAnimation").checked=t.animation,i("mmSearchAfterMatch").checked=t.searchAfterMatch};t.regions=[...t.regions],t.modes=[...t.modes],t.maps=[...t.maps],t.preferredMaps=[...t.preferredMaps],t.preferredModes=[...t.preferredModes],h();let p=(g,b,v,k)=>{let E=Number.parseInt(i(g).value,10);return Number.isNaN(E)?k:Math.min(v,Math.max(b,E))},m=new AbortController,f=()=>{m.abort(),o.remove(),this.saveFilter({...t,minPlayers:p("mmMinPlayers",0,7,nn.minPlayers),maxPlayers:p("mmMaxPlayers",0,7,nn.maxPlayers),minTime:p("mmMinTime",0,480,nn.minTime),sortByPlayers:i("mmSortByPlayers").checked,serverBrowser:i("mmServerBrowser").checked,animation:i("mmAnimation").checked,searchAfterMatch:i("mmSearchAfterMatch").checked})};i("mmDone").onclick=f,i("mmReset").onclick=()=>{Object.assign(t,nn,{regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[]}),h()},o.addEventListener("mousedown",g=>{g.target===o&&f()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),f())},{signal:m.signal,capture:!0}),document.body.append(o)}},b1=new td});var nd=we((GE,v1)=>{v1.exports=`#uiBase.onMenu #spectateUI{display:block!important}#uiBase.onCompMenu.onMenu #specTimer,#uiBase.onMenu #specGMessage,#uiBase.onMenu #spec1,#uiBase.onMenu #specGameInfo,#uiBase.onMenu #spec0,#uiBase.onMenu #specControlHolder,#uiBase.onMenu #specNames{display:none!important}#uiBase.onMenu #spectateUI>#spectateHUD{box-sizing:border-box;display:flex!important;justify-content:center;height:.5rem;white-space:nowrap;width:max-content;position:fixed;top:calc(50% + 140px)}#uiBase.onMenu #spectateHUD #specGMessage{top:0}#uiBase.onMenu #spectateUI>#spectateHUD{z-index:1;transform:unset}#uiBase.onMenu .spectateInfo{position:fixed;top:calc(40% - 105px);left:50%;transform:translate(-50%,-50%)}#uiBase.onMenu #spectateUI div .spectateInfo #specTimer{background-color:#0000;padding:0 25px;font-size:42px;border-radius:.5em}#uiBase.onMenu #specKPDContr{display:none}#uiBase.onMenu #spectateUI div#specStats{position:absolute;top:calc(50% + 13em);left:50%;transform:translate(-50%);z-index:1}#uiBase.onMenu #spectateUI div#specStats:before{content:"Spectating";position:absolute;bottom:100%;left:50%;transform:translate(-50%);font-size:1.2em;padding-bottom:.5em} +`});var id={};A(id,{default:()=>w1});var og,tg,rd,w1,ad=w(()=>{"use strict";og=ue(nd(),1);F();tg="kute_menuTimerCSS",rd=class{constructor(){u.settings.toggleMenuTimer=e=>this.toggle(e),this.toggle(u.settings.data.menuTimer!==!1)}toggle(e){let t=document.getElementById(tg);if(!e){t?.remove();return}if(t)return;let o=document.createElement("style");o.id=tg,o.textContent=og.default,document.head.append(o)}},w1=new rd});var dd={};A(dd,{default:()=>M1});function ng(s){let e=/loadUserMod\(\s*(["`])(.*?)\1\s*,\s*(["`])(.*?)\3/.exec(s);return e?{name:e[2],url:e[4]}:null}function rg(s){try{let e=new URL(s);return e.protocol!=="https:"?null:e.hostname==="krunker.io"||e.hostname.endsWith(".krunker.io")?e.href:e.hostname==="dropbox.com"||e.hostname==="www.dropbox.com"?(e.hostname="dl.dropboxusercontent.com",e.search="",e.href):null}catch{return null}}function E1(s){return`${s.replace(/[\u0000-\u001f<>:"/\\|?*]/g,"").replace(/\s+/g," ").trim().replace(/[ .]+$/,"").slice(0,80)||"mod"}.zip`}async function $1(s){let e=await fetch(s);if(e.status===403||e.status===404)throw new Error("This mod's file is gone, its creator removed it");if(!e.ok)throw new Error(`The mod server answered ${e.status}`);if(Number(e.headers.get("content-length")??0)>sg)throw new Error("That mod is too large");let t=await e.blob();if(t.size>sg)throw new Error("That mod is too large");let o=new Uint8Array(await t.slice(0,2).arrayBuffer());if(o[0]!==80||o[1]!==75)throw new Error("That mod is not a zip file");return t}function C1(s,e){let t=document.createElement("a");t.href=URL.createObjectURL(s),t.download=e,t.click(),setTimeout(()=>URL.revokeObjectURL(t.href),6e4)}function ig(s,e,t,o){let n=!1;s.addEventListener("click",r=>{if(r.stopPropagation(),n)return;n=!0,e.style.color=ld.busy,e.textContent="hourglass_top";let i=E1(t);$1(o).then(a=>{C1(a,i),e.style.color=ld.done,e.textContent="download_done",u.showNotification(`Saved ${i} to your Downloads folder`,!1,4)}).catch(a=>{e.style.color=ld.failed,e.textContent="error_outline",u.showNotification(a instanceof TypeError?"Could not download the mod":a.message,!1,4)}).finally(()=>{n=!1})})}function ag(s){let e=document.createElement("span");return e.className="material-icons",e.style.cssText=s,e.textContent="download",e}var ln,sg,k1,y1,x1,S1,ld,cd,M1,ud=w(()=>{"use strict";F();ln="data-kute-mod",sg=300*1024*1024,k1='[onclick^="downloadPack"]',y1="font-size:70px;color:#fff;",x1="position:absolute;right:30px;bottom:92px;box-sizing:content-box;width:240px;height:37px;padding:10px 6px 6px;border:3px solid #35e0e8;border-radius:6px;background:rgba(0,0,0,0.6);color:#fff;font-size:21px;text-align:center;cursor:pointer;",S1="font-size:32px;color:#fff;vertical-align:top;margin-top:-3px;margin-left:5px;",ld={busy:"#777",done:"#35e0e8",failed:"#ff7a7a"};cd=class{constructor(){this.pending=null,this.observer=new MutationObserver(()=>{this.pending===null&&(this.pending=setTimeout(()=>this.scan(),150))});let e=document.getElementById("menuWindow");e&&(this.observer.observe(e,{childList:!0,subtree:!0}),this.scan())}scan(){this.pending=null;let e=document.getElementById("menuWindow");if(!e)return;let t=[];for(let r of e.querySelectorAll('.mapActionB[onclick^="loadUserMod"]')){let i=r.parentElement;if(!i||i.querySelector(`[${ln}], ${k1}`))continue;let a=ng(r.getAttribute("onclick")??""),l=a&&rg(a.url);a&&l&&t.push([i,this.listButton(a.name,l)])}let o=document.getElementById("bigMFeatPBtn"),n=o?.parentElement;if(o&&n&&!n.querySelector(`[${ln}]`)){let r=ng(o.getAttribute("onclick")??""),i=r&&rg(r.url);r&&i&&t.push([n,[this.featuredButton(r.name,i)]])}if(t.length!==0){this.observer.disconnect();for(let[r,i]of t)r.append(...i);this.observer.observe(e,{childList:!0,subtree:!0})}}listButton(e,t){let o=document.createElement("div");o.className="mapActionSep",o.setAttribute(ln,"");let n=document.createElement("div");n.className="mapActionB",n.title="Download",n.setAttribute(ln,"");let r=ag(y1);return n.append(r),ig(n,r,e,t),[o,n]}featuredButton(e,t){let o=document.createElement("div");o.setAttribute(ln,""),o.style.cssText=x1;let n=ag(S1);return o.append("Download ",n),ig(o,n,e,t),o}},M1=new cd});var md={};A(md,{default:()=>_1});function Tr(s,e,t){return Math.min(t,Math.max(e,s))}function pd(s,e){let t=parseFloat(localStorage.getItem("kro_setngss_"+s)??"");return Number.isFinite(t)&&t>0?t:e}function ug(s,e){let t=s.createProgram();for(let[o,n]of[[s.VERTEX_SHADER,P1],[s.FRAGMENT_SHADER,e]]){let r=s.createShader(o);if(!r)return null;s.shaderSource(r,n),s.compileShader(r),s.attachShader(t,r)}return s.linkProgram(t),s.getProgramParameter(t,s.LINK_STATUS)?t:null}var T1,lg,A1,L1,cg,R1,dg,P1,I1,N1,hd,_1,fd=w(()=>{"use strict";F();cs();T1="kuteMotionBlur",lg=1e3/60,A1=.4,L1=.002,cg=.2,R1=2,dg=.0024,P1=`#version 300 es void main(){ vec2 p = vec2((gl_VertexID << 1) & 2, gl_VertexID & 2); gl_Position = vec4(p * 2.0 - 1.0, 0.0, 1.0); -}`,M1=s=>`#version 300 es +}`,I1=s=>`#version 300 es precision highp float; uniform sampler2D source; out vec4 color; @@ -1247,15 +1249,15 @@ void main(){ ivec2 p = ivec2(gl_FragCoord.xy); vec3 c = texelFetch(source, ivec2(p.x, size.y - 1 - p.y), 0).rgb; color = vec4(pow(c, vec3(${s})), 1.0); -}`,T1=s=>`#version 300 es +}`,N1=s=>`#version 300 es precision highp float; uniform sampler2D history; out vec4 color; void main(){ color = vec4(pow(texelFetch(history, ivec2(gl_FragCoord.xy), 0).rgb, vec3(1.0 / ${s})), 1.0); -}`;cd=class{constructor(){this.enabled=!1,this.running=!1,this.moveX=0,this.moveY=0,this.scaleX=0,this.scaleY=0,this.weight=0,this.lastFrame=0,this.hasHistory=!1,this.game=null,this.overlay=null,this.gl=null,this.accumulate=null,this.present=null,this.source=null,this.history=null,this.historyBuffer=null,this.historyFormat=0,this.unsupported=!1,this.onMouseMove=e=>{document.pointerLockElement!==null&&(this.moveX+=e.movementX,this.moveY+=e.movementY,this.running||(this.running=!0,this.lastFrame=0,this.readScale(),Mn(this.onFrameEnd)))},this.onPointerLockChange=()=>this.stop(),this.onFrameEnd=e=>this.frame(e),this.onContextLost=()=>this.release(),u.settings.toggleMotionBlur=e=>this.toggle(e),this.toggle(!!u.settings.data.motionBlur)}toggle(e){if(e!==this.enabled){if(this.enabled=e,e){window.addEventListener("mousemove",this.onMouseMove,!0),document.addEventListener("pointerlockchange",this.onPointerLockChange);return}window.removeEventListener("mousemove",this.onMouseMove,!0),document.removeEventListener("pointerlockchange",this.onPointerLockChange),this.stop(),this.unsupported=!1,this.gl?.getExtension("WEBGL_lose_context")?.loseContext(),this.release(),this.game=null}}stop(){this.running&&Mn(null),this.running=!1,this.moveX=0,this.moveY=0,this.weight=0,this.hasHistory=!1,this.overlay&&(this.overlay.style.display="none")}release(){this.overlay?.removeEventListener("webglcontextlost",this.onContextLost),this.overlay?.remove(),this.overlay=null,this.gl=null,this.accumulate=null,this.present=null,this.source=null,this.history=null,this.historyBuffer=null,this.hasHistory=!1}readScale(){let e=Cr(ld("fov",100),10,170)*Math.PI/180,t=.5/Math.tan(e/2);this.scaleX=rg*ld("sensitivityX",1)*t,this.scaleY=rg*ld("sensitivityY",1)*t}createContext(){let e=document.createElement("canvas");e.id=x1,e.style.cssText="position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;contain:strict;display:none";let t=e.getContext("webgl2",{alpha:!1,antialias:!1,depth:!1,stencil:!1,preserveDrawingBuffer:!1});if(!t)return!1;let o=!!(t.getExtension("EXT_color_buffer_float")||t.getExtension("EXT_color_buffer_half_float")),n=o?"2.2":"1.0",r=ig(t,M1(n)),i=ig(t,T1(n));if(!r||!i)return!1;t.useProgram(r),t.uniform1i(t.getUniformLocation(r,"source"),0),t.useProgram(i),t.uniform1i(t.getUniformLocation(i,"history"),1);let a=t.createTexture();t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,a),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let l=t.createTexture();t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,l),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let c=t.createFramebuffer();return t.blendFunc(t.CONSTANT_ALPHA,t.ONE_MINUS_CONSTANT_ALPHA),e.addEventListener("webglcontextlost",this.onContextLost),this.overlay=e,this.gl=t,this.accumulate=r,this.present=i,this.source=a,this.history=l,this.historyBuffer=c,this.historyFormat=o?t.RGBA16F:t.RGBA8,!0}attach(){this.game?.isConnected||(this.game=document.querySelector("body > canvas:not([id])"));let{game:e}=this;if(!e)return!1;if(!this.overlay&&(this.unsupported||!this.createContext()))return this.unsupported=!0,!1;let{overlay:t,gl:o}=this;return!t||!o?!1:(t.previousElementSibling!==e&&e.after(t),(t.width!==e.width||t.height!==e.height)&&(t.width=e.width,t.height=e.height,o.viewport(0,0,e.width,e.height),o.activeTexture(o.TEXTURE1),o.texImage2D(o.TEXTURE_2D,0,this.historyFormat,e.width,e.height,0,o.RGBA,this.historyFormat===o.RGBA8?o.UNSIGNED_BYTE:o.HALF_FLOAT,null),o.bindFramebuffer(o.FRAMEBUFFER,this.historyBuffer),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,this.history,0),this.hasHistory=!1),!0)}frame(e){let t=this.lastFrame?Cr(e-this.lastFrame,1,100):sg;this.lastFrame=e;let o=Math.hypot(this.moveX*this.scaleX,this.moveY*this.scaleY)*(1e3/t);this.moveX=0,this.moveY=0;let n=Cr((o-ng)/($1-ng),0,1),i=Cr(Number(u.settings.data.motionBlurStrength)||0,0,100)/100*S1*n*n*(3-2*n);if(this.weight+=(i-this.weight)*(1-Math.exp(-t/(i>this.weight?6:12))),this.weight{lg=`#kuteNukeCounter{position:absolute;left:94%;top:50%;transform:translate(-50%,-50%);z-index:10;display:flex;align-items:center;gap:.3em;font-family:GameFont,monospace;font-size:26px;color:#fff;white-space:nowrap;pointer-events:none;text-shadow:1px 1px 3px rgba(0,0,0,.9)}#uiBase.onMenu #kuteNukeCounter{display:none}#kuteNukeCounter.nukeBg{padding:.2em .5em;border-radius:.25em;background:#00000059}.nukeIcon{color:#ffc147}.nukeGoal{color:#fff9}#kuteNukeCounter.nukeGoalMet .nukeCount{color:#9eeb56}@keyframes kuteNukeGain{0%{opacity:0;transform:scale(.6)}12%{opacity:1;transform:scale(1)}80%{opacity:1}to{opacity:0}}.nukeGain{color:#9eeb56;animation:kuteNukeGain 8s ease forwards} -`});var cg=we((GE,R1)=>{R1.exports='

              Nuke Counter

              Your nuke total, in game. It updates when a match ends
              Where it sits and how big it is belongs to the HUD editor
              Place it
              Done
              '});var md={};A(md,{default:()=>H1});function z1(s,e,t){return Math.min(t,Math.max(e,Number(s)||0))}function pd(s){return s.toLocaleString("en-US")}var P1,I1,N1,_1,dg,B1,hd,H1,fd=w(()=>{"use strict";ag();D();P1={goal:0,background:!0},I1="https://gapi.svc.krunker.io/players/",N1=2e3,_1=3e4,dg=[5e3,2e4],B1=8e3;hd=class{constructor(){this.overlay=null,this.nukes=null,this.nukesFor="",this.noStat=!1,this.fetching=!1,this.lastTry=0,this.endWasUp=!1,this.tick=null,this.commitTimers=[],u.nukeCounter={showOptions:()=>this.showOptions()},u.settings.toggleNukeCounter=e=>this.toggle(e),this.toggle(!!u.settings.data.nukeCounter)}accountName(){try{return window.localStorage.getItem("krunker_username")??""}catch{return""}}get config(){return{...P1,...u.settings.data.nukeCounterConfig}}saveConfig(e){u.settings.data.nukeCounterConfig=e,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(e)}`)}toggle(e){if(!e){this.destroy();return}if(!document.querySelector("#kuteNukeCounterCSS")){let t=document.createElement("style");t.id="kuteNukeCounterCSS",t.textContent=lg,document.head.append(t)}this.inject(),this.nukes===null&&this.refresh(),this.tick??=setInterval(()=>this.onTick(),N1)}destroy(){this.tick!==null&&(clearInterval(this.tick),this.tick=null);for(let e of this.commitTimers)clearTimeout(e);this.commitTimers=[],this.overlay?.remove(),this.overlay=null,document.querySelector("#kuteNukeCounterCSS")?.remove(),this.endWasUp=!1}inject(){if(!this.accountName()||this.overlay?.isConnected)return;this.overlay?.remove();let e=document.createElement("div");e.id="kuteNukeCounter",e.innerHTML='\u2622\u2014',(document.querySelector("#uiBase")??document.body).append(e),this.overlay=e,this.applyConfig(),this.render()}applyConfig(){this.overlay?.classList.toggle("nukeBg",this.config.background)}render(){let{overlay:e}=this;if(!e)return;let{goal:t}=this.config,o=e.querySelector(".nukeCount"),n=e.querySelector(".nukeGoal");o&&(o.textContent=this.nukes===null?"\u2014":pd(this.nukes)),n&&(n.style.display=t>0?"":"none",n.textContent=`/ ${pd(t)}`),e.classList.toggle("nukeGoalMet",t>0&&this.nukes!==null&&this.nukes>=t)}showGain(e){let{overlay:t}=this;if(!t||e<=0)return;t.querySelector(".nukeGain")?.remove();let o=document.createElement("span");o.className="nukeGain",o.textContent=`+${pd(e)}`,t.append(o),setTimeout(()=>o.remove(),B1)}refresh(){let e=this.accountName();!e||this.fetching||(this.fetching=!0,this.lastTry=Date.now(),window.fetch(I1+encodeURIComponent(e),{credentials:"omit",signal:AbortSignal.timeout(1e4)}).then(t=>t.ok?t.json():null).then(t=>{let o=t?.data?.player_stats?.n;if(typeof o=="number"){let n=this.nukes===null||this.nukesFor!==e?0:o-this.nukes;this.nukes=o,this.noStat=!1,this.nukesFor=e,this.render(),this.showGain(n)}else t&&(this.noStat=!0,this.nukesFor=e)}).catch(()=>{}).finally(()=>{this.fetching=!1}))}onTick(){this.inject(),this.accountName()!==this.nukesFor&&(this.nukes!==null||this.noStat)&&(this.nukes=null,this.noStat=!1,this.lastTry=0,this.render()),this.nukes===null&&!this.noStat&&Date.now()-this.lastTry>_1&&this.refresh();let t=document.querySelector("#endUI"),o=!!t&&t.style.display!=="none";o&&!this.endWasUp&&this.commitTimers.length===0&&(this.commitTimers=dg.map((n,r)=>setTimeout(()=>{r===dg.length-1&&(this.commitTimers=[]),this.refresh()},n))),this.endWasUp=o}async showOptions(){let e=await Promise.resolve().then(()=>ue(cg(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=d=>r.querySelector(`#${d}`),a=()=>{u.settings.data.nukeCounterConfig=t,this.applyConfig(),this.render()};i("nkGoalInput").value=String(t.goal),i("nkBackground").checked=t.background,i("nkGoalInput").oninput=d=>{let h=Number.parseInt(d.target.value,10);t.goal=Number.isNaN(h)?0:z1(h,0,1e6),a()},i("nkBackground").onchange=d=>{t.background=d.target.checked,a()};let l=new AbortController,c=()=>{l.abort(),o.remove(),this.saveConfig(t)};i("nkDone").onclick=c,i("nkPlace").onclick=()=>{c(),u.hudEditor?.edit()},o.addEventListener("mousedown",d=>{d.target===o&&c()}),document.addEventListener("keydown",d=>{d.key==="Escape"&&(d.stopPropagation(),c())},{signal:l.signal,capture:!0}),document.body.append(o)}},H1=new hd});var ug=we((YE,O1)=>{O1.exports=`#kute-rank-list-btn{position:absolute;top:15px;right:30px;background-color:#5ce05a;color:#000;font-family:GameFont,sans-serif;font-size:14px;font-weight:700;padding:5px 15px;border-radius:4px;letter-spacing:1px;cursor:pointer;transition:transform .2s,background-color .2s;display:flex;align-items:center;z-index:10;text-transform:uppercase;box-shadow:0 2px 4px #0006}#kute-rank-list-btn:hover{transform:scale(1.05);background-color:#6efc6c;color:#000}#kute-rank-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000d9;z-index:99999;display:flex;justify-content:center;align-items:center;backdrop-filter:blur(4px)}.rank-popup-content{background:#151515;border:2px solid #333;border-top:4px solid #5ce05a;width:700px;max-width:90%;max-height:85vh;border-radius:8px;box-shadow:0 10px 40px #000c;display:flex;flex-direction:column;overflow:hidden;animation:popIn .3s cubic-bezier(.18,.89,.32,1.28)}@keyframes popIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.rank-popup-header{padding:20px;background:#ffffff08;border-bottom:2px solid rgba(255,255,255,.05);display:flex;justify-content:space-between;align-items:center}.rank-popup-header h2{margin:0;color:#fff;font-family:GameFont,sans-serif;font-size:24px;letter-spacing:1px}.rank-popup-close{font-size:24px;color:#aaa;cursor:pointer;font-weight:700;line-height:1}.rank-popup-close:hover{color:#eb5656}.rank-grid-container{padding:20px;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.rank-grid-item{background:#ffffff0d;padding:10px;border-radius:6px;display:flex;align-items:center;gap:12px;border:1px solid transparent}.rank-grid-item:hover{background:#ffffff1a;border-color:#fff3}.rank-grid-item img{height:45px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5))}.r-details{display:flex;flex-direction:column}.r-name{font-family:GameFont,sans-serif;font-size:16px;font-weight:700;margin-bottom:2px;text-shadow:1px 1px 0 #000}.r-elo{font-family:monospace;color:#888;font-size:13px;background:#0000004d;padding:2px 6px;border-radius:4px;display:inline-block;width:max-content}.rank-grid-container::-webkit-scrollbar{width:8px}.rank-grid-container::-webkit-scrollbar-thumb{background:#444;border-radius:4px}.rank-grid-container::-webkit-scrollbar-thumb:hover{background:#5ce05a}#kute-elo-tracker{width:100%;margin-top:5px;margin-bottom:10px;background:#0006;padding:8px 12px;border-radius:6px;border:1px solid rgba(255,255,255,.08);box-sizing:border-box}.elo-info-row{display:flex;align-items:center;gap:15px;justify-content:space-between}.elo-rank-img{height:28px;width:auto;display:block;margin-bottom:2px;filter:drop-shadow(0px 0px 3px rgba(0,0,0,.5))}.rank-current-container,.rank-next-container{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#bbb;font-family:GameFont,sans-serif;font-size:10px;line-height:1;min-width:50px}.rank-next-container span,.rank-current-container span{color:#fff;text-transform:uppercase;font-weight:700;letter-spacing:.5px}#kute-rank-list-btn span{font-size:16px!important;vertical-align:middle;margin-right:4px}.elo-progress-bar-bg{flex-grow:1;height:22px;background:#151515;border-radius:4px;position:relative;overflow:hidden;box-shadow:inset 0 2px 5px #00000080;border:1px solid #333}.elo-progress-bar-fill{height:100%;background-color:#fb8c00;background-image:linear-gradient(180deg,#fff3,#fff0);transition:width .8s cubic-bezier(.22,1,.36,1);box-shadow:0 0 10px #fb8c0066;position:relative}.elo-progress-bar-fill:after{content:"";position:absolute;right:0;top:0;bottom:0;width:1px;background:#fff;opacity:.7;box-shadow:0 0 5px #fff}.rank-name{margin-bottom:2px!important}.elo-progress-text{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;align-items:center;justify-content:center;color:#fff;text-shadow:1px 1px 2px #000,0 0 4px #000;font-weight:700;font-family:GameFont,sans-serif;font-size:14px;z-index:5;letter-spacing:1px}.rank-and-stats{justify-content:flex-start;gap:5px}.season-banner.svelte-s4rbwd{right:150px!important} -`});var bd={};A(bd,{default:()=>D1});var gd,D1,vd=w(()=>{"use strict";Ae();gd=class{constructor(){this.ranks=[{rank:"Unranked",elo:null,color:"#FFFFFF",image:"rank_unranked.svg"},{rank:"Bronze 1",elo:0,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Bronze 2",elo:200,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Bronze 3",elo:400,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Silver 1",elo:700,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Silver 2",elo:900,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Silver 3",elo:1100,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Gold 1",elo:1300,color:"#FFD700",image:"rank_gold.svg"},{rank:"Gold 2",elo:1600,color:"#FFD700",image:"rank_gold.svg"},{rank:"Gold 3",elo:2e3,color:"#FFD700",image:"rank_gold.svg"},{rank:"Platinum",elo:2300,color:"#4B69FF",image:"rank_platinum.svg"},{rank:"Diamond",elo:3e3,color:"#4B69FF",image:"rank_diamond.svg"},{rank:"Master",elo:3300,color:"#EE7032",image:"rank_master.svg"},{rank:"Kracked",elo:4700,color:"#FF0000",image:"rank_kracked.svg"}],this.observer=new MutationObserver(()=>this.checkForMenu());let e=window.openRankedMenu;window.openRankedMenu=()=>{e(),this.observer.observe(U(".rankedMenuModal"),{childList:!0,subtree:!0});let t=setInterval(()=>{document.querySelector(".rankedMenuModal")||(clearInterval(t),this.observer.disconnect())},5e3)},Promise.resolve().then(()=>ue(ug(),1)).then(t=>{let o=document.createElement("style");o.textContent=t.default,document.head.append(o)})}checkForMenu(){let e=document.querySelector(".rank-card"),t=document.querySelector(".rank-and-stats");e&&t&&(t.querySelector("#kute-elo-tracker")||this.injectBar(t),e.querySelector("#kute-rank-list-btn")||this.injectRankListButton(e))}injectRankListButton(e){let t=document.createElement("div");t.id="kute-rank-list-btn",t.className="season-banner",t.innerHTML='list Ranks',t.onclick=()=>this.openPopup(),window.getComputedStyle(e).position==="static"&&(e.style.position="relative"),e.appendChild(t)}openPopup(){if(document.getElementById("kute-rank-overlay"))return;let e="";for(let o of this.ranks)e+=` +}`;hd=class{constructor(){this.enabled=!1,this.running=!1,this.moveX=0,this.moveY=0,this.scaleX=0,this.scaleY=0,this.weight=0,this.lastFrame=0,this.hasHistory=!1,this.game=null,this.overlay=null,this.gl=null,this.accumulate=null,this.present=null,this.source=null,this.history=null,this.historyBuffer=null,this.historyFormat=0,this.unsupported=!1,this.onMouseMove=e=>{document.pointerLockElement!==null&&(this.moveX+=e.movementX,this.moveY+=e.movementY,this.running||(this.running=!0,this.lastFrame=0,this.readScale(),An(this.onFrameEnd)))},this.onPointerLockChange=()=>this.stop(),this.onFrameEnd=e=>this.frame(e),this.onContextLost=()=>this.release(),u.settings.toggleMotionBlur=e=>this.toggle(e),this.toggle(!!u.settings.data.motionBlur)}toggle(e){if(e!==this.enabled){if(this.enabled=e,e){window.addEventListener("mousemove",this.onMouseMove,!0),document.addEventListener("pointerlockchange",this.onPointerLockChange);return}window.removeEventListener("mousemove",this.onMouseMove,!0),document.removeEventListener("pointerlockchange",this.onPointerLockChange),this.stop(),this.unsupported=!1,this.gl?.getExtension("WEBGL_lose_context")?.loseContext(),this.release(),this.game=null}}stop(){this.running&&An(null),this.running=!1,this.moveX=0,this.moveY=0,this.weight=0,this.hasHistory=!1,this.overlay&&(this.overlay.style.display="none")}release(){this.overlay?.removeEventListener("webglcontextlost",this.onContextLost),this.overlay?.remove(),this.overlay=null,this.gl=null,this.accumulate=null,this.present=null,this.source=null,this.history=null,this.historyBuffer=null,this.hasHistory=!1}readScale(){let e=Tr(pd("fov",100),10,170)*Math.PI/180,t=.5/Math.tan(e/2);this.scaleX=dg*pd("sensitivityX",1)*t,this.scaleY=dg*pd("sensitivityY",1)*t}createContext(){let e=document.createElement("canvas");e.id=T1,e.style.cssText="position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;contain:strict;display:none";let t=e.getContext("webgl2",{alpha:!1,antialias:!1,depth:!1,stencil:!1,preserveDrawingBuffer:!1});if(!t)return!1;let o=!!(t.getExtension("EXT_color_buffer_float")||t.getExtension("EXT_color_buffer_half_float")),n=o?"2.2":"1.0",r=ug(t,I1(n)),i=ug(t,N1(n));if(!r||!i)return!1;t.useProgram(r),t.uniform1i(t.getUniformLocation(r,"source"),0),t.useProgram(i),t.uniform1i(t.getUniformLocation(i,"history"),1);let a=t.createTexture();t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,a),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let l=t.createTexture();t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,l),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let c=t.createFramebuffer();return t.blendFunc(t.CONSTANT_ALPHA,t.ONE_MINUS_CONSTANT_ALPHA),e.addEventListener("webglcontextlost",this.onContextLost),this.overlay=e,this.gl=t,this.accumulate=r,this.present=i,this.source=a,this.history=l,this.historyBuffer=c,this.historyFormat=o?t.RGBA16F:t.RGBA8,!0}attach(){this.game?.isConnected||(this.game=document.querySelector("body > canvas:not([id])"));let{game:e}=this;if(!e)return!1;if(!this.overlay&&(this.unsupported||!this.createContext()))return this.unsupported=!0,!1;let{overlay:t,gl:o}=this;return!t||!o?!1:(t.previousElementSibling!==e&&e.after(t),(t.width!==e.width||t.height!==e.height)&&(t.width=e.width,t.height=e.height,o.viewport(0,0,e.width,e.height),o.activeTexture(o.TEXTURE1),o.texImage2D(o.TEXTURE_2D,0,this.historyFormat,e.width,e.height,0,o.RGBA,this.historyFormat===o.RGBA8?o.UNSIGNED_BYTE:o.HALF_FLOAT,null),o.bindFramebuffer(o.FRAMEBUFFER,this.historyBuffer),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,this.history,0),this.hasHistory=!1),!0)}frame(e){let t=this.lastFrame?Tr(e-this.lastFrame,1,100):lg;this.lastFrame=e;let o=Math.hypot(this.moveX*this.scaleX,this.moveY*this.scaleY)*(1e3/t);this.moveX=0,this.moveY=0;let n=Tr((o-cg)/(R1-cg),0,1),i=Tr(Number(u.settings.data.motionBlurStrength)||0,0,100)/100*A1*n*n*(3-2*n);if(this.weight+=(i-this.weight)*(1-Math.exp(-t/(i>this.weight?6:12))),this.weight{hg=`#kuteNukeCounter{position:absolute;left:94%;top:50%;transform:translate(-50%,-50%);z-index:10;display:flex;align-items:center;gap:.3em;font-family:GameFont,monospace;font-size:26px;color:#fff;white-space:nowrap;pointer-events:none;text-shadow:1px 1px 3px rgba(0,0,0,.9)}#uiBase.onMenu #kuteNukeCounter{display:none}#kuteNukeCounter.nukeBg{padding:.2em .5em;border-radius:.25em;background:#00000059}.nukeIcon{color:#ffc147}.nukeGoal{color:#fff9}#kuteNukeCounter.nukeGoalMet .nukeCount{color:#9eeb56}@keyframes kuteNukeGain{0%{opacity:0;transform:scale(.6)}12%{opacity:1;transform:scale(1)}80%{opacity:1}to{opacity:0}}.nukeGain{color:#9eeb56;animation:kuteNukeGain 8s ease forwards} +`});var mg=we((ZE,z1)=>{z1.exports='

              Nuke Counter

              Your nuke total, in game. It updates when a match ends
              Where it sits and how big it is belongs to the HUD editor
              Place it
              Done
              '});var vd={};A(vd,{default:()=>j1});function K1(s,e,t){return Math.min(t,Math.max(e,Number(s)||0))}function gd(s){return s.toLocaleString("en-US")}var H1,O1,F1,D1,fg,q1,bd,j1,wd=w(()=>{"use strict";pg();F();H1={goal:0,background:!0},O1="https://gapi.svc.krunker.io/players/",F1=2e3,D1=3e4,fg=[5e3,2e4],q1=8e3;bd=class{constructor(){this.overlay=null,this.nukes=null,this.nukesFor="",this.noStat=!1,this.fetching=!1,this.lastTry=0,this.endWasUp=!1,this.tick=null,this.commitTimers=[],u.nukeCounter={showOptions:()=>this.showOptions()},u.settings.toggleNukeCounter=e=>this.toggle(e),this.toggle(!!u.settings.data.nukeCounter)}accountName(){try{return window.localStorage.getItem("krunker_username")??""}catch{return""}}get config(){return{...H1,...u.settings.data.nukeCounterConfig}}saveConfig(e){u.settings.data.nukeCounterConfig=e,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(e)}`)}toggle(e){if(!e){this.destroy();return}if(!document.querySelector("#kuteNukeCounterCSS")){let t=document.createElement("style");t.id="kuteNukeCounterCSS",t.textContent=hg,document.head.append(t)}this.inject(),this.nukes===null&&this.refresh(),this.tick??=setInterval(()=>this.onTick(),F1)}destroy(){this.tick!==null&&(clearInterval(this.tick),this.tick=null);for(let e of this.commitTimers)clearTimeout(e);this.commitTimers=[],this.overlay?.remove(),this.overlay=null,document.querySelector("#kuteNukeCounterCSS")?.remove(),this.endWasUp=!1}inject(){if(!this.accountName()||this.overlay?.isConnected)return;this.overlay?.remove();let e=document.createElement("div");e.id="kuteNukeCounter",e.innerHTML='\u2622\u2014',(document.querySelector("#uiBase")??document.body).append(e),this.overlay=e,this.applyConfig(),this.render()}applyConfig(){this.overlay?.classList.toggle("nukeBg",this.config.background)}render(){let{overlay:e}=this;if(!e)return;let{goal:t}=this.config,o=e.querySelector(".nukeCount"),n=e.querySelector(".nukeGoal");o&&(o.textContent=this.nukes===null?"\u2014":gd(this.nukes)),n&&(n.style.display=t>0?"":"none",n.textContent=`/ ${gd(t)}`),e.classList.toggle("nukeGoalMet",t>0&&this.nukes!==null&&this.nukes>=t)}showGain(e){let{overlay:t}=this;if(!t||e<=0)return;t.querySelector(".nukeGain")?.remove();let o=document.createElement("span");o.className="nukeGain",o.textContent=`+${gd(e)}`,t.append(o),setTimeout(()=>o.remove(),q1)}refresh(){let e=this.accountName();!e||this.fetching||(this.fetching=!0,this.lastTry=Date.now(),window.fetch(O1+encodeURIComponent(e),{credentials:"omit",signal:AbortSignal.timeout(1e4)}).then(t=>t.ok?t.json():null).then(t=>{let o=t?.data?.player_stats?.n;if(typeof o=="number"){let n=this.nukes===null||this.nukesFor!==e?0:o-this.nukes;this.nukes=o,this.noStat=!1,this.nukesFor=e,this.render(),this.showGain(n)}else t&&(this.noStat=!0,this.nukesFor=e)}).catch(()=>{}).finally(()=>{this.fetching=!1}))}onTick(){this.inject(),this.accountName()!==this.nukesFor&&(this.nukes!==null||this.noStat)&&(this.nukes=null,this.noStat=!1,this.lastTry=0,this.render()),this.nukes===null&&!this.noStat&&Date.now()-this.lastTry>D1&&this.refresh();let t=document.querySelector("#endUI"),o=!!t&&t.style.display!=="none";o&&!this.endWasUp&&this.commitTimers.length===0&&(this.commitTimers=fg.map((n,r)=>setTimeout(()=>{r===fg.length-1&&(this.commitTimers=[]),this.refresh()},n))),this.endWasUp=o}async showOptions(){let e=await Promise.resolve().then(()=>ue(mg(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=d=>r.querySelector(`#${d}`),a=()=>{u.settings.data.nukeCounterConfig=t,this.applyConfig(),this.render()};i("nkGoalInput").value=String(t.goal),i("nkBackground").checked=t.background,i("nkGoalInput").oninput=d=>{let h=Number.parseInt(d.target.value,10);t.goal=Number.isNaN(h)?0:K1(h,0,1e6),a()},i("nkBackground").onchange=d=>{t.background=d.target.checked,a()};let l=new AbortController,c=()=>{l.abort(),o.remove(),this.saveConfig(t)};i("nkDone").onclick=c,i("nkPlace").onclick=()=>{c(),u.hudEditor?.edit()},o.addEventListener("mousedown",d=>{d.target===o&&c()}),document.addEventListener("keydown",d=>{d.key==="Escape"&&(d.stopPropagation(),c())},{signal:l.signal,capture:!0}),document.body.append(o)}},j1=new bd});var gg=we((t8,U1)=>{U1.exports=`#kute-rank-list-btn{position:absolute;top:15px;right:30px;background-color:#5ce05a;color:#000;font-family:GameFont,sans-serif;font-size:14px;font-weight:700;padding:5px 15px;border-radius:4px;letter-spacing:1px;cursor:pointer;transition:transform .2s,background-color .2s;display:flex;align-items:center;z-index:10;text-transform:uppercase;box-shadow:0 2px 4px #0006}#kute-rank-list-btn:hover{transform:scale(1.05);background-color:#6efc6c;color:#000}#kute-rank-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000d9;z-index:99999;display:flex;justify-content:center;align-items:center;backdrop-filter:blur(4px)}.rank-popup-content{background:#151515;border:2px solid #333;border-top:4px solid #5ce05a;width:700px;max-width:90%;max-height:85vh;border-radius:8px;box-shadow:0 10px 40px #000c;display:flex;flex-direction:column;overflow:hidden;animation:popIn .3s cubic-bezier(.18,.89,.32,1.28)}@keyframes popIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.rank-popup-header{padding:20px;background:#ffffff08;border-bottom:2px solid rgba(255,255,255,.05);display:flex;justify-content:space-between;align-items:center}.rank-popup-header h2{margin:0;color:#fff;font-family:GameFont,sans-serif;font-size:24px;letter-spacing:1px}.rank-popup-close{font-size:24px;color:#aaa;cursor:pointer;font-weight:700;line-height:1}.rank-popup-close:hover{color:#eb5656}.rank-grid-container{padding:20px;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.rank-grid-item{background:#ffffff0d;padding:10px;border-radius:6px;display:flex;align-items:center;gap:12px;border:1px solid transparent}.rank-grid-item:hover{background:#ffffff1a;border-color:#fff3}.rank-grid-item img{height:45px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5))}.r-details{display:flex;flex-direction:column}.r-name{font-family:GameFont,sans-serif;font-size:16px;font-weight:700;margin-bottom:2px;text-shadow:1px 1px 0 #000}.r-elo{font-family:monospace;color:#888;font-size:13px;background:#0000004d;padding:2px 6px;border-radius:4px;display:inline-block;width:max-content}.rank-grid-container::-webkit-scrollbar{width:8px}.rank-grid-container::-webkit-scrollbar-thumb{background:#444;border-radius:4px}.rank-grid-container::-webkit-scrollbar-thumb:hover{background:#5ce05a}#kute-elo-tracker{width:100%;margin-top:5px;margin-bottom:10px;background:#0006;padding:8px 12px;border-radius:6px;border:1px solid rgba(255,255,255,.08);box-sizing:border-box}.elo-info-row{display:flex;align-items:center;gap:15px;justify-content:space-between}.elo-rank-img{height:28px;width:auto;display:block;margin-bottom:2px;filter:drop-shadow(0px 0px 3px rgba(0,0,0,.5))}.rank-current-container,.rank-next-container{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#bbb;font-family:GameFont,sans-serif;font-size:10px;line-height:1;min-width:50px}.rank-next-container span,.rank-current-container span{color:#fff;text-transform:uppercase;font-weight:700;letter-spacing:.5px}#kute-rank-list-btn span{font-size:16px!important;vertical-align:middle;margin-right:4px}.elo-progress-bar-bg{flex-grow:1;height:22px;background:#151515;border-radius:4px;position:relative;overflow:hidden;box-shadow:inset 0 2px 5px #00000080;border:1px solid #333}.elo-progress-bar-fill{height:100%;background-color:#fb8c00;background-image:linear-gradient(180deg,#fff3,#fff0);transition:width .8s cubic-bezier(.22,1,.36,1);box-shadow:0 0 10px #fb8c0066;position:relative}.elo-progress-bar-fill:after{content:"";position:absolute;right:0;top:0;bottom:0;width:1px;background:#fff;opacity:.7;box-shadow:0 0 5px #fff}.rank-name{margin-bottom:2px!important}.elo-progress-text{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;align-items:center;justify-content:center;color:#fff;text-shadow:1px 1px 2px #000,0 0 4px #000;font-weight:700;font-family:GameFont,sans-serif;font-size:14px;z-index:5;letter-spacing:1px}.rank-and-stats{justify-content:flex-start;gap:5px}.season-banner.svelte-s4rbwd{right:150px!important} +`});var yd={};A(yd,{default:()=>G1});var kd,G1,xd=w(()=>{"use strict";Ae();kd=class{constructor(){this.ranks=[{rank:"Unranked",elo:null,color:"#FFFFFF",image:"rank_unranked.svg"},{rank:"Bronze 1",elo:0,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Bronze 2",elo:200,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Bronze 3",elo:400,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Silver 1",elo:700,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Silver 2",elo:900,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Silver 3",elo:1100,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Gold 1",elo:1300,color:"#FFD700",image:"rank_gold.svg"},{rank:"Gold 2",elo:1600,color:"#FFD700",image:"rank_gold.svg"},{rank:"Gold 3",elo:2e3,color:"#FFD700",image:"rank_gold.svg"},{rank:"Platinum",elo:2300,color:"#4B69FF",image:"rank_platinum.svg"},{rank:"Diamond",elo:3e3,color:"#4B69FF",image:"rank_diamond.svg"},{rank:"Master",elo:3300,color:"#EE7032",image:"rank_master.svg"},{rank:"Kracked",elo:4700,color:"#FF0000",image:"rank_kracked.svg"}],this.observer=new MutationObserver(()=>this.checkForMenu());let e=window.openRankedMenu;window.openRankedMenu=()=>{e(),this.observer.observe(U(".rankedMenuModal"),{childList:!0,subtree:!0});let t=setInterval(()=>{document.querySelector(".rankedMenuModal")||(clearInterval(t),this.observer.disconnect())},5e3)},Promise.resolve().then(()=>ue(gg(),1)).then(t=>{let o=document.createElement("style");o.textContent=t.default,document.head.append(o)})}checkForMenu(){let e=document.querySelector(".rank-card"),t=document.querySelector(".rank-and-stats");e&&t&&(t.querySelector("#kute-elo-tracker")||this.injectBar(t),e.querySelector("#kute-rank-list-btn")||this.injectRankListButton(e))}injectRankListButton(e){let t=document.createElement("div");t.id="kute-rank-list-btn",t.className="season-banner",t.innerHTML='list Ranks',t.onclick=()=>this.openPopup(),window.getComputedStyle(e).position==="static"&&(e.style.position="relative"),e.appendChild(t)}openPopup(){if(document.getElementById("kute-rank-overlay"))return;let e="";for(let o of this.ranks)e+=`
              @@ -1288,25 +1290,25 @@ void main(){
              ${i}
              - `;let l=e.querySelector(".quick-stats");l?e.insertBefore(r,l):e.append(r)}},D1=new gd});var kd={};A(kd,{default:()=>K1});var F1,q1,wd,K1,yd=w(()=>{"use strict";D();F1=".ranked-matchmaking-status",q1="Match found!",wd=class{constructor(){this.found=!1,this.status=null,this.observer=new MutationObserver(()=>this.check()),u.settings.toggleRankedAlert=e=>this.toggle(e),this.toggle(!0)}toggle(e){this.observer.disconnect(),e&&(this.status=document.querySelector(F1),this.status&&(this.observer.observe(this.status,{attributes:!0,attributeFilter:["class"],childList:!0,characterData:!0,subtree:!0}),this.found=this.shown()))}shown(){return!!this.status?.classList.contains("show")&&this.status?.textContent===q1}check(){let e=this.shown();e&&!this.found&&window.chrome.webview.postMessage("bring-to-front"),this.found=e}},K1=new wd});var Sd={};A(Sd,{default:()=>j1});var xd,j1,Ed=w(()=>{"use strict";D();Ae();xd=class{constructor(){this.ingamePing=null,this.menuPing=null,this.interval=null,this.listener=null,u.settings.toggleRealPing=e=>this.toggle(e),this.toggle(!0)}applyPingDisplay(e){e&&Object.defineProperty(e,"textContent",{set:()=>{},configurable:!0})}async toggle(e){let[t,o]=await Promise.all([$e("#pingText"),$e("#menuPingText")]);this.ingamePing=t,this.menuPing=o,e?(this.applyPingDisplay(t),this.applyPingDisplay(o),this.interval=setInterval(()=>{window.chrome.webview.postMessage("ping")},3e3),this.listener=n=>{let r=n.data?.pingInfo;r&&(t.innerText=r,o.innerText=r)},window.chrome.webview.addEventListener("message",this.listener)):(this.interval!==null&&clearInterval(this.interval),this.listener&&window.chrome.webview.removeEventListener("message",this.listener),this.interval=null,this.listener=null,Reflect.deleteProperty(t,"textContent"),Reflect.deleteProperty(o,"textContent"))}},j1=new xd});var hg,pg=w(()=>{hg='
              '});var Cd={};A(Cd,{default:()=>G1});var Mr,$d,G1,Md=w(()=>{"use strict";pg();D();Rt();Mr=s=>window.chrome.webview.postMessage(`recovery-${s}`),$d=class{constructor(){this.host=null,this.shadow=null,document.addEventListener("pointerlockchange",()=>{this.host&&(this.host.style.display=document.pointerLockElement?"none":"flex")}),window.chrome.webview.addEventListener("message",e=>{e.data?.recovery&&this.show(e.data.recovery)}),u.recovery&&this.show(u.recovery)}banner(e,t,o){this.host||(this.host=document.createElement("div"),this.host.style.cssText="position:fixed;top:12px;left:0;right:0;display:flex;justify-content:center;pointer-events:none;z-index:2147482000",this.shadow=this.host.attachShadow({mode:"open"}),this.shadow.innerHTML=hg,document.body.append(this.host));let{shadow:n}=this;n.querySelector("#rcTitle").textContent=e,n.querySelector("#rcBody").textContent=t;let r=n.querySelector("#rcActions");r.replaceChildren();for(let[i,a,l]of o){let c=document.createElement("div");c.className=l?"rcButton rcMain":"rcButton",c.textContent=i,c.onclick=()=>Mr(a),r.append(c)}}show(e){if(e.mode==="safe"){let t=[["Restart normally","normal",!e.canFind]];e.canFind&&t.unshift(["Find the cause","find",!0]),this.banner("Safe mode:","your userscripts, swaps, custom CSS, flags and engine tweaks are off for this start. Nothing of yours was changed.",t)}else if(e.mode==="test"){let t=`${e.suspects} ${e.suspects===1?"thing":"things"} left to check.`;e.ranFine?this.banner(`Finding the cause, test ${e.step}:`,`this test passed, ${t} Restart for the next one.`,[["Next test","next",!0],["Stop","stop"]]):e.kind==="startup"?this.banner(`Finding the cause, test ${e.step}:`,`${t} Kute restarts by itself, nothing to do.`,[["Stop","stop"]]):this.banner(`Finding the cause, test ${e.step}:`,`${t} Play as usual. After ${e.minutes} min without a crash this test passes.`,[["Stop","stop"]])}else e.mode==="result"?this.result(e).catch(t=>console.error("[kute] recovery:",t)):e.mode==="offer"&&this.offer().catch(t=>console.error("[kute] recovery:",t))}async result(e){let t=`${e.tests?.crashed??0} tests crashed, ${e.tests?.ranFine??0} ran fine.`;if(e.verdict==="notTheSetup"){let i=!await Ce({title:"Not your setup",paragraphs:["Kute crashed even with everything of yours switched off, so it is most likely a driver, the PC or another program.","A Diagnostics Report (About settings) helps us look into it.",t],stay:"Create a report",leave:"Close"});Mr("dismiss"),i&&u.diagnostics?.open();return}let o=e.culprits??[],n=o.every(i=>i.fixable),r=!await Ce({title:"Found the cause",paragraphs:[`Kute crashed with ${o.length===1?"this":"these together"} and ran fine without:`,...o.map(i=>i.label),n?"It is off for this start. Switch it off for good, or keep it and Kute starts with it again next time.":"It is off for this start. To keep it off, remove it from the file in Documents\\kute.",t],stay:n?"Switch it off":"OK",leave:"Keep it"});Mr(r&&n?"apply":"dismiss"),r&&n&&u.showNotification("Switched off",!1,3)}async offer(){let e=!await Ce({title:"Kute crashed the last times it ran",paragraphs:["Safe mode starts without your userscripts, swaps, custom CSS, flags and engine tweaks, and can find which one causes it. Nothing of yours gets changed."],stay:"Restart in safe mode",leave:"Not now"});Mr(e?"safe":"dismiss")}},G1=new $d});var Ad={};A(Ad,{default:()=>Z1});var W1,V1,Y1,X1,J1,Td,Z1,Ld=w(()=>{"use strict";D();Ae();as();W1=2e3,V1=.25,Y1=60,X1=3e3,J1=.3,Td=class{constructor(){this.ingameFPS=null,this.menuFPS=null,this.listener=null,this.gameFPS=null,this.rawGameFPS=null,this.potentialFps=0,this.presentEnabled=!!u.settings?.data?.renderStats,this.presentFps=0,this.presentAt=0,this.showPresent=!0,this.disagreeSince=0,this.shown="",u.settings.toggleRenderFps=e=>this.toggle(e),this.toggle(!0)}presentUsable(){if(performance.now()-this.presentAt>W1)return!1;let e=Number.parseFloat(this.rawGameFPS??"");return!Number.isFinite(e)||e<=0?!0:!(this.presentFps=X1&&(this.showPresent=!this.showPresent,this.disagreeSince=0,this.showPresent||this.explainOnce()):this.disagreeSince=e,this.render()}explainOnce(){try{if(sessionStorage.getItem("kute_presentFpsHidden"))return;sessionStorage.setItem("kute_presentFpsHidden","1")}catch{return}u.showNotification?.(u.settings?.data?.hardFlip===!1?"Present FPS needs the DXGI Swapchain Hook (Settings, Engine), which is off. Showing the game's FPS":"Present FPS is hidden: the swap chain hook does not see the game's frames on this PC, its number would be wrong. Showing the game's FPS",!1,8)}render(){let e=this.showPresent&&this.presentAt>0?`${this.gameFPS??""} ${this.presentFps}`:this.gameFPS??"";e!==this.shown&&(this.shown=e,this.ingameFPS&&(this.ingameFPS.innerText=e),this.menuFPS&&(this.menuFPS.innerText=e))}withPotential(e){let t=Number.parseFloat(e),o=ri();if(!Number.isFinite(t)||t<=0||Number(u.settings?.data?.gameFpsLimit)>0)return e;if(o>0){let n=1e3/t,r=1e3/Math.max(o,n-o);this.potentialFps=this.potentialFps?this.potentialFps+(r-this.potentialFps)*J1:r}return this.potentialFps>t?String(Math.round(this.potentialFps)):e}applyFpsDisplay(e){e&&Object.defineProperty(e,"textContent",{set:t=>{this.rawGameFPS=t,this.gameFPS=this.withPotential(t),this.evaluate()},configurable:!0})}async toggle(e){let[t,o]=await Promise.all([$e("#ingameFPS"),$e("#menuFPS")]);this.ingameFPS=t,this.menuFPS=o,e?(this.applyFpsDisplay(t),this.applyFpsDisplay(o),this.listener=n=>{let r=n.data?.fpsInfo;typeof r=="number"&&(this.presentFps=r,this.presentAt=performance.now(),this.showPresent&&this.render())},window.chrome.webview.addEventListener("message",this.listener)):(this.listener&&(window.chrome.webview.removeEventListener("message",this.listener),this.listener=null),Reflect.deleteProperty(t,"textContent"),Reflect.deleteProperty(o,"textContent"))}},Z1=new Td});var Pd={};A(Pd,{default:()=>nx});var Uo,Q1,ex,tx,ox,sx,mg,Rd,nx,Id=w(()=>{"use strict";Ae();Uo="data-kute-ping",Q1=6e4,ex=1e4,tx={FRA:"de-fra",NY:"us-nj",DAL:"us-tx",SV:"us-ca-sv",BRZ:"brz",SIN:"sgp",TOK:"jb-hnd",SYD:"au-syd",MBI:"as-mb",BHN:"me-bhn",SSS:"sss"},ox={"New York":"us-nj",Dallas:"us-tx",Frankfurt:"de-fra","Silicon Valley":"us-ca-sv",Sydney:"au-syd",Tokyo:"jb-hnd",Singapore:"sgp",Mumbai:"as-mb",Brazil:"brz","Middle East":"me-bhn","EU Super Secret Servers":"sss"},sx=` + `;let l=e.querySelector(".quick-stats");l?e.insertBefore(r,l):e.append(r)}},G1=new kd});var Ed={};A(Ed,{default:()=>Y1});var W1,V1,Sd,Y1,$d=w(()=>{"use strict";F();W1=".ranked-matchmaking-status",V1="Match found!",Sd=class{constructor(){this.found=!1,this.status=null,this.observer=new MutationObserver(()=>this.check()),u.settings.toggleRankedAlert=e=>this.toggle(e),this.toggle(!0)}toggle(e){this.observer.disconnect(),e&&(this.status=document.querySelector(W1),this.status&&(this.observer.observe(this.status,{attributes:!0,attributeFilter:["class"],childList:!0,characterData:!0,subtree:!0}),this.found=this.shown()))}shown(){return!!this.status?.classList.contains("show")&&this.status?.textContent===V1}check(){let e=this.shown();e&&!this.found&&window.chrome.webview.postMessage("bring-to-front"),this.found=e}},Y1=new Sd});var Md={};A(Md,{default:()=>X1});var Cd,X1,Td=w(()=>{"use strict";F();Ae();Cd=class{constructor(){this.ingamePing=null,this.menuPing=null,this.interval=null,this.listener=null,u.settings.toggleRealPing=e=>this.toggle(e),this.toggle(!0)}applyPingDisplay(e){e&&Object.defineProperty(e,"textContent",{set:()=>{},configurable:!0})}async toggle(e){let[t,o]=await Promise.all([$e("#pingText"),$e("#menuPingText")]);this.ingamePing=t,this.menuPing=o,e?(this.applyPingDisplay(t),this.applyPingDisplay(o),this.interval=setInterval(()=>{window.chrome.webview.postMessage("ping")},3e3),this.listener=n=>{let r=n.data?.pingInfo;r&&(t.innerText=r,o.innerText=r)},window.chrome.webview.addEventListener("message",this.listener)):(this.interval!==null&&clearInterval(this.interval),this.listener&&window.chrome.webview.removeEventListener("message",this.listener),this.interval=null,this.listener=null,Reflect.deleteProperty(t,"textContent"),Reflect.deleteProperty(o,"textContent"))}},X1=new Cd});var vg,bg=w(()=>{vg='
              '});var Ld={};A(Ld,{default:()=>Z1});var Ar,Ad,Z1,Rd=w(()=>{"use strict";bg();F();Pt();Ar=s=>window.chrome.webview.postMessage(`recovery-${s}`),Ad=class{constructor(){this.host=null,this.shadow=null,document.addEventListener("pointerlockchange",()=>{this.host&&(this.host.style.display=document.pointerLockElement?"none":"flex")}),window.chrome.webview.addEventListener("message",e=>{e.data?.recovery&&this.show(e.data.recovery)}),u.recovery&&this.show(u.recovery)}banner(e,t,o){this.host||(this.host=document.createElement("div"),this.host.style.cssText="position:fixed;top:12px;left:0;right:0;display:flex;justify-content:center;pointer-events:none;z-index:2147482000",this.shadow=this.host.attachShadow({mode:"open"}),this.shadow.innerHTML=vg,document.body.append(this.host));let{shadow:n}=this;n.querySelector("#rcTitle").textContent=e,n.querySelector("#rcBody").textContent=t;let r=n.querySelector("#rcActions");r.replaceChildren();for(let[i,a,l]of o){let c=document.createElement("div");c.className=l?"rcButton rcMain":"rcButton",c.textContent=i,c.onclick=()=>Ar(a),r.append(c)}}show(e){if(e.mode==="safe"){let t=[["Restart normally","normal",!e.canFind]];e.canFind&&t.unshift(["Find the cause","find",!0]),this.banner("Safe mode:","your userscripts, swaps, custom CSS, flags and engine tweaks are off for this start. Nothing of yours was changed.",t)}else if(e.mode==="test"){let t=`${e.suspects} ${e.suspects===1?"thing":"things"} left to check.`;e.ranFine?this.banner(`Finding the cause, test ${e.step}:`,`this test passed, ${t} Restart for the next one.`,[["Next test","next",!0],["Stop","stop"]]):e.kind==="startup"?this.banner(`Finding the cause, test ${e.step}:`,`${t} Kute restarts by itself, nothing to do.`,[["Stop","stop"]]):this.banner(`Finding the cause, test ${e.step}:`,`${t} Play as usual. After ${e.minutes} min without a crash this test passes.`,[["Stop","stop"]])}else e.mode==="result"?this.result(e).catch(t=>console.error("[kute] recovery:",t)):e.mode==="offer"&&this.offer().catch(t=>console.error("[kute] recovery:",t))}async result(e){let t=`${e.tests?.crashed??0} tests crashed, ${e.tests?.ranFine??0} ran fine.`;if(e.verdict==="notTheSetup"){let i=!await Ce({title:"Not your setup",paragraphs:["Kute crashed even with everything of yours switched off, so it is most likely a driver, the PC or another program.","A Diagnostics Report (About settings) helps us look into it.",t],stay:"Create a report",leave:"Close"});Ar("dismiss"),i&&u.diagnostics?.open();return}let o=e.culprits??[],n=o.every(i=>i.fixable),r=!await Ce({title:"Found the cause",paragraphs:[`Kute crashed with ${o.length===1?"this":"these together"} and ran fine without:`,...o.map(i=>i.label),n?"It is off for this start. Switch it off for good, or keep it and Kute starts with it again next time.":"It is off for this start. To keep it off, remove it from the file in Documents\\kute.",t],stay:n?"Switch it off":"OK",leave:"Keep it"});Ar(r&&n?"apply":"dismiss"),r&&n&&u.showNotification("Switched off",!1,3)}async offer(){let e=!await Ce({title:"Kute crashed the last times it ran",paragraphs:["Safe mode starts without your userscripts, swaps, custom CSS, flags and engine tweaks, and can find which one causes it. Nothing of yours gets changed."],stay:"Restart in safe mode",leave:"Not now"});Ar(e?"safe":"dismiss")}},Z1=new Ad});var Id={};A(Id,{default:()=>nx});var Q1,ex,tx,ox,sx,Pd,nx,Nd=w(()=>{"use strict";F();Ae();cs();Q1=2e3,ex=.25,tx=60,ox=3e3,sx=.3,Pd=class{constructor(){this.ingameFPS=null,this.menuFPS=null,this.listener=null,this.gameFPS=null,this.rawGameFPS=null,this.potentialFps=0,this.presentEnabled=!!u.settings?.data?.renderStats,this.presentFps=0,this.presentAt=0,this.showPresent=!0,this.disagreeSince=0,this.shown="",u.settings.toggleRenderFps=e=>this.toggle(e),this.toggle(!0)}presentUsable(){if(performance.now()-this.presentAt>Q1)return!1;let e=Number.parseFloat(this.rawGameFPS??"");return!Number.isFinite(e)||e<=0?!0:!(this.presentFps=ox&&(this.showPresent=!this.showPresent,this.disagreeSince=0,this.showPresent||this.explainOnce()):this.disagreeSince=e,this.render()}explainOnce(){try{if(sessionStorage.getItem("kute_presentFpsHidden"))return;sessionStorage.setItem("kute_presentFpsHidden","1")}catch{return}u.showNotification?.(u.settings?.data?.hardFlip===!1?"Present FPS needs the DXGI Swapchain Hook (Settings, Engine), which is off. Showing the game's FPS":"Present FPS is hidden: the swap chain hook does not see the game's frames on this PC, its number would be wrong. Showing the game's FPS",!1,8)}render(){let e=this.showPresent&&this.presentAt>0?`${this.gameFPS??""} ${this.presentFps}`:this.gameFPS??"";e!==this.shown&&(this.shown=e,this.ingameFPS&&(this.ingameFPS.innerText=e),this.menuFPS&&(this.menuFPS.innerText=e))}withPotential(e){let t=Number.parseFloat(e),o=ai();if(!Number.isFinite(t)||t<=0||Number(u.settings?.data?.gameFpsLimit)>0)return e;if(o>0){let n=1e3/t,r=1e3/Math.max(o,n-o);this.potentialFps=this.potentialFps?this.potentialFps+(r-this.potentialFps)*sx:r}return this.potentialFps>t?String(Math.round(this.potentialFps)):e}applyFpsDisplay(e){e&&Object.defineProperty(e,"textContent",{set:t=>{this.rawGameFPS=t,this.gameFPS=this.withPotential(t),this.evaluate()},configurable:!0})}async toggle(e){let[t,o]=await Promise.all([$e("#ingameFPS"),$e("#menuFPS")]);this.ingameFPS=t,this.menuFPS=o,e?(this.applyFpsDisplay(t),this.applyFpsDisplay(o),this.listener=n=>{let r=n.data?.fpsInfo;typeof r=="number"&&(this.presentFps=r,this.presentAt=performance.now(),this.showPresent&&this.render())},window.chrome.webview.addEventListener("message",this.listener)):(this.listener&&(window.chrome.webview.removeEventListener("message",this.listener),this.listener=null),Reflect.deleteProperty(t,"textContent"),Reflect.deleteProperty(o,"textContent"))}},nx=new Pd});var Bd={};A(Bd,{default:()=>dx});var Wo,rx,ix,ax,lx,cx,wg,_d,dx,zd=w(()=>{"use strict";Ae();Wo="data-kute-ping",rx=6e4,ix=1e4,ax={FRA:"de-fra",NY:"us-nj",DAL:"us-tx",SV:"us-ca-sv",BRZ:"brz",SIN:"sgp",TOK:"jb-hnd",SYD:"au-syd",MBI:"as-mb",BHN:"me-bhn",SSS:"sss"},lx={"New York":"us-nj",Dallas:"us-tx",Frankfurt:"de-fra","Silicon Valley":"us-ca-sv",Sydney:"au-syd",Tokyo:"jb-hnd",Singapore:"sgp",Mumbai:"as-mb",Brazil:"brz","Middle East":"me-bhn","EU Super Secret Servers":"sss"},cx=` #serverHolder .settNameIn .kutePing { float: right; margin-right: 8px; color: #35e0e8; font-size: 13px; line-height: 44px; } #serverHolder .setHed .kutePing { float: right; margin-right: 14px; color: #35e0e8; font-size: 0.75em; line-height: 42px; } -`,mg=s=>s===void 0?"":`${s} ms`,Rd=class{constructor(){this.pings={},this.fetchedAt=0,this.fetching=!1,this.pending=null,this.observer=new MutationObserver(()=>{this.pending===null&&(this.pending=setTimeout(()=>this.scan(),150))});let e=document.createElement("style");e.textContent=sx,document.head.append(e);let t=document.getElementById("menuWindow");t&&(this.menu=t,this.observer.observe(t,{childList:!0,subtree:!0}))}refresh(){this.fetching||Date.now()-this.fetchedAt{this.fetching=!1,this.fetchedAt=Date.now(),e&&(this.pings=e,this.menu?.querySelectorAll(".kutePing").forEach(t=>t.remove()),this.menu?.querySelectorAll(`[${Uo}]`).forEach(t=>t.removeAttribute(Uo)),this.scan())}))}scan(){this.pending=null;let e=document.getElementById("serverHolder");e&&(this.refresh(),Object.keys(this.pings).length!==0&&(this.observer.disconnect(),this.labelRows(e),this.sortRegions(e),this.menu&&this.observer.observe(this.menu,{childList:!0,subtree:!0})))}labelRows(e){for(let t of e.querySelectorAll(`.settNameIn:not([${Uo}])`)){t.setAttribute(Uo,"");let o=/checkedSwitchServer\("([A-Z]+):/.exec(t.getAttribute("onclick")??"")?.[1],n=o?this.pings[tx[o]]:void 0,r=t.querySelector(".serverPing");if(n===void 0||!r)continue;let i=document.createElement("span");i.className="kutePing",i.textContent=mg(n),r.after(i)}}sortRegions(e){let t=[];for(let n of e.children)if(n.classList.contains("setHed")){let r=Array.from(n.childNodes,a=>a.nodeType===Node.TEXT_NODE?a.textContent:"").join("").trim(),i=this.pings[ox[r]];if(i!==void 0&&!n.hasAttribute(Uo)){n.setAttribute(Uo,"");let a=document.createElement("span");a.className="kutePing",a.textContent=mg(i),n.querySelector(".quickJoin")?.before(a)}t.push({nodes:[n],ping:i??-1})}else t.at(-1)?.nodes.push(n);if(t.length<2)return;let o=t.map((n,r)=>({...n,index:r})).sort((n,r)=>n.ping-r.ping||n.index-r.index);if(!o.every((n,r)=>n.index===r))for(let n of o)e.append(...n.nodes)}},nx=new Rd});var _d={};A(_d,{default:()=>lx});function ax(s,e){if(JSON.stringify(e)?.length>ix)return!1;if(vg.includes(s))return e===null||typeof e=="object"&&!Array.isArray(e);let t=wg.find(o=>o.id===s);return!t||typeof e!=typeof t.defaultValue||t.options&&!t.options.includes(e)?!1:typeof e!="number"||Number.isFinite(e)}function bg(){let s=new Date;return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}var fg,gg,rx,ix,vg,wg,Nd,lx,Bd=w(()=>{"use strict";Xo();D();Co();Rt();fg="kute-settings",gg=1,rx=256*1024,ix=16*1024,vg=["hudLayout","matchmakerFilter","hotkeys","nukeCounterConfig","customSkyConfig","kuteIconSlots","kuteIconUrls"],wg=Object.values(Tt).filter(s=>"defaultValue"in s);Nd=class{constructor(){u.settingsTransfer={exportFile:()=>this.export(),importFile:()=>this.pick()}}export(){let e=cu(u.settings.data),t=[...wg.map(i=>i.id),...vg],o=Object.fromEntries(t.filter(i=>e[i]!==void 0).map(i=>[i,e[i]])),n={format:fg,version:gg,kute:u.version,exported:bg(),settings:o},r=document.createElement("a");r.href=URL.createObjectURL(new Blob([JSON.stringify(n,null,2)],{type:"application/json"})),r.download=`kute-settings-${bg()}.json`,r.click(),setTimeout(()=>URL.revokeObjectURL(r.href),1e4),u.showNotification(`Exported ${Object.keys(o).length} settings to your Downloads folder`,!1,4)}pick(){let e=document.createElement("input");e.type="file",e.accept=".json,application/json",e.onchange=()=>{let t=e.files?.[0];t&&this.read(t).catch(o=>console.error("[kute] settings import:",o))},e.click()}async read(e){if(e.size>rx){u.showNotification("That file is too big for a Kute settings file",!1,4);return}let t=null;try{t=JSON.parse(await e.text())}catch{t=null}if(t?.format!==fg||typeof t.settings!="object"||t.settings===null){u.showNotification("That is not a Kute settings file",!1,4);return}if(typeof t.version!="number"||t.version>gg){u.showNotification("That file comes from a newer Kute, update first",!1,4);return}let o=Object.entries(t.settings).filter(([i,a])=>ax(i,a));if(o.length===0){u.showNotification("That file holds no settings this Kute knows",!1,4);return}let n=typeof t.kute=="string"?` from Kute ${t.kute}`:"";if(await Ce({title:"Import Kute settings",paragraphs:[`${o.length} settings${n} in ${e.name}.`,"They replace your client settings, HUD positions, matchmaker filters and hotkeys. Kute restarts to apply them.","Userscripts, swapper files, custom CSS and your own sky images are files in Documents\\kute and are not part of it."],stay:"Cancel",leave:"Import and restart"})){for(let[i,a]of o)u.settings.data[i]=a,window.chrome.webview.postMessage(`set-config-json ${i} ${JSON.stringify(a)}`);window.chrome.webview.postMessage("restart")}}},lx=new Nd});var Hd={};A(Hd,{default:()=>cx});var zd,cx,Od=w(()=>{"use strict";D();zd=class{constructor(){this.originalGenList=window.windows[22].genList,this.template=document.createElement("template"),u.settings.toggleShowPing=e=>this.toggle(e),this.toggle(!0)}toggle(e){let t=this;e?window.windows[22].genList=function(){return t.modifiedGenList(this)}:window.windows[22].genList=this.originalGenList}modifiedGenList(e){let t=this.originalGenList.call(e);this.template.innerHTML=t;let o=this.template.content.querySelectorAll(".pListPing.material-icons");for(let n of o){let r=n.getAttribute("title");n.classList.remove("pListPing","material-icons"),n.removeAttribute("title"),n.textContent=`${r||"N/A"} `}return this.template.innerHTML}},cx=new zd});var yg,kg=w(()=>{yg=`#kuteSpotifyOverlay{position:absolute;left:463px;bottom:23px;z-index:10;display:flex;align-items:center;gap:12px;box-sizing:border-box;width:320px;min-height:82px;padding:10px;border:1px solid rgba(29,185,84,.7);border-radius:8px;background:#0c120fe0;box-shadow:0 4px 18px #00000059;color:#fff;font-family:Arial,sans-serif;pointer-events:none}#kuteSpotifyOverlay[hidden]{display:none}#kuteSpotifyOverlay.paused{opacity:.72}#kuteSpotifyArtwork{width:60px;height:60px;flex:0 0 60px;border-radius:4px;background:#26302a;object-fit:cover}#kuteSpotifyInfo{min-width:0;flex:1 1 auto}#kuteSpotifyTitle,#kuteSpotifyArtist{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#kuteSpotifyTitle{font-size:14px;font-weight:700}#kuteSpotifyArtist{margin-top:3px;color:#b8c8bc;font-size:12px}#kuteSpotifyProgress{height:3px;margin-top:9px;border-radius:2px;background:#536258;overflow:hidden}#kuteSpotifyProgress>div{height:100%;background:#1db954;transform:scaleX(0);transform-origin:left} -`});var Sg,xg=w(()=>{Sg='
              '});var Fd={};A(Fd,{default:()=>hx});var px,Dd,hx,qd=w(()=>{"use strict";kg();xg();D();px=1e3,Dd=class{constructor(){this.overlay=null,this.playback=null,this.timer=null,this.artwork=null,this.listener=e=>{let{data:t}=e;typeof t!="object"||t===null||("spotify"in t?this.song(t.spotify):"spotifyState"in t&&this.state(t.spotifyState))},u.settings.toggleSpotifyOverlay=e=>this.toggle(e),this.toggle(!!u.settings.data.spotifyOverlay)}toggle(e){if(!e){window.chrome.webview.removeEventListener("message",this.listener),window.chrome.webview.postMessage("spotify-stop"),this.stopProgress(),this.overlay?.remove(),this.overlay=null,this.artwork=null,document.querySelector("#kuteSpotifyOverlayCSS")?.remove();return}if(this.overlay)return;let t=document.createElement("style");t.id="kuteSpotifyOverlayCSS",t.textContent=yg,document.head.append(t),this.overlay=document.createElement("div"),this.overlay.id="kuteSpotifyOverlay",this.overlay.hidden=!0,this.overlay.innerHTML=Sg,(document.querySelector("#uiBase")??document.body).append(this.overlay),window.chrome.webview.addEventListener("message",this.listener),window.chrome.webview.postMessage("spotify-start")}song(e){if(!this.overlay||(this.overlay.hidden=!e,!e))return;let t=this.overlay.querySelector("#kuteSpotifyArtwork");e.artwork!==this.artwork&&(this.artwork=e.artwork,t.src=e.artwork??""),t.alt=e.album,this.overlay.querySelector("#kuteSpotifyTitle").textContent=e.title,this.overlay.querySelector("#kuteSpotifyArtist").textContent=e.artist,this.state(e)}state({playing:e,position:t,duration:o}){this.overlay&&(this.overlay.classList.toggle("paused",!e),this.playback={playing:e,position:t,duration:o,at:performance.now()},this.drawProgress(),e&&this.timer===null?this.timer=window.setInterval(()=>this.drawProgress(),px):e||this.stopProgress())}drawProgress(){let e=this.overlay?.querySelector("#kuteSpotifyProgress > div")??null;if(!e||!this.playback)return;let{playing:t,position:o,duration:n,at:r}=this.playback,i=o+(t?performance.now()-r:0);e.style.transform=`scaleX(${n>0?Math.min(1,i/n).toFixed(4):0})`}stopProgress(){this.timer!==null&&window.clearInterval(this.timer),this.timer=null}},hx=new Dd});var jd={};A(jd,{default:()=>mx});var Kd,mx,Ud=w(()=>{"use strict";D();Kd=class{constructor(){if(!u.version)return;let e=document.createElement("style");e.id="kute_versionTagCSS",e.textContent=` +`,wg=s=>s===void 0?"":`${s} ms`,_d=class{constructor(){this.pings={},this.fetchedAt=0,this.fetching=!1,this.pending=null,this.observer=new MutationObserver(()=>{this.pending===null&&(this.pending=setTimeout(()=>this.scan(),150))});let e=document.createElement("style");e.textContent=cx,document.head.append(e);let t=document.getElementById("menuWindow");t&&(this.menu=t,this.observer.observe(t,{childList:!0,subtree:!0}))}refresh(){this.fetching||Date.now()-this.fetchedAt{this.fetching=!1,this.fetchedAt=Date.now(),e&&(this.pings=e,this.menu?.querySelectorAll(".kutePing").forEach(t=>t.remove()),this.menu?.querySelectorAll(`[${Wo}]`).forEach(t=>t.removeAttribute(Wo)),this.scan())}))}scan(){this.pending=null;let e=document.getElementById("serverHolder");e&&(this.refresh(),Object.keys(this.pings).length!==0&&(this.observer.disconnect(),this.labelRows(e),this.sortRegions(e),this.menu&&this.observer.observe(this.menu,{childList:!0,subtree:!0})))}labelRows(e){for(let t of e.querySelectorAll(`.settNameIn:not([${Wo}])`)){t.setAttribute(Wo,"");let o=/checkedSwitchServer\("([A-Z]+):/.exec(t.getAttribute("onclick")??"")?.[1],n=o?this.pings[ax[o]]:void 0,r=t.querySelector(".serverPing");if(n===void 0||!r)continue;let i=document.createElement("span");i.className="kutePing",i.textContent=wg(n),r.after(i)}}sortRegions(e){let t=[];for(let n of e.children)if(n.classList.contains("setHed")){let r=Array.from(n.childNodes,a=>a.nodeType===Node.TEXT_NODE?a.textContent:"").join("").trim(),i=this.pings[lx[r]];if(i!==void 0&&!n.hasAttribute(Wo)){n.setAttribute(Wo,"");let a=document.createElement("span");a.className="kutePing",a.textContent=wg(i),n.querySelector(".quickJoin")?.before(a)}t.push({nodes:[n],ping:i??-1})}else t.at(-1)?.nodes.push(n);if(t.length<2)return;let o=t.map((n,r)=>({...n,index:r})).sort((n,r)=>n.ping-r.ping||n.index-r.index);if(!o.every((n,r)=>n.index===r))for(let n of o)e.append(...n.nodes)}},dx=new _d});var Od={};A(Od,{default:()=>mx});function hx(s,e){if(JSON.stringify(e)?.length>px)return!1;if(Sg.includes(s))return e===null||typeof e=="object"&&!Array.isArray(e);let t=Eg.find(o=>o.id===s);return!t||typeof e!=typeof t.defaultValue||t.options&&!t.options.includes(e)?!1:typeof e!="number"||Number.isFinite(e)}function xg(){let s=new Date;return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}var kg,yg,ux,px,Sg,Eg,Hd,mx,Fd=w(()=>{"use strict";Zo();F();To();Pt();kg="kute-settings",yg=1,ux=256*1024,px=16*1024,Sg=["hudLayout","matchmakerFilter","hotkeys","nukeCounterConfig","customSkyConfig","kuteIconSlots","kuteIconUrls"],Eg=Object.values(At).filter(s=>"defaultValue"in s);Hd=class{constructor(){u.settingsTransfer={exportFile:()=>this.export(),importFile:()=>this.pick()}}export(){let e=hu(u.settings.data),t=[...Eg.map(i=>i.id),...Sg],o=Object.fromEntries(t.filter(i=>e[i]!==void 0).map(i=>[i,e[i]])),n={format:kg,version:yg,kute:u.version,exported:xg(),settings:o},r=document.createElement("a");r.href=URL.createObjectURL(new Blob([JSON.stringify(n,null,2)],{type:"application/json"})),r.download=`kute-settings-${xg()}.json`,r.click(),setTimeout(()=>URL.revokeObjectURL(r.href),1e4),u.showNotification(`Exported ${Object.keys(o).length} settings to your Downloads folder`,!1,4)}pick(){let e=document.createElement("input");e.type="file",e.accept=".json,application/json",e.onchange=()=>{let t=e.files?.[0];t&&this.read(t).catch(o=>console.error("[kute] settings import:",o))},e.click()}async read(e){if(e.size>ux){u.showNotification("That file is too big for a Kute settings file",!1,4);return}let t=null;try{t=JSON.parse(await e.text())}catch{t=null}if(t?.format!==kg||typeof t.settings!="object"||t.settings===null){u.showNotification("That is not a Kute settings file",!1,4);return}if(typeof t.version!="number"||t.version>yg){u.showNotification("That file comes from a newer Kute, update first",!1,4);return}let o=Object.entries(t.settings).filter(([i,a])=>hx(i,a));if(o.length===0){u.showNotification("That file holds no settings this Kute knows",!1,4);return}let n=typeof t.kute=="string"?` from Kute ${t.kute}`:"";if(await Ce({title:"Import Kute settings",paragraphs:[`${o.length} settings${n} in ${e.name}.`,"They replace your client settings, HUD positions, matchmaker filters and hotkeys. Kute restarts to apply them.","Userscripts, swapper files, custom CSS and your own sky images are files in Documents\\kute and are not part of it."],stay:"Cancel",leave:"Import and restart"})){for(let[i,a]of o)u.settings.data[i]=a,window.chrome.webview.postMessage(`set-config-json ${i} ${JSON.stringify(a)}`);window.chrome.webview.postMessage("restart")}}},mx=new Hd});var qd={};A(qd,{default:()=>fx});var Dd,fx,Kd=w(()=>{"use strict";F();Dd=class{constructor(){this.originalGenList=window.windows[22].genList,this.template=document.createElement("template"),u.settings.toggleShowPing=e=>this.toggle(e),this.toggle(!0)}toggle(e){let t=this;e?window.windows[22].genList=function(){return t.modifiedGenList(this)}:window.windows[22].genList=this.originalGenList}modifiedGenList(e){let t=this.originalGenList.call(e);this.template.innerHTML=t;let o=this.template.content.querySelectorAll(".pListPing.material-icons");for(let n of o){let r=n.getAttribute("title");n.classList.remove("pListPing","material-icons"),n.removeAttribute("title"),n.textContent=`${r||"N/A"} `}return this.template.innerHTML}},fx=new Dd});var Cg,$g=w(()=>{Cg=`#kuteSpotifyOverlay{position:absolute;left:463px;bottom:23px;z-index:10;display:flex;align-items:center;gap:12px;box-sizing:border-box;width:320px;min-height:82px;padding:10px;border:1px solid rgba(29,185,84,.7);border-radius:8px;background:#0c120fe0;box-shadow:0 4px 18px #00000059;color:#fff;font-family:Arial,sans-serif;pointer-events:none}#kuteSpotifyOverlay[hidden]{display:none}#kuteSpotifyOverlay.paused{opacity:.72}#kuteSpotifyArtwork{width:60px;height:60px;flex:0 0 60px;border-radius:4px;background:#26302a;object-fit:cover}#kuteSpotifyInfo{min-width:0;flex:1 1 auto}#kuteSpotifyTitle,#kuteSpotifyArtist{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#kuteSpotifyTitle{font-size:14px;font-weight:700}#kuteSpotifyArtist{margin-top:3px;color:#b8c8bc;font-size:12px}#kuteSpotifyProgress{height:3px;margin-top:9px;border-radius:2px;background:#536258;overflow:hidden}#kuteSpotifyProgress>div{height:100%;background:#1db954;transform:scaleX(0);transform-origin:left} +`});var Tg,Mg=w(()=>{Tg='
              '});var Ud={};A(Ud,{default:()=>wx});var vx,jd,wx,Gd=w(()=>{"use strict";$g();Mg();F();vx=1e3,jd=class{constructor(){this.overlay=null,this.playback=null,this.timer=null,this.artwork=null,this.listener=e=>{let{data:t}=e;typeof t!="object"||t===null||("spotify"in t?this.song(t.spotify):"spotifyState"in t&&this.state(t.spotifyState))},u.settings.toggleSpotifyOverlay=e=>this.toggle(e),this.toggle(!!u.settings.data.spotifyOverlay)}toggle(e){if(!e){window.chrome.webview.removeEventListener("message",this.listener),window.chrome.webview.postMessage("spotify-stop"),this.stopProgress(),this.overlay?.remove(),this.overlay=null,this.artwork=null,document.querySelector("#kuteSpotifyOverlayCSS")?.remove();return}if(this.overlay)return;let t=document.createElement("style");t.id="kuteSpotifyOverlayCSS",t.textContent=Cg,document.head.append(t),this.overlay=document.createElement("div"),this.overlay.id="kuteSpotifyOverlay",this.overlay.hidden=!0,this.overlay.innerHTML=Tg,(document.querySelector("#uiBase")??document.body).append(this.overlay),window.chrome.webview.addEventListener("message",this.listener),window.chrome.webview.postMessage("spotify-start")}song(e){if(!this.overlay||(this.overlay.hidden=!e,!e))return;let t=this.overlay.querySelector("#kuteSpotifyArtwork");e.artwork!==this.artwork&&(this.artwork=e.artwork,t.src=e.artwork??""),t.alt=e.album,this.overlay.querySelector("#kuteSpotifyTitle").textContent=e.title,this.overlay.querySelector("#kuteSpotifyArtist").textContent=e.artist,this.state(e)}state({playing:e,position:t,duration:o}){this.overlay&&(this.overlay.classList.toggle("paused",!e),this.playback={playing:e,position:t,duration:o,at:performance.now()},this.drawProgress(),e&&this.timer===null?this.timer=window.setInterval(()=>this.drawProgress(),vx):e||this.stopProgress())}drawProgress(){let e=this.overlay?.querySelector("#kuteSpotifyProgress > div")??null;if(!e||!this.playback)return;let{playing:t,position:o,duration:n,at:r}=this.playback,i=o+(t?performance.now()-r:0);e.style.transform=`scaleX(${n>0?Math.min(1,i/n).toFixed(4):0})`}stopProgress(){this.timer!==null&&window.clearInterval(this.timer),this.timer=null}},wx=new jd});var Vd={};A(Vd,{default:()=>kx});var Wd,kx,Yd=w(()=>{"use strict";F();Wd=class{constructor(){if(!u.version)return;let e=document.createElement("style");e.id="kute_versionTagCSS",e.textContent=` #matchInfo > div:first-of-type::before { content: ${JSON.stringify(`Kute v${u.version}`)}; display: block; color: #35e0e8; - }`,document.head.append(e)}},mx=new Kd});var Cg={};var fx,Eg,gx,$g,Gd,Wd=w(()=>{"use strict";fx=[{key:"scoreboardName.js",name:"Scoreboard Name",author:"Kute"}],Eg="kute_withdrawn",gx=1e4,$g=localStorage.getItem(Eg)??"",Gd=fx.filter(s=>!$g.split(",").includes(s.key));if(Gd.length>0){let s=0,e=t=>{let o=t.data?.userscripts?.groups;if(!Array.isArray(o))return;window.chrome.webview.removeEventListener("message",e),clearTimeout(s);let n=o.flatMap(r=>r.scripts??[]);for(let r of Gd)n.find(a=>a.key===r.key&&a.meta?.name===r.name&&a.meta?.author===r.author)&&(window.chrome.webview.postMessage(`scripts-toggle ${JSON.stringify({key:r.key,enabled:!1})}`),window.chrome.webview.postMessage(`scripts-delete ${JSON.stringify({key:r.key})}`));localStorage.setItem(Eg,[...$g.split(",").filter(Boolean),...Gd.map(r=>r.key)].join(","))};s=setTimeout(()=>window.chrome.webview.removeEventListener("message",e),gx),window.chrome.webview.addEventListener("message",e),window.chrome.webview.postMessage("scripts-list {}")}});var Lg,Vd=w(()=>{Lg=iu({"./modules/about.js":()=>Promise.resolve().then(()=>(mi(),Ju)),"./modules/accountEndMessage.js":()=>Promise.resolve().then(()=>(vi(),bi)),"./modules/accountManager.js":()=>Promise.resolve().then(()=>(Mi(),Ci)),"./modules/api.js":()=>Promise.resolve().then(()=>(It(),dp)),"./modules/args.js":()=>Promise.resolve().then(()=>(Ai(),hp)),"./modules/autoDetect/bench.js":()=>Promise.resolve().then(()=>(Zr(),Iu)),"./modules/autoDetect/clientBench.js":()=>Promise.resolve().then(()=>(Ki(),vp)),"./modules/autoDetect/decide.js":()=>Promise.resolve().then(()=>(ji(),kp)),"./modules/autoDetect/gameSettings.js":()=>Promise.resolve().then(()=>(Xi(),Yi)),"./modules/autoDetect/index.js":()=>Promise.resolve().then(()=>(aa(),ia)),"./modules/autoDetect/metrics.js":()=>Promise.resolve().then(()=>(yn(),Au)),"./modules/autoDetect/policy.js":()=>Promise.resolve().then(()=>(ks(),fp)),"./modules/autoDetect/sample.js":()=>Promise.resolve().then(()=>(Qi(),Cp)),"./modules/autoDetect/scene.js":()=>Promise.resolve().then(()=>(Yr(),Tu)),"./modules/badges.js":()=>Promise.resolve().then(()=>(ha(),pa)),"./modules/betterChat.js":()=>Promise.resolve().then(()=>(ga(),fa)),"./modules/bpClaimAll.js":()=>Promise.resolve().then(()=>(ba(),eh)),"./modules/changelog.js":()=>Promise.resolve().then(()=>(Ra(),xh)),"./modules/chatDraft.js":()=>Promise.resolve().then(()=>(Na(),Ia)),"./modules/chatLogs.js":()=>Promise.resolve().then(()=>(za(),Ba)),"./modules/clanColors.js":()=>Promise.resolve().then(()=>(Da(),Oa)),"./modules/confirmPopup.js":()=>Promise.resolve().then(()=>(Rt(),ep)),"./modules/customCss.js":()=>Promise.resolve().then(()=>(vn(),ku)),"./modules/customSky.js":()=>Promise.resolve().then(()=>(Ka(),qa)),"./modules/diagnostics.js":()=>Promise.resolve().then(()=>(Va(),Wa)),"./modules/externalQueue.js":()=>Promise.resolve().then(()=>(tl(),Kh)),"./modules/fixes.js":()=>Promise.resolve().then(()=>(ol(),jh)),"./modules/gameFpsLimit.js":()=>Promise.resolve().then(()=>(as(),ai)),"./modules/hotkeys.js":()=>Promise.resolve().then(()=>(Po(),Si)),"./modules/hpEnemyCounter.js":()=>Promise.resolve().then(()=>(rl(),nl)),"./modules/hsSound.js":()=>Promise.resolve().then(()=>(ll(),al)),"./modules/hudEditor/editor.js":()=>Promise.resolve().then(()=>(pl(),ul)),"./modules/hudEditor/elements.js":()=>Promise.resolve().then(()=>(sr(),Yh)),"./modules/hudEditor/index.js":()=>Promise.resolve().then(()=>(rr(),dl)),"./modules/importSettings.js":()=>Promise.resolve().then(()=>(hl(),tm)),"./modules/inventoryScroll.js":()=>Promise.resolve().then(()=>(gl(),fl)),"./modules/keystrokes.js":()=>Promise.resolve().then(()=>(yl(),kl)),"./modules/kuteCss.js":()=>Promise.resolve().then(()=>(ti(),ei)),"./modules/kuteIcons/index.js":()=>Promise.resolve().then(()=>($l(),El)),"./modules/kuteIcons/slots.js":()=>Promise.resolve().then(()=>(bn(),bu)),"./modules/leftClick.js":()=>Promise.resolve().then(()=>(gn(),fu)),"./modules/linuxUpdate.js":()=>Promise.resolve().then(()=>(Al(),Tl)),"./modules/logoBadge.js":()=>Promise.resolve().then(()=>(di(),ci)),"./modules/managers/customCss.js":()=>Promise.resolve().then(()=>(_l(),Nl)),"./modules/managers/editor.js":()=>Promise.resolve().then(()=>(Oo(),Ih)),"./modules/managers/index.js":()=>Promise.resolve().then(()=>(jl(),zm)),"./modules/managers/popup.js":()=>Promise.resolve().then(()=>(Ds(),Tm)),"./modules/managers/registry.js":()=>Promise.resolve().then(()=>(es(),vu)),"./modules/managers/stylesheets.js":()=>Promise.resolve().then(()=>(ur(),Am)),"./modules/managers/swapper.js":()=>Promise.resolve().then(()=>(Kl(),ql)),"./modules/managers/userscripts.js":()=>Promise.resolve().then(()=>(Hl(),zl)),"./modules/maps.js":()=>Promise.resolve().then(()=>(tr(),Nh)),"./modules/market.js":()=>Promise.resolve().then(()=>(Of(),Vy)),"./modules/market/alerts.js":()=>Promise.resolve().then(()=>(fr(),Zm)),"./modules/market/analytics.js":()=>Promise.resolve().then(()=>(wr(),cf)),"./modules/market/api.js":()=>Promise.resolve().then(()=>(xe(),Om)),"./modules/market/cards.js":()=>Promise.resolve().then(()=>(Xl(),Km)),"./modules/market/chart.js":()=>Promise.resolve().then(()=>(jc(),If)),"./modules/market/chartData.js":()=>Promise.resolve().then(()=>(yr(),vf)),"./modules/market/contrib.js":()=>Promise.resolve().then(()=>(ic(),nf)),"./modules/market/contributionData.js":()=>Promise.resolve().then(()=>(nc(),ef)),"./modules/market/contributionEvidence.js":()=>Promise.resolve().then(()=>(bc(),ff)),"./modules/market/element.js":()=>Promise.resolve().then(()=>(_e(),af)),"./modules/market/exchangeEvidence.js":()=>Promise.resolve().then(()=>(wc(),gf)),"./modules/market/index.js":()=>Promise.resolve().then(()=>($r(),Vc)),"./modules/market/intelligence.js":()=>Promise.resolve().then(()=>(en(),mf)),"./modules/market/itemSearch.js":()=>Promise.resolve().then(()=>(Ko(),pf)),"./modules/market/navigation.js":()=>Promise.resolve().then(()=>(vr(),rf)),"./modules/market/presentation.js":()=>Promise.resolve().then(()=>(pe(),Fm)),"./modules/market/terminal.js":()=>Promise.resolve().then(()=>(Gc(),Uc)),"./modules/market/trade.js":()=>Promise.resolve().then(()=>(Zl(),Gm)),"./modules/market/types.js":()=>Promise.resolve().then(()=>(Ve(),Dm)),"./modules/market/views/analyze.js":()=>Promise.resolve().then(()=>(_c(),$f)),"./modules/market/views/compactList.js":()=>Promise.resolve().then(()=>(Fc(),Af)),"./modules/market/views/deals.js":()=>Promise.resolve().then(()=>(Ac(),xf)),"./modules/market/views/help.js":()=>Promise.resolve().then(()=>(Kc(),Pf)),"./modules/market/views/indices.js":()=>Promise.resolve().then(()=>(Rc(),Sf)),"./modules/market/views/intelligence.js":()=>Promise.resolve().then(()=>(zc(),Cf)),"./modules/market/views/intro.js":()=>Promise.resolve().then(()=>(xr(),Mf)),"./modules/market/views/item.js":()=>Promise.resolve().then(()=>(Sc(),wf)),"./modules/market/views/movers.js":()=>Promise.resolve().then(()=>(Mc(),yf)),"./modules/market/views/overview.js":()=>Promise.resolve().then(()=>(dc(),uf)),"./modules/market/views/portfolio.js":()=>Promise.resolve().then(()=>(Ic(),Ef)),"./modules/market/views/search.js":()=>Promise.resolve().then(()=>(pc(),hf)),"./modules/market/views/table.js":()=>Promise.resolve().then(()=>(Oc(),Tf)),"./modules/market/views/watchlist.js":()=>Promise.resolve().then(()=>($c(),kf)),"./modules/market/watchlist.js":()=>Promise.resolve().then(()=>(Ut(),Vm)),"./modules/matchmaker.js":()=>Promise.resolve().then(()=>(Qc(),Zc)),"./modules/menuTimer.js":()=>Promise.resolve().then(()=>(sd(),od)),"./modules/modDownload.js":()=>Promise.resolve().then(()=>(ad(),id)),"./modules/motionBlur.js":()=>Promise.resolve().then(()=>(ud(),dd)),"./modules/nukeCounter.js":()=>Promise.resolve().then(()=>(fd(),md)),"./modules/playerLists.js":()=>Promise.resolve().then(()=>(jn(),Fp)),"./modules/presence.js":()=>Promise.resolve().then(()=>(da(),Kp)),"./modules/privateMatch.js":()=>Promise.resolve().then(()=>(zn(),Sp)),"./modules/queueSound.js":()=>Promise.resolve().then(()=>(el(),Dh)),"./modules/rampBoost.js":()=>Promise.resolve().then(()=>(hn(),pu)),"./modules/rankProgress.js":()=>Promise.resolve().then(()=>(vd(),bd)),"./modules/rankedAlert.js":()=>Promise.resolve().then(()=>(yd(),kd)),"./modules/realPing.js":()=>Promise.resolve().then(()=>(Ed(),Sd)),"./modules/recovery.js":()=>Promise.resolve().then(()=>(Md(),Cd)),"./modules/renderFps.js":()=>Promise.resolve().then(()=>(Ld(),Ad)),"./modules/serverPings.js":()=>Promise.resolve().then(()=>(Id(),Pd)),"./modules/sessionRecovery.js":()=>Promise.resolve().then(()=>(kn(),$u)),"./modules/settingsTransfer.js":()=>Promise.resolve().then(()=>(Bd(),_d)),"./modules/showPing.js":()=>Promise.resolve().then(()=>(Od(),Hd)),"./modules/spotifyOverlay.js":()=>Promise.resolve().then(()=>(qd(),Fd)),"./modules/versionTag.js":()=>Promise.resolve().then(()=>(Ud(),jd)),"./modules/withdrawn.js":()=>Promise.resolve().then(()=>(Wd(),Cg))})});var Ng={};A(Ng,{default:()=>xx});function Rg(s){return`toggle${s.charAt(0).toUpperCase()+s.slice(1)}`}function Mg(s){let e=s.disabledBy?Vt[s.disabledBy]:null;return e&&u.settings.data[e.id]===!0?e:null}function Pg(s,e){let t=u.settings[Rg(s)];if(typeof t=="function"){t(e);return}if(e)try{Lg(`./modules/${s}.js`).catch(()=>{})}catch{}}function Ig(s,e){switch(s){case"exitButton":U("#clientExit").style.display=`${e?"flex":"none"}`;break;case"menuTimer":e?Promise.resolve().then(()=>ue(ed(),1)).then(t=>{let o=document.createElement("style");o.id="kute_menuTimerCSS",o.textContent=t.default,document.head.append(o)}):document.querySelector("#kute_menuTimerCSS")?.remove();break;case"classicMenu":e?Promise.resolve().then(()=>ue(pi(),1)).then(t=>{let o=document.createElement("style");o.id="kute_classicMenuCSS",o.textContent=t.default,document.head.append(o)}):document.querySelector("#kute_classicMenuCSS")?.remove();break;case"cleanUI":{e?Promise.resolve().then(()=>ue(ui(),1)).then(t=>{let o=document.createElement("style");o.id="kute_cleanCSS",o.textContent=t.default,document.head.append(o)}):document.querySelector("#kute_cleanCSS")?.remove();break}case"textSelect":{if(e){let t=document.createElement("style");t.id="kute_textSelectCSS",t.textContent="#chatHolder * { user-select: text }",document.head.append(t)}else document.querySelector("#kute_textSelectCSS")?.remove();break}default:break}}function kx(s,e){for(let t of Object.values(Vt)){if(t.disabledBy!==s)continue;let o=!e&&!!u.settings.data[t.id],n=document.querySelector(`#${t.id}`);if(n instanceof HTMLInputElement){n.checked=o,n.disabled=e;let r=n.closest("label");r&&(r.style.cssText=e?Tr:"",r.title=e?`Off while ${Vt[s].name} is on`:"")}Pg(t.id,o)}}var Yd,Tr,bx,vx,wx,Vt,Tg,Ag,yx,Xd,xx,_g=w(()=>{"use strict";Xo();D();Ae();Co();hn();Vd();Yd=new Map,Tr="opacity: 0.35; cursor: not-allowed",bx='window.setSetting("rawMouse"',vx="Controlled by Kute's Raw Input setting",wx="Not available on Linux",Vt=Tt;u.settings.changeSetting=(s,e,t)=>{if(e==="")return;let o=document.querySelector(`#${s}`);o instanceof HTMLInputElement&&(o.value=String(e),o.type==="checkbox"&&(o.checked=e===!0));let n=e;typeof n=="string"&&/^-?\d*\.?\d+$/.test(n)&&(n.includes(".")?n=Number.parseFloat(n):n=Number.parseInt(n,10));let r=document.querySelector(`#slid_input_${s}`);if(r&&t){r.value=String(n),clearTimeout(Yd.get(s)),Yd.set(s,setTimeout(()=>{u.settings.data[s]=n,window.chrome.webview.postMessage(`set-config, ${s}, ${n}`),Yd.delete(s)},500));return}switch(s){case"obsCapturePlugin":if(n&&!confirm("Install the Kute Capture plugin into OBS? OBS must be closed, and Windows may ask for administrator permission.")){ke("#obsCapturePlugin").checked=!1;return}window.chrome.webview.postMessage(`obs-plugin, ${n}`);break;case"rampBoost":n?He()||Zt(!0):Zt(!1);break;default:Ig(s,n);break}let i=Rg(s);if(typeof u.settings[i]!="function")try{Lg(`./modules/${s}.js`).catch(()=>{})}catch{}else u.settings[i](n);u.settings.data[s]=n,window.chrome.webview.postMessage(`set-config, ${s}, ${n}`),kx(s,n===!0)};Tg=' *',Ag=' *',yx=()=>{let s=e=>`window.chrome.webview.postMessage('open-url, ${e}')`;return[["About","info","kuteTopBlue",`${Ue}.showAboutPopup()`],["Website","language","kuteTopBlue",s("https://kute.lol")],["Source Code","code","kuteTopPink",s("https://github.com/NullDev/Kute")],["Report Issue","bug_report","kuteTopPink",s("https://github.com/NullDev/Kute/issues/choose")],["Manage Swapper","swap_horiz","kuteTopOrange",`${Ue}.swapperManager.open()`],["Manage Userscripts","extension","kuteTopOrange",`${Ue}.userscriptManager.open()`]]},Xd=class{constructor(){this.settingsWindow=window.windows[0],this.init()}init(){let e=this.settingsWindow.getSettings;this.settingsWindow.getSettings=(...t)=>{let o=this.lockRawMouse(e.call(this.settingsWindow,...t)),n=this.getCSettings();if(!n)return o;let r=o.startsWith("
              ");return(r?o.slice(6):o)+n+(r?"
              ":"")},this.settingsWindow.getCSettings=()=>this.getCSettings(),u.settings.togglePerformanceMode=t=>{for(let o of pn(u.settings.data,t)){let n=u.settings.data[o];Ig(o,n),Pg(o,n===!0&&!Mg(Vt[o]))}setTimeout(()=>this.rerender(),0)},u.openKuteSettings=()=>{window.showWindow(1),this.settingsWindow.changeTab(this.settingsWindow.tabs[this.settingsWindow.settingType].length-1)},window.chrome.webview.addEventListener("message",t=>{let o=t.data;if(o?.type==="obs-plugin"){if(!o.ok){u.settings.data.obsCapturePlugin=!1;let n=document.querySelector("#obsCapturePlugin");n&&(n.checked=!1)}u.showNotification(o.message,!1,5)}})}rerender(){let e=this.settingsWindow.tabs[this.settingsWindow.settingType];(this.settingsWindow.tabIndex===e.length-1||this.settingsWindow.settingSearch)&&this.settingsWindow.changeTab(this.settingsWindow.tabIndex)}lockRawMouse(e){let t=e.indexOf(bx);if(t<0)return e;let o=e.lastIndexOf("",t),r=e.lastIndexOf("",r);if(i<0||i>o)return e;let a=e.slice(o,n).replace(/\s+checked\b/,"")+(u.settings.data.rawInput&&u.platform!=="linux"?" checked":"")+" disabled>",l=u.platform==="linux"?wx:vx;return e.slice(0,i)+` title="${l}">`+e.slice(i+1,o)+a+e.slice(n+1)}searchMatches(e){let t=this.settingsWindow.settingSearch.toLowerCase()||"";return[e.name,e.category,e.description??""].some(o=>o.toLowerCase().includes(t))}generateHtml(e){let t=u.settings.data[e.id],o=e.buttonAction?.replaceAll("{{kute}}",Ue).replaceAll('"',""")??"",n=e.requiresLogin&&document.querySelector("#signedInHeaderBar")===null,r="",i=e.type==="checkbox"?"margin-right: 8px; ":"";switch(e.button&&n?r=`
              ${e.button}
              `:e.button&&(r=`
              ${e.button}
              `),e.type){case"checkbox":{let a=Mg(e);if(a)return`
              ");return(r?o.slice(6):o)+n+(r?"
              ":"")},this.settingsWindow.getCSettings=()=>this.getCSettings(),u.settings.togglePerformanceMode=t=>{for(let o of mn(u.settings.data,t)){let n=u.settings.data[o];Hg(o,n),zg(o,n===!0&&!Pg(Jt[o]))}setTimeout(()=>this.rerender(),0)},u.openKuteSettings=()=>{window.showWindow(1),this.settingsWindow.changeTab(this.settingsWindow.tabs[this.settingsWindow.settingType].length-1)},window.chrome.webview.addEventListener("message",t=>{let o=t.data;if(o?.type==="obs-plugin"){if(!o.ok){u.settings.data.obsCapturePlugin=!1;let n=document.querySelector("#obsCapturePlugin");n&&(n.checked=!1)}u.showNotification(o.message,!1,5)}})}rerender(){let e=this.settingsWindow.tabs[this.settingsWindow.settingType];(this.settingsWindow.tabIndex===e.length-1||this.settingsWindow.settingSearch)&&this.settingsWindow.changeTab(this.settingsWindow.tabIndex)}lockRawMouse(e){let t=e.indexOf(Sx);if(t<0)return e;let o=e.lastIndexOf("",t),r=e.lastIndexOf("",r);if(i<0||i>o)return e;let a=e.slice(o,n).replace(/\s+checked\b/,"")+(u.settings.data.rawInput&&u.platform!=="linux"?" checked":"")+" disabled>",l=u.platform==="linux"?$x:Ex;return e.slice(0,i)+` title="${l}">`+e.slice(i+1,o)+a+e.slice(n+1)}searchMatches(e){let t=this.settingsWindow.settingSearch.toLowerCase()||"";return[e.name,e.category,e.description??""].some(o=>o.toLowerCase().includes(t))}generateHtml(e){let t=u.settings.data[e.id],o=e.buttonAction?.replaceAll("{{kute}}",Ue).replaceAll('"',""")??"",n=e.requiresLogin&&document.querySelector("#signedInHeaderBar")===null,r="",i=e.type==="checkbox"?"margin-right: 8px; ":"";switch(e.button&&n?r=`
              ${e.button}
              `:e.button&&(r=`
              ${e.button}
              `),e.type){case"checkbox":{let a=Pg(e);if(a)return` - ${r}`;if(n)return`
              `:""}},xx=new Xd});var au=`@keyframes chat-moveup{0%{transform:translateY(375px)}to{transform:translateY(0)}}@keyframes death-ui-moveup{0%{transform:translateY(340px)}to{transform:translateY(0)}}.entry-info{z-index:9}#gameNameHolder{top:33px}#teamSelector{bottom:290px!important}div #setHed_local,.kuteSettings .setHed:first-of-type{margin-top:10px}.setBodH{margin-top:5px}.carousel,.onSpect #hpEnemyCounter,#settHolder div.setHed:not([id]),#newUserGuide,#phonePop,#signupRewardsButton,#streamContainer,#aHider,#adCon,#rightABox,#aContainer,#topRightAdHolder,#braveWarning,.webpush-container,.nav-notif-section+.verticalSeparator,.endAHolder{display:none!important}.death-ui-bottom{backdrop-filter:none;animation:none}#menuAccountUsername{border:0}.ranked-matchmaking-status{box-shadow:none!important}#homeStoreAdC,#menuAccountUsername,#uiBase.onDeathScrn #chatHolder,.ranked-matchmaking-status{animation:none!important}#phonePop{top:0;bottom:0}.chatItem{max-width:387px}.moreKrunkerPopup{width:600px}.moreKrunkerClient{display:none!important}#mLevelCont{background-color:transparent}.bpBtn.skip.disabled{background:#333;border-color:#444;color:#888;cursor:not-allowed;opacity:1!important}.kuteTopButtons{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 4px}.kuteTopButton{display:flex;align-items:center;justify-content:center;gap:10px;padding:8px 10px;border:3px solid var(--kute-top, #35e0e8);border-radius:4px;background:#222;color:#fff;font-size:21px;cursor:pointer;user-select:none;transition:background .1s}.kuteTopButton:hover{background:#333}.kuteTopButton .material-icons{font-size:24px}.kuteTopBlue{--kute-top: #35e0e8}.kuteTopPink{--kute-top: #f5479b}.kuteTopOrange{--kute-top: #ff8a1f}#menuWindow .kuteHiddenBanner{display:flex;align-items:center;gap:10px;margin:8px 0 4px;padding:8px 12px;border:3px solid #eb5656;border-radius:4px;background:#eb56562e;color:#fff;font-size:17px;line-height:27px}#menuWindow .kuteHiddenBanner .material-icons{color:#eb5656;font-size:26px}.kuteLegend{float:right;margin-right:8px;color:#aaa;font-size:16px}.kuteLegend span{margin-left:12px}#menuWindow .settName .kuteDesc{margin-top:2px;color:#ffffff73;font-size:15px;line-height:1.3}#menuWindow .switch input:disabled+.slider{opacity:.35;cursor:not-allowed} -`;D();Ae();hn();gn();bn();es();vn();kn();var an=location.pathname==="/kute-bench";an&&Promise.resolve().then(()=>(Zr(),Iu));!an&&localStorage.getItem("krk_advanced")===null&&localStorage.setItem("krk_advanced","1");an||Qt();an||Ne.then(()=>{u.settings?.data?.kuteCss===!0&&Promise.resolve().then(()=>(ti(),ei)).catch(()=>{})});location.hostname==="krunker.io"&&location.pathname==="/"&&Ne.then(()=>{u.settings?.data?.accountEndMessage&&localStorage.setItem("kro_setngss_endMessage","")});var Bg=!0;window.OffCliV=!0;window.closeClient=()=>window.chrome.webview.postMessage("close");document.addEventListener("DOMContentLoaded",()=>{if(an)return;Fr(),Promise.resolve().then(()=>as()),Promise.resolve().then(()=>di());let s=document.createElement("style");s.textContent=au,document.head.append(s);let e=null;Br(HTMLCanvasElement,"addEventListener",t=>{let[o,n]=t;o==="wheel"&&(e=n)}),window.chrome.webview.addEventListener("message",t=>{typeof t.data?.wheel=="number"&&e?.(new WheelEvent("wheel",{deltaY:t.data.wheel}))}),window.addEventListener("wheel",t=>{if(!document.pointerLockElement){for(let o of t.composedPath()){if(o===document.body||o===document.documentElement)break;if(!(o instanceof Element))continue;let n=getComputedStyle(o),r=(n.overflowY==="auto"||n.overflowY==="scroll")&&o.scrollHeight>o.clientHeight,i=(n.overflowX==="auto"||n.overflowX==="scroll")&&o.scrollWidth>o.clientWidth;if(r||i)return}t.preventDefault()}},{capture:!0,passive:!1}),Br(HTMLCanvasElement,"requestPointerLock",function(t,o){Zo(),Hr(),window.chrome.webview.postMessage("drag, false"),window.chrome.webview.postMessage("throttle, game");let n=u.platform!=="linux"&&u?.settings?.data?.rawInput;return o.call(this,{...t[0],unadjustedMovement:n})}),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement?window.chrome.webview.postMessage("throttle, game"):(window.chrome.webview.postMessage("drag, true"),window.chrome.webview.postMessage("throttle, menu"))}),Ne.then(()=>{u.settings.data.hidePopularNow===!0&&(u.settings.data.hidePopularNow=!1,window.chrome.webview.postMessage("set-config, hidePopularNow, false"),u.settings.data.cleanUI=!0,window.chrome.webview.postMessage("set-config, cleanUI, true")),u.settings.data.cleanUI&&Promise.resolve().then(()=>ue(ui(),1)).then(t=>{let o=document.createElement("style");o.id="kute_cleanCSS",o.textContent=t.default,document.head.append(o)})}),Ne.then(()=>{u.settings.data.classicMenu&&Promise.resolve().then(()=>ue(pi(),1)).then(t=>{let o=document.createElement("style");o.id="kute_classicMenuCSS",o.textContent=t.default,document.head.append(o)})})},{once:!0});Object.defineProperty(window,"gameLoaded",{async set(s){if(!s||(await Ne,window.chrome.webview.postMessage("game-updated"),!Bg))return;sessionStorage.getItem("justLaunched")===null?sessionStorage.setItem("justLaunched","true"):sessionStorage.setItem("justLaunched","false"),Bg=!1,localStorage.setItem("logs","true"),U("#compBtnLst").insertAdjacentHTML("beforeend",` + ${r.description?`
              ${r.description.replaceAll("<","<")}
              `:""}
              - ${ko("kmQ","discover","Search all items",e.q)} + ${xo("kmQ","discover","Search all items",e.q)} sf;)this.sent.del /> ${s.advanced?P` `:P` @@ -370,8 +371,8 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del - `}}var Iy,pc=w(()=>{"use strict";_e();xe();Ve();pe();Ko();Iy=6e4});var mf={};A(mf,{dealEvidence:()=>hc,intelligenceView:()=>fc,itemIntelligence:()=>mc});function hc(s){let{assessment:e}=s;if(!e)return"";let t=e.risks[0]??"Supported by recent sales";return`${S(t)}${e.risks.length>1?` +${e.risks.length-1} risk${e.risks.length>2?"s":""}`:""}`}function mc(s,e=!1){if(!s)return"";let{outlook:t}=s,o=s.signals.slice(0,e?2:4);if(!o.length&&t.state!=="published")return"";let n="";return t.state==="published"&&(n=`
              {"use strict";Be();xe();Ve();pe();Uo();Hy=6e4});var wf={};A(wf,{dealEvidence:()=>bc,intelligenceView:()=>wc,itemIntelligence:()=>vc});function bc(s){let{assessment:e}=s;if(!e)return"";let t=e.risks[0]??"Supported by recent sales";return`${S(t)}${e.risks.length>1?` +${e.risks.length-1} risk${e.risks.length>2?"s":""}`:""}`}function vc(s,e=!1){if(!s)return"";let{outlook:t}=s,o=s.signals.slice(0,e?2:4);if(!o.length&&t.state!=="published")return"";let n="";return t.state==="published"&&(n=`
              7-DAY REPORTED-PRICE OUTLOOK @@ -391,11 +392,11 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${S(r.title)}

              ${S(r.detail)}

              -
              `).join(""):'

              No observation to highlight.

              '}${n}`}function fc(s,e,t,o){let{model:n}=s,r=n?.historical,i=n?.forward,a=r?.skill??null,l=[["","All signals"],["activity","Activity"],["supply","Supply"],["relative","Relative value"],["risk","Risks"],["availability","Availability"]],c=[...s.items].sort((h,p)=>Number(o.includes(p.skin))-Number(o.includes(h.skin))),d=h=>`${T(h.samples)} +
              `).join(""):'

              No observation to highlight.

              '}${n}`}function wc(s,e,t,o){let{model:n}=s,r=n?.historical,i=n?.forward,a=r?.skill??null,l=[["","All signals"],["activity","Activity"],["supply","Supply"],["relative","Relative value"],["risk","Risks"],["availability","Availability"]],c=[...s.items].sort((h,p)=>Number(o.includes(p.skin))-Number(o.includes(h.skin))),d=h=>`${T(h.samples)} ${h.weeks} ${h.modelError===null?"Pending":h.modelError.toFixed(3)} -${h.skill===null?"Pending":kr(h.skill)} -${h.coverage===null?"Pending":kr(h.coverage)}`;return`
              +${h.skill===null?"Pending":xr(h.skill)} +${h.coverage===null?"Pending":xr(h.coverage)}`;return`
              KUTE INTELLIGENCE

              Read the market.

              @@ -415,7 +416,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del class="intelligenceProof"> Historical error reduction ${a===null?"Pending":kr(a)} + class="${a!==null&&a>0?"positive":"muted"}">${a===null?"Pending":xr(a)}
              vs the better of two baselines
              ${T(r?.samples??0)} held-out predictions
              ${T(i?.samples??0)} forward outcomes @@ -471,7 +472,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del

              Lower log error is better. Error reduction compares with the better of unchanged last price and the existing valuation baseline. Historical mean range width: ${kr(r.width)} of the predicted price. Forward publication requires 200 outcomes, 20 items, four issue weeks, at least 5% lower error, 85-95% range coverage and mean range width no greater than the predicted price.

              `:""}
              Lower log error is better. Error reduction compares with the better of unchanged last price and the existing valuation baseline. Historical mean range width: ${xr(r.width)} of the predicted price. Forward publication requires 200 outcomes, 20 items, four issue weeks, at least 5% lower error, 85-95% range coverage and mean range width no greater than the predicted price.

              `:""}
              ${T(s.coverage.dailyRows)} daily observations @@ -483,7 +484,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del class="coverageRow">${s.sources.map(h=>`${S(h.source)}: ${h.records} records · ${S(We(Date.now()-h.observedAt))} ago`).join("")}
              `:'

              News and catalog feeds have not been collected yet.

              '}`+(s.news.length?`

              Official news

              ${s.news.map(h=>`

              ${h.url?``:S(h.title)}

              `).join("")}
              `:"")}var kr,en=w(()=>{"use strict";pe();Ve();kr=s=>s===null?"Not available":`${(s*100).toFixed(1)}%`});var ff={};A(ff,{contributionEvidence:()=>gc});function gc(s){if(!s||!s.trades30d&&!s.sales30d)return"";let{cash:e,sales:t,swaps:o}=s;return`
              + class="sub">${h.url?``:S(h.title)}

              `).join("")}
              `:"")}var xr,on=w(()=>{"use strict";pe();Ve();xr=s=>s===null?"Not available":`${(s*100).toFixed(1)}%`});var kf={};A(kf,{contributionEvidence:()=>kc});function kc(s){if(!s||!s.trades30d&&!s.sales30d)return"";let{cash:e,sales:t,swaps:o}=s;return`

              Completed trade reports

              30 days

              ${T(s.trades30d)} reported private trades involved this item. ${T(s.matchedSales30d)} of ${T(s.sales30d)} contributed market sales match independently sampled listings and fit official daily totals.

              @@ -498,7 +499,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del Comparisons require multiple reports, source sessions and dates; source sessions do not identify unique players. These descriptive samples exclude bundles and reported serial, wear, style and paint attributes. The valuation model separately uses supported bundles with KR anchors; its contribution is explained above.

              -
              `}var bc=w(()=>{"use strict";pe()});var gf={};A(gf,{exchangeEvidence:()=>vc});function vc(s,e){let t=s.exchange;if(!t&&!s.privateTrading?.trades30d)return"";let o=t?.status==="applied";return`
              +
              `}var yc=w(()=>{"use strict";pe()});var yf={};A(yf,{exchangeEvidence:()=>xc});function xc(s,e){let t=s.exchange;if(!t&&!s.privateTrading?.trades30d)return"";let o=t?.status==="applied";return`

              ${o?"Private trades contribute to this value":"Private trading activity"}

              ${o&&t.confidence<35?"Tentative evidence":"Reported exchanges"}
              ${o?`

              ${T(t.reports)} eligible exchanges inform the ${T(s.fair)} KR Kute estimate. @@ -506,13 +507,13 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${S(t?.reason??"These reports establish activity; their currencies or instance attributes do not yet support a base-item KR estimate.")}

              `} ${s.privateTrading?`

              ${T(s.privateTrading.trades7d)} private trades in seven days. Latest reported trade date: ${S(s.privateTrading.lastTradeDay)} UTC.

              `:""} ${e&&o?`
              -
              Public-data baseline${T(t.baseline)} KR${S(Ny[t.baselineMethod]??"Public evidence")}
              +
              Public-data baseline${T(t.baseline)} KR${S(Oy[t.baselineMethod]??"Public evidence")}
              Model sensitivity range${T(t.low)} to ${T(t.high)}KR; not a calibrated prediction interval
              Report diversity${S(t.sources)} source${t.sources===1?"":"s"} / ${S(t.days)} day${t.days===1?"":"s"}Anonymous connections, not verified unique players
              `:""}

              Client reports can be incomplete or inaccurate. A verdict needs sufficient combined public and private evidence. Private trading does not establish cash-sale liquidity. The letter grade still describes public-market activity.

              -
              `}var Ny,wc=w(()=>{"use strict";pe();Ny={sales7d:"7-day public sales",sales30d:"30-day public sales",sales90d:"90-day public sales",ask:"Sampled asking prices",krunker:"Krunker estimate",floor:"Fallback estimate"}});var vf={};A(vf,{candleSeries:()=>yc,lineSegments:()=>kc});function kc(s,e,t){let o=[],n=null,r=!1;for(let i of s){let a=i.values[e];if(a==null||!Number.isFinite(a)){r=!0;continue}n&&o.push({from:n,to:i,gap:r||i.t-n.t>t*1.5}),n=i,r=!1}return o}function bf(s,e,t){let o=new Map,n=e===7*864e5?4*864e5:0;for(let a of[...s].sort((l,c)=>l.t-c.t)){let l=Math.floor((a.t-n)/e)*e+n,c=o.get(l);c||(c={t:l,end:l+e,values:[],volume:null,ask:null,partial:!1},o.set(l,c));for(let[h,p]of a.values.entries())p!==null&&Number.isFinite(p)&&(c.values[h]=p);a.volume!==null&&a.volume!==void 0&&Number.isFinite(a.volume)&&(c.volume=(c.volume??0)+a.volume);let d=a.ask;d&&(c.ask?(c.ask.high=Math.max(c.ask.high,d.high),c.ask.low=Math.min(c.ask.low,d.low),c.ask.close=d.close,c.ask.samples+=d.samples):c.ask={...d})}let r=Math.min(...s.map(a=>a.t)),i=Math.max(...s.map(a=>a.t+t));for(let a of o.values())a.partial=a.ti||(a.end??0)>Date.now();return[...o.values()]}function yc(s,e){let t=e,o=bf(s,t,e),n=a=>{let l=a.filter(c=>c.ask);return{count:l.length,share:l.filter(c=>(c.ask?.samples??0)>1).length/Math.max(1,l.length)}},r=n(o);for(let a of _y.filter(l=>l>e)){if(r.share>=.6||r.count<2)break;let l=bf(s,a,e),c=n(l);c.count<2||c.share<=r.share||(t=a,o=l,r=c)}let i=t>=864e5?`${t/864e5}D`:`${t/36e5}h`;return{points:o,stepMs:t,label:i}}var _y,yr=w(()=>{"use strict";_y=[36e5,144e5,432e5,864e5,6048e5]});var wf={};A(wf,{itemView:()=>xc});async function xc(s){let e=s.itemState(),t=!e.candles&&e.range==="7D"?"1M":e.range,o=await W.itemDesk(e.skin,t);t!==e.range&&o?.history&&!o.history.points.some(B=>B.t>=Date.now()-7*864e5&&B.avg!==null)&&(t=e.range,o=await W.itemDesk(e.skin,t)??o);let{item:n,history:r,listings:i}=o??{};if(!n)return s.unavailable();let a=n.skin,l=n.evidence,c=Se().some(B=>B.skin===a.skin),d=l?.dailyRange,h=l?`${l.sales} sales across ${l.days} trading days in 30D`:`${n.liquidity.sales30d} sales in 30 days`,p=a.exchange?.status==="applied"?`${a.exchange.reports} eligible private exchanges${a.method.startsWith("sales")?" + public sales":"; tentative when sparse"}`:h,m=l?.reasons??[p,`The estimate is based on ${a.method.startsWith("sales")?"historical sales aggregates":"limited market evidence"}.`],f=[{label:r?.resolution==="hour"?"Lowest observed ask":"Daily average sale",color:"#f580b4"}];e.overlay!=="none"&&f.push({label:{fair:"Kute estimate",lowest:"Lowest observed ask",krunker:"Krunker estimate"}[e.overlay]??"Comparison",color:"#87b8f7"});let g=(r?.points??[]).filter(B=>t===e.range||B.t>=Date.now()-7*864e5).map(B=>({t:B.t,values:[r?.resolution==="hour"?B.lowest:B.avg,...f.length>1?[{fair:B.fair,lowest:B.lowest,krunker:B.krunker}[e.overlay]??null]:[]],volume:r?.resolution==="day"&&B.salesObserved!==!1?B.sales:null,ask:B.ask})),b=r?.resolution==="hour"?36e5:864e5,v=e.candles?yc(g,b):null;v&&({points:g,stepMs:b}=v);let k="Daily average completed-sale prices. Today's point, when present, is incomplete. Dashed connections cross missing observations; they do not supply prices for those dates.";r?.resolution==="hour"&&(k="Intraday lines show sampled asks. Dashed connections cross unsampled periods. Official sales data is daily; individual transaction timing is unavailable."),v&&(k=`Auto interval: ${v.label}. Sparse quotes use larger intervals when they can support multiple candles. Green and red show rising and falling sampled asks; gray ticks show one quote or an unchanged close. Empty intervals remain empty. These are asking-price candles, not transaction candles.`);let E=Math.max(8,Math.ceil(g.length/e.zoom)),L=Math.max(1,Math.floor(E/2)),x=(i?.listings??[]).slice(0,s.advanced?250:5),$=i?.observedAt??l?.bookAt,I=!$||Date.now()-$>3*36e5,_=i?.highest,H="Unavailable",G="No available quote";_===null?H="None observed":_!==void 0&&(H=P` + `}var Oy,Sc=w(()=>{"use strict";pe();Oy={sales7d:"7-day public sales",sales30d:"30-day public sales",sales90d:"90-day public sales",ask:"Sampled asking prices",krunker:"Krunker estimate",floor:"Fallback estimate"}});var Sf={};A(Sf,{candleSeries:()=>$c,lineSegments:()=>Ec});function Ec(s,e,t){let o=[],n=null,r=!1;for(let i of s){let a=i.values[e];if(a==null||!Number.isFinite(a)){r=!0;continue}n&&o.push({from:n,to:i,gap:r||i.t-n.t>t*1.5}),n=i,r=!1}return o}function xf(s,e,t){let o=new Map,n=e===7*864e5?4*864e5:0;for(let a of[...s].sort((l,c)=>l.t-c.t)){let l=Math.floor((a.t-n)/e)*e+n,c=o.get(l);c||(c={t:l,end:l+e,values:[],volume:null,ask:null,partial:!1},o.set(l,c));for(let[h,p]of a.values.entries())p!==null&&Number.isFinite(p)&&(c.values[h]=p);a.volume!==null&&a.volume!==void 0&&Number.isFinite(a.volume)&&(c.volume=(c.volume??0)+a.volume);let d=a.ask;d&&(c.ask?(c.ask.high=Math.max(c.ask.high,d.high),c.ask.low=Math.min(c.ask.low,d.low),c.ask.close=d.close,c.ask.samples+=d.samples):c.ask={...d})}let r=Math.min(...s.map(a=>a.t)),i=Math.max(...s.map(a=>a.t+t));for(let a of o.values())a.partial=a.ti||(a.end??0)>Date.now();return[...o.values()]}function $c(s,e){let t=e,o=xf(s,t,e),n=a=>{let l=a.filter(c=>c.ask);return{count:l.length,share:l.filter(c=>(c.ask?.samples??0)>1).length/Math.max(1,l.length)}},r=n(o);for(let a of Fy.filter(l=>l>e)){if(r.share>=.6||r.count<2)break;let l=xf(s,a,e),c=n(l);c.count<2||c.share<=r.share||(t=a,o=l,r=c)}let i=t>=864e5?`${t/864e5}D`:`${t/36e5}h`;return{points:o,stepMs:t,label:i}}var Fy,Sr=w(()=>{"use strict";Fy=[36e5,144e5,432e5,864e5,6048e5]});var Ef={};A(Ef,{itemView:()=>Cc});function qy(s,e){let t=Ut[s.rarity]?.name??"items",o=[`Nobody has sold, traded or listed this item where Kute could see it, so ${s.method==="floor"?"the number above is only what the game pays on quick sell":"the number above is Krunker's own estimate"}. It can be worth far more.`];if(e&&e.pricedItems>=5&&e.low!==null&&e.high!==null&&o.push(`For reference, ${t} items with recent sales mostly went for ${T(e.low)} to ${T(e.high)} KR (middle half of ${e.pricedItems} items). Rare items of the same rarity can be worth many times that.`),e&&e.krunkerItems>=5&&e.krunkerRatio!==null){let n=Math.abs(e.krunkerRatio-1)<.1?"close to their real sale prices":`${e.krunkerRatio<1?"above":"below"} their real sale prices (ratio ${e.krunkerRatio})`;o.push(`Where ${t} items do sell, Krunker's estimate sits ${n}, but it is missing for most items without sales.`)}return`
              ${o.map(S).join("
              ")}
              `}async function Cc(s){let e=s.itemState(),t=!e.candles&&e.range==="7D"?"1M":e.range,o=await W.itemDesk(e.skin,t);t!==e.range&&o?.history&&!o.history.points.some(B=>B.t>=Date.now()-7*864e5&&B.avg!==null)&&(t=e.range,o=await W.itemDesk(e.skin,t)??o);let{item:n,history:r,listings:i}=o??{};if(!n)return s.unavailable();let a=n.skin,l=n.evidence,c=Se().some(B=>B.skin===a.skin),d=l?.dailyRange,h=l?`${l.sales} sales across ${l.days} trading days in 30D`:`${n.liquidity.sales30d} sales in 30 days`,p=a.exchange?.status==="applied"?`${a.exchange.reports} eligible private exchanges${a.method.startsWith("sales")?" + public sales":"; tentative when sparse"}`:h,m=l?.reasons??[p,`The estimate is based on ${a.method.startsWith("sales")?"historical sales aggregates":"limited market evidence"}.`],f=[{label:r?.resolution==="hour"?"Lowest observed ask":"Daily average sale",color:"#f580b4"}];e.overlay!=="none"&&f.push({label:{fair:"Kute estimate",lowest:"Lowest observed ask",krunker:"Krunker estimate"}[e.overlay]??"Comparison",color:"#87b8f7"});let g=(r?.points??[]).filter(B=>t===e.range||B.t>=Date.now()-7*864e5).map(B=>({t:B.t,values:[r?.resolution==="hour"?B.lowest:B.avg,...f.length>1?[{fair:B.fair,lowest:B.lowest,krunker:B.krunker}[e.overlay]??null]:[]],volume:r?.resolution==="day"&&B.salesObserved!==!1?B.sales:null,ask:B.ask})),b=r?.resolution==="hour"?36e5:864e5,v=e.candles?$c(g,b):null;v&&({points:g,stepMs:b}=v);let k="Daily average completed-sale prices. Today's point, when present, is incomplete. Dashed connections cross missing observations; they do not supply prices for those dates.";r?.resolution==="hour"&&(k="Intraday lines show sampled asks. Dashed connections cross unsampled periods. Official sales data is daily; individual transaction timing is unavailable."),v&&(k=`Auto interval: ${v.label}. Sparse quotes use larger intervals when they can support multiple candles. Green and red show rising and falling sampled asks; gray ticks show one quote or an unchanged close. Empty intervals remain empty. These are asking-price candles, not transaction candles.`);let E=Math.max(8,Math.ceil(g.length/e.zoom)),L=Math.max(1,Math.floor(E/2)),y=(i?.listings??[]).slice(0,s.advanced?250:5),C=i?.observedAt??l?.bookAt,I=!C||Date.now()-C>3*36e5,_=i?.highest,H="Unavailable",G="No available quote";_===null?H="None observed":_!==void 0&&(H=P` ${T(_)} KR `,G=`Sampled ask, not a sale price${I?" · quote needs updating":""}`);let J=B=>P` @@ -538,7 +539,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
              `;return{item:n,listings:i,asOf:a.valuedAt??n.asOf,points:r?g:void 0,series:f,chartOptions:{candles:e.candles,volume:r?.resolution==="day",zoom:e.zoom,stepMs:b,connectGaps:!0,offset:e.offset},html:P`
              @@ -548,14 +549,14 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
              - ${S(bo[a.rarity]?.name)} · - ${S(Et[a.type])}${a.season?` · Season ${a.season}`:""} + ${S(Ut[a.rarity]?.name)} · + ${S($t[a.type])}${a.season?` · Season ${a.season}`:""}

              ${S(a.name)}

              - ${S(Wl(a))} + ${S(Jl(a))} · - ${S(Gs(a))} + ${S(Vs(a))}

              @@ -566,20 +567,18 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
              `+P`
              - ${ne("Kute estimate",P` - ${T(a.fair)} - KR - `,S(p))}${ne("Lowest observed ask",a.lowest===null?"None listed":P` + ${ne("Kute estimate",at(a,' KR'),S(p))}${ne("Lowest observed ask",a.lowest===null?"None listed":P` ${T(a.lowest)} KR `,a.spread!==null?ae(a.spread)+` vs estimate${I?" · quote needs updating":""}`:"No available quote")}${ne("Highest observed ask",H,G)}${ne("Sales in the last 7 days",String(a.sales7d),`${a.onS} currently listed · ${T(a.inC)} in circulation`)}
              + ${Wt(a)?qy(a,n.rarityContext):""} `+P`

              Price history

              - ${By.map(B=>P` + ${Dy.map(B=>P` `).join("")}
              @@ -642,7 +641,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del

              ${r?k:""} Dates and times are UTC.

              - `+vc(a,s.advanced)+mc(n.intelligence)+(s.advanced?ac(n)+gc(n.contributions):"")+P` + `+xc(a,s.advanced)+vc(n.intelligence)+(s.advanced?uc(n)+kc(n.contributions):"")+P`
              THE CONTEXT
              @@ -707,7 +706,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del

              Available listings

              ${i?i.total:"Unknown total"} reported - listed${$?` · observed ${We(Date.now()-$)} ago`:" · freshness unknown"} + listed${C?` · observed ${We(Date.now()-C)} ago`:" · freshness unknown"}
              ${I?'
              These quotes need a fresh market observation. A listing may have changed or sold since it was last seen.
              ':""}${s.advanced?P` @@ -842,7 +841,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del

              ${J(n.instances.serial)}${J(n.instances.wear)}
              - `:"")}}var By,Sc=w(()=>{"use strict";_e();xe();vr();Ve();pe();Ut();wr();en();bc();wc();yr();By=["1D","7D","1M","3M","1Y","ALL"]});var kf={};A(kf,{watchlistView:()=>Ec});async function Ec(s){let e=Se(),t=s.intro("Your eye on the market.","Watch prices and set targets. Your list is saved only on this device.",'');if(!e.length)return{html:t+'
              '+fe("Start with something you like","Open an item and choose Watch item. It will appear here with its latest estimate and asking price.",'')+"
              "};let o=e.filter(a=>a.rarity===void 0);if(o.length){let a=await Promise.all(o.map(l=>W.cached(`/market/item/${l.skin}`,3e5)));o.forEach((l,c)=>{let d=a[c]?.skin?.rarity;Number.isInteger(d)&&(l.rarity=d)}),o.some(l=>l.rarity!==void 0)&&wo(e)}let n=await W.values(e.map(a=>a.skin)),r=new Set($t.unread);queueMicrotask(()=>$t.markRead());let i=Math.min(...Object.values(n).flatMap(a=>a.valuedAt?[a.valuedAt]:[]));return{asOf:Number.isFinite(i)?i:void 0,html:t+P` + `:"")}}var Dy,Mc=w(()=>{"use strict";Be();xe();kr();Ve();pe();Vt();yr();on();yc();Sc();Sr();Dy=["1D","7D","1M","3M","1Y","ALL"]});var $f={};A($f,{watchlistView:()=>Tc});async function Tc(s){let e=Se(),t=s.intro("Your eye on the market.","Watch prices and set targets. Your list is saved only on this device.",'');if(!e.length)return{html:t+'
              '+fe("Start with something you like","Open an item and choose Watch item. It will appear here with its latest estimate and asking price.",'')+"
              "};let o=e.filter(a=>a.rarity===void 0);if(o.length){let a=await Promise.all(o.map(l=>W.cached(`/market/item/${l.skin}`,3e5)));o.forEach((l,c)=>{let d=a[c]?.skin?.rarity;Number.isInteger(d)&&(l.rarity=d)}),o.some(l=>l.rarity!==void 0)&&yo(e)}let n=await W.values(e.map(a=>a.skin)),r=new Set(Ct.unread);queueMicrotask(()=>Ct.markRead());let i=Math.min(...Object.values(n).flatMap(a=>a.valuedAt?[a.valuedAt]:[]));return{asOf:Number.isFinite(i)?i:void 0,html:t+P`
              @@ -861,7 +860,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del - + - - + + ${s.advanced?P` @@ -1075,7 +1079,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
              ${T(l?.fair)}${at(l)} ${T(l?.lowest)} sf;)this.sent.del Targets compare against the latest observed ask. Check the item page for listing freshness. Target alerts are checked in the menu, never during gameplay.

              - `}}var $c=w(()=>{"use strict";_e();xe();pe();Ut();fr()});var yf={};A(yf,{moversView:()=>Cc});async function Cc(s){let e=typeof s.arg=="string"?s.arg:"7D",t=await W.cached(`/market/movers?window=${e}`,5*zy);if(!t)return s.unavailable();let o=n=>P` + `}}var Ac=w(()=>{"use strict";Be();xe();pe();Vt();br()});var Cf={};A(Cf,{moversView:()=>Lc});async function Lc(s){let e=typeof s.arg=="string"?s.arg:"7D",t=await W.cached(`/market/movers?window=${e}`,5*Ky);if(!t)return s.unavailable();let o=n=>P`
              ${n.slice(0,10).map(r=>P`
              - `}}var zy,Mc=w(()=>{"use strict";_e();xe();pe();zy=6e4});var xf={};A(xf,{dealsView:()=>Tc});async function Tc(s){let e=s.arg?.budget??"",t=P` + `}}var Ky,Rc=w(()=>{"use strict";Be();xe();pe();Ky=6e4});var Mf={};A(Mf,{dealsView:()=>Pc});async function Pc(s){let e=s.arg?.budget??"",t=P`
              sf;)this.sent.del />
              - `,o=await W.cached(`/market/deals?min_grade=C&limit=100&budget=${encodeURIComponent(e)}`,Hy);return o?{asOf:o.asOf,asOfLabel:"Quotes observed",html:s.intro("Worth a closer look.","Observed asks below a sales-based estimate. Inspect the evidence before deciding.")+t+(o.deals.length?P` + `,o=await W.cached(`/market/deals?min_grade=C&limit=100&budget=${encodeURIComponent(e)}`,jy);return o?{asOf:o.asOf,asOfLabel:"Quotes observed",html:s.intro("Worth a closer look.","Observed asks below a sales-based estimate. Inspect the evidence before deciding.")+t+(o.deals.length?P`
              @@ -954,7 +953,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${o.deals.map(n=>P` - + @@ -971,7 +970,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del recent lower prices, unstable prices, supply changes and concentrated listings. Quotes older than three hours are excluded; availability can still change.

              - `:'
              '+fe("No supported candidates right now","The scanner only includes sales-based estimates with sufficient activity and a meaningful discount. Your watchlist can track specific items in the meantime.",'')+"
              ")}:s.unavailable()}var Hy,Ac=w(()=>{"use strict";_e();xe();pe();en();Hy=6e4});var Sf={};A(Sf,{indicesView:()=>Lc});async function Lc(s){let e=await W.cached("/market/indices",60*Oy);if(!e)return s.unavailable();let t=e.indices.find(o=>o.name===s.arg)??e.indices.find(o=>o.name==="kute-100")??e.indices[0];return{asOf:e.asOf,html:s.intro("The wider picture.","Equal-weighted indices of eligible items. Base 100 at launch, rebalanced monthly.",'')+P` + `:'
              '+fe("No supported candidates right now","The scanner only includes sales-based estimates with sufficient activity and a meaningful discount. Your watchlist can track specific items in the meantime.",'')+"
              ")}:s.unavailable()}var jy,Ic=w(()=>{"use strict";Be();xe();pe();on();jy=6e4});var Tf={};A(Tf,{indicesView:()=>Nc});async function Nc(s){let e=await W.cached("/market/indices",60*Uy);if(!e)return s.unavailable();let t=e.indices.find(o=>o.name===s.arg)??e.indices.find(o=>o.name==="kute-100")??e.indices[0];return{asOf:e.asOf,html:s.intro("The wider picture.","Equal-weighted indices of eligible items. Base 100 at launch, rebalanced monthly.",'')+P`

              ${S(t?.name??"Index history")}

              @@ -1004,12 +1003,12 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
              ${me(n)}${hc(n)}${me(n)}${bc(n)} ${T(n.price)} ${T(n.fair)} ${Math.round(n.discount*100)}%
              - `,points:(t?.series??[]).map(o=>({t:Date.parse(o.day+"T00:00:00Z"),values:[o.value]})),series:[{label:t?.name??"Index",color:"#f580b4"}]}}var Oy,Rc=w(()=>{"use strict";_e();xe();pe();Oy=6e4});var Ef={};A(Ef,{portfolioView:()=>Pc});async function Pc(s){let e=typeof s.arg=="string"?s.arg:"";if(!e)try{e=localStorage.getItem("krunker_username")??""}catch{e=""}let t=s.intro("Know what you hold.","A view of today's holdings, their estimated value, and where it is concentrated."),o=P` + `,points:(t?.series??[]).map(o=>({t:Date.parse(o.day+"T00:00:00Z"),values:[o.value]})),series:[{label:t?.name??"Index",color:"#f580b4"}]}}var Uy,_c=w(()=>{"use strict";Be();xe();pe();Uy=6e4});var Af={};A(Af,{portfolioView:()=>Bc});async function Bc(s){let e=typeof s.arg=="string"?s.arg:"";if(!e)try{e=localStorage.getItem("krunker_username")??""}catch{e=""}let t=s.intro("Know what you hold.","A view of today's holdings, their estimated value, and where it is concentrated."),o=P`
              - `;if(!e)return{html:t+o+fe("Choose an inventory","Enter a username to value its public inventory.")};let n=await W.cached(`/market/portfolio?name=${encodeURIComponent(e)}`,5*Dy);if(!n)return{html:t+o+fe("Inventory is unavailable","The player may not exist, or their inventory could not be loaded.",'')};let r=new Map(n.historyCoverage?.map(h=>[h.day,h])??[]),i=n.historyBasket,a=i?.series??n.series,l=i&&i.itemsTry again')};let r=new Map(n.historyCoverage?.map(h=>[h.day,h])??[]),i=n.historyBasket,a=i?.series??n.series,l=i&&i.items

              ${S(c)} Historical prices applied to what you own today; this is not personal profit. Marks expire after @@ -1020,7 +1019,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${ne("Estimated inventory value",P` ${T(n.totalValue)} KR - `,`${n.items.length} valued item types`)}${ne("In more active items",P` + `,`${n.items.length-(n.noEvidenceItems??0)} valued item types`)}${ne("In more active items",P` ${Math.round(n.liquidShare*100)} % `,"Share in activity grades A to C")}${ne("Largest two positions",P` @@ -1033,6 +1032,11 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${n.limitedEvidenceItems} item types (${T(n.limitedEvidenceValue)} KR of the total) have limited sales evidence or use fallback estimates. + `:""}${n.noEvidenceItems?P` +

              + ${n.noEvidenceItems} item types have no price evidence and are not in the total. At the quick-sell floor or + Krunker's estimate they would add ${T(n.noEvidenceReference??0)} KR, but such items are often worth far more. +
              `:""}${n.unvaluedItems?P`
              ${n.unvaluedItems} item types have no usable valuation and are excluded from the total.
              `:""} @@ -1044,7 +1048,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${d}
              - ${ko("kmHoldingFilter","holdings","Filter your holdings",s.portfolioFilter)} + ${xo("kmHoldingFilter","holdings","Filter your holdings",s.portfolioFilter)} Largest positions first
              @@ -1064,8 +1068,8 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
              ${me(h)} ${h.count}${T(h.fair)}${T(h.value)}${at(h)}${h.noEvidence?'Not counted':T(h.value)} ${ae(h.trend7d)}${S(h.grade)}
              - `,points:a.map(h=>({t:Date.parse(h.day+"T00:00:00Z"),values:[!i&&r.has(h.day)&&r.get(h.day)?.priced!==r.get(h.day)?.total?null:h.value]})),series:[{label:"Covered holdings at historical prices",color:"#f580b4"}]}}var Dy,Ic=w(()=>{"use strict";_e();xe();pe();Ko();Dy=6e4});var $f={};A($f,{analyzeView:()=>Nc});async function Nc(s){let{analyzer:e}=s,t=!!(e.give.length||e.get.length||e.giveKr||e.getKr),o=t?await W.analyze({give:e.give.map(({skin:i,count:a})=>({skin:i,count:a})),get:e.get.map(({skin:i,count:a})=>({skin:i,count:a})),giveKr:e.giveKr,getKr:e.getKr}):null,n=i=>{let a=o?.[i],l=i==="give"?e.giveKr:e.getKr,c=a?.items.some(p=>p.unknown)??!1,d=e[i].reduce((p,m)=>p+m.count,0),h=t?"Unavailable":"0";return a&&(h=T(a.value)),P` + `,points:a.map(h=>({t:Date.parse(h.day+"T00:00:00Z"),values:[!i&&r.has(h.day)&&r.get(h.day)?.priced!==r.get(h.day)?.total?null:h.value]})),series:[{label:"Covered holdings at historical prices",color:"#f580b4"}]}}var Gy,zc=w(()=>{"use strict";Be();xe();pe();Uo();Gy=6e4});var Lf={};A(Lf,{analyzeView:()=>Hc});async function Hc(s){let{analyzer:e}=s,t=!!(e.give.length||e.get.length||e.giveKr||e.getKr),o=t?await W.analyze({give:e.give.map(({skin:i,count:a})=>({skin:i,count:a})),get:e.get.map(({skin:i,count:a})=>({skin:i,count:a})),giveKr:e.giveKr,getKr:e.getKr}):null,n=i=>{let a=o?.[i],l=i==="give"?e.giveKr:e.getKr,c=a?.items.some(p=>p.unknown)??!1,d=e[i].reduce((p,m)=>p+m.count,0),h=t?"Unavailable":"0";return a&&(h=T(a.value)),P`

              ${i==="give"?"You give":"You receive"}

              @@ -1088,7 +1092,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${c?"Partial estimate. Unvalued items excluded.":"Estimated value, including KR"}
              - ${ko(`kmPick${i}`,i,"Add an item...")} + ${xo(`kmPick${i}`,i,"Add an item...")}
              ${e[i].length?e[i].map((p,m)=>{let f=a?.items.find(b=>b.skin===p.skin),g=f&&!f.unknown?T(f.lineValue)+" KR":"Value unavailable";return P`
              @@ -1104,7 +1108,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
              ${g} - ${f&&!f.unknown?`${T(f.fair)} KR each`:"Needs more evidence"} + ${f?Xl(f):"Needs more evidence"}
              - `),o){let i=Us(o.verdict),a=jt[i].label,l={good:"positive",bad:"negative",fair:"",uncertain:""}[i];r=P` + `),o){let i=Ws(o.verdict),a=Gt[i].label,l={good:"positive",bad:"negative",fair:"",uncertain:""}[i];r=P`
              THE DIFFERENCE
              ${a}
              - ${jt[i].detail} + ${Gt[i].detail}
              @@ -1177,7 +1181,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del `}return{asOf:o?.asOf,html:s.intro("Compare the trade.","Your items on the left, theirs on the right. Add KR to either side.",'')+P`
              ${n("give")}${n("get")}
              ${r}
              - `}}var _c=w(()=>{"use strict";_e();xe();pe();Ko()});var Cf={};A(Cf,{researchView:()=>Bc});async function Bc(s){let e=typeof s.arg=="string"?s.arg:"",t=await W.cached(`/market/intelligence?kind=${encodeURIComponent(e)}`,Fy);return t?{asOf:t.asOf,asOfLabel:"Analyzed",html:fc(t,e,s.advanced,Se().map(o=>o.skin))}:s.unavailable()}var Fy,zc=w(()=>{"use strict";xe();Ut();en();Fy=6e4});var Mf={};A(Mf,{introView:()=>tn});function tn(s,e,t,o=""){let n=Fo("h1",{},e),r=Fo("p",{class:"sub"},t);return Fo("div",{class:"pageIntro"},Xs(Fo("div",{},Xs(n+r))),Xs(o))}var xr=w(()=>{"use strict";_e()});var Tf={};A(Tf,{tableView:()=>Hc});function Hc(s,e){return e.length?P` + `}}var Oc=w(()=>{"use strict";Be();xe();pe();Uo()});var Rf={};A(Rf,{researchView:()=>Fc});async function Fc(s){let e=typeof s.arg=="string"?s.arg:"",t=await W.cached(`/market/intelligence?kind=${encodeURIComponent(e)}`,Wy);return t?{asOf:t.asOf,asOfLabel:"Analyzed",html:wc(t,e,s.advanced,Se().map(o=>o.skin))}:s.unavailable()}var Wy,Dc=w(()=>{"use strict";xe();Vt();on();Wy=6e4});var Pf={};A(Pf,{introView:()=>sn});function sn(s,e,t,o=""){let n=Ko("h1",{},e),r=Ko("p",{class:"sub"},t);return Ko("div",{class:"pageIntro"},Zs(Ko("div",{},Zs(n+r))),Zs(o))}var Er=w(()=>{"use strict";Be()});var If={};A(If,{tableView:()=>qc});function qc(s,e){return e.length?P`
              @@ -1195,8 +1199,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${s.advanced?P` - + `:""} `).join("")}
              ${me(t)} - ${T(t.fair)} - KR + ${at(t," KR")} ${t.lowest===null?"No listings":T(t.lowest)} @@ -1210,35 +1213,34 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del ${t.onS}${S(Gs(t))}${S(Vs(t))}
              - `:fe("No matching items","Try a wider budget or fewer filters.")}var Oc=w(()=>{"use strict";_e();Ve();pe()});var Af={};A(Af,{compactListView:()=>Dc});function Dc(s,e){return P` + `:fe("No matching items","Try a wider budget or fewer filters.")}var Kc=w(()=>{"use strict";Be();Ve();pe()});var Nf={};A(Nf,{compactListView:()=>jc});function jc(s,e){return P`
              ${e.map(t=>P` `).join("")}
              - `}var Fc=w(()=>{"use strict";_e();pe()});var Rf,Lf=w(()=>{Rf=`

              The numbers

              K
              Kute estimate

              What the item is worth, from recent sales and trades.

              Ask
              Lowest ask

              The cheapest listing right now.

              %
              Ask vs estimate

              Plus means the ask is above the estimate, minus means below.

              0-100
              Evidence score

              How much data backs the estimate. Low means take it with a grain of salt.

              Activity grades

              A
              Very active

              Sells often, easy to get rid of.

              B
              Active

              Sells regularly.

              C
              Moderate

              Might take a while or a lower price.

              D
              Thin

              Few sales, hard to sell.

              F
              Very limited

              Barely trades, the estimate is a rough guess.

              Trade verdicts

              +
              Favorable

              You get more value than you give.

              =
              Fair

              Both sides are about even.

              -
              Unfavorable

              You give more value than you get.

              ?
              Not enough evidence

              Some items can't be valued well enough to say.

              Estimates, not promises. Kute never buys, sells or trades for you.

              `});var Pf={};A(Pf,{helpView:()=>qc});function qc(s){return{html:tn(s,"How it works.","What the numbers mean.")+Rf}}var Kc=w(()=>{"use strict";Lf();xr()});var If={};A(If,{default:()=>jo});var jo,jc=w(()=>{"use strict";pe();yr();jo=class{constructor(e,t,o,n={}){this.host=e,this.points=t,this.series=o,this.options=n,this.observer=new ResizeObserver(r=>this.draw(r[0]?.contentRect.width??700)),this.observer.observe(e),this.draw(e.clientWidth||700)}destroy(){this.observer.disconnect(),this.host.replaceChildren()}draw(e){let{host:t,series:o,options:n}=this,r=Math.max(8,Math.ceil(this.points.length/(n.zoom??1))),i=Math.max(Math.min(r,this.points.length),this.points.length-(n.offset??0)),a=this.points.slice(Math.max(0,i-r),i),l=!!n.candles,c=a.flatMap(j=>l?[...j.ask?[j.ask.low,j.ask.high]:[],...j.values.slice(1)]:j.values).flatMap(j=>j!==null&&Number.isFinite(j)?[j]:[]);if(!c.length){t.innerHTML=`
              ${l?"No sampled asking-price candles in this period. Try a longer range or switch to the line chart.":"No price observations in this period. Try a longer range."}
              `;return}let d=Math.max(280,e),h=270,p=62,m=d-16,f=20,g=n.volume?196:230,b=Math.min(...c),v=Math.max(...c),k=v-b||Math.max(1,v*.1),E=Math.max(0,b-k*.12),L=v+k*.12,x=a[0].t,I=((l?a.at(-1)?.end:a.at(-1)?.t)??x)-x||864e5,_=j=>p+(j-x)/I*(m-p),H=j=>g-(j-E)/(L-E)*(g-f),G=j=>l&&j.end?(j.t+j.end)/2:j.t,J=n.stepMs??864e5,B=o.map((j,X)=>kc(a,X,J)),re="";for(let j=0;j<=4;j++){let X=E+(L-E)*j/4,Y=L-E<10?X.toFixed(2):T(X);re+=`${S(Y)}`}for(let j=0;j<=4;j++){let X=x+I*j/4,Y=new Date(X),y=I<=2*864e5?Y.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",timeZone:"UTC"}):Y.toLocaleDateString([],{month:"short",day:"numeric",timeZone:"UTC"}),C="middle";j===0&&(C="start"),j===4&&(C="end"),re+=`${S(y)}`}if(n.volume){let j=Math.max(1,...a.map(Y=>Y.volume??0)),X=Math.max(1,Math.min(14,(m-p)/Math.max(1,a.length)*.6));re+=a.filter(Y=>Y.volume!==null&&Y.volume!==void 0).map(Y=>``).join("")}if(l){let j=Math.max(3,Math.min(14,(m-p)*J/I*.65));for(let X of a){let Y=X.ask;if(!Y)continue;let y="flat",C="#9698a7";Y.samples<=1?y="single":Y.close!==Y.open&&(y=Y.close>Y.open?"up":"down",C=Y.close>Y.open?"#71d9b0":"#f68c9b");let R=_(G(X));re+=``,Y.samples>1&&(re+=``),y==="single"||y==="flat"?re+=``:re+=``,re+=""}}for(let[j,X]of o.entries()){if(l&&j===0)continue;let Y="",y="";for(let C of B[j]){let R=`M${_(G(C.from))},${H(C.from.values[j])} L${_(G(C.to))},${H(C.to.values[j])} `;C.gap?n.connectGaps&&(y+=R):Y+=R}for(let C of a){let R=C.values[j];R==null||!Number.isFinite(R)||(re+=``)}re+=``,y&&(re+=``)}t.innerHTML=`j.label).join(", "))}">${re}`;let je=t.querySelector("svg"),be=t.querySelector(".chartTooltip"),Ee=t.querySelector(".crosshair");je.addEventListener("pointermove",j=>{let X=je.getBoundingClientRect(),Y=(j.clientX-X.left)*d/X.width,y=x+(Y-p)/(m-p)*I,C=a.find(Z=>l&&Z.end&&y>=Z.t&&yMath.abs(G(ge)-y)Z.gap&&_(Z.from.t)+5=C.end),z=C.ask,N=o.map((Z,ge)=>`${S(Z.label)} ${T(C.values[ge])}`).join("
              ");l&&(N="No quote in this bucket",z?.samples===1&&!K?N=`Observed ask ${T(z.close)}
              1 sampled quote; direction unknown`:z&&!K&&(N=`Open ${T(z.open)} · High ${T(z.high)}
              Low ${T(z.low)} · Close ${T(z.close)}
              ${S(z.samples)} sampled quotes`),C.partial&&!K&&(N+="
              Partial interval")),l&&!K&&o.length>1&&(N+="
              Last observed in interval:
              "+o.slice(1).map((Z,ge)=>`${S(Z.label)} ${T(C.values[ge+1])}`).join("
              ")),R&&(N="No price observation in this gap.
              Dashed line connects recorded values.");let V=Z=>new Date(Z).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",timeZone:"UTC"}),de=V(R||K?y:C.t);l&&C.end&&!K&&(de=`${V(C.t)} to ${V(C.end)}`),be.innerHTML=`${S(de)} UTC
              ${N}${!R&&!K&&n.volume&&C.volume!==null&&C.volume!==void 0?`
              Reported sales ${C.volume}`:""}`,be.hidden=!1,be.style.left=`${Math.max(0,Math.min(Y+14,d-240))}px`,Ee.setAttribute("x1",String(R||K?Y:_(G(C)))),Ee.setAttribute("x2",String(R||K?Y:_(G(C)))),Ee.setAttribute("visibility","visible")}),je.addEventListener("pointerleave",()=>{be.hidden=!0,Ee.setAttribute("visibility","hidden")})}}});var Nf=we((oE,Ky)=>{Ky.exports=' '});var Uc={};A(Uc,{Terminal:()=>Er,default:()=>Uy});var _f,Bf,Sr,zf,Hf,yo,Er,jy,Uy,Gc=w(()=>{"use strict";D();vr();dc();pc();Sc();$c();Mc();Ac();Rc();Ic();_c();zc();xr();Oc();Fc();Kc();xe();Ve();pe();Ut();jc();Ko();_f="kute_market_advanced",Bf="kute_market_layout",Sr=[.8,.9,1,1.1,1.2,1.35,1.5],zf=480,Hf=360,yo=()=>({q:"",rarity:"",type:"",sort:"volume",page:1,budget:"",minSales:""}),Er=class{constructor(){this.overlay=null,this.shadow=null,this.controller=null,this.chart=null,this.returnFocus=null,this.tab="overview",this.discoveryTab="search",this.arg=void 0,this.generation=0,this.advanced=!1,this.view=null,this.saved=new Map,this.previous="search",this.portfolioFilter="",this.itemSearch=null,this.holdings=[],this.tradeRevision=0,this.analyzer={give:[],get:[],giveKr:0,getKr:0};try{this.advanced=localStorage.getItem(_f)==="1"}catch{this.advanced=!1}this.layout={width:0,height:0,scale:1,maximized:!1};try{let e=JSON.parse(localStorage.getItem(Bf)??"{}");Number.isFinite(e.width)&&(this.layout.width=e.width),Number.isFinite(e.height)&&(this.layout.height=e.height),Sr.includes(e.scale)&&(this.layout.scale=e.scale),this.layout.maximized=e.maximized===!0}catch{}}frame(){return this.shadow?.querySelector("#km")??null}applyLayout(){let e=this.frame();if(!e)return;let{scale:t,maximized:o}=this.layout,n=window.innerWidth-(o?0:16),r=window.innerHeight-(o?0:16),i=o?n:Math.max(Math.min(zf,n),Math.min(this.layout.width||Math.min(1320,window.innerWidth*.96),n)),a=o?r:Math.max(Math.min(Hf,r),Math.min(this.layout.height||Math.min(880,window.innerHeight*.92),r));e.style.zoom=String(t),e.style.width=`${i/t}px`,e.style.height=`${a/t}px`,e.classList.toggle("maximized",o);let l=this.shadow?.querySelector("#kmMaximize");l?.setAttribute("aria-pressed",String(o)),l?.setAttribute("title",o?"Restore size (double-click the header)":"Maximize (double-click the header)");let c=this.shadow?.querySelector("#kmScaleValue");c&&(c.textContent=`${Math.round(t*100)}%`)}saveLayout(){this.applyLayout();try{localStorage.setItem(Bf,JSON.stringify(this.layout))}catch{}}rescale(e){let t=Sr.indexOf(this.layout.scale);this.layout.scale=e?Sr[Math.max(0,Math.min(Sr.length-1,t+e))]:1,this.saveLayout()}toggleMaximized(){this.layout.maximized=!this.layout.maximized,this.saveLayout()}startResize(e){let{target:t}=e,o=this.frame();if(!(t instanceof HTMLElement)||!o||e.button!==0)return;let{grip:n}=t.dataset;if(!n)return;e.preventDefault(),t.setPointerCapture(e.pointerId);let r=o.getBoundingClientRect(),{clientX:i,clientY:a}=e,l=Number(n.includes("e"))-Number(n.includes("w")),c=Number(n.includes("s"))-Number(n.includes("n"));o.classList.add("resizing");let d=p=>{l&&(this.layout.width=Math.max(zf,r.width+2*l*(p.clientX-i))),c&&(this.layout.height=Math.max(Hf,r.height+2*c*(p.clientY-a))),this.applyLayout()},h=()=>{t.removeEventListener("pointermove",d),o.classList.remove("resizing"),this.layout.width=Math.round(Math.min(this.layout.width,window.innerWidth-16)),this.layout.height=Math.round(Math.min(this.layout.height,window.innerHeight-16)),this.saveLayout()};t.addEventListener("pointermove",d),t.addEventListener("lostpointercapture",h,{once:!0})}async open(e,t){if(!document.pointerLockElement){if(!this.overlay){let o=await Promise.resolve().then(()=>ue(Nf(),1)).catch(()=>null);if(!o||document.pointerLockElement)return;if(this.overlay){await this.show(e??this.tab,t);return}this.returnFocus=document.activeElement instanceof HTMLElement?document.activeElement:null;let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483647;display:grid;place-items:center;background:rgba(7,8,13,.78)";let r=document.createElement("div");n.append(r),this.shadow=r.attachShadow({mode:"open"}),this.shadow.innerHTML=o.default,this.overlay=n,this.controller=new AbortController;let{signal:i}=this.controller;document.body.append(n),this.applyLayout(),window.addEventListener("resize",()=>this.applyLayout(),{signal:i}),this.shadow.addEventListener("pointerdown",l=>this.startResize(l),{signal:i}),this.shadow.querySelector(".kmHead")?.addEventListener("dblclick",l=>{l.target instanceof Element&&!l.target.closest("button,input,label,form")&&this.toggleMaximized()},{signal:i}),this.itemSearch=new qo(this.shadow,i,(l,c)=>this.selectItem(l,c),(l,c)=>this.show(c==="discover"?this.searchTab():"search",{...c==="discover"?this.readFilters(1):yo(),q:l,page:1}),()=>this.holdings),this.shadow.addEventListener("click",l=>this.click(l),{signal:i}),this.shadow.addEventListener("change",l=>this.changed(l),{signal:i}),this.shadow.addEventListener("input",l=>this.input(l),{signal:i}),this.shadow.querySelector("#kmSearchForm")?.addEventListener("submit",l=>{l.preventDefault(),this.show("search",{...yo(),q:this.value("#kmGlobalSearch")})},{signal:i}),n.addEventListener("click",l=>{l.target===n&&this.close()},{signal:i}),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&this.close()},{signal:i}),document.addEventListener("keydown",l=>this.key(l),{signal:i,capture:!0});let a=this.shadow.querySelector("#kmAdvanced");a.checked=this.advanced,this.shadow.querySelector("#kmGlobalSearch")?.focus()}await this.show(e??this.tab,t)}}close(){this.remember(),this.controller?.abort(),this.controller=null,this.itemSearch=null,this.chart?.destroy(),this.chart=null,this.overlay?.remove(),this.overlay=null,this.shadow=null,this.generation++,this.returnFocus?.focus({preventScroll:!0})}remember(){let e=this.shadow?.querySelector("#kmBody");this.tab==="item"&&(this.arg=this.itemState()),(this.tab==="search"||this.tab==="active")&&this.shadow?.querySelector("#kmQ")&&(this.arg=this.readFilters(this.searchState().page)),this.tab==="deals"&&this.shadow?.querySelector("#kmDealBudget")&&(this.arg={budget:this.value("#kmDealBudget")}),e&&this.saved.set(this.tab,{arg:this.arg,scroll:e.scrollTop})}value(e){return this.shadow?.querySelector(e)?.value??""}searchState(){let e={...yo(),...this.tab==="active"?{minSales:"1",sort:"liquidity"}:{},...typeof this.arg=="object"&&this.arg?this.arg:{}};return this.tab==="active"&&(e.minSales=String(Math.max(1,Number(e.minSales)||1))),e}searchTab(){return this.tab==="active"?"active":"search"}itemState(){let e={skin:typeof this.arg=="number"?this.arg:0,range:"1M",candles:!1,overlay:"none",zoom:1,offset:0,...typeof this.arg=="object"&&this.arg?this.arg:{}};if(this.view?.item?.skin.skin===e.skin)for(let[t,o]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"}))this.shadow?.querySelector("#"+o)&&Object.assign(e,{[t]:this.value("#"+o)});return e}async show(e,t,o=!1){if(!this.shadow)return;this.remember(),e==="item"&&this.tab!=="item"&&(this.previous=this.tab);let n=this.saved.get(this.tab)?.scroll??0,r=this.saved.get(e);this.tab=e,this.arg=t===void 0?r?.arg:t;let i=++this.generation;this.itemSearch?.dismiss(),this.chart?.destroy(),this.chart=null;let a=this.shadow.querySelector("#kmBody"),l=br.includes(e);l&&(this.discoveryTab=e);let c=this.shadow.querySelector("#kmDiscoverTabs");c.hidden=!l;for(let p of c.querySelectorAll("button")){let m=p.dataset.discover===e;p.setAttribute("aria-selected",String(m)),p.tabIndex=m?0:-1}l?(a.setAttribute("role","tabpanel"),a.setAttribute("aria-labelledby",`kmDiscover-${e}`)):(a.removeAttribute("role"),a.removeAttribute("aria-labelledby")),a.setAttribute("aria-busy","true"),a.innerHTML=fe("Loading market data","Fetching the latest available observations.");let d=this.shadow.querySelector("#kmTitle");d&&(d.textContent=Ys[e]??"Market");let h=e==="item"?this.previous:e;br.includes(h)&&(h="search"),h==="indices"&&(h="overview");for(let p of this.shadow.querySelectorAll("[data-nav]")){let m=p.dataset.nav===h;p.classList.toggle("on",m),m?p.setAttribute("aria-current","page"):p.removeAttribute("aria-current")}this.updateWatchCount();try{let p=await this.render(e);if(i!==this.generation||!this.shadow)return;this.view=p,this.holdings=p.holdings??[],a.innerHTML=p.html,a.scrollTop=t===void 0?r?.scroll??0:0,o&&(a.scrollTop=n);let m=this.shadow.querySelector("#kmFootRight");m&&(m.textContent=p.asOf?`${p.asOfLabel??"Estimates calculated"} ${We(Math.max(0,Date.now()-p.asOf))} ago`:"Estimates from observed market data");let f=a.querySelector(".chart");if(f&&p.points&&p.series&&(this.chart=new jo(f,p.points,p.series,p.chartOptions)),e==="portfolio"&&this.filterHoldings(),e==="item"){let g=this.arg;for(let[b,v]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"})){let k=a.querySelector("#"+v),E=g?.[b];k&&typeof E=="string"&&(k.value=E)}this.updatePlanner(),this.filterListings()}}catch{if(i!==this.generation)return;a.innerHTML=fe("Market data is unavailable","Try again in a moment. Your saved watchlist stays on this device.",'')}finally{i===this.generation&&a.setAttribute("aria-busy","false")}}updateWatchCount(){let e=this.shadow?.querySelector("#kmWatchCount");e&&(e.textContent=String(Se().length))}async render(e){switch(e){case"overview":return this.overview();case"intelligence":return this.intelligence();case"search":return this.search();case"active":return this.search();case"item":return this.item();case"watchlist":return this.watchlist();case"movers":return this.movers();case"deals":return this.deals();case"indices":return this.indices();case"portfolio":return this.portfolio();case"analyze":return this.analyze();default:return this.help()}}intelligence(){return Bc(this)}unavailable(){return{html:fe("Market data is unavailable",W.lastError||"The market server could not be reached. Try again in a moment.",'')}}intro(e,t,o=""){return tn(this,e,t,o)}table(e){return Hc(this,e)}compactList(e){return Dc(this,e)}overview(){return cc(this)}search(){return uc(this)}item(){return xc(this)}watchlist(){return Ec(this)}movers(){return Cc(this)}deals(){return Tc(this)}indices(){return Lc(this)}portfolio(){return Pc(this)}async selectItem(e,t){if(t!=="give"&&t!=="get"){this.show("item",e.skin);return}let o=this.analyzer[t].find(n=>n.skin===e.skin);o?o.count=Math.min(1e4,o.count+1):this.analyzer[t].push({...e,count:1}),await this.show("analyze",this.arg,!0),this.tab==="analyze"&&this.shadow?.querySelector(`#kmPick${t}`)?.focus({preventScroll:!0})}analyze(){return Nc(this)}async refreshTrade(){let{generation:e}=this,t=++this.tradeRevision;this.shadow?.querySelector("#kmTradeOutcome")?.setAttribute("aria-busy","true");let n=this.shadow?.querySelector("#kmFootRight");n&&(n.textContent="Updating trade estimates...");let r=await this.analyze();if(e!==this.generation||t!==this.tradeRevision||!this.shadow)return;let i=document.createElement("div");i.innerHTML=r.html;for(let a of[".tradeSideHead>span",".tradeTotal",".tradeItemValue","#kmTradeOutcome"]){let l=i.querySelectorAll(a);this.shadow.querySelectorAll(a).forEach((c,d)=>{l[d]&&c.replaceWith(l[d])})}n&&(n.textContent=r.asOf?`Estimates calculated ${We(Math.max(0,Date.now()-r.asOf))} ago`:"Estimates from observed market data"),this.view=r}help(){return qc(this)}updatePlanner(){let e=this.shadow?.querySelector("#kmPlannerResult");if(!e||!this.view?.item)return;let t=Number(this.value("#kmSellPrice")),o=Number(this.value("#kmSellQuantity"));if(!Number.isFinite(t)||t<=0||!Number.isInteger(o)||o<1||o>1e4){e.textContent="Enter a positive asking price and a quantity from 1 to 10,000.";return}let n=this.view.listings;if(!n){e.textContent="Competing listings are unavailable. Try again when market data is available.";return}let r=n?.listings.filter(a=>a.pricen.listings.length;e.innerHTML=`${i?"At least ":""}${r} cheaper listing${r===1?"":"s"} observed${n?"":" (listing data unavailable)"}.
              + `}var Uc=w(()=>{"use strict";Be();pe()});var Bf,_f=w(()=>{Bf=`

              The numbers

              K
              Kute estimate

              What the item is worth, from recent sales and trades.

              Ask
              Lowest ask

              The cheapest listing right now.

              %
              Ask vs estimate

              Plus means the ask is above the estimate, minus means below.

              0-100
              Evidence score

              How much data backs the estimate. Low means take it with a grain of salt.

              Activity grades

              A
              Very active

              Sells often, easy to get rid of.

              B
              Active

              Sells regularly.

              C
              Moderate

              Might take a while or a lower price.

              D
              Thin

              Few sales, hard to sell.

              F
              Very limited

              Barely trades, the estimate is a rough guess.

              Trade verdicts

              +
              Favorable

              You get more value than you give.

              =
              Fair

              Both sides are about even.

              -
              Unfavorable

              You give more value than you get.

              ?
              Not enough evidence

              Some items can't be valued well enough to say.

              Estimates, not promises. Kute never buys, sells or trades for you.

              `});var zf={};A(zf,{helpView:()=>Gc});function Gc(s){return{html:sn(s,"How it works.","What the numbers mean.")+Bf}}var Wc=w(()=>{"use strict";_f();Er()});var Hf={};A(Hf,{default:()=>Go});var Go,Vc=w(()=>{"use strict";pe();Sr();Go=class{constructor(e,t,o,n={}){this.host=e,this.points=t,this.series=o,this.options=n,this.observer=new ResizeObserver(r=>this.draw(r[0]?.contentRect.width??700)),this.observer.observe(e),this.draw(e.clientWidth||700)}destroy(){this.observer.disconnect(),this.host.replaceChildren()}draw(e){let{host:t,series:o,options:n}=this,r=Math.max(8,Math.ceil(this.points.length/(n.zoom??1))),i=Math.max(Math.min(r,this.points.length),this.points.length-(n.offset??0)),a=this.points.slice(Math.max(0,i-r),i),l=!!n.candles,c=a.flatMap(j=>l?[...j.ask?[j.ask.low,j.ask.high]:[],...j.values.slice(1)]:j.values).flatMap(j=>j!==null&&Number.isFinite(j)?[j]:[]);if(!c.length){t.innerHTML=`
              ${l?"No sampled asking-price candles in this period. Try a longer range or switch to the line chart.":"No price observations in this period. Try a longer range."}
              `;return}let d=Math.max(280,e),h=270,p=62,m=d-16,f=20,g=n.volume?196:230,b=Math.min(...c),v=Math.max(...c),k=v-b||Math.max(1,v*.1),E=Math.max(0,b-k*.12),L=v+k*.12,y=a[0].t,I=((l?a.at(-1)?.end:a.at(-1)?.t)??y)-y||864e5,_=j=>p+(j-y)/I*(m-p),H=j=>g-(j-E)/(L-E)*(g-f),G=j=>l&&j.end?(j.t+j.end)/2:j.t,J=n.stepMs??864e5,B=o.map((j,X)=>Ec(a,X,J)),re="";for(let j=0;j<=4;j++){let X=E+(L-E)*j/4,Y=L-E<10?X.toFixed(2):T(X);re+=`${S(Y)}`}for(let j=0;j<=4;j++){let X=y+I*j/4,Y=new Date(X),x=I<=2*864e5?Y.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",timeZone:"UTC"}):Y.toLocaleDateString([],{month:"short",day:"numeric",timeZone:"UTC"}),$="middle";j===0&&($="start"),j===4&&($="end"),re+=`${S(x)}`}if(n.volume){let j=Math.max(1,...a.map(Y=>Y.volume??0)),X=Math.max(1,Math.min(14,(m-p)/Math.max(1,a.length)*.6));re+=a.filter(Y=>Y.volume!==null&&Y.volume!==void 0).map(Y=>``).join("")}if(l){let j=Math.max(3,Math.min(14,(m-p)*J/I*.65));for(let X of a){let Y=X.ask;if(!Y)continue;let x="flat",$="#9698a7";Y.samples<=1?x="single":Y.close!==Y.open&&(x=Y.close>Y.open?"up":"down",$=Y.close>Y.open?"#71d9b0":"#f68c9b");let R=_(G(X));re+=``,Y.samples>1&&(re+=``),x==="single"||x==="flat"?re+=``:re+=``,re+=""}}for(let[j,X]of o.entries()){if(l&&j===0)continue;let Y="",x="";for(let $ of B[j]){let R=`M${_(G($.from))},${H($.from.values[j])} L${_(G($.to))},${H($.to.values[j])} `;$.gap?n.connectGaps&&(x+=R):Y+=R}for(let $ of a){let R=$.values[j];R==null||!Number.isFinite(R)||(re+=``)}re+=``,x&&(re+=``)}t.innerHTML=`j.label).join(", "))}">${re}`;let je=t.querySelector("svg"),be=t.querySelector(".chartTooltip"),Ee=t.querySelector(".crosshair");je.addEventListener("pointermove",j=>{let X=je.getBoundingClientRect(),Y=(j.clientX-X.left)*d/X.width,x=y+(Y-p)/(m-p)*I,$=a.find(Z=>l&&Z.end&&x>=Z.t&&xMath.abs(G(ge)-x)Z.gap&&_(Z.from.t)+5=$.end),z=$.ask,N=o.map((Z,ge)=>`${S(Z.label)} ${T($.values[ge])}`).join("
              ");l&&(N="No quote in this bucket",z?.samples===1&&!K?N=`Observed ask ${T(z.close)}
              1 sampled quote; direction unknown`:z&&!K&&(N=`Open ${T(z.open)} · High ${T(z.high)}
              Low ${T(z.low)} · Close ${T(z.close)}
              ${S(z.samples)} sampled quotes`),$.partial&&!K&&(N+="
              Partial interval")),l&&!K&&o.length>1&&(N+="
              Last observed in interval:
              "+o.slice(1).map((Z,ge)=>`${S(Z.label)} ${T($.values[ge+1])}`).join("
              ")),R&&(N="No price observation in this gap.
              Dashed line connects recorded values.");let V=Z=>new Date(Z).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",timeZone:"UTC"}),de=V(R||K?x:$.t);l&&$.end&&!K&&(de=`${V($.t)} to ${V($.end)}`),be.innerHTML=`${S(de)} UTC
              ${N}${!R&&!K&&n.volume&&$.volume!==null&&$.volume!==void 0?`
              Reported sales ${$.volume}`:""}`,be.hidden=!1,be.style.left=`${Math.max(0,Math.min(Y+14,d-240))}px`,Ee.setAttribute("x1",String(R||K?Y:_(G($)))),Ee.setAttribute("x2",String(R||K?Y:_(G($)))),Ee.setAttribute("visibility","visible")}),je.addEventListener("pointerleave",()=>{be.hidden=!0,Ee.setAttribute("visibility","hidden")})}}});var Of=we((lE,Yy)=>{Yy.exports=' '});var Yc={};A(Yc,{Terminal:()=>Cr,default:()=>Jy});var Ff,Df,$r,qf,Kf,So,Cr,Xy,Jy,Xc=w(()=>{"use strict";F();kr();mc();gc();Mc();Ac();Rc();Ic();_c();zc();Oc();Dc();Er();Kc();Uc();Wc();xe();Ve();pe();Vt();Vc();Uo();Ff="kute_market_advanced",Df="kute_market_layout",$r=[.8,.9,1,1.1,1.2,1.35,1.5],qf=480,Kf=360,So=()=>({q:"",rarity:"",type:"",sort:"volume",page:1,budget:"",minSales:""}),Cr=class{constructor(){this.overlay=null,this.shadow=null,this.controller=null,this.chart=null,this.returnFocus=null,this.tab="overview",this.discoveryTab="search",this.arg=void 0,this.generation=0,this.advanced=!1,this.view=null,this.saved=new Map,this.previous="search",this.portfolioFilter="",this.itemSearch=null,this.holdings=[],this.tradeRevision=0,this.analyzer={give:[],get:[],giveKr:0,getKr:0};try{this.advanced=localStorage.getItem(Ff)==="1"}catch{this.advanced=!1}this.layout={width:0,height:0,scale:1,maximized:!1};try{let e=JSON.parse(localStorage.getItem(Df)??"{}");Number.isFinite(e.width)&&(this.layout.width=e.width),Number.isFinite(e.height)&&(this.layout.height=e.height),$r.includes(e.scale)&&(this.layout.scale=e.scale),this.layout.maximized=e.maximized===!0}catch{}}frame(){return this.shadow?.querySelector("#km")??null}applyLayout(){let e=this.frame();if(!e)return;let{scale:t,maximized:o}=this.layout,n=window.innerWidth-(o?0:16),r=window.innerHeight-(o?0:16),i=o?n:Math.max(Math.min(qf,n),Math.min(this.layout.width||Math.min(1320,window.innerWidth*.96),n)),a=o?r:Math.max(Math.min(Kf,r),Math.min(this.layout.height||Math.min(880,window.innerHeight*.92),r));e.style.zoom=String(t),e.style.width=`${i/t}px`,e.style.height=`${a/t}px`,e.classList.toggle("maximized",o);let l=this.shadow?.querySelector("#kmMaximize");l?.setAttribute("aria-pressed",String(o)),l?.setAttribute("title",o?"Restore size (double-click the header)":"Maximize (double-click the header)");let c=this.shadow?.querySelector("#kmScaleValue");c&&(c.textContent=`${Math.round(t*100)}%`)}saveLayout(){this.applyLayout();try{localStorage.setItem(Df,JSON.stringify(this.layout))}catch{}}rescale(e){let t=$r.indexOf(this.layout.scale);this.layout.scale=e?$r[Math.max(0,Math.min($r.length-1,t+e))]:1,this.saveLayout()}toggleMaximized(){this.layout.maximized=!this.layout.maximized,this.saveLayout()}startResize(e){let{target:t}=e,o=this.frame();if(!(t instanceof HTMLElement)||!o||e.button!==0)return;let{grip:n}=t.dataset;if(!n)return;e.preventDefault(),t.setPointerCapture(e.pointerId);let r=o.getBoundingClientRect(),{clientX:i,clientY:a}=e,l=Number(n.includes("e"))-Number(n.includes("w")),c=Number(n.includes("s"))-Number(n.includes("n"));o.classList.add("resizing");let d=p=>{l&&(this.layout.width=Math.max(qf,r.width+2*l*(p.clientX-i))),c&&(this.layout.height=Math.max(Kf,r.height+2*c*(p.clientY-a))),this.applyLayout()},h=()=>{t.removeEventListener("pointermove",d),o.classList.remove("resizing"),this.layout.width=Math.round(Math.min(this.layout.width,window.innerWidth-16)),this.layout.height=Math.round(Math.min(this.layout.height,window.innerHeight-16)),this.saveLayout()};t.addEventListener("pointermove",d),t.addEventListener("lostpointercapture",h,{once:!0})}async open(e,t){if(!document.pointerLockElement){if(!this.overlay){let o=await Promise.resolve().then(()=>ue(Of(),1)).catch(()=>null);if(!o||document.pointerLockElement)return;if(this.overlay){await this.show(e??this.tab,t);return}this.returnFocus=document.activeElement instanceof HTMLElement?document.activeElement:null;let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483647;display:grid;place-items:center;background:rgba(7,8,13,.78)";let r=document.createElement("div");n.append(r),this.shadow=r.attachShadow({mode:"open"}),this.shadow.innerHTML=o.default,this.overlay=n,this.controller=new AbortController;let{signal:i}=this.controller;document.body.append(n),this.applyLayout(),window.addEventListener("resize",()=>this.applyLayout(),{signal:i}),this.shadow.addEventListener("pointerdown",l=>this.startResize(l),{signal:i}),this.shadow.querySelector(".kmHead")?.addEventListener("dblclick",l=>{l.target instanceof Element&&!l.target.closest("button,input,label,form")&&this.toggleMaximized()},{signal:i}),this.itemSearch=new jo(this.shadow,i,(l,c)=>this.selectItem(l,c),(l,c)=>this.show(c==="discover"?this.searchTab():"search",{...c==="discover"?this.readFilters(1):So(),q:l,page:1}),()=>this.holdings),this.shadow.addEventListener("click",l=>this.click(l),{signal:i}),this.shadow.addEventListener("change",l=>this.changed(l),{signal:i}),this.shadow.addEventListener("input",l=>this.input(l),{signal:i}),this.shadow.querySelector("#kmSearchForm")?.addEventListener("submit",l=>{l.preventDefault(),this.show("search",{...So(),q:this.value("#kmGlobalSearch")})},{signal:i}),n.addEventListener("click",l=>{l.target===n&&this.close()},{signal:i}),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&this.close()},{signal:i}),document.addEventListener("keydown",l=>this.key(l),{signal:i,capture:!0});let a=this.shadow.querySelector("#kmAdvanced");a.checked=this.advanced,this.shadow.querySelector("#kmGlobalSearch")?.focus()}await this.show(e??this.tab,t)}}close(){this.remember(),this.controller?.abort(),this.controller=null,this.itemSearch=null,this.chart?.destroy(),this.chart=null,this.overlay?.remove(),this.overlay=null,this.shadow=null,this.generation++,this.returnFocus?.focus({preventScroll:!0})}remember(){let e=this.shadow?.querySelector("#kmBody");this.tab==="item"&&(this.arg=this.itemState()),(this.tab==="search"||this.tab==="active")&&this.shadow?.querySelector("#kmQ")&&(this.arg=this.readFilters(this.searchState().page)),this.tab==="deals"&&this.shadow?.querySelector("#kmDealBudget")&&(this.arg={budget:this.value("#kmDealBudget")}),e&&this.saved.set(this.tab,{arg:this.arg,scroll:e.scrollTop})}value(e){return this.shadow?.querySelector(e)?.value??""}searchState(){let e={...So(),...this.tab==="active"?{minSales:"1",sort:"liquidity"}:{},...typeof this.arg=="object"&&this.arg?this.arg:{}};return this.tab==="active"&&(e.minSales=String(Math.max(1,Number(e.minSales)||1))),e}searchTab(){return this.tab==="active"?"active":"search"}itemState(){let e={skin:typeof this.arg=="number"?this.arg:0,range:"1M",candles:!1,overlay:"none",zoom:1,offset:0,...typeof this.arg=="object"&&this.arg?this.arg:{}};if(this.view?.item?.skin.skin===e.skin)for(let[t,o]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"}))this.shadow?.querySelector("#"+o)&&Object.assign(e,{[t]:this.value("#"+o)});return e}async show(e,t,o=!1){if(!this.shadow)return;this.remember(),e==="item"&&this.tab!=="item"&&(this.previous=this.tab);let n=this.saved.get(this.tab)?.scroll??0,r=this.saved.get(e);this.tab=e,this.arg=t===void 0?r?.arg:t;let i=++this.generation;this.itemSearch?.dismiss(),this.chart?.destroy(),this.chart=null;let a=this.shadow.querySelector("#kmBody"),l=wr.includes(e);l&&(this.discoveryTab=e);let c=this.shadow.querySelector("#kmDiscoverTabs");c.hidden=!l;for(let p of c.querySelectorAll("button")){let m=p.dataset.discover===e;p.setAttribute("aria-selected",String(m)),p.tabIndex=m?0:-1}l?(a.setAttribute("role","tabpanel"),a.setAttribute("aria-labelledby",`kmDiscover-${e}`)):(a.removeAttribute("role"),a.removeAttribute("aria-labelledby")),a.setAttribute("aria-busy","true"),a.innerHTML=fe("Loading market data","Fetching the latest available observations.");let d=this.shadow.querySelector("#kmTitle");d&&(d.textContent=Js[e]??"Market");let h=e==="item"?this.previous:e;wr.includes(h)&&(h="search"),h==="indices"&&(h="overview");for(let p of this.shadow.querySelectorAll("[data-nav]")){let m=p.dataset.nav===h;p.classList.toggle("on",m),m?p.setAttribute("aria-current","page"):p.removeAttribute("aria-current")}this.updateWatchCount();try{let p=await this.render(e);if(i!==this.generation||!this.shadow)return;this.view=p,this.holdings=p.holdings??[],a.innerHTML=p.html,a.scrollTop=t===void 0?r?.scroll??0:0,o&&(a.scrollTop=n);let m=this.shadow.querySelector("#kmFootRight");m&&(m.textContent=p.asOf?`${p.asOfLabel??"Estimates calculated"} ${We(Math.max(0,Date.now()-p.asOf))} ago`:"Estimates from observed market data");let f=a.querySelector(".chart");if(f&&p.points&&p.series&&(this.chart=new Go(f,p.points,p.series,p.chartOptions)),e==="portfolio"&&this.filterHoldings(),e==="item"){let g=this.arg;for(let[b,v]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"})){let k=a.querySelector("#"+v),E=g?.[b];k&&typeof E=="string"&&(k.value=E)}this.updatePlanner(),this.filterListings()}}catch{if(i!==this.generation)return;a.innerHTML=fe("Market data is unavailable","Try again in a moment. Your saved watchlist stays on this device.",'')}finally{i===this.generation&&a.setAttribute("aria-busy","false")}}updateWatchCount(){let e=this.shadow?.querySelector("#kmWatchCount");e&&(e.textContent=String(Se().length))}async render(e){switch(e){case"overview":return this.overview();case"intelligence":return this.intelligence();case"search":return this.search();case"active":return this.search();case"item":return this.item();case"watchlist":return this.watchlist();case"movers":return this.movers();case"deals":return this.deals();case"indices":return this.indices();case"portfolio":return this.portfolio();case"analyze":return this.analyze();default:return this.help()}}intelligence(){return Fc(this)}unavailable(){return{html:fe("Market data is unavailable",W.lastError||"The market server could not be reached. Try again in a moment.",'')}}intro(e,t,o=""){return sn(this,e,t,o)}table(e){return qc(this,e)}compactList(e){return jc(this,e)}overview(){return hc(this)}search(){return fc(this)}item(){return Cc(this)}watchlist(){return Tc(this)}movers(){return Lc(this)}deals(){return Pc(this)}indices(){return Nc(this)}portfolio(){return Bc(this)}async selectItem(e,t){if(t!=="give"&&t!=="get"){this.show("item",e.skin);return}let o=this.analyzer[t].find(n=>n.skin===e.skin);o?o.count=Math.min(1e4,o.count+1):this.analyzer[t].push({...e,count:1}),await this.show("analyze",this.arg,!0),this.tab==="analyze"&&this.shadow?.querySelector(`#kmPick${t}`)?.focus({preventScroll:!0})}analyze(){return Hc(this)}async refreshTrade(){let{generation:e}=this,t=++this.tradeRevision;this.shadow?.querySelector("#kmTradeOutcome")?.setAttribute("aria-busy","true");let n=this.shadow?.querySelector("#kmFootRight");n&&(n.textContent="Updating trade estimates...");let r=await this.analyze();if(e!==this.generation||t!==this.tradeRevision||!this.shadow)return;let i=document.createElement("div");i.innerHTML=r.html;for(let a of[".tradeSideHead>span",".tradeTotal",".tradeItemValue","#kmTradeOutcome"]){let l=i.querySelectorAll(a);this.shadow.querySelectorAll(a).forEach((c,d)=>{l[d]&&c.replaceWith(l[d])})}n&&(n.textContent=r.asOf?`Estimates calculated ${We(Math.max(0,Date.now()-r.asOf))} ago`:"Estimates from observed market data"),this.view=r}help(){return Gc(this)}updatePlanner(){let e=this.shadow?.querySelector("#kmPlannerResult");if(!e||!this.view?.item)return;let t=Number(this.value("#kmSellPrice")),o=Number(this.value("#kmSellQuantity"));if(!Number.isFinite(t)||t<=0||!Number.isInteger(o)||o<1||o>1e4){e.textContent="Enter a positive asking price and a quantity from 1 to 10,000.";return}let n=this.view.listings;if(!n){e.textContent="Competing listings are unavailable. Try again when market data is available.";return}let r=n?.listings.filter(a=>a.pricen.listings.length;e.innerHTML=`${i?"At least ":""}${r} cheaper listing${r===1?"":"s"} observed${n?"":" (listing data unavailable)"}.
              ${T(t*o)} KR gross if all ${o} sell · ${it(t/this.view.item.skin.fair-1)} vs estimate.`}filterHoldings(){let e=this.portfolioFilter.toLocaleLowerCase().trim();for(let t of this.shadow?.querySelectorAll("tr[data-skin]")??[]){let o=t;o.hidden=!o.querySelector(".itemIdentity")?.textContent?.toLocaleLowerCase().includes(e)}}filterListings(){let e=this.value("#kmListingMax"),t=this.value("#kmSerialMax"),o=this.value("#kmWearMax"),n=this.value("#kmAgeMax"),r=this.value("#kmSellerMax");for(let c of this.shadow?.querySelectorAll("#kmListingRows tr")??[]){let d=c;d.hidden=!!(e&&Number(d.dataset.price)>Number(e))||!!(t&&(!d.dataset.serial||Number(d.dataset.serial)>Number(t)))||!!(o&&(!d.dataset.wear||Number(d.dataset.wear)>Number(o)))||!!(n&&(!d.dataset.age||Number(d.dataset.age)>Number(n)))||!!(r&&(!d.dataset.sellerCount||Number(d.dataset.sellerCount)>Number(r)))}let i=this.shadow?.querySelector("#kmListingCount"),l=[...this.shadow?.querySelectorAll("#kmListingRows tr")??[]].filter(c=>!c.hidden).length;i&&(i.textContent=`${l} sampled listings shown; ${this.view?.listings?.total??"unknown"} reported listed.`)}applyFilters(e=1){this.show(this.searchTab(),this.readFilters(e))}readFilters(e){return{q:this.value("#kmQ").trim(),rarity:this.value("#kmRarity"),type:this.value("#kmType"),sort:this.value("#kmSort"),budget:this.value("#kmBudget"),minSales:this.value("#kmSales"),page:e}}click(e){let t=e.target instanceof Element?e.target.closest("button,tr[data-skin],tr[data-index-name],tr[data-category]"):null;if(!t||t.hasAttribute("disabled"))return;let o=t.dataset;if(o.externalUrl){e.preventDefault();try{let n=new URL(o.externalUrl);if(n.protocol!=="https:"||n.username||n.password||n.port)return;if(!(["github.com","kute.lol","krunker.io"].includes(n.hostname)||n.hostname==="discord.com"&&n.pathname.startsWith("/invite/"))){u.showNotification("This news link is not supported by Kute.",!1,6);return}if(n.hostname==="krunker.io"&&!u.hostFeatures?.includes("krunker-links")){u.showNotification("Update the Kute application to open Krunker news links.",!1,6);return}window.chrome.webview.postMessage(`open-url, ${n.href}`)}catch{}return}if(o.intelKind!==void 0){this.show("intelligence",o.intelKind);return}if(t.id==="kmClose"){this.close();return}if(t.id==="kmMaximize"){this.toggleMaximized();return}if(o.scale!==void 0){this.rescale(Number(o.scale));return}if(o.discover){if(o.discover===this.tab)return;o.discover==="deals"&&!this.saved.has("deals")&&(this.tab==="search"||this.tab==="active")?this.show("deals",{budget:this.value("#kmBudget")}):this.show(o.discover);return}if(o.nav==="search"){this.show(this.discoveryTab);return}if(o.nav){this.show(o.nav);return}if(o.skin){this.show("item",Number(o.skin));return}if(o.category){this.show("search",{...yo(),type:o.category,minSales:"1"});return}if(o.page){this.applyFilters(Number(o.page));return}if(o.range){this.show("item",{...this.itemState(),range:o.range,zoom:1,offset:0},!0);return}if(o.chartMode){this.show("item",{...this.itemState(),candles:o.chartMode==="candles"},!0);return}if(o.pan!==void 0){this.show("item",{...this.itemState(),offset:Number(o.pan)},!0);return}if(o.zoom){this.show("item",{...this.itemState(),zoom:Number(o.zoom),offset:o.zoom==="1"?0:this.itemState().offset},!0);return}if(o.window){this.show("movers",o.window);return}if(o.indexName){this.show("indices",o.indexName);return}if(o.unwatch){if(!wo(Se().filter(n=>n.skin!==Number(o.unwatch)))){this.storageError();return}this.show("watchlist",this.arg,!0);return}if(o.remove!==void 0&&o.side){this.analyzer[o.side].splice(Number(o.remove),1),this.show("analyze",this.arg,!0);return}switch(o.action){case"discover":this.show("search",yo());break;case"reset-search":this.show(this.searchTab(),this.tab==="active"?{...yo(),minSales:"1",sort:"liquidity"}:yo());break;case"back":this.show(this.previous);break;case"retry":this.retry();break;case"filters":this.applyFilters();break;case"deal-budget":this.show("deals",{budget:this.value("#kmDealBudget")});break;case"inventory":this.show("portfolio",this.value("#kmName").trim());break;case"analyze":this.show("analyze",this.arg,!0);break;case"clear-trade":this.analyzer={give:[],get:[],giveKr:0,getKr:0},this.show("analyze");break;case"watch":if(this.view?.item){if(!Ql(this.view.item.skin)){this.storageError();return}this.show("item",this.arg,!0)}break;default:break}}storageError(){let e=this.shadow?.querySelector("#kmFootRight");e&&(e.textContent="Could not save on this device. The watchlist holds up to 100 items.")}async retry(){let{generation:e}=this;await W.retry(),e===this.generation&&await this.show(this.tab,this.arg)}changed(e){let t=e.target;if(t instanceof HTMLInputElement||t instanceof HTMLSelectElement)if(t.id==="kmAdvanced"){this.advanced=t.checked;try{localStorage.setItem(_f,this.advanced?"1":"0")}catch{this.storageError()}this.show(this.tab,void 0,!0)}else if(t.id==="kmOverlay")this.show("item",{...this.itemState(),overlay:t.value},!0);else if(t.dataset.target){let o=Number(t.value),n=Se().map(r=>r.skin===Number(t.dataset.target)?{...r,target:o>0&&Number.isFinite(o)?o:null}:r);if(!wo(n)){this.storageError();return}this.show("watchlist",this.arg,!0)}else if(t.dataset.count!==void 0&&t.dataset.side){let o=this.analyzer[t.dataset.side][Number(t.dataset.count)];o&&(o.count=Math.min(1e4,Math.max(1,Math.floor(Number(t.value)||1))),t.value=String(o.count)),this.refreshTrade()}else if(t.dataset.kr){let o=Math.max(0,Math.min(1e9,Math.floor(Number(t.value)||0)));t.dataset.kr==="give"?this.analyzer.giveKr=o:this.analyzer.getKr=o,t.value=String(o),this.refreshTrade()}else t.closest("#kmFilters")&&t instanceof HTMLSelectElement&&this.applyFilters()}input(e){let t=e.target;if(t instanceof HTMLInputElement){if(t.id==="kmSellPrice"||t.id==="kmSellQuantity"){this.updatePlanner();return}if(["kmListingMax","kmSerialMax","kmWearMax","kmAgeMax","kmSellerMax"].includes(t.id)){this.filterListings();return}if(t.id==="kmHoldingFilter"){this.portfolioFilter=t.value,this.filterHoldings();return}}}key(e){if(!this.shadow||(e.stopImmediatePropagation(),this.itemSearch?.key(e))||e.isComposing)return;if(e.key==="Escape"){e.stopImmediatePropagation(),e.preventDefault(),this.close();return}if(e.ctrlKey&&!e.altKey&&["+","=","-","0"].includes(e.key)){e.preventDefault(),this.rescale({"-":-1,0:0}[e.key]??1);return}let t=this.shadow.activeElement;if(t?.matches("[data-discover]")&&["ArrowLeft","ArrowRight","Home","End"].includes(e.key)){e.preventDefault();let i=[...this.shadow.querySelectorAll("#kmDiscoverTabs button")],l=(i.indexOf(t)+(e.key==="ArrowRight"?1:-1)+i.length)%i.length;e.key==="Home"&&(l=0),e.key==="End"&&(l=i.length-1);let c=i[l];c.focus(),c.click();return}if(e.key==="Enter"&&t&&(t.closest("#kmFilters")?(e.preventDefault(),this.applyFilters()):t.id==="kmName"?(e.preventDefault(),this.show("portfolio",this.value("#kmName").trim())):t.matches("tr[data-skin],tr[data-index-name],tr[data-category]")&&(e.preventDefault(),t.click())),e.key!=="Tab")return;let o=[...this.shadow.querySelectorAll("button:not(:disabled):not([tabindex='-1']),input:not([type=hidden]),select,summary,[tabindex='0']")].filter(i=>i instanceof HTMLElement&&i.getClientRects().length&&!i.closest("[hidden]")),n=o[0],r=o.at(-1);e.shiftKey&&(t===n||!t)?(e.preventDefault(),r?.focus()):!e.shiftKey&&(t===r||!t)&&(e.preventDefault(),n?.focus())}},jy=new Er,Uy=jy});var Vc={};A(Vc,{default:()=>Wy});var Wc,Gy,Wy,$r=w(()=>{"use strict";D();It();xe();Xl();Zl();fr();ic();Wc=class{constructor(){this.headerItem=document.createElement("div"),this.headerSeparator=document.createElement("div"),this.headerObserver=new MutationObserver(()=>this.placeButton()),this.onUnread=()=>this.updateBadge(),this.terminal=null,this.running=!1,this.warned=!1,u.settings.toggleMarket=e=>this.toggle(e),u.market={open:(e,t)=>this.open(e,t),toggle:e=>this.toggle(e)},this.toggle(!0)}toggle(e){if(e!==this.running)if(this.running=e,e){if(!W.hostSupported()){this.warned||(this.warned=!0,u.showNotification("The Kute Market needs a newer Kute. Update Kute to use it.",!1,8)),this.running=!1;return}if(he.offline()){this.running=!1;return}this.placeButton();let t=document.querySelector("#playerHeaderEl");t&&this.headerObserver.observe(t,{childList:!0,subtree:!0}),window.addEventListener(Ws,this.onUnread),hr.start(),mr.start(),$t.start(),gr.start()}else this.headerObserver.disconnect(),window.removeEventListener(Ws,this.onUnread),this.headerItem.remove(),this.headerSeparator.remove(),hr.stop(),mr.stop(),$t.stop(),gr.stop(),this.terminal?.close()}placeButton(){let e=document.querySelector("#playerHeaderEl .headerBarRight");if(!e||e.contains(this.headerItem))return;let t=[...e.querySelector(".nav-item")?.classList??[]].find(o=>o.startsWith("svelte-"))??"";this.headerItem.className=`nav-item ${t}`,this.headerItem.innerHTML=` Kute Market `,this.headerItem.onclick=()=>this.open($t.unread.size?"watchlist":void 0),this.headerSeparator.className="verticalSeparator",this.headerSeparator.style.cssText="height: 35px;",e.prepend(this.headerItem,this.headerSeparator),this.updateBadge()}updateBadge(){let e=this.headerItem.querySelector(".nav-badge");if(!e)return;let t=$t.unread.size;e.textContent=String(Math.min(99,t)),e.style.display=t?"inline-block":"none"}async open(e,t){if(this.running){if(!this.terminal){let o=await Promise.resolve().then(()=>(Gc(),Uc)).catch(()=>null);if(!o)return;this.terminal=o.default}await this.terminal.open(e,t)}}},Gy=new Wc,Wy=Gy});var Vy={};var Of=w(()=>{"use strict";$r()});var Ff,Df=w(()=>{Ff=`@keyframes kuteMmSlideDown{0%{transform:translate(-50%,-500%)}to{transform:translate(-50%)}}#kuteMatchmaker{position:absolute;top:8em;left:50%;z-index:2147482000;box-sizing:border-box;width:24em;padding:18px 22px;border-radius:14px;overflow:hidden;pointer-events:all;background:#12121699;backdrop-filter:blur(14px) saturate(120%);box-shadow:0 8px 48px #000c;display:flex;flex-direction:column;color:#fff;animation:kuteMmSlideDown .4s cubic-bezier(.16,1,.3,1) forwards}#kuteMmStatus{font-size:1.4em;color:#35e0e8;margin-bottom:.6em;text-align:center}#kuteMmStatus.mm-fail{color:#eb5656}#kuteMmFeed{display:flex;flex-direction:column;gap:.15em;overflow:hidden;min-height:5.6em;margin-bottom:.6em}#kuteMmFeed.mm-result{justify-content:center}@keyframes kuteMmFeedIn{0%{opacity:0;transform:translate(1em)}to{opacity:1;transform:translate(0)}}@keyframes kuteMmGrow{0%{opacity:0;transform:scale(.55)}65%{opacity:1;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}.mm-entry{display:flex;gap:.8em;padding:.2em .5em;font-size:.95em;font-family:GameFont,monospace;border-radius:.2em;animation:kuteMmFeedIn .12s ease forwards}.mm-entry:last-child:before{content:"\\25b8";color:#ffc147}.mm-entry.mm-pass{background:#4caf501a}.mm-entry.mm-pass .mm-region{color:#35e0e8}.mm-entry.mm-pass .mm-map{color:#ffffffe6}.mm-entry.mm-pass .mm-players{color:#4caf50}.mm-entry.mm-skip{background:#ffffff05}.mm-entry.mm-skip .mm-region{color:#ffffff4d}.mm-entry.mm-skip .mm-map{color:#ffffff80}.mm-entry.mm-skip .mm-players{color:#eb5656}.mm-entry.mm-skip .mm-icon{opacity:.45}.mm-region{min-width:2.5em;font-weight:700}.mm-map{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mm-players{min-width:3em;text-align:right;font-weight:600}.mm-icon{width:1.7em;height:1.7em;flex:none;object-fit:cover;border-radius:.25em;align-self:center;background:#ffffff0f}.mm-entry.mm-landed{box-shadow:inset 0 0 0 2px #35e0e8}.mm-entry.mm-found,.mm-entry.mm-none{justify-content:center;transform-origin:center;animation:kuteMmGrow .34s cubic-bezier(.2,.85,.3,1.25) forwards}.mm-entry.mm-found{font-size:1.25em;gap:.7em}.mm-entry.mm-found .mm-icon{width:2.4em;height:2.4em;border-radius:.3em}.mm-entry.mm-none{font-size:1.2em;color:#ffffff8c;background:#ffffff08}.mm-entry.mm-found:before,.mm-entry.mm-none:before{content:none}#kuteMmCounter{font-size:.85em;color:#ffc147;text-align:center;margin-bottom:.5em}#kuteMmCancel{text-align:center;border:.2em solid #eb5656;border-radius:.3em;font-size:1.1em;background:#0000004d;padding:.2em 1.2em;cursor:pointer;margin:0 auto;width:fit-content;transition:all .08s}#kuteMmCancel:hover{border-color:#fff;transform:scale(.95)}#kuteMmCancel:active{transform:scale(.85)} -`});var qf=we((NE,Xy)=>{Xy.exports='

              Matchmaker Filters

              F6 joins the best lobby for these. Nothing picked in a group means all of it

              Regions

              Modes \u2605 on a mode to prefer it

              Preferred first, then any other mode. Modes rank above maps
              Drag to reorder, click to move to the top

              Maps \u2605 on a map to prefer it

              Preferred first, then any other map
              Drag to reorder, click to move to the top

              Lobby

              Reset
              Done
              '});var Zc={};A(Zc,{default:()=>u1});function Yf(s){let e=e1.get(Wt(s));return e===void 0?null:Bs(e)}function d1(s,e){let t=Yf(s);if(!t)return null;let o=document.createElement("img");return o.className=e,o.src=t,o.alt="",o.loading="lazy",o.onerror=()=>o.remove(),o}function nn(s,e){let t=document.createElement("span");return t.className=s,t.textContent=e,t}function Xc(s,e){let t=document.createElement("div");t.className=`mm-entry ${e}`;let o=d1(s.map,"mm-icon");return o&&t.append(o),t.append(nn("mm-region",s.region),nn("mm-map",s.map),nn("mm-players",`${s.players}/${s.limit}`)),t}async function Uf(){let e=await(await fetch(n1,{signal:AbortSignal.timeout(Vf)})).json();return Array.isArray(e?.games)?e.games:[]}function Gf(s,e){let t=e.maps.length>0?new Set(e.maps.map(Wt)):t1;return s.map(o=>{let n=String(o[0]),r=o[4]??{},i=r.c===0||r.oc===1,a=String(r.i??""),l=Wt(a),c={id:n,region:n.split(":")[0],server:String(o[1]),players:Number(o[2]),limit:Number(o[3]),map:a,mode:Jy[r.g]??"Unknown",timeLeft:Number(o[5]),passes:!1};return c.passes=i&&!s1.test(n)&&(e.regions.length===0||e.regions.includes(c.region))&&(e.modes.length===0||e.modes.includes(c.mode))&&t.has(l)&&c.players>=e.minPlayers&&c.players<=e.maxPlayers&&c.players0?c.timeLeft>=e.minTime:o1.has(l))&&!location.href.includes(n),c})}var Jy,Zy,Kf,Wf,Qy,Wt,e1,t1,o1,s1,n1,Vf,r1,jf,Yc,i1,a1,l1,c1,on,sn,Jc,u1,Qc=w(()=>{"use strict";Df();D();Ae();Po();tr();Jy=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Hide & Seek","Infected","Race","Last Man Standing","Simon Says","Gun Game","Prop Hunt","Boss Hunt","Classic FFA","Deposit","Stalker","King of the Hill","One in the Chamber","Trade","Kill Confirmed","Defuse","Sharp Shooter","Traitor","Raid","Blitz","Domination","Squad Deathmatch","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],Zy=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Gun Game","Classic FFA","Deposit","Kill Confirmed","Sharp Shooter","Domination","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],Kf={SV:"Silicon Valley",TOK:"Tokyo",FRA:"Frankfurt",MBI:"Mumbai",SYD:"Sydney",SIN:"Singapore",DAL:"Dallas",BHN:"Bahrain",BRZ:"Brazil",NY:"New York"},Wf=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Tropicano","Habitat","Atomic","Old_Burg","Throwback","Clockwork","Bazaar","Erupt","HQ","Lush","Vivo","Slide Moonlight","Eterno Simulator","Eterno Jump","Frontier","Piazza","Barnyard"],Qy={SkyTemple:"Sky Temple",Krunk_Plaza:"Krunk Plaza",Old_Burg:"Old Burg"},Wt=s=>s.toLowerCase().replace(/[^a-z0-9]/g,""),e1=new Map(er.map((s,e)=>[Wt(s),e])),t1=new Set(Wf.map(Wt)),o1=new Set(["Eterno Jump","Slide Moonlight"].map(Wt)),s1=/[\s&#?/%\\]/,n1="https://matchmaker.krunker.io/game-list?hostname=krunker.io",Vf=1e4,r1=4,jf=1100,Yc=80,i1=20,a1=180,l1=1200,c1=1100,on={regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[],minPlayers:1,maxPlayers:6,minTime:120,sortByPlayers:!1,serverBrowser:!0,animation:!0,searchAfterMatch:!1},sn=s=>new Promise(e=>setTimeout(e,s));Jc=class{constructor(){this.activeRun=0,this.runCounter=0,this.candidates=[],this.popup=document.createElement("div"),this.popup.id="kuteMatchmaker",this.status=document.createElement("div"),this.status.id="kuteMmStatus",this.feed=document.createElement("div"),this.feed.id="kuteMmFeed",this.counter=document.createElement("div"),this.counter.id="kuteMmCounter";let e=document.createElement("div");e.id="kuteMmCancel",e.textContent="Cancel",e.onmouseenter=()=>window.SOUND?.play("tick_0",.1),e.onclick=()=>this.abort(),this.popup.append(this.status,this.feed,this.counter,e),this.cancelKey=t=>{t.key!=="Escape"||document.pointerLockElement||(t.preventDefault(),t.stopPropagation(),this.abort())},u.matchmaker={showFilters:()=>this.showFilters()},u.settings.toggleMatchmaker=()=>{},u.hostFeatures?.includes("matchmaker")&&(window.addEventListener("keydown",t=>{!ls(t,"matchmaker")||t.repeat||!u.settings.data.matchmaker||document.activeElement?.tagName!=="INPUT"&&this.start().catch(o=>console.error("[kute] matchmaker:",o))},!0),this.watchEndScreen())}watchEndScreen(){let e=document.getElementById("endUI");if(!e)return;let t=!1,o=e.style.display!=="none";document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&(t=!0)}),new MutationObserver(()=>{let n=e.style.display!=="none";n!==o&&(o=n,!(!n||!t)&&(t=!1,!(!u.settings.data.matchmaker||!this.filter.searchAfterMatch||window.getGameActivity?.()?.custom)&&this.start().catch(r=>console.error("[kute] matchmaker:",r))))}).observe(e,{attributes:!0,attributeFilter:["style"]})}get filter(){return{...on,...u.settings.data.matchmakerFilter}}saveFilter(e){u.settings.data.matchmakerFilter=e,window.chrome.webview.postMessage(`set-config-json matchmakerFilter ${JSON.stringify(e)}`)}cancelled(e){return e!==this.activeRun}abort(){this.activeRun=0,window.playSelect?.(),this.dismiss()}dismiss(){document.removeEventListener("keydown",this.cancelKey,!0),this.popup.remove()}showPopup(){if(!document.querySelector("#kuteMatchmakerCSS")){let e=document.createElement("style");e.id="kuteMatchmakerCSS",e.textContent=Ff,document.head.append(e)}this.status.textContent="Connecting...",this.status.classList.remove("mm-fail"),this.feed.replaceChildren(),this.feed.classList.remove("mm-result"),this.counter.textContent="",document.addEventListener("keydown",this.cancelKey,!0),(document.querySelector("#uiBase")??document.body).append(this.popup)}pushEntry(e){for(this.feed.append(e);this.feed.children.length>r1;)this.feed.firstElementChild?.remove()}async animateScan(e,t,o){let n=t.length;if(n===0)return;this.status.textContent="Scanning lobbies...";let r=Math.floor(jf/Yc),i=n>r?n/r:1,a=n>r?Yc:Math.max(i1,Math.min(Yc,jf/n));for(let l=0;l[l.id,l])),a=[t,...this.candidates.filter(l=>l!==t)].find(l=>r.get(l.id)?.passes);a?this.join(a.id):this.openServerBrowser(o)}async start(){if(this.activeRun!==0)return;let e=++this.runCounter;this.activeRun=e;try{await this.search(e)}finally{this.activeRun===e&&(this.activeRun=0)}}async search(e){let{filter:t}=this;t.animation&&this.showPopup();let o,n;try{let[p,m]=await Promise.all([Uf(),Te("ping-regions","regionPings",Vf)]);o=Gf(p,t),n=m??{}}catch(p){if(console.error("[kute] matchmaker: no lobby list",p),this.cancelled(e)||!t.animation)return;this.status.textContent="Failed to fetch lobbies",this.status.classList.add("mm-fail"),await sn(2e3),this.cancelled(e)||this.dismiss();return}if(this.cancelled(e))return;let r=p=>n[p.server]??999,i=new Map(t.preferredMaps.map((p,m)=>[Wt(p),m])),a=new Map(t.preferredModes.map((p,m)=>[p,m])),l=p=>(a.get(p.mode)??a.size)*(i.size+1)+(i.get(Wt(p.map))??i.size),c=p=>p.limit-p.players<=1?1:0,d=o.filter(p=>p.passes);d.sort((p,m)=>{let f=l(p)-l(m),g=c(p)-c(m),b=r(p)-r(m),v=m.players-p.players;return t.sortByPlayers?f||g||v||b:f||g||b||v}),this.candidates=d;let h;if(d.length>0){let p=d[0],m=d.filter(f=>l(f)===l(p)&&c(f)===c(p)&&Math.abs(r(f)-r(p))<=20&&p.players-f.players<=2);h=m[Math.floor(Math.random()*m.length)]}if(t.animation&&await this.animateScan(e,o,h),!this.cancelled(e)){if(!h){if(t.animation){this.status.textContent="No Lobby Found",this.status.classList.add("mm-fail"),this.feed.classList.add("mm-result");let p=document.createElement("div");if(p.className="mm-entry mm-none",p.textContent="No matching lobbies",this.feed.replaceChildren(p),this.counter.textContent=t.serverBrowser?"Opening server browser...":"",await sn(c1),this.cancelled(e))return}this.openServerBrowser(t);return}if(t.animation){this.status.textContent="Lobby Found!",this.feed.classList.add("mm-result"),this.feed.replaceChildren(Xc(h,"mm-pass mm-found"));let p=n[h.server]===void 0?"?":String(n[h.server]);if(this.counter.textContent=`${h.mode} \xB7 ${Kf[h.region]??h.region} \xB7 ${p}ms`,await sn(l1),this.cancelled(e))return}await this.verifyAndJoin(e,h,t)}}async showFilters(){let e=await Promise.resolve().then(()=>ue(qf(),1)),{filter:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=(g,b,v)=>{let k=i(g);k.replaceChildren();for(let E of b){let L=document.createElement("div");if(L.className=`mmChip${v.includes(E.value)?" on":""}`,E.icon){let x=document.createElement("img");x.src=E.icon,x.alt="",x.loading="lazy",x.onerror=()=>x.remove(),L.append(x)}L.append(E.label),L.onclick=()=>{let x=v.indexOf(E.value);x===-1?v.push(E.value):v.splice(x,1),L.classList.toggle("on",x===-1)},k.append(L)}},l=(g,b,v)=>{if(!g)return;let k=document.createElement("img");k.src=g,k.alt="",v?k.loading="lazy":k.draggable=!1,k.onerror=()=>k.remove(),b.append(k)},c=g=>{let{preferred:b}=g,v=i(g.boxId);v.hidden=b.length===0;let k=v.querySelector(".mmGrid");k.replaceChildren();let E=()=>k.querySelectorAll(".mmNum").forEach((L,x)=>L.textContent=String(x+1));for(let L of b){let x=document.createElement("div");x.className="mmChip on mmRank",x.append(nn("mmNum","")),l(g.icon(L),x,!1),x.append(g.label(L));let $=null;x.onpointerdown=I=>{x.setPointerCapture(I.pointerId),$={x:I.clientX,y:I.clientY,moved:!1}},x.onpointermove=I=>{if(!$||!$.moved&&Math.hypot(I.clientX-$.x,I.clientY-$.y)<5)return;$.moved=!0,x.classList.add("dragging");let _=[...k.children],H=_.findIndex(J=>{let B=J.getBoundingClientRect();return I.clientX>=B.left&&I.clientX<=B.right&&I.clientY>=B.top&&I.clientY<=B.bottom}),G=_.indexOf(x);H===-1||H===G||(b.splice(H,0,...b.splice(G,1)),x.remove(),k.insertBefore(x,k.children[H]??null),E())},x.onpointerup=()=>{x.classList.remove("dragging"),$&&!$.moved&&(b.unshift(...b.splice(b.indexOf(L),1)),window.SOUND?.play("tick_0",.1),c(g)),$=null},x.onpointercancel=x.onpointerup,k.append(x)}E()},d=g=>{let{picked:b,preferred:v}=g,k=i(g.gridId);k.replaceChildren();for(let E of g.values){let L=v.includes(E),x=document.createElement("div");x.className=`mmChip${b.includes(E)?" on":""}${L?" preferred":""}`,l(g.icon(E),x,!0),x.append(g.label(E));let $=nn("mmStar","\u2605");$.title=L?"Preferred, click to remove":`Prefer this ${g.noun}`,$.onclick=I=>{I.stopPropagation(),L?v.splice(v.indexOf(E),1):(v.push(E),b.length>0&&!b.includes(E)&&b.push(E)),d(g)},x.append($),x.onclick=()=>{let I=b.indexOf(E);I!==-1?(b.splice(I,1),L&&v.splice(v.indexOf(E),1)):b.length===0?b.push(...new Set([...v,E])):b.push(E),d(g)},k.append(x)}c(g)},h=()=>{a("mmRegions",Object.entries(Kf).map(([g,b])=>({value:g,label:b})),t.regions),d({gridId:"mmModes",boxId:"mmModeRanks",noun:"mode",values:Zy,picked:t.modes,preferred:t.preferredModes,label:g=>g,icon:()=>null}),d({gridId:"mmMaps",boxId:"mmMapRanks",noun:"map",values:Wf,picked:t.maps,preferred:t.preferredMaps,label:g=>Qy[g]??g,icon:Yf}),i("mmMinPlayers").value=String(t.minPlayers),i("mmMaxPlayers").value=String(t.maxPlayers),i("mmMinTime").value=String(t.minTime),i("mmSortByPlayers").checked=t.sortByPlayers,i("mmServerBrowser").checked=t.serverBrowser,i("mmAnimation").checked=t.animation,i("mmSearchAfterMatch").checked=t.searchAfterMatch};t.regions=[...t.regions],t.modes=[...t.modes],t.maps=[...t.maps],t.preferredMaps=[...t.preferredMaps],t.preferredModes=[...t.preferredModes],h();let p=(g,b,v,k)=>{let E=Number.parseInt(i(g).value,10);return Number.isNaN(E)?k:Math.min(v,Math.max(b,E))},m=new AbortController,f=()=>{m.abort(),o.remove(),this.saveFilter({...t,minPlayers:p("mmMinPlayers",0,7,on.minPlayers),maxPlayers:p("mmMaxPlayers",0,7,on.maxPlayers),minTime:p("mmMinTime",0,480,on.minTime),sortByPlayers:i("mmSortByPlayers").checked,serverBrowser:i("mmServerBrowser").checked,animation:i("mmAnimation").checked,searchAfterMatch:i("mmSearchAfterMatch").checked})};i("mmDone").onclick=f,i("mmReset").onclick=()=>{Object.assign(t,on,{regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[]}),h()},o.addEventListener("mousedown",g=>{g.target===o&&f()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),f())},{signal:m.signal,capture:!0}),document.body.append(o)}},u1=new Jc});var ed=we((DE,p1)=>{p1.exports=`#uiBase.onMenu #spectateUI{display:block!important}#uiBase.onCompMenu.onMenu #specTimer,#uiBase.onMenu #specGMessage,#uiBase.onMenu #spec1,#uiBase.onMenu #specGameInfo,#uiBase.onMenu #spec0,#uiBase.onMenu #specControlHolder,#uiBase.onMenu #specNames{display:none!important}#uiBase.onMenu #spectateUI>#spectateHUD{box-sizing:border-box;display:flex!important;justify-content:center;height:.5rem;white-space:nowrap;width:max-content;position:fixed;top:calc(50% + 140px)}#uiBase.onMenu #spectateHUD #specGMessage{top:0}#uiBase.onMenu #spectateUI>#spectateHUD{z-index:1;transform:unset}#uiBase.onMenu .spectateInfo{position:fixed;top:calc(40% - 105px);left:50%;transform:translate(-50%,-50%)}#uiBase.onMenu #spectateUI div .spectateInfo #specTimer{background-color:#0000;padding:0 25px;font-size:42px;border-radius:.5em}#uiBase.onMenu #specKPDContr{display:none}#uiBase.onMenu #spectateUI div#specStats{position:absolute;top:calc(50% + 13em);left:50%;transform:translate(-50%);z-index:1}#uiBase.onMenu #spectateUI div#specStats:before{content:"Spectating";position:absolute;bottom:100%;left:50%;transform:translate(-50%);font-size:1.2em;padding-bottom:.5em} -`});var od={};A(od,{default:()=>h1});var Jf,Xf,td,h1,sd=w(()=>{"use strict";Jf=ue(ed(),1);D();Xf="kute_menuTimerCSS",td=class{constructor(){u.settings.toggleMenuTimer=e=>this.toggle(e),this.toggle(u.settings.data.menuTimer!==!1)}toggle(e){let t=document.getElementById(Xf);if(!e){t?.remove();return}if(t)return;let o=document.createElement("style");o.id=Xf,o.textContent=Jf.default,document.head.append(o)}},h1=new td});var id={};A(id,{default:()=>y1});function Qf(s){let e=/loadUserMod\(\s*(["`])(.*?)\1\s*,\s*(["`])(.*?)\3/.exec(s);return e?{name:e[2],url:e[4]}:null}function eg(s){try{let e=new URL(s);return e.protocol!=="https:"?null:e.hostname==="krunker.io"||e.hostname.endsWith(".krunker.io")?e.href:e.hostname==="dropbox.com"||e.hostname==="www.dropbox.com"?(e.hostname="dl.dropboxusercontent.com",e.search="",e.href):null}catch{return null}}function v1(s){return`${s.replace(/[\u0000-\u001f<>:"/\\|?*]/g,"").replace(/\s+/g," ").trim().replace(/[ .]+$/,"").slice(0,80)||"mod"}.zip`}async function w1(s){let e=await fetch(s);if(e.status===403||e.status===404)throw new Error("This mod's file is gone, its creator removed it");if(!e.ok)throw new Error(`The mod server answered ${e.status}`);if(Number(e.headers.get("content-length")??0)>Zf)throw new Error("That mod is too large");let t=await e.blob();if(t.size>Zf)throw new Error("That mod is too large");let o=new Uint8Array(await t.slice(0,2).arrayBuffer());if(o[0]!==80||o[1]!==75)throw new Error("That mod is not a zip file");return t}function k1(s,e){let t=document.createElement("a");t.href=URL.createObjectURL(s),t.download=e,t.click(),setTimeout(()=>URL.revokeObjectURL(t.href),6e4)}function tg(s,e,t,o){let n=!1;s.addEventListener("click",r=>{if(r.stopPropagation(),n)return;n=!0,e.style.color=nd.busy,e.textContent="hourglass_top";let i=v1(t);w1(o).then(a=>{k1(a,i),e.style.color=nd.done,e.textContent="download_done",u.showNotification(`Saved ${i} to your Downloads folder`,!1,4)}).catch(a=>{e.style.color=nd.failed,e.textContent="error_outline",u.showNotification(a instanceof TypeError?"Could not download the mod":a.message,!1,4)}).finally(()=>{n=!1})})}function og(s){let e=document.createElement("span");return e.className="material-icons",e.style.cssText=s,e.textContent="download",e}var rn,Zf,m1,f1,g1,b1,nd,rd,y1,ad=w(()=>{"use strict";D();rn="data-kute-mod",Zf=300*1024*1024,m1='[onclick^="downloadPack"]',f1="font-size:70px;color:#fff;",g1="position:absolute;right:30px;bottom:92px;box-sizing:content-box;width:240px;height:37px;padding:10px 6px 6px;border:3px solid #35e0e8;border-radius:6px;background:rgba(0,0,0,0.6);color:#fff;font-size:21px;text-align:center;cursor:pointer;",b1="font-size:32px;color:#fff;vertical-align:top;margin-top:-3px;margin-left:5px;",nd={busy:"#777",done:"#35e0e8",failed:"#ff7a7a"};rd=class{constructor(){this.pending=null,this.observer=new MutationObserver(()=>{this.pending===null&&(this.pending=setTimeout(()=>this.scan(),150))});let e=document.getElementById("menuWindow");e&&(this.observer.observe(e,{childList:!0,subtree:!0}),this.scan())}scan(){this.pending=null;let e=document.getElementById("menuWindow");if(!e)return;let t=[];for(let r of e.querySelectorAll('.mapActionB[onclick^="loadUserMod"]')){let i=r.parentElement;if(!i||i.querySelector(`[${rn}], ${m1}`))continue;let a=Qf(r.getAttribute("onclick")??""),l=a&&eg(a.url);a&&l&&t.push([i,this.listButton(a.name,l)])}let o=document.getElementById("bigMFeatPBtn"),n=o?.parentElement;if(o&&n&&!n.querySelector(`[${rn}]`)){let r=Qf(o.getAttribute("onclick")??""),i=r&&eg(r.url);r&&i&&t.push([n,[this.featuredButton(r.name,i)]])}if(t.length!==0){this.observer.disconnect();for(let[r,i]of t)r.append(...i);this.observer.observe(e,{childList:!0,subtree:!0})}}listButton(e,t){let o=document.createElement("div");o.className="mapActionSep",o.setAttribute(rn,"");let n=document.createElement("div");n.className="mapActionB",n.title="Download",n.setAttribute(rn,"");let r=og(f1);return n.append(r),tg(n,r,e,t),[o,n]}featuredButton(e,t){let o=document.createElement("div");o.setAttribute(rn,""),o.style.cssText=g1;let n=og(b1);return o.append("Download ",n),tg(o,n,e,t),o}},y1=new rd});var dd={};A(dd,{default:()=>A1});function Cr(s,e,t){return Math.min(t,Math.max(e,s))}function ld(s,e){let t=parseFloat(localStorage.getItem("kro_setngss_"+s)??"");return Number.isFinite(t)&&t>0?t:e}function ig(s,e){let t=s.createProgram();for(let[o,n]of[[s.VERTEX_SHADER,C1],[s.FRAGMENT_SHADER,e]]){let r=s.createShader(o);if(!r)return null;s.shaderSource(r,n),s.compileShader(r),s.attachShader(t,r)}return s.linkProgram(t),s.getProgramParameter(t,s.LINK_STATUS)?t:null}var x1,sg,S1,E1,ng,$1,rg,C1,M1,T1,cd,A1,ud=w(()=>{"use strict";D();as();x1="kuteMotionBlur",sg=1e3/60,S1=.4,E1=.002,ng=.2,$1=2,rg=.0024,C1=`#version 300 es + class="muted">${T(t*o)} KR gross if all ${o} sell · ${it(t/this.view.item.skin.fair-1)} vs estimate.`}filterHoldings(){let e=this.portfolioFilter.toLocaleLowerCase().trim();for(let t of this.shadow?.querySelectorAll("tr[data-skin]")??[]){let o=t;o.hidden=!o.querySelector(".itemIdentity")?.textContent?.toLocaleLowerCase().includes(e)}}filterListings(){let e=this.value("#kmListingMax"),t=this.value("#kmSerialMax"),o=this.value("#kmWearMax"),n=this.value("#kmAgeMax"),r=this.value("#kmSellerMax");for(let c of this.shadow?.querySelectorAll("#kmListingRows tr")??[]){let d=c;d.hidden=!!(e&&Number(d.dataset.price)>Number(e))||!!(t&&(!d.dataset.serial||Number(d.dataset.serial)>Number(t)))||!!(o&&(!d.dataset.wear||Number(d.dataset.wear)>Number(o)))||!!(n&&(!d.dataset.age||Number(d.dataset.age)>Number(n)))||!!(r&&(!d.dataset.sellerCount||Number(d.dataset.sellerCount)>Number(r)))}let i=this.shadow?.querySelector("#kmListingCount"),l=[...this.shadow?.querySelectorAll("#kmListingRows tr")??[]].filter(c=>!c.hidden).length;i&&(i.textContent=`${l} sampled listings shown; ${this.view?.listings?.total??"unknown"} reported listed.`)}applyFilters(e=1){this.show(this.searchTab(),this.readFilters(e))}readFilters(e){return{q:this.value("#kmQ").trim(),rarity:this.value("#kmRarity"),type:this.value("#kmType"),sort:this.value("#kmSort"),budget:this.value("#kmBudget"),minSales:this.value("#kmSales"),page:e}}click(e){let t=e.target instanceof Element?e.target.closest("button,tr[data-skin],tr[data-index-name],tr[data-category]"):null;if(!t||t.hasAttribute("disabled"))return;let o=t.dataset;if(o.externalUrl){e.preventDefault();try{let n=new URL(o.externalUrl);if(n.protocol!=="https:"||n.username||n.password||n.port)return;if(!(["github.com","kute.lol","krunker.io"].includes(n.hostname)||n.hostname==="discord.com"&&n.pathname.startsWith("/invite/"))){u.showNotification("This news link is not supported by Kute.",!1,6);return}if(n.hostname==="krunker.io"&&!u.hostFeatures?.includes("krunker-links")){u.showNotification("Update the Kute application to open Krunker news links.",!1,6);return}window.chrome.webview.postMessage(`open-url, ${n.href}`)}catch{}return}if(o.intelKind!==void 0){this.show("intelligence",o.intelKind);return}if(t.id==="kmClose"){this.close();return}if(t.id==="kmMaximize"){this.toggleMaximized();return}if(o.scale!==void 0){this.rescale(Number(o.scale));return}if(o.discover){if(o.discover===this.tab)return;o.discover==="deals"&&!this.saved.has("deals")&&(this.tab==="search"||this.tab==="active")?this.show("deals",{budget:this.value("#kmBudget")}):this.show(o.discover);return}if(o.nav==="search"){this.show(this.discoveryTab);return}if(o.nav){this.show(o.nav);return}if(o.skin){this.show("item",Number(o.skin));return}if(o.category){this.show("search",{...So(),type:o.category,minSales:"1"});return}if(o.page){this.applyFilters(Number(o.page));return}if(o.range){this.show("item",{...this.itemState(),range:o.range,zoom:1,offset:0},!0);return}if(o.chartMode){this.show("item",{...this.itemState(),candles:o.chartMode==="candles"},!0);return}if(o.pan!==void 0){this.show("item",{...this.itemState(),offset:Number(o.pan)},!0);return}if(o.zoom){this.show("item",{...this.itemState(),zoom:Number(o.zoom),offset:o.zoom==="1"?0:this.itemState().offset},!0);return}if(o.window){this.show("movers",o.window);return}if(o.indexName){this.show("indices",o.indexName);return}if(o.unwatch){if(!yo(Se().filter(n=>n.skin!==Number(o.unwatch)))){this.storageError();return}this.show("watchlist",this.arg,!0);return}if(o.remove!==void 0&&o.side){this.analyzer[o.side].splice(Number(o.remove),1),this.show("analyze",this.arg,!0);return}switch(o.action){case"discover":this.show("search",So());break;case"reset-search":this.show(this.searchTab(),this.tab==="active"?{...So(),minSales:"1",sort:"liquidity"}:So());break;case"back":this.show(this.previous);break;case"retry":this.retry();break;case"filters":this.applyFilters();break;case"deal-budget":this.show("deals",{budget:this.value("#kmDealBudget")});break;case"inventory":this.show("portfolio",this.value("#kmName").trim());break;case"analyze":this.show("analyze",this.arg,!0);break;case"clear-trade":this.analyzer={give:[],get:[],giveKr:0,getKr:0},this.show("analyze");break;case"watch":if(this.view?.item){if(!sc(this.view.item.skin)){this.storageError();return}this.show("item",this.arg,!0)}break;default:break}}storageError(){let e=this.shadow?.querySelector("#kmFootRight");e&&(e.textContent="Could not save on this device. The watchlist holds up to 100 items.")}async retry(){let{generation:e}=this;await W.retry(),e===this.generation&&await this.show(this.tab,this.arg)}changed(e){let t=e.target;if(t instanceof HTMLInputElement||t instanceof HTMLSelectElement)if(t.id==="kmAdvanced"){this.advanced=t.checked;try{localStorage.setItem(Ff,this.advanced?"1":"0")}catch{this.storageError()}this.show(this.tab,void 0,!0)}else if(t.id==="kmOverlay")this.show("item",{...this.itemState(),overlay:t.value},!0);else if(t.dataset.target){let o=Number(t.value),n=Se().map(r=>r.skin===Number(t.dataset.target)?{...r,target:o>0&&Number.isFinite(o)?o:null}:r);if(!yo(n)){this.storageError();return}this.show("watchlist",this.arg,!0)}else if(t.dataset.count!==void 0&&t.dataset.side){let o=this.analyzer[t.dataset.side][Number(t.dataset.count)];o&&(o.count=Math.min(1e4,Math.max(1,Math.floor(Number(t.value)||1))),t.value=String(o.count)),this.refreshTrade()}else if(t.dataset.kr){let o=Math.max(0,Math.min(1e9,Math.floor(Number(t.value)||0)));t.dataset.kr==="give"?this.analyzer.giveKr=o:this.analyzer.getKr=o,t.value=String(o),this.refreshTrade()}else t.closest("#kmFilters")&&t instanceof HTMLSelectElement&&this.applyFilters()}input(e){let t=e.target;if(t instanceof HTMLInputElement){if(t.id==="kmSellPrice"||t.id==="kmSellQuantity"){this.updatePlanner();return}if(["kmListingMax","kmSerialMax","kmWearMax","kmAgeMax","kmSellerMax"].includes(t.id)){this.filterListings();return}if(t.id==="kmHoldingFilter"){this.portfolioFilter=t.value,this.filterHoldings();return}}}key(e){if(!this.shadow||(e.stopImmediatePropagation(),this.itemSearch?.key(e))||e.isComposing)return;if(e.key==="Escape"){e.stopImmediatePropagation(),e.preventDefault(),this.close();return}if(e.ctrlKey&&!e.altKey&&["+","=","-","0"].includes(e.key)){e.preventDefault(),this.rescale({"-":-1,0:0}[e.key]??1);return}let t=this.shadow.activeElement;if(t?.matches("[data-discover]")&&["ArrowLeft","ArrowRight","Home","End"].includes(e.key)){e.preventDefault();let i=[...this.shadow.querySelectorAll("#kmDiscoverTabs button")],l=(i.indexOf(t)+(e.key==="ArrowRight"?1:-1)+i.length)%i.length;e.key==="Home"&&(l=0),e.key==="End"&&(l=i.length-1);let c=i[l];c.focus(),c.click();return}if(e.key==="Enter"&&t&&(t.closest("#kmFilters")?(e.preventDefault(),this.applyFilters()):t.id==="kmName"?(e.preventDefault(),this.show("portfolio",this.value("#kmName").trim())):t.matches("tr[data-skin],tr[data-index-name],tr[data-category]")&&(e.preventDefault(),t.click())),e.key!=="Tab")return;let o=[...this.shadow.querySelectorAll("button:not(:disabled):not([tabindex='-1']),input:not([type=hidden]),select,summary,[tabindex='0']")].filter(i=>i instanceof HTMLElement&&i.getClientRects().length&&!i.closest("[hidden]")),n=o[0],r=o.at(-1);e.shiftKey&&(t===n||!t)?(e.preventDefault(),r?.focus()):!e.shiftKey&&(t===r||!t)&&(e.preventDefault(),n?.focus())}},Xy=new Cr,Jy=Xy});var Zc={};A(Zc,{default:()=>Qy});var Jc,Zy,Qy,Mr=w(()=>{"use strict";F();Nt();xe();ec();oc();br();dc();Jc=class{constructor(){this.headerItem=document.createElement("div"),this.headerSeparator=document.createElement("div"),this.headerObserver=new MutationObserver(()=>this.placeButton()),this.onUnread=()=>this.updateBadge(),this.terminal=null,this.running=!1,this.warned=!1,u.settings.toggleMarket=e=>this.toggle(e),u.market={open:(e,t)=>this.open(e,t),toggle:e=>this.toggle(e)},this.toggle(!0)}toggle(e){if(e!==this.running)if(this.running=e,e){if(!W.hostSupported()){this.warned||(this.warned=!0,u.showNotification("The Kute Market needs a newer Kute. Update Kute to use it.",!1,8)),this.running=!1;return}if(he.offline()){this.running=!1;return}this.placeButton();let t=document.querySelector("#playerHeaderEl");t&&this.headerObserver.observe(t,{childList:!0,subtree:!0}),window.addEventListener(Ys,this.onUnread),fr.start(),gr.start(),Ct.start(),vr.start()}else this.headerObserver.disconnect(),window.removeEventListener(Ys,this.onUnread),this.headerItem.remove(),this.headerSeparator.remove(),fr.stop(),gr.stop(),Ct.stop(),vr.stop(),this.terminal?.close()}placeButton(){let e=document.querySelector("#playerHeaderEl .headerBarRight");if(!e||e.contains(this.headerItem))return;let t=[...e.querySelector(".nav-item")?.classList??[]].find(o=>o.startsWith("svelte-"))??"";this.headerItem.className=`nav-item ${t}`,this.headerItem.innerHTML=` Kute Market `,this.headerItem.onclick=()=>this.open(Ct.unread.size?"watchlist":void 0),this.headerSeparator.className="verticalSeparator",this.headerSeparator.style.cssText="height: 35px;",e.prepend(this.headerItem,this.headerSeparator),this.updateBadge()}updateBadge(){let e=this.headerItem.querySelector(".nav-badge");if(!e)return;let t=Ct.unread.size;e.textContent=String(Math.min(99,t)),e.style.display=t?"inline-block":"none"}async open(e,t){if(this.running){if(!this.terminal){let o=await Promise.resolve().then(()=>(Xc(),Yc)).catch(()=>null);if(!o)return;this.terminal=o.default}await this.terminal.open(e,t)}}},Zy=new Jc,Qy=Zy});var e1={};var jf=w(()=>{"use strict";Mr()});var Gf,Uf=w(()=>{Gf=`@keyframes kuteMmSlideDown{0%{transform:translate(-50%,-500%)}to{transform:translate(-50%)}}#kuteMatchmaker{position:absolute;top:8em;left:50%;z-index:2147482000;box-sizing:border-box;width:24em;padding:18px 22px;border-radius:14px;overflow:hidden;pointer-events:all;background:#12121699;backdrop-filter:blur(14px) saturate(120%);box-shadow:0 8px 48px #000c;display:flex;flex-direction:column;color:#fff;animation:kuteMmSlideDown .4s cubic-bezier(.16,1,.3,1) forwards}#kuteMmStatus{font-size:1.4em;color:#35e0e8;margin-bottom:.6em;text-align:center}#kuteMmStatus.mm-fail{color:#eb5656}#kuteMmFeed{display:flex;flex-direction:column;gap:.15em;overflow:hidden;min-height:5.6em;margin-bottom:.6em}#kuteMmFeed.mm-result{justify-content:center}@keyframes kuteMmFeedIn{0%{opacity:0;transform:translate(1em)}to{opacity:1;transform:translate(0)}}@keyframes kuteMmGrow{0%{opacity:0;transform:scale(.55)}65%{opacity:1;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}.mm-entry{display:flex;gap:.8em;padding:.2em .5em;font-size:.95em;font-family:GameFont,monospace;border-radius:.2em;animation:kuteMmFeedIn .12s ease forwards}.mm-entry:last-child:before{content:"\\25b8";color:#ffc147}.mm-entry.mm-pass{background:#4caf501a}.mm-entry.mm-pass .mm-region{color:#35e0e8}.mm-entry.mm-pass .mm-map{color:#ffffffe6}.mm-entry.mm-pass .mm-players{color:#4caf50}.mm-entry.mm-skip{background:#ffffff05}.mm-entry.mm-skip .mm-region{color:#ffffff4d}.mm-entry.mm-skip .mm-map{color:#ffffff80}.mm-entry.mm-skip .mm-players{color:#eb5656}.mm-entry.mm-skip .mm-icon{opacity:.45}.mm-region{min-width:2.5em;font-weight:700}.mm-map{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mm-players{min-width:3em;text-align:right;font-weight:600}.mm-icon{width:1.7em;height:1.7em;flex:none;object-fit:cover;border-radius:.25em;align-self:center;background:#ffffff0f}.mm-entry.mm-landed{box-shadow:inset 0 0 0 2px #35e0e8}.mm-entry.mm-found,.mm-entry.mm-none{justify-content:center;transform-origin:center;animation:kuteMmGrow .34s cubic-bezier(.2,.85,.3,1.25) forwards}.mm-entry.mm-found{font-size:1.25em;gap:.7em}.mm-entry.mm-found .mm-icon{width:2.4em;height:2.4em;border-radius:.3em}.mm-entry.mm-none{font-size:1.2em;color:#ffffff8c;background:#ffffff08}.mm-entry.mm-found:before,.mm-entry.mm-none:before{content:none}#kuteMmCounter{font-size:.85em;color:#ffc147;text-align:center;margin-bottom:.5em}#kuteMmCancel{text-align:center;border:.2em solid #eb5656;border-radius:.3em;font-size:1.1em;background:#0000004d;padding:.2em 1.2em;cursor:pointer;margin:0 auto;width:fit-content;transition:all .08s}#kuteMmCancel:hover{border-color:#fff;transform:scale(.95)}#kuteMmCancel:active{transform:scale(.85)} +`});var Wf=we((FE,o1)=>{o1.exports='

              Matchmaker Filters

              F6 joins the best lobby for these. Nothing picked in a group means all of it

              Regions

              Modes \u2605 on a mode to prefer it

              Preferred first, then any other mode. Modes rank above maps
              Drag to reorder, click to move to the top

              Maps \u2605 on a map to prefer it

              Preferred first, then any other map
              Drag to reorder, click to move to the top

              Lobby

              Reset
              Done
              '});var od={};A(od,{default:()=>b1});function eg(s){let e=i1.get(Xt(s));return e===void 0?null:Hs(e)}function g1(s,e){let t=eg(s);if(!t)return null;let o=document.createElement("img");return o.className=e,o.src=t,o.alt="",o.loading="lazy",o.onerror=()=>o.remove(),o}function an(s,e){let t=document.createElement("span");return t.className=s,t.textContent=e,t}function ed(s,e){let t=document.createElement("div");t.className=`mm-entry ${e}`;let o=g1(s.map,"mm-icon");return o&&t.append(o),t.append(an("mm-region",s.region),an("mm-map",s.map),an("mm-players",`${s.players}/${s.limit}`)),t}async function Xf(){let e=await(await fetch(d1,{signal:AbortSignal.timeout(Qf)})).json();return Array.isArray(e?.games)?e.games:[]}function Jf(s,e){let t=e.maps.length>0?new Set(e.maps.map(Xt)):a1;return s.map(o=>{let n=String(o[0]),r=o[4]??{},i=r.c===0||r.oc===1,a=String(r.i??""),l=Xt(a),c={id:n,region:n.split(":")[0],server:String(o[1]),players:Number(o[2]),limit:Number(o[3]),map:a,mode:s1[r.g]??"Unknown",timeLeft:Number(o[5]),passes:!1};return c.passes=i&&!c1.test(n)&&(e.regions.length===0||e.regions.includes(c.region))&&(e.modes.length===0||e.modes.includes(c.mode))&&t.has(l)&&c.players>=e.minPlayers&&c.players<=e.maxPlayers&&c.players0?c.timeLeft>=e.minTime:l1.has(l))&&!location.href.includes(n),c})}var s1,n1,Vf,Zf,r1,Xt,i1,a1,l1,c1,d1,Qf,u1,Yf,Qc,p1,h1,m1,f1,nn,rn,td,b1,sd=w(()=>{"use strict";Uf();F();Ae();No();sr();s1=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Hide & Seek","Infected","Race","Last Man Standing","Simon Says","Gun Game","Prop Hunt","Boss Hunt","Classic FFA","Deposit","Stalker","King of the Hill","One in the Chamber","Trade","Kill Confirmed","Defuse","Sharp Shooter","Traitor","Raid","Blitz","Domination","Squad Deathmatch","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],n1=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Gun Game","Classic FFA","Deposit","Kill Confirmed","Sharp Shooter","Domination","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],Vf={SV:"Silicon Valley",TOK:"Tokyo",FRA:"Frankfurt",MBI:"Mumbai",SYD:"Sydney",SIN:"Singapore",DAL:"Dallas",BHN:"Bahrain",BRZ:"Brazil",NY:"New York"},Zf=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Tropicano","Habitat","Atomic","Old_Burg","Throwback","Clockwork","Bazaar","Erupt","HQ","Lush","Vivo","Slide Moonlight","Eterno Simulator","Eterno Jump","Frontier","Piazza","Barnyard"],r1={SkyTemple:"Sky Temple",Krunk_Plaza:"Krunk Plaza",Old_Burg:"Old Burg"},Xt=s=>s.toLowerCase().replace(/[^a-z0-9]/g,""),i1=new Map(or.map((s,e)=>[Xt(s),e])),a1=new Set(Zf.map(Xt)),l1=new Set(["Eterno Jump","Slide Moonlight"].map(Xt)),c1=/[\s&#?/%\\]/,d1="https://matchmaker.krunker.io/game-list?hostname=krunker.io",Qf=1e4,u1=4,Yf=1100,Qc=80,p1=20,h1=180,m1=1200,f1=1100,nn={regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[],minPlayers:1,maxPlayers:6,minTime:120,sortByPlayers:!1,serverBrowser:!0,animation:!0,searchAfterMatch:!1},rn=s=>new Promise(e=>setTimeout(e,s));td=class{constructor(){this.activeRun=0,this.runCounter=0,this.candidates=[],this.popup=document.createElement("div"),this.popup.id="kuteMatchmaker",this.status=document.createElement("div"),this.status.id="kuteMmStatus",this.feed=document.createElement("div"),this.feed.id="kuteMmFeed",this.counter=document.createElement("div"),this.counter.id="kuteMmCounter";let e=document.createElement("div");e.id="kuteMmCancel",e.textContent="Cancel",e.onmouseenter=()=>window.SOUND?.play("tick_0",.1),e.onclick=()=>this.abort(),this.popup.append(this.status,this.feed,this.counter,e),this.cancelKey=t=>{t.key!=="Escape"||document.pointerLockElement||(t.preventDefault(),t.stopPropagation(),this.abort())},u.matchmaker={showFilters:()=>this.showFilters()},u.settings.toggleMatchmaker=()=>{},u.hostFeatures?.includes("matchmaker")&&(window.addEventListener("keydown",t=>{!ds(t,"matchmaker")||t.repeat||!u.settings.data.matchmaker||document.activeElement?.tagName!=="INPUT"&&this.start().catch(o=>console.error("[kute] matchmaker:",o))},!0),this.watchEndScreen())}watchEndScreen(){let e=document.getElementById("endUI");if(!e)return;let t=!1,o=e.style.display!=="none";document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&(t=!0)}),new MutationObserver(()=>{let n=e.style.display!=="none";n!==o&&(o=n,!(!n||!t)&&(t=!1,!(!u.settings.data.matchmaker||!this.filter.searchAfterMatch||window.getGameActivity?.()?.custom)&&this.start().catch(r=>console.error("[kute] matchmaker:",r))))}).observe(e,{attributes:!0,attributeFilter:["style"]})}get filter(){return{...nn,...u.settings.data.matchmakerFilter}}saveFilter(e){u.settings.data.matchmakerFilter=e,window.chrome.webview.postMessage(`set-config-json matchmakerFilter ${JSON.stringify(e)}`)}cancelled(e){return e!==this.activeRun}abort(){this.activeRun=0,window.playSelect?.(),this.dismiss()}dismiss(){document.removeEventListener("keydown",this.cancelKey,!0),this.popup.remove()}showPopup(){if(!document.querySelector("#kuteMatchmakerCSS")){let e=document.createElement("style");e.id="kuteMatchmakerCSS",e.textContent=Gf,document.head.append(e)}this.status.textContent="Connecting...",this.status.classList.remove("mm-fail"),this.feed.replaceChildren(),this.feed.classList.remove("mm-result"),this.counter.textContent="",document.addEventListener("keydown",this.cancelKey,!0),(document.querySelector("#uiBase")??document.body).append(this.popup)}pushEntry(e){for(this.feed.append(e);this.feed.children.length>u1;)this.feed.firstElementChild?.remove()}async animateScan(e,t,o){let n=t.length;if(n===0)return;this.status.textContent="Scanning lobbies...";let r=Math.floor(Yf/Qc),i=n>r?n/r:1,a=n>r?Qc:Math.max(p1,Math.min(Qc,Yf/n));for(let l=0;l[l.id,l])),a=[t,...this.candidates.filter(l=>l!==t)].find(l=>r.get(l.id)?.passes);a?this.join(a.id):this.openServerBrowser(o)}async start(){if(this.activeRun!==0)return;let e=++this.runCounter;this.activeRun=e;try{await this.search(e)}finally{this.activeRun===e&&(this.activeRun=0)}}async search(e){let{filter:t}=this;t.animation&&this.showPopup();let o,n;try{let[p,m]=await Promise.all([Xf(),Te("ping-regions","regionPings",Qf)]);o=Jf(p,t),n=m??{}}catch(p){if(console.error("[kute] matchmaker: no lobby list",p),this.cancelled(e)||!t.animation)return;this.status.textContent="Failed to fetch lobbies",this.status.classList.add("mm-fail"),await rn(2e3),this.cancelled(e)||this.dismiss();return}if(this.cancelled(e))return;let r=p=>n[p.server]??999,i=new Map(t.preferredMaps.map((p,m)=>[Xt(p),m])),a=new Map(t.preferredModes.map((p,m)=>[p,m])),l=p=>(a.get(p.mode)??a.size)*(i.size+1)+(i.get(Xt(p.map))??i.size),c=p=>p.limit-p.players<=1?1:0,d=o.filter(p=>p.passes);d.sort((p,m)=>{let f=l(p)-l(m),g=c(p)-c(m),b=r(p)-r(m),v=m.players-p.players;return t.sortByPlayers?f||g||v||b:f||g||b||v}),this.candidates=d;let h;if(d.length>0){let p=d[0],m=d.filter(f=>l(f)===l(p)&&c(f)===c(p)&&Math.abs(r(f)-r(p))<=20&&p.players-f.players<=2);h=m[Math.floor(Math.random()*m.length)]}if(t.animation&&await this.animateScan(e,o,h),!this.cancelled(e)){if(!h){if(t.animation){this.status.textContent="No Lobby Found",this.status.classList.add("mm-fail"),this.feed.classList.add("mm-result");let p=document.createElement("div");if(p.className="mm-entry mm-none",p.textContent="No matching lobbies",this.feed.replaceChildren(p),this.counter.textContent=t.serverBrowser?"Opening server browser...":"",await rn(f1),this.cancelled(e))return}this.openServerBrowser(t);return}if(t.animation){this.status.textContent="Lobby Found!",this.feed.classList.add("mm-result"),this.feed.replaceChildren(ed(h,"mm-pass mm-found"));let p=n[h.server]===void 0?"?":String(n[h.server]);if(this.counter.textContent=`${h.mode} \xB7 ${Vf[h.region]??h.region} \xB7 ${p}ms`,await rn(m1),this.cancelled(e))return}await this.verifyAndJoin(e,h,t)}}async showFilters(){let e=await Promise.resolve().then(()=>ue(Wf(),1)),{filter:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=(g,b,v)=>{let k=i(g);k.replaceChildren();for(let E of b){let L=document.createElement("div");if(L.className=`mmChip${v.includes(E.value)?" on":""}`,E.icon){let y=document.createElement("img");y.src=E.icon,y.alt="",y.loading="lazy",y.onerror=()=>y.remove(),L.append(y)}L.append(E.label),L.onclick=()=>{let y=v.indexOf(E.value);y===-1?v.push(E.value):v.splice(y,1),L.classList.toggle("on",y===-1)},k.append(L)}},l=(g,b,v)=>{if(!g)return;let k=document.createElement("img");k.src=g,k.alt="",v?k.loading="lazy":k.draggable=!1,k.onerror=()=>k.remove(),b.append(k)},c=g=>{let{preferred:b}=g,v=i(g.boxId);v.hidden=b.length===0;let k=v.querySelector(".mmGrid");k.replaceChildren();let E=()=>k.querySelectorAll(".mmNum").forEach((L,y)=>L.textContent=String(y+1));for(let L of b){let y=document.createElement("div");y.className="mmChip on mmRank",y.append(an("mmNum","")),l(g.icon(L),y,!1),y.append(g.label(L));let C=null;y.onpointerdown=I=>{y.setPointerCapture(I.pointerId),C={x:I.clientX,y:I.clientY,moved:!1}},y.onpointermove=I=>{if(!C||!C.moved&&Math.hypot(I.clientX-C.x,I.clientY-C.y)<5)return;C.moved=!0,y.classList.add("dragging");let _=[...k.children],H=_.findIndex(J=>{let B=J.getBoundingClientRect();return I.clientX>=B.left&&I.clientX<=B.right&&I.clientY>=B.top&&I.clientY<=B.bottom}),G=_.indexOf(y);H===-1||H===G||(b.splice(H,0,...b.splice(G,1)),y.remove(),k.insertBefore(y,k.children[H]??null),E())},y.onpointerup=()=>{y.classList.remove("dragging"),C&&!C.moved&&(b.unshift(...b.splice(b.indexOf(L),1)),window.SOUND?.play("tick_0",.1),c(g)),C=null},y.onpointercancel=y.onpointerup,k.append(y)}E()},d=g=>{let{picked:b,preferred:v}=g,k=i(g.gridId);k.replaceChildren();for(let E of g.values){let L=v.includes(E),y=document.createElement("div");y.className=`mmChip${b.includes(E)?" on":""}${L?" preferred":""}`,l(g.icon(E),y,!0),y.append(g.label(E));let C=an("mmStar","\u2605");C.title=L?"Preferred, click to remove":`Prefer this ${g.noun}`,C.onclick=I=>{I.stopPropagation(),L?v.splice(v.indexOf(E),1):(v.push(E),b.length>0&&!b.includes(E)&&b.push(E)),d(g)},y.append(C),y.onclick=()=>{let I=b.indexOf(E);I!==-1?(b.splice(I,1),L&&v.splice(v.indexOf(E),1)):b.length===0?b.push(...new Set([...v,E])):b.push(E),d(g)},k.append(y)}c(g)},h=()=>{a("mmRegions",Object.entries(Vf).map(([g,b])=>({value:g,label:b})),t.regions),d({gridId:"mmModes",boxId:"mmModeRanks",noun:"mode",values:n1,picked:t.modes,preferred:t.preferredModes,label:g=>g,icon:()=>null}),d({gridId:"mmMaps",boxId:"mmMapRanks",noun:"map",values:Zf,picked:t.maps,preferred:t.preferredMaps,label:g=>r1[g]??g,icon:eg}),i("mmMinPlayers").value=String(t.minPlayers),i("mmMaxPlayers").value=String(t.maxPlayers),i("mmMinTime").value=String(t.minTime),i("mmSortByPlayers").checked=t.sortByPlayers,i("mmServerBrowser").checked=t.serverBrowser,i("mmAnimation").checked=t.animation,i("mmSearchAfterMatch").checked=t.searchAfterMatch};t.regions=[...t.regions],t.modes=[...t.modes],t.maps=[...t.maps],t.preferredMaps=[...t.preferredMaps],t.preferredModes=[...t.preferredModes],h();let p=(g,b,v,k)=>{let E=Number.parseInt(i(g).value,10);return Number.isNaN(E)?k:Math.min(v,Math.max(b,E))},m=new AbortController,f=()=>{m.abort(),o.remove(),this.saveFilter({...t,minPlayers:p("mmMinPlayers",0,7,nn.minPlayers),maxPlayers:p("mmMaxPlayers",0,7,nn.maxPlayers),minTime:p("mmMinTime",0,480,nn.minTime),sortByPlayers:i("mmSortByPlayers").checked,serverBrowser:i("mmServerBrowser").checked,animation:i("mmAnimation").checked,searchAfterMatch:i("mmSearchAfterMatch").checked})};i("mmDone").onclick=f,i("mmReset").onclick=()=>{Object.assign(t,nn,{regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[]}),h()},o.addEventListener("mousedown",g=>{g.target===o&&f()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),f())},{signal:m.signal,capture:!0}),document.body.append(o)}},b1=new td});var nd=we((GE,v1)=>{v1.exports=`#uiBase.onMenu #spectateUI{display:block!important}#uiBase.onCompMenu.onMenu #specTimer,#uiBase.onMenu #specGMessage,#uiBase.onMenu #spec1,#uiBase.onMenu #specGameInfo,#uiBase.onMenu #spec0,#uiBase.onMenu #specControlHolder,#uiBase.onMenu #specNames{display:none!important}#uiBase.onMenu #spectateUI>#spectateHUD{box-sizing:border-box;display:flex!important;justify-content:center;height:.5rem;white-space:nowrap;width:max-content;position:fixed;top:calc(50% + 140px)}#uiBase.onMenu #spectateHUD #specGMessage{top:0}#uiBase.onMenu #spectateUI>#spectateHUD{z-index:1;transform:unset}#uiBase.onMenu .spectateInfo{position:fixed;top:calc(40% - 105px);left:50%;transform:translate(-50%,-50%)}#uiBase.onMenu #spectateUI div .spectateInfo #specTimer{background-color:#0000;padding:0 25px;font-size:42px;border-radius:.5em}#uiBase.onMenu #specKPDContr{display:none}#uiBase.onMenu #spectateUI div#specStats{position:absolute;top:calc(50% + 13em);left:50%;transform:translate(-50%);z-index:1}#uiBase.onMenu #spectateUI div#specStats:before{content:"Spectating";position:absolute;bottom:100%;left:50%;transform:translate(-50%);font-size:1.2em;padding-bottom:.5em} +`});var id={};A(id,{default:()=>w1});var og,tg,rd,w1,ad=w(()=>{"use strict";og=ue(nd(),1);F();tg="kute_menuTimerCSS",rd=class{constructor(){u.settings.toggleMenuTimer=e=>this.toggle(e),this.toggle(u.settings.data.menuTimer!==!1)}toggle(e){let t=document.getElementById(tg);if(!e){t?.remove();return}if(t)return;let o=document.createElement("style");o.id=tg,o.textContent=og.default,document.head.append(o)}},w1=new rd});var dd={};A(dd,{default:()=>M1});function ng(s){let e=/loadUserMod\(\s*(["`])(.*?)\1\s*,\s*(["`])(.*?)\3/.exec(s);return e?{name:e[2],url:e[4]}:null}function rg(s){try{let e=new URL(s);return e.protocol!=="https:"?null:e.hostname==="krunker.io"||e.hostname.endsWith(".krunker.io")?e.href:e.hostname==="dropbox.com"||e.hostname==="www.dropbox.com"?(e.hostname="dl.dropboxusercontent.com",e.search="",e.href):null}catch{return null}}function E1(s){return`${s.replace(/[\u0000-\u001f<>:"/\\|?*]/g,"").replace(/\s+/g," ").trim().replace(/[ .]+$/,"").slice(0,80)||"mod"}.zip`}async function $1(s){let e=await fetch(s);if(e.status===403||e.status===404)throw new Error("This mod's file is gone, its creator removed it");if(!e.ok)throw new Error(`The mod server answered ${e.status}`);if(Number(e.headers.get("content-length")??0)>sg)throw new Error("That mod is too large");let t=await e.blob();if(t.size>sg)throw new Error("That mod is too large");let o=new Uint8Array(await t.slice(0,2).arrayBuffer());if(o[0]!==80||o[1]!==75)throw new Error("That mod is not a zip file");return t}function C1(s,e){let t=document.createElement("a");t.href=URL.createObjectURL(s),t.download=e,t.click(),setTimeout(()=>URL.revokeObjectURL(t.href),6e4)}function ig(s,e,t,o){let n=!1;s.addEventListener("click",r=>{if(r.stopPropagation(),n)return;n=!0,e.style.color=ld.busy,e.textContent="hourglass_top";let i=E1(t);$1(o).then(a=>{C1(a,i),e.style.color=ld.done,e.textContent="download_done",u.showNotification(`Saved ${i} to your Downloads folder`,!1,4)}).catch(a=>{e.style.color=ld.failed,e.textContent="error_outline",u.showNotification(a instanceof TypeError?"Could not download the mod":a.message,!1,4)}).finally(()=>{n=!1})})}function ag(s){let e=document.createElement("span");return e.className="material-icons",e.style.cssText=s,e.textContent="download",e}var ln,sg,k1,y1,x1,S1,ld,cd,M1,ud=w(()=>{"use strict";F();ln="data-kute-mod",sg=300*1024*1024,k1='[onclick^="downloadPack"]',y1="font-size:70px;color:#fff;",x1="position:absolute;right:30px;bottom:92px;box-sizing:content-box;width:240px;height:37px;padding:10px 6px 6px;border:3px solid #35e0e8;border-radius:6px;background:rgba(0,0,0,0.6);color:#fff;font-size:21px;text-align:center;cursor:pointer;",S1="font-size:32px;color:#fff;vertical-align:top;margin-top:-3px;margin-left:5px;",ld={busy:"#777",done:"#35e0e8",failed:"#ff7a7a"};cd=class{constructor(){this.pending=null,this.observer=new MutationObserver(()=>{this.pending===null&&(this.pending=setTimeout(()=>this.scan(),150))});let e=document.getElementById("menuWindow");e&&(this.observer.observe(e,{childList:!0,subtree:!0}),this.scan())}scan(){this.pending=null;let e=document.getElementById("menuWindow");if(!e)return;let t=[];for(let r of e.querySelectorAll('.mapActionB[onclick^="loadUserMod"]')){let i=r.parentElement;if(!i||i.querySelector(`[${ln}], ${k1}`))continue;let a=ng(r.getAttribute("onclick")??""),l=a&&rg(a.url);a&&l&&t.push([i,this.listButton(a.name,l)])}let o=document.getElementById("bigMFeatPBtn"),n=o?.parentElement;if(o&&n&&!n.querySelector(`[${ln}]`)){let r=ng(o.getAttribute("onclick")??""),i=r&&rg(r.url);r&&i&&t.push([n,[this.featuredButton(r.name,i)]])}if(t.length!==0){this.observer.disconnect();for(let[r,i]of t)r.append(...i);this.observer.observe(e,{childList:!0,subtree:!0})}}listButton(e,t){let o=document.createElement("div");o.className="mapActionSep",o.setAttribute(ln,"");let n=document.createElement("div");n.className="mapActionB",n.title="Download",n.setAttribute(ln,"");let r=ag(y1);return n.append(r),ig(n,r,e,t),[o,n]}featuredButton(e,t){let o=document.createElement("div");o.setAttribute(ln,""),o.style.cssText=x1;let n=ag(S1);return o.append("Download ",n),ig(o,n,e,t),o}},M1=new cd});var md={};A(md,{default:()=>_1});function Tr(s,e,t){return Math.min(t,Math.max(e,s))}function pd(s,e){let t=parseFloat(localStorage.getItem("kro_setngss_"+s)??"");return Number.isFinite(t)&&t>0?t:e}function ug(s,e){let t=s.createProgram();for(let[o,n]of[[s.VERTEX_SHADER,P1],[s.FRAGMENT_SHADER,e]]){let r=s.createShader(o);if(!r)return null;s.shaderSource(r,n),s.compileShader(r),s.attachShader(t,r)}return s.linkProgram(t),s.getProgramParameter(t,s.LINK_STATUS)?t:null}var T1,lg,A1,L1,cg,R1,dg,P1,I1,N1,hd,_1,fd=w(()=>{"use strict";F();cs();T1="kuteMotionBlur",lg=1e3/60,A1=.4,L1=.002,cg=.2,R1=2,dg=.0024,P1=`#version 300 es void main(){ vec2 p = vec2((gl_VertexID << 1) & 2, gl_VertexID & 2); gl_Position = vec4(p * 2.0 - 1.0, 0.0, 1.0); -}`,M1=s=>`#version 300 es +}`,I1=s=>`#version 300 es precision highp float; uniform sampler2D source; out vec4 color; @@ -1247,15 +1249,15 @@ void main(){ ivec2 p = ivec2(gl_FragCoord.xy); vec3 c = texelFetch(source, ivec2(p.x, size.y - 1 - p.y), 0).rgb; color = vec4(pow(c, vec3(${s})), 1.0); -}`,T1=s=>`#version 300 es +}`,N1=s=>`#version 300 es precision highp float; uniform sampler2D history; out vec4 color; void main(){ color = vec4(pow(texelFetch(history, ivec2(gl_FragCoord.xy), 0).rgb, vec3(1.0 / ${s})), 1.0); -}`;cd=class{constructor(){this.enabled=!1,this.running=!1,this.moveX=0,this.moveY=0,this.scaleX=0,this.scaleY=0,this.weight=0,this.lastFrame=0,this.hasHistory=!1,this.game=null,this.overlay=null,this.gl=null,this.accumulate=null,this.present=null,this.source=null,this.history=null,this.historyBuffer=null,this.historyFormat=0,this.unsupported=!1,this.onMouseMove=e=>{document.pointerLockElement!==null&&(this.moveX+=e.movementX,this.moveY+=e.movementY,this.running||(this.running=!0,this.lastFrame=0,this.readScale(),Mn(this.onFrameEnd)))},this.onPointerLockChange=()=>this.stop(),this.onFrameEnd=e=>this.frame(e),this.onContextLost=()=>this.release(),u.settings.toggleMotionBlur=e=>this.toggle(e),this.toggle(!!u.settings.data.motionBlur)}toggle(e){if(e!==this.enabled){if(this.enabled=e,e){window.addEventListener("mousemove",this.onMouseMove,!0),document.addEventListener("pointerlockchange",this.onPointerLockChange);return}window.removeEventListener("mousemove",this.onMouseMove,!0),document.removeEventListener("pointerlockchange",this.onPointerLockChange),this.stop(),this.unsupported=!1,this.gl?.getExtension("WEBGL_lose_context")?.loseContext(),this.release(),this.game=null}}stop(){this.running&&Mn(null),this.running=!1,this.moveX=0,this.moveY=0,this.weight=0,this.hasHistory=!1,this.overlay&&(this.overlay.style.display="none")}release(){this.overlay?.removeEventListener("webglcontextlost",this.onContextLost),this.overlay?.remove(),this.overlay=null,this.gl=null,this.accumulate=null,this.present=null,this.source=null,this.history=null,this.historyBuffer=null,this.hasHistory=!1}readScale(){let e=Cr(ld("fov",100),10,170)*Math.PI/180,t=.5/Math.tan(e/2);this.scaleX=rg*ld("sensitivityX",1)*t,this.scaleY=rg*ld("sensitivityY",1)*t}createContext(){let e=document.createElement("canvas");e.id=x1,e.style.cssText="position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;contain:strict;display:none";let t=e.getContext("webgl2",{alpha:!1,antialias:!1,depth:!1,stencil:!1,preserveDrawingBuffer:!1});if(!t)return!1;let o=!!(t.getExtension("EXT_color_buffer_float")||t.getExtension("EXT_color_buffer_half_float")),n=o?"2.2":"1.0",r=ig(t,M1(n)),i=ig(t,T1(n));if(!r||!i)return!1;t.useProgram(r),t.uniform1i(t.getUniformLocation(r,"source"),0),t.useProgram(i),t.uniform1i(t.getUniformLocation(i,"history"),1);let a=t.createTexture();t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,a),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let l=t.createTexture();t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,l),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let c=t.createFramebuffer();return t.blendFunc(t.CONSTANT_ALPHA,t.ONE_MINUS_CONSTANT_ALPHA),e.addEventListener("webglcontextlost",this.onContextLost),this.overlay=e,this.gl=t,this.accumulate=r,this.present=i,this.source=a,this.history=l,this.historyBuffer=c,this.historyFormat=o?t.RGBA16F:t.RGBA8,!0}attach(){this.game?.isConnected||(this.game=document.querySelector("body > canvas:not([id])"));let{game:e}=this;if(!e)return!1;if(!this.overlay&&(this.unsupported||!this.createContext()))return this.unsupported=!0,!1;let{overlay:t,gl:o}=this;return!t||!o?!1:(t.previousElementSibling!==e&&e.after(t),(t.width!==e.width||t.height!==e.height)&&(t.width=e.width,t.height=e.height,o.viewport(0,0,e.width,e.height),o.activeTexture(o.TEXTURE1),o.texImage2D(o.TEXTURE_2D,0,this.historyFormat,e.width,e.height,0,o.RGBA,this.historyFormat===o.RGBA8?o.UNSIGNED_BYTE:o.HALF_FLOAT,null),o.bindFramebuffer(o.FRAMEBUFFER,this.historyBuffer),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,this.history,0),this.hasHistory=!1),!0)}frame(e){let t=this.lastFrame?Cr(e-this.lastFrame,1,100):sg;this.lastFrame=e;let o=Math.hypot(this.moveX*this.scaleX,this.moveY*this.scaleY)*(1e3/t);this.moveX=0,this.moveY=0;let n=Cr((o-ng)/($1-ng),0,1),i=Cr(Number(u.settings.data.motionBlurStrength)||0,0,100)/100*S1*n*n*(3-2*n);if(this.weight+=(i-this.weight)*(1-Math.exp(-t/(i>this.weight?6:12))),this.weight{lg=`#kuteNukeCounter{position:absolute;left:94%;top:50%;transform:translate(-50%,-50%);z-index:10;display:flex;align-items:center;gap:.3em;font-family:GameFont,monospace;font-size:26px;color:#fff;white-space:nowrap;pointer-events:none;text-shadow:1px 1px 3px rgba(0,0,0,.9)}#uiBase.onMenu #kuteNukeCounter{display:none}#kuteNukeCounter.nukeBg{padding:.2em .5em;border-radius:.25em;background:#00000059}.nukeIcon{color:#ffc147}.nukeGoal{color:#fff9}#kuteNukeCounter.nukeGoalMet .nukeCount{color:#9eeb56}@keyframes kuteNukeGain{0%{opacity:0;transform:scale(.6)}12%{opacity:1;transform:scale(1)}80%{opacity:1}to{opacity:0}}.nukeGain{color:#9eeb56;animation:kuteNukeGain 8s ease forwards} -`});var cg=we((GE,R1)=>{R1.exports='

              Nuke Counter

              Your nuke total, in game. It updates when a match ends
              Where it sits and how big it is belongs to the HUD editor
              Place it
              Done
              '});var md={};A(md,{default:()=>H1});function z1(s,e,t){return Math.min(t,Math.max(e,Number(s)||0))}function pd(s){return s.toLocaleString("en-US")}var P1,I1,N1,_1,dg,B1,hd,H1,fd=w(()=>{"use strict";ag();D();P1={goal:0,background:!0},I1="https://gapi.svc.krunker.io/players/",N1=2e3,_1=3e4,dg=[5e3,2e4],B1=8e3;hd=class{constructor(){this.overlay=null,this.nukes=null,this.nukesFor="",this.noStat=!1,this.fetching=!1,this.lastTry=0,this.endWasUp=!1,this.tick=null,this.commitTimers=[],u.nukeCounter={showOptions:()=>this.showOptions()},u.settings.toggleNukeCounter=e=>this.toggle(e),this.toggle(!!u.settings.data.nukeCounter)}accountName(){try{return window.localStorage.getItem("krunker_username")??""}catch{return""}}get config(){return{...P1,...u.settings.data.nukeCounterConfig}}saveConfig(e){u.settings.data.nukeCounterConfig=e,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(e)}`)}toggle(e){if(!e){this.destroy();return}if(!document.querySelector("#kuteNukeCounterCSS")){let t=document.createElement("style");t.id="kuteNukeCounterCSS",t.textContent=lg,document.head.append(t)}this.inject(),this.nukes===null&&this.refresh(),this.tick??=setInterval(()=>this.onTick(),N1)}destroy(){this.tick!==null&&(clearInterval(this.tick),this.tick=null);for(let e of this.commitTimers)clearTimeout(e);this.commitTimers=[],this.overlay?.remove(),this.overlay=null,document.querySelector("#kuteNukeCounterCSS")?.remove(),this.endWasUp=!1}inject(){if(!this.accountName()||this.overlay?.isConnected)return;this.overlay?.remove();let e=document.createElement("div");e.id="kuteNukeCounter",e.innerHTML='\u2622\u2014',(document.querySelector("#uiBase")??document.body).append(e),this.overlay=e,this.applyConfig(),this.render()}applyConfig(){this.overlay?.classList.toggle("nukeBg",this.config.background)}render(){let{overlay:e}=this;if(!e)return;let{goal:t}=this.config,o=e.querySelector(".nukeCount"),n=e.querySelector(".nukeGoal");o&&(o.textContent=this.nukes===null?"\u2014":pd(this.nukes)),n&&(n.style.display=t>0?"":"none",n.textContent=`/ ${pd(t)}`),e.classList.toggle("nukeGoalMet",t>0&&this.nukes!==null&&this.nukes>=t)}showGain(e){let{overlay:t}=this;if(!t||e<=0)return;t.querySelector(".nukeGain")?.remove();let o=document.createElement("span");o.className="nukeGain",o.textContent=`+${pd(e)}`,t.append(o),setTimeout(()=>o.remove(),B1)}refresh(){let e=this.accountName();!e||this.fetching||(this.fetching=!0,this.lastTry=Date.now(),window.fetch(I1+encodeURIComponent(e),{credentials:"omit",signal:AbortSignal.timeout(1e4)}).then(t=>t.ok?t.json():null).then(t=>{let o=t?.data?.player_stats?.n;if(typeof o=="number"){let n=this.nukes===null||this.nukesFor!==e?0:o-this.nukes;this.nukes=o,this.noStat=!1,this.nukesFor=e,this.render(),this.showGain(n)}else t&&(this.noStat=!0,this.nukesFor=e)}).catch(()=>{}).finally(()=>{this.fetching=!1}))}onTick(){this.inject(),this.accountName()!==this.nukesFor&&(this.nukes!==null||this.noStat)&&(this.nukes=null,this.noStat=!1,this.lastTry=0,this.render()),this.nukes===null&&!this.noStat&&Date.now()-this.lastTry>_1&&this.refresh();let t=document.querySelector("#endUI"),o=!!t&&t.style.display!=="none";o&&!this.endWasUp&&this.commitTimers.length===0&&(this.commitTimers=dg.map((n,r)=>setTimeout(()=>{r===dg.length-1&&(this.commitTimers=[]),this.refresh()},n))),this.endWasUp=o}async showOptions(){let e=await Promise.resolve().then(()=>ue(cg(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=d=>r.querySelector(`#${d}`),a=()=>{u.settings.data.nukeCounterConfig=t,this.applyConfig(),this.render()};i("nkGoalInput").value=String(t.goal),i("nkBackground").checked=t.background,i("nkGoalInput").oninput=d=>{let h=Number.parseInt(d.target.value,10);t.goal=Number.isNaN(h)?0:z1(h,0,1e6),a()},i("nkBackground").onchange=d=>{t.background=d.target.checked,a()};let l=new AbortController,c=()=>{l.abort(),o.remove(),this.saveConfig(t)};i("nkDone").onclick=c,i("nkPlace").onclick=()=>{c(),u.hudEditor?.edit()},o.addEventListener("mousedown",d=>{d.target===o&&c()}),document.addEventListener("keydown",d=>{d.key==="Escape"&&(d.stopPropagation(),c())},{signal:l.signal,capture:!0}),document.body.append(o)}},H1=new hd});var ug=we((YE,O1)=>{O1.exports=`#kute-rank-list-btn{position:absolute;top:15px;right:30px;background-color:#5ce05a;color:#000;font-family:GameFont,sans-serif;font-size:14px;font-weight:700;padding:5px 15px;border-radius:4px;letter-spacing:1px;cursor:pointer;transition:transform .2s,background-color .2s;display:flex;align-items:center;z-index:10;text-transform:uppercase;box-shadow:0 2px 4px #0006}#kute-rank-list-btn:hover{transform:scale(1.05);background-color:#6efc6c;color:#000}#kute-rank-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000d9;z-index:99999;display:flex;justify-content:center;align-items:center;backdrop-filter:blur(4px)}.rank-popup-content{background:#151515;border:2px solid #333;border-top:4px solid #5ce05a;width:700px;max-width:90%;max-height:85vh;border-radius:8px;box-shadow:0 10px 40px #000c;display:flex;flex-direction:column;overflow:hidden;animation:popIn .3s cubic-bezier(.18,.89,.32,1.28)}@keyframes popIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.rank-popup-header{padding:20px;background:#ffffff08;border-bottom:2px solid rgba(255,255,255,.05);display:flex;justify-content:space-between;align-items:center}.rank-popup-header h2{margin:0;color:#fff;font-family:GameFont,sans-serif;font-size:24px;letter-spacing:1px}.rank-popup-close{font-size:24px;color:#aaa;cursor:pointer;font-weight:700;line-height:1}.rank-popup-close:hover{color:#eb5656}.rank-grid-container{padding:20px;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.rank-grid-item{background:#ffffff0d;padding:10px;border-radius:6px;display:flex;align-items:center;gap:12px;border:1px solid transparent}.rank-grid-item:hover{background:#ffffff1a;border-color:#fff3}.rank-grid-item img{height:45px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5))}.r-details{display:flex;flex-direction:column}.r-name{font-family:GameFont,sans-serif;font-size:16px;font-weight:700;margin-bottom:2px;text-shadow:1px 1px 0 #000}.r-elo{font-family:monospace;color:#888;font-size:13px;background:#0000004d;padding:2px 6px;border-radius:4px;display:inline-block;width:max-content}.rank-grid-container::-webkit-scrollbar{width:8px}.rank-grid-container::-webkit-scrollbar-thumb{background:#444;border-radius:4px}.rank-grid-container::-webkit-scrollbar-thumb:hover{background:#5ce05a}#kute-elo-tracker{width:100%;margin-top:5px;margin-bottom:10px;background:#0006;padding:8px 12px;border-radius:6px;border:1px solid rgba(255,255,255,.08);box-sizing:border-box}.elo-info-row{display:flex;align-items:center;gap:15px;justify-content:space-between}.elo-rank-img{height:28px;width:auto;display:block;margin-bottom:2px;filter:drop-shadow(0px 0px 3px rgba(0,0,0,.5))}.rank-current-container,.rank-next-container{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#bbb;font-family:GameFont,sans-serif;font-size:10px;line-height:1;min-width:50px}.rank-next-container span,.rank-current-container span{color:#fff;text-transform:uppercase;font-weight:700;letter-spacing:.5px}#kute-rank-list-btn span{font-size:16px!important;vertical-align:middle;margin-right:4px}.elo-progress-bar-bg{flex-grow:1;height:22px;background:#151515;border-radius:4px;position:relative;overflow:hidden;box-shadow:inset 0 2px 5px #00000080;border:1px solid #333}.elo-progress-bar-fill{height:100%;background-color:#fb8c00;background-image:linear-gradient(180deg,#fff3,#fff0);transition:width .8s cubic-bezier(.22,1,.36,1);box-shadow:0 0 10px #fb8c0066;position:relative}.elo-progress-bar-fill:after{content:"";position:absolute;right:0;top:0;bottom:0;width:1px;background:#fff;opacity:.7;box-shadow:0 0 5px #fff}.rank-name{margin-bottom:2px!important}.elo-progress-text{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;align-items:center;justify-content:center;color:#fff;text-shadow:1px 1px 2px #000,0 0 4px #000;font-weight:700;font-family:GameFont,sans-serif;font-size:14px;z-index:5;letter-spacing:1px}.rank-and-stats{justify-content:flex-start;gap:5px}.season-banner.svelte-s4rbwd{right:150px!important} -`});var bd={};A(bd,{default:()=>D1});var gd,D1,vd=w(()=>{"use strict";Ae();gd=class{constructor(){this.ranks=[{rank:"Unranked",elo:null,color:"#FFFFFF",image:"rank_unranked.svg"},{rank:"Bronze 1",elo:0,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Bronze 2",elo:200,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Bronze 3",elo:400,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Silver 1",elo:700,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Silver 2",elo:900,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Silver 3",elo:1100,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Gold 1",elo:1300,color:"#FFD700",image:"rank_gold.svg"},{rank:"Gold 2",elo:1600,color:"#FFD700",image:"rank_gold.svg"},{rank:"Gold 3",elo:2e3,color:"#FFD700",image:"rank_gold.svg"},{rank:"Platinum",elo:2300,color:"#4B69FF",image:"rank_platinum.svg"},{rank:"Diamond",elo:3e3,color:"#4B69FF",image:"rank_diamond.svg"},{rank:"Master",elo:3300,color:"#EE7032",image:"rank_master.svg"},{rank:"Kracked",elo:4700,color:"#FF0000",image:"rank_kracked.svg"}],this.observer=new MutationObserver(()=>this.checkForMenu());let e=window.openRankedMenu;window.openRankedMenu=()=>{e(),this.observer.observe(U(".rankedMenuModal"),{childList:!0,subtree:!0});let t=setInterval(()=>{document.querySelector(".rankedMenuModal")||(clearInterval(t),this.observer.disconnect())},5e3)},Promise.resolve().then(()=>ue(ug(),1)).then(t=>{let o=document.createElement("style");o.textContent=t.default,document.head.append(o)})}checkForMenu(){let e=document.querySelector(".rank-card"),t=document.querySelector(".rank-and-stats");e&&t&&(t.querySelector("#kute-elo-tracker")||this.injectBar(t),e.querySelector("#kute-rank-list-btn")||this.injectRankListButton(e))}injectRankListButton(e){let t=document.createElement("div");t.id="kute-rank-list-btn",t.className="season-banner",t.innerHTML='list Ranks',t.onclick=()=>this.openPopup(),window.getComputedStyle(e).position==="static"&&(e.style.position="relative"),e.appendChild(t)}openPopup(){if(document.getElementById("kute-rank-overlay"))return;let e="";for(let o of this.ranks)e+=` +}`;hd=class{constructor(){this.enabled=!1,this.running=!1,this.moveX=0,this.moveY=0,this.scaleX=0,this.scaleY=0,this.weight=0,this.lastFrame=0,this.hasHistory=!1,this.game=null,this.overlay=null,this.gl=null,this.accumulate=null,this.present=null,this.source=null,this.history=null,this.historyBuffer=null,this.historyFormat=0,this.unsupported=!1,this.onMouseMove=e=>{document.pointerLockElement!==null&&(this.moveX+=e.movementX,this.moveY+=e.movementY,this.running||(this.running=!0,this.lastFrame=0,this.readScale(),An(this.onFrameEnd)))},this.onPointerLockChange=()=>this.stop(),this.onFrameEnd=e=>this.frame(e),this.onContextLost=()=>this.release(),u.settings.toggleMotionBlur=e=>this.toggle(e),this.toggle(!!u.settings.data.motionBlur)}toggle(e){if(e!==this.enabled){if(this.enabled=e,e){window.addEventListener("mousemove",this.onMouseMove,!0),document.addEventListener("pointerlockchange",this.onPointerLockChange);return}window.removeEventListener("mousemove",this.onMouseMove,!0),document.removeEventListener("pointerlockchange",this.onPointerLockChange),this.stop(),this.unsupported=!1,this.gl?.getExtension("WEBGL_lose_context")?.loseContext(),this.release(),this.game=null}}stop(){this.running&&An(null),this.running=!1,this.moveX=0,this.moveY=0,this.weight=0,this.hasHistory=!1,this.overlay&&(this.overlay.style.display="none")}release(){this.overlay?.removeEventListener("webglcontextlost",this.onContextLost),this.overlay?.remove(),this.overlay=null,this.gl=null,this.accumulate=null,this.present=null,this.source=null,this.history=null,this.historyBuffer=null,this.hasHistory=!1}readScale(){let e=Tr(pd("fov",100),10,170)*Math.PI/180,t=.5/Math.tan(e/2);this.scaleX=dg*pd("sensitivityX",1)*t,this.scaleY=dg*pd("sensitivityY",1)*t}createContext(){let e=document.createElement("canvas");e.id=T1,e.style.cssText="position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;contain:strict;display:none";let t=e.getContext("webgl2",{alpha:!1,antialias:!1,depth:!1,stencil:!1,preserveDrawingBuffer:!1});if(!t)return!1;let o=!!(t.getExtension("EXT_color_buffer_float")||t.getExtension("EXT_color_buffer_half_float")),n=o?"2.2":"1.0",r=ug(t,I1(n)),i=ug(t,N1(n));if(!r||!i)return!1;t.useProgram(r),t.uniform1i(t.getUniformLocation(r,"source"),0),t.useProgram(i),t.uniform1i(t.getUniformLocation(i,"history"),1);let a=t.createTexture();t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,a),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let l=t.createTexture();t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,l),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let c=t.createFramebuffer();return t.blendFunc(t.CONSTANT_ALPHA,t.ONE_MINUS_CONSTANT_ALPHA),e.addEventListener("webglcontextlost",this.onContextLost),this.overlay=e,this.gl=t,this.accumulate=r,this.present=i,this.source=a,this.history=l,this.historyBuffer=c,this.historyFormat=o?t.RGBA16F:t.RGBA8,!0}attach(){this.game?.isConnected||(this.game=document.querySelector("body > canvas:not([id])"));let{game:e}=this;if(!e)return!1;if(!this.overlay&&(this.unsupported||!this.createContext()))return this.unsupported=!0,!1;let{overlay:t,gl:o}=this;return!t||!o?!1:(t.previousElementSibling!==e&&e.after(t),(t.width!==e.width||t.height!==e.height)&&(t.width=e.width,t.height=e.height,o.viewport(0,0,e.width,e.height),o.activeTexture(o.TEXTURE1),o.texImage2D(o.TEXTURE_2D,0,this.historyFormat,e.width,e.height,0,o.RGBA,this.historyFormat===o.RGBA8?o.UNSIGNED_BYTE:o.HALF_FLOAT,null),o.bindFramebuffer(o.FRAMEBUFFER,this.historyBuffer),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,this.history,0),this.hasHistory=!1),!0)}frame(e){let t=this.lastFrame?Tr(e-this.lastFrame,1,100):lg;this.lastFrame=e;let o=Math.hypot(this.moveX*this.scaleX,this.moveY*this.scaleY)*(1e3/t);this.moveX=0,this.moveY=0;let n=Tr((o-cg)/(R1-cg),0,1),i=Tr(Number(u.settings.data.motionBlurStrength)||0,0,100)/100*A1*n*n*(3-2*n);if(this.weight+=(i-this.weight)*(1-Math.exp(-t/(i>this.weight?6:12))),this.weight{hg=`#kuteNukeCounter{position:absolute;left:94%;top:50%;transform:translate(-50%,-50%);z-index:10;display:flex;align-items:center;gap:.3em;font-family:GameFont,monospace;font-size:26px;color:#fff;white-space:nowrap;pointer-events:none;text-shadow:1px 1px 3px rgba(0,0,0,.9)}#uiBase.onMenu #kuteNukeCounter{display:none}#kuteNukeCounter.nukeBg{padding:.2em .5em;border-radius:.25em;background:#00000059}.nukeIcon{color:#ffc147}.nukeGoal{color:#fff9}#kuteNukeCounter.nukeGoalMet .nukeCount{color:#9eeb56}@keyframes kuteNukeGain{0%{opacity:0;transform:scale(.6)}12%{opacity:1;transform:scale(1)}80%{opacity:1}to{opacity:0}}.nukeGain{color:#9eeb56;animation:kuteNukeGain 8s ease forwards} +`});var mg=we((ZE,z1)=>{z1.exports='

              Nuke Counter

              Your nuke total, in game. It updates when a match ends
              Where it sits and how big it is belongs to the HUD editor
              Place it
              Done
              '});var vd={};A(vd,{default:()=>j1});function K1(s,e,t){return Math.min(t,Math.max(e,Number(s)||0))}function gd(s){return s.toLocaleString("en-US")}var H1,O1,F1,D1,fg,q1,bd,j1,wd=w(()=>{"use strict";pg();F();H1={goal:0,background:!0},O1="https://gapi.svc.krunker.io/players/",F1=2e3,D1=3e4,fg=[5e3,2e4],q1=8e3;bd=class{constructor(){this.overlay=null,this.nukes=null,this.nukesFor="",this.noStat=!1,this.fetching=!1,this.lastTry=0,this.endWasUp=!1,this.tick=null,this.commitTimers=[],u.nukeCounter={showOptions:()=>this.showOptions()},u.settings.toggleNukeCounter=e=>this.toggle(e),this.toggle(!!u.settings.data.nukeCounter)}accountName(){try{return window.localStorage.getItem("krunker_username")??""}catch{return""}}get config(){return{...H1,...u.settings.data.nukeCounterConfig}}saveConfig(e){u.settings.data.nukeCounterConfig=e,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(e)}`)}toggle(e){if(!e){this.destroy();return}if(!document.querySelector("#kuteNukeCounterCSS")){let t=document.createElement("style");t.id="kuteNukeCounterCSS",t.textContent=hg,document.head.append(t)}this.inject(),this.nukes===null&&this.refresh(),this.tick??=setInterval(()=>this.onTick(),F1)}destroy(){this.tick!==null&&(clearInterval(this.tick),this.tick=null);for(let e of this.commitTimers)clearTimeout(e);this.commitTimers=[],this.overlay?.remove(),this.overlay=null,document.querySelector("#kuteNukeCounterCSS")?.remove(),this.endWasUp=!1}inject(){if(!this.accountName()||this.overlay?.isConnected)return;this.overlay?.remove();let e=document.createElement("div");e.id="kuteNukeCounter",e.innerHTML='\u2622\u2014',(document.querySelector("#uiBase")??document.body).append(e),this.overlay=e,this.applyConfig(),this.render()}applyConfig(){this.overlay?.classList.toggle("nukeBg",this.config.background)}render(){let{overlay:e}=this;if(!e)return;let{goal:t}=this.config,o=e.querySelector(".nukeCount"),n=e.querySelector(".nukeGoal");o&&(o.textContent=this.nukes===null?"\u2014":gd(this.nukes)),n&&(n.style.display=t>0?"":"none",n.textContent=`/ ${gd(t)}`),e.classList.toggle("nukeGoalMet",t>0&&this.nukes!==null&&this.nukes>=t)}showGain(e){let{overlay:t}=this;if(!t||e<=0)return;t.querySelector(".nukeGain")?.remove();let o=document.createElement("span");o.className="nukeGain",o.textContent=`+${gd(e)}`,t.append(o),setTimeout(()=>o.remove(),q1)}refresh(){let e=this.accountName();!e||this.fetching||(this.fetching=!0,this.lastTry=Date.now(),window.fetch(O1+encodeURIComponent(e),{credentials:"omit",signal:AbortSignal.timeout(1e4)}).then(t=>t.ok?t.json():null).then(t=>{let o=t?.data?.player_stats?.n;if(typeof o=="number"){let n=this.nukes===null||this.nukesFor!==e?0:o-this.nukes;this.nukes=o,this.noStat=!1,this.nukesFor=e,this.render(),this.showGain(n)}else t&&(this.noStat=!0,this.nukesFor=e)}).catch(()=>{}).finally(()=>{this.fetching=!1}))}onTick(){this.inject(),this.accountName()!==this.nukesFor&&(this.nukes!==null||this.noStat)&&(this.nukes=null,this.noStat=!1,this.lastTry=0,this.render()),this.nukes===null&&!this.noStat&&Date.now()-this.lastTry>D1&&this.refresh();let t=document.querySelector("#endUI"),o=!!t&&t.style.display!=="none";o&&!this.endWasUp&&this.commitTimers.length===0&&(this.commitTimers=fg.map((n,r)=>setTimeout(()=>{r===fg.length-1&&(this.commitTimers=[]),this.refresh()},n))),this.endWasUp=o}async showOptions(){let e=await Promise.resolve().then(()=>ue(mg(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=d=>r.querySelector(`#${d}`),a=()=>{u.settings.data.nukeCounterConfig=t,this.applyConfig(),this.render()};i("nkGoalInput").value=String(t.goal),i("nkBackground").checked=t.background,i("nkGoalInput").oninput=d=>{let h=Number.parseInt(d.target.value,10);t.goal=Number.isNaN(h)?0:K1(h,0,1e6),a()},i("nkBackground").onchange=d=>{t.background=d.target.checked,a()};let l=new AbortController,c=()=>{l.abort(),o.remove(),this.saveConfig(t)};i("nkDone").onclick=c,i("nkPlace").onclick=()=>{c(),u.hudEditor?.edit()},o.addEventListener("mousedown",d=>{d.target===o&&c()}),document.addEventListener("keydown",d=>{d.key==="Escape"&&(d.stopPropagation(),c())},{signal:l.signal,capture:!0}),document.body.append(o)}},j1=new bd});var gg=we((t8,U1)=>{U1.exports=`#kute-rank-list-btn{position:absolute;top:15px;right:30px;background-color:#5ce05a;color:#000;font-family:GameFont,sans-serif;font-size:14px;font-weight:700;padding:5px 15px;border-radius:4px;letter-spacing:1px;cursor:pointer;transition:transform .2s,background-color .2s;display:flex;align-items:center;z-index:10;text-transform:uppercase;box-shadow:0 2px 4px #0006}#kute-rank-list-btn:hover{transform:scale(1.05);background-color:#6efc6c;color:#000}#kute-rank-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000d9;z-index:99999;display:flex;justify-content:center;align-items:center;backdrop-filter:blur(4px)}.rank-popup-content{background:#151515;border:2px solid #333;border-top:4px solid #5ce05a;width:700px;max-width:90%;max-height:85vh;border-radius:8px;box-shadow:0 10px 40px #000c;display:flex;flex-direction:column;overflow:hidden;animation:popIn .3s cubic-bezier(.18,.89,.32,1.28)}@keyframes popIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.rank-popup-header{padding:20px;background:#ffffff08;border-bottom:2px solid rgba(255,255,255,.05);display:flex;justify-content:space-between;align-items:center}.rank-popup-header h2{margin:0;color:#fff;font-family:GameFont,sans-serif;font-size:24px;letter-spacing:1px}.rank-popup-close{font-size:24px;color:#aaa;cursor:pointer;font-weight:700;line-height:1}.rank-popup-close:hover{color:#eb5656}.rank-grid-container{padding:20px;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.rank-grid-item{background:#ffffff0d;padding:10px;border-radius:6px;display:flex;align-items:center;gap:12px;border:1px solid transparent}.rank-grid-item:hover{background:#ffffff1a;border-color:#fff3}.rank-grid-item img{height:45px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5))}.r-details{display:flex;flex-direction:column}.r-name{font-family:GameFont,sans-serif;font-size:16px;font-weight:700;margin-bottom:2px;text-shadow:1px 1px 0 #000}.r-elo{font-family:monospace;color:#888;font-size:13px;background:#0000004d;padding:2px 6px;border-radius:4px;display:inline-block;width:max-content}.rank-grid-container::-webkit-scrollbar{width:8px}.rank-grid-container::-webkit-scrollbar-thumb{background:#444;border-radius:4px}.rank-grid-container::-webkit-scrollbar-thumb:hover{background:#5ce05a}#kute-elo-tracker{width:100%;margin-top:5px;margin-bottom:10px;background:#0006;padding:8px 12px;border-radius:6px;border:1px solid rgba(255,255,255,.08);box-sizing:border-box}.elo-info-row{display:flex;align-items:center;gap:15px;justify-content:space-between}.elo-rank-img{height:28px;width:auto;display:block;margin-bottom:2px;filter:drop-shadow(0px 0px 3px rgba(0,0,0,.5))}.rank-current-container,.rank-next-container{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#bbb;font-family:GameFont,sans-serif;font-size:10px;line-height:1;min-width:50px}.rank-next-container span,.rank-current-container span{color:#fff;text-transform:uppercase;font-weight:700;letter-spacing:.5px}#kute-rank-list-btn span{font-size:16px!important;vertical-align:middle;margin-right:4px}.elo-progress-bar-bg{flex-grow:1;height:22px;background:#151515;border-radius:4px;position:relative;overflow:hidden;box-shadow:inset 0 2px 5px #00000080;border:1px solid #333}.elo-progress-bar-fill{height:100%;background-color:#fb8c00;background-image:linear-gradient(180deg,#fff3,#fff0);transition:width .8s cubic-bezier(.22,1,.36,1);box-shadow:0 0 10px #fb8c0066;position:relative}.elo-progress-bar-fill:after{content:"";position:absolute;right:0;top:0;bottom:0;width:1px;background:#fff;opacity:.7;box-shadow:0 0 5px #fff}.rank-name{margin-bottom:2px!important}.elo-progress-text{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;align-items:center;justify-content:center;color:#fff;text-shadow:1px 1px 2px #000,0 0 4px #000;font-weight:700;font-family:GameFont,sans-serif;font-size:14px;z-index:5;letter-spacing:1px}.rank-and-stats{justify-content:flex-start;gap:5px}.season-banner.svelte-s4rbwd{right:150px!important} +`});var yd={};A(yd,{default:()=>G1});var kd,G1,xd=w(()=>{"use strict";Ae();kd=class{constructor(){this.ranks=[{rank:"Unranked",elo:null,color:"#FFFFFF",image:"rank_unranked.svg"},{rank:"Bronze 1",elo:0,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Bronze 2",elo:200,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Bronze 3",elo:400,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Silver 1",elo:700,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Silver 2",elo:900,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Silver 3",elo:1100,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Gold 1",elo:1300,color:"#FFD700",image:"rank_gold.svg"},{rank:"Gold 2",elo:1600,color:"#FFD700",image:"rank_gold.svg"},{rank:"Gold 3",elo:2e3,color:"#FFD700",image:"rank_gold.svg"},{rank:"Platinum",elo:2300,color:"#4B69FF",image:"rank_platinum.svg"},{rank:"Diamond",elo:3e3,color:"#4B69FF",image:"rank_diamond.svg"},{rank:"Master",elo:3300,color:"#EE7032",image:"rank_master.svg"},{rank:"Kracked",elo:4700,color:"#FF0000",image:"rank_kracked.svg"}],this.observer=new MutationObserver(()=>this.checkForMenu());let e=window.openRankedMenu;window.openRankedMenu=()=>{e(),this.observer.observe(U(".rankedMenuModal"),{childList:!0,subtree:!0});let t=setInterval(()=>{document.querySelector(".rankedMenuModal")||(clearInterval(t),this.observer.disconnect())},5e3)},Promise.resolve().then(()=>ue(gg(),1)).then(t=>{let o=document.createElement("style");o.textContent=t.default,document.head.append(o)})}checkForMenu(){let e=document.querySelector(".rank-card"),t=document.querySelector(".rank-and-stats");e&&t&&(t.querySelector("#kute-elo-tracker")||this.injectBar(t),e.querySelector("#kute-rank-list-btn")||this.injectRankListButton(e))}injectRankListButton(e){let t=document.createElement("div");t.id="kute-rank-list-btn",t.className="season-banner",t.innerHTML='list Ranks',t.onclick=()=>this.openPopup(),window.getComputedStyle(e).position==="static"&&(e.style.position="relative"),e.appendChild(t)}openPopup(){if(document.getElementById("kute-rank-overlay"))return;let e="";for(let o of this.ranks)e+=`
              @@ -1288,25 +1290,25 @@ void main(){
              ${i}
              - `;let l=e.querySelector(".quick-stats");l?e.insertBefore(r,l):e.append(r)}},D1=new gd});var kd={};A(kd,{default:()=>K1});var F1,q1,wd,K1,yd=w(()=>{"use strict";D();F1=".ranked-matchmaking-status",q1="Match found!",wd=class{constructor(){this.found=!1,this.status=null,this.observer=new MutationObserver(()=>this.check()),u.settings.toggleRankedAlert=e=>this.toggle(e),this.toggle(!0)}toggle(e){this.observer.disconnect(),e&&(this.status=document.querySelector(F1),this.status&&(this.observer.observe(this.status,{attributes:!0,attributeFilter:["class"],childList:!0,characterData:!0,subtree:!0}),this.found=this.shown()))}shown(){return!!this.status?.classList.contains("show")&&this.status?.textContent===q1}check(){let e=this.shown();e&&!this.found&&window.chrome.webview.postMessage("bring-to-front"),this.found=e}},K1=new wd});var Sd={};A(Sd,{default:()=>j1});var xd,j1,Ed=w(()=>{"use strict";D();Ae();xd=class{constructor(){this.ingamePing=null,this.menuPing=null,this.interval=null,this.listener=null,u.settings.toggleRealPing=e=>this.toggle(e),this.toggle(!0)}applyPingDisplay(e){e&&Object.defineProperty(e,"textContent",{set:()=>{},configurable:!0})}async toggle(e){let[t,o]=await Promise.all([$e("#pingText"),$e("#menuPingText")]);this.ingamePing=t,this.menuPing=o,e?(this.applyPingDisplay(t),this.applyPingDisplay(o),this.interval=setInterval(()=>{window.chrome.webview.postMessage("ping")},3e3),this.listener=n=>{let r=n.data?.pingInfo;r&&(t.innerText=r,o.innerText=r)},window.chrome.webview.addEventListener("message",this.listener)):(this.interval!==null&&clearInterval(this.interval),this.listener&&window.chrome.webview.removeEventListener("message",this.listener),this.interval=null,this.listener=null,Reflect.deleteProperty(t,"textContent"),Reflect.deleteProperty(o,"textContent"))}},j1=new xd});var hg,pg=w(()=>{hg='
              '});var Cd={};A(Cd,{default:()=>G1});var Mr,$d,G1,Md=w(()=>{"use strict";pg();D();Rt();Mr=s=>window.chrome.webview.postMessage(`recovery-${s}`),$d=class{constructor(){this.host=null,this.shadow=null,document.addEventListener("pointerlockchange",()=>{this.host&&(this.host.style.display=document.pointerLockElement?"none":"flex")}),window.chrome.webview.addEventListener("message",e=>{e.data?.recovery&&this.show(e.data.recovery)}),u.recovery&&this.show(u.recovery)}banner(e,t,o){this.host||(this.host=document.createElement("div"),this.host.style.cssText="position:fixed;top:12px;left:0;right:0;display:flex;justify-content:center;pointer-events:none;z-index:2147482000",this.shadow=this.host.attachShadow({mode:"open"}),this.shadow.innerHTML=hg,document.body.append(this.host));let{shadow:n}=this;n.querySelector("#rcTitle").textContent=e,n.querySelector("#rcBody").textContent=t;let r=n.querySelector("#rcActions");r.replaceChildren();for(let[i,a,l]of o){let c=document.createElement("div");c.className=l?"rcButton rcMain":"rcButton",c.textContent=i,c.onclick=()=>Mr(a),r.append(c)}}show(e){if(e.mode==="safe"){let t=[["Restart normally","normal",!e.canFind]];e.canFind&&t.unshift(["Find the cause","find",!0]),this.banner("Safe mode:","your userscripts, swaps, custom CSS, flags and engine tweaks are off for this start. Nothing of yours was changed.",t)}else if(e.mode==="test"){let t=`${e.suspects} ${e.suspects===1?"thing":"things"} left to check.`;e.ranFine?this.banner(`Finding the cause, test ${e.step}:`,`this test passed, ${t} Restart for the next one.`,[["Next test","next",!0],["Stop","stop"]]):e.kind==="startup"?this.banner(`Finding the cause, test ${e.step}:`,`${t} Kute restarts by itself, nothing to do.`,[["Stop","stop"]]):this.banner(`Finding the cause, test ${e.step}:`,`${t} Play as usual. After ${e.minutes} min without a crash this test passes.`,[["Stop","stop"]])}else e.mode==="result"?this.result(e).catch(t=>console.error("[kute] recovery:",t)):e.mode==="offer"&&this.offer().catch(t=>console.error("[kute] recovery:",t))}async result(e){let t=`${e.tests?.crashed??0} tests crashed, ${e.tests?.ranFine??0} ran fine.`;if(e.verdict==="notTheSetup"){let i=!await Ce({title:"Not your setup",paragraphs:["Kute crashed even with everything of yours switched off, so it is most likely a driver, the PC or another program.","A Diagnostics Report (About settings) helps us look into it.",t],stay:"Create a report",leave:"Close"});Mr("dismiss"),i&&u.diagnostics?.open();return}let o=e.culprits??[],n=o.every(i=>i.fixable),r=!await Ce({title:"Found the cause",paragraphs:[`Kute crashed with ${o.length===1?"this":"these together"} and ran fine without:`,...o.map(i=>i.label),n?"It is off for this start. Switch it off for good, or keep it and Kute starts with it again next time.":"It is off for this start. To keep it off, remove it from the file in Documents\\kute.",t],stay:n?"Switch it off":"OK",leave:"Keep it"});Mr(r&&n?"apply":"dismiss"),r&&n&&u.showNotification("Switched off",!1,3)}async offer(){let e=!await Ce({title:"Kute crashed the last times it ran",paragraphs:["Safe mode starts without your userscripts, swaps, custom CSS, flags and engine tweaks, and can find which one causes it. Nothing of yours gets changed."],stay:"Restart in safe mode",leave:"Not now"});Mr(e?"safe":"dismiss")}},G1=new $d});var Ad={};A(Ad,{default:()=>Z1});var W1,V1,Y1,X1,J1,Td,Z1,Ld=w(()=>{"use strict";D();Ae();as();W1=2e3,V1=.25,Y1=60,X1=3e3,J1=.3,Td=class{constructor(){this.ingameFPS=null,this.menuFPS=null,this.listener=null,this.gameFPS=null,this.rawGameFPS=null,this.potentialFps=0,this.presentEnabled=!!u.settings?.data?.renderStats,this.presentFps=0,this.presentAt=0,this.showPresent=!0,this.disagreeSince=0,this.shown="",u.settings.toggleRenderFps=e=>this.toggle(e),this.toggle(!0)}presentUsable(){if(performance.now()-this.presentAt>W1)return!1;let e=Number.parseFloat(this.rawGameFPS??"");return!Number.isFinite(e)||e<=0?!0:!(this.presentFps=X1&&(this.showPresent=!this.showPresent,this.disagreeSince=0,this.showPresent||this.explainOnce()):this.disagreeSince=e,this.render()}explainOnce(){try{if(sessionStorage.getItem("kute_presentFpsHidden"))return;sessionStorage.setItem("kute_presentFpsHidden","1")}catch{return}u.showNotification?.(u.settings?.data?.hardFlip===!1?"Present FPS needs the DXGI Swapchain Hook (Settings, Engine), which is off. Showing the game's FPS":"Present FPS is hidden: the swap chain hook does not see the game's frames on this PC, its number would be wrong. Showing the game's FPS",!1,8)}render(){let e=this.showPresent&&this.presentAt>0?`${this.gameFPS??""} ${this.presentFps}`:this.gameFPS??"";e!==this.shown&&(this.shown=e,this.ingameFPS&&(this.ingameFPS.innerText=e),this.menuFPS&&(this.menuFPS.innerText=e))}withPotential(e){let t=Number.parseFloat(e),o=ri();if(!Number.isFinite(t)||t<=0||Number(u.settings?.data?.gameFpsLimit)>0)return e;if(o>0){let n=1e3/t,r=1e3/Math.max(o,n-o);this.potentialFps=this.potentialFps?this.potentialFps+(r-this.potentialFps)*J1:r}return this.potentialFps>t?String(Math.round(this.potentialFps)):e}applyFpsDisplay(e){e&&Object.defineProperty(e,"textContent",{set:t=>{this.rawGameFPS=t,this.gameFPS=this.withPotential(t),this.evaluate()},configurable:!0})}async toggle(e){let[t,o]=await Promise.all([$e("#ingameFPS"),$e("#menuFPS")]);this.ingameFPS=t,this.menuFPS=o,e?(this.applyFpsDisplay(t),this.applyFpsDisplay(o),this.listener=n=>{let r=n.data?.fpsInfo;typeof r=="number"&&(this.presentFps=r,this.presentAt=performance.now(),this.showPresent&&this.render())},window.chrome.webview.addEventListener("message",this.listener)):(this.listener&&(window.chrome.webview.removeEventListener("message",this.listener),this.listener=null),Reflect.deleteProperty(t,"textContent"),Reflect.deleteProperty(o,"textContent"))}},Z1=new Td});var Pd={};A(Pd,{default:()=>nx});var Uo,Q1,ex,tx,ox,sx,mg,Rd,nx,Id=w(()=>{"use strict";Ae();Uo="data-kute-ping",Q1=6e4,ex=1e4,tx={FRA:"de-fra",NY:"us-nj",DAL:"us-tx",SV:"us-ca-sv",BRZ:"brz",SIN:"sgp",TOK:"jb-hnd",SYD:"au-syd",MBI:"as-mb",BHN:"me-bhn",SSS:"sss"},ox={"New York":"us-nj",Dallas:"us-tx",Frankfurt:"de-fra","Silicon Valley":"us-ca-sv",Sydney:"au-syd",Tokyo:"jb-hnd",Singapore:"sgp",Mumbai:"as-mb",Brazil:"brz","Middle East":"me-bhn","EU Super Secret Servers":"sss"},sx=` + `;let l=e.querySelector(".quick-stats");l?e.insertBefore(r,l):e.append(r)}},G1=new kd});var Ed={};A(Ed,{default:()=>Y1});var W1,V1,Sd,Y1,$d=w(()=>{"use strict";F();W1=".ranked-matchmaking-status",V1="Match found!",Sd=class{constructor(){this.found=!1,this.status=null,this.observer=new MutationObserver(()=>this.check()),u.settings.toggleRankedAlert=e=>this.toggle(e),this.toggle(!0)}toggle(e){this.observer.disconnect(),e&&(this.status=document.querySelector(W1),this.status&&(this.observer.observe(this.status,{attributes:!0,attributeFilter:["class"],childList:!0,characterData:!0,subtree:!0}),this.found=this.shown()))}shown(){return!!this.status?.classList.contains("show")&&this.status?.textContent===V1}check(){let e=this.shown();e&&!this.found&&window.chrome.webview.postMessage("bring-to-front"),this.found=e}},Y1=new Sd});var Md={};A(Md,{default:()=>X1});var Cd,X1,Td=w(()=>{"use strict";F();Ae();Cd=class{constructor(){this.ingamePing=null,this.menuPing=null,this.interval=null,this.listener=null,u.settings.toggleRealPing=e=>this.toggle(e),this.toggle(!0)}applyPingDisplay(e){e&&Object.defineProperty(e,"textContent",{set:()=>{},configurable:!0})}async toggle(e){let[t,o]=await Promise.all([$e("#pingText"),$e("#menuPingText")]);this.ingamePing=t,this.menuPing=o,e?(this.applyPingDisplay(t),this.applyPingDisplay(o),this.interval=setInterval(()=>{window.chrome.webview.postMessage("ping")},3e3),this.listener=n=>{let r=n.data?.pingInfo;r&&(t.innerText=r,o.innerText=r)},window.chrome.webview.addEventListener("message",this.listener)):(this.interval!==null&&clearInterval(this.interval),this.listener&&window.chrome.webview.removeEventListener("message",this.listener),this.interval=null,this.listener=null,Reflect.deleteProperty(t,"textContent"),Reflect.deleteProperty(o,"textContent"))}},X1=new Cd});var vg,bg=w(()=>{vg='
              '});var Ld={};A(Ld,{default:()=>Z1});var Ar,Ad,Z1,Rd=w(()=>{"use strict";bg();F();Pt();Ar=s=>window.chrome.webview.postMessage(`recovery-${s}`),Ad=class{constructor(){this.host=null,this.shadow=null,document.addEventListener("pointerlockchange",()=>{this.host&&(this.host.style.display=document.pointerLockElement?"none":"flex")}),window.chrome.webview.addEventListener("message",e=>{e.data?.recovery&&this.show(e.data.recovery)}),u.recovery&&this.show(u.recovery)}banner(e,t,o){this.host||(this.host=document.createElement("div"),this.host.style.cssText="position:fixed;top:12px;left:0;right:0;display:flex;justify-content:center;pointer-events:none;z-index:2147482000",this.shadow=this.host.attachShadow({mode:"open"}),this.shadow.innerHTML=vg,document.body.append(this.host));let{shadow:n}=this;n.querySelector("#rcTitle").textContent=e,n.querySelector("#rcBody").textContent=t;let r=n.querySelector("#rcActions");r.replaceChildren();for(let[i,a,l]of o){let c=document.createElement("div");c.className=l?"rcButton rcMain":"rcButton",c.textContent=i,c.onclick=()=>Ar(a),r.append(c)}}show(e){if(e.mode==="safe"){let t=[["Restart normally","normal",!e.canFind]];e.canFind&&t.unshift(["Find the cause","find",!0]),this.banner("Safe mode:","your userscripts, swaps, custom CSS, flags and engine tweaks are off for this start. Nothing of yours was changed.",t)}else if(e.mode==="test"){let t=`${e.suspects} ${e.suspects===1?"thing":"things"} left to check.`;e.ranFine?this.banner(`Finding the cause, test ${e.step}:`,`this test passed, ${t} Restart for the next one.`,[["Next test","next",!0],["Stop","stop"]]):e.kind==="startup"?this.banner(`Finding the cause, test ${e.step}:`,`${t} Kute restarts by itself, nothing to do.`,[["Stop","stop"]]):this.banner(`Finding the cause, test ${e.step}:`,`${t} Play as usual. After ${e.minutes} min without a crash this test passes.`,[["Stop","stop"]])}else e.mode==="result"?this.result(e).catch(t=>console.error("[kute] recovery:",t)):e.mode==="offer"&&this.offer().catch(t=>console.error("[kute] recovery:",t))}async result(e){let t=`${e.tests?.crashed??0} tests crashed, ${e.tests?.ranFine??0} ran fine.`;if(e.verdict==="notTheSetup"){let i=!await Ce({title:"Not your setup",paragraphs:["Kute crashed even with everything of yours switched off, so it is most likely a driver, the PC or another program.","A Diagnostics Report (About settings) helps us look into it.",t],stay:"Create a report",leave:"Close"});Ar("dismiss"),i&&u.diagnostics?.open();return}let o=e.culprits??[],n=o.every(i=>i.fixable),r=!await Ce({title:"Found the cause",paragraphs:[`Kute crashed with ${o.length===1?"this":"these together"} and ran fine without:`,...o.map(i=>i.label),n?"It is off for this start. Switch it off for good, or keep it and Kute starts with it again next time.":"It is off for this start. To keep it off, remove it from the file in Documents\\kute.",t],stay:n?"Switch it off":"OK",leave:"Keep it"});Ar(r&&n?"apply":"dismiss"),r&&n&&u.showNotification("Switched off",!1,3)}async offer(){let e=!await Ce({title:"Kute crashed the last times it ran",paragraphs:["Safe mode starts without your userscripts, swaps, custom CSS, flags and engine tweaks, and can find which one causes it. Nothing of yours gets changed."],stay:"Restart in safe mode",leave:"Not now"});Ar(e?"safe":"dismiss")}},Z1=new Ad});var Id={};A(Id,{default:()=>nx});var Q1,ex,tx,ox,sx,Pd,nx,Nd=w(()=>{"use strict";F();Ae();cs();Q1=2e3,ex=.25,tx=60,ox=3e3,sx=.3,Pd=class{constructor(){this.ingameFPS=null,this.menuFPS=null,this.listener=null,this.gameFPS=null,this.rawGameFPS=null,this.potentialFps=0,this.presentEnabled=!!u.settings?.data?.renderStats,this.presentFps=0,this.presentAt=0,this.showPresent=!0,this.disagreeSince=0,this.shown="",u.settings.toggleRenderFps=e=>this.toggle(e),this.toggle(!0)}presentUsable(){if(performance.now()-this.presentAt>Q1)return!1;let e=Number.parseFloat(this.rawGameFPS??"");return!Number.isFinite(e)||e<=0?!0:!(this.presentFps=ox&&(this.showPresent=!this.showPresent,this.disagreeSince=0,this.showPresent||this.explainOnce()):this.disagreeSince=e,this.render()}explainOnce(){try{if(sessionStorage.getItem("kute_presentFpsHidden"))return;sessionStorage.setItem("kute_presentFpsHidden","1")}catch{return}u.showNotification?.(u.settings?.data?.hardFlip===!1?"Present FPS needs the DXGI Swapchain Hook (Settings, Engine), which is off. Showing the game's FPS":"Present FPS is hidden: the swap chain hook does not see the game's frames on this PC, its number would be wrong. Showing the game's FPS",!1,8)}render(){let e=this.showPresent&&this.presentAt>0?`${this.gameFPS??""} ${this.presentFps}`:this.gameFPS??"";e!==this.shown&&(this.shown=e,this.ingameFPS&&(this.ingameFPS.innerText=e),this.menuFPS&&(this.menuFPS.innerText=e))}withPotential(e){let t=Number.parseFloat(e),o=ai();if(!Number.isFinite(t)||t<=0||Number(u.settings?.data?.gameFpsLimit)>0)return e;if(o>0){let n=1e3/t,r=1e3/Math.max(o,n-o);this.potentialFps=this.potentialFps?this.potentialFps+(r-this.potentialFps)*sx:r}return this.potentialFps>t?String(Math.round(this.potentialFps)):e}applyFpsDisplay(e){e&&Object.defineProperty(e,"textContent",{set:t=>{this.rawGameFPS=t,this.gameFPS=this.withPotential(t),this.evaluate()},configurable:!0})}async toggle(e){let[t,o]=await Promise.all([$e("#ingameFPS"),$e("#menuFPS")]);this.ingameFPS=t,this.menuFPS=o,e?(this.applyFpsDisplay(t),this.applyFpsDisplay(o),this.listener=n=>{let r=n.data?.fpsInfo;typeof r=="number"&&(this.presentFps=r,this.presentAt=performance.now(),this.showPresent&&this.render())},window.chrome.webview.addEventListener("message",this.listener)):(this.listener&&(window.chrome.webview.removeEventListener("message",this.listener),this.listener=null),Reflect.deleteProperty(t,"textContent"),Reflect.deleteProperty(o,"textContent"))}},nx=new Pd});var Bd={};A(Bd,{default:()=>dx});var Wo,rx,ix,ax,lx,cx,wg,_d,dx,zd=w(()=>{"use strict";Ae();Wo="data-kute-ping",rx=6e4,ix=1e4,ax={FRA:"de-fra",NY:"us-nj",DAL:"us-tx",SV:"us-ca-sv",BRZ:"brz",SIN:"sgp",TOK:"jb-hnd",SYD:"au-syd",MBI:"as-mb",BHN:"me-bhn",SSS:"sss"},lx={"New York":"us-nj",Dallas:"us-tx",Frankfurt:"de-fra","Silicon Valley":"us-ca-sv",Sydney:"au-syd",Tokyo:"jb-hnd",Singapore:"sgp",Mumbai:"as-mb",Brazil:"brz","Middle East":"me-bhn","EU Super Secret Servers":"sss"},cx=` #serverHolder .settNameIn .kutePing { float: right; margin-right: 8px; color: #35e0e8; font-size: 13px; line-height: 44px; } #serverHolder .setHed .kutePing { float: right; margin-right: 14px; color: #35e0e8; font-size: 0.75em; line-height: 42px; } -`,mg=s=>s===void 0?"":`${s} ms`,Rd=class{constructor(){this.pings={},this.fetchedAt=0,this.fetching=!1,this.pending=null,this.observer=new MutationObserver(()=>{this.pending===null&&(this.pending=setTimeout(()=>this.scan(),150))});let e=document.createElement("style");e.textContent=sx,document.head.append(e);let t=document.getElementById("menuWindow");t&&(this.menu=t,this.observer.observe(t,{childList:!0,subtree:!0}))}refresh(){this.fetching||Date.now()-this.fetchedAt{this.fetching=!1,this.fetchedAt=Date.now(),e&&(this.pings=e,this.menu?.querySelectorAll(".kutePing").forEach(t=>t.remove()),this.menu?.querySelectorAll(`[${Uo}]`).forEach(t=>t.removeAttribute(Uo)),this.scan())}))}scan(){this.pending=null;let e=document.getElementById("serverHolder");e&&(this.refresh(),Object.keys(this.pings).length!==0&&(this.observer.disconnect(),this.labelRows(e),this.sortRegions(e),this.menu&&this.observer.observe(this.menu,{childList:!0,subtree:!0})))}labelRows(e){for(let t of e.querySelectorAll(`.settNameIn:not([${Uo}])`)){t.setAttribute(Uo,"");let o=/checkedSwitchServer\("([A-Z]+):/.exec(t.getAttribute("onclick")??"")?.[1],n=o?this.pings[tx[o]]:void 0,r=t.querySelector(".serverPing");if(n===void 0||!r)continue;let i=document.createElement("span");i.className="kutePing",i.textContent=mg(n),r.after(i)}}sortRegions(e){let t=[];for(let n of e.children)if(n.classList.contains("setHed")){let r=Array.from(n.childNodes,a=>a.nodeType===Node.TEXT_NODE?a.textContent:"").join("").trim(),i=this.pings[ox[r]];if(i!==void 0&&!n.hasAttribute(Uo)){n.setAttribute(Uo,"");let a=document.createElement("span");a.className="kutePing",a.textContent=mg(i),n.querySelector(".quickJoin")?.before(a)}t.push({nodes:[n],ping:i??-1})}else t.at(-1)?.nodes.push(n);if(t.length<2)return;let o=t.map((n,r)=>({...n,index:r})).sort((n,r)=>n.ping-r.ping||n.index-r.index);if(!o.every((n,r)=>n.index===r))for(let n of o)e.append(...n.nodes)}},nx=new Rd});var _d={};A(_d,{default:()=>lx});function ax(s,e){if(JSON.stringify(e)?.length>ix)return!1;if(vg.includes(s))return e===null||typeof e=="object"&&!Array.isArray(e);let t=wg.find(o=>o.id===s);return!t||typeof e!=typeof t.defaultValue||t.options&&!t.options.includes(e)?!1:typeof e!="number"||Number.isFinite(e)}function bg(){let s=new Date;return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}var fg,gg,rx,ix,vg,wg,Nd,lx,Bd=w(()=>{"use strict";Xo();D();Co();Rt();fg="kute-settings",gg=1,rx=256*1024,ix=16*1024,vg=["hudLayout","matchmakerFilter","hotkeys","nukeCounterConfig","customSkyConfig","kuteIconSlots","kuteIconUrls"],wg=Object.values(Tt).filter(s=>"defaultValue"in s);Nd=class{constructor(){u.settingsTransfer={exportFile:()=>this.export(),importFile:()=>this.pick()}}export(){let e=cu(u.settings.data),t=[...wg.map(i=>i.id),...vg],o=Object.fromEntries(t.filter(i=>e[i]!==void 0).map(i=>[i,e[i]])),n={format:fg,version:gg,kute:u.version,exported:bg(),settings:o},r=document.createElement("a");r.href=URL.createObjectURL(new Blob([JSON.stringify(n,null,2)],{type:"application/json"})),r.download=`kute-settings-${bg()}.json`,r.click(),setTimeout(()=>URL.revokeObjectURL(r.href),1e4),u.showNotification(`Exported ${Object.keys(o).length} settings to your Downloads folder`,!1,4)}pick(){let e=document.createElement("input");e.type="file",e.accept=".json,application/json",e.onchange=()=>{let t=e.files?.[0];t&&this.read(t).catch(o=>console.error("[kute] settings import:",o))},e.click()}async read(e){if(e.size>rx){u.showNotification("That file is too big for a Kute settings file",!1,4);return}let t=null;try{t=JSON.parse(await e.text())}catch{t=null}if(t?.format!==fg||typeof t.settings!="object"||t.settings===null){u.showNotification("That is not a Kute settings file",!1,4);return}if(typeof t.version!="number"||t.version>gg){u.showNotification("That file comes from a newer Kute, update first",!1,4);return}let o=Object.entries(t.settings).filter(([i,a])=>ax(i,a));if(o.length===0){u.showNotification("That file holds no settings this Kute knows",!1,4);return}let n=typeof t.kute=="string"?` from Kute ${t.kute}`:"";if(await Ce({title:"Import Kute settings",paragraphs:[`${o.length} settings${n} in ${e.name}.`,"They replace your client settings, HUD positions, matchmaker filters and hotkeys. Kute restarts to apply them.","Userscripts, swapper files, custom CSS and your own sky images are files in Documents\\kute and are not part of it."],stay:"Cancel",leave:"Import and restart"})){for(let[i,a]of o)u.settings.data[i]=a,window.chrome.webview.postMessage(`set-config-json ${i} ${JSON.stringify(a)}`);window.chrome.webview.postMessage("restart")}}},lx=new Nd});var Hd={};A(Hd,{default:()=>cx});var zd,cx,Od=w(()=>{"use strict";D();zd=class{constructor(){this.originalGenList=window.windows[22].genList,this.template=document.createElement("template"),u.settings.toggleShowPing=e=>this.toggle(e),this.toggle(!0)}toggle(e){let t=this;e?window.windows[22].genList=function(){return t.modifiedGenList(this)}:window.windows[22].genList=this.originalGenList}modifiedGenList(e){let t=this.originalGenList.call(e);this.template.innerHTML=t;let o=this.template.content.querySelectorAll(".pListPing.material-icons");for(let n of o){let r=n.getAttribute("title");n.classList.remove("pListPing","material-icons"),n.removeAttribute("title"),n.textContent=`${r||"N/A"} `}return this.template.innerHTML}},cx=new zd});var yg,kg=w(()=>{yg=`#kuteSpotifyOverlay{position:absolute;left:463px;bottom:23px;z-index:10;display:flex;align-items:center;gap:12px;box-sizing:border-box;width:320px;min-height:82px;padding:10px;border:1px solid rgba(29,185,84,.7);border-radius:8px;background:#0c120fe0;box-shadow:0 4px 18px #00000059;color:#fff;font-family:Arial,sans-serif;pointer-events:none}#kuteSpotifyOverlay[hidden]{display:none}#kuteSpotifyOverlay.paused{opacity:.72}#kuteSpotifyArtwork{width:60px;height:60px;flex:0 0 60px;border-radius:4px;background:#26302a;object-fit:cover}#kuteSpotifyInfo{min-width:0;flex:1 1 auto}#kuteSpotifyTitle,#kuteSpotifyArtist{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#kuteSpotifyTitle{font-size:14px;font-weight:700}#kuteSpotifyArtist{margin-top:3px;color:#b8c8bc;font-size:12px}#kuteSpotifyProgress{height:3px;margin-top:9px;border-radius:2px;background:#536258;overflow:hidden}#kuteSpotifyProgress>div{height:100%;background:#1db954;transform:scaleX(0);transform-origin:left} -`});var Sg,xg=w(()=>{Sg='
              '});var Fd={};A(Fd,{default:()=>hx});var px,Dd,hx,qd=w(()=>{"use strict";kg();xg();D();px=1e3,Dd=class{constructor(){this.overlay=null,this.playback=null,this.timer=null,this.artwork=null,this.listener=e=>{let{data:t}=e;typeof t!="object"||t===null||("spotify"in t?this.song(t.spotify):"spotifyState"in t&&this.state(t.spotifyState))},u.settings.toggleSpotifyOverlay=e=>this.toggle(e),this.toggle(!!u.settings.data.spotifyOverlay)}toggle(e){if(!e){window.chrome.webview.removeEventListener("message",this.listener),window.chrome.webview.postMessage("spotify-stop"),this.stopProgress(),this.overlay?.remove(),this.overlay=null,this.artwork=null,document.querySelector("#kuteSpotifyOverlayCSS")?.remove();return}if(this.overlay)return;let t=document.createElement("style");t.id="kuteSpotifyOverlayCSS",t.textContent=yg,document.head.append(t),this.overlay=document.createElement("div"),this.overlay.id="kuteSpotifyOverlay",this.overlay.hidden=!0,this.overlay.innerHTML=Sg,(document.querySelector("#uiBase")??document.body).append(this.overlay),window.chrome.webview.addEventListener("message",this.listener),window.chrome.webview.postMessage("spotify-start")}song(e){if(!this.overlay||(this.overlay.hidden=!e,!e))return;let t=this.overlay.querySelector("#kuteSpotifyArtwork");e.artwork!==this.artwork&&(this.artwork=e.artwork,t.src=e.artwork??""),t.alt=e.album,this.overlay.querySelector("#kuteSpotifyTitle").textContent=e.title,this.overlay.querySelector("#kuteSpotifyArtist").textContent=e.artist,this.state(e)}state({playing:e,position:t,duration:o}){this.overlay&&(this.overlay.classList.toggle("paused",!e),this.playback={playing:e,position:t,duration:o,at:performance.now()},this.drawProgress(),e&&this.timer===null?this.timer=window.setInterval(()=>this.drawProgress(),px):e||this.stopProgress())}drawProgress(){let e=this.overlay?.querySelector("#kuteSpotifyProgress > div")??null;if(!e||!this.playback)return;let{playing:t,position:o,duration:n,at:r}=this.playback,i=o+(t?performance.now()-r:0);e.style.transform=`scaleX(${n>0?Math.min(1,i/n).toFixed(4):0})`}stopProgress(){this.timer!==null&&window.clearInterval(this.timer),this.timer=null}},hx=new Dd});var jd={};A(jd,{default:()=>mx});var Kd,mx,Ud=w(()=>{"use strict";D();Kd=class{constructor(){if(!u.version)return;let e=document.createElement("style");e.id="kute_versionTagCSS",e.textContent=` +`,wg=s=>s===void 0?"":`${s} ms`,_d=class{constructor(){this.pings={},this.fetchedAt=0,this.fetching=!1,this.pending=null,this.observer=new MutationObserver(()=>{this.pending===null&&(this.pending=setTimeout(()=>this.scan(),150))});let e=document.createElement("style");e.textContent=cx,document.head.append(e);let t=document.getElementById("menuWindow");t&&(this.menu=t,this.observer.observe(t,{childList:!0,subtree:!0}))}refresh(){this.fetching||Date.now()-this.fetchedAt{this.fetching=!1,this.fetchedAt=Date.now(),e&&(this.pings=e,this.menu?.querySelectorAll(".kutePing").forEach(t=>t.remove()),this.menu?.querySelectorAll(`[${Wo}]`).forEach(t=>t.removeAttribute(Wo)),this.scan())}))}scan(){this.pending=null;let e=document.getElementById("serverHolder");e&&(this.refresh(),Object.keys(this.pings).length!==0&&(this.observer.disconnect(),this.labelRows(e),this.sortRegions(e),this.menu&&this.observer.observe(this.menu,{childList:!0,subtree:!0})))}labelRows(e){for(let t of e.querySelectorAll(`.settNameIn:not([${Wo}])`)){t.setAttribute(Wo,"");let o=/checkedSwitchServer\("([A-Z]+):/.exec(t.getAttribute("onclick")??"")?.[1],n=o?this.pings[ax[o]]:void 0,r=t.querySelector(".serverPing");if(n===void 0||!r)continue;let i=document.createElement("span");i.className="kutePing",i.textContent=wg(n),r.after(i)}}sortRegions(e){let t=[];for(let n of e.children)if(n.classList.contains("setHed")){let r=Array.from(n.childNodes,a=>a.nodeType===Node.TEXT_NODE?a.textContent:"").join("").trim(),i=this.pings[lx[r]];if(i!==void 0&&!n.hasAttribute(Wo)){n.setAttribute(Wo,"");let a=document.createElement("span");a.className="kutePing",a.textContent=wg(i),n.querySelector(".quickJoin")?.before(a)}t.push({nodes:[n],ping:i??-1})}else t.at(-1)?.nodes.push(n);if(t.length<2)return;let o=t.map((n,r)=>({...n,index:r})).sort((n,r)=>n.ping-r.ping||n.index-r.index);if(!o.every((n,r)=>n.index===r))for(let n of o)e.append(...n.nodes)}},dx=new _d});var Od={};A(Od,{default:()=>mx});function hx(s,e){if(JSON.stringify(e)?.length>px)return!1;if(Sg.includes(s))return e===null||typeof e=="object"&&!Array.isArray(e);let t=Eg.find(o=>o.id===s);return!t||typeof e!=typeof t.defaultValue||t.options&&!t.options.includes(e)?!1:typeof e!="number"||Number.isFinite(e)}function xg(){let s=new Date;return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}var kg,yg,ux,px,Sg,Eg,Hd,mx,Fd=w(()=>{"use strict";Zo();F();To();Pt();kg="kute-settings",yg=1,ux=256*1024,px=16*1024,Sg=["hudLayout","matchmakerFilter","hotkeys","nukeCounterConfig","customSkyConfig","kuteIconSlots","kuteIconUrls"],Eg=Object.values(At).filter(s=>"defaultValue"in s);Hd=class{constructor(){u.settingsTransfer={exportFile:()=>this.export(),importFile:()=>this.pick()}}export(){let e=hu(u.settings.data),t=[...Eg.map(i=>i.id),...Sg],o=Object.fromEntries(t.filter(i=>e[i]!==void 0).map(i=>[i,e[i]])),n={format:kg,version:yg,kute:u.version,exported:xg(),settings:o},r=document.createElement("a");r.href=URL.createObjectURL(new Blob([JSON.stringify(n,null,2)],{type:"application/json"})),r.download=`kute-settings-${xg()}.json`,r.click(),setTimeout(()=>URL.revokeObjectURL(r.href),1e4),u.showNotification(`Exported ${Object.keys(o).length} settings to your Downloads folder`,!1,4)}pick(){let e=document.createElement("input");e.type="file",e.accept=".json,application/json",e.onchange=()=>{let t=e.files?.[0];t&&this.read(t).catch(o=>console.error("[kute] settings import:",o))},e.click()}async read(e){if(e.size>ux){u.showNotification("That file is too big for a Kute settings file",!1,4);return}let t=null;try{t=JSON.parse(await e.text())}catch{t=null}if(t?.format!==kg||typeof t.settings!="object"||t.settings===null){u.showNotification("That is not a Kute settings file",!1,4);return}if(typeof t.version!="number"||t.version>yg){u.showNotification("That file comes from a newer Kute, update first",!1,4);return}let o=Object.entries(t.settings).filter(([i,a])=>hx(i,a));if(o.length===0){u.showNotification("That file holds no settings this Kute knows",!1,4);return}let n=typeof t.kute=="string"?` from Kute ${t.kute}`:"";if(await Ce({title:"Import Kute settings",paragraphs:[`${o.length} settings${n} in ${e.name}.`,"They replace your client settings, HUD positions, matchmaker filters and hotkeys. Kute restarts to apply them.","Userscripts, swapper files, custom CSS and your own sky images are files in Documents\\kute and are not part of it."],stay:"Cancel",leave:"Import and restart"})){for(let[i,a]of o)u.settings.data[i]=a,window.chrome.webview.postMessage(`set-config-json ${i} ${JSON.stringify(a)}`);window.chrome.webview.postMessage("restart")}}},mx=new Hd});var qd={};A(qd,{default:()=>fx});var Dd,fx,Kd=w(()=>{"use strict";F();Dd=class{constructor(){this.originalGenList=window.windows[22].genList,this.template=document.createElement("template"),u.settings.toggleShowPing=e=>this.toggle(e),this.toggle(!0)}toggle(e){let t=this;e?window.windows[22].genList=function(){return t.modifiedGenList(this)}:window.windows[22].genList=this.originalGenList}modifiedGenList(e){let t=this.originalGenList.call(e);this.template.innerHTML=t;let o=this.template.content.querySelectorAll(".pListPing.material-icons");for(let n of o){let r=n.getAttribute("title");n.classList.remove("pListPing","material-icons"),n.removeAttribute("title"),n.textContent=`${r||"N/A"} `}return this.template.innerHTML}},fx=new Dd});var Cg,$g=w(()=>{Cg=`#kuteSpotifyOverlay{position:absolute;left:463px;bottom:23px;z-index:10;display:flex;align-items:center;gap:12px;box-sizing:border-box;width:320px;min-height:82px;padding:10px;border:1px solid rgba(29,185,84,.7);border-radius:8px;background:#0c120fe0;box-shadow:0 4px 18px #00000059;color:#fff;font-family:Arial,sans-serif;pointer-events:none}#kuteSpotifyOverlay[hidden]{display:none}#kuteSpotifyOverlay.paused{opacity:.72}#kuteSpotifyArtwork{width:60px;height:60px;flex:0 0 60px;border-radius:4px;background:#26302a;object-fit:cover}#kuteSpotifyInfo{min-width:0;flex:1 1 auto}#kuteSpotifyTitle,#kuteSpotifyArtist{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#kuteSpotifyTitle{font-size:14px;font-weight:700}#kuteSpotifyArtist{margin-top:3px;color:#b8c8bc;font-size:12px}#kuteSpotifyProgress{height:3px;margin-top:9px;border-radius:2px;background:#536258;overflow:hidden}#kuteSpotifyProgress>div{height:100%;background:#1db954;transform:scaleX(0);transform-origin:left} +`});var Tg,Mg=w(()=>{Tg='
              '});var Ud={};A(Ud,{default:()=>wx});var vx,jd,wx,Gd=w(()=>{"use strict";$g();Mg();F();vx=1e3,jd=class{constructor(){this.overlay=null,this.playback=null,this.timer=null,this.artwork=null,this.listener=e=>{let{data:t}=e;typeof t!="object"||t===null||("spotify"in t?this.song(t.spotify):"spotifyState"in t&&this.state(t.spotifyState))},u.settings.toggleSpotifyOverlay=e=>this.toggle(e),this.toggle(!!u.settings.data.spotifyOverlay)}toggle(e){if(!e){window.chrome.webview.removeEventListener("message",this.listener),window.chrome.webview.postMessage("spotify-stop"),this.stopProgress(),this.overlay?.remove(),this.overlay=null,this.artwork=null,document.querySelector("#kuteSpotifyOverlayCSS")?.remove();return}if(this.overlay)return;let t=document.createElement("style");t.id="kuteSpotifyOverlayCSS",t.textContent=Cg,document.head.append(t),this.overlay=document.createElement("div"),this.overlay.id="kuteSpotifyOverlay",this.overlay.hidden=!0,this.overlay.innerHTML=Tg,(document.querySelector("#uiBase")??document.body).append(this.overlay),window.chrome.webview.addEventListener("message",this.listener),window.chrome.webview.postMessage("spotify-start")}song(e){if(!this.overlay||(this.overlay.hidden=!e,!e))return;let t=this.overlay.querySelector("#kuteSpotifyArtwork");e.artwork!==this.artwork&&(this.artwork=e.artwork,t.src=e.artwork??""),t.alt=e.album,this.overlay.querySelector("#kuteSpotifyTitle").textContent=e.title,this.overlay.querySelector("#kuteSpotifyArtist").textContent=e.artist,this.state(e)}state({playing:e,position:t,duration:o}){this.overlay&&(this.overlay.classList.toggle("paused",!e),this.playback={playing:e,position:t,duration:o,at:performance.now()},this.drawProgress(),e&&this.timer===null?this.timer=window.setInterval(()=>this.drawProgress(),vx):e||this.stopProgress())}drawProgress(){let e=this.overlay?.querySelector("#kuteSpotifyProgress > div")??null;if(!e||!this.playback)return;let{playing:t,position:o,duration:n,at:r}=this.playback,i=o+(t?performance.now()-r:0);e.style.transform=`scaleX(${n>0?Math.min(1,i/n).toFixed(4):0})`}stopProgress(){this.timer!==null&&window.clearInterval(this.timer),this.timer=null}},wx=new jd});var Vd={};A(Vd,{default:()=>kx});var Wd,kx,Yd=w(()=>{"use strict";F();Wd=class{constructor(){if(!u.version)return;let e=document.createElement("style");e.id="kute_versionTagCSS",e.textContent=` #matchInfo > div:first-of-type::before { content: ${JSON.stringify(`Kute v${u.version}`)}; display: block; color: #35e0e8; - }`,document.head.append(e)}},mx=new Kd});var Cg={};var fx,Eg,gx,$g,Gd,Wd=w(()=>{"use strict";fx=[{key:"scoreboardName.js",name:"Scoreboard Name",author:"Kute"}],Eg="kute_withdrawn",gx=1e4,$g=localStorage.getItem(Eg)??"",Gd=fx.filter(s=>!$g.split(",").includes(s.key));if(Gd.length>0){let s=0,e=t=>{let o=t.data?.userscripts?.groups;if(!Array.isArray(o))return;window.chrome.webview.removeEventListener("message",e),clearTimeout(s);let n=o.flatMap(r=>r.scripts??[]);for(let r of Gd)n.find(a=>a.key===r.key&&a.meta?.name===r.name&&a.meta?.author===r.author)&&(window.chrome.webview.postMessage(`scripts-toggle ${JSON.stringify({key:r.key,enabled:!1})}`),window.chrome.webview.postMessage(`scripts-delete ${JSON.stringify({key:r.key})}`));localStorage.setItem(Eg,[...$g.split(",").filter(Boolean),...Gd.map(r=>r.key)].join(","))};s=setTimeout(()=>window.chrome.webview.removeEventListener("message",e),gx),window.chrome.webview.addEventListener("message",e),window.chrome.webview.postMessage("scripts-list {}")}});var Lg,Vd=w(()=>{Lg=iu({"./modules/about.js":()=>Promise.resolve().then(()=>(mi(),Ju)),"./modules/accountEndMessage.js":()=>Promise.resolve().then(()=>(vi(),bi)),"./modules/accountManager.js":()=>Promise.resolve().then(()=>(Mi(),Ci)),"./modules/api.js":()=>Promise.resolve().then(()=>(It(),dp)),"./modules/args.js":()=>Promise.resolve().then(()=>(Ai(),hp)),"./modules/autoDetect/bench.js":()=>Promise.resolve().then(()=>(Zr(),Iu)),"./modules/autoDetect/clientBench.js":()=>Promise.resolve().then(()=>(Ki(),vp)),"./modules/autoDetect/decide.js":()=>Promise.resolve().then(()=>(ji(),kp)),"./modules/autoDetect/gameSettings.js":()=>Promise.resolve().then(()=>(Xi(),Yi)),"./modules/autoDetect/index.js":()=>Promise.resolve().then(()=>(aa(),ia)),"./modules/autoDetect/metrics.js":()=>Promise.resolve().then(()=>(yn(),Au)),"./modules/autoDetect/policy.js":()=>Promise.resolve().then(()=>(ks(),fp)),"./modules/autoDetect/sample.js":()=>Promise.resolve().then(()=>(Qi(),Cp)),"./modules/autoDetect/scene.js":()=>Promise.resolve().then(()=>(Yr(),Tu)),"./modules/badges.js":()=>Promise.resolve().then(()=>(ha(),pa)),"./modules/betterChat.js":()=>Promise.resolve().then(()=>(ga(),fa)),"./modules/bpClaimAll.js":()=>Promise.resolve().then(()=>(ba(),eh)),"./modules/changelog.js":()=>Promise.resolve().then(()=>(Ra(),xh)),"./modules/chatDraft.js":()=>Promise.resolve().then(()=>(Na(),Ia)),"./modules/chatLogs.js":()=>Promise.resolve().then(()=>(za(),Ba)),"./modules/clanColors.js":()=>Promise.resolve().then(()=>(Da(),Oa)),"./modules/confirmPopup.js":()=>Promise.resolve().then(()=>(Rt(),ep)),"./modules/customCss.js":()=>Promise.resolve().then(()=>(vn(),ku)),"./modules/customSky.js":()=>Promise.resolve().then(()=>(Ka(),qa)),"./modules/diagnostics.js":()=>Promise.resolve().then(()=>(Va(),Wa)),"./modules/externalQueue.js":()=>Promise.resolve().then(()=>(tl(),Kh)),"./modules/fixes.js":()=>Promise.resolve().then(()=>(ol(),jh)),"./modules/gameFpsLimit.js":()=>Promise.resolve().then(()=>(as(),ai)),"./modules/hotkeys.js":()=>Promise.resolve().then(()=>(Po(),Si)),"./modules/hpEnemyCounter.js":()=>Promise.resolve().then(()=>(rl(),nl)),"./modules/hsSound.js":()=>Promise.resolve().then(()=>(ll(),al)),"./modules/hudEditor/editor.js":()=>Promise.resolve().then(()=>(pl(),ul)),"./modules/hudEditor/elements.js":()=>Promise.resolve().then(()=>(sr(),Yh)),"./modules/hudEditor/index.js":()=>Promise.resolve().then(()=>(rr(),dl)),"./modules/importSettings.js":()=>Promise.resolve().then(()=>(hl(),tm)),"./modules/inventoryScroll.js":()=>Promise.resolve().then(()=>(gl(),fl)),"./modules/keystrokes.js":()=>Promise.resolve().then(()=>(yl(),kl)),"./modules/kuteCss.js":()=>Promise.resolve().then(()=>(ti(),ei)),"./modules/kuteIcons/index.js":()=>Promise.resolve().then(()=>($l(),El)),"./modules/kuteIcons/slots.js":()=>Promise.resolve().then(()=>(bn(),bu)),"./modules/leftClick.js":()=>Promise.resolve().then(()=>(gn(),fu)),"./modules/linuxUpdate.js":()=>Promise.resolve().then(()=>(Al(),Tl)),"./modules/logoBadge.js":()=>Promise.resolve().then(()=>(di(),ci)),"./modules/managers/customCss.js":()=>Promise.resolve().then(()=>(_l(),Nl)),"./modules/managers/editor.js":()=>Promise.resolve().then(()=>(Oo(),Ih)),"./modules/managers/index.js":()=>Promise.resolve().then(()=>(jl(),zm)),"./modules/managers/popup.js":()=>Promise.resolve().then(()=>(Ds(),Tm)),"./modules/managers/registry.js":()=>Promise.resolve().then(()=>(es(),vu)),"./modules/managers/stylesheets.js":()=>Promise.resolve().then(()=>(ur(),Am)),"./modules/managers/swapper.js":()=>Promise.resolve().then(()=>(Kl(),ql)),"./modules/managers/userscripts.js":()=>Promise.resolve().then(()=>(Hl(),zl)),"./modules/maps.js":()=>Promise.resolve().then(()=>(tr(),Nh)),"./modules/market.js":()=>Promise.resolve().then(()=>(Of(),Vy)),"./modules/market/alerts.js":()=>Promise.resolve().then(()=>(fr(),Zm)),"./modules/market/analytics.js":()=>Promise.resolve().then(()=>(wr(),cf)),"./modules/market/api.js":()=>Promise.resolve().then(()=>(xe(),Om)),"./modules/market/cards.js":()=>Promise.resolve().then(()=>(Xl(),Km)),"./modules/market/chart.js":()=>Promise.resolve().then(()=>(jc(),If)),"./modules/market/chartData.js":()=>Promise.resolve().then(()=>(yr(),vf)),"./modules/market/contrib.js":()=>Promise.resolve().then(()=>(ic(),nf)),"./modules/market/contributionData.js":()=>Promise.resolve().then(()=>(nc(),ef)),"./modules/market/contributionEvidence.js":()=>Promise.resolve().then(()=>(bc(),ff)),"./modules/market/element.js":()=>Promise.resolve().then(()=>(_e(),af)),"./modules/market/exchangeEvidence.js":()=>Promise.resolve().then(()=>(wc(),gf)),"./modules/market/index.js":()=>Promise.resolve().then(()=>($r(),Vc)),"./modules/market/intelligence.js":()=>Promise.resolve().then(()=>(en(),mf)),"./modules/market/itemSearch.js":()=>Promise.resolve().then(()=>(Ko(),pf)),"./modules/market/navigation.js":()=>Promise.resolve().then(()=>(vr(),rf)),"./modules/market/presentation.js":()=>Promise.resolve().then(()=>(pe(),Fm)),"./modules/market/terminal.js":()=>Promise.resolve().then(()=>(Gc(),Uc)),"./modules/market/trade.js":()=>Promise.resolve().then(()=>(Zl(),Gm)),"./modules/market/types.js":()=>Promise.resolve().then(()=>(Ve(),Dm)),"./modules/market/views/analyze.js":()=>Promise.resolve().then(()=>(_c(),$f)),"./modules/market/views/compactList.js":()=>Promise.resolve().then(()=>(Fc(),Af)),"./modules/market/views/deals.js":()=>Promise.resolve().then(()=>(Ac(),xf)),"./modules/market/views/help.js":()=>Promise.resolve().then(()=>(Kc(),Pf)),"./modules/market/views/indices.js":()=>Promise.resolve().then(()=>(Rc(),Sf)),"./modules/market/views/intelligence.js":()=>Promise.resolve().then(()=>(zc(),Cf)),"./modules/market/views/intro.js":()=>Promise.resolve().then(()=>(xr(),Mf)),"./modules/market/views/item.js":()=>Promise.resolve().then(()=>(Sc(),wf)),"./modules/market/views/movers.js":()=>Promise.resolve().then(()=>(Mc(),yf)),"./modules/market/views/overview.js":()=>Promise.resolve().then(()=>(dc(),uf)),"./modules/market/views/portfolio.js":()=>Promise.resolve().then(()=>(Ic(),Ef)),"./modules/market/views/search.js":()=>Promise.resolve().then(()=>(pc(),hf)),"./modules/market/views/table.js":()=>Promise.resolve().then(()=>(Oc(),Tf)),"./modules/market/views/watchlist.js":()=>Promise.resolve().then(()=>($c(),kf)),"./modules/market/watchlist.js":()=>Promise.resolve().then(()=>(Ut(),Vm)),"./modules/matchmaker.js":()=>Promise.resolve().then(()=>(Qc(),Zc)),"./modules/menuTimer.js":()=>Promise.resolve().then(()=>(sd(),od)),"./modules/modDownload.js":()=>Promise.resolve().then(()=>(ad(),id)),"./modules/motionBlur.js":()=>Promise.resolve().then(()=>(ud(),dd)),"./modules/nukeCounter.js":()=>Promise.resolve().then(()=>(fd(),md)),"./modules/playerLists.js":()=>Promise.resolve().then(()=>(jn(),Fp)),"./modules/presence.js":()=>Promise.resolve().then(()=>(da(),Kp)),"./modules/privateMatch.js":()=>Promise.resolve().then(()=>(zn(),Sp)),"./modules/queueSound.js":()=>Promise.resolve().then(()=>(el(),Dh)),"./modules/rampBoost.js":()=>Promise.resolve().then(()=>(hn(),pu)),"./modules/rankProgress.js":()=>Promise.resolve().then(()=>(vd(),bd)),"./modules/rankedAlert.js":()=>Promise.resolve().then(()=>(yd(),kd)),"./modules/realPing.js":()=>Promise.resolve().then(()=>(Ed(),Sd)),"./modules/recovery.js":()=>Promise.resolve().then(()=>(Md(),Cd)),"./modules/renderFps.js":()=>Promise.resolve().then(()=>(Ld(),Ad)),"./modules/serverPings.js":()=>Promise.resolve().then(()=>(Id(),Pd)),"./modules/sessionRecovery.js":()=>Promise.resolve().then(()=>(kn(),$u)),"./modules/settingsTransfer.js":()=>Promise.resolve().then(()=>(Bd(),_d)),"./modules/showPing.js":()=>Promise.resolve().then(()=>(Od(),Hd)),"./modules/spotifyOverlay.js":()=>Promise.resolve().then(()=>(qd(),Fd)),"./modules/versionTag.js":()=>Promise.resolve().then(()=>(Ud(),jd)),"./modules/withdrawn.js":()=>Promise.resolve().then(()=>(Wd(),Cg))})});var Ng={};A(Ng,{default:()=>xx});function Rg(s){return`toggle${s.charAt(0).toUpperCase()+s.slice(1)}`}function Mg(s){let e=s.disabledBy?Vt[s.disabledBy]:null;return e&&u.settings.data[e.id]===!0?e:null}function Pg(s,e){let t=u.settings[Rg(s)];if(typeof t=="function"){t(e);return}if(e)try{Lg(`./modules/${s}.js`).catch(()=>{})}catch{}}function Ig(s,e){switch(s){case"exitButton":U("#clientExit").style.display=`${e?"flex":"none"}`;break;case"menuTimer":e?Promise.resolve().then(()=>ue(ed(),1)).then(t=>{let o=document.createElement("style");o.id="kute_menuTimerCSS",o.textContent=t.default,document.head.append(o)}):document.querySelector("#kute_menuTimerCSS")?.remove();break;case"classicMenu":e?Promise.resolve().then(()=>ue(pi(),1)).then(t=>{let o=document.createElement("style");o.id="kute_classicMenuCSS",o.textContent=t.default,document.head.append(o)}):document.querySelector("#kute_classicMenuCSS")?.remove();break;case"cleanUI":{e?Promise.resolve().then(()=>ue(ui(),1)).then(t=>{let o=document.createElement("style");o.id="kute_cleanCSS",o.textContent=t.default,document.head.append(o)}):document.querySelector("#kute_cleanCSS")?.remove();break}case"textSelect":{if(e){let t=document.createElement("style");t.id="kute_textSelectCSS",t.textContent="#chatHolder * { user-select: text }",document.head.append(t)}else document.querySelector("#kute_textSelectCSS")?.remove();break}default:break}}function kx(s,e){for(let t of Object.values(Vt)){if(t.disabledBy!==s)continue;let o=!e&&!!u.settings.data[t.id],n=document.querySelector(`#${t.id}`);if(n instanceof HTMLInputElement){n.checked=o,n.disabled=e;let r=n.closest("label");r&&(r.style.cssText=e?Tr:"",r.title=e?`Off while ${Vt[s].name} is on`:"")}Pg(t.id,o)}}var Yd,Tr,bx,vx,wx,Vt,Tg,Ag,yx,Xd,xx,_g=w(()=>{"use strict";Xo();D();Ae();Co();hn();Vd();Yd=new Map,Tr="opacity: 0.35; cursor: not-allowed",bx='window.setSetting("rawMouse"',vx="Controlled by Kute's Raw Input setting",wx="Not available on Linux",Vt=Tt;u.settings.changeSetting=(s,e,t)=>{if(e==="")return;let o=document.querySelector(`#${s}`);o instanceof HTMLInputElement&&(o.value=String(e),o.type==="checkbox"&&(o.checked=e===!0));let n=e;typeof n=="string"&&/^-?\d*\.?\d+$/.test(n)&&(n.includes(".")?n=Number.parseFloat(n):n=Number.parseInt(n,10));let r=document.querySelector(`#slid_input_${s}`);if(r&&t){r.value=String(n),clearTimeout(Yd.get(s)),Yd.set(s,setTimeout(()=>{u.settings.data[s]=n,window.chrome.webview.postMessage(`set-config, ${s}, ${n}`),Yd.delete(s)},500));return}switch(s){case"obsCapturePlugin":if(n&&!confirm("Install the Kute Capture plugin into OBS? OBS must be closed, and Windows may ask for administrator permission.")){ke("#obsCapturePlugin").checked=!1;return}window.chrome.webview.postMessage(`obs-plugin, ${n}`);break;case"rampBoost":n?He()||Zt(!0):Zt(!1);break;default:Ig(s,n);break}let i=Rg(s);if(typeof u.settings[i]!="function")try{Lg(`./modules/${s}.js`).catch(()=>{})}catch{}else u.settings[i](n);u.settings.data[s]=n,window.chrome.webview.postMessage(`set-config, ${s}, ${n}`),kx(s,n===!0)};Tg=' *',Ag=' *',yx=()=>{let s=e=>`window.chrome.webview.postMessage('open-url, ${e}')`;return[["About","info","kuteTopBlue",`${Ue}.showAboutPopup()`],["Website","language","kuteTopBlue",s("https://kute.lol")],["Source Code","code","kuteTopPink",s("https://github.com/NullDev/Kute")],["Report Issue","bug_report","kuteTopPink",s("https://github.com/NullDev/Kute/issues/choose")],["Manage Swapper","swap_horiz","kuteTopOrange",`${Ue}.swapperManager.open()`],["Manage Userscripts","extension","kuteTopOrange",`${Ue}.userscriptManager.open()`]]},Xd=class{constructor(){this.settingsWindow=window.windows[0],this.init()}init(){let e=this.settingsWindow.getSettings;this.settingsWindow.getSettings=(...t)=>{let o=this.lockRawMouse(e.call(this.settingsWindow,...t)),n=this.getCSettings();if(!n)return o;let r=o.startsWith("
              ");return(r?o.slice(6):o)+n+(r?"
              ":"")},this.settingsWindow.getCSettings=()=>this.getCSettings(),u.settings.togglePerformanceMode=t=>{for(let o of pn(u.settings.data,t)){let n=u.settings.data[o];Ig(o,n),Pg(o,n===!0&&!Mg(Vt[o]))}setTimeout(()=>this.rerender(),0)},u.openKuteSettings=()=>{window.showWindow(1),this.settingsWindow.changeTab(this.settingsWindow.tabs[this.settingsWindow.settingType].length-1)},window.chrome.webview.addEventListener("message",t=>{let o=t.data;if(o?.type==="obs-plugin"){if(!o.ok){u.settings.data.obsCapturePlugin=!1;let n=document.querySelector("#obsCapturePlugin");n&&(n.checked=!1)}u.showNotification(o.message,!1,5)}})}rerender(){let e=this.settingsWindow.tabs[this.settingsWindow.settingType];(this.settingsWindow.tabIndex===e.length-1||this.settingsWindow.settingSearch)&&this.settingsWindow.changeTab(this.settingsWindow.tabIndex)}lockRawMouse(e){let t=e.indexOf(bx);if(t<0)return e;let o=e.lastIndexOf("",t),r=e.lastIndexOf("",r);if(i<0||i>o)return e;let a=e.slice(o,n).replace(/\s+checked\b/,"")+(u.settings.data.rawInput&&u.platform!=="linux"?" checked":"")+" disabled>",l=u.platform==="linux"?wx:vx;return e.slice(0,i)+` title="${l}">`+e.slice(i+1,o)+a+e.slice(n+1)}searchMatches(e){let t=this.settingsWindow.settingSearch.toLowerCase()||"";return[e.name,e.category,e.description??""].some(o=>o.toLowerCase().includes(t))}generateHtml(e){let t=u.settings.data[e.id],o=e.buttonAction?.replaceAll("{{kute}}",Ue).replaceAll('"',""")??"",n=e.requiresLogin&&document.querySelector("#signedInHeaderBar")===null,r="",i=e.type==="checkbox"?"margin-right: 8px; ":"";switch(e.button&&n?r=`
              ${e.button}
              `:e.button&&(r=`
              ${e.button}
              `),e.type){case"checkbox":{let a=Mg(e);if(a)return`
              ");return(r?o.slice(6):o)+n+(r?"
              ":"")},this.settingsWindow.getCSettings=()=>this.getCSettings(),u.settings.togglePerformanceMode=t=>{for(let o of mn(u.settings.data,t)){let n=u.settings.data[o];Hg(o,n),zg(o,n===!0&&!Pg(Jt[o]))}setTimeout(()=>this.rerender(),0)},u.openKuteSettings=()=>{window.showWindow(1),this.settingsWindow.changeTab(this.settingsWindow.tabs[this.settingsWindow.settingType].length-1)},window.chrome.webview.addEventListener("message",t=>{let o=t.data;if(o?.type==="obs-plugin"){if(!o.ok){u.settings.data.obsCapturePlugin=!1;let n=document.querySelector("#obsCapturePlugin");n&&(n.checked=!1)}u.showNotification(o.message,!1,5)}})}rerender(){let e=this.settingsWindow.tabs[this.settingsWindow.settingType];(this.settingsWindow.tabIndex===e.length-1||this.settingsWindow.settingSearch)&&this.settingsWindow.changeTab(this.settingsWindow.tabIndex)}lockRawMouse(e){let t=e.indexOf(Sx);if(t<0)return e;let o=e.lastIndexOf("",t),r=e.lastIndexOf("",r);if(i<0||i>o)return e;let a=e.slice(o,n).replace(/\s+checked\b/,"")+(u.settings.data.rawInput&&u.platform!=="linux"?" checked":"")+" disabled>",l=u.platform==="linux"?$x:Ex;return e.slice(0,i)+` title="${l}">`+e.slice(i+1,o)+a+e.slice(n+1)}searchMatches(e){let t=this.settingsWindow.settingSearch.toLowerCase()||"";return[e.name,e.category,e.description??""].some(o=>o.toLowerCase().includes(t))}generateHtml(e){let t=u.settings.data[e.id],o=e.buttonAction?.replaceAll("{{kute}}",Ue).replaceAll('"',""")??"",n=e.requiresLogin&&document.querySelector("#signedInHeaderBar")===null,r="",i=e.type==="checkbox"?"margin-right: 8px; ":"";switch(e.button&&n?r=`
              ${e.button}
              `:e.button&&(r=`
              ${e.button}
              `),e.type){case"checkbox":{let a=Pg(e);if(a)return` - ${r}`;if(n)return`
              `:""}},xx=new Xd});var au=`@keyframes chat-moveup{0%{transform:translateY(375px)}to{transform:translateY(0)}}@keyframes death-ui-moveup{0%{transform:translateY(340px)}to{transform:translateY(0)}}.entry-info{z-index:9}#gameNameHolder{top:33px}#teamSelector{bottom:290px!important}div #setHed_local,.kuteSettings .setHed:first-of-type{margin-top:10px}.setBodH{margin-top:5px}.carousel,.onSpect #hpEnemyCounter,#settHolder div.setHed:not([id]),#newUserGuide,#phonePop,#signupRewardsButton,#streamContainer,#aHider,#adCon,#rightABox,#aContainer,#topRightAdHolder,#braveWarning,.webpush-container,.nav-notif-section+.verticalSeparator,.endAHolder{display:none!important}.death-ui-bottom{backdrop-filter:none;animation:none}#menuAccountUsername{border:0}.ranked-matchmaking-status{box-shadow:none!important}#homeStoreAdC,#menuAccountUsername,#uiBase.onDeathScrn #chatHolder,.ranked-matchmaking-status{animation:none!important}#phonePop{top:0;bottom:0}.chatItem{max-width:387px}.moreKrunkerPopup{width:600px}.moreKrunkerClient{display:none!important}#mLevelCont{background-color:transparent}.bpBtn.skip.disabled{background:#333;border-color:#444;color:#888;cursor:not-allowed;opacity:1!important}.kuteTopButtons{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 4px}.kuteTopButton{display:flex;align-items:center;justify-content:center;gap:10px;padding:8px 10px;border:3px solid var(--kute-top, #35e0e8);border-radius:4px;background:#222;color:#fff;font-size:21px;cursor:pointer;user-select:none;transition:background .1s}.kuteTopButton:hover{background:#333}.kuteTopButton .material-icons{font-size:24px}.kuteTopBlue{--kute-top: #35e0e8}.kuteTopPink{--kute-top: #f5479b}.kuteTopOrange{--kute-top: #ff8a1f}#menuWindow .kuteHiddenBanner{display:flex;align-items:center;gap:10px;margin:8px 0 4px;padding:8px 12px;border:3px solid #eb5656;border-radius:4px;background:#eb56562e;color:#fff;font-size:17px;line-height:27px}#menuWindow .kuteHiddenBanner .material-icons{color:#eb5656;font-size:26px}.kuteLegend{float:right;margin-right:8px;color:#aaa;font-size:16px}.kuteLegend span{margin-left:12px}#menuWindow .settName .kuteDesc{margin-top:2px;color:#ffffff73;font-size:15px;line-height:1.3}#menuWindow .switch input:disabled+.slider{opacity:.35;cursor:not-allowed} -`;D();Ae();hn();gn();bn();es();vn();kn();var an=location.pathname==="/kute-bench";an&&Promise.resolve().then(()=>(Zr(),Iu));!an&&localStorage.getItem("krk_advanced")===null&&localStorage.setItem("krk_advanced","1");an||Qt();an||Ne.then(()=>{u.settings?.data?.kuteCss===!0&&Promise.resolve().then(()=>(ti(),ei)).catch(()=>{})});location.hostname==="krunker.io"&&location.pathname==="/"&&Ne.then(()=>{u.settings?.data?.accountEndMessage&&localStorage.setItem("kro_setngss_endMessage","")});var Bg=!0;window.OffCliV=!0;window.closeClient=()=>window.chrome.webview.postMessage("close");document.addEventListener("DOMContentLoaded",()=>{if(an)return;Fr(),Promise.resolve().then(()=>as()),Promise.resolve().then(()=>di());let s=document.createElement("style");s.textContent=au,document.head.append(s);let e=null;Br(HTMLCanvasElement,"addEventListener",t=>{let[o,n]=t;o==="wheel"&&(e=n)}),window.chrome.webview.addEventListener("message",t=>{typeof t.data?.wheel=="number"&&e?.(new WheelEvent("wheel",{deltaY:t.data.wheel}))}),window.addEventListener("wheel",t=>{if(!document.pointerLockElement){for(let o of t.composedPath()){if(o===document.body||o===document.documentElement)break;if(!(o instanceof Element))continue;let n=getComputedStyle(o),r=(n.overflowY==="auto"||n.overflowY==="scroll")&&o.scrollHeight>o.clientHeight,i=(n.overflowX==="auto"||n.overflowX==="scroll")&&o.scrollWidth>o.clientWidth;if(r||i)return}t.preventDefault()}},{capture:!0,passive:!1}),Br(HTMLCanvasElement,"requestPointerLock",function(t,o){Zo(),Hr(),window.chrome.webview.postMessage("drag, false"),window.chrome.webview.postMessage("throttle, game");let n=u.platform!=="linux"&&u?.settings?.data?.rawInput;return o.call(this,{...t[0],unadjustedMovement:n})}),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement?window.chrome.webview.postMessage("throttle, game"):(window.chrome.webview.postMessage("drag, true"),window.chrome.webview.postMessage("throttle, menu"))}),Ne.then(()=>{u.settings.data.hidePopularNow===!0&&(u.settings.data.hidePopularNow=!1,window.chrome.webview.postMessage("set-config, hidePopularNow, false"),u.settings.data.cleanUI=!0,window.chrome.webview.postMessage("set-config, cleanUI, true")),u.settings.data.cleanUI&&Promise.resolve().then(()=>ue(ui(),1)).then(t=>{let o=document.createElement("style");o.id="kute_cleanCSS",o.textContent=t.default,document.head.append(o)})}),Ne.then(()=>{u.settings.data.classicMenu&&Promise.resolve().then(()=>ue(pi(),1)).then(t=>{let o=document.createElement("style");o.id="kute_classicMenuCSS",o.textContent=t.default,document.head.append(o)})})},{once:!0});Object.defineProperty(window,"gameLoaded",{async set(s){if(!s||(await Ne,window.chrome.webview.postMessage("game-updated"),!Bg))return;sessionStorage.getItem("justLaunched")===null?sessionStorage.setItem("justLaunched","true"):sessionStorage.setItem("justLaunched","false"),Bg=!1,localStorage.setItem("logs","true"),U("#compBtnLst").insertAdjacentHTML("beforeend",` + ${r.description?`
              ${r.description.replaceAll("<","<")}
              `:""}

              ${i==="give"?"You give":"You receive"}

              @@ -1083,28 +1083,28 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del
              - ${p} + ${h} KR ${c?"Partial estimate. Unvalued items excluded.":"Estimated value, including KR"}
              ${ko(`kmPick${i}`,i,"Add an item...")}
              - ${e[i].length?e[i].map((h,f)=>{let m=a?.items.find(b=>b.skin===h.skin),g=m&&!m.unknown?T(m.lineValue)+" KR":"Value unavailable";return P` + ${e[i].length?e[i].map((p,m)=>{let f=a?.items.find(b=>b.skin===p.skin),g=f&&!f.unknown?T(f.lineValue)+" KR":"Value unavailable";return P`
              - ${me(h)} + ${me(p)}
              ${g} - ${m&&!m.unknown?`${T(m.fair)} KR each`:"Needs more evidence"} + ${f&&!f.unknown?`${T(f.fair)} KR each`:"Needs more evidence"}
              @@ -1230,10 +1230,10 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>sf;)this.sent.del `).join("")}
              - `}var Fc=w(()=>{"use strict";_e();pe()});var Rf,Lf=w(()=>{Rf=`

              The numbers

              K
              Kute estimate

              What the item is worth, from recent sales and trades.

              Ask
              Lowest ask

              The cheapest listing right now.

              %
              Ask vs estimate

              Plus means the ask is above the estimate, minus means below.

              0-100
              Evidence score

              How much data backs the estimate. Low means take it with a grain of salt.

              Activity grades

              A
              Very active

              Sells often, easy to get rid of.

              B
              Active

              Sells regularly.

              C
              Moderate

              Might take a while or a lower price.

              D
              Thin

              Few sales, hard to sell.

              F
              Very limited

              Barely trades, the estimate is a rough guess.

              Trade verdicts

              +
              Favorable

              You get more value than you give.

              =
              Fair

              Both sides are about even.

              -
              Unfavorable

              You give more value than you get.

              ?
              Not enough evidence

              Some items can't be valued well enough to say.

              Estimates, not promises. Kute never buys, sells or trades for you.

              `});var Pf={};A(Pf,{helpView:()=>qc});function qc(s){return{html:tn(s,"How it works.","What the numbers mean.")+Rf}}var Kc=w(()=>{"use strict";Lf();xr()});var If={};A(If,{default:()=>jo});var jo,jc=w(()=>{"use strict";pe();yr();jo=class{constructor(e,t,o,n={}){this.host=e,this.points=t,this.series=o,this.options=n,this.observer=new ResizeObserver(r=>this.draw(r[0]?.contentRect.width??700)),this.observer.observe(e),this.draw(e.clientWidth||700)}destroy(){this.observer.disconnect(),this.host.replaceChildren()}draw(e){let{host:t,series:o,options:n}=this,r=Math.max(8,Math.ceil(this.points.length/(n.zoom??1))),i=Math.max(Math.min(r,this.points.length),this.points.length-(n.offset??0)),a=this.points.slice(Math.max(0,i-r),i),l=!!n.candles,c=a.flatMap(j=>l?[...j.ask?[j.ask.low,j.ask.high]:[],...j.values.slice(1)]:j.values).flatMap(j=>j!==null&&Number.isFinite(j)?[j]:[]);if(!c.length){t.innerHTML=`
              ${l?"No sampled asking-price candles in this period. Try a longer range or switch to the line chart.":"No price observations in this period. Try a longer range."}
              `;return}let d=Math.max(280,e),p=270,h=62,f=d-16,m=20,g=n.volume?196:230,b=Math.min(...c),v=Math.max(...c),k=v-b||Math.max(1,v*.1),E=Math.max(0,b-k*.12),L=v+k*.12,x=a[0].t,I=((l?a.at(-1)?.end:a.at(-1)?.t)??x)-x||864e5,_=j=>h+(j-x)/I*(f-h),H=j=>g-(j-E)/(L-E)*(g-m),G=j=>l&&j.end?(j.t+j.end)/2:j.t,J=n.stepMs??864e5,B=o.map((j,X)=>kc(a,X,J)),re="";for(let j=0;j<=4;j++){let X=E+(L-E)*j/4,Y=L-E<10?X.toFixed(2):T(X);re+=`${S(Y)}`}for(let j=0;j<=4;j++){let X=x+I*j/4,Y=new Date(X),y=I<=2*864e5?Y.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",timeZone:"UTC"}):Y.toLocaleDateString([],{month:"short",day:"numeric",timeZone:"UTC"}),C="middle";j===0&&(C="start"),j===4&&(C="end"),re+=`${S(y)}`}if(n.volume){let j=Math.max(1,...a.map(Y=>Y.volume??0)),X=Math.max(1,Math.min(14,(f-h)/Math.max(1,a.length)*.6));re+=a.filter(Y=>Y.volume!==null&&Y.volume!==void 0).map(Y=>``).join("")}if(l){let j=Math.max(3,Math.min(14,(f-h)*J/I*.65));for(let X of a){let Y=X.ask;if(!Y)continue;let y="flat",C="#9698a7";Y.samples<=1?y="single":Y.close!==Y.open&&(y=Y.close>Y.open?"up":"down",C=Y.close>Y.open?"#71d9b0":"#f68c9b");let R=_(G(X));re+=``,Y.samples>1&&(re+=``),y==="single"||y==="flat"?re+=``:re+=``,re+=""}}for(let[j,X]of o.entries()){if(l&&j===0)continue;let Y="",y="";for(let C of B[j]){let R=`M${_(G(C.from))},${H(C.from.values[j])} L${_(G(C.to))},${H(C.to.values[j])} `;C.gap?n.connectGaps&&(y+=R):Y+=R}for(let C of a){let R=C.values[j];R==null||!Number.isFinite(R)||(re+=``)}re+=``,y&&(re+=``)}t.innerHTML=`j.label).join(", "))}">${re}`;let je=t.querySelector("svg"),be=t.querySelector(".chartTooltip"),Ee=t.querySelector(".crosshair");je.addEventListener("pointermove",j=>{let X=je.getBoundingClientRect(),Y=(j.clientX-X.left)*d/X.width,y=x+(Y-h)/(f-h)*I,C=a.find(Z=>l&&Z.end&&y>=Z.t&&yMath.abs(G(ge)-y)Z.gap&&_(Z.from.t)+5=C.end),z=C.ask,N=o.map((Z,ge)=>`${S(Z.label)} ${T(C.values[ge])}`).join("
              ");l&&(N="No quote in this bucket",z?.samples===1&&!K?N=`Observed ask ${T(z.close)}
              1 sampled quote; direction unknown`:z&&!K&&(N=`Open ${T(z.open)} · High ${T(z.high)}
              Low ${T(z.low)} · Close ${T(z.close)}
              ${S(z.samples)} sampled quotes`),C.partial&&!K&&(N+="
              Partial interval")),l&&!K&&o.length>1&&(N+="
              Last observed in interval:
              "+o.slice(1).map((Z,ge)=>`${S(Z.label)} ${T(C.values[ge+1])}`).join("
              ")),R&&(N="No price observation in this gap.
              Dashed line connects recorded values.");let V=Z=>new Date(Z).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",timeZone:"UTC"}),de=V(R||K?y:C.t);l&&C.end&&!K&&(de=`${V(C.t)} to ${V(C.end)}`),be.innerHTML=`${S(de)} UTC
              ${N}${!R&&!K&&n.volume&&C.volume!==null&&C.volume!==void 0?`
              Reported sales ${C.volume}`:""}`,be.hidden=!1,be.style.left=`${Math.max(0,Math.min(Y+14,d-240))}px`,Ee.setAttribute("x1",String(R||K?Y:_(G(C)))),Ee.setAttribute("x2",String(R||K?Y:_(G(C)))),Ee.setAttribute("visibility","visible")}),je.addEventListener("pointerleave",()=>{be.hidden=!0,Ee.setAttribute("visibility","hidden")})}}});var Nf=we((oE,Ky)=>{Ky.exports=' '});var Uc={};A(Uc,{Terminal:()=>Er,default:()=>Uy});var _f,Bf,Sr,zf,Hf,yo,Er,jy,Uy,Gc=w(()=>{"use strict";D();vr();dc();pc();Sc();$c();Mc();Ac();Rc();Ic();_c();zc();xr();Oc();Fc();Kc();xe();Ve();pe();Ut();jc();Ko();_f="kute_market_advanced",Bf="kute_market_layout",Sr=[.8,.9,1,1.1,1.2,1.35,1.5],zf=480,Hf=360,yo=()=>({q:"",rarity:"",type:"",sort:"volume",page:1,budget:"",minSales:""}),Er=class{constructor(){this.overlay=null,this.shadow=null,this.controller=null,this.chart=null,this.returnFocus=null,this.tab="overview",this.discoveryTab="search",this.arg=void 0,this.generation=0,this.advanced=!1,this.view=null,this.saved=new Map,this.previous="search",this.portfolioFilter="",this.itemSearch=null,this.holdings=[],this.tradeRevision=0,this.analyzer={give:[],get:[],giveKr:0,getKr:0};try{this.advanced=localStorage.getItem(_f)==="1"}catch{this.advanced=!1}this.layout={width:0,height:0,scale:1,maximized:!1};try{let e=JSON.parse(localStorage.getItem(Bf)??"{}");Number.isFinite(e.width)&&(this.layout.width=e.width),Number.isFinite(e.height)&&(this.layout.height=e.height),Sr.includes(e.scale)&&(this.layout.scale=e.scale),this.layout.maximized=e.maximized===!0}catch{}}frame(){return this.shadow?.querySelector("#km")??null}applyLayout(){let e=this.frame();if(!e)return;let{scale:t,maximized:o}=this.layout,n=window.innerWidth-(o?0:16),r=window.innerHeight-(o?0:16),i=o?n:Math.max(Math.min(zf,n),Math.min(this.layout.width||Math.min(1320,window.innerWidth*.96),n)),a=o?r:Math.max(Math.min(Hf,r),Math.min(this.layout.height||Math.min(880,window.innerHeight*.92),r));e.style.zoom=String(t),e.style.width=`${i/t}px`,e.style.height=`${a/t}px`,e.classList.toggle("maximized",o);let l=this.shadow?.querySelector("#kmMaximize");l?.setAttribute("aria-pressed",String(o)),l?.setAttribute("title",o?"Restore size (double-click the header)":"Maximize (double-click the header)");let c=this.shadow?.querySelector("#kmScaleValue");c&&(c.textContent=`${Math.round(t*100)}%`)}saveLayout(){this.applyLayout();try{localStorage.setItem(Bf,JSON.stringify(this.layout))}catch{}}rescale(e){let t=Sr.indexOf(this.layout.scale);this.layout.scale=e?Sr[Math.max(0,Math.min(Sr.length-1,t+e))]:1,this.saveLayout()}toggleMaximized(){this.layout.maximized=!this.layout.maximized,this.saveLayout()}startResize(e){let{target:t}=e,o=this.frame();if(!(t instanceof HTMLElement)||!o||e.button!==0)return;let{grip:n}=t.dataset;if(!n)return;e.preventDefault(),t.setPointerCapture(e.pointerId);let r=o.getBoundingClientRect(),{clientX:i,clientY:a}=e,l=Number(n.includes("e"))-Number(n.includes("w")),c=Number(n.includes("s"))-Number(n.includes("n"));o.classList.add("resizing");let d=h=>{l&&(this.layout.width=Math.max(zf,r.width+2*l*(h.clientX-i))),c&&(this.layout.height=Math.max(Hf,r.height+2*c*(h.clientY-a))),this.applyLayout()},p=()=>{t.removeEventListener("pointermove",d),o.classList.remove("resizing"),this.layout.width=Math.round(Math.min(this.layout.width,window.innerWidth-16)),this.layout.height=Math.round(Math.min(this.layout.height,window.innerHeight-16)),this.saveLayout()};t.addEventListener("pointermove",d),t.addEventListener("lostpointercapture",p,{once:!0})}async open(e,t){if(!document.pointerLockElement){if(!this.overlay){let o=await Promise.resolve().then(()=>ue(Nf(),1)).catch(()=>null);if(!o||document.pointerLockElement)return;if(this.overlay){await this.show(e??this.tab,t);return}this.returnFocus=document.activeElement instanceof HTMLElement?document.activeElement:null;let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483647;display:grid;place-items:center;background:rgba(7,8,13,.78)";let r=document.createElement("div");n.append(r),this.shadow=r.attachShadow({mode:"open"}),this.shadow.innerHTML=o.default,this.overlay=n,this.controller=new AbortController;let{signal:i}=this.controller;document.body.append(n),this.applyLayout(),window.addEventListener("resize",()=>this.applyLayout(),{signal:i}),this.shadow.addEventListener("pointerdown",l=>this.startResize(l),{signal:i}),this.shadow.querySelector(".kmHead")?.addEventListener("dblclick",l=>{l.target instanceof Element&&!l.target.closest("button,input,label,form")&&this.toggleMaximized()},{signal:i}),this.itemSearch=new qo(this.shadow,i,(l,c)=>this.selectItem(l,c),(l,c)=>this.show(c==="discover"?this.searchTab():"search",{...c==="discover"?this.readFilters(1):yo(),q:l,page:1}),()=>this.holdings),this.shadow.addEventListener("click",l=>this.click(l),{signal:i}),this.shadow.addEventListener("change",l=>this.changed(l),{signal:i}),this.shadow.addEventListener("input",l=>this.input(l),{signal:i}),this.shadow.querySelector("#kmSearchForm")?.addEventListener("submit",l=>{l.preventDefault(),this.show("search",{...yo(),q:this.value("#kmGlobalSearch")})},{signal:i}),n.addEventListener("click",l=>{l.target===n&&this.close()},{signal:i}),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&this.close()},{signal:i}),document.addEventListener("keydown",l=>this.key(l),{signal:i,capture:!0});let a=this.shadow.querySelector("#kmAdvanced");a.checked=this.advanced,this.shadow.querySelector("#kmGlobalSearch")?.focus()}await this.show(e??this.tab,t)}}close(){this.remember(),this.controller?.abort(),this.controller=null,this.itemSearch=null,this.chart?.destroy(),this.chart=null,this.overlay?.remove(),this.overlay=null,this.shadow=null,this.generation++,this.returnFocus?.focus({preventScroll:!0})}remember(){let e=this.shadow?.querySelector("#kmBody");this.tab==="item"&&(this.arg=this.itemState()),(this.tab==="search"||this.tab==="active")&&this.shadow?.querySelector("#kmQ")&&(this.arg=this.readFilters(this.searchState().page)),this.tab==="deals"&&this.shadow?.querySelector("#kmDealBudget")&&(this.arg={budget:this.value("#kmDealBudget")}),e&&this.saved.set(this.tab,{arg:this.arg,scroll:e.scrollTop})}value(e){return this.shadow?.querySelector(e)?.value??""}searchState(){let e={...yo(),...this.tab==="active"?{minSales:"1",sort:"liquidity"}:{},...typeof this.arg=="object"&&this.arg?this.arg:{}};return this.tab==="active"&&(e.minSales=String(Math.max(1,Number(e.minSales)||1))),e}searchTab(){return this.tab==="active"?"active":"search"}itemState(){let e={skin:typeof this.arg=="number"?this.arg:0,range:"1M",candles:!1,overlay:"none",zoom:1,offset:0,...typeof this.arg=="object"&&this.arg?this.arg:{}};if(this.view?.item?.skin.skin===e.skin)for(let[t,o]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"}))this.shadow?.querySelector("#"+o)&&Object.assign(e,{[t]:this.value("#"+o)});return e}async show(e,t,o=!1){if(!this.shadow)return;this.remember(),e==="item"&&this.tab!=="item"&&(this.previous=this.tab);let n=this.saved.get(this.tab)?.scroll??0,r=this.saved.get(e);this.tab=e,this.arg=t===void 0?r?.arg:t;let i=++this.generation;this.itemSearch?.dismiss(),this.chart?.destroy(),this.chart=null;let a=this.shadow.querySelector("#kmBody"),l=br.includes(e);l&&(this.discoveryTab=e);let c=this.shadow.querySelector("#kmDiscoverTabs");c.hidden=!l;for(let h of c.querySelectorAll("button")){let f=h.dataset.discover===e;h.setAttribute("aria-selected",String(f)),h.tabIndex=f?0:-1}l?(a.setAttribute("role","tabpanel"),a.setAttribute("aria-labelledby",`kmDiscover-${e}`)):(a.removeAttribute("role"),a.removeAttribute("aria-labelledby")),a.setAttribute("aria-busy","true"),a.innerHTML=fe("Loading market data","Fetching the latest available observations.");let d=this.shadow.querySelector("#kmTitle");d&&(d.textContent=Ys[e]??"Market");let p=e==="item"?this.previous:e;br.includes(p)&&(p="search"),p==="indices"&&(p="overview");for(let h of this.shadow.querySelectorAll("[data-nav]")){let f=h.dataset.nav===p;h.classList.toggle("on",f),f?h.setAttribute("aria-current","page"):h.removeAttribute("aria-current")}this.updateWatchCount();try{let h=await this.render(e);if(i!==this.generation||!this.shadow)return;this.view=h,this.holdings=h.holdings??[],a.innerHTML=h.html,a.scrollTop=t===void 0?r?.scroll??0:0,o&&(a.scrollTop=n);let f=this.shadow.querySelector("#kmFootRight");f&&(f.textContent=h.asOf?`${h.asOfLabel??"Estimates calculated"} ${We(Math.max(0,Date.now()-h.asOf))} ago`:"Estimates from observed market data");let m=a.querySelector(".chart");if(m&&h.points&&h.series&&(this.chart=new jo(m,h.points,h.series,h.chartOptions)),e==="portfolio"&&this.filterHoldings(),e==="item"){let g=this.arg;for(let[b,v]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"})){let k=a.querySelector("#"+v),E=g?.[b];k&&typeof E=="string"&&(k.value=E)}this.updatePlanner(),this.filterListings()}}catch{if(i!==this.generation)return;a.innerHTML=fe("Market data is unavailable","Try again in a moment. Your saved watchlist stays on this device.",'')}finally{i===this.generation&&a.setAttribute("aria-busy","false")}}updateWatchCount(){let e=this.shadow?.querySelector("#kmWatchCount");e&&(e.textContent=String(Se().length))}async render(e){switch(e){case"overview":return this.overview();case"intelligence":return this.intelligence();case"search":return this.search();case"active":return this.search();case"item":return this.item();case"watchlist":return this.watchlist();case"movers":return this.movers();case"deals":return this.deals();case"indices":return this.indices();case"portfolio":return this.portfolio();case"analyze":return this.analyze();default:return this.help()}}intelligence(){return Bc(this)}unavailable(){return{html:fe("Market data is unavailable",W.lastError||"The market server could not be reached. Try again in a moment.",'')}}intro(e,t,o=""){return tn(this,e,t,o)}table(e){return Hc(this,e)}compactList(e){return Dc(this,e)}overview(){return cc(this)}search(){return uc(this)}item(){return xc(this)}watchlist(){return Ec(this)}movers(){return Cc(this)}deals(){return Tc(this)}indices(){return Lc(this)}portfolio(){return Pc(this)}async selectItem(e,t){if(t!=="give"&&t!=="get"){this.show("item",e.skin);return}let o=this.analyzer[t].find(n=>n.skin===e.skin);o?o.count=Math.min(1e4,o.count+1):this.analyzer[t].push({...e,count:1}),await this.show("analyze",this.arg,!0),this.tab==="analyze"&&this.shadow?.querySelector(`#kmPick${t}`)?.focus({preventScroll:!0})}analyze(){return Nc(this)}async refreshTrade(){let{generation:e}=this,t=++this.tradeRevision;this.shadow?.querySelector("#kmTradeOutcome")?.setAttribute("aria-busy","true");let n=this.shadow?.querySelector("#kmFootRight");n&&(n.textContent="Updating trade estimates...");let r=await this.analyze();if(e!==this.generation||t!==this.tradeRevision||!this.shadow)return;let i=document.createElement("div");i.innerHTML=r.html;for(let a of[".tradeSideHead>span",".tradeTotal",".tradeItemValue","#kmTradeOutcome"]){let l=i.querySelectorAll(a);this.shadow.querySelectorAll(a).forEach((c,d)=>{l[d]&&c.replaceWith(l[d])})}n&&(n.textContent=r.asOf?`Estimates calculated ${We(Math.max(0,Date.now()-r.asOf))} ago`:"Estimates from observed market data"),this.view=r}help(){return qc(this)}updatePlanner(){let e=this.shadow?.querySelector("#kmPlannerResult");if(!e||!this.view?.item)return;let t=Number(this.value("#kmSellPrice")),o=Number(this.value("#kmSellQuantity"));if(!Number.isFinite(t)||t<=0||!Number.isInteger(o)||o<1||o>1e4){e.textContent="Enter a positive asking price and a quantity from 1 to 10,000.";return}let n=this.view.listings;if(!n){e.textContent="Competing listings are unavailable. Try again when market data is available.";return}let r=n?.listings.filter(a=>a.pricen.listings.length;e.innerHTML=`${i?"At least ":""}${r} cheaper listing${r===1?"":"s"} observed${n?"":" (listing data unavailable)"}.
              + `}var Fc=w(()=>{"use strict";_e();pe()});var Rf,Lf=w(()=>{Rf=`

              The numbers

              K
              Kute estimate

              What the item is worth, from recent sales and trades.

              Ask
              Lowest ask

              The cheapest listing right now.

              %
              Ask vs estimate

              Plus means the ask is above the estimate, minus means below.

              0-100
              Evidence score

              How much data backs the estimate. Low means take it with a grain of salt.

              Activity grades

              A
              Very active

              Sells often, easy to get rid of.

              B
              Active

              Sells regularly.

              C
              Moderate

              Might take a while or a lower price.

              D
              Thin

              Few sales, hard to sell.

              F
              Very limited

              Barely trades, the estimate is a rough guess.

              Trade verdicts

              +
              Favorable

              You get more value than you give.

              =
              Fair

              Both sides are about even.

              -
              Unfavorable

              You give more value than you get.

              ?
              Not enough evidence

              Some items can't be valued well enough to say.

              Estimates, not promises. Kute never buys, sells or trades for you.

              `});var Pf={};A(Pf,{helpView:()=>qc});function qc(s){return{html:tn(s,"How it works.","What the numbers mean.")+Rf}}var Kc=w(()=>{"use strict";Lf();xr()});var If={};A(If,{default:()=>jo});var jo,jc=w(()=>{"use strict";pe();yr();jo=class{constructor(e,t,o,n={}){this.host=e,this.points=t,this.series=o,this.options=n,this.observer=new ResizeObserver(r=>this.draw(r[0]?.contentRect.width??700)),this.observer.observe(e),this.draw(e.clientWidth||700)}destroy(){this.observer.disconnect(),this.host.replaceChildren()}draw(e){let{host:t,series:o,options:n}=this,r=Math.max(8,Math.ceil(this.points.length/(n.zoom??1))),i=Math.max(Math.min(r,this.points.length),this.points.length-(n.offset??0)),a=this.points.slice(Math.max(0,i-r),i),l=!!n.candles,c=a.flatMap(j=>l?[...j.ask?[j.ask.low,j.ask.high]:[],...j.values.slice(1)]:j.values).flatMap(j=>j!==null&&Number.isFinite(j)?[j]:[]);if(!c.length){t.innerHTML=`
              ${l?"No sampled asking-price candles in this period. Try a longer range or switch to the line chart.":"No price observations in this period. Try a longer range."}
              `;return}let d=Math.max(280,e),h=270,p=62,m=d-16,f=20,g=n.volume?196:230,b=Math.min(...c),v=Math.max(...c),k=v-b||Math.max(1,v*.1),E=Math.max(0,b-k*.12),L=v+k*.12,x=a[0].t,I=((l?a.at(-1)?.end:a.at(-1)?.t)??x)-x||864e5,_=j=>p+(j-x)/I*(m-p),H=j=>g-(j-E)/(L-E)*(g-f),G=j=>l&&j.end?(j.t+j.end)/2:j.t,J=n.stepMs??864e5,B=o.map((j,X)=>kc(a,X,J)),re="";for(let j=0;j<=4;j++){let X=E+(L-E)*j/4,Y=L-E<10?X.toFixed(2):T(X);re+=`${S(Y)}`}for(let j=0;j<=4;j++){let X=x+I*j/4,Y=new Date(X),y=I<=2*864e5?Y.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",timeZone:"UTC"}):Y.toLocaleDateString([],{month:"short",day:"numeric",timeZone:"UTC"}),C="middle";j===0&&(C="start"),j===4&&(C="end"),re+=`${S(y)}`}if(n.volume){let j=Math.max(1,...a.map(Y=>Y.volume??0)),X=Math.max(1,Math.min(14,(m-p)/Math.max(1,a.length)*.6));re+=a.filter(Y=>Y.volume!==null&&Y.volume!==void 0).map(Y=>``).join("")}if(l){let j=Math.max(3,Math.min(14,(m-p)*J/I*.65));for(let X of a){let Y=X.ask;if(!Y)continue;let y="flat",C="#9698a7";Y.samples<=1?y="single":Y.close!==Y.open&&(y=Y.close>Y.open?"up":"down",C=Y.close>Y.open?"#71d9b0":"#f68c9b");let R=_(G(X));re+=``,Y.samples>1&&(re+=``),y==="single"||y==="flat"?re+=``:re+=``,re+=""}}for(let[j,X]of o.entries()){if(l&&j===0)continue;let Y="",y="";for(let C of B[j]){let R=`M${_(G(C.from))},${H(C.from.values[j])} L${_(G(C.to))},${H(C.to.values[j])} `;C.gap?n.connectGaps&&(y+=R):Y+=R}for(let C of a){let R=C.values[j];R==null||!Number.isFinite(R)||(re+=``)}re+=``,y&&(re+=``)}t.innerHTML=`j.label).join(", "))}">${re}`;let je=t.querySelector("svg"),be=t.querySelector(".chartTooltip"),Ee=t.querySelector(".crosshair");je.addEventListener("pointermove",j=>{let X=je.getBoundingClientRect(),Y=(j.clientX-X.left)*d/X.width,y=x+(Y-p)/(m-p)*I,C=a.find(Z=>l&&Z.end&&y>=Z.t&&yMath.abs(G(ge)-y)Z.gap&&_(Z.from.t)+5=C.end),z=C.ask,N=o.map((Z,ge)=>`${S(Z.label)} ${T(C.values[ge])}`).join("
              ");l&&(N="No quote in this bucket",z?.samples===1&&!K?N=`Observed ask ${T(z.close)}
              1 sampled quote; direction unknown`:z&&!K&&(N=`Open ${T(z.open)} · High ${T(z.high)}
              Low ${T(z.low)} · Close ${T(z.close)}
              ${S(z.samples)} sampled quotes`),C.partial&&!K&&(N+="
              Partial interval")),l&&!K&&o.length>1&&(N+="
              Last observed in interval:
              "+o.slice(1).map((Z,ge)=>`${S(Z.label)} ${T(C.values[ge+1])}`).join("
              ")),R&&(N="No price observation in this gap.
              Dashed line connects recorded values.");let V=Z=>new Date(Z).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",timeZone:"UTC"}),de=V(R||K?y:C.t);l&&C.end&&!K&&(de=`${V(C.t)} to ${V(C.end)}`),be.innerHTML=`${S(de)} UTC
              ${N}${!R&&!K&&n.volume&&C.volume!==null&&C.volume!==void 0?`
              Reported sales ${C.volume}`:""}`,be.hidden=!1,be.style.left=`${Math.max(0,Math.min(Y+14,d-240))}px`,Ee.setAttribute("x1",String(R||K?Y:_(G(C)))),Ee.setAttribute("x2",String(R||K?Y:_(G(C)))),Ee.setAttribute("visibility","visible")}),je.addEventListener("pointerleave",()=>{be.hidden=!0,Ee.setAttribute("visibility","hidden")})}}});var Nf=we((oE,Ky)=>{Ky.exports=' '});var Uc={};A(Uc,{Terminal:()=>Er,default:()=>Uy});var _f,Bf,Sr,zf,Hf,yo,Er,jy,Uy,Gc=w(()=>{"use strict";D();vr();dc();pc();Sc();$c();Mc();Ac();Rc();Ic();_c();zc();xr();Oc();Fc();Kc();xe();Ve();pe();Ut();jc();Ko();_f="kute_market_advanced",Bf="kute_market_layout",Sr=[.8,.9,1,1.1,1.2,1.35,1.5],zf=480,Hf=360,yo=()=>({q:"",rarity:"",type:"",sort:"volume",page:1,budget:"",minSales:""}),Er=class{constructor(){this.overlay=null,this.shadow=null,this.controller=null,this.chart=null,this.returnFocus=null,this.tab="overview",this.discoveryTab="search",this.arg=void 0,this.generation=0,this.advanced=!1,this.view=null,this.saved=new Map,this.previous="search",this.portfolioFilter="",this.itemSearch=null,this.holdings=[],this.tradeRevision=0,this.analyzer={give:[],get:[],giveKr:0,getKr:0};try{this.advanced=localStorage.getItem(_f)==="1"}catch{this.advanced=!1}this.layout={width:0,height:0,scale:1,maximized:!1};try{let e=JSON.parse(localStorage.getItem(Bf)??"{}");Number.isFinite(e.width)&&(this.layout.width=e.width),Number.isFinite(e.height)&&(this.layout.height=e.height),Sr.includes(e.scale)&&(this.layout.scale=e.scale),this.layout.maximized=e.maximized===!0}catch{}}frame(){return this.shadow?.querySelector("#km")??null}applyLayout(){let e=this.frame();if(!e)return;let{scale:t,maximized:o}=this.layout,n=window.innerWidth-(o?0:16),r=window.innerHeight-(o?0:16),i=o?n:Math.max(Math.min(zf,n),Math.min(this.layout.width||Math.min(1320,window.innerWidth*.96),n)),a=o?r:Math.max(Math.min(Hf,r),Math.min(this.layout.height||Math.min(880,window.innerHeight*.92),r));e.style.zoom=String(t),e.style.width=`${i/t}px`,e.style.height=`${a/t}px`,e.classList.toggle("maximized",o);let l=this.shadow?.querySelector("#kmMaximize");l?.setAttribute("aria-pressed",String(o)),l?.setAttribute("title",o?"Restore size (double-click the header)":"Maximize (double-click the header)");let c=this.shadow?.querySelector("#kmScaleValue");c&&(c.textContent=`${Math.round(t*100)}%`)}saveLayout(){this.applyLayout();try{localStorage.setItem(Bf,JSON.stringify(this.layout))}catch{}}rescale(e){let t=Sr.indexOf(this.layout.scale);this.layout.scale=e?Sr[Math.max(0,Math.min(Sr.length-1,t+e))]:1,this.saveLayout()}toggleMaximized(){this.layout.maximized=!this.layout.maximized,this.saveLayout()}startResize(e){let{target:t}=e,o=this.frame();if(!(t instanceof HTMLElement)||!o||e.button!==0)return;let{grip:n}=t.dataset;if(!n)return;e.preventDefault(),t.setPointerCapture(e.pointerId);let r=o.getBoundingClientRect(),{clientX:i,clientY:a}=e,l=Number(n.includes("e"))-Number(n.includes("w")),c=Number(n.includes("s"))-Number(n.includes("n"));o.classList.add("resizing");let d=p=>{l&&(this.layout.width=Math.max(zf,r.width+2*l*(p.clientX-i))),c&&(this.layout.height=Math.max(Hf,r.height+2*c*(p.clientY-a))),this.applyLayout()},h=()=>{t.removeEventListener("pointermove",d),o.classList.remove("resizing"),this.layout.width=Math.round(Math.min(this.layout.width,window.innerWidth-16)),this.layout.height=Math.round(Math.min(this.layout.height,window.innerHeight-16)),this.saveLayout()};t.addEventListener("pointermove",d),t.addEventListener("lostpointercapture",h,{once:!0})}async open(e,t){if(!document.pointerLockElement){if(!this.overlay){let o=await Promise.resolve().then(()=>ue(Nf(),1)).catch(()=>null);if(!o||document.pointerLockElement)return;if(this.overlay){await this.show(e??this.tab,t);return}this.returnFocus=document.activeElement instanceof HTMLElement?document.activeElement:null;let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483647;display:grid;place-items:center;background:rgba(7,8,13,.78)";let r=document.createElement("div");n.append(r),this.shadow=r.attachShadow({mode:"open"}),this.shadow.innerHTML=o.default,this.overlay=n,this.controller=new AbortController;let{signal:i}=this.controller;document.body.append(n),this.applyLayout(),window.addEventListener("resize",()=>this.applyLayout(),{signal:i}),this.shadow.addEventListener("pointerdown",l=>this.startResize(l),{signal:i}),this.shadow.querySelector(".kmHead")?.addEventListener("dblclick",l=>{l.target instanceof Element&&!l.target.closest("button,input,label,form")&&this.toggleMaximized()},{signal:i}),this.itemSearch=new qo(this.shadow,i,(l,c)=>this.selectItem(l,c),(l,c)=>this.show(c==="discover"?this.searchTab():"search",{...c==="discover"?this.readFilters(1):yo(),q:l,page:1}),()=>this.holdings),this.shadow.addEventListener("click",l=>this.click(l),{signal:i}),this.shadow.addEventListener("change",l=>this.changed(l),{signal:i}),this.shadow.addEventListener("input",l=>this.input(l),{signal:i}),this.shadow.querySelector("#kmSearchForm")?.addEventListener("submit",l=>{l.preventDefault(),this.show("search",{...yo(),q:this.value("#kmGlobalSearch")})},{signal:i}),n.addEventListener("click",l=>{l.target===n&&this.close()},{signal:i}),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&this.close()},{signal:i}),document.addEventListener("keydown",l=>this.key(l),{signal:i,capture:!0});let a=this.shadow.querySelector("#kmAdvanced");a.checked=this.advanced,this.shadow.querySelector("#kmGlobalSearch")?.focus()}await this.show(e??this.tab,t)}}close(){this.remember(),this.controller?.abort(),this.controller=null,this.itemSearch=null,this.chart?.destroy(),this.chart=null,this.overlay?.remove(),this.overlay=null,this.shadow=null,this.generation++,this.returnFocus?.focus({preventScroll:!0})}remember(){let e=this.shadow?.querySelector("#kmBody");this.tab==="item"&&(this.arg=this.itemState()),(this.tab==="search"||this.tab==="active")&&this.shadow?.querySelector("#kmQ")&&(this.arg=this.readFilters(this.searchState().page)),this.tab==="deals"&&this.shadow?.querySelector("#kmDealBudget")&&(this.arg={budget:this.value("#kmDealBudget")}),e&&this.saved.set(this.tab,{arg:this.arg,scroll:e.scrollTop})}value(e){return this.shadow?.querySelector(e)?.value??""}searchState(){let e={...yo(),...this.tab==="active"?{minSales:"1",sort:"liquidity"}:{},...typeof this.arg=="object"&&this.arg?this.arg:{}};return this.tab==="active"&&(e.minSales=String(Math.max(1,Number(e.minSales)||1))),e}searchTab(){return this.tab==="active"?"active":"search"}itemState(){let e={skin:typeof this.arg=="number"?this.arg:0,range:"1M",candles:!1,overlay:"none",zoom:1,offset:0,...typeof this.arg=="object"&&this.arg?this.arg:{}};if(this.view?.item?.skin.skin===e.skin)for(let[t,o]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"}))this.shadow?.querySelector("#"+o)&&Object.assign(e,{[t]:this.value("#"+o)});return e}async show(e,t,o=!1){if(!this.shadow)return;this.remember(),e==="item"&&this.tab!=="item"&&(this.previous=this.tab);let n=this.saved.get(this.tab)?.scroll??0,r=this.saved.get(e);this.tab=e,this.arg=t===void 0?r?.arg:t;let i=++this.generation;this.itemSearch?.dismiss(),this.chart?.destroy(),this.chart=null;let a=this.shadow.querySelector("#kmBody"),l=br.includes(e);l&&(this.discoveryTab=e);let c=this.shadow.querySelector("#kmDiscoverTabs");c.hidden=!l;for(let p of c.querySelectorAll("button")){let m=p.dataset.discover===e;p.setAttribute("aria-selected",String(m)),p.tabIndex=m?0:-1}l?(a.setAttribute("role","tabpanel"),a.setAttribute("aria-labelledby",`kmDiscover-${e}`)):(a.removeAttribute("role"),a.removeAttribute("aria-labelledby")),a.setAttribute("aria-busy","true"),a.innerHTML=fe("Loading market data","Fetching the latest available observations.");let d=this.shadow.querySelector("#kmTitle");d&&(d.textContent=Ys[e]??"Market");let h=e==="item"?this.previous:e;br.includes(h)&&(h="search"),h==="indices"&&(h="overview");for(let p of this.shadow.querySelectorAll("[data-nav]")){let m=p.dataset.nav===h;p.classList.toggle("on",m),m?p.setAttribute("aria-current","page"):p.removeAttribute("aria-current")}this.updateWatchCount();try{let p=await this.render(e);if(i!==this.generation||!this.shadow)return;this.view=p,this.holdings=p.holdings??[],a.innerHTML=p.html,a.scrollTop=t===void 0?r?.scroll??0:0,o&&(a.scrollTop=n);let m=this.shadow.querySelector("#kmFootRight");m&&(m.textContent=p.asOf?`${p.asOfLabel??"Estimates calculated"} ${We(Math.max(0,Date.now()-p.asOf))} ago`:"Estimates from observed market data");let f=a.querySelector(".chart");if(f&&p.points&&p.series&&(this.chart=new jo(f,p.points,p.series,p.chartOptions)),e==="portfolio"&&this.filterHoldings(),e==="item"){let g=this.arg;for(let[b,v]of Object.entries({price:"kmSellPrice",quantity:"kmSellQuantity",listingMax:"kmListingMax",serialMax:"kmSerialMax",wearMax:"kmWearMax",ageMax:"kmAgeMax",sellerMax:"kmSellerMax"})){let k=a.querySelector("#"+v),E=g?.[b];k&&typeof E=="string"&&(k.value=E)}this.updatePlanner(),this.filterListings()}}catch{if(i!==this.generation)return;a.innerHTML=fe("Market data is unavailable","Try again in a moment. Your saved watchlist stays on this device.",'')}finally{i===this.generation&&a.setAttribute("aria-busy","false")}}updateWatchCount(){let e=this.shadow?.querySelector("#kmWatchCount");e&&(e.textContent=String(Se().length))}async render(e){switch(e){case"overview":return this.overview();case"intelligence":return this.intelligence();case"search":return this.search();case"active":return this.search();case"item":return this.item();case"watchlist":return this.watchlist();case"movers":return this.movers();case"deals":return this.deals();case"indices":return this.indices();case"portfolio":return this.portfolio();case"analyze":return this.analyze();default:return this.help()}}intelligence(){return Bc(this)}unavailable(){return{html:fe("Market data is unavailable",W.lastError||"The market server could not be reached. Try again in a moment.",'')}}intro(e,t,o=""){return tn(this,e,t,o)}table(e){return Hc(this,e)}compactList(e){return Dc(this,e)}overview(){return cc(this)}search(){return uc(this)}item(){return xc(this)}watchlist(){return Ec(this)}movers(){return Cc(this)}deals(){return Tc(this)}indices(){return Lc(this)}portfolio(){return Pc(this)}async selectItem(e,t){if(t!=="give"&&t!=="get"){this.show("item",e.skin);return}let o=this.analyzer[t].find(n=>n.skin===e.skin);o?o.count=Math.min(1e4,o.count+1):this.analyzer[t].push({...e,count:1}),await this.show("analyze",this.arg,!0),this.tab==="analyze"&&this.shadow?.querySelector(`#kmPick${t}`)?.focus({preventScroll:!0})}analyze(){return Nc(this)}async refreshTrade(){let{generation:e}=this,t=++this.tradeRevision;this.shadow?.querySelector("#kmTradeOutcome")?.setAttribute("aria-busy","true");let n=this.shadow?.querySelector("#kmFootRight");n&&(n.textContent="Updating trade estimates...");let r=await this.analyze();if(e!==this.generation||t!==this.tradeRevision||!this.shadow)return;let i=document.createElement("div");i.innerHTML=r.html;for(let a of[".tradeSideHead>span",".tradeTotal",".tradeItemValue","#kmTradeOutcome"]){let l=i.querySelectorAll(a);this.shadow.querySelectorAll(a).forEach((c,d)=>{l[d]&&c.replaceWith(l[d])})}n&&(n.textContent=r.asOf?`Estimates calculated ${We(Math.max(0,Date.now()-r.asOf))} ago`:"Estimates from observed market data"),this.view=r}help(){return qc(this)}updatePlanner(){let e=this.shadow?.querySelector("#kmPlannerResult");if(!e||!this.view?.item)return;let t=Number(this.value("#kmSellPrice")),o=Number(this.value("#kmSellQuantity"));if(!Number.isFinite(t)||t<=0||!Number.isInteger(o)||o<1||o>1e4){e.textContent="Enter a positive asking price and a quantity from 1 to 10,000.";return}let n=this.view.listings;if(!n){e.textContent="Competing listings are unavailable. Try again when market data is available.";return}let r=n?.listings.filter(a=>a.pricen.listings.length;e.innerHTML=`${i?"At least ":""}${r} cheaper listing${r===1?"":"s"} observed${n?"":" (listing data unavailable)"}.
              ${T(t*o)} KR gross if all ${o} sell · ${it(t/this.view.item.skin.fair-1)} vs estimate.`}filterHoldings(){let e=this.portfolioFilter.toLocaleLowerCase().trim();for(let t of this.shadow?.querySelectorAll("tr[data-skin]")??[]){let o=t;o.hidden=!o.querySelector(".itemIdentity")?.textContent?.toLocaleLowerCase().includes(e)}}filterListings(){let e=this.value("#kmListingMax"),t=this.value("#kmSerialMax"),o=this.value("#kmWearMax"),n=this.value("#kmAgeMax"),r=this.value("#kmSellerMax");for(let c of this.shadow?.querySelectorAll("#kmListingRows tr")??[]){let d=c;d.hidden=!!(e&&Number(d.dataset.price)>Number(e))||!!(t&&(!d.dataset.serial||Number(d.dataset.serial)>Number(t)))||!!(o&&(!d.dataset.wear||Number(d.dataset.wear)>Number(o)))||!!(n&&(!d.dataset.age||Number(d.dataset.age)>Number(n)))||!!(r&&(!d.dataset.sellerCount||Number(d.dataset.sellerCount)>Number(r)))}let i=this.shadow?.querySelector("#kmListingCount"),l=[...this.shadow?.querySelectorAll("#kmListingRows tr")??[]].filter(c=>!c.hidden).length;i&&(i.textContent=`${l} sampled listings shown; ${this.view?.listings?.total??"unknown"} reported listed.`)}applyFilters(e=1){this.show(this.searchTab(),this.readFilters(e))}readFilters(e){return{q:this.value("#kmQ").trim(),rarity:this.value("#kmRarity"),type:this.value("#kmType"),sort:this.value("#kmSort"),budget:this.value("#kmBudget"),minSales:this.value("#kmSales"),page:e}}click(e){let t=e.target instanceof Element?e.target.closest("button,tr[data-skin],tr[data-index-name],tr[data-category]"):null;if(!t||t.hasAttribute("disabled"))return;let o=t.dataset;if(o.externalUrl){e.preventDefault();try{let n=new URL(o.externalUrl);if(n.protocol!=="https:"||n.username||n.password||n.port)return;if(!(["github.com","kute.lol","krunker.io"].includes(n.hostname)||n.hostname==="discord.com"&&n.pathname.startsWith("/invite/"))){u.showNotification("This news link is not supported by Kute.",!1,6);return}if(n.hostname==="krunker.io"&&!u.hostFeatures?.includes("krunker-links")){u.showNotification("Update the Kute application to open Krunker news links.",!1,6);return}window.chrome.webview.postMessage(`open-url, ${n.href}`)}catch{}return}if(o.intelKind!==void 0){this.show("intelligence",o.intelKind);return}if(t.id==="kmClose"){this.close();return}if(t.id==="kmMaximize"){this.toggleMaximized();return}if(o.scale!==void 0){this.rescale(Number(o.scale));return}if(o.discover){if(o.discover===this.tab)return;o.discover==="deals"&&!this.saved.has("deals")&&(this.tab==="search"||this.tab==="active")?this.show("deals",{budget:this.value("#kmBudget")}):this.show(o.discover);return}if(o.nav==="search"){this.show(this.discoveryTab);return}if(o.nav){this.show(o.nav);return}if(o.skin){this.show("item",Number(o.skin));return}if(o.category){this.show("search",{...yo(),type:o.category,minSales:"1"});return}if(o.page){this.applyFilters(Number(o.page));return}if(o.range){this.show("item",{...this.itemState(),range:o.range,zoom:1,offset:0},!0);return}if(o.chartMode){this.show("item",{...this.itemState(),candles:o.chartMode==="candles"},!0);return}if(o.pan!==void 0){this.show("item",{...this.itemState(),offset:Number(o.pan)},!0);return}if(o.zoom){this.show("item",{...this.itemState(),zoom:Number(o.zoom),offset:o.zoom==="1"?0:this.itemState().offset},!0);return}if(o.window){this.show("movers",o.window);return}if(o.indexName){this.show("indices",o.indexName);return}if(o.unwatch){if(!wo(Se().filter(n=>n.skin!==Number(o.unwatch)))){this.storageError();return}this.show("watchlist",this.arg,!0);return}if(o.remove!==void 0&&o.side){this.analyzer[o.side].splice(Number(o.remove),1),this.show("analyze",this.arg,!0);return}switch(o.action){case"discover":this.show("search",yo());break;case"reset-search":this.show(this.searchTab(),this.tab==="active"?{...yo(),minSales:"1",sort:"liquidity"}:yo());break;case"back":this.show(this.previous);break;case"retry":this.retry();break;case"filters":this.applyFilters();break;case"deal-budget":this.show("deals",{budget:this.value("#kmDealBudget")});break;case"inventory":this.show("portfolio",this.value("#kmName").trim());break;case"analyze":this.show("analyze",this.arg,!0);break;case"clear-trade":this.analyzer={give:[],get:[],giveKr:0,getKr:0},this.show("analyze");break;case"watch":if(this.view?.item){if(!Ql(this.view.item.skin)){this.storageError();return}this.show("item",this.arg,!0)}break;default:break}}storageError(){let e=this.shadow?.querySelector("#kmFootRight");e&&(e.textContent="Could not save on this device. The watchlist holds up to 100 items.")}async retry(){let{generation:e}=this;await W.retry(),e===this.generation&&await this.show(this.tab,this.arg)}changed(e){let t=e.target;if(t instanceof HTMLInputElement||t instanceof HTMLSelectElement)if(t.id==="kmAdvanced"){this.advanced=t.checked;try{localStorage.setItem(_f,this.advanced?"1":"0")}catch{this.storageError()}this.show(this.tab,void 0,!0)}else if(t.id==="kmOverlay")this.show("item",{...this.itemState(),overlay:t.value},!0);else if(t.dataset.target){let o=Number(t.value),n=Se().map(r=>r.skin===Number(t.dataset.target)?{...r,target:o>0&&Number.isFinite(o)?o:null}:r);if(!wo(n)){this.storageError();return}this.show("watchlist",this.arg,!0)}else if(t.dataset.count!==void 0&&t.dataset.side){let o=this.analyzer[t.dataset.side][Number(t.dataset.count)];o&&(o.count=Math.min(1e4,Math.max(1,Math.floor(Number(t.value)||1))),t.value=String(o.count)),this.refreshTrade()}else if(t.dataset.kr){let o=Math.max(0,Math.min(1e9,Math.floor(Number(t.value)||0)));t.dataset.kr==="give"?this.analyzer.giveKr=o:this.analyzer.getKr=o,t.value=String(o),this.refreshTrade()}else t.closest("#kmFilters")&&t instanceof HTMLSelectElement&&this.applyFilters()}input(e){let t=e.target;if(t instanceof HTMLInputElement){if(t.id==="kmSellPrice"||t.id==="kmSellQuantity"){this.updatePlanner();return}if(["kmListingMax","kmSerialMax","kmWearMax","kmAgeMax","kmSellerMax"].includes(t.id)){this.filterListings();return}if(t.id==="kmHoldingFilter"){this.portfolioFilter=t.value,this.filterHoldings();return}}}key(e){if(!this.shadow||(e.stopImmediatePropagation(),this.itemSearch?.key(e))||e.isComposing)return;if(e.key==="Escape"){e.stopImmediatePropagation(),e.preventDefault(),this.close();return}if(e.ctrlKey&&!e.altKey&&["+","=","-","0"].includes(e.key)){e.preventDefault(),this.rescale({"-":-1,0:0}[e.key]??1);return}let t=this.shadow.activeElement;if(t?.matches("[data-discover]")&&["ArrowLeft","ArrowRight","Home","End"].includes(e.key)){e.preventDefault();let i=[...this.shadow.querySelectorAll("#kmDiscoverTabs button")],l=(i.indexOf(t)+(e.key==="ArrowRight"?1:-1)+i.length)%i.length;e.key==="Home"&&(l=0),e.key==="End"&&(l=i.length-1);let c=i[l];c.focus(),c.click();return}if(e.key==="Enter"&&t&&(t.closest("#kmFilters")?(e.preventDefault(),this.applyFilters()):t.id==="kmName"?(e.preventDefault(),this.show("portfolio",this.value("#kmName").trim())):t.matches("tr[data-skin],tr[data-index-name],tr[data-category]")&&(e.preventDefault(),t.click())),e.key!=="Tab")return;let o=[...this.shadow.querySelectorAll("button:not(:disabled):not([tabindex='-1']),input:not([type=hidden]),select,summary,[tabindex='0']")].filter(i=>i instanceof HTMLElement&&i.getClientRects().length&&!i.closest("[hidden]")),n=o[0],r=o.at(-1);e.shiftKey&&(t===n||!t)?(e.preventDefault(),r?.focus()):!e.shiftKey&&(t===r||!t)&&(e.preventDefault(),n?.focus())}},jy=new Er,Uy=jy});var Vc={};A(Vc,{default:()=>Wy});var Wc,Gy,Wy,$r=w(()=>{"use strict";D();It();xe();Xl();Zl();fr();ic();Wc=class{constructor(){this.headerItem=document.createElement("div"),this.headerSeparator=document.createElement("div"),this.headerObserver=new MutationObserver(()=>this.placeButton()),this.onUnread=()=>this.updateBadge(),this.terminal=null,this.running=!1,this.warned=!1,u.settings.toggleMarket=e=>this.toggle(e),u.market={open:(e,t)=>this.open(e,t),toggle:e=>this.toggle(e)},this.toggle(!0)}toggle(e){if(e!==this.running)if(this.running=e,e){if(!W.hostSupported()){this.warned||(this.warned=!0,u.showNotification("The Kute Market needs a newer Kute. Update Kute to use it.",!1,8)),this.running=!1;return}if(he.offline()){this.running=!1;return}this.placeButton();let t=document.querySelector("#playerHeaderEl");t&&this.headerObserver.observe(t,{childList:!0,subtree:!0}),window.addEventListener(Ws,this.onUnread),hr.start(),mr.start(),$t.start(),gr.start()}else this.headerObserver.disconnect(),window.removeEventListener(Ws,this.onUnread),this.headerItem.remove(),this.headerSeparator.remove(),hr.stop(),mr.stop(),$t.stop(),gr.stop(),this.terminal?.close()}placeButton(){let e=document.querySelector("#playerHeaderEl .headerBarRight");if(!e||e.contains(this.headerItem))return;let t=[...e.querySelector(".nav-item")?.classList??[]].find(o=>o.startsWith("svelte-"))??"";this.headerItem.className=`nav-item ${t}`,this.headerItem.innerHTML=` Kute Market `,this.headerItem.onclick=()=>this.open($t.unread.size?"watchlist":void 0),this.headerSeparator.className="verticalSeparator",this.headerSeparator.style.cssText="height: 35px;",e.prepend(this.headerItem,this.headerSeparator),this.updateBadge()}updateBadge(){let e=this.headerItem.querySelector(".nav-badge");if(!e)return;let t=$t.unread.size;e.textContent=String(Math.min(99,t)),e.style.display=t?"inline-block":"none"}async open(e,t){if(this.running){if(!this.terminal){let o=await Promise.resolve().then(()=>(Gc(),Uc)).catch(()=>null);if(!o)return;this.terminal=o.default}await this.terminal.open(e,t)}}},Gy=new Wc,Wy=Gy});var Vy={};var Of=w(()=>{"use strict";$r()});var Ff,Df=w(()=>{Ff=`@keyframes kuteMmSlideDown{0%{transform:translate(-50%,-500%)}to{transform:translate(-50%)}}#kuteMatchmaker{position:absolute;top:8em;left:50%;z-index:2147482000;box-sizing:border-box;width:24em;padding:18px 22px;border-radius:14px;overflow:hidden;pointer-events:all;background:#12121699;backdrop-filter:blur(14px) saturate(120%);box-shadow:0 8px 48px #000c;display:flex;flex-direction:column;color:#fff;animation:kuteMmSlideDown .4s cubic-bezier(.16,1,.3,1) forwards}#kuteMmStatus{font-size:1.4em;color:#35e0e8;margin-bottom:.6em;text-align:center}#kuteMmStatus.mm-fail{color:#eb5656}#kuteMmFeed{display:flex;flex-direction:column;gap:.15em;overflow:hidden;min-height:5.6em;margin-bottom:.6em}#kuteMmFeed.mm-result{justify-content:center}@keyframes kuteMmFeedIn{0%{opacity:0;transform:translate(1em)}to{opacity:1;transform:translate(0)}}@keyframes kuteMmGrow{0%{opacity:0;transform:scale(.55)}65%{opacity:1;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}.mm-entry{display:flex;gap:.8em;padding:.2em .5em;font-size:.95em;font-family:GameFont,monospace;border-radius:.2em;animation:kuteMmFeedIn .12s ease forwards}.mm-entry:last-child:before{content:"\\25b8";color:#ffc147}.mm-entry.mm-pass{background:#4caf501a}.mm-entry.mm-pass .mm-region{color:#35e0e8}.mm-entry.mm-pass .mm-map{color:#ffffffe6}.mm-entry.mm-pass .mm-players{color:#4caf50}.mm-entry.mm-skip{background:#ffffff05}.mm-entry.mm-skip .mm-region{color:#ffffff4d}.mm-entry.mm-skip .mm-map{color:#ffffff80}.mm-entry.mm-skip .mm-players{color:#eb5656}.mm-entry.mm-skip .mm-icon{opacity:.45}.mm-region{min-width:2.5em;font-weight:700}.mm-map{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mm-players{min-width:3em;text-align:right;font-weight:600}.mm-icon{width:1.7em;height:1.7em;flex:none;object-fit:cover;border-radius:.25em;align-self:center;background:#ffffff0f}.mm-entry.mm-landed{box-shadow:inset 0 0 0 2px #35e0e8}.mm-entry.mm-found,.mm-entry.mm-none{justify-content:center;transform-origin:center;animation:kuteMmGrow .34s cubic-bezier(.2,.85,.3,1.25) forwards}.mm-entry.mm-found{font-size:1.25em;gap:.7em}.mm-entry.mm-found .mm-icon{width:2.4em;height:2.4em;border-radius:.3em}.mm-entry.mm-none{font-size:1.2em;color:#ffffff8c;background:#ffffff08}.mm-entry.mm-found:before,.mm-entry.mm-none:before{content:none}#kuteMmCounter{font-size:.85em;color:#ffc147;text-align:center;margin-bottom:.5em}#kuteMmCancel{text-align:center;border:.2em solid #eb5656;border-radius:.3em;font-size:1.1em;background:#0000004d;padding:.2em 1.2em;cursor:pointer;margin:0 auto;width:fit-content;transition:all .08s}#kuteMmCancel:hover{border-color:#fff;transform:scale(.95)}#kuteMmCancel:active{transform:scale(.85)} -`});var qf=we((NE,Xy)=>{Xy.exports='

              Matchmaker Filters

              F6 joins the best lobby for these. Nothing picked in a group means all of it

              Regions

              Modes \u2605 on a mode to prefer it

              Preferred first, then any other mode. Modes rank above maps
              Drag to reorder, click to move to the top

              Maps \u2605 on a map to prefer it

              Preferred first, then any other map
              Drag to reorder, click to move to the top

              Lobby

              Reset
              Done
              '});var Zc={};A(Zc,{default:()=>u1});function Yf(s){let e=e1.get(Wt(s));return e===void 0?null:Bs(e)}function d1(s,e){let t=Yf(s);if(!t)return null;let o=document.createElement("img");return o.className=e,o.src=t,o.alt="",o.loading="lazy",o.onerror=()=>o.remove(),o}function nn(s,e){let t=document.createElement("span");return t.className=s,t.textContent=e,t}function Xc(s,e){let t=document.createElement("div");t.className=`mm-entry ${e}`;let o=d1(s.map,"mm-icon");return o&&t.append(o),t.append(nn("mm-region",s.region),nn("mm-map",s.map),nn("mm-players",`${s.players}/${s.limit}`)),t}async function Uf(){let e=await(await fetch(n1,{signal:AbortSignal.timeout(Vf)})).json();return Array.isArray(e?.games)?e.games:[]}function Gf(s,e){let t=e.maps.length>0?new Set(e.maps.map(Wt)):t1;return s.map(o=>{let n=String(o[0]),r=o[4]??{},i=r.c===0||r.oc===1,a=String(r.i??""),l=Wt(a),c={id:n,region:n.split(":")[0],server:String(o[1]),players:Number(o[2]),limit:Number(o[3]),map:a,mode:Jy[r.g]??"Unknown",timeLeft:Number(o[5]),passes:!1};return c.passes=i&&!s1.test(n)&&(e.regions.length===0||e.regions.includes(c.region))&&(e.modes.length===0||e.modes.includes(c.mode))&&t.has(l)&&c.players>=e.minPlayers&&c.players<=e.maxPlayers&&c.players0?c.timeLeft>=e.minTime:o1.has(l))&&!location.href.includes(n),c})}var Jy,Zy,Kf,Wf,Qy,Wt,e1,t1,o1,s1,n1,Vf,r1,jf,Yc,i1,a1,l1,c1,on,sn,Jc,u1,Qc=w(()=>{"use strict";Df();D();Ae();Po();tr();Jy=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Hide & Seek","Infected","Race","Last Man Standing","Simon Says","Gun Game","Prop Hunt","Boss Hunt","Classic FFA","Deposit","Stalker","King of the Hill","One in the Chamber","Trade","Kill Confirmed","Defuse","Sharp Shooter","Traitor","Raid","Blitz","Domination","Squad Deathmatch","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],Zy=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Gun Game","Classic FFA","Deposit","Kill Confirmed","Sharp Shooter","Domination","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],Kf={SV:"Silicon Valley",TOK:"Tokyo",FRA:"Frankfurt",MBI:"Mumbai",SYD:"Sydney",SIN:"Singapore",DAL:"Dallas",BHN:"Bahrain",BRZ:"Brazil",NY:"New York"},Wf=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Tropicano","Habitat","Atomic","Old_Burg","Throwback","Clockwork","Bazaar","Erupt","HQ","Lush","Vivo","Slide Moonlight","Eterno Simulator","Eterno Jump","Frontier","Piazza","Barnyard"],Qy={SkyTemple:"Sky Temple",Krunk_Plaza:"Krunk Plaza",Old_Burg:"Old Burg"},Wt=s=>s.toLowerCase().replace(/[^a-z0-9]/g,""),e1=new Map(er.map((s,e)=>[Wt(s),e])),t1=new Set(Wf.map(Wt)),o1=new Set(["Eterno Jump","Slide Moonlight"].map(Wt)),s1=/[\s&#?/%\\]/,n1="https://matchmaker.krunker.io/game-list?hostname=krunker.io",Vf=1e4,r1=4,jf=1100,Yc=80,i1=20,a1=180,l1=1200,c1=1100,on={regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[],minPlayers:1,maxPlayers:6,minTime:120,sortByPlayers:!1,serverBrowser:!0,animation:!0,searchAfterMatch:!1},sn=s=>new Promise(e=>setTimeout(e,s));Jc=class{constructor(){this.activeRun=0,this.runCounter=0,this.candidates=[],this.popup=document.createElement("div"),this.popup.id="kuteMatchmaker",this.status=document.createElement("div"),this.status.id="kuteMmStatus",this.feed=document.createElement("div"),this.feed.id="kuteMmFeed",this.counter=document.createElement("div"),this.counter.id="kuteMmCounter";let e=document.createElement("div");e.id="kuteMmCancel",e.textContent="Cancel",e.onmouseenter=()=>window.SOUND?.play("tick_0",.1),e.onclick=()=>this.abort(),this.popup.append(this.status,this.feed,this.counter,e),this.cancelKey=t=>{t.key!=="Escape"||document.pointerLockElement||(t.preventDefault(),t.stopPropagation(),this.abort())},u.matchmaker={showFilters:()=>this.showFilters()},u.settings.toggleMatchmaker=()=>{},u.hostFeatures?.includes("matchmaker")&&(window.addEventListener("keydown",t=>{!ls(t,"matchmaker")||t.repeat||!u.settings.data.matchmaker||document.activeElement?.tagName!=="INPUT"&&this.start().catch(o=>console.error("[kute] matchmaker:",o))},!0),this.watchEndScreen())}watchEndScreen(){let e=document.getElementById("endUI");if(!e)return;let t=!1,o=e.style.display!=="none";document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&(t=!0)}),new MutationObserver(()=>{let n=e.style.display!=="none";n!==o&&(o=n,!(!n||!t)&&(t=!1,!(!u.settings.data.matchmaker||!this.filter.searchAfterMatch||window.getGameActivity?.()?.custom)&&this.start().catch(r=>console.error("[kute] matchmaker:",r))))}).observe(e,{attributes:!0,attributeFilter:["style"]})}get filter(){return{...on,...u.settings.data.matchmakerFilter}}saveFilter(e){u.settings.data.matchmakerFilter=e,window.chrome.webview.postMessage(`set-config-json matchmakerFilter ${JSON.stringify(e)}`)}cancelled(e){return e!==this.activeRun}abort(){this.activeRun=0,window.playSelect?.(),this.dismiss()}dismiss(){document.removeEventListener("keydown",this.cancelKey,!0),this.popup.remove()}showPopup(){if(!document.querySelector("#kuteMatchmakerCSS")){let e=document.createElement("style");e.id="kuteMatchmakerCSS",e.textContent=Ff,document.head.append(e)}this.status.textContent="Connecting...",this.status.classList.remove("mm-fail"),this.feed.replaceChildren(),this.feed.classList.remove("mm-result"),this.counter.textContent="",document.addEventListener("keydown",this.cancelKey,!0),(document.querySelector("#uiBase")??document.body).append(this.popup)}pushEntry(e){for(this.feed.append(e);this.feed.children.length>r1;)this.feed.firstElementChild?.remove()}async animateScan(e,t,o){let n=t.length;if(n===0)return;this.status.textContent="Scanning lobbies...";let r=Math.floor(jf/Yc),i=n>r?n/r:1,a=n>r?Yc:Math.max(i1,Math.min(Yc,jf/n));for(let l=0;l[l.id,l])),a=[t,...this.candidates.filter(l=>l!==t)].find(l=>r.get(l.id)?.passes);a?this.join(a.id):this.openServerBrowser(o)}async start(){if(this.activeRun!==0)return;let e=++this.runCounter;this.activeRun=e;try{await this.search(e)}finally{this.activeRun===e&&(this.activeRun=0)}}async search(e){let{filter:t}=this;t.animation&&this.showPopup();let o,n;try{let[h,f]=await Promise.all([Uf(),Te("ping-regions","regionPings",Vf)]);o=Gf(h,t),n=f??{}}catch(h){if(console.error("[kute] matchmaker: no lobby list",h),this.cancelled(e)||!t.animation)return;this.status.textContent="Failed to fetch lobbies",this.status.classList.add("mm-fail"),await sn(2e3),this.cancelled(e)||this.dismiss();return}if(this.cancelled(e))return;let r=h=>n[h.server]??999,i=new Map(t.preferredMaps.map((h,f)=>[Wt(h),f])),a=new Map(t.preferredModes.map((h,f)=>[h,f])),l=h=>(a.get(h.mode)??a.size)*(i.size+1)+(i.get(Wt(h.map))??i.size),c=h=>h.limit-h.players<=1?1:0,d=o.filter(h=>h.passes);d.sort((h,f)=>{let m=l(h)-l(f),g=c(h)-c(f),b=r(h)-r(f),v=f.players-h.players;return t.sortByPlayers?m||g||v||b:m||g||b||v}),this.candidates=d;let p;if(d.length>0){let h=d[0],f=d.filter(m=>l(m)===l(h)&&c(m)===c(h)&&Math.abs(r(m)-r(h))<=20&&h.players-m.players<=2);p=f[Math.floor(Math.random()*f.length)]}if(t.animation&&await this.animateScan(e,o,p),!this.cancelled(e)){if(!p){if(t.animation){this.status.textContent="No Lobby Found",this.status.classList.add("mm-fail"),this.feed.classList.add("mm-result");let h=document.createElement("div");if(h.className="mm-entry mm-none",h.textContent="No matching lobbies",this.feed.replaceChildren(h),this.counter.textContent=t.serverBrowser?"Opening server browser...":"",await sn(c1),this.cancelled(e))return}this.openServerBrowser(t);return}if(t.animation){this.status.textContent="Lobby Found!",this.feed.classList.add("mm-result"),this.feed.replaceChildren(Xc(p,"mm-pass mm-found"));let h=n[p.server]===void 0?"?":String(n[p.server]);if(this.counter.textContent=`${p.mode} \xB7 ${Kf[p.region]??p.region} \xB7 ${h}ms`,await sn(l1),this.cancelled(e))return}await this.verifyAndJoin(e,p,t)}}async showFilters(){let e=await Promise.resolve().then(()=>ue(qf(),1)),{filter:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=(g,b,v)=>{let k=i(g);k.replaceChildren();for(let E of b){let L=document.createElement("div");if(L.className=`mmChip${v.includes(E.value)?" on":""}`,E.icon){let x=document.createElement("img");x.src=E.icon,x.alt="",x.loading="lazy",x.onerror=()=>x.remove(),L.append(x)}L.append(E.label),L.onclick=()=>{let x=v.indexOf(E.value);x===-1?v.push(E.value):v.splice(x,1),L.classList.toggle("on",x===-1)},k.append(L)}},l=(g,b,v)=>{if(!g)return;let k=document.createElement("img");k.src=g,k.alt="",v?k.loading="lazy":k.draggable=!1,k.onerror=()=>k.remove(),b.append(k)},c=g=>{let{preferred:b}=g,v=i(g.boxId);v.hidden=b.length===0;let k=v.querySelector(".mmGrid");k.replaceChildren();let E=()=>k.querySelectorAll(".mmNum").forEach((L,x)=>L.textContent=String(x+1));for(let L of b){let x=document.createElement("div");x.className="mmChip on mmRank",x.append(nn("mmNum","")),l(g.icon(L),x,!1),x.append(g.label(L));let $=null;x.onpointerdown=I=>{x.setPointerCapture(I.pointerId),$={x:I.clientX,y:I.clientY,moved:!1}},x.onpointermove=I=>{if(!$||!$.moved&&Math.hypot(I.clientX-$.x,I.clientY-$.y)<5)return;$.moved=!0,x.classList.add("dragging");let _=[...k.children],H=_.findIndex(J=>{let B=J.getBoundingClientRect();return I.clientX>=B.left&&I.clientX<=B.right&&I.clientY>=B.top&&I.clientY<=B.bottom}),G=_.indexOf(x);H===-1||H===G||(b.splice(H,0,...b.splice(G,1)),x.remove(),k.insertBefore(x,k.children[H]??null),E())},x.onpointerup=()=>{x.classList.remove("dragging"),$&&!$.moved&&(b.unshift(...b.splice(b.indexOf(L),1)),window.SOUND?.play("tick_0",.1),c(g)),$=null},x.onpointercancel=x.onpointerup,k.append(x)}E()},d=g=>{let{picked:b,preferred:v}=g,k=i(g.gridId);k.replaceChildren();for(let E of g.values){let L=v.includes(E),x=document.createElement("div");x.className=`mmChip${b.includes(E)?" on":""}${L?" preferred":""}`,l(g.icon(E),x,!0),x.append(g.label(E));let $=nn("mmStar","\u2605");$.title=L?"Preferred, click to remove":`Prefer this ${g.noun}`,$.onclick=I=>{I.stopPropagation(),L?v.splice(v.indexOf(E),1):(v.push(E),b.length>0&&!b.includes(E)&&b.push(E)),d(g)},x.append($),x.onclick=()=>{let I=b.indexOf(E);I!==-1?(b.splice(I,1),L&&v.splice(v.indexOf(E),1)):b.length===0?b.push(...new Set([...v,E])):b.push(E),d(g)},k.append(x)}c(g)},p=()=>{a("mmRegions",Object.entries(Kf).map(([g,b])=>({value:g,label:b})),t.regions),d({gridId:"mmModes",boxId:"mmModeRanks",noun:"mode",values:Zy,picked:t.modes,preferred:t.preferredModes,label:g=>g,icon:()=>null}),d({gridId:"mmMaps",boxId:"mmMapRanks",noun:"map",values:Wf,picked:t.maps,preferred:t.preferredMaps,label:g=>Qy[g]??g,icon:Yf}),i("mmMinPlayers").value=String(t.minPlayers),i("mmMaxPlayers").value=String(t.maxPlayers),i("mmMinTime").value=String(t.minTime),i("mmSortByPlayers").checked=t.sortByPlayers,i("mmServerBrowser").checked=t.serverBrowser,i("mmAnimation").checked=t.animation,i("mmSearchAfterMatch").checked=t.searchAfterMatch};t.regions=[...t.regions],t.modes=[...t.modes],t.maps=[...t.maps],t.preferredMaps=[...t.preferredMaps],t.preferredModes=[...t.preferredModes],p();let h=(g,b,v,k)=>{let E=Number.parseInt(i(g).value,10);return Number.isNaN(E)?k:Math.min(v,Math.max(b,E))},f=new AbortController,m=()=>{f.abort(),o.remove(),this.saveFilter({...t,minPlayers:h("mmMinPlayers",0,7,on.minPlayers),maxPlayers:h("mmMaxPlayers",0,7,on.maxPlayers),minTime:h("mmMinTime",0,480,on.minTime),sortByPlayers:i("mmSortByPlayers").checked,serverBrowser:i("mmServerBrowser").checked,animation:i("mmAnimation").checked,searchAfterMatch:i("mmSearchAfterMatch").checked})};i("mmDone").onclick=m,i("mmReset").onclick=()=>{Object.assign(t,on,{regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[]}),p()},o.addEventListener("mousedown",g=>{g.target===o&&m()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),m())},{signal:f.signal,capture:!0}),document.body.append(o)}},u1=new Jc});var ed=we((DE,p1)=>{p1.exports=`#uiBase.onMenu #spectateUI{display:block!important}#uiBase.onCompMenu.onMenu #specTimer,#uiBase.onMenu #specGMessage,#uiBase.onMenu #spec1,#uiBase.onMenu #specGameInfo,#uiBase.onMenu #spec0,#uiBase.onMenu #specControlHolder,#uiBase.onMenu #specNames{display:none!important}#uiBase.onMenu #spectateUI>#spectateHUD{box-sizing:border-box;display:flex!important;justify-content:center;height:.5rem;white-space:nowrap;width:max-content;position:fixed;top:calc(50% + 140px)}#uiBase.onMenu #spectateHUD #specGMessage{top:0}#uiBase.onMenu #spectateUI>#spectateHUD{z-index:1;transform:unset}#uiBase.onMenu .spectateInfo{position:fixed;top:calc(40% - 105px);left:50%;transform:translate(-50%,-50%)}#uiBase.onMenu #spectateUI div .spectateInfo #specTimer{background-color:#0000;padding:0 25px;font-size:42px;border-radius:.5em}#uiBase.onMenu #specKPDContr{display:none}#uiBase.onMenu #spectateUI div#specStats{position:absolute;top:calc(50% + 13em);left:50%;transform:translate(-50%);z-index:1}#uiBase.onMenu #spectateUI div#specStats:before{content:"Spectating";position:absolute;bottom:100%;left:50%;transform:translate(-50%);font-size:1.2em;padding-bottom:.5em} +`});var qf=we((NE,Xy)=>{Xy.exports='

              Matchmaker Filters

              F6 joins the best lobby for these. Nothing picked in a group means all of it

              Regions

              Modes \u2605 on a mode to prefer it

              Preferred first, then any other mode. Modes rank above maps
              Drag to reorder, click to move to the top

              Maps \u2605 on a map to prefer it

              Preferred first, then any other map
              Drag to reorder, click to move to the top

              Lobby

              Reset
              Done
              '});var Zc={};A(Zc,{default:()=>u1});function Yf(s){let e=e1.get(Wt(s));return e===void 0?null:Bs(e)}function d1(s,e){let t=Yf(s);if(!t)return null;let o=document.createElement("img");return o.className=e,o.src=t,o.alt="",o.loading="lazy",o.onerror=()=>o.remove(),o}function nn(s,e){let t=document.createElement("span");return t.className=s,t.textContent=e,t}function Xc(s,e){let t=document.createElement("div");t.className=`mm-entry ${e}`;let o=d1(s.map,"mm-icon");return o&&t.append(o),t.append(nn("mm-region",s.region),nn("mm-map",s.map),nn("mm-players",`${s.players}/${s.limit}`)),t}async function Uf(){let e=await(await fetch(n1,{signal:AbortSignal.timeout(Vf)})).json();return Array.isArray(e?.games)?e.games:[]}function Gf(s,e){let t=e.maps.length>0?new Set(e.maps.map(Wt)):t1;return s.map(o=>{let n=String(o[0]),r=o[4]??{},i=r.c===0||r.oc===1,a=String(r.i??""),l=Wt(a),c={id:n,region:n.split(":")[0],server:String(o[1]),players:Number(o[2]),limit:Number(o[3]),map:a,mode:Jy[r.g]??"Unknown",timeLeft:Number(o[5]),passes:!1};return c.passes=i&&!s1.test(n)&&(e.regions.length===0||e.regions.includes(c.region))&&(e.modes.length===0||e.modes.includes(c.mode))&&t.has(l)&&c.players>=e.minPlayers&&c.players<=e.maxPlayers&&c.players0?c.timeLeft>=e.minTime:o1.has(l))&&!location.href.includes(n),c})}var Jy,Zy,Kf,Wf,Qy,Wt,e1,t1,o1,s1,n1,Vf,r1,jf,Yc,i1,a1,l1,c1,on,sn,Jc,u1,Qc=w(()=>{"use strict";Df();D();Ae();Po();tr();Jy=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Hide & Seek","Infected","Race","Last Man Standing","Simon Says","Gun Game","Prop Hunt","Boss Hunt","Classic FFA","Deposit","Stalker","King of the Hill","One in the Chamber","Trade","Kill Confirmed","Defuse","Sharp Shooter","Traitor","Raid","Blitz","Domination","Squad Deathmatch","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],Zy=["Free for All","Team Deathmatch","Hardpoint","Capture the Flag","Parkour","Gun Game","Classic FFA","Deposit","Kill Confirmed","Sharp Shooter","Domination","Kranked FFA","Team Defender","Deposit FFA","Chaos Snipers","Bighead FFA"],Kf={SV:"Silicon Valley",TOK:"Tokyo",FRA:"Frankfurt",MBI:"Mumbai",SYD:"Sydney",SIN:"Singapore",DAL:"Dallas",BHN:"Bahrain",BRZ:"Brazil",NY:"New York"},Wf=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Tropicano","Habitat","Atomic","Old_Burg","Throwback","Clockwork","Bazaar","Erupt","HQ","Lush","Vivo","Slide Moonlight","Eterno Simulator","Eterno Jump","Frontier","Piazza","Barnyard"],Qy={SkyTemple:"Sky Temple",Krunk_Plaza:"Krunk Plaza",Old_Burg:"Old Burg"},Wt=s=>s.toLowerCase().replace(/[^a-z0-9]/g,""),e1=new Map(er.map((s,e)=>[Wt(s),e])),t1=new Set(Wf.map(Wt)),o1=new Set(["Eterno Jump","Slide Moonlight"].map(Wt)),s1=/[\s&#?/%\\]/,n1="https://matchmaker.krunker.io/game-list?hostname=krunker.io",Vf=1e4,r1=4,jf=1100,Yc=80,i1=20,a1=180,l1=1200,c1=1100,on={regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[],minPlayers:1,maxPlayers:6,minTime:120,sortByPlayers:!1,serverBrowser:!0,animation:!0,searchAfterMatch:!1},sn=s=>new Promise(e=>setTimeout(e,s));Jc=class{constructor(){this.activeRun=0,this.runCounter=0,this.candidates=[],this.popup=document.createElement("div"),this.popup.id="kuteMatchmaker",this.status=document.createElement("div"),this.status.id="kuteMmStatus",this.feed=document.createElement("div"),this.feed.id="kuteMmFeed",this.counter=document.createElement("div"),this.counter.id="kuteMmCounter";let e=document.createElement("div");e.id="kuteMmCancel",e.textContent="Cancel",e.onmouseenter=()=>window.SOUND?.play("tick_0",.1),e.onclick=()=>this.abort(),this.popup.append(this.status,this.feed,this.counter,e),this.cancelKey=t=>{t.key!=="Escape"||document.pointerLockElement||(t.preventDefault(),t.stopPropagation(),this.abort())},u.matchmaker={showFilters:()=>this.showFilters()},u.settings.toggleMatchmaker=()=>{},u.hostFeatures?.includes("matchmaker")&&(window.addEventListener("keydown",t=>{!ls(t,"matchmaker")||t.repeat||!u.settings.data.matchmaker||document.activeElement?.tagName!=="INPUT"&&this.start().catch(o=>console.error("[kute] matchmaker:",o))},!0),this.watchEndScreen())}watchEndScreen(){let e=document.getElementById("endUI");if(!e)return;let t=!1,o=e.style.display!=="none";document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&(t=!0)}),new MutationObserver(()=>{let n=e.style.display!=="none";n!==o&&(o=n,!(!n||!t)&&(t=!1,!(!u.settings.data.matchmaker||!this.filter.searchAfterMatch||window.getGameActivity?.()?.custom)&&this.start().catch(r=>console.error("[kute] matchmaker:",r))))}).observe(e,{attributes:!0,attributeFilter:["style"]})}get filter(){return{...on,...u.settings.data.matchmakerFilter}}saveFilter(e){u.settings.data.matchmakerFilter=e,window.chrome.webview.postMessage(`set-config-json matchmakerFilter ${JSON.stringify(e)}`)}cancelled(e){return e!==this.activeRun}abort(){this.activeRun=0,window.playSelect?.(),this.dismiss()}dismiss(){document.removeEventListener("keydown",this.cancelKey,!0),this.popup.remove()}showPopup(){if(!document.querySelector("#kuteMatchmakerCSS")){let e=document.createElement("style");e.id="kuteMatchmakerCSS",e.textContent=Ff,document.head.append(e)}this.status.textContent="Connecting...",this.status.classList.remove("mm-fail"),this.feed.replaceChildren(),this.feed.classList.remove("mm-result"),this.counter.textContent="",document.addEventListener("keydown",this.cancelKey,!0),(document.querySelector("#uiBase")??document.body).append(this.popup)}pushEntry(e){for(this.feed.append(e);this.feed.children.length>r1;)this.feed.firstElementChild?.remove()}async animateScan(e,t,o){let n=t.length;if(n===0)return;this.status.textContent="Scanning lobbies...";let r=Math.floor(jf/Yc),i=n>r?n/r:1,a=n>r?Yc:Math.max(i1,Math.min(Yc,jf/n));for(let l=0;l[l.id,l])),a=[t,...this.candidates.filter(l=>l!==t)].find(l=>r.get(l.id)?.passes);a?this.join(a.id):this.openServerBrowser(o)}async start(){if(this.activeRun!==0)return;let e=++this.runCounter;this.activeRun=e;try{await this.search(e)}finally{this.activeRun===e&&(this.activeRun=0)}}async search(e){let{filter:t}=this;t.animation&&this.showPopup();let o,n;try{let[p,m]=await Promise.all([Uf(),Te("ping-regions","regionPings",Vf)]);o=Gf(p,t),n=m??{}}catch(p){if(console.error("[kute] matchmaker: no lobby list",p),this.cancelled(e)||!t.animation)return;this.status.textContent="Failed to fetch lobbies",this.status.classList.add("mm-fail"),await sn(2e3),this.cancelled(e)||this.dismiss();return}if(this.cancelled(e))return;let r=p=>n[p.server]??999,i=new Map(t.preferredMaps.map((p,m)=>[Wt(p),m])),a=new Map(t.preferredModes.map((p,m)=>[p,m])),l=p=>(a.get(p.mode)??a.size)*(i.size+1)+(i.get(Wt(p.map))??i.size),c=p=>p.limit-p.players<=1?1:0,d=o.filter(p=>p.passes);d.sort((p,m)=>{let f=l(p)-l(m),g=c(p)-c(m),b=r(p)-r(m),v=m.players-p.players;return t.sortByPlayers?f||g||v||b:f||g||b||v}),this.candidates=d;let h;if(d.length>0){let p=d[0],m=d.filter(f=>l(f)===l(p)&&c(f)===c(p)&&Math.abs(r(f)-r(p))<=20&&p.players-f.players<=2);h=m[Math.floor(Math.random()*m.length)]}if(t.animation&&await this.animateScan(e,o,h),!this.cancelled(e)){if(!h){if(t.animation){this.status.textContent="No Lobby Found",this.status.classList.add("mm-fail"),this.feed.classList.add("mm-result");let p=document.createElement("div");if(p.className="mm-entry mm-none",p.textContent="No matching lobbies",this.feed.replaceChildren(p),this.counter.textContent=t.serverBrowser?"Opening server browser...":"",await sn(c1),this.cancelled(e))return}this.openServerBrowser(t);return}if(t.animation){this.status.textContent="Lobby Found!",this.feed.classList.add("mm-result"),this.feed.replaceChildren(Xc(h,"mm-pass mm-found"));let p=n[h.server]===void 0?"?":String(n[h.server]);if(this.counter.textContent=`${h.mode} \xB7 ${Kf[h.region]??h.region} \xB7 ${p}ms`,await sn(l1),this.cancelled(e))return}await this.verifyAndJoin(e,h,t)}}async showFilters(){let e=await Promise.resolve().then(()=>ue(qf(),1)),{filter:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=(g,b,v)=>{let k=i(g);k.replaceChildren();for(let E of b){let L=document.createElement("div");if(L.className=`mmChip${v.includes(E.value)?" on":""}`,E.icon){let x=document.createElement("img");x.src=E.icon,x.alt="",x.loading="lazy",x.onerror=()=>x.remove(),L.append(x)}L.append(E.label),L.onclick=()=>{let x=v.indexOf(E.value);x===-1?v.push(E.value):v.splice(x,1),L.classList.toggle("on",x===-1)},k.append(L)}},l=(g,b,v)=>{if(!g)return;let k=document.createElement("img");k.src=g,k.alt="",v?k.loading="lazy":k.draggable=!1,k.onerror=()=>k.remove(),b.append(k)},c=g=>{let{preferred:b}=g,v=i(g.boxId);v.hidden=b.length===0;let k=v.querySelector(".mmGrid");k.replaceChildren();let E=()=>k.querySelectorAll(".mmNum").forEach((L,x)=>L.textContent=String(x+1));for(let L of b){let x=document.createElement("div");x.className="mmChip on mmRank",x.append(nn("mmNum","")),l(g.icon(L),x,!1),x.append(g.label(L));let $=null;x.onpointerdown=I=>{x.setPointerCapture(I.pointerId),$={x:I.clientX,y:I.clientY,moved:!1}},x.onpointermove=I=>{if(!$||!$.moved&&Math.hypot(I.clientX-$.x,I.clientY-$.y)<5)return;$.moved=!0,x.classList.add("dragging");let _=[...k.children],H=_.findIndex(J=>{let B=J.getBoundingClientRect();return I.clientX>=B.left&&I.clientX<=B.right&&I.clientY>=B.top&&I.clientY<=B.bottom}),G=_.indexOf(x);H===-1||H===G||(b.splice(H,0,...b.splice(G,1)),x.remove(),k.insertBefore(x,k.children[H]??null),E())},x.onpointerup=()=>{x.classList.remove("dragging"),$&&!$.moved&&(b.unshift(...b.splice(b.indexOf(L),1)),window.SOUND?.play("tick_0",.1),c(g)),$=null},x.onpointercancel=x.onpointerup,k.append(x)}E()},d=g=>{let{picked:b,preferred:v}=g,k=i(g.gridId);k.replaceChildren();for(let E of g.values){let L=v.includes(E),x=document.createElement("div");x.className=`mmChip${b.includes(E)?" on":""}${L?" preferred":""}`,l(g.icon(E),x,!0),x.append(g.label(E));let $=nn("mmStar","\u2605");$.title=L?"Preferred, click to remove":`Prefer this ${g.noun}`,$.onclick=I=>{I.stopPropagation(),L?v.splice(v.indexOf(E),1):(v.push(E),b.length>0&&!b.includes(E)&&b.push(E)),d(g)},x.append($),x.onclick=()=>{let I=b.indexOf(E);I!==-1?(b.splice(I,1),L&&v.splice(v.indexOf(E),1)):b.length===0?b.push(...new Set([...v,E])):b.push(E),d(g)},k.append(x)}c(g)},h=()=>{a("mmRegions",Object.entries(Kf).map(([g,b])=>({value:g,label:b})),t.regions),d({gridId:"mmModes",boxId:"mmModeRanks",noun:"mode",values:Zy,picked:t.modes,preferred:t.preferredModes,label:g=>g,icon:()=>null}),d({gridId:"mmMaps",boxId:"mmMapRanks",noun:"map",values:Wf,picked:t.maps,preferred:t.preferredMaps,label:g=>Qy[g]??g,icon:Yf}),i("mmMinPlayers").value=String(t.minPlayers),i("mmMaxPlayers").value=String(t.maxPlayers),i("mmMinTime").value=String(t.minTime),i("mmSortByPlayers").checked=t.sortByPlayers,i("mmServerBrowser").checked=t.serverBrowser,i("mmAnimation").checked=t.animation,i("mmSearchAfterMatch").checked=t.searchAfterMatch};t.regions=[...t.regions],t.modes=[...t.modes],t.maps=[...t.maps],t.preferredMaps=[...t.preferredMaps],t.preferredModes=[...t.preferredModes],h();let p=(g,b,v,k)=>{let E=Number.parseInt(i(g).value,10);return Number.isNaN(E)?k:Math.min(v,Math.max(b,E))},m=new AbortController,f=()=>{m.abort(),o.remove(),this.saveFilter({...t,minPlayers:p("mmMinPlayers",0,7,on.minPlayers),maxPlayers:p("mmMaxPlayers",0,7,on.maxPlayers),minTime:p("mmMinTime",0,480,on.minTime),sortByPlayers:i("mmSortByPlayers").checked,serverBrowser:i("mmServerBrowser").checked,animation:i("mmAnimation").checked,searchAfterMatch:i("mmSearchAfterMatch").checked})};i("mmDone").onclick=f,i("mmReset").onclick=()=>{Object.assign(t,on,{regions:[],modes:[],maps:[],preferredMaps:[],preferredModes:[]}),h()},o.addEventListener("mousedown",g=>{g.target===o&&f()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),f())},{signal:m.signal,capture:!0}),document.body.append(o)}},u1=new Jc});var ed=we((DE,p1)=>{p1.exports=`#uiBase.onMenu #spectateUI{display:block!important}#uiBase.onCompMenu.onMenu #specTimer,#uiBase.onMenu #specGMessage,#uiBase.onMenu #spec1,#uiBase.onMenu #specGameInfo,#uiBase.onMenu #spec0,#uiBase.onMenu #specControlHolder,#uiBase.onMenu #specNames{display:none!important}#uiBase.onMenu #spectateUI>#spectateHUD{box-sizing:border-box;display:flex!important;justify-content:center;height:.5rem;white-space:nowrap;width:max-content;position:fixed;top:calc(50% + 140px)}#uiBase.onMenu #spectateHUD #specGMessage{top:0}#uiBase.onMenu #spectateUI>#spectateHUD{z-index:1;transform:unset}#uiBase.onMenu .spectateInfo{position:fixed;top:calc(40% - 105px);left:50%;transform:translate(-50%,-50%)}#uiBase.onMenu #spectateUI div .spectateInfo #specTimer{background-color:#0000;padding:0 25px;font-size:42px;border-radius:.5em}#uiBase.onMenu #specKPDContr{display:none}#uiBase.onMenu #spectateUI div#specStats{position:absolute;top:calc(50% + 13em);left:50%;transform:translate(-50%);z-index:1}#uiBase.onMenu #spectateUI div#specStats:before{content:"Spectating";position:absolute;bottom:100%;left:50%;transform:translate(-50%);font-size:1.2em;padding-bottom:.5em} `});var od={};A(od,{default:()=>h1});var Jf,Xf,td,h1,sd=w(()=>{"use strict";Jf=ue(ed(),1);D();Xf="kute_menuTimerCSS",td=class{constructor(){u.settings.toggleMenuTimer=e=>this.toggle(e),this.toggle(u.settings.data.menuTimer!==!1)}toggle(e){let t=document.getElementById(Xf);if(!e){t?.remove();return}if(t)return;let o=document.createElement("style");o.id=Xf,o.textContent=Jf.default,document.head.append(o)}},h1=new td});var id={};A(id,{default:()=>y1});function Qf(s){let e=/loadUserMod\(\s*(["`])(.*?)\1\s*,\s*(["`])(.*?)\3/.exec(s);return e?{name:e[2],url:e[4]}:null}function eg(s){try{let e=new URL(s);return e.protocol!=="https:"?null:e.hostname==="krunker.io"||e.hostname.endsWith(".krunker.io")?e.href:e.hostname==="dropbox.com"||e.hostname==="www.dropbox.com"?(e.hostname="dl.dropboxusercontent.com",e.search="",e.href):null}catch{return null}}function v1(s){return`${s.replace(/[\u0000-\u001f<>:"/\\|?*]/g,"").replace(/\s+/g," ").trim().replace(/[ .]+$/,"").slice(0,80)||"mod"}.zip`}async function w1(s){let e=await fetch(s);if(e.status===403||e.status===404)throw new Error("This mod's file is gone, its creator removed it");if(!e.ok)throw new Error(`The mod server answered ${e.status}`);if(Number(e.headers.get("content-length")??0)>Zf)throw new Error("That mod is too large");let t=await e.blob();if(t.size>Zf)throw new Error("That mod is too large");let o=new Uint8Array(await t.slice(0,2).arrayBuffer());if(o[0]!==80||o[1]!==75)throw new Error("That mod is not a zip file");return t}function k1(s,e){let t=document.createElement("a");t.href=URL.createObjectURL(s),t.download=e,t.click(),setTimeout(()=>URL.revokeObjectURL(t.href),6e4)}function tg(s,e,t,o){let n=!1;s.addEventListener("click",r=>{if(r.stopPropagation(),n)return;n=!0,e.style.color=nd.busy,e.textContent="hourglass_top";let i=v1(t);w1(o).then(a=>{k1(a,i),e.style.color=nd.done,e.textContent="download_done",u.showNotification(`Saved ${i} to your Downloads folder`,!1,4)}).catch(a=>{e.style.color=nd.failed,e.textContent="error_outline",u.showNotification(a instanceof TypeError?"Could not download the mod":a.message,!1,4)}).finally(()=>{n=!1})})}function og(s){let e=document.createElement("span");return e.className="material-icons",e.style.cssText=s,e.textContent="download",e}var rn,Zf,m1,f1,g1,b1,nd,rd,y1,ad=w(()=>{"use strict";D();rn="data-kute-mod",Zf=300*1024*1024,m1='[onclick^="downloadPack"]',f1="font-size:70px;color:#fff;",g1="position:absolute;right:30px;bottom:92px;box-sizing:content-box;width:240px;height:37px;padding:10px 6px 6px;border:3px solid #35e0e8;border-radius:6px;background:rgba(0,0,0,0.6);color:#fff;font-size:21px;text-align:center;cursor:pointer;",b1="font-size:32px;color:#fff;vertical-align:top;margin-top:-3px;margin-left:5px;",nd={busy:"#777",done:"#35e0e8",failed:"#ff7a7a"};rd=class{constructor(){this.pending=null,this.observer=new MutationObserver(()=>{this.pending===null&&(this.pending=setTimeout(()=>this.scan(),150))});let e=document.getElementById("menuWindow");e&&(this.observer.observe(e,{childList:!0,subtree:!0}),this.scan())}scan(){this.pending=null;let e=document.getElementById("menuWindow");if(!e)return;let t=[];for(let r of e.querySelectorAll('.mapActionB[onclick^="loadUserMod"]')){let i=r.parentElement;if(!i||i.querySelector(`[${rn}], ${m1}`))continue;let a=Qf(r.getAttribute("onclick")??""),l=a&&eg(a.url);a&&l&&t.push([i,this.listButton(a.name,l)])}let o=document.getElementById("bigMFeatPBtn"),n=o?.parentElement;if(o&&n&&!n.querySelector(`[${rn}]`)){let r=Qf(o.getAttribute("onclick")??""),i=r&&eg(r.url);r&&i&&t.push([n,[this.featuredButton(r.name,i)]])}if(t.length!==0){this.observer.disconnect();for(let[r,i]of t)r.append(...i);this.observer.observe(e,{childList:!0,subtree:!0})}}listButton(e,t){let o=document.createElement("div");o.className="mapActionSep",o.setAttribute(rn,"");let n=document.createElement("div");n.className="mapActionB",n.title="Download",n.setAttribute(rn,"");let r=og(f1);return n.append(r),tg(n,r,e,t),[o,n]}featuredButton(e,t){let o=document.createElement("div");o.setAttribute(rn,""),o.style.cssText=g1;let n=og(b1);return o.append("Download ",n),tg(o,n,e,t),o}},y1=new rd});var dd={};A(dd,{default:()=>A1});function Cr(s,e,t){return Math.min(t,Math.max(e,s))}function ld(s,e){let t=parseFloat(localStorage.getItem("kro_setngss_"+s)??"");return Number.isFinite(t)&&t>0?t:e}function ig(s,e){let t=s.createProgram();for(let[o,n]of[[s.VERTEX_SHADER,C1],[s.FRAGMENT_SHADER,e]]){let r=s.createShader(o);if(!r)return null;s.shaderSource(r,n),s.compileShader(r),s.attachShader(t,r)}return s.linkProgram(t),s.getProgramParameter(t,s.LINK_STATUS)?t:null}var x1,sg,S1,E1,ng,$1,rg,C1,M1,T1,cd,A1,ud=w(()=>{"use strict";D();as();x1="kuteMotionBlur",sg=1e3/60,S1=.4,E1=.002,ng=.2,$1=2,rg=.0024,C1=`#version 300 es void main(){ vec2 p = vec2((gl_VertexID << 1) & 2, gl_VertexID & 2); @@ -1254,7 +1254,7 @@ out vec4 color; void main(){ color = vec4(pow(texelFetch(history, ivec2(gl_FragCoord.xy), 0).rgb, vec3(1.0 / ${s})), 1.0); }`;cd=class{constructor(){this.enabled=!1,this.running=!1,this.moveX=0,this.moveY=0,this.scaleX=0,this.scaleY=0,this.weight=0,this.lastFrame=0,this.hasHistory=!1,this.game=null,this.overlay=null,this.gl=null,this.accumulate=null,this.present=null,this.source=null,this.history=null,this.historyBuffer=null,this.historyFormat=0,this.unsupported=!1,this.onMouseMove=e=>{document.pointerLockElement!==null&&(this.moveX+=e.movementX,this.moveY+=e.movementY,this.running||(this.running=!0,this.lastFrame=0,this.readScale(),Mn(this.onFrameEnd)))},this.onPointerLockChange=()=>this.stop(),this.onFrameEnd=e=>this.frame(e),this.onContextLost=()=>this.release(),u.settings.toggleMotionBlur=e=>this.toggle(e),this.toggle(!!u.settings.data.motionBlur)}toggle(e){if(e!==this.enabled){if(this.enabled=e,e){window.addEventListener("mousemove",this.onMouseMove,!0),document.addEventListener("pointerlockchange",this.onPointerLockChange);return}window.removeEventListener("mousemove",this.onMouseMove,!0),document.removeEventListener("pointerlockchange",this.onPointerLockChange),this.stop(),this.unsupported=!1,this.gl?.getExtension("WEBGL_lose_context")?.loseContext(),this.release(),this.game=null}}stop(){this.running&&Mn(null),this.running=!1,this.moveX=0,this.moveY=0,this.weight=0,this.hasHistory=!1,this.overlay&&(this.overlay.style.display="none")}release(){this.overlay?.removeEventListener("webglcontextlost",this.onContextLost),this.overlay?.remove(),this.overlay=null,this.gl=null,this.accumulate=null,this.present=null,this.source=null,this.history=null,this.historyBuffer=null,this.hasHistory=!1}readScale(){let e=Cr(ld("fov",100),10,170)*Math.PI/180,t=.5/Math.tan(e/2);this.scaleX=rg*ld("sensitivityX",1)*t,this.scaleY=rg*ld("sensitivityY",1)*t}createContext(){let e=document.createElement("canvas");e.id=x1,e.style.cssText="position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;contain:strict;display:none";let t=e.getContext("webgl2",{alpha:!1,antialias:!1,depth:!1,stencil:!1,preserveDrawingBuffer:!1});if(!t)return!1;let o=!!(t.getExtension("EXT_color_buffer_float")||t.getExtension("EXT_color_buffer_half_float")),n=o?"2.2":"1.0",r=ig(t,M1(n)),i=ig(t,T1(n));if(!r||!i)return!1;t.useProgram(r),t.uniform1i(t.getUniformLocation(r,"source"),0),t.useProgram(i),t.uniform1i(t.getUniformLocation(i,"history"),1);let a=t.createTexture();t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,a),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let l=t.createTexture();t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,l),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let c=t.createFramebuffer();return t.blendFunc(t.CONSTANT_ALPHA,t.ONE_MINUS_CONSTANT_ALPHA),e.addEventListener("webglcontextlost",this.onContextLost),this.overlay=e,this.gl=t,this.accumulate=r,this.present=i,this.source=a,this.history=l,this.historyBuffer=c,this.historyFormat=o?t.RGBA16F:t.RGBA8,!0}attach(){this.game?.isConnected||(this.game=document.querySelector("body > canvas:not([id])"));let{game:e}=this;if(!e)return!1;if(!this.overlay&&(this.unsupported||!this.createContext()))return this.unsupported=!0,!1;let{overlay:t,gl:o}=this;return!t||!o?!1:(t.previousElementSibling!==e&&e.after(t),(t.width!==e.width||t.height!==e.height)&&(t.width=e.width,t.height=e.height,o.viewport(0,0,e.width,e.height),o.activeTexture(o.TEXTURE1),o.texImage2D(o.TEXTURE_2D,0,this.historyFormat,e.width,e.height,0,o.RGBA,this.historyFormat===o.RGBA8?o.UNSIGNED_BYTE:o.HALF_FLOAT,null),o.bindFramebuffer(o.FRAMEBUFFER,this.historyBuffer),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,this.history,0),this.hasHistory=!1),!0)}frame(e){let t=this.lastFrame?Cr(e-this.lastFrame,1,100):sg;this.lastFrame=e;let o=Math.hypot(this.moveX*this.scaleX,this.moveY*this.scaleY)*(1e3/t);this.moveX=0,this.moveY=0;let n=Cr((o-ng)/($1-ng),0,1),i=Cr(Number(u.settings.data.motionBlurStrength)||0,0,100)/100*S1*n*n*(3-2*n);if(this.weight+=(i-this.weight)*(1-Math.exp(-t/(i>this.weight?6:12))),this.weight{lg=`#kuteNukeCounter{position:absolute;left:94%;top:50%;transform:translate(-50%,-50%);z-index:10;display:flex;align-items:center;gap:.3em;font-family:GameFont,monospace;font-size:26px;color:#fff;white-space:nowrap;pointer-events:none;text-shadow:1px 1px 3px rgba(0,0,0,.9)}#uiBase.onMenu #kuteNukeCounter{display:none}#kuteNukeCounter.nukeBg{padding:.2em .5em;border-radius:.25em;background:#00000059}.nukeIcon{color:#ffc147}.nukeGoal{color:#fff9}#kuteNukeCounter.nukeGoalMet .nukeCount{color:#9eeb56}@keyframes kuteNukeGain{0%{opacity:0;transform:scale(.6)}12%{opacity:1;transform:scale(1)}80%{opacity:1}to{opacity:0}}.nukeGain{color:#9eeb56;animation:kuteNukeGain 8s ease forwards} -`});var cg=we((GE,R1)=>{R1.exports='

              Nuke Counter

              Your nuke total, in game. It updates when a match ends
              Where it sits and how big it is belongs to the HUD editor
              Place it
              Done
              '});var md={};A(md,{default:()=>H1});function z1(s,e,t){return Math.min(t,Math.max(e,Number(s)||0))}function pd(s){return s.toLocaleString("en-US")}var P1,I1,N1,_1,dg,B1,hd,H1,fd=w(()=>{"use strict";ag();D();P1={goal:0,background:!0},I1="https://gapi.svc.krunker.io/players/",N1=2e3,_1=3e4,dg=[5e3,2e4],B1=8e3;hd=class{constructor(){this.overlay=null,this.nukes=null,this.nukesFor="",this.noStat=!1,this.fetching=!1,this.lastTry=0,this.endWasUp=!1,this.tick=null,this.commitTimers=[],u.nukeCounter={showOptions:()=>this.showOptions()},u.settings.toggleNukeCounter=e=>this.toggle(e),this.toggle(!!u.settings.data.nukeCounter)}accountName(){try{return window.localStorage.getItem("krunker_username")??""}catch{return""}}get config(){return{...P1,...u.settings.data.nukeCounterConfig}}saveConfig(e){u.settings.data.nukeCounterConfig=e,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(e)}`)}toggle(e){if(!e){this.destroy();return}if(!document.querySelector("#kuteNukeCounterCSS")){let t=document.createElement("style");t.id="kuteNukeCounterCSS",t.textContent=lg,document.head.append(t)}this.inject(),this.nukes===null&&this.refresh(),this.tick??=setInterval(()=>this.onTick(),N1)}destroy(){this.tick!==null&&(clearInterval(this.tick),this.tick=null);for(let e of this.commitTimers)clearTimeout(e);this.commitTimers=[],this.overlay?.remove(),this.overlay=null,document.querySelector("#kuteNukeCounterCSS")?.remove(),this.endWasUp=!1}inject(){if(!this.accountName()||this.overlay?.isConnected)return;this.overlay?.remove();let e=document.createElement("div");e.id="kuteNukeCounter",e.innerHTML='\u2622\u2014',(document.querySelector("#uiBase")??document.body).append(e),this.overlay=e,this.applyConfig(),this.render()}applyConfig(){this.overlay?.classList.toggle("nukeBg",this.config.background)}render(){let{overlay:e}=this;if(!e)return;let{goal:t}=this.config,o=e.querySelector(".nukeCount"),n=e.querySelector(".nukeGoal");o&&(o.textContent=this.nukes===null?"\u2014":pd(this.nukes)),n&&(n.style.display=t>0?"":"none",n.textContent=`/ ${pd(t)}`),e.classList.toggle("nukeGoalMet",t>0&&this.nukes!==null&&this.nukes>=t)}showGain(e){let{overlay:t}=this;if(!t||e<=0)return;t.querySelector(".nukeGain")?.remove();let o=document.createElement("span");o.className="nukeGain",o.textContent=`+${pd(e)}`,t.append(o),setTimeout(()=>o.remove(),B1)}refresh(){let e=this.accountName();!e||this.fetching||(this.fetching=!0,this.lastTry=Date.now(),window.fetch(I1+encodeURIComponent(e),{credentials:"omit",signal:AbortSignal.timeout(1e4)}).then(t=>t.ok?t.json():null).then(t=>{let o=t?.data?.player_stats?.n;if(typeof o=="number"){let n=this.nukes===null||this.nukesFor!==e?0:o-this.nukes;this.nukes=o,this.noStat=!1,this.nukesFor=e,this.render(),this.showGain(n)}else t&&(this.noStat=!0,this.nukesFor=e)}).catch(()=>{}).finally(()=>{this.fetching=!1}))}onTick(){this.inject(),this.accountName()!==this.nukesFor&&(this.nukes!==null||this.noStat)&&(this.nukes=null,this.noStat=!1,this.lastTry=0,this.render()),this.nukes===null&&!this.noStat&&Date.now()-this.lastTry>_1&&this.refresh();let t=document.querySelector("#endUI"),o=!!t&&t.style.display!=="none";o&&!this.endWasUp&&this.commitTimers.length===0&&(this.commitTimers=dg.map((n,r)=>setTimeout(()=>{r===dg.length-1&&(this.commitTimers=[]),this.refresh()},n))),this.endWasUp=o}async showOptions(){let e=await Promise.resolve().then(()=>ue(cg(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=d=>r.querySelector(`#${d}`),a=()=>{u.settings.data.nukeCounterConfig=t,this.applyConfig(),this.render()};i("nkGoalInput").value=String(t.goal),i("nkBackground").checked=t.background,i("nkGoalInput").oninput=d=>{let p=Number.parseInt(d.target.value,10);t.goal=Number.isNaN(p)?0:z1(p,0,1e6),a()},i("nkBackground").onchange=d=>{t.background=d.target.checked,a()};let l=new AbortController,c=()=>{l.abort(),o.remove(),this.saveConfig(t)};i("nkDone").onclick=c,i("nkPlace").onclick=()=>{c(),u.hudEditor?.edit()},o.addEventListener("mousedown",d=>{d.target===o&&c()}),document.addEventListener("keydown",d=>{d.key==="Escape"&&(d.stopPropagation(),c())},{signal:l.signal,capture:!0}),document.body.append(o)}},H1=new hd});var ug=we((YE,O1)=>{O1.exports=`#kute-rank-list-btn{position:absolute;top:15px;right:30px;background-color:#5ce05a;color:#000;font-family:GameFont,sans-serif;font-size:14px;font-weight:700;padding:5px 15px;border-radius:4px;letter-spacing:1px;cursor:pointer;transition:transform .2s,background-color .2s;display:flex;align-items:center;z-index:10;text-transform:uppercase;box-shadow:0 2px 4px #0006}#kute-rank-list-btn:hover{transform:scale(1.05);background-color:#6efc6c;color:#000}#kute-rank-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000d9;z-index:99999;display:flex;justify-content:center;align-items:center;backdrop-filter:blur(4px)}.rank-popup-content{background:#151515;border:2px solid #333;border-top:4px solid #5ce05a;width:700px;max-width:90%;max-height:85vh;border-radius:8px;box-shadow:0 10px 40px #000c;display:flex;flex-direction:column;overflow:hidden;animation:popIn .3s cubic-bezier(.18,.89,.32,1.28)}@keyframes popIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.rank-popup-header{padding:20px;background:#ffffff08;border-bottom:2px solid rgba(255,255,255,.05);display:flex;justify-content:space-between;align-items:center}.rank-popup-header h2{margin:0;color:#fff;font-family:GameFont,sans-serif;font-size:24px;letter-spacing:1px}.rank-popup-close{font-size:24px;color:#aaa;cursor:pointer;font-weight:700;line-height:1}.rank-popup-close:hover{color:#eb5656}.rank-grid-container{padding:20px;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.rank-grid-item{background:#ffffff0d;padding:10px;border-radius:6px;display:flex;align-items:center;gap:12px;border:1px solid transparent}.rank-grid-item:hover{background:#ffffff1a;border-color:#fff3}.rank-grid-item img{height:45px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5))}.r-details{display:flex;flex-direction:column}.r-name{font-family:GameFont,sans-serif;font-size:16px;font-weight:700;margin-bottom:2px;text-shadow:1px 1px 0 #000}.r-elo{font-family:monospace;color:#888;font-size:13px;background:#0000004d;padding:2px 6px;border-radius:4px;display:inline-block;width:max-content}.rank-grid-container::-webkit-scrollbar{width:8px}.rank-grid-container::-webkit-scrollbar-thumb{background:#444;border-radius:4px}.rank-grid-container::-webkit-scrollbar-thumb:hover{background:#5ce05a}#kute-elo-tracker{width:100%;margin-top:5px;margin-bottom:10px;background:#0006;padding:8px 12px;border-radius:6px;border:1px solid rgba(255,255,255,.08);box-sizing:border-box}.elo-info-row{display:flex;align-items:center;gap:15px;justify-content:space-between}.elo-rank-img{height:28px;width:auto;display:block;margin-bottom:2px;filter:drop-shadow(0px 0px 3px rgba(0,0,0,.5))}.rank-current-container,.rank-next-container{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#bbb;font-family:GameFont,sans-serif;font-size:10px;line-height:1;min-width:50px}.rank-next-container span,.rank-current-container span{color:#fff;text-transform:uppercase;font-weight:700;letter-spacing:.5px}#kute-rank-list-btn span{font-size:16px!important;vertical-align:middle;margin-right:4px}.elo-progress-bar-bg{flex-grow:1;height:22px;background:#151515;border-radius:4px;position:relative;overflow:hidden;box-shadow:inset 0 2px 5px #00000080;border:1px solid #333}.elo-progress-bar-fill{height:100%;background-color:#fb8c00;background-image:linear-gradient(180deg,#fff3,#fff0);transition:width .8s cubic-bezier(.22,1,.36,1);box-shadow:0 0 10px #fb8c0066;position:relative}.elo-progress-bar-fill:after{content:"";position:absolute;right:0;top:0;bottom:0;width:1px;background:#fff;opacity:.7;box-shadow:0 0 5px #fff}.rank-name{margin-bottom:2px!important}.elo-progress-text{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;align-items:center;justify-content:center;color:#fff;text-shadow:1px 1px 2px #000,0 0 4px #000;font-weight:700;font-family:GameFont,sans-serif;font-size:14px;z-index:5;letter-spacing:1px}.rank-and-stats{justify-content:flex-start;gap:5px}.season-banner.svelte-s4rbwd{right:150px!important} +`});var cg=we((GE,R1)=>{R1.exports='

              Nuke Counter

              Your nuke total, in game. It updates when a match ends
              Where it sits and how big it is belongs to the HUD editor
              Place it
              Done
              '});var md={};A(md,{default:()=>H1});function z1(s,e,t){return Math.min(t,Math.max(e,Number(s)||0))}function pd(s){return s.toLocaleString("en-US")}var P1,I1,N1,_1,dg,B1,hd,H1,fd=w(()=>{"use strict";ag();D();P1={goal:0,background:!0},I1="https://gapi.svc.krunker.io/players/",N1=2e3,_1=3e4,dg=[5e3,2e4],B1=8e3;hd=class{constructor(){this.overlay=null,this.nukes=null,this.nukesFor="",this.noStat=!1,this.fetching=!1,this.lastTry=0,this.endWasUp=!1,this.tick=null,this.commitTimers=[],u.nukeCounter={showOptions:()=>this.showOptions()},u.settings.toggleNukeCounter=e=>this.toggle(e),this.toggle(!!u.settings.data.nukeCounter)}accountName(){try{return window.localStorage.getItem("krunker_username")??""}catch{return""}}get config(){return{...P1,...u.settings.data.nukeCounterConfig}}saveConfig(e){u.settings.data.nukeCounterConfig=e,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(e)}`)}toggle(e){if(!e){this.destroy();return}if(!document.querySelector("#kuteNukeCounterCSS")){let t=document.createElement("style");t.id="kuteNukeCounterCSS",t.textContent=lg,document.head.append(t)}this.inject(),this.nukes===null&&this.refresh(),this.tick??=setInterval(()=>this.onTick(),N1)}destroy(){this.tick!==null&&(clearInterval(this.tick),this.tick=null);for(let e of this.commitTimers)clearTimeout(e);this.commitTimers=[],this.overlay?.remove(),this.overlay=null,document.querySelector("#kuteNukeCounterCSS")?.remove(),this.endWasUp=!1}inject(){if(!this.accountName()||this.overlay?.isConnected)return;this.overlay?.remove();let e=document.createElement("div");e.id="kuteNukeCounter",e.innerHTML='\u2622\u2014',(document.querySelector("#uiBase")??document.body).append(e),this.overlay=e,this.applyConfig(),this.render()}applyConfig(){this.overlay?.classList.toggle("nukeBg",this.config.background)}render(){let{overlay:e}=this;if(!e)return;let{goal:t}=this.config,o=e.querySelector(".nukeCount"),n=e.querySelector(".nukeGoal");o&&(o.textContent=this.nukes===null?"\u2014":pd(this.nukes)),n&&(n.style.display=t>0?"":"none",n.textContent=`/ ${pd(t)}`),e.classList.toggle("nukeGoalMet",t>0&&this.nukes!==null&&this.nukes>=t)}showGain(e){let{overlay:t}=this;if(!t||e<=0)return;t.querySelector(".nukeGain")?.remove();let o=document.createElement("span");o.className="nukeGain",o.textContent=`+${pd(e)}`,t.append(o),setTimeout(()=>o.remove(),B1)}refresh(){let e=this.accountName();!e||this.fetching||(this.fetching=!0,this.lastTry=Date.now(),window.fetch(I1+encodeURIComponent(e),{credentials:"omit",signal:AbortSignal.timeout(1e4)}).then(t=>t.ok?t.json():null).then(t=>{let o=t?.data?.player_stats?.n;if(typeof o=="number"){let n=this.nukes===null||this.nukesFor!==e?0:o-this.nukes;this.nukes=o,this.noStat=!1,this.nukesFor=e,this.render(),this.showGain(n)}else t&&(this.noStat=!0,this.nukesFor=e)}).catch(()=>{}).finally(()=>{this.fetching=!1}))}onTick(){this.inject(),this.accountName()!==this.nukesFor&&(this.nukes!==null||this.noStat)&&(this.nukes=null,this.noStat=!1,this.lastTry=0,this.render()),this.nukes===null&&!this.noStat&&Date.now()-this.lastTry>_1&&this.refresh();let t=document.querySelector("#endUI"),o=!!t&&t.style.display!=="none";o&&!this.endWasUp&&this.commitTimers.length===0&&(this.commitTimers=dg.map((n,r)=>setTimeout(()=>{r===dg.length-1&&(this.commitTimers=[]),this.refresh()},n))),this.endWasUp=o}async showOptions(){let e=await Promise.resolve().then(()=>ue(cg(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=d=>r.querySelector(`#${d}`),a=()=>{u.settings.data.nukeCounterConfig=t,this.applyConfig(),this.render()};i("nkGoalInput").value=String(t.goal),i("nkBackground").checked=t.background,i("nkGoalInput").oninput=d=>{let h=Number.parseInt(d.target.value,10);t.goal=Number.isNaN(h)?0:z1(h,0,1e6),a()},i("nkBackground").onchange=d=>{t.background=d.target.checked,a()};let l=new AbortController,c=()=>{l.abort(),o.remove(),this.saveConfig(t)};i("nkDone").onclick=c,i("nkPlace").onclick=()=>{c(),u.hudEditor?.edit()},o.addEventListener("mousedown",d=>{d.target===o&&c()}),document.addEventListener("keydown",d=>{d.key==="Escape"&&(d.stopPropagation(),c())},{signal:l.signal,capture:!0}),document.body.append(o)}},H1=new hd});var ug=we((YE,O1)=>{O1.exports=`#kute-rank-list-btn{position:absolute;top:15px;right:30px;background-color:#5ce05a;color:#000;font-family:GameFont,sans-serif;font-size:14px;font-weight:700;padding:5px 15px;border-radius:4px;letter-spacing:1px;cursor:pointer;transition:transform .2s,background-color .2s;display:flex;align-items:center;z-index:10;text-transform:uppercase;box-shadow:0 2px 4px #0006}#kute-rank-list-btn:hover{transform:scale(1.05);background-color:#6efc6c;color:#000}#kute-rank-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000d9;z-index:99999;display:flex;justify-content:center;align-items:center;backdrop-filter:blur(4px)}.rank-popup-content{background:#151515;border:2px solid #333;border-top:4px solid #5ce05a;width:700px;max-width:90%;max-height:85vh;border-radius:8px;box-shadow:0 10px 40px #000c;display:flex;flex-direction:column;overflow:hidden;animation:popIn .3s cubic-bezier(.18,.89,.32,1.28)}@keyframes popIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.rank-popup-header{padding:20px;background:#ffffff08;border-bottom:2px solid rgba(255,255,255,.05);display:flex;justify-content:space-between;align-items:center}.rank-popup-header h2{margin:0;color:#fff;font-family:GameFont,sans-serif;font-size:24px;letter-spacing:1px}.rank-popup-close{font-size:24px;color:#aaa;cursor:pointer;font-weight:700;line-height:1}.rank-popup-close:hover{color:#eb5656}.rank-grid-container{padding:20px;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.rank-grid-item{background:#ffffff0d;padding:10px;border-radius:6px;display:flex;align-items:center;gap:12px;border:1px solid transparent}.rank-grid-item:hover{background:#ffffff1a;border-color:#fff3}.rank-grid-item img{height:45px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5))}.r-details{display:flex;flex-direction:column}.r-name{font-family:GameFont,sans-serif;font-size:16px;font-weight:700;margin-bottom:2px;text-shadow:1px 1px 0 #000}.r-elo{font-family:monospace;color:#888;font-size:13px;background:#0000004d;padding:2px 6px;border-radius:4px;display:inline-block;width:max-content}.rank-grid-container::-webkit-scrollbar{width:8px}.rank-grid-container::-webkit-scrollbar-thumb{background:#444;border-radius:4px}.rank-grid-container::-webkit-scrollbar-thumb:hover{background:#5ce05a}#kute-elo-tracker{width:100%;margin-top:5px;margin-bottom:10px;background:#0006;padding:8px 12px;border-radius:6px;border:1px solid rgba(255,255,255,.08);box-sizing:border-box}.elo-info-row{display:flex;align-items:center;gap:15px;justify-content:space-between}.elo-rank-img{height:28px;width:auto;display:block;margin-bottom:2px;filter:drop-shadow(0px 0px 3px rgba(0,0,0,.5))}.rank-current-container,.rank-next-container{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#bbb;font-family:GameFont,sans-serif;font-size:10px;line-height:1;min-width:50px}.rank-next-container span,.rank-current-container span{color:#fff;text-transform:uppercase;font-weight:700;letter-spacing:.5px}#kute-rank-list-btn span{font-size:16px!important;vertical-align:middle;margin-right:4px}.elo-progress-bar-bg{flex-grow:1;height:22px;background:#151515;border-radius:4px;position:relative;overflow:hidden;box-shadow:inset 0 2px 5px #00000080;border:1px solid #333}.elo-progress-bar-fill{height:100%;background-color:#fb8c00;background-image:linear-gradient(180deg,#fff3,#fff0);transition:width .8s cubic-bezier(.22,1,.36,1);box-shadow:0 0 10px #fb8c0066;position:relative}.elo-progress-bar-fill:after{content:"";position:absolute;right:0;top:0;bottom:0;width:1px;background:#fff;opacity:.7;box-shadow:0 0 5px #fff}.rank-name{margin-bottom:2px!important}.elo-progress-text{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;align-items:center;justify-content:center;color:#fff;text-shadow:1px 1px 2px #000,0 0 4px #000;font-weight:700;font-family:GameFont,sans-serif;font-size:14px;z-index:5;letter-spacing:1px}.rank-and-stats{justify-content:flex-start;gap:5px}.season-banner.svelte-s4rbwd{right:150px!important} `});var bd={};A(bd,{default:()=>D1});var gd,D1,vd=w(()=>{"use strict";Ae();gd=class{constructor(){this.ranks=[{rank:"Unranked",elo:null,color:"#FFFFFF",image:"rank_unranked.svg"},{rank:"Bronze 1",elo:0,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Bronze 2",elo:200,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Bronze 3",elo:400,color:"#CD7F32",image:"rank_bronze.svg"},{rank:"Silver 1",elo:700,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Silver 2",elo:900,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Silver 3",elo:1100,color:"#C0C0C0",image:"rank_silver.svg"},{rank:"Gold 1",elo:1300,color:"#FFD700",image:"rank_gold.svg"},{rank:"Gold 2",elo:1600,color:"#FFD700",image:"rank_gold.svg"},{rank:"Gold 3",elo:2e3,color:"#FFD700",image:"rank_gold.svg"},{rank:"Platinum",elo:2300,color:"#4B69FF",image:"rank_platinum.svg"},{rank:"Diamond",elo:3e3,color:"#4B69FF",image:"rank_diamond.svg"},{rank:"Master",elo:3300,color:"#EE7032",image:"rank_master.svg"},{rank:"Kracked",elo:4700,color:"#FF0000",image:"rank_kracked.svg"}],this.observer=new MutationObserver(()=>this.checkForMenu());let e=window.openRankedMenu;window.openRankedMenu=()=>{e(),this.observer.observe(U(".rankedMenuModal"),{childList:!0,subtree:!0});let t=setInterval(()=>{document.querySelector(".rankedMenuModal")||(clearInterval(t),this.observer.disconnect())},5e3)},Promise.resolve().then(()=>ue(ug(),1)).then(t=>{let o=document.createElement("style");o.textContent=t.default,document.head.append(o)})}checkForMenu(){let e=document.querySelector(".rank-card"),t=document.querySelector(".rank-and-stats");e&&t&&(t.querySelector("#kute-elo-tracker")||this.injectBar(t),e.querySelector("#kute-rank-list-btn")||this.injectRankListButton(e))}injectRankListButton(e){let t=document.createElement("div");t.id="kute-rank-list-btn",t.className="season-banner",t.innerHTML='list Ranks',t.onclick=()=>this.openPopup(),window.getComputedStyle(e).position==="static"&&(e.style.position="relative"),e.appendChild(t)}openPopup(){if(document.getElementById("kute-rank-overlay"))return;let e="";for(let o of this.ranks)e+=`
              From ab767e91d4507fe4bd7e078ffad989a309108516 Mon Sep 17 00:00:00 2001 From: Liamoule Date: Fri, 23 Oct 2026 11:16:03 +0200 Subject: [PATCH 06/18] Bringed back old bundle.js --- target/bundle.js | 332 +++++++++++++++++++++++------------------------ 1 file changed, 165 insertions(+), 167 deletions(-) diff --git a/target/bundle.js b/target/bundle.js index 28d0fa0d..6defbfee 100644 --- a/target/bundle.js +++ b/target/bundle.js @@ -1,5 +1,5 @@ -"use strict";(()=>{var Gg=Object.create;var Br=Object.defineProperty;var Wg=Object.getOwnPropertyDescriptor;var Vg=Object.getOwnPropertyNames;var Yg=Object.getPrototypeOf,Xg=Object.prototype.hasOwnProperty;var du=s=>e=>{var t=s[e];if(t)return t();throw new Error("Module not found in bundle: "+e)};var w=(s,e,t)=>()=>{if(t)throw t[0];try{return s&&(e=s(s=0)),e}catch(o){throw t=[o],o}};var we=(s,e)=>()=>{try{return e||s((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},A=(s,e)=>{for(var t in e)Br(s,t,{get:e[t],enumerable:!0})},Jg=(s,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Vg(e))!Xg.call(s,n)&&n!==t&&Br(s,n,{get:()=>e[n],enumerable:!(o=Wg(e,n))||o.enumerable});return s};var ue=(s,e,t)=>(t=s!=null?Gg(Yg(s)):{},Jg(e||!s||!s.__esModule?Br(t,"default",{value:s,enumerable:!0}):t,s));var At,Jo=w(()=>{At={autoDetect:{name:"Auto-Detect Best Settings",id:"autoDetect",description:"Tests the client and the game on your PC for about two minutes and picks what runs best. Don't touch mouse or keyboard meanwhile. You can undo it",type:"none",category:"General",button:"Run",buttonAction:"{{kute}}.autoDetect.setUp()",requiresLogin:!0,hostFeature:"autodetect-v2"},autoDetectResult:{name:"Last Auto-Detect Result",id:"autoDetectResult",description:"See what the last run measured and changed, and undo it",type:"none",category:"General",button:"Show",buttonAction:"{{kute}}.autoDetect.showLast()"},hotkeys:{name:"Hotkeys",id:"hotkeys",description:"Change or clear Kute's own keys (new lobby, matchmaker, reload, fullscreen, chat logs) and add keys for toggles",type:"none",category:"General",button:"Change",buttonAction:"{{kute}}.hotkeys.edit()",hostFeature:"hotkeys"},performanceMode:{name:"Disable & Hide All Non-Performance Settings",id:"performanceMode",description:"Turns off everything cosmetic and hides its settings. Turn this off again and all of them come back as they were",type:"checkbox",category:"General",defaultValue:!1,needsRefresh:!0,hostFeature:"performance-mode"},startMode:{name:"Start Mode",id:"startMode",description:"How the window opens when Kute starts",type:"select",category:"General",defaultValue:"Remember Previous",options:["Remember Previous","Borderless Fullscreen","Windowed","Maximized"]},gameFpsLimit:{name:"FPS Limit",id:"gameFpsLimit",description:"Caps your FPS to save power and heat. 0 means unlimited",type:"slider",category:"General",defaultValue:0,min:0,max:2e3,step:5},discordRPC:{name:"Discord Rich Presence",id:"discordRPC",description:"Shows your current mode and map on your Discord profile",type:"checkbox",category:"General",defaultValue:!0,needsRestart:!0},accountManager:{name:"Account Manager",id:"accountManager",description:"Save your Krunker accounts and switch between them from the menu",type:"checkbox",category:"General",defaultValue:!0},market:{name:"Kute Market",id:"market",description:"Enables market and trading features: K values, liquidity grades, trade verdicts and the market analyzer. In return, you allow Kute to see trading stats.",type:"checkbox",category:"General",defaultValue:!0,disabledBy:"disableOnlineFeatures"},obsCapturePlugin:{name:"OBS Capture Plugin",id:"obsCapturePlugin",platforms:["windows"],description:"Adds a Kute Capture source to OBS (close OBS first). For sound, add an Application Audio Capture of 'Kute audio window'",type:"checkbox",category:"General",defaultValue:!1},rawInput:{name:"Raw Input",id:"rawInput",platforms:["windows"],description:"Mouse movement comes straight from the device, without Windows pointer acceleration, and all of it reaches the game, also when you click or scroll mid-flick. Krunker's own Raw Mouse Input follows this setting",type:"checkbox",category:"Game",defaultValue:!0,needsRefresh:!0},rampBoost:{name:"Ramp Boosting",id:"rampBoost",description:"Scrolling makes you jump, for easier ramp boosts. Off in competitive. Turn it off if another tool already does this",type:"checkbox",category:"Game",defaultValue:!1},autoSpec:{name:"Auto Spectate",id:"autoSpec",description:"Joins public matches as a spectator instead of a player",type:"checkbox",category:"Game",defaultValue:!1},hsSound:{name:"Headshot Sound on Every Kill",id:"hsSound",performance:!1,description:"Plays the headshot sound on every kill, not just headshots",category:"Game",type:"checkbox",defaultValue:!1},hpEnemyCounter:{name:"Hardpoint Enemy Counter",id:"hpEnemyCounter",performance:!1,description:"Shows how many enemies are on the point in competitive Hardpoint",type:"checkbox",category:"Game",defaultValue:!0},showPing:{name:"Player List Ping",id:"showPing",performance:!1,description:"Shows everyone's ping next to their name in the player list",type:"checkbox",category:"Game",defaultValue:!0,needsRefresh:!0},realPing:{name:"Real Ping\u2122\uFE0F",id:"realPing",description:"Pings the lobby server directly and shows your real latency",type:"checkbox",category:"Game",defaultValue:!1,needsRestart:!0},matchmaker:{name:"Matchmaker (F6)",id:"matchmaker",description:"F6 joins the lowest ping lobby that matches your filters instead of a random one",type:"checkbox",category:"Game",defaultValue:!0,button:"Filters",buttonAction:"{{kute}}.matchmaker.showFilters()"},rankedAlert:{name:"Ranked Match Alert",id:"rankedAlert",description:"When Krunker's ranked queue finds a match while you are tabbed out, Kute comes to the front",type:"checkbox",category:"Game",defaultValue:!0,button:"Sound",buttonAction:"{{kute}}.queueSound.showOptions()"},accountEndMessage:{name:"Match End Message per Account",id:"accountEndMessage",description:"Remembers Krunker's Match End Message per account, an account without one sends nothing",type:"checkbox",category:"Game",defaultValue:!1,requiresLogin:!0},exitButton:{name:"Exit Button",id:"exitButton",performance:!1,description:"Adds an Exit button to the menu",type:"checkbox",category:"Interface",defaultValue:!0},menuTimer:{name:"Menu Timer",id:"menuTimer",performance:!1,description:"Shows the match timer while you are in the menu",type:"checkbox",category:"Interface",defaultValue:!0},classicMenu:{name:"Classic Menu",id:"classicMenu",performance:!1,description:"Season 9 menu layout, new buttons and features stay",type:"checkbox",category:"Interface",defaultValue:!1},betterChat:{name:"Better Chat",id:"betterChat",performance:!1,description:"Team and all chat in one view. Press Tab to switch where you send",type:"checkbox",category:"Interface",defaultValue:!0},chatLogs:{name:"Chat Logs",id:"chatLogs",description:"Keeps the last 2000 chat lines, also across lobbies, to search and copy. F1 opens them, change it in Hotkeys",type:"checkbox",category:"Interface",defaultValue:!0,button:"Open",buttonAction:"{{kute}}.chatLogs?.open()"},textSelect:{name:"Selectable Chat",id:"textSelect",performance:!1,description:"Lets you select and copy text from the chat",type:"checkbox",category:"Interface",defaultValue:!0},cleanUI:{name:"Cleaner Menu",id:"cleanUI",description:"Hides ads, promos, the Popular Now row and other clutter in the menu",type:"checkbox",category:"Interface",defaultValue:!1},hideBundles:{name:"Hide Bundle Popups",id:"hideBundles",description:"Stops store bundle popups from showing up outside the store",type:"checkbox",category:"Interface",defaultValue:!1},clanColors:{name:"Show Clan Colors",id:"clanColors",performance:!1,description:"Colors the tags of some clans in the player lists",type:"checkbox",category:"Interface",defaultValue:!0,disabledBy:"disableOnlineFeatures"},cuteBadge:{name:"Show Kute Badge",id:"cuteBadge",description:"Shows a badge next to other Kute players. This only affects what you see, others still see yours",type:"checkbox",category:"Interface",defaultValue:!0,disabledBy:"disableOnlineFeatures"},kuteIcons:{name:"Use Kute Icons",id:"kuteIcons",performance:!1,description:"Kute's own icons for counters, ammo, hitmarker, reticle and scope. Your game settings stay untouched",type:"checkbox",category:"Interface",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.kuteIcons.customize()"},hudLayout:{name:"HUD Editor",id:"hudLayout",description:"Move, resize and hide parts of the in-game HUD. Opens a private match while you edit",type:"none",category:"Interface",button:"Edit",buttonAction:"{{kute}}.hudEditor.edit()",requiresLogin:!0},keystrokes:{name:"Keystrokes",id:"keystrokes",performance:!1,description:"Shows your movement keys and mouse in the HUD and lights them up while pressed. Move it with the HUD Editor",type:"checkbox",category:"Interface",defaultValue:!1},spotifyOverlay:{name:"Spotify Overlay",id:"spotifyOverlay",performance:!1,description:"Shows the currently playing Spotify track in the HUD. Move and resize it with the HUD Editor",type:"checkbox",category:"Interface",defaultValue:!1,hostFeature:"spotify"},nukeCounter:{name:"Nuke Counter",id:"nukeCounter",performance:!1,description:"Shows your career nuke total in game. It updates when a match ends",type:"checkbox",category:"Interface",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.nukeCounter.showOptions()"},renderStats:{name:"Present FPS Counter",id:"renderStats",description:"The game counter shows how fast your PC runs the game, this adds the frames that reach your screen",type:"checkbox",category:"Interface",defaultValue:!1,needsRestart:!0,requires:"hardFlip"},kuteCss:{name:"Kute CSS",id:"kuteCss",performance:!1,description:"Kute's own look for menus, settings, HUD and social, with a few cats",type:"checkbox",category:"Customization",defaultValue:!1},motionBlur:{name:"Motion Blur",id:"motionBlur",performance:!1,description:"A slight blur while you turn the camera, the HUD stays sharp. Costs FPS: about 5 % fewer while it blurs",type:"checkbox",category:"Customization",defaultValue:!1},motionBlurStrength:{name:"Motion Blur Strength",id:"motionBlurStrength",performance:null,description:"How long the trail is when Motion Blur is on",type:"slider",category:"Customization",defaultValue:40,min:10,max:100,step:5},customSky:{name:"Custom Sky",id:"customSky",performance:!1,description:"Your own sky color gradient or image on every map. Applies from the next match",type:"checkbox",category:"Customization",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.customSky.showOptions()",hostFeature:"custom-sky"},swapper:{name:"Resource Swapper",id:"swapper",performance:!1,description:"Replaces game files like textures and sounds with the files in your swapper folder",type:"checkbox",category:"Customization",defaultValue:!0,button:"Manage",buttonAction:"{{kute}}.swapperManager.open()",needsRefresh:!0},customCss:{name:"CSS Manager",id:"customCss",performance:!1,description:"Your own CSS on top of Krunker's. Keep several files and switch between them, with a live preview",type:"checkbox",category:"Customization",defaultValue:!0,button:"Edit",buttonAction:"{{kute}}.customCss.open()"},userscripts:{name:"Userscripts",id:"userscripts",description:"Runs your own scripts. Crankshaft and idkr scripts work too",type:"checkbox",category:"Customization",defaultValue:!0,button:"Manage",buttonAction:"{{kute}}.userscriptManager.open()"},blocklist:{name:"URL Blocklist",id:"blocklist",description:"Blocks ads and trackers. Open the file to add your own entries",type:"checkbox",category:"Customization",defaultValue:!0,button:"Open file",buttonAction:"window.chrome.webview.postMessage('open, blocklist')",needsRestart:!0},disableCats:{name:"Disable Cats",id:"disableCats",performance:!0,description:"Blocks the cat models in the maps",type:"checkbox",category:"Customization",defaultValue:!0,needsRefresh:!0},disableVideoSkins:{name:"Disable Video Skins",id:"disableVideoSkins",performance:!0,description:"Video skins like Glitch are not loaded and show black instead, which can save FPS",type:"checkbox",category:"Customization",defaultValue:!1,needsRefresh:!0,hostFeature:"video-skins"},uncapFps:{name:"Uncap FPS",id:"uncapFps",description:"Removes the FPS cap at your monitor's refresh rate",type:"checkbox",category:"Advanced",defaultValue:!0,needsRestart:!0},audioFix:{name:"Fix Audio Stutters",id:"audioFix",description:"For sound that cuts out at high FPS. Moves sounds every 8 ms instead of every sample",type:"checkbox",category:"Advanced",defaultValue:!1,needsRestart:!0,hostFeature:"audio-fix"},angleBackend:{name:"Graphics Backend (ANGLE)",id:"angleBackend",platforms:["windows"],description:"Leave it on Default (D3D11). OpenGL and Vulkan turn off everything the swapchain hook does",type:"select",category:"Advanced",defaultValue:"Default",needsRestart:!0,options:["Default","D3D11","D3D11on12","OpenGL","Vulkan"]},displayServer:{name:"Display Server",id:"displayServer",platforms:["linux"],description:"Leave it on X11, it runs much faster than Wayland for now. X11 also works inside a Wayland session",type:"select",category:"Advanced",defaultValue:"X11",needsRestart:!0,options:["X11","Wayland"]},colorProfile:{name:"Color Profile",id:"colorProfile",description:"Try sRGB if colors look washed out or too strong",type:"select",category:"Advanced",defaultValue:"Default",needsRestart:!0,options:["Default","sRGB","Display P3 D65","Extended sRGB","scRGB linear","HDR10"]},webviewPriority:{name:"Process Priority",id:"webviewPriority",description:"Higher can help a little, but may make your PC less stable",type:"select",category:"Advanced",defaultValue:"Normal",needsRestart:!0,options:["High","Above Normal","Normal","Below Normal","Low","Idle"]},x3dCacheCores:{name:"Keep Kute on the 3D V-Cache cores",id:"x3dCacheCores",description:"Ryzen X3D with two core groups only: steadier frame pacing on the cores with the big cache",type:"checkbox",category:"Advanced",defaultValue:!0,needsRestart:!0,hostFeature:"x3d-cores"},throttle:{name:"CPU Throttling",id:"throttle",description:"Slows the game down on purpose (2 = half speed). Only for an unstable game, an FPS limit is usually better",type:"slider",min:1,max:3,step:.01,category:"Advanced",defaultValue:1},inMenuThrottle:{name:"CPU Throttling in Menu",id:"inMenuThrottle",description:"Same, but only in the menu. It also slows the match that runs behind the menu",type:"slider",min:1,max:3,step:.01,category:"Advanced",defaultValue:1},clearCache:{name:"Clear Cache & Storage",id:"clearCache",description:"Deletes the cache and local storage. This also resets your game settings",type:"none",category:"Advanced",button:"Clear Now",buttonAction:"if(confirm('Are you sure you want to clear cache and local storage?')) { localStorage.clear(); sessionStorage.clear(); window.chrome.webview.postMessage('clear-cache'); }"},hardFlip:{name:"DXGI Swapchain Hook",id:"hardFlip",platforms:["windows"],description:"Present FPS counter and OBS capture. Laptops with two graphics chips may run better without it",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0},laptopPowerBoost:{name:"Laptop Power Boost",id:"laptopPowerBoost",description:"Plugged in laptops only: switches the power mode to performance while Kute runs and puts yours back after",type:"checkbox",category:"Engine",defaultValue:!0,hostFeature:"hybrid-gpu"},primeOffload:{name:"NVIDIA PRIME Offload",id:"primeOffload",platforms:["linux"],description:"Hybrid laptops with the NVIDIA driver: the game renders on the NVIDIA chip instead of the built in one",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"prime-offload"},patchInputPriority:{name:"Input at Normal Priority",id:"patchInputPriority",description:"Chromium patch: mouse input no longer starves the game's server messages. Off brings back the aim freeze",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchFramePacing:{name:"Frame Pacing",id:"patchFramePacing",description:"Chromium patch: the game runs one frame ahead of the screen instead of flooding it. Off brings back the GPU stutter",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchFrameLimiter:{name:"Chromium FPS Limiter",id:"patchFrameLimiter",description:"Chromium patch: holds the FPS limit inside Chromium with the CPU idle, with or without the hook. Off uses the hook's limiter, or a busy wait without the hook",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchRawInputMovement:{name:"Raw Input Keeps Movement",id:"patchRawInputMovement",platforms:["windows"],description:"Chromium patch: no mouse movement is lost on a click. Off drops a few counts at every shot",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchAudioParamCoalesce:{name:"Coalesce Audio Automation",id:"patchAudioParamCoalesce",description:"Chromium patch: the game's per frame sound updates no longer pile up. Off makes FPS drop over a long match",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchCanvasBufferCache:{name:"WebGL Buffer Cache",id:"patchCanvasBufferCache",description:"Chromium patch: keeps three spare frame buffers instead of one. Off makes some starts land in a slow mode",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchHighQoS:{name:"Game Process at High QoS",id:"patchHighQoS",platforms:["windows"],description:"Chromium patch: Windows may not throttle the game's process to save power. Off leaves that to Windows",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},showChangelog:{name:"Show Changelog After Updates",id:"showChangelog",description:"Shows what's new after Kute updates",type:"checkbox",button:"Show Now",buttonAction:"{{kute}}.showChangelogPopup({{kute}}.version)",category:"About",defaultValue:!0},disableOnlineFeatures:{name:"Disable Kute Online Features",id:"disableOnlineFeatures",description:"Nothing is sent to or received from kute.lol. Turns off all Kute badges (yours too) and clan colors",type:"checkbox",category:"About",defaultValue:!1,needsRestart:!0},checkUpdates:{name:"Check For Updates",id:"checkUpdates",description:"Looks for a new Kute version when it starts",type:"checkbox",category:"About",defaultValue:!0,needsRestart:!0},exportClientSettings:{name:"Export Kute Settings",id:"exportClientSettings",description:"Saves Kute's settings, HUD positions, matchmaker filters and hotkeys as a file in Downloads",type:"none",category:"About",button:"Export",buttonAction:"{{kute}}.settingsTransfer.exportFile()"},importClientSettings:{name:"Import Kute Settings",id:"importClientSettings",description:"Loads a file from Export Kute Settings and restarts Kute",type:"none",category:"About",button:"Import",buttonAction:"{{kute}}.settingsTransfer.importFile()"},diagnosticsReport:{name:"Diagnostics Report",id:"diagnosticsReport",description:"Puts what helps fix a problem into one file you can send. You see all of it first, nothing is uploaded",type:"none",category:"About",button:"Create",buttonAction:"{{kute}}.diagnostics.open()",hostFeature:"diagnostics"}}});function Mo(s,e){return s.performanceMode===!0&&e in pu}function hu(s){return{...s,...Co}}function hn(s,e){let t=[];for(let[o,n]of Object.entries(pu)){if(n===null)continue;let r=s[o];e?(o in Co||(Co[o]=r),s[o]=n):o in Co&&(s[o]=Co[o],delete Co[o]),s[o]!==r&&t.push(o)}return t}var pu,Co,To=w(()=>{"use strict";Jo();pu=Object.fromEntries(Object.values(At).filter(s=>s.performance!==void 0).map(s=>[s.id,s.performance??null])),Co={}});function eb(s){let e="abcdefghijklmnopqrstuvwxyz",t=crypto.getRandomValues(new Uint8Array(s));return Array.from(t,o=>e[o%e.length]).join("")}var d,Ne,mu,Ue,F=w(()=>{"use strict";Jo();To();d={},Ne=new Promise(s=>{function e(t){if(t?.data?.settings||t?.data?.version){if(window.chrome.webview.removeEventListener("message",e),Object.assign(d,t.data),d.settings?.data)for(let o of Object.values(At))o.defaultValue!==void 0&&!(o.id in d.settings.data)&&(d.settings.data[o.id]=o.defaultValue);d.settings?.data&&hn(d.settings.data,d.settings.data.performanceMode===!0),s(d)}}window.chrome.webview.addEventListener("message",e),window.chrome.webview.postMessage("get-info")}),mu=eb(12);Object.defineProperty(window,mu,{value:d,enumerable:!1,writable:!1,configurable:!1});Ue=`window["${mu}"]`});function Te(s,e,t=2e3){return new Promise(o=>{let n={timer:0},r=i=>{i.data?.[e]!==void 0&&(clearTimeout(n.timer),window.chrome.webview.removeEventListener("message",r),o(i.data[e]))};n.timer=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),o(null)},t),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(s)})}var zr,$e,U,ke,Oe,Ae=w(()=>{"use strict";zr=(s,e,t)=>{let o=s.prototype[e];s.prototype[e]=function(...n){let r=t.call(this,n,o);return r===void 0?o.apply(this,n):r}},$e=(s,e=3e4)=>new Promise((t,o)=>{let n=document.querySelector(s);if(n){t(n);return}let r={timer:0},i=new MutationObserver(()=>{let a=document.querySelector(s);a&&(clearTimeout(r.timer),i.disconnect(),t(a))});r.timer=setTimeout(()=>{i.disconnect(),o(new Error(`element never showed up: ${s}`))},e),i.observe(document.body,{childList:!0,subtree:!0})}),U=(s,e=document)=>{let t=e.querySelector(s);if(!t)throw new Error(`element not found: ${s}`);return t},ke=(s,e=document)=>U(s,e),Oe=()=>!!document.querySelector(".cmpTmHed")});var gu={};A(gu,{setRampBoost:()=>to,syncScrollBinds:()=>Or});function to(s){fu=s,window.chrome.webview.postMessage(`toggle-rboost, ${s}`)}function Or(){let s=!1;try{s=Object.keys(localStorage).some(e=>e.startsWith("cont_")&&localStorage.getItem(e)===tb)}catch{return}s!==Hr&&(Hr=s,d.hostFeatures?.includes("scroll-binds")&&window.chrome.webview.postMessage(`wheel-to-page, ${s}`))}var tb,fu,Hr,mn=w(()=>{"use strict";F();tb="20000",fu=!1;window.addEventListener("wheel",s=>{!fu||!document.pointerLockElement||!d.hostFeatures?.includes("ramp-boost")||(Hr||(s.stopImmediatePropagation(),s.preventDefault()),window.chrome.webview.postMessage(`ramp-wheel, ${(s.deltaY||s.deltaX)<0?1:-1}`))},{capture:!0,passive:!1})});var wu={};A(wu,{claimAltShoot:()=>Dr,hostSupports:()=>gn,prepareShootBind:()=>qr,syncLeftClick:()=>Qo});function Fr(s){return Number(localStorage.getItem(s)??-1)}function vu(){let s=Fr(fn);return s!==-1&&s!==Zo}function gn(){return d.hostFeatures?.includes(sb)===!0}function Dr(){return!vu()||!gn()}function qr(){if(!vu()){localStorage.setItem(fn,String(Zo));return}Ne.then(()=>{gn()||localStorage.setItem(fn,String(Zo))})}function Qo(){if(!gn())return;let s=Fr(fn)===Zo||Fr(ob)===Zo;s!==bu&&(bu=s,window.chrome.webview.postMessage(`left-click-f20, ${s}`))}var Zo,fn,ob,sb,bu,bn=w(()=>{"use strict";F();Zo=131,fn="cont_shoot1Key_alt",ob="cont_shoot1Key",sb="left-click-f20"});var yu={};A(yu,{SLOTS:()=>Ao,postUrls:()=>oo});function Kr(s){try{return localStorage.getItem(s)}catch{return null}}function rb(s){try{let e=JSON.parse(Kr(s)??"[]");return Array.isArray(e)?e.map(t=>Array.isArray(t)?t[1]:null).filter(t=>typeof t=="string").slice(0,nb):[]}catch{return[]}}function oo(){let s={};for(let t of Ao){let o=[];for(let i of t.settings)o.push(Kr(`kro_setngss_${i}`)??"");for(let i of t.keys??[])o.push(Kr(i)??"");for(let i of t.lists??[])o.push(...rb(i));let n=t.element?document.getElementById(t.element):null;n instanceof HTMLImageElement&&o.push(n.src);let r=[...new Set(o)].filter(i=>i.startsWith("http"));r.length>0&&(s[t.id]=r)}let e=JSON.stringify(s);e!==ku&&(ku=e,window.chrome.webview.postMessage(`icon-urls ${e}`))}var es,Ao,nb,ku,vn=w(()=>{"use strict";es={id:"showUI",name:"Show UI",kind:"checkbox"},Ao=[{id:"kills",file:"kills.png",name:"Kill counter",settings:["customKills"],element:"killsIcon",hiddenBy:[es,{id:"showKillC",name:"Show Kill Counter",kind:"checkbox"}]},{id:"deaths",file:"deaths.png",name:"Death counter",settings:["customDeaths"],element:"deathsIcon",hiddenBy:[es,{id:"showDeaths",name:"Show Death Counter",kind:"checkbox"}]},{id:"streak",file:"streak.png",name:"Streak counter",settings:["customStreak"],element:"streakIcon",hiddenBy:[es,{id:"showStreak",name:"Show Streak Counter",kind:"checkbox"}]},{id:"kdr",file:"kdr.png",name:"K/D counter",settings:[],element:"kdIcon",hiddenBy:[es,{id:"showKD",name:"Show K/D Counter",kind:"checkbox"}]},{id:"ammo",file:"ammo.png",name:"Ammo",settings:["customAmmo"],element:"ammoIcon",hiddenBy:[es]},{id:"hitmarker",file:"hitmarker.png",name:"Hitmarker",settings:["customHitmarker"],hiddenBy:[{id:"hitm",name:"Hitmarker: Show",kind:"checkbox"},{id:"hitOpac",name:"Hitmarker: Opacity",kind:"opacity"}]},{id:"reticle",file:"reticle.png",name:"Reticle",settings:[],keys:["savedReticle"],lists:["krk_custRet"],element:"aimDot",hiddenBy:[]},{id:"scope",file:"scope.png",name:"Scope",settings:[],keys:["savedScope"],lists:["krk_custScps"],element:"recticleImg",hiddenBy:[{id:"scopeOpac",name:"Scope Opacity",kind:"opacity"}]}],nb=30;ku=""});var xu={};A(xu,{canLoadLive:()=>Lt,loadScripts:()=>Lo,registry:()=>Xe});var Xe,Lt,Lo,ts=w(()=>{"use strict";F();Xe=window.__kuteUserscripts??null,Lt=()=>!!(Xe&&d.hostFeatures?.includes("userscripts-live")),Lo=(s,e,t)=>{window.chrome.webview.postMessage(`scripts-load ${JSON.stringify({...s?{keys:s}:{},replace:e,start:t})}`)}});var Eu={};A(Eu,{default:()=>Rt,hostSupportsCustomCss:()=>os});var Su,os,jr,Rt,wn=w(()=>{"use strict";F();Su=/@import\s+(?:url\([^)]*\)|"[^"]*"|'[^']*')[^;]*;?/gi,os=()=>d.hostFeatures?.includes("custom-css")??!1,jr=class{constructor(){this.saved=String(window.__kuteCustomCss??""),this.enabled=!0,this.sheet=null,this.importStyle=null,this.importText="",this.waitingForBody=!1,this.saved&&this.apply(this.saved),Ne.then(()=>{d.settings.toggleCustomCss=e=>this.toggle(e),d.settings.data.customCss===!1?this.toggle(!1):!this.saved&&os()&&this.load().then(e=>this.apply(e))})}load(){return new Promise(e=>{let t=o=>{typeof o.data?.customCss?.content=="string"&&(window.chrome.webview.removeEventListener("message",t),this.saved=o.data.customCss.content,e(this.saved))};window.chrome.webview.addEventListener("message",t),window.chrome.webview.postMessage("css-read")})}apply(e){if(!this.enabled)return;let t=e.match(Su)??[],o=t.length?e.replace(Su,""):e;if(!this.sheet){if(!o.trim())return;this.sheet=new CSSStyleSheet,document.adoptedStyleSheets=[...document.adoptedStyleSheets,this.sheet]}this.sheet.replaceSync(o),this.setImports(t.join(` -`))}setImports(e){if(this.importText=e,!(!e&&!this.importStyle)){if(document.readyState==="loading"){if(this.waitingForBody)return;this.waitingForBody=!0,document.addEventListener("DOMContentLoaded",()=>this.setImports(this.importText),{once:!0});return}this.importStyle||(this.importStyle=document.createElement("style"),document.documentElement.append(this.importStyle)),this.importStyle.textContent!==e&&(this.importStyle.textContent=e)}}toggle(e){if(this.enabled=e,!e){this.sheet?.replaceSync(""),this.setImports("");return}this.saved?this.apply(this.saved):os()&&this.load().then(t=>this.apply(t))}markSaved(e){this.saved=e,this.apply(e)}revert(){this.enabled&&this.apply(this.saved)}},Rt=new jr});var Au={};A(Au,{holdRestart:()=>kn,restart:()=>Ro});function Ro(){location.assign("https://krunker.io/")}function kn(s){Mu=Date.now()+s}function Tu(){return localStorage.getItem($u)!==null||document.cookie.includes(`${$u}=`)}function ib(){try{return!!window.getGameActivity?.()?.id}catch{return!1}}function ab(s){let e=Date.now(),t=0,o=setInterval(()=>{if(ib()){sessionStorage.removeItem(Ur),clearInterval(o);return}if(Date.now()-e>9e4){clearInterval(o);return}if(!s||!Tu()||(t===0&&(t=Date.now()),Date.now()-t<1500))return;clearInterval(o);let n=Number(sessionStorage.getItem(Ur)??0);n>=2||(sessionStorage.setItem(Ur,String(n+1)),console.log("[kute] session: no lobby after the frvr login, reloading"),Ro())},1e3)}function lb(){let s=localStorage.getItem(Cu)!==null,e=!1;setInterval(()=>{if(e){document.pointerLockElement||Ro();return}let t=localStorage.getItem(Cu)!==null;s&&!t&&Date.now()>Mu&&(e=!0,console.log("[kute] session: logged out, reloading")),s=t},1e3)}var $u,Cu,Ur,Mu,yn=w(()=>{"use strict";$u="__FRVR_auth_refresh_token",Cu="krunker_token",Ur="kute_hang_reloads";Mu=0;location.hostname==="krunker.io"&&location.pathname==="/"&&(ab(!Tu()),lb())});var Pu={};A(Pu,{DEFAULT_LOAD:()=>so,cpuChecksum:()=>Yr,createScene:()=>Vr});function fb(s){let e=document.createElement("canvas");e.width=640,e.height=60+s.length*34;let t=e.getContext("2d");return t&&(t.fillStyle="rgba(30, 30, 30, 0.92)",t.beginPath(),t.roundRect(0,0,e.width,e.height,18),t.fill(),t.textAlign="center",t.textBaseline="middle",s.forEach((o,n)=>{t.font=n===0?"26px Consolas, monospace":"18px Consolas, monospace",t.fillStyle=n===0?"#35e0e8":"#bbbbbb",t.fillText(o,e.width/2,48+n*34)})),e}function Lu(s,e,t){let o=s.createShader(e);if(!o)throw new Error("cannot create shader");if(s.shaderSource(o,t),s.compileShader(o),!s.getShaderParameter(o,s.COMPILE_STATUS))throw new Error(s.getShaderInfoLog(o)??"shader compile failed");return o}function Gr(s,e,t){let o=s.createProgram();if(s.attachShader(o,Lu(s,s.VERTEX_SHADER,e)),s.attachShader(o,Lu(s,s.FRAGMENT_SHADER,t)),s.linkProgram(o),!s.getProgramParameter(o,s.LINK_STATUS))throw new Error(s.getProgramInfoLog(o)??"program link failed");return o}function gb(s){let e=[],t=[];for(let o=0;o<=s;o++){let n=o/s*Math.PI;for(let r=0;r<=s;r++){let i=r/s*Math.PI*2;e.push(Math.cos(i)*Math.sin(n),Math.cos(n),Math.sin(i)*Math.sin(n))}}for(let o=0;o0?fb(t):null,g=m?Gr(o,hb,mb):null,b=g?o.getUniformLocation(g,"uScale"):null,v=o.createVertexArray();m&&(o.bindVertexArray(v),o.bindBuffer(o.ARRAY_BUFFER,o.createBuffer()),o.bufferData(o.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,1]),o.STATIC_DRAW),o.enableVertexAttribArray(0),o.vertexAttribPointer(0,2,o.FLOAT,!1,0,0),o.bindVertexArray(null),o.bindTexture(o.TEXTURE_2D,o.createTexture()),o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,m),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE));let k=1337,E=()=>(k=k*1664525+1013904223>>>0,k/4294967296),L=Array.from({length:e.draws},()=>({x:(E()-.5)*80,y:(E()-.5)*50,z:(E()-.5)*40,scale:.6+E()*1.6,spin:.2+E()*1.5,red:.3+E()*.7,green:.3+E()*.7,blue:.3+E()*.7})),x=new Float32Array(16),$=new Float32Array(16),I=new Float32Array(16),_=new Float32Array(16);return $[0]=1,$[5]=1,$[10]=1,$[15]=1,$[14]=-60,{resize(H,G){s.width=Math.max(1,Math.round(H)),s.height=Math.max(1,Math.round(G)),o.viewport(0,0,s.width,s.height),bb(x,Math.PI/2,s.width/s.height,.1,500),vb(I,x,$)},render(H){let G=H*.001;kb(e.cpuIterations),o.enable(o.DEPTH_TEST),o.disable(o.BLEND),o.clearColor(.08,.09,.12,1),o.clear(o.COLOR_BUFFER_BIT|o.DEPTH_BUFFER_BIT),o.useProgram(n),o.bindVertexArray(p),o.uniformMatrix4fv(i,!1,I);for(let J of L)wb(_,J.x,J.y,J.z,G*J.spin,J.scale),o.uniformMatrix4fv(r,!1,_),o.uniform3f(a,J.red,J.green,J.blue),o.drawElements(o.TRIANGLES,h.indices.length,o.UNSIGNED_SHORT,0);o.disable(o.DEPTH_TEST),o.enable(o.BLEND),o.blendFunc(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA),o.useProgram(l),o.bindVertexArray(f),o.uniform1f(c,G);for(let J=0;J{"use strict";so={draws:1200,meshSegments:10,overdraw:4,cpuIterations:2e5},cb=`#version 300 es +"use strict";(()=>{var Fg=Object.create;var _r=Object.defineProperty;var qg=Object.getOwnPropertyDescriptor;var Kg=Object.getOwnPropertyNames;var jg=Object.getPrototypeOf,Ug=Object.prototype.hasOwnProperty;var iu=s=>e=>{var t=s[e];if(t)return t();throw new Error("Module not found in bundle: "+e)};var w=(s,e,t)=>()=>{if(t)throw t[0];try{return s&&(e=s(s=0)),e}catch(o){throw t=[o],o}};var we=(s,e)=>()=>{try{return e||s((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},A=(s,e)=>{for(var t in e)_r(s,t,{get:e[t],enumerable:!0})},Gg=(s,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Kg(e))!Ug.call(s,n)&&n!==t&&_r(s,n,{get:()=>e[n],enumerable:!(o=qg(e,n))||o.enumerable});return s};var ue=(s,e,t)=>(t=s!=null?Fg(jg(s)):{},Gg(e||!s||!s.__esModule?_r(t,"default",{value:s,enumerable:!0}):t,s));var Tt,Xo=w(()=>{Tt={autoDetect:{name:"Auto-Detect Best Settings",id:"autoDetect",description:"Tests the client and the game on your PC for about two minutes and picks what runs best. Don't touch mouse or keyboard meanwhile. You can undo it",type:"none",category:"General",button:"Run",buttonAction:"{{kute}}.autoDetect.setUp()",requiresLogin:!0,hostFeature:"autodetect-v2"},autoDetectResult:{name:"Last Auto-Detect Result",id:"autoDetectResult",description:"See what the last run measured and changed, and undo it",type:"none",category:"General",button:"Show",buttonAction:"{{kute}}.autoDetect.showLast()"},hotkeys:{name:"Hotkeys",id:"hotkeys",description:"Change or clear Kute's own keys (new lobby, matchmaker, reload, fullscreen, chat logs) and add keys for toggles",type:"none",category:"General",button:"Change",buttonAction:"{{kute}}.hotkeys.edit()",hostFeature:"hotkeys"},performanceMode:{name:"Disable & Hide All Non-Performance Settings",id:"performanceMode",description:"Turns off everything cosmetic and hides its settings. Turn this off again and all of them come back as they were",type:"checkbox",category:"General",defaultValue:!1,needsRefresh:!0,hostFeature:"performance-mode"},startMode:{name:"Start Mode",id:"startMode",description:"How the window opens when Kute starts",type:"select",category:"General",defaultValue:"Remember Previous",options:["Remember Previous","Borderless Fullscreen","Windowed","Maximized"]},gameFpsLimit:{name:"FPS Limit",id:"gameFpsLimit",description:"Caps your FPS to save power and heat. 0 means unlimited",type:"slider",category:"General",defaultValue:0,min:0,max:2e3,step:5},discordRPC:{name:"Discord Rich Presence",id:"discordRPC",description:"Shows your current mode and map on your Discord profile",type:"checkbox",category:"General",defaultValue:!0,needsRestart:!0},accountManager:{name:"Account Manager",id:"accountManager",description:"Save your Krunker accounts and switch between them from the menu",type:"checkbox",category:"General",defaultValue:!0},market:{name:"Kute Market",id:"market",description:"Enables market and trading features: K values, liquidity grades, trade verdicts and the market analyzer. In return, you allow Kute to see trading stats.",type:"checkbox",category:"General",defaultValue:!0,disabledBy:"disableOnlineFeatures"},obsCapturePlugin:{name:"OBS Capture Plugin",id:"obsCapturePlugin",platforms:["windows"],description:"Adds a Kute Capture source to OBS (close OBS first). For sound, add an Application Audio Capture of 'Kute audio window'",type:"checkbox",category:"General",defaultValue:!1},rawInput:{name:"Raw Input",id:"rawInput",platforms:["windows"],description:"Mouse movement comes straight from the device, without Windows pointer acceleration, and all of it reaches the game, also when you click or scroll mid-flick. Krunker's own Raw Mouse Input follows this setting",type:"checkbox",category:"Game",defaultValue:!0,needsRefresh:!0},rampBoost:{name:"Ramp Boosting",id:"rampBoost",description:"Scrolling makes you jump, for easier ramp boosts. Off in competitive. Turn it off if another tool already does this",type:"checkbox",category:"Game",defaultValue:!1},autoSpec:{name:"Auto Spectate",id:"autoSpec",description:"Joins public matches as a spectator instead of a player",type:"checkbox",category:"Game",defaultValue:!1},hsSound:{name:"Headshot Sound on Every Kill",id:"hsSound",performance:!1,description:"Plays the headshot sound on every kill, not just headshots",category:"Game",type:"checkbox",defaultValue:!1},hpEnemyCounter:{name:"Hardpoint Enemy Counter",id:"hpEnemyCounter",performance:!1,description:"Shows how many enemies are on the point in competitive Hardpoint",type:"checkbox",category:"Game",defaultValue:!0},showPing:{name:"Player List Ping",id:"showPing",performance:!1,description:"Shows everyone's ping next to their name in the player list",type:"checkbox",category:"Game",defaultValue:!0,needsRefresh:!0},realPing:{name:"Real Ping\u2122\uFE0F",id:"realPing",description:"Pings the lobby server directly and shows your real latency",type:"checkbox",category:"Game",defaultValue:!1,needsRestart:!0},matchmaker:{name:"Matchmaker (F6)",id:"matchmaker",description:"F6 joins the lowest ping lobby that matches your filters instead of a random one",type:"checkbox",category:"Game",defaultValue:!0,button:"Filters",buttonAction:"{{kute}}.matchmaker.showFilters()"},rankedAlert:{name:"Ranked Match Alert",id:"rankedAlert",description:"When Krunker's ranked queue finds a match while you are tabbed out, Kute comes to the front",type:"checkbox",category:"Game",defaultValue:!0,button:"Sound",buttonAction:"{{kute}}.queueSound.showOptions()"},accountEndMessage:{name:"Match End Message per Account",id:"accountEndMessage",description:"Remembers Krunker's Match End Message per account, an account without one sends nothing",type:"checkbox",category:"Game",defaultValue:!1,requiresLogin:!0},exitButton:{name:"Exit Button",id:"exitButton",performance:!1,description:"Adds an Exit button to the menu",type:"checkbox",category:"Interface",defaultValue:!0},menuTimer:{name:"Menu Timer",id:"menuTimer",performance:!1,description:"Shows the match timer while you are in the menu",type:"checkbox",category:"Interface",defaultValue:!0},classicMenu:{name:"Classic Menu",id:"classicMenu",performance:!1,description:"Season 9 menu layout, new buttons and features stay",type:"checkbox",category:"Interface",defaultValue:!1},betterChat:{name:"Better Chat",id:"betterChat",performance:!1,description:"Team and all chat in one view. Press Tab to switch where you send",type:"checkbox",category:"Interface",defaultValue:!0},chatLogs:{name:"Chat Logs",id:"chatLogs",description:"Keeps the last 2000 chat lines, also across lobbies, to search and copy. F1 opens them, change it in Hotkeys",type:"checkbox",category:"Interface",defaultValue:!0,button:"Open",buttonAction:"{{kute}}.chatLogs?.open()"},textSelect:{name:"Selectable Chat",id:"textSelect",performance:!1,description:"Lets you select and copy text from the chat",type:"checkbox",category:"Interface",defaultValue:!0},cleanUI:{name:"Cleaner Menu",id:"cleanUI",description:"Hides ads, promos, the Popular Now row and other clutter in the menu",type:"checkbox",category:"Interface",defaultValue:!1},hideBundles:{name:"Hide Bundle Popups",id:"hideBundles",description:"Stops store bundle popups from showing up outside the store",type:"checkbox",category:"Interface",defaultValue:!1},clanColors:{name:"Show Clan Colors",id:"clanColors",performance:!1,description:"Colors the tags of some clans in the player lists",type:"checkbox",category:"Interface",defaultValue:!0,disabledBy:"disableOnlineFeatures"},cuteBadge:{name:"Show Kute Badge",id:"cuteBadge",description:"Shows a badge next to other Kute players. This only affects what you see, others still see yours",type:"checkbox",category:"Interface",defaultValue:!0,disabledBy:"disableOnlineFeatures"},kuteIcons:{name:"Use Kute Icons",id:"kuteIcons",performance:!1,description:"Kute's own icons for counters, ammo, hitmarker, reticle and scope. Your game settings stay untouched",type:"checkbox",category:"Interface",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.kuteIcons.customize()"},hudLayout:{name:"HUD Editor",id:"hudLayout",description:"Move, resize and hide parts of the in-game HUD. Opens a private match while you edit",type:"none",category:"Interface",button:"Edit",buttonAction:"{{kute}}.hudEditor.edit()",requiresLogin:!0},keystrokes:{name:"Keystrokes",id:"keystrokes",performance:!1,description:"Shows your movement keys and mouse in the HUD and lights them up while pressed. Move it with the HUD Editor",type:"checkbox",category:"Interface",defaultValue:!1},spotifyOverlay:{name:"Spotify Overlay",id:"spotifyOverlay",performance:!1,description:"Shows the currently playing Spotify track in the HUD. Move and resize it with the HUD Editor",type:"checkbox",category:"Interface",defaultValue:!1,hostFeature:"spotify"},nukeCounter:{name:"Nuke Counter",id:"nukeCounter",performance:!1,description:"Shows your career nuke total in game. It updates when a match ends",type:"checkbox",category:"Interface",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.nukeCounter.showOptions()"},renderStats:{name:"Present FPS Counter",id:"renderStats",description:"The game counter shows how fast your PC runs the game, this adds the frames that reach your screen",type:"checkbox",category:"Interface",defaultValue:!1,needsRestart:!0,requires:"hardFlip"},kuteCss:{name:"Kute CSS",id:"kuteCss",performance:!1,description:"Kute's own look for menus, settings, HUD and social, with a few cats",type:"checkbox",category:"Customization",defaultValue:!1},motionBlur:{name:"Motion Blur",id:"motionBlur",performance:!1,description:"A slight blur while you turn the camera, the HUD stays sharp. Costs FPS: about 5 % fewer while it blurs",type:"checkbox",category:"Customization",defaultValue:!1},motionBlurStrength:{name:"Motion Blur Strength",id:"motionBlurStrength",performance:null,description:"How long the trail is when Motion Blur is on",type:"slider",category:"Customization",defaultValue:40,min:10,max:100,step:5},customSky:{name:"Custom Sky",id:"customSky",performance:!1,description:"Your own sky color gradient or image on every map. Applies from the next match",type:"checkbox",category:"Customization",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.customSky.showOptions()",hostFeature:"custom-sky"},swapper:{name:"Resource Swapper",id:"swapper",performance:!1,description:"Replaces game files like textures and sounds with the files in your swapper folder",type:"checkbox",category:"Customization",defaultValue:!0,button:"Manage",buttonAction:"{{kute}}.swapperManager.open()",needsRefresh:!0},customCss:{name:"CSS Manager",id:"customCss",performance:!1,description:"Your own CSS on top of Krunker's. Keep several files and switch between them, with a live preview",type:"checkbox",category:"Customization",defaultValue:!0,button:"Edit",buttonAction:"{{kute}}.customCss.open()"},userscripts:{name:"Userscripts",id:"userscripts",description:"Runs your own scripts. Crankshaft and idkr scripts work too",type:"checkbox",category:"Customization",defaultValue:!0,button:"Manage",buttonAction:"{{kute}}.userscriptManager.open()"},blocklist:{name:"URL Blocklist",id:"blocklist",description:"Blocks ads and trackers. Open the file to add your own entries",type:"checkbox",category:"Customization",defaultValue:!0,button:"Open file",buttonAction:"window.chrome.webview.postMessage('open, blocklist')",needsRestart:!0},disableCats:{name:"Disable Cats",id:"disableCats",performance:!0,description:"Blocks the cat models in the maps",type:"checkbox",category:"Customization",defaultValue:!0,needsRefresh:!0},disableVideoSkins:{name:"Disable Video Skins",id:"disableVideoSkins",performance:!0,description:"Video skins like Glitch are not loaded and show black instead, which can save FPS",type:"checkbox",category:"Customization",defaultValue:!1,needsRefresh:!0,hostFeature:"video-skins"},uncapFps:{name:"Uncap FPS",id:"uncapFps",description:"Removes the FPS cap at your monitor's refresh rate",type:"checkbox",category:"Advanced",defaultValue:!0,needsRestart:!0},audioFix:{name:"Fix Audio Stutters",id:"audioFix",description:"For sound that cuts out at high FPS. Moves sounds every 8 ms instead of every sample",type:"checkbox",category:"Advanced",defaultValue:!1,needsRestart:!0,hostFeature:"audio-fix"},angleBackend:{name:"Graphics Backend (ANGLE)",id:"angleBackend",platforms:["windows"],description:"Leave it on Default (D3D11). OpenGL and Vulkan turn off everything the swapchain hook does",type:"select",category:"Advanced",defaultValue:"Default",needsRestart:!0,options:["Default","D3D11","D3D11on12","OpenGL","Vulkan"]},displayServer:{name:"Display Server",id:"displayServer",platforms:["linux"],description:"Leave it on X11, it runs much faster than Wayland for now. X11 also works inside a Wayland session",type:"select",category:"Advanced",defaultValue:"X11",needsRestart:!0,options:["X11","Wayland"]},colorProfile:{name:"Color Profile",id:"colorProfile",description:"Try sRGB if colors look washed out or too strong",type:"select",category:"Advanced",defaultValue:"Default",needsRestart:!0,options:["Default","sRGB","Display P3 D65","Extended sRGB","scRGB linear","HDR10"]},webviewPriority:{name:"Process Priority",id:"webviewPriority",description:"Higher can help a little, but may make your PC less stable",type:"select",category:"Advanced",defaultValue:"Normal",needsRestart:!0,options:["High","Above Normal","Normal","Below Normal","Low","Idle"]},x3dCacheCores:{name:"Keep Kute on the 3D V-Cache cores",id:"x3dCacheCores",description:"Ryzen X3D with two core groups only: steadier frame pacing on the cores with the big cache",type:"checkbox",category:"Advanced",defaultValue:!0,needsRestart:!0,hostFeature:"x3d-cores"},throttle:{name:"CPU Throttling",id:"throttle",description:"Slows the game down on purpose (2 = half speed). Only for an unstable game, an FPS limit is usually better",type:"slider",min:1,max:3,step:.01,category:"Advanced",defaultValue:1},inMenuThrottle:{name:"CPU Throttling in Menu",id:"inMenuThrottle",description:"Same, but only in the menu. It also slows the match that runs behind the menu",type:"slider",min:1,max:3,step:.01,category:"Advanced",defaultValue:1},clearCache:{name:"Clear Cache & Storage",id:"clearCache",description:"Deletes the cache and local storage. This also resets your game settings",type:"none",category:"Advanced",button:"Clear Now",buttonAction:"if(confirm('Are you sure you want to clear cache and local storage?')) { localStorage.clear(); sessionStorage.clear(); window.chrome.webview.postMessage('clear-cache'); }"},hardFlip:{name:"DXGI Swapchain Hook",id:"hardFlip",platforms:["windows"],description:"Present FPS counter and OBS capture. Laptops with two graphics chips may run better without it",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0},laptopPowerBoost:{name:"Laptop Power Boost",id:"laptopPowerBoost",description:"Plugged in laptops only: switches the power mode to performance while Kute runs and puts yours back after",type:"checkbox",category:"Engine",defaultValue:!0,hostFeature:"hybrid-gpu"},primeOffload:{name:"NVIDIA PRIME Offload",id:"primeOffload",platforms:["linux"],description:"Hybrid laptops with the NVIDIA driver: the game renders on the NVIDIA chip instead of the built in one",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"prime-offload"},patchInputPriority:{name:"Input at Normal Priority",id:"patchInputPriority",description:"Chromium patch: mouse input no longer starves the game's server messages. Off brings back the aim freeze",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchFramePacing:{name:"Frame Pacing",id:"patchFramePacing",description:"Chromium patch: the game runs one frame ahead of the screen instead of flooding it. Off brings back the GPU stutter",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchFrameLimiter:{name:"Chromium FPS Limiter",id:"patchFrameLimiter",description:"Chromium patch: holds the FPS limit inside Chromium with the CPU idle, with or without the hook. Off uses the hook's limiter, or a busy wait without the hook",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchRawInputMovement:{name:"Raw Input Keeps Movement",id:"patchRawInputMovement",platforms:["windows"],description:"Chromium patch: no mouse movement is lost on a click. Off drops a few counts at every shot",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchAudioParamCoalesce:{name:"Coalesce Audio Automation",id:"patchAudioParamCoalesce",description:"Chromium patch: the game's per frame sound updates no longer pile up. Off makes FPS drop over a long match",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchCanvasBufferCache:{name:"WebGL Buffer Cache",id:"patchCanvasBufferCache",description:"Chromium patch: keeps three spare frame buffers instead of one. Off makes some starts land in a slow mode",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchHighQoS:{name:"Game Process at High QoS",id:"patchHighQoS",platforms:["windows"],description:"Chromium patch: Windows may not throttle the game's process to save power. Off leaves that to Windows",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},showChangelog:{name:"Show Changelog After Updates",id:"showChangelog",description:"Shows what's new after Kute updates",type:"checkbox",button:"Show Now",buttonAction:"{{kute}}.showChangelogPopup({{kute}}.version)",category:"About",defaultValue:!0},disableOnlineFeatures:{name:"Disable Kute Online Features",id:"disableOnlineFeatures",description:"Nothing is sent to or received from kute.lol. Turns off all Kute badges (yours too) and clan colors",type:"checkbox",category:"About",defaultValue:!1,needsRestart:!0},checkUpdates:{name:"Check For Updates",id:"checkUpdates",description:"Looks for a new Kute version when it starts",type:"checkbox",category:"About",defaultValue:!0,needsRestart:!0},exportClientSettings:{name:"Export Kute Settings",id:"exportClientSettings",description:"Saves Kute's settings, HUD positions, matchmaker filters and hotkeys as a file in Downloads",type:"none",category:"About",button:"Export",buttonAction:"{{kute}}.settingsTransfer.exportFile()"},importClientSettings:{name:"Import Kute Settings",id:"importClientSettings",description:"Loads a file from Export Kute Settings and restarts Kute",type:"none",category:"About",button:"Import",buttonAction:"{{kute}}.settingsTransfer.importFile()"},diagnosticsReport:{name:"Diagnostics Report",id:"diagnosticsReport",description:"Puts what helps fix a problem into one file you can send. You see all of it first, nothing is uploaded",type:"none",category:"About",button:"Create",buttonAction:"{{kute}}.diagnostics.open()",hostFeature:"diagnostics"}}});function $o(s,e){return s.performanceMode===!0&&e in lu}function cu(s){return{...s,...Eo}}function pn(s,e){let t=[];for(let[o,n]of Object.entries(lu)){if(n===null)continue;let r=s[o];e?(o in Eo||(Eo[o]=r),s[o]=n):o in Eo&&(s[o]=Eo[o],delete Eo[o]),s[o]!==r&&t.push(o)}return t}var lu,Eo,Co=w(()=>{"use strict";Xo();lu=Object.fromEntries(Object.values(Tt).filter(s=>s.performance!==void 0).map(s=>[s.id,s.performance??null])),Eo={}});function Yg(s){let e="abcdefghijklmnopqrstuvwxyz",t=crypto.getRandomValues(new Uint8Array(s));return Array.from(t,o=>e[o%e.length]).join("")}var u,Ne,du,Ue,D=w(()=>{"use strict";Xo();Co();u={},Ne=new Promise(s=>{function e(t){if(t?.data?.settings||t?.data?.version){if(window.chrome.webview.removeEventListener("message",e),Object.assign(u,t.data),u.settings?.data)for(let o of Object.values(Tt))o.defaultValue!==void 0&&!(o.id in u.settings.data)&&(u.settings.data[o.id]=o.defaultValue);u.settings?.data&&pn(u.settings.data,u.settings.data.performanceMode===!0),s(u)}}window.chrome.webview.addEventListener("message",e),window.chrome.webview.postMessage("get-info")}),du=Yg(12);Object.defineProperty(window,du,{value:u,enumerable:!1,writable:!1,configurable:!1});Ue=`window["${du}"]`});function Te(s,e,t=2e3){return new Promise(o=>{let n={timer:0},r=i=>{i.data?.[e]!==void 0&&(clearTimeout(n.timer),window.chrome.webview.removeEventListener("message",r),o(i.data[e]))};n.timer=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),o(null)},t),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(s)})}var Br,$e,U,ke,He,Ae=w(()=>{"use strict";Br=(s,e,t)=>{let o=s.prototype[e];s.prototype[e]=function(...n){let r=t.call(this,n,o);return r===void 0?o.apply(this,n):r}},$e=(s,e=3e4)=>new Promise((t,o)=>{let n=document.querySelector(s);if(n){t(n);return}let r={timer:0},i=new MutationObserver(()=>{let a=document.querySelector(s);a&&(clearTimeout(r.timer),i.disconnect(),t(a))});r.timer=setTimeout(()=>{i.disconnect(),o(new Error(`element never showed up: ${s}`))},e),i.observe(document.body,{childList:!0,subtree:!0})}),U=(s,e=document)=>{let t=e.querySelector(s);if(!t)throw new Error(`element not found: ${s}`);return t},ke=(s,e=document)=>U(s,e),He=()=>!!document.querySelector(".cmpTmHed")});var pu={};A(pu,{setRampBoost:()=>Zt,syncScrollBinds:()=>Hr});function Zt(s){uu=s,window.chrome.webview.postMessage(`toggle-rboost, ${s}`)}function Hr(){let s=!1;try{s=Object.keys(localStorage).some(e=>e.startsWith("cont_")&&localStorage.getItem(e)===Xg)}catch{return}s!==zr&&(zr=s,u.hostFeatures?.includes("scroll-binds")&&window.chrome.webview.postMessage(`wheel-to-page, ${s}`))}var Xg,uu,zr,hn=w(()=>{"use strict";D();Xg="20000",uu=!1;window.addEventListener("wheel",s=>{!uu||!document.pointerLockElement||!u.hostFeatures?.includes("ramp-boost")||(zr||(s.stopImmediatePropagation(),s.preventDefault()),window.chrome.webview.postMessage(`ramp-wheel, ${(s.deltaY||s.deltaX)<0?1:-1}`))},{capture:!0,passive:!1})});var fu={};A(fu,{claimAltShoot:()=>Dr,hostSupports:()=>fn,prepareShootBind:()=>Fr,syncLeftClick:()=>Zo});function Or(s){return Number(localStorage.getItem(s)??-1)}function mu(){let s=Or(mn);return s!==-1&&s!==Jo}function fn(){return u.hostFeatures?.includes(Zg)===!0}function Dr(){return!mu()||!fn()}function Fr(){if(!mu()){localStorage.setItem(mn,String(Jo));return}Ne.then(()=>{fn()||localStorage.setItem(mn,String(Jo))})}function Zo(){if(!fn())return;let s=Or(mn)===Jo||Or(Jg)===Jo;s!==hu&&(hu=s,window.chrome.webview.postMessage(`left-click-f20, ${s}`))}var Jo,mn,Jg,Zg,hu,gn=w(()=>{"use strict";D();Jo=131,mn="cont_shoot1Key_alt",Jg="cont_shoot1Key",Zg="left-click-f20"});var bu={};A(bu,{SLOTS:()=>Mo,postUrls:()=>Qt});function qr(s){try{return localStorage.getItem(s)}catch{return null}}function eb(s){try{let e=JSON.parse(qr(s)??"[]");return Array.isArray(e)?e.map(t=>Array.isArray(t)?t[1]:null).filter(t=>typeof t=="string").slice(0,Qg):[]}catch{return[]}}function Qt(){let s={};for(let t of Mo){let o=[];for(let i of t.settings)o.push(qr(`kro_setngss_${i}`)??"");for(let i of t.keys??[])o.push(qr(i)??"");for(let i of t.lists??[])o.push(...eb(i));let n=t.element?document.getElementById(t.element):null;n instanceof HTMLImageElement&&o.push(n.src);let r=[...new Set(o)].filter(i=>i.startsWith("http"));r.length>0&&(s[t.id]=r)}let e=JSON.stringify(s);e!==gu&&(gu=e,window.chrome.webview.postMessage(`icon-urls ${e}`))}var Qo,Mo,Qg,gu,bn=w(()=>{"use strict";Qo={id:"showUI",name:"Show UI",kind:"checkbox"},Mo=[{id:"kills",file:"kills.png",name:"Kill counter",settings:["customKills"],element:"killsIcon",hiddenBy:[Qo,{id:"showKillC",name:"Show Kill Counter",kind:"checkbox"}]},{id:"deaths",file:"deaths.png",name:"Death counter",settings:["customDeaths"],element:"deathsIcon",hiddenBy:[Qo,{id:"showDeaths",name:"Show Death Counter",kind:"checkbox"}]},{id:"streak",file:"streak.png",name:"Streak counter",settings:["customStreak"],element:"streakIcon",hiddenBy:[Qo,{id:"showStreak",name:"Show Streak Counter",kind:"checkbox"}]},{id:"kdr",file:"kdr.png",name:"K/D counter",settings:[],element:"kdIcon",hiddenBy:[Qo,{id:"showKD",name:"Show K/D Counter",kind:"checkbox"}]},{id:"ammo",file:"ammo.png",name:"Ammo",settings:["customAmmo"],element:"ammoIcon",hiddenBy:[Qo]},{id:"hitmarker",file:"hitmarker.png",name:"Hitmarker",settings:["customHitmarker"],hiddenBy:[{id:"hitm",name:"Hitmarker: Show",kind:"checkbox"},{id:"hitOpac",name:"Hitmarker: Opacity",kind:"opacity"}]},{id:"reticle",file:"reticle.png",name:"Reticle",settings:[],keys:["savedReticle"],lists:["krk_custRet"],element:"aimDot",hiddenBy:[]},{id:"scope",file:"scope.png",name:"Scope",settings:[],keys:["savedScope"],lists:["krk_custScps"],element:"recticleImg",hiddenBy:[{id:"scopeOpac",name:"Scope Opacity",kind:"opacity"}]}],Qg=30;gu=""});var vu={};A(vu,{canLoadLive:()=>At,loadScripts:()=>To,registry:()=>Je});var Je,At,To,es=w(()=>{"use strict";D();Je=window.__kuteUserscripts??null,At=()=>!!(Je&&u.hostFeatures?.includes("userscripts-live")),To=(s,e,t)=>{window.chrome.webview.postMessage(`scripts-load ${JSON.stringify({...s?{keys:s}:{},replace:e,start:t})}`)}});var ku={};A(ku,{default:()=>Lt,hostSupportsCustomCss:()=>ts});var wu,ts,Kr,Lt,vn=w(()=>{"use strict";D();wu=/@import\s+(?:url\([^)]*\)|"[^"]*"|'[^']*')[^;]*;?/gi,ts=()=>u.hostFeatures?.includes("custom-css")??!1,Kr=class{constructor(){this.saved=String(window.__kuteCustomCss??""),this.enabled=!0,this.sheet=null,this.importStyle=null,this.importText="",this.waitingForBody=!1,this.saved&&this.apply(this.saved),Ne.then(()=>{u.settings.toggleCustomCss=e=>this.toggle(e),u.settings.data.customCss===!1?this.toggle(!1):!this.saved&&ts()&&this.load().then(e=>this.apply(e))})}load(){return new Promise(e=>{let t=o=>{typeof o.data?.customCss?.content=="string"&&(window.chrome.webview.removeEventListener("message",t),this.saved=o.data.customCss.content,e(this.saved))};window.chrome.webview.addEventListener("message",t),window.chrome.webview.postMessage("css-read")})}apply(e){if(!this.enabled)return;let t=e.match(wu)??[],o=t.length?e.replace(wu,""):e;if(!this.sheet){if(!o.trim())return;this.sheet=new CSSStyleSheet,document.adoptedStyleSheets=[...document.adoptedStyleSheets,this.sheet]}this.sheet.replaceSync(o),this.setImports(t.join(` +`))}setImports(e){if(this.importText=e,!(!e&&!this.importStyle)){if(document.readyState==="loading"){if(this.waitingForBody)return;this.waitingForBody=!0,document.addEventListener("DOMContentLoaded",()=>this.setImports(this.importText),{once:!0});return}this.importStyle||(this.importStyle=document.createElement("style"),document.documentElement.append(this.importStyle)),this.importStyle.textContent!==e&&(this.importStyle.textContent=e)}}toggle(e){if(this.enabled=e,!e){this.sheet?.replaceSync(""),this.setImports("");return}this.saved?this.apply(this.saved):ts()&&this.load().then(t=>this.apply(t))}markSaved(e){this.saved=e,this.apply(e)}revert(){this.enabled&&this.apply(this.saved)}},Lt=new Kr});var $u={};A($u,{holdRestart:()=>wn,restart:()=>Ao});function Ao(){location.assign("https://krunker.io/")}function wn(s){Su=Date.now()+s}function Eu(){return localStorage.getItem(yu)!==null||document.cookie.includes(`${yu}=`)}function tb(){try{return!!window.getGameActivity?.()?.id}catch{return!1}}function ob(s){let e=Date.now(),t=0,o=setInterval(()=>{if(tb()){sessionStorage.removeItem(jr),clearInterval(o);return}if(Date.now()-e>9e4){clearInterval(o);return}if(!s||!Eu()||(t===0&&(t=Date.now()),Date.now()-t<1500))return;clearInterval(o);let n=Number(sessionStorage.getItem(jr)??0);n>=2||(sessionStorage.setItem(jr,String(n+1)),console.log("[kute] session: no lobby after the frvr login, reloading"),Ao())},1e3)}function sb(){let s=localStorage.getItem(xu)!==null,e=!1;setInterval(()=>{if(e){document.pointerLockElement||Ao();return}let t=localStorage.getItem(xu)!==null;s&&!t&&Date.now()>Su&&(e=!0,console.log("[kute] session: logged out, reloading")),s=t},1e3)}var yu,xu,jr,Su,kn=w(()=>{"use strict";yu="__FRVR_auth_refresh_token",xu="krunker_token",jr="kute_hang_reloads";Su=0;location.hostname==="krunker.io"&&location.pathname==="/"&&(ob(!Eu()),sb())});var Tu={};A(Tu,{DEFAULT_LOAD:()=>eo,cpuChecksum:()=>Vr,createScene:()=>Wr});function db(s){let e=document.createElement("canvas");e.width=640,e.height=60+s.length*34;let t=e.getContext("2d");return t&&(t.fillStyle="rgba(30, 30, 30, 0.92)",t.beginPath(),t.roundRect(0,0,e.width,e.height,18),t.fill(),t.textAlign="center",t.textBaseline="middle",s.forEach((o,n)=>{t.font=n===0?"26px Consolas, monospace":"18px Consolas, monospace",t.fillStyle=n===0?"#35e0e8":"#bbbbbb",t.fillText(o,e.width/2,48+n*34)})),e}function Cu(s,e,t){let o=s.createShader(e);if(!o)throw new Error("cannot create shader");if(s.shaderSource(o,t),s.compileShader(o),!s.getShaderParameter(o,s.COMPILE_STATUS))throw new Error(s.getShaderInfoLog(o)??"shader compile failed");return o}function Ur(s,e,t){let o=s.createProgram();if(s.attachShader(o,Cu(s,s.VERTEX_SHADER,e)),s.attachShader(o,Cu(s,s.FRAGMENT_SHADER,t)),s.linkProgram(o),!s.getProgramParameter(o,s.LINK_STATUS))throw new Error(s.getProgramInfoLog(o)??"program link failed");return o}function ub(s){let e=[],t=[];for(let o=0;o<=s;o++){let n=o/s*Math.PI;for(let r=0;r<=s;r++){let i=r/s*Math.PI*2;e.push(Math.cos(i)*Math.sin(n),Math.cos(n),Math.sin(i)*Math.sin(n))}}for(let o=0;o0?db(t):null,g=f?Ur(o,lb,cb):null,b=g?o.getUniformLocation(g,"uScale"):null,v=o.createVertexArray();f&&(o.bindVertexArray(v),o.bindBuffer(o.ARRAY_BUFFER,o.createBuffer()),o.bufferData(o.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,1]),o.STATIC_DRAW),o.enableVertexAttribArray(0),o.vertexAttribPointer(0,2,o.FLOAT,!1,0,0),o.bindVertexArray(null),o.bindTexture(o.TEXTURE_2D,o.createTexture()),o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,f),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE));let k=1337,E=()=>(k=k*1664525+1013904223>>>0,k/4294967296),L=Array.from({length:e.draws},()=>({x:(E()-.5)*80,y:(E()-.5)*50,z:(E()-.5)*40,scale:.6+E()*1.6,spin:.2+E()*1.5,red:.3+E()*.7,green:.3+E()*.7,blue:.3+E()*.7})),x=new Float32Array(16),$=new Float32Array(16),I=new Float32Array(16),_=new Float32Array(16);return $[0]=1,$[5]=1,$[10]=1,$[15]=1,$[14]=-60,{resize(H,G){s.width=Math.max(1,Math.round(H)),s.height=Math.max(1,Math.round(G)),o.viewport(0,0,s.width,s.height),pb(x,Math.PI/2,s.width/s.height,.1,500),hb(I,x,$)},render(H){let G=H*.001;fb(e.cpuIterations),o.enable(o.DEPTH_TEST),o.disable(o.BLEND),o.clearColor(.08,.09,.12,1),o.clear(o.COLOR_BUFFER_BIT|o.DEPTH_BUFFER_BIT),o.useProgram(n),o.bindVertexArray(p),o.uniformMatrix4fv(i,!1,I);for(let J of L)mb(_,J.x,J.y,J.z,G*J.spin,J.scale),o.uniformMatrix4fv(r,!1,_),o.uniform3f(a,J.red,J.green,J.blue),o.drawElements(o.TRIANGLES,h.indices.length,o.UNSIGNED_SHORT,0);o.disable(o.DEPTH_TEST),o.enable(o.BLEND),o.blendFunc(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA),o.useProgram(l),o.bindVertexArray(m),o.uniform1f(c,G);for(let J=0;J{"use strict";eo={draws:1200,meshSegments:10,overdraw:4,cpuIterations:2e5},nb=`#version 300 es layout(location=0) in vec3 aPos; layout(location=1) in vec3 aNormal; uniform mat4 uModel; @@ -11,14 +11,14 @@ void main() { float light = 0.35 + 0.65 * max(dot(n, normalize(vec3(0.4, 0.8, 0.5))), 0.0); vColor = uColor * light; gl_Position = uViewProj * uModel * vec4(aPos, 1.0); -}`,db=`#version 300 es +}`,rb=`#version 300 es precision mediump float; in vec3 vColor; out vec4 outColor; -void main() { outColor = vec4(vColor, 1.0); }`,ub=`#version 300 es +void main() { outColor = vec4(vColor, 1.0); }`,ib=`#version 300 es layout(location=0) in vec2 aPos; out vec2 vUv; -void main() { vUv = aPos * 0.5 + 0.5; gl_Position = vec4(aPos, 0.0, 1.0); }`,pb=`#version 300 es +void main() { vUv = aPos * 0.5 + 0.5; gl_Position = vec4(aPos, 0.0, 1.0); }`,ab=`#version 300 es precision mediump float; in vec2 vUv; uniform float uTime; @@ -27,18 +27,18 @@ out vec4 outColor; void main() { float w = sin(vUv.x * 40.0 + uTime + uLayer) * cos(vUv.y * 30.0 - uTime * 0.7); outColor = vec4(0.3 + 0.2 * w, 0.2, 0.4 - 0.2 * w, 0.08); -}`,hb=`#version 300 es +}`,lb=`#version 300 es layout(location=0) in vec2 aPos; uniform vec2 uScale; out vec2 vUv; -void main() { vUv = vec2(aPos.x * 0.5 + 0.5, 0.5 - aPos.y * 0.5); gl_Position = vec4(aPos * uScale, 0.0, 1.0); }`,mb=`#version 300 es +void main() { vUv = vec2(aPos.x * 0.5 + 0.5, 0.5 - aPos.y * 0.5); gl_Position = vec4(aPos * uScale, 0.0, 1.0); }`,cb=`#version 300 es precision mediump float; in vec2 vUv; uniform sampler2D uLabel; out vec4 outColor; -void main() { outColor = texture(uLabel, vUv); }`;Wr=new Float32Array(4096),Ru=0});var Iu={};A(Iu,{FrameRecorder:()=>no,InputProbe:()=>ss,TaskProbe:()=>ro});var no,ss,ro,xn=w(()=>{"use strict";no=class{constructor(e=12e4){this.samples=new Float32Array(e),this.count=0,this.stored=0,this.last=-1,this.first=-1}frame(e){this.last>=0&&(this.count++,this.storedt[Math.min(t.length-1,Math.floor(h*t.length))],r=n(.5),i=Math.max(4*r,e),a=0,l=0,c=0;for(let h of t)a+=h,h>i&&(l++,c+=h-r);let u=Math.max(.001,a/1e3);return{frames:this.count,seconds:o,fps:this.count/o,meanMs:a/this.stored,p50:r,p95:n(.95),p99:n(.99),p999:n(.999),maxMs:t[t.length-1],hitches:l,hitchesPerSec:l/u,stallMs:c/u}}},ss=class{constructor(){this.waits=new Float32Array(16384),this.events=0,this.packets=0,this.onMove=e=>{if(document.pointerLockElement===null)return;let t=e.getCoalescedEvents(),o=t.length>0?t[0].timeStamp:e.timeStamp;this.waits[this.events%this.waits.length]=performance.now()-o,this.events++,this.packets+=Math.max(1,t.length)}}start(){this.events=0,this.packets=0,window.addEventListener("pointermove",this.onMove,{capture:!0,passive:!0})}stop(){window.removeEventListener("pointermove",this.onMove,!0);let e=Math.min(this.events,this.waits.length),t=this.waits.slice(0,e).sort();return{events:this.events,packets:this.packets,p99:e>0?t[Math.min(e-1,Math.floor(e*.99))]:null,max:e>0?t[e-1]:null}}},ro=class{constructor(){this.delays=[],this.timer=0,this.sent=0,this.channel=new MessageChannel,this.channel.port1.onmessage=e=>{this.delays.push(performance.now()-e.data)}}start(){this.delays=[],this.sent=0;let e=performance.now()+10;this.timer=setInterval(()=>{this.sent++;let t=performance.now();this.channel.port2.postMessage(Math.min(t,e)),e=t+10},10)}stop(){clearInterval(this.timer);let e=[...this.delays].sort((t,o)=>t-o);return{sent:this.sent,ran:e.length,p99:e.length?e[Math.min(e.length-1,Math.floor(e.length*.99))]:null,max:e.length?e[e.length-1]:null}}}});var zu={};function Je(s,e){let t=Number(Sn.get(s));return Sn.has(s)&&Number.isFinite(t)?t:e}function Zr(s){window.chrome.webview.postMessage(`bench-finish ${JSON.stringify(s)}`)}function Ab(){let s=document.createElement("canvas");s.style.cssText="position:fixed;inset:0;width:100vw;height:100vh;display:block",document.body.append(s);let e=Nu>0?["Kute is testing this PC",`client test ${$b} of ${Nu}`,"this takes a moment, nothing to do for you"]:[],t=Vr(s,_u,e);t.resize(window.innerWidth*devicePixelRatio,window.innerHeight*devicePixelRatio);let o=Jr.length>0?Array.from({length:Math.max(1,Cb)},()=>Jr).flat():[null],n=[],r=0,i=performance.now(),a=null,l=new ro,c=Je("cap",0),u=i,h=0,p=!1;s.addEventListener("webglcontextlost",()=>{p=!0});let f=g=>{i=g,a=null;let b=o[r];b!==null&&(c=Tb?b:0,u=g,window.chrome.webview.postMessage(`bench-cap ${b}`))};f(i);let m=g=>{if(c>0){for(;performance.now()0&&t.lost()){h===0&&Zr({ok:!1,error:"webgl context lost"}),t.destroy();return}if(t.render(g),h>0){b-h=v&&(a=new no,r===0&&window.chrome.webview.postMessage("bench-sample-start"),l.start()),a!==null&&(a.frame(b),b-i>=v+Sb&&(n.push({cap:o[r]??c,stats:a.stats(Eb),otherTasks:l.stop()}),r++,r0?n:void 0,load:_u,width:s.width,height:s.height,checksum:Yr()})))),requestAnimationFrame(m)};requestAnimationFrame(m)}function Bu(){try{Ab()}catch(s){Zr({ok:!1,error:String(s)})}}var Sn,yb,xb,Sb,Eb,$b,Nu,Jr,Cb,Mb,Tb,_u,Qr=w(()=>{"use strict";Xr();xn();Sn=new URLSearchParams(location.search);yb=400,xb=Je("settle",700),Sb=Je("ms",2e3),Eb=1e3/Je("hz",60),$b=Je("step",0),Nu=Je("steps",0),Jr=(Sn.get("caps")??"").split(".").filter(s=>s!=="").map(Number).filter(Number.isFinite),Cb=Je("rounds",1),Mb=Je("capsettle",700),Tb=Sn.get("selfcap")==="1",_u={draws:Je("draws",so.draws),meshSegments:so.meshSegments,overdraw:Je("overdraw",so.overdraw),cpuIterations:Je("cpu",so.cpuIterations)};document.body?Bu():document.addEventListener("DOMContentLoaded",Bu,{once:!0})});var Ou,Hu=w(()=>{Ou=`#guidePopup{background-color:#182429}.guideHeader,.guideSubH{border-bottom-color:#35e0e81f}.guStepS:not(:last-child){border-bottom-color:#35e0e81f}a,a:active,a:visited{color:#35e0e8}#purchaseSelector{background-color:#111b1f}.roundScrV{border-bottom-color:#35e0e847}#reloadMsg,#interactMsg,#mobileUI #interactMsg{border-color:#35e0e847}#instructionsUpdate{background-color:#151f24}.instructionsHeader,.instructionsTabs{background-color:#070c0f}.endTablePfp{border-color:#35e0e847}th,tr{border-bottom-color:#35e0e81f}.followBut{background-color:#35e0e8;color:#0b1215}.lds-ring div{border-color:#35e0e847;border-color:rgba(53,224,232,.28) transparent transparent transparent}#spinItemName{background-image:linear-gradient(to right,#0000,#070c0fb3 40%,#070c0fe6 60%,#0000)}.spinPrevIcon,.spinSprayDiv,#spinPromo,.compClassPItm,.compPLstIcn,.compSwpTmB,.compMenBtnS,.compPlWpIcn{border-color:#35e0e847}.hostHeader{background-color:#070c0f}#bigMFeatHBtn{border-color:#35e0e847}#bigMFeatHBtn:hover,#bigMFeatHBtn:active,#bigMFeatPBtn:hover,#bigMFeatPBtn:active{border-color:#35e0e847!important}.biMFeatInfB{border-color:#35e0e847}.biMFeatInfB:hover{border-color:#35e0e847!important}.mapLICat{background-color:#151f24}.hostPresetBtn,#hostMenuBtn{background-color:#35e0e8;color:#0b1215}.serverHostOp{border-color:#35e0e81f}.hostCBtn{border-color:#35e0e847}#hostActionH{border-top-color:#35e0e847}#stickyHostH{background-color:#070c0f}.loadoutBtn{background-color:#35e0e8;color:#0b1215}#loadoutToolbar{background-color:#111b1f;border-bottom-color:#35e0e81f}.loadoutTab{background-color:#182429}.loadoutTab:hover{background-color:#1d2c32}.loadoutTabSel{background-color:#24343a}#charPreviewSlot{border-right-color:#35e0e81f}#menuWindow.eterno .bigMenTabs{background-color:#111b1fad}.quickJoin{border-color:#35e0e8}.settText{color:#35e0e8}.contactsHeader,.setHed{border-color:#35e0e81f;background-color:#1d2c32}.setHed:hover{background-color:#182429}.setHedS{border-color:#35e0e81f;background-color:#1d2c32}.settName,.settNameSmall{border-bottom-color:#35e0e81f}input:checked+.sliderSml{background-color:#35e0e8;color:#0b1215}input:focus+.sliderSml{box-shadow:0 0 1px #35e0e8}input:checked+.slider{background-color:#35e0e8;color:#0b1215}input:focus+.slider{box-shadow:0 0 1px #35e0e8}.sliderVal{border-color:#35e0e847!important}#modDropper{border-color:#35e0e81f}#profilePicM{background-color:#24343a}.mailFrom{color:#35e0e8;border-bottom-color:#35e0e847}.followFrom{color:#35e0e8}#mailCount{border-color:#35e0e81f}#policePopC{background-color:#151f24}.classXPBar{background-color:#111b1f}.clsXPBarC{background-color:#35e0e8;color:#0b1215}.skinPaintSwatch{border-color:#35e0e847}.sb1:before{border-left-color:#35e0e847;border-top-color:#35e0e847}.skinColorItem,.matchVote{border-color:#35e0e81f}.hostMap,#mobileJoystick .back,#mobileJoystick .front{border-color:#35e0e847}#chargeModalCard{background-color:#111b1f}.chargeModalBtn{background-color:#35e0e8;color:#0b1215}.settingsHeader,.serverHeader{background-color:#151f24}.setSugBox2,.setSugBox2:hover,.setSugBox,.setSugBox:hover{border-color:#35e0e847}.settingsBtn{background-color:#35e0e8;color:#0b1215}.settingTab:hover{border-bottom-color:#35e0e81f}.redVouchBtn,.searchBtn{background-color:#35e0e8;color:#0b1215}.challMapCrd,.challHeadrI{border-color:#35e0e847}.chalCard{background-color:#151f24}.chalRews{border-left-color:#35e0e847}.chalRewSkn{border-color:#35e0e847}.changeText{border-bottom-color:#35e0e81f}.crftRcpeCrd{background-color:#070c0f}.craftRcIcn,.crftRecSml,.crftItmReq{border-color:#35e0e847}.crftTim{background-color:#151f24}.hostToggle{background-color:#35e0e8;color:#0b1215}.titleRowLocked{border-bottom-color:#35e0e81f}input:checked+.optCheck{background-color:#35e0e8;color:#0b1215}.subPassChg,.subPassChg:hover,.updDisN,.updDisN:hover,.lnkTw:hover{background-color:#35e0e8;color:#0b1215}#popupContent{background-color:#151f24}.twitchPop,.nftPop,.confPop,.clientExitPop,#confPurchItemPop{border-color:#35e0e847}#bundlePop,#premiumPop{background-color:#151f24}.metaPop{border-color:#35e0e847}.confPremiumPop,.vouchPop{background-color:#151f24}.polConfPop{border-color:#35e0e847}.rankedPop,.promoPop{background-color:#151f24}.tListN.inv{background-color:#35e0e8;color:#0b1215}.tItemHolder,.dItemHolder,.tCurrencyItem{border-color:#35e0e847}.bigMenTab:hover,.bigMenTabA,.bigMenTabA:hover{border-bottom-color:#35e0e847}.dark .menuTabNew:hover{border-bottom-color:#35e0e81f!important}.dark .tabANew,.dark .tabANew:hover{border-bottom-color:#35e0e847!important}input:checked+.slider2{background-color:#35e0e8;color:#0b1215}input:focus+.slider2{box-shadow:0 0 1px #35e0e8}.tabHeader:hover{border-bottom-color:#35e0e847}#kdLayout,.crStat{border-color:#35e0e81f}.keyIcon{border-left-color:#35e0e81f;border-right-color:#35e0e81f;border-top-color:#35e0e847;border-bottom-color:#35e0e81f}.pfpPop,.dropsPop{background-color:#151f24}.accountCreatePop{background-color:#151f24;border-color:#35e0e847}#pubPfp{background-color:#35e0e8;color:#0b1215}#tradeChatInput,.tradeChatItem{background-color:#111b1f}#partnerProgB{background-color:#35e0e8;color:#0b1215}#partnrUpBtn{background-color:#35e0e8;border-bottom-color:#35e0e8;color:#0b1215}#partnrUpBtn:hover,#partnrUpBtn:active{border-bottom-color:#35e0e8}#partnrUpBtnD,#partnrUpBtnD:hover,#partnrUpBtnD:active{border-bottom-color:#35e0e847}.editLink{color:#35e0e8}.speedRunItem{border-bottom-color:#35e0e81f}#speedRunInfo{border-bottom-color:#35e0e847}#shopMainSellB{border-color:#35e0e847}.custBack:hover{background-color:#24343a85}#itemSearchH{background-color:#151f24}.skinReward{border-color:#35e0e847}.selectedItem{border-color:#35e0e847!important}.custContainer{border-color:#35e0e847}.custSubContainer{border-left-color:#35e0e847;border-bottom-color:#35e0e847}#findGameBtn{background-color:#35e0e8;color:#0b1215}#clanDeclineAll:hover,.logVersionHed,.viewAllUpdates,.viewAllUpdates:hover{border-color:#35e0e847}.followBack{border-color:#35e0e8!important}.followBack:hover{border-color:#35e0e847!important}.joinBtn{background-color:#35e0e8;color:#0b1215}.imagePop,.badgePop,.imageNewPop{background-color:#151f24}.openCollection{background-color:#35e0e8!important;color:#0b1215}.imageListHeader,.imageListFooter{background-color:#070c0f}.importPop,#bindsHeader,.disconnectPop{background-color:#151f24}.tooltip{background-color:#24343a}.tooltip2{background-color:#070c0f}.imageTab:hover{border-bottom-color:#35e0e81f}.tabAIMG,.tabAIMG:hover{border-bottom-color:#35e0e847}input:checked+.advancedSlider{background-color:#35e0e8;color:#0b1215}input:focus+.advancedSlider{box-shadow:0 0 1px #35e0e8}.quickPlayMap{border-color:#35e0e847}#custStreakSelH{border-top-color:#35e0e81f}.winSelH{background-color:#24343a}#spinHistoryBtn{border-color:#35e0e847}#spinHistoryBtn:hover{border-color:#35e0e847!important}#spinMultiToggleBtn{background-color:#35e0e8!important;box-shadow:inset 0 -7px #35e0e8!important;border-color:#35e0e847;color:#0b1215}#spinMultiToggleBtn:hover{border-color:#35e0e847!important}#spinHistoryPop{background-color:#151f24}.spinHistoryHeader{background-color:#070c0f}.clsStatXPBar{background-color:#0b1215}.eventPop{background-color:#151f24}.eventPopHeader,.bSliderBtn,.bSliderBtn:hover,.bSliderBtn:active{border-color:#35e0e847}.bSliderBtn.disabled{border-color:#35e0e81f}.bpLevelNum.completed{background-color:#24343a}.bpLevelNum.active{border-color:#35e0e847}.bpCard,.bpCard.free{border-color:#35e0e81f}.bpCard.free.completed,.bpCard.free.completed.claimed{border-color:#35e0e847}.bpCardSlot{border-color:#35e0e81f}.bpSliderArrow{border-right-color:#35e0e847}.bpInfoBalloon{background-color:#151f24}.bpInfoBalloon:after{background-color:#151f24}.bpClaimB{border-color:#35e0e847;background-color:#151f24}.bp-unlock-header{background-color:#151f24}.bp-generic-pop,.bp-purchase-pop{background-color:#151f24;border-color:#35e0e847}.clanSubmitBtn,.clanSubmitBtn:hover{background-color:#35e0e8;color:#0b1215}.spinErrorPop{background-color:#151f24}.popHeader,.dropsPopHeader{background-color:#070c0f}.charmErrorPop,.spinHistoryStatsPop{background-color:#151f24}#kpdCalls>* td,#kpdCalls>* th{border-bottom-color:#35e0e81f}.loadingPop,.autoLoadPop,.editMapPop,.responsePop{background-color:#151f24}.infoPop,.contPop{background-color:#1d2c32}.ticketPop{background-color:#151f24}.bundleCrd{background-color:#070c0f}.bundleItmReq,.bundleSliderBtn,.bundleSliderBtn:hover,.bundleSliderBtn:active,.bundleSliderBtn.disabled{border-color:#35e0e847}.bundleSliderArrow{border-right-color:#35e0e847}.dxp-pop{background-color:#151f24;border-color:#35e0e847}.dropsSliderBtn,.dropsSliderBtn:hover,.dropsSliderBtn:active,.dropsSliderBtn.disabled{border-color:#35e0e847}.dropsSliderArrow{border-right-color:#35e0e847}.rewItemHolder{border-color:#35e0e847}.abTestsPop{background-color:#151f24}.registerGiftPop{background-color:#151f24;border-color:#35e0e847}.rankedQueueModal{background-color:#151f24;border-color:#35e0e8;box-shadow:0 0 160px #35e0e875}.rankedMenuModal,.communityPopup,.tutorialPopup,.defaultModal,.krunkCupJoinModal,.krunkCupViewModal,.exchangeModal,.itemsModal,.socialModal,.moreKrunkerPopup{background-color:#151f24}.io-button{background-color:#151f24;border-color:#35e0e81f}.io-button:hover{background-color:#182429}.io-button--accept-secondary{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.io-input-field{border-color:#35e0e81f}.io-input-field:focus{border-color:#35e0e8}.io-popup-container{background-color:#111b1f}.io-section-header:after{background-color:#35e0e8;color:#0b1215}.io-card{border-color:#35e0e81f}.io-separator{border-bottom-color:#35e0e81f}.io-separator span{background-color:#111b1f}.strike-timer__info-holder,.strike-timer__timer-bg{background-color:#151f24}.bundle-popup-lmt-offer{background-color:#24343a}.ltm-offer-container__arrow{border-right-color:#35e0e847}.file-drop-target.svelte-145grbc{border-color:#35e0e81f}.file-drop-target.svelte-145grbc:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.file-drop-target.hovered.svelte-145grbc{border-color:#35e0e847}.file-drop-target.drag-over.svelte-145grbc{border-color:#35e0e8;background-color:#35e0e81a}.code-input.svelte-1xwmszg{border-color:#35e0e81f}.code-input.svelte-1xwmszg:focus{border-color:#35e0e8}.qr-code-image.svelte-1xwmszg,.slider-input.svelte-1xwmszg{border-color:#35e0e81f}.slider-input.svelte-1xwmszg::-webkit-slider-thumb{background-image:linear-gradient(145deg,#35e0e8,#3a7dce);border-color:#35e0e847}.slider-input.svelte-1xwmszg::-webkit-slider-runnable-track{background-image:linear-gradient(to right,#245d99,#35e0e8)}.slider-display.svelte-1xwmszg{color:#35e0e8}.info-message.svelte-1xwmszg{border-color:#35e0e8}.password-requirements.svelte-1xwmszg,.motd-input.svelte-15d5v89{border-color:#35e0e81f}.motd-input.svelte-15d5v89:focus{border-color:#35e0e81f}.motd-display.svelte-15d5v89{border-left-color:#35e0e81f}.item-showcase-container.svelte-2tp35a{background-color:#151f24bf}.more-info-btn.svelte-2tp35a,.more-info-btn.svelte-2tp35a:hover,.share-btn.svelte-2tp35a{border-color:#35e0e81f}.md-root.svelte-1kkpw01{background-color:#151f24}.md-header.svelte-1kkpw01{border-bottom-color:#35e0e81f;background-color:#111b1f}.md-back.svelte-1kkpw01{border-color:#35e0e81f}.md-header-icon.svelte-1kkpw01{color:#35e0e8}.md-thumb.svelte-1kkpw01{background-color:#0b1215}.md-info-bar.svelte-1kkpw01{border-bottom-color:#35e0e81f}.md-creator.svelte-1kkpw01{color:#35e0e8}.md-host-btn.svelte-1kkpw01,.md-icon-btn.svelte-1kkpw01{border-color:#35e0e81f}.md-tabs.svelte-1kkpw01{border-bottom-color:#35e0e81f}.md-tab.active.svelte-1kkpw01{color:#35e0e8;border-bottom-color:#35e0e8}.md-lb-name.svelte-1kkpw01{color:#35e0e8}.md-load-more.svelte-1kkpw01{border-color:#35e0e81f}.md-data-section-title.svelte-1kkpw01{color:#35e0e8;border-top-color:#35e0e81f}.md-data-table.svelte-1kkpw01{background-color:#111b1f;border-color:#35e0e81f}.md-data-table-row.svelte-1kkpw01{border-top-color:#35e0e81f}.md-data-header.svelte-1kkpw01{background-color:#111b1f;border-color:#35e0e81f}.md-data-search-btn.svelte-1kkpw01{border-color:#35e0e81f}.md-data-input.svelte-1kkpw01{background-color:#0b1215;border-color:#35e0e81f}.md-data-input.svelte-1kkpw01:focus{border-color:#35e0e8}.md-ver-row.svelte-1kkpw01{border-top-color:#35e0e81f}.md-ver-btn.svelte-1kkpw01{border-color:#35e0e81f}.mod-root.svelte-1v2j2f2{background-color:#151f24}.mod-header.svelte-1v2j2f2{border-bottom-color:#35e0e81f;background-color:#111b1f}.mod-back.svelte-1v2j2f2{border-color:#35e0e81f}.mod-header-icon.svelte-1v2j2f2{color:#35e0e8}.mod-thumb.svelte-1v2j2f2{background-color:#0b1215}.mod-info-bar.svelte-1v2j2f2{border-bottom-color:#35e0e81f}.mod-creator.svelte-1v2j2f2{color:#35e0e8}.mod-use-btn.svelte-1v2j2f2,.mod-use-btn.svelte-1v2j2f2:hover{background-color:#35e0e8;color:#0b1215}.mod-icon-btn.svelte-1v2j2f2{border-color:#35e0e81f}.style-container.svelte-143xo7r{background-color:#151f24bf}.slider-arrow.svelte-143xo7r{border-color:#35e0e81f}.slider-arrow.left.svelte-143xo7r .slider-arrow-icon.svelte-143xo7r{border-right-color:#35e0e847}.slider-arrow.right.svelte-143xo7r .slider-arrow-icon.svelte-143xo7r{border-left-color:#35e0e847}.swatch.svelte-143xo7r,.btn.svelte-143xo7r{border-color:#35e0e81f}.market-card.svelte-r5taai{background-color:#070c0fcc}.trade-label.inv.svelte-1lqen9w{background-color:#35e0e8;color:#0b1215}.trade-inv-item.svelte-1lqen9w{border-color:#35e0e847}.trade-search.svelte-1lqen9w{border-color:#35e0e81f}.trade-search.svelte-1lqen9w:focus{border-color:#35e0e81f}.gift-root.svelte-g5j1wf{background-color:#151f24}.gift-header.svelte-g5j1wf{border-bottom-color:#35e0e81f;background-color:#111b1f}.gift-back.svelte-g5j1wf{border-color:#35e0e81f}.gift-header-icon.svelte-g5j1wf{color:#35e0e8}.gift-input.svelte-g5j1wf{background-color:#0b1215;border-color:#35e0e81f}.gift-input.svelte-g5j1wf:focus{border-color:#35e0e8}.gift-send.svelte-g5j1wf{background-color:#35e0e8;color:#0b1215}.gift-done.svelte-g5j1wf{border-color:#35e0e81f}.buy-button.svelte-r01l8m:disabled{background-color:#24343a}.buy-button.svelte-r01l8m:disabled:hover{background-color:#24343a}.shop-header.svelte-1gtpoav{border-bottom-color:#35e0e81f}.rp-balance.svelte-1gtpoav,.guest-earned-collect__reward-items.svelte-1hb83uo,.guest-earned-collect__register-btn.svelte-1hb83uo,.guest-earned-collect__register-btn.svelte-1hb83uo:hover{border-color:#35e0e81f}.signup-rewards-list.svelte-1v6b0qm{background-color:#070c0fb3}.signup-rewards-register-button.svelte-1v6b0qm{border-color:#35e0e847!important}.product-row.svelte-14104bb{border-color:#35e0e81f}.product-row.svelte-14104bb:hover{border-color:#35e0e847}.gift-button.svelte-14104bb,.for-you-text.svelte-14104bb,.currency-shop-item.svelte-14104bb,.currency-shop-item.svelte-14104bb:hover{border-color:#35e0e81f}.verification-banner.svelte-165vbjp{background-color:#151f24cc}.spinner.svelte-165vbjp{border-color:#35e0e81f;border-top-color:#35e0e847}.section-title.svelte-e65miw .material-icons.svelte-e65miw{color:#35e0e8}.toggle-switch.svelte-e65miw input:checked+.slider.svelte-e65miw{background-color:#35e0e8;color:#0b1215}.texture-upload-item.svelte-e65miw,.texture-image.svelte-e65miw{border-color:#35e0e81f}.btn-generate.svelte-e65miw{background-color:#35e0e8;color:#0b1215}.btn-generate.svelte-e65miw:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.sgNum.svelte-1i1uhp7,.sgHex.svelte-1i1uhp7{border-color:#35e0e81f}.sgNum.svelte-1i1uhp7:focus,.sgHex.svelte-1i1uhp7:focus{border-color:#35e0e8}.sgSlider.svelte-1i1uhp7::-webkit-slider-thumb{background-color:#35e0e8;color:#0b1215}.sgSlider.svelte-1i1uhp7:focus-visible{outline-color:#35e0e8}.sgColorInput.svelte-1i1uhp7{border-color:#35e0e81f}.sgColorInput.svelte-1i1uhp7:focus-visible{outline-color:#35e0e8}.sgPalette.svelte-sxvv3c{background-color:#0b1215fa;border-color:#35e0e81f}.sgPaletteSearch.svelte-sxvv3c{border-color:#35e0e81f}.sgPaletteSearch.svelte-sxvv3c:focus{border-color:#35e0e8}.sgPaletteItem.active.svelte-sxvv3c,.sgPaletteItem.svelte-sxvv3c:focus-visible{background-color:#35e0e840}.sgEditor.svelte-upgo13{border-color:#35e0e81f}.sgToolbar.svelte-upgo13{border-bottom-color:#35e0e81f}.sgBtn.svelte-upgo13{border-color:#35e0e81f}.sgBtn.svelte-upgo13:focus-visible,.sgCanvas.svelte-upgo13:focus-visible,.sgErrorItem.svelte-upgo13:focus-visible,.sgMenuItem.svelte-upgo13:focus-visible{outline-color:#35e0e8}.sgBtnPrimary.svelte-upgo13{background-color:#35e0e840;border-color:#35e0e899;color:#35e0e8}.sgBtnPrimary.svelte-upgo13:hover:not(:disabled){background-color:#35e0e866}.sgMenu.svelte-upgo13{background-color:#0b1215fa;border-color:#35e0e81f}.sgMenuItem.svelte-upgo13:hover{background-color:#35e0e840}.sgCanvas.svelte-upgo13{background-color:#070c0fe6}.sgOverlay.svelte-upgo13{background-color:#070c0ffa;border-color:#35e0e81f}.sgIoText.svelte-upgo13{border-color:#35e0e81f}.sgIoText.svelte-upgo13:focus{border-color:#35e0e8}.sgFooter.svelte-upgo13{border-top-color:#35e0e81f}.io-action-bar-button.svelte-103lu6x{background-color:#35e0e8;color:#0b1215}.search-input.svelte-103lu6x{border-color:#35e0e81f}.search-input.svelte-103lu6x:focus{border-color:#35e0e8}.io-action-bar-button.svelte-103lu6x:hover,.action-btn.test-btn.svelte-103lu6x,.action-btn.test-btn.svelte-103lu6x:hover{background-color:#35e0e8;color:#0b1215}.skin-manager-table.svelte-103lu6x .table thead th{background-color:#0b1215}.tab-navigation.svelte-103lu6x{border-bottom-color:#35e0e81f}.tab-button.active.svelte-103lu6x{color:#35e0e8;background-color:#35e0e81a}.tab-button.active.svelte-103lu6x:after{background-color:#35e0e8;color:#0b1215}.preview-control-btn.svelte-103lu6x{border-color:#35e0e81f}.preview-control-btn.active.svelte-103lu6x{background-color:#35e0e84d;border-color:#35e0e8}.paint-select.svelte-103lu6x{border-color:#35e0e81f}.paint-select.svelte-103lu6x option.svelte-103lu6x{background-color:#0b1215}.connection.svelte-1fenhdo{background-color:#182429}.consequences.svelte-18wpngg{border-color:#35e0e81f}.loading-spinner.svelte-190e6fj{border-color:#35e0e81f;border-top-color:#35e0e847}.retry-button.svelte-190e6fj{background-color:#35e0e8;color:#0b1215}.benefits-card.svelte-190e6fj,.billing-info.svelte-190e6fj,.subscribe-btn.svelte-190e6fj{border-color:#35e0e81f}.subscribe-btn.svelte-190e6fj:hover{border-color:#35e0e847}.disabled-card.svelte-190e6fj .subscribe-btn.svelte-190e6fj{background-image:linear-gradient(135deg,#24343a,#1d2c32);border-color:#35e0e81f}.disabled-card.svelte-190e6fj .subscribe-btn.svelte-190e6fj:hover,.disabled-indicator.svelte-190e6fj{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.subscribed-btn.svelte-190e6fj{border-color:#35e0e81f}.renew-btn.svelte-190e6fj{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);border-color:#35e0e81f;box-shadow:0 8px 24px #35e0e866,0 4px 8px #0000004d,inset 0 1px #ffffff4d}.renew-btn.svelte-190e6fj:hover{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);box-shadow:0 12px 32px #35e0e880,0 6px 12px #0006,inset 0 1px #fff6;border-color:#35e0e847}.cancel-container.svelte-190e6fj,.cancel-btn.svelte-190e6fj,.cancel-btn.svelte-190e6fj:hover{border-color:#35e0e81f}.wild-offer-notification.svelte-1gcqcwy{background-image:linear-gradient(135deg,#000000f2,#070c0ffa)}.shop-btn.svelte-1gcqcwy,.shop-btn.svelte-1gcqcwy:hover,.player-bound-display.svelte-1nzacef,.player-bound-display.svelte-1nzacef:hover,.login-button.svelte-1nzacef,.login-button.svelte-1nzacef:hover{border-color:#35e0e81f}.data-table.svelte-69sryq thead.svelte-69sryq{background-color:#0b1215}.table-header.svelte-69sryq{color:#35e0e8}.table-header.sortable.svelte-69sryq:hover{background-color:#35e0e81a}.table-header.sortable.sort-asc.svelte-69sryq:after{border-bottom-color:#35e0e8}.table-header.sortable.sort-desc.svelte-69sryq:after{border-top-color:#35e0e8}.table-cell.svelte-69sryq{border-bottom-color:#35e0e81f}.qs-window.svelte-1o11rsf{background-color:#111b1f;border-color:#35e0e81f}.qs-item-preview.svelte-1o11rsf,.qs-values.svelte-1o11rsf,.qs-amount-select.svelte-1o11rsf{border-color:#35e0e81f}.qs-amount-select.svelte-1o11rsf:focus{border-color:#35e0e88c}.jy-filter-bar.svelte-1vqzycn{background-color:#111b1f;border-color:#35e0e81f}.jy-search-input.svelte-1vqzycn,.jy-sort-select.svelte-1vqzycn{background-color:#151f24;border-color:#35e0e81f}.sd-root.svelte-a9j4oe{background-color:#151f24}.sd-header.svelte-a9j4oe{border-bottom-color:#35e0e81f;background-color:#111b1f}.sd-back.svelte-a9j4oe{border-color:#35e0e81f}.sd-header-icon.svelte-a9j4oe{color:#35e0e8}.sd-del.svelte-a9j4oe{border-color:#35e0e81f}.sd-tabs.svelte-a9j4oe{border-bottom-color:#35e0e81f}.sd-tab.active.svelte-a9j4oe{color:#35e0e8;border-bottom-color:#35e0e8}.sd-row.svelte-a9j4oe{background-color:#111b1f;border-color:#35e0e81f}.sd-input.svelte-a9j4oe{background-color:#0b1215;border-color:#35e0e81f}.sd-input.svelte-a9j4oe:focus{border-color:#35e0e8}.sd-primary.svelte-a9j4oe{background-color:#35e0e8;color:#0b1215}.sd-mini.svelte-a9j4oe{border-color:#35e0e81f}.sd-kr.svelte-a9j4oe{background-color:#111b1f}.region-btn.svelte-1gdnqq5{border-color:#35e0e81f}.region-btn.active.svelte-1gdnqq5{background-color:#35e0e826;border-color:#35e0e880;color:#35e0e8}.season-select.svelte-1gdnqq5{border-color:#35e0e81f}.season-select.svelte-1gdnqq5 option.svelte-1gdnqq5{background-color:#0b1215}th.svelte-1gdnqq5{color:#35e0e8}td.svelte-1gdnqq5{border-bottom-color:#35e0e81f}.season-select.svelte-81ueoe{border-color:#35e0e81f}.season-select.svelte-81ueoe option.svelte-81ueoe{background-color:#0b1215}.kc-title.svelte-1xp8pv1{color:#35e0e8}.back-btn.svelte-1xp8pv1{border-color:#35e0e84d}.back-btn.svelte-1xp8pv1:hover{background-color:#35e0e81f;color:#35e0e8}.friend-list.svelte-e2g8p2{background-color:#111b1f;border-right-color:#35e0e81f}.friend-presence-dot.svelte-e2g8p2{border-color:#35e0e81f}.friend-presence-dot.offline.svelte-e2g8p2{background-color:#24343a}.friend-unread.svelte-e2g8p2{background-color:#35e0e8;color:#0b1215}.friend-list-search.svelte-e2g8p2{background-color:#111b1f;border-top-color:#35e0e81f}.conversation-root.svelte-128yn5i{background-color:#151f24}.conversation-header.svelte-128yn5i{border-bottom-color:#35e0e81f;background-color:#111b1f}.conversation-presence-dot.svelte-128yn5i{border-color:#35e0e81f}.conversation-presence-dot.offline.svelte-128yn5i{background-color:#24343a}.conversation-compose.svelte-128yn5i{border-top-color:#35e0e81f;background-color:#111b1f}.conversation-load-earlier.svelte-128yn5i{border-color:#35e0e81f}.conversation-input.svelte-128yn5i{background-color:#0b1215;border-color:#35e0e81f}.conversation-input.svelte-128yn5i:focus{border-color:#35e0e8}.conversation-emoji-button.svelte-128yn5i{background-color:#0b1215;border-color:#35e0e81f}.conversation-emoji-button.svelte-128yn5i:hover:not(:disabled){background-color:#111b1f;color:#35e0e8}.conversation-send-button.svelte-128yn5i{background-color:#35e0e8;color:#0b1215}.conversation-send-button.svelte-128yn5i:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.conversation-send-button.svelte-128yn5i:disabled{background-color:#1d2c32}.friends-root.svelte-u33r8v{background-color:#151f24}.friends-status-dot.svelte-u33r8v{background-color:#24343a}.player-card.svelte-dp3rf9{background-color:#0b1215cc;border-color:#35e0e81f}.player-card.svelte-dp3rf9:hover{background-color:#111b1fcc}.player-card.svelte-dp3rf9:focus-visible{outline-color:#35e0e847}.counterBadge.svelte-fgmdj8{background-color:#35e0e8;color:#0b1215}.territory-map-container.svelte-102279m{background-color:#111b1f;border-color:#35e0e81f}.territory-details-panel.svelte-102279m{border-color:#35e0e81f}.panel-header.svelte-102279m,.leaderboard-entry.svelte-102279m{border-bottom-color:#35e0e81f}.clickable-name.svelte-myp8tq:hover{color:var(--highlight-color, rgb(53, 224, 232))}.view-tab.svelte-myp8tq{border-color:#35e0e81f}.view-tab.active.svelte-myp8tq{background-color:#35e0e833;border-color:#35e0e866}.day-arrow.svelte-myp8tq,.day-input.svelte-myp8tq{border-color:#35e0e81f}.payouts-row.svelte-myp8tq,.payouts-row-header.svelte-myp8tq{border-bottom-color:#35e0e81f}.main-title.svelte-1sr7h97,.card-title.svelte-1sr7h97{color:#35e0e8}.map-badge.svelte-1sr7h97,.mode-badge.svelte-1sr7h97{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.section-title.svelte-1sr7h97{color:#35e0e8;border-left-color:#35e0e8}.rule-icon.svelte-1sr7h97,.tip-title.svelte-1sr7h97{color:#35e0e8}.filter-input.svelte-72bcy3{border-color:#35e0e84d}.filter-input.svelte-72bcy3:focus{border-color:#35e0e8}.post-card.svelte-72bcy3{border-color:#35e0e81f}.looking-for-label.svelte-72bcy3{color:#35e0e8}.req-badge.svelte-72bcy3{border-color:#35e0e81f}.player-clan.clickable-clan.svelte-7h12t9:hover{color:var(--highlight-color, rgb(53, 224, 232))}.tab-bar.svelte-7h12t9{border-bottom-color:#35e0e81f}.tab.active.svelte-7h12t9{border-bottom-color:var(--highlight-color, rgb(53, 224, 232))}.day-arrow.svelte-7h12t9,.day-input.svelte-7h12t9{border-color:#35e0e81f}.page-btn.svelte-7h12t9{background-color:#35e0e833;border-color:#35e0e866}.ct-row.svelte-7h12t9,.ct-header.svelte-7h12t9{border-bottom-color:#35e0e81f}.clickable-name.svelte-7h12t9:hover{color:var(--highlight-color, rgb(53, 224, 232))}.rank-display.svelte-19e82s0{border-color:#35e0e81f}.popup-box.svelte-6dkuug{background-color:#151f24}.moreKrunkerOption.svelte-19783yx{border-color:#35e0e847;background-color:#0b1215}.moreKrunkerOption.svelte-19783yx:hover{border-color:#35e0e847}.emoji-panel.svelte-13g6jqo{background-color:#151f24}.emoji-icon.svelte-13g6jqo{color:#35e0e8}.emoji-item.selected.svelte-13g6jqo,.emoji-item.svelte-13g6jqo:hover{border-color:#35e0e81f}.compose-window.svelte-qxxay9{background-color:#0b1215;border-color:#35e0e81f}.compose-input.svelte-qxxay9{border-color:#35e0e81f}.compose-input.svelte-qxxay9:focus{border-color:#35e0e899}.compose-input-num.svelte-qxxay9{border-color:#35e0e81f}.compose-btn-submit.svelte-qxxay9{background-color:#35e0e8;color:#0b1215}.compose-btn-submit.svelte-qxxay9:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.rewards-container.svelte-1sac6ik{border-color:#35e0e81f}.reward-card.flying.svelte-1sac6ik:after{border-color:#35e0e81f}.card-front.svelte-1sac6ik,.card-back.svelte-1sac6ik{background-color:#070c0fe6}.loading-spinner.svelte-172kpk5{border-color:#35e0e81f;border-top-color:#35e0e8}.socialsStickyFooter.svelte-1ley7u4{border-top-color:#35e0e81f}.pollBadge.svelte-1ley7u4,.pollVote.svelte-1ley7u4{background-color:#35e0e8;color:#0b1215}.eventLink.svelte-1ley7u4{color:#35e0e8;background-color:#35e0e81a}.eventLink.svelte-1ley7u4:hover{background-color:#35e0e833}.dm-emoji-panel.svelte-1ni3kfh{background-color:#151f24;border-color:#35e0e81f}.dm-emoji-header.svelte-1ni3kfh{border-bottom-color:#35e0e81f}.dm-emoji-header-icon.svelte-1ni3kfh{color:#35e0e8}.dm-emoji-thumb.svelte-1ni3kfh{background-color:#0b1215;border-color:#35e0e81f}.sub-tab-panel.svelte-lri212{border-color:#35e0e847}.bundle-card.svelte-lri212{background-color:#070c0f}.bundle-item-req.svelte-lri212{border-color:#35e0e847}.detail-window.svelte-h3kymj{background-color:#0b1215;border-color:#35e0e81f}.detail-head.svelte-h3kymj{border-bottom-color:#35e0e81f}.reply-input.svelte-h3kymj{border-color:#35e0e81f}.reply-input.svelte-h3kymj:focus{border-color:#35e0e880}.reply-btn.svelte-h3kymj{background-color:#35e0e8;color:#0b1215}.map-filter-select.svelte-c92dbh{border-color:#35e0e866}.map-filter-select.svelte-c92dbh:hover{border-color:#35e0e8}.map-filter-select.svelte-c92dbh:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.section-title.svelte-c92dbh{color:#35e0e8;border-left-color:#35e0e8}.day-arrow.svelte-c92dbh{border-color:#35e0e866;color:#35e0e8}.day-arrow.svelte-c92dbh:hover:not(:disabled){background-color:#35e0e833;border-color:#35e0e8}.day-input.svelte-c92dbh{border-color:#35e0e866}.day-input.svelte-c92dbh:focus{border-color:#35e0e8}.no-participation-title.svelte-c92dbh{color:#35e0e8}.page-btn.svelte-c92dbh{background-color:#35e0e833;border-color:#35e0e866}.overlay-content.svelte-jxc66d{background-color:#070c0f;border-color:#35e0e81f}.streams-overlay.svelte-60shhe{border-color:#35e0e81f}.hide-button.svelte-60shhe{background-color:#182429}.hide-button.svelte-60shhe:hover{background-color:#1d2c32}.spinner.svelte-60shhe{border-color:#35e0e81f}.featured-section.svelte-60shhe{background-color:#070c0fe6}.stream-card.svelte-60shhe{background-color:#0b1215cc;border-color:#35e0e81f}.thumbnail.svelte-60shhe{background-color:#0b1215}.thumbnail.svelte-60shhe:before{background-color:#0b1215}.tutorialSidebar.svelte-los391{background-image:linear-gradient(180deg,#111b1ff2,#0b1215f2)}.tutorialSidebar.svelte-los391:before{background-image:linear-gradient(180deg,rgba(17,27,31,.95) 0%,transparent 100%)}.tutorialSidebar.svelte-los391:after{background-image:linear-gradient(0deg,rgba(11,18,21,.95) 0%,transparent 100%)}.tutorialNavItem.svelte-los391{border-bottom-color:#35e0e81f}.matchmakingBarImage.svelte-los391,.inviteFriendsURLImage.svelte-los391,.spinsImage.svelte-los391,.matchmakingBarQuickMatchImage.svelte-los391,.hostFindGameImage.svelte-los391,.hostGameSetupImage.svelte-los391,.challengesImage.svelte-los391,.rankedImage.svelte-los391,.clanCreateImage.svelte-los391,.clanManageImage.svelte-los391,.tradingImage.svelte-los391,.challengeModeImage.svelte-los391,.challengeModeDifferenceImage.svelte-los391{border-color:#35e0e81f}.comment-text.svelte-7miv1g a{color:#35e0e8}.guide-section.svelte-4log2q{background-color:#070c0f}.guide-section-title.svelte-4log2q .material-icons.svelte-4log2q{color:#35e0e8}.guide-key.svelte-4log2q{background-color:#111b1f;border-color:#35e0e81f}.guide-rarity.dark.svelte-4log2q{border-color:#35e0e81f}.match-details.svelte-1irqx9a{border-top-color:#35e0e81f}.table-header.svelte-1irqx9a,.table-cell.svelte-1irqx9a{border-bottom-color:#35e0e81f}.page-btn.svelte-1irqx9a{border-color:#35e0e81f}.page-btn.svelte-1irqx9a:hover:not([disabled]){border-color:#35e0e81f}.currency-reward.svelte-1yk8fym,.gift-button.svelte-rew7ag{border-color:#35e0e81f}.modal-content.svelte-1pf0608{background-color:#111b1f;border-color:#35e0e81f}.price-input.svelte-1pf0608,.fee-breakdown.svelte-1pf0608{border-color:#35e0e81f}.season-banner.svelte-17kea4i{background-color:#35e0e8;color:#0b1215}.challenges-link-icon.svelte-17kea4i,.section-title.svelte-1x46pbz .material-icons.svelte-1x46pbz{color:#35e0e8}.param-chip.svelte-1x46pbz{border-color:#35e0e81f}.add-uniform-btn.svelte-1x46pbz{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.add-uniform-btn.svelte-1x46pbz:hover{background-color:#35e0e84d}.part-block.svelte-1x46pbz,.part-name-input.svelte-1x46pbz{border-color:#35e0e81f}.copy-defaults-btn.svelte-1x46pbz{background-color:#35e0e826;border-color:#35e0e84d;color:#35e0e8}.copy-defaults-btn.svelte-1x46pbz:hover:not(:disabled){background-color:#35e0e84d}.apply-btn.svelte-1x46pbz,.apply-btn.svelte-1x46pbz:hover{background-color:#35e0e8;color:#0b1215}.clear-btn.svelte-1x46pbz{border-color:#35e0e81f}.ph-xp-fill.svelte-da3zva{background-image:linear-gradient(to right,#ff6a0b,#35e0e8)}.survey-notification.svelte-1u0qxrf{background-image:linear-gradient(135deg,#000000f2,#070c0ffa)}.answer-btn.svelte-1u0qxrf{border-color:#35e0e81f}.icon-btn.list.svelte-hk8nq9{background-color:#35e0e8;color:#0b1215}.card-title.svelte-1k16b2z,.view-title.svelte-1k16b2z{color:#35e0e8}.trade-item.svelte-z9tzua,.trade-item-empty.svelte-z9tzua{border-color:#35e0e81f}.bm-card.svelte-dbcods{background-color:#070c0f}.bm-card-icon.svelte-dbcods{border-color:#35e0e847}.bm-locked-btn.svelte-dbcods{background-color:#111b1f}.modal-content.svelte-dbcods{background-color:#111b1f;border-color:#35e0e81f}.price-row.total.svelte-dbcods{border-top-color:#35e0e81f}.sma-dialog.svelte-1veg8cv{background-color:#151f24}.sma-header.svelte-1veg8cv{background-color:#111b1f;border-bottom-color:#35e0e81f}.sma-header-icon.svelte-1veg8cv{color:#35e0e8}.sma-rules.svelte-1veg8cv{background-color:#111b1f;border-color:#35e0e81f}.sma-input.svelte-1veg8cv{background-color:#0b1215;border-color:#35e0e81f}.sma-input.svelte-1veg8cv:focus{border-color:#35e0e8}.sma-map.svelte-1veg8cv{border-color:#35e0e81f}.sma-map.active.svelte-1veg8cv{border-color:#35e0e8;color:#35e0e8}.sma-footer.svelte-1veg8cv{border-top-color:#35e0e81f;background-color:#111b1f}.sma-secondary.svelte-1veg8cv{border-color:#35e0e81f}.sma-primary.svelte-1veg8cv{background-color:#35e0e8;color:#0b1215}.usernames-col.svelte-27udiy{border-color:#35e0e81f}.col-header.svelte-27udiy{border-bottom-color:#35e0e81f}.username-row.svelte-27udiy{border-color:#35e0e81f}.username-row.active.svelte-27udiy{border-color:#35e0e8}.leave-note.svelte-27udiy{border-left-color:#35e0e8}.username-active.svelte-27udiy{color:#35e0e8}#menuWindow.eterno .store-tabs.svelte-v85byk{background-color:#111b1fad}.store-tab.svelte-v85byk:hover,.store-tab-active.svelte-v85byk,.store-tab-active.svelte-v85byk:hover{border-bottom-color:#35e0e847}.register-notification.svelte-t1w66d{background-image:linear-gradient(135deg,#000000e6,#070c0ff2)}.table.svelte-12kndpz th.svelte-12kndpz,.table.svelte-12kndpz td.svelte-12kndpz{border-bottom-color:#35e0e81f}.pagination.svelte-12kndpz{border-top-color:#35e0e81f}.pagination-btn.svelte-12kndpz{background-color:#35e0e8;color:#0b1215}.pagination-btn.svelte-12kndpz:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.loading-spinner.svelte-1tteuk0{border-color:#35e0e81f}.load-more-btn.svelte-1tteuk0{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-1tteuk0:hover{background-color:#35e0e84d}.load-more-btn.svelte-1tteuk0:active{background-color:#35e0e866}.modal-content.svelte-1k428dj{background-color:#111b1f;border-color:#35e0e81f}.st-root.svelte-kqehnu{background-color:#151f24}.st-header.svelte-kqehnu{border-bottom-color:#35e0e81f;background-color:#111b1f}.st-back.svelte-kqehnu{border-color:#35e0e81f}.st-header-icon.svelte-kqehnu{color:#35e0e8}.st-row.svelte-kqehnu{background-color:#111b1f;border-color:#35e0e81f}.st-row.svelte-kqehnu:hover{background-color:#151f24}.st-invite.svelte-kqehnu:hover{background-color:#111b1f}.st-mini.svelte-kqehnu{border-color:#35e0e81f}.st-section-title.svelte-kqehnu{color:#35e0e8;border-top-color:#35e0e81f}.st-input.svelte-kqehnu{background-color:#0b1215;border-color:#35e0e81f}.st-input.svelte-kqehnu:focus{border-color:#35e0e8}.st-primary.svelte-kqehnu{background-color:#35e0e8;color:#0b1215}.card-title.svelte-raovk7,.view-title.svelte-raovk7{color:#35e0e8}.profile-detail-root.svelte-1hghrmf{background-color:#151f24}.profile-detail-header-bar.svelte-1hghrmf{border-bottom-color:#35e0e81f;background-color:#111b1f}.profile-detail-back.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-header-icon.svelte-1hghrmf{color:#35e0e8}.profile-detail-identity.svelte-1hghrmf,.profile-detail-avatar.svelte-1hghrmf{background-color:#111b1f;border-color:#35e0e81f}.profile-detail-online-dot.svelte-1hghrmf{background-color:#24343a;border-color:#35e0e81f}.profile-detail-creation-thumb.svelte-1hghrmf{background-color:#0b1215}.profile-detail-clan.svelte-1hghrmf{color:#35e0e8}.profile-detail-info-row.svelte-1hghrmf{border-top-color:#35e0e81f}.profile-detail-follow-box.svelte-1hghrmf{background-color:#111b1f}.profile-detail-follow-box.svelte-1hghrmf:hover{background-color:#151f24}.profile-detail-action.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-action.active.svelte-1hghrmf{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.profile-detail-action.active.svelte-1hghrmf i.svelte-1hghrmf{color:#35e0e8}.profile-detail-xp-strip.svelte-1hghrmf{border-top-color:#35e0e81f}.profile-detail-level-badge.svelte-1hghrmf,.profile-detail-xp-fill.svelte-1hghrmf{background-color:#35e0e8;color:#0b1215}.profile-detail-stat.svelte-1hghrmf,.profile-detail-class.svelte-1hghrmf,.profile-detail-raid-row.svelte-1hghrmf{background-color:#0b1215;border-color:#35e0e81f}.profile-detail-sales-panel.svelte-1hghrmf,.profile-detail-badges-panel.svelte-1hghrmf,.profile-detail-creations-panel.svelte-1hghrmf{background-color:#111b1f;border-color:#35e0e81f}.profile-detail-section-header.svelte-1hghrmf,.profile-detail-sales-header.svelte-1hghrmf{color:#35e0e8}.profile-detail-range-btn.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-range-btn.active.svelte-1hghrmf{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.profile-detail-listing-card.svelte-1hghrmf{background-color:#0b1215}.profile-detail-listing-card.svelte-1hghrmf:hover{background-color:#111b1f}.profile-detail-listing-thumb.svelte-1hghrmf{background-color:#070c0f}.profile-detail-title-item.svelte-1hghrmf,.profile-detail-badge-item.svelte-1hghrmf{background-color:#111b1f}.profile-detail-creation-card.svelte-1hghrmf{background-color:#0b1215}.profile-detail-creation-card.svelte-1hghrmf:hover{background-color:#111b1f}.modal-content.svelte-1ugt6n9{background-color:#111b1f;border-color:#35e0e81f}.section-title.svelte-awmvtb .material-icons.svelte-awmvtb{color:#35e0e8}.sound-info.svelte-awmvtb{border-color:#35e0e81f}.btn-replace.svelte-awmvtb{background-color:#35e0e8cc}.btn-replace.svelte-awmvtb:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.item-preview.svelte-1lii2o,.kid-display-container.svelte-lbi007{border-color:#35e0e81f}.kid-display-benefits.svelte-lbi007 h3.svelte-lbi007:after{background-color:#35e0e8;color:#0b1215}.partnership-info.svelte-lbi007{background-color:#35e0e81a;border-left-color:#35e0e8}.sgNode.svelte-wbsbny{background-color:#0b1215f5;border-color:#35e0e81f}.sgNode.selected.svelte-wbsbny{border-color:#35e0e8;box-shadow:0 0 0 1px #35e0e8,0 2px 10px #00000073}.sgNode.isOutput.svelte-wbsbny .sgNodeHeader.svelte-wbsbny{background-color:#35e0e840}.sgNodeHeader.svelte-wbsbny{border-bottom-color:#35e0e81f}.sgSelect.svelte-wbsbny,.sgText.svelte-wbsbny{border-color:#35e0e81f}.sgSelect.svelte-wbsbny option.svelte-wbsbny{background-color:#0b1215}.sgSelect.svelte-wbsbny:focus,.sgText.svelte-wbsbny:focus{border-color:#35e0e8}.sgCheck.svelte-wbsbny:focus-visible{outline-color:#35e0e8}.sgUnset.svelte-wbsbny{border-color:#35e0e81f}.sgUnset.svelte-wbsbny:hover:not(:disabled){border-color:#35e0e847}.sgUnset.svelte-wbsbny:focus-visible{outline-color:#35e0e8}.simple-tabs.svelte-1oqd18e{border-bottom-color:#35e0e81f}.simple-tab-active.svelte-1oqd18e{border-bottom-color:#35e0e8}.simple-tab-active.svelte-1oqd18e .simple-tab-icon.svelte-1oqd18e,.simple-tab-active.svelte-1oqd18e .simple-tab-label.svelte-1oqd18e{color:#35e0e8}.load-more-button.svelte-23mnz9{background-color:#35e0e833;border-color:#35e0e880;color:#35e0e8}.load-more-button.svelte-23mnz9:hover{background-color:#35e0e84d}.loading-spinner.svelte-gh77t9{border-color:#35e0e81f;border-top-color:#35e0e847}.retry-button.svelte-gh77t9{background-color:#35e0e8;color:#0b1215}.filter-input.svelte-1rpti7l{border-color:#35e0e84d}.filter-input.svelte-1rpti7l:focus{border-color:#35e0e8}.spin-promo-badge.svelte-5s5opu{border-color:#35e0e847}.no-offer-container.svelte-m5s1iy{background-color:#070c0fcc}.refresh-button.svelte-m5s1iy{background-image:linear-gradient(135deg,#ff5722,#ff9800,#35e0e8);border-color:#35e0e81f}.refresh-button.svelte-m5s1iy:hover:not(:disabled){border-color:#35e0e847}.optin__hero-fade.svelte-ga1m1g{background-image:linear-gradient(to top,#070c0ff2,#14141400 45%)}.report-root.svelte-18p16wl{background-color:#151f24}.report-header.svelte-18p16wl{border-bottom-color:#35e0e81f;background-color:#111b1f}.report-back.svelte-18p16wl{border-color:#35e0e81f}.report-input.svelte-18p16wl{background-color:#0b1215;border-color:#35e0e81f}.report-done.svelte-18p16wl{border-color:#35e0e81f}.trade-window.svelte-kfskmv{background-color:#151f24}.trade-message.svelte-kfskmv{border-color:#35e0e81f}.trade-message.svelte-kfskmv:focus{border-color:#35e0e81f}.trade-submit.disabled.svelte-kfskmv{background-color:#1d2c32}.profile-header.svelte-18dbnt3{border-bottom-color:#35e0e81f}.dynamic-shop-item.svelte-dif8c,.dynamic-shop-item.svelte-dif8c:hover,.dynamic-row.svelte-dif8c{border-color:#35e0e81f}.dynamic-row.svelte-dif8c:hover{border-color:#35e0e847}.next-step-hint.svelte-dif8c{color:#35e0e8}.dyn-buy-button.svelte-dif8c{border-color:#35e0e81f}.dyn-buy-button.virtual.svelte-dif8c{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);box-shadow:0 4px 12px #35e0e84d,0 2px 4px #0003,inset 0 1px #fff3}.dyn-buy-button.svelte-dif8c:hover:not(:disabled){border-color:#35e0e81f}.dyn-buy-button.svelte-dif8c:disabled{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.craft-recipe-card.svelte-ggnigm{background-color:#070c0f}.craft-icon.svelte-ggnigm,.craft-item-req.svelte-ggnigm{border-color:#35e0e847}.craft-item-req.missing.svelte-ggnigm{border-color:#35e0e847!important}.craft-timer.svelte-ggnigm{background-color:#151f24}.item-wrapper.selected.svelte-18k2d4k{box-shadow:0 0 0 2px #35e0e8}.section-title.svelte-gygf75 .material-icons.svelte-gygf75{color:#35e0e8}.btn-replace.svelte-gygf75{background-color:#35e0e8cc}.btn-replace.svelte-gygf75:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.highlight-name.svelte-1w0uz1r{background-color:#35e0e81a;border-color:#35e0e84d}.logo-image.svelte-1w0uz1r,.banner-color-swatch.svelte-1w0uz1r,.swatch.svelte-1w0uz1r,.swatch-fill.svelte-1w0uz1r,.text-notification.svelte-nrigjp,.share-btn.svelte-1524ito{border-color:#35e0e81f}.bubble-row.sent.svelte-jj9ljg .bubble.svelte-jj9ljg{background-color:#35e0e8;color:#0b1215}.quantity-button.svelte-jsgxg6:disabled{background-color:#24343a;border-color:#35e0e81f}.section-title.svelte-1rov8jm .material-icons.svelte-1rov8jm{color:#35e0e8}.tool-btn.svelte-1rov8jm,.attach-btn.svelte-1rov8jm{border-color:#35e0e81f}.tool-btn.active.svelte-1rov8jm{border-color:#35e0e8;background-color:#35e0e840}.fields.svelte-1rov8jm input[type=number].svelte-1rov8jm,.fields.svelte-1rov8jm select.svelte-1rov8jm,.fields.svelte-1rov8jm input[type=color].svelte-1rov8jm{border-color:#35e0e81f}.window-header.svelte-4fhlo6{border-bottom-color:#35e0e81f;background-color:#111b1f}.window-header-icon.svelte-4fhlo6,.section-title.svelte-wfs5t6 .material-icons.svelte-wfs5t6{color:#35e0e8}.form-select.svelte-wfs5t6{border-color:#35e0e81f}.form-select.svelte-wfs5t6:focus{border-color:#35e0e8}.form-select.svelte-wfs5t6 option.svelte-wfs5t6{background-color:#0b1215}.dye-color-input.svelte-wfs5t6{border-color:#35e0e81f}.dye-opacity-slider.svelte-wfs5t6::-webkit-slider-thumb{background-color:#35e0e8;border-color:#35e0e81f;color:#0b1215}.form-input.svelte-iy81sy,.form-select.svelte-iy81sy{border-color:#35e0e81f}.form-input.svelte-iy81sy:focus,.form-select.svelte-iy81sy:focus{border-color:#35e0e8}.form-select.svelte-iy81sy option.svelte-iy81sy{background-color:#0b1215}.add-all-button.svelte-1rj22es:disabled{background-color:#24343a;border-color:#35e0e81f}.lottery-window.theme-easter.svelte-1rj22es,.theme-easter.svelte-1rj22es .title-separator.svelte-1rj22es,.theme-easter.svelte-1rj22es .cost-column.themed-box.svelte-1rj22es{outline-color:#35e0e81f}.lottery-window.theme-neutral.svelte-1rj22es:after{border-color:#35e0e81f}.theme-neutral.svelte-1rj22es .draw-timer.svelte-1rj22es{border-color:#35e0e81f;background-color:#182429a6}.theme-neutral.svelte-1rj22es .cost-column.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .grand-prize-container.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .additional-prizes-box.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .last-draw-winners.themed-box.svelte-1rj22es{border-color:#35e0e81f;background-color:#18242980}.painted-badge-swatch.svelte-n0vhtc,.painted-inline-swatch.svelte-n0vhtc{border-color:#35e0e847}.milestone-number.svelte-6hxhl0{background-color:#182429}.milestone-bonus.svelte-6hxhl0{background-color:#151f24}.milestone-bonus.claimable.svelte-6hxhl0{background-color:#182429}.progression-summary.svelte-6hxhl0{border-top-color:#35e0e81f}.progression-details.svelte-6hxhl0{border-color:#35e0e81f}.offer-holder.svelte-1agthf7,.offer-holder.svelte-1agthf7:hover{background-color:#111b1f}.offer-name.svelte-1agthf7{color:#35e0e8}.filter-input.svelte-49w24t,.filter-select.svelte-49w24t{border-color:#35e0e84d}.filter-input.svelte-49w24t:focus,.filter-select.svelte-49w24t:focus{border-color:#35e0e8}.email-change-section.svelte-126q2op{border-top-color:#35e0e81f}.change-email-btn.svelte-126q2op{border-color:#35e0e8}.sidebar-tab.svelte-berov0{background-color:#151f24}.sidebar-tab.svelte-berov0:hover,.sidebar-tab.active.svelte-berov0,.sidebar-tab-badge.svelte-berov0{background-color:#35e0e8;color:#0b1215}.items-detail-root.svelte-dmu4q2{background-color:#151f24}.items-detail-header-bar.svelte-dmu4q2{border-bottom-color:#35e0e81f;background-color:#111b1f}.items-detail-back.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-header-icon.svelte-dmu4q2{color:#35e0e8}.items-detail-header-btn.svelte-dmu4q2,.preview-action-btn.svelte-dmu4q2{border-color:#35e0e81f}.preview-action-btn.svelte-dmu4q2:hover{border-color:#35e0e847}.preview-action-btn.active.svelte-dmu4q2{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.items-detail-wear-slider.svelte-dmu4q2,.items-detail-instance-overlay.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-paint-swatch.svelte-dmu4q2{border-color:#35e0e847}.items-detail-tabs-panel.svelte-dmu4q2{background-color:#111b1f;border-color:#35e0e81f}.items-detail-creator-link.svelte-dmu4q2{color:#35e0e8}.items-detail-stats-section.svelte-dmu4q2{border-top-color:#35e0e81f}.items-detail-stats-header.svelte-dmu4q2{color:#35e0e8}.items-detail-range-btn.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-range-btn.active.svelte-dmu4q2{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.items-detail-owner-row.svelte-dmu4q2{border-bottom-color:#35e0e81f}.items-detail-owner-name.svelte-dmu4q2:hover{color:#35e0e8}.items-detail-instance-table.svelte-dmu4q2 th.svelte-dmu4q2{background-color:#111b1f;border-bottom-color:#35e0e81f}.items-detail-instance-table.svelte-dmu4q2 td.svelte-dmu4q2,.items-detail-listing-row.svelte-dmu4q2{border-bottom-color:#35e0e81f}.items-detail-listing-seller.svelte-dmu4q2:hover,.no-clan-title.svelte-51j5cz,.clan-benefits.svelte-51j5cz h3.svelte-51j5cz{color:#35e0e8}.clan-benefits.svelte-51j5cz li.svelte-51j5cz:before{color:#35e0e8}.map-filter-select.svelte-51j5cz{border-color:#35e0e866}.map-filter-select.svelte-51j5cz:hover{border-color:#35e0e8}.map-filter-select.svelte-51j5cz:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.section-title.svelte-51j5cz{color:#35e0e8;border-left-color:#35e0e8}.day-arrow.svelte-51j5cz{border-color:#35e0e866;color:#35e0e8}.day-arrow.svelte-51j5cz:hover:not(:disabled){background-color:#35e0e833;border-color:#35e0e8}.day-input.svelte-51j5cz{border-color:#35e0e866}.day-input.svelte-51j5cz:focus{border-color:#35e0e8}.view-all-btn.svelte-51j5cz{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.view-all-btn.svelte-51j5cz:hover{background-color:#35e0e84d}.page-btn.svelte-51j5cz{background-color:#35e0e833;border-color:#35e0e866}.historical-day.svelte-51j5cz{border-color:#35e0e81f}.day-header.svelte-51j5cz{border-bottom-color:#35e0e81f}.day-label.svelte-51j5cz{color:#35e0e8}.clan-side.comparison-clan.no-comparison.svelte-51j5cz,.clan-side.svelte-51j5cz .clan-logo-small.svelte-51j5cz{border-color:#35e0e81f}.stat-row.svelte-51j5cz{border-bottom-color:#35e0e81f}.no-participation-title.svelte-51j5cz,.eligible-maps.svelte-51j5cz h3.svelte-51j5cz{color:#35e0e8}.eligible-maps.svelte-51j5cz li.svelte-51j5cz{background-color:#35e0e81a;border-color:#35e0e84d}.game-announcement.svelte-1m80xxc{border-color:#35e0e81f}.game-announcement.svelte-1m80xxc:before{border-bottom-color:#35e0e847}.ga-bundle.svelte-1m80xxc{border-color:#35e0e81f}.ga-bundle.svelte-1m80xxc:hover,.ga-action-btn.svelte-1m80xxc,.ga-action-btn.svelte-1m80xxc:hover,.ga-action-btn.disabled.svelte-1m80xxc:hover{border-color:#35e0e847}.login-button.svelte-16z1lxi{background-color:#070c0f;border-color:#35e0e847}.terms-privacy-notice.svelte-16z1lxi a.svelte-16z1lxi{color:#35e0e8}.item-wrapper.selected.svelte-zhgogl{box-shadow:0 0 0 2px #35e0e8}.loading-spinner.svelte-zhgogl{border-color:#35e0e81f}.load-more-btn.svelte-zhgogl{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-zhgogl:hover{background-color:#35e0e84d}.load-more-btn.svelte-zhgogl:active{background-color:#35e0e866}.tab.svelte-1o3qul6:hover,.tab-active.svelte-1o3qul6,.tab-active.svelte-1o3qul6:hover{border-bottom-color:#35e0e847}.trading-column-header.svelte-1r9fijr{border-bottom-color:#35e0e81f}.confirm-box.svelte-1r9fijr,.start-box.svelte-1r9fijr{background-color:#151f24;border-color:#35e0e81f}.start-input.svelte-1r9fijr{border-color:#35e0e81f}.start-input.svelte-1r9fijr:focus{border-color:#35e0e81f}.section-title.svelte-4e4ust .material-icons.svelte-4e4ust{color:#35e0e8}.texture-settings.svelte-4e4ust{border-color:#35e0e81f}.toggle-switch.svelte-4e4ust input:checked+.slider.svelte-4e4ust{background-color:#35e0e8;color:#0b1215}.form-select.svelte-4e4ust{border-color:#35e0e81f}.form-select.svelte-4e4ust:focus{border-color:#35e0e8}.form-select.svelte-4e4ust option.svelte-4e4ust{background-color:#0b1215}.texture-upload-item.svelte-4e4ust{border-color:#35e0e81f}.uploading-badge.svelte-4e4ust{background-color:#35e0e8cc}.texture-image.svelte-4e4ust{border-color:#35e0e81f}.btn-replace.svelte-4e4ust{background-color:#35e0e8cc}.btn-replace.svelte-4e4ust:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.item-wrapper.selected.svelte-1l3mtrv{box-shadow:0 0 0 2px #35e0e8}.news-item.svelte-1ult4vg{border-left-color:#35e0e8}.news-item.svelte-1ult4vg a{color:#35e0e8}.menu-container.svelte-mqcul7{background-color:#070c0f}.menu-item.active.svelte-mqcul7{border-bottom-color:#35e0e847}button.svelte-mqcul7{background-color:#35e0e8;color:#0b1215}button.svelte-mqcul7:hover{box-shadow:0 0 60px #35e0e875}.start-button.svelte-mqcul7{background-color:#35e0e8;color:#0b1215}.start-button[disabled].svelte-mqcul7{background-color:#1d2c32}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7{background-color:#0b1215;border-color:#35e0e8;box-shadow:0 0 #35e0e833}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7:hover{box-shadow:0 0 0 2px #35e0e833}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7:checked{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.paint-container.svelte-10qrqvt{background-color:#151f24bf}.slider-arrow.svelte-10qrqvt{border-color:#35e0e81f}.slider-arrow.left.svelte-10qrqvt .slider-arrow-icon.svelte-10qrqvt{border-right-color:#35e0e847}.slider-arrow.right.svelte-10qrqvt .slider-arrow-icon.svelte-10qrqvt{border-left-color:#35e0e847}.swatch.svelte-10qrqvt{border-color:#35e0e81f}.swatch.locked.selected.svelte-10qrqvt{border-color:#35e0e847}.swatch-fill.svelte-10qrqvt,.btn.svelte-10qrqvt{border-color:#35e0e81f}.inventory-filter.svelte-ga3en0{background-color:#111b1f;border-color:#35e0e81f}.filter-header.svelte-ga3en0{background-color:#111b1f}.reset-btn.svelte-ga3en0,.reset-btn.svelte-ga3en0:hover,.expand-btn.svelte-ga3en0,.expand-btn.svelte-ga3en0:hover{background-color:#24343a}.filter-content.svelte-ga3en0{border-top-color:#35e0e81f}.search-input.svelte-ga3en0,.season-select.svelte-ga3en0,.sort-select.svelte-ga3en0,.category-select.svelte-ga3en0{background-color:#151f24;border-color:#35e0e81f}.filter-tabs.svelte-ga3en0{border-bottom-color:#35e0e81f}.filter-tab.svelte-ga3en0{background-color:#151f24}.filter-tab.svelte-ga3en0:hover{background-color:#182429}.filter-tab.active.svelte-ga3en0{background-color:#35e0e8;color:#0b1215}.toggle-all-btn.svelte-ga3en0{background-color:#1d2c32}.toggle-all-btn.svelte-ga3en0:hover{background-color:#24343a}.filter-panel.svelte-ga3en0{background-color:#111b1f}.filter-item-wrapper.svelte-ga3en0{border-color:#35e0e81f}.filter-item.svelte-ga3en0:hover{background-color:#151f24}.only-btn.svelte-ga3en0{background-color:#1d2c32}.only-btn.svelte-ga3en0:hover{background-color:#24343a}.profile-search-form.svelte-fo44ss{background-color:#0b1215;border-color:#35e0e81f}.profile-search-form.svelte-fo44ss:focus-within{border-color:#35e0e8}.follow-root.svelte-1ef5zjv{background-color:#151f24}.follow-header.svelte-1ef5zjv{border-bottom-color:#35e0e81f;background-color:#111b1f}.follow-back.svelte-1ef5zjv{border-color:#35e0e81f}.follow-header-icon.svelte-1ef5zjv{color:#35e0e8}.follow-tabs.svelte-1ef5zjv{border-bottom-color:#35e0e81f;background-color:#111b1f}.follow-tab.active.svelte-1ef5zjv{border-bottom-color:#35e0e8}.follow-row.svelte-1ef5zjv{background-color:#0b1215cc;border-color:#35e0e81f}.follow-btn.svelte-1ef5zjv{background-color:#35e0e8;color:#0b1215}.follow-btn.following.svelte-1ef5zjv,.price-tag.svelte-1q06uv7{border-color:#35e0e81f}.buy-button.svelte-1q06uv7:disabled{background-color:#24343a}.buy-button.svelte-1q06uv7:disabled:hover{background-color:#24343a}.io-code-display.svelte-owjkr{border-color:#35e0e81f}.music-player.svelte-1ei19qi{background-color:#0b1215f2}.music-btn.svelte-1ei19qi{border-color:#35e0e847}.section-title.svelte-16sjsp2 .material-icons.svelte-16sjsp2{color:#35e0e8}.toggle-switch.svelte-16sjsp2 input:checked+.slider.svelte-16sjsp2{background-color:#35e0e8;color:#0b1215}.form-select.svelte-16sjsp2,.form-input.svelte-16sjsp2{border-color:#35e0e81f}.form-select.svelte-16sjsp2:focus,.form-input.svelte-16sjsp2:focus{border-color:#35e0e8}.form-select.svelte-16sjsp2 option.svelte-16sjsp2{background-color:#0b1215}.texture-upload-item.svelte-16sjsp2{border-color:#35e0e81f}.uploading-badge.svelte-16sjsp2{background-color:#35e0e8cc}.texture-image.svelte-16sjsp2,.post-item-card.svelte-10yvzvw,.post-item-card.svelte-10yvzvw:hover{border-color:#35e0e81f}.post-content-thumb.svelte-10yvzvw{background-color:#0b1215}.post-content-action.svelte-10yvzvw{color:#35e0e8}.post-follow-btn.svelte-10yvzvw{background-color:#35e0e8;color:#0b1215}.post-follow-btn.svelte-10yvzvw:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.postResRo.svelte-10yvzvw,.postResRoD.svelte-10yvzvw{border-bottom-color:#35e0e81f}.post-text.svelte-10yvzvw a{color:#35e0e8}.post-footer.svelte-10yvzvw{border-top-color:#35e0e81f}.vote-btn.svelte-10yvzvw{border-color:#35e0e81f}.vote-btn.svelte-10yvzvw:hover:not(:disabled){border-color:#35e0e847}.vote-btn.svelte-10yvzvw:disabled{border-color:#35e0e81f}.vote-btn-done.svelte-10yvzvw{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.vote-btn-done.svelte-10yvzvw:hover:not(:disabled){background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.owned-count-overlay.svelte-9ff17r{border-color:#35e0e81f}.section-title.svelte-3rvofx .material-icons.svelte-3rvofx{color:#35e0e8}.form-textarea.svelte-3rvofx{border-color:#35e0e81f}.form-textarea.svelte-3rvofx:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.automatic-attributes.svelte-3rvofx{border-color:#35e0e81f}.automatic-attributes-header.svelte-3rvofx{background-color:#35e0e81a;border-bottom-color:#35e0e81f}.automatic-attributes-title.svelte-3rvofx .material-icons.svelte-3rvofx{color:#35e0e8}.loot-updated-name.svelte-1ydnong{color:var(--highlight-color, rgb(53, 224, 232))}.popup.svelte-1wz7ymp{background-color:#151f24}.popup.translucent.svelte-1wz7ymp{background-color:#151f24bf}.popup.slim-border.svelte-1wz7ymp{border-color:#35e0e81f}.sort-select.svelte-111gya4{background-color:#151f24;border-color:#35e0e81f}.sort-select.svelte-111gya4:hover{border-color:#35e0e847}.sort-select.svelte-111gya4:focus{border-color:#35e0e8}.searching-indicator.svelte-111gya4{color:#35e0e8}.searching-indicator.svelte-111gya4:before{border-color:#35e0e8}.clan-view-root.svelte-5j94nj{background-color:#151f24}.clan-view-header-bar.svelte-5j94nj{border-bottom-color:#35e0e81f;background-color:#111b1f}.clan-view-back.svelte-5j94nj{border-color:#35e0e81f}.clan-view-header-icon.svelte-5j94nj{color:#35e0e8}.clan-view-identity.svelte-5j94nj{background-color:#111b1f;border-color:#35e0e81f}.clan-view-logo.svelte-5j94nj,.clan-view-logo-placeholder.svelte-5j94nj{background-color:#111b1f}.clan-view-info.svelte-5j94nj{border-top-color:#35e0e81f}.clan-view-link.svelte-5j94nj{color:#35e0e8}.clan-view-role-header.svelte-5j94nj{color:#35e0e8;border-bottom-color:#35e0e81f}.social-search-input.svelte-1dyc40r{background-color:#0b1215;border-color:#35e0e81f}.social-search-input.svelte-1dyc40r:focus{border-color:#35e0e8}.social-search-btn.svelte-1dyc40r{background-color:#0b1215;border-color:#35e0e81f}.social-search-btn.svelte-1dyc40r:hover{background-color:#111b1f;border-color:#35e0e81f}.social-compose-btn.svelte-1dyc40r,.social-compose-btn.svelte-1dyc40r:hover{background-color:#35e0e8;color:#0b1215}.item-detail-container.svelte-olnzsm{border-left-color:#35e0e81f}.item-detail-header.svelte-olnzsm{border-bottom-color:#35e0e81f}.item-showcase-section.svelte-olnzsm{border-right-color:#35e0e81f}.ownership-count.svelte-olnzsm,.full-details-btn.svelte-olnzsm{border-color:#35e0e81f}.tabs-section.svelte-olnzsm{border-bottom-color:#35e0e81f}.loading-spinner.svelte-olnzsm{border-color:#35e0e81f}.load-more-btn.svelte-olnzsm{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-olnzsm:hover{background-color:#35e0e84d}.load-more-btn.svelte-olnzsm:active{background-color:#35e0e866}.stats-controls.svelte-olnzsm{border-bottom-color:#35e0e81f}.days-back-select.svelte-olnzsm{border-color:#35e0e81f}.days-back-select.svelte-olnzsm:hover:not(:disabled){border-color:#35e0e81f}.days-back-select.svelte-olnzsm:focus{border-color:#35e0e8}.mission-briefing.svelte-1849bws{background-image:linear-gradient(135deg,#0b1215,#111b1f)}.mission-header.svelte-1849bws{background-image:linear-gradient(135deg,#000,#0b1215)}.abort-btn.svelte-1849bws{background-image:linear-gradient(135deg,#151f24,#1d2c32);border-color:#35e0e847}.abort-btn.svelte-1849bws:hover{background-image:linear-gradient(135deg,#1d2c32,#24343a)}.deploy-btn.svelte-1849bws{border-color:#35e0e8}th.svelte-1enb567{color:#35e0e8}td.svelte-1enb567{border-bottom-color:#35e0e81f}.page-button.svelte-1enb567{border-color:#35e0e8}.page-button.svelte-1enb567:hover:not(:disabled){background-color:#35e0e833}.page-button.svelte-1enb567:disabled{border-color:#35e0e84d}.page-indicator.svelte-1enb567{color:#35e0e8}.item-display-container.svelte-1p13km7{border-color:#35e0e81f}.section-title.svelte-sr5bk2 .material-icons.svelte-sr5bk2{color:#35e0e8}.tool-btn.svelte-sr5bk2,.attach-btn.svelte-sr5bk2{border-color:#35e0e81f}.tool-btn.active.svelte-sr5bk2{border-color:#35e0e8;background-color:#35e0e840}.fields.svelte-sr5bk2 input[type=number].svelte-sr5bk2{border-color:#35e0e81f}.wallet-root.svelte-l0gwpc{background-color:#151f24}.wallet-catalog-btn.svelte-l0gwpc{border-color:#35e0e81f}.currency-card.svelte-l0gwpc{background-image:linear-gradient(135deg,#111b1f,#182429);border-color:#35e0e81f}.items-grid.svelte-l0gwpc{background-color:#111b1f}.main-button.svelte-whnh40{background-color:#151f24;border-color:#35e0e81f}.main-button.svelte-whnh40:disabled,.main-button-disabled.svelte-whnh40{background-color:#0b1215}.main-button.svelte-whnh40:disabled:hover,.main-button-disabled.svelte-whnh40:hover{background-color:#0b1215}.main-button.svelte-whnh40:hover:not(:disabled):not(.main-button-disabled){background-color:#182429}.main-button-accept-secondary.svelte-whnh40{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.sort-btn.active.svelte-9t0md3{background-color:#35e0e833;color:#35e0e8;border-color:#35e0e8}.month-select.svelte-9t0md3 option.svelte-9t0md3{background-color:#0b1215}.section-title.svelte-1qb7o10 .material-icons.svelte-1qb7o10{color:#35e0e8}.paint-mode-btn.svelte-1qb7o10{border-color:#35e0e81f}.paint-mode-btn.svelte-1qb7o10:hover:not(:disabled){border-color:#35e0e847}.paint-mode-btn.active.svelte-1qb7o10{background-color:#35e0e826;border-color:#35e0e8;color:#35e0e8}.paint-color-input.svelte-1qb7o10{border-color:#35e0e81f}.paint-preview-base.svelte-1qb7o10{border-top-color:#35e0e81f}.preview-base-input.svelte-1qb7o10{border-color:#35e0e81f}.preview-base-input.svelte-1qb7o10:focus{border-color:#35e0e8}.preview-base-quick.svelte-1qb7o10{border-color:#35e0e81f}.preview-base-quick.svelte-1qb7o10:hover:not(:disabled){border-color:#35e0e8;color:#35e0e8}.buy-button.svelte-1ov1s5h{border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:hover:not(:disabled){border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:disabled{background-image:linear-gradient(135deg,#24343a,#1d2c32);border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:disabled:hover{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.ownership-count.svelte-kchhu3{border-color:#35e0e81f} -`});var Du,Fu=w(()=>{Du=`:root{--kute-cyan: #35e0e8;--kute-cyan-soft: rgba(53, 224, 232, .14);--kute-pink: #f5479b;--kute-pink-soft: rgba(245, 71, 155, .16);--kute-bg: #0b1215;--kute-panel: #111b1f;--kute-raised: #182429;--kute-line: rgba(53, 224, 232, .12);--kute-line-strong: rgba(53, 224, 232, .28);--kute-text: #eaf7f8;--kute-muted: rgba(234, 247, 248, .62);--kute-faint: rgba(234, 247, 248, .38);--kute-radius: 8px;--kute-radius-lg: 14px;--kute-paw: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23f5479b'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-paw-cyan: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%230b1215'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-ears: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 46 14'%3E%3Cpath fill='rgba(11,18,21,.78)' d='M1 14 9 1l8 13Zm28 0 8-13 8 13Z'/%3E%3Cpath fill='rgba(245,71,155,.7)' d='M5.5 14 9 7.5l3.5 6.5Zm28 0 3.5-6.5 3.5 6.5Z'/%3E%3C/svg%3E");--kute-paw-solid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%2335e0e8'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-grad: linear-gradient(90deg, var(--kute-cyan), var(--kute-pink));--div-black: rgba(11, 18, 21, .78);--div-grey: rgba(53, 224, 232, .07);--div-shadow: 0 2px 10px rgba(0, 0, 0, .5);--blue: var(--kute-cyan);--highlight-color: var(--kute-cyan);--highlight-hover-color: #5ce9ef;--card-bg-color: rgba(24, 36, 41, .7);--dark-bg-color: rgba(11, 18, 21, .5);--border-subtle: 1px solid var(--kute-line);--border-radius-sm: 6px;--border-radius-md: var(--kute-radius);--border-radius-lg: var(--kute-radius-lg);--box-shadow-lg: 0 18px 44px rgba(0, 0, 0, .6)}::selection{background:var(--kute-pink);color:#fff}a,a:visited{color:var(--kute-cyan)}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background-color:transparent;box-shadow:none}::-webkit-scrollbar-thumb{background:var(--kute-line-strong);border:3px solid transparent;border-radius:999px;background-clip:padding-box;box-shadow:none}::-webkit-scrollbar-thumb:hover{background-color:var(--kute-cyan)}#windowHolder.popupWin{background-color:#050a0cb8}#menuWindow.dark{background-color:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6,0 0 0 1px #0006}.settingsHeader{background-color:var(--kute-bg);border-bottom:1px solid var(--kute-line)}.setSugBox2{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);transition:background-color .15s,border-color .15s}.setSugBox2:hover{border-width:1px;background-color:var(--kute-raised);border-color:var(--kute-cyan)}.advancedSlider{background-color:#24343a;border-radius:999px}.advancedSlider:before{border-radius:50%;background:#fff var(--kute-paw) center / 20px no-repeat}input:checked+.advancedSlider{background-color:var(--kute-cyan)}input:checked+.advancedSlider:before{background-image:var(--kute-paw-cyan)}input:checked+.advancedSlider:after{color:var(--kute-bg)}.hostPresetBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px}.hostPresetBtn:hover{background-color:var(--kute-pink);color:#fff}#settingsTabLayout{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius);overflow:hidden}.settingTab{background-color:transparent;color:var(--kute-muted);border-bottom:3px solid transparent;transition:color .15s,background-color .15s}#menuWindow.dark .settingTab{color:var(--kute-muted)}.settingTab:hover{border-bottom:3px solid var(--kute-line-strong);background-color:var(--kute-cyan-soft)}#menuWindow.dark .settingTab:hover{color:var(--kute-text)}.dark .tabANew,.dark .tabANew:hover{border-bottom:3px solid var(--kute-cyan)!important;background-color:var(--kute-cyan-soft)}#menuWindow.dark .tabANew{color:var(--kute-cyan)}.setHed,.setHedS{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-left:3px solid var(--kute-cyan);border-radius:var(--kute-radius);transition:background-color .15s,border-color .15s}.setHed:hover,.setHedS:hover{background-color:#1d2c32;border-left-color:var(--kute-pink)}.setHed .plusOrMinus{color:var(--kute-cyan)}.setBodH{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.settName,.settNameSmall{border-bottom:1px solid var(--kute-line);color:var(--kute-muted)!important}.settNameIn:hover{background-color:var(--kute-cyan-soft)!important;color:var(--kute-text)!important}.settingsBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px;transition:background-color .15s,color .15s}#menuWindow.dark .settingsBtn{color:var(--kute-bg)}.settingsBtn:hover,#menuWindow.dark .settingsBtn:hover{background-color:var(--kute-pink);color:#fff}#settSearch,.inputGrey2,.sliderVal,#loadoutName,#loadoutSelect,#itemSearch{background:var(--kute-raised);color:var(--kute-text);border:1px solid var(--kute-line);border-radius:6px;outline:none;transition:border-color .15s}#settSearch:focus,.inputGrey2:focus,.sliderVal:focus,#loadoutName:focus,#loadoutSelect:focus{border-color:var(--kute-cyan)}#loadoutName{background:var(--kute-raised)!important;border:1px solid var(--kute-line)!important}.sliderVal{border-color:var(--kute-line-strong)!important}#settSearch::placeholder,#loadoutName::placeholder{color:var(--kute-faint)}.inputGrey2 option,#loadoutSelect option{background:var(--kute-panel);color:var(--kute-text)}#loadoutToolbar{background-color:var(--kute-panel);border-bottom:1px solid var(--kute-line)}.loadoutTab{background-color:transparent;transition:background-color .15s,color .15s}.loadoutTab:hover{background-color:var(--kute-cyan-soft)}.loadoutTabSel,.loadoutTabSel:hover{background-color:var(--kute-cyan-soft);border-bottom-color:var(--kute-cyan);color:var(--kute-cyan)!important}#charPreviewSlot{background:radial-gradient(circle at 50% 42%,rgba(53,224,232,.1),transparent 62%);border-right:1px solid var(--kute-line)}.custContainer,.custSubContainer{background-color:var(--kute-panel);border-color:var(--kute-line);box-shadow:none}.custContainer{border-radius:var(--kute-radius);transition:border-color .15s,background-color .15s}.custContainer.contCanSelect:hover{background-color:var(--kute-raised);border-color:var(--kute-cyan)}.custSubContainer{border-radius:0 var(--kute-radius) 0 var(--kute-radius)}.custClear{border-radius:6px}.custBack{background:var(--kute-raised);border-radius:6px}.custBack:hover{background:var(--kute-cyan-soft)}.classCard{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-radius:var(--kute-radius);overflow:hidden;transition:border-color .15s}.classCard:hover{border-color:var(--kute-cyan)}.classXPBar{background-color:var(--kute-bg)}.clsXPBarC{background-color:var(--kute-cyan)}.loadoutBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px}.loadoutBtn:hover{background-color:var(--kute-pink);color:#fff}.slider,.slider2{background-color:#24343a;border-radius:999px}.slider:before,.slider2:before{border-radius:50%;width:22px;background-color:#fff;background-image:var(--kute-paw);background-size:14px;background-position:center;background-repeat:no-repeat}.slider:before{left:5px}input:checked+.slider,input:checked+.slider2,input:checked+.sliderSml,input:checked+.sliderCent{background-color:var(--kute-cyan)}input:checked+.slider:before{transform:translate(28px);background-image:var(--kute-paw-cyan)}input:checked+.slider2:before{transform:translate(20px);background-image:var(--kute-paw-cyan)}input:focus+.slider,input:focus+.slider2,input:focus+.sliderSml{box-shadow:0 0 0 2px var(--kute-cyan-soft)}.sliderSml,.sliderCent{background-color:#24343a}.sliderM{background-color:#24343a;height:8px;border-radius:999px;margin-bottom:0}.sliderM::-webkit-slider-thumb{width:22px;height:22px;border-radius:50%;background:#fff var(--kute-paw) center / 14px no-repeat;box-shadow:0 0 0 3px var(--kute-cyan),0 2px 6px #00000080}#playerHeaderEl{background:var(--kute-grad) bottom / 100% 1px no-repeat,linear-gradient(#070c0feb,#070c0fbd)}.ph-item[class*=svelte-],.nav-item[class*=svelte-]{border-radius:12px;transition:background-color .15s}.ph-item[class*=svelte-]:hover,.nav-item[class*=svelte-]:hover{background-color:var(--kute-cyan-soft)}.nav-item[class*=svelte-] .material-icons,.nav-item[class*=svelte-] .material-icons-outlined{color:var(--kute-cyan)}#menuItemContainer .menuItem{position:relative;border-radius:10px;transition:transform .15s,background-color .15s}#menuItemContainer .menuItem:hover{background:linear-gradient(90deg,var(--kute-cyan-soft),transparent 85%);transform:translate(6px)}#menuItemContainer .menuItem:hover .menuItemTitle{color:var(--kute-cyan)}#menuItemContainer .menuItem:not(.bpItem):not(.dsItem):before{content:"";position:absolute;left:-18px;top:50%;width:14px;height:14px;background:var(--kute-paw-solid) center / contain no-repeat;opacity:0;transform:translate(-4px,-50%) rotate(-20deg);transition:opacity .15s,transform .15s;pointer-events:none}#menuItemContainer .menuItem:not(.bpItem):not(.dsItem):hover:before{opacity:1;transform:translateY(-50%) rotate(-20deg)}#menuItemContainer .menuItemIcon{color:var(--kute-cyan)}#menuItemContainer .sidebarDivider{background:linear-gradient(90deg,var(--kute-line-strong),transparent);border:0}@container not style(--kute-classic-menu: 1){#subLogoButtons>.actionCard{background:var(--kute-panel);border-color:rgba(var(--card-rgb),.45);border-radius:var(--kute-radius);box-shadow:none;transition:background-color .15s,border-color .15s}#subLogoButtons>.actionCard:hover{background:var(--kute-raised);border-color:rgb(var(--card-rgb))}#subLogoButtons>.actionCard .cardIcon{color:rgb(var(--card-rgb))}.popRailCard[class*=svelte-]{background:var(--kute-panel);border-color:var(--kute-line-strong);border-radius:var(--kute-radius);transition:background-color .15s,border-color .15s}.popRailCard[class*=svelte-]:hover{background:var(--kute-raised);border-color:var(--kute-cyan)}.popRailPlay[class*=svelte-]{color:var(--kute-cyan)}#customizeButton{border-radius:var(--kute-radius)}}.window-header[class*=svelte-],#loadoutToolbar,.profile-detail-header-bar[class*=svelte-],.instructionsHeader,.settingsHeader{background-image:var(--kute-grad);background-size:100% 1px;background-position:bottom;background-repeat:no-repeat}:is(#windowHolder,#popupHolder,#app) .button{border-radius:var(--kute-radius);background-color:#0b121599}:is(#windowHolder,#popupHolder,#app) .button:hover,:is(#windowHolder,#popupHolder,#app) .button:active{border-color:var(--kute-cyan)!important}:is(#windowHolder,#popupHolder,#app) .button:not([class*=buttonR]):not([class*=buttonG]):not([class*=buttonP]):not([class*=buttonO]):not([class*=buttonB]):not(:hover){border-color:var(--kute-line-strong)}#chatList{background-color:#0b12158c;border-radius:var(--kute-radius) var(--kute-radius) 0 0}#chatInputHolder{border-radius:0 0 var(--kute-radius) var(--kute-radius)}#chatInput{background-color:#182429cc;border:1px solid var(--kute-line);border-radius:6px}#chatInput:focus{border-color:var(--kute-cyan);outline:none}#instructionsUpdate{background:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6;overflow:hidden}.instructionsHeader,.instructionsTabs{background-color:var(--kute-panel);box-shadow:none}.instructionsHeader{border-bottom:1px solid var(--kute-line)}.instructionsTab{border-top:1px solid var(--kute-line);transition:background-color .15s,color .15s}.instructionsTab:hover{background-color:var(--kute-cyan-soft);border-color:var(--kute-line);color:var(--kute-cyan)}#ammoHolder,#bottomLeftPlayer,#timerHolder,.statIcon,#leaderboardHolder,#teamScores,#chatInputHolder{border-radius:var(--kute-radius)}#ammoHolder .greyInner,.statIcon .greyInner,#timerInner,#leaderContainer,#bottomLeftPlayerLeft,#bottomLeftPlayerRight,#bottomLeftTeamType,#bottomLeftTeamName,#bottomLeftHealthBar{border-radius:6px}#bottomLeftPlayerLeft{overflow:hidden}#ammoHolder,#bottomLeftPlayer{box-shadow:inset 0 -2px 0 var(--kute-cyan)}#bottomLeftPlayer{position:relative}#ammoHolder:before,#bottomLeftPlayer:before{content:"";position:absolute;top:-12px;width:46px;height:14px;background:var(--kute-ears) no-repeat center / contain;pointer-events:none}#ammoHolder:before{right:20px}#bottomLeftPlayer:before{left:19px}#reloadMsg{border-radius:6px}#ingameFPS,#pingText{color:var(--kute-cyan)}.bigMenTabs{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.bigMenTab:hover{border-bottom:3px solid var(--kute-line-strong)}.bigMenTabA,.bigMenTabA:hover{border-bottom:3px solid var(--kute-cyan);color:var(--kute-cyan)}#popupContent,#bundlePop,#premiumPop,#policePopC,#guidePopup,#chargeModalCard,#spinHistoryPop,.confPremiumPop,.vouchPop,.rankedPop,.promoPop,.pfpPop,.dropsPop,.accountCreatePop,.imagePop,.badgePop,.imageNewPop,.importPop,.disconnectPop,.eventPop,.bp-generic-pop,.bp-purchase-pop,.spinErrorPop,.charmErrorPop,.spinHistoryStatsPop,.loadingPop,.autoLoadPop,.editMapPop,.responsePop,.ticketPop,.dxp-pop,.abTestsPop,.registerGiftPop,.rankedQueueModal,.rankedMenuModal,.communityPopup,.tutorialPopup,.defaultModal,.krunkCupJoinModal,.krunkCupViewModal,.exchangeModal,.itemsModal,.moreKrunkerPopup,.infoPop,.contPop,.io-popup-container,.wallet-root[class*=svelte-]{background-color:var(--kute-bg);border-radius:var(--kute-radius-lg);box-shadow:0 0 0 1px var(--kute-line),0 24px 60px #000000a6}.twitchPop,.nftPop,.confPop,.clientExitPop,#confPurchItemPop,.metaPop,.polConfPop{border-color:var(--kute-line);border-radius:var(--kute-radius-lg)}.hostHeader,#stickyHostH,.imageListHeader,.imageListFooter,.spinHistoryHeader,.popHeader,.dropsPopHeader,.serverHeader,#itemSearchH,#bindsHeader,.tooltip2,.crftRcpeCrd,.bundleCrd,.bundle-card[class*=svelte-],.moreKrunkerOption[class*=svelte-],.items-grid[class*=svelte-],.filter-panel[class*=svelte-],.territory-map-container[class*=svelte-],.data-table[class*=svelte-] thead{background-color:var(--kute-panel)}#initLoader,.clsStatXPBar,.elo-progress-bar-bg{background-color:var(--kute-bg)}.featured-section[class*=svelte-],.stream-card[class*=svelte-],.emoji-panel[class*=svelte-],.verification-banner[class*=svelte-],.music-player[class*=svelte-],.market-card[class*=svelte-],.rank-popup-content{background-color:var(--kute-panel)}.hide-button[class*=svelte-],.kuteTopButton{background-color:var(--kute-raised)}.hide-button[class*=svelte-]:hover,.kuteTopButton:hover{background-color:#1d2c32}.contactsHeader{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-left:3px solid var(--kute-cyan);border-radius:var(--kute-radius)}.bpInfoBalloon,.bpInfoBalloon:after,.io-separator span{background-color:var(--kute-bg)}.bpClaimB,.bp-unlock-header,.io-button,.mapLICat,#tradeChatInput,.tradeChatItem,.main-button[class*=svelte-]{background-color:var(--kute-raised)}.io-button:hover,.mapLICat:hover,.main-button[class*=svelte-]:hover:not(:disabled):not(.main-button-disabled){background-color:#1d2c32}.main-button[class*=svelte-],.moreKrunkerOption[class*=svelte-],.territory-map-container[class*=svelte-],.territory-details-panel[class*=svelte-],.inventory-filter[class*=svelte-],.filter-item-wrapper[class*=svelte-]{border-color:var(--kute-line)}.moreKrunkerOption[class*=svelte-]:hover{border-color:var(--kute-cyan)}.inventory-filter[class*=svelte-],.filter-header[class*=svelte-]{background-color:var(--kute-panel)}.currency-card[class*=svelte-]{background:var(--kute-panel);border-color:var(--kute-line)}.search-input[class*=svelte-],.season-select[class*=svelte-],.sort-select[class*=svelte-],.category-select[class*=svelte-],.filter-tab[class*=svelte-],.filter-item[class*=svelte-]:hover,.reset-btn[class*=svelte-],.expand-btn[class*=svelte-],.toggle-all-btn[class*=svelte-],.only-btn[class*=svelte-]{background:var(--kute-raised);border-color:var(--kute-line)}.filter-tab[class*=svelte-]:hover,.reset-btn[class*=svelte-]:hover,.expand-btn[class*=svelte-]:hover,.toggle-all-btn[class*=svelte-]:hover,.only-btn[class*=svelte-]:hover{background:#1d2c32}.filter-tab.active[class*=svelte-]{background:var(--kute-cyan);color:var(--kute-bg)}.setSugBox,.viewAllUpdates,.bSliderBtn,.bundleSliderBtn,.dropsSliderBtn,.challHeadrI,.sub-tab-panel[class*=svelte-]{border-color:var(--kute-line-strong)}.challMapCrd:not(.chalCardH){border-color:var(--kute-line-strong)}.guideHeader,.guideSubH,.mailFrom,.speedRunItem,#hostActionH,#custStreakSelH{border-color:var(--kute-line)}.store-tabs[class*=svelte-],.tabs-container[class*=svelte-],#menuWindow.eterno .store-tabs[class*=svelte-]{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.store-tab[class*=svelte-]:hover,.tab[class*=svelte-]:hover{border-bottom-color:var(--kute-line-strong)}.store-tab-active[class*=svelte-],.store-tab-active[class*=svelte-]:hover,.tab-active[class*=svelte-],.tab-active[class*=svelte-]:hover,.tabHeader.selected{border-bottom-color:var(--kute-cyan);color:var(--kute-cyan)}#menuWindow.eterno{background-color:var(--kute-bg);border-color:var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6;animation:none}.followBut,#hostMenuBtn,.chargeModalBtn,.redVouchBtn,.searchBtn,.hostToggle,.subPassChg,.updDisN,#partnerProgB,#partnrUpBtn,#findGameBtn,.joinBtn,.openCollection,#spinMultiToggleBtn,.clanSubmitBtn,.main-button-accept-secondary[class*=svelte-]{background-color:var(--kute-cyan);border-color:var(--kute-cyan);color:var(--kute-bg)}input:checked+.optCheck{background-color:var(--kute-cyan)}.quickJoin,.followBack,.io-input-field:focus{border-color:var(--kute-cyan)}.io-section-header:after{background:var(--kute-cyan)}.counterBadge[class*=svelte-]{background:var(--kute-pink);color:#fff}.wallet-catalog-btn[class*=svelte-] i{color:var(--kute-cyan)}.stack-collapse-fab[class*=svelte-]{background:var(--kute-cyan)}.card-title[class*=svelte-],.view-title[class*=svelte-],.table-header[class*=svelte-],.no-clan-title[class*=svelte-],.no-participation-title[class*=svelte-],.clan-benefits[class*=svelte-] h3,.clan-benefits[class*=svelte-] li:before,.eligible-maps[class*=svelte-] h3,.day-label[class*=svelte-],.day-arrow[class*=svelte-],.view-all-btn[class*=svelte-]{color:var(--kute-cyan)}.section-title[class*=svelte-]{border-left-color:var(--kute-cyan);color:var(--kute-cyan)}.category-card[class*=svelte-],.map-filter-select[class*=svelte-],.day-arrow[class*=svelte-],.day-input[class*=svelte-],.data-table[class*=svelte-] thead tr{border-color:var(--kute-line-strong)}.category-card[class*=svelte-]:hover,.map-filter-select[class*=svelte-]:hover,.map-filter-select[class*=svelte-]:focus,.day-input[class*=svelte-]:focus{border-color:var(--kute-cyan)}.table-header.sortable.sort-asc[class*=svelte-]:after{border-bottom-color:var(--kute-cyan)}.table-header.sortable.sort-desc[class*=svelte-]:after{border-top-color:var(--kute-cyan)}.table-header.sortable[class*=svelte-]:hover,.data-table[class*=svelte-] tbody tr.clickable:hover,.data-table[class*=svelte-] tbody tr.highlight-row,.day-arrow[class*=svelte-]:hover:not(:disabled),.day-map[class*=svelte-],.eligible-maps[class*=svelte-] li,.view-all-btn[class*=svelte-],.page-btn[class*=svelte-],.view-tab.active[class*=svelte-]{background:var(--kute-cyan-soft);border-color:var(--kute-line-strong)}:is(#popupHolder,#app) .socialModal{background-color:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6}:is(#popupHolder,#app) .social-content{border-radius:var(--kute-radius-lg)}:is(#popupHolder,#app) .window-header{background:var(--kute-panel);border-bottom:1px solid var(--kute-line)}:is(#popupHolder,#app) .window-header-icon{color:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab{background:var(--kute-panel);transition:background-color .15s}:is(#popupHolder,#app) .sidebar-tab:hover{background:var(--kute-raised)}:is(#popupHolder,#app) .sidebar-tab:hover .sidebar-tab-icon,:is(#popupHolder,#app) .sidebar-tab:hover .sidebar-tab-label{color:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab.active{background:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab.active .sidebar-tab-icon,:is(#popupHolder,#app) .sidebar-tab.active .sidebar-tab-label{color:var(--kute-bg)}:is(#popupHolder,#app) .simple-tabs{border-bottom-color:var(--kute-line)}:is(#popupHolder,#app) .simple-tab-active{border-bottom-color:var(--kute-cyan)}:is(#popupHolder,#app) .simple-tab-active .simple-tab-icon,:is(#popupHolder,#app) .simple-tab-active .simple-tab-label{color:var(--kute-cyan)}:is(#popupHolder,#app) .social-search-input,:is(#popupHolder,#app) .social-search-btn,:is(#popupHolder,#app) .profile-search-form,:is(#popupHolder,#app) .conversation-input,:is(#popupHolder,#app) .conversation-emoji-button{background:var(--kute-raised);border-color:var(--kute-line);border-radius:6px}:is(#popupHolder,#app) .social-search-input:focus,:is(#popupHolder,#app) .profile-search-form:focus-within,:is(#popupHolder,#app) .conversation-input:focus{border-color:var(--kute-cyan)}:is(#popupHolder,#app) .social-search-btn:hover,:is(#popupHolder,#app) .conversation-emoji-button:hover:not(:disabled){background:#1d2c32;border-color:var(--kute-line-strong);color:var(--kute-cyan)}:is(#popupHolder,#app) .social-compose-btn,:is(#popupHolder,#app) .post-follow-btn,:is(#popupHolder,#app) .conversation-send-button{background:var(--kute-cyan);border-radius:6px;transition:background-color .15s}:is(#popupHolder,#app) .social-compose-btn:hover,:is(#popupHolder,#app) .post-follow-btn:hover:not(:disabled),:is(#popupHolder,#app) .conversation-send-button:hover:not(:disabled){background:var(--kute-pink)}:is(#popupHolder,#app) .social-compose-icon,:is(#popupHolder,#app) .social-compose-label,:is(#popupHolder,#app) .post-follow-btn i,:is(#popupHolder,#app) .conversation-send-button{color:var(--kute-bg)}:is(#popupHolder,#app) .conversation-send-button:disabled{background:#24343a;color:var(--kute-faint)}:is(#popupHolder,#app) .post-card{background:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .post-card-clickable:hover{background:var(--kute-raised)}:is(#popupHolder,#app) .post-item-card{background:#18242999;border-color:var(--kute-line);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .post-item-card:hover{background:var(--kute-raised);border-color:var(--kute-cyan)}:is(#popupHolder,#app) .postGameRes{background-color:var(--kute-bg);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .postResRo,:is(#popupHolder,#app) .postResRoD{border-bottom-color:var(--kute-line)}:is(#popupHolder,#app) .post-content-action{color:var(--kute-cyan)}:is(#popupHolder,#app) .vote-btn,:is(#popupHolder,#app) .share-btn{background:var(--kute-raised);border-color:var(--kute-line)}:is(#popupHolder,#app) .vote-btn:hover:not(:disabled),:is(#popupHolder,#app) .share-btn:hover{background:#1d2c32;border-color:var(--kute-line-strong)}:is(#popupHolder,#app) .comment-btn:hover{background:var(--kute-cyan-soft)}:is(#popupHolder,#app) .vote-btn-done,:is(#popupHolder,#app) .vote-btn-done:hover:not(:disabled){background:var(--kute-cyan);border-color:var(--kute-cyan)}:is(#popupHolder,#app) .vote-btn-done .vote-btn-icon,:is(#popupHolder,#app) .vote-btn-done .vote-btn-label,:is(#popupHolder,#app) .vote-btn-done .vote-btn-count{color:var(--kute-bg)}:is(#popupHolder,#app) .friends-root,:is(#popupHolder,#app) .conversation-root{background:var(--kute-bg)}:is(#popupHolder,#app) .friend-list{background:var(--kute-panel);border-right:1px solid var(--kute-line)}:is(#popupHolder,#app) .friend-item:hover{background:#35e0e80f}:is(#popupHolder,#app) .friend-item.selected{background:var(--kute-cyan-soft);border-left-color:var(--kute-cyan)}:is(#popupHolder,#app) .friend-presence-dot{border-color:var(--kute-panel)}:is(#popupHolder,#app) .friend-unread{background:var(--kute-pink);color:#fff}:is(#popupHolder,#app) .friend-list-search{background:var(--kute-raised);border-top:1px solid var(--kute-line)}:is(#popupHolder,#app) .conversation-header,:is(#popupHolder,#app) .conversation-compose{background:var(--kute-panel);border-color:var(--kute-line)}:is(#popupHolder,#app) .conversation-presence-dot{border-color:var(--kute-panel)}:is(#popupHolder,#app) .conversation-load-earlier{background:var(--kute-raised);border-color:var(--kute-line)}:is(#popupHolder,#app) .conversation-day-divider:before,:is(#popupHolder,#app) .conversation-day-divider:after{background:var(--kute-line)}:is(#popupHolder,#app) .bubble-row.sent .bubble{background:var(--kute-cyan)}:is(#popupHolder,#app) .bubble-row.sent .bubble,:is(#popupHolder,#app) .bubble-row.sent .bubble-time,:is(#popupHolder,#app) .bubble-row.sent .bubble-status-ok{color:var(--kute-bg)}:is(#popupHolder,#app) .bubble-row.received .bubble{background:var(--kute-raised)}#app .profile-detail-root{background:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6}#app .profile-detail-header-bar{background:var(--kute-panel);border-bottom-color:var(--kute-line)}#app .profile-detail-header-icon,#app .profile-detail-section-header,#app .profile-detail-sales-header{color:var(--kute-cyan)}#app .profile-detail-back,#app .profile-detail-action,#app .profile-detail-range-btn{background:var(--kute-raised);border-color:var(--kute-line)}#app .profile-detail-back:hover,#app .profile-detail-action:hover:not(:disabled){background:#1d2c32}#app .profile-detail-action.active,#app .profile-detail-action.active i{background:var(--kute-cyan-soft);border-color:var(--kute-line-strong);color:var(--kute-cyan)}#app .profile-detail-range-btn.active{background:var(--kute-cyan);border-color:var(--kute-cyan);color:var(--kute-bg)}#app .profile-detail-identity,#app .profile-detail-sales-panel,#app .profile-detail-badges-panel,#app .profile-detail-creations-panel{background:var(--kute-panel);border-color:var(--kute-line);border-radius:var(--kute-radius)}#app .profile-detail-avatar{background:var(--kute-raised);border-color:var(--kute-line-strong)}#app .profile-detail-online-dot{border-color:var(--kute-panel)}#app .profile-detail-follow-box,#app .profile-detail-title-item,#app .profile-detail-badge-item{background:var(--kute-raised)}#app .profile-detail-follow-box:hover{background:#1d2c32;border-color:var(--kute-line-strong)}#app .profile-detail-stat,#app .profile-detail-class,#app .profile-detail-raid-row,#app .profile-detail-listing-card,#app .profile-detail-creation-card{background:var(--kute-panel);border-color:var(--kute-line);border-radius:var(--kute-radius)}#app .profile-detail-listing-card:hover,#app .profile-detail-creation-card:hover{background:var(--kute-raised)}#app .profile-detail-level-badge,#app .profile-detail-xp-fill{background:var(--kute-cyan)}#app .profile-detail-level-badge{color:var(--kute-bg)}#app .profile-detail-xp-bar{background:var(--kute-raised)} -`});var ti={};A(ti,{default:()=>Ib});var Pb,ei,Ib,oi=w(()=>{"use strict";F();Hu();Fu();Pb=Ou+Du,ei=class{constructor(){this.sheet=null,d.settings.toggleKuteCss=e=>this.toggle(e),this.toggle(!0)}toggle(e){if(!e){this.sheet?.replaceSync("");return}this.sheet||(this.sheet=new CSSStyleSheet,document.adoptedStyleSheets=[this.sheet,...document.adoptedStyleSheets]),this.sheet.replaceSync(Pb)}},Ib=new ei});var li={};A(li,{setFrameEnd:()=>Tn,takeFrameWorkMs:()=>ii});function ii(){if(ns.length<10)return 0;let s=ns.sort((t,o)=>t-o);ns=[];let e=s.slice(0,Math.ceil(s.length*.9));return e.reduce((t,o)=>t+o,0)/e.length}function Ob(s){return function(e){e!==qu&&(qu=e,Gu++>0&&(Wu=performance.now(),Vu.port2.postMessage(0))),s(e)}}function Fb(s,e){Po<0&&(Po=e),rs++;let t=e-Po;if(ts*_b?is+1:0,is>=2&&d.frameLimiter!=="viz"&&(as=!0),rs=0,Po=e}function Yu(){!as||!Mn?.hardFlip||(as=!1,rs=0,is=0,Po=-1)}function Db(s){let e;for(s>200?e=1e3/(s*1.0055):e=1e3/s;performance.now()e?En=t+e:En+=e}function qb(s){Cn=s,ai?.(s)}function Xu(s){if(ai!==null&&!ri)return Kb(s);let e=Mn===null?0:Mn.gameFpsLimit;if(!(e>0)){si=0;let o=++Hb%Bb;return o>=zb?$n(s):(o===0&&(Gu=0),$n(Ob(s)))}let t=Number(e);return $n(function(o){t!==si&&(si=t,as=!1,rs=0,is=0,Po=-1),o!==Ku&&(Ku=o,as?Db(t):Fb(t,o)),s(o)})}function Kb(s){ri=!0;let e=Xu(t=>{Cn=t,s(t)});return ri=!1,ju===Cn&&Uu(ni),ju=Cn,ni=$n(qb),e}function Tn(s){ai=s,s===null&&Uu(ni)}var $n,Uu,Nb,_b,Mn,Bb,zb,Hb,Gu,qu,Wu,ns,Vu,En,Ku,si,as,Po,rs,is,ai,ni,Cn,ju,ri,ls=w(()=>{"use strict";F();$n=window.requestAnimationFrame,Uu=window.cancelAnimationFrame,Nb=2e3,_b=1.15,Mn=null,Bb=256,zb=12,Hb=0,Gu=0,qu=-1,Wu=0,ns=[],Vu=new MessageChannel;Vu.port1.onmessage=()=>{ns.length<512&&ns.push(performance.now()-Wu)};Ne.then(()=>{Mn=d.settings.data});En=0,Ku=-1,si=0,as=!1,Po=-1,rs=0,is=0;document.addEventListener("pointerlockchange",Yu);window.addEventListener("resize",Yu);ai=null,ni=0,Cn=-1,ju=-2,ri=!1;window.requestAnimationFrame=Xu});var An=we((Xx,jb)=>{jb.exports="data:image/webp;base64,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"});var di={};A(di,{default:()=>Ub});var Ju,ci,Ub,ui=w(()=>{"use strict";Ju=ue(An(),1),ci=class{constructor(){if(!document.querySelector("#mainMenuUIMount"))return;let e=document.createElement("style");e.id="kute_logoBadgeCSS",e.textContent=` +void main() { outColor = texture(uLabel, vUv); }`;Gr=new Float32Array(4096),Mu=0});var Au={};A(Au,{FrameRecorder:()=>to,InputProbe:()=>os,TaskProbe:()=>oo});var to,os,oo,yn=w(()=>{"use strict";to=class{constructor(e=12e4){this.samples=new Float32Array(e),this.count=0,this.stored=0,this.last=-1,this.first=-1}frame(e){this.last>=0&&(this.count++,this.storedt[Math.min(t.length-1,Math.floor(h*t.length))],r=n(.5),i=Math.max(4*r,e),a=0,l=0,c=0;for(let h of t)a+=h,h>i&&(l++,c+=h-r);let d=Math.max(.001,a/1e3);return{frames:this.count,seconds:o,fps:this.count/o,meanMs:a/this.stored,p50:r,p95:n(.95),p99:n(.99),p999:n(.999),maxMs:t[t.length-1],hitches:l,hitchesPerSec:l/d,stallMs:c/d}}},os=class{constructor(){this.waits=new Float32Array(16384),this.events=0,this.packets=0,this.onMove=e=>{if(document.pointerLockElement===null)return;let t=e.getCoalescedEvents(),o=t.length>0?t[0].timeStamp:e.timeStamp;this.waits[this.events%this.waits.length]=performance.now()-o,this.events++,this.packets+=Math.max(1,t.length)}}start(){this.events=0,this.packets=0,window.addEventListener("pointermove",this.onMove,{capture:!0,passive:!0})}stop(){window.removeEventListener("pointermove",this.onMove,!0);let e=Math.min(this.events,this.waits.length),t=this.waits.slice(0,e).sort();return{events:this.events,packets:this.packets,p99:e>0?t[Math.min(e-1,Math.floor(e*.99))]:null,max:e>0?t[e-1]:null}}},oo=class{constructor(){this.delays=[],this.timer=0,this.sent=0,this.channel=new MessageChannel,this.channel.port1.onmessage=e=>{this.delays.push(performance.now()-e.data)}}start(){this.delays=[],this.sent=0;let e=performance.now()+10;this.timer=setInterval(()=>{this.sent++;let t=performance.now();this.channel.port2.postMessage(Math.min(t,e)),e=t+10},10)}stop(){clearInterval(this.timer);let e=[...this.delays].sort((t,o)=>t-o);return{sent:this.sent,ran:e.length,p99:e.length?e[Math.min(e.length-1,Math.floor(e.length*.99))]:null,max:e.length?e[e.length-1]:null}}}});var Iu={};function Ze(s,e){let t=Number(xn.get(s));return xn.has(s)&&Number.isFinite(t)?t:e}function Jr(s){window.chrome.webview.postMessage(`bench-finish ${JSON.stringify(s)}`)}function Eb(){let s=document.createElement("canvas");s.style.cssText="position:fixed;inset:0;width:100vw;height:100vh;display:block",document.body.append(s);let e=Lu>0?["Kute is testing this PC",`client test ${kb} of ${Lu}`,"this takes a moment, nothing to do for you"]:[],t=Wr(s,Ru,e);t.resize(window.innerWidth*devicePixelRatio,window.innerHeight*devicePixelRatio);let o=Xr.length>0?Array.from({length:Math.max(1,yb)},()=>Xr).flat():[null],n=[],r=0,i=performance.now(),a=null,l=new oo,c=Ze("cap",0),d=i,h=0,p=!1;s.addEventListener("webglcontextlost",()=>{p=!0});let m=g=>{i=g,a=null;let b=o[r];b!==null&&(c=Sb?b:0,d=g,window.chrome.webview.postMessage(`bench-cap ${b}`))};m(i);let f=g=>{if(c>0){for(;performance.now()0&&t.lost()){h===0&&Jr({ok:!1,error:"webgl context lost"}),t.destroy();return}if(t.render(g),h>0){b-h=v&&(a=new to,r===0&&window.chrome.webview.postMessage("bench-sample-start"),l.start()),a!==null&&(a.frame(b),b-i>=v+vb&&(n.push({cap:o[r]??c,stats:a.stats(wb),otherTasks:l.stop()}),r++,r0?n:void 0,load:Ru,width:s.width,height:s.height,checksum:Vr()})))),requestAnimationFrame(f)};requestAnimationFrame(f)}function Pu(){try{Eb()}catch(s){Jr({ok:!1,error:String(s)})}}var xn,gb,bb,vb,wb,kb,Lu,Xr,yb,xb,Sb,Ru,Zr=w(()=>{"use strict";Yr();yn();xn=new URLSearchParams(location.search);gb=400,bb=Ze("settle",700),vb=Ze("ms",2e3),wb=1e3/Ze("hz",60),kb=Ze("step",0),Lu=Ze("steps",0),Xr=(xn.get("caps")??"").split(".").filter(s=>s!=="").map(Number).filter(Number.isFinite),yb=Ze("rounds",1),xb=Ze("capsettle",700),Sb=xn.get("selfcap")==="1",Ru={draws:Ze("draws",eo.draws),meshSegments:eo.meshSegments,overdraw:Ze("overdraw",eo.overdraw),cpuIterations:Ze("cpu",eo.cpuIterations)};document.body?Pu():document.addEventListener("DOMContentLoaded",Pu,{once:!0})});var _u,Nu=w(()=>{_u=`#guidePopup{background-color:#182429}.guideHeader,.guideSubH{border-bottom-color:#35e0e81f}.guStepS:not(:last-child){border-bottom-color:#35e0e81f}a,a:active,a:visited{color:#35e0e8}#purchaseSelector{background-color:#111b1f}.roundScrV{border-bottom-color:#35e0e847}#reloadMsg,#interactMsg,#mobileUI #interactMsg{border-color:#35e0e847}#instructionsUpdate{background-color:#151f24}.instructionsHeader,.instructionsTabs{background-color:#070c0f}.endTablePfp{border-color:#35e0e847}th,tr{border-bottom-color:#35e0e81f}.followBut{background-color:#35e0e8;color:#0b1215}.lds-ring div{border-color:#35e0e847;border-color:rgba(53,224,232,.28) transparent transparent transparent}#spinItemName{background-image:linear-gradient(to right,#0000,#070c0fb3 40%,#070c0fe6 60%,#0000)}.spinPrevIcon,.spinSprayDiv,#spinPromo,.compClassPItm,.compPLstIcn,.compSwpTmB,.compMenBtnS,.compPlWpIcn{border-color:#35e0e847}.hostHeader{background-color:#070c0f}#bigMFeatHBtn{border-color:#35e0e847}#bigMFeatHBtn:hover,#bigMFeatHBtn:active,#bigMFeatPBtn:hover,#bigMFeatPBtn:active{border-color:#35e0e847!important}.biMFeatInfB{border-color:#35e0e847}.biMFeatInfB:hover{border-color:#35e0e847!important}.mapLICat{background-color:#151f24}.hostPresetBtn,#hostMenuBtn{background-color:#35e0e8;color:#0b1215}.serverHostOp{border-color:#35e0e81f}.hostCBtn{border-color:#35e0e847}#hostActionH{border-top-color:#35e0e847}#stickyHostH{background-color:#070c0f}.loadoutBtn{background-color:#35e0e8;color:#0b1215}#loadoutToolbar{background-color:#111b1f;border-bottom-color:#35e0e81f}.loadoutTab{background-color:#182429}.loadoutTab:hover{background-color:#1d2c32}.loadoutTabSel{background-color:#24343a}#charPreviewSlot{border-right-color:#35e0e81f}#menuWindow.eterno .bigMenTabs{background-color:#111b1fad}.quickJoin{border-color:#35e0e8}.settText{color:#35e0e8}.contactsHeader,.setHed{border-color:#35e0e81f;background-color:#1d2c32}.setHed:hover{background-color:#182429}.setHedS{border-color:#35e0e81f;background-color:#1d2c32}.settName,.settNameSmall{border-bottom-color:#35e0e81f}input:checked+.sliderSml{background-color:#35e0e8;color:#0b1215}input:focus+.sliderSml{box-shadow:0 0 1px #35e0e8}input:checked+.slider{background-color:#35e0e8;color:#0b1215}input:focus+.slider{box-shadow:0 0 1px #35e0e8}.sliderVal{border-color:#35e0e847!important}#modDropper{border-color:#35e0e81f}#profilePicM{background-color:#24343a}.mailFrom{color:#35e0e8;border-bottom-color:#35e0e847}.followFrom{color:#35e0e8}#mailCount{border-color:#35e0e81f}#policePopC{background-color:#151f24}.classXPBar{background-color:#111b1f}.clsXPBarC{background-color:#35e0e8;color:#0b1215}.skinPaintSwatch{border-color:#35e0e847}.sb1:before{border-left-color:#35e0e847;border-top-color:#35e0e847}.skinColorItem,.matchVote{border-color:#35e0e81f}.hostMap,#mobileJoystick .back,#mobileJoystick .front{border-color:#35e0e847}#chargeModalCard{background-color:#111b1f}.chargeModalBtn{background-color:#35e0e8;color:#0b1215}.settingsHeader,.serverHeader{background-color:#151f24}.setSugBox2,.setSugBox2:hover,.setSugBox,.setSugBox:hover{border-color:#35e0e847}.settingsBtn{background-color:#35e0e8;color:#0b1215}.settingTab:hover{border-bottom-color:#35e0e81f}.redVouchBtn,.searchBtn{background-color:#35e0e8;color:#0b1215}.challMapCrd,.challHeadrI{border-color:#35e0e847}.chalCard{background-color:#151f24}.chalRews{border-left-color:#35e0e847}.chalRewSkn{border-color:#35e0e847}.changeText{border-bottom-color:#35e0e81f}.crftRcpeCrd{background-color:#070c0f}.craftRcIcn,.crftRecSml,.crftItmReq{border-color:#35e0e847}.crftTim{background-color:#151f24}.hostToggle{background-color:#35e0e8;color:#0b1215}.titleRowLocked{border-bottom-color:#35e0e81f}input:checked+.optCheck{background-color:#35e0e8;color:#0b1215}.subPassChg,.subPassChg:hover,.updDisN,.updDisN:hover,.lnkTw:hover{background-color:#35e0e8;color:#0b1215}#popupContent{background-color:#151f24}.twitchPop,.nftPop,.confPop,.clientExitPop,#confPurchItemPop{border-color:#35e0e847}#bundlePop,#premiumPop{background-color:#151f24}.metaPop{border-color:#35e0e847}.confPremiumPop,.vouchPop{background-color:#151f24}.polConfPop{border-color:#35e0e847}.rankedPop,.promoPop{background-color:#151f24}.tListN.inv{background-color:#35e0e8;color:#0b1215}.tItemHolder,.dItemHolder,.tCurrencyItem{border-color:#35e0e847}.bigMenTab:hover,.bigMenTabA,.bigMenTabA:hover{border-bottom-color:#35e0e847}.dark .menuTabNew:hover{border-bottom-color:#35e0e81f!important}.dark .tabANew,.dark .tabANew:hover{border-bottom-color:#35e0e847!important}input:checked+.slider2{background-color:#35e0e8;color:#0b1215}input:focus+.slider2{box-shadow:0 0 1px #35e0e8}.tabHeader:hover{border-bottom-color:#35e0e847}#kdLayout,.crStat{border-color:#35e0e81f}.keyIcon{border-left-color:#35e0e81f;border-right-color:#35e0e81f;border-top-color:#35e0e847;border-bottom-color:#35e0e81f}.pfpPop,.dropsPop{background-color:#151f24}.accountCreatePop{background-color:#151f24;border-color:#35e0e847}#pubPfp{background-color:#35e0e8;color:#0b1215}#tradeChatInput,.tradeChatItem{background-color:#111b1f}#partnerProgB{background-color:#35e0e8;color:#0b1215}#partnrUpBtn{background-color:#35e0e8;border-bottom-color:#35e0e8;color:#0b1215}#partnrUpBtn:hover,#partnrUpBtn:active{border-bottom-color:#35e0e8}#partnrUpBtnD,#partnrUpBtnD:hover,#partnrUpBtnD:active{border-bottom-color:#35e0e847}.editLink{color:#35e0e8}.speedRunItem{border-bottom-color:#35e0e81f}#speedRunInfo{border-bottom-color:#35e0e847}#shopMainSellB{border-color:#35e0e847}.custBack:hover{background-color:#24343a85}#itemSearchH{background-color:#151f24}.skinReward{border-color:#35e0e847}.selectedItem{border-color:#35e0e847!important}.custContainer{border-color:#35e0e847}.custSubContainer{border-left-color:#35e0e847;border-bottom-color:#35e0e847}#findGameBtn{background-color:#35e0e8;color:#0b1215}#clanDeclineAll:hover,.logVersionHed,.viewAllUpdates,.viewAllUpdates:hover{border-color:#35e0e847}.followBack{border-color:#35e0e8!important}.followBack:hover{border-color:#35e0e847!important}.joinBtn{background-color:#35e0e8;color:#0b1215}.imagePop,.badgePop,.imageNewPop{background-color:#151f24}.openCollection{background-color:#35e0e8!important;color:#0b1215}.imageListHeader,.imageListFooter{background-color:#070c0f}.importPop,#bindsHeader,.disconnectPop{background-color:#151f24}.tooltip{background-color:#24343a}.tooltip2{background-color:#070c0f}.imageTab:hover{border-bottom-color:#35e0e81f}.tabAIMG,.tabAIMG:hover{border-bottom-color:#35e0e847}input:checked+.advancedSlider{background-color:#35e0e8;color:#0b1215}input:focus+.advancedSlider{box-shadow:0 0 1px #35e0e8}.quickPlayMap{border-color:#35e0e847}#custStreakSelH{border-top-color:#35e0e81f}.winSelH{background-color:#24343a}#spinHistoryBtn{border-color:#35e0e847}#spinHistoryBtn:hover{border-color:#35e0e847!important}#spinMultiToggleBtn{background-color:#35e0e8!important;box-shadow:inset 0 -7px #35e0e8!important;border-color:#35e0e847;color:#0b1215}#spinMultiToggleBtn:hover{border-color:#35e0e847!important}#spinHistoryPop{background-color:#151f24}.spinHistoryHeader{background-color:#070c0f}.clsStatXPBar{background-color:#0b1215}.eventPop{background-color:#151f24}.eventPopHeader,.bSliderBtn,.bSliderBtn:hover,.bSliderBtn:active{border-color:#35e0e847}.bSliderBtn.disabled{border-color:#35e0e81f}.bpLevelNum.completed{background-color:#24343a}.bpLevelNum.active{border-color:#35e0e847}.bpCard,.bpCard.free{border-color:#35e0e81f}.bpCard.free.completed,.bpCard.free.completed.claimed{border-color:#35e0e847}.bpCardSlot{border-color:#35e0e81f}.bpSliderArrow{border-right-color:#35e0e847}.bpInfoBalloon{background-color:#151f24}.bpInfoBalloon:after{background-color:#151f24}.bpClaimB{border-color:#35e0e847;background-color:#151f24}.bp-unlock-header{background-color:#151f24}.bp-generic-pop,.bp-purchase-pop{background-color:#151f24;border-color:#35e0e847}.clanSubmitBtn,.clanSubmitBtn:hover{background-color:#35e0e8;color:#0b1215}.spinErrorPop{background-color:#151f24}.popHeader,.dropsPopHeader{background-color:#070c0f}.charmErrorPop,.spinHistoryStatsPop{background-color:#151f24}#kpdCalls>* td,#kpdCalls>* th{border-bottom-color:#35e0e81f}.loadingPop,.autoLoadPop,.editMapPop,.responsePop{background-color:#151f24}.infoPop,.contPop{background-color:#1d2c32}.ticketPop{background-color:#151f24}.bundleCrd{background-color:#070c0f}.bundleItmReq,.bundleSliderBtn,.bundleSliderBtn:hover,.bundleSliderBtn:active,.bundleSliderBtn.disabled{border-color:#35e0e847}.bundleSliderArrow{border-right-color:#35e0e847}.dxp-pop{background-color:#151f24;border-color:#35e0e847}.dropsSliderBtn,.dropsSliderBtn:hover,.dropsSliderBtn:active,.dropsSliderBtn.disabled{border-color:#35e0e847}.dropsSliderArrow{border-right-color:#35e0e847}.rewItemHolder{border-color:#35e0e847}.abTestsPop{background-color:#151f24}.registerGiftPop{background-color:#151f24;border-color:#35e0e847}.rankedQueueModal{background-color:#151f24;border-color:#35e0e8;box-shadow:0 0 160px #35e0e875}.rankedMenuModal,.communityPopup,.tutorialPopup,.defaultModal,.krunkCupJoinModal,.krunkCupViewModal,.exchangeModal,.itemsModal,.socialModal,.moreKrunkerPopup{background-color:#151f24}.io-button{background-color:#151f24;border-color:#35e0e81f}.io-button:hover{background-color:#182429}.io-button--accept-secondary{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.io-input-field{border-color:#35e0e81f}.io-input-field:focus{border-color:#35e0e8}.io-popup-container{background-color:#111b1f}.io-section-header:after{background-color:#35e0e8;color:#0b1215}.io-card{border-color:#35e0e81f}.io-separator{border-bottom-color:#35e0e81f}.io-separator span{background-color:#111b1f}.strike-timer__info-holder,.strike-timer__timer-bg{background-color:#151f24}.bundle-popup-lmt-offer{background-color:#24343a}.ltm-offer-container__arrow{border-right-color:#35e0e847}.file-drop-target.svelte-145grbc{border-color:#35e0e81f}.file-drop-target.svelte-145grbc:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.file-drop-target.hovered.svelte-145grbc{border-color:#35e0e847}.file-drop-target.drag-over.svelte-145grbc{border-color:#35e0e8;background-color:#35e0e81a}.code-input.svelte-1xwmszg{border-color:#35e0e81f}.code-input.svelte-1xwmszg:focus{border-color:#35e0e8}.qr-code-image.svelte-1xwmszg,.slider-input.svelte-1xwmszg{border-color:#35e0e81f}.slider-input.svelte-1xwmszg::-webkit-slider-thumb{background-image:linear-gradient(145deg,#35e0e8,#3a7dce);border-color:#35e0e847}.slider-input.svelte-1xwmszg::-webkit-slider-runnable-track{background-image:linear-gradient(to right,#245d99,#35e0e8)}.slider-display.svelte-1xwmszg{color:#35e0e8}.info-message.svelte-1xwmszg{border-color:#35e0e8}.password-requirements.svelte-1xwmszg,.motd-input.svelte-15d5v89{border-color:#35e0e81f}.motd-input.svelte-15d5v89:focus{border-color:#35e0e81f}.motd-display.svelte-15d5v89{border-left-color:#35e0e81f}.item-showcase-container.svelte-2tp35a{background-color:#151f24bf}.more-info-btn.svelte-2tp35a,.more-info-btn.svelte-2tp35a:hover,.share-btn.svelte-2tp35a{border-color:#35e0e81f}.md-root.svelte-1kkpw01{background-color:#151f24}.md-header.svelte-1kkpw01{border-bottom-color:#35e0e81f;background-color:#111b1f}.md-back.svelte-1kkpw01{border-color:#35e0e81f}.md-header-icon.svelte-1kkpw01{color:#35e0e8}.md-thumb.svelte-1kkpw01{background-color:#0b1215}.md-info-bar.svelte-1kkpw01{border-bottom-color:#35e0e81f}.md-creator.svelte-1kkpw01{color:#35e0e8}.md-host-btn.svelte-1kkpw01,.md-icon-btn.svelte-1kkpw01{border-color:#35e0e81f}.md-tabs.svelte-1kkpw01{border-bottom-color:#35e0e81f}.md-tab.active.svelte-1kkpw01{color:#35e0e8;border-bottom-color:#35e0e8}.md-lb-name.svelte-1kkpw01{color:#35e0e8}.md-load-more.svelte-1kkpw01{border-color:#35e0e81f}.md-data-section-title.svelte-1kkpw01{color:#35e0e8;border-top-color:#35e0e81f}.md-data-table.svelte-1kkpw01{background-color:#111b1f;border-color:#35e0e81f}.md-data-table-row.svelte-1kkpw01{border-top-color:#35e0e81f}.md-data-header.svelte-1kkpw01{background-color:#111b1f;border-color:#35e0e81f}.md-data-search-btn.svelte-1kkpw01{border-color:#35e0e81f}.md-data-input.svelte-1kkpw01{background-color:#0b1215;border-color:#35e0e81f}.md-data-input.svelte-1kkpw01:focus{border-color:#35e0e8}.md-ver-row.svelte-1kkpw01{border-top-color:#35e0e81f}.md-ver-btn.svelte-1kkpw01{border-color:#35e0e81f}.mod-root.svelte-1v2j2f2{background-color:#151f24}.mod-header.svelte-1v2j2f2{border-bottom-color:#35e0e81f;background-color:#111b1f}.mod-back.svelte-1v2j2f2{border-color:#35e0e81f}.mod-header-icon.svelte-1v2j2f2{color:#35e0e8}.mod-thumb.svelte-1v2j2f2{background-color:#0b1215}.mod-info-bar.svelte-1v2j2f2{border-bottom-color:#35e0e81f}.mod-creator.svelte-1v2j2f2{color:#35e0e8}.mod-use-btn.svelte-1v2j2f2,.mod-use-btn.svelte-1v2j2f2:hover{background-color:#35e0e8;color:#0b1215}.mod-icon-btn.svelte-1v2j2f2{border-color:#35e0e81f}.style-container.svelte-143xo7r{background-color:#151f24bf}.slider-arrow.svelte-143xo7r{border-color:#35e0e81f}.slider-arrow.left.svelte-143xo7r .slider-arrow-icon.svelte-143xo7r{border-right-color:#35e0e847}.slider-arrow.right.svelte-143xo7r .slider-arrow-icon.svelte-143xo7r{border-left-color:#35e0e847}.swatch.svelte-143xo7r,.btn.svelte-143xo7r{border-color:#35e0e81f}.market-card.svelte-r5taai{background-color:#070c0fcc}.trade-label.inv.svelte-1lqen9w{background-color:#35e0e8;color:#0b1215}.trade-inv-item.svelte-1lqen9w{border-color:#35e0e847}.trade-search.svelte-1lqen9w{border-color:#35e0e81f}.trade-search.svelte-1lqen9w:focus{border-color:#35e0e81f}.gift-root.svelte-g5j1wf{background-color:#151f24}.gift-header.svelte-g5j1wf{border-bottom-color:#35e0e81f;background-color:#111b1f}.gift-back.svelte-g5j1wf{border-color:#35e0e81f}.gift-header-icon.svelte-g5j1wf{color:#35e0e8}.gift-input.svelte-g5j1wf{background-color:#0b1215;border-color:#35e0e81f}.gift-input.svelte-g5j1wf:focus{border-color:#35e0e8}.gift-send.svelte-g5j1wf{background-color:#35e0e8;color:#0b1215}.gift-done.svelte-g5j1wf{border-color:#35e0e81f}.buy-button.svelte-r01l8m:disabled{background-color:#24343a}.buy-button.svelte-r01l8m:disabled:hover{background-color:#24343a}.shop-header.svelte-1gtpoav{border-bottom-color:#35e0e81f}.rp-balance.svelte-1gtpoav,.guest-earned-collect__reward-items.svelte-1hb83uo,.guest-earned-collect__register-btn.svelte-1hb83uo,.guest-earned-collect__register-btn.svelte-1hb83uo:hover{border-color:#35e0e81f}.signup-rewards-list.svelte-1v6b0qm{background-color:#070c0fb3}.signup-rewards-register-button.svelte-1v6b0qm{border-color:#35e0e847!important}.product-row.svelte-14104bb{border-color:#35e0e81f}.product-row.svelte-14104bb:hover{border-color:#35e0e847}.gift-button.svelte-14104bb,.for-you-text.svelte-14104bb,.currency-shop-item.svelte-14104bb,.currency-shop-item.svelte-14104bb:hover{border-color:#35e0e81f}.verification-banner.svelte-165vbjp{background-color:#151f24cc}.spinner.svelte-165vbjp{border-color:#35e0e81f;border-top-color:#35e0e847}.section-title.svelte-e65miw .material-icons.svelte-e65miw{color:#35e0e8}.toggle-switch.svelte-e65miw input:checked+.slider.svelte-e65miw{background-color:#35e0e8;color:#0b1215}.texture-upload-item.svelte-e65miw,.texture-image.svelte-e65miw{border-color:#35e0e81f}.btn-generate.svelte-e65miw{background-color:#35e0e8;color:#0b1215}.btn-generate.svelte-e65miw:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.sgNum.svelte-1i1uhp7,.sgHex.svelte-1i1uhp7{border-color:#35e0e81f}.sgNum.svelte-1i1uhp7:focus,.sgHex.svelte-1i1uhp7:focus{border-color:#35e0e8}.sgSlider.svelte-1i1uhp7::-webkit-slider-thumb{background-color:#35e0e8;color:#0b1215}.sgSlider.svelte-1i1uhp7:focus-visible{outline-color:#35e0e8}.sgColorInput.svelte-1i1uhp7{border-color:#35e0e81f}.sgColorInput.svelte-1i1uhp7:focus-visible{outline-color:#35e0e8}.sgPalette.svelte-sxvv3c{background-color:#0b1215fa;border-color:#35e0e81f}.sgPaletteSearch.svelte-sxvv3c{border-color:#35e0e81f}.sgPaletteSearch.svelte-sxvv3c:focus{border-color:#35e0e8}.sgPaletteItem.active.svelte-sxvv3c,.sgPaletteItem.svelte-sxvv3c:focus-visible{background-color:#35e0e840}.sgEditor.svelte-upgo13{border-color:#35e0e81f}.sgToolbar.svelte-upgo13{border-bottom-color:#35e0e81f}.sgBtn.svelte-upgo13{border-color:#35e0e81f}.sgBtn.svelte-upgo13:focus-visible,.sgCanvas.svelte-upgo13:focus-visible,.sgErrorItem.svelte-upgo13:focus-visible,.sgMenuItem.svelte-upgo13:focus-visible{outline-color:#35e0e8}.sgBtnPrimary.svelte-upgo13{background-color:#35e0e840;border-color:#35e0e899;color:#35e0e8}.sgBtnPrimary.svelte-upgo13:hover:not(:disabled){background-color:#35e0e866}.sgMenu.svelte-upgo13{background-color:#0b1215fa;border-color:#35e0e81f}.sgMenuItem.svelte-upgo13:hover{background-color:#35e0e840}.sgCanvas.svelte-upgo13{background-color:#070c0fe6}.sgOverlay.svelte-upgo13{background-color:#070c0ffa;border-color:#35e0e81f}.sgIoText.svelte-upgo13{border-color:#35e0e81f}.sgIoText.svelte-upgo13:focus{border-color:#35e0e8}.sgFooter.svelte-upgo13{border-top-color:#35e0e81f}.io-action-bar-button.svelte-103lu6x{background-color:#35e0e8;color:#0b1215}.search-input.svelte-103lu6x{border-color:#35e0e81f}.search-input.svelte-103lu6x:focus{border-color:#35e0e8}.io-action-bar-button.svelte-103lu6x:hover,.action-btn.test-btn.svelte-103lu6x,.action-btn.test-btn.svelte-103lu6x:hover{background-color:#35e0e8;color:#0b1215}.skin-manager-table.svelte-103lu6x .table thead th{background-color:#0b1215}.tab-navigation.svelte-103lu6x{border-bottom-color:#35e0e81f}.tab-button.active.svelte-103lu6x{color:#35e0e8;background-color:#35e0e81a}.tab-button.active.svelte-103lu6x:after{background-color:#35e0e8;color:#0b1215}.preview-control-btn.svelte-103lu6x{border-color:#35e0e81f}.preview-control-btn.active.svelte-103lu6x{background-color:#35e0e84d;border-color:#35e0e8}.paint-select.svelte-103lu6x{border-color:#35e0e81f}.paint-select.svelte-103lu6x option.svelte-103lu6x{background-color:#0b1215}.connection.svelte-1fenhdo{background-color:#182429}.consequences.svelte-18wpngg{border-color:#35e0e81f}.loading-spinner.svelte-190e6fj{border-color:#35e0e81f;border-top-color:#35e0e847}.retry-button.svelte-190e6fj{background-color:#35e0e8;color:#0b1215}.benefits-card.svelte-190e6fj,.billing-info.svelte-190e6fj,.subscribe-btn.svelte-190e6fj{border-color:#35e0e81f}.subscribe-btn.svelte-190e6fj:hover{border-color:#35e0e847}.disabled-card.svelte-190e6fj .subscribe-btn.svelte-190e6fj{background-image:linear-gradient(135deg,#24343a,#1d2c32);border-color:#35e0e81f}.disabled-card.svelte-190e6fj .subscribe-btn.svelte-190e6fj:hover,.disabled-indicator.svelte-190e6fj{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.subscribed-btn.svelte-190e6fj{border-color:#35e0e81f}.renew-btn.svelte-190e6fj{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);border-color:#35e0e81f;box-shadow:0 8px 24px #35e0e866,0 4px 8px #0000004d,inset 0 1px #ffffff4d}.renew-btn.svelte-190e6fj:hover{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);box-shadow:0 12px 32px #35e0e880,0 6px 12px #0006,inset 0 1px #fff6;border-color:#35e0e847}.cancel-container.svelte-190e6fj,.cancel-btn.svelte-190e6fj,.cancel-btn.svelte-190e6fj:hover{border-color:#35e0e81f}.wild-offer-notification.svelte-1gcqcwy{background-image:linear-gradient(135deg,#000000f2,#070c0ffa)}.shop-btn.svelte-1gcqcwy,.shop-btn.svelte-1gcqcwy:hover,.player-bound-display.svelte-1nzacef,.player-bound-display.svelte-1nzacef:hover,.login-button.svelte-1nzacef,.login-button.svelte-1nzacef:hover{border-color:#35e0e81f}.data-table.svelte-69sryq thead.svelte-69sryq{background-color:#0b1215}.table-header.svelte-69sryq{color:#35e0e8}.table-header.sortable.svelte-69sryq:hover{background-color:#35e0e81a}.table-header.sortable.sort-asc.svelte-69sryq:after{border-bottom-color:#35e0e8}.table-header.sortable.sort-desc.svelte-69sryq:after{border-top-color:#35e0e8}.table-cell.svelte-69sryq{border-bottom-color:#35e0e81f}.qs-window.svelte-1o11rsf{background-color:#111b1f;border-color:#35e0e81f}.qs-item-preview.svelte-1o11rsf,.qs-values.svelte-1o11rsf,.qs-amount-select.svelte-1o11rsf{border-color:#35e0e81f}.qs-amount-select.svelte-1o11rsf:focus{border-color:#35e0e88c}.jy-filter-bar.svelte-1vqzycn{background-color:#111b1f;border-color:#35e0e81f}.jy-search-input.svelte-1vqzycn,.jy-sort-select.svelte-1vqzycn{background-color:#151f24;border-color:#35e0e81f}.sd-root.svelte-a9j4oe{background-color:#151f24}.sd-header.svelte-a9j4oe{border-bottom-color:#35e0e81f;background-color:#111b1f}.sd-back.svelte-a9j4oe{border-color:#35e0e81f}.sd-header-icon.svelte-a9j4oe{color:#35e0e8}.sd-del.svelte-a9j4oe{border-color:#35e0e81f}.sd-tabs.svelte-a9j4oe{border-bottom-color:#35e0e81f}.sd-tab.active.svelte-a9j4oe{color:#35e0e8;border-bottom-color:#35e0e8}.sd-row.svelte-a9j4oe{background-color:#111b1f;border-color:#35e0e81f}.sd-input.svelte-a9j4oe{background-color:#0b1215;border-color:#35e0e81f}.sd-input.svelte-a9j4oe:focus{border-color:#35e0e8}.sd-primary.svelte-a9j4oe{background-color:#35e0e8;color:#0b1215}.sd-mini.svelte-a9j4oe{border-color:#35e0e81f}.sd-kr.svelte-a9j4oe{background-color:#111b1f}.region-btn.svelte-1gdnqq5{border-color:#35e0e81f}.region-btn.active.svelte-1gdnqq5{background-color:#35e0e826;border-color:#35e0e880;color:#35e0e8}.season-select.svelte-1gdnqq5{border-color:#35e0e81f}.season-select.svelte-1gdnqq5 option.svelte-1gdnqq5{background-color:#0b1215}th.svelte-1gdnqq5{color:#35e0e8}td.svelte-1gdnqq5{border-bottom-color:#35e0e81f}.season-select.svelte-81ueoe{border-color:#35e0e81f}.season-select.svelte-81ueoe option.svelte-81ueoe{background-color:#0b1215}.kc-title.svelte-1xp8pv1{color:#35e0e8}.back-btn.svelte-1xp8pv1{border-color:#35e0e84d}.back-btn.svelte-1xp8pv1:hover{background-color:#35e0e81f;color:#35e0e8}.friend-list.svelte-e2g8p2{background-color:#111b1f;border-right-color:#35e0e81f}.friend-presence-dot.svelte-e2g8p2{border-color:#35e0e81f}.friend-presence-dot.offline.svelte-e2g8p2{background-color:#24343a}.friend-unread.svelte-e2g8p2{background-color:#35e0e8;color:#0b1215}.friend-list-search.svelte-e2g8p2{background-color:#111b1f;border-top-color:#35e0e81f}.conversation-root.svelte-128yn5i{background-color:#151f24}.conversation-header.svelte-128yn5i{border-bottom-color:#35e0e81f;background-color:#111b1f}.conversation-presence-dot.svelte-128yn5i{border-color:#35e0e81f}.conversation-presence-dot.offline.svelte-128yn5i{background-color:#24343a}.conversation-compose.svelte-128yn5i{border-top-color:#35e0e81f;background-color:#111b1f}.conversation-load-earlier.svelte-128yn5i{border-color:#35e0e81f}.conversation-input.svelte-128yn5i{background-color:#0b1215;border-color:#35e0e81f}.conversation-input.svelte-128yn5i:focus{border-color:#35e0e8}.conversation-emoji-button.svelte-128yn5i{background-color:#0b1215;border-color:#35e0e81f}.conversation-emoji-button.svelte-128yn5i:hover:not(:disabled){background-color:#111b1f;color:#35e0e8}.conversation-send-button.svelte-128yn5i{background-color:#35e0e8;color:#0b1215}.conversation-send-button.svelte-128yn5i:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.conversation-send-button.svelte-128yn5i:disabled{background-color:#1d2c32}.friends-root.svelte-u33r8v{background-color:#151f24}.friends-status-dot.svelte-u33r8v{background-color:#24343a}.player-card.svelte-dp3rf9{background-color:#0b1215cc;border-color:#35e0e81f}.player-card.svelte-dp3rf9:hover{background-color:#111b1fcc}.player-card.svelte-dp3rf9:focus-visible{outline-color:#35e0e847}.counterBadge.svelte-fgmdj8{background-color:#35e0e8;color:#0b1215}.territory-map-container.svelte-102279m{background-color:#111b1f;border-color:#35e0e81f}.territory-details-panel.svelte-102279m{border-color:#35e0e81f}.panel-header.svelte-102279m,.leaderboard-entry.svelte-102279m{border-bottom-color:#35e0e81f}.clickable-name.svelte-myp8tq:hover{color:var(--highlight-color, rgb(53, 224, 232))}.view-tab.svelte-myp8tq{border-color:#35e0e81f}.view-tab.active.svelte-myp8tq{background-color:#35e0e833;border-color:#35e0e866}.day-arrow.svelte-myp8tq,.day-input.svelte-myp8tq{border-color:#35e0e81f}.payouts-row.svelte-myp8tq,.payouts-row-header.svelte-myp8tq{border-bottom-color:#35e0e81f}.main-title.svelte-1sr7h97,.card-title.svelte-1sr7h97{color:#35e0e8}.map-badge.svelte-1sr7h97,.mode-badge.svelte-1sr7h97{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.section-title.svelte-1sr7h97{color:#35e0e8;border-left-color:#35e0e8}.rule-icon.svelte-1sr7h97,.tip-title.svelte-1sr7h97{color:#35e0e8}.filter-input.svelte-72bcy3{border-color:#35e0e84d}.filter-input.svelte-72bcy3:focus{border-color:#35e0e8}.post-card.svelte-72bcy3{border-color:#35e0e81f}.looking-for-label.svelte-72bcy3{color:#35e0e8}.req-badge.svelte-72bcy3{border-color:#35e0e81f}.player-clan.clickable-clan.svelte-7h12t9:hover{color:var(--highlight-color, rgb(53, 224, 232))}.tab-bar.svelte-7h12t9{border-bottom-color:#35e0e81f}.tab.active.svelte-7h12t9{border-bottom-color:var(--highlight-color, rgb(53, 224, 232))}.day-arrow.svelte-7h12t9,.day-input.svelte-7h12t9{border-color:#35e0e81f}.page-btn.svelte-7h12t9{background-color:#35e0e833;border-color:#35e0e866}.ct-row.svelte-7h12t9,.ct-header.svelte-7h12t9{border-bottom-color:#35e0e81f}.clickable-name.svelte-7h12t9:hover{color:var(--highlight-color, rgb(53, 224, 232))}.rank-display.svelte-19e82s0{border-color:#35e0e81f}.popup-box.svelte-6dkuug{background-color:#151f24}.moreKrunkerOption.svelte-19783yx{border-color:#35e0e847;background-color:#0b1215}.moreKrunkerOption.svelte-19783yx:hover{border-color:#35e0e847}.emoji-panel.svelte-13g6jqo{background-color:#151f24}.emoji-icon.svelte-13g6jqo{color:#35e0e8}.emoji-item.selected.svelte-13g6jqo,.emoji-item.svelte-13g6jqo:hover{border-color:#35e0e81f}.compose-window.svelte-qxxay9{background-color:#0b1215;border-color:#35e0e81f}.compose-input.svelte-qxxay9{border-color:#35e0e81f}.compose-input.svelte-qxxay9:focus{border-color:#35e0e899}.compose-input-num.svelte-qxxay9{border-color:#35e0e81f}.compose-btn-submit.svelte-qxxay9{background-color:#35e0e8;color:#0b1215}.compose-btn-submit.svelte-qxxay9:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.rewards-container.svelte-1sac6ik{border-color:#35e0e81f}.reward-card.flying.svelte-1sac6ik:after{border-color:#35e0e81f}.card-front.svelte-1sac6ik,.card-back.svelte-1sac6ik{background-color:#070c0fe6}.loading-spinner.svelte-172kpk5{border-color:#35e0e81f;border-top-color:#35e0e8}.socialsStickyFooter.svelte-1ley7u4{border-top-color:#35e0e81f}.pollBadge.svelte-1ley7u4,.pollVote.svelte-1ley7u4{background-color:#35e0e8;color:#0b1215}.eventLink.svelte-1ley7u4{color:#35e0e8;background-color:#35e0e81a}.eventLink.svelte-1ley7u4:hover{background-color:#35e0e833}.dm-emoji-panel.svelte-1ni3kfh{background-color:#151f24;border-color:#35e0e81f}.dm-emoji-header.svelte-1ni3kfh{border-bottom-color:#35e0e81f}.dm-emoji-header-icon.svelte-1ni3kfh{color:#35e0e8}.dm-emoji-thumb.svelte-1ni3kfh{background-color:#0b1215;border-color:#35e0e81f}.sub-tab-panel.svelte-lri212{border-color:#35e0e847}.bundle-card.svelte-lri212{background-color:#070c0f}.bundle-item-req.svelte-lri212{border-color:#35e0e847}.detail-window.svelte-h3kymj{background-color:#0b1215;border-color:#35e0e81f}.detail-head.svelte-h3kymj{border-bottom-color:#35e0e81f}.reply-input.svelte-h3kymj{border-color:#35e0e81f}.reply-input.svelte-h3kymj:focus{border-color:#35e0e880}.reply-btn.svelte-h3kymj{background-color:#35e0e8;color:#0b1215}.map-filter-select.svelte-c92dbh{border-color:#35e0e866}.map-filter-select.svelte-c92dbh:hover{border-color:#35e0e8}.map-filter-select.svelte-c92dbh:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.section-title.svelte-c92dbh{color:#35e0e8;border-left-color:#35e0e8}.day-arrow.svelte-c92dbh{border-color:#35e0e866;color:#35e0e8}.day-arrow.svelte-c92dbh:hover:not(:disabled){background-color:#35e0e833;border-color:#35e0e8}.day-input.svelte-c92dbh{border-color:#35e0e866}.day-input.svelte-c92dbh:focus{border-color:#35e0e8}.no-participation-title.svelte-c92dbh{color:#35e0e8}.page-btn.svelte-c92dbh{background-color:#35e0e833;border-color:#35e0e866}.overlay-content.svelte-jxc66d{background-color:#070c0f;border-color:#35e0e81f}.streams-overlay.svelte-60shhe{border-color:#35e0e81f}.hide-button.svelte-60shhe{background-color:#182429}.hide-button.svelte-60shhe:hover{background-color:#1d2c32}.spinner.svelte-60shhe{border-color:#35e0e81f}.featured-section.svelte-60shhe{background-color:#070c0fe6}.stream-card.svelte-60shhe{background-color:#0b1215cc;border-color:#35e0e81f}.thumbnail.svelte-60shhe{background-color:#0b1215}.thumbnail.svelte-60shhe:before{background-color:#0b1215}.tutorialSidebar.svelte-los391{background-image:linear-gradient(180deg,#111b1ff2,#0b1215f2)}.tutorialSidebar.svelte-los391:before{background-image:linear-gradient(180deg,rgba(17,27,31,.95) 0%,transparent 100%)}.tutorialSidebar.svelte-los391:after{background-image:linear-gradient(0deg,rgba(11,18,21,.95) 0%,transparent 100%)}.tutorialNavItem.svelte-los391{border-bottom-color:#35e0e81f}.matchmakingBarImage.svelte-los391,.inviteFriendsURLImage.svelte-los391,.spinsImage.svelte-los391,.matchmakingBarQuickMatchImage.svelte-los391,.hostFindGameImage.svelte-los391,.hostGameSetupImage.svelte-los391,.challengesImage.svelte-los391,.rankedImage.svelte-los391,.clanCreateImage.svelte-los391,.clanManageImage.svelte-los391,.tradingImage.svelte-los391,.challengeModeImage.svelte-los391,.challengeModeDifferenceImage.svelte-los391{border-color:#35e0e81f}.comment-text.svelte-7miv1g a{color:#35e0e8}.guide-section.svelte-4log2q{background-color:#070c0f}.guide-section-title.svelte-4log2q .material-icons.svelte-4log2q{color:#35e0e8}.guide-key.svelte-4log2q{background-color:#111b1f;border-color:#35e0e81f}.guide-rarity.dark.svelte-4log2q{border-color:#35e0e81f}.match-details.svelte-1irqx9a{border-top-color:#35e0e81f}.table-header.svelte-1irqx9a,.table-cell.svelte-1irqx9a{border-bottom-color:#35e0e81f}.page-btn.svelte-1irqx9a{border-color:#35e0e81f}.page-btn.svelte-1irqx9a:hover:not([disabled]){border-color:#35e0e81f}.currency-reward.svelte-1yk8fym,.gift-button.svelte-rew7ag{border-color:#35e0e81f}.modal-content.svelte-1pf0608{background-color:#111b1f;border-color:#35e0e81f}.price-input.svelte-1pf0608,.fee-breakdown.svelte-1pf0608{border-color:#35e0e81f}.season-banner.svelte-17kea4i{background-color:#35e0e8;color:#0b1215}.challenges-link-icon.svelte-17kea4i,.section-title.svelte-1x46pbz .material-icons.svelte-1x46pbz{color:#35e0e8}.param-chip.svelte-1x46pbz{border-color:#35e0e81f}.add-uniform-btn.svelte-1x46pbz{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.add-uniform-btn.svelte-1x46pbz:hover{background-color:#35e0e84d}.part-block.svelte-1x46pbz,.part-name-input.svelte-1x46pbz{border-color:#35e0e81f}.copy-defaults-btn.svelte-1x46pbz{background-color:#35e0e826;border-color:#35e0e84d;color:#35e0e8}.copy-defaults-btn.svelte-1x46pbz:hover:not(:disabled){background-color:#35e0e84d}.apply-btn.svelte-1x46pbz,.apply-btn.svelte-1x46pbz:hover{background-color:#35e0e8;color:#0b1215}.clear-btn.svelte-1x46pbz{border-color:#35e0e81f}.ph-xp-fill.svelte-da3zva{background-image:linear-gradient(to right,#ff6a0b,#35e0e8)}.survey-notification.svelte-1u0qxrf{background-image:linear-gradient(135deg,#000000f2,#070c0ffa)}.answer-btn.svelte-1u0qxrf{border-color:#35e0e81f}.icon-btn.list.svelte-hk8nq9{background-color:#35e0e8;color:#0b1215}.card-title.svelte-1k16b2z,.view-title.svelte-1k16b2z{color:#35e0e8}.trade-item.svelte-z9tzua,.trade-item-empty.svelte-z9tzua{border-color:#35e0e81f}.bm-card.svelte-dbcods{background-color:#070c0f}.bm-card-icon.svelte-dbcods{border-color:#35e0e847}.bm-locked-btn.svelte-dbcods{background-color:#111b1f}.modal-content.svelte-dbcods{background-color:#111b1f;border-color:#35e0e81f}.price-row.total.svelte-dbcods{border-top-color:#35e0e81f}.sma-dialog.svelte-1veg8cv{background-color:#151f24}.sma-header.svelte-1veg8cv{background-color:#111b1f;border-bottom-color:#35e0e81f}.sma-header-icon.svelte-1veg8cv{color:#35e0e8}.sma-rules.svelte-1veg8cv{background-color:#111b1f;border-color:#35e0e81f}.sma-input.svelte-1veg8cv{background-color:#0b1215;border-color:#35e0e81f}.sma-input.svelte-1veg8cv:focus{border-color:#35e0e8}.sma-map.svelte-1veg8cv{border-color:#35e0e81f}.sma-map.active.svelte-1veg8cv{border-color:#35e0e8;color:#35e0e8}.sma-footer.svelte-1veg8cv{border-top-color:#35e0e81f;background-color:#111b1f}.sma-secondary.svelte-1veg8cv{border-color:#35e0e81f}.sma-primary.svelte-1veg8cv{background-color:#35e0e8;color:#0b1215}.usernames-col.svelte-27udiy{border-color:#35e0e81f}.col-header.svelte-27udiy{border-bottom-color:#35e0e81f}.username-row.svelte-27udiy{border-color:#35e0e81f}.username-row.active.svelte-27udiy{border-color:#35e0e8}.leave-note.svelte-27udiy{border-left-color:#35e0e8}.username-active.svelte-27udiy{color:#35e0e8}#menuWindow.eterno .store-tabs.svelte-v85byk{background-color:#111b1fad}.store-tab.svelte-v85byk:hover,.store-tab-active.svelte-v85byk,.store-tab-active.svelte-v85byk:hover{border-bottom-color:#35e0e847}.register-notification.svelte-t1w66d{background-image:linear-gradient(135deg,#000000e6,#070c0ff2)}.table.svelte-12kndpz th.svelte-12kndpz,.table.svelte-12kndpz td.svelte-12kndpz{border-bottom-color:#35e0e81f}.pagination.svelte-12kndpz{border-top-color:#35e0e81f}.pagination-btn.svelte-12kndpz{background-color:#35e0e8;color:#0b1215}.pagination-btn.svelte-12kndpz:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.loading-spinner.svelte-1tteuk0{border-color:#35e0e81f}.load-more-btn.svelte-1tteuk0{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-1tteuk0:hover{background-color:#35e0e84d}.load-more-btn.svelte-1tteuk0:active{background-color:#35e0e866}.modal-content.svelte-1k428dj{background-color:#111b1f;border-color:#35e0e81f}.st-root.svelte-kqehnu{background-color:#151f24}.st-header.svelte-kqehnu{border-bottom-color:#35e0e81f;background-color:#111b1f}.st-back.svelte-kqehnu{border-color:#35e0e81f}.st-header-icon.svelte-kqehnu{color:#35e0e8}.st-row.svelte-kqehnu{background-color:#111b1f;border-color:#35e0e81f}.st-row.svelte-kqehnu:hover{background-color:#151f24}.st-invite.svelte-kqehnu:hover{background-color:#111b1f}.st-mini.svelte-kqehnu{border-color:#35e0e81f}.st-section-title.svelte-kqehnu{color:#35e0e8;border-top-color:#35e0e81f}.st-input.svelte-kqehnu{background-color:#0b1215;border-color:#35e0e81f}.st-input.svelte-kqehnu:focus{border-color:#35e0e8}.st-primary.svelte-kqehnu{background-color:#35e0e8;color:#0b1215}.card-title.svelte-raovk7,.view-title.svelte-raovk7{color:#35e0e8}.profile-detail-root.svelte-1hghrmf{background-color:#151f24}.profile-detail-header-bar.svelte-1hghrmf{border-bottom-color:#35e0e81f;background-color:#111b1f}.profile-detail-back.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-header-icon.svelte-1hghrmf{color:#35e0e8}.profile-detail-identity.svelte-1hghrmf,.profile-detail-avatar.svelte-1hghrmf{background-color:#111b1f;border-color:#35e0e81f}.profile-detail-online-dot.svelte-1hghrmf{background-color:#24343a;border-color:#35e0e81f}.profile-detail-creation-thumb.svelte-1hghrmf{background-color:#0b1215}.profile-detail-clan.svelte-1hghrmf{color:#35e0e8}.profile-detail-info-row.svelte-1hghrmf{border-top-color:#35e0e81f}.profile-detail-follow-box.svelte-1hghrmf{background-color:#111b1f}.profile-detail-follow-box.svelte-1hghrmf:hover{background-color:#151f24}.profile-detail-action.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-action.active.svelte-1hghrmf{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.profile-detail-action.active.svelte-1hghrmf i.svelte-1hghrmf{color:#35e0e8}.profile-detail-xp-strip.svelte-1hghrmf{border-top-color:#35e0e81f}.profile-detail-level-badge.svelte-1hghrmf,.profile-detail-xp-fill.svelte-1hghrmf{background-color:#35e0e8;color:#0b1215}.profile-detail-stat.svelte-1hghrmf,.profile-detail-class.svelte-1hghrmf,.profile-detail-raid-row.svelte-1hghrmf{background-color:#0b1215;border-color:#35e0e81f}.profile-detail-sales-panel.svelte-1hghrmf,.profile-detail-badges-panel.svelte-1hghrmf,.profile-detail-creations-panel.svelte-1hghrmf{background-color:#111b1f;border-color:#35e0e81f}.profile-detail-section-header.svelte-1hghrmf,.profile-detail-sales-header.svelte-1hghrmf{color:#35e0e8}.profile-detail-range-btn.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-range-btn.active.svelte-1hghrmf{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.profile-detail-listing-card.svelte-1hghrmf{background-color:#0b1215}.profile-detail-listing-card.svelte-1hghrmf:hover{background-color:#111b1f}.profile-detail-listing-thumb.svelte-1hghrmf{background-color:#070c0f}.profile-detail-title-item.svelte-1hghrmf,.profile-detail-badge-item.svelte-1hghrmf{background-color:#111b1f}.profile-detail-creation-card.svelte-1hghrmf{background-color:#0b1215}.profile-detail-creation-card.svelte-1hghrmf:hover{background-color:#111b1f}.modal-content.svelte-1ugt6n9{background-color:#111b1f;border-color:#35e0e81f}.section-title.svelte-awmvtb .material-icons.svelte-awmvtb{color:#35e0e8}.sound-info.svelte-awmvtb{border-color:#35e0e81f}.btn-replace.svelte-awmvtb{background-color:#35e0e8cc}.btn-replace.svelte-awmvtb:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.item-preview.svelte-1lii2o,.kid-display-container.svelte-lbi007{border-color:#35e0e81f}.kid-display-benefits.svelte-lbi007 h3.svelte-lbi007:after{background-color:#35e0e8;color:#0b1215}.partnership-info.svelte-lbi007{background-color:#35e0e81a;border-left-color:#35e0e8}.sgNode.svelte-wbsbny{background-color:#0b1215f5;border-color:#35e0e81f}.sgNode.selected.svelte-wbsbny{border-color:#35e0e8;box-shadow:0 0 0 1px #35e0e8,0 2px 10px #00000073}.sgNode.isOutput.svelte-wbsbny .sgNodeHeader.svelte-wbsbny{background-color:#35e0e840}.sgNodeHeader.svelte-wbsbny{border-bottom-color:#35e0e81f}.sgSelect.svelte-wbsbny,.sgText.svelte-wbsbny{border-color:#35e0e81f}.sgSelect.svelte-wbsbny option.svelte-wbsbny{background-color:#0b1215}.sgSelect.svelte-wbsbny:focus,.sgText.svelte-wbsbny:focus{border-color:#35e0e8}.sgCheck.svelte-wbsbny:focus-visible{outline-color:#35e0e8}.sgUnset.svelte-wbsbny{border-color:#35e0e81f}.sgUnset.svelte-wbsbny:hover:not(:disabled){border-color:#35e0e847}.sgUnset.svelte-wbsbny:focus-visible{outline-color:#35e0e8}.simple-tabs.svelte-1oqd18e{border-bottom-color:#35e0e81f}.simple-tab-active.svelte-1oqd18e{border-bottom-color:#35e0e8}.simple-tab-active.svelte-1oqd18e .simple-tab-icon.svelte-1oqd18e,.simple-tab-active.svelte-1oqd18e .simple-tab-label.svelte-1oqd18e{color:#35e0e8}.load-more-button.svelte-23mnz9{background-color:#35e0e833;border-color:#35e0e880;color:#35e0e8}.load-more-button.svelte-23mnz9:hover{background-color:#35e0e84d}.loading-spinner.svelte-gh77t9{border-color:#35e0e81f;border-top-color:#35e0e847}.retry-button.svelte-gh77t9{background-color:#35e0e8;color:#0b1215}.filter-input.svelte-1rpti7l{border-color:#35e0e84d}.filter-input.svelte-1rpti7l:focus{border-color:#35e0e8}.spin-promo-badge.svelte-5s5opu{border-color:#35e0e847}.no-offer-container.svelte-m5s1iy{background-color:#070c0fcc}.refresh-button.svelte-m5s1iy{background-image:linear-gradient(135deg,#ff5722,#ff9800,#35e0e8);border-color:#35e0e81f}.refresh-button.svelte-m5s1iy:hover:not(:disabled){border-color:#35e0e847}.optin__hero-fade.svelte-ga1m1g{background-image:linear-gradient(to top,#070c0ff2,#14141400 45%)}.report-root.svelte-18p16wl{background-color:#151f24}.report-header.svelte-18p16wl{border-bottom-color:#35e0e81f;background-color:#111b1f}.report-back.svelte-18p16wl{border-color:#35e0e81f}.report-input.svelte-18p16wl{background-color:#0b1215;border-color:#35e0e81f}.report-done.svelte-18p16wl{border-color:#35e0e81f}.trade-window.svelte-kfskmv{background-color:#151f24}.trade-message.svelte-kfskmv{border-color:#35e0e81f}.trade-message.svelte-kfskmv:focus{border-color:#35e0e81f}.trade-submit.disabled.svelte-kfskmv{background-color:#1d2c32}.profile-header.svelte-18dbnt3{border-bottom-color:#35e0e81f}.dynamic-shop-item.svelte-dif8c,.dynamic-shop-item.svelte-dif8c:hover,.dynamic-row.svelte-dif8c{border-color:#35e0e81f}.dynamic-row.svelte-dif8c:hover{border-color:#35e0e847}.next-step-hint.svelte-dif8c{color:#35e0e8}.dyn-buy-button.svelte-dif8c{border-color:#35e0e81f}.dyn-buy-button.virtual.svelte-dif8c{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);box-shadow:0 4px 12px #35e0e84d,0 2px 4px #0003,inset 0 1px #fff3}.dyn-buy-button.svelte-dif8c:hover:not(:disabled){border-color:#35e0e81f}.dyn-buy-button.svelte-dif8c:disabled{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.craft-recipe-card.svelte-ggnigm{background-color:#070c0f}.craft-icon.svelte-ggnigm,.craft-item-req.svelte-ggnigm{border-color:#35e0e847}.craft-item-req.missing.svelte-ggnigm{border-color:#35e0e847!important}.craft-timer.svelte-ggnigm{background-color:#151f24}.item-wrapper.selected.svelte-18k2d4k{box-shadow:0 0 0 2px #35e0e8}.section-title.svelte-gygf75 .material-icons.svelte-gygf75{color:#35e0e8}.btn-replace.svelte-gygf75{background-color:#35e0e8cc}.btn-replace.svelte-gygf75:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.highlight-name.svelte-1w0uz1r{background-color:#35e0e81a;border-color:#35e0e84d}.logo-image.svelte-1w0uz1r,.banner-color-swatch.svelte-1w0uz1r,.swatch.svelte-1w0uz1r,.swatch-fill.svelte-1w0uz1r,.text-notification.svelte-nrigjp,.share-btn.svelte-1524ito{border-color:#35e0e81f}.bubble-row.sent.svelte-jj9ljg .bubble.svelte-jj9ljg{background-color:#35e0e8;color:#0b1215}.quantity-button.svelte-jsgxg6:disabled{background-color:#24343a;border-color:#35e0e81f}.section-title.svelte-1rov8jm .material-icons.svelte-1rov8jm{color:#35e0e8}.tool-btn.svelte-1rov8jm,.attach-btn.svelte-1rov8jm{border-color:#35e0e81f}.tool-btn.active.svelte-1rov8jm{border-color:#35e0e8;background-color:#35e0e840}.fields.svelte-1rov8jm input[type=number].svelte-1rov8jm,.fields.svelte-1rov8jm select.svelte-1rov8jm,.fields.svelte-1rov8jm input[type=color].svelte-1rov8jm{border-color:#35e0e81f}.window-header.svelte-4fhlo6{border-bottom-color:#35e0e81f;background-color:#111b1f}.window-header-icon.svelte-4fhlo6,.section-title.svelte-wfs5t6 .material-icons.svelte-wfs5t6{color:#35e0e8}.form-select.svelte-wfs5t6{border-color:#35e0e81f}.form-select.svelte-wfs5t6:focus{border-color:#35e0e8}.form-select.svelte-wfs5t6 option.svelte-wfs5t6{background-color:#0b1215}.dye-color-input.svelte-wfs5t6{border-color:#35e0e81f}.dye-opacity-slider.svelte-wfs5t6::-webkit-slider-thumb{background-color:#35e0e8;border-color:#35e0e81f;color:#0b1215}.form-input.svelte-iy81sy,.form-select.svelte-iy81sy{border-color:#35e0e81f}.form-input.svelte-iy81sy:focus,.form-select.svelte-iy81sy:focus{border-color:#35e0e8}.form-select.svelte-iy81sy option.svelte-iy81sy{background-color:#0b1215}.add-all-button.svelte-1rj22es:disabled{background-color:#24343a;border-color:#35e0e81f}.lottery-window.theme-easter.svelte-1rj22es,.theme-easter.svelte-1rj22es .title-separator.svelte-1rj22es,.theme-easter.svelte-1rj22es .cost-column.themed-box.svelte-1rj22es{outline-color:#35e0e81f}.lottery-window.theme-neutral.svelte-1rj22es:after{border-color:#35e0e81f}.theme-neutral.svelte-1rj22es .draw-timer.svelte-1rj22es{border-color:#35e0e81f;background-color:#182429a6}.theme-neutral.svelte-1rj22es .cost-column.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .grand-prize-container.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .additional-prizes-box.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .last-draw-winners.themed-box.svelte-1rj22es{border-color:#35e0e81f;background-color:#18242980}.painted-badge-swatch.svelte-n0vhtc,.painted-inline-swatch.svelte-n0vhtc{border-color:#35e0e847}.milestone-number.svelte-6hxhl0{background-color:#182429}.milestone-bonus.svelte-6hxhl0{background-color:#151f24}.milestone-bonus.claimable.svelte-6hxhl0{background-color:#182429}.progression-summary.svelte-6hxhl0{border-top-color:#35e0e81f}.progression-details.svelte-6hxhl0{border-color:#35e0e81f}.offer-holder.svelte-1agthf7,.offer-holder.svelte-1agthf7:hover{background-color:#111b1f}.offer-name.svelte-1agthf7{color:#35e0e8}.filter-input.svelte-49w24t,.filter-select.svelte-49w24t{border-color:#35e0e84d}.filter-input.svelte-49w24t:focus,.filter-select.svelte-49w24t:focus{border-color:#35e0e8}.email-change-section.svelte-126q2op{border-top-color:#35e0e81f}.change-email-btn.svelte-126q2op{border-color:#35e0e8}.sidebar-tab.svelte-berov0{background-color:#151f24}.sidebar-tab.svelte-berov0:hover,.sidebar-tab.active.svelte-berov0,.sidebar-tab-badge.svelte-berov0{background-color:#35e0e8;color:#0b1215}.items-detail-root.svelte-dmu4q2{background-color:#151f24}.items-detail-header-bar.svelte-dmu4q2{border-bottom-color:#35e0e81f;background-color:#111b1f}.items-detail-back.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-header-icon.svelte-dmu4q2{color:#35e0e8}.items-detail-header-btn.svelte-dmu4q2,.preview-action-btn.svelte-dmu4q2{border-color:#35e0e81f}.preview-action-btn.svelte-dmu4q2:hover{border-color:#35e0e847}.preview-action-btn.active.svelte-dmu4q2{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.items-detail-wear-slider.svelte-dmu4q2,.items-detail-instance-overlay.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-paint-swatch.svelte-dmu4q2{border-color:#35e0e847}.items-detail-tabs-panel.svelte-dmu4q2{background-color:#111b1f;border-color:#35e0e81f}.items-detail-creator-link.svelte-dmu4q2{color:#35e0e8}.items-detail-stats-section.svelte-dmu4q2{border-top-color:#35e0e81f}.items-detail-stats-header.svelte-dmu4q2{color:#35e0e8}.items-detail-range-btn.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-range-btn.active.svelte-dmu4q2{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.items-detail-owner-row.svelte-dmu4q2{border-bottom-color:#35e0e81f}.items-detail-owner-name.svelte-dmu4q2:hover{color:#35e0e8}.items-detail-instance-table.svelte-dmu4q2 th.svelte-dmu4q2{background-color:#111b1f;border-bottom-color:#35e0e81f}.items-detail-instance-table.svelte-dmu4q2 td.svelte-dmu4q2,.items-detail-listing-row.svelte-dmu4q2{border-bottom-color:#35e0e81f}.items-detail-listing-seller.svelte-dmu4q2:hover,.no-clan-title.svelte-51j5cz,.clan-benefits.svelte-51j5cz h3.svelte-51j5cz{color:#35e0e8}.clan-benefits.svelte-51j5cz li.svelte-51j5cz:before{color:#35e0e8}.map-filter-select.svelte-51j5cz{border-color:#35e0e866}.map-filter-select.svelte-51j5cz:hover{border-color:#35e0e8}.map-filter-select.svelte-51j5cz:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.section-title.svelte-51j5cz{color:#35e0e8;border-left-color:#35e0e8}.day-arrow.svelte-51j5cz{border-color:#35e0e866;color:#35e0e8}.day-arrow.svelte-51j5cz:hover:not(:disabled){background-color:#35e0e833;border-color:#35e0e8}.day-input.svelte-51j5cz{border-color:#35e0e866}.day-input.svelte-51j5cz:focus{border-color:#35e0e8}.view-all-btn.svelte-51j5cz{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.view-all-btn.svelte-51j5cz:hover{background-color:#35e0e84d}.page-btn.svelte-51j5cz{background-color:#35e0e833;border-color:#35e0e866}.historical-day.svelte-51j5cz{border-color:#35e0e81f}.day-header.svelte-51j5cz{border-bottom-color:#35e0e81f}.day-label.svelte-51j5cz{color:#35e0e8}.clan-side.comparison-clan.no-comparison.svelte-51j5cz,.clan-side.svelte-51j5cz .clan-logo-small.svelte-51j5cz{border-color:#35e0e81f}.stat-row.svelte-51j5cz{border-bottom-color:#35e0e81f}.no-participation-title.svelte-51j5cz,.eligible-maps.svelte-51j5cz h3.svelte-51j5cz{color:#35e0e8}.eligible-maps.svelte-51j5cz li.svelte-51j5cz{background-color:#35e0e81a;border-color:#35e0e84d}.game-announcement.svelte-1m80xxc{border-color:#35e0e81f}.game-announcement.svelte-1m80xxc:before{border-bottom-color:#35e0e847}.ga-bundle.svelte-1m80xxc{border-color:#35e0e81f}.ga-bundle.svelte-1m80xxc:hover,.ga-action-btn.svelte-1m80xxc,.ga-action-btn.svelte-1m80xxc:hover,.ga-action-btn.disabled.svelte-1m80xxc:hover{border-color:#35e0e847}.login-button.svelte-16z1lxi{background-color:#070c0f;border-color:#35e0e847}.terms-privacy-notice.svelte-16z1lxi a.svelte-16z1lxi{color:#35e0e8}.item-wrapper.selected.svelte-zhgogl{box-shadow:0 0 0 2px #35e0e8}.loading-spinner.svelte-zhgogl{border-color:#35e0e81f}.load-more-btn.svelte-zhgogl{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-zhgogl:hover{background-color:#35e0e84d}.load-more-btn.svelte-zhgogl:active{background-color:#35e0e866}.tab.svelte-1o3qul6:hover,.tab-active.svelte-1o3qul6,.tab-active.svelte-1o3qul6:hover{border-bottom-color:#35e0e847}.trading-column-header.svelte-1r9fijr{border-bottom-color:#35e0e81f}.confirm-box.svelte-1r9fijr,.start-box.svelte-1r9fijr{background-color:#151f24;border-color:#35e0e81f}.start-input.svelte-1r9fijr{border-color:#35e0e81f}.start-input.svelte-1r9fijr:focus{border-color:#35e0e81f}.section-title.svelte-4e4ust .material-icons.svelte-4e4ust{color:#35e0e8}.texture-settings.svelte-4e4ust{border-color:#35e0e81f}.toggle-switch.svelte-4e4ust input:checked+.slider.svelte-4e4ust{background-color:#35e0e8;color:#0b1215}.form-select.svelte-4e4ust{border-color:#35e0e81f}.form-select.svelte-4e4ust:focus{border-color:#35e0e8}.form-select.svelte-4e4ust option.svelte-4e4ust{background-color:#0b1215}.texture-upload-item.svelte-4e4ust{border-color:#35e0e81f}.uploading-badge.svelte-4e4ust{background-color:#35e0e8cc}.texture-image.svelte-4e4ust{border-color:#35e0e81f}.btn-replace.svelte-4e4ust{background-color:#35e0e8cc}.btn-replace.svelte-4e4ust:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.item-wrapper.selected.svelte-1l3mtrv{box-shadow:0 0 0 2px #35e0e8}.news-item.svelte-1ult4vg{border-left-color:#35e0e8}.news-item.svelte-1ult4vg a{color:#35e0e8}.menu-container.svelte-mqcul7{background-color:#070c0f}.menu-item.active.svelte-mqcul7{border-bottom-color:#35e0e847}button.svelte-mqcul7{background-color:#35e0e8;color:#0b1215}button.svelte-mqcul7:hover{box-shadow:0 0 60px #35e0e875}.start-button.svelte-mqcul7{background-color:#35e0e8;color:#0b1215}.start-button[disabled].svelte-mqcul7{background-color:#1d2c32}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7{background-color:#0b1215;border-color:#35e0e8;box-shadow:0 0 #35e0e833}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7:hover{box-shadow:0 0 0 2px #35e0e833}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7:checked{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.paint-container.svelte-10qrqvt{background-color:#151f24bf}.slider-arrow.svelte-10qrqvt{border-color:#35e0e81f}.slider-arrow.left.svelte-10qrqvt .slider-arrow-icon.svelte-10qrqvt{border-right-color:#35e0e847}.slider-arrow.right.svelte-10qrqvt .slider-arrow-icon.svelte-10qrqvt{border-left-color:#35e0e847}.swatch.svelte-10qrqvt{border-color:#35e0e81f}.swatch.locked.selected.svelte-10qrqvt{border-color:#35e0e847}.swatch-fill.svelte-10qrqvt,.btn.svelte-10qrqvt{border-color:#35e0e81f}.inventory-filter.svelte-ga3en0{background-color:#111b1f;border-color:#35e0e81f}.filter-header.svelte-ga3en0{background-color:#111b1f}.reset-btn.svelte-ga3en0,.reset-btn.svelte-ga3en0:hover,.expand-btn.svelte-ga3en0,.expand-btn.svelte-ga3en0:hover{background-color:#24343a}.filter-content.svelte-ga3en0{border-top-color:#35e0e81f}.search-input.svelte-ga3en0,.season-select.svelte-ga3en0,.sort-select.svelte-ga3en0,.category-select.svelte-ga3en0{background-color:#151f24;border-color:#35e0e81f}.filter-tabs.svelte-ga3en0{border-bottom-color:#35e0e81f}.filter-tab.svelte-ga3en0{background-color:#151f24}.filter-tab.svelte-ga3en0:hover{background-color:#182429}.filter-tab.active.svelte-ga3en0{background-color:#35e0e8;color:#0b1215}.toggle-all-btn.svelte-ga3en0{background-color:#1d2c32}.toggle-all-btn.svelte-ga3en0:hover{background-color:#24343a}.filter-panel.svelte-ga3en0{background-color:#111b1f}.filter-item-wrapper.svelte-ga3en0{border-color:#35e0e81f}.filter-item.svelte-ga3en0:hover{background-color:#151f24}.only-btn.svelte-ga3en0{background-color:#1d2c32}.only-btn.svelte-ga3en0:hover{background-color:#24343a}.profile-search-form.svelte-fo44ss{background-color:#0b1215;border-color:#35e0e81f}.profile-search-form.svelte-fo44ss:focus-within{border-color:#35e0e8}.follow-root.svelte-1ef5zjv{background-color:#151f24}.follow-header.svelte-1ef5zjv{border-bottom-color:#35e0e81f;background-color:#111b1f}.follow-back.svelte-1ef5zjv{border-color:#35e0e81f}.follow-header-icon.svelte-1ef5zjv{color:#35e0e8}.follow-tabs.svelte-1ef5zjv{border-bottom-color:#35e0e81f;background-color:#111b1f}.follow-tab.active.svelte-1ef5zjv{border-bottom-color:#35e0e8}.follow-row.svelte-1ef5zjv{background-color:#0b1215cc;border-color:#35e0e81f}.follow-btn.svelte-1ef5zjv{background-color:#35e0e8;color:#0b1215}.follow-btn.following.svelte-1ef5zjv,.price-tag.svelte-1q06uv7{border-color:#35e0e81f}.buy-button.svelte-1q06uv7:disabled{background-color:#24343a}.buy-button.svelte-1q06uv7:disabled:hover{background-color:#24343a}.io-code-display.svelte-owjkr{border-color:#35e0e81f}.music-player.svelte-1ei19qi{background-color:#0b1215f2}.music-btn.svelte-1ei19qi{border-color:#35e0e847}.section-title.svelte-16sjsp2 .material-icons.svelte-16sjsp2{color:#35e0e8}.toggle-switch.svelte-16sjsp2 input:checked+.slider.svelte-16sjsp2{background-color:#35e0e8;color:#0b1215}.form-select.svelte-16sjsp2,.form-input.svelte-16sjsp2{border-color:#35e0e81f}.form-select.svelte-16sjsp2:focus,.form-input.svelte-16sjsp2:focus{border-color:#35e0e8}.form-select.svelte-16sjsp2 option.svelte-16sjsp2{background-color:#0b1215}.texture-upload-item.svelte-16sjsp2{border-color:#35e0e81f}.uploading-badge.svelte-16sjsp2{background-color:#35e0e8cc}.texture-image.svelte-16sjsp2,.post-item-card.svelte-10yvzvw,.post-item-card.svelte-10yvzvw:hover{border-color:#35e0e81f}.post-content-thumb.svelte-10yvzvw{background-color:#0b1215}.post-content-action.svelte-10yvzvw{color:#35e0e8}.post-follow-btn.svelte-10yvzvw{background-color:#35e0e8;color:#0b1215}.post-follow-btn.svelte-10yvzvw:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.postResRo.svelte-10yvzvw,.postResRoD.svelte-10yvzvw{border-bottom-color:#35e0e81f}.post-text.svelte-10yvzvw a{color:#35e0e8}.post-footer.svelte-10yvzvw{border-top-color:#35e0e81f}.vote-btn.svelte-10yvzvw{border-color:#35e0e81f}.vote-btn.svelte-10yvzvw:hover:not(:disabled){border-color:#35e0e847}.vote-btn.svelte-10yvzvw:disabled{border-color:#35e0e81f}.vote-btn-done.svelte-10yvzvw{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.vote-btn-done.svelte-10yvzvw:hover:not(:disabled){background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.owned-count-overlay.svelte-9ff17r{border-color:#35e0e81f}.section-title.svelte-3rvofx .material-icons.svelte-3rvofx{color:#35e0e8}.form-textarea.svelte-3rvofx{border-color:#35e0e81f}.form-textarea.svelte-3rvofx:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.automatic-attributes.svelte-3rvofx{border-color:#35e0e81f}.automatic-attributes-header.svelte-3rvofx{background-color:#35e0e81a;border-bottom-color:#35e0e81f}.automatic-attributes-title.svelte-3rvofx .material-icons.svelte-3rvofx{color:#35e0e8}.loot-updated-name.svelte-1ydnong{color:var(--highlight-color, rgb(53, 224, 232))}.popup.svelte-1wz7ymp{background-color:#151f24}.popup.translucent.svelte-1wz7ymp{background-color:#151f24bf}.popup.slim-border.svelte-1wz7ymp{border-color:#35e0e81f}.sort-select.svelte-111gya4{background-color:#151f24;border-color:#35e0e81f}.sort-select.svelte-111gya4:hover{border-color:#35e0e847}.sort-select.svelte-111gya4:focus{border-color:#35e0e8}.searching-indicator.svelte-111gya4{color:#35e0e8}.searching-indicator.svelte-111gya4:before{border-color:#35e0e8}.clan-view-root.svelte-5j94nj{background-color:#151f24}.clan-view-header-bar.svelte-5j94nj{border-bottom-color:#35e0e81f;background-color:#111b1f}.clan-view-back.svelte-5j94nj{border-color:#35e0e81f}.clan-view-header-icon.svelte-5j94nj{color:#35e0e8}.clan-view-identity.svelte-5j94nj{background-color:#111b1f;border-color:#35e0e81f}.clan-view-logo.svelte-5j94nj,.clan-view-logo-placeholder.svelte-5j94nj{background-color:#111b1f}.clan-view-info.svelte-5j94nj{border-top-color:#35e0e81f}.clan-view-link.svelte-5j94nj{color:#35e0e8}.clan-view-role-header.svelte-5j94nj{color:#35e0e8;border-bottom-color:#35e0e81f}.social-search-input.svelte-1dyc40r{background-color:#0b1215;border-color:#35e0e81f}.social-search-input.svelte-1dyc40r:focus{border-color:#35e0e8}.social-search-btn.svelte-1dyc40r{background-color:#0b1215;border-color:#35e0e81f}.social-search-btn.svelte-1dyc40r:hover{background-color:#111b1f;border-color:#35e0e81f}.social-compose-btn.svelte-1dyc40r,.social-compose-btn.svelte-1dyc40r:hover{background-color:#35e0e8;color:#0b1215}.item-detail-container.svelte-olnzsm{border-left-color:#35e0e81f}.item-detail-header.svelte-olnzsm{border-bottom-color:#35e0e81f}.item-showcase-section.svelte-olnzsm{border-right-color:#35e0e81f}.ownership-count.svelte-olnzsm,.full-details-btn.svelte-olnzsm{border-color:#35e0e81f}.tabs-section.svelte-olnzsm{border-bottom-color:#35e0e81f}.loading-spinner.svelte-olnzsm{border-color:#35e0e81f}.load-more-btn.svelte-olnzsm{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-olnzsm:hover{background-color:#35e0e84d}.load-more-btn.svelte-olnzsm:active{background-color:#35e0e866}.stats-controls.svelte-olnzsm{border-bottom-color:#35e0e81f}.days-back-select.svelte-olnzsm{border-color:#35e0e81f}.days-back-select.svelte-olnzsm:hover:not(:disabled){border-color:#35e0e81f}.days-back-select.svelte-olnzsm:focus{border-color:#35e0e8}.mission-briefing.svelte-1849bws{background-image:linear-gradient(135deg,#0b1215,#111b1f)}.mission-header.svelte-1849bws{background-image:linear-gradient(135deg,#000,#0b1215)}.abort-btn.svelte-1849bws{background-image:linear-gradient(135deg,#151f24,#1d2c32);border-color:#35e0e847}.abort-btn.svelte-1849bws:hover{background-image:linear-gradient(135deg,#1d2c32,#24343a)}.deploy-btn.svelte-1849bws{border-color:#35e0e8}th.svelte-1enb567{color:#35e0e8}td.svelte-1enb567{border-bottom-color:#35e0e81f}.page-button.svelte-1enb567{border-color:#35e0e8}.page-button.svelte-1enb567:hover:not(:disabled){background-color:#35e0e833}.page-button.svelte-1enb567:disabled{border-color:#35e0e84d}.page-indicator.svelte-1enb567{color:#35e0e8}.item-display-container.svelte-1p13km7{border-color:#35e0e81f}.section-title.svelte-sr5bk2 .material-icons.svelte-sr5bk2{color:#35e0e8}.tool-btn.svelte-sr5bk2,.attach-btn.svelte-sr5bk2{border-color:#35e0e81f}.tool-btn.active.svelte-sr5bk2{border-color:#35e0e8;background-color:#35e0e840}.fields.svelte-sr5bk2 input[type=number].svelte-sr5bk2{border-color:#35e0e81f}.wallet-root.svelte-l0gwpc{background-color:#151f24}.wallet-catalog-btn.svelte-l0gwpc{border-color:#35e0e81f}.currency-card.svelte-l0gwpc{background-image:linear-gradient(135deg,#111b1f,#182429);border-color:#35e0e81f}.items-grid.svelte-l0gwpc{background-color:#111b1f}.main-button.svelte-whnh40{background-color:#151f24;border-color:#35e0e81f}.main-button.svelte-whnh40:disabled,.main-button-disabled.svelte-whnh40{background-color:#0b1215}.main-button.svelte-whnh40:disabled:hover,.main-button-disabled.svelte-whnh40:hover{background-color:#0b1215}.main-button.svelte-whnh40:hover:not(:disabled):not(.main-button-disabled){background-color:#182429}.main-button-accept-secondary.svelte-whnh40{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.sort-btn.active.svelte-9t0md3{background-color:#35e0e833;color:#35e0e8;border-color:#35e0e8}.month-select.svelte-9t0md3 option.svelte-9t0md3{background-color:#0b1215}.section-title.svelte-1qb7o10 .material-icons.svelte-1qb7o10{color:#35e0e8}.paint-mode-btn.svelte-1qb7o10{border-color:#35e0e81f}.paint-mode-btn.svelte-1qb7o10:hover:not(:disabled){border-color:#35e0e847}.paint-mode-btn.active.svelte-1qb7o10{background-color:#35e0e826;border-color:#35e0e8;color:#35e0e8}.paint-color-input.svelte-1qb7o10{border-color:#35e0e81f}.paint-preview-base.svelte-1qb7o10{border-top-color:#35e0e81f}.preview-base-input.svelte-1qb7o10{border-color:#35e0e81f}.preview-base-input.svelte-1qb7o10:focus{border-color:#35e0e8}.preview-base-quick.svelte-1qb7o10{border-color:#35e0e81f}.preview-base-quick.svelte-1qb7o10:hover:not(:disabled){border-color:#35e0e8;color:#35e0e8}.buy-button.svelte-1ov1s5h{border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:hover:not(:disabled){border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:disabled{background-image:linear-gradient(135deg,#24343a,#1d2c32);border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:disabled:hover{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.ownership-count.svelte-kchhu3{border-color:#35e0e81f} +`});var zu,Bu=w(()=>{zu=`:root{--kute-cyan: #35e0e8;--kute-cyan-soft: rgba(53, 224, 232, .14);--kute-pink: #f5479b;--kute-pink-soft: rgba(245, 71, 155, .16);--kute-bg: #0b1215;--kute-panel: #111b1f;--kute-raised: #182429;--kute-line: rgba(53, 224, 232, .12);--kute-line-strong: rgba(53, 224, 232, .28);--kute-text: #eaf7f8;--kute-muted: rgba(234, 247, 248, .62);--kute-faint: rgba(234, 247, 248, .38);--kute-radius: 8px;--kute-radius-lg: 14px;--kute-paw: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23f5479b'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-paw-cyan: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%230b1215'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-ears: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 46 14'%3E%3Cpath fill='rgba(11,18,21,.78)' d='M1 14 9 1l8 13Zm28 0 8-13 8 13Z'/%3E%3Cpath fill='rgba(245,71,155,.7)' d='M5.5 14 9 7.5l3.5 6.5Zm28 0 3.5-6.5 3.5 6.5Z'/%3E%3C/svg%3E");--kute-paw-solid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%2335e0e8'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-grad: linear-gradient(90deg, var(--kute-cyan), var(--kute-pink));--div-black: rgba(11, 18, 21, .78);--div-grey: rgba(53, 224, 232, .07);--div-shadow: 0 2px 10px rgba(0, 0, 0, .5);--blue: var(--kute-cyan);--highlight-color: var(--kute-cyan);--highlight-hover-color: #5ce9ef;--card-bg-color: rgba(24, 36, 41, .7);--dark-bg-color: rgba(11, 18, 21, .5);--border-subtle: 1px solid var(--kute-line);--border-radius-sm: 6px;--border-radius-md: var(--kute-radius);--border-radius-lg: var(--kute-radius-lg);--box-shadow-lg: 0 18px 44px rgba(0, 0, 0, .6)}::selection{background:var(--kute-pink);color:#fff}a,a:visited{color:var(--kute-cyan)}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background-color:transparent;box-shadow:none}::-webkit-scrollbar-thumb{background:var(--kute-line-strong);border:3px solid transparent;border-radius:999px;background-clip:padding-box;box-shadow:none}::-webkit-scrollbar-thumb:hover{background-color:var(--kute-cyan)}#windowHolder.popupWin{background-color:#050a0cb8}#menuWindow.dark{background-color:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6,0 0 0 1px #0006}.settingsHeader{background-color:var(--kute-bg);border-bottom:1px solid var(--kute-line)}.setSugBox2{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);transition:background-color .15s,border-color .15s}.setSugBox2:hover{border-width:1px;background-color:var(--kute-raised);border-color:var(--kute-cyan)}.advancedSlider{background-color:#24343a;border-radius:999px}.advancedSlider:before{border-radius:50%;background:#fff var(--kute-paw) center / 20px no-repeat}input:checked+.advancedSlider{background-color:var(--kute-cyan)}input:checked+.advancedSlider:before{background-image:var(--kute-paw-cyan)}input:checked+.advancedSlider:after{color:var(--kute-bg)}.hostPresetBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px}.hostPresetBtn:hover{background-color:var(--kute-pink);color:#fff}#settingsTabLayout{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius);overflow:hidden}.settingTab{background-color:transparent;color:var(--kute-muted);border-bottom:3px solid transparent;transition:color .15s,background-color .15s}#menuWindow.dark .settingTab{color:var(--kute-muted)}.settingTab:hover{border-bottom:3px solid var(--kute-line-strong);background-color:var(--kute-cyan-soft)}#menuWindow.dark .settingTab:hover{color:var(--kute-text)}.dark .tabANew,.dark .tabANew:hover{border-bottom:3px solid var(--kute-cyan)!important;background-color:var(--kute-cyan-soft)}#menuWindow.dark .tabANew{color:var(--kute-cyan)}.setHed,.setHedS{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-left:3px solid var(--kute-cyan);border-radius:var(--kute-radius);transition:background-color .15s,border-color .15s}.setHed:hover,.setHedS:hover{background-color:#1d2c32;border-left-color:var(--kute-pink)}.setHed .plusOrMinus{color:var(--kute-cyan)}.setBodH{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.settName,.settNameSmall{border-bottom:1px solid var(--kute-line);color:var(--kute-muted)!important}.settNameIn:hover{background-color:var(--kute-cyan-soft)!important;color:var(--kute-text)!important}.settingsBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px;transition:background-color .15s,color .15s}#menuWindow.dark .settingsBtn{color:var(--kute-bg)}.settingsBtn:hover,#menuWindow.dark .settingsBtn:hover{background-color:var(--kute-pink);color:#fff}#settSearch,.inputGrey2,.sliderVal,#loadoutName,#loadoutSelect,#itemSearch{background:var(--kute-raised);color:var(--kute-text);border:1px solid var(--kute-line);border-radius:6px;outline:none;transition:border-color .15s}#settSearch:focus,.inputGrey2:focus,.sliderVal:focus,#loadoutName:focus,#loadoutSelect:focus{border-color:var(--kute-cyan)}#loadoutName{background:var(--kute-raised)!important;border:1px solid var(--kute-line)!important}.sliderVal{border-color:var(--kute-line-strong)!important}#settSearch::placeholder,#loadoutName::placeholder{color:var(--kute-faint)}.inputGrey2 option,#loadoutSelect option{background:var(--kute-panel);color:var(--kute-text)}#loadoutToolbar{background-color:var(--kute-panel);border-bottom:1px solid var(--kute-line)}.loadoutTab{background-color:transparent;transition:background-color .15s,color .15s}.loadoutTab:hover{background-color:var(--kute-cyan-soft)}.loadoutTabSel,.loadoutTabSel:hover{background-color:var(--kute-cyan-soft);border-bottom-color:var(--kute-cyan);color:var(--kute-cyan)!important}#charPreviewSlot{background:radial-gradient(circle at 50% 42%,rgba(53,224,232,.1),transparent 62%);border-right:1px solid var(--kute-line)}.custContainer,.custSubContainer{background-color:var(--kute-panel);border-color:var(--kute-line);box-shadow:none}.custContainer{border-radius:var(--kute-radius);transition:border-color .15s,background-color .15s}.custContainer.contCanSelect:hover{background-color:var(--kute-raised);border-color:var(--kute-cyan)}.custSubContainer{border-radius:0 var(--kute-radius) 0 var(--kute-radius)}.custClear{border-radius:6px}.custBack{background:var(--kute-raised);border-radius:6px}.custBack:hover{background:var(--kute-cyan-soft)}.classCard{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-radius:var(--kute-radius);overflow:hidden;transition:border-color .15s}.classCard:hover{border-color:var(--kute-cyan)}.classXPBar{background-color:var(--kute-bg)}.clsXPBarC{background-color:var(--kute-cyan)}.loadoutBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px}.loadoutBtn:hover{background-color:var(--kute-pink);color:#fff}.slider,.slider2{background-color:#24343a;border-radius:999px}.slider:before,.slider2:before{border-radius:50%;width:22px;background-color:#fff;background-image:var(--kute-paw);background-size:14px;background-position:center;background-repeat:no-repeat}.slider:before{left:5px}input:checked+.slider,input:checked+.slider2,input:checked+.sliderSml,input:checked+.sliderCent{background-color:var(--kute-cyan)}input:checked+.slider:before{transform:translate(28px);background-image:var(--kute-paw-cyan)}input:checked+.slider2:before{transform:translate(20px);background-image:var(--kute-paw-cyan)}input:focus+.slider,input:focus+.slider2,input:focus+.sliderSml{box-shadow:0 0 0 2px var(--kute-cyan-soft)}.sliderSml,.sliderCent{background-color:#24343a}.sliderM{background-color:#24343a;height:8px;border-radius:999px;margin-bottom:0}.sliderM::-webkit-slider-thumb{width:22px;height:22px;border-radius:50%;background:#fff var(--kute-paw) center / 14px no-repeat;box-shadow:0 0 0 3px var(--kute-cyan),0 2px 6px #00000080}#playerHeaderEl{background:var(--kute-grad) bottom / 100% 1px no-repeat,linear-gradient(#070c0feb,#070c0fbd)}.ph-item[class*=svelte-],.nav-item[class*=svelte-]{border-radius:12px;transition:background-color .15s}.ph-item[class*=svelte-]:hover,.nav-item[class*=svelte-]:hover{background-color:var(--kute-cyan-soft)}.nav-item[class*=svelte-] .material-icons,.nav-item[class*=svelte-] .material-icons-outlined{color:var(--kute-cyan)}#menuItemContainer .menuItem{position:relative;border-radius:10px;transition:transform .15s,background-color .15s}#menuItemContainer .menuItem:hover{background:linear-gradient(90deg,var(--kute-cyan-soft),transparent 85%);transform:translate(6px)}#menuItemContainer .menuItem:hover .menuItemTitle{color:var(--kute-cyan)}#menuItemContainer .menuItem:not(.bpItem):not(.dsItem):before{content:"";position:absolute;left:-18px;top:50%;width:14px;height:14px;background:var(--kute-paw-solid) center / contain no-repeat;opacity:0;transform:translate(-4px,-50%) rotate(-20deg);transition:opacity .15s,transform .15s;pointer-events:none}#menuItemContainer .menuItem:not(.bpItem):not(.dsItem):hover:before{opacity:1;transform:translateY(-50%) rotate(-20deg)}#menuItemContainer .menuItemIcon{color:var(--kute-cyan)}#menuItemContainer .sidebarDivider{background:linear-gradient(90deg,var(--kute-line-strong),transparent);border:0}@container not style(--kute-classic-menu: 1){#subLogoButtons>.actionCard{background:var(--kute-panel);border-color:rgba(var(--card-rgb),.45);border-radius:var(--kute-radius);box-shadow:none;transition:background-color .15s,border-color .15s}#subLogoButtons>.actionCard:hover{background:var(--kute-raised);border-color:rgb(var(--card-rgb))}#subLogoButtons>.actionCard .cardIcon{color:rgb(var(--card-rgb))}.popRailCard[class*=svelte-]{background:var(--kute-panel);border-color:var(--kute-line-strong);border-radius:var(--kute-radius);transition:background-color .15s,border-color .15s}.popRailCard[class*=svelte-]:hover{background:var(--kute-raised);border-color:var(--kute-cyan)}.popRailPlay[class*=svelte-]{color:var(--kute-cyan)}#customizeButton{border-radius:var(--kute-radius)}}.window-header[class*=svelte-],#loadoutToolbar,.profile-detail-header-bar[class*=svelte-],.instructionsHeader,.settingsHeader{background-image:var(--kute-grad);background-size:100% 1px;background-position:bottom;background-repeat:no-repeat}:is(#windowHolder,#popupHolder,#app) .button{border-radius:var(--kute-radius);background-color:#0b121599}:is(#windowHolder,#popupHolder,#app) .button:hover,:is(#windowHolder,#popupHolder,#app) .button:active{border-color:var(--kute-cyan)!important}:is(#windowHolder,#popupHolder,#app) .button:not([class*=buttonR]):not([class*=buttonG]):not([class*=buttonP]):not([class*=buttonO]):not([class*=buttonB]):not(:hover){border-color:var(--kute-line-strong)}#chatList{background-color:#0b12158c;border-radius:var(--kute-radius) var(--kute-radius) 0 0}#chatInputHolder{border-radius:0 0 var(--kute-radius) var(--kute-radius)}#chatInput{background-color:#182429cc;border:1px solid var(--kute-line);border-radius:6px}#chatInput:focus{border-color:var(--kute-cyan);outline:none}#instructionsUpdate{background:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6;overflow:hidden}.instructionsHeader,.instructionsTabs{background-color:var(--kute-panel);box-shadow:none}.instructionsHeader{border-bottom:1px solid var(--kute-line)}.instructionsTab{border-top:1px solid var(--kute-line);transition:background-color .15s,color .15s}.instructionsTab:hover{background-color:var(--kute-cyan-soft);border-color:var(--kute-line);color:var(--kute-cyan)}#ammoHolder,#bottomLeftPlayer,#timerHolder,.statIcon,#leaderboardHolder,#teamScores,#chatInputHolder{border-radius:var(--kute-radius)}#ammoHolder .greyInner,.statIcon .greyInner,#timerInner,#leaderContainer,#bottomLeftPlayerLeft,#bottomLeftPlayerRight,#bottomLeftTeamType,#bottomLeftTeamName,#bottomLeftHealthBar{border-radius:6px}#bottomLeftPlayerLeft{overflow:hidden}#ammoHolder,#bottomLeftPlayer{box-shadow:inset 0 -2px 0 var(--kute-cyan)}#bottomLeftPlayer{position:relative}#ammoHolder:before,#bottomLeftPlayer:before{content:"";position:absolute;top:-12px;width:46px;height:14px;background:var(--kute-ears) no-repeat center / contain;pointer-events:none}#ammoHolder:before{right:20px}#bottomLeftPlayer:before{left:19px}#reloadMsg{border-radius:6px}#ingameFPS,#pingText{color:var(--kute-cyan)}.bigMenTabs{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.bigMenTab:hover{border-bottom:3px solid var(--kute-line-strong)}.bigMenTabA,.bigMenTabA:hover{border-bottom:3px solid var(--kute-cyan);color:var(--kute-cyan)}#popupContent,#bundlePop,#premiumPop,#policePopC,#guidePopup,#chargeModalCard,#spinHistoryPop,.confPremiumPop,.vouchPop,.rankedPop,.promoPop,.pfpPop,.dropsPop,.accountCreatePop,.imagePop,.badgePop,.imageNewPop,.importPop,.disconnectPop,.eventPop,.bp-generic-pop,.bp-purchase-pop,.spinErrorPop,.charmErrorPop,.spinHistoryStatsPop,.loadingPop,.autoLoadPop,.editMapPop,.responsePop,.ticketPop,.dxp-pop,.abTestsPop,.registerGiftPop,.rankedQueueModal,.rankedMenuModal,.communityPopup,.tutorialPopup,.defaultModal,.krunkCupJoinModal,.krunkCupViewModal,.exchangeModal,.itemsModal,.moreKrunkerPopup,.infoPop,.contPop,.io-popup-container,.wallet-root[class*=svelte-]{background-color:var(--kute-bg);border-radius:var(--kute-radius-lg);box-shadow:0 0 0 1px var(--kute-line),0 24px 60px #000000a6}.twitchPop,.nftPop,.confPop,.clientExitPop,#confPurchItemPop,.metaPop,.polConfPop{border-color:var(--kute-line);border-radius:var(--kute-radius-lg)}.hostHeader,#stickyHostH,.imageListHeader,.imageListFooter,.spinHistoryHeader,.popHeader,.dropsPopHeader,.serverHeader,#itemSearchH,#bindsHeader,.tooltip2,.crftRcpeCrd,.bundleCrd,.bundle-card[class*=svelte-],.moreKrunkerOption[class*=svelte-],.items-grid[class*=svelte-],.filter-panel[class*=svelte-],.territory-map-container[class*=svelte-],.data-table[class*=svelte-] thead{background-color:var(--kute-panel)}#initLoader,.clsStatXPBar,.elo-progress-bar-bg{background-color:var(--kute-bg)}.featured-section[class*=svelte-],.stream-card[class*=svelte-],.emoji-panel[class*=svelte-],.verification-banner[class*=svelte-],.music-player[class*=svelte-],.market-card[class*=svelte-],.rank-popup-content{background-color:var(--kute-panel)}.hide-button[class*=svelte-],.kuteTopButton{background-color:var(--kute-raised)}.hide-button[class*=svelte-]:hover,.kuteTopButton:hover{background-color:#1d2c32}.contactsHeader{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-left:3px solid var(--kute-cyan);border-radius:var(--kute-radius)}.bpInfoBalloon,.bpInfoBalloon:after,.io-separator span{background-color:var(--kute-bg)}.bpClaimB,.bp-unlock-header,.io-button,.mapLICat,#tradeChatInput,.tradeChatItem,.main-button[class*=svelte-]{background-color:var(--kute-raised)}.io-button:hover,.mapLICat:hover,.main-button[class*=svelte-]:hover:not(:disabled):not(.main-button-disabled){background-color:#1d2c32}.main-button[class*=svelte-],.moreKrunkerOption[class*=svelte-],.territory-map-container[class*=svelte-],.territory-details-panel[class*=svelte-],.inventory-filter[class*=svelte-],.filter-item-wrapper[class*=svelte-]{border-color:var(--kute-line)}.moreKrunkerOption[class*=svelte-]:hover{border-color:var(--kute-cyan)}.inventory-filter[class*=svelte-],.filter-header[class*=svelte-]{background-color:var(--kute-panel)}.currency-card[class*=svelte-]{background:var(--kute-panel);border-color:var(--kute-line)}.search-input[class*=svelte-],.season-select[class*=svelte-],.sort-select[class*=svelte-],.category-select[class*=svelte-],.filter-tab[class*=svelte-],.filter-item[class*=svelte-]:hover,.reset-btn[class*=svelte-],.expand-btn[class*=svelte-],.toggle-all-btn[class*=svelte-],.only-btn[class*=svelte-]{background:var(--kute-raised);border-color:var(--kute-line)}.filter-tab[class*=svelte-]:hover,.reset-btn[class*=svelte-]:hover,.expand-btn[class*=svelte-]:hover,.toggle-all-btn[class*=svelte-]:hover,.only-btn[class*=svelte-]:hover{background:#1d2c32}.filter-tab.active[class*=svelte-]{background:var(--kute-cyan);color:var(--kute-bg)}.setSugBox,.viewAllUpdates,.bSliderBtn,.bundleSliderBtn,.dropsSliderBtn,.challHeadrI,.sub-tab-panel[class*=svelte-]{border-color:var(--kute-line-strong)}.challMapCrd:not(.chalCardH){border-color:var(--kute-line-strong)}.guideHeader,.guideSubH,.mailFrom,.speedRunItem,#hostActionH,#custStreakSelH{border-color:var(--kute-line)}.store-tabs[class*=svelte-],.tabs-container[class*=svelte-],#menuWindow.eterno .store-tabs[class*=svelte-]{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.store-tab[class*=svelte-]:hover,.tab[class*=svelte-]:hover{border-bottom-color:var(--kute-line-strong)}.store-tab-active[class*=svelte-],.store-tab-active[class*=svelte-]:hover,.tab-active[class*=svelte-],.tab-active[class*=svelte-]:hover,.tabHeader.selected{border-bottom-color:var(--kute-cyan);color:var(--kute-cyan)}#menuWindow.eterno{background-color:var(--kute-bg);border-color:var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6;animation:none}.followBut,#hostMenuBtn,.chargeModalBtn,.redVouchBtn,.searchBtn,.hostToggle,.subPassChg,.updDisN,#partnerProgB,#partnrUpBtn,#findGameBtn,.joinBtn,.openCollection,#spinMultiToggleBtn,.clanSubmitBtn,.main-button-accept-secondary[class*=svelte-]{background-color:var(--kute-cyan);border-color:var(--kute-cyan);color:var(--kute-bg)}input:checked+.optCheck{background-color:var(--kute-cyan)}.quickJoin,.followBack,.io-input-field:focus{border-color:var(--kute-cyan)}.io-section-header:after{background:var(--kute-cyan)}.counterBadge[class*=svelte-]{background:var(--kute-pink);color:#fff}.wallet-catalog-btn[class*=svelte-] i{color:var(--kute-cyan)}.stack-collapse-fab[class*=svelte-]{background:var(--kute-cyan)}.card-title[class*=svelte-],.view-title[class*=svelte-],.table-header[class*=svelte-],.no-clan-title[class*=svelte-],.no-participation-title[class*=svelte-],.clan-benefits[class*=svelte-] h3,.clan-benefits[class*=svelte-] li:before,.eligible-maps[class*=svelte-] h3,.day-label[class*=svelte-],.day-arrow[class*=svelte-],.view-all-btn[class*=svelte-]{color:var(--kute-cyan)}.section-title[class*=svelte-]{border-left-color:var(--kute-cyan);color:var(--kute-cyan)}.category-card[class*=svelte-],.map-filter-select[class*=svelte-],.day-arrow[class*=svelte-],.day-input[class*=svelte-],.data-table[class*=svelte-] thead tr{border-color:var(--kute-line-strong)}.category-card[class*=svelte-]:hover,.map-filter-select[class*=svelte-]:hover,.map-filter-select[class*=svelte-]:focus,.day-input[class*=svelte-]:focus{border-color:var(--kute-cyan)}.table-header.sortable.sort-asc[class*=svelte-]:after{border-bottom-color:var(--kute-cyan)}.table-header.sortable.sort-desc[class*=svelte-]:after{border-top-color:var(--kute-cyan)}.table-header.sortable[class*=svelte-]:hover,.data-table[class*=svelte-] tbody tr.clickable:hover,.data-table[class*=svelte-] tbody tr.highlight-row,.day-arrow[class*=svelte-]:hover:not(:disabled),.day-map[class*=svelte-],.eligible-maps[class*=svelte-] li,.view-all-btn[class*=svelte-],.page-btn[class*=svelte-],.view-tab.active[class*=svelte-]{background:var(--kute-cyan-soft);border-color:var(--kute-line-strong)}:is(#popupHolder,#app) .socialModal{background-color:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6}:is(#popupHolder,#app) .social-content{border-radius:var(--kute-radius-lg)}:is(#popupHolder,#app) .window-header{background:var(--kute-panel);border-bottom:1px solid var(--kute-line)}:is(#popupHolder,#app) .window-header-icon{color:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab{background:var(--kute-panel);transition:background-color .15s}:is(#popupHolder,#app) .sidebar-tab:hover{background:var(--kute-raised)}:is(#popupHolder,#app) .sidebar-tab:hover .sidebar-tab-icon,:is(#popupHolder,#app) .sidebar-tab:hover .sidebar-tab-label{color:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab.active{background:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab.active .sidebar-tab-icon,:is(#popupHolder,#app) .sidebar-tab.active .sidebar-tab-label{color:var(--kute-bg)}:is(#popupHolder,#app) .simple-tabs{border-bottom-color:var(--kute-line)}:is(#popupHolder,#app) .simple-tab-active{border-bottom-color:var(--kute-cyan)}:is(#popupHolder,#app) .simple-tab-active .simple-tab-icon,:is(#popupHolder,#app) .simple-tab-active .simple-tab-label{color:var(--kute-cyan)}:is(#popupHolder,#app) .social-search-input,:is(#popupHolder,#app) .social-search-btn,:is(#popupHolder,#app) .profile-search-form,:is(#popupHolder,#app) .conversation-input,:is(#popupHolder,#app) .conversation-emoji-button{background:var(--kute-raised);border-color:var(--kute-line);border-radius:6px}:is(#popupHolder,#app) .social-search-input:focus,:is(#popupHolder,#app) .profile-search-form:focus-within,:is(#popupHolder,#app) .conversation-input:focus{border-color:var(--kute-cyan)}:is(#popupHolder,#app) .social-search-btn:hover,:is(#popupHolder,#app) .conversation-emoji-button:hover:not(:disabled){background:#1d2c32;border-color:var(--kute-line-strong);color:var(--kute-cyan)}:is(#popupHolder,#app) .social-compose-btn,:is(#popupHolder,#app) .post-follow-btn,:is(#popupHolder,#app) .conversation-send-button{background:var(--kute-cyan);border-radius:6px;transition:background-color .15s}:is(#popupHolder,#app) .social-compose-btn:hover,:is(#popupHolder,#app) .post-follow-btn:hover:not(:disabled),:is(#popupHolder,#app) .conversation-send-button:hover:not(:disabled){background:var(--kute-pink)}:is(#popupHolder,#app) .social-compose-icon,:is(#popupHolder,#app) .social-compose-label,:is(#popupHolder,#app) .post-follow-btn i,:is(#popupHolder,#app) .conversation-send-button{color:var(--kute-bg)}:is(#popupHolder,#app) .conversation-send-button:disabled{background:#24343a;color:var(--kute-faint)}:is(#popupHolder,#app) .post-card{background:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .post-card-clickable:hover{background:var(--kute-raised)}:is(#popupHolder,#app) .post-item-card{background:#18242999;border-color:var(--kute-line);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .post-item-card:hover{background:var(--kute-raised);border-color:var(--kute-cyan)}:is(#popupHolder,#app) .postGameRes{background-color:var(--kute-bg);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .postResRo,:is(#popupHolder,#app) .postResRoD{border-bottom-color:var(--kute-line)}:is(#popupHolder,#app) .post-content-action{color:var(--kute-cyan)}:is(#popupHolder,#app) .vote-btn,:is(#popupHolder,#app) .share-btn{background:var(--kute-raised);border-color:var(--kute-line)}:is(#popupHolder,#app) .vote-btn:hover:not(:disabled),:is(#popupHolder,#app) .share-btn:hover{background:#1d2c32;border-color:var(--kute-line-strong)}:is(#popupHolder,#app) .comment-btn:hover{background:var(--kute-cyan-soft)}:is(#popupHolder,#app) .vote-btn-done,:is(#popupHolder,#app) .vote-btn-done:hover:not(:disabled){background:var(--kute-cyan);border-color:var(--kute-cyan)}:is(#popupHolder,#app) .vote-btn-done .vote-btn-icon,:is(#popupHolder,#app) .vote-btn-done .vote-btn-label,:is(#popupHolder,#app) .vote-btn-done .vote-btn-count{color:var(--kute-bg)}:is(#popupHolder,#app) .friends-root,:is(#popupHolder,#app) .conversation-root{background:var(--kute-bg)}:is(#popupHolder,#app) .friend-list{background:var(--kute-panel);border-right:1px solid var(--kute-line)}:is(#popupHolder,#app) .friend-item:hover{background:#35e0e80f}:is(#popupHolder,#app) .friend-item.selected{background:var(--kute-cyan-soft);border-left-color:var(--kute-cyan)}:is(#popupHolder,#app) .friend-presence-dot{border-color:var(--kute-panel)}:is(#popupHolder,#app) .friend-unread{background:var(--kute-pink);color:#fff}:is(#popupHolder,#app) .friend-list-search{background:var(--kute-raised);border-top:1px solid var(--kute-line)}:is(#popupHolder,#app) .conversation-header,:is(#popupHolder,#app) .conversation-compose{background:var(--kute-panel);border-color:var(--kute-line)}:is(#popupHolder,#app) .conversation-presence-dot{border-color:var(--kute-panel)}:is(#popupHolder,#app) .conversation-load-earlier{background:var(--kute-raised);border-color:var(--kute-line)}:is(#popupHolder,#app) .conversation-day-divider:before,:is(#popupHolder,#app) .conversation-day-divider:after{background:var(--kute-line)}:is(#popupHolder,#app) .bubble-row.sent .bubble{background:var(--kute-cyan)}:is(#popupHolder,#app) .bubble-row.sent .bubble,:is(#popupHolder,#app) .bubble-row.sent .bubble-time,:is(#popupHolder,#app) .bubble-row.sent .bubble-status-ok{color:var(--kute-bg)}:is(#popupHolder,#app) .bubble-row.received .bubble{background:var(--kute-raised)}#app .profile-detail-root{background:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6}#app .profile-detail-header-bar{background:var(--kute-panel);border-bottom-color:var(--kute-line)}#app .profile-detail-header-icon,#app .profile-detail-section-header,#app .profile-detail-sales-header{color:var(--kute-cyan)}#app .profile-detail-back,#app .profile-detail-action,#app .profile-detail-range-btn{background:var(--kute-raised);border-color:var(--kute-line)}#app .profile-detail-back:hover,#app .profile-detail-action:hover:not(:disabled){background:#1d2c32}#app .profile-detail-action.active,#app .profile-detail-action.active i{background:var(--kute-cyan-soft);border-color:var(--kute-line-strong);color:var(--kute-cyan)}#app .profile-detail-range-btn.active{background:var(--kute-cyan);border-color:var(--kute-cyan);color:var(--kute-bg)}#app .profile-detail-identity,#app .profile-detail-sales-panel,#app .profile-detail-badges-panel,#app .profile-detail-creations-panel{background:var(--kute-panel);border-color:var(--kute-line);border-radius:var(--kute-radius)}#app .profile-detail-avatar{background:var(--kute-raised);border-color:var(--kute-line-strong)}#app .profile-detail-online-dot{border-color:var(--kute-panel)}#app .profile-detail-follow-box,#app .profile-detail-title-item,#app .profile-detail-badge-item{background:var(--kute-raised)}#app .profile-detail-follow-box:hover{background:#1d2c32;border-color:var(--kute-line-strong)}#app .profile-detail-stat,#app .profile-detail-class,#app .profile-detail-raid-row,#app .profile-detail-listing-card,#app .profile-detail-creation-card{background:var(--kute-panel);border-color:var(--kute-line);border-radius:var(--kute-radius)}#app .profile-detail-listing-card:hover,#app .profile-detail-creation-card:hover{background:var(--kute-raised)}#app .profile-detail-level-badge,#app .profile-detail-xp-fill{background:var(--kute-cyan)}#app .profile-detail-level-badge{color:var(--kute-bg)}#app .profile-detail-xp-bar{background:var(--kute-raised)} +`});var ei={};A(ei,{default:()=>Tb});var Mb,Qr,Tb,ti=w(()=>{"use strict";D();Nu();Bu();Mb=_u+zu,Qr=class{constructor(){this.sheet=null,u.settings.toggleKuteCss=e=>this.toggle(e),this.toggle(!0)}toggle(e){if(!e){this.sheet?.replaceSync("");return}this.sheet||(this.sheet=new CSSStyleSheet,document.adoptedStyleSheets=[this.sheet,...document.adoptedStyleSheets]),this.sheet.replaceSync(Mb)}},Tb=new Qr});var ai={};A(ai,{setFrameEnd:()=>Mn,takeFrameWorkMs:()=>ri});function ri(){if(ss.length<10)return 0;let s=ss.sort((t,o)=>t-o);ss=[];let e=s.slice(0,Math.ceil(s.length*.9));return e.reduce((t,o)=>t+o,0)/e.length}function Nb(s){return function(e){e!==Hu&&(Hu=e,qu++>0&&(Ku=performance.now(),ju.port2.postMessage(0))),s(e)}}function _b(s,e){Lo<0&&(Lo=e),ns++;let t=e-Lo;if(ts*Lb?rs+1:0,rs>=2&&u.frameLimiter!=="viz"&&(is=!0),ns=0,Lo=e}function Uu(){!is||!Cn?.hardFlip||(is=!1,ns=0,rs=0,Lo=-1)}function Bb(s){let e;for(s>200?e=1e3/(s*1.0055):e=1e3/s;performance.now()e?Sn=t+e:Sn+=e}function zb(s){$n=s,ii?.(s)}function Gu(s){if(ii!==null&&!ni)return Hb(s);let e=Cn===null?0:Cn.gameFpsLimit;if(!(e>0)){oi=0;let o=++Ib%Rb;return o>=Pb?En(s):(o===0&&(qu=0),En(Nb(s)))}let t=Number(e);return En(function(o){t!==oi&&(oi=t,is=!1,ns=0,rs=0,Lo=-1),o!==Ou&&(Ou=o,is?Bb(t):_b(t,o)),s(o)})}function Hb(s){ni=!0;let e=Gu(t=>{$n=t,s(t)});return ni=!1,Du===$n&&Fu(si),Du=$n,si=En(zb),e}function Mn(s){ii=s,s===null&&Fu(si)}var En,Fu,Ab,Lb,Cn,Rb,Pb,Ib,qu,Hu,Ku,ss,ju,Sn,Ou,oi,is,Lo,ns,rs,ii,si,$n,Du,ni,as=w(()=>{"use strict";D();En=window.requestAnimationFrame,Fu=window.cancelAnimationFrame,Ab=2e3,Lb=1.15,Cn=null,Rb=256,Pb=12,Ib=0,qu=0,Hu=-1,Ku=0,ss=[],ju=new MessageChannel;ju.port1.onmessage=()=>{ss.length<512&&ss.push(performance.now()-Ku)};Ne.then(()=>{Cn=u.settings.data});Sn=0,Ou=-1,oi=0,is=!1,Lo=-1,ns=0,rs=0;document.addEventListener("pointerlockchange",Uu);window.addEventListener("resize",Uu);ii=null,si=0,$n=-1,Du=-2,ni=!1;window.requestAnimationFrame=Gu});var Tn=we((jx,Ob)=>{Ob.exports="data:image/webp;base64,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"});var ci={};A(ci,{default:()=>Db});var Wu,li,Db,di=w(()=>{"use strict";Wu=ue(Tn(),1),li=class{constructor(){if(!document.querySelector("#mainMenuUIMount"))return;let e=document.createElement("style");e.id="kute_logoBadgeCSS",e.textContent=` #mainLogo { anchor-name: --kute-main-logo; } #gameNameHolder::after { content: ""; @@ -49,11 +49,11 @@ void main() { outColor = texture(uLabel, vUv); }`;Wr=new Float32Array(4096),Ru=0 left: calc((anchor(right) - anchor-size(width) * 0.22) - 15px); top: calc((anchor(bottom) - anchor-size(height) * 0.48) - 10px); transform: rotate(-25deg); - background: url(${Ju.default}) center / contain no-repeat; + background: url(${Wu.default}) center / contain no-repeat; pointer-events: none; - }`,document.head.append(e)}},Ub=new ci});var pi=we((Jx,Gb)=>{Gb.exports=`#tlInfHold,#newsHolder,#termsInfo,#bubbleContainer,body .popRail.popRail{display:none!important} -`});var hi=we((Zx,Wb)=>{Wb.exports=`:root{--kute-classic-menu: 1}#uiBase.onMenu #spectButton{top:calc(48% - 60px)}#instructions{top:50%}#subLogoButtons{right:auto;left:50%;bottom:139px;width:950px;display:grid;grid-template-columns:repeat(6,1fr);gap:10px;transform:translate(-50%) scale(.95);transform-origin:bottom center}#matchInfoHolder{grid-column:1 / -1;position:static;order:-2;box-sizing:border-box;width:100%;flex-wrap:wrap;justify-content:flex-start;row-gap:4px;transform:none;padding:0 0 12px;margin-bottom:10px;font-size:20px;background:none;border:none;border-bottom:5px solid #585858;border-radius:0;box-shadow:none;backdrop-filter:none}#matchInfoHolder>.match-divider:has(+.match-info-actions){flex-basis:100%;height:0;margin:0;border:none;background:none}#matchInfoHolder>.match-info-actions{padding-left:7px}#mapInfo{font-size:20px}#mapInfoHld{padding-left:7px}#subLogoButtons>.actionCard{grid-column:span 2;justify-content:center;box-sizing:border-box;width:auto;height:auto;padding:6px 18px;font-size:27px;text-transform:none;background:#0003;box-shadow:none}#subLogoButtons>.actionCard .cardIcon{display:none}#subLogoButtons>.actionCard .cardLabel{font-size:27px;text-transform:none;letter-spacing:normal}#subLogoButtons>#menuBtnQuickMatch,#subLogoButtons>#menuBtnRanked{grid-column:span 3}#menuBtnHost,#menuBtnBrowser{border-color:#ed4242!important}#subLogoButtons>.popRail{grid-column:1 / -1;order:1;margin-top:10px}#menuClassContainer{left:auto;right:21px;bottom:80px;text-align:right;transform:scale(.7);transform-origin:bottom right}#menuClassContainer:before{display:none}#menuClassFooter{flex-direction:column;align-items:flex-end;margin:0 0 0 auto}#menuClassContainerInner{justify-content:flex-end;width:449px;height:85px;padding:0;gap:0;background:none;border:none}#menuClassContainerInner:hover{background:none;filter:brightness(1.15)}#menuClassContainerInfo{height:85px;justify-content:space-between}#menuClassIcn{width:85px;height:85px;margin-left:10px;border:4px solid #353534;border-radius:4px}#menuClassName{font-size:17px}#menuClassSubtext{font-size:30px;margin-bottom:0}#classPreviewCanvas{margin-bottom:-100px;margin-right:-113px}#customizeButton{box-sizing:border-box;width:449px;padding:15px;font-size:27px!important}#bubbleContainer{right:420px}body #uiBase.onMenu .spectateInfo{top:calc(48% - 150px)} -`});var Zu=we((Qx,Vb)=>{Vb.exports='
              '});var Yb={};var mi,Qu=w(()=>{"use strict";F();Ae();mi=class{constructor(e,t,o){this.message=e,this.reqUserInput=t,this.duration=o,this.notificationEl=document.createElement("div"),this.notificationEl.id="notification",this.countdown=void 0,this.handlePromise=void 0,t&&(this.promise=new Promise(n=>{this.resolvePromise=n})),this.show()}async createNotificationElement(){let e=await Promise.resolve().then(()=>ue(Zu(),1));this.notificationEl.innerHTML=e.default,U("#notification-content",this.notificationEl).textContent=this.message,U("#notification-timer",this.notificationEl).textContent=String(this.duration),this.reqUserInput&&(U("#notification-actions",this.notificationEl).style.display="block"),document.body.append(this.notificationEl)}startTimer(){this.countdown=setInterval(()=>{this.duration--,U("#notification-timer",this.notificationEl).textContent=String(this.duration),this.duration<=0&&(clearInterval(this.countdown),this.resolvePromise&&this.resolvePromise(!1),this.hide())},1e3)}hide(){clearInterval(this.countdown),this.handlePromise&&document.removeEventListener("keydown",this.handlePromise),this.notificationEl.classList.add("slide-out"),setTimeout(()=>this.notificationEl.remove(),2e3)}show(){this.createNotificationElement(),setTimeout(()=>this.notificationEl.classList.add("slide-in"),10),this.startTimer(),this.reqUserInput&&(this.handlePromise=e=>{if(e.key==="y"||e.key==="n"){let t=e.key==="y";U(`#${e.key}`,this.notificationEl).classList.add("bounce"),this.resolvePromise(t),this.hide()}},document.addEventListener("keydown",this.handlePromise))}};d.showNotification=(s,e,t)=>{let o=new mi(s,e,t);return e?o.promise:o}});var ep=we((oS,Xb)=>{Xb.exports='
              ×

              Kute

              A high-performance Krunker client with enhanced features - made by [cute]

              CREDITS
              • NullDev / NulPing - Main Developer / Maintainer
              • slavcp/glorp - base
              • 6ct/clientpp - flags
              • KraXen72/crankshaft - menu timer css
              • idkr-client/idkr - tweaks
              • bigjakk/Electron-Websocket-Fix - aim-freeze fix
              • bigjakk/Krunker-Civilian-Client - matchmaker, nuke counter
              • PC7 Client and Water Client - ideas
              '});var tp={};async function Jb(){if(document.querySelector("#aboutPopupHost"))return;let[s,e]=await Promise.all([Promise.resolve().then(()=>ue(ep(),1)),Promise.resolve().then(()=>ue(An(),1))]),t=document.createElement("div");t.style=` + }`,document.head.append(e)}},Db=new li});var ui=we((Ux,Fb)=>{Fb.exports=`#tlInfHold,#newsHolder,#termsInfo,#bubbleContainer,body .popRail.popRail{display:none!important} +`});var pi=we((Gx,qb)=>{qb.exports=`:root{--kute-classic-menu: 1}#uiBase.onMenu #spectButton{top:calc(48% - 60px)}#instructions{top:50%}#subLogoButtons{right:auto;left:50%;bottom:139px;width:950px;display:grid;grid-template-columns:repeat(6,1fr);gap:10px;transform:translate(-50%) scale(.95);transform-origin:bottom center}#matchInfoHolder{grid-column:1 / -1;position:static;order:-2;box-sizing:border-box;width:100%;flex-wrap:wrap;justify-content:flex-start;row-gap:4px;transform:none;padding:0 0 12px;margin-bottom:10px;font-size:20px;background:none;border:none;border-bottom:5px solid #585858;border-radius:0;box-shadow:none;backdrop-filter:none}#matchInfoHolder>.match-divider:has(+.match-info-actions){flex-basis:100%;height:0;margin:0;border:none;background:none}#matchInfoHolder>.match-info-actions{padding-left:7px}#mapInfo{font-size:20px}#mapInfoHld{padding-left:7px}#subLogoButtons>.actionCard{grid-column:span 2;justify-content:center;box-sizing:border-box;width:auto;height:auto;padding:6px 18px;font-size:27px;text-transform:none;background:#0003;box-shadow:none}#subLogoButtons>.actionCard .cardIcon{display:none}#subLogoButtons>.actionCard .cardLabel{font-size:27px;text-transform:none;letter-spacing:normal}#subLogoButtons>#menuBtnQuickMatch,#subLogoButtons>#menuBtnRanked{grid-column:span 3}#menuBtnHost,#menuBtnBrowser{border-color:#ed4242!important}#subLogoButtons>.popRail{grid-column:1 / -1;order:1;margin-top:10px}#menuClassContainer{left:auto;right:21px;bottom:80px;text-align:right;transform:scale(.7);transform-origin:bottom right}#menuClassContainer:before{display:none}#menuClassFooter{flex-direction:column;align-items:flex-end;margin:0 0 0 auto}#menuClassContainerInner{justify-content:flex-end;width:449px;height:85px;padding:0;gap:0;background:none;border:none}#menuClassContainerInner:hover{background:none;filter:brightness(1.15)}#menuClassContainerInfo{height:85px;justify-content:space-between}#menuClassIcn{width:85px;height:85px;margin-left:10px;border:4px solid #353534;border-radius:4px}#menuClassName{font-size:17px}#menuClassSubtext{font-size:30px;margin-bottom:0}#classPreviewCanvas{margin-bottom:-100px;margin-right:-113px}#customizeButton{box-sizing:border-box;width:449px;padding:15px;font-size:27px!important}#bubbleContainer{right:420px}body #uiBase.onMenu .spectateInfo{top:calc(48% - 150px)} +`});var Vu=we((Wx,Kb)=>{Kb.exports='
              '});var jb={};var hi,Yu=w(()=>{"use strict";D();Ae();hi=class{constructor(e,t,o){this.message=e,this.reqUserInput=t,this.duration=o,this.notificationEl=document.createElement("div"),this.notificationEl.id="notification",this.countdown=void 0,this.handlePromise=void 0,t&&(this.promise=new Promise(n=>{this.resolvePromise=n})),this.show()}async createNotificationElement(){let e=await Promise.resolve().then(()=>ue(Vu(),1));this.notificationEl.innerHTML=e.default,U("#notification-content",this.notificationEl).textContent=this.message,U("#notification-timer",this.notificationEl).textContent=String(this.duration),this.reqUserInput&&(U("#notification-actions",this.notificationEl).style.display="block"),document.body.append(this.notificationEl)}startTimer(){this.countdown=setInterval(()=>{this.duration--,U("#notification-timer",this.notificationEl).textContent=String(this.duration),this.duration<=0&&(clearInterval(this.countdown),this.resolvePromise&&this.resolvePromise(!1),this.hide())},1e3)}hide(){clearInterval(this.countdown),this.handlePromise&&document.removeEventListener("keydown",this.handlePromise),this.notificationEl.classList.add("slide-out"),setTimeout(()=>this.notificationEl.remove(),2e3)}show(){this.createNotificationElement(),setTimeout(()=>this.notificationEl.classList.add("slide-in"),10),this.startTimer(),this.reqUserInput&&(this.handlePromise=e=>{if(e.key==="y"||e.key==="n"){let t=e.key==="y";U(`#${e.key}`,this.notificationEl).classList.add("bounce"),this.resolvePromise(t),this.hide()}},document.addEventListener("keydown",this.handlePromise))}};u.showNotification=(s,e,t)=>{let o=new hi(s,e,t);return e?o.promise:o}});var Xu=we((Xx,Ub)=>{Ub.exports='
              ×

              Kute

              A high-performance Krunker client with enhanced features - made by [cute]

              CREDITS
              • NullDev / NulPing - Main Developer / Maintainer
              • slavcp/glorp - base
              • 6ct/clientpp - flags
              • KraXen72/crankshaft - menu timer css
              • idkr-client/idkr - tweaks
              • bigjakk/Electron-Websocket-Fix - aim-freeze fix
              • bigjakk/Krunker-Civilian-Client - matchmaker, nuke counter
              • PC7 Client and Water Client - ideas
              '});var Ju={};async function Gb(){if(document.querySelector("#aboutPopupHost"))return;let[s,e]=await Promise.all([Promise.resolve().then(()=>ue(Xu(),1)),Promise.resolve().then(()=>ue(Tn(),1))]),t=document.createElement("div");t.style=` position: fixed; top: 0; left: 0; @@ -64,37 +64,37 @@ void main() { outColor = texture(uLabel, vUv); }`;Wr=new Float32Array(4096),Ru=0 display: flex; justify-content: center; align-items: center; - `;let o=document.createElement("div");o.id="aboutPopupHost",t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=s.default;let r=n.querySelector("#aboutLogo");r&&(r.src=e.default);let i=n.querySelector("#aboutVersion");i&&(i.textContent=`Version ${d.version}`);for(let c of n.querySelectorAll("[data-url]"))c.addEventListener("click",()=>window.chrome.webview.postMessage(`open-url, ${c.getAttribute("data-url")}`));let a=new AbortController,l=()=>{a.abort(),t.remove()};n.querySelector("#aboutClose")?.addEventListener("click",l),t.addEventListener("mousedown",c=>{c.target===t&&l()}),document.addEventListener("keydown",c=>{c.key==="Escape"&&l()},{signal:a.signal}),document.body.append(t)}var fi=w(()=>{"use strict";F();d.showAboutPopup=Jb});var vi={};A(vi,{default:()=>ov});function op(){if(!document.getElementById("signedInHeaderBar"))return null;try{return localStorage.getItem("krunker_username")||null}catch{return null}}function gi(){try{return localStorage.getItem(Zb)??""}catch{return""}}var Zb,Qb,ev,tv,bi,ov,wi=w(()=>{"use strict";F();Zb="kro_setngss_endMessage",Qb="slid_endMessage",ev="playerHeaderEl",tv=500;bi=class{constructor(){this.account=void 0,this.header=new MutationObserver(()=>this.check()),this.saveTimer=0,this.editedFor=null,this.onInput=e=>{!(e.target instanceof HTMLInputElement)||e.target.id!==Qb||!this.account||(this.editedFor=this.account,clearTimeout(this.saveTimer),this.saveTimer=setTimeout(()=>this.flush(),tv))},d.settings.toggleAccountEndMessage=e=>this.toggle(e,!0),this.toggle(!!d.settings.data.accountEndMessage,!1)}get messages(){return{...d.settings.data.endMessages}}save(e){d.settings.data.endMessages=e,window.chrome.webview.postMessage(`set-config-json endMessages ${JSON.stringify(e)}`)}remember(e,t){let{messages:o}=this;(o[e]??"")!==t&&(t?o[e]=t:delete o[e],this.save(o))}flush(){clearTimeout(this.saveTimer),this.editedFor&&this.remember(this.editedFor,gi()),this.editedFor=null}check(){let e=op();if(e===this.account)return;this.flush(),this.account=e;let t=e?this.messages[e]??"":"";gi()!==t&&window.setSetting("endMessage",t)}toggle(e,t){if(this.header.disconnect(),document.removeEventListener("input",this.onInput,!0),!e){this.flush(),this.account=void 0;return}let o=op();if(t&&o){let r=gi();this.remember(o,r),d.showNotification(r?`Kept "${r}" for ${o}. Other accounts send nothing until you give them one`:`End messages are now per account, ${o} has none`,!1,6)}document.addEventListener("input",this.onInput,!0);let n=document.getElementById(ev);n?this.header.observe(n,{childList:!0}):console.error("[kute] end message: no account header"),this.check()}},ov=new bi});var sp=we((rS,sv)=>{sv.exports='

              '});var np={};A(np,{confirmPopup:()=>Ce});async function Ce(s){let e=await Promise.resolve().then(()=>ue(sp(),1)),t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default;let r=i=>n.querySelector(`#${i}`);r("confirmTitle").textContent=s.title;for(let i of s.paragraphs){let a=document.createElement("p");a.textContent=i,r("confirmText").append(a)}return r("confirmStay").textContent=s.stay,r("confirmLeave").textContent=s.leave,new Promise(i=>{let a=new AbortController,l=c=>{a.abort(),t.remove(),i(c)};r("confirmStay").onclick=()=>l(!1),r("confirmLeave").onclick=()=>l(!0),t.addEventListener("mousedown",c=>{c.target===t&&l(!1)}),document.addEventListener("keydown",c=>{c.key==="Escape"&&l(!1)},{signal:a.signal}),document.body.append(t)})}var Pt=w(()=>{"use strict"});var ip,rp=w(()=>{ip='

              Hotkeys

              Click a key, then press the new one. Escape cancels.
              Ctrl, Alt and Shift combinations work too.

              Lobby and window

              Toggles and windows

              Quick account login

              Reset to defaults
              Done
              '});var Ei={};A(Ei,{bindings:()=>gt,default:()=>bv,matches:()=>cs});function lv(){if(d.settings.data.chatLogs===!1||!d.chatLogs){d.showNotification("Chat Logs is off in the settings",!1,3);return}d.chatLogs.toggle()}function cv(s){if(d.settings.data.accountManager===!1||!d.accounts){d.showNotification("Account Manager is off in the settings",!1,3);return}d.accounts.loginSlot(s)}function yi(){return!!d.hostFeatures?.includes(rv)}function gt(){let s=yi()&&d.settings.data.hotkeys||{};return Object.fromEntries(Ln.map(e=>[e.id,s[e.id]??(e.id in s?null:e.fallback)]))}function ap(s,e){return!!e&&s.keyCode===e?.key&&s.ctrlKey===e.ctrl&&s.altKey===e.alt&&s.shiftKey===e.shift}function cs(s,e){return ap(s,gt()[e]??null)}function uv(s){let e=(t,o)=>{try{let n=window.localStorage.getItem(t);return n===null?o:Number(n)}catch{return o}};return dv.filter(([t,,o,n])=>e(`cont_${t}`,o)===s||e(`cont_${t}_alt`,n)===s).map(([,t])=>t)}function hv(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`Num ${s-96}`:s>=112&&s<=135?`F${s-111}`:pv[s]??`Key ${s}`}function mv(s){let{code:e}=s,t=e;return/^Key[A-Z]$/.test(e)?t=e.slice(3):/^Digit\d$/.test(e)?t=e.slice(5):e.startsWith("Numpad")?t=`Num ${e.slice(6)}`:e.startsWith("Arrow")?t=e.slice(5):e||(t=hv(s.keyCode)),[s.ctrlKey&&"Ctrl",s.altKey&&"Alt",s.shiftKey&&"Shift",t].filter(Boolean).join("+")}function fv(s,e,t){let o=[],n=Ln.filter(i=>{let a=t[i.id];return i.id!==s.id&&a!==null&&a.key===e.key&&a.ctrl===e.ctrl&&a.alt===e.alt&&a.shift===e.shift});n.length>0&&o.push(`Also bound to Kute's ${n.map(i=>i.label).join(", ")}, pick another key.`);let r=uv(e.key);if(r.length>0){let i=r.length>3?` and ${r.length-3} more`:"";o.push(`Krunker uses this key for ${r.slice(0,3).join(", ")}${i}, the game still gets it.`)}return o}function gv(){let s=document.activeElement;for(;s?.shadowRoot?.activeElement;)s=s.shadowRoot.activeElement;return s instanceof HTMLInputElement||s instanceof HTMLTextAreaElement||s instanceof HTMLElement&&s.isContentEditable}var rv,iv,av,Io,ki,Ln,dv,pv,xi,Si,bv,No=w(()=>{"use strict";rp();F();To();rv="hotkeys",iv=131,av=new Set(["Shift","Control","Alt","Meta","AltGraph"]);Io=(s,e)=>({key:s,ctrl:!1,alt:!1,shift:!1,name:e}),ki=s=>({id:`account${s}`,label:`Account ${s}`,note:`logs in account ${s} of the Accounts list`,group:"account",fallback:{key:48+s,ctrl:!0,alt:!0,shift:!1,name:`Ctrl+Alt+${s}`},run:()=>cv(s-1)}),Ln=[{id:"newLobby",label:"New lobby",group:"window",fallback:Io(115,"F4")},{id:"matchmaker",label:"Matchmaker",note:"new lobby while the Matchmaker setting is off",group:"window",fallback:Io(117,"F6")},{id:"reload",label:"Reload",group:"window",fallback:Io(116,"F5")},{id:"fullscreen",label:"Fullscreen",group:"window",fallback:Io(122,"F11")},{id:"devtools",label:"Developer tools",group:"window",fallback:Io(123,"F12")},{id:"toggleSpotify",label:"Spotify overlay",note:"on and off",group:"toggle",fallback:null,setting:"spotifyOverlay"},{id:"toggleKeystrokes",label:"Keystrokes",note:"on and off",group:"toggle",fallback:null,setting:"keystrokes"},{id:"chatLogs",label:"Chat logs",note:"open and close",group:"toggle",fallback:Io(112,"F1"),run:lv},ki(1),ki(2),ki(3)],dv=[["0","Forward",87,-1],["1","Back",83,-1],["2","Left",65,-1],["3","Right",68,-1],["jumpKey","Jump",32,-1],["crouchKey","Crouch",16,-1],["reloadKey","Reload",82,-1],["swapKey","Swap weapon",69,-1],["primKey","Primary weapon",84,-1],["meleeKey","Melee",81,-1],["equipKey","Equip",67,-1],["dropKey","Drop",90,-1],["inspKey","Inspect",88,-1],["wepVisKey","Hide weapon",-1,-1],["sprayKey","Spray",70,-1],["sprayWheelKey","Spray wheel",70,-1],["interactKey","Interact",71,-1],["interactSecKey","Second interact",72,-1],["confirmKey","Confirm",75,-1],["resetKey","Reset",66,-1],["resetLastKey","Reset to last",78,-1],["markPositionKey","Mark position",10002,-1],["chatKey","Chat",13,-1],["voiceKey","Voice chat",86,-1],["pListKey","Player list",18,-1],["sBoardKey","Scoreboard",9,-1],["hidePlayersKey","Hide players",-1,-1],["kickVoteYKey","Kick vote yes",49,-1],["kickVoteNKey","Kick vote no",50,-1],["kpdVoteYKey","Vote yes",89,-1],["kpdVoteNKey","Vote no",78,-1],["kpdVisionKey","Vision",187,-1],["specFreeKey","Spectate free camera",70,-1],["specObjKey","Spectate objective",72,-1],["specFirstKey","Spectate first person",82,-1],["specNamesKey","Spectate names",77,-1],["specMiniMap","Spectate minimap",189,-1],["specFocusKey","Spectate focus",190,-1],["propKey","Prop",80,-1],["propRandKey","Random prop",77,-1],["propRotKey","Rotate prop",82,-1],["propRotRKey","Rotate prop back",78,-1],["18","Streak 1",49,-1],["19","Streak 2",50,-1],["20","Streak 3",51,-1],...[0,1,2,3,4,5].map(s=>[`taunt${s}`,`Taunt ${s+1}`,49+s,-1]),...["27","28","29","30","31","32"].map((s,e)=>[s,`Toggle ${e+1}`,-1,-1]),...["43","44","45","46","47","48"].map((s,e)=>[s,`Chat message ${e+1}`,-1,-1])];pv={8:"Backspace",9:"Tab",13:"Enter",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",45:"Insert",46:"Delete"};xi=class{constructor(e){this.owner=e,this.waiting=null,this.overlay=document.createElement("div"),this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");this.overlay.append(t),this.shadow=t.attachShadow({mode:"open"}),this.shadow.innerHTML=ip,document.body.append(this.overlay),this.onKey=this.onKey.bind(this),window.addEventListener("keydown",this.onKey,!0),this.overlay.addEventListener("click",o=>{o.target===this.overlay&&this.close()}),this.element("hkDone").onclick=()=>this.close(),this.element("hkReset").onclick=()=>{this.owner.save({}),this.stopWaiting(),this.render()},this.render()}element(e){return this.shadow.querySelector(`#${e}`)}startWaiting(e){this.stopWaiting(),this.waiting=e,this.owner.capturing=!0,window.chrome.webview.postMessage("hotkeys-pause, true"),this.render()}stopWaiting(){this.waiting!==null&&(this.waiting=null,this.owner.capturing=!1,window.chrome.webview.postMessage("hotkeys-pause, false"),this.render())}assign(e,t){this.owner.save({...gt(),[e]:t}),this.stopWaiting(),this.render()}row(e,t){let o=t[e.id],n=document.createElement("div");n.className="hkRow";let r=document.createElement("div");if(r.className="hkLabel",r.textContent=e.label,e.note){let p=document.createElement("span");p.className="hkNote",p.textContent=e.note,r.append(p)}let i=this.waiting===e.id,a=document.createElement("div");a.className=`hkKey${i?" hkWaiting":""}${o?"":" hkNone"}`,a.textContent=i?"Press a key":o?.name??"No key",a.title="Click, then press the new key. Escape cancels",a.onclick=()=>this.startWaiting(e.id);let l=document.createElement("div");l.className="hkClear",l.textContent="Clear",l.style.visibility=o?"":"hidden",l.onclick=()=>this.assign(e.id,null),n.append(r,a,l);let c=o?fv(e,o,t):[];if(c.length===0)return n;let u=document.createElement("div");u.className="hkWarn",u.textContent=c.join(" ");let h=document.createElement("div");return h.append(n,u),h}render(){let e=gt();for(let t of["window","toggle","account"]){let o=Ln.filter(n=>n.group===t).map(n=>this.row(n,e));this.element(`hkGroup-${t}`).replaceChildren(...o)}}onKey(e){if(this.waiting===null){e.key==="Escape"&&this.close();return}if(e.preventDefault(),e.stopImmediatePropagation(),e.key==="Escape"){this.stopWaiting();return}av.has(e.key)||e.keyCode===iv||e.keyCode===0||this.assign(this.waiting,{key:e.keyCode,ctrl:e.ctrlKey,alt:e.altKey,shift:e.shiftKey,name:mv(e)})}close(){this.stopWaiting(),window.removeEventListener("keydown",this.onKey,!0),this.overlay.remove()}},Si=class{constructor(){this.capturing=!1,d.hotkeys={edit:()=>this.edit()},window.addEventListener("keydown",e=>this.onKey(e),!0)}onKey(e){if(this.capturing||e.repeat||gv()||!yi())return;let t=gt();for(let o of Ln)o.group==="window"||!ap(e,t[o.id])||(o.run?o.run():o.setting&&this.flip(o.setting,o.label))}flip(e,t){if(Mo(d.settings.data,e)){d.showNotification(`${t} is off in performance mode`,!1,3);return}let o=!d.settings.data[e];d.settings.changeSetting(e,o,!1),d.showNotification(`${t} ${o?"on":"off"}`,!1,2)}save(e){d.settings.data.hotkeys=e,window.chrome.webview.postMessage(`set-config-json hotkeys ${JSON.stringify(e)}`)}edit(){if(!yi()){d.showNotification("Hotkeys need a newer Kute",!1,3);return}new xi(this)}},bv=new Si});var lp=we((dS,vv)=>{vv.exports='
              ×

              Accounts

              Click an account to log in, drag ≡ to reorder
              Add account
              '});var Mi={};A(Mi,{default:()=>Mv});function It(s){let e=decodeURIComponent(s),t=e.length;return e.split("").map(o=>String.fromCharCode(o.charCodeAt(0)-t)).join("")}function up(s){let e=s.length,t=s.split("").map(o=>String.fromCharCode(o.charCodeAt(0)+e)).join("");return encodeURIComponent(t)}function ds(){try{let s=JSON.parse(localStorage.getItem(us)||"[]");return Array.isArray(s)?s:[]}catch{return[]}}function $v(s){return typeof s=="string"&&/^#[\da-f]{6}$/i.test(s)?s:wv}function Cv(s){let e=Number.parseInt(s.slice(1),16),t=e>>16&255,o=e>>8&255,n=e&255;return t*.299+o*.587+n*.114>150?"#111":"#fff"}function pp(s,e,t){let o=$v(e);s.style.background=o,s.style.color=Cv(o),s.textContent=t.trim().slice(0,1)||"?"}var us,wv,$i,kv,cp,yv,xv,Sv,Ev,dp,Ci,Mv,Ti=w(()=>{"use strict";F();Ae();Pt();yn();No();us="accounts",wv="#35e0e8",$i="kute_account_switch",kv=12e4,cp=3e4,yv=3e3,xv=2e4,Sv=3e3,Ev=5e3,dp=s=>new Promise(e=>{setTimeout(e,s)});Ci=class{constructor(){this.button=document.createElement("div"),this.button.textContent="Accounts",this.button.classList.add("button","buttonB","bigShadowT"),this.button.style.cssText="display: block; padding-top: 7px; padding-bottom: 22px; font-size: 25px!important; padding-bottom: 22px; margin-top: 7px; height: 21px; line-height: 35px; width: 162px; font-size:20px!important; margin-left: 3px;",this.headerSeparator=document.createElement("div"),this.headerSeparator.style.cssText="width: 4px; height: 35px; margin: 0 6px; background: rgba(255, 255, 255, 0.12); flex-shrink: 0;",this.headerItem=document.createElement("div"),this.headerItem.style.cssText="display: flex; align-items: center; gap: 8px; padding: 8px 12px; cursor: pointer; color: #fff; font-weight: 700; font-size: 16px; white-space: nowrap;",this.headerItem.innerHTML='switch_accountAccounts',this.headerObserver=new MutationObserver(()=>this.placeButton()),this.overlay=null,this.shadow=null,this.menuController=null,this.asking=!1,this.accounts=[],this.legacy=!1,this.lastQuickLogin=0,this.suppressClick=!1,d.settings.toggleAccountManager=e=>this.toggle(e),d.accounts={loginSlot:e=>this.loginSlot(e)},this.toggle(!0),this.load()}async load(){let e=ds(),t=null;if(e.length>0){let o=e.filter(n=>typeof n?.username=="string"&&typeof n?.password=="string").map(n=>({username:It(n.username),password:It(n.password),color:n.color}));t=await Te(`accounts-migrate ${JSON.stringify(o)}`,"accounts",5e3),t!==null&&localStorage.removeItem(us)}else t=await Te("accounts-list","accounts");t===null?(this.legacy=!0,this.accounts=e.map(o=>({username:It(o.username),color:o.color}))):this.accounts=t,this.renderAccounts(),this.resumeSwitch()}resumeSwitch(){let e=sessionStorage.getItem($i);if(e===null)return;sessionStorage.removeItem($i);let t={};try{t=JSON.parse(e)??{}}catch{return}if(Date.now()-Number(t.at)>kv||localStorage.getItem("krunker_token")!==null)return;let o=this.accounts.find(n=>n.username===t.username);o&&this.login(o)}async send(e,t){let o=await Te(`accounts-${e} ${JSON.stringify(t)}`,"accounts");o!==null&&(this.accounts=o,this.renderAccounts())}gameUpdateListener=e=>{e.data==="game-updated"&&setTimeout(()=>{Oe()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.button.style.cssText="display: block; padding: 14px 24px 22px; bottom: 0; right: 0; z-index: 9; font-size: 21px !important; position: absolute;",U("#compBtnLst").append(this.button))},2e3)};toggle(e){if(e)if(window.chrome.webview.addEventListener("message",this.gameUpdateListener),this.button.addEventListener("click",this.openMenu),this.headerItem.addEventListener("click",this.openMenu),Oe())window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.button.style.cssText="display: block; padding: 14px 24px 22px; bottom: 0; right: 0; z-index: 9; font-size: 21px !important; position: absolute;",U("#compBtnLst").append(this.button);else{this.placeButton();let t=document.querySelector("#playerHeaderEl");t&&this.headerObserver.observe(t,{childList:!0,subtree:!0})}else window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.headerObserver.disconnect(),this.button.removeEventListener("click",this.openMenu),this.headerItem.removeEventListener("click",this.openMenu),this.button.remove(),this.headerSeparator.remove(),this.headerItem.remove(),this.closeMenu()}placeButton(){let e=document.querySelector("#playerHeaderEl .headerBarRight");if(e){if(e.firstElementChild!==this.headerItem){let n=[...e.querySelector(".nav-item")?.classList??[]].find(r=>r.startsWith("svelte-"))??"";this.headerItem.style.cssText="",this.headerItem.className=`nav-item ${n}`,this.headerItem.innerHTML=`switch_account Accounts`,this.headerSeparator.className="verticalSeparator",this.headerSeparator.style.cssText="height: 35px;",e.prepend(this.headerItem,this.headerSeparator)}this.button.remove();return}let t=document.querySelector("#signedInHeaderBar");if(t){t.contains(this.headerItem)||t.append(this.headerSeparator,this.headerItem);return}let o=document.querySelector("#signedOutHeaderBar");o&&!o.contains(this.button)&&o.append(this.button)}openMenu=()=>{this.overlay||this.buildMenu().catch(e=>console.error("[kute] accounts:",e))};async buildMenu(){let e=await Promise.resolve().then(()=>ue(lp(),1));if(this.overlay)return;let t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default,this.overlay=t,this.shadow=n;let r=new AbortController;this.menuController=r,U("#accClose",n).onclick=()=>this.closeMenu(),U("#accAdd",n).onclick=()=>this.showForm(!0),U("#accCancel",n).onclick=()=>this.showForm(!1),U("#accSave",n).onclick=()=>this.saveAccount(),U("#accFormHint",n).textContent=this.legacy?"Saved on this PC only":"Saved encrypted on this PC, never sent anywhere";let i=ke("#accUsername",n),a=ke("#accColor",n);i.oninput=()=>this.updatePreview(),a.oninput=()=>this.updatePreview();for(let l of[i,ke("#accPassword",n)])l.onkeydown=c=>{c.key==="Enter"&&this.saveAccount()};for(let l of["keydown","keyup","keypress"])n.addEventListener(l,c=>c.stopPropagation());t.addEventListener("mousedown",l=>{l.target===t&&this.closeMenu()}),document.addEventListener("keydown",l=>{l.key!=="Escape"||this.asking||(l.stopPropagation(),U("#accFormView",n).hidden?this.closeMenu():this.showForm(!1))},{signal:r.signal,capture:!0}),this.renderAccounts(),this.resetForm(),document.body.append(t)}closeMenu(){this.menuController?.abort(),this.menuController=null,this.overlay?.remove(),this.overlay=null,this.shadow=null}showForm(e){this.shadow&&(U("#accListView",this.shadow).hidden=e,U("#accFormView",this.shadow).hidden=!e,e&&(this.resetForm(),ke("#accUsername",this.shadow).focus()))}renderAccounts(){let{shadow:e}=this;if(!e)return;let t=U("#accList",e);t.textContent="";for(let n of this.accounts){let r=document.createElement("div");r.className="accRow",r.dataset.username=n.username,r.title=`Log in as ${n.username}`,r.onclick=()=>{this.suppressClick||this.login(n)};let i=document.createElement("div");i.className="accHandle",i.textContent="\u2261",i.title="Drag to reorder",i.onclick=p=>p.stopPropagation(),i.onpointerdown=p=>this.startDrag(p,r);let a=document.createElement("div");a.className="accIndex";let l=document.createElement("div");l.className="accAvatar",pp(l,n.color,n.username);let c=document.createElement("div");c.className="accName",c.textContent=n.username;let u=document.createElement("div");u.className="accRemove",u.textContent="\xD7",u.title="Remove",u.onclick=p=>{p.stopPropagation(),this.removeAccount(n).catch(f=>console.error("[kute] accounts:",f))};let h=document.createElement("div");h.className="accKey",r.append(i,a,l,c,h,u),t.append(r)}this.renumber(t);let o=this.accounts.length===0;U("#accEmpty",e).hidden=!o,U("#accListHint",e).hidden=o}renumber(e){let t=gt();[...e.children].forEach((o,n)=>{U(".accIndex",o).textContent=String(n+1),U(".accKey",o).textContent=t[`account${n+1}`]?.name??""})}canReorder(){return this.legacy||!!d.hostFeatures?.includes("accounts-order")}startDrag(e,t){if(e.button!==0)return;if(e.preventDefault(),!this.canReorder()){d.showNotification("Reordering accounts needs a newer Kute",!1,3);return}let o=t.parentElement,n=[...o.children].map(a=>a.dataset.username);t.classList.add("accDragging");let r=a=>{let l=[...o.children].filter(p=>p!==t),c=l.find(p=>{let f=p.getBoundingClientRect();return a.clientY!!(t.compareDocumentPosition(p)&Node.DOCUMENT_POSITION_PRECEDING)).length;if(u!==h){for(let p of l.slice(0,u))o.insertBefore(p,t);for(let p of l.slice(u))o.append(p);this.renumber(o)}},i=()=>{window.removeEventListener("pointermove",r,!0),window.removeEventListener("pointerup",i,!0),window.removeEventListener("pointercancel",i,!0),t.classList.remove("accDragging"),this.suppressClick=!0,setTimeout(()=>{this.suppressClick=!1});let a=[...o.children].map(l=>l.dataset.username??"");a.some((l,c)=>l!==n[c])&&this.saveOrder(a)};window.addEventListener("pointermove",r,!0),window.addEventListener("pointerup",i,!0),window.addEventListener("pointercancel",i,!0)}saveOrder(e){let t=o=>{let n=e.indexOf(o);return n===-1?e.length:n};if(this.accounts.sort((o,n)=>t(o.username)-t(n.username)),this.legacy){let o=ds().sort((n,r)=>t(It(n.username))-t(It(r.username)));localStorage.setItem(us,JSON.stringify(o));return}this.send("order",e)}loginSlot(e){let t=this.accounts[e];if(!t){d.showNotification(`No account saved in slot ${e+1}`,!1,3);return}if(localStorage.getItem("krunker_token")!==null&&localStorage.getItem("krunker_username")===t.username){d.showNotification(`Already logged in as ${t.username}`,!1,2);return}Date.now()-this.lastQuickLoginconsole.error("[kute] accounts:",o)))}updatePreview(){if(!this.shadow)return;let e=ke("#accUsername",this.shadow).value,t=ke("#accColor",this.shadow).value;pp(U("#accPreviewAvatar",this.shadow),t,e),U("#accPreviewName",this.shadow).textContent=e.trim()||"Username"}resetForm(){this.shadow&&(ke("#accColor",this.shadow).value=`#${Math.floor(Math.random()*16777215).toString(16).padStart(6,"0")}`,ke("#accUsername",this.shadow).value="",ke("#accPassword",this.shadow).value="",U("#accError",this.shadow).textContent="",this.updatePreview())}saveAccount(){if(!this.shadow)return;let e=ke("#accUsername",this.shadow).value.trim(),t=ke("#accPassword",this.shadow).value,o=ke("#accColor",this.shadow).value,n=U("#accError",this.shadow);if(e===""){n.textContent="Enter a username";return}if(t===""){n.textContent="Enter a password";return}if(this.accounts.some(r=>r.username===e)){n.textContent=`${e} is already saved`;return}if(this.legacy){let r=ds();r.push({username:up(e),password:up(t),color:o}),localStorage.setItem(us,JSON.stringify(r)),this.accounts.push({username:e,color:o}),this.renderAccounts()}else this.send("add",{username:e,password:t,color:o});this.showForm(!1)}async removeAccount(e){this.asking=!0;let t=await Ce({title:"Remove account",paragraphs:[`${e.username} gets removed from this list.`,"The Krunker account itself is not touched."],stay:"Keep",leave:"Remove"});if(this.asking=!1,!t)return;let o=this.accounts.findIndex(n=>n.username===e.username);o!==-1&&(this.legacy?(localStorage.setItem(us,JSON.stringify(ds().filter(n=>It(n.username)!==e.username))),this.accounts.splice(o,1),this.renderAccounts()):this.send("remove",{username:e.username}))}async login(e){this.closeMenu();let t=window.FRVR?.auth,o=localStorage.getItem("krunker_token")!==null;if(typeof t?.loginAsAnonymous!="function"||typeof t.isLoggedIn!="function"){if(o){sessionStorage.setItem($i,JSON.stringify({username:e.username,at:Date.now()})),window.logoutAcc(),Ro();return}}else{if(o){kn(cp),window.logoutAcc();for(let n=0;nconsole.error("[kute] accounts:",n))}window.loginOrRegister(),queueMicrotask(()=>{let n=U(".auth-toggle-btn");n.textContent?.includes("username")&&n.click(),queueMicrotask(()=>{if(this.legacy){this.legacyLogin(e.username);return}this.send("login",{username:e.username})})})}async finishSwitch(e){let t=0;for(let o=0;o=Sv)){kn(cp),Ro();return}}}legacyLogin(e){let t=ds().find(r=>It(r.username)===e);if(!t)return;let o=ke("#accName"),n=ke("#accPass");o.value=e,n.value=It(t.password),o.dispatchEvent(new Event("input",{bubbles:!0})),n.dispatchEvent(new Event("input",{bubbles:!0})),U(".io-button").click()}},Mv=new Ci});var mp={};A(mp,{default:()=>he});var Tv,Av,Lv,Ai,hp,he,Nt=w(()=>{"use strict";F();Tv=4e3,Av=5e3,Lv=3,Ai=class{constructor(){this.base=typeof d.apiBase=="string"?d.apiBase:"https://kute.lol/api",this.health=null,this.down=!1,this.failures=0,this.listeners=new Set,d.settings.toggleDisableOnlineFeatures=e=>this.setOffline(e)}offline(){return d.settings?.data?.disableOnlineFeatures===!0}setOffline(e){this.health=e?Promise.resolve(!1):null,this.down=e,this.failures=0;for(let t of this.listeners)t(!e)}available(){return this.health??=this.check(),this.health}retry(){return this.health=null,this.down=!1,this.failures=0,this.available()}async check(){if(await Ne,this.offline())return this.down=!0,!1;try{let e=await fetch(`${this.base}/health`,{cache:"no-store",signal:AbortSignal.timeout(Tv)}),t=e.ok?await e.json():null;this.down=t?.ok!==!0}catch{this.down=!0}return!this.down}async request(e,t={}){let{data:o}=await this.requestStatus(e,t);return o}async requestStatus(e,t={}){if(!await this.available()||this.down||this.offline())return{status:0,data:null};try{let o=AbortSignal.timeout(Av),n=t.signal?AbortSignal.any([t.signal,o]):o,r=await fetch(this.base+e,{...t,signal:n});r.status>=500?this.failed():r.ok&&(this.failures=0);let i=await r.json().catch(()=>null),a=r.headers.get("Retry-After"),l=0;a!==null&&(l=/^\d+(\.\d+)?$/.test(a)?Date.now()+Number(a)*1e3:Date.parse(a));let c=Number(r.headers.get("X-RateLimit-Reset"))*1e3,u=Math.max(l||0,c||0,Number(i?.resetAt)||0),h=r.status===429?Math.max(Date.now()+1e3,u||Date.now()+6e4):void 0;return{status:r.status,data:r.ok?i:null,error:r.ok?null:i,retryAt:h}}catch{return t.signal?.aborted||this.failed(),{status:0,data:null}}}failed(){this.failures++,this.failures>=Lv&&(this.down=!0)}},hp=new Ai;d.api=hp;he=hp});var bp={};var gp,Rv,Pv,fp,Li=w(()=>{"use strict";F();Ae();gp=async s=>{window.openHostWindow(!1,1),await $e(".hostTb0");let e=document.querySelector(`#${s.mapId}`);if(!e){let c=document.querySelectorAll(".hostMap .hostMapName"),u=Array.from(c).find(h=>h.innerText.trim().toLowerCase()===s.mapId.toLowerCase());u&&(e=u.parentElement?.querySelector('input[type="checkbox"]')??null)}if(!e)return;e.checked||e.click(),windows[7].switchTab(2);let t=await $e("#customSnameTeam1");t.value=s.team1Name;let o=await $e("#customSnameTeam2");o.value=s.team2Name;let n=await $e("#customStmSize"),r={"1v1":"0","2v2":"1","3v3":"2","4v4":"3"};if(s.team1Players){let c=await $e("#compRosterT1");c.value=s.team1Players}if(s.team2Players){let c=await $e("#compRosterT2");c.value=s.team2Players}if(s.spectators){let c=await $e("#compRosterSpecs");c.value=s.spectators}let i=await $e("#customSspecSlots");i.value="4";let a=["ak","sniper","smg","lmg","shotgun","rev","semi","rpg","uzi","runner","deagler","crossbow","famas","blaster","survivor","infiltrator"];if(s.classes){let c=JSON.parse(s.classes);for(let[u,h]of Object.entries(c)){let p=a.indexOf(u),f=await $e(`#customSclassLim${p}`);f.value=String(h)}}let l=r[s.teamSize]||s.teamSize;if(n.value=l,s.webhook)try{let c=await $e("#customSwebhook");c.value=decodeURIComponent(s.webhook)}catch{}window.createPrivateRoom()},Rv=async s=>{let e={FRA:"de-fra",SV:"us-ca-sv",SYD:"au-syd",TOK:"jb-hnd",SIN:"sgp",NY:"us-nj",MUM:"as-mb",DAL:"us-tx",BR:"brz",ME:"me-bhn"},t=e[s.toUpperCase()]||s;window.showWindow(1);let o=document.querySelector("select.inputGrey2");if(!o){typeof window.setSetting=="function"&&window.setSetting("defaultRegion",t);return}let n=Object.values(e),r=Array.from(document.querySelectorAll("select.inputGrey2")).find(i=>Array.from(i.options).some(a=>n.includes(a.value)))||o;if(r&&r.value!==t){let i=Array.from(r.options).findIndex(a=>a.value===t);i!==-1&&(r.selectedIndex=i,r.dispatchEvent(new Event("change",{bubbles:!0,cancelable:!0})))}window.showWindow(1)},Pv=s=>{let e=s.includes("?")?s.split("?")[1]:s;return Object.fromEntries(new URLSearchParams(e).entries())},fp=sessionStorage.getItem("pendingCompHost");if(fp){sessionStorage.removeItem("pendingCompHost");let s=JSON.parse(fp);gp(s)}d.parseArgs=async s=>{let e=s.split(" ");for(let t of e)if(t.includes("action=host-comp")){let o=Pv(t);o.region?(sessionStorage.setItem("pendingCompHost",JSON.stringify(o)),await Rv(o.region),window.location.href="https://krunker.io/"):await gp(o)}};window.chrome.webview.addEventListener("message",async s=>{s.data?.args&&await d.parseArgs(s.data.args)})});var wp={};A(wp,{CLOCK_MS:()=>Iv,EXPERIENCE:()=>ps,IMPORTANT_SHARE:()=>hs,TARGET_REFRESH_MULTIPLE:()=>vt,accept:()=>ks,atLimit:()=>zo,capCandidates:()=>Hi,choose:()=>gs,chooseCap:()=>Bi,collapses:()=>vs,compare:()=>Ii,experienceHolds:()=>Nv,flooding:()=>ws,guard:()=>io,headroom:()=>zi,refineCaps:()=>Oi,screen:()=>Ni,stalled:()=>bs,steady:()=>ao,steadyLimit:()=>_i,steadyRungs:()=>Rn,summarize:()=>ye,unsteady:()=>bt,wins:()=>Bo});function Pi(s){let e=[...s].sort((o,n)=>o-n),t=Math.floor(e.length/2);return e.length%2===1?e[t]:(e[t-1]+e[t])/2}function ye(s){let e=s.filter(o=>!o.invalid),t={};for(let o of _o){let r=e.map(c=>c[o]).filter(c=>typeof c=="number"&&Number.isFinite(c)),i=[Math.min(...r),Math.max(...r)],[a,l]=ms.has(o)?i:i.reverse();t[o]={n:r.length,median:r.length>0?Pi(r):null,spread:r.length>1?Math.abs(l-a):null,worst:r.length>0?a:null,best:r.length>0?l:null}}return t}function fs(s){return s==="fps"?0:2*.1}function Ii(s,e,t){let o=e[s],n=t[s];if(o.median===null||n.median===null||o.spread===null||n.spread===null)return"unknown";let r=ms.has(s)?o.median-n.median:n.median-o.median,i=Math.max(o.spread,n.spread,fs(s)),a=Math.max(Math.abs(o.median),Math.abs(n.median))*.1;return Math.abs(r)<=i||Math.abs(r)0?"better":"worse"}function io(s,e,t,o=fs(s)){let n=e[s],r=t[s];if(n.n<2||typeof n.worst!="number"||r.median===null||r.spread===null)return"unknown";let i=ms.has(s)?r.median-n.worst:n.worst-r.median,a=Math.max(Math.abs(n.worst),Math.abs(r.median))*.1;return i>Math.max(r.spread,o)&&i>=a?"worse":"ok"}function Bo(s,e,t){let o=e[s],n=t[s];if(o.n<2||n.n<2||typeof o.worst!="number"||typeof n.best!="number")return!1;let r=ms.has(s)?o.worst-n.best:n.best-o.worst;return r>fs(s)&&r>=Math.max(Math.abs(o.worst),Math.abs(n.best))*.1}function Ni(s,e){if(s.invalid)return"same";let t=!1;for(let o of _o){let n=s[o],r=e[o];if(typeof n!="number"||r.median===null||r.spread===null)continue;let i=ms.has(o)?n-r.median:r.median-n,a=Math.max(Math.abs(n),Math.abs(r.median))*.1;if(!(Math.abs(i)<=Math.max(r.spread,fs(o))||Math.abs(i)0&&(t=!0)}}return t?"contender":"same"}function gs(s,e,t={}){let o=ye(s.readings),n=e.map(c=>{let u=ye(c.readings),h={};for(let m of _o)h[m]=Ii(m,u,o);let p=ps.some(m=>io(m,u,o)==="worse"),f=ps.find(m=>Bo(m,u,o))??null;return f===null&&t.fpsCounts!==!1&&Bo("fps",u,o)&&(f="fps"),{id:c.id,summary:u,verdicts:h,rejected:p,decidedBy:f}}),r=n.length>0&&n.every(c=>_o.every(u=>c.verdicts[u]==="unknown")),i=c=>c.decidedBy===null?_o.length:_o.indexOf(c.decidedBy),l=n.filter(c=>!c.rejected&&c.decidedBy!==null).sort((c,u)=>i(c)-i(u))[0]??null;return{winner:l?.id??s.id,changed:l!==null,inconclusive:r,decidedBy:l?.decidedBy??null,incumbent:o,judged:n}}function bs(s){return!s.invalid&&typeof s.stallMs=="number"&&s.stallMs>1e3*.1}function bt(s,e){return s.some(t=>bs(t)||!t.invalid&&e>0&&typeof t.fps=="number"&&t.fps!t.invalid).length>=2&&!bt(s,e)}function vs(s){return[...s.values()].some(e=>e.filter(bs).length>=2)}function Rn(s){return Array.from({length:4},(e,t)=>(t+1)*s)}function _i(s,e){let t=null,o=null;for(let n of Rn(s)){if(!ao(e.get(n)??[],n))break;t=o??n,o=n}return{cap:t,steadyUpTo:o}}function ws(s){let{presentMs:e,p50:t}=s;return typeof e!="number"||typeof t!="number"?!1:e-t>Math.max(2*.1,e*.1)}function zo(s){let e=s.p50,t=r=>typeof r=="number"&&typeof e=="number"?Math.max(0,r-e):null,o=ws(s)?s.presentMs-e:0,n=typeof s.inputP99=="number"?s.inputP99+o:s.inputP99;return{...s,fps:null,p99:t(s.p99),maxMs:t(s.maxMs),inputP99:n}}function vp(s){return s==="p99"||s==="maxMs"?4*.1:fs(s)}function Bi(s,e,t={}){let o=p=>ye((s.get(p)??[]).map(zo)),n=p=>{let f=(s.get(p)??[]).filter(m=>!m.invalid).map(m=>m.p50).filter(m=>typeof m=="number");return f.length>0?Pi(f):null},r=o(e),i=n(e),a=new Map,l=[...s.keys()].map(p=>{let f=o(p),m=n(p);if(p===e)return{cap:p,summary:f,frameMs:m,netMs:null,outcome:"yours"};if(bt(s.get(p)??[],p))return{cap:p,summary:f,frameMs:m,netMs:null,outcome:"not steady"};let g=Object.fromEntries(Ri.map(H=>[H,Ii(H,f,r)])),b=e===0||p>0&&pBo(H,f,r)?(r[H].median??0)-(f[H].median??0):0,E=k("taskP99"),L=t.trade===!0&&io("inputP99",f,r)==="worse"?(f.inputP99.median??0)-(r.inputP99.median??0):0,x=g.inputP99==="unknown"?null:k("inputP99")-L,$=E+(x??i-m);a.set(p,E+(x??0));let I=L>0&&E>L,_="not better";return Ri.some(H=>(H!=="inputP99"||!I)&&io(H,f,r,vp(H))==="worse")?_="worse":$>2*.1&&(_="better"),{cap:p,summary:f,frameMs:m,netMs:$,gains:{task:E,input:x},outcome:_}}),c=l.filter(p=>p.outcome==="better").sort((p,f)=>(f.netMs??0)-(p.netMs??0));if(c.length>0)return{winner:c[0].cap,changed:!0,decidedBy:"net",judged:l};let u=l.find(p=>p.cap===t.prefer&&p.cap!==e),h=u!==void 0&&(e===0||u.capu.filter(h=>!h.invalid);if(r(s).length<2)return{keep:!1,failed:"reference"};if(r(e).length<2)return{keep:!1,failed:"result"};let i=ye(s.map(zo)),a=ye(e.map(zo)),l=io("fps",ye(e),ye(s))==="worse";if(bt(e,o)&&!(bt(s,t)&&Bo("stallMs",a,i)&&!l))return{keep:!1,failed:"unsteady"};let c;for(let u of Ri){let h=io(u,a,i,vp(u));if(h==="worse"&&u==="inputP99"&&n&&Bo("taskP99",a,i)){let p=(i.taskP99.median??0)-(a.taskP99.median??0),f=(a.inputP99.median??0)-(i.inputP99.median??0);if(p>f){c={task:p,input:f};continue}}if(h==="worse")return{keep:!1,failed:u};if(h==="unknown"&&u!=="inputP99")return{keep:!1,failed:"reference"}}if(io("inputP99",a,i)==="unknown"){let u=p=>Pi(r(p).map(f=>f.p50??0));if(u(e)-u(s)>Math.max(2*.1,u(e)*.1))return{keep:!1,failed:"frame"}}return t===o&&l?{keep:!1,failed:"fps"}:{keep:!0,failed:null,...c?{traded:c}:{}}}function zi(s,e){return 1+Math.max(2*Math.abs(1-s),e)}function Nv(s,e){let t=1e3/e,o=s.p99.median,n=s.stallMs.median;return(o===null||o<=t)&&(n===null||n<=t)}function Hi({hz:s,capacity:e,current:t}){let o=i=>e===null||i<=e,n=[3*s,2*s,s].filter(o);return e!==null&&n.push(Math.round(e*.9)),t>0&&n.push(t),[0,...[...new Set(n.map(i=>Math.round(i)).filter(i=>i>0))].sort((i,a)=>a-i)]}function Oi(s,e,t,o){let n=l=>l===0?t??1/0:l,r=[...new Set(s)].sort((l,c)=>n(l)-n(c)),i=r.indexOf(e),a=[];for(let l of[r[i-1],r[i+1]]){if(l===void 0)continue;let c=(n(e)+n(l))/2;Number.isFinite(c)&&a.push(Math.round(c/o)*o)}return[...new Set(a)].filter(l=>l>0&&l!==e&&!s.includes(l))}var hs,vt,Iv,ps,_o,ms,Ri,ys=w(()=>{"use strict";hs=.1,vt=3,Iv=.1,ps=["taskP99","inputP99","p99","stallMs","maxMs"],_o=[...ps,"fps"],ms=new Set(["fps"]);Ri=["taskP99","inputP99","p99","stallMs","maxMs"]});var xp={};A(xp,{PIPELINE:()=>Fe,cancel:()=>Di,currentPipeline:()=>In,measureCaps:()=>Ki,searchPipeline:()=>qi});function In(){return Object.fromEntries(Fe.map(s=>[s.setting,(d.running?.[s.setting]??d.settings.data[s.setting])!==!1]))}function yp(s,e){return s!=="hardFlip"||!e.hardFlip?null:d.settings.data.obsCapturePlugin===!0?"kept, OBS capture needs it":null}function dt(s,e){let t=Fe.map(r=>`${r.key}=${s[r.setting]?1:0}`),o=Bv.map(r=>`${r.key}=${d.settings.data[r.setting]??r.fallback?1:0}`),n=`limiter=${d.settings.data.patchFrameLimiter===!1?"hook":"viz"}`;return[...t,...o,n,e].filter(r=>r!=="").join(",")}function Fi(s,e,t){let o=n=>typeof n=="number"&&Number.isFinite(n)?n:null;return{fps:o(s?.fps),p50:o(s?.p50),p99:o(s?.p99),maxMs:o(s?.maxMs),stallMs:o(s?.stallMs),taskP99:o(e?.p99),inputP99:null,presentMs:o(t?.p50),invalid:!s||!(s.fps>0)}}function xs(s,e){let t=Date.now()*100+ ++Fv%100;return new Promise(o=>{let n={timer:0},r=i=>{i.data?.benchMatrix===void 0||i.data.benchRun!==t||(clearTimeout(n.timer),window.chrome.webview.removeEventListener("message",r),o(i.data.cancelled?null:i.data.benchMatrix))};n.timer=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),window.chrome.webview.postMessage("bench-cancel"),o(null)},e),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(`run-bench-matrix ${t} ${JSON.stringify(s)}`)})}function Di(){window.chrome.webview.postMessage("bench-cancel")}async function qi({hz:s,progress:e,cancelled:t}){let o=In();e("Testing the client (1 of 4)",0);let n=await xs([dt(o,`hz=${s}`)],Pn),r=Fi(n?.[0]?.page?.stats,n?.[0]?.page?.otherTasks);if(t()||r.invalid||r.fps===null)return null;let i=n?.[0]?.page?.load,a=Math.min(kp[1],Math.max(kp[0],r.fps/(s*3))),l=`hz=${s},draws=${Math.round(i.draws*a)},cpu=${Math.round(i.cpuIterations*a)}`,c=Fe.filter($=>yp($.setting,o)===null).map($=>({entry:$,pipeline:{...o,[$.setting]:!o[$.setting]}}));e("Testing the client (2 of 4)",.15);let u=await xs([dt(o,l),...c.map($=>dt($.pipeline,l)),dt(o,l)],Pn*(c.length+2));if(t()||u===null)return null;let h=$=>Fi($?.page?.stats,$?.page?.otherTasks,$?.present),p=[h(u[0]),h(u[u.length-1])],f=ye(p),m=_v.some($=>{let{median:I,spread:_}=f[$];return I!==null&&_!==null&&_>Math.abs(I)*.1}),g=[{id:"current",label:"As you had it",pipeline:o,readings:p,outcome:"current"}];for(let $ of Fe){let I=yp($.setting,o);I!==null&&g.push({id:$.setting,label:`${$.label} off`,pipeline:o,readings:[],outcome:I})}let b=[];for(let[$,I]of c.entries()){let _=h(u[$+1]),H=_.invalid?"failed":Ni(_,f);m&&!_.invalid&&(H="contender");let G=`${I.entry.label} ${I.pipeline[I.entry.setting]?"on":"off"}`,J={id:I.entry.setting,label:G,pipeline:I.pipeline,readings:[_],outcome:Ov[H]};g.push(J),H==="contender"&&b.push(J)}if(b.length===0)return{winner:o,changed:!1,decidedBy:null,rows:g,common:l,capacity:f.fps.median};e("Testing the client (3 of 4)",.55);let v=await xs([...b.map($=>dt($.pipeline,l)),dt(o,l)],Pn*(b.length+1));if(t()||v===null)return null;for(let[$,I]of b.entries())I.readings.push(h(v[$]));p.push(h(v[v.length-1]));let k=gs({id:"current",readings:p},b.map($=>({id:$.id,readings:$.readings})));for(let $ of b){let I=k.judged.find(_=>_.id===$.id);$.outcome="not better",I?.rejected?$.outcome="worse":I?.decidedBy&&($.outcome="better")}let E=b.filter($=>$.outcome==="better"),L=g.find($=>$.id===k.winner)??g[0];if(E.length>1){e("Testing the client (4 of 4)",.8);let $={...o};for(let J of E)$[J.id]=J.pipeline[J.id];let I=await xs([dt($,l),dt(o,l),dt($,l)],Pn*3);if(t()||I===null)return null;p.push(h(I[1]));let _={id:"combined",label:E.map(J=>J.label).join(" and "),pipeline:$,readings:[h(I[0]),h(I[2])],outcome:"not better"};g.push(_);let H=gs({id:L.id,readings:L.readings},[{id:_.id,readings:_.readings}]),G=gs({id:"current",readings:p},[{id:_.id,readings:_.readings}]);H.changed&&G.changed&&(_.outcome="better",L=_,k=G)}let x=L.id!=="current";return{winner:L.pipeline,changed:x,decidedBy:x?k.decidedBy:null,rows:g,common:l,capacity:ye(L.readings).fps.median}}async function Ki({pipeline:s,common:e,caps:t,cancelled:o}){let n=`${dt(s,e)},caps=${t.join(".")},rounds=2,ms=${Hv}`,i=(await xs([n],zv))?.[0]?.page?.caps;if(o()||!Array.isArray(i))return null;let a=new Map(t.map(l=>[l,[]]));for(let l of i)a.get(Number(l.cap))?.push(Fi(l.stats,l.otherTasks));return a}var _v,Fe,Bv,Pn,zv,Hv,kp,Ov,Fv,ji=w(()=>{"use strict";F();ys();_v=["fps","taskP99","p99"],Fe=[{setting:"hardFlip",key:"hook",label:"DXGI Swapchain Hook"},{setting:"patchFramePacing",key:"pacing",label:"Frame Pacing"},{setting:"patchCanvasBufferCache",key:"canvas",label:"WebGL Buffer Cache"},{setting:"patchHighQoS",key:"qos",label:"Game Process at High QoS"}].filter(s=>d.platform!=="linux"||s.setting!=="hardFlip"&&s.setting!=="patchHighQoS"),Bv=[{setting:"patchInputPriority",key:"inprio",fallback:!0},{setting:"patchRawInputMovement",key:"rawinput",fallback:!0},{setting:"patchAudioParamCoalesce",key:"coalesce",fallback:!0},{setting:"audioFix",key:"panner",fallback:!1},{setting:"uncapFps",key:"uncap",fallback:!0}],Pn=2e4,zv=7e4,Hv=1500,kp=[.25,16],Ov={contender:"better",same:"not better",worse:"worse",failed:"failed"};Fv=0});var Ep={};A(Ep,{MIN_RESOLUTION:()=>Ss,SIGNIFICANT_RESOLUTION:()=>Sp,SIGNIFICANT_SETTING:()=>Nn,decide:()=>_n});function _n({capacity:s,hz:e,headroom:t,halfResolutionGain:o,settings:n}){let r=e*3,i=r*t,a=s>=i,l="unknown";o!==null&&(l=o>=Sp?"gpu":"cpu");let c=[],u=s;if(!a){let h=n.filter(p=>p.gain!==null&&p.steady&&p.current!==p.cheap&&p.gain>=Nn).sort((p,f)=>(f.gain??0)-(p.gain??0));for(let p of h){if(u>=i)break;let f=p.gain??1;u*=f,c.push({id:p.id,label:p.label,value:p.cheap,reason:`measured +${Math.round((f-1)*100)} %`})}}return{target:r,needed:i,holds:a,regime:l,predictedFps:u,tuneResolution:!a&&l==="gpu"&&u{"use strict";ys();Nn=1.05,Sp=1.1,Ss=.75});var Xi={};A(Xi,{ALL_IDS:()=>Wi,GAME_FRAME_CAP:()=>kt,PRESET:()=>Gi,RESOLUTION:()=>lo,SETTINGS:()=>wt,label:()=>Vi,opposite:()=>Yi,read:()=>$s,resetCache:()=>Bn,write:()=>Me});function Vi(s){return wt.find(e=>e.id===s)?.label??s}function Dv(){if(Es)return Es;let s=window.windows[0],e=s.tabIndex,t=s.settingType,o="";try{s.settingType="advanced";for(let n=0;n{"use strict";wt=[{id:"postProcessing",label:"Post Processing",cheap:!1},{id:"shadowsDynamic",label:"Dynamic Shadows",cheap:!1},{id:"softShad",label:"Soft Shadows",cheap:!1,needsReload:!0},{id:"highResShad",label:"High-Res Shadows",cheap:!1,needsReload:!0},{id:"shadows",label:"Shadows",cheap:!1},{id:"antiAlias",label:"Antialiasing",cheap:!1,needsReload:!0},{id:"reflection",label:"Reflection Quality",cheap:"1",needsReload:!0},{id:"lighting",label:"Lighting",cheap:"0",needsReload:!0},{id:"weaponShine",label:"Weapons Shine",cheap:!1},{id:"ambientShading",label:"Old Shading",cheap:!1},{id:"particles",label:"Particles",cheap:!1,fightOnly:!0},{id:"showExplo",label:"Explosions",cheap:!1,fightOnly:!0},{id:"textureAnim",label:"Texture Animations",cheap:!1},{id:"objectAnim",label:"Object Animations",cheap:!1},{id:"bulletCasings",label:"Bullet Casings",cheap:!1,fightOnly:!0},{id:"impactHoles",label:"Bullet Impact Holes",cheap:!1,fightOnly:!0},{id:"noPaintAnim",label:"Disable Animated Paints",cheap:!0,needsReload:!0},{id:"mapDet",label:"Map Details",cheap:!1,needsReload:!0},{id:"lowSpec",label:"Low Spec",cheap:!0}],Gi={postProcessing:!1,particles:!1,showExplo:!1,bulletCasings:!1,impactHoles:!1,reflection:"1",lighting:"0",softShad:!1,highResShad:!1,noPaintAnim:!0},lo="resolution",kt="updateRate",Wi=[...wt.map(s=>s.id),lo,kt];Es=null});var Cp,$p=w(()=>{Cp=`

              Auto-Detect

              Don't touch mouse or keyboard. Escape cancels
              Undo
              Details
              Advanced
              Run now
              OK
                `});var Mp={};A(Mp,{activity:()=>Bt,hostLobby:()=>Cs,inRoom:()=>zn,spawn:()=>Ms,spawned:()=>Zi});function Bt(){try{return window.getGameActivity?.()??{}}catch{return{}}}function zn(s){let e=Bt();return!!s&&!!e.custom&&e.id===s}async function Cs(){if(typeof window.openHostWindow!="function"||typeof window.createPrivateRoom!="function")return null;let s=Bt().id;for(let e=0;e<4;e++){window.openHostWindow(!1,0),await _t(800),window.windows[7]?.switchTab?.(0),await _t(300);let t=[...document.querySelectorAll("#windowHolder input[id^=gameMap]")],o=document.querySelector("#makePrivate");if(t.length===0||!o)return window.closWind?.(),null;for(let r of t)r.checked!==(r.id===Kv)&&r.click();let n=!o.checked;n&&o.click();try{window.createPrivateRoom();for(let r=0;r<32;r++){await _t(250);let i=Bt();if(i.custom&&i.id&&i.id!==s&&i.map)return i.id}}finally{n&&o.checked&&o.click()}window.closWind?.(),await _t(1500)}return null}function Zi(){let s=document.querySelector("#instructions");return!!document.pointerLockElement||s!==null&&getComputedStyle(s).display==="none"}async function Ms(s){for(let o=0;o<40&&!(Bt().map&&document.querySelector("#instructions"));o++)await _t(250);await _t(500);let e=Math.round(window.innerWidth/2),t=Math.round(window.innerHeight/2);for(let o=0;o<3&&!Zi();o++){if(!zn(s))return!1;window.chrome.webview.postMessage(`click, ${e}, ${t}`),await _t(1200)}return await _t(800),Zi()}var Kv,_t,Hn=w(()=>{"use strict";Kv="gameMap0",_t=s=>new Promise(e=>{setTimeout(e,s)})});var Lp={};A(Lp,{REPLAY_CIRCLE_MS:()=>zt,takeInputDiagnostics:()=>On,takeReading:()=>Qi});function On(){let s=Ze;return Ze=Ap(),s}function Qi({ms:s,hz:e,replay:t}){return new Promise((o,n)=>{let r=new no,i=new ro,a=new ss,l=()=>document.hasFocus()&&document.visibilityState==="visible",c=document.pointerLockElement!==null,u=l()?null:"the window was not in front",h=()=>{l()||(u??="the window lost focus")},p=()=>{document.pointerLockElement!==null!==c&&(u??=c?"the game let go of the mouse":"the game took the mouse")},f=()=>{window.removeEventListener("blur",h),document.removeEventListener("visibilitychange",h),document.removeEventListener("pointerlockchange",p)};window.addEventListener("blur",h),document.addEventListener("visibilitychange",h),document.addEventListener("pointerlockchange",p);let m=setTimeout(()=>{f(),i.stop(),a.stop(),window.chrome.webview.postMessage("input-replay-stop"),n(new Error("the game stopped drawing frames"))},s+5e3);i.start(),a.start(),Ze.readings++,t&&c&&(Ze.asked++,window.chrome.webview.postMessage(`input-replay, ${s}`));let g=performance.now(),b=()=>{let v=performance.now();if(r.frame(v),v-g=Tp&&Ze.withInput++,L===null&&(u??="too few frames"),u!==null&&(Ze.invalid[u]=(Ze.invalid[u]??0)+1),o({fps:L?.fps??null,p50:L?.p50??null,p99:L?.p99??null,maxMs:L?.maxMs??null,stallMs:L?.stallMs??null,taskP99:k.p99,inputP99:E.events>=Tp?E.p99:null,invalid:u!==null,...u===null?{}:{why:u}})};requestAnimationFrame(b)})}var zt,Tp,Ap,Ze,ea=w(()=>{"use strict";xn();zt=600,Tp=20,Ap=()=>({readings:0,asked:0,withInput:0,pageEvents:0,hostSteps:0,ended:{},invalid:{}}),Ze=Ap();window.chrome.webview.addEventListener("message",s=>{let e=s.data?.inputReplay;e&&(Ze.hostSteps+=Number(e.sent)||0,Ze.ended[e.reason]=(Ze.ended[e.reason]??0)+1)})});var aa={};A(aa,{loggedIn:()=>Ls});function Ht(){try{return JSON.parse(localStorage.getItem(Kn)??"null")}catch{return null}}function qe(s){localStorage.setItem(Kn,JSON.stringify(s))}function Ls(){return document.querySelector("#signedInHeaderBar")!==null}function Ot(s,e){d.settings.data[s]=e,window.chrome.webview.postMessage(`set-config, ${s}, ${e}`);for(let t of[`#${s}`,`#slid_input_${s}`]){let o=document.querySelector(t);o&&(o.type==="checkbox"?o.checked=e===!0:o.value=String(e))}}function pt(s){return s==null?"default":String(s)==="true"?"on":String(s)==="false"?"off":String(s)}function Jv(){let s=/--autodetect-dev=(\S+)/.exec(d.launchArgs??""),e={};for(let t of s?.[1].split(",")??[]){let[o,n]=t.split(":");o==="hz"&&(e.hz=Number(n)),o==="battery"&&(e.battery=!0),o==="laptop"&&(e.laptop=!0),o==="force"&&(e.force=n),o==="collapse"&&(e.collapse=Number(n))}return e}function Bp(s){let e=Math.round((s-1)*100);return`${e>0?"+":""}${e} %`}function xt(s,e=1){return s===null?"?":s.toFixed(e)}function Dt(s){return s>0?`${s} FPS`:"no limit"}function Zv(s,e,t){if(s===null)return"measured as smooth, with fewer frames to draw";let o=`${xt(e[s].median)} to ${xt(t[s].median)}`;return{taskP99:`the game reacts sooner: other work waited up to ${o} ms`,inputP99:`mouse input waits ${o} ms`,p99:`slowest frames ${o} ms`,stallMs:`stutter ${o} ms per second`,maxMs:`longest frame ${o} ms`,fps:`${xt(e.fps.median,0)} to ${xt(t.fps.median,0)} FPS`}[s]}function zp(s,e=""){return s===null?"-":`${e}${s.toFixed(1)} ms`}function Ft(s,e=""){return s===null?"-":`${e}${s.toFixed(1)}`}function na(s){return`${xt(s.fps.median,0)}${Ft(s.p99.median)}${Ft(s.taskP99.median)}${Ft(s.inputP99.median)}`}function jn(s){let e=s.filter(o=>typeof o=="number").sort((o,n)=>o-n);if(e.length===0)return null;let t=Math.floor(e.length/2);return e.length%2===1?e[t]:(e[t-1]+e[t])/2}function Qv(s){if(!s||s.readings===0)return"";if(s.withInput>0)return`

                Input test: ${s.withInput} of ${s.readings} readings in the match had mouse input from Kute (${s.hostSteps} steps sent, ${s.pageEvents} seen by the game).

                `;let e=Object.entries(s.ended).filter(([o])=>o!=="done"&&o!=="stopped").map(([o,n])=>`${o}: ${n}x`).join(", "),t="the game did not hold the mouse when the readings started";return s.asked>0&&(t=e||`Kute sent ${s.hostSteps} steps, the game saw ${s.pageEvents} mouse events`),`

                The input test did not reach the game (${t}). Mouse wait and settings that only cost in a fight were not measured.

                `}function ut(s,e){let t=s.filter(r=>typeof r=="number").map(Math.round);if(t.length===0)return"-";let[o,n]=[Math.min(...t),Math.max(...t)];return o===n?`${o} ${e}`:`${o} to ${n} ${e}`}function e0(s){let e=[[`As you had it (${Dt(s.beforeCap)})`,s.played??[]],["no limit, first readings",s.unlimited??[]],...s.caps.filter(u=>u.where==="test match").map(u=>[Dt(u.cap),u.readings??[]])],{render:t=null,display:o=null}=s.adapters??{},n=t!==null&&o!==null&&t!==o,r=u=>{let h=(u?.nvidia??[]).map(p=>p.clockMhz).filter(p=>typeof p=="number");return h.length>0?Math.max(...h):null},i=u=>{let h=(u?.nvidia??[]).reduce((f,m)=>f|(m.heldBack??0),0),p=[[1,"heat"],[2,"power limit"],[4,"battery"],[16,"weak power supply"]].filter(([f])=>(h&Number(f))!==0).map(([,f])=>f);return p.length>0?p.join(", "):h===0?"no":`yes (${h})`},a=[...s.played??[],...s.unlimited??[]].some(u=>(u.load?.nvidia??[]).length>0),l=e.filter(([,u])=>u.some(h=>h.load)).map(([u,h])=>{let p=h.map(m=>m.load),f=(m,g)=>ut(p.map(b=>m===null?null:b?.gpu?.[m]?.[g]),"%");return`${u}${ut(h.map(m=>m.fps),"")}${ut(p.map(m=>m?.cpuBusy),"%")} - ${ut(p.map(m=>m?.cpuSpeed),"%")}${f(t,"render")}${a?`${ut(p.map(r),"MHz")}`:""} - ${n?`${f(o,"render")}${f(o,"copy")}`:""} - ${ut(p.map(m=>m?.temperature),"C")}${ut(p.map(m=>m?.thermalLimit),"%")}`});if(l.length===0)return"";let c=(s.trace??[]).map(u=>`${(u.ms/1e3).toFixed(1)} s${u.fps}${ut([u.load?.cpuSpeed],"%")} - ${ut([t===null?null:u.load?.gpu?.[t]?.render],"%")}${ut([r(u.load)],"MHz")}${i(u.load)}`);return`
                ${a?"":""} + `;let o=document.createElement("div");o.id="aboutPopupHost",t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=s.default;let r=n.querySelector("#aboutLogo");r&&(r.src=e.default);let i=n.querySelector("#aboutVersion");i&&(i.textContent=`Version ${u.version}`);for(let c of n.querySelectorAll("[data-url]"))c.addEventListener("click",()=>window.chrome.webview.postMessage(`open-url, ${c.getAttribute("data-url")}`));let a=new AbortController,l=()=>{a.abort(),t.remove()};n.querySelector("#aboutClose")?.addEventListener("click",l),t.addEventListener("mousedown",c=>{c.target===t&&l()}),document.addEventListener("keydown",c=>{c.key==="Escape"&&l()},{signal:a.signal}),document.body.append(t)}var mi=w(()=>{"use strict";D();u.showAboutPopup=Gb});var bi={};A(bi,{default:()=>Jb});function Zu(){if(!document.getElementById("signedInHeaderBar"))return null;try{return localStorage.getItem("krunker_username")||null}catch{return null}}function fi(){try{return localStorage.getItem(Wb)??""}catch{return""}}var Wb,Vb,Yb,Xb,gi,Jb,vi=w(()=>{"use strict";D();Wb="kro_setngss_endMessage",Vb="slid_endMessage",Yb="playerHeaderEl",Xb=500;gi=class{constructor(){this.account=void 0,this.header=new MutationObserver(()=>this.check()),this.saveTimer=0,this.editedFor=null,this.onInput=e=>{!(e.target instanceof HTMLInputElement)||e.target.id!==Vb||!this.account||(this.editedFor=this.account,clearTimeout(this.saveTimer),this.saveTimer=setTimeout(()=>this.flush(),Xb))},u.settings.toggleAccountEndMessage=e=>this.toggle(e,!0),this.toggle(!!u.settings.data.accountEndMessage,!1)}get messages(){return{...u.settings.data.endMessages}}save(e){u.settings.data.endMessages=e,window.chrome.webview.postMessage(`set-config-json endMessages ${JSON.stringify(e)}`)}remember(e,t){let{messages:o}=this;(o[e]??"")!==t&&(t?o[e]=t:delete o[e],this.save(o))}flush(){clearTimeout(this.saveTimer),this.editedFor&&this.remember(this.editedFor,fi()),this.editedFor=null}check(){let e=Zu();if(e===this.account)return;this.flush(),this.account=e;let t=e?this.messages[e]??"":"";fi()!==t&&window.setSetting("endMessage",t)}toggle(e,t){if(this.header.disconnect(),document.removeEventListener("input",this.onInput,!0),!e){this.flush(),this.account=void 0;return}let o=Zu();if(t&&o){let r=fi();this.remember(o,r),u.showNotification(r?`Kept "${r}" for ${o}. Other accounts send nothing until you give them one`:`End messages are now per account, ${o} has none`,!1,6)}document.addEventListener("input",this.onInput,!0);let n=document.getElementById(Yb);n?this.header.observe(n,{childList:!0}):console.error("[kute] end message: no account header"),this.check()}},Jb=new gi});var Qu=we((Qx,Zb)=>{Zb.exports='

                '});var ep={};A(ep,{confirmPopup:()=>Ce});async function Ce(s){let e=await Promise.resolve().then(()=>ue(Qu(),1)),t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default;let r=i=>n.querySelector(`#${i}`);r("confirmTitle").textContent=s.title;for(let i of s.paragraphs){let a=document.createElement("p");a.textContent=i,r("confirmText").append(a)}return r("confirmStay").textContent=s.stay,r("confirmLeave").textContent=s.leave,new Promise(i=>{let a=new AbortController,l=c=>{a.abort(),t.remove(),i(c)};r("confirmStay").onclick=()=>l(!1),r("confirmLeave").onclick=()=>l(!0),t.addEventListener("mousedown",c=>{c.target===t&&l(!1)}),document.addEventListener("keydown",c=>{c.key==="Escape"&&l(!1)},{signal:a.signal}),document.body.append(t)})}var Rt=w(()=>{"use strict"});var op,tp=w(()=>{op='

                Hotkeys

                Click a key, then press the new one. Escape cancels.
                Ctrl, Alt and Shift combinations work too.

                Lobby and window

                Toggles and windows

                Quick account login

                Reset to defaults
                Done
                '});var Si={};A(Si,{bindings:()=>ft,default:()=>pv,matches:()=>ls});function sv(){if(u.settings.data.chatLogs===!1||!u.chatLogs){u.showNotification("Chat Logs is off in the settings",!1,3);return}u.chatLogs.toggle()}function nv(s){if(u.settings.data.accountManager===!1||!u.accounts){u.showNotification("Account Manager is off in the settings",!1,3);return}u.accounts.loginSlot(s)}function ki(){return!!u.hostFeatures?.includes(ev)}function ft(){let s=ki()&&u.settings.data.hotkeys||{};return Object.fromEntries(An.map(e=>[e.id,s[e.id]??(e.id in s?null:e.fallback)]))}function sp(s,e){return!!e&&s.keyCode===e?.key&&s.ctrlKey===e.ctrl&&s.altKey===e.alt&&s.shiftKey===e.shift}function ls(s,e){return sp(s,ft()[e]??null)}function iv(s){let e=(t,o)=>{try{let n=window.localStorage.getItem(t);return n===null?o:Number(n)}catch{return o}};return rv.filter(([t,,o,n])=>e(`cont_${t}`,o)===s||e(`cont_${t}_alt`,n)===s).map(([,t])=>t)}function lv(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`Num ${s-96}`:s>=112&&s<=135?`F${s-111}`:av[s]??`Key ${s}`}function cv(s){let{code:e}=s,t=e;return/^Key[A-Z]$/.test(e)?t=e.slice(3):/^Digit\d$/.test(e)?t=e.slice(5):e.startsWith("Numpad")?t=`Num ${e.slice(6)}`:e.startsWith("Arrow")?t=e.slice(5):e||(t=lv(s.keyCode)),[s.ctrlKey&&"Ctrl",s.altKey&&"Alt",s.shiftKey&&"Shift",t].filter(Boolean).join("+")}function dv(s,e,t){let o=[],n=An.filter(i=>{let a=t[i.id];return i.id!==s.id&&a!==null&&a.key===e.key&&a.ctrl===e.ctrl&&a.alt===e.alt&&a.shift===e.shift});n.length>0&&o.push(`Also bound to Kute's ${n.map(i=>i.label).join(", ")}, pick another key.`);let r=iv(e.key);if(r.length>0){let i=r.length>3?` and ${r.length-3} more`:"";o.push(`Krunker uses this key for ${r.slice(0,3).join(", ")}${i}, the game still gets it.`)}return o}function uv(){let s=document.activeElement;for(;s?.shadowRoot?.activeElement;)s=s.shadowRoot.activeElement;return s instanceof HTMLInputElement||s instanceof HTMLTextAreaElement||s instanceof HTMLElement&&s.isContentEditable}var ev,tv,ov,Ro,wi,An,rv,av,yi,xi,pv,Po=w(()=>{"use strict";tp();D();Co();ev="hotkeys",tv=131,ov=new Set(["Shift","Control","Alt","Meta","AltGraph"]);Ro=(s,e)=>({key:s,ctrl:!1,alt:!1,shift:!1,name:e}),wi=s=>({id:`account${s}`,label:`Account ${s}`,note:`logs in account ${s} of the Accounts list`,group:"account",fallback:{key:48+s,ctrl:!0,alt:!0,shift:!1,name:`Ctrl+Alt+${s}`},run:()=>nv(s-1)}),An=[{id:"newLobby",label:"New lobby",group:"window",fallback:Ro(115,"F4")},{id:"matchmaker",label:"Matchmaker",note:"new lobby while the Matchmaker setting is off",group:"window",fallback:Ro(117,"F6")},{id:"reload",label:"Reload",group:"window",fallback:Ro(116,"F5")},{id:"fullscreen",label:"Fullscreen",group:"window",fallback:Ro(122,"F11")},{id:"devtools",label:"Developer tools",group:"window",fallback:Ro(123,"F12")},{id:"toggleSpotify",label:"Spotify overlay",note:"on and off",group:"toggle",fallback:null,setting:"spotifyOverlay"},{id:"toggleKeystrokes",label:"Keystrokes",note:"on and off",group:"toggle",fallback:null,setting:"keystrokes"},{id:"chatLogs",label:"Chat logs",note:"open and close",group:"toggle",fallback:Ro(112,"F1"),run:sv},wi(1),wi(2),wi(3)],rv=[["0","Forward",87,-1],["1","Back",83,-1],["2","Left",65,-1],["3","Right",68,-1],["jumpKey","Jump",32,-1],["crouchKey","Crouch",16,-1],["reloadKey","Reload",82,-1],["swapKey","Swap weapon",69,-1],["primKey","Primary weapon",84,-1],["meleeKey","Melee",81,-1],["equipKey","Equip",67,-1],["dropKey","Drop",90,-1],["inspKey","Inspect",88,-1],["wepVisKey","Hide weapon",-1,-1],["sprayKey","Spray",70,-1],["sprayWheelKey","Spray wheel",70,-1],["interactKey","Interact",71,-1],["interactSecKey","Second interact",72,-1],["confirmKey","Confirm",75,-1],["resetKey","Reset",66,-1],["resetLastKey","Reset to last",78,-1],["markPositionKey","Mark position",10002,-1],["chatKey","Chat",13,-1],["voiceKey","Voice chat",86,-1],["pListKey","Player list",18,-1],["sBoardKey","Scoreboard",9,-1],["hidePlayersKey","Hide players",-1,-1],["kickVoteYKey","Kick vote yes",49,-1],["kickVoteNKey","Kick vote no",50,-1],["kpdVoteYKey","Vote yes",89,-1],["kpdVoteNKey","Vote no",78,-1],["kpdVisionKey","Vision",187,-1],["specFreeKey","Spectate free camera",70,-1],["specObjKey","Spectate objective",72,-1],["specFirstKey","Spectate first person",82,-1],["specNamesKey","Spectate names",77,-1],["specMiniMap","Spectate minimap",189,-1],["specFocusKey","Spectate focus",190,-1],["propKey","Prop",80,-1],["propRandKey","Random prop",77,-1],["propRotKey","Rotate prop",82,-1],["propRotRKey","Rotate prop back",78,-1],["18","Streak 1",49,-1],["19","Streak 2",50,-1],["20","Streak 3",51,-1],...[0,1,2,3,4,5].map(s=>[`taunt${s}`,`Taunt ${s+1}`,49+s,-1]),...["27","28","29","30","31","32"].map((s,e)=>[s,`Toggle ${e+1}`,-1,-1]),...["43","44","45","46","47","48"].map((s,e)=>[s,`Chat message ${e+1}`,-1,-1])];av={8:"Backspace",9:"Tab",13:"Enter",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",45:"Insert",46:"Delete"};yi=class{constructor(e){this.owner=e,this.waiting=null,this.overlay=document.createElement("div"),this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");this.overlay.append(t),this.shadow=t.attachShadow({mode:"open"}),this.shadow.innerHTML=op,document.body.append(this.overlay),this.onKey=this.onKey.bind(this),window.addEventListener("keydown",this.onKey,!0),this.overlay.addEventListener("click",o=>{o.target===this.overlay&&this.close()}),this.element("hkDone").onclick=()=>this.close(),this.element("hkReset").onclick=()=>{this.owner.save({}),this.stopWaiting(),this.render()},this.render()}element(e){return this.shadow.querySelector(`#${e}`)}startWaiting(e){this.stopWaiting(),this.waiting=e,this.owner.capturing=!0,window.chrome.webview.postMessage("hotkeys-pause, true"),this.render()}stopWaiting(){this.waiting!==null&&(this.waiting=null,this.owner.capturing=!1,window.chrome.webview.postMessage("hotkeys-pause, false"),this.render())}assign(e,t){this.owner.save({...ft(),[e]:t}),this.stopWaiting(),this.render()}row(e,t){let o=t[e.id],n=document.createElement("div");n.className="hkRow";let r=document.createElement("div");if(r.className="hkLabel",r.textContent=e.label,e.note){let p=document.createElement("span");p.className="hkNote",p.textContent=e.note,r.append(p)}let i=this.waiting===e.id,a=document.createElement("div");a.className=`hkKey${i?" hkWaiting":""}${o?"":" hkNone"}`,a.textContent=i?"Press a key":o?.name??"No key",a.title="Click, then press the new key. Escape cancels",a.onclick=()=>this.startWaiting(e.id);let l=document.createElement("div");l.className="hkClear",l.textContent="Clear",l.style.visibility=o?"":"hidden",l.onclick=()=>this.assign(e.id,null),n.append(r,a,l);let c=o?dv(e,o,t):[];if(c.length===0)return n;let d=document.createElement("div");d.className="hkWarn",d.textContent=c.join(" ");let h=document.createElement("div");return h.append(n,d),h}render(){let e=ft();for(let t of["window","toggle","account"]){let o=An.filter(n=>n.group===t).map(n=>this.row(n,e));this.element(`hkGroup-${t}`).replaceChildren(...o)}}onKey(e){if(this.waiting===null){e.key==="Escape"&&this.close();return}if(e.preventDefault(),e.stopImmediatePropagation(),e.key==="Escape"){this.stopWaiting();return}ov.has(e.key)||e.keyCode===tv||e.keyCode===0||this.assign(this.waiting,{key:e.keyCode,ctrl:e.ctrlKey,alt:e.altKey,shift:e.shiftKey,name:cv(e)})}close(){this.stopWaiting(),window.removeEventListener("keydown",this.onKey,!0),this.overlay.remove()}},xi=class{constructor(){this.capturing=!1,u.hotkeys={edit:()=>this.edit()},window.addEventListener("keydown",e=>this.onKey(e),!0)}onKey(e){if(this.capturing||e.repeat||uv()||!ki())return;let t=ft();for(let o of An)o.group==="window"||!sp(e,t[o.id])||(o.run?o.run():o.setting&&this.flip(o.setting,o.label))}flip(e,t){if($o(u.settings.data,e)){u.showNotification(`${t} is off in performance mode`,!1,3);return}let o=!u.settings.data[e];u.settings.changeSetting(e,o,!1),u.showNotification(`${t} ${o?"on":"off"}`,!1,2)}save(e){u.settings.data.hotkeys=e,window.chrome.webview.postMessage(`set-config-json hotkeys ${JSON.stringify(e)}`)}edit(){if(!ki()){u.showNotification("Hotkeys need a newer Kute",!1,3);return}new yi(this)}},pv=new xi});var np=we((nS,hv)=>{hv.exports='
                ×

                Accounts

                Click an account to log in, drag ≡ to reorder
                Add account
                '});var Ci={};A(Ci,{default:()=>xv});function Pt(s){let e=decodeURIComponent(s),t=e.length;return e.split("").map(o=>String.fromCharCode(o.charCodeAt(0)-t)).join("")}function ap(s){let e=s.length,t=s.split("").map(o=>String.fromCharCode(o.charCodeAt(0)+e)).join("");return encodeURIComponent(t)}function cs(){try{let s=JSON.parse(localStorage.getItem(ds)||"[]");return Array.isArray(s)?s:[]}catch{return[]}}function kv(s){return typeof s=="string"&&/^#[\da-f]{6}$/i.test(s)?s:mv}function yv(s){let e=Number.parseInt(s.slice(1),16),t=e>>16&255,o=e>>8&255,n=e&255;return t*.299+o*.587+n*.114>150?"#111":"#fff"}function lp(s,e,t){let o=kv(e);s.style.background=o,s.style.color=yv(o),s.textContent=t.trim().slice(0,1)||"?"}var ds,mv,Ei,fv,rp,gv,bv,vv,wv,ip,$i,xv,Mi=w(()=>{"use strict";D();Ae();Rt();kn();Po();ds="accounts",mv="#35e0e8",Ei="kute_account_switch",fv=12e4,rp=3e4,gv=3e3,bv=2e4,vv=3e3,wv=5e3,ip=s=>new Promise(e=>{setTimeout(e,s)});$i=class{constructor(){this.button=document.createElement("div"),this.button.textContent="Accounts",this.button.classList.add("button","buttonB","bigShadowT"),this.button.style.cssText="display: block; padding-top: 7px; padding-bottom: 22px; font-size: 25px!important; padding-bottom: 22px; margin-top: 7px; height: 21px; line-height: 35px; width: 162px; font-size:20px!important; margin-left: 3px;",this.headerSeparator=document.createElement("div"),this.headerSeparator.style.cssText="width: 4px; height: 35px; margin: 0 6px; background: rgba(255, 255, 255, 0.12); flex-shrink: 0;",this.headerItem=document.createElement("div"),this.headerItem.style.cssText="display: flex; align-items: center; gap: 8px; padding: 8px 12px; cursor: pointer; color: #fff; font-weight: 700; font-size: 16px; white-space: nowrap;",this.headerItem.innerHTML='switch_accountAccounts',this.headerObserver=new MutationObserver(()=>this.placeButton()),this.overlay=null,this.shadow=null,this.menuController=null,this.asking=!1,this.accounts=[],this.legacy=!1,this.lastQuickLogin=0,this.suppressClick=!1,u.settings.toggleAccountManager=e=>this.toggle(e),u.accounts={loginSlot:e=>this.loginSlot(e)},this.toggle(!0),this.load()}async load(){let e=cs(),t=null;if(e.length>0){let o=e.filter(n=>typeof n?.username=="string"&&typeof n?.password=="string").map(n=>({username:Pt(n.username),password:Pt(n.password),color:n.color}));t=await Te(`accounts-migrate ${JSON.stringify(o)}`,"accounts",5e3),t!==null&&localStorage.removeItem(ds)}else t=await Te("accounts-list","accounts");t===null?(this.legacy=!0,this.accounts=e.map(o=>({username:Pt(o.username),color:o.color}))):this.accounts=t,this.renderAccounts(),this.resumeSwitch()}resumeSwitch(){let e=sessionStorage.getItem(Ei);if(e===null)return;sessionStorage.removeItem(Ei);let t={};try{t=JSON.parse(e)??{}}catch{return}if(Date.now()-Number(t.at)>fv||localStorage.getItem("krunker_token")!==null)return;let o=this.accounts.find(n=>n.username===t.username);o&&this.login(o)}async send(e,t){let o=await Te(`accounts-${e} ${JSON.stringify(t)}`,"accounts");o!==null&&(this.accounts=o,this.renderAccounts())}gameUpdateListener=e=>{e.data==="game-updated"&&setTimeout(()=>{He()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.button.style.cssText="display: block; padding: 14px 24px 22px; bottom: 0; right: 0; z-index: 9; font-size: 21px !important; position: absolute;",U("#compBtnLst").append(this.button))},2e3)};toggle(e){if(e)if(window.chrome.webview.addEventListener("message",this.gameUpdateListener),this.button.addEventListener("click",this.openMenu),this.headerItem.addEventListener("click",this.openMenu),He())window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.button.style.cssText="display: block; padding: 14px 24px 22px; bottom: 0; right: 0; z-index: 9; font-size: 21px !important; position: absolute;",U("#compBtnLst").append(this.button);else{this.placeButton();let t=document.querySelector("#playerHeaderEl");t&&this.headerObserver.observe(t,{childList:!0,subtree:!0})}else window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.headerObserver.disconnect(),this.button.removeEventListener("click",this.openMenu),this.headerItem.removeEventListener("click",this.openMenu),this.button.remove(),this.headerSeparator.remove(),this.headerItem.remove(),this.closeMenu()}placeButton(){let e=document.querySelector("#playerHeaderEl .headerBarRight");if(e){if(e.firstElementChild!==this.headerItem){let n=[...e.querySelector(".nav-item")?.classList??[]].find(r=>r.startsWith("svelte-"))??"";this.headerItem.style.cssText="",this.headerItem.className=`nav-item ${n}`,this.headerItem.innerHTML=`switch_accountAccounts`,this.headerSeparator.className="verticalSeparator",this.headerSeparator.style.cssText="height: 35px;",e.prepend(this.headerItem,this.headerSeparator)}this.button.remove();return}let t=document.querySelector("#signedInHeaderBar");if(t){t.contains(this.headerItem)||t.append(this.headerSeparator,this.headerItem);return}let o=document.querySelector("#signedOutHeaderBar");o&&!o.contains(this.button)&&o.append(this.button)}openMenu=()=>{this.overlay||this.buildMenu().catch(e=>console.error("[kute] accounts:",e))};async buildMenu(){let e=await Promise.resolve().then(()=>ue(np(),1));if(this.overlay)return;let t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default,this.overlay=t,this.shadow=n;let r=new AbortController;this.menuController=r,U("#accClose",n).onclick=()=>this.closeMenu(),U("#accAdd",n).onclick=()=>this.showForm(!0),U("#accCancel",n).onclick=()=>this.showForm(!1),U("#accSave",n).onclick=()=>this.saveAccount(),U("#accFormHint",n).textContent=this.legacy?"Saved on this PC only":"Saved encrypted on this PC, never sent anywhere";let i=ke("#accUsername",n),a=ke("#accColor",n);i.oninput=()=>this.updatePreview(),a.oninput=()=>this.updatePreview();for(let l of[i,ke("#accPassword",n)])l.onkeydown=c=>{c.key==="Enter"&&this.saveAccount()};for(let l of["keydown","keyup","keypress"])n.addEventListener(l,c=>c.stopPropagation());t.addEventListener("mousedown",l=>{l.target===t&&this.closeMenu()}),document.addEventListener("keydown",l=>{l.key!=="Escape"||this.asking||(l.stopPropagation(),U("#accFormView",n).hidden?this.closeMenu():this.showForm(!1))},{signal:r.signal,capture:!0}),this.renderAccounts(),this.resetForm(),document.body.append(t)}closeMenu(){this.menuController?.abort(),this.menuController=null,this.overlay?.remove(),this.overlay=null,this.shadow=null}showForm(e){this.shadow&&(U("#accListView",this.shadow).hidden=e,U("#accFormView",this.shadow).hidden=!e,e&&(this.resetForm(),ke("#accUsername",this.shadow).focus()))}renderAccounts(){let{shadow:e}=this;if(!e)return;let t=U("#accList",e);t.textContent="";for(let n of this.accounts){let r=document.createElement("div");r.className="accRow",r.dataset.username=n.username,r.title=`Log in as ${n.username}`,r.onclick=()=>{this.suppressClick||this.login(n)};let i=document.createElement("div");i.className="accHandle",i.textContent="\u2261",i.title="Drag to reorder",i.onclick=p=>p.stopPropagation(),i.onpointerdown=p=>this.startDrag(p,r);let a=document.createElement("div");a.className="accIndex";let l=document.createElement("div");l.className="accAvatar",lp(l,n.color,n.username);let c=document.createElement("div");c.className="accName",c.textContent=n.username;let d=document.createElement("div");d.className="accRemove",d.textContent="\xD7",d.title="Remove",d.onclick=p=>{p.stopPropagation(),this.removeAccount(n).catch(m=>console.error("[kute] accounts:",m))};let h=document.createElement("div");h.className="accKey",r.append(i,a,l,c,h,d),t.append(r)}this.renumber(t);let o=this.accounts.length===0;U("#accEmpty",e).hidden=!o,U("#accListHint",e).hidden=o}renumber(e){let t=ft();[...e.children].forEach((o,n)=>{U(".accIndex",o).textContent=String(n+1),U(".accKey",o).textContent=t[`account${n+1}`]?.name??""})}canReorder(){return this.legacy||!!u.hostFeatures?.includes("accounts-order")}startDrag(e,t){if(e.button!==0)return;if(e.preventDefault(),!this.canReorder()){u.showNotification("Reordering accounts needs a newer Kute",!1,3);return}let o=t.parentElement,n=[...o.children].map(a=>a.dataset.username);t.classList.add("accDragging");let r=a=>{let l=[...o.children].filter(p=>p!==t),c=l.find(p=>{let m=p.getBoundingClientRect();return a.clientY!!(t.compareDocumentPosition(p)&Node.DOCUMENT_POSITION_PRECEDING)).length;if(d!==h){for(let p of l.slice(0,d))o.insertBefore(p,t);for(let p of l.slice(d))o.append(p);this.renumber(o)}},i=()=>{window.removeEventListener("pointermove",r,!0),window.removeEventListener("pointerup",i,!0),window.removeEventListener("pointercancel",i,!0),t.classList.remove("accDragging"),this.suppressClick=!0,setTimeout(()=>{this.suppressClick=!1});let a=[...o.children].map(l=>l.dataset.username??"");a.some((l,c)=>l!==n[c])&&this.saveOrder(a)};window.addEventListener("pointermove",r,!0),window.addEventListener("pointerup",i,!0),window.addEventListener("pointercancel",i,!0)}saveOrder(e){let t=o=>{let n=e.indexOf(o);return n===-1?e.length:n};if(this.accounts.sort((o,n)=>t(o.username)-t(n.username)),this.legacy){let o=cs().sort((n,r)=>t(Pt(n.username))-t(Pt(r.username)));localStorage.setItem(ds,JSON.stringify(o));return}this.send("order",e)}loginSlot(e){let t=this.accounts[e];if(!t){u.showNotification(`No account saved in slot ${e+1}`,!1,3);return}if(localStorage.getItem("krunker_token")!==null&&localStorage.getItem("krunker_username")===t.username){u.showNotification(`Already logged in as ${t.username}`,!1,2);return}Date.now()-this.lastQuickLoginconsole.error("[kute] accounts:",o)))}updatePreview(){if(!this.shadow)return;let e=ke("#accUsername",this.shadow).value,t=ke("#accColor",this.shadow).value;lp(U("#accPreviewAvatar",this.shadow),t,e),U("#accPreviewName",this.shadow).textContent=e.trim()||"Username"}resetForm(){this.shadow&&(ke("#accColor",this.shadow).value=`#${Math.floor(Math.random()*16777215).toString(16).padStart(6,"0")}`,ke("#accUsername",this.shadow).value="",ke("#accPassword",this.shadow).value="",U("#accError",this.shadow).textContent="",this.updatePreview())}saveAccount(){if(!this.shadow)return;let e=ke("#accUsername",this.shadow).value.trim(),t=ke("#accPassword",this.shadow).value,o=ke("#accColor",this.shadow).value,n=U("#accError",this.shadow);if(e===""){n.textContent="Enter a username";return}if(t===""){n.textContent="Enter a password";return}if(this.accounts.some(r=>r.username===e)){n.textContent=`${e} is already saved`;return}if(this.legacy){let r=cs();r.push({username:ap(e),password:ap(t),color:o}),localStorage.setItem(ds,JSON.stringify(r)),this.accounts.push({username:e,color:o}),this.renderAccounts()}else this.send("add",{username:e,password:t,color:o});this.showForm(!1)}async removeAccount(e){this.asking=!0;let t=await Ce({title:"Remove account",paragraphs:[`${e.username} gets removed from this list.`,"The Krunker account itself is not touched."],stay:"Keep",leave:"Remove"});if(this.asking=!1,!t)return;let o=this.accounts.findIndex(n=>n.username===e.username);o!==-1&&(this.legacy?(localStorage.setItem(ds,JSON.stringify(cs().filter(n=>Pt(n.username)!==e.username))),this.accounts.splice(o,1),this.renderAccounts()):this.send("remove",{username:e.username}))}async login(e){this.closeMenu();let t=window.FRVR?.auth,o=localStorage.getItem("krunker_token")!==null;if(typeof t?.loginAsAnonymous!="function"||typeof t.isLoggedIn!="function"){if(o){sessionStorage.setItem(Ei,JSON.stringify({username:e.username,at:Date.now()})),window.logoutAcc(),Ao();return}}else{if(o){wn(rp),window.logoutAcc();for(let n=0;nconsole.error("[kute] accounts:",n))}window.loginOrRegister(),queueMicrotask(()=>{let n=U(".auth-toggle-btn");n.textContent?.includes("username")&&n.click(),queueMicrotask(()=>{if(this.legacy){this.legacyLogin(e.username);return}this.send("login",{username:e.username})})})}async finishSwitch(e){let t=0;for(let o=0;o=vv)){wn(rp),Ao();return}}}legacyLogin(e){let t=cs().find(r=>Pt(r.username)===e);if(!t)return;let o=ke("#accName"),n=ke("#accPass");o.value=e,n.value=Pt(t.password),o.dispatchEvent(new Event("input",{bubbles:!0})),n.dispatchEvent(new Event("input",{bubbles:!0})),U(".io-button").click()}},xv=new $i});var dp={};A(dp,{default:()=>he});var Sv,Ev,$v,Ti,cp,he,It=w(()=>{"use strict";D();Sv=4e3,Ev=5e3,$v=3,Ti=class{constructor(){this.base=typeof u.apiBase=="string"?u.apiBase:"https://kute.lol/api",this.health=null,this.down=!1,this.failures=0,this.listeners=new Set,u.settings.toggleDisableOnlineFeatures=e=>this.setOffline(e)}offline(){return u.settings?.data?.disableOnlineFeatures===!0}setOffline(e){this.health=e?Promise.resolve(!1):null,this.down=e,this.failures=0;for(let t of this.listeners)t(!e)}available(){return this.health??=this.check(),this.health}retry(){return this.health=null,this.down=!1,this.failures=0,this.available()}async check(){if(await Ne,this.offline())return this.down=!0,!1;try{let e=await fetch(`${this.base}/health`,{cache:"no-store",signal:AbortSignal.timeout(Sv)}),t=e.ok?await e.json():null;this.down=t?.ok!==!0}catch{this.down=!0}return!this.down}async request(e,t={}){let{data:o}=await this.requestStatus(e,t);return o}async requestStatus(e,t={}){if(!await this.available()||this.down||this.offline())return{status:0,data:null};try{let o=AbortSignal.timeout(Ev),n=t.signal?AbortSignal.any([t.signal,o]):o,r=await fetch(this.base+e,{...t,signal:n});r.status>=500?this.failed():r.ok&&(this.failures=0);let i=await r.json().catch(()=>null),a=r.headers.get("Retry-After"),l=0;a!==null&&(l=/^\d+(\.\d+)?$/.test(a)?Date.now()+Number(a)*1e3:Date.parse(a));let c=Number(r.headers.get("X-RateLimit-Reset"))*1e3,d=Math.max(l||0,c||0,Number(i?.resetAt)||0),h=r.status===429?Math.max(Date.now()+1e3,d||Date.now()+6e4):void 0;return{status:r.status,data:r.ok?i:null,error:r.ok?null:i,retryAt:h}}catch{return t.signal?.aborted||this.failed(),{status:0,data:null}}}failed(){this.failures++,this.failures>=$v&&(this.down=!0)}},cp=new Ti;u.api=cp;he=cp});var hp={};var pp,Cv,Mv,up,Ai=w(()=>{"use strict";D();Ae();pp=async s=>{window.openHostWindow(!1,1),await $e(".hostTb0");let e=document.querySelector(`#${s.mapId}`);if(!e){let c=document.querySelectorAll(".hostMap .hostMapName"),d=Array.from(c).find(h=>h.innerText.trim().toLowerCase()===s.mapId.toLowerCase());d&&(e=d.parentElement?.querySelector('input[type="checkbox"]')??null)}if(!e)return;e.checked||e.click(),windows[7].switchTab(2);let t=await $e("#customSnameTeam1");t.value=s.team1Name;let o=await $e("#customSnameTeam2");o.value=s.team2Name;let n=await $e("#customStmSize"),r={"1v1":"0","2v2":"1","3v3":"2","4v4":"3"};if(s.team1Players){let c=await $e("#compRosterT1");c.value=s.team1Players}if(s.team2Players){let c=await $e("#compRosterT2");c.value=s.team2Players}if(s.spectators){let c=await $e("#compRosterSpecs");c.value=s.spectators}let i=await $e("#customSspecSlots");i.value="4";let a=["ak","sniper","smg","lmg","shotgun","rev","semi","rpg","uzi","runner","deagler","crossbow","famas","blaster","survivor","infiltrator"];if(s.classes){let c=JSON.parse(s.classes);for(let[d,h]of Object.entries(c)){let p=a.indexOf(d),m=await $e(`#customSclassLim${p}`);m.value=String(h)}}let l=r[s.teamSize]||s.teamSize;if(n.value=l,s.webhook)try{let c=await $e("#customSwebhook");c.value=decodeURIComponent(s.webhook)}catch{}window.createPrivateRoom()},Cv=async s=>{let e={FRA:"de-fra",SV:"us-ca-sv",SYD:"au-syd",TOK:"jb-hnd",SIN:"sgp",NY:"us-nj",MUM:"as-mb",DAL:"us-tx",BR:"brz",ME:"me-bhn"},t=e[s.toUpperCase()]||s;window.showWindow(1);let o=document.querySelector("select.inputGrey2");if(!o){typeof window.setSetting=="function"&&window.setSetting("defaultRegion",t);return}let n=Object.values(e),r=Array.from(document.querySelectorAll("select.inputGrey2")).find(i=>Array.from(i.options).some(a=>n.includes(a.value)))||o;if(r&&r.value!==t){let i=Array.from(r.options).findIndex(a=>a.value===t);i!==-1&&(r.selectedIndex=i,r.dispatchEvent(new Event("change",{bubbles:!0,cancelable:!0})))}window.showWindow(1)},Mv=s=>{let e=s.includes("?")?s.split("?")[1]:s;return Object.fromEntries(new URLSearchParams(e).entries())},up=sessionStorage.getItem("pendingCompHost");if(up){sessionStorage.removeItem("pendingCompHost");let s=JSON.parse(up);pp(s)}u.parseArgs=async s=>{let e=s.split(" ");for(let t of e)if(t.includes("action=host-comp")){let o=Mv(t);o.region?(sessionStorage.setItem("pendingCompHost",JSON.stringify(o)),await Cv(o.region),window.location.href="https://krunker.io/"):await pp(o)}};window.chrome.webview.addEventListener("message",async s=>{s.data?.args&&await u.parseArgs(s.data.args)})});var fp={};A(fp,{CLOCK_MS:()=>Tv,EXPERIENCE:()=>us,IMPORTANT_SHARE:()=>ps,TARGET_REFRESH_MULTIPLE:()=>bt,accept:()=>ws,atLimit:()=>_o,capCandidates:()=>zi,choose:()=>fs,chooseCap:()=>_i,collapses:()=>bs,compare:()=>Pi,experienceHolds:()=>Av,flooding:()=>vs,guard:()=>so,headroom:()=>Bi,refineCaps:()=>Hi,screen:()=>Ii,stalled:()=>gs,steady:()=>no,steadyLimit:()=>Ni,steadyRungs:()=>Ln,summarize:()=>ye,unsteady:()=>gt,wins:()=>No});function Ri(s){let e=[...s].sort((o,n)=>o-n),t=Math.floor(e.length/2);return e.length%2===1?e[t]:(e[t-1]+e[t])/2}function ye(s){let e=s.filter(o=>!o.invalid),t={};for(let o of Io){let r=e.map(c=>c[o]).filter(c=>typeof c=="number"&&Number.isFinite(c)),i=[Math.min(...r),Math.max(...r)],[a,l]=hs.has(o)?i:i.reverse();t[o]={n:r.length,median:r.length>0?Ri(r):null,spread:r.length>1?Math.abs(l-a):null,worst:r.length>0?a:null,best:r.length>0?l:null}}return t}function ms(s){return s==="fps"?0:2*.1}function Pi(s,e,t){let o=e[s],n=t[s];if(o.median===null||n.median===null||o.spread===null||n.spread===null)return"unknown";let r=hs.has(s)?o.median-n.median:n.median-o.median,i=Math.max(o.spread,n.spread,ms(s)),a=Math.max(Math.abs(o.median),Math.abs(n.median))*.1;return Math.abs(r)<=i||Math.abs(r)0?"better":"worse"}function so(s,e,t,o=ms(s)){let n=e[s],r=t[s];if(n.n<2||typeof n.worst!="number"||r.median===null||r.spread===null)return"unknown";let i=hs.has(s)?r.median-n.worst:n.worst-r.median,a=Math.max(Math.abs(n.worst),Math.abs(r.median))*.1;return i>Math.max(r.spread,o)&&i>=a?"worse":"ok"}function No(s,e,t){let o=e[s],n=t[s];if(o.n<2||n.n<2||typeof o.worst!="number"||typeof n.best!="number")return!1;let r=hs.has(s)?o.worst-n.best:n.best-o.worst;return r>ms(s)&&r>=Math.max(Math.abs(o.worst),Math.abs(n.best))*.1}function Ii(s,e){if(s.invalid)return"same";let t=!1;for(let o of Io){let n=s[o],r=e[o];if(typeof n!="number"||r.median===null||r.spread===null)continue;let i=hs.has(o)?n-r.median:r.median-n,a=Math.max(Math.abs(n),Math.abs(r.median))*.1;if(!(Math.abs(i)<=Math.max(r.spread,ms(o))||Math.abs(i)0&&(t=!0)}}return t?"contender":"same"}function fs(s,e,t={}){let o=ye(s.readings),n=e.map(c=>{let d=ye(c.readings),h={};for(let f of Io)h[f]=Pi(f,d,o);let p=us.some(f=>so(f,d,o)==="worse"),m=us.find(f=>No(f,d,o))??null;return m===null&&t.fpsCounts!==!1&&No("fps",d,o)&&(m="fps"),{id:c.id,summary:d,verdicts:h,rejected:p,decidedBy:m}}),r=n.length>0&&n.every(c=>Io.every(d=>c.verdicts[d]==="unknown")),i=c=>c.decidedBy===null?Io.length:Io.indexOf(c.decidedBy),l=n.filter(c=>!c.rejected&&c.decidedBy!==null).sort((c,d)=>i(c)-i(d))[0]??null;return{winner:l?.id??s.id,changed:l!==null,inconclusive:r,decidedBy:l?.decidedBy??null,incumbent:o,judged:n}}function gs(s){return!s.invalid&&typeof s.stallMs=="number"&&s.stallMs>1e3*.1}function gt(s,e){return s.some(t=>gs(t)||!t.invalid&&e>0&&typeof t.fps=="number"&&t.fps!t.invalid).length>=2&&!gt(s,e)}function bs(s){return[...s.values()].some(e=>e.filter(gs).length>=2)}function Ln(s){return Array.from({length:4},(e,t)=>(t+1)*s)}function Ni(s,e){let t=null,o=null;for(let n of Ln(s)){if(!no(e.get(n)??[],n))break;t=o??n,o=n}return{cap:t,steadyUpTo:o}}function vs(s){let{presentMs:e,p50:t}=s;return typeof e!="number"||typeof t!="number"?!1:e-t>Math.max(2*.1,e*.1)}function _o(s){let e=s.p50,t=r=>typeof r=="number"&&typeof e=="number"?Math.max(0,r-e):null,o=vs(s)?s.presentMs-e:0,n=typeof s.inputP99=="number"?s.inputP99+o:s.inputP99;return{...s,fps:null,p99:t(s.p99),maxMs:t(s.maxMs),inputP99:n}}function mp(s){return s==="p99"||s==="maxMs"?4*.1:ms(s)}function _i(s,e,t={}){let o=p=>ye((s.get(p)??[]).map(_o)),n=p=>{let m=(s.get(p)??[]).filter(f=>!f.invalid).map(f=>f.p50).filter(f=>typeof f=="number");return m.length>0?Ri(m):null},r=o(e),i=n(e),a=new Map,l=[...s.keys()].map(p=>{let m=o(p),f=n(p);if(p===e)return{cap:p,summary:m,frameMs:f,netMs:null,outcome:"yours"};if(gt(s.get(p)??[],p))return{cap:p,summary:m,frameMs:f,netMs:null,outcome:"not steady"};let g=Object.fromEntries(Li.map(H=>[H,Pi(H,m,r)])),b=e===0||p>0&&pNo(H,m,r)?(r[H].median??0)-(m[H].median??0):0,E=k("taskP99"),L=t.trade===!0&&so("inputP99",m,r)==="worse"?(m.inputP99.median??0)-(r.inputP99.median??0):0,x=g.inputP99==="unknown"?null:k("inputP99")-L,$=E+(x??i-f);a.set(p,E+(x??0));let I=L>0&&E>L,_="not better";return Li.some(H=>(H!=="inputP99"||!I)&&so(H,m,r,mp(H))==="worse")?_="worse":$>2*.1&&(_="better"),{cap:p,summary:m,frameMs:f,netMs:$,gains:{task:E,input:x},outcome:_}}),c=l.filter(p=>p.outcome==="better").sort((p,m)=>(m.netMs??0)-(p.netMs??0));if(c.length>0)return{winner:c[0].cap,changed:!0,decidedBy:"net",judged:l};let d=l.find(p=>p.cap===t.prefer&&p.cap!==e),h=d!==void 0&&(e===0||d.capd.filter(h=>!h.invalid);if(r(s).length<2)return{keep:!1,failed:"reference"};if(r(e).length<2)return{keep:!1,failed:"result"};let i=ye(s.map(_o)),a=ye(e.map(_o)),l=so("fps",ye(e),ye(s))==="worse";if(gt(e,o)&&!(gt(s,t)&&No("stallMs",a,i)&&!l))return{keep:!1,failed:"unsteady"};let c;for(let d of Li){let h=so(d,a,i,mp(d));if(h==="worse"&&d==="inputP99"&&n&&No("taskP99",a,i)){let p=(i.taskP99.median??0)-(a.taskP99.median??0),m=(a.inputP99.median??0)-(i.inputP99.median??0);if(p>m){c={task:p,input:m};continue}}if(h==="worse")return{keep:!1,failed:d};if(h==="unknown"&&d!=="inputP99")return{keep:!1,failed:"reference"}}if(so("inputP99",a,i)==="unknown"){let d=p=>Ri(r(p).map(m=>m.p50??0));if(d(e)-d(s)>Math.max(2*.1,d(e)*.1))return{keep:!1,failed:"frame"}}return t===o&&l?{keep:!1,failed:"fps"}:{keep:!0,failed:null,...c?{traded:c}:{}}}function Bi(s,e){return 1+Math.max(2*Math.abs(1-s),e)}function Av(s,e){let t=1e3/e,o=s.p99.median,n=s.stallMs.median;return(o===null||o<=t)&&(n===null||n<=t)}function zi({hz:s,capacity:e,current:t}){let o=i=>e===null||i<=e,n=[3*s,2*s,s].filter(o);return e!==null&&n.push(Math.round(e*.9)),t>0&&n.push(t),[0,...[...new Set(n.map(i=>Math.round(i)).filter(i=>i>0))].sort((i,a)=>a-i)]}function Hi(s,e,t,o){let n=l=>l===0?t??1/0:l,r=[...new Set(s)].sort((l,c)=>n(l)-n(c)),i=r.indexOf(e),a=[];for(let l of[r[i-1],r[i+1]]){if(l===void 0)continue;let c=(n(e)+n(l))/2;Number.isFinite(c)&&a.push(Math.round(c/o)*o)}return[...new Set(a)].filter(l=>l>0&&l!==e&&!s.includes(l))}var ps,bt,Tv,us,Io,hs,Li,ks=w(()=>{"use strict";ps=.1,bt=3,Tv=.1,us=["taskP99","inputP99","p99","stallMs","maxMs"],Io=[...us,"fps"],hs=new Set(["fps"]);Li=["taskP99","inputP99","p99","stallMs","maxMs"]});var vp={};A(vp,{PIPELINE:()=>Oe,cancel:()=>Di,currentPipeline:()=>Pn,measureCaps:()=>qi,searchPipeline:()=>Fi});function Pn(){return Object.fromEntries(Oe.map(s=>[s.setting,(u.running?.[s.setting]??u.settings.data[s.setting])!==!1]))}function bp(s,e){return s!=="hardFlip"||!e.hardFlip?null:u.settings.data.obsCapturePlugin===!0?"kept, OBS capture needs it":null}function ct(s,e){let t=Oe.map(r=>`${r.key}=${s[r.setting]?1:0}`),o=Rv.map(r=>`${r.key}=${u.settings.data[r.setting]??r.fallback?1:0}`),n=`limiter=${u.settings.data.patchFrameLimiter===!1?"hook":"viz"}`;return[...t,...o,n,e].filter(r=>r!=="").join(",")}function Oi(s,e,t){let o=n=>typeof n=="number"&&Number.isFinite(n)?n:null;return{fps:o(s?.fps),p50:o(s?.p50),p99:o(s?.p99),maxMs:o(s?.maxMs),stallMs:o(s?.stallMs),taskP99:o(e?.p99),inputP99:null,presentMs:o(t?.p50),invalid:!s||!(s.fps>0)}}function ys(s,e){let t=Date.now()*100+ ++_v%100;return new Promise(o=>{let n={timer:0},r=i=>{i.data?.benchMatrix===void 0||i.data.benchRun!==t||(clearTimeout(n.timer),window.chrome.webview.removeEventListener("message",r),o(i.data.cancelled?null:i.data.benchMatrix))};n.timer=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),window.chrome.webview.postMessage("bench-cancel"),o(null)},e),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(`run-bench-matrix ${t} ${JSON.stringify(s)}`)})}function Di(){window.chrome.webview.postMessage("bench-cancel")}async function Fi({hz:s,progress:e,cancelled:t}){let o=Pn();e("Testing the client (1 of 4)",0);let n=await ys([ct(o,`hz=${s}`)],Rn),r=Oi(n?.[0]?.page?.stats,n?.[0]?.page?.otherTasks);if(t()||r.invalid||r.fps===null)return null;let i=n?.[0]?.page?.load,a=Math.min(gp[1],Math.max(gp[0],r.fps/(s*3))),l=`hz=${s},draws=${Math.round(i.draws*a)},cpu=${Math.round(i.cpuIterations*a)}`,c=Oe.filter($=>bp($.setting,o)===null).map($=>({entry:$,pipeline:{...o,[$.setting]:!o[$.setting]}}));e("Testing the client (2 of 4)",.15);let d=await ys([ct(o,l),...c.map($=>ct($.pipeline,l)),ct(o,l)],Rn*(c.length+2));if(t()||d===null)return null;let h=$=>Oi($?.page?.stats,$?.page?.otherTasks,$?.present),p=[h(d[0]),h(d[d.length-1])],m=ye(p),f=Lv.some($=>{let{median:I,spread:_}=m[$];return I!==null&&_!==null&&_>Math.abs(I)*.1}),g=[{id:"current",label:"As you had it",pipeline:o,readings:p,outcome:"current"}];for(let $ of Oe){let I=bp($.setting,o);I!==null&&g.push({id:$.setting,label:`${$.label} off`,pipeline:o,readings:[],outcome:I})}let b=[];for(let[$,I]of c.entries()){let _=h(d[$+1]),H=_.invalid?"failed":Ii(_,m);f&&!_.invalid&&(H="contender");let G=`${I.entry.label} ${I.pipeline[I.entry.setting]?"on":"off"}`,J={id:I.entry.setting,label:G,pipeline:I.pipeline,readings:[_],outcome:Nv[H]};g.push(J),H==="contender"&&b.push(J)}if(b.length===0)return{winner:o,changed:!1,decidedBy:null,rows:g,common:l,capacity:m.fps.median};e("Testing the client (3 of 4)",.55);let v=await ys([...b.map($=>ct($.pipeline,l)),ct(o,l)],Rn*(b.length+1));if(t()||v===null)return null;for(let[$,I]of b.entries())I.readings.push(h(v[$]));p.push(h(v[v.length-1]));let k=fs({id:"current",readings:p},b.map($=>({id:$.id,readings:$.readings})));for(let $ of b){let I=k.judged.find(_=>_.id===$.id);$.outcome="not better",I?.rejected?$.outcome="worse":I?.decidedBy&&($.outcome="better")}let E=b.filter($=>$.outcome==="better"),L=g.find($=>$.id===k.winner)??g[0];if(E.length>1){e("Testing the client (4 of 4)",.8);let $={...o};for(let J of E)$[J.id]=J.pipeline[J.id];let I=await ys([ct($,l),ct(o,l),ct($,l)],Rn*3);if(t()||I===null)return null;p.push(h(I[1]));let _={id:"combined",label:E.map(J=>J.label).join(" and "),pipeline:$,readings:[h(I[0]),h(I[2])],outcome:"not better"};g.push(_);let H=fs({id:L.id,readings:L.readings},[{id:_.id,readings:_.readings}]),G=fs({id:"current",readings:p},[{id:_.id,readings:_.readings}]);H.changed&&G.changed&&(_.outcome="better",L=_,k=G)}let x=L.id!=="current";return{winner:L.pipeline,changed:x,decidedBy:x?k.decidedBy:null,rows:g,common:l,capacity:ye(L.readings).fps.median}}async function qi({pipeline:s,common:e,caps:t,cancelled:o}){let n=`${ct(s,e)},caps=${t.join(".")},rounds=2,ms=${Iv}`,i=(await ys([n],Pv))?.[0]?.page?.caps;if(o()||!Array.isArray(i))return null;let a=new Map(t.map(l=>[l,[]]));for(let l of i)a.get(Number(l.cap))?.push(Oi(l.stats,l.otherTasks));return a}var Lv,Oe,Rv,Rn,Pv,Iv,gp,Nv,_v,Ki=w(()=>{"use strict";D();ks();Lv=["fps","taskP99","p99"],Oe=[{setting:"hardFlip",key:"hook",label:"DXGI Swapchain Hook"},{setting:"patchFramePacing",key:"pacing",label:"Frame Pacing"},{setting:"patchCanvasBufferCache",key:"canvas",label:"WebGL Buffer Cache"},{setting:"patchHighQoS",key:"qos",label:"Game Process at High QoS"}].filter(s=>u.platform!=="linux"||s.setting!=="hardFlip"&&s.setting!=="patchHighQoS"),Rv=[{setting:"patchInputPriority",key:"inprio",fallback:!0},{setting:"patchRawInputMovement",key:"rawinput",fallback:!0},{setting:"patchAudioParamCoalesce",key:"coalesce",fallback:!0},{setting:"audioFix",key:"panner",fallback:!1},{setting:"uncapFps",key:"uncap",fallback:!0}],Rn=2e4,Pv=7e4,Iv=1500,gp=[.25,16],Nv={contender:"better",same:"not better",worse:"worse",failed:"failed"};_v=0});var kp={};A(kp,{MIN_RESOLUTION:()=>xs,SIGNIFICANT_RESOLUTION:()=>wp,SIGNIFICANT_SETTING:()=>In,decide:()=>Nn});function Nn({capacity:s,hz:e,headroom:t,halfResolutionGain:o,settings:n}){let r=e*3,i=r*t,a=s>=i,l="unknown";o!==null&&(l=o>=wp?"gpu":"cpu");let c=[],d=s;if(!a){let h=n.filter(p=>p.gain!==null&&p.steady&&p.current!==p.cheap&&p.gain>=In).sort((p,m)=>(m.gain??0)-(p.gain??0));for(let p of h){if(d>=i)break;let m=p.gain??1;d*=m,c.push({id:p.id,label:p.label,value:p.cheap,reason:`measured +${Math.round((m-1)*100)} %`})}}return{target:r,needed:i,holds:a,regime:l,predictedFps:d,tuneResolution:!a&&l==="gpu"&&d{"use strict";ks();In=1.05,wp=1.1,xs=.75});var Yi={};A(Yi,{ALL_IDS:()=>Gi,GAME_FRAME_CAP:()=>wt,PRESET:()=>Ui,RESOLUTION:()=>ro,SETTINGS:()=>vt,label:()=>Wi,opposite:()=>Vi,read:()=>Es,resetCache:()=>_n,write:()=>Me});function Wi(s){return vt.find(e=>e.id===s)?.label??s}function Bv(){if(Ss)return Ss;let s=window.windows[0],e=s.tabIndex,t=s.settingType,o="";try{s.settingType="advanced";for(let n=0;n{"use strict";vt=[{id:"postProcessing",label:"Post Processing",cheap:!1},{id:"shadowsDynamic",label:"Dynamic Shadows",cheap:!1},{id:"softShad",label:"Soft Shadows",cheap:!1,needsReload:!0},{id:"highResShad",label:"High-Res Shadows",cheap:!1,needsReload:!0},{id:"shadows",label:"Shadows",cheap:!1},{id:"antiAlias",label:"Antialiasing",cheap:!1,needsReload:!0},{id:"reflection",label:"Reflection Quality",cheap:"1",needsReload:!0},{id:"lighting",label:"Lighting",cheap:"0",needsReload:!0},{id:"weaponShine",label:"Weapons Shine",cheap:!1},{id:"ambientShading",label:"Old Shading",cheap:!1},{id:"particles",label:"Particles",cheap:!1,fightOnly:!0},{id:"showExplo",label:"Explosions",cheap:!1,fightOnly:!0},{id:"textureAnim",label:"Texture Animations",cheap:!1},{id:"objectAnim",label:"Object Animations",cheap:!1},{id:"bulletCasings",label:"Bullet Casings",cheap:!1,fightOnly:!0},{id:"impactHoles",label:"Bullet Impact Holes",cheap:!1,fightOnly:!0},{id:"noPaintAnim",label:"Disable Animated Paints",cheap:!0,needsReload:!0},{id:"mapDet",label:"Map Details",cheap:!1,needsReload:!0},{id:"lowSpec",label:"Low Spec",cheap:!0}],Ui={postProcessing:!1,particles:!1,showExplo:!1,bulletCasings:!1,impactHoles:!1,reflection:"1",lighting:"0",softShad:!1,highResShad:!1,noPaintAnim:!0},ro="resolution",wt="updateRate",Gi=[...vt.map(s=>s.id),ro,wt];Ss=null});var xp,yp=w(()=>{xp=`

                Auto-Detect

                Don't touch mouse or keyboard. Escape cancels
                Undo
                Details
                Advanced
                Run now
                OK
                  `});var Sp={};A(Sp,{activity:()=>_t,hostLobby:()=>$s,inRoom:()=>Bn,spawn:()=>Cs,spawned:()=>Ji});function _t(){try{return window.getGameActivity?.()??{}}catch{return{}}}function Bn(s){let e=_t();return!!s&&!!e.custom&&e.id===s}async function $s(){if(typeof window.openHostWindow!="function"||typeof window.createPrivateRoom!="function")return null;let s=_t().id;for(let e=0;e<4;e++){window.openHostWindow(!1,0),await Nt(800),window.windows[7]?.switchTab?.(0),await Nt(300);let t=[...document.querySelectorAll("#windowHolder input[id^=gameMap]")],o=document.querySelector("#makePrivate");if(t.length===0||!o)return window.closWind?.(),null;for(let r of t)r.checked!==(r.id===Hv)&&r.click();let n=!o.checked;n&&o.click();try{window.createPrivateRoom();for(let r=0;r<32;r++){await Nt(250);let i=_t();if(i.custom&&i.id&&i.id!==s&&i.map)return i.id}}finally{n&&o.checked&&o.click()}window.closWind?.(),await Nt(1500)}return null}function Ji(){let s=document.querySelector("#instructions");return!!document.pointerLockElement||s!==null&&getComputedStyle(s).display==="none"}async function Cs(s){for(let o=0;o<40&&!(_t().map&&document.querySelector("#instructions"));o++)await Nt(250);await Nt(500);let e=Math.round(window.innerWidth/2),t=Math.round(window.innerHeight/2);for(let o=0;o<3&&!Ji();o++){if(!Bn(s))return!1;window.chrome.webview.postMessage(`click, ${e}, ${t}`),await Nt(1200)}return await Nt(800),Ji()}var Hv,Nt,zn=w(()=>{"use strict";Hv="gameMap0",Nt=s=>new Promise(e=>{setTimeout(e,s)})});var Cp={};A(Cp,{REPLAY_CIRCLE_MS:()=>Bt,takeInputDiagnostics:()=>Hn,takeReading:()=>Zi});function Hn(){let s=Qe;return Qe=$p(),s}function Zi({ms:s,hz:e,replay:t}){return new Promise((o,n)=>{let r=new to,i=new oo,a=new os,l=()=>document.hasFocus()&&document.visibilityState==="visible",c=document.pointerLockElement!==null,d=l()?null:"the window was not in front",h=()=>{l()||(d??="the window lost focus")},p=()=>{document.pointerLockElement!==null!==c&&(d??=c?"the game let go of the mouse":"the game took the mouse")},m=()=>{window.removeEventListener("blur",h),document.removeEventListener("visibilitychange",h),document.removeEventListener("pointerlockchange",p)};window.addEventListener("blur",h),document.addEventListener("visibilitychange",h),document.addEventListener("pointerlockchange",p);let f=setTimeout(()=>{m(),i.stop(),a.stop(),window.chrome.webview.postMessage("input-replay-stop"),n(new Error("the game stopped drawing frames"))},s+5e3);i.start(),a.start(),Qe.readings++,t&&c&&(Qe.asked++,window.chrome.webview.postMessage(`input-replay, ${s}`));let g=performance.now(),b=()=>{let v=performance.now();if(r.frame(v),v-g=Ep&&Qe.withInput++,L===null&&(d??="too few frames"),d!==null&&(Qe.invalid[d]=(Qe.invalid[d]??0)+1),o({fps:L?.fps??null,p50:L?.p50??null,p99:L?.p99??null,maxMs:L?.maxMs??null,stallMs:L?.stallMs??null,taskP99:k.p99,inputP99:E.events>=Ep?E.p99:null,invalid:d!==null,...d===null?{}:{why:d}})};requestAnimationFrame(b)})}var Bt,Ep,$p,Qe,Qi=w(()=>{"use strict";yn();Bt=600,Ep=20,$p=()=>({readings:0,asked:0,withInput:0,pageEvents:0,hostSteps:0,ended:{},invalid:{}}),Qe=$p();window.chrome.webview.addEventListener("message",s=>{let e=s.data?.inputReplay;e&&(Qe.hostSteps+=Number(e.sent)||0,Qe.ended[e.reason]=(Qe.ended[e.reason]??0)+1)})});var ia={};A(ia,{loggedIn:()=>As});function zt(){try{return JSON.parse(localStorage.getItem(qn)??"null")}catch{return null}}function Fe(s){localStorage.setItem(qn,JSON.stringify(s))}function As(){return document.querySelector("#signedInHeaderBar")!==null}function Ht(s,e){u.settings.data[s]=e,window.chrome.webview.postMessage(`set-config, ${s}, ${e}`);for(let t of[`#${s}`,`#slid_input_${s}`]){let o=document.querySelector(t);o&&(o.type==="checkbox"?o.checked=e===!0:o.value=String(e))}}function ut(s){return s==null?"default":String(s)==="true"?"on":String(s)==="false"?"off":String(s)}function Gv(){let s=/--autodetect-dev=(\S+)/.exec(u.launchArgs??""),e={};for(let t of s?.[1].split(",")??[]){let[o,n]=t.split(":");o==="hz"&&(e.hz=Number(n)),o==="battery"&&(e.battery=!0),o==="laptop"&&(e.laptop=!0),o==="force"&&(e.force=n),o==="collapse"&&(e.collapse=Number(n))}return e}function Pp(s){let e=Math.round((s-1)*100);return`${e>0?"+":""}${e} %`}function yt(s,e=1){return s===null?"?":s.toFixed(e)}function Dt(s){return s>0?`${s} FPS`:"no limit"}function Wv(s,e,t){if(s===null)return"measured as smooth, with fewer frames to draw";let o=`${yt(e[s].median)} to ${yt(t[s].median)}`;return{taskP99:`the game reacts sooner: other work waited up to ${o} ms`,inputP99:`mouse input waits ${o} ms`,p99:`slowest frames ${o} ms`,stallMs:`stutter ${o} ms per second`,maxMs:`longest frame ${o} ms`,fps:`${yt(e.fps.median,0)} to ${yt(t.fps.median,0)} FPS`}[s]}function Ip(s,e=""){return s===null?"-":`${e}${s.toFixed(1)} ms`}function Ot(s,e=""){return s===null?"-":`${e}${s.toFixed(1)}`}function sa(s){return`
                  `}function Kn(s){let e=s.filter(o=>typeof o=="number").sort((o,n)=>o-n);if(e.length===0)return null;let t=Math.floor(e.length/2);return e.length%2===1?e[t]:(e[t-1]+e[t])/2}function Vv(s){if(!s||s.readings===0)return"";if(s.withInput>0)return`

                  Input test: ${s.withInput} of ${s.readings} readings in the match had mouse input from Kute (${s.hostSteps} steps sent, ${s.pageEvents} seen by the game).

                  `;let e=Object.entries(s.ended).filter(([o])=>o!=="done"&&o!=="stopped").map(([o,n])=>`${o}: ${n}x`).join(", "),t="the game did not hold the mouse when the readings started";return s.asked>0&&(t=e||`Kute sent ${s.hostSteps} steps, the game saw ${s.pageEvents} mouse events`),`

                  The input test did not reach the game (${t}). Mouse wait and settings that only cost in a fight were not measured.

                  `}function dt(s,e){let t=s.filter(r=>typeof r=="number").map(Math.round);if(t.length===0)return"-";let[o,n]=[Math.min(...t),Math.max(...t)];return o===n?`${o} ${e}`:`${o} to ${n} ${e}`}function Yv(s){let e=[[`As you had it (${Dt(s.beforeCap)})`,s.played??[]],["no limit, first readings",s.unlimited??[]],...s.caps.filter(d=>d.where==="test match").map(d=>[Dt(d.cap),d.readings??[]])],{render:t=null,display:o=null}=s.adapters??{},n=t!==null&&o!==null&&t!==o,r=d=>{let h=(d?.nvidia??[]).map(p=>p.clockMhz).filter(p=>typeof p=="number");return h.length>0?Math.max(...h):null},i=d=>{let h=(d?.nvidia??[]).reduce((m,f)=>m|(f.heldBack??0),0),p=[[1,"heat"],[2,"power limit"],[4,"battery"],[16,"weak power supply"]].filter(([m])=>(h&Number(m))!==0).map(([,m])=>m);return p.length>0?p.join(", "):h===0?"no":`yes (${h})`},a=[...s.played??[],...s.unlimited??[]].some(d=>(d.load?.nvidia??[]).length>0),l=e.filter(([,d])=>d.some(h=>h.load)).map(([d,h])=>{let p=h.map(f=>f.load),m=(f,g)=>dt(p.map(b=>f===null?null:b?.gpu?.[f]?.[g]),"%");return` + ${a?``:""} + ${n?``:""} + `});if(l.length===0)return"";let c=(s.trace??[]).map(d=>` + `);return`
                  FPSProcessor busyProcessor speedGraphics card busyGraphics clock ${yt(s.fps.median,0)}${Ot(s.p99.median)}${Ot(s.taskP99.median)}${Ot(s.inputP99.median)}
                  ${d}${dt(h.map(f=>f.fps),"")}${dt(p.map(f=>f?.cpuBusy),"%")}${dt(p.map(f=>f?.cpuSpeed),"%")}${m(t,"render")}${dt(p.map(r),"MHz")}${m(o,"render")}${m(o,"copy")}${dt(p.map(f=>f?.temperature),"C")}${dt(p.map(f=>f?.thermalLimit),"%")}
                  ${(d.ms/1e3).toFixed(1)} s${d.fps}${dt([d.load?.cpuSpeed],"%")}${dt([t===null?null:d.load?.gpu?.[t]?.render],"%")}${dt([r(d.load)],"MHz")}${i(d.load)}
                  ${a?"":""} ${n?"":""}${l.join("")}
                  FPSProcessor busyProcessor speedGraphics card busyGraphics clockScreen's chip busyScreen's chip copyingHottestHeat limit

                  Processor speed is its share of the nominal clock: above 100 % with turbo, far below while the PC throttles it. A heat limit under 100 % means the firmware slows the PC down. A graphics clock that drops while the frame rate drops means the graphics driver is saving power.

                  - ${c.length>0?`

                  Without a limit, step by step

                  ${c.join("")}
                  TimeFPSProcessor speedGraphics card busyGraphics clockDriver holds it back
                  `:""}`}function t0(s){if(s.outcome!=="not steady")return"";let e=Math.max(0,...(s.readings??[]).map(t=>t.stallMs??0));return e>0?` (stood still ${Math.round(e/10)} % of the time)`:" (did not reach it)"}function Hp(s,e=""){return`${s}${e}`}function Ho(s,e,{wide:t=!1,unit:o=""}={}){return`

                  ${s}${o?`${o}`:""}

                  ${e}
                  `}function Dn(s,e,t="adNum"){return`
                  ${s}${e.join("")}
                  `}function o0(s){let e=new Set(s.plan.changes.map(x=>x.id)),t=x=>x.gain===null&&!e.has(x.id)&&!!x.note,o=s.settings.filter(x=>!t(x)).map(x=>{let $=x.note??"";x.gain!==null&&($=x.steady?`${Bp(x.gain)} when ${pt(x.cheap)}`:"unsteady, not used");let I=e.has(x.id)?`set to ${pt(x.cheap)}`:'kept';return`${x.label}${pt(x.current)}${$}${I}`}),n=s.pipeline.map(x=>`${x.label}${na(ye(x.readings))}${Hp(x.outcome)}`),r='LimitFrame timeSlowest 1 %Other work waitsMouse waitsGainResult',i=["client test","test match"].map(x=>{let $=s.caps.filter(I=>I.where===x).map(I=>`${Dt(I.cap)}${Ft(I.frameMs)} - ${Ft(I.summary.p99.median,"+")}${Ft(I.summary.taskP99.median)}${Ft(I.summary.inputP99.median)} - ${I.netMs===null?"":Ft(I.netMs,I.netMs>0?"+":"")}${Hp(I.outcome,t0(I))}`);return{where:x,html:$.length>0?Dn(r,$):""}}).filter(x=>x.html),a={cpu:"the processor",gpu:"the graphics card",unknown:null}[s.plan.regime],l="Not measured whether the processor or the graphics card holds the frame rate back.";a&&(l=`Limited by ${a}${s.halfResolutionGain===null?"":` (half the resolution: ${Bp(s.halfResolutionGain)})`}.`);let c=new Map;for(let x of s.settings.filter(t)){let $=x.note??"";c.set($,[...c.get($)??[],`${x.label} ${pt(x.current)}`])}let u=[...c].map(([x,$])=>`

                  ${x.charAt(0).toUpperCase()}${x.slice(1)}, kept as they were: ${$.join(", ")}.

                  `),h=(o.length>0?Dn('SettingWasMeasuredResult',o,""):"")+u.join(""),p="";s.hybrid===!0?p=" Two graphics chips: frames get copied from one to the other.":s.hybrid===null&&(p=" Could not tell which graphics chip drives the screen.");let f="FPSSlowest 1 %Other work waitsMouse waits",m=`

                  Without an FPS limit this PC ran ${Math.round(s.capacity)} FPS in the test match. Kute aims for at least ${s.plan.target} FPS + ${c.length>0?`

                  Without a limit, step by step

                  ${c.join("")}
                  TimeFPSProcessor speedGraphics card busyGraphics clockDriver holds it back
                  `:""}`}function Xv(s){if(s.outcome!=="not steady")return"";let e=Math.max(0,...(s.readings??[]).map(t=>t.stallMs??0));return e>0?` (stood still ${Math.round(e/10)} % of the time)`:" (did not reach it)"}function Np(s,e=""){return`${s}${e}`}function Bo(s,e,{wide:t=!1,unit:o=""}={}){return`

                  ${s}${o?`${o}`:""}

                  ${e}
                  `}function Dn(s,e,t="adNum"){return`
                  ${s}${e.join("")}
                  `}function Jv(s){let e=new Set(s.plan.changes.map(x=>x.id)),t=x=>x.gain===null&&!e.has(x.id)&&!!x.note,o=s.settings.filter(x=>!t(x)).map(x=>{let $=x.note??"";x.gain!==null&&($=x.steady?`${Pp(x.gain)} when ${ut(x.cheap)}`:"unsteady, not used");let I=e.has(x.id)?`set to ${ut(x.cheap)}`:'kept';return`${x.label}${ut(x.current)}${$}${I}`}),n=s.pipeline.map(x=>`${x.label}${sa(ye(x.readings))}${Np(x.outcome)}`),r='LimitFrame timeSlowest 1 %Other work waitsMouse waitsGainResult',i=["client test","test match"].map(x=>{let $=s.caps.filter(I=>I.where===x).map(I=>`${Dt(I.cap)}${Ot(I.frameMs)} + ${Ot(I.summary.p99.median,"+")}${Ot(I.summary.taskP99.median)}${Ot(I.summary.inputP99.median)} + ${I.netMs===null?"":Ot(I.netMs,I.netMs>0?"+":"")}${Np(I.outcome,Xv(I))}`);return{where:x,html:$.length>0?Dn(r,$):""}}).filter(x=>x.html),a={cpu:"the processor",gpu:"the graphics card",unknown:null}[s.plan.regime],l="Not measured whether the processor or the graphics card holds the frame rate back.";a&&(l=`Limited by ${a}${s.halfResolutionGain===null?"":` (half the resolution: ${Pp(s.halfResolutionGain)})`}.`);let c=new Map;for(let x of s.settings.filter(t)){let $=x.note??"";c.set($,[...c.get($)??[],`${x.label} ${ut(x.current)}`])}let d=[...c].map(([x,$])=>`

                  ${x.charAt(0).toUpperCase()}${x.slice(1)}, kept as they were: ${$.join(", ")}.

                  `),h=(o.length>0?Dn('SettingWasMeasuredResult',o,""):"")+d.join(""),p="";s.hybrid===!0?p=" Two graphics chips: frames get copied from one to the other.":s.hybrid===null&&(p=" Could not tell which graphics chip drives the screen.");let m="FPSSlowest 1 %Other work waitsMouse waits",f=`

                  Without an FPS limit this PC ran ${Math.round(s.capacity)} FPS in the test match. Kute aims for at least ${s.plan.target} FPS (${3}x your ${s.hz} Hz screen), and this PC needs ${Math.round(s.plan.needed)} to keep that in a fight: - samples of the same settings differ by ${Math.round(s.noise*100)} %, and it ended the run at ${Math.round(s.drift*100)} % of its starting speed.

                  `;if(s.pushed){let x=(s.unlimited??[]).map(H=>xt(H.fps,0)).join(", "),{limit:$,steadyUpTo:I}=s.pushed,_=`No limit ran steadily, not even your screen's ${s.hz} FPS, so there was no limit to offer.`;$!==null&&I!==null&&(_=`Up to ${I} FPS it ran steadily in the empty test match. A real match is heavier than that, so the limit with room is the highest multiple of your ${s.hz} Hz - that has ${I>$?"one more steady step above it":"run steadily"}: ${$} FPS. A limit of your own that runs steadily is kept, a lower one would make the mouse wait longer.`),m=`

                  This PC does not run steadily without an FPS limit: it stood still ${Math.round(s.pushed.stoodStill*100)} % of the time + samples of the same settings differ by ${Math.round(s.noise*100)} %, and it ended the run at ${Math.round(s.drift*100)} % of its starting speed.

                  `;if(s.pushed){let x=(s.unlimited??[]).map(H=>yt(H.fps,0)).join(", "),{limit:$,steadyUpTo:I}=s.pushed,_=`No limit ran steadily, not even your screen's ${s.hz} FPS, so there was no limit to offer.`;$!==null&&I!==null&&(_=`Up to ${I} FPS it ran steadily in the empty test match. A real match is heavier than that, so the limit with room is the highest multiple of your ${s.hz} Hz + that has ${I>$?"one more steady step above it":"run steadily"}: ${$} FPS. A limit of your own that runs steadily is kept, a lower one would make the mouse wait longer.`),f=`

                  This PC does not run steadily without an FPS limit: it stood still ${Math.round(s.pushed.stoodStill*100)} % of the time (readings without a limit: ${x} FPS). That happens when a PC throttles itself under full load, common on laptops.

                  -

                  ${_} Game settings were not measured, their gain is read without a limit.

                  `}let g=s.played??[],b=g.some(ws)?`

                  The game drew more frames than reached the screen: one every ${zp(jn(g.map(x=>x.p50)))}, shown one every ${zp(jn(g.map(x=>x.presentMs)))}.

                  `:"",v=e0(s),k=s.pushed?"On a PC that does not run steadily without a limit, the limits are not compared with each other: each one only has to run steadily.":"A limit is taken when the game reacts sooner or the mouse waits less with it than with yours (gain above zero), and never when anything measures worse. A lower limit's longer frames are in the mouse wait. Slowest 1 % counts beyond the frame time.",E=i.map((x,$)=>Ho(`${x.where}: FPS limits`,`${x.html}${$===i.length-1?`

                  ${k}

                  `:""}`,{unit:"times in ms"}));return`
                  ${[Ho("This PC",`

                  ${s.gpu}
                  ${s.cpu}${s.laptop?" (laptop)":""}, ${s.hz} Hz${s.powerOverlay?`, Windows power mode: ${s.powerOverlay}`:""}.${p}

                  - ${m}${s.rolledBack?`

                  ${s.rolledBack}

                  `:""}${s.pipelineRefused?`

                  ${s.pipelineRefused}

                  `:""}${Qv(s.input)}${b}`),Ho("Before and after",`${Dn(`${f}`,[`Before (${Dt(s.beforeCap)})${na(s.before)}`,s.after?`After (${Dt(s.afterCap)})${na(s.after)}`:""])}${s.after?"":'

                  Your setup stayed as it was, so there is no after to measure.

                  '}`,{unit:"times in ms"}),Ho("Client test: setup",n.length>0?Dn(`Setup${f}Result`,n,"adNum adWrap"):"

                  The client test did not run, the client's own setup was left alone.

                  ",{unit:"times in ms"}),...E,Ho("Test match: game settings",`

                  ${l}

                  ${h} -

                  Settings that need a reload cannot be measured in one test match, they were not changed.

                  `),v?Ho("What the PC did",v,{wide:!0}):""].join("")}
                  +

                  ${_} Game settings were not measured, their gain is read without a limit.

                  `}let g=s.played??[],b=g.some(vs)?`

                  The game drew more frames than reached the screen: one every ${Ip(Kn(g.map(x=>x.p50)))}, shown one every ${Ip(Kn(g.map(x=>x.presentMs)))}.

                  `:"",v=Yv(s),k=s.pushed?"On a PC that does not run steadily without a limit, the limits are not compared with each other: each one only has to run steadily.":"A limit is taken when the game reacts sooner or the mouse waits less with it than with yours (gain above zero), and never when anything measures worse. A lower limit's longer frames are in the mouse wait. Slowest 1 % counts beyond the frame time.",E=i.map((x,$)=>Bo(`${x.where}: FPS limits`,`${x.html}${$===i.length-1?`

                  ${k}

                  `:""}`,{unit:"times in ms"}));return`
                  ${[Bo("This PC",`

                  ${s.gpu}
                  ${s.cpu}${s.laptop?" (laptop)":""}, ${s.hz} Hz${s.powerOverlay?`, Windows power mode: ${s.powerOverlay}`:""}.${p}

                  + ${f}${s.rolledBack?`

                  ${s.rolledBack}

                  `:""}${s.pipelineRefused?`

                  ${s.pipelineRefused}

                  `:""}${Vv(s.input)}${b}`),Bo("Before and after",`${Dn(`${m}`,[`Before (${Dt(s.beforeCap)})${sa(s.before)}`,s.after?`After (${Dt(s.afterCap)})${sa(s.after)}`:""])}${s.after?"":'

                  Your setup stayed as it was, so there is no after to measure.

                  '}`,{unit:"times in ms"}),Bo("Client test: setup",n.length>0?Dn(`Setup${m}Result`,n,"adNum adWrap"):"

                  The client test did not run, the client's own setup was left alone.

                  ",{unit:"times in ms"}),...E,Bo("Test match: game settings",`

                  ${l}

                  ${h} +

                  Settings that need a reload cannot be measured in one test match, they were not changed.

                  `),v?Bo("What the PC did",v,{wide:!0}):""].join("")}

                  The run took ${s.seconds.toFixed(0)} s. A difference only counts when it is bigger than the spread between two samples of the same setup, - and a setup that measures worse anywhere is never taken.

                  Copy this report
                  `}function ra(s,e,t,o,n=!1){let r=Bi(s,e,{prefer:o,inputRequired:t==="test match",trade:n}),i=r.judged.map(u=>({cap:u.cap,where:t,summary:u.summary,frameMs:u.frameMs,netMs:u.netMs,outcome:u.outcome})),a=r.judged.find(u=>u.cap===r.winner),l="measures as smooth as before, with fewer frames to draw";if(r.decidedBy==="net"){let{task:u=0,input:h=null}=a?.gains??{},p=[];u>0&&p.push(`the game reacts ${xt(u)} ms sooner`),h!==null&&h>0&&p.push(`the mouse waits ${xt(h)} ms less`),h!==null&&h<0&&p.push(`the mouse waits ${xt(-h)} ms longer, which the sooner reaction outweighs on a PC below its target`),l=p.length>0?p.join(", "):"frames come sooner and nothing waits longer"}let c=r.judged.filter(u=>u.cap!==e&&u.outcome!=="worse"&&u.outcome!=="not steady").sort((u,h)=>(h.netMs??-1/0)-(u.netMs??-1/0)).map(u=>u.cap);return{rows:i,winner:r.winner,reason:l,order:c}}function Op(s){d.hostFeatures?.includes("mute")&&window.chrome.webview.postMessage(`mute, ${s}`)}function Fp(){return`Takes about two minutes. Don't touch mouse or keyboard meanwhile: a test window opens and closes a few times, then Kute plays a private match by itself, turning the view and firing.${d.hostFeatures?.includes("mute")?" The game is muted meanwhile.":""}`}function As(){return Fe.some(s=>d.settings.data[s.setting]!==!1!=(d.running?.[s.setting]!==!1))}function Dp(s){return s.report?.version===2?s.report:void 0}function qp(s){return new Promise(e=>{let t=performance.now(),o={frames:0,done:!1,watchdog:0},n=()=>{o.frames++;let r=performance.now()-t;if(r{o.done||e(null)},s+2e3)})}async function s0(s){if(s===0)return!0;let e=performance.now()+Gv;for(;performance.now()typeof t=="number"?Math.round(t*100)/100:null;return{fps:e(s.fps),p50:e(s.p50),p99:e(s.p99),maxMs:e(s.maxMs),stallMs:e(s.stallMs),taskP99:e(s.taskP99),inputP99:e(s.inputP99),...typeof s.presentMs=="number"?{presentMs:e(s.presentMs)}:{},...s.invalid?{invalid:!0,why:s.why}:{},...s.load?{load:s.load}:{}}}function co(s){return ye(s).fps.median??0}var Kn,Rp,Pp,ta,jv,Uv,oa,Fn,Ip,Gv,Ts,Wv,Vv,Yv,Np,_p,sa,Xv,De,yt,ia,Kp,la=w(()=>{"use strict";$p();F();Hn();Ae();ji();Ui();ys();ea();Ji();Kn="kute_autodetect",Rp="kute_autodetect_asked",Pp=250,ta=1500,jv=3e5,Uv=2e4,oa=3*zt,Fn=2*zt,Ip=6*zt,Gv=6e3,Ts=450,Wv=700,Vv=.08,Yv=["gameFpsLimit","throttle",...Fe.map(s=>s.setting)],Np="autodetect-v2",_p="https://krunker.io/",sa="kute_autodetect_stopped",Xv={taskP99:"the game reacted later",inputP99:"the mouse waited longer",p99:"slow frames came later",stallMs:"more stutter",maxMs:"a longer freeze",frame:"frames took longer, and the mouse wait could not be measured",unsteady:"it did not run steadily"},De=s=>new Promise(e=>{setTimeout(e,s)});yt=class{constructor(){document.querySelector("#adPanelHost")?.parentElement?.remove(),this.overlay=document.createElement("div"),this.onEscape=void 0,this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.93)";let e=document.createElement("div");e.id="adPanelHost",this.overlay.append(e),this.root=e.attachShadow({mode:"open"}),this.root.innerHTML=Cp,document.body.append(this.overlay)}element(e){return this.root.querySelector(`#${e}`)}progress(e,t){this.element("adStatus").textContent=e,this.element("adBarFill").style.width=`${Math.round(t*100)}%`}choose(e,t,o,n){let r=o.find(l=>l.cancel);this.dismissWith(r?()=>r.onPick():void 0),this.element("adTitle").textContent=e,this.element("adStatus").textContent=t;let i=this.element("adNote");i.textContent=n??"",i.style.display=n?"block":"none",this.element("adBar").style.display="none",this.element("adHint").style.display="none";let a=this.element("adActions");a.style.display="flex",a.innerHTML="";for(let l of o){let c=document.createElement("div");c.className="adButton",c.textContent=l.label,c.onclick=()=>l.onPick(),a.append(c)}}result(e,t={}){this.dismissWith(()=>this.close()),this.element("adTitle").textContent=e.title,this.element("adStatus").textContent=e.line,this.element("adNote").style.display="none",this.element("adBar").style.display="none",this.element("adHint").style.display="none",this.element("adActions").style.display="flex",this.element("adDetailsButton").style.display="none",this.element("adUndo").style.display=e.changed&&t.onUndo?"":"none",this.element("adRun").style.display=t.onRun?"":"none",this.element("adRestart").style.display=e.needsRestart?"":"none",this.element("adRestart").onclick=()=>window.chrome.webview.postMessage("restart"),this.element("adAdvancedButton").style.display=t.report?"":"none";let o=this.element("adDetails");if(o.innerHTML=e.details.map(n=>`
                • ${n}
                • `).join(""),o.style.display=e.details.length>0?"block":"none",t.report){let n=this.element("adAdvanced");n.innerHTML=o0(t.report);let r=this.element("adAdvancedButton");r.textContent="Advanced",r.onclick=()=>{let i=n.style.display!=="block";n.style.display=i?"block":"none",this.element("adPanel").classList.toggle("adWide",i),r.textContent=i?"Hide advanced":"Advanced"},this.element("adCopy").onclick=()=>{let i=JSON.stringify({kute:d.version,...t.report},null,2);navigator.clipboard.writeText(i).then(()=>{this.element("adCopy").textContent="Copied"},()=>{this.element("adCopy").textContent="Copying failed"})}}this.element("adOk").onclick=()=>this.close(),this.element("adUndo").onclick=()=>{this.close(),t.onUndo?.()},this.element("adRun").onclick=()=>{this.close(),t.onRun?.()}}clickThrough(e){this.overlay.style.pointerEvents=e?"none":""}dismissWith(e){this.unbindEscape(),this.overlay.onclick=e?t=>{t.target===this.overlay&&e()}:null,e&&(this.onEscape=t=>{t.key==="Escape"&&(t.stopPropagation(),e())},document.addEventListener("keydown",this.onEscape,!0))}unbindEscape(){this.onEscape&&document.removeEventListener("keydown",this.onEscape,!0),this.onEscape=void 0}close(){this.unbindEscape(),this.overlay.remove()}};ia=class{constructor(){this.running=!1,this.cancelled=!1}snapshot(){return{client:Object.fromEntries(Yv.map(e=>[e,d.settings.data[e]])),game:Object.fromEntries(Wi.map(e=>[e,$s(e)]))}}restore(e){Bn();for(let[t,o]of Object.entries(e.game))o!==null&&$s(t)!==o&&Me(t,o);for(let[t,o]of Object.entries(e.client))o!==void 0&&d.settings.data[t]!==o&&Ot(t,o)}undo(){let e=Ht();if(!e?.undoable){d.showNotification("Nothing to undo",!1,3);return}let t=new Set(wt.filter(i=>i.needsReload).map(i=>i.id)),o=Object.entries(e.snapshot.game).some(([i,a])=>t.has(i)&&a!==null&&$s(i)!==a);this.restore(e.snapshot);let n=As();e.undoable=!1;let r="Your previous settings are back.";o&&(r="Your previous settings are back, the game reloads once to apply them."),n&&(r+=" Restart Kute to finish."),e.summary={title:"Undone",line:r,details:[],changed:!1,needsRestart:n},qe(e),d.showNotification(`Auto-detect undone. ${r.replace("Your previous settings are back","Your settings are back")}`,!1,5),o&&setTimeout(()=>location.reload(),1200)}dropUndo(){let e=Ht();e?.undoable&&(e.undoable=!1,qe(e))}showLast(){let e=Ht();if(!e?.summary){d.showNotification("Auto-detect has not run yet",!1,3);return}new yt().result(e.summary,{onUndo:e.undoable?()=>this.undo():void 0,report:Dp(e)})}async start(e={}){if(this.running)return;if(!d.hostFeatures?.includes(Np)){d.showNotification("Auto-detect needs a newer Kute, update the client to use it",!1,6);return}if(d.recovery){d.showNotification("Auto-detect can't run in safe mode or while Kute looks for the cause of a crash",!1,6);return}if(!Ls()){d.showNotification("Log in first: auto-detect measures in a private test match, and hosting one needs an account",!1,6);return}if(document.pointerLockElement||Oe()){d.showNotification("Open the menu outside of a competitive match first",!1,4);return}if(!e.resume&&As()){d.showNotification("Restart Kute first: a setting you changed only applies after a restart, auto-detect would test the old one",!1,7);return}this.running=!0,this.cancelled=!1,window.closWind?.();let t,o;if(e.resume)t=e.resume,o=t.previous??null;else{o=Ht(),o&&(delete o.wizard,delete o.wizardDetails);let l=this.snapshot();t={status:"running",at:Date.now(),snapshot:e.snapshot??l,baseline:l,previous:o,details:e.details??[]},qe(t)}let n=new yt,r=l=>{l.key==="Escape"&&(this.cancelled=!0,Di())};document.addEventListener("keydown",r,!0);let i={inMatch:!1},a=()=>{window.chrome.webview.postMessage("input-replay-stop"),this.restore(t.snapshot),qe(o||{status:"prompted",at:Date.now(),snapshot:t.snapshot}),n.close(),As()&&d.showNotification("Your settings are back. Restart Kute to finish",!1,7),i.inMatch&&(document.exitPointerLock(),location.href=_p)};try{let l=await this.run(n,t,i);if(l==="restarting")return;if(l===null){a();return}t.status="done",t.summary=l.summary,t.report=l.report,t.undoable=l.summary.changed,!l.summary.changed&&o?.undoable&&(t.snapshot=o.snapshot,t.undoable=!0),delete t.previous,delete t.baseline,delete t.carry,delete t.details,t.showSummary=!0,qe(t),n.progress("Leaving the test match",1),document.exitPointerLock(),await De(800),location.href=_p}catch(l){let c=`Auto-detect stopped: ${l instanceof Error?l.message:String(l)}`;i.inMatch&&sessionStorage.setItem(sa,c),a(),d.showNotification(c,!1,7)}finally{document.removeEventListener("keydown",r,!0),Op(!1),window.chrome.webview.postMessage("throttle, menu"),this.running=!1}}async run(e,t,o){let n=Jv(),r=t.baseline??t.snapshot,i=t.details??[],a=performance.now()-(t.carry?.elapsedMs??0),l=!!t.carry;e.progress("Reading your hardware",.02);let c=await Te("get-specs","specs");if(c===null)throw new Error("this needs a newer version of the client");let u=c.displays??[],h=u.find(M=>M.hostsWindow)??u[0],p=n.hz??(h?.hz>1?h.hz:60),f=(c.gpus??[]).filter(M=>!M.software),m=c.renderAdapter?.name??[...f].sort((M,D)=>D.vramMb-M.vramMb)[0]?.name??"unknown graphics card",g=n.battery??!!c.onBattery,b=n.laptop??(!!c.laptop||c.hybrid===!0),v=p*3,k=d.hostFeatures?.includes("load-sample")===!0,E=d.running?.hardFlip!==!1,L=Number(r.game[kt])||0,x=Number(r.client.gameFpsLimit)||0,$=Number(r.client.throttle)||1,I=[x,L].filter(M=>M>0),_=I.length>0?Math.min(...I):0,H=In(),G=null,J=[],B=[];if(!l){if(G=await qi({hz:p,hybrid:c.hybrid===!0,progress:(M,D)=>e.progress(M,.03+.27*D),cancelled:()=>this.cancelled}),this.cancelled)return null;if(G&&n.force&&n.force in H&&(G={...G,winner:{...H,[n.force]:!H[n.force]},changed:!0,decidedBy:"p99"}),G){e.progress("Testing FPS limits",.31);let M=[...new Set([0,v,2*p,p,_])].sort((q,ee)=>ee-q),D=await Ki({pipeline:G.winner,common:G.common,caps:M,cancelled:()=>this.cancelled});if(this.cancelled)return null;if(D){let q=ra(D,_,"client test",b?v:void 0);J=q.rows,B=q.order}}}e.progress("Opening a private test match",.38),Op(!0),e.clickThrough(!0);let re=await Cs(),je=!1;if(re&&(e.progress("Joining the test match",.41),je=await Ms(re)),e.clickThrough(!1),!je)throw window.closWind?.(),new Error("could not open a private test match (is a host slot free?)");o.inMatch=!0;let be=()=>{if(!zn(re))throw new Error("left the private test match")};if(this.cancelled)return null;L>0&&l&&Me(kt,"0");let Ee=Number(d.settings.data.gameFpsLimit)||0,j=!0;On(),window.chrome.webview.postMessage("throttle, game"),await De(2500),await De(300),window.chrome.webview.postMessage("bring-to-front");let X=async(M,D=oa)=>{M!==Ee&&(Ot("gameFpsLimit",M),Ee=M,await De(Wv),j=await s0(M)),be(),k&&await Te("load-sample","loadSample",500),E&&await Te("get-present-intervals","presentIntervals",400);let q=await Qi({ms:D,hz:p,replay:!0});if(E){let ee=await Te("get-present-intervals","presentIntervals",400);ee&&ee.samples>0&&(q.presentMs=ee.p50)}if(k&&(q.load=await Te("load-sample","loadSample",500)),be(),!j&&!q.invalid&&(q.invalid=!0,q.why="nothing held the FPS limit"),n.collapse!==void 0&&(M===0||M>=n.collapse)){let ee=(te,O)=>(te??0)+O;return{...q,fps:(q.fps??0)/2,stallMs:400,p99:ee(q.p99,25),maxMs:ee(q.maxMs,40),taskP99:ee(q.taskP99,40),inputP99:ee(q.inputP99,30)}}return q},Y=async()=>{if(!k)return[];await X(0,zt),window.chrome.webview.postMessage(`input-replay, ${10*zt}`);let M=[],D=performance.now();for(await Te("load-sample","loadSample",500);performance.now()-D<10*zt&&!this.cancelled;){let q=await qp(300);if(q===null)break;M.push({ms:Math.round(performance.now()-D),fps:Math.round(q),load:await Te("load-sample","loadSample",500)})}return window.chrome.webview.postMessage("input-replay-stop"),M},y=async(M,D=oa)=>{let q=[];for(let ee=0;ee<5&&q.length<2&&!this.cancelled;ee++){let te=await X(M,D);te.invalid||q.push(te)}return q},C=async M=>{for(let D=0;D<4&&!this.cancelled;D++)if(!bt([await X(M,Fn)],M))return},R=async M=>{let D=new Map(M.map(q=>[q,[]]));for(let q=0;q<2;q++)for(let ee of M){if(this.cancelled)return D;D.get(ee)?.push(await X(ee))}return D},{carry:K}=t;if(!K){e.progress("Measuring how the game runs now",.45),await X(Ee);let M=await y(Ee);if(this.cancelled)return null;if(M.length<2)throw new Error("the game could not be measured, the Kute window has to stay in front during the test");L>0&&Me(kt,"0"),$>1&&(Ot("throttle",1),window.chrome.webview.postMessage("throttle, game"),await De(Ts)),e.progress("Measuring what this PC can do",.5);let q=_===0&&$<=1?[...M,await X(0)]:[await X(0),await X(0),await X(0)];if(this.cancelled)return null;if(K={asPlayed:M,uncapped:q,playedCap:_,pipelineBefore:H,pipelineAfter:G?.winner??H,pipelineChanged:!!G?.changed,decidedBy:G?.decidedBy??null,rows:G?.rows??[],benchCaps:J,capOrder:B,elapsedMs:performance.now()-a},K.pipelineChanged){t.carry=K,qe(t),L>0&&Me(kt,String(L)),Ee!==x&&Ot("gameFpsLimit",x);for(let ee of Fe)K.pipelineAfter[ee.setting]!==H[ee.setting]&&Ot(ee.setting,K.pipelineAfter[ee.setting]);return document.exitPointerLock(),e.choose("Kute restarts once","The client test found a setup that runs better on this PC. Kute restarts with it and checks it in the game, the test goes on by itself.",[]),await De(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}}let{playedCap:z}=K,N=K,V=M=>({version:2,gpu:m,cpu:`${c.cpu?.name??"unknown processor"}, ${c.cpu?.threads??"?"} threads`,hz:p,laptop:!!c.laptop,hybrid:typeof c.hybrid=="boolean"?c.hybrid:null,powerOverlay:c.powerOverlay??null,capacity:co(N.uncapped),unlimited:N.uncapped.map(qn),played:N.asPlayed.map(qn),adapters:{render:c.renderAdapter?.luid??null,display:h?.adapter??null},hybridSource:c.hybridSource??null,client:{...Object.fromEntries(["gameFpsLimit","throttle","inMenuThrottle","uncapFps","patchFrameLimiter","obsCapturePlugin","renderStats","performanceMode","webviewPriority",...Fe.map(D=>D.setting)].map(D=>[D,r.client[D]??d.settings.data[D]??null])),gameFrameCap:L,hook:c.hook??null,limiter:d.frameLimiter??null,running:d.running??null},noise:0,drift:1,headroom:1,beforeCap:z,before:ye(N.asPlayed),afterCap:z,after:null,pipeline:N.rows,caps:N.benchCaps,halfResolutionGain:null,settings:[],plan:_n({capacity:co(N.uncapped),hz:p,headroom:1,halfResolutionGain:null,settings:[]}),input:On(),rolledBack:null,pipelineRefused:N.pipelineRefused??null,recheck:N.recheck??[],seconds:(performance.now()-a)/1e3,...M}),de=(M,D={})=>{this.restore(t.snapshot);let q=As();return{summary:{title:"Nothing changed",line:q?`${M} Restart Kute to finish.`:M,details:[],changed:!1,needsRestart:q},report:V({...D,rolledBack:M})}},Z=co(N.uncapped){let{keep:ee,failed:te}=ks(M,D,{capBefore:z,capAfter:q,trade:Z});return ee?null:te==="reference"?"Kute could not measure the game with your own settings well enough to compare (its window has to stay in front), so it put yours back.":te==="result"?"Kute could not measure the result (its window has to stay in front), so it put your settings back.":`The new settings measured worse than yours (${te==="fps"?`${Math.round(co(D))} FPS, ${Math.round(co(M))} before`:Xv[te??""]}), so Kute put yours back.`},le=[...i];if($>1&&le.push(`CPU Throttling: ${$} \u2192 off (it slows the game down on purpose, the result is checked against how the game ran with it)`),l&&N.pipelineChanged&&!N.pipelineRefused){e.progress("Checking the new setup in the game",.5);let M=await y(z);if(this.cancelled)return null;let D={recheck:M.map(qn)},q=bt(N.asPlayed,z)&&bt(M,z)?null:ge(N.asPlayed,M,z);if(q&&ks(N.asPlayed,M,{capBefore:z,capAfter:z,trade:Z}).failed==="result")return de(q.replace("The new settings","The setup that won the client test"),D);if(q){for(let O of Fe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&Ot(O.setting,N.pipelineBefore[O.setting]);return L>0&&Me(kt,String(L)),Ee!==x&&Ot("gameFpsLimit",x),t.carry={...N,pipelineRefused:q.replace("The new settings","The setup that won the client test"),...D,elapsedMs:performance.now()-a,resumed:!1},qe(t),document.exitPointerLock(),e.choose("Kute restarts once more","The setup from the client test ran worse in the game, so Kute goes back to yours and tests the FPS limits on it.",[]),await De(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}let ee=N.rows.find(O=>Fe.every(ve=>O.pipeline[ve.setting]===N.pipelineAfter[ve.setting])),te=ee?Zv(N.decidedBy,ye(N.rows[0].readings),ye(ee.readings)):"measured better";for(let O of Fe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&le.push(`${O.label}: ${pt(N.pipelineBefore[O.setting])} \u2192 ${pt(N.pipelineAfter[O.setting])} (${te})`)}e.progress("Finding the FPS limit that runs best",.56);let ze=co(N.uncapped),Zt=ze>=v?v:p,Eo=M=>!g||M===z||M!==0&&M<=v,qg=N.uncapped.filter(ws).length>=2,Lr=(b||qg)&&ze>=v?v:void 0,He=new Map,Qt=[],se=z,Wo="",Ie=ze,lt=vs(new Map([[0,N.uncapped]]));if(!lt){let M=N.capOrder.length>0?N.capOrder.slice(0,2):Hi({hz:p,capacity:ze,current:z}).slice(1,3),D=[...new Set([z,0,...M,...Lr?[Lr]:[],...g?[Zt]:[]])].filter(Eo);if(He=await R(D),this.cancelled)return null;lt=vs(He);let q=ra(He,z,"test match",Lr,Z);if(Qt=q.rows,!lt){se=q.winner,Wo=q.reason,Ie=co(He.get(0)??[])||ze;let ee=Oi([...He.keys()],se,Ie,p).filter(te=>Eo(te)&&te0){e.progress("Fine tuning the FPS limit",.64);let te=await R(ee);if(this.cancelled)return null;let O=ra(new Map([[se,He.get(se)??[]],...te]),se,"test match",void 0,Z);Qt.push(...O.rows.filter(ve=>ve.cap!==se));for(let[ve,Ve]of te)He.set(ve,Ve);O.winner!==se&&(se=O.winner,Wo=O.reason),lt=vs(He)}}}let Vo;if(lt){e.progress("Finding the FPS limit this PC holds steadily",.62);let M=new Map;await C(p);for(let te of Rn(p)){if(this.cancelled)return null;let O=await y(te,Ip);if(M.set(te,O),!ao(O,te))break}if(this.cancelled)return null;let D=_i(p,M),q=(jn([...N.uncapped,...He.get(0)??[]].filter(bs).map(te=>te.stallMs))??0)/1e3;Vo={stoodStill:q,steadyUpTo:D.steadyUpTo,limit:D.cap};for(let te of Qt)te.outcome==="better"&&(te.outcome="not used");for(let[te,O]of M){let ve=ao(O,te)?"steady":"not steady";Qt.push({cap:te,where:"test match",summary:ye(O.map(zo)),frameMs:jn(O.map(Ve=>Ve.p50)),netMs:null,outcome:ve}),He.set(te,O)}let ee=z>0&&ao(N.asPlayed,z);se=z,ee||(se=[...new Set([D.cap,D.steadyUpTo])].filter(O=>O!==null).find(O=>ks(N.asPlayed,M.get(O)??[],{capBefore:z,capAfter:O}).keep)??z),Wo=`without a limit this PC stood still ${Math.round(q*100)} % of the time. Up to ${D.steadyUpTo} FPS it ran steadily in the empty test match, ${se} FPS ${(D.steadyUpTo??0)>se?"leaves a step of room for a real match":"is the highest that did"}`}let Yo=Qt.find(M=>M.cap===Zt),Kg=Yo!==void 0&&(Yo.outcome==="steady"||Yo.netMs!==null&&(Yo.outcome==="better"||Yo.outcome==="not better"));g&&(se===0||se>v)&&Kg&&(se=Zt,Wo="on battery");for(let M of Qt)M.cap===se&&M.cap!==z&&M.outcome!=="not steady"&&(M.outcome="chosen"),M.readings=(He.get(M.cap)??[]).map(qn);let cn=N.uncapped.map(M=>M.fps).filter(M=>typeof M=="number"),tu=cn.length>1?(Math.max(...cn)-Math.min(...cn))/Math.max(1,...cn):0,Rr=1,dn=1,Pr=null;if(!lt){Pr=await X(0);let M=(l?He.get(0)?.[0]:N.uncapped[0])?.fps??Ie;Rr=(Pr.fps??Ie)/Math.max(1,M),dn=zi(Rr,tu)}let jg=v*dn,$o=[],Ir=null,Xo=Number(r.game[lo])||1;if(lt)for(let M of wt)$o.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC does not run steadily without a limit)"});else if(IeO.inputP99!==null),D=Pr?.fps??Ie,q=async(O,ve)=>{let Ve=D;O(),await De(Ts);let ct=async()=>{let cu=await X(0,Fn);return cu.invalid?null:cu.fps},eo=await ct();ve(),await De(Ts);let Ye=await ct();if(eo===null||Ye===null)return{ratio:1,steady:!1,raw:[Ve,eo??0,Ye??0]};D=Ye;let lu=(Ve+Ye)/2;return{ratio:eo/Math.max(1,lu),steady:Math.abs(Ve-Ye)/Math.max(1,lu)<=Vv,raw:[Ve,eo,Ye]}},ee=wt.filter(O=>!O.needsReload&&(M||!O.fightOnly));for(let O of wt){let ve=r.game[O.id],Ve=String(O.cheap),ct={id:O.id,label:O.label,current:ve??"default",cheap:Ve,gain:null,steady:!0};if($o.push(ct),O.needsReload){ct.note="not tested (needs a reload)";continue}if(O.fightOnly&&!M){ct.note="not tested (only costs in a fight)";continue}if(ve===null){ct.note="value unknown";continue}if(this.cancelled)return null;e.progress(`Measuring ${O.label}`,.68+.17*ee.indexOf(O)/ee.length);let eo=Yi(ve),Ye=await q(()=>Me(O.id,eo),()=>Me(O.id,ve));ct.gain=eo===Ve?Ye.ratio:1/Math.max(.01,Ye.ratio),ct.steady=Ye.steady,ct.raw=Ye.raw}for(let O of $o){if(O.gain===null||!O.steady||O.current===O.cheap||O.gainMe(O.id,O.cheap),()=>Me(O.id,O.current));O.confirmGain=ve.ratio,O.gain=Math.min(O.gain,ve.ratio),O.steady=ve.steady}e.progress("Checking the graphics card",.88);let te=await q(()=>Me(lo,String(Math.max(.1,Xo*.5))),()=>Me(lo,String(Xo)));Ir=te.steady&&te.ratio>.92?te.ratio:null}else for(let M of wt)$o.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC reaches its target)"});if(this.cancelled)return null;let Mt=_n({capacity:Ie,hz:p,headroom:dn,halfResolutionGain:Ir,settings:$o});for(let M of Mt.changes)le.push(`${M.label}: ${pt(r.game[M.id])} \u2192 ${pt(M.value)} (${M.reason})`),Me(M.id,String(M.value));let Tt=null;if((Mt.changes.length>0||Mt.tuneResolution)&&(await De(Ts),Tt=(await X(0,Fn)).fps),Mt.tuneResolution&&Tt!==null){let M=Xo;for(let D=0;D<2&&Tt!==null&&TtSs&&!this.cancelled;D++){let q=D===0?M*Math.sqrt(Tt/Mt.needed):Ss;M=Math.min(M,Math.max(Ss,Math.floor(q*20)/20)),e.progress(`Trying resolution ${M}`,.9+D*.01),Me(lo,String(M)),await De(Ts),Tt=(await X(0,Fn)).fps}M!==Xo&&le.push(`Resolution: ${Xo} \u2192 ${M} (the graphics card is the limit)`)}if(this.cancelled)return null;e.progress("Checking the result",.94),Mt.changes.length>0&&await X(se);let ou=lt?await Y():[];lt&&await C(se);let su=await y(se,lt?Ip:oa);if(this.cancelled)return null;let Nr={capacity:Ie,noise:tu,drift:Rr,headroom:dn,afterCap:se,after:ye(su),caps:[...N.benchCaps,...Qt],halfResolutionGain:Ir,settings:$o,plan:Mt,pushed:Vo,...ou.length>0?{trace:ou}:{}},_r=se!==z,Ug=!_r&&L>0&&(x===0||LFPS Limit
                  : ${Dt(z)} \u2192 ${Dt(se)} (${Wo})`):Ug&&le.push(`FPS Limit: ${Dt(se)}, now held by Kute instead of the game's frame cap (the game's cap keeps the processor busy while it waits)`);let un=le.length>0,nu=le.length>i.length;if(nu){let M=(He.get(z)??[]).filter(ee=>!ee.invalid),D=l||L>0||$>1,q=ge(!D&&M.length>=2?M:N.asPlayed,su,se);if(q)return de(q,Nr)}else L>0&&Me(kt,String(L)),Ee!==x&&Ot("gameFpsLimit",x);Bn();let pn=`${v} FPS (${3}x your ${p} Hz screen)`,ru=`${le.length} setting${le.length===1?"":"s"} changed.`,ft=`Your PC ran ${Math.round(Ie)} FPS in the test match, above the ${pn} Kute aims for. Nothing needed changing.`;un&&Tt!==null?ft=`${ru} Test match without a limit: ${Math.round(Ie)} FPS before, ${Math.round(Tt)} after. Kute aims for at least ${pn} with no stutter.`:un?ft=`${ru} Without a limit your PC runs ${Math.round(Ie)} FPS in the test match, Kute aims for at least ${pn} with no stutter.`:Iese?" with room to spare":""}.`;else if(se>0&&ao(N.asPlayed,se)){let ee=D!==null&&DsetTimeout(()=>this.offer(),1500),{once:!0});return}sessionStorage.setItem(Rp,"1");let e=new yt;e.choose("Set Kute up for this PC?","Kute can set the game up for what this PC can do: it measures in a private test match, and everything it changes can be undone. You have to be logged in for that.",[{label:"Yes",onPick:()=>{this.setUp(e)}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"No",cancel:!0,onPick:()=>this.decline(e)}],Fp())}decline(e){e.close(),this.remember("declined"),d.showNotification("Got it. You can always start the setup from Settings, Client",!1,5)}async signedIn(){if(Ls())return!0;if(!localStorage.getItem("krunker_token"))return!1;let e=Date.now()+Uv;for(;Date.now(){e.close(),window.loginOrRegister(),this.waitForLogin()}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}])}waitForLogin(){let e=Date.now()+jv,t=setInterval(()=>{if(Ls()){clearInterval(t),this.askSettings();return}Date.now()>e&&clearInterval(t)},1e3)}askSettings(e=new yt){this.remember("settings"),e.choose("Where should your game settings come from?","Kute measures this PC either way and sets what it finds. This is only about the settings it starts from.",[{label:"Import a settings.txt",onPick:()=>{e.close(),this.remember("import"),window.importSettingsPopup()}},{label:"Kute's preset",onPick:()=>{e.close(),this.applyPreset()}},{label:"Keep my settings",onPick:()=>{e.close(),this.start()}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}],Fp())}afterImport(){if(Ht()?.wizard!=="import")return;let e=this.snapshot();this.remember("run",e,[]),setTimeout(()=>{Ht()?.wizard==="run"&&this.start({snapshot:e})},1500)}applyPreset(){let e=this.snapshot(),t=[];for(let[o,n]of Object.entries(Gi))String(e.game[o])!==String(n)&&(Me(o,n),t.push(`${Vi(o)}: ${pt(e.game[o])} \u2192 ${pt(n)} (Kute's preset)`));this.remember("run",e,t),d.showNotification("Applying Kute's preset, the game reloads once",!1,4),setTimeout(()=>location.reload(),1200)}resume(){let e=Ht();if(e?.status==="running"){if(e.carry&&!e.carry.resumed){e.carry.resumed=!0,qe(e),setTimeout(async()=>{if(await this.signedIn()){this.start({resume:e});return}this.restore(e.snapshot),e.previous?qe(e.previous):localStorage.removeItem(Kn),d.showNotification("Auto-detect could not go on (not logged in). Your settings are back, restart Kute to finish",!1,8)},ta);return}this.restore(e.snapshot),e.previous?qe(e.previous):localStorage.removeItem(Kn);return}let t=sessionStorage.getItem(sa);if(t&&(sessionStorage.removeItem(sa),setTimeout(()=>d.showNotification(t,!1,12),ta)),e?.showSummary&&e.summary){e.showSummary=!1,qe(e),new yt().result(e.summary,{onUndo:()=>this.undo(),report:Dp(e)});return}if(e?.wizard==="run"){setTimeout(async()=>{await this.signedIn()&&this.start({snapshot:e.snapshot,details:e.wizardDetails??[]})},ta);return}if(e?.wizard==="login"||e?.wizard==="settings"||e?.wizard==="import"){setTimeout(()=>this.setUp(),Pp);return}e&&e.wizard!=="later"||setTimeout(()=>this.offer(),Pp)}},Kp=new ia;d.autoDetect=Kp;Kp.resume()});var Up={};A(Up,{clanTag:()=>Rs,default:()=>ht});function Rs(s){for(let e of s.children){if(e.tagName!=="SPAN")continue;let t=n0.exec(e.textContent??"");if(t)return{span:e,tag:t[1]}}return null}function a0(s){let e="";for(let t of s.childNodes)t.nodeType===Node.TEXT_NODE&&(e+=t.textContent??"");return e.trim()}var n0,jp,r0,i0,ca,ht,Un=w(()=>{"use strict";n0=/^\s*\[(.+)\]\s*$/;jp=[{list:"leaderContainer",kind:"leader",root:"leaderboardHolder"},{list:"ingameTable",kind:"ingame",root:"centerLeaderDisplay"},{list:"endTable",kind:"end",root:"endUI"},{list:"playerListH",kind:"alt",root:"menuWindow"}],r0=1e3,i0='.pListName, [class^="newLeaderName"], [class^="leaderName"], .endTableN';ca=class{constructor(){this.decorators=new Map,this.watched=[],this.timer=0}add(e,t){this.decorators.set(e,t),this.watched.length===0&&this.observe(),this.refresh()}remove(e){if(this.decorators.delete(e),!(this.decorators.size>0)){for(let{observer:t}of this.watched)t.disconnect();this.watched=[],clearInterval(this.timer),this.timer=0}}observe(){for(let{root:e,list:t,kind:o}of jp){let n=document.getElementById(e);n&&this.watch(n,t,o)}this.timer=setInterval(()=>this.discover(),r0)}watch(e,t,o){let n={observer:new MutationObserver(()=>this.walk(n)),target:e,list:t,kind:o};n.observer.observe(e,{childList:!0,subtree:!0}),this.watched.push(n),this.walk(n)}discover(){this.watched=this.watched.filter(e=>e.target.isConnected?!0:(e.observer.disconnect(),!1));for(let{list:e,kind:t}of jp){let o=document.getElementById(e);o&&!this.watched.some(n=>n.target.contains(o))&&this.watch(o,e,t)}}refresh(){for(let e of this.watched)this.walk(e)}walk(e){let t=document.querySelectorAll(`#${e.list}`);if(t.length>0){for(let o of t)for(let n of o.querySelectorAll(i0)){let r={element:n,name:a0(n),kind:e.kind};for(let i of this.decorators.keys())i(r)}for(let o of this.decorators.values())o?.(e.kind)}e.observer.takeRecords()}},ht=new ca});var Wp={};A(Wp,{default:()=>Qe,playerHash:()=>Gn});function p0(){if(document.getElementById("signedInHeaderBar")===null)return"";let s=window.getGameActivity?.()?.id;return typeof s=="string"?s:""}function h0(){let s=window.getGameActivity?.()?.user;if(typeof s!="string")return"";if(localStorage.getItem("kro_setngss_premiumBadge")==="false"){let e=localStorage.getItem("krunker_username");if(e)return e}return s}async function Gn(s,e){let t=new TextEncoder().encode(s+` -`+e),o=new Uint8Array(await crypto.subtle.digest("SHA-256",t));return Array.from(o.subarray(0,16),n=>n.toString(16).padStart(2,"0")).join("")}function m0(s,e,t){return new Promise(o=>{let n=0,r=i=>{let a=i?.data?.devProof;a?.nonce===s&&(clearTimeout(n),window.chrome.webview.removeEventListener("message",r),o(typeof a.user=="string"&&typeof a.proof=="string"?{user:a.user,proof:a.proof}:null))};n=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),o(null)},u0),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(`dev-proof, ${s}, ${e}, ${t}`)})}var l0,c0,d0,u0,da,Gp,Qe,ua=w(()=>{"use strict";F();Nt();l0=[2,4,8,16,30],c0=2e3,d0=3e4,u0=1e3;da=class{constructor(){this.game="",this.roster=new Set,this.devs=new Map,this.nonce="",this.listeners=new Set,this.socket=null,this.failures=0,this.timer=0,this.joined="",he.available().then(e=>{e&&this.open()}),he.listeners.add(e=>{if(!e){this.socket?.close();return}this.failures=0,he.available().then(t=>{t&&!this.socket&&this.open()})})}open(){if(he.down||he.offline())return;let e=new WebSocket(he.base.replace(/^http/,"ws")+"/ws");this.socket=e,e.addEventListener("open",()=>{setTimeout(()=>{this.socket===e&&(this.failures=0)},d0),e.send(JSON.stringify(d.settings.data.counted===!0?{t:"hi"}:{t:"hi",first:!0})),this.sync(),this.timer=setInterval(()=>this.sync(),c0)}),e.addEventListener("message",t=>this.receive(t.data)),e.addEventListener("close",()=>{clearInterval(this.timer),this.socket=null,this.joined="",this.nonce="",this.setRoster("",[]);let t=l0[this.failures++];t!==void 0&&setTimeout(()=>this.open(),t*1e3)})}async sync(){let e=p0(),t=e?h0():"",o=e&&t?e+` -`+t:"";if(o===this.joined)return;if(this.joined=o,!o){this.send({t:"leave"}),this.setRoster("",[]);return}let n=await Gn(e,t);if(this.joined!==o)return;let r=d.dev===!0&&this.nonce?await m0(this.nonce,e,n):null;this.joined===o&&this.send(r?{t:"join",game:e,hash:n,dev:r}:{t:"join",game:e,hash:n})}send(e){this.socket?.readyState===WebSocket.OPEN&&this.socket.send(JSON.stringify(e))}receive(e){let t;try{t=JSON.parse(String(e))}catch{return}t?.t==="hello"&&typeof t.nonce=="string"?this.nonce=t.nonce:t?.t==="roster"&&typeof t.game=="string"&&Array.isArray(t.players)?this.joined.startsWith(t.game+` -`)&&this.setRoster(t.game,t.players):t?.t==="+"&&typeof t.h=="string"?(this.remember(t.h,t.d===1?t.c:void 0),this.changed()):t?.t==="-"&&typeof t.h=="string"?(this.roster.delete(t.h),this.devs.delete(t.h),this.changed()):t?.t==="counted"&&(d.settings.data.counted=!0,window.chrome.webview.postMessage("set-config, counted, true"))}remember(e,t){this.roster.add(e),typeof t=="string"&&t!==""?this.devs.set(e,t):this.devs.delete(e)}setRoster(e,t){if(!(e===this.game&&t.length===0&&this.roster.size===0)){this.game=e,this.roster=new Set,this.devs=new Map;for(let o of t)Array.isArray(o)&&typeof o[0]=="string"&&this.remember(o[0],o[1]===1?o[2]?.c:void 0);this.changed()}}changed(){for(let e of this.listeners)e()}},Gp=new da;d.presence=Gp;Qe=Gp});var Yp,Vp=w(()=>{Yp="data:image/webp;base64,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"});var Jp,Xp=w(()=>{Jp="data:image/webp;base64,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"});var ha={};A(ha,{default:()=>y0});function Zp(s){let e=s?`[data-kute-badge="${s}"]`:"[data-kute-badge]";for(let o of document.querySelectorAll(e))o.remove();let t=s?`[data-kute-badged="${s}"]`:"[data-kute-badged]";for(let o of document.querySelectorAll(t))o.removeAttribute("data-kute-badged")}function Qp(s){(s.querySelector("[data-kute-badge]")??s.parentElement?.querySelector("[data-kute-badge]"))?.remove(),s.removeAttribute("data-kute-badged")}var b0,v0,w0,k0,pa,eh,y0,ma=w(()=>{"use strict";F();Un();ua();Vp();Xp();b0="2px",v0={leader:"margin-top:5px;vertical-align:middle;height:21px;margin-left:2px",ingame:"margin-top:3px;vertical-align:middle;height:21px;margin-left:2px",end:"margin-top:-12px;vertical-align:middle;width:26px;margin-left:2px",alt:"vertical-align:middle;height:21px;margin-left:6px;position:relative;top:-0.35em"},w0={kute:Yp,dev:Jp},k0={kute:"Kute",dev:"Kute Developer"};pa=class{constructor(){this.game="",this.hashes=new Map,this.pending=new Set,this.found=!1,this.candidates=[],this.enabled=d.settings.data.cuteBadge!==!1,this.decorator=e=>this.decorate(e),this.finisher=()=>this.finish(),d.settings.toggleCuteBadge=e=>this.toggle(e),Qe.listeners.add(()=>this.rosterChanged())}toggle(e){this.enabled=e,e||Zp("kute"),ht.refresh()}rosterChanged(){if(Qe.game!==this.game&&(this.game=Qe.game,this.hashes.clear(),this.pending.clear()),Zp(),Qe.roster.size===0){ht.remove(this.decorator);return}ht.add(this.decorator,this.finisher)}decorate(e){if(Qe.roster.size===0||e.name==="")return;let t=this.hashes.get(e.name);if(t===void 0){this.learn(e.name);return}if(Qe.devs.has(t)){this.candidates.push({row:e,hash:t,tag:Rs(e.element)?.tag});return}this.enabled&&!e.element.hasAttribute("data-kute-badged")&&Qe.roster.has(t)&&this.insert(e,"kute")}finish(){if(this.candidates.length===0)return;let e=new Map;for(let t of this.candidates){let o=e.get(t.hash);o?o.push(t):e.set(t.hash,[t])}for(let[t,o]of e){let n=o.filter(i=>i.tag===Qe.devs.get(t)),r=null;n.length===1?r=n[0].row:n.length===0&&o.length===1&&(r=o[0].row);for(let i of o){let a=i.row.element.getAttribute("data-kute-badged");if(i.row!==r){a&&Qp(i.row.element);continue}a!=="dev"&&(a&&Qp(i.row.element),this.insert(i.row,"dev"))}}this.candidates.length=0}async learn(e){if(this.pending.has(e))return;this.pending.add(e);let{game:t}=this,o=await Gn(t,e);t===this.game&&(this.pending.delete(e),this.hashes.set(e,o),Qe.roster.has(o)&&(this.found=!0),!(this.pending.size>0||!this.found)&&(this.found=!1,ht.refresh()))}insert(e,t){let{element:o}=e,n=o.parentElement;if(!n)return;let r=document.createElement("img");r.src=w0[t],r.setAttribute("data-kute-badge",t),r.alt="",r.title=k0[t],r.style.cssText=v0[e.kind],e.kind==="alt"?o.append(r):e.kind==="end"?n.insertBefore(r,o.nextSibling):n.insertBefore(r,n.firstElementChild?.nextSibling??o),r.nextElementSibling?.tagName==="I"&&(r.style.marginRight=b0),o.setAttribute("data-kute-badged",t)}},eh=new pa;d.badges=eh;y0=eh});var th=we((DS,x0)=>{x0.exports=`#chatList>*{display:block!important}#chatInputHolder{opacity:1;transition:opacity .2s ease-in-out,transform .2s ease-in-out}#chatList::-webkit-scrollbar{display:none}#chatList{transition:margin-bottom .2s ease-in-out}#uiBase.onGame #chatList{margin-bottom:-50px}#uiBase.onMenu #chatInputHolder{transition:none}#uiBase.onGame #chatInputHolder{opacity:0;transform:translateY(50px)}#uiBase.onGame #chatHolder:focus-within #chatInputHolder{opacity:1;transform:translateY(0)}#uiBase.onGame #chatHolder:focus-within #chatList{margin-bottom:0}#uiBase.onSpect #chatInputHolder{opacity:1;transform:translateY(0)}#uiBase.onSpect #chatList{margin-bottom:0} -`});var ga={};A(ga,{default:()=>S0});var fa,S0,ba=w(()=>{"use strict";F();Ae();fa=class{constructor(){this.teamModes=new Set(["Team Deathmatch","Hardpoint","Capture the Flag","Hide & Seek","Infected","Last Man Standing","Simon Says","Prop Hunt","Boss Hunt","Deposit","Stalker","Kill Confirmed","Defuse","Traitor","Blitz","Domination","Squad Deathmatch","Team Defender"]),this.styles=document.createElement("style"),Promise.resolve().then(()=>ue(th(),1)).then(e=>{this.styles.innerHTML=e.default}),d.settings.toggleBetterChat=e=>this.toggle(e),this.chatHolder=U("#chatHolder"),this.chatList=U("#chatList"),this.chatInput=ke("#chatInput"),this.chatSwitch=U("#chatSwitch"),this.channelT=document.createElement("div"),this.channelA=document.createElement("div"),this.channelT.style.cssText="float: left; display: inline-block; margin-right: 5px; color: #9eeb56;",this.channelT.textContent="[T]",this.channelA.style.cssText="float: left; display: inline-block; margin-right: 5px; color: #eb5656;",this.channelA.textContent="[M]",this.observer=new MutationObserver(e=>this.parseMessages(e)),this.toggle(!0)}switchChat=e=>{e.key==="Tab"&&(window.switchChat(this.chatSwitch),e.preventDefault())};parseMessages(e){let t=!1;for(let o of e)for(let n of o.addedNodes){if(!(n instanceof HTMLElement))continue;let r=n.querySelector(".chatItem");if(!r)continue;let i=r.querySelector(".chatMsg");if(!i)continue;if(i.textContent.includes("Text & Voice Chat")){n.remove();continue}let{tab:a}=n.dataset;!a||!r.textContent.includes("\u200E:")||!this.teamModes.has(window.getGameActivity().mode)||(a==="0"?i.insertBefore(this.channelA.cloneNode(!0),i.firstChild):a==="1"&&i.insertBefore(this.channelT.cloneNode(!0),i.firstChild),t=!0)}t&&(this.chatList.scrollTop=1e9)}toggle(e){e?(document.head.append(this.styles),this.chatInput.addEventListener("keydown",this.switchChat,{capture:!0}),this.observer.observe(this.chatList,{childList:!0})):(this.styles.remove(),this.chatInput.removeEventListener("keydown",this.switchChat,{capture:!0}),this.observer.disconnect())}},S0=new fa});var nh={};function oh(){return Array.from(document.querySelectorAll(".bpClaimB")).filter(s=>s.offsetParent!==null&&s.textContent.trim()==="Claim")}function sh(){let s=oh().length>0;s?qt.classList.remove("disabled"):qt.classList.add("disabled"),qt.textContent=s?"Claim All":"Nothing to Claim"}async function E0(){let s=oh();if(s.length!==0){for(let e of s)e.getAttribute("onclick")?.includes("windows[5].claimItem(")&&e.click(),await new Promise(o=>setTimeout(o,200));sh()}}function $0(){let s=document.querySelector(".bpBotH");s&&(s.append(qt),sh())}var qt,C0,va=w(()=>{"use strict";qt=document.createElement("div");qt.className="bpBtn skip";qt.id="claimAllBtn";qt.textContent="Claim All";qt.onclick=()=>{window.playSelect?.(.1),E0()};C0=window.showWindow;window.showWindow=(...s)=>(s[0]===6&&queueMicrotask(()=>$0()),C0(...s))});function xa(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function mh(s){ho=s}function Oo(s){let e=[];return t=>{let o=Math.max(0,Math.min(3,t-1)),n=e[o];return n||(n=s(o),e[o]=n),n}}function Q(s,e=""){let t=typeof s=="string"?s:s.source,o={replace:(n,r)=>{let i=typeof r=="string"?r:r.source;return i=i.replace(Le.caret,"$1"),t=t.replace(n,i),o},getRegex:()=>new RegExp(t,e)};return o}function Ke(s,e){if(e){if(Le.escapeTest.test(s))return s.replace(Le.escapeReplace,lh)}else if(Le.escapeTestNoEncode.test(s))return s.replace(Le.escapeReplaceNoEncode,lh);return s}function ch(s){try{s=encodeURI(s).replace(Le.percentDecode,"%")}catch{return null}return s}function dh(s,e){let t=s.replace(Le.findPipe,(r,i,a)=>{let l=!1,c=i;for(;--c>=0&&a[c]==="\\";)l=!l;return l?"|":" |"}),o=t.split(Le.splitPipe),n=0;if(o[0].trim()||o.shift(),o.length>0&&!o.at(-1)?.trim()&&o.pop(),e)if(o.length>e)o.splice(e);else for(;o.length
                  Copy this report
                  `}function na(s,e,t,o,n=!1){let r=_i(s,e,{prefer:o,inputRequired:t==="test match",trade:n}),i=r.judged.map(d=>({cap:d.cap,where:t,summary:d.summary,frameMs:d.frameMs,netMs:d.netMs,outcome:d.outcome})),a=r.judged.find(d=>d.cap===r.winner),l="measures as smooth as before, with fewer frames to draw";if(r.decidedBy==="net"){let{task:d=0,input:h=null}=a?.gains??{},p=[];d>0&&p.push(`the game reacts ${yt(d)} ms sooner`),h!==null&&h>0&&p.push(`the mouse waits ${yt(h)} ms less`),h!==null&&h<0&&p.push(`the mouse waits ${yt(-h)} ms longer, which the sooner reaction outweighs on a PC below its target`),l=p.length>0?p.join(", "):"frames come sooner and nothing waits longer"}let c=r.judged.filter(d=>d.cap!==e&&d.outcome!=="worse"&&d.outcome!=="not steady").sort((d,h)=>(h.netMs??-1/0)-(d.netMs??-1/0)).map(d=>d.cap);return{rows:i,winner:r.winner,reason:l,order:c}}function _p(s){u.hostFeatures?.includes("mute")&&window.chrome.webview.postMessage(`mute, ${s}`)}function Bp(){return`Takes about two minutes. Don't touch mouse or keyboard meanwhile: a test window opens and closes a few times, then Kute plays a private match by itself, turning the view and firing.${u.hostFeatures?.includes("mute")?" The game is muted meanwhile.":""}`}function Ts(){return Oe.some(s=>u.settings.data[s.setting]!==!1!=(u.running?.[s.setting]!==!1))}function zp(s){return s.report?.version===2?s.report:void 0}function Hp(s){return new Promise(e=>{let t=performance.now(),o={frames:0,done:!1,watchdog:0},n=()=>{o.frames++;let r=performance.now()-t;if(r{o.done||e(null)},s+2e3)})}async function Zv(s){if(s===0)return!0;let e=performance.now()+Fv;for(;performance.now()typeof t=="number"?Math.round(t*100)/100:null;return{fps:e(s.fps),p50:e(s.p50),p99:e(s.p99),maxMs:e(s.maxMs),stallMs:e(s.stallMs),taskP99:e(s.taskP99),inputP99:e(s.inputP99),...typeof s.presentMs=="number"?{presentMs:e(s.presentMs)}:{},...s.invalid?{invalid:!0,why:s.why}:{},...s.load?{load:s.load}:{}}}function io(s){return ye(s).fps.median??0}var qn,Mp,Tp,ea,Ov,Dv,ta,On,Ap,Fv,Ms,qv,Kv,jv,Lp,Rp,oa,Uv,De,kt,ra,Op,aa=w(()=>{"use strict";yp();D();zn();Ae();Ki();ji();ks();Qi();Xi();qn="kute_autodetect",Mp="kute_autodetect_asked",Tp=250,ea=1500,Ov=3e5,Dv=2e4,ta=3*Bt,On=2*Bt,Ap=6*Bt,Fv=6e3,Ms=450,qv=700,Kv=.08,jv=["gameFpsLimit","throttle",...Oe.map(s=>s.setting)],Lp="autodetect-v2",Rp="https://krunker.io/",oa="kute_autodetect_stopped",Uv={taskP99:"the game reacted later",inputP99:"the mouse waited longer",p99:"slow frames came later",stallMs:"more stutter",maxMs:"a longer freeze",frame:"frames took longer, and the mouse wait could not be measured",unsteady:"it did not run steadily"},De=s=>new Promise(e=>{setTimeout(e,s)});kt=class{constructor(){document.querySelector("#adPanelHost")?.parentElement?.remove(),this.overlay=document.createElement("div"),this.onEscape=void 0,this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.93)";let e=document.createElement("div");e.id="adPanelHost",this.overlay.append(e),this.root=e.attachShadow({mode:"open"}),this.root.innerHTML=xp,document.body.append(this.overlay)}element(e){return this.root.querySelector(`#${e}`)}progress(e,t){this.element("adStatus").textContent=e,this.element("adBarFill").style.width=`${Math.round(t*100)}%`}choose(e,t,o,n){let r=o.find(l=>l.cancel);this.dismissWith(r?()=>r.onPick():void 0),this.element("adTitle").textContent=e,this.element("adStatus").textContent=t;let i=this.element("adNote");i.textContent=n??"",i.style.display=n?"block":"none",this.element("adBar").style.display="none",this.element("adHint").style.display="none";let a=this.element("adActions");a.style.display="flex",a.innerHTML="";for(let l of o){let c=document.createElement("div");c.className="adButton",c.textContent=l.label,c.onclick=()=>l.onPick(),a.append(c)}}result(e,t={}){this.dismissWith(()=>this.close()),this.element("adTitle").textContent=e.title,this.element("adStatus").textContent=e.line,this.element("adNote").style.display="none",this.element("adBar").style.display="none",this.element("adHint").style.display="none",this.element("adActions").style.display="flex",this.element("adDetailsButton").style.display="none",this.element("adUndo").style.display=e.changed&&t.onUndo?"":"none",this.element("adRun").style.display=t.onRun?"":"none",this.element("adRestart").style.display=e.needsRestart?"":"none",this.element("adRestart").onclick=()=>window.chrome.webview.postMessage("restart"),this.element("adAdvancedButton").style.display=t.report?"":"none";let o=this.element("adDetails");if(o.innerHTML=e.details.map(n=>`
                • ${n}
                • `).join(""),o.style.display=e.details.length>0?"block":"none",t.report){let n=this.element("adAdvanced");n.innerHTML=Jv(t.report);let r=this.element("adAdvancedButton");r.textContent="Advanced",r.onclick=()=>{let i=n.style.display!=="block";n.style.display=i?"block":"none",this.element("adPanel").classList.toggle("adWide",i),r.textContent=i?"Hide advanced":"Advanced"},this.element("adCopy").onclick=()=>{let i=JSON.stringify({kute:u.version,...t.report},null,2);navigator.clipboard.writeText(i).then(()=>{this.element("adCopy").textContent="Copied"},()=>{this.element("adCopy").textContent="Copying failed"})}}this.element("adOk").onclick=()=>this.close(),this.element("adUndo").onclick=()=>{this.close(),t.onUndo?.()},this.element("adRun").onclick=()=>{this.close(),t.onRun?.()}}clickThrough(e){this.overlay.style.pointerEvents=e?"none":""}dismissWith(e){this.unbindEscape(),this.overlay.onclick=e?t=>{t.target===this.overlay&&e()}:null,e&&(this.onEscape=t=>{t.key==="Escape"&&(t.stopPropagation(),e())},document.addEventListener("keydown",this.onEscape,!0))}unbindEscape(){this.onEscape&&document.removeEventListener("keydown",this.onEscape,!0),this.onEscape=void 0}close(){this.unbindEscape(),this.overlay.remove()}};ra=class{constructor(){this.running=!1,this.cancelled=!1}snapshot(){return{client:Object.fromEntries(jv.map(e=>[e,u.settings.data[e]])),game:Object.fromEntries(Gi.map(e=>[e,Es(e)]))}}restore(e){_n();for(let[t,o]of Object.entries(e.game))o!==null&&Es(t)!==o&&Me(t,o);for(let[t,o]of Object.entries(e.client))o!==void 0&&u.settings.data[t]!==o&&Ht(t,o)}undo(){let e=zt();if(!e?.undoable){u.showNotification("Nothing to undo",!1,3);return}let t=new Set(vt.filter(i=>i.needsReload).map(i=>i.id)),o=Object.entries(e.snapshot.game).some(([i,a])=>t.has(i)&&a!==null&&Es(i)!==a);this.restore(e.snapshot);let n=Ts();e.undoable=!1;let r="Your previous settings are back.";o&&(r="Your previous settings are back, the game reloads once to apply them."),n&&(r+=" Restart Kute to finish."),e.summary={title:"Undone",line:r,details:[],changed:!1,needsRestart:n},Fe(e),u.showNotification(`Auto-detect undone. ${r.replace("Your previous settings are back","Your settings are back")}`,!1,5),o&&setTimeout(()=>location.reload(),1200)}dropUndo(){let e=zt();e?.undoable&&(e.undoable=!1,Fe(e))}showLast(){let e=zt();if(!e?.summary){u.showNotification("Auto-detect has not run yet",!1,3);return}new kt().result(e.summary,{onUndo:e.undoable?()=>this.undo():void 0,report:zp(e)})}async start(e={}){if(this.running)return;if(!u.hostFeatures?.includes(Lp)){u.showNotification("Auto-detect needs a newer Kute, update the client to use it",!1,6);return}if(u.recovery){u.showNotification("Auto-detect can't run in safe mode or while Kute looks for the cause of a crash",!1,6);return}if(!As()){u.showNotification("Log in first: auto-detect measures in a private test match, and hosting one needs an account",!1,6);return}if(document.pointerLockElement||He()){u.showNotification("Open the menu outside of a competitive match first",!1,4);return}if(!e.resume&&Ts()){u.showNotification("Restart Kute first: a setting you changed only applies after a restart, auto-detect would test the old one",!1,7);return}this.running=!0,this.cancelled=!1,window.closWind?.();let t,o;if(e.resume)t=e.resume,o=t.previous??null;else{o=zt(),o&&(delete o.wizard,delete o.wizardDetails);let l=this.snapshot();t={status:"running",at:Date.now(),snapshot:e.snapshot??l,baseline:l,previous:o,details:e.details??[]},Fe(t)}let n=new kt,r=l=>{l.key==="Escape"&&(this.cancelled=!0,Di())};document.addEventListener("keydown",r,!0);let i={inMatch:!1},a=()=>{window.chrome.webview.postMessage("input-replay-stop"),this.restore(t.snapshot),Fe(o||{status:"prompted",at:Date.now(),snapshot:t.snapshot}),n.close(),Ts()&&u.showNotification("Your settings are back. Restart Kute to finish",!1,7),i.inMatch&&(document.exitPointerLock(),location.href=Rp)};try{let l=await this.run(n,t,i);if(l==="restarting")return;if(l===null){a();return}t.status="done",t.summary=l.summary,t.report=l.report,t.undoable=l.summary.changed,!l.summary.changed&&o?.undoable&&(t.snapshot=o.snapshot,t.undoable=!0),delete t.previous,delete t.baseline,delete t.carry,delete t.details,t.showSummary=!0,Fe(t),n.progress("Leaving the test match",1),document.exitPointerLock(),await De(800),location.href=Rp}catch(l){let c=`Auto-detect stopped: ${l instanceof Error?l.message:String(l)}`;i.inMatch&&sessionStorage.setItem(oa,c),a(),u.showNotification(c,!1,7)}finally{document.removeEventListener("keydown",r,!0),_p(!1),window.chrome.webview.postMessage("throttle, menu"),this.running=!1}}async run(e,t,o){let n=Gv(),r=t.baseline??t.snapshot,i=t.details??[],a=performance.now()-(t.carry?.elapsedMs??0),l=!!t.carry;e.progress("Reading your hardware",.02);let c=await Te("get-specs","specs");if(c===null)throw new Error("this needs a newer version of the client");let d=c.displays??[],h=d.find(M=>M.hostsWindow)??d[0],p=n.hz??(h?.hz>1?h.hz:60),m=(c.gpus??[]).filter(M=>!M.software),f=c.renderAdapter?.name??[...m].sort((M,F)=>F.vramMb-M.vramMb)[0]?.name??"unknown graphics card",g=n.battery??!!c.onBattery,b=n.laptop??(!!c.laptop||c.hybrid===!0),v=p*3,k=u.hostFeatures?.includes("load-sample")===!0,E=u.running?.hardFlip!==!1,L=Number(r.game[wt])||0,x=Number(r.client.gameFpsLimit)||0,$=Number(r.client.throttle)||1,I=[x,L].filter(M=>M>0),_=I.length>0?Math.min(...I):0,H=Pn(),G=null,J=[],B=[];if(!l){if(G=await Fi({hz:p,hybrid:c.hybrid===!0,progress:(M,F)=>e.progress(M,.03+.27*F),cancelled:()=>this.cancelled}),this.cancelled)return null;if(G&&n.force&&n.force in H&&(G={...G,winner:{...H,[n.force]:!H[n.force]},changed:!0,decidedBy:"p99"}),G){e.progress("Testing FPS limits",.31);let M=[...new Set([0,v,2*p,p,_])].sort((q,ee)=>ee-q),F=await qi({pipeline:G.winner,common:G.common,caps:M,cancelled:()=>this.cancelled});if(this.cancelled)return null;if(F){let q=na(F,_,"client test",b?v:void 0);J=q.rows,B=q.order}}}e.progress("Opening a private test match",.38),_p(!0),e.clickThrough(!0);let re=await $s(),je=!1;if(re&&(e.progress("Joining the test match",.41),je=await Cs(re)),e.clickThrough(!1),!je)throw window.closWind?.(),new Error("could not open a private test match (is a host slot free?)");o.inMatch=!0;let be=()=>{if(!Bn(re))throw new Error("left the private test match")};if(this.cancelled)return null;L>0&&l&&Me(wt,"0");let Ee=Number(u.settings.data.gameFpsLimit)||0,j=!0;Hn(),window.chrome.webview.postMessage("throttle, game"),await De(2500),await De(300),window.chrome.webview.postMessage("bring-to-front");let X=async(M,F=ta)=>{M!==Ee&&(Ht("gameFpsLimit",M),Ee=M,await De(qv),j=await Zv(M)),be(),k&&await Te("load-sample","loadSample",500),E&&await Te("get-present-intervals","presentIntervals",400);let q=await Zi({ms:F,hz:p,replay:!0});if(E){let ee=await Te("get-present-intervals","presentIntervals",400);ee&&ee.samples>0&&(q.presentMs=ee.p50)}if(k&&(q.load=await Te("load-sample","loadSample",500)),be(),!j&&!q.invalid&&(q.invalid=!0,q.why="nothing held the FPS limit"),n.collapse!==void 0&&(M===0||M>=n.collapse)){let ee=(te,O)=>(te??0)+O;return{...q,fps:(q.fps??0)/2,stallMs:400,p99:ee(q.p99,25),maxMs:ee(q.maxMs,40),taskP99:ee(q.taskP99,40),inputP99:ee(q.inputP99,30)}}return q},Y=async()=>{if(!k)return[];await X(0,Bt),window.chrome.webview.postMessage(`input-replay, ${10*Bt}`);let M=[],F=performance.now();for(await Te("load-sample","loadSample",500);performance.now()-F<10*Bt&&!this.cancelled;){let q=await Hp(300);if(q===null)break;M.push({ms:Math.round(performance.now()-F),fps:Math.round(q),load:await Te("load-sample","loadSample",500)})}return window.chrome.webview.postMessage("input-replay-stop"),M},y=async(M,F=ta)=>{let q=[];for(let ee=0;ee<5&&q.length<2&&!this.cancelled;ee++){let te=await X(M,F);te.invalid||q.push(te)}return q},C=async M=>{for(let F=0;F<4&&!this.cancelled;F++)if(!gt([await X(M,On)],M))return},R=async M=>{let F=new Map(M.map(q=>[q,[]]));for(let q=0;q<2;q++)for(let ee of M){if(this.cancelled)return F;F.get(ee)?.push(await X(ee))}return F},{carry:K}=t;if(!K){e.progress("Measuring how the game runs now",.45),await X(Ee);let M=await y(Ee);if(this.cancelled)return null;if(M.length<2)throw new Error("the game could not be measured, the Kute window has to stay in front during the test");L>0&&Me(wt,"0"),$>1&&(Ht("throttle",1),window.chrome.webview.postMessage("throttle, game"),await De(Ms)),e.progress("Measuring what this PC can do",.5);let q=_===0&&$<=1?[...M,await X(0)]:[await X(0),await X(0),await X(0)];if(this.cancelled)return null;if(K={asPlayed:M,uncapped:q,playedCap:_,pipelineBefore:H,pipelineAfter:G?.winner??H,pipelineChanged:!!G?.changed,decidedBy:G?.decidedBy??null,rows:G?.rows??[],benchCaps:J,capOrder:B,elapsedMs:performance.now()-a},K.pipelineChanged){t.carry=K,Fe(t),L>0&&Me(wt,String(L)),Ee!==x&&Ht("gameFpsLimit",x);for(let ee of Oe)K.pipelineAfter[ee.setting]!==H[ee.setting]&&Ht(ee.setting,K.pipelineAfter[ee.setting]);return document.exitPointerLock(),e.choose("Kute restarts once","The client test found a setup that runs better on this PC. Kute restarts with it and checks it in the game, the test goes on by itself.",[]),await De(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}}let{playedCap:z}=K,N=K,V=M=>({version:2,gpu:f,cpu:`${c.cpu?.name??"unknown processor"}, ${c.cpu?.threads??"?"} threads`,hz:p,laptop:!!c.laptop,hybrid:typeof c.hybrid=="boolean"?c.hybrid:null,powerOverlay:c.powerOverlay??null,capacity:io(N.uncapped),unlimited:N.uncapped.map(Fn),played:N.asPlayed.map(Fn),adapters:{render:c.renderAdapter?.luid??null,display:h?.adapter??null},hybridSource:c.hybridSource??null,client:{...Object.fromEntries(["gameFpsLimit","throttle","inMenuThrottle","uncapFps","patchFrameLimiter","obsCapturePlugin","renderStats","performanceMode","webviewPriority",...Oe.map(F=>F.setting)].map(F=>[F,r.client[F]??u.settings.data[F]??null])),gameFrameCap:L,hook:c.hook??null,limiter:u.frameLimiter??null,running:u.running??null},noise:0,drift:1,headroom:1,beforeCap:z,before:ye(N.asPlayed),afterCap:z,after:null,pipeline:N.rows,caps:N.benchCaps,halfResolutionGain:null,settings:[],plan:Nn({capacity:io(N.uncapped),hz:p,headroom:1,halfResolutionGain:null,settings:[]}),input:Hn(),rolledBack:null,pipelineRefused:N.pipelineRefused??null,recheck:N.recheck??[],seconds:(performance.now()-a)/1e3,...M}),de=(M,F={})=>{this.restore(t.snapshot);let q=Ts();return{summary:{title:"Nothing changed",line:q?`${M} Restart Kute to finish.`:M,details:[],changed:!1,needsRestart:q},report:V({...F,rolledBack:M})}},Z=io(N.uncapped){let{keep:ee,failed:te}=ws(M,F,{capBefore:z,capAfter:q,trade:Z});return ee?null:te==="reference"?"Kute could not measure the game with your own settings well enough to compare (its window has to stay in front), so it put yours back.":te==="result"?"Kute could not measure the result (its window has to stay in front), so it put your settings back.":`The new settings measured worse than yours (${te==="fps"?`${Math.round(io(F))} FPS, ${Math.round(io(M))} before`:Uv[te??""]}), so Kute put yours back.`},le=[...i];if($>1&&le.push(`CPU Throttling: ${$} \u2192 off (it slows the game down on purpose, the result is checked against how the game ran with it)`),l&&N.pipelineChanged&&!N.pipelineRefused){e.progress("Checking the new setup in the game",.5);let M=await y(z);if(this.cancelled)return null;let F={recheck:M.map(Fn)},q=gt(N.asPlayed,z)&>(M,z)?null:ge(N.asPlayed,M,z);if(q&&ws(N.asPlayed,M,{capBefore:z,capAfter:z,trade:Z}).failed==="result")return de(q.replace("The new settings","The setup that won the client test"),F);if(q){for(let O of Oe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&Ht(O.setting,N.pipelineBefore[O.setting]);return L>0&&Me(wt,String(L)),Ee!==x&&Ht("gameFpsLimit",x),t.carry={...N,pipelineRefused:q.replace("The new settings","The setup that won the client test"),...F,elapsedMs:performance.now()-a,resumed:!1},Fe(t),document.exitPointerLock(),e.choose("Kute restarts once more","The setup from the client test ran worse in the game, so Kute goes back to yours and tests the FPS limits on it.",[]),await De(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}let ee=N.rows.find(O=>Oe.every(ve=>O.pipeline[ve.setting]===N.pipelineAfter[ve.setting])),te=ee?Wv(N.decidedBy,ye(N.rows[0].readings),ye(ee.readings)):"measured better";for(let O of Oe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&le.push(`${O.label}: ${ut(N.pipelineBefore[O.setting])} \u2192 ${ut(N.pipelineAfter[O.setting])} (${te})`)}e.progress("Finding the FPS limit that runs best",.56);let Be=io(N.uncapped),Yt=Be>=v?v:p,xo=M=>!g||M===z||M!==0&&M<=v,zg=N.uncapped.filter(vs).length>=2,Ar=(b||zg)&&Be>=v?v:void 0,ze=new Map,Xt=[],se=z,Go="",Ie=Be,at=bs(new Map([[0,N.uncapped]]));if(!at){let M=N.capOrder.length>0?N.capOrder.slice(0,2):zi({hz:p,capacity:Be,current:z}).slice(1,3),F=[...new Set([z,0,...M,...Ar?[Ar]:[],...g?[Yt]:[]])].filter(xo);if(ze=await R(F),this.cancelled)return null;at=bs(ze);let q=na(ze,z,"test match",Ar,Z);if(Xt=q.rows,!at){se=q.winner,Go=q.reason,Ie=io(ze.get(0)??[])||Be;let ee=Hi([...ze.keys()],se,Ie,p).filter(te=>xo(te)&&te0){e.progress("Fine tuning the FPS limit",.64);let te=await R(ee);if(this.cancelled)return null;let O=na(new Map([[se,ze.get(se)??[]],...te]),se,"test match",void 0,Z);Xt.push(...O.rows.filter(ve=>ve.cap!==se));for(let[ve,Ye]of te)ze.set(ve,Ye);O.winner!==se&&(se=O.winner,Go=O.reason),at=bs(ze)}}}let Wo;if(at){e.progress("Finding the FPS limit this PC holds steadily",.62);let M=new Map;await C(p);for(let te of Ln(p)){if(this.cancelled)return null;let O=await y(te,Ap);if(M.set(te,O),!no(O,te))break}if(this.cancelled)return null;let F=Ni(p,M),q=(Kn([...N.uncapped,...ze.get(0)??[]].filter(gs).map(te=>te.stallMs))??0)/1e3;Wo={stoodStill:q,steadyUpTo:F.steadyUpTo,limit:F.cap};for(let te of Xt)te.outcome==="better"&&(te.outcome="not used");for(let[te,O]of M){let ve=no(O,te)?"steady":"not steady";Xt.push({cap:te,where:"test match",summary:ye(O.map(_o)),frameMs:Kn(O.map(Ye=>Ye.p50)),netMs:null,outcome:ve}),ze.set(te,O)}let ee=z>0&&no(N.asPlayed,z);se=z,ee||(se=[...new Set([F.cap,F.steadyUpTo])].filter(O=>O!==null).find(O=>ws(N.asPlayed,M.get(O)??[],{capBefore:z,capAfter:O}).keep)??z),Go=`without a limit this PC stood still ${Math.round(q*100)} % of the time. Up to ${F.steadyUpTo} FPS it ran steadily in the empty test match, ${se} FPS ${(F.steadyUpTo??0)>se?"leaves a step of room for a real match":"is the highest that did"}`}let Vo=Xt.find(M=>M.cap===Yt),Hg=Vo!==void 0&&(Vo.outcome==="steady"||Vo.netMs!==null&&(Vo.outcome==="better"||Vo.outcome==="not better"));g&&(se===0||se>v)&&Hg&&(se=Yt,Go="on battery");for(let M of Xt)M.cap===se&&M.cap!==z&&M.outcome!=="not steady"&&(M.outcome="chosen"),M.readings=(ze.get(M.cap)??[]).map(Fn);let ln=N.uncapped.map(M=>M.fps).filter(M=>typeof M=="number"),Jd=ln.length>1?(Math.max(...ln)-Math.min(...ln))/Math.max(1,...ln):0,Lr=1,cn=1,Rr=null;if(!at){Rr=await X(0);let M=(l?ze.get(0)?.[0]:N.uncapped[0])?.fps??Ie;Lr=(Rr.fps??Ie)/Math.max(1,M),cn=Bi(Lr,Jd)}let Og=v*cn,So=[],Pr=null,Yo=Number(r.game[ro])||1;if(at)for(let M of vt)So.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC does not run steadily without a limit)"});else if(IeO.inputP99!==null),F=Rr?.fps??Ie,q=async(O,ve)=>{let Ye=F;O(),await De(Ms);let lt=async()=>{let ru=await X(0,On);return ru.invalid?null:ru.fps},Jt=await lt();ve(),await De(Ms);let Xe=await lt();if(Jt===null||Xe===null)return{ratio:1,steady:!1,raw:[Ye,Jt??0,Xe??0]};F=Xe;let nu=(Ye+Xe)/2;return{ratio:Jt/Math.max(1,nu),steady:Math.abs(Ye-Xe)/Math.max(1,nu)<=Kv,raw:[Ye,Jt,Xe]}},ee=vt.filter(O=>!O.needsReload&&(M||!O.fightOnly));for(let O of vt){let ve=r.game[O.id],Ye=String(O.cheap),lt={id:O.id,label:O.label,current:ve??"default",cheap:Ye,gain:null,steady:!0};if(So.push(lt),O.needsReload){lt.note="not tested (needs a reload)";continue}if(O.fightOnly&&!M){lt.note="not tested (only costs in a fight)";continue}if(ve===null){lt.note="value unknown";continue}if(this.cancelled)return null;e.progress(`Measuring ${O.label}`,.68+.17*ee.indexOf(O)/ee.length);let Jt=Vi(ve),Xe=await q(()=>Me(O.id,Jt),()=>Me(O.id,ve));lt.gain=Jt===Ye?Xe.ratio:1/Math.max(.01,Xe.ratio),lt.steady=Xe.steady,lt.raw=Xe.raw}for(let O of So){if(O.gain===null||!O.steady||O.current===O.cheap||O.gainMe(O.id,O.cheap),()=>Me(O.id,O.current));O.confirmGain=ve.ratio,O.gain=Math.min(O.gain,ve.ratio),O.steady=ve.steady}e.progress("Checking the graphics card",.88);let te=await q(()=>Me(ro,String(Math.max(.1,Yo*.5))),()=>Me(ro,String(Yo)));Pr=te.steady&&te.ratio>.92?te.ratio:null}else for(let M of vt)So.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC reaches its target)"});if(this.cancelled)return null;let Ct=Nn({capacity:Ie,hz:p,headroom:cn,halfResolutionGain:Pr,settings:So});for(let M of Ct.changes)le.push(`${M.label}: ${ut(r.game[M.id])} \u2192 ${ut(M.value)} (${M.reason})`),Me(M.id,String(M.value));let Mt=null;if((Ct.changes.length>0||Ct.tuneResolution)&&(await De(Ms),Mt=(await X(0,On)).fps),Ct.tuneResolution&&Mt!==null){let M=Yo;for(let F=0;F<2&&Mt!==null&&Mtxs&&!this.cancelled;F++){let q=F===0?M*Math.sqrt(Mt/Ct.needed):xs;M=Math.min(M,Math.max(xs,Math.floor(q*20)/20)),e.progress(`Trying resolution ${M}`,.9+F*.01),Me(ro,String(M)),await De(Ms),Mt=(await X(0,On)).fps}M!==Yo&&le.push(`Resolution: ${Yo} \u2192 ${M} (the graphics card is the limit)`)}if(this.cancelled)return null;e.progress("Checking the result",.94),Ct.changes.length>0&&await X(se);let Zd=at?await Y():[];at&&await C(se);let Qd=await y(se,at?Ap:ta);if(this.cancelled)return null;let Ir={capacity:Ie,noise:Jd,drift:Lr,headroom:cn,afterCap:se,after:ye(Qd),caps:[...N.benchCaps,...Xt],halfResolutionGain:Pr,settings:So,plan:Ct,pushed:Wo,...Zd.length>0?{trace:Zd}:{}},Nr=se!==z,Dg=!Nr&&L>0&&(x===0||LFPS Limit: ${Dt(z)} \u2192 ${Dt(se)} (${Go})`):Dg&&le.push(`FPS Limit: ${Dt(se)}, now held by Kute instead of the game's frame cap (the game's cap keeps the processor busy while it waits)`);let dn=le.length>0,eu=le.length>i.length;if(eu){let M=(ze.get(z)??[]).filter(ee=>!ee.invalid),F=l||L>0||$>1,q=ge(!F&&M.length>=2?M:N.asPlayed,Qd,se);if(q)return de(q,Ir)}else L>0&&Me(wt,String(L)),Ee!==x&&Ht("gameFpsLimit",x);_n();let un=`${v} FPS (${3}x your ${p} Hz screen)`,tu=`${le.length} setting${le.length===1?"":"s"} changed.`,mt=`Your PC ran ${Math.round(Ie)} FPS in the test match, above the ${un} Kute aims for. Nothing needed changing.`;dn&&Mt!==null?mt=`${tu} Test match without a limit: ${Math.round(Ie)} FPS before, ${Math.round(Mt)} after. Kute aims for at least ${un} with no stutter.`:dn?mt=`${tu} Without a limit your PC runs ${Math.round(Ie)} FPS in the test match, Kute aims for at least ${un} with no stutter.`:Iese?" with room to spare":""}.`;else if(se>0&&no(N.asPlayed,se)){let ee=F!==null&&FsetTimeout(()=>this.offer(),1500),{once:!0});return}sessionStorage.setItem(Mp,"1");let e=new kt;e.choose("Set Kute up for this PC?","Kute can set the game up for what this PC can do: it measures in a private test match, and everything it changes can be undone. You have to be logged in for that.",[{label:"Yes",onPick:()=>{this.setUp(e)}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"No",cancel:!0,onPick:()=>this.decline(e)}],Bp())}decline(e){e.close(),this.remember("declined"),u.showNotification("Got it. You can always start the setup from Settings, Client",!1,5)}async signedIn(){if(As())return!0;if(!localStorage.getItem("krunker_token"))return!1;let e=Date.now()+Dv;for(;Date.now(){e.close(),window.loginOrRegister(),this.waitForLogin()}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}])}waitForLogin(){let e=Date.now()+Ov,t=setInterval(()=>{if(As()){clearInterval(t),this.askSettings();return}Date.now()>e&&clearInterval(t)},1e3)}askSettings(e=new kt){this.remember("settings"),e.choose("Where should your game settings come from?","Kute measures this PC either way and sets what it finds. This is only about the settings it starts from.",[{label:"Import a settings.txt",onPick:()=>{e.close(),this.remember("import"),window.importSettingsPopup()}},{label:"Kute's preset",onPick:()=>{e.close(),this.applyPreset()}},{label:"Keep my settings",onPick:()=>{e.close(),this.start()}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}],Bp())}afterImport(){if(zt()?.wizard!=="import")return;let e=this.snapshot();this.remember("run",e,[]),setTimeout(()=>{zt()?.wizard==="run"&&this.start({snapshot:e})},1500)}applyPreset(){let e=this.snapshot(),t=[];for(let[o,n]of Object.entries(Ui))String(e.game[o])!==String(n)&&(Me(o,n),t.push(`${Wi(o)}: ${ut(e.game[o])} \u2192 ${ut(n)} (Kute's preset)`));this.remember("run",e,t),u.showNotification("Applying Kute's preset, the game reloads once",!1,4),setTimeout(()=>location.reload(),1200)}resume(){let e=zt();if(e?.status==="running"){if(e.carry&&!e.carry.resumed){e.carry.resumed=!0,Fe(e),setTimeout(async()=>{if(await this.signedIn()){this.start({resume:e});return}this.restore(e.snapshot),e.previous?Fe(e.previous):localStorage.removeItem(qn),u.showNotification("Auto-detect could not go on (not logged in). Your settings are back, restart Kute to finish",!1,8)},ea);return}this.restore(e.snapshot),e.previous?Fe(e.previous):localStorage.removeItem(qn);return}let t=sessionStorage.getItem(oa);if(t&&(sessionStorage.removeItem(oa),setTimeout(()=>u.showNotification(t,!1,12),ea)),e?.showSummary&&e.summary){e.showSummary=!1,Fe(e),new kt().result(e.summary,{onUndo:()=>this.undo(),report:zp(e)});return}if(e?.wizard==="run"){setTimeout(async()=>{await this.signedIn()&&this.start({snapshot:e.snapshot,details:e.wizardDetails??[]})},ea);return}if(e?.wizard==="login"||e?.wizard==="settings"||e?.wizard==="import"){setTimeout(()=>this.setUp(),Tp);return}e&&e.wizard!=="later"||setTimeout(()=>this.offer(),Tp)}},Op=new ra;u.autoDetect=Op;Op.resume()});var Fp={};A(Fp,{clanTag:()=>Ls,default:()=>pt});function Ls(s){for(let e of s.children){if(e.tagName!=="SPAN")continue;let t=Qv.exec(e.textContent??"");if(t)return{span:e,tag:t[1]}}return null}function o0(s){let e="";for(let t of s.childNodes)t.nodeType===Node.TEXT_NODE&&(e+=t.textContent??"");return e.trim()}var Qv,Dp,e0,t0,la,pt,jn=w(()=>{"use strict";Qv=/^\s*\[(.+)\]\s*$/;Dp=[{list:"leaderContainer",kind:"leader",root:"leaderboardHolder"},{list:"ingameTable",kind:"ingame",root:"centerLeaderDisplay"},{list:"endTable",kind:"end",root:"endUI"},{list:"playerListH",kind:"alt",root:"menuWindow"}],e0=1e3,t0='.pListName, [class^="newLeaderName"], [class^="leaderName"], .endTableN';la=class{constructor(){this.decorators=new Map,this.watched=[],this.timer=0}add(e,t){this.decorators.set(e,t),this.watched.length===0&&this.observe(),this.refresh()}remove(e){if(this.decorators.delete(e),!(this.decorators.size>0)){for(let{observer:t}of this.watched)t.disconnect();this.watched=[],clearInterval(this.timer),this.timer=0}}observe(){for(let{root:e,list:t,kind:o}of Dp){let n=document.getElementById(e);n&&this.watch(n,t,o)}this.timer=setInterval(()=>this.discover(),e0)}watch(e,t,o){let n={observer:new MutationObserver(()=>this.walk(n)),target:e,list:t,kind:o};n.observer.observe(e,{childList:!0,subtree:!0}),this.watched.push(n),this.walk(n)}discover(){this.watched=this.watched.filter(e=>e.target.isConnected?!0:(e.observer.disconnect(),!1));for(let{list:e,kind:t}of Dp){let o=document.getElementById(e);o&&!this.watched.some(n=>n.target.contains(o))&&this.watch(o,e,t)}}refresh(){for(let e of this.watched)this.walk(e)}walk(e){let t=document.querySelectorAll(`#${e.list}`);if(t.length>0){for(let o of t)for(let n of o.querySelectorAll(t0)){let r={element:n,name:o0(n),kind:e.kind};for(let i of this.decorators.keys())i(r)}for(let o of this.decorators.values())o?.(e.kind)}e.observer.takeRecords()}},pt=new la});var Kp={};A(Kp,{default:()=>et,playerHash:()=>Un});function a0(){if(document.getElementById("signedInHeaderBar")===null)return"";let s=window.getGameActivity?.()?.id;return typeof s=="string"?s:""}function l0(){let s=window.getGameActivity?.()?.user;if(typeof s!="string")return"";if(localStorage.getItem("kro_setngss_premiumBadge")==="false"){let e=localStorage.getItem("krunker_username");if(e)return e}return s}async function Un(s,e){let t=new TextEncoder().encode(s+` +`+e),o=new Uint8Array(await crypto.subtle.digest("SHA-256",t));return Array.from(o.subarray(0,16),n=>n.toString(16).padStart(2,"0")).join("")}function c0(s,e,t){return new Promise(o=>{let n=0,r=i=>{let a=i?.data?.devProof;a?.nonce===s&&(clearTimeout(n),window.chrome.webview.removeEventListener("message",r),o(typeof a.user=="string"&&typeof a.proof=="string"?{user:a.user,proof:a.proof}:null))};n=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),o(null)},i0),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(`dev-proof, ${s}, ${e}, ${t}`)})}var s0,n0,r0,i0,ca,qp,et,da=w(()=>{"use strict";D();It();s0=[2,4,8,16,30],n0=2e3,r0=3e4,i0=1e3;ca=class{constructor(){this.game="",this.roster=new Set,this.devs=new Map,this.nonce="",this.listeners=new Set,this.socket=null,this.failures=0,this.timer=0,this.joined="",he.available().then(e=>{e&&this.open()}),he.listeners.add(e=>{if(!e){this.socket?.close();return}this.failures=0,he.available().then(t=>{t&&!this.socket&&this.open()})})}open(){if(he.down||he.offline())return;let e=new WebSocket(he.base.replace(/^http/,"ws")+"/ws");this.socket=e,e.addEventListener("open",()=>{setTimeout(()=>{this.socket===e&&(this.failures=0)},r0),e.send(JSON.stringify(u.settings.data.counted===!0?{t:"hi"}:{t:"hi",first:!0})),this.sync(),this.timer=setInterval(()=>this.sync(),n0)}),e.addEventListener("message",t=>this.receive(t.data)),e.addEventListener("close",()=>{clearInterval(this.timer),this.socket=null,this.joined="",this.nonce="",this.setRoster("",[]);let t=s0[this.failures++];t!==void 0&&setTimeout(()=>this.open(),t*1e3)})}async sync(){let e=a0(),t=e?l0():"",o=e&&t?e+` +`+t:"";if(o===this.joined)return;if(this.joined=o,!o){this.send({t:"leave"}),this.setRoster("",[]);return}let n=await Un(e,t);if(this.joined!==o)return;let r=u.dev===!0&&this.nonce?await c0(this.nonce,e,n):null;this.joined===o&&this.send(r?{t:"join",game:e,hash:n,dev:r}:{t:"join",game:e,hash:n})}send(e){this.socket?.readyState===WebSocket.OPEN&&this.socket.send(JSON.stringify(e))}receive(e){let t;try{t=JSON.parse(String(e))}catch{return}t?.t==="hello"&&typeof t.nonce=="string"?this.nonce=t.nonce:t?.t==="roster"&&typeof t.game=="string"&&Array.isArray(t.players)?this.joined.startsWith(t.game+` +`)&&this.setRoster(t.game,t.players):t?.t==="+"&&typeof t.h=="string"?(this.remember(t.h,t.d===1?t.c:void 0),this.changed()):t?.t==="-"&&typeof t.h=="string"?(this.roster.delete(t.h),this.devs.delete(t.h),this.changed()):t?.t==="counted"&&(u.settings.data.counted=!0,window.chrome.webview.postMessage("set-config, counted, true"))}remember(e,t){this.roster.add(e),typeof t=="string"&&t!==""?this.devs.set(e,t):this.devs.delete(e)}setRoster(e,t){if(!(e===this.game&&t.length===0&&this.roster.size===0)){this.game=e,this.roster=new Set,this.devs=new Map;for(let o of t)Array.isArray(o)&&typeof o[0]=="string"&&this.remember(o[0],o[1]===1?o[2]?.c:void 0);this.changed()}}changed(){for(let e of this.listeners)e()}},qp=new ca;u.presence=qp;et=qp});var Up,jp=w(()=>{Up="data:image/webp;base64,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"});var Wp,Gp=w(()=>{Wp="data:image/webp;base64,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"});var pa={};A(pa,{default:()=>g0});function Vp(s){let e=s?`[data-kute-badge="${s}"]`:"[data-kute-badge]";for(let o of document.querySelectorAll(e))o.remove();let t=s?`[data-kute-badged="${s}"]`:"[data-kute-badged]";for(let o of document.querySelectorAll(t))o.removeAttribute("data-kute-badged")}function Yp(s){(s.querySelector("[data-kute-badge]")??s.parentElement?.querySelector("[data-kute-badge]"))?.remove(),s.removeAttribute("data-kute-badged")}var p0,h0,m0,f0,ua,Xp,g0,ha=w(()=>{"use strict";D();jn();da();jp();Gp();p0="2px",h0={leader:"margin-top:5px;vertical-align:middle;height:21px;margin-left:2px",ingame:"margin-top:3px;vertical-align:middle;height:21px;margin-left:2px",end:"margin-top:-12px;vertical-align:middle;width:26px;margin-left:2px",alt:"vertical-align:middle;height:21px;margin-left:6px;position:relative;top:-0.35em"},m0={kute:Up,dev:Wp},f0={kute:"Kute",dev:"Kute Developer"};ua=class{constructor(){this.game="",this.hashes=new Map,this.pending=new Set,this.found=!1,this.candidates=[],this.enabled=u.settings.data.cuteBadge!==!1,this.decorator=e=>this.decorate(e),this.finisher=()=>this.finish(),u.settings.toggleCuteBadge=e=>this.toggle(e),et.listeners.add(()=>this.rosterChanged())}toggle(e){this.enabled=e,e||Vp("kute"),pt.refresh()}rosterChanged(){if(et.game!==this.game&&(this.game=et.game,this.hashes.clear(),this.pending.clear()),Vp(),et.roster.size===0){pt.remove(this.decorator);return}pt.add(this.decorator,this.finisher)}decorate(e){if(et.roster.size===0||e.name==="")return;let t=this.hashes.get(e.name);if(t===void 0){this.learn(e.name);return}if(et.devs.has(t)){this.candidates.push({row:e,hash:t,tag:Ls(e.element)?.tag});return}this.enabled&&!e.element.hasAttribute("data-kute-badged")&&et.roster.has(t)&&this.insert(e,"kute")}finish(){if(this.candidates.length===0)return;let e=new Map;for(let t of this.candidates){let o=e.get(t.hash);o?o.push(t):e.set(t.hash,[t])}for(let[t,o]of e){let n=o.filter(i=>i.tag===et.devs.get(t)),r=null;n.length===1?r=n[0].row:n.length===0&&o.length===1&&(r=o[0].row);for(let i of o){let a=i.row.element.getAttribute("data-kute-badged");if(i.row!==r){a&&Yp(i.row.element);continue}a!=="dev"&&(a&&Yp(i.row.element),this.insert(i.row,"dev"))}}this.candidates.length=0}async learn(e){if(this.pending.has(e))return;this.pending.add(e);let{game:t}=this,o=await Un(t,e);t===this.game&&(this.pending.delete(e),this.hashes.set(e,o),et.roster.has(o)&&(this.found=!0),!(this.pending.size>0||!this.found)&&(this.found=!1,pt.refresh()))}insert(e,t){let{element:o}=e,n=o.parentElement;if(!n)return;let r=document.createElement("img");r.src=m0[t],r.setAttribute("data-kute-badge",t),r.alt="",r.title=f0[t],r.style.cssText=h0[e.kind],e.kind==="alt"?o.append(r):e.kind==="end"?n.insertBefore(r,o.nextSibling):n.insertBefore(r,n.firstElementChild?.nextSibling??o),r.nextElementSibling?.tagName==="I"&&(r.style.marginRight=p0),o.setAttribute("data-kute-badged",t)}},Xp=new ua;u.badges=Xp;g0=Xp});var Jp=we((_S,b0)=>{b0.exports=`#chatList>*{display:block!important}#chatInputHolder{opacity:1;transition:opacity .2s ease-in-out,transform .2s ease-in-out}#chatList::-webkit-scrollbar{display:none}#chatList{transition:margin-bottom .2s ease-in-out}#uiBase.onGame #chatList{margin-bottom:-50px}#uiBase.onMenu #chatInputHolder{transition:none}#uiBase.onGame #chatInputHolder{opacity:0;transform:translateY(50px)}#uiBase.onGame #chatHolder:focus-within #chatInputHolder{opacity:1;transform:translateY(0)}#uiBase.onGame #chatHolder:focus-within #chatList{margin-bottom:0}#uiBase.onSpect #chatInputHolder{opacity:1;transform:translateY(0)}#uiBase.onSpect #chatList{margin-bottom:0} +`});var fa={};A(fa,{default:()=>v0});var ma,v0,ga=w(()=>{"use strict";D();Ae();ma=class{constructor(){this.teamModes=new Set(["Team Deathmatch","Hardpoint","Capture the Flag","Hide & Seek","Infected","Last Man Standing","Simon Says","Prop Hunt","Boss Hunt","Deposit","Stalker","Kill Confirmed","Defuse","Traitor","Blitz","Domination","Squad Deathmatch","Team Defender"]),this.styles=document.createElement("style"),Promise.resolve().then(()=>ue(Jp(),1)).then(e=>{this.styles.innerHTML=e.default}),u.settings.toggleBetterChat=e=>this.toggle(e),this.chatHolder=U("#chatHolder"),this.chatList=U("#chatList"),this.chatInput=ke("#chatInput"),this.chatSwitch=U("#chatSwitch"),this.channelT=document.createElement("div"),this.channelA=document.createElement("div"),this.channelT.style.cssText="float: left; display: inline-block; margin-right: 5px; color: #9eeb56;",this.channelT.textContent="[T]",this.channelA.style.cssText="float: left; display: inline-block; margin-right: 5px; color: #eb5656;",this.channelA.textContent="[M]",this.observer=new MutationObserver(e=>this.parseMessages(e)),this.toggle(!0)}switchChat=e=>{e.key==="Tab"&&(window.switchChat(this.chatSwitch),e.preventDefault())};parseMessages(e){let t=!1;for(let o of e)for(let n of o.addedNodes){if(!(n instanceof HTMLElement))continue;let r=n.querySelector(".chatItem");if(!r)continue;let i=r.querySelector(".chatMsg");if(!i)continue;if(i.textContent.includes("Text & Voice Chat")){n.remove();continue}let{tab:a}=n.dataset;!a||!r.textContent.includes("\u200E:")||!this.teamModes.has(window.getGameActivity().mode)||(a==="0"?i.insertBefore(this.channelA.cloneNode(!0),i.firstChild):a==="1"&&i.insertBefore(this.channelT.cloneNode(!0),i.firstChild),t=!0)}t&&(this.chatList.scrollTop=1e9)}toggle(e){e?(document.head.append(this.styles),this.chatInput.addEventListener("keydown",this.switchChat,{capture:!0}),this.observer.observe(this.chatList,{childList:!0})):(this.styles.remove(),this.chatInput.removeEventListener("keydown",this.switchChat,{capture:!0}),this.observer.disconnect())}},v0=new ma});var eh={};function Zp(){return Array.from(document.querySelectorAll(".bpClaimB")).filter(s=>s.offsetParent!==null&&s.textContent.trim()==="Claim")}function Qp(){let s=Zp().length>0;s?Ft.classList.remove("disabled"):Ft.classList.add("disabled"),Ft.textContent=s?"Claim All":"Nothing to Claim"}async function w0(){let s=Zp();if(s.length!==0){for(let e of s)e.getAttribute("onclick")?.includes("windows[5].claimItem(")&&e.click(),await new Promise(o=>setTimeout(o,200));Qp()}}function k0(){let s=document.querySelector(".bpBotH");s&&(s.append(Ft),Qp())}var Ft,y0,ba=w(()=>{"use strict";Ft=document.createElement("div");Ft.className="bpBtn skip";Ft.id="claimAllBtn";Ft.textContent="Claim All";Ft.onclick=()=>{window.playSelect?.(.1),w0()};y0=window.showWindow;window.showWindow=(...s)=>(s[0]===6&&queueMicrotask(()=>k0()),y0(...s))});function ya(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function dh(s){co=s}function zo(s){let e=[];return t=>{let o=Math.max(0,Math.min(3,t-1)),n=e[o];return n||(n=s(o),e[o]=n),n}}function Q(s,e=""){let t=typeof s=="string"?s:s.source,o={replace:(n,r)=>{let i=typeof r=="string"?r:r.source;return i=i.replace(Le.caret,"$1"),t=t.replace(n,i),o},getRegex:()=>new RegExp(t,e)};return o}function qe(s,e){if(e){if(Le.escapeTest.test(s))return s.replace(Le.escapeReplace,nh)}else if(Le.escapeTestNoEncode.test(s))return s.replace(Le.escapeReplaceNoEncode,nh);return s}function rh(s){try{s=encodeURI(s).replace(Le.percentDecode,"%")}catch{return null}return s}function ih(s,e){let t=s.replace(Le.findPipe,(r,i,a)=>{let l=!1,c=i;for(;--c>=0&&a[c]==="\\";)l=!l;return l?"|":" |"}),o=t.split(Le.splitPipe),n=0;if(o[0].trim()||o.shift(),o.length>0&&!o.at(-1)?.trim()&&o.pop(),e)if(o.length>e)o.splice(e);else for(;o.length=0&&Le.blankLine.test(e[t]);)t--;return e.length-t<=2?s:e.slice(0,t+1).join(` -`)}function Yn(s){return s.toLowerCase().toUpperCase().toLowerCase()}function xw(s,e){if(s.indexOf(e[1])===-1)return-1;let t=0;for(let o=0;o0?-2:-1}function Sw(s,e=0){let t=e,o="";for(let n of s)if(n===" "){let r=4-t%4;o+=" ".repeat(r),t+=r}else o+=n,t++;return o}function ph(s,e,t,o,n){let r=e.href,i=e.title||null,a=s[1].replace(n.other.outputLinkReplace,"$1"),l=s[0].charAt(0)==="!";o.state.inLink=!0;let c=o.state.linkEmitted,u=o.state.inRawBlock;o.state.linkEmitted=!1;let h=o.inlineTokens(a),p=o.state.linkEmitted;if(o.state.linkEmitted=c,o.state.inLink=!1,!l){if(p){o.state.inRawBlock=u;return}o.state.linkEmitted=!0}return{type:l?"image":"link",raw:t,href:r,title:i,text:a,tokens:h}}function Ew(s,e,t){let o=s.match(t.other.indentCodeCompensation);if(o===null)return e;let n=o[1];return e.split(` +`)}function Vn(s){return s.toLowerCase().toUpperCase().toLowerCase()}function bw(s,e){if(s.indexOf(e[1])===-1)return-1;let t=0;for(let o=0;o0?-2:-1}function vw(s,e=0){let t=e,o="";for(let n of s)if(n===" "){let r=4-t%4;o+=" ".repeat(r),t+=r}else o+=n,t++;return o}function lh(s,e,t,o,n){let r=e.href,i=e.title||null,a=s[1].replace(n.other.outputLinkReplace,"$1"),l=s[0].charAt(0)==="!";o.state.inLink=!0;let c=o.state.linkEmitted,d=o.state.inRawBlock;o.state.linkEmitted=!1;let h=o.inlineTokens(a),p=o.state.linkEmitted;if(o.state.linkEmitted=c,o.state.inLink=!1,!l){if(p){o.state.inRawBlock=d;return}o.state.linkEmitted=!0}return{type:l?"image":"link",raw:t,href:r,title:i,text:a,tokens:h}}function ww(s,e,t){let o=s.match(t.other.indentCodeCompensation);if(o===null)return e;let n=o[1];return e.split(` `).map(r=>{let i=r.match(t.other.beginningSpace);if(i===null)return r;let[a]=i;return r.slice(Math.min(a.length,n.length))}).join(` -`)}function hh(s,e,t,o){if(!e.includes("<"))return!1;for(let n=0;ne.length-n)return!0;n+=i[0].length-1}}return!1}function ie(s,e){return po.parse(s,e)}function Cw(...s){return po.use(...s),ie.defaults=po.defaults,mh(ie.defaults),ie}var ho,uo,M0,Le,T0,A0,L0,Ns,R0,Sa,fh,gh,P0,Ea,I0,$a,N0,_0,_s,Ca,B0,bh,z0,H0,O0,Ma,rh,F0,D0,q0,K0,vh,j0,St,Fo,Bs,U0,G0,wh,W0,V0,Y0,kh,X0,J0,Z0,Q0,yh,ew,tw,ow,sw,nw,rw,iw,aw,lw,cw,dw,uw,pw,hw,xh,Vn,mw,fw,gw,ih,bw,vw,ah,Ta,ww,wa,kw,Wn,Ps,yw,lh,Xn,et,Jn,Aa,tt,Is,$w,po,jS,US,GS,WS,VS,YS,Sh=w(()=>{ho=xa();uo={exec:()=>null};M0=((s="")=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:s=>new RegExp(`^( {0,3}${s})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:Oo(s=>new RegExp(`^ {0,${s}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:Oo(s=>new RegExp(`^ {0,${s}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)),fencesBeginRegex:Oo(s=>new RegExp(`^ {0,${s}}(?:\`\`\`|~~~)`)),headingBeginRegex:Oo(s=>new RegExp(`^ {0,${s}}#`)),htmlBeginRegex:Oo(s=>new RegExp(`^ {0,${s}}(?:)|<(?:script|pre|style|textarea|!--))`,"i")),blockquoteBeginRegex:Oo(s=>new RegExp(`^ {0,${s}}>`))},T0=/^(?:[ \t]*(?:\n|$))+/,A0=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,L0=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Ns=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,R0=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Sa=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,fh=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,gh=Q(fh).replace(/bull/g,Sa).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),P0=Q(fh).replace(/bull/g,Sa).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Ea=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,I0=/^[^\n]+/,$a=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,N0=Q(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",$a).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),_0=Q(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,Sa).getRegex(),_s="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Ca=/|$))/,B0=Q("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Ca).replace("tag",_s).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),bh=s=>Q(Ea).replace("hr",Ns).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",s).replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",_s).getRegex(),z0=bh(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),H0=bh(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),O0=Q(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",H0).getRegex(),Ma={blockquote:O0,code:A0,def:N0,fences:L0,heading:R0,hr:Ns,html:B0,lheading:gh,list:_0,newline:T0,paragraph:z0,table:uo,text:I0},rh=Q("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Ns).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",_s).getRegex(),F0={...Ma,lheading:P0,table:rh,paragraph:Q(Ea).replace("hr",Ns).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",rh).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",_s).getRegex()},D0={...Ma,html:Q(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Ca).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:uo,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Q(Ea).replace("hr",Ns).replace("heading",` *#{1,6} *[^ -]`).replace("lheading",gh).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},q0=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,K0=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,vh=/^( {2,}|\\)\n(?!\s*$)[ \t]*/,j0=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",M0?"(?`+)[^`]+\k(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),kh=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,X0=Q(kh,"u").replace(/punct/g,St).getRegex(),J0=Q(kh,"u").replace(/punct/g,wh).getRegex(),Z0=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,Q0=Q(Z0,"u").replace(/openQuote/g,G0).replace(/punct/g,St).getRegex(),yh="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",ew=Q(yh,"gu").replace(/notPunctSpace/g,Bs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),tw=Q(yh,"gu").replace(/notPunctSpace/g,V0).replace(/punctSpace/g,W0).replace(/punct/g,wh).getRegex(),ow="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",sw=Q(ow,"gu").replace(/notPunctSpace/g,Bs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),nw=Q("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Bs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),rw="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",iw=Q(rw,"gu").replace(/notPunctSpace/g,Bs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),aw=Q(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,St).getRegex(),lw="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",cw=Q(lw,"gu").replace(/notPunctSpace/g,Bs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),dw=Q(/\\(punct)/,"gu").replace(/punct/g,St).getRegex(),uw=Q(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),pw=Q(Ca).replace("(?:-->|$)","-->").getRegex(),hw=Q("^comment|^|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",pw).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),xh=/\[(?:\\[\s\S]|[^\[\]\\])*\]/,Vn=Q(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets",xh).getRegex(),mw=Q(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",Vn).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),fw=Q(/^!?\[(label)\]\[(ref)\]/).replace("label",Vn).replace("ref",$a).getRegex(),gw=Q(/^!?\[(ref)\](?:\[\])?/).replace("ref",$a).getRegex(),ih=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/,bw=Q(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets",xh).getRegex(),vw=Q("reflink|nolink(?!\\()","g").replace("reflink",Q(/^!?\[(label)\]\[(ref)\]/).replace("label",bw).replace("ref",ih).getRegex()).replace("nolink",Q(/^!?\[(ref)\](?:\[\])?/).replace("ref",ih).getRegex()).getRegex(),ah=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Ta={_backpedal:uo,anyPunctuation:dw,autolink:uw,blockSkip:Y0,br:vh,code:K0,del:uo,delLDelim:uo,delRDelim:uo,emStrongLDelim:X0,emStrongRDelimAst:ew,emStrongRDelimUnd:nw,escape:q0,link:mw,nolink:gw,punctuation:U0,reflink:fw,reflinkSearch:vw,tag:hw,text:j0,url:uo},ww={...Ta,emStrongLDelim:Q0,emStrongRDelimAst:sw,emStrongRDelimUnd:iw,link:Q(/^!?\[(label)\]\((.*?)\)/).replace("label",Vn).getRegex(),reflink:Q(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Vn).getRegex()},wa={...Ta,emStrongRDelimAst:tw,emStrongLDelim:J0,delLDelim:aw,delRDelim:cw,url:Q(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",ah).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:Q(/^(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},lh=s=>yw[s];Xn=class{options;rules;lexer;constructor(s){this.options=s||ho}space(s){let e=this.rules.block.newline.exec(s);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(s){let e=this.rules.block.code.exec(s);if(e){let t=this.options.pedantic?e[0]:uh(e[0]),o=t.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t,codeBlockStyle:"indented",text:o}}}fences(s){let e=this.rules.block.fences.exec(s);if(e){let t=e[0],o=Ew(t,e[3]||"",this.rules);return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:o}}}heading(s){let e=this.rules.block.heading.exec(s);if(e){let t=e[2].trim();if(this.rules.other.endingHash.test(t)){let o=Kt(t,"#");(this.options.pedantic||!o||this.rules.other.endingSpaceTabChar.test(o))&&(t=o.trim())}return{type:"heading",raw:Kt(e[0],` -`),depth:e[1].length,text:t,tokens:this.lexer.inline(t)}}}hr(s){let e=this.rules.block.hr.exec(s);if(e)return{type:"hr",raw:Kt(e[0],` -`)}}blockquote(s){let e=this.rules.block.blockquote.exec(s);if(e){let t=Kt(e[0],` +`)}function ch(s,e,t,o){if(!e.includes("<"))return!1;for(let n=0;ne.length-n)return!0;n+=i[0].length-1}}return!1}function ie(s,e){return lo.parse(s,e)}function yw(...s){return lo.use(...s),ie.defaults=lo.defaults,dh(ie.defaults),ie}var co,ao,x0,Le,S0,E0,$0,Is,C0,xa,uh,ph,M0,Sa,T0,Ea,A0,L0,Ns,$a,R0,hh,P0,I0,N0,Ca,th,_0,B0,z0,H0,mh,O0,xt,Ho,_s,D0,F0,fh,q0,K0,j0,gh,U0,G0,W0,V0,bh,Y0,X0,J0,Z0,Q0,ew,tw,ow,sw,nw,rw,iw,aw,lw,vh,Wn,cw,dw,uw,oh,pw,hw,sh,Ma,mw,va,fw,Gn,Rs,gw,nh,Yn,tt,Xn,Ta,ot,Ps,kw,lo,HS,OS,DS,FS,qS,KS,wh=w(()=>{co=ya();ao={exec:()=>null};x0=((s="")=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:s=>new RegExp(`^( {0,3}${s})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:zo(s=>new RegExp(`^ {0,${s}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:zo(s=>new RegExp(`^ {0,${s}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)),fencesBeginRegex:zo(s=>new RegExp(`^ {0,${s}}(?:\`\`\`|~~~)`)),headingBeginRegex:zo(s=>new RegExp(`^ {0,${s}}#`)),htmlBeginRegex:zo(s=>new RegExp(`^ {0,${s}}(?:)|<(?:script|pre|style|textarea|!--))`,"i")),blockquoteBeginRegex:zo(s=>new RegExp(`^ {0,${s}}>`))},S0=/^(?:[ \t]*(?:\n|$))+/,E0=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,$0=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Is=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,C0=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,xa=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,uh=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,ph=Q(uh).replace(/bull/g,xa).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),M0=Q(uh).replace(/bull/g,xa).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Sa=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,T0=/^[^\n]+/,Ea=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,A0=Q(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Ea).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),L0=Q(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,xa).getRegex(),Ns="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",$a=/|$))/,R0=Q("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",$a).replace("tag",Ns).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),hh=s=>Q(Sa).replace("hr",Is).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",s).replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Ns).getRegex(),P0=hh(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),I0=hh(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),N0=Q(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",I0).getRegex(),Ca={blockquote:N0,code:E0,def:A0,fences:$0,heading:C0,hr:Is,html:R0,lheading:ph,list:L0,newline:S0,paragraph:P0,table:ao,text:T0},th=Q("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Is).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Ns).getRegex(),_0={...Ca,lheading:M0,table:th,paragraph:Q(Sa).replace("hr",Is).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",th).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Ns).getRegex()},B0={...Ca,html:Q(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",$a).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:ao,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Q(Sa).replace("hr",Is).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",ph).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},z0=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,H0=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,mh=/^( {2,}|\\)\n(?!\s*$)[ \t]*/,O0=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",x0?"(?`+)[^`]+\k(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),gh=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,U0=Q(gh,"u").replace(/punct/g,xt).getRegex(),G0=Q(gh,"u").replace(/punct/g,fh).getRegex(),W0=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,V0=Q(W0,"u").replace(/openQuote/g,F0).replace(/punct/g,xt).getRegex(),bh="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Y0=Q(bh,"gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),X0=Q(bh,"gu").replace(/notPunctSpace/g,K0).replace(/punctSpace/g,q0).replace(/punct/g,fh).getRegex(),J0="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",Z0=Q(J0,"gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),Q0=Q("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),ew="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",tw=Q(ew,"gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),ow=Q(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,xt).getRegex(),sw="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",nw=Q(sw,"gu").replace(/notPunctSpace/g,_s).replace(/punctSpace/g,Ho).replace(/punct/g,xt).getRegex(),rw=Q(/\\(punct)/,"gu").replace(/punct/g,xt).getRegex(),iw=Q(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),aw=Q($a).replace("(?:-->|$)","-->").getRegex(),lw=Q("^comment|^|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",aw).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),vh=/\[(?:\\[\s\S]|[^\[\]\\])*\]/,Wn=Q(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets",vh).getRegex(),cw=Q(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",Wn).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),dw=Q(/^!?\[(label)\]\[(ref)\]/).replace("label",Wn).replace("ref",Ea).getRegex(),uw=Q(/^!?\[(ref)\](?:\[\])?/).replace("ref",Ea).getRegex(),oh=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/,pw=Q(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets",vh).getRegex(),hw=Q("reflink|nolink(?!\\()","g").replace("reflink",Q(/^!?\[(label)\]\[(ref)\]/).replace("label",pw).replace("ref",oh).getRegex()).replace("nolink",Q(/^!?\[(ref)\](?:\[\])?/).replace("ref",oh).getRegex()).getRegex(),sh=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Ma={_backpedal:ao,anyPunctuation:rw,autolink:iw,blockSkip:j0,br:mh,code:H0,del:ao,delLDelim:ao,delRDelim:ao,emStrongLDelim:U0,emStrongRDelimAst:Y0,emStrongRDelimUnd:Q0,escape:z0,link:cw,nolink:uw,punctuation:D0,reflink:dw,reflinkSearch:hw,tag:lw,text:O0,url:ao},mw={...Ma,emStrongLDelim:V0,emStrongRDelimAst:Z0,emStrongRDelimUnd:tw,link:Q(/^!?\[(label)\]\((.*?)\)/).replace("label",Wn).getRegex(),reflink:Q(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Wn).getRegex()},va={...Ma,emStrongRDelimAst:X0,emStrongLDelim:G0,delLDelim:ow,delRDelim:nw,url:Q(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",sh).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:Q(/^(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},nh=s=>gw[s];Yn=class{options;rules;lexer;constructor(s){this.options=s||co}space(s){let e=this.rules.block.newline.exec(s);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(s){let e=this.rules.block.code.exec(s);if(e){let t=this.options.pedantic?e[0]:ah(e[0]),o=t.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t,codeBlockStyle:"indented",text:o}}}fences(s){let e=this.rules.block.fences.exec(s);if(e){let t=e[0],o=ww(t,e[3]||"",this.rules);return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:o}}}heading(s){let e=this.rules.block.heading.exec(s);if(e){let t=e[2].trim();if(this.rules.other.endingHash.test(t)){let o=qt(t,"#");(this.options.pedantic||!o||this.rules.other.endingSpaceTabChar.test(o))&&(t=o.trim())}return{type:"heading",raw:qt(e[0],` +`),depth:e[1].length,text:t,tokens:this.lexer.inline(t)}}}hr(s){let e=this.rules.block.hr.exec(s);if(e)return{type:"hr",raw:qt(e[0],` +`)}}blockquote(s){let e=this.rules.block.blockquote.exec(s);if(e){let t=qt(e[0],` `).split(` `),o="",n="",r=[];for(;t.length>0;){let i=!1,a=[],l;for(l=0;l1,n={type:"list",raw:"",ordered:o,start:o?+t.slice(0,-1):"",loose:!1,items:[]};t=o?`\\d{1,9}\\${t.slice(-1)}`:`\\${t}`,this.options.pedantic&&(t=o?t:"[*+-]");let r=this.rules.other.listItemRegex(t),i=!1;for(;s;){let l=!1,c="",u="";if(!(e=r.exec(s))||this.rules.block.hr.test(s))break;c=e[0],s=s.substring(c.length);let h=Sw(e[2].split(` +`),g=this.list(f);r[r.length-1]=g,o=o.substring(0,o.length-p.raw.length)+g.raw,n=n.substring(0,n.length-m.raw.length)+g.raw,t=f.substring(r.at(-1).raw.length).split(` +`);continue}}return{type:"blockquote",raw:o,tokens:r,text:n}}}list(s){let e=this.rules.block.list.exec(s);if(e){let t=e[1].trim(),o=t.length>1,n={type:"list",raw:"",ordered:o,start:o?+t.slice(0,-1):"",loose:!1,items:[]};t=o?`\\d{1,9}\\${t.slice(-1)}`:`\\${t}`,this.options.pedantic&&(t=o?t:"[*+-]");let r=this.rules.other.listItemRegex(t),i=!1;for(;s;){let l=!1,c="",d="";if(!(e=r.exec(s))||this.rules.block.hr.test(s))break;c=e[0],s=s.substring(c.length);let h=vw(e[2].split(` `,1)[0],e[1].length),p=s.split(` -`,1)[0],f=!h.trim(),m=0;if(this.options.pedantic?(m=2,u=h.trimStart()):f?m=e[1].length+1:(m=h.search(this.rules.other.nonSpaceChar),m=m>4?1:m,u=h.slice(m),m+=e[1].length),f&&this.rules.other.blankLine.test(p)&&(c+=p+` -`,s=s.substring(p.length+1),l=!0),!l){let g=this.rules.other.nextBulletRegex(m),b=this.rules.other.hrRegex(m),v=this.rules.other.fencesBeginRegex(m),k=this.rules.other.headingBeginRegex(m),E=this.rules.other.htmlBeginRegex(m),L=this.rules.other.blockquoteBeginRegex(m);for(;s;){let x=s.split(` -`,1)[0],$;if(p=x,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting," "),$=p):$=p.replace(this.rules.other.tabCharGlobal," "),v.test(p)||k.test(p)||E.test(p)||L.test(p)||g.test(p)||b.test(p))break;if($.search(this.rules.other.nonSpaceChar)>=m||!p.trim())u+=` -`+$.slice(m);else{if(f||h.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||v.test(h)||k.test(h)||b.test(h))break;u+=` -`+p}f=!p.trim(),c+=x+` -`,s=s.substring(x.length+1),h=$.slice(m)}}n.loose||(i?n.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(i=!0)),n.items.push({type:"list_item",raw:c,task:!!this.options.gfm&&this.rules.other.listIsTask.test(u),loose:!1,text:u,tokens:[]}),n.raw+=c}let a=n.items.at(-1);if(a)a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd();else return;n.raw=n.raw.trimEnd();for(let l of n.items)if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),!n.loose){let c=l.tokens.filter(h=>h.type==="space"),u=c.length>0&&c.some(h=>this.rules.other.anyLine.test(h.raw));n.loose=u}for(let l of n.items){let c=l.tokens[0];if(l.task&&(c?.type==="text"||c?.type==="paragraph")){l.text=l.text.replace(this.rules.other.listReplaceTask,""),c.raw=c.raw.replace(this.rules.other.listReplaceTask,""),c.text=c.text.replace(this.rules.other.listReplaceTask,"");for(let h=this.lexer.inlineQueue.length-1;h>=0;h--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[h].src)){this.lexer.inlineQueue[h].src=this.lexer.inlineQueue[h].src.replace(this.rules.other.listReplaceTask,"");break}let u=this.rules.other.listTaskCheckbox.exec(l.raw);if(u){let h={type:"checkbox",raw:u[0]+" ",checked:u[0]!=="[ ]"};l.checked=h.checked,n.loose?l.tokens[0]&&["paragraph","text"].includes(l.tokens[0].type)&&"tokens"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=h.raw+l.tokens[0].raw,l.tokens[0].text=h.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(h)):l.tokens.unshift({type:"paragraph",raw:h.raw,text:h.raw,tokens:[h]}):l.tokens.unshift(h)}}else l.task&&(l.task=!1)}if(n.loose)for(let l of n.items){l.loose=!0;for(let c of l.tokens)c.type==="text"&&(c.type="paragraph")}return n}}html(s){let e=this.rules.block.html.exec(s);if(e){let t=uh(e[0]);return{type:"html",block:!0,raw:t,pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:t}}}def(s){let e=this.rules.block.def.exec(s);if(e){let t=Yn(e[1]).replace(this.rules.other.multipleSpaceGlobal," "),o=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",n=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:t,raw:Kt(e[0],` -`),href:o,title:n}}}table(s){let e=this.rules.block.table.exec(s);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let t=dh(e[1]),o=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),n=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(` -`):[],r={type:"table",raw:Kt(e[0],` -`),header:[],align:[],rows:[]};if(t.length===o.length){for(let i of o)this.rules.other.tableAlignRight.test(i)?r.align.push("right"):this.rules.other.tableAlignCenter.test(i)?r.align.push("center"):this.rules.other.tableAlignLeft.test(i)?r.align.push("left"):r.align.push(null);for(let i=0;i({text:a,tokens:this.lexer.inline(a),header:!1,align:r.align[l]})));return r}}lheading(s){let e=this.rules.block.lheading.exec(s);if(e){let t=e[1].trim();return{type:"heading",raw:Kt(e[0],` +`,1)[0],m=!h.trim(),f=0;if(this.options.pedantic?(f=2,d=h.trimStart()):m?f=e[1].length+1:(f=h.search(this.rules.other.nonSpaceChar),f=f>4?1:f,d=h.slice(f),f+=e[1].length),m&&this.rules.other.blankLine.test(p)&&(c+=p+` +`,s=s.substring(p.length+1),l=!0),!l){let g=this.rules.other.nextBulletRegex(f),b=this.rules.other.hrRegex(f),v=this.rules.other.fencesBeginRegex(f),k=this.rules.other.headingBeginRegex(f),E=this.rules.other.htmlBeginRegex(f),L=this.rules.other.blockquoteBeginRegex(f);for(;s;){let x=s.split(` +`,1)[0],$;if(p=x,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting," "),$=p):$=p.replace(this.rules.other.tabCharGlobal," "),v.test(p)||k.test(p)||E.test(p)||L.test(p)||g.test(p)||b.test(p))break;if($.search(this.rules.other.nonSpaceChar)>=f||!p.trim())d+=` +`+$.slice(f);else{if(m||h.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||v.test(h)||k.test(h)||b.test(h))break;d+=` +`+p}m=!p.trim(),c+=x+` +`,s=s.substring(x.length+1),h=$.slice(f)}}n.loose||(i?n.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(i=!0)),n.items.push({type:"list_item",raw:c,task:!!this.options.gfm&&this.rules.other.listIsTask.test(d),loose:!1,text:d,tokens:[]}),n.raw+=c}let a=n.items.at(-1);if(a)a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd();else return;n.raw=n.raw.trimEnd();for(let l of n.items)if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),!n.loose){let c=l.tokens.filter(h=>h.type==="space"),d=c.length>0&&c.some(h=>this.rules.other.anyLine.test(h.raw));n.loose=d}for(let l of n.items){let c=l.tokens[0];if(l.task&&(c?.type==="text"||c?.type==="paragraph")){l.text=l.text.replace(this.rules.other.listReplaceTask,""),c.raw=c.raw.replace(this.rules.other.listReplaceTask,""),c.text=c.text.replace(this.rules.other.listReplaceTask,"");for(let h=this.lexer.inlineQueue.length-1;h>=0;h--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[h].src)){this.lexer.inlineQueue[h].src=this.lexer.inlineQueue[h].src.replace(this.rules.other.listReplaceTask,"");break}let d=this.rules.other.listTaskCheckbox.exec(l.raw);if(d){let h={type:"checkbox",raw:d[0]+" ",checked:d[0]!=="[ ]"};l.checked=h.checked,n.loose?l.tokens[0]&&["paragraph","text"].includes(l.tokens[0].type)&&"tokens"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=h.raw+l.tokens[0].raw,l.tokens[0].text=h.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(h)):l.tokens.unshift({type:"paragraph",raw:h.raw,text:h.raw,tokens:[h]}):l.tokens.unshift(h)}}else l.task&&(l.task=!1)}if(n.loose)for(let l of n.items){l.loose=!0;for(let c of l.tokens)c.type==="text"&&(c.type="paragraph")}return n}}html(s){let e=this.rules.block.html.exec(s);if(e){let t=ah(e[0]);return{type:"html",block:!0,raw:t,pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:t}}}def(s){let e=this.rules.block.def.exec(s);if(e){let t=Vn(e[1]).replace(this.rules.other.multipleSpaceGlobal," "),o=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",n=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:t,raw:qt(e[0],` +`),href:o,title:n}}}table(s){let e=this.rules.block.table.exec(s);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let t=ih(e[1]),o=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),n=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(` +`):[],r={type:"table",raw:qt(e[0],` +`),header:[],align:[],rows:[]};if(t.length===o.length){for(let i of o)this.rules.other.tableAlignRight.test(i)?r.align.push("right"):this.rules.other.tableAlignCenter.test(i)?r.align.push("center"):this.rules.other.tableAlignLeft.test(i)?r.align.push("left"):r.align.push(null);for(let i=0;i({text:a,tokens:this.lexer.inline(a),header:!1,align:r.align[l]})));return r}}lheading(s){let e=this.rules.block.lheading.exec(s);if(e){let t=e[1].trim();return{type:"heading",raw:qt(e[0],` `),depth:e[2].charAt(0)==="="?1:2,text:t,tokens:this.lexer.inline(t)}}}paragraph(s){let e=this.rules.block.paragraph.exec(s);if(e){let t=e[1].charAt(e[1].length-1)===` -`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(s){let e=this.rules.block.text.exec(s);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(s){let e=this.rules.inline.escape.exec(s);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(s){let e=this.rules.inline.tag.exec(s);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(s){let e=this.rules.inline.link.exec(s);if(e){let t=e[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&hh(s,e[1],t,this.rules))return;let o=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(o)){if(!this.rules.other.endAngleBracket.test(o))return;let i=Kt(o.slice(0,-1),"\\");if((o.length-i.length)%2===0)return}else{let i=xw(e[2],"()");if(i===-2)return;if(i>-1){let a=(e[0].indexOf("!")===0?5:4)+e[1].length+i;e[2]=e[2].substring(0,i),e[0]=e[0].substring(0,a).trim(),e[3]=""}}let n=e[2],r="";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(n);i&&(n=i[1],r=i[3])}else r=e[3]?e[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(o)?n=n.slice(1):n=n.slice(1,-1)),ph(e,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(s,e){let t;if((t=this.rules.inline.reflink.exec(s))||(t=this.rules.inline.nolink.exec(s))){let o=t[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&hh(s,t[1],o,this.rules))return;let n=(t[2]||t[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=e[Yn(n)];if(!r){let i=t[0].charAt(0);return{type:"text",raw:i,text:i}}return ph(t,r,t[0],this.lexer,this.rules)}}emStrong(s,e,t=""){let o=this.rules.inline.emStrongLDelim.exec(s);if(!(!o||!o[1]&&!o[2]&&!o[3]&&!o[4]||o[4]&&t.match(this.rules.other.unicodeAlphaNumeric))&&(!(o[1]||o[3])||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=0,c=o[0][0],u=t===c,h=c==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(h.lastIndex=0,e=e.slice(-1*s.length+n);(o=h.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r)continue;if(i=[...r].length,o[3]||o[4]){a+=i;continue}else if(o[5]||o[6]){if(n%3&&!((n+i)%3)){l+=i;continue}if(u)break}if(a-=i,a>0)continue;i=Math.min(i,i+a+l);let p=[...o[0]][0].length,f=s.slice(0,n+o.index+p+i);if(Math.min(n,i)%2){let g=f.slice(1,-1);return{type:"em",raw:f,text:g,tokens:this.lexer.inlineTokens(g)}}let m=f.slice(2,-2);return{type:"strong",raw:f,text:m,tokens:this.lexer.inlineTokens(m)}}}}codespan(s){let e=this.rules.inline.code.exec(s);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," "),o=this.rules.other.nonSpaceChar.test(t),n=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return o&&n&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(s){let e=this.rules.inline.br.exec(s);if(e)return{type:"br",raw:e[0]}}del(s,e,t=""){let o=this.rules.inline.delLDelim.exec(s);if(o&&(!o[1]||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=this.rules.inline.delRDelim;for(l.lastIndex=0,e=e.slice(-1*s.length+n);(o=l.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r||(i=[...r].length,i!==n))continue;if(o[3]||o[4]){a+=i;continue}if(a-=i,a>0)continue;i=Math.min(i,i+a);let c=[...o[0]][0].length,u=s.slice(0,n+o.index+c+i),h=u.slice(n,-n);return{type:"del",raw:u,text:h,tokens:this.lexer.inlineTokens(h)}}}}autolink(s){let e=this.rules.inline.autolink.exec(s);if(e){let t,o;return e[2]==="@"?(t=e[1],o="mailto:"+t):(t=e[1],o=t),{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}url(s){let e;if(e=this.rules.inline.url.exec(s)){let t,o;if(e[2]==="@")t=e[0],o="mailto:"+t;else{let n;do n=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(n!==e[0]);t=e[0],e[1]==="www."?o="http://"+e[0]:o=e[0]}return{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}inlineText(s){let e=this.rules.inline.text.exec(s);if(e){let t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:t}}}},et=class ka{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||ho,this.options.tokenizer=this.options.tokenizer||new Xn,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let t={other:Le,block:Wn.normal,inline:Ps.normal};this.options.pedantic?(t.block=Wn.pedantic,t.inline=Ps.pedantic):this.options.gfm&&(t.block=Wn.gfm,this.options.breaks?t.inline=Ps.breaks:t.inline=Ps.gfm),this.tokenizer.rules=t}static get rules(){return{block:Wn,inline:Ps}}static lex(e,t){return new ka(t).lex(e)}static lexInline(e,t){return new ka(t).inlineTokens(e)}lex(e){e=e.replace(Le.carriageReturn,` +`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(s){let e=this.rules.block.text.exec(s);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(s){let e=this.rules.inline.escape.exec(s);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(s){let e=this.rules.inline.tag.exec(s);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(s){let e=this.rules.inline.link.exec(s);if(e){let t=e[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&ch(s,e[1],t,this.rules))return;let o=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(o)){if(!this.rules.other.endAngleBracket.test(o))return;let i=qt(o.slice(0,-1),"\\");if((o.length-i.length)%2===0)return}else{let i=bw(e[2],"()");if(i===-2)return;if(i>-1){let a=(e[0].indexOf("!")===0?5:4)+e[1].length+i;e[2]=e[2].substring(0,i),e[0]=e[0].substring(0,a).trim(),e[3]=""}}let n=e[2],r="";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(n);i&&(n=i[1],r=i[3])}else r=e[3]?e[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(o)?n=n.slice(1):n=n.slice(1,-1)),lh(e,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(s,e){let t;if((t=this.rules.inline.reflink.exec(s))||(t=this.rules.inline.nolink.exec(s))){let o=t[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&ch(s,t[1],o,this.rules))return;let n=(t[2]||t[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=e[Vn(n)];if(!r){let i=t[0].charAt(0);return{type:"text",raw:i,text:i}}return lh(t,r,t[0],this.lexer,this.rules)}}emStrong(s,e,t=""){let o=this.rules.inline.emStrongLDelim.exec(s);if(!(!o||!o[1]&&!o[2]&&!o[3]&&!o[4]||o[4]&&t.match(this.rules.other.unicodeAlphaNumeric))&&(!(o[1]||o[3])||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=0,c=o[0][0],d=t===c,h=c==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(h.lastIndex=0,e=e.slice(-1*s.length+n);(o=h.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r)continue;if(i=[...r].length,o[3]||o[4]){a+=i;continue}else if(o[5]||o[6]){if(n%3&&!((n+i)%3)){l+=i;continue}if(d)break}if(a-=i,a>0)continue;i=Math.min(i,i+a+l);let p=[...o[0]][0].length,m=s.slice(0,n+o.index+p+i);if(Math.min(n,i)%2){let g=m.slice(1,-1);return{type:"em",raw:m,text:g,tokens:this.lexer.inlineTokens(g)}}let f=m.slice(2,-2);return{type:"strong",raw:m,text:f,tokens:this.lexer.inlineTokens(f)}}}}codespan(s){let e=this.rules.inline.code.exec(s);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," "),o=this.rules.other.nonSpaceChar.test(t),n=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return o&&n&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(s){let e=this.rules.inline.br.exec(s);if(e)return{type:"br",raw:e[0]}}del(s,e,t=""){let o=this.rules.inline.delLDelim.exec(s);if(o&&(!o[1]||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=this.rules.inline.delRDelim;for(l.lastIndex=0,e=e.slice(-1*s.length+n);(o=l.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r||(i=[...r].length,i!==n))continue;if(o[3]||o[4]){a+=i;continue}if(a-=i,a>0)continue;i=Math.min(i,i+a);let c=[...o[0]][0].length,d=s.slice(0,n+o.index+c+i),h=d.slice(n,-n);return{type:"del",raw:d,text:h,tokens:this.lexer.inlineTokens(h)}}}}autolink(s){let e=this.rules.inline.autolink.exec(s);if(e){let t,o;return e[2]==="@"?(t=e[1],o="mailto:"+t):(t=e[1],o=t),{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}url(s){let e;if(e=this.rules.inline.url.exec(s)){let t,o;if(e[2]==="@")t=e[0],o="mailto:"+t;else{let n;do n=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(n!==e[0]);t=e[0],e[1]==="www."?o="http://"+e[0]:o=e[0]}return{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}inlineText(s){let e=this.rules.inline.text.exec(s);if(e){let t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:t}}}},tt=class wa{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||co,this.options.tokenizer=this.options.tokenizer||new Yn,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let t={other:Le,block:Gn.normal,inline:Rs.normal};this.options.pedantic?(t.block=Gn.pedantic,t.inline=Rs.pedantic):this.options.gfm&&(t.block=Gn.gfm,this.options.breaks?t.inline=Rs.breaks:t.inline=Rs.gfm),this.tokenizer.rules=t}static get rules(){return{block:Gn,inline:Rs}}static lex(e,t){return new wa(t).lex(e)}static lexInline(e,t){return new wa(t).inlineTokens(e)}lex(e){e=e.replace(Le.carriageReturn,` `),this.blockTokens(e,this.tokens);for(let t=0;t(r=a.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let a=t.at(-1);r.raw.length===1&&a!==void 0?a.raw+=` `:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let a=t.at(-1);a?.type==="paragraph"||a?.type==="text"?(a.raw+=(a.raw.endsWith(` `)?"":` @@ -132,9 +132,9 @@ ${f}`,n=n.substring(0,n.length-m.text.length)+b.text;break}else if(p?.type==="li `+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):t.push(r),o=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let a=t.at(-1);a?.type==="text"?(a.raw+=(a.raw.endsWith(` `)?"":` `)+r.raw,a.text+=` -`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):t.push(r);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}linkInText(e){if(!e.includes("["))return!1;let t=this.tokenizer.rules.inline.link;for(let o of e.matchAll(this.tokenizer.rules.inline.blockSkip))if(t.test(o[0])&&e.charAt(o.index-1)!=="!")return!0;for(let o of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let n=o[0],r=n.lastIndexOf("[");if(!(n.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,Yn(n.slice(r+1,-1))))&&!(r>1&&this.linkInText(n.slice(1,r-1))))return!0}return!1}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let o=e;if(this.tokens.links&&e.includes("[")){let a=this.tokenizer.rules.inline.reflinkSearch,l=c=>{let u=c.lastIndexOf("[");if(!Object.hasOwn(this.tokens.links,Yn(c.slice(u+1,-1))))return c;if(u>1&&c.charAt(0)!=="!"){let h=c.slice(1,u-1);if(this.linkInText(h))return"["+h.replace(a,l)+"]["+"a".repeat(c.length-u-2)+"]"}return"["+"a".repeat(c.length-2)+"]"};o=o.replace(a,l)}o=o.replace(this.tokenizer.rules.inline.anyPunctuation,a=>"+".repeat(a.length)),o=o.replace(this.tokenizer.rules.inline.blockSkip,(a,l,c)=>{let u=c?c.length:0;return a.slice(0,u)+"["+"a".repeat(a.length-u-2)+"]"}),o=this.options.hooks?.emStrongMask?.call({lexer:this},o)??o;let n=!1,r="",i=1/0;for(;e;){if(e.length(a=c.call({lexer:this},e,t))?(e=e.substring(a.raw.length),t.push(a),!0):!1))continue;if(a=this.tokenizer.escape(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.tag(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.link(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(a.raw.length);let c=t.at(-1);a.type==="text"&&c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):t.push(a);continue}if(a=this.tokenizer.emStrong(e,o,r)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.codespan(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.br(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.del(e,o,r)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.autolink(e)){e=e.substring(a.raw.length),t.push(a);continue}if(!this.state.inLink&&(a=this.tokenizer.url(e))){e=e.substring(a.raw.length),t.push(a);continue}let l=e;if(this.options.extensions?.startInline){let c=1/0,u=e.slice(1),h;this.options.extensions.startInline.forEach(p=>{h=p.call({lexer:this},u),typeof h=="number"&&h>=0&&(c=Math.min(c,h))}),c<1/0&&c>=0&&(l=e.substring(0,c+1))}if(a=this.tokenizer.inlineText(l)){e=e.substring(a.raw.length),a.raw.slice(-1)!=="_"&&(r=a.raw.slice(-1)),n=!0;let c=t.at(-1);c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):t.push(a);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t="Infinite loop on byte: "+e;if(this.options.silent)console.error(t);else throw new Error(t)}},Jn=class{options;parser;constructor(s){this.options=s||ho}space(s){return""}code({text:s,lang:e,escaped:t}){let o=(e||"").match(Le.notSpaceStart)?.[0],n=s?s.replace(Le.endingNewline,"")+` -`:"";return o?'
                  '+(t?n:Ke(n,!0))+`
                  -`:"
                  "+(t?n:Ke(n,!0))+`
                  +`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):t.push(r);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}linkInText(e){if(!e.includes("["))return!1;let t=this.tokenizer.rules.inline.link;for(let o of e.matchAll(this.tokenizer.rules.inline.blockSkip))if(t.test(o[0])&&e.charAt(o.index-1)!=="!")return!0;for(let o of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let n=o[0],r=n.lastIndexOf("[");if(!(n.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,Vn(n.slice(r+1,-1))))&&!(r>1&&this.linkInText(n.slice(1,r-1))))return!0}return!1}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let o=e;if(this.tokens.links&&e.includes("[")){let a=this.tokenizer.rules.inline.reflinkSearch,l=c=>{let d=c.lastIndexOf("[");if(!Object.hasOwn(this.tokens.links,Vn(c.slice(d+1,-1))))return c;if(d>1&&c.charAt(0)!=="!"){let h=c.slice(1,d-1);if(this.linkInText(h))return"["+h.replace(a,l)+"]["+"a".repeat(c.length-d-2)+"]"}return"["+"a".repeat(c.length-2)+"]"};o=o.replace(a,l)}o=o.replace(this.tokenizer.rules.inline.anyPunctuation,a=>"+".repeat(a.length)),o=o.replace(this.tokenizer.rules.inline.blockSkip,(a,l,c)=>{let d=c?c.length:0;return a.slice(0,d)+"["+"a".repeat(a.length-d-2)+"]"}),o=this.options.hooks?.emStrongMask?.call({lexer:this},o)??o;let n=!1,r="",i=1/0;for(;e;){if(e.length(a=c.call({lexer:this},e,t))?(e=e.substring(a.raw.length),t.push(a),!0):!1))continue;if(a=this.tokenizer.escape(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.tag(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.link(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(a.raw.length);let c=t.at(-1);a.type==="text"&&c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):t.push(a);continue}if(a=this.tokenizer.emStrong(e,o,r)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.codespan(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.br(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.del(e,o,r)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.autolink(e)){e=e.substring(a.raw.length),t.push(a);continue}if(!this.state.inLink&&(a=this.tokenizer.url(e))){e=e.substring(a.raw.length),t.push(a);continue}let l=e;if(this.options.extensions?.startInline){let c=1/0,d=e.slice(1),h;this.options.extensions.startInline.forEach(p=>{h=p.call({lexer:this},d),typeof h=="number"&&h>=0&&(c=Math.min(c,h))}),c<1/0&&c>=0&&(l=e.substring(0,c+1))}if(a=this.tokenizer.inlineText(l)){e=e.substring(a.raw.length),a.raw.slice(-1)!=="_"&&(r=a.raw.slice(-1)),n=!0;let c=t.at(-1);c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):t.push(a);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t="Infinite loop on byte: "+e;if(this.options.silent)console.error(t);else throw new Error(t)}},Xn=class{options;parser;constructor(s){this.options=s||co}space(s){return""}code({text:s,lang:e,escaped:t}){let o=(e||"").match(Le.notSpaceStart)?.[0],n=s?s.replace(Le.endingNewline,"")+` +`:"";return o?'
                  '+(t?n:qe(n,!0))+`
                  +`:"
                  "+(t?n:qe(n,!0))+`
                  `}blockquote({tokens:s}){return`
                  ${this.parser.parse(s)}
                  `}html({text:s}){return s}def(s){return""}heading({tokens:s,depth:e}){return`${this.parser.parseInline(s)} @@ -150,8 +150,8 @@ ${this.parser.parse(s)} `}tablerow({text:s}){return` ${s} `}tablecell(s){let e=this.parser.parseInline(s.tokens),t=s.header?"th":"td";return(s.align?`<${t} align="${s.align}">`:`<${t}>`)+e+` -`}strong({tokens:s}){return`${this.parser.parseInline(s)}`}em({tokens:s}){return`${this.parser.parseInline(s)}`}codespan({text:s}){return`${Ke(s,!0)}`}br(s){return"
                  "}del({tokens:s}){return`${this.parser.parseInline(s)}`}link({href:s,title:e,text:t,tokens:o,autolink:n}){let r=n?Ke(t,!0):this.parser.parseInline(o),i=ch(s);if(i===null)return r;s=Ke(i,n);let a='
                  ",a}image({href:s,title:e,text:t,tokens:o}){o&&(t=this.parser.parseInline(o,this.parser.textRenderer));let n=ch(s);if(n===null)return Ke(t);s=n;let r=`${Ke(t)}{let i=n[r].flat(1/0);t=t.concat(this.walkTokens(i,e))}):n.tokens&&(t=t.concat(this.walkTokens(n.tokens,e)))}}return t}use(...s){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return s.forEach(t=>{let o={...t};if(o.async=this.defaults.async||o.async||!1,t.extensions&&(t.extensions.forEach(n=>{if(!n.name)throw new Error("extension name required");if("renderer"in n){let r=e.renderers[n.name];r?e.renderers[n.name]=function(...i){let a=n.renderer.apply(this,i);return a===!1&&(a=r.apply(this,i)),a}:e.renderers[n.name]=n.renderer}if("tokenizer"in n){if(!n.level||n.level!=="block"&&n.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let r=e[n.level];r?r.unshift(n.tokenizer):e[n.level]=[n.tokenizer],n.start&&(n.level==="block"?e.startBlock?e.startBlock.push(n.start):e.startBlock=[n.start]:n.level==="inline"&&(e.startInline?e.startInline.push(n.start):e.startInline=[n.start]))}"childTokens"in n&&n.childTokens&&(e.childTokens[n.name]=n.childTokens)}),o.extensions=e),t.renderer){let n=this.defaults.renderer||new Jn(this.defaults);for(let r in t.renderer){if(!(r in n))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let i=r,a=t.renderer[i],l=n[i];n[i]=(...c)=>{let u=a.apply(n,c);return u===!1&&(u=l.apply(n,c)),u||""}}o.renderer=n}if(t.tokenizer){let n=this.defaults.tokenizer||new Xn(this.defaults);for(let r in t.tokenizer){if(!(r in n))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let i=r,a=t.tokenizer[i],l=n[i];n[i]=(...c)=>{let u=a.apply(n,c);return u===!1&&(u=l.apply(n,c)),u}}o.tokenizer=n}if(t.hooks){let n=this.defaults.hooks||new Is;for(let r in t.hooks){if(!(r in n))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let i=r,a=t.hooks[i],l=n[i];Is.passThroughHooks.has(r)?n[i]=c=>{if(this.defaults.async&&Is.passThroughHooksRespectAsync.has(r))return(async()=>{let h=await a.call(n,c);return l.call(n,h)})();let u=a.call(n,c);return l.call(n,u)}:n[i]=(...c)=>{if(this.defaults.async)return(async()=>{let h=await a.apply(n,c);return h===!1&&(h=await l.apply(n,c)),h})();let u=a.apply(n,c);return u===!1&&(u=l.apply(n,c)),u}}o.hooks=n}if(t.walkTokens){let n=this.defaults.walkTokens,r=t.walkTokens;o.walkTokens=function(i){let a=[];return a.push(r.call(this,i)),n&&(a=a.concat(n.call(this,i))),a}}this.defaults={...this.defaults,...o}}),this}setOptions(s){return this.defaults={...this.defaults,...s},this}lexer(s,e){return et.lex(s,e??this.defaults)}parser(s,e){return tt.parse(s,e??this.defaults)}parseMarkdown(s){return(e,t)=>{let o={...t},n={...this.defaults,...o},r=this.onError(!!n.silent,!!n.async);if(this.defaults.async===!0&&o.async===!1)return r(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return r(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return r(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(n.hooks&&(n.hooks.options=n,n.hooks.block=s),n.async)return(async()=>{let i=n.hooks?await n.hooks.preprocess(e):e,a=await(n.hooks?await n.hooks.provideLexer(s):s?et.lex:et.lexInline)(i,n),l=n.hooks?await n.hooks.processAllTokens(a):a;n.walkTokens&&await Promise.all(this.walkTokens(l,n.walkTokens));let c=await(n.hooks?await n.hooks.provideParser(s):s?tt.parse:tt.parseInline)(l,n);return n.hooks?await n.hooks.postprocess(c):c})().catch(r);try{n.hooks&&(e=n.hooks.preprocess(e));let i=(n.hooks?n.hooks.provideLexer(s):s?et.lex:et.lexInline)(e,n);n.hooks&&(i=n.hooks.processAllTokens(i)),n.walkTokens&&this.walkTokens(i,n.walkTokens);let a=(n.hooks?n.hooks.provideParser(s):s?tt.parse:tt.parseInline)(i,n);return n.hooks&&(a=n.hooks.postprocess(a)),a}catch(i){return r(i)}}}onError(s,e){return t=>{if(t.message+=` -Please report this to https://github.com/markedjs/marked.`,s){let o="

                  An error occurred:

                  "+Ke(t.message+"",!0)+"
                  ";return e?Promise.resolve(o):o}if(e)return Promise.reject(t);throw t}}},po=new $w;ie.options=ie.setOptions=function(s){return po.setOptions(s),ie.defaults=po.defaults,mh(ie.defaults),ie};ie.getDefaults=xa;ie.defaults=ho;ie.use=Cw;ie.walkTokens=function(s,e){return po.walkTokens(s,e)};ie.parseInline=po.parseInline;ie.Parser=tt;ie.parser=tt.parse;ie.Renderer=Jn;ie.TextRenderer=Aa;ie.Lexer=et;ie.lexer=et.lex;ie.Tokenizer=Xn;ie.Hooks=Is;ie.parse=ie;jS=ie.options,US=ie.setOptions,GS=ie.walkTokens,WS=ie.parseInline,VS=tt.parse,YS=et.lex});var Eh=we((o3,Mw)=>{Mw.exports=`
                  ×
                  [ WHAT'S NEW ]

                  Kute

                  View on GitHub
                  Done
                  `});var Ch={};function $h(s,e){return s.localeCompare(e,void 0,{numeric:!0,sensitivity:"case",caseFirst:"upper"})}function Ra(s){let e=La.get(s);return e||(e=fetch(`${Tw}/releases?per_page=1&page=${s}`).then(async t=>{if(!t.ok)throw new Error(`github ${t.status}`);let o=await t.json(),n=(t.headers.get("link")??"").match(/[?&]page=(\d+)>; rel="last"/);n?mo=Number(n[1]):o.length>0&&(mo=Math.max(mo??0,s));let[r]=o;return r?{tag:String(r.tag_name),body:String(r.body??""),date:String(r.published_at??"").slice(0,10)}:null}).catch(()=>(La.delete(s),null)),La.set(s,e)),e}async function Aw(s){let e=await Ra(1);if(!e||e.tag===s||mo===null)return 1;let t=2,o=mo;for(;t<=o;){let n=Math.floor((t+o)/2),r=await Ra(n);if(!r)return 1;let i=$h(r.tag,s);if(i===0)return n;i>0?t=n+1:o=n-1}return 1}var Tw,La,mo,Pa=w(()=>{"use strict";Sh();F();Tw="https://api.github.com/repos/NullDev/Kute",La=new Map,mo=null;(async()=>{async function s(n){let[r,i]=await Promise.all([Promise.resolve().then(()=>ue(Eh(),1)),Promise.resolve().then(()=>ue(An(),1))]),a=document.createElement("div");a.style=` +`}strong({tokens:s}){return`${this.parser.parseInline(s)}`}em({tokens:s}){return`${this.parser.parseInline(s)}`}codespan({text:s}){return`${qe(s,!0)}`}br(s){return"
                  "}del({tokens:s}){return`${this.parser.parseInline(s)}`}link({href:s,title:e,text:t,tokens:o,autolink:n}){let r=n?qe(t,!0):this.parser.parseInline(o),i=rh(s);if(i===null)return r;s=qe(i,n);let a='
                  ",a}image({href:s,title:e,text:t,tokens:o}){o&&(t=this.parser.parseInline(o,this.parser.textRenderer));let n=rh(s);if(n===null)return qe(t);s=n;let r=`${qe(t)}{let i=n[r].flat(1/0);t=t.concat(this.walkTokens(i,e))}):n.tokens&&(t=t.concat(this.walkTokens(n.tokens,e)))}}return t}use(...s){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return s.forEach(t=>{let o={...t};if(o.async=this.defaults.async||o.async||!1,t.extensions&&(t.extensions.forEach(n=>{if(!n.name)throw new Error("extension name required");if("renderer"in n){let r=e.renderers[n.name];r?e.renderers[n.name]=function(...i){let a=n.renderer.apply(this,i);return a===!1&&(a=r.apply(this,i)),a}:e.renderers[n.name]=n.renderer}if("tokenizer"in n){if(!n.level||n.level!=="block"&&n.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let r=e[n.level];r?r.unshift(n.tokenizer):e[n.level]=[n.tokenizer],n.start&&(n.level==="block"?e.startBlock?e.startBlock.push(n.start):e.startBlock=[n.start]:n.level==="inline"&&(e.startInline?e.startInline.push(n.start):e.startInline=[n.start]))}"childTokens"in n&&n.childTokens&&(e.childTokens[n.name]=n.childTokens)}),o.extensions=e),t.renderer){let n=this.defaults.renderer||new Xn(this.defaults);for(let r in t.renderer){if(!(r in n))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let i=r,a=t.renderer[i],l=n[i];n[i]=(...c)=>{let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d||""}}o.renderer=n}if(t.tokenizer){let n=this.defaults.tokenizer||new Yn(this.defaults);for(let r in t.tokenizer){if(!(r in n))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let i=r,a=t.tokenizer[i],l=n[i];n[i]=(...c)=>{let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d}}o.tokenizer=n}if(t.hooks){let n=this.defaults.hooks||new Ps;for(let r in t.hooks){if(!(r in n))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let i=r,a=t.hooks[i],l=n[i];Ps.passThroughHooks.has(r)?n[i]=c=>{if(this.defaults.async&&Ps.passThroughHooksRespectAsync.has(r))return(async()=>{let h=await a.call(n,c);return l.call(n,h)})();let d=a.call(n,c);return l.call(n,d)}:n[i]=(...c)=>{if(this.defaults.async)return(async()=>{let h=await a.apply(n,c);return h===!1&&(h=await l.apply(n,c)),h})();let d=a.apply(n,c);return d===!1&&(d=l.apply(n,c)),d}}o.hooks=n}if(t.walkTokens){let n=this.defaults.walkTokens,r=t.walkTokens;o.walkTokens=function(i){let a=[];return a.push(r.call(this,i)),n&&(a=a.concat(n.call(this,i))),a}}this.defaults={...this.defaults,...o}}),this}setOptions(s){return this.defaults={...this.defaults,...s},this}lexer(s,e){return tt.lex(s,e??this.defaults)}parser(s,e){return ot.parse(s,e??this.defaults)}parseMarkdown(s){return(e,t)=>{let o={...t},n={...this.defaults,...o},r=this.onError(!!n.silent,!!n.async);if(this.defaults.async===!0&&o.async===!1)return r(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return r(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return r(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(n.hooks&&(n.hooks.options=n,n.hooks.block=s),n.async)return(async()=>{let i=n.hooks?await n.hooks.preprocess(e):e,a=await(n.hooks?await n.hooks.provideLexer(s):s?tt.lex:tt.lexInline)(i,n),l=n.hooks?await n.hooks.processAllTokens(a):a;n.walkTokens&&await Promise.all(this.walkTokens(l,n.walkTokens));let c=await(n.hooks?await n.hooks.provideParser(s):s?ot.parse:ot.parseInline)(l,n);return n.hooks?await n.hooks.postprocess(c):c})().catch(r);try{n.hooks&&(e=n.hooks.preprocess(e));let i=(n.hooks?n.hooks.provideLexer(s):s?tt.lex:tt.lexInline)(e,n);n.hooks&&(i=n.hooks.processAllTokens(i)),n.walkTokens&&this.walkTokens(i,n.walkTokens);let a=(n.hooks?n.hooks.provideParser(s):s?ot.parse:ot.parseInline)(i,n);return n.hooks&&(a=n.hooks.postprocess(a)),a}catch(i){return r(i)}}}onError(s,e){return t=>{if(t.message+=` +Please report this to https://github.com/markedjs/marked.`,s){let o="

                  An error occurred:

                  "+qe(t.message+"",!0)+"
                  ";return e?Promise.resolve(o):o}if(e)return Promise.reject(t);throw t}}},lo=new kw;ie.options=ie.setOptions=function(s){return lo.setOptions(s),ie.defaults=lo.defaults,dh(ie.defaults),ie};ie.getDefaults=ya;ie.defaults=co;ie.use=yw;ie.walkTokens=function(s,e){return lo.walkTokens(s,e)};ie.parseInline=lo.parseInline;ie.Parser=ot;ie.parser=ot.parse;ie.Renderer=Xn;ie.TextRenderer=Ta;ie.Lexer=tt;ie.lexer=tt.lex;ie.Tokenizer=Yn;ie.Hooks=Ps;ie.parse=ie;HS=ie.options,OS=ie.setOptions,DS=ie.walkTokens,FS=ie.parseInline,qS=ot.parse,KS=tt.lex});var kh=we((XS,xw)=>{xw.exports=`
                  ×
                  [ WHAT'S NEW ]

                  Kute

                  View on GitHub
                  Done
                  `});var xh={};function yh(s,e){return s.localeCompare(e,void 0,{numeric:!0,sensitivity:"case",caseFirst:"upper"})}function La(s){let e=Aa.get(s);return e||(e=fetch(`${Sw}/releases?per_page=1&page=${s}`).then(async t=>{if(!t.ok)throw new Error(`github ${t.status}`);let o=await t.json(),n=(t.headers.get("link")??"").match(/[?&]page=(\d+)>; rel="last"/);n?uo=Number(n[1]):o.length>0&&(uo=Math.max(uo??0,s));let[r]=o;return r?{tag:String(r.tag_name),body:String(r.body??""),date:String(r.published_at??"").slice(0,10)}:null}).catch(()=>(Aa.delete(s),null)),Aa.set(s,e)),e}async function Ew(s){let e=await La(1);if(!e||e.tag===s||uo===null)return 1;let t=2,o=uo;for(;t<=o;){let n=Math.floor((t+o)/2),r=await La(n);if(!r)return 1;let i=yh(r.tag,s);if(i===0)return n;i>0?t=n+1:o=n-1}return 1}var Sw,Aa,uo,Ra=w(()=>{"use strict";wh();D();Sw="https://api.github.com/repos/NullDev/Kute",Aa=new Map,uo=null;(async()=>{async function s(n){let[r,i]=await Promise.all([Promise.resolve().then(()=>ue(kh(),1)),Promise.resolve().then(()=>ue(Tn(),1))]),a=document.createElement("div");a.style=` position: fixed; top: 0; left: 0; @@ -162,17 +162,17 @@ Please report this to https://github.com/markedjs/marked.`,s){let o="

                  An error display: flex; justify-content: center; align-items: center; - `,document.body.append(a);let l=document.createElement("div");l.id="changelogPopupHost",a.append(l);let c=l.attachShadow({mode:"open"}),u=document.createElement("div");for(u.innerHTML=r.default;u.firstChild;)c.append(u.firstChild);let h=_=>c.getElementById(_),p=h("changelogLogo");p&&(p.src=i.default);let f=h("changelogContent");f&&(f.textContent="Loading release notes...");let m=h("changelogVersion");m&&(m.textContent=n);let g=new AbortController,b=()=>{g.abort(),a.remove()};for(let _ of["changelogClose","changelogDone"]){let H=h(_);H&&(H.onclick=b)}a.addEventListener("mousedown",_=>{_.target===a&&b()});let v=1,k=0,E=()=>{let _=mo??1,H=h("changelogPosition");H&&(H.textContent=`${v} / ${_}`),h("changelogNewer")?.classList.toggle("changelogDisabled",v<=1),h("changelogOlder")?.classList.toggle("changelogDisabled",v>=_);let G=h("changelogNav");G&&(G.style.display=_>1?"":"none")},L=async _=>{v=Math.min(Math.max(_,1),mo??1);let H=++k;E();let G=await Ra(v);if(H!==k||!f)return;if(!G){f.innerHTML="Could not load the release notes. View them on GitHub instead.";let be=h("changelogGithub");be&&(be.onclick=()=>window.chrome.webview.postMessage(`open-url, https://github.com/NullDev/Kute/releases/tag/${n}`));return}let J=`https://github.com/NullDev/Kute/releases/tag/${G.tag}`;m&&(m.textContent=G.tag);let B=h("changelogEyebrow");B&&(B.textContent=G.tag===n?"[ WHAT'S NEW ]":`[ RELEASED ${G.date} ]`);let re=h("changelogGithub");re&&(re.onclick=()=>window.chrome.webview.postMessage(`open-url, ${J}`));let je=await ie.parse(G.body||"No release notes found.",{breaks:!0,async:!0});if(H===k){f.innerHTML=je,h("changelogContentWrapper")?.scrollTo(0,0);for(let be of f.querySelectorAll("a"))be.getAttribute("href")?.startsWith("#")&&be.setAttribute("href",J+be.getAttribute("href")),be.setAttribute("target","_blank"),be.setAttribute("rel","noopener")}},x=h("changelogOlder");x&&(x.onclick=()=>L(v+1));let $=h("changelogNewer");$&&($.onclick=()=>L(v-1)),document.addEventListener("keydown",_=>{if(_.key==="Escape")b();else if(_.key==="ArrowLeft")L(v-1);else if(_.key==="ArrowRight")L(v+1);else return;_.stopPropagation()},{signal:g.signal,capture:!0});let I=await Aw(n);g.signal.aborted||await L(I)}let e=d?.version,t=window.localStorage.getItem("kute_lastSeenVersion"),o=t!==null&&$h(e,t)>0;window.localStorage.setItem("kute_lastSeenVersion",e),d?.settings.data?.showChangelog&&t&&e&&o&&await s(e),d.showChangelogPopup=s})()});var Na={};A(Na,{default:()=>Lw});var Ia,Lw,_a=w(()=>{"use strict";Ia=class{tracked=new WeakSet;draft=null;observer=null;pending=null;sentAt=0;constructor(){document.addEventListener("focusin",e=>{let t=e.target;t instanceof HTMLTextAreaElement&&t.classList.contains("conversation-input")&&this.track(t)})}friendOf(e){return e.closest(".conversation-root")?.querySelector(".conversation-header-name")?.textContent??""}track(e){this.tracked.has(e)||(this.tracked.add(e),e.addEventListener("input",()=>this.save(e)),e.addEventListener("keydown",t=>{t.key==="Enter"&&!t.shiftKey&&!t.isComposing&&(this.sentAt=performance.now())}),e.closest(".conversation-compose")?.querySelector(".conversation-send-button")?.addEventListener("click",()=>{this.sentAt=performance.now()}),e.value&&this.save(e))}save(e){if(!e.value){this.stop();return}if(this.draft={input:e,friend:this.friendOf(e),text:e.value,start:e.selectionStart,end:e.selectionEnd},this.observer)return;let t=e.closest(".conversation-root");t&&(this.observer=new MutationObserver(()=>this.schedule()),this.observer.observe(t,{childList:!0,subtree:!0,characterData:!0}))}schedule(){this.pending===null&&(this.pending=setTimeout(()=>this.check(),0))}check(){this.pending=null;let{draft:e}=this;if(!e)return;let{input:t}=e;if(!t.isConnected||this.friendOf(t)!==e.friend){this.stop();return}if(t.value){this.save(t);return}if(performance.now()-this.sentAt<250){this.stop();return}t.value=e.text,document.activeElement===t&&t.setSelectionRange(e.start,e.end),t.dispatchEvent(new Event("input",{bubbles:!0}))}stop(){this.draft=null,this.observer?.disconnect(),this.observer=null}},Lw=new Ia});var Th,Mh=w(()=>{Th='

                  Chat Logs

                  Copy
                  Clear
                  Close
                  '});var za={};A(za,{default:()=>Ow});function _w(s){if(!s.hasAttribute("data-tab"))return"kill";let e=s.querySelector(".chatItem"),t=e?.querySelector(".chatMsg");return!e||!(t instanceof HTMLElement)||e.querySelector(".tradeMsg")?"event":e.firstChild!==t?"player":t.style.color?"server":"event"}function Bw(s){let e="",t=!1,o=[];for(let n of s.querySelector(".chatMsg")?.childNodes??[]){if(!(n instanceof HTMLImageElement)){e+=n.textContent??"";continue}let r=n.getAttribute("src")??"";r.includes("headshot")?o.push("headshot"):r.includes("wallbang")?o.push("wallbang"):t||(t=!0,e+=" \u25B8 ")}return o.length>0?`${e.trim()} (${o.join(", ")})`:e}function Ah(s){let e=new Date(s);return[e.getHours(),e.getMinutes(),e.getSeconds()].map(t=>String(t).padStart(2,"0")).join(":")}function zw(){try{let s=JSON.parse(window.sessionStorage.getItem(Lh)??"[]");return Array.isArray(s)?s.slice(-Zn):[]}catch{return[]}}function Hw(){try{let{mode:s,map:e}=window.getGameActivity();if(s&&e)return`${s} on ${e}`}catch{}return"New lobby"}var Zn,Lh,Pw,Iw,Nw,Ba,Ow,Ha=w(()=>{"use strict";Mh();F();No();Zn=2e3,Lh="kute_chat_logs",Pw="\u200E",Iw=[["player","Players"],["kill","Kills"],["event","Events"],["server","Server"]],Nw={player:"",kill:"clKill",event:"clEvent",server:"clServer",lobby:"clLobby"};Ba=class{constructor(){this.entries=zw(),this.entries.length>0&&this.entries[this.entries.length-1].cat!=="lobby"&&this.entries.push({t:Date.now(),cat:"lobby",text:Hw()}),this.shown=new Set,this.view=null,this.stick=!0,this.observer=new MutationObserver(e=>{for(let t of e)for(let o of t.addedNodes)this.add(o)}),this.save=()=>{try{window.sessionStorage.setItem(Lh,JSON.stringify(this.entries))}catch{}},d.chatLogs={open:()=>this.open(),toggle:()=>this.toggle()},d.settings.toggleChatLogs=e=>this.setEnabled(e),this.setEnabled(!0)}setEnabled(e){if(this.observer.disconnect(),window.removeEventListener("pagehide",this.save),!e){this.close();return}let t=document.getElementById("chatList");if(t){for(let o of t.children)this.add(o);this.observer.observe(t,{childList:!0}),window.addEventListener("pagehide",this.save)}}add(e){if(!(e instanceof HTMLElement))return;let t=_w(e),o=(t==="kill"?Bw(e):e.textContent??"").replaceAll(Pw,"").trim();if(!o)return;let n={t:Date.now(),cat:t,text:o};if(this.entries.push(n),this.entries.length>Zn&&this.entries.splice(0,this.entries.length-Zn),!this.view||!this.visible(n))return;let{list:r}=this.view;r.querySelector(".clEmpty")?.remove(),r.append(this.row(n)),r.childElementCount>Zn&&r.firstElementChild?.remove(),this.stick&&(r.scrollTop=1e9)}visible(e){let t=this.view?.search.value.trim().toLowerCase()??"";return e.cat==="lobby"?this.shown.size===0&&!t:this.shown.size>0&&!this.shown.has(e.cat)?!1:!t||e.text.toLowerCase().includes(t)}row(e){let t=document.createElement("div");t.className=`clRow ${Nw[e.cat]??""}`;let o=document.createElement("span");return o.className="clTime",o.textContent=Ah(e.t),t.append(o,e.text),t}render(){if(!this.view)return;let e=this.entries.filter(t=>this.visible(t)).map(t=>this.row(t));if(e.length===0){let t=document.createElement("div");t.className="clEmpty",t.textContent=this.entries.length===0?"Nothing in the chat yet":"No line matches",e.push(t)}this.view.list.replaceChildren(...e),this.view.list.scrollTop=1e9,this.stick=!0,this.renderFilters()}renderFilters(){if(!this.view)return;let e=(n,r,i)=>{let a=document.createElement("div");return a.className=`clFilter${r?" clOn":""}`,a.textContent=n,a.onclick=i,a},t=e("All",this.shown.size===0,()=>{this.shown.clear(),this.render()}),o=Iw.map(([n,r])=>e(r,this.shown.has(n),()=>{this.shown.has(n)?this.shown.delete(n):this.shown.add(n),this.render()}));this.view.shadow.querySelector("#clFilters").replaceChildren(t,...o)}open(){if(this.view)return;document.pointerLockElement&&document.exitPointerLock();let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=Th;let n=l=>o.querySelector(`#${l}`),r=n("clList"),i=n("clSearch");this.view={overlay:e,shadow:o,list:r,search:i};let a=gt().chatLogs;n("clHint").textContent=`${a?`${a.name} opens and closes this. `:""}Select lines and copy with Ctrl+C`,e.addEventListener("click",l=>{l.target===e&&this.close()});for(let l of["keydown","keyup","keypress"])t.addEventListener(l,c=>{let u=c;l==="keydown"&&!u.repeat&&(u.key==="Escape"||cs(u,"chatLogs"))&&this.close(),c.stopPropagation()});r.addEventListener("scroll",()=>{this.stick=r.scrollTop+r.clientHeight>=r.scrollHeight-30},{passive:!0}),i.addEventListener("input",()=>this.render()),n("clCopy").onclick=()=>{let l=this.entries.filter(c=>this.visible(c)).map(c=>`${Ah(c.t)} ${c.text}`).join(` -`);navigator.clipboard.writeText(l).then(()=>d.showNotification("Chat log copied",!1,2),()=>d.showNotification("Could not copy the chat log",!1,3))},n("clClear").onclick=()=>{this.entries=[],this.save(),this.render()},n("clClose").onclick=()=>this.close(),document.body.append(e),this.render(),i.focus()}close(){this.view?.overlay.remove(),this.view=null}toggle(){this.view?this.close():this.open()}},Ow=new Ba});var Fa={};A(Fa,{default:()=>qw});function Dw(s){return s.split(";").map(e=>e.trim()).filter(e=>{let t=e.split(":")[0]?.trim().toLowerCase();return!!t&&e.includes(":")&&Fw.has(t)}).join(";")}var Fw,Oa,Rh,qw,Da=w(()=>{"use strict";F();Un();Nt();Fw=new Set(["background","background-image","background-color","background-clip","-webkit-background-clip","background-size","background-position","color","-webkit-text-fill-color","-webkit-text-stroke","text-shadow","text-decoration","filter","opacity","animation"]);Oa=class{constructor(){this.styles={},this.fetched={},this.watching=!1,this.decorator=e=>this.restyle(e),d.settings.toggleClanColors=e=>this.toggle(e),this.load()}toggle(e){if(e){Object.keys(this.fetched).length>0?this.apply(this.fetched):this.load();return}ht.remove(this.decorator),this.watching=!1,this.styles={};for(let t of document.querySelectorAll("[data-kute-clan]"))t.setAttribute("style",t.getAttribute("data-kute-style")??""),t.removeAttribute("data-kute-clan"),t.removeAttribute("data-kute-style")}async load(){let e=await he.request("/meta");typeof e?.clanTagColors=="object"&&e.clanTagColors!==null&&(this.fetched=e.clanTagColors),d.settings.data.clanColors!==!1&&this.apply(this.fetched)}apply(e){if(!(typeof e!="object"||e===null)){this.styles={};for(let[t,o]of Object.entries(e)){if(typeof o!="string"||t.length===0||t.length>16)continue;let n=Dw(o);n&&(this.styles[t]=n)}Object.keys(this.styles).length!==0&&(this.watching?ht.refresh():ht.add(this.decorator),this.watching=!0)}}restyle(e){let t=Rs(e.element);if(!t)return;let o=this.styles[t.tag];!o||t.span.getAttribute("data-kute-clan")===t.tag||(t.span.hasAttribute("data-kute-style")||t.span.setAttribute("data-kute-style",t.span.getAttribute("style")??""),t.span.setAttribute("style",o),t.span.setAttribute("data-kute-clan",t.tag))}},Rh=new Oa;d.clanColors=Rh;qw=Rh});var Ph=we((p3,Kw)=>{Kw.exports='

                  Custom Sky

                  Replaces the sky of every map. It applies from the next match
                  Gradient
                  Image
                  Open folder
                  Refresh
                  Put PNG, JPG or WEBP images into Documents\\kute\\skies
                  Done
                  '});var Ka={};A(Ka,{default:()=>Ww});var jw,Ih,Uw,Gw,qa,Ww,ja=w(()=>{"use strict";F();jw={mode:"gradient",zenith:"#1E5AA8",horizon:"#9FD0F0",image:""},Ih="preset:",Uw=[["Vaporwave","#ff00aa","#00ffcc"],["Kute","#0b2e3a","#35e0e8"],["Sunset","#2b1055","#ff8a4c"],["Midnight","#03040f","#243b73"],["Toxic","#0a2a12","#a6ff3b"],["Blood Moon","#120006","#b3122e"],["Cotton Candy","#8fb8ff","#ffc2e2"]],Gw={starfield:"Starfield",aurora:"Aurora",nebula:"Nebula",synthwave:"Synthwave",sunset:"Sunset",candy:"Cotton Clouds"},qa=class{constructor(){d.customSky={showOptions:()=>this.showOptions()}}get config(){return{...jw,...d.settings.data.customSkyConfig}}saveConfig(e){d.settings.data.customSkyConfig=e,window.chrome.webview.postMessage(`set-config-json customSkyConfig ${JSON.stringify(e)}`)}listImages(){return new Promise(e=>{let t=0,o=n=>{Array.isArray(n.data?.skies)&&(window.chrome.webview.removeEventListener("message",o),clearTimeout(t),e({files:n.data.skies,presets:Array.isArray(n.data.skyPresets)?n.data.skyPresets:[]}))};t=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",o),e({files:[],presets:[]})},3e3),window.chrome.webview.addEventListener("message",o),window.chrome.webview.postMessage("sky-list")})}async showOptions(){let e=await Promise.resolve().then(()=>ue(Ph(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=i("skZenith"),l=i("skHorizon"),c=i("skImage"),u=()=>{i("skModeGradient").classList.toggle("active",t.mode==="gradient"),i("skModeImage").classList.toggle("active",t.mode==="image"),i("skGradientPane").hidden=t.mode!=="gradient",i("skImagePane").hidden=t.mode!=="image",i("skPreview").style.background=`linear-gradient(${t.zenith}, ${t.horizon})`},h=async()=>{let{files:g,presets:b}=await this.listImages(),v=(E,L)=>{let x=document.createElement("optgroup");return x.label=E,x.append(...L.map(([$,I])=>new Option(I,$))),x},k=[...b.map(E=>Ih+E),...g];c.replaceChildren(...b.length?[v("Kute",b.map(E=>[Ih+E,Gw[E]??E]))]:[],...g.length?[v("Your images",g.map(E=>[E,E]))]:[]),k.length>0&&!k.includes(t.image)&&(t.image=k[0]),c.value=t.image,c.disabled=k.length===0,i("skImageHint").textContent=g.length===0?"Add your own: put PNG, JPG or WEBP images into Documents\\kute\\skies, then press Refresh":"Put PNG, JPG or WEBP images into Documents\\kute\\skies"},p=i("skSwatches");for(let[g,b,v]of Uw){let k=document.createElement("div");k.className="skSwatch",k.title=g,k.style.background=`linear-gradient(${b}, ${v})`,k.onclick=()=>{t.zenith=b,t.horizon=v,a.value=b,l.value=v,u()},p.append(k)}a.value=t.zenith.toLowerCase(),l.value=t.horizon.toLowerCase(),a.oninput=()=>{t.zenith=a.value,u()},l.oninput=()=>{t.horizon=l.value,u()},c.onchange=()=>{t.image=c.value},i("skModeGradient").onclick=()=>{t.mode="gradient",u()},i("skModeImage").onclick=()=>{t.mode="image",u()},i("skOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, skies"),i("skRefresh").onclick=()=>h();let f=new AbortController,m=()=>{f.abort(),o.remove(),this.saveConfig(t)};i("skDone").onclick=m,o.addEventListener("mousedown",g=>{g.target===o&&m()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),m())},{signal:f.signal,capture:!0}),u(),document.body.append(o),await h()}},Ww=new qa});var _h,Nh=w(()=>{_h='

                  Diagnostics Report

                  These are all the files that will be included. You can choose what to exclude, but keeping all of them is recommended.
                  Collecting...
                  Close
                  Save dump
                  '});var zh={};A(zh,{createCodeEditor:()=>Bh,createEditorView:()=>fo,highlight:()=>er,languageFor:()=>Ua});function er(s,e="js"){if(e==="text")return Qn(s);let t=e==="css",o="",n=0;for(let r of s.matchAll(t?Zw:Jw)){let i=r.index??0,[a]=r,l="";if(t){let[,c,u,h,p,f]=r;if(c)l="c";else if(u)l="s";else if(h)l="k";else if(p)l="n";else if(f){let m=i+f.length;s[m]==="("?l="f":(f.startsWith("--")||Qw(s,m))&&(l="l")}}else{let[,c,u,h,p]=r;c?l="c":u?l=e==="json"&&/^\s*:/.test(s.slice(i+a.length,i+a.length+20))?"p":"s":h?l="n":p&&(Yw.has(p)?l="k":Xw.has(p)?l="l":/^\s*\(/.test(s.slice(i+p.length,i+p.length+40))&&(l="f"))}l&&(o+=Qn(s.slice(n,i))+`${Qn(a)}`,n=i+a.length)}return o+Qn(s.slice(n))}function Bh(s,e,{onSave:t,onDirtyChange:o,onChange:n,language:r="js"}){s.innerHTML=`
                  -
                  `;let i=s.querySelector(".editorGutter"),a=s.querySelector("pre"),l=s.querySelector("code"),c=s.querySelector("textarea");c.value=e;let u=e,h=!1,p=0,f=0,m=()=>{a.scrollTop=c.scrollTop,a.scrollLeft=c.scrollLeft,i.scrollTop=c.scrollTop},g=()=>{f=0;let{value:k}=c;l.innerHTML=`${er(k,r)} + `,document.body.append(a);let l=document.createElement("div");l.id="changelogPopupHost",a.append(l);let c=l.attachShadow({mode:"open"}),d=document.createElement("div");for(d.innerHTML=r.default;d.firstChild;)c.append(d.firstChild);let h=_=>c.getElementById(_),p=h("changelogLogo");p&&(p.src=i.default);let m=h("changelogContent");m&&(m.textContent="Loading release notes...");let f=h("changelogVersion");f&&(f.textContent=n);let g=new AbortController,b=()=>{g.abort(),a.remove()};for(let _ of["changelogClose","changelogDone"]){let H=h(_);H&&(H.onclick=b)}a.addEventListener("mousedown",_=>{_.target===a&&b()});let v=1,k=0,E=()=>{let _=uo??1,H=h("changelogPosition");H&&(H.textContent=`${v} / ${_}`),h("changelogNewer")?.classList.toggle("changelogDisabled",v<=1),h("changelogOlder")?.classList.toggle("changelogDisabled",v>=_);let G=h("changelogNav");G&&(G.style.display=_>1?"":"none")},L=async _=>{v=Math.min(Math.max(_,1),uo??1);let H=++k;E();let G=await La(v);if(H!==k||!m)return;if(!G){m.innerHTML="Could not load the release notes. View them on GitHub instead.";let be=h("changelogGithub");be&&(be.onclick=()=>window.chrome.webview.postMessage(`open-url, https://github.com/NullDev/Kute/releases/tag/${n}`));return}let J=`https://github.com/NullDev/Kute/releases/tag/${G.tag}`;f&&(f.textContent=G.tag);let B=h("changelogEyebrow");B&&(B.textContent=G.tag===n?"[ WHAT'S NEW ]":`[ RELEASED ${G.date} ]`);let re=h("changelogGithub");re&&(re.onclick=()=>window.chrome.webview.postMessage(`open-url, ${J}`));let je=await ie.parse(G.body||"No release notes found.",{breaks:!0,async:!0});if(H===k){m.innerHTML=je,h("changelogContentWrapper")?.scrollTo(0,0);for(let be of m.querySelectorAll("a"))be.getAttribute("href")?.startsWith("#")&&be.setAttribute("href",J+be.getAttribute("href")),be.setAttribute("target","_blank"),be.setAttribute("rel","noopener")}},x=h("changelogOlder");x&&(x.onclick=()=>L(v+1));let $=h("changelogNewer");$&&($.onclick=()=>L(v-1)),document.addEventListener("keydown",_=>{if(_.key==="Escape")b();else if(_.key==="ArrowLeft")L(v-1);else if(_.key==="ArrowRight")L(v+1);else return;_.stopPropagation()},{signal:g.signal,capture:!0});let I=await Ew(n);g.signal.aborted||await L(I)}let e=u?.version,t=window.localStorage.getItem("kute_lastSeenVersion"),o=t!==null&&yh(e,t)>0;window.localStorage.setItem("kute_lastSeenVersion",e),u?.settings.data?.showChangelog&&t&&e&&o&&await s(e),u.showChangelogPopup=s})()});var Ia={};A(Ia,{default:()=>$w});var Pa,$w,Na=w(()=>{"use strict";Pa=class{tracked=new WeakSet;draft=null;observer=null;pending=null;sentAt=0;constructor(){document.addEventListener("focusin",e=>{let t=e.target;t instanceof HTMLTextAreaElement&&t.classList.contains("conversation-input")&&this.track(t)})}friendOf(e){return e.closest(".conversation-root")?.querySelector(".conversation-header-name")?.textContent??""}track(e){this.tracked.has(e)||(this.tracked.add(e),e.addEventListener("input",()=>this.save(e)),e.addEventListener("keydown",t=>{t.key==="Enter"&&!t.shiftKey&&!t.isComposing&&(this.sentAt=performance.now())}),e.closest(".conversation-compose")?.querySelector(".conversation-send-button")?.addEventListener("click",()=>{this.sentAt=performance.now()}),e.value&&this.save(e))}save(e){if(!e.value){this.stop();return}if(this.draft={input:e,friend:this.friendOf(e),text:e.value,start:e.selectionStart,end:e.selectionEnd},this.observer)return;let t=e.closest(".conversation-root");t&&(this.observer=new MutationObserver(()=>this.schedule()),this.observer.observe(t,{childList:!0,subtree:!0,characterData:!0}))}schedule(){this.pending===null&&(this.pending=setTimeout(()=>this.check(),0))}check(){this.pending=null;let{draft:e}=this;if(!e)return;let{input:t}=e;if(!t.isConnected||this.friendOf(t)!==e.friend){this.stop();return}if(t.value){this.save(t);return}if(performance.now()-this.sentAt<250){this.stop();return}t.value=e.text,document.activeElement===t&&t.setSelectionRange(e.start,e.end),t.dispatchEvent(new Event("input",{bubbles:!0}))}stop(){this.draft=null,this.observer?.disconnect(),this.observer=null}},$w=new Pa});var Eh,Sh=w(()=>{Eh='

                  Chat Logs

                  Copy
                  Clear
                  Close
                  '});var Ba={};A(Ba,{default:()=>Nw});function Lw(s){if(!s.hasAttribute("data-tab"))return"kill";let e=s.querySelector(".chatItem"),t=e?.querySelector(".chatMsg");return!e||!(t instanceof HTMLElement)||e.querySelector(".tradeMsg")?"event":e.firstChild!==t?"player":t.style.color?"server":"event"}function Rw(s){let e="",t=!1,o=[];for(let n of s.querySelector(".chatMsg")?.childNodes??[]){if(!(n instanceof HTMLImageElement)){e+=n.textContent??"";continue}let r=n.getAttribute("src")??"";r.includes("headshot")?o.push("headshot"):r.includes("wallbang")?o.push("wallbang"):t||(t=!0,e+=" \u25B8 ")}return o.length>0?`${e.trim()} (${o.join(", ")})`:e}function $h(s){let e=new Date(s);return[e.getHours(),e.getMinutes(),e.getSeconds()].map(t=>String(t).padStart(2,"0")).join(":")}function Pw(){try{let s=JSON.parse(window.sessionStorage.getItem(Ch)??"[]");return Array.isArray(s)?s.slice(-Jn):[]}catch{return[]}}function Iw(){try{let{mode:s,map:e}=window.getGameActivity();if(s&&e)return`${s} on ${e}`}catch{}return"New lobby"}var Jn,Ch,Mw,Tw,Aw,_a,Nw,za=w(()=>{"use strict";Sh();D();Po();Jn=2e3,Ch="kute_chat_logs",Mw="\u200E",Tw=[["player","Players"],["kill","Kills"],["event","Events"],["server","Server"]],Aw={player:"",kill:"clKill",event:"clEvent",server:"clServer",lobby:"clLobby"};_a=class{constructor(){this.entries=Pw(),this.entries.length>0&&this.entries[this.entries.length-1].cat!=="lobby"&&this.entries.push({t:Date.now(),cat:"lobby",text:Iw()}),this.shown=new Set,this.view=null,this.stick=!0,this.observer=new MutationObserver(e=>{for(let t of e)for(let o of t.addedNodes)this.add(o)}),this.save=()=>{try{window.sessionStorage.setItem(Ch,JSON.stringify(this.entries))}catch{}},u.chatLogs={open:()=>this.open(),toggle:()=>this.toggle()},u.settings.toggleChatLogs=e=>this.setEnabled(e),this.setEnabled(!0)}setEnabled(e){if(this.observer.disconnect(),window.removeEventListener("pagehide",this.save),!e){this.close();return}let t=document.getElementById("chatList");if(t){for(let o of t.children)this.add(o);this.observer.observe(t,{childList:!0}),window.addEventListener("pagehide",this.save)}}add(e){if(!(e instanceof HTMLElement))return;let t=Lw(e),o=(t==="kill"?Rw(e):e.textContent??"").replaceAll(Mw,"").trim();if(!o)return;let n={t:Date.now(),cat:t,text:o};if(this.entries.push(n),this.entries.length>Jn&&this.entries.splice(0,this.entries.length-Jn),!this.view||!this.visible(n))return;let{list:r}=this.view;r.querySelector(".clEmpty")?.remove(),r.append(this.row(n)),r.childElementCount>Jn&&r.firstElementChild?.remove(),this.stick&&(r.scrollTop=1e9)}visible(e){let t=this.view?.search.value.trim().toLowerCase()??"";return e.cat==="lobby"?this.shown.size===0&&!t:this.shown.size>0&&!this.shown.has(e.cat)?!1:!t||e.text.toLowerCase().includes(t)}row(e){let t=document.createElement("div");t.className=`clRow ${Aw[e.cat]??""}`;let o=document.createElement("span");return o.className="clTime",o.textContent=$h(e.t),t.append(o,e.text),t}render(){if(!this.view)return;let e=this.entries.filter(t=>this.visible(t)).map(t=>this.row(t));if(e.length===0){let t=document.createElement("div");t.className="clEmpty",t.textContent=this.entries.length===0?"Nothing in the chat yet":"No line matches",e.push(t)}this.view.list.replaceChildren(...e),this.view.list.scrollTop=1e9,this.stick=!0,this.renderFilters()}renderFilters(){if(!this.view)return;let e=(n,r,i)=>{let a=document.createElement("div");return a.className=`clFilter${r?" clOn":""}`,a.textContent=n,a.onclick=i,a},t=e("All",this.shown.size===0,()=>{this.shown.clear(),this.render()}),o=Tw.map(([n,r])=>e(r,this.shown.has(n),()=>{this.shown.has(n)?this.shown.delete(n):this.shown.add(n),this.render()}));this.view.shadow.querySelector("#clFilters").replaceChildren(t,...o)}open(){if(this.view)return;document.pointerLockElement&&document.exitPointerLock();let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=Eh;let n=l=>o.querySelector(`#${l}`),r=n("clList"),i=n("clSearch");this.view={overlay:e,shadow:o,list:r,search:i};let a=ft().chatLogs;n("clHint").textContent=`${a?`${a.name} opens and closes this. `:""}Select lines and copy with Ctrl+C`,e.addEventListener("click",l=>{l.target===e&&this.close()});for(let l of["keydown","keyup","keypress"])t.addEventListener(l,c=>{let d=c;l==="keydown"&&!d.repeat&&(d.key==="Escape"||ls(d,"chatLogs"))&&this.close(),c.stopPropagation()});r.addEventListener("scroll",()=>{this.stick=r.scrollTop+r.clientHeight>=r.scrollHeight-30},{passive:!0}),i.addEventListener("input",()=>this.render()),n("clCopy").onclick=()=>{let l=this.entries.filter(c=>this.visible(c)).map(c=>`${$h(c.t)} ${c.text}`).join(` +`);navigator.clipboard.writeText(l).then(()=>u.showNotification("Chat log copied",!1,2),()=>u.showNotification("Could not copy the chat log",!1,3))},n("clClear").onclick=()=>{this.entries=[],this.save(),this.render()},n("clClose").onclick=()=>this.close(),document.body.append(e),this.render(),i.focus()}close(){this.view?.overlay.remove(),this.view=null}toggle(){this.view?this.close():this.open()}},Nw=new _a});var Oa={};A(Oa,{default:()=>zw});function Bw(s){return s.split(";").map(e=>e.trim()).filter(e=>{let t=e.split(":")[0]?.trim().toLowerCase();return!!t&&e.includes(":")&&_w.has(t)}).join(";")}var _w,Ha,Mh,zw,Da=w(()=>{"use strict";D();jn();It();_w=new Set(["background","background-image","background-color","background-clip","-webkit-background-clip","background-size","background-position","color","-webkit-text-fill-color","-webkit-text-stroke","text-shadow","text-decoration","filter","opacity","animation"]);Ha=class{constructor(){this.styles={},this.fetched={},this.watching=!1,this.decorator=e=>this.restyle(e),u.settings.toggleClanColors=e=>this.toggle(e),this.load()}toggle(e){if(e){Object.keys(this.fetched).length>0?this.apply(this.fetched):this.load();return}pt.remove(this.decorator),this.watching=!1,this.styles={};for(let t of document.querySelectorAll("[data-kute-clan]"))t.setAttribute("style",t.getAttribute("data-kute-style")??""),t.removeAttribute("data-kute-clan"),t.removeAttribute("data-kute-style")}async load(){let e=await he.request("/meta");typeof e?.clanTagColors=="object"&&e.clanTagColors!==null&&(this.fetched=e.clanTagColors),u.settings.data.clanColors!==!1&&this.apply(this.fetched)}apply(e){if(!(typeof e!="object"||e===null)){this.styles={};for(let[t,o]of Object.entries(e)){if(typeof o!="string"||t.length===0||t.length>16)continue;let n=Bw(o);n&&(this.styles[t]=n)}Object.keys(this.styles).length!==0&&(this.watching?pt.refresh():pt.add(this.decorator),this.watching=!0)}}restyle(e){let t=Ls(e.element);if(!t)return;let o=this.styles[t.tag];!o||t.span.getAttribute("data-kute-clan")===t.tag||(t.span.hasAttribute("data-kute-style")||t.span.setAttribute("data-kute-style",t.span.getAttribute("style")??""),t.span.setAttribute("style",o),t.span.setAttribute("data-kute-clan",t.tag))}},Mh=new Ha;u.clanColors=Mh;zw=Mh});var Th=we((i3,Hw)=>{Hw.exports='

                  Custom Sky

                  Replaces the sky of every map. It applies from the next match
                  Gradient
                  Image
                  Open folder
                  Refresh
                  Put PNG, JPG or WEBP images into Documents\\kute\\skies
                  Done
                  '});var qa={};A(qa,{default:()=>qw});var Ow,Ah,Dw,Fw,Fa,qw,Ka=w(()=>{"use strict";D();Ow={mode:"gradient",zenith:"#1E5AA8",horizon:"#9FD0F0",image:""},Ah="preset:",Dw=[["Vaporwave","#ff00aa","#00ffcc"],["Kute","#0b2e3a","#35e0e8"],["Sunset","#2b1055","#ff8a4c"],["Midnight","#03040f","#243b73"],["Toxic","#0a2a12","#a6ff3b"],["Blood Moon","#120006","#b3122e"],["Cotton Candy","#8fb8ff","#ffc2e2"]],Fw={starfield:"Starfield",aurora:"Aurora",nebula:"Nebula",synthwave:"Synthwave",sunset:"Sunset",candy:"Cotton Clouds"},Fa=class{constructor(){u.customSky={showOptions:()=>this.showOptions()}}get config(){return{...Ow,...u.settings.data.customSkyConfig}}saveConfig(e){u.settings.data.customSkyConfig=e,window.chrome.webview.postMessage(`set-config-json customSkyConfig ${JSON.stringify(e)}`)}listImages(){return new Promise(e=>{let t=0,o=n=>{Array.isArray(n.data?.skies)&&(window.chrome.webview.removeEventListener("message",o),clearTimeout(t),e({files:n.data.skies,presets:Array.isArray(n.data.skyPresets)?n.data.skyPresets:[]}))};t=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",o),e({files:[],presets:[]})},3e3),window.chrome.webview.addEventListener("message",o),window.chrome.webview.postMessage("sky-list")})}async showOptions(){let e=await Promise.resolve().then(()=>ue(Th(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=i("skZenith"),l=i("skHorizon"),c=i("skImage"),d=()=>{i("skModeGradient").classList.toggle("active",t.mode==="gradient"),i("skModeImage").classList.toggle("active",t.mode==="image"),i("skGradientPane").hidden=t.mode!=="gradient",i("skImagePane").hidden=t.mode!=="image",i("skPreview").style.background=`linear-gradient(${t.zenith}, ${t.horizon})`},h=async()=>{let{files:g,presets:b}=await this.listImages(),v=(E,L)=>{let x=document.createElement("optgroup");return x.label=E,x.append(...L.map(([$,I])=>new Option(I,$))),x},k=[...b.map(E=>Ah+E),...g];c.replaceChildren(...b.length?[v("Kute",b.map(E=>[Ah+E,Fw[E]??E]))]:[],...g.length?[v("Your images",g.map(E=>[E,E]))]:[]),k.length>0&&!k.includes(t.image)&&(t.image=k[0]),c.value=t.image,c.disabled=k.length===0,i("skImageHint").textContent=g.length===0?"Add your own: put PNG, JPG or WEBP images into Documents\\kute\\skies, then press Refresh":"Put PNG, JPG or WEBP images into Documents\\kute\\skies"},p=i("skSwatches");for(let[g,b,v]of Dw){let k=document.createElement("div");k.className="skSwatch",k.title=g,k.style.background=`linear-gradient(${b}, ${v})`,k.onclick=()=>{t.zenith=b,t.horizon=v,a.value=b,l.value=v,d()},p.append(k)}a.value=t.zenith.toLowerCase(),l.value=t.horizon.toLowerCase(),a.oninput=()=>{t.zenith=a.value,d()},l.oninput=()=>{t.horizon=l.value,d()},c.onchange=()=>{t.image=c.value},i("skModeGradient").onclick=()=>{t.mode="gradient",d()},i("skModeImage").onclick=()=>{t.mode="image",d()},i("skOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, skies"),i("skRefresh").onclick=()=>h();let m=new AbortController,f=()=>{m.abort(),o.remove(),this.saveConfig(t)};i("skDone").onclick=f,o.addEventListener("mousedown",g=>{g.target===o&&f()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),f())},{signal:m.signal,capture:!0}),d(),document.body.append(o),await h()}},qw=new Fa});var Rh,Lh=w(()=>{Rh='

                  Diagnostics Report

                  These are all the files that will be included. You can choose what to exclude, but keeping all of them is recommended.
                  Collecting...
                  Close
                  Save dump
                  '});var Ih={};A(Ih,{createCodeEditor:()=>Ph,createEditorView:()=>po,highlight:()=>Qn,languageFor:()=>ja});function Qn(s,e="js"){if(e==="text")return Zn(s);let t=e==="css",o="",n=0;for(let r of s.matchAll(t?Ww:Gw)){let i=r.index??0,[a]=r,l="";if(t){let[,c,d,h,p,m]=r;if(c)l="c";else if(d)l="s";else if(h)l="k";else if(p)l="n";else if(m){let f=i+m.length;s[f]==="("?l="f":(m.startsWith("--")||Vw(s,f))&&(l="l")}}else{let[,c,d,h,p]=r;c?l="c":d?l=e==="json"&&/^\s*:/.test(s.slice(i+a.length,i+a.length+20))?"p":"s":h?l="n":p&&(jw.has(p)?l="k":Uw.has(p)?l="l":/^\s*\(/.test(s.slice(i+p.length,i+p.length+40))&&(l="f"))}l&&(o+=Zn(s.slice(n,i))+`${Zn(a)}`,n=i+a.length)}return o+Zn(s.slice(n))}function Ph(s,e,{onSave:t,onDirtyChange:o,onChange:n,language:r="js"}){s.innerHTML=`
                  +
                  `;let i=s.querySelector(".editorGutter"),a=s.querySelector("pre"),l=s.querySelector("code"),c=s.querySelector("textarea");c.value=e;let d=e,h=!1,p=0,m=0,f=()=>{a.scrollTop=c.scrollTop,a.scrollLeft=c.scrollLeft,i.scrollTop=c.scrollTop},g=()=>{m=0;let{value:k}=c;l.innerHTML=`${Qn(k,r)} `;let E=k.split(` `).length;E!==p&&(p=E,i.textContent=Array.from({length:E},(x,$)=>$+1).join(` `)),f();let L=k!==d;L!==h&&(h=L,o(h))},b=k=>{document.execCommand("insertText",!1,k)},v=()=>{g(),n?.(c.value)};return c.addEventListener("input",()=>{c.value.length<15e4?v():m||(m=setTimeout(v,150))}),c.addEventListener("scroll",f),c.addEventListener("keydown",k=>{if((k.ctrlKey||k.metaKey)&&k.key.toLowerCase()==="s"){k.preventDefault(),t();return}if(k.key==="Tab"&&!k.ctrlKey&&!k.altKey){k.preventDefault();let{selectionStart:E,selectionEnd:L,value:x}=c,$=x.lastIndexOf(` `,E-1)+1;if(k.shiftKey){let I=/^ {1,4}/.exec(x.slice($))?.[0].length??0;if(!I)return;c.setSelectionRange($,$+I),document.execCommand("delete"),c.setSelectionRange(Math.max($,E-I),Math.max($,L-I));return}b(" ");return}if(k.key==="Enter"&&!k.ctrlKey&&!k.altKey&&!k.shiftKey){k.preventDefault();let{selectionStart:E,value:L}=c,x=L.lastIndexOf(` `,E-1)+1,$=L.slice(x,E),I=/^\s*/.exec($)?.[0]??"",_=r!=="text"&&/[{[(]\s*$/.test($)?" ":"";b(` -${I}${_}`)}}),g(),{getValue:()=>c.value,isDirty:()=>h,markSaved(k=c.value){u=k,g()},focus(){c.focus(),c.setSelectionRange(0,0)}}}function fo(s,{title:e,content:t,language:o,isNew:n=!1,onSave:r,onClose:i,onChange:a}){s.textContent="";let l=Et("div","editorView"),c=Et("div","editorBar"),u=Et("div","editorFile",e),h=Et("span","dirty",n?" (new, not saved yet)":"");u.append(h);let p=Et("div","btn primary","Save"),f=Et("div","btn","Save & close"),m=Et("div","btn","Close");p.onclick=()=>r(!1),f.onclick=()=>r(!0),m.onclick=i,c.append(u,p,f,m);let g=Et("div","");g.style.cssText="display:flex;flex:1 1 auto;min-height:0",l.append(c,g,Et("div","editorKeys","Ctrl+S save \xB7 Ctrl+Z / Ctrl+Y undo, redo \xB7 Tab / Shift+Tab indent \xB7 Esc close")),s.append(l);let b=Bh(g,t,{language:o,onChange:a,onSave:()=>r(!1),onDirtyChange:v=>{h.textContent=v?" \u25CF unsaved":""}});return b.focus(),{editor:b,bar:c,saveButton:p}}var Yw,Xw,Jw,Qn,Zw,Ua,Qw,Et,Do=w(()=>{"use strict";Yw=new Set("async await break case catch class const continue debugger default delete do else export extends finally for function if import in instanceof let new of return static super switch throw try typeof var void while with yield get set".split(" ")),Xw=new Set(["true","false","null","undefined","this","NaN","Infinity"]),Jw=/(\/\/[^\n]*|\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?|`(?:[^`\\]|\\[\s\S])*`?)|(\b\d[\d_]*(?:\.[\d_]+)?(?:e[+-]?\d+)?n?\b|\b0x[\da-fA-F_]+n?\b)|([A-Za-z_$][\w$]*)/g,Qn=s=>s.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">"),Zw=/(\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?)|(@[\w-]+|!\s*important\b)|(#[\da-fA-F]{3,8}\b|-?(?:\d*\.)?\d+(?:e[+-]?\d+)?(?:%|[a-zA-Z]+)?)|(-?-?[a-zA-Z_][\w-]*)/g,Ua=s=>{let e=s.slice(s.lastIndexOf(".")+1).toLowerCase();return e==="css"?"css":e==="json"?"json":["js","mjs"].includes(e)?"js":"text"},Qw=(s,e)=>/^\s*:[^{};]*(?:[;}]|$)/.test(s.slice(e,e+400));Et=(s,e,t="")=>{let o=document.createElement(s);return o.className=e,o.textContent=t,o}});var Va={};A(Va,{default:()=>ik});function Ga(s){return s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`}function sk(){let s=new Date;return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}function nk(){let s=document.createElement("canvas").getContext("webgl2");if(!s)return null;let e=s.getExtension("WEBGL_debug_renderer_info"),t=e?{vendor:String(s.getParameter(e.UNMASKED_VENDOR_WEBGL)),renderer:String(s.getParameter(e.UNMASKED_RENDERER_WEBGL))}:null;return s.getExtension("WEBGL_lose_context")?.loseContext(),t}function rk(){let s={};for(let n=0;n{"use strict";Nh();F();Do();ek="diagnostics",tk="kro_setngss_",ok=256*1024;Wa=class{constructor(){this.overlay=null,this.shadow=null,this.entries=[],this.excluded=new Set,this.compressed=0,this.onMessage=e=>this.receive(e.data),this.onKey=e=>{e.key==="Escape"&&this.close()},d.diagnostics={open:()=>this.open()}}open(){if(!d.hostFeatures?.includes(ek)){d.showNotification("The Diagnostics Report needs a newer Kute",!1,4);return}if(this.overlay)return;this.entries=[],this.excluded.clear(),this.overlay=document.createElement("div"),this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let e=document.createElement("div");this.overlay.append(e),this.shadow=e.attachShadow({mode:"open"}),this.shadow.innerHTML=_h,this.element("dgClose").onclick=()=>this.close(),this.element("dgSave").onclick=()=>this.save(),this.overlay.addEventListener("mousedown",t=>{t.target===this.overlay&&this.close()}),document.addEventListener("keydown",this.onKey),window.chrome.webview.addEventListener("message",this.onMessage),document.body.append(this.overlay),window.chrome.webview.postMessage(`diagnostics-collect ${JSON.stringify(rk())}`)}close(){window.chrome.webview.removeEventListener("message",this.onMessage),document.removeEventListener("keydown",this.onKey),this.overlay?.remove(),this.overlay=null,this.shadow=null,this.entries=[]}element(e){return this.shadow?.querySelector(`#${e}`)}receive(e){if(this.shadow){if(e?.diagnostics)this.entries=e.diagnostics.entries??[],this.compressed=e.diagnostics.compressed??0,this.element("dgSave").classList.remove("dgBusy"),this.renderList(),this.select(this.entries.find(t=>t.name!=="manifest.json")?.name??"manifest.json");else if(e?.diagnosticsSaved){let{file:t,error:o}=e.diagnosticsSaved;if(this.element("dgSave").classList.remove("dgBusy"),o){d.showNotification(`Could not save the report: ${o}`,!1,5);return}d.showNotification(`Saved ${t} to your Downloads folder`,!1,5),this.close()}}}renderList(){let e=this.element("dgEntries");e.replaceChildren();for(let t of this.entries){let o=document.createElement("div");o.className="dgEntry",o.dataset.name=t.name;let n=document.createElement("input");n.type="checkbox",n.checked=!this.excluded.has(t.name),n.disabled=t.name==="manifest.json",n.onclick=l=>{l.stopPropagation(),n.checked?this.excluded.delete(t.name):this.excluded.add(t.name),o.classList.toggle("dgOff",!n.checked),this.renderTotal()};let r=document.createElement("div"),i=document.createElement("span");i.className="dgName",i.textContent=t.name;let a=document.createElement("span");a.className="dgSize",a.textContent=Ga(t.bytes),r.append(i,a),o.append(n,r),o.onclick=()=>this.select(t.name),e.append(o)}this.renderTotal()}select(e){let t=this.entries.find(n=>n.name===e);if(!t)return;for(let n of this.element("dgEntries").querySelectorAll(".dgEntry"))n.classList.toggle("dgSelected",n.dataset.name===e);this.element("dgNote").textContent=t.note;let o=this.element("dgText");t.kind==="binary"?o.textContent=`${t.name}: ${Ga(t.bytes)} of binary data, goes into the file as it is.`:t.kind==="json"&&!t.truncated&&(t.text??"").length<=ok?o.innerHTML=er(t.text??"","json"):o.textContent=t.truncated?`${t.text} +${I}${_}`)}}),g(),{getValue:()=>c.value,isDirty:()=>h,markSaved(k=c.value){d=k,g()},focus(){c.focus(),c.setSelectionRange(0,0)}}}function po(s,{title:e,content:t,language:o,isNew:n=!1,onSave:r,onClose:i,onChange:a}){s.textContent="";let l=St("div","editorView"),c=St("div","editorBar"),d=St("div","editorFile",e),h=St("span","dirty",n?" (new, not saved yet)":"");d.append(h);let p=St("div","btn primary","Save"),m=St("div","btn","Save & close"),f=St("div","btn","Close");p.onclick=()=>r(!1),m.onclick=()=>r(!0),f.onclick=i,c.append(d,p,m,f);let g=St("div","");g.style.cssText="display:flex;flex:1 1 auto;min-height:0",l.append(c,g,St("div","editorKeys","Ctrl+S save \xB7 Ctrl+Z / Ctrl+Y undo, redo \xB7 Tab / Shift+Tab indent \xB7 Esc close")),s.append(l);let b=Ph(g,t,{language:o,onChange:a,onSave:()=>r(!1),onDirtyChange:v=>{h.textContent=v?" \u25CF unsaved":""}});return b.focus(),{editor:b,bar:c,saveButton:p}}var jw,Uw,Gw,Zn,Ww,ja,Vw,St,Oo=w(()=>{"use strict";jw=new Set("async await break case catch class const continue debugger default delete do else export extends finally for function if import in instanceof let new of return static super switch throw try typeof var void while with yield get set".split(" ")),Uw=new Set(["true","false","null","undefined","this","NaN","Infinity"]),Gw=/(\/\/[^\n]*|\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?|`(?:[^`\\]|\\[\s\S])*`?)|(\b\d[\d_]*(?:\.[\d_]+)?(?:e[+-]?\d+)?n?\b|\b0x[\da-fA-F_]+n?\b)|([A-Za-z_$][\w$]*)/g,Zn=s=>s.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">"),Ww=/(\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?)|(@[\w-]+|!\s*important\b)|(#[\da-fA-F]{3,8}\b|-?(?:\d*\.)?\d+(?:e[+-]?\d+)?(?:%|[a-zA-Z]+)?)|(-?-?[a-zA-Z_][\w-]*)/g,ja=s=>{let e=s.slice(s.lastIndexOf(".")+1).toLowerCase();return e==="css"?"css":e==="json"?"json":["js","mjs"].includes(e)?"js":"text"},Vw=(s,e)=>/^\s*:[^{};]*(?:[;}]|$)/.test(s.slice(e,e+400));St=(s,e,t="")=>{let o=document.createElement(s);return o.className=e,o.textContent=t,o}});var Wa={};A(Wa,{default:()=>tk});function Ua(s){return s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`}function Zw(){let s=new Date;return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}function Qw(){let s=document.createElement("canvas").getContext("webgl2");if(!s)return null;let e=s.getExtension("WEBGL_debug_renderer_info"),t=e?{vendor:String(s.getParameter(e.UNMASKED_VENDOR_WEBGL)),renderer:String(s.getParameter(e.UNMASKED_RENDERER_WEBGL))}:null;return s.getExtension("WEBGL_lose_context")?.loseContext(),t}function ek(){let s={};for(let n=0;n{"use strict";Lh();D();Oo();Yw="diagnostics",Xw="kro_setngss_",Jw=256*1024;Ga=class{constructor(){this.overlay=null,this.shadow=null,this.entries=[],this.excluded=new Set,this.compressed=0,this.onMessage=e=>this.receive(e.data),this.onKey=e=>{e.key==="Escape"&&this.close()},u.diagnostics={open:()=>this.open()}}open(){if(!u.hostFeatures?.includes(Yw)){u.showNotification("The Diagnostics Report needs a newer Kute",!1,4);return}if(this.overlay)return;this.entries=[],this.excluded.clear(),this.overlay=document.createElement("div"),this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let e=document.createElement("div");this.overlay.append(e),this.shadow=e.attachShadow({mode:"open"}),this.shadow.innerHTML=Rh,this.element("dgClose").onclick=()=>this.close(),this.element("dgSave").onclick=()=>this.save(),this.overlay.addEventListener("mousedown",t=>{t.target===this.overlay&&this.close()}),document.addEventListener("keydown",this.onKey),window.chrome.webview.addEventListener("message",this.onMessage),document.body.append(this.overlay),window.chrome.webview.postMessage(`diagnostics-collect ${JSON.stringify(ek())}`)}close(){window.chrome.webview.removeEventListener("message",this.onMessage),document.removeEventListener("keydown",this.onKey),this.overlay?.remove(),this.overlay=null,this.shadow=null,this.entries=[]}element(e){return this.shadow?.querySelector(`#${e}`)}receive(e){if(this.shadow){if(e?.diagnostics)this.entries=e.diagnostics.entries??[],this.compressed=e.diagnostics.compressed??0,this.element("dgSave").classList.remove("dgBusy"),this.renderList(),this.select(this.entries.find(t=>t.name!=="manifest.json")?.name??"manifest.json");else if(e?.diagnosticsSaved){let{file:t,error:o}=e.diagnosticsSaved;if(this.element("dgSave").classList.remove("dgBusy"),o){u.showNotification(`Could not save the report: ${o}`,!1,5);return}u.showNotification(`Saved ${t} to your Downloads folder`,!1,5),this.close()}}}renderList(){let e=this.element("dgEntries");e.replaceChildren();for(let t of this.entries){let o=document.createElement("div");o.className="dgEntry",o.dataset.name=t.name;let n=document.createElement("input");n.type="checkbox",n.checked=!this.excluded.has(t.name),n.disabled=t.name==="manifest.json",n.onclick=l=>{l.stopPropagation(),n.checked?this.excluded.delete(t.name):this.excluded.add(t.name),o.classList.toggle("dgOff",!n.checked),this.renderTotal()};let r=document.createElement("div"),i=document.createElement("span");i.className="dgName",i.textContent=t.name;let a=document.createElement("span");a.className="dgSize",a.textContent=Ua(t.bytes),r.append(i,a),o.append(n,r),o.onclick=()=>this.select(t.name),e.append(o)}this.renderTotal()}select(e){let t=this.entries.find(n=>n.name===e);if(!t)return;for(let n of this.element("dgEntries").querySelectorAll(".dgEntry"))n.classList.toggle("dgSelected",n.dataset.name===e);this.element("dgNote").textContent=t.note;let o=this.element("dgText");t.kind==="binary"?o.textContent=`${t.name}: ${Ua(t.bytes)} of binary data, goes into the file as it is.`:t.kind==="json"&&!t.truncated&&(t.text??"").length<=Jw?o.innerHTML=Qn(t.text??"","json"):o.textContent=t.truncated?`${t.text} -... (the preview ends here, the file holds all of it)`:t.text??"",o.scrollTop=0}renderTotal(){let e=this.entries.filter(r=>!this.excluded.has(r.name)),t=e.reduce((r,i)=>r+i.bytes,0),o=this.entries.reduce((r,i)=>r+i.bytes,0),n=o>0?this.compressed*t/o:0;this.element("dgTotal").textContent=`${e.length} of ${this.entries.length} files, about ${Ga(Math.round(n))} as a file`}save(){this.element("dgSave").classList.add("dgBusy"),window.chrome.webview.postMessage(`diagnostics-save ${JSON.stringify([...this.excluded])}`)}},ik=new Wa});var Hh={};A(Hh,{OFFICIAL_MAPS:()=>tr,mapImageUrl:()=>zs,mapLabel:()=>Ja,officialMaps:()=>Za});function Za(){return Xa??=fetch(ak,{signal:AbortSignal.timeout(4e3)}).then(s=>s.json()).then(s=>{let e=[];for(let t of Array.isArray(s?.data)?s.data:[])Number.isInteger(t?.id)&&t.id>=0&&typeof t?.name=="string"&&e.push([t.id,t.name]);if(e.length===0)throw new Error("empty map list");return e}).catch(()=>(Xa=null,tr.map((s,e)=>[e,s]))),Xa}var tr,ak,zs,Ja,Xa,or=w(()=>{"use strict";tr=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Shipment","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Bureau","Tortuga","Tropicano","Krunk_Plaza","Arena","Habitat","Atomic","Old_Burg","Throwback","Stockade","Facility","Clockwork","Laboratory","Shipyard","Soul Sanctum","Bazaar","Erupt","HQ","Khepri","Lush","Vivo","Slide Moonlight","Eterno Simulator","Stalk Factory","Eterno Jump","Frontier","Bastion","Piazza","Barnyard"],ak="https://gapi.svc.krunker.io/maps",zs=s=>`https://assets.krunker.io/img/maps/map_${s}.png`,Ja=s=>s.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),Xa=null});var Oh=we((v3,lk)=>{lk.exports="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"});var Fh=we((w3,ck)=>{ck.exports=`

                  Match Found Sound

                  Plays in Kute's queue window when it finds a match
                  Play
                  Open folder
                  Refresh
                  Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds
                  Done
                  `});var jh={};A(jh,{chosenSound:()=>el,default:()=>pk,kuteSound:()=>Hs,volume:()=>bo});function qh(s,e){return new Promise(t=>{let o=0,n=r=>{let i=e(r.data);i!==void 0&&(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(i))};o=setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},uk),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(s)})}async function el(){let s=String(d.settings.data.queueSoundFile??go);if(s!==go&&Dh()){let e=await Kh(s);if(e?.data)return e.data}return Hs()}var go,dk,uk,Dh,bo,Hs,Kh,Qa,pk,tl=w(()=>{"use strict";F();go="",dk=40,uk=5e3,Dh=()=>d.hostFeatures?.includes("custom-sounds")??!1,bo=()=>Math.min(1,Math.max(0,Number(d.settings.data.queueSoundVolume??dk)/100||0));Hs=()=>Promise.resolve().then(()=>ue(Oh(),1)).then(s=>s.default),Kh=s=>qh(`sound-get ${JSON.stringify({name:s})}`,e=>e?.sound?.name===s?e.sound:void 0);Qa=class{constructor(){this.context=null,this.playing=null,this.gain=null,d.queueSound={showOptions:()=>this.showOptions()}}async play(e){this.stop(),this.context??=new AudioContext,this.context.state==="suspended"&&await this.context.resume();let t=Uint8Array.from(atob(e),i=>i.charCodeAt(0)),o=await this.context.decodeAudioData(t.buffer),n=this.context.createGain();n.gain.value=bo(),n.connect(this.context.destination);let r=this.context.createBufferSource();r.buffer=o,r.connect(n),r.onended=()=>{this.playing===r&&(this.playing=null),r.disconnect(),n.disconnect()},r.start(),this.playing=r,this.gain=n}stop(){this.playing?.stop(),this.playing=null}async showOptions(){let e=await Promise.resolve().then(()=>ue(Fh(),1)),t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default;let r=b=>n.querySelector(`#${b}`),i=r("qsSound"),a=r("qsVolume"),l=Math.round(bo()*100),c=r("qsError"),u=String(d.settings.data.queueSoundFile??go),h=b=>{c.textContent=b,c.hidden=!b},p=async()=>{let b=Dh(),v=b?await qh("sound-list",L=>Array.isArray(L?.sounds)?L.sounds:void 0)??[]:[],k=[new Option("Kute's sound",go)];if(v.length){let L=document.createElement("optgroup");L.label="Your sounds",L.append(...v.map(x=>new Option(x,x))),k.push(L)}u!==go&&!v.includes(u)&&k.push(new Option(`${u} (missing)`,u)),i.replaceChildren(...k),i.value=u,r("qsOpenFolder").hidden=!b,r("qsRefresh").hidden=!b;let E="Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds";b?v.length===0&&(E="Add your own: put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds, then press Refresh"):E="Your own sounds need a newer Kute. Update Kute to use them.",r("qsFileHint").textContent=E},f=()=>{r("qsVolumeValue").textContent=`${a.value} %`};a.value=String(l),f(),a.oninput=()=>{d.settings.data.queueSoundVolume=Number(a.value),f(),this.playing&&this.gain&&(this.gain.gain.value=bo())},i.onchange=()=>{u=i.value,h("")},r("qsPlay").onclick=async()=>{h(""),bo()===0&&h("The volume is at 0.");try{if(u===go){await this.play(await Hs());return}let b=await Kh(u);if(!b?.data){h(b?.error??"Kute did not answer.");return}await this.play(b.data)}catch{h("This file cannot be played. Try MP3, OGG or WAV.")}},r("qsOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, sounds"),r("qsRefresh").onclick=()=>p();let m=new AbortController,g=()=>{m.abort(),this.stop(),t.remove(),Number(a.value)!==l&&window.chrome.webview.postMessage(`set-config-json queueSoundVolume ${Number(a.value)}`),u!==String(d.settings.data.queueSoundFile??go)&&(d.settings.data.queueSoundFile=u,window.chrome.webview.postMessage(`set-config-json queueSoundFile ${JSON.stringify(u)}`))};r("qsDone").onclick=g,t.addEventListener("mousedown",b=>{b.target===t&&g()}),document.addEventListener("keydown",b=>{b.key==="Escape"&&(b.stopPropagation(),g())},{signal:m.signal,capture:!0}),document.body.append(t),await p()}},pk=new Qa});var Uh=we((y3,hk)=>{hk.exports=' External Queue
                  Ready
                  00:00:00

                  Select Maps

                  '});var Gh=we((x3,mk)=>{mk.exports='(()=>{const{info:r}=window;function o(e){const n=document.querySelector(e);if(!n)throw new Error(`queue window: ${e} is missing`);return n}const y=r.maps,R={na:"North America",eu:"Europe",as:"Asia"},T=60,O=o("#queueStatus"),D=o("#statusArea"),q=o("#queueTimerDisplay"),A=o("#regionCheckboxes"),k=o("#matchPopupOverlay"),B=o("#countDownTimer"),$=o("#foundRegion"),_=o("#mapSelectorButton"),p=o("#mapSelectorOverlay"),j=o("#closeMapSelector"),I=o("#mapGrid"),s=o("#queueButton"),G=o("#closeButton");let m=!1,g=!1,N=0,E=0,v=0,w=null,l=null,S=null,u=null;const i=new Set,h=window.opener?.localStorage??window.localStorage;function x(){const e=Array.from(A.querySelectorAll("input:checked"),n=>n.id);h.setItem("queue_selectedRegions",JSON.stringify(e)),h.setItem("queue_newSelectedMaps",JSON.stringify(Array.from(i)))}function J(){try{for(const n of JSON.parse(h.getItem("queue_selectedRegions")??"[]")){const t=document.getElementById(n);t&&(t.checked=!0)}const e=h.getItem("queue_newSelectedMaps");for(const n of e?JSON.parse(e):Object.values(y).map(t=>t.number))i.add(Number(n))}catch{for(const e of Object.values(y))i.add(e.number)}}function C(e){const n=t=>String(Math.floor(t)).padStart(2,"0");return`${n(e/3600)}:${n(e%3600/60)}:${n(e%60)}`}function b(e,n){O.textContent=n,O.classList.toggle("active",e),D.classList.toggle("active",e)}function d(e="Ready"){m=!1,g=!1,clearInterval(E),s.textContent="Start Queue",s.classList.remove("in-queue"),s.disabled=!1,q.textContent="00:00:00",b(!1,e)}async function Q(){l=new AudioContext,l.state==="suspended"&&await l.resume();const e=n=>l.decodeAudioData(Uint8Array.from(atob(n),t=>t.charCodeAt(0)).buffer);try{S=await e(r.sound)}catch{S=await e(r.fallbackSound??r.sound)}}function L(){u&&(u.stop(),u.disconnect(),u=null)}function P(){if(!S||l?.state!=="running")return;L();let e=1;try{e=r.volume?.()??1}catch{}if(!(e>0))return;const n=l.createGain();n.gain.value=e,n.connect(l.destination);const t=l.createBufferSource();t.buffer=S,t.connect(n),t.start(0),u=t,t.onended=()=>{u===t&&(u=null),t.disconnect(),n.disconnect()}}function U(e){const n=Date.now()+e,t=()=>{const a=Math.ceil((n-Date.now())/1e3);if(a<=0){b(!1,"Ready"),s.disabled=!1;return}b(!1,`Cooldown: ${C(a)}`),s.disabled=!0,setTimeout(t,1e3)};t()}function z(e,n){P(),k.classList.add("active");const t=Object.entries(y).find(([,f])=>f.number===Number.parseInt(e,10))?.[0]??"unknown",a=R[n.slice(2)]??n.slice(2);$.textContent=`${a}, ${t}`;const c=Date.now();clearInterval(v),v=setInterval(()=>{const f=Math.max(0,T-Math.floor((Date.now()-c)/1e3));B.textContent=C(f),f<=0&&(clearInterval(v),k.classList.remove("active"))},1e3),d()}function W(){const e=Array.from(A.querySelectorAll("input:checked"),a=>a.value);if(e.length===0||i.size===0){d(e.length===0?"Select at least one region":"Select at least one map");return}const n=`wss://gamefrontend.svc.krunker.io/v1/matchmaking/queue?token=${r.token}&maps=${Array.from(i).join(",")}®ions=${e.join(",")}`;let t;try{t=new WebSocket(n)}catch{d("Connection failed");return}w=t,t.onerror=()=>d("Connection error"),t.onclose=()=>{(m||g)&&d()},t.onopen=()=>{m=!0,g=!1,N=Date.now(),s.textContent="Leave Queue",s.classList.add("in-queue"),s.disabled=!1,b(!0,"In queue"),q.textContent=C(0),E=setInterval(()=>{q.textContent=C((Date.now()-N)/1e3)},1e3)},t.onmessage=a=>{const c=JSON.parse(a.data);if(c.type==="QUEUE_STATUS"&&c.payload?.status==="MATCHED"){const f=c.payload.assignment.extensions;z(String(f.map).trim(),String(f.region))}else c.type==="ERROR"&&c.payload?.code==="COOLDOWN"?(d(),t.close(),U(Number(c.payload.payload.cooldown))):c.type==="INTERNAL_ERROR"&&(d(),t.close())}}function F(e){const n=!i.has(e);n?i.add(e):i.delete(e),I.querySelector(`.map-item[data-map="${e}"]`)?.classList.toggle("selected",n),m&&w?.close(),x()}function H(){I.replaceChildren();for(const[e,n]of Object.entries(y)){const t=document.createElement("div");t.className="map-item",t.dataset.map=String(n.number),t.classList.toggle("selected",i.has(n.number));const a=document.createElement("img");a.src=n.url,a.loading="lazy";const c=document.createElement("span");c.textContent=e,t.append(a,c),t.onclick=()=>F(n.number),I.append(t)}}J();const M=r.region?document.getElementById(r.region):null;M&&(M.checked=!0),H(),_.onclick=()=>p.classList.add("active"),j.onclick=()=>p.classList.remove("active"),p.onclick=e=>{e.target===p&&p.classList.remove("active")},s.onclick=async()=>{if(!g){if(m){w?.close();return}s.disabled=!0,g=!0;try{S||await Q()}catch{}W()}},G.onclick=()=>{clearInterval(v),k.classList.remove("active"),L()};const K=()=>{m&&w?.close(),x()};for(const e of A.querySelectorAll("input"))e.onclick=K})();\n'});var Wh={};function gk(){let s=window.screen.width,e=window.screen.height,t=850,o=350,n=(s-t)/2,r=(e-o)/2,i=window.open("about:blank","_blank",`width=${t},height=${o},left=${n},top=${r}`);if(!i)return;let a=(U(".region-indicator").textContent??"").split(": ")[1];switch(a){case"North America":a="na";break;case"Europe":a="eu";break;case"Asia":a="as";break;default:break}let l=localStorage.getItem("__FRVR_auth_access_token")??"";l=l.replace(/"/g,""),l=l.replace("/","");let c=localStorage.getItem("s_rankedAllRegions")==="true";Promise.all([Promise.resolve().then(()=>ue(Uh(),1)),Promise.resolve().then(()=>ue(Gh(),1)),el(),Hs(),Za()]).then(([u,h,p,f,m])=>{let g=Object.fromEntries(m.map(([k,E])=>[Ja(E),{url:zs(k),number:k}]));i.info={allRegions:c,token:l,region:a,sound:p,fallbackSound:f,volume:bo,maps:g};let b=new DOMParser().parseFromString(u.default,"text/html");i.document.head.append(...Array.from(b.head.children,k=>i.document.importNode(k,!0))),i.document.body.append(...Array.from(b.body.children,k=>i.document.importNode(k,!0)));let v=i.document.createElement("script");v.textContent=h.default,i.document.head.append(v)})}var sr,fk,ol=w(()=>{"use strict";Ae();or();tl();sr=document.createElement("button");sr.textContent="open_in_new";sr.style=`background-color: #5ce05a; +... (the preview ends here, the file holds all of it)`:t.text??"",o.scrollTop=0}renderTotal(){let e=this.entries.filter(r=>!this.excluded.has(r.name)),t=e.reduce((r,i)=>r+i.bytes,0),o=this.entries.reduce((r,i)=>r+i.bytes,0),n=o>0?this.compressed*t/o:0;this.element("dgTotal").textContent=`${e.length} of ${this.entries.length} files, about ${Ua(Math.round(n))} as a file`}save(){this.element("dgSave").classList.add("dgBusy"),window.chrome.webview.postMessage(`diagnostics-save ${JSON.stringify([...this.excluded])}`)}},tk=new Ga});var Nh={};A(Nh,{OFFICIAL_MAPS:()=>er,mapImageUrl:()=>Bs,mapLabel:()=>Xa,officialMaps:()=>Ja});function Ja(){return Ya??=fetch(ok,{signal:AbortSignal.timeout(4e3)}).then(s=>s.json()).then(s=>{let e=[];for(let t of Array.isArray(s?.data)?s.data:[])Number.isInteger(t?.id)&&t.id>=0&&typeof t?.name=="string"&&e.push([t.id,t.name]);if(e.length===0)throw new Error("empty map list");return e}).catch(()=>(Ya=null,er.map((s,e)=>[e,s]))),Ya}var er,ok,Bs,Xa,Ya,tr=w(()=>{"use strict";er=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Shipment","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Bureau","Tortuga","Tropicano","Krunk_Plaza","Arena","Habitat","Atomic","Old_Burg","Throwback","Stockade","Facility","Clockwork","Laboratory","Shipyard","Soul Sanctum","Bazaar","Erupt","HQ","Khepri","Lush","Vivo","Slide Moonlight","Eterno Simulator","Stalk Factory","Eterno Jump","Frontier","Bastion","Piazza","Barnyard"],ok="https://gapi.svc.krunker.io/maps",Bs=s=>`https://assets.krunker.io/img/maps/map_${s}.png`,Xa=s=>s.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),Ya=null});var _h=we((p3,sk)=>{sk.exports="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"});var Bh=we((h3,nk)=>{nk.exports=`

                  Match Found Sound

                  Plays in Kute's queue window when it finds a match
                  Play
                  Open folder
                  Refresh
                  Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds
                  Done
                  `});var Dh={};A(Dh,{chosenSound:()=>Qa,default:()=>ak,kuteSound:()=>zs,volume:()=>mo});function Hh(s,e){return new Promise(t=>{let o=0,n=r=>{let i=e(r.data);i!==void 0&&(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(i))};o=setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},ik),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(s)})}async function Qa(){let s=String(u.settings.data.queueSoundFile??ho);if(s!==ho&&zh()){let e=await Oh(s);if(e?.data)return e.data}return zs()}var ho,rk,ik,zh,mo,zs,Oh,Za,ak,el=w(()=>{"use strict";D();ho="",rk=40,ik=5e3,zh=()=>u.hostFeatures?.includes("custom-sounds")??!1,mo=()=>Math.min(1,Math.max(0,Number(u.settings.data.queueSoundVolume??rk)/100||0));zs=()=>Promise.resolve().then(()=>ue(_h(),1)).then(s=>s.default),Oh=s=>Hh(`sound-get ${JSON.stringify({name:s})}`,e=>e?.sound?.name===s?e.sound:void 0);Za=class{constructor(){this.context=null,this.playing=null,this.gain=null,u.queueSound={showOptions:()=>this.showOptions()}}async play(e){this.stop(),this.context??=new AudioContext,this.context.state==="suspended"&&await this.context.resume();let t=Uint8Array.from(atob(e),i=>i.charCodeAt(0)),o=await this.context.decodeAudioData(t.buffer),n=this.context.createGain();n.gain.value=mo(),n.connect(this.context.destination);let r=this.context.createBufferSource();r.buffer=o,r.connect(n),r.onended=()=>{this.playing===r&&(this.playing=null),r.disconnect(),n.disconnect()},r.start(),this.playing=r,this.gain=n}stop(){this.playing?.stop(),this.playing=null}async showOptions(){let e=await Promise.resolve().then(()=>ue(Bh(),1)),t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default;let r=b=>n.querySelector(`#${b}`),i=r("qsSound"),a=r("qsVolume"),l=Math.round(mo()*100),c=r("qsError"),d=String(u.settings.data.queueSoundFile??ho),h=b=>{c.textContent=b,c.hidden=!b},p=async()=>{let b=zh(),v=b?await Hh("sound-list",L=>Array.isArray(L?.sounds)?L.sounds:void 0)??[]:[],k=[new Option("Kute's sound",ho)];if(v.length){let L=document.createElement("optgroup");L.label="Your sounds",L.append(...v.map(x=>new Option(x,x))),k.push(L)}d!==ho&&!v.includes(d)&&k.push(new Option(`${d} (missing)`,d)),i.replaceChildren(...k),i.value=d,r("qsOpenFolder").hidden=!b,r("qsRefresh").hidden=!b;let E="Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds";b?v.length===0&&(E="Add your own: put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds, then press Refresh"):E="Your own sounds need a newer Kute. Update Kute to use them.",r("qsFileHint").textContent=E},m=()=>{r("qsVolumeValue").textContent=`${a.value} %`};a.value=String(l),m(),a.oninput=()=>{u.settings.data.queueSoundVolume=Number(a.value),m(),this.playing&&this.gain&&(this.gain.gain.value=mo())},i.onchange=()=>{d=i.value,h("")},r("qsPlay").onclick=async()=>{h(""),mo()===0&&h("The volume is at 0.");try{if(d===ho){await this.play(await zs());return}let b=await Oh(d);if(!b?.data){h(b?.error??"Kute did not answer.");return}await this.play(b.data)}catch{h("This file cannot be played. Try MP3, OGG or WAV.")}},r("qsOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, sounds"),r("qsRefresh").onclick=()=>p();let f=new AbortController,g=()=>{f.abort(),this.stop(),t.remove(),Number(a.value)!==l&&window.chrome.webview.postMessage(`set-config-json queueSoundVolume ${Number(a.value)}`),d!==String(u.settings.data.queueSoundFile??ho)&&(u.settings.data.queueSoundFile=d,window.chrome.webview.postMessage(`set-config-json queueSoundFile ${JSON.stringify(d)}`))};r("qsDone").onclick=g,t.addEventListener("mousedown",b=>{b.target===t&&g()}),document.addEventListener("keydown",b=>{b.key==="Escape"&&(b.stopPropagation(),g())},{signal:f.signal,capture:!0}),document.body.append(t),await p()}},ak=new Za});var Fh=we((f3,lk)=>{lk.exports=' External Queue
                  Ready
                  00:00:00

                  Select Maps

                  '});var qh=we((g3,ck)=>{ck.exports='(()=>{const{info:r}=window;function o(e){const n=document.querySelector(e);if(!n)throw new Error(`queue window: ${e} is missing`);return n}const y=r.maps,R={na:"North America",eu:"Europe",as:"Asia"},T=60,O=o("#queueStatus"),D=o("#statusArea"),q=o("#queueTimerDisplay"),A=o("#regionCheckboxes"),k=o("#matchPopupOverlay"),B=o("#countDownTimer"),$=o("#foundRegion"),_=o("#mapSelectorButton"),p=o("#mapSelectorOverlay"),j=o("#closeMapSelector"),I=o("#mapGrid"),s=o("#queueButton"),G=o("#closeButton");let m=!1,g=!1,N=0,E=0,v=0,w=null,l=null,S=null,u=null;const i=new Set,h=window.opener?.localStorage??window.localStorage;function x(){const e=Array.from(A.querySelectorAll("input:checked"),n=>n.id);h.setItem("queue_selectedRegions",JSON.stringify(e)),h.setItem("queue_newSelectedMaps",JSON.stringify(Array.from(i)))}function J(){try{for(const n of JSON.parse(h.getItem("queue_selectedRegions")??"[]")){const t=document.getElementById(n);t&&(t.checked=!0)}const e=h.getItem("queue_newSelectedMaps");for(const n of e?JSON.parse(e):Object.values(y).map(t=>t.number))i.add(Number(n))}catch{for(const e of Object.values(y))i.add(e.number)}}function C(e){const n=t=>String(Math.floor(t)).padStart(2,"0");return`${n(e/3600)}:${n(e%3600/60)}:${n(e%60)}`}function b(e,n){O.textContent=n,O.classList.toggle("active",e),D.classList.toggle("active",e)}function d(e="Ready"){m=!1,g=!1,clearInterval(E),s.textContent="Start Queue",s.classList.remove("in-queue"),s.disabled=!1,q.textContent="00:00:00",b(!1,e)}async function Q(){l=new AudioContext,l.state==="suspended"&&await l.resume();const e=n=>l.decodeAudioData(Uint8Array.from(atob(n),t=>t.charCodeAt(0)).buffer);try{S=await e(r.sound)}catch{S=await e(r.fallbackSound??r.sound)}}function L(){u&&(u.stop(),u.disconnect(),u=null)}function P(){if(!S||l?.state!=="running")return;L();let e=1;try{e=r.volume?.()??1}catch{}if(!(e>0))return;const n=l.createGain();n.gain.value=e,n.connect(l.destination);const t=l.createBufferSource();t.buffer=S,t.connect(n),t.start(0),u=t,t.onended=()=>{u===t&&(u=null),t.disconnect(),n.disconnect()}}function U(e){const n=Date.now()+e,t=()=>{const a=Math.ceil((n-Date.now())/1e3);if(a<=0){b(!1,"Ready"),s.disabled=!1;return}b(!1,`Cooldown: ${C(a)}`),s.disabled=!0,setTimeout(t,1e3)};t()}function z(e,n){P(),k.classList.add("active");const t=Object.entries(y).find(([,f])=>f.number===Number.parseInt(e,10))?.[0]??"unknown",a=R[n.slice(2)]??n.slice(2);$.textContent=`${a}, ${t}`;const c=Date.now();clearInterval(v),v=setInterval(()=>{const f=Math.max(0,T-Math.floor((Date.now()-c)/1e3));B.textContent=C(f),f<=0&&(clearInterval(v),k.classList.remove("active"))},1e3),d()}function W(){const e=Array.from(A.querySelectorAll("input:checked"),a=>a.value);if(e.length===0||i.size===0){d(e.length===0?"Select at least one region":"Select at least one map");return}const n=`wss://gamefrontend.svc.krunker.io/v1/matchmaking/queue?token=${r.token}&maps=${Array.from(i).join(",")}®ions=${e.join(",")}`;let t;try{t=new WebSocket(n)}catch{d("Connection failed");return}w=t,t.onerror=()=>d("Connection error"),t.onclose=()=>{(m||g)&&d()},t.onopen=()=>{m=!0,g=!1,N=Date.now(),s.textContent="Leave Queue",s.classList.add("in-queue"),s.disabled=!1,b(!0,"In queue"),q.textContent=C(0),E=setInterval(()=>{q.textContent=C((Date.now()-N)/1e3)},1e3)},t.onmessage=a=>{const c=JSON.parse(a.data);if(c.type==="QUEUE_STATUS"&&c.payload?.status==="MATCHED"){const f=c.payload.assignment.extensions;z(String(f.map).trim(),String(f.region))}else c.type==="ERROR"&&c.payload?.code==="COOLDOWN"?(d(),t.close(),U(Number(c.payload.payload.cooldown))):c.type==="INTERNAL_ERROR"&&(d(),t.close())}}function F(e){const n=!i.has(e);n?i.add(e):i.delete(e),I.querySelector(`.map-item[data-map="${e}"]`)?.classList.toggle("selected",n),m&&w?.close(),x()}function H(){I.replaceChildren();for(const[e,n]of Object.entries(y)){const t=document.createElement("div");t.className="map-item",t.dataset.map=String(n.number),t.classList.toggle("selected",i.has(n.number));const a=document.createElement("img");a.src=n.url,a.loading="lazy";const c=document.createElement("span");c.textContent=e,t.append(a,c),t.onclick=()=>F(n.number),I.append(t)}}J();const M=r.region?document.getElementById(r.region):null;M&&(M.checked=!0),H(),_.onclick=()=>p.classList.add("active"),j.onclick=()=>p.classList.remove("active"),p.onclick=e=>{e.target===p&&p.classList.remove("active")},s.onclick=async()=>{if(!g){if(m){w?.close();return}s.disabled=!0,g=!0;try{S||await Q()}catch{}W()}},G.onclick=()=>{clearInterval(v),k.classList.remove("active"),L()};const K=()=>{m&&w?.close(),x()};for(const e of A.querySelectorAll("input"))e.onclick=K})();\n'});var Kh={};function uk(){let s=window.screen.width,e=window.screen.height,t=850,o=350,n=(s-t)/2,r=(e-o)/2,i=window.open("about:blank","_blank",`width=${t},height=${o},left=${n},top=${r}`);if(!i)return;let a=(U(".region-indicator").textContent??"").split(": ")[1];switch(a){case"North America":a="na";break;case"Europe":a="eu";break;case"Asia":a="as";break;default:break}let l=localStorage.getItem("__FRVR_auth_access_token")??"";l=l.replace(/"/g,""),l=l.replace("/","");let c=localStorage.getItem("s_rankedAllRegions")==="true";Promise.all([Promise.resolve().then(()=>ue(Fh(),1)),Promise.resolve().then(()=>ue(qh(),1)),Qa(),zs(),Ja()]).then(([d,h,p,m,f])=>{let g=Object.fromEntries(f.map(([k,E])=>[Xa(E),{url:Bs(k),number:k}]));i.info={allRegions:c,token:l,region:a,sound:p,fallbackSound:m,volume:mo,maps:g};let b=new DOMParser().parseFromString(d.default,"text/html");i.document.head.append(...Array.from(b.head.children,k=>i.document.importNode(k,!0))),i.document.body.append(...Array.from(b.body.children,k=>i.document.importNode(k,!0)));let v=i.document.createElement("script");v.textContent=h.default,i.document.head.append(v)})}var or,dk,tl=w(()=>{"use strict";Ae();tr();el();or=document.createElement("button");or.textContent="open_in_new";or.style=`background-color: #5ce05a; color: #ffffff; border-radius: 9px; padding: 20px 21px; @@ -180,20 +180,20 @@ ${I}${_}`)}}),g(),{getValue:()=>c.value,isDirty:()=>h,markSaved(k=c.value){u=k,g cursor: pointer; font-size: 20px; text-shadow: 2px 2px 0px black !important; - margin-left: 2px;`;fk=window.openRankedMenu;window.openRankedMenu=()=>{fk();let s=U(".footer-controls"),e=s.lastElementChild;s.insertBefore(sr,e)};sr.onclick=gk});var Vh={};var bk,vk,wk,sl=w(()=>{"use strict";F();bn();window.chrome.webview.postMessage("drag, true");window.chrome.webview.postMessage("throttle, menu");bk=window.exportSettings;window.exportSettings=s=>(s||d.showNotification("Settings exported to Downloads!",!1,3),bk(s));vk=window.showWindow;window.showWindow=(...s)=>{switch(s[0]){case 3:case 53:window.chrome.webview.postMessage("throttle, game");break;case 15:case 26:case 52:case 9:case 44:case 43:case 40:case 38:case 50:case 17:case 39:case 51:case 16:case 34:window.chrome.webview.postMessage("throttle, menu");break;default:break}return vk(...s)};wk=window.closWind;window.closWind=(...s)=>(window.chrome.webview.postMessage("drag, true"),window.chrome.webview.postMessage("throttle, menu"),wk(...s));d.bindShoot=()=>{if(Dr()){window.changeCont("shoot",1,void 0);let s={key:"F20",code:"F20",keyCode:131,which:131,bubbles:!0,cancelable:!0};window.dispatchEvent(new KeyboardEvent("keydown",s)),window.dispatchEvent(new KeyboardEvent("keyup",s))}Qo()}});var rl={};A(rl,{default:()=>kk});var nl,kk,il=w(()=>{"use strict";F();Ae();nl=class{constructor(){this.numberDisplay=document.createElement("div"),this.numberDisplay.id="hpEnemyCounter",this.numberDisplay.classList.add("statIcon"),this.numberDisplay.style.cssText="transform: translate(0, -2.7px);",this.numberDisplay.innerHTML=` + margin-left: 2px;`;dk=window.openRankedMenu;window.openRankedMenu=()=>{dk();let s=U(".footer-controls"),e=s.lastElementChild;s.insertBefore(or,e)};or.onclick=uk});var jh={};var pk,hk,mk,ol=w(()=>{"use strict";D();gn();window.chrome.webview.postMessage("drag, true");window.chrome.webview.postMessage("throttle, menu");pk=window.exportSettings;window.exportSettings=s=>(s||u.showNotification("Settings exported to Downloads!",!1,3),pk(s));hk=window.showWindow;window.showWindow=(...s)=>{switch(s[0]){case 3:case 53:window.chrome.webview.postMessage("throttle, game");break;case 15:case 26:case 52:case 9:case 44:case 43:case 40:case 38:case 50:case 17:case 39:case 51:case 16:case 34:window.chrome.webview.postMessage("throttle, menu");break;default:break}return hk(...s)};mk=window.closWind;window.closWind=(...s)=>(window.chrome.webview.postMessage("drag, true"),window.chrome.webview.postMessage("throttle, menu"),mk(...s));u.bindShoot=()=>{if(Dr()){window.changeCont("shoot",1,void 0);let s={key:"F20",code:"F20",keyCode:131,which:131,bubbles:!0,cancelable:!0};window.dispatchEvent(new KeyboardEvent("keydown",s)),window.dispatchEvent(new KeyboardEvent("keyup",s))}Zo()}});var nl={};A(nl,{default:()=>fk});var sl,fk,rl=w(()=>{"use strict";D();Ae();sl=class{constructor(){this.numberDisplay=document.createElement("div"),this.numberDisplay.id="hpEnemyCounter",this.numberDisplay.classList.add("statIcon"),this.numberDisplay.style.cssText="transform: translate(0, -2.7px);",this.numberDisplay.innerHTML=`
                  on 0 -
                  `,this.enemyOBJ=0,this.enemyTimeout=null,this.observer=null,this.pointCounter=null,this.gameUpdateListener=e=>{e.data==="game-updated"&&setTimeout(()=>{Oe()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.setupDisplay())},2e3)},d.settings.toggleHpEnemyCounter=e=>this.toggle(e),this.toggle(!0)}toggle(e){e?(window.chrome.webview.addEventListener("message",this.gameUpdateListener),Oe()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.setupDisplay())):(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.observer?.disconnect(),this.numberDisplay.remove())}processTeamScores=()=>{let{pointCounter:e}=this;if(e){for(let t of document.querySelectorAll("#tScoreC1, #tScoreC2"))if(t&&!t.className.includes("you")){let o=t.nextElementSibling;if(!o)continue;let n=Number.parseInt(o.textContent??"",10);if(Number.isNaN(n))continue;n>this.enemyOBJ&&(e.textContent=String((n-this.enemyOBJ)/10),this.enemyTimeout&&clearTimeout(this.enemyTimeout),this.enemyTimeout=setTimeout(()=>{e.textContent="0",this.enemyTimeout=null},1600)),this.enemyOBJ=n}}};setupDisplay(){let e=U(".pointVal",this.numberDisplay);this.pointCounter=e,U(".topRightCounters").append(this.numberDisplay),this.observer?.disconnect(),this.observer=new MutationObserver(this.processTeamScores),this.observer.observe(U("#teamScores"),{childList:!0,subtree:!0})}},kk=new nl});var ll={};A(ll,{default:()=>yk});var al,yk,cl=w(()=>{"use strict";F();al=class{constructor(){this.originalPlay=()=>{},this.observer=new MutationObserver(e=>this.parseChat(e)),d.settings.toggleHsSound=e=>this.toggle(e),this.setupSoundHook()}setupSoundHook(){window.SOUND?.play?(this.originalPlay=window.SOUND.play,this.toggle(!0)):setTimeout(()=>this.setupSoundHook(),100)}toggle(e){if(e){let t=document.querySelector("#chatList");t&&this.observer.observe(t,{childList:!0});let o=this;window.SOUND.play=function(n,r,i){if(!(n==="headshot_0"&&r===void 0))return o.originalPlay.call(window.SOUND,n,r,i)}}else window.SOUND.play=this.originalPlay,this.observer.disconnect()}parseChat(e){for(let t of e)if(t.type==="childList")for(let o of t.addedNodes){if(!(o instanceof HTMLElement)||o.tagName!=="DIV")continue;let n=o.querySelector("span.chatMsg");if(!n)continue;let r=n.querySelectorAll("span[style*='color:#'], span[style*='color: rgb']");if(r.length<=0)continue;let i=r[0],a=i.style.color.trim().toLowerCase(),l=i.textContent.trim();a==="rgb(255, 255, 255)"&&l==="You"&&n.querySelector("img")&&window.SOUND.play("headshot_0",1,!1)}}},yk=new al});var Xh,Yh=w(()=>{Xh=`html.kuteHudEdit #app,html.kuteHudEdit #fullMenHider{opacity:.1!important;pointer-events:none!important}html.kuteHudEdit #kuteHudEditor{position:fixed;inset:0;z-index:2147483000;background:#00000073;font-family:Consolas,monospace;color:#fff}.hudBox{position:absolute;box-sizing:border-box;border:1px solid rgba(53,224,232,.65);border-radius:4px;background:#35e0e81a;cursor:grab;touch-action:none}.hudBox:hover,.hudBox.hudActive{border-color:#35e0e8;background:#35e0e840}.hudBox.hudDragging{cursor:grabbing}.hudBox.hudEmpty{border-style:dashed}.hudBox.hudOff{border-color:#ffffff4d;background:#ffffff0f}.hudLabel{position:absolute;bottom:100%;left:-1px;padding:0 .35em;border-radius:3px 3px 0 0;background:#35e0e8d9;color:#05201f;font-size:11px;line-height:1.5;white-space:nowrap;pointer-events:none}.hudBox.hudLabelBelow .hudLabel{top:100%;bottom:auto;border-radius:0 0 3px 3px}.hudBox.hudOff .hudLabel{background:#fff6;color:#111}.hudGuide{position:absolute;background:#ffc147;pointer-events:none}.hudGuide.hudGuideV{top:0;width:1px;height:100%}.hudGuide.hudGuideH{left:0;width:100%;height:1px} -`});var Zh,Jh=w(()=>{Zh='
                  HUD Layout
                  Boxes are where things sit in the match.
                  Drag to move, wheel to resize, arrows nudge
                  Reset all
                  Done
                  '});var Qh={};A(Qh,{HUD_ELEMENTS:()=>jt,gameSettingOn:()=>dl});function dl(s){try{return window.localStorage.getItem(`kro_setngss_${s}`)!=="false"}catch{return!0}}var jt,nr=w(()=>{"use strict";jt=[{key:"timer",name:"Timer",group:"Match",selector:"#timerHolder",size:[188,77]},{key:"matchInfo",name:"Mode and map",group:"Match",selector:"#matchInfo",size:[110,50]},{key:"teamScores",name:"Team scores",group:"Match",selector:"#teamScores",display:"block",size:[220,40],note:"team modes"},{key:"rounds",name:"Rounds",group:"Match",selector:"#roundsDisplay",display:"inline-block",size:[200,60],note:"round based"},{key:"zoneCount",name:"Zone count",group:"Match",selector:"#scoreZoneCount",display:"inline-block",size:[57,43],note:"hardpoint"},{key:"lives",name:"Lives",group:"Match",selector:"#livesCount",display:"inline-block",size:[57,43],note:"LMS, infected"},{key:"gameMessage",name:"Match message",group:"Match",selector:"#gameMessage",size:[400,30]},{key:"roundMessage",name:"Round message",group:"Match",selector:"#roundMessage",size:[400,30]},{key:"challenge",name:"Challenge banner",group:"Match",selector:"#chalDisplay",size:[300,30]},{key:"fps",name:"FPS",group:"Stats",selector:"#fpsDisplay",setting:"showFPS",display:"block",size:[72,23]},{key:"ping",name:"Ping",group:"Stats",selector:"#pingDisplay",setting:"showPing",display:"block",size:[72,23]},{key:"kills",name:"Kills",group:"Stats",selector:"#killCount",setting:"showKillC",display:"inline-block",size:[57,43]},{key:"deaths",name:"Deaths",group:"Stats",selector:"#deathCount",setting:"showDeaths",display:"inline-block",size:[57,43]},{key:"streak",name:"Streak",group:"Stats",selector:"#streakCount",setting:"showStreak",display:"inline-block",size:[57,43]},{key:"kd",name:"K/D",group:"Stats",selector:"#kdCount",setting:"showKD",display:"inline-block",size:[77,43]},{key:"score",name:"Score",group:"Stats",selector:"#scoreCount",setting:"showScore",display:"inline-block",size:[57,43]},{key:"speedRun",name:"Parkour timer",group:"Stats",selector:"#speedRunHolder",display:"block",size:[200,60],note:"parkour"},{key:"leaderboard",name:"Leaderboard",group:"Feed",selector:"#leaderboardHolder",size:[327,54]},{key:"centerLeader",name:"Center leaderboard",group:"Feed",selector:"#centerLeaderDisplay",display:"block",size:[300,120],note:"comp"},{key:"killFeed",name:"Kill feed",group:"Feed",selector:"#killFeed",setting:"showKills",display:"inline-grid",size:[240,120]},{key:"chat",name:"Chat",group:"Feed",selector:"#chatHolder",rule:"#uiBase.onGame #chatHolder",size:[386,248]},{key:"weapons",name:"Weapons",group:"Combat",selector:"#weapHolder",size:[127,203]},{key:"ammo",name:"Ammo",group:"Combat",selector:"#ammoHolder",size:[148,63]},{key:"perks",name:"Perks",group:"Combat",selector:"#perkHolder",size:[65,40]},{key:"krTag",name:"Deposit coins",group:"Combat",selector:"#krTagHolder",size:[71,65],note:"deposit"},{key:"giftTag",name:"Gift drops",group:"Combat",selector:"#giftTagHolder",size:[65,65]},{key:"powerUps",name:"Powerups",group:"Combat",selector:"#powerUpHolder",size:[65,65]},{key:"killStreak",name:"Kill streak",group:"Combat",selector:"#killStreakHolder",size:[65,65]},{key:"player",name:"Health and class",group:"Player",selector:"#bottomLeftPlayer",size:[376,90]},{key:"zPerks",name:"Class perks",group:"Player",selector:"#zPerksHolder",size:[65,40]},{key:"nuke",name:"Nuke counter",group:"Kute",selector:"#kuteNukeCounter",clientSetting:"nukeCounter",display:"flex",size:[90,56]},{key:"keystrokes",name:"Keystrokes",group:"Kute",selector:"#kuteKeystrokes",clientSetting:"keystrokes",display:"flex",size:[190,82]},{key:"spotify",name:"Spotify",group:"Kute",selector:"#kuteSpotifyOverlay",clientSetting:"spotifyOverlay",display:"flex",size:[320,82]},{key:"menuTimer",name:"Menu timer",group:"Kute",selector:"#uiBase.onMenu .spectateInfo",clientSetting:"menuTimer",size:[150,60],note:"menu",menu:(s,e)=>[s/2,e*.4-105]}]});var ul={};A(ul,{HudEditor:()=>rr,default:()=>Tk,implicitShift:()=>Os});function Os(s,e){if(s!=="spotify"||!d.settings.data.keystrokes)return 0;let t=e.spotify??{},o=e.keystrokes??{};if(t.x||t.y||o.x||o.y)return 0;let n=$k*(1+(o.s??1))/2,r=Ck*(1-(t.s??1))/2;return Math.round(n+Mk-r)}var Ek,em,$k,Ck,Mk,rr,Tk,ir=w(()=>{"use strict";F();nr();Pt();Hn();Ek="kute_hudLayoutCSS",em="kute_hud_geometry",$k=190,Ck=320,Mk=12;rr=class{constructor(){this.style=null,this.open=!1,this.menuRects={},d.hudEditor={edit:()=>this.edit(),apply:()=>this.apply()},this.migrateNukeCounter(),this.apply(),Object.keys(this.measureMenuWidgets()).length===0&&setTimeout(()=>this.measureMenuWidgets(),3e3)}get layout(){return{...d.settings.data.hudLayout}}save(e){d.settings.data.hudLayout=e,window.chrome.webview.postMessage(`set-config-json hudLayout ${JSON.stringify(e)}`),this.apply()}migrateNukeCounter(){let e=d.settings.data.nukeCounterConfig;if(!e||e.x===void 0&&e.y===void 0&&e.scale===void 0)return;let{layout:t}=this;t.nuke??={x:Math.round(((e.x??94)-94)*100)/100,y:Math.round(((e.y??50)-50)*100)/100,s:e.scale??1};let o={goal:e.goal??0,background:e.background??!0};d.settings.data.nukeCounterConfig=o,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(o)}`),this.save(t)}apply(){let{layout:e}=this,t="";for(let o of jt){let n=e[o.key]??{},r=(n.x??0)!==0||(n.y??0)!==0,i=(n.s??1)!==1,a=Os(o.key,e);if(!r&&!i&&!a)continue;let l=[];r?l.push(`translate:${n.x??0}vw ${n.y??0}vh`):a&&l.push(`translate:${a}px 0`),i&&l.push(`scale:${n.s}`),t+=`${o.rule??o.selector}{${l.join(";")}}`}this.style||(this.style=document.createElement("style"),this.style.id=Ek,document.head.append(this.style)),this.style.textContent=t}inMatch(){let e=document.querySelector("#inGameUI");return!!e&&window.getComputedStyle(e).display!=="none"}snapshot(){if(!this.inMatch())return null;let e=[];for(let i of jt){if(i.menu)continue;let a=document.querySelector(i.selector);a&&e.push({def:i,element:a,visible:window.getComputedStyle(a).display!=="none"})}let t={vw:window.innerWidth,vh:window.innerHeight,factor:1,game:Bt().id??"",rects:{}},o=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let{def:i,element:a,visible:l}of e){if(!l)continue;let c=a.getBoundingClientRect();c.width<=0||(t.rects[i.key]=[c.x,c.y,c.width,c.height,1],c.width>60&&a.offsetWidth>0&&(t.factor=c.width/a.offsetWidth))}let n=e.filter(({def:i})=>!t.rects[i.key]&&i.display);if(n.length>0){let i=document.createElement("style");i.textContent=n.map(({def:a})=>`${a.selector}{display:${a.display}!important}`).join(""),document.head.append(i);for(let{def:a,element:l}of n){let c=l.getBoundingClientRect();c.width>0&&(t.rects[a.key]=[c.x,c.y,c.width,c.height,0])}i.remove()}for(let{def:i,element:a}of e){if(t.rects[i.key])continue;let l=a.getBoundingClientRect();t.rects[i.key]=[l.x,l.y,l.width,l.height,0]}let r=this.menuRects[`${t.vw}x${t.vh}`]??{};for(let i of jt){if(!i.menu)continue;if(r[i.key]){t.rects[i.key]=r[i.key];continue}let[a,l]=i.menu(t.vw,t.vh),[c,u]=i.size??[0,0];t.rects[i.key]=[a-c/2,l-u/2,c,u,1]}this.style&&(this.style.textContent=o);try{window.localStorage.setItem(em,JSON.stringify(t))}catch{}return t}geometry(){if(this.inMatch())return this.snapshot();let e=null;try{e=JSON.parse(window.localStorage.getItem(em)??"null")}catch{e=null}return!e?.rects||e.vw!==window.innerWidth||e.vh!==window.innerHeight?null:this.withMenuWidgets(e)}measureMenuWidgets(){let e={},t=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let o of jt){if(!o.menu)continue;let n=document.querySelector(o.selector)?.getBoundingClientRect();n&&n.width>0&&(e[o.key]=[n.x,n.y,n.width,n.height,1])}return this.style&&(this.style.textContent=t),Object.keys(e).length>0&&(this.menuRects[`${window.innerWidth}x${window.innerHeight}`]=e),e}withMenuWidgets(e){return{...e,rects:{...e.rects,...this.measureMenuWidgets()}}}async edit(){if(this.open)return;if(this.inMatch()){this.show(this.snapshot());return}let e=this.geometry();if(e?.game&&e.game===Bt().id){this.show(e);return}if(!await Ce({title:"Set up your HUD",paragraphs:["The editor places everything exactly where it sits in a match, so it needs a match to measure.","Kute opens a private one for you, nobody else can join it. If you are in a game right now, you leave it."],stay:"Not now",leave:"Open a private match"})||this.open)return;if(document.querySelector("#signedInHeaderBar")===null){d.showNotification?.("Log in first, a private match needs an account",!1,5);return}this.open=!0,d.showNotification?.("Opening a private match",!1,4);let o=await Cs();if(!(o!==null&&await Ms(o))){this.open=!1,d.showNotification?.("Could not open a private match. Is a host slot free?",!1,6);return}await new Promise(r=>{setTimeout(r,1500)}),this.open=!1,this.show(this.snapshot()??this.geometry())}show(e){if(!e){d.showNotification?.("Could not measure the HUD, try again",!1,6);return}this.open=!0,Promise.resolve().then(()=>(hl(),pl)).then(t=>t.openEditor(this,e)).catch(t=>{this.open=!1,console.error("[kute] hud editor:",t)})}closed(){this.open=!1}},Tk=new rr});var pl={};A(pl,{openEditor:()=>Ak});async function Ak(s,e){document.pointerLockElement&&document.exitPointerLock(),await new Promise(y=>setTimeout(y,0));let{layout:t}=s,o=document.createElement("style");o.id="kute_hudEditorCSS",o.textContent=Xh,document.head.append(o),document.documentElement.classList.add("kuteHudEdit");let n=document.createElement("div");n.id="kuteHudEditor",document.body.append(n);let r=(y,C)=>{let[R,K,z,N,V]=C,de=!V||z<=0||N<=0,Z=z>window.innerWidth*.5,ge=N>window.innerHeight*.5,le=de?ar:z,ze=de?ar:N,Zt=R,Eo=K;return!de&&Z&&(le=y.size?.[0]??ar,Zt=R+z/2-le/2),!de&&ge&&(ze=y.size?.[1]??ar,Eo=K+N/2-ze/2),de&&R>window.innerWidth/2&&(Zt=R-le),de&&K>window.innerHeight/2&&(Eo=K-ze),le=Math.min(le,window.innerWidth),ze=Math.min(ze,window.innerHeight),{x:lr(Zt,0,window.innerWidth-le),y:lr(Eo,0,window.innerHeight-ze),w:le,h:ze,empty:de}},i=y=>{let C=y.filter(R=>!R.empty);for(let R of y)if(R.empty){for(let K=0;K<12;K++){let z=C.find(V=>R.xV.x&&R.yV.y);if(!z)break;R.y+R.h+2+R.h<=window.innerHeight?R.y=Math.min(z.y+z.h+2,window.innerHeight-R.h):R.x=lr(z.x+z.w+2,0,window.innerWidth-R.w)}C.push(R)}},a=[];for(let y of jt){let C=e.rects[y.key];if(!C||y.clientSetting&&Mo(d.settings.data,y.clientSetting))continue;let R=document.createElement("div");R.className="hudBox";let K=document.createElement("div");K.className="hudLabel",K.textContent=y.name,R.append(K),n.append(R),a.push({def:y,box:R,...r(y,C),drawn:null})}i(a);let l=!1;for(let y of a){y.w>60&&(l=!1);let C=l&&y.y+y.h+2060?!1:!l}let c=[];for(let y of["hudGuideV","hudGuideH"]){let C=document.createElement("div");C.className=`hudGuide ${y}`,C.style.display="none",n.append(C),c.push(C)}let u=y=>y.setting?dl(y.setting):y.clientSetting?d.settings.data[y.clientSetting]!==!1:!0,h=y=>t[y]??={},p=y=>{let C={...h(y)},R=Os(y,t);return R&&(C.x=cr(R/window.innerWidth*100)),C},f=(y,C)=>[y/100*window.innerWidth*e.factor,C/100*window.innerHeight*e.factor],m=y=>{let C=t[y.def.key]??{},[R,K]=f(C.x??0,C.y??0),z=R+Os(y.def.key,t)*e.factor,N=C.s??1,V=y.w*N,de=y.h*N,Z=y.x+y.w/2+z-V/2,ge=y.y+y.h/2+K-de/2;y.box.style.left=`${Math.round(Z)}px`,y.box.style.top=`${Math.round(ge)}px`,y.box.style.width=`${Math.round(V)}px`,y.box.style.height=`${Math.round(de)}px`,y.box.classList.toggle("hudOff",!u(y.def)),y.box.classList.toggle("hudEmpty",y.empty),y.drawn=new DOMRect(Z,ge,V,de)},g=()=>{for(let y of a)m(y)},b=()=>{d.settings.data.hudLayout=t,s.apply()},v=new Map,k=new Map,E=()=>{for(let y of a){let C=v.get(y.def.key);if(!C)continue;let R=t[y.def.key],K=R?.s??1,z=!!R&&((R.x??0)!==0||(R.y??0)!==0||K!==1);C.classList.toggle("hpChanged",z);let N=C.querySelector(".hpMoved");N&&(N.textContent=K===1?"":`${Math.round(K*100)}%`);let V=k.get(y.def.key);V&&(V.checked=u(y.def))}},L=null,x=(y,C)=>y.box.classList.toggle("hudActive",C||L===y),$=y=>{L=y;for(let C of a)C.box.classList.toggle("hudActive",C===y)},I=(y,C,R,K)=>{let z=h(y.def.key),N=e.factor||1;z.x=cr((K.x??0)+C/(window.innerWidth*N)*100),z.y=cr((K.y??0)+R/(window.innerHeight*N)*100),b()},_=(y,C,R,K)=>{let z=[0,window.innerWidth/2,window.innerWidth],N=[0,window.innerHeight/2,window.innerHeight];for(let Z of a)Z===y||!Z.drawn||(z.push(Z.drawn.left,Z.drawn.left+Z.drawn.width/2,Z.drawn.right),N.push(Z.drawn.top,Z.drawn.top+Z.drawn.height/2,Z.drawn.bottom));let V=null,de=null;for(let Z of[C.left+R,C.left+R+C.width/2,C.right+R])for(let ge of z){let le=ge-Z;Math.abs(le)<=tm&&(V===null||Math.abs(le){z.preventDefault(),$(y),C.setPointerCapture(z.pointerId),C.classList.add("hudDragging"),R={x:z.clientX,y:z.clientY,rect:y.drawn??C.getBoundingClientRect(),from:p(y.def.key)}},C.onpointermove=z=>{if(!R||!C.hasPointerCapture(z.pointerId))return;let[N,V]=_(y,R.rect,z.clientX-R.x,z.clientY-R.y);I(y,N,V,R.from),g()};let K=()=>{R&&(R=null,C.classList.remove("hudDragging"),c[0].style.display="none",c[1].style.display="none",E())};C.onpointerup=K,C.onpointercancel=K,C.onwheel=z=>{z.preventDefault(),$(y);let N=h(y.def.key);N.s=cr(lr((N.s??1)+(z.deltaY<0?.05:-.05),.3,3)),b(),g(),E()}}let H=document.createElement("div");H.style.cssText="position:fixed;top:50%;left:50%;transform:translate(-50%, -50%)",n.append(H);let G=H.attachShadow({mode:"open"});G.innerHTML=Zh;let J=y=>G.querySelector(`#${y}`),B=(y,C)=>{if(y.setting)window.setSetting(y.setting,C);else if(y.clientSetting){let R=y.clientSetting;d.settings.data[R]=C,window.chrome.webview.postMessage(`set-config, ${R}, ${C}`);let K=`toggle${R.charAt(0).toUpperCase()}${R.slice(1)}`;typeof d.settings[K]=="function"&&d.settings[K](C);let z=document.querySelector(`#${R}`);z&&(z.checked=C)}g(),E()},re=J("hpList"),je="";for(let y of a){let{def:C}=y;if(C.group!==je){({group:je}=C);let V=document.createElement("div");V.className="hpGroup",V.textContent=je.toUpperCase(),re.append(V)}let R=document.createElement("label");R.className="hpRow";let K=document.createElement("span");if(K.className="hpName",K.textContent=C.name,C.note){let V=document.createElement("span");V.className="hpNote",V.textContent=` ${C.note}`,K.append(V)}let z=document.createElement("span");z.className="hpMoved";let N=document.createElement("span");if(N.className="hpReset",N.textContent="reset",N.title="Put it back where Krunker had it",N.onclick=V=>{V.preventDefault(),delete t[C.key],b(),g(),E()},R.append(K,z,N),C.setting||C.clientSetting){let V=document.createElement("input");V.type="checkbox",V.checked=u(C),V.onchange=()=>B(C,V.checked),R.append(V),k.set(C.key,V)}R.onpointerenter=()=>x(y,!0),R.onpointerleave=()=>x(y,!1),re.append(R),v.set(C.key,R)}let be=J("hpPanel"),Ee=J("hpHead"),j=null;Ee.onpointerdown=y=>{let C=H.getBoundingClientRect();H.style.cssText=`position:fixed;left:${Math.round(C.left)}px;top:${Math.round(C.top)}px`,Ee.setPointerCapture(y.pointerId),j={x:y.clientX-C.left,y:y.clientY-C.top},be.classList.add("hpBusy")},Ee.onpointermove=y=>{j&&(H.style.left=`${Math.round(y.clientX-j.x)}px`,H.style.top=`${Math.round(y.clientY-j.y)}px`)},Ee.onpointerup=()=>{j=null,be.classList.remove("hpBusy")};let X=new AbortController,Y=()=>{X.abort(),n.remove(),o.remove(),document.documentElement.classList.remove("kuteHudEdit"),s.save(t),s.closed()};J("hpDone").onclick=Y,window.addEventListener("resize",()=>{Y(),d.showNotification?.("The window changed size, open the HUD editor again",!1,5)},{signal:X.signal}),J("hpReset").onclick=()=>{for(let y of Object.keys(t))delete t[y];b(),g(),E()},document.addEventListener("keydown",y=>{if(y.key==="Escape"){y.preventDefault(),y.stopPropagation(),Y();return}if(!L||!y.key.startsWith("Arrow"))return;y.preventDefault(),y.stopPropagation();let C=y.shiftKey?10:1,R=(y.key==="ArrowRight"?C:0)-(y.key==="ArrowLeft"?C:0),K=(y.key==="ArrowDown"?C:0)-(y.key==="ArrowUp"?C:0);I(L,R,K,p(L.def.key)),g(),E()},{signal:X.signal,capture:!0}),g(),E()}var tm,ar,lr,cr,hl=w(()=>{"use strict";Yh();Jh();F();nr();ir();To();tm=6,ar=24,lr=(s,e,t)=>Math.min(t,Math.max(e,s)),cr=s=>Math.round(s*100)/100});var rm={};function Pk(){document.querySelector("#settSearch")&&(window.closWind?.(sm),window.showWindow?.(sm))}var dr,om,nm,Lk,Rk,sm,ml=w(()=>{"use strict";F();Ae();dr=document.createElement("div");dr.className="settName";dr.style.cssText="display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px 12px;margin-top:10px";om={Keybinds:localStorage.getItem("kute_Keybinds")==="true"||localStorage.getItem("kute_Keybinds")===null,Sensitivity:localStorage.getItem("kute_Sensitivity")==="true"||localStorage.getItem("kute_Sensitivity")===null,Sound:localStorage.getItem("kute_Sound")==="true"||localStorage.getItem("kute_Sound")===null},nm="";for(let s in om)nm+=`Import ${s} + `,this.enemyOBJ=0,this.enemyTimeout=null,this.observer=null,this.pointCounter=null,this.gameUpdateListener=e=>{e.data==="game-updated"&&setTimeout(()=>{He()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.setupDisplay())},2e3)},u.settings.toggleHpEnemyCounter=e=>this.toggle(e),this.toggle(!0)}toggle(e){e?(window.chrome.webview.addEventListener("message",this.gameUpdateListener),He()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.setupDisplay())):(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.observer?.disconnect(),this.numberDisplay.remove())}processTeamScores=()=>{let{pointCounter:e}=this;if(e){for(let t of document.querySelectorAll("#tScoreC1, #tScoreC2"))if(t&&!t.className.includes("you")){let o=t.nextElementSibling;if(!o)continue;let n=Number.parseInt(o.textContent??"",10);if(Number.isNaN(n))continue;n>this.enemyOBJ&&(e.textContent=String((n-this.enemyOBJ)/10),this.enemyTimeout&&clearTimeout(this.enemyTimeout),this.enemyTimeout=setTimeout(()=>{e.textContent="0",this.enemyTimeout=null},1600)),this.enemyOBJ=n}}};setupDisplay(){let e=U(".pointVal",this.numberDisplay);this.pointCounter=e,U(".topRightCounters").append(this.numberDisplay),this.observer?.disconnect(),this.observer=new MutationObserver(this.processTeamScores),this.observer.observe(U("#teamScores"),{childList:!0,subtree:!0})}},fk=new sl});var al={};A(al,{default:()=>gk});var il,gk,ll=w(()=>{"use strict";D();il=class{constructor(){this.originalPlay=()=>{},this.observer=new MutationObserver(e=>this.parseChat(e)),u.settings.toggleHsSound=e=>this.toggle(e),this.setupSoundHook()}setupSoundHook(){window.SOUND?.play?(this.originalPlay=window.SOUND.play,this.toggle(!0)):setTimeout(()=>this.setupSoundHook(),100)}toggle(e){if(e){let t=document.querySelector("#chatList");t&&this.observer.observe(t,{childList:!0});let o=this;window.SOUND.play=function(n,r,i){if(!(n==="headshot_0"&&r===void 0))return o.originalPlay.call(window.SOUND,n,r,i)}}else window.SOUND.play=this.originalPlay,this.observer.disconnect()}parseChat(e){for(let t of e)if(t.type==="childList")for(let o of t.addedNodes){if(!(o instanceof HTMLElement)||o.tagName!=="DIV")continue;let n=o.querySelector("span.chatMsg");if(!n)continue;let r=n.querySelectorAll("span[style*='color:#'], span[style*='color: rgb']");if(r.length<=0)continue;let i=r[0],a=i.style.color.trim().toLowerCase(),l=i.textContent.trim();a==="rgb(255, 255, 255)"&&l==="You"&&n.querySelector("img")&&window.SOUND.play("headshot_0",1,!1)}}},gk=new il});var Gh,Uh=w(()=>{Gh=`html.kuteHudEdit #app,html.kuteHudEdit #fullMenHider{opacity:.1!important;pointer-events:none!important}html.kuteHudEdit #kuteHudEditor{position:fixed;inset:0;z-index:2147483000;background:#00000073;font-family:Consolas,monospace;color:#fff}.hudBox{position:absolute;box-sizing:border-box;border:1px solid rgba(53,224,232,.65);border-radius:4px;background:#35e0e81a;cursor:grab;touch-action:none}.hudBox:hover,.hudBox.hudActive{border-color:#35e0e8;background:#35e0e840}.hudBox.hudDragging{cursor:grabbing}.hudBox.hudEmpty{border-style:dashed}.hudBox.hudOff{border-color:#ffffff4d;background:#ffffff0f}.hudLabel{position:absolute;bottom:100%;left:-1px;padding:0 .35em;border-radius:3px 3px 0 0;background:#35e0e8d9;color:#05201f;font-size:11px;line-height:1.5;white-space:nowrap;pointer-events:none}.hudBox.hudLabelBelow .hudLabel{top:100%;bottom:auto;border-radius:0 0 3px 3px}.hudBox.hudOff .hudLabel{background:#fff6;color:#111}.hudGuide{position:absolute;background:#ffc147;pointer-events:none}.hudGuide.hudGuideV{top:0;width:1px;height:100%}.hudGuide.hudGuideH{left:0;width:100%;height:1px} +`});var Vh,Wh=w(()=>{Vh='
                  HUD Layout
                  Boxes are where things sit in the match.
                  Drag to move, wheel to resize, arrows nudge
                  Reset all
                  Done
                  '});var Yh={};A(Yh,{HUD_ELEMENTS:()=>Kt,gameSettingOn:()=>cl});function cl(s){try{return window.localStorage.getItem(`kro_setngss_${s}`)!=="false"}catch{return!0}}var Kt,sr=w(()=>{"use strict";Kt=[{key:"timer",name:"Timer",group:"Match",selector:"#timerHolder",size:[188,77]},{key:"matchInfo",name:"Mode and map",group:"Match",selector:"#matchInfo",size:[110,50]},{key:"teamScores",name:"Team scores",group:"Match",selector:"#teamScores",display:"block",size:[220,40],note:"team modes"},{key:"rounds",name:"Rounds",group:"Match",selector:"#roundsDisplay",display:"inline-block",size:[200,60],note:"round based"},{key:"zoneCount",name:"Zone count",group:"Match",selector:"#scoreZoneCount",display:"inline-block",size:[57,43],note:"hardpoint"},{key:"lives",name:"Lives",group:"Match",selector:"#livesCount",display:"inline-block",size:[57,43],note:"LMS, infected"},{key:"gameMessage",name:"Match message",group:"Match",selector:"#gameMessage",size:[400,30]},{key:"roundMessage",name:"Round message",group:"Match",selector:"#roundMessage",size:[400,30]},{key:"challenge",name:"Challenge banner",group:"Match",selector:"#chalDisplay",size:[300,30]},{key:"fps",name:"FPS",group:"Stats",selector:"#fpsDisplay",setting:"showFPS",display:"block",size:[72,23]},{key:"ping",name:"Ping",group:"Stats",selector:"#pingDisplay",setting:"showPing",display:"block",size:[72,23]},{key:"kills",name:"Kills",group:"Stats",selector:"#killCount",setting:"showKillC",display:"inline-block",size:[57,43]},{key:"deaths",name:"Deaths",group:"Stats",selector:"#deathCount",setting:"showDeaths",display:"inline-block",size:[57,43]},{key:"streak",name:"Streak",group:"Stats",selector:"#streakCount",setting:"showStreak",display:"inline-block",size:[57,43]},{key:"kd",name:"K/D",group:"Stats",selector:"#kdCount",setting:"showKD",display:"inline-block",size:[77,43]},{key:"score",name:"Score",group:"Stats",selector:"#scoreCount",setting:"showScore",display:"inline-block",size:[57,43]},{key:"speedRun",name:"Parkour timer",group:"Stats",selector:"#speedRunHolder",display:"block",size:[200,60],note:"parkour"},{key:"leaderboard",name:"Leaderboard",group:"Feed",selector:"#leaderboardHolder",size:[327,54]},{key:"centerLeader",name:"Center leaderboard",group:"Feed",selector:"#centerLeaderDisplay",display:"block",size:[300,120],note:"comp"},{key:"killFeed",name:"Kill feed",group:"Feed",selector:"#killFeed",setting:"showKills",display:"inline-grid",size:[240,120]},{key:"chat",name:"Chat",group:"Feed",selector:"#chatHolder",rule:"#uiBase.onGame #chatHolder",size:[386,248]},{key:"weapons",name:"Weapons",group:"Combat",selector:"#weapHolder",size:[127,203]},{key:"ammo",name:"Ammo",group:"Combat",selector:"#ammoHolder",size:[148,63]},{key:"perks",name:"Perks",group:"Combat",selector:"#perkHolder",size:[65,40]},{key:"krTag",name:"Deposit coins",group:"Combat",selector:"#krTagHolder",size:[71,65],note:"deposit"},{key:"giftTag",name:"Gift drops",group:"Combat",selector:"#giftTagHolder",size:[65,65]},{key:"powerUps",name:"Powerups",group:"Combat",selector:"#powerUpHolder",size:[65,65]},{key:"killStreak",name:"Kill streak",group:"Combat",selector:"#killStreakHolder",size:[65,65]},{key:"player",name:"Health and class",group:"Player",selector:"#bottomLeftPlayer",size:[376,90]},{key:"zPerks",name:"Class perks",group:"Player",selector:"#zPerksHolder",size:[65,40]},{key:"nuke",name:"Nuke counter",group:"Kute",selector:"#kuteNukeCounter",clientSetting:"nukeCounter",display:"flex",size:[90,56]},{key:"keystrokes",name:"Keystrokes",group:"Kute",selector:"#kuteKeystrokes",clientSetting:"keystrokes",display:"flex",size:[190,82]},{key:"spotify",name:"Spotify",group:"Kute",selector:"#kuteSpotifyOverlay",clientSetting:"spotifyOverlay",display:"flex",size:[320,82]},{key:"menuTimer",name:"Menu timer",group:"Kute",selector:"#uiBase.onMenu .spectateInfo",clientSetting:"menuTimer",size:[150,60],note:"menu",menu:(s,e)=>[s/2,e*.4-105]}]});var dl={};A(dl,{HudEditor:()=>nr,default:()=>Sk,implicitShift:()=>Hs});function Hs(s,e){if(s!=="spotify"||!u.settings.data.keystrokes)return 0;let t=e.spotify??{},o=e.keystrokes??{};if(t.x||t.y||o.x||o.y)return 0;let n=kk*(1+(o.s??1))/2,r=yk*(1-(t.s??1))/2;return Math.round(n+xk-r)}var wk,Xh,kk,yk,xk,nr,Sk,rr=w(()=>{"use strict";D();sr();Rt();zn();wk="kute_hudLayoutCSS",Xh="kute_hud_geometry",kk=190,yk=320,xk=12;nr=class{constructor(){this.style=null,this.open=!1,this.menuRects={},u.hudEditor={edit:()=>this.edit(),apply:()=>this.apply()},this.migrateNukeCounter(),this.apply(),Object.keys(this.measureMenuWidgets()).length===0&&setTimeout(()=>this.measureMenuWidgets(),3e3)}get layout(){return{...u.settings.data.hudLayout}}save(e){u.settings.data.hudLayout=e,window.chrome.webview.postMessage(`set-config-json hudLayout ${JSON.stringify(e)}`),this.apply()}migrateNukeCounter(){let e=u.settings.data.nukeCounterConfig;if(!e||e.x===void 0&&e.y===void 0&&e.scale===void 0)return;let{layout:t}=this;t.nuke??={x:Math.round(((e.x??94)-94)*100)/100,y:Math.round(((e.y??50)-50)*100)/100,s:e.scale??1};let o={goal:e.goal??0,background:e.background??!0};u.settings.data.nukeCounterConfig=o,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(o)}`),this.save(t)}apply(){let{layout:e}=this,t="";for(let o of Kt){let n=e[o.key]??{},r=(n.x??0)!==0||(n.y??0)!==0,i=(n.s??1)!==1,a=Hs(o.key,e);if(!r&&!i&&!a)continue;let l=[];r?l.push(`translate:${n.x??0}vw ${n.y??0}vh`):a&&l.push(`translate:${a}px 0`),i&&l.push(`scale:${n.s}`),t+=`${o.rule??o.selector}{${l.join(";")}}`}this.style||(this.style=document.createElement("style"),this.style.id=wk,document.head.append(this.style)),this.style.textContent=t}inMatch(){let e=document.querySelector("#inGameUI");return!!e&&window.getComputedStyle(e).display!=="none"}snapshot(){if(!this.inMatch())return null;let e=[];for(let i of Kt){if(i.menu)continue;let a=document.querySelector(i.selector);a&&e.push({def:i,element:a,visible:window.getComputedStyle(a).display!=="none"})}let t={vw:window.innerWidth,vh:window.innerHeight,factor:1,game:_t().id??"",rects:{}},o=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let{def:i,element:a,visible:l}of e){if(!l)continue;let c=a.getBoundingClientRect();c.width<=0||(t.rects[i.key]=[c.x,c.y,c.width,c.height,1],c.width>60&&a.offsetWidth>0&&(t.factor=c.width/a.offsetWidth))}let n=e.filter(({def:i})=>!t.rects[i.key]&&i.display);if(n.length>0){let i=document.createElement("style");i.textContent=n.map(({def:a})=>`${a.selector}{display:${a.display}!important}`).join(""),document.head.append(i);for(let{def:a,element:l}of n){let c=l.getBoundingClientRect();c.width>0&&(t.rects[a.key]=[c.x,c.y,c.width,c.height,0])}i.remove()}for(let{def:i,element:a}of e){if(t.rects[i.key])continue;let l=a.getBoundingClientRect();t.rects[i.key]=[l.x,l.y,l.width,l.height,0]}let r=this.menuRects[`${t.vw}x${t.vh}`]??{};for(let i of Kt){if(!i.menu)continue;if(r[i.key]){t.rects[i.key]=r[i.key];continue}let[a,l]=i.menu(t.vw,t.vh),[c,d]=i.size??[0,0];t.rects[i.key]=[a-c/2,l-d/2,c,d,1]}this.style&&(this.style.textContent=o);try{window.localStorage.setItem(Xh,JSON.stringify(t))}catch{}return t}geometry(){if(this.inMatch())return this.snapshot();let e=null;try{e=JSON.parse(window.localStorage.getItem(Xh)??"null")}catch{e=null}return!e?.rects||e.vw!==window.innerWidth||e.vh!==window.innerHeight?null:this.withMenuWidgets(e)}measureMenuWidgets(){let e={},t=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let o of Kt){if(!o.menu)continue;let n=document.querySelector(o.selector)?.getBoundingClientRect();n&&n.width>0&&(e[o.key]=[n.x,n.y,n.width,n.height,1])}return this.style&&(this.style.textContent=t),Object.keys(e).length>0&&(this.menuRects[`${window.innerWidth}x${window.innerHeight}`]=e),e}withMenuWidgets(e){return{...e,rects:{...e.rects,...this.measureMenuWidgets()}}}async edit(){if(this.open)return;if(this.inMatch()){this.show(this.snapshot());return}let e=this.geometry();if(e?.game&&e.game===_t().id){this.show(e);return}if(!await Ce({title:"Set up your HUD",paragraphs:["The editor places everything exactly where it sits in a match, so it needs a match to measure.","Kute opens a private one for you, nobody else can join it. If you are in a game right now, you leave it."],stay:"Not now",leave:"Open a private match"})||this.open)return;if(document.querySelector("#signedInHeaderBar")===null){u.showNotification?.("Log in first, a private match needs an account",!1,5);return}this.open=!0,u.showNotification?.("Opening a private match",!1,4);let o=await $s();if(!(o!==null&&await Cs(o))){this.open=!1,u.showNotification?.("Could not open a private match. Is a host slot free?",!1,6);return}await new Promise(r=>{setTimeout(r,1500)}),this.open=!1,this.show(this.snapshot()??this.geometry())}show(e){if(!e){u.showNotification?.("Could not measure the HUD, try again",!1,6);return}this.open=!0,Promise.resolve().then(()=>(pl(),ul)).then(t=>t.openEditor(this,e)).catch(t=>{this.open=!1,console.error("[kute] hud editor:",t)})}closed(){this.open=!1}},Sk=new nr});var ul={};A(ul,{openEditor:()=>Ek});async function Ek(s,e){document.pointerLockElement&&document.exitPointerLock(),await new Promise(y=>setTimeout(y,0));let{layout:t}=s,o=document.createElement("style");o.id="kute_hudEditorCSS",o.textContent=Gh,document.head.append(o),document.documentElement.classList.add("kuteHudEdit");let n=document.createElement("div");n.id="kuteHudEditor",document.body.append(n);let r=(y,C)=>{let[R,K,z,N,V]=C,de=!V||z<=0||N<=0,Z=z>window.innerWidth*.5,ge=N>window.innerHeight*.5,le=de?ir:z,Be=de?ir:N,Yt=R,xo=K;return!de&&Z&&(le=y.size?.[0]??ir,Yt=R+z/2-le/2),!de&&ge&&(Be=y.size?.[1]??ir,xo=K+N/2-Be/2),de&&R>window.innerWidth/2&&(Yt=R-le),de&&K>window.innerHeight/2&&(xo=K-Be),le=Math.min(le,window.innerWidth),Be=Math.min(Be,window.innerHeight),{x:ar(Yt,0,window.innerWidth-le),y:ar(xo,0,window.innerHeight-Be),w:le,h:Be,empty:de}},i=y=>{let C=y.filter(R=>!R.empty);for(let R of y)if(R.empty){for(let K=0;K<12;K++){let z=C.find(V=>R.xV.x&&R.yV.y);if(!z)break;R.y+R.h+2+R.h<=window.innerHeight?R.y=Math.min(z.y+z.h+2,window.innerHeight-R.h):R.x=ar(z.x+z.w+2,0,window.innerWidth-R.w)}C.push(R)}},a=[];for(let y of Kt){let C=e.rects[y.key];if(!C||y.clientSetting&&$o(u.settings.data,y.clientSetting))continue;let R=document.createElement("div");R.className="hudBox";let K=document.createElement("div");K.className="hudLabel",K.textContent=y.name,R.append(K),n.append(R),a.push({def:y,box:R,...r(y,C),drawn:null})}i(a);let l=!1;for(let y of a){y.w>60&&(l=!1);let C=l&&y.y+y.h+2060?!1:!l}let c=[];for(let y of["hudGuideV","hudGuideH"]){let C=document.createElement("div");C.className=`hudGuide ${y}`,C.style.display="none",n.append(C),c.push(C)}let d=y=>y.setting?cl(y.setting):y.clientSetting?u.settings.data[y.clientSetting]!==!1:!0,h=y=>t[y]??={},p=y=>{let C={...h(y)},R=Hs(y,t);return R&&(C.x=lr(R/window.innerWidth*100)),C},m=(y,C)=>[y/100*window.innerWidth*e.factor,C/100*window.innerHeight*e.factor],f=y=>{let C=t[y.def.key]??{},[R,K]=m(C.x??0,C.y??0),z=R+Hs(y.def.key,t)*e.factor,N=C.s??1,V=y.w*N,de=y.h*N,Z=y.x+y.w/2+z-V/2,ge=y.y+y.h/2+K-de/2;y.box.style.left=`${Math.round(Z)}px`,y.box.style.top=`${Math.round(ge)}px`,y.box.style.width=`${Math.round(V)}px`,y.box.style.height=`${Math.round(de)}px`,y.box.classList.toggle("hudOff",!d(y.def)),y.box.classList.toggle("hudEmpty",y.empty),y.drawn=new DOMRect(Z,ge,V,de)},g=()=>{for(let y of a)f(y)},b=()=>{u.settings.data.hudLayout=t,s.apply()},v=new Map,k=new Map,E=()=>{for(let y of a){let C=v.get(y.def.key);if(!C)continue;let R=t[y.def.key],K=R?.s??1,z=!!R&&((R.x??0)!==0||(R.y??0)!==0||K!==1);C.classList.toggle("hpChanged",z);let N=C.querySelector(".hpMoved");N&&(N.textContent=K===1?"":`${Math.round(K*100)}%`);let V=k.get(y.def.key);V&&(V.checked=d(y.def))}},L=null,x=(y,C)=>y.box.classList.toggle("hudActive",C||L===y),$=y=>{L=y;for(let C of a)C.box.classList.toggle("hudActive",C===y)},I=(y,C,R,K)=>{let z=h(y.def.key),N=e.factor||1;z.x=lr((K.x??0)+C/(window.innerWidth*N)*100),z.y=lr((K.y??0)+R/(window.innerHeight*N)*100),b()},_=(y,C,R,K)=>{let z=[0,window.innerWidth/2,window.innerWidth],N=[0,window.innerHeight/2,window.innerHeight];for(let Z of a)Z===y||!Z.drawn||(z.push(Z.drawn.left,Z.drawn.left+Z.drawn.width/2,Z.drawn.right),N.push(Z.drawn.top,Z.drawn.top+Z.drawn.height/2,Z.drawn.bottom));let V=null,de=null;for(let Z of[C.left+R,C.left+R+C.width/2,C.right+R])for(let ge of z){let le=ge-Z;Math.abs(le)<=Jh&&(V===null||Math.abs(le){z.preventDefault(),$(y),C.setPointerCapture(z.pointerId),C.classList.add("hudDragging"),R={x:z.clientX,y:z.clientY,rect:y.drawn??C.getBoundingClientRect(),from:p(y.def.key)}},C.onpointermove=z=>{if(!R||!C.hasPointerCapture(z.pointerId))return;let[N,V]=_(y,R.rect,z.clientX-R.x,z.clientY-R.y);I(y,N,V,R.from),g()};let K=()=>{R&&(R=null,C.classList.remove("hudDragging"),c[0].style.display="none",c[1].style.display="none",E())};C.onpointerup=K,C.onpointercancel=K,C.onwheel=z=>{z.preventDefault(),$(y);let N=h(y.def.key);N.s=lr(ar((N.s??1)+(z.deltaY<0?.05:-.05),.3,3)),b(),g(),E()}}let H=document.createElement("div");H.style.cssText="position:fixed;top:50%;left:50%;transform:translate(-50%, -50%)",n.append(H);let G=H.attachShadow({mode:"open"});G.innerHTML=Vh;let J=y=>G.querySelector(`#${y}`),B=(y,C)=>{if(y.setting)window.setSetting(y.setting,C);else if(y.clientSetting){let R=y.clientSetting;u.settings.data[R]=C,window.chrome.webview.postMessage(`set-config, ${R}, ${C}`);let K=`toggle${R.charAt(0).toUpperCase()}${R.slice(1)}`;typeof u.settings[K]=="function"&&u.settings[K](C);let z=document.querySelector(`#${R}`);z&&(z.checked=C)}g(),E()},re=J("hpList"),je="";for(let y of a){let{def:C}=y;if(C.group!==je){({group:je}=C);let V=document.createElement("div");V.className="hpGroup",V.textContent=je.toUpperCase(),re.append(V)}let R=document.createElement("label");R.className="hpRow";let K=document.createElement("span");if(K.className="hpName",K.textContent=C.name,C.note){let V=document.createElement("span");V.className="hpNote",V.textContent=` ${C.note}`,K.append(V)}let z=document.createElement("span");z.className="hpMoved";let N=document.createElement("span");if(N.className="hpReset",N.textContent="reset",N.title="Put it back where Krunker had it",N.onclick=V=>{V.preventDefault(),delete t[C.key],b(),g(),E()},R.append(K,z,N),C.setting||C.clientSetting){let V=document.createElement("input");V.type="checkbox",V.checked=d(C),V.onchange=()=>B(C,V.checked),R.append(V),k.set(C.key,V)}R.onpointerenter=()=>x(y,!0),R.onpointerleave=()=>x(y,!1),re.append(R),v.set(C.key,R)}let be=J("hpPanel"),Ee=J("hpHead"),j=null;Ee.onpointerdown=y=>{let C=H.getBoundingClientRect();H.style.cssText=`position:fixed;left:${Math.round(C.left)}px;top:${Math.round(C.top)}px`,Ee.setPointerCapture(y.pointerId),j={x:y.clientX-C.left,y:y.clientY-C.top},be.classList.add("hpBusy")},Ee.onpointermove=y=>{j&&(H.style.left=`${Math.round(y.clientX-j.x)}px`,H.style.top=`${Math.round(y.clientY-j.y)}px`)},Ee.onpointerup=()=>{j=null,be.classList.remove("hpBusy")};let X=new AbortController,Y=()=>{X.abort(),n.remove(),o.remove(),document.documentElement.classList.remove("kuteHudEdit"),s.save(t),s.closed()};J("hpDone").onclick=Y,window.addEventListener("resize",()=>{Y(),u.showNotification?.("The window changed size, open the HUD editor again",!1,5)},{signal:X.signal}),J("hpReset").onclick=()=>{for(let y of Object.keys(t))delete t[y];b(),g(),E()},document.addEventListener("keydown",y=>{if(y.key==="Escape"){y.preventDefault(),y.stopPropagation(),Y();return}if(!L||!y.key.startsWith("Arrow"))return;y.preventDefault(),y.stopPropagation();let C=y.shiftKey?10:1,R=(y.key==="ArrowRight"?C:0)-(y.key==="ArrowLeft"?C:0),K=(y.key==="ArrowDown"?C:0)-(y.key==="ArrowUp"?C:0);I(L,R,K,p(L.def.key)),g(),E()},{signal:X.signal,capture:!0}),g(),E()}var Jh,ir,ar,lr,pl=w(()=>{"use strict";Uh();Wh();D();sr();rr();Co();Jh=6,ir=24,ar=(s,e,t)=>Math.min(t,Math.max(e,s)),lr=s=>Math.round(s*100)/100});var tm={};function Mk(){document.querySelector("#settSearch")&&(window.closWind?.(Qh),window.showWindow?.(Qh))}var cr,Zh,em,$k,Ck,Qh,hl=w(()=>{"use strict";D();Ae();cr=document.createElement("div");cr.className="settName";cr.style.cssText="display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px 12px;margin-top:10px";Zh={Keybinds:localStorage.getItem("kute_Keybinds")==="true"||localStorage.getItem("kute_Keybinds")===null,Sensitivity:localStorage.getItem("kute_Sensitivity")==="true"||localStorage.getItem("kute_Sensitivity")===null,Sound:localStorage.getItem("kute_Sound")==="true"||localStorage.getItem("kute_Sound")===null},em="";for(let s in Zh)em+=`Import ${s} `;dr.innerHTML=nm;Lk=window.importSettingsPopup,Rk=window.importSettings,sm=1;window.importSettingsPopup=()=>{Lk(),queueMicrotask(()=>{U("#importTxt").after(dr)})};window.importSettings=()=>{let s=U("#importTxt"),e=JSON.parse(s.value);localStorage.getItem("kute_Sensitivity")==="false"&&(e.sensitivityX=localStorage.getItem("kro_setngss_sensitivityX"),e.sensitivityY=localStorage.getItem("kro_setngss_sensitivityY"),e.aimSensitivityX=localStorage.getItem("kro_setngss_aimSensitivityX"),e.aimSensitivityY=localStorage.getItem("kro_setngss_aimSensitivityY")),localStorage.getItem("kute_Sound")==="false"&&(e.sound=localStorage.getItem("kro_setngss_sound"),e.ambientVolume=localStorage.getItem("kro_setngss_ambientVolume"),e.dialogueVolume=localStorage.getItem("kro_setngss_dialogueVolume"),e.micVolume=localStorage.getItem("kro_setngss_micVolume"),e.voiceVolume=localStorage.getItem("kro_setngss_voiceVolume"),e.voiceDistance=localStorage.getItem("kro_setngss_voiceDistance"),e.gunsVolume=localStorage.getItem("kro_setngss_gunsVolume"),e.playerVolume=localStorage.getItem("kro_setngss_playerVolume"),e.skinVolume=localStorage.getItem("kro_setngss_skinVolume"),e.uiVolume=localStorage.getItem("kro_setngss_uiVolume"),e.assetVolume=localStorage.getItem("kro_setngss_assetVolume")),localStorage.getItem("kute_Keybinds")==="false"&&delete e.controls,s.value=JSON.stringify(e),Rk(),d.bindShoot(),Pk(),d.kuteIcons?.refresh(),d.autoDetect?.dropUndo(),d.autoDetect?.afterImport()}});var gl={};A(gl,{default:()=>Bk});function Nk(s){let e=s.nextElementSibling;return e instanceof HTMLElement&&e.matches(".market-grid-sentinel")?e:null}async function im(s){for(let e=0;e{"use strict";Ik=".view-stack-overlay, .modal-overlay";_k=()=>new Promise(s=>{requestAnimationFrame(()=>s())});fl=class{constructor(){this.watched=new WeakSet,this.popupClickAt=-1/0,this.lastTop=0,this.lastHeight=0,this.restore=null,this.onWheel=()=>this.finish(!1),document.addEventListener("scroll",e=>this.onScroll(e),{capture:!0,passive:!0}),document.addEventListener("click",e=>{e.target instanceof Element&&e.target.closest(Ik)&&(this.popupClickAt=performance.now())},{capture:!0,passive:!0})}onScroll(e){let t=e.target;if(!(t instanceof HTMLElement))return;if(this.restore){t===this.restore.scroller&&t.scrollTop!==this.restore.top&&(t.scrollTop=this.restore.top);return}let o=t.querySelector(":scope > .market-grid");o instanceof HTMLElement&&(this.watch(t,o),this.lastTop=t.scrollTop,this.lastHeight=o.offsetHeight)}watch(e,t){if(this.watched.has(t))return;this.watched.add(t);let o=t.children.length;new MutationObserver(n=>{let r=n.reduce((l,c)=>l+c.removedNodes.length,0),i=o;if(o=t.children.length,this.restore?.grid===t){o>i&&this.pageArrived();return}i>0&&r>=i&&this.lastTop>e.clientHeight&&performance.now()-this.popupClickAt<5e3&&this.start(e,t,i,n.flatMap(l=>[...l.removedNodes]))}).observe(t,{childList:!0})}start(e,t,o,n){let r=document.createElement("div");r.className=t.className,r.style.cssText=t.style.cssText,r.append(...n),this.restore={scroller:e,grid:t,sentinels:new Set,top:this.lastTop,count:o,until:performance.now()+1e4,pageTimer:0,picture:r},t.style.minHeight=`${this.lastHeight}px`,t.style.alignContent="start",Object.assign(r.style,{position:"absolute",top:`${t.offsetTop}px`,left:`${t.offsetLeft}px`,width:`${t.offsetWidth}px`,margin:"0",zIndex:"1",pointerEvents:"none"}),e.append(r),e.style.overflowAnchor="none",e.scrollTop=this.lastTop,e.addEventListener("wheel",this.onWheel,{passive:!0}),this.waitForPage(),this.blink(this.restore).catch(i=>console.error("[kute] inventory scroll:",i))}pageArrived(){let{restore:e}=this;e&&(e.grid.children.length>=e.count-1||performance.now()>e.until?this.finish(!0):this.waitForPage())}waitForPage(){let{restore:e}=this;e&&(clearTimeout(e.pageTimer),e.pageTimer=window.setTimeout(()=>this.finish(!0),1500))}async blink(e){for(;this.restore===e;){let t=Nk(e.grid);t&&(e.sentinels.add(t),t.style.position="sticky",t.style.bottom="0",t.style.display="none",await im(2),t.style.display=""),await im(2)}}finish(e){let{restore:t}=this;if(t){this.restore=null,clearTimeout(t.pageTimer),t.scroller.removeEventListener("wheel",this.onWheel),t.picture.remove(),t.grid.style.minHeight="",t.grid.style.alignContent="",t.scroller.style.overflowAnchor="";for(let o of t.sentinels)o.style.position="",o.style.bottom="",o.style.display="";e&&(t.scroller.scrollTop=t.top),this.lastTop=t.scroller.scrollTop,this.lastHeight=t.grid.offsetHeight}}},Bk=new fl});var lm,am=w(()=>{lm=`#kuteKeystrokes{position:absolute;left:463px;bottom:23px;z-index:10;display:flex;align-items:center;gap:12px;box-sizing:border-box;width:190px;height:82px;padding:5px 10px;border:1px solid rgba(53,224,232,.7);border-radius:8px;background:#0a1416e0;box-shadow:0 4px 18px #00000059;color:#cfeff1;font-family:Arial,sans-serif;font-weight:700;pointer-events:none}#kuteKeystrokesKeys{display:grid;grid-template-columns:repeat(4,24px);grid-template-rows:repeat(3,20px);gap:4px}.kuteKey{display:flex;justify-content:center;align-items:center;overflow:hidden;border:1px solid rgba(53,224,232,.35);border-radius:4px;background:#35e0e814;font-size:10px;white-space:nowrap}.kuteKey.on,#kuteMouse>.on,#kuteWheel>.on{border-color:#35e0e8;background:#35e0e8;color:#0a1416;box-shadow:0 0 8px #35e0e8cc}#kuteKeyMelee{grid-area:1 / 1}#kuteKeyForward{grid-area:1 / 2}#kuteKeySwap{grid-area:1 / 3}#kuteKeyReload{grid-area:1 / 4}#kuteKeyLeft{grid-area:2 / 1}#kuteKeyBack{grid-area:2 / 2}#kuteKeyRight{grid-area:2 / 3}#kuteKeyCrouch{grid-area:3 / 1 / 4 / 3}#kuteKeyJump{grid-area:3 / 3 / 4 / 5}#kuteMouseBox{position:relative;padding:5px}.kuteMove{--arc: rgba(53, 224, 232, .14);position:absolute;inset:0;box-sizing:border-box;border:2px solid transparent;border-radius:24px 24px 19px 19px}.kuteMove.on{--arc: rgba(53, 224, 232, .6)}.kuteMove.fast{--arc: #35e0e8}#kuteMoveLeft{border-left-color:var(--arc)}#kuteMoveRight{border-right-color:var(--arc)}#kuteMoveUp{border-top-color:var(--arc)}#kuteMoveDown{border-bottom-color:var(--arc)}#kuteMouse{position:relative;width:38px;height:58px;box-sizing:border-box;border:1px solid rgba(53,224,232,.35);border-radius:19px 19px 14px 14px;overflow:hidden}#kuteMouseLeft,#kuteMouseRight{position:absolute;top:0;width:50%;height:45%;border-bottom:1px solid rgba(53,224,232,.35);box-sizing:border-box;background:#35e0e814}#kuteMouseLeft{left:0}#kuteMouseRight{right:0}#kuteMouseSplit{position:absolute;top:0;left:calc(50% - .5px);width:1px;height:45%;background:#35e0e859}#kuteWheel{position:absolute;top:6px;left:50%;z-index:1;display:flex;flex-direction:column;box-sizing:border-box;width:10px;height:18px;margin-left:-5px;overflow:hidden;border:1px solid rgba(53,224,232,.5);border-radius:5px;background:#0a1416}#kuteWheel.on{border-color:#35e0e8;background:#35e0e8;box-shadow:0 0 8px #35e0e8cc}#kuteWheelUp,#kuteWheelDown{flex:1 1 0}#kuteWheelUp{border-bottom:1px solid rgba(53,224,232,.35)} -`});var dm,cm=w(()=>{dm='
                  '});var yl={};A(yl,{default:()=>Vk});function gm(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`N${s-96}`:s>=112&&s<=123?`F${s-111}`:Gk[s]??"?"}function Wk(s,e){let t=[],o=[[`cont_${s}_alt`,-1],[`cont_${s}`,e]];for(let[n,r]of o){let i=null;try{i=window.localStorage.getItem(n)}catch{i=null}let a=i===null?r:Number(i);a>0&&a<1e4&&t.push(a)}return t}var Ok,Fk,um,pm,vl,Dk,qk,wl,hm,mm,Kk,fm,jk,Uk,Gk,kl,Vk,xl=w(()=>{"use strict";am();cm();F();Ok=131,Fk=120,um=32,pm=80,vl=.02,Dk=.35,qk=20,wl=80,hm=3,mm=3e3,Kk=3,fm="kute_keystrokes_speed",jk=120,Uk=[["kuteKeyForward","0",87],["kuteKeyBack","1",83],["kuteKeyLeft","2",65],["kuteKeyRight","3",68],["kuteKeyJump","jumpKey",32],["kuteKeyCrouch","crouchKey",16],["kuteKeyReload","reloadKey",82],["kuteKeyMelee","meleeKey",81],["kuteKeySwap","swapKey",69]],Gk={8:"BKSP",9:"TAB",13:"ENT",16:"SHIFT",17:"CTRL",18:"ALT",20:"CAPS",32:"SPACE",37:"\u2190",38:"\u2191",39:"\u2192",40:"\u2193",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"};kl=class{constructor(){this.widget=null,this.byCode=new Map,this.wheelTimers=new Map,this.rampWheelAt=-1/0,this.spaceDownAt=-1/0,this.spaceIgnored=!1,this.arcs=[],this.moveX=0,this.moveY=0,this.lastMove=-1/0,this.moveTimer=0,this.typical=Kk,this.typicalMs=0,this.fastUntil=[0,0,0,0],this.onKeyDown=e=>this.key(e.keyCode,!0),this.onKeyUp=e=>this.key(e.keyCode,!1),this.onMouseDown=e=>this.button(e.button,!0),this.onMouseUp=e=>this.button(e.button,!1),this.onWheel=e=>this.wheel(e.deltaY<0),this.onMouseMove=e=>this.move(e),this.onMoveIdle=()=>{this.moveTimer=0;let e=performance.now()-this.lastMove;if(e{let{data:t}=e;typeof t?.wheel=="number"&&t.wheel!==0?this.wheel(t.wheel>0):typeof t?.rampWheel=="number"&&t.rampWheel!==0&&this.rampWheel(t.rampWheel>0)},this.releaseAll=()=>{for(let e of this.widget?.querySelectorAll(".on")??[])e.classList.remove("on");this.moveX=0,this.moveY=0,this.fastUntil.fill(0),this.drawMove()},this.onPointerLockChange=()=>{if(document.pointerLockElement){this.readBinds();return}this.releaseAll();try{window.localStorage.setItem(fm,this.typical.toFixed(3))}catch{}},d.settings.toggleKeystrokes=e=>this.toggle(e),this.toggle(!!d.settings.data.keystrokes)}toggle(e){if(queueMicrotask(()=>d.hudEditor?.apply()),!e){this.remove();return}if(this.widget)return;let t=document.createElement("style");t.id="kuteKeystrokesCSS",t.textContent=lm,document.head.append(t),this.widget=document.createElement("div"),this.widget.id="kuteKeystrokes",this.widget.innerHTML=dm,(document.querySelector("#uiBase")??document.body).append(this.widget),this.readBinds(),this.loadTypical();let{widget:o}=this,n=[["kuteMoveLeft",-1,0],["kuteMoveRight",1,0],["kuteMoveUp",0,-1],["kuteMoveDown",0,1]];this.arcs=n.map(([r,i,a])=>[o.querySelector(`#${r}`),i,a]),window.addEventListener("keydown",this.onKeyDown,!0),window.addEventListener("keyup",this.onKeyUp,!0),window.addEventListener("mousedown",this.onMouseDown,!0),window.addEventListener("mouseup",this.onMouseUp,!0),window.addEventListener("mousemove",this.onMouseMove,{capture:!0,passive:!0}),window.addEventListener("wheel",this.onWheel,{capture:!0,passive:!0}),window.addEventListener("blur",this.releaseAll),document.addEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.addEventListener("message",this.onHostMessage)}remove(){window.removeEventListener("keydown",this.onKeyDown,!0),window.removeEventListener("keyup",this.onKeyUp,!0),window.removeEventListener("mousedown",this.onMouseDown,!0),window.removeEventListener("mouseup",this.onMouseUp,!0),window.removeEventListener("mousemove",this.onMouseMove,!0),window.removeEventListener("wheel",this.onWheel,!0),window.removeEventListener("blur",this.releaseAll),document.removeEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.removeEventListener("message",this.onHostMessage);for(let e of this.wheelTimers.values())clearTimeout(e);this.wheelTimers.clear(),clearTimeout(this.moveTimer),this.moveTimer=0,this.arcs=[],this.widget?.remove(),this.widget=null,this.byCode.clear(),document.querySelector("#kuteKeystrokesCSS")?.remove()}readBinds(){if(this.widget){this.byCode.clear();for(let[e,t,o]of Uk){let n=this.widget.querySelector(`#${e}`);if(!n)continue;let r=Wk(t,o);n.textContent=r.length>0?gm(r[0]):"",n.title=r.map(gm).join(" / ");for(let i of r){let a=this.byCode.get(i)??[];a.push(n),this.byCode.set(i,a)}}}}key(e,t){if(e===Ok){this.button(0,t);return}if(e===um){t&&(this.spaceDownAt=performance.now(),this.spaceIgnored=this.spaceDownAt-this.rampWheelAt=100,n=Math.min(t-this.lastMove,100);if(this.lastMove=t,!(n>0))return;let r=Math.exp(-n/qk);this.moveX=this.moveX*r+e.movementX/n*(1-r),this.moveY=this.moveY*r+e.movementY/n*(1-r);let i=Math.hypot(this.moveX,this.moveY);!o&&i>vl&&(this.typicalMs=Math.min(this.typicalMs+n,mm),this.typical+=(Math.min(i,this.typical*hm)-this.typical)*(n/this.typicalMs)),this.drawMove(t),this.moveTimer||(this.moveTimer=window.setTimeout(this.onMoveIdle,wl))}loadTypical(){let e=NaN;try{e=Number(window.localStorage.getItem(fm))}catch{e=NaN}e>0&&(this.typical=e,this.typicalMs=mm)}drawMove(e=performance.now()){let t=Math.hypot(this.moveX,this.moveY),o=Math.max(this.typical,vl)*hm;this.arcs.forEach(([n,r,i],a)=>{let l=this.moveX*r+this.moveY*i;l>o&&(this.fastUntil[a]=e+jk);let c="kuteMove";this.fastUntil[a]>e?c="kuteMove on fast":t>vl&&l>=t*Dk&&(c="kuteMove on"),n.className!==c&&(n.className=c)})}rampWheel(e){if(this.rampWheelAt=performance.now(),this.rampWheelAt-this.spaceDownAt{this.widget?.querySelector(`#${t}`)?.classList.remove("on"),this.wheelTimers.delete(t)},Fk))}},Vk=new kl});var vm,bm=w(()=>{vm='

                  Kute Icons

                  Tick all
                  Done
                  '});var $l={};A($l,{default:()=>Jk});function Em(){let s=d.settings.data[Sl];return s&&typeof s=="object"?s:{}}function wm(){return d.hostFeatures?.includes("kute-icons")??!1}function km(s){return Em()[s.id]!==!1}function ym(s){return s.hiddenBy.filter(e=>{let t=null;try{t=localStorage.getItem(`kro_setngss_${e.id}`)}catch{return!1}return t===null?!1:e.kind==="checkbox"?t==="false":Number(t)===0})}function xm(s){return s.kind==="checkbox"?`${s.name} is off`:`${s.name} is 0`}async function Sm(s){await Ce({title:"Reload the game?",paragraphs:[s,"The game keeps the images it already loaded, so this shows after a reload. Nothing else changes, and you can do it later."],stay:"Later",leave:"Reload now"})&&window.chrome.webview.postMessage("hard-reload")}var Xk,Sl,El,Jk,Cl=w(()=>{"use strict";bm();F();Pt();vn();Xk="https://krunker.io/kute-icons/",Sl="kuteIconSlots";El=class{constructor(){this.asking=!1,this.watched=new WeakSet,d.kuteIcons={customize:()=>this.customize(),refresh:()=>this.refresh()},d.settings.toggleKuteIcons=e=>this.onToggle(!!e),this.refresh(),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&setTimeout(()=>this.refresh(),1500)})}refresh(){for(let e of Ao){let t=e.element?document.getElementById(e.element):null;!t||this.watched.has(t)||(this.watched.add(t),new MutationObserver(()=>oo()).observe(t,{attributes:!0,attributeFilter:["src"]}))}oo()}async onToggle(e){if(oo(),!wm()){e&&d.showNotification("Kute icons need a newer Kute, update the client",!1,4);return}e&&await this.warnHidden(Ao.filter(km)),await Sm(e?"Kute icons are on.":"Kute icons are off, your own icons are back.")}async warnHidden(e){let t=new Map,o=[];for(let r of e){let i=ym(r);if(i.length!==0){for(let a of i)t.set(a.id,a);o.push(`${r.name}: ${i.map(a=>xm(a)).join(", ")}`)}}if(o.length===0||(this.asking=!0,!await Ce({title:"Hidden by your Krunker settings",paragraphs:[o.length===1?"This Kute icon will not show:":"These Kute icons will not show:",...o,"Switch those Krunker settings on for you?"],stay:"Leave them",leave:"Switch on"}).finally(()=>{this.asking=!1})))return!1;for(let r of t.values())window.setSetting(r.id,r.kind==="checkbox"?!0:"1");return d.showNotification("Switched on in your Krunker settings",!1,3),!0}customize(){let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=vm;let n=m=>o.querySelector(`#${m}`),r=wm(),i=d.settings.data.kuteIcons===!0,a="Ticked icons show Kute's version. Your Krunker settings stay as they are.";i||(a="Use Kute Icons is off, so none of these show yet."),r||(a="This needs a newer Kute. Update the client to use Kute icons."),n("kiHint").textContent=a;let l=!1,c=[],u=()=>{for(let{slot:m,box:g,note:b}of c){let v=g.checked?ym(m):[];if(b.replaceChildren(),v.length===0)continue;b.append(`Hidden: ${v.map(E=>xm(E)).join(", ")} `);let k=document.createElement("span");k.className="kiShow",k.textContent="Show it",k.onclick=async E=>{E.preventDefault(),E.stopPropagation(),await this.warnHidden([m]),u()},b.append(k)}},h=(m,g)=>{l=!0;let b={...Em(),[m.id]:g};d.settings.data[Sl]=b,window.chrome.webview.postMessage(`set-config-json ${Sl} ${JSON.stringify(b)}`)};for(let m of Ao){let g=document.createElement("label");g.className="kiRow";let b=document.createElement("img");b.src=Xk+m.file,b.alt="";let v=document.createElement("span");v.textContent=m.name;let k=document.createElement("span");k.className="kiHidden",v.append(k);let E=document.createElement("input");E.type="checkbox",E.checked=km(m),E.onchange=async()=>{h(m,E.checked),E.checked&&await this.warnHidden([m]),u()},g.append(b,v,E),n("kiRows").append(g),c.push({slot:m,box:E,note:k})}u(),n("kiAll").onclick=async()=>{let m=c.filter(({box:g})=>!g.checked);for(let{slot:g,box:b}of m)b.checked=!0,h(g,!0);await this.warnHidden(m.map(({slot:g})=>g)),u()};let p=new AbortController,f=()=>{p.abort(),e.remove(),l&&r&&d.settings.data.kuteIcons===!0&&Sm("Your Kute icons changed.")};n("kiDone").onclick=f,e.addEventListener("mousedown",m=>{m.target===e&&f()}),document.addEventListener("keydown",m=>{m.key!=="Escape"||this.asking||(m.stopPropagation(),f())},{signal:p.signal,capture:!0}),document.body.append(e)}},Jk=new El});var Al={};A(Al,{default:()=>Qk});var $m,Cm,Ml,Mm,Zk,Tl,Qk,Ll=w(()=>{"use strict";F();Pt();$m="kute_update_asked",Cm="kute_update_ready",Ml=[.25,.5,.75],Mm=()=>new Promise(s=>{let e=()=>{document.pointerLockElement?setTimeout(e,2e3):s()};e()}),Zk=s=>`${Math.round(s/1048576)} MB`,Tl=class{constructor(){this.step=0,this.busy=!1,!(d.platform!=="linux"||!d.hostFeatures?.includes("appimage-update"))&&(window.chrome.webview.addEventListener("message",e=>{let t=e.data?.update;t&&typeof t=="object"&&this.receive(t).catch(()=>{})}),window.chrome.webview.postMessage("update-state"))}async receive(e){e.stage==="offer"?await this.offer(e):e.stage==="downloading"?this.progress(e):e.stage==="ready"?await this.ready(e):e.stage==="failed"&&d.showNotification(`The update to Kute ${e.version} failed: ${e.error??"unknown error"}`,!1,8)}async offer(e){if(this.busy||sessionStorage.getItem($m)===e.version)return;this.busy=!0,await Mm(),sessionStorage.setItem($m,e.version);let t=e.install===!0,o=await Ce({title:`Kute ${e.version} is out`,paragraphs:t?[`You have ${e.current}. The update${e.size?` (${Zk(e.size)})`:""} downloads while you play.`,"It replaces your Kute AppImage and starts the next time you open Kute."]:[`You have ${e.current}.`,"This copy of Kute does not run as an AppImage and cannot update itself. The download page has the new version."],stay:"Later",leave:t?"Update":"Open download page"});this.busy=!1,o&&(window.chrome.webview.postMessage(t?"update-install":"update-page"),t&&d.showNotification(`Downloading Kute ${e.version}`,!1,4))}progress(e){if(!e.total||!e.done)return;let t=e.done/e.total;for(;this.step=Ml[this.step];)d.showNotification(`Downloading Kute ${e.version}: ${Math.round(Ml[this.step]*100)} %`,!1,3),this.step++}async ready(e){if(sessionStorage.getItem(Cm)===e.version)return;await Mm(),sessionStorage.setItem(Cm,e.version),await Ce({title:`Kute ${e.version} is ready`,paragraphs:["It starts the next time you open Kute. Restart now to use it right away."],stay:"Later",leave:"Restart now"})&&window.chrome.webview.postMessage("update-restart")}},Qk=new Tl});var Am,Tm=w(()=>{Am=`

                  CSS Manager

                  visibilityHold to peek
                  folder_openShow folder
                  ×
                  One file is active at a time and loads after all of Krunker's styles, so a rule with the same selector wins. Krunker's inline styles and its own !important rules still need !important here. Files live in Documents\\kute\\css.
                  Your CSS
                  Click a file to edit it, the circle makes it active
                  addNew
                  content_pastePaste
                  upload_fileImport
                  `});var Rm,Lm=w(()=>{Rm=`:host{--accent: #35e0e8;--bg: #1e1e1e;--panel: #252525;--line: #333;--muted: #999;--ok: #5ce05a;--warn: #ffb74d;--bad: #eb5656}.managerPopup{position:relative;box-sizing:border-box;display:flex;flex-direction:column;width:min(1020px,94vw);height:min(760px,90vh);background:var(--bg);color:#fff;border-radius:14px;box-shadow:0 8px 48px #000c;font-family:Consolas,monospace;font-size:14px;overflow:hidden}.managerHeader{display:flex;align-items:center;gap:.6em;padding:1em 1.2em .8em 1.4em;border-bottom:1px solid var(--line)}.managerTitle{margin:0 auto 0 0;font-size:1.6em;letter-spacing:1px;color:var(--accent)}.managerClose{margin-left:.4em;font-size:1.6em;line-height:1;color:var(--muted);cursor:pointer}.managerClose:hover{color:#fff}.managerHint{padding:.7em 1.4em;color:var(--muted);line-height:1.5;border-bottom:1px solid var(--line)}.managerHint code{padding:.05em .35em;border-radius:4px;background:#181818;color:var(--accent)}.managerBody{flex:1 1 auto;min-height:0;overflow-y:auto;padding:1em 1.4em}.managerError,.managerNotice{margin:.8em 1.4em 0;padding:.6em .9em;border-radius:8px;white-space:pre-wrap;line-height:1.5}.managerError{background:#4a1d1d;color:#ffb4b4}.managerNotice{display:flex;align-items:center;gap:1em;background:#173a52;color:#cfe8ff}.managerNotice span{flex:1}[hidden]{display:none!important}.btn{display:inline-flex;align-items:center;gap:.4em;padding:.45em .9em;border-radius:7px;background:#2d2d2d;color:#fff;cursor:pointer;user-select:none;white-space:nowrap}.btn:hover{background:#383838;color:var(--accent)}.btn.primary{background:#1b5e63}.btn.primary:hover{background:#23777d;color:#fff}.btn.small{padding:.25em .55em;font-size:.92em}.iconBtn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:var(--muted);cursor:pointer;user-select:none}.iconBtn:hover{background:#333;color:#fff}.iconBtn.danger:hover{color:var(--bad)}.mi{font-family:Material Icons;font-weight:400;font-style:normal;font-size:18px;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;font-feature-settings:"liga"}.group{margin-bottom:1.2em;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.groupHead{display:flex;align-items:center;gap:.7em;padding:.7em .9em;border-bottom:1px solid var(--line)}.groupTitle{font-size:1.15em;color:#fff}.groupRuns{margin-right:auto;color:var(--muted);font-size:.9em}.empty{padding:.9em;color:var(--muted)}.dropZone{margin:.7em;padding:.8em;border:2px dashed #444;border-radius:8px;color:#777;text-align:center}.dropHover{border-color:var(--accent)!important;background:#35e0e814!important;color:var(--accent)}.toggle{position:relative;flex:0 0 auto;width:38px;height:20px;border-radius:10px;background:#444;cursor:pointer;transition:background .15s}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#ddd;transition:left .15s}.toggle.on{background:#1b8f96}.toggle.on:after{left:21px;background:#fff}.state{flex:0 0 auto;padding:.1em .5em;border-radius:5px;font-size:.85em;background:#333;color:var(--muted)}.state.ok{background:#1f3d1f;color:var(--ok)}.state.warn{background:#3d321f;color:var(--warn)}.state.bad{background:#3d1f1f;color:var(--bad);cursor:help}.askBackdrop{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background:#0009}.askBox{width:min(480px,90%);padding:1.3em 1.4em;border-radius:12px;background:#262626;box-shadow:0 8px 32px #000c}.askTitle{margin-bottom:.8em;font-size:1.1em;color:var(--accent)}.askInput,.field{box-sizing:border-box;width:100%;padding:.5em .7em;border:1px solid #444;border-radius:6px;background:#181818;color:#fff;font:inherit;outline:none}.askInput:focus,.field:focus{border-color:var(--accent)}.askHint{margin-top:.5em;color:var(--muted);font-size:.9em;line-height:1.4}.askActions{display:flex;justify-content:flex-end;gap:.6em;margin-top:1em}.editor{position:relative;display:flex;flex:1 1 auto;min-height:0;border:1px solid var(--line);border-radius:8px;background:#181818;overflow:hidden;font-family:Consolas,Cascadia Mono,monospace;font-size:13.5px;line-height:1.5;tab-size:4}.editorGutter{flex:0 0 auto;padding:.6em .6em .6em .8em;overflow:hidden;color:#555;text-align:right;white-space:pre;user-select:none;border-right:1px solid #2a2a2a}.editorCode{position:relative;flex:1 1 auto;min-width:0}.editorCode pre,.editorCode textarea{position:absolute;inset:0;box-sizing:border-box;margin:0;padding:.6em .8em;border:0;font:inherit;line-height:inherit;tab-size:inherit;white-space:pre;overflow-wrap:normal;letter-spacing:normal}.editorCode pre{overflow:hidden;color:#d4d4d4;pointer-events:none}.editorCode textarea{resize:none;overflow:auto;background:transparent;color:transparent;caret-color:#fff;outline:none}.editorCode textarea::selection{background:#3578c873;color:transparent}.tk-c{color:#6a9955}.tk-s{color:#ce9178}.tk-n{color:#b5cea8}.tk-k{color:#c586c0}.tk-l{color:#569cd6}.tk-f{color:#dcdcaa}.tk-p{color:#9cdcfe}.editorBar{display:flex;align-items:center;gap:.6em;margin-bottom:.7em}.editorFile{margin-right:auto;color:#fff;font-size:1.05em}.editorFile .dirty{color:var(--warn)}.editorView{display:flex;flex-direction:column;height:100%}.editorKeys{margin-top:.5em;color:#666;font-size:.85em} -`});var Pm={};A(Pm,{askConfirm:()=>Pe,askText:()=>st,formatSize:()=>wo,hostSupportsManagers:()=>Fs,makeDropTarget:()=>ot,openManagerPopup:()=>vo,readBase64:()=>Pl});function ot(s,e){Rl.set(s,e)}function sy(s){let e=[...s.items].filter(n=>n.kind==="file").map(n=>n.webkitGetAsEntry()).filter(n=>n!==null);if(!e.length)return Promise.resolve([...s.files].map(n=>({path:n.name,file:n})));let t=[],o=async n=>{if(t.length>=oy)return;if(n.isFile){let i=await new Promise((a,l)=>n.file(a,l));t.push({path:n.fullPath.replace(/^\/+/,""),file:i});return}let r=n.createReader();for(;;){let i=await new Promise((a,l)=>r.readEntries(a,l));if(!i.length)break;for(let a of i)await o(a)}};return Promise.all(e.map(o)).then(()=>t)}function vo(s,{onMessage:e,canClose:t,onEscape:o}){let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let r=document.createElement("div");n.append(r);let i=r.attachShadow({mode:"open"});i.innerHTML=`${s}`;let a=new AbortController,{signal:l}=a,c=v=>{v.data&&typeof v.data=="object"&&e(v.data)};window.chrome.webview.addEventListener("message",c);let u=()=>{l.aborted||t&&!t()||(a.abort(),window.chrome.webview.removeEventListener("message",c),n.remove())};for(let v of["keydown","keyup","keypress"])i.addEventListener(v,k=>k.stopPropagation());document.addEventListener("keydown",v=>{if(v.key!=="Escape")return;v.stopPropagation();let k=i.querySelector(".askBackdrop [data-cancel]");k?k.click():o?.()||u()},{signal:l,capture:!0}),n.addEventListener("mousedown",v=>{v.target===n&&u()});let h=i.querySelector("[data-error]"),p=0,f=v=>{h&&(h.textContent=v,h.hidden=!1,clearTimeout(p),p=setTimeout(()=>{h.hidden=!0},8e3))},m=null,g=v=>{m!==v&&(m?.classList.remove("dropHover"),m=v,v?.classList.add("dropHover"))},b=v=>{for(let k of v.composedPath()){if(k===n)break;if(k instanceof HTMLElement&&Rl.has(k))return k}return null};return n.addEventListener("dragover",v=>{v.preventDefault();let k=b(v);g(k),v.dataTransfer&&(v.dataTransfer.dropEffect=k?"copy":"none")}),n.addEventListener("dragleave",v=>{v.relatedTarget||g(null)}),n.addEventListener("drop",v=>{v.preventDefault();let k=b(v);g(null);let E=k&&Rl.get(k);!E||!v.dataTransfer||sy(v.dataTransfer).then(L=>{L.length&&E(L)}).catch(L=>f(`Could not read the dropped files: ${L?.message??L}`))}),i.querySelector("[data-close]")?.addEventListener("click",u),document.body.append(n),{shadow:i,close:u,signal:l,showError:f}}function st(s,e,t,o=""){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
                  -
                  Cancel
                  OK
                  `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=o;let r=n.querySelector(".askInput");r.value=t,(s.querySelector(".managerPopup")??s).append(n),r.focus();let a=t.lastIndexOf(".");return r.setSelectionRange(t.lastIndexOf("/")+1,a>0?a:t.length),new Promise(l=>{let c=u=>{n.remove(),l(u)};n.querySelector("[data-ok]").onclick=()=>c(r.value.trim()||null),n.querySelector("[data-cancel]").onclick=()=>c(null),r.onkeydown=u=>{u.key==="Enter"&&c(r.value.trim()||null)}})}function Pe(s,e,t,o){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
                  -
                  Cancel
                  `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=t;let r=n.querySelector("[data-ok]");return r.textContent=o,(s.querySelector(".managerPopup")??s).append(n),new Promise(i=>{let a=l=>{n.remove(),i(l)};r.onclick=()=>a(!0),n.querySelector("[data-cancel]").onclick=()=>a(!1)})}var Fs,Rl,oy,Pl,wo,Ds=w(()=>{"use strict";F();Lm();Fs=()=>d.hostFeatures?.includes("script-manager")??!1,Rl=new WeakMap,oy=5e3;Pl=s=>new Promise((e,t)=>{let o=new FileReader;o.onload=()=>e(String(o.result).slice(String(o.result).indexOf(",")+1)),o.onerror=()=>t(o.error),o.readAsDataURL(s)});wo=s=>s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`});var Bl={};A(Bl,{open:()=>ly});var ny,ry,Il,iy,Nl,nt,_l,ay,ly,zl=w(()=>{"use strict";F();Tm();wn();Ds();Do();ny=120,ry=4*1024*1024,Il="custom.css",iy=()=>d.hostFeatures?.includes("css-manager")??!1,Nl=s=>/\.css$/i.test(s)?s:`${s}.css`,nt=(s,e)=>window.chrome.webview.postMessage(e?`css-${s} ${JSON.stringify(e)}`:`css-${s}`),_l=class{constructor(){this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.files=[],this.active=null,this.listed=!1,this.saving=null,this.savingName=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.closeAfterSave=!1,this.forceClose=!1,this.legacy=!1,this.live=!0,this.previewTimer=0}open(){if(this.popup)return;if(!os()){d.showNotification("The CSS Manager needs a newer Kute. Update Kute to use it.",!1,6);return}this.legacy=!iy(),this.popup=vo(Am,{onMessage:i=>this.receive(i),canClose:()=>this.canClose()});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{clearTimeout(this.previewTimer),Rt.revert(),this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.listed=!1,this.saving=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.forceClose=!1}),this.$("#ccFolder").onclick=()=>nt("reveal",{name:this.editing??""}),this.$("#ccOff").hidden=d.settings.data.customCss!==!1;let o=this.$("#ccLive");o.checked=this.live,o.onchange=()=>{this.live=o.checked,this.preview()};let n=e.host.parentElement;if(this.$("#ccPeek").onpointerdown=i=>{i.preventDefault(),n.style.opacity="0",window.addEventListener("pointerup",()=>{n.style.opacity=""},{once:!0,signal:t})},this.legacy){this.$(".managerPopup").classList.add("legacy"),this.$("#ccHint").textContent="Loaded after all of Krunker's styles, so a rule with the same selector wins. Saved as Documents\\kute\\custom.css. Update Kute to keep several CSS files and switch between them.",this.$("#ccEditor").textContent="Loading...",nt("read");return}this.$("#ccNew").onclick=()=>this.create(),this.$("#ccPaste").onclick=()=>this.paste();let r=this.$("#ccImportInput");this.$("#ccImport").onclick=()=>r.click(),r.onchange=()=>{this.importFiles([...r.files??[]]),r.value=""},ot(this.$("#ccFiles"),i=>this.importFiles(i.map(a=>a.file))),this.$("#ccEditor").textContent="Loading...",nt("list")}$(e){return this.popup?.shadow.querySelector(e)}receive(e){if(typeof e.managerError=="string"&&this.popup?.showError(e.managerError),this.legacy){typeof e.customCss?.content=="string"&&!this.editor&&(this.active=Il,this.showEditor(Il,e.customCss.content)),e.customCssSaved&&this.saving!==null&&this.saved(e.customCssSaved.error,Il);return}e.cssFiles&&this.updateList(e.cssFiles),e.cssFile&&e.cssFile.name===this.loading&&(this.loading=null,typeof e.cssFile.content=="string"?this.showEditor(e.cssFile.name,e.cssFile.content):this.popup?.showError(`Could not read ${e.cssFile.name}`)),e.cssSaved&&this.saving!==null&&e.cssSaved.name===this.savingName&&this.saved(e.cssSaved.error,e.cssSaved.name),e.cssImported&&this.imported(e.cssImported),e.cssActivated&&(this.activating=!1,e.cssActivated.error?this.popup?.showError(`Could not switch: ${e.cssActivated.error}`):Rt.markSaved(String(e.cssActivated.content??"")),this.preview())}updateList(e){this.files=Array.isArray(e.files)?e.files:[];let t=this.active;this.active=e.active??null,t&&!this.active&&!this.activating&&(Rt.markSaved(""),this.preview());let o=new Set(this.files.map(n=>n.name));if(this.renaming&&this.editing===this.renaming.from&&o.has(this.renaming.to)){this.editing=this.renaming.to;let n=this.popup?.shadow.querySelector(".editorFile")?.firstChild;n&&(n.textContent=this.editing)}if(this.renaming=null,this.editing&&!o.has(this.editing)&&this.closeEditor(),!this.listed){this.listed=!0;let n=this.active??this.files[0]?.name;n?this.load(n):this.closeEditor()}this.renderList()}renderList(){let e=this.$("#ccList");if(e){if(e.textContent="",!this.files.length){let t=document.createElement("div");t.className="empty",t.textContent="No CSS files yet. Make one with New, paste one, or import .css files.",e.append(t)}for(let t of this.files)e.append(this.row(t));e.append(this.row(null))}}row(e){let t=e?.name??"",o=document.createElement("div");o.className="cssRow",o.classList.toggle("none",!e),o.classList.toggle("active",(this.active??"")===t),o.classList.toggle("editing",!!e&&this.editing===t);let n=document.createElement("div");n.className="cssRadio",n.title=e?"Use this one":"No CSS",n.onclick=l=>{l.stopPropagation(),this.activate(t)};let r=document.createElement("div");if(r.className="cssName",r.textContent=e?t:"None",o.append(n,r),!e)return o.onclick=()=>this.activate(""),o;let i=document.createElement("div");i.className="cssSize",i.textContent=wo(e.size);let a=document.createElement("div");a.className="cssActions";for(let[l,c,u,h]of[["edit","Rename",()=>this.rename(t),!1],["delete","Delete",()=>this.remove(t),!0]]){let p=document.createElement("div");p.className=h?"iconBtn danger":"iconBtn",p.title=c,p.innerHTML=`${l}`,p.onclick=f=>{f.stopPropagation(),u()},a.append(p)}return o.append(i,a),o.onclick=()=>this.load(t),o}async load(e){e===this.editing&&this.editor||await this.discardChanges()&&(this.loading=e,nt("get",{name:e}))}showEditor(e,t){let o=this.$("#ccEditor");if(!o)return;let{editor:n}=fo(o,{title:e,content:t,language:"css",onSave:r=>this.save(r),onClose:()=>this.popup?.close(),onChange:()=>{clearTimeout(this.previewTimer),this.previewTimer=setTimeout(()=>this.preview(),ny)}});this.editor=n,this.editing=e,this.renderList(),this.preview()}closeEditor(){this.editor=null,this.editing=null;let e=this.$("#ccEditor");e&&(e.innerHTML='
                  Pick a file below to edit it.
                  '),this.preview()}preview(){let{editor:e}=this;this.live&&e&&(this.editing===this.active||e.isDirty())?Rt.apply(e.getValue()):Rt.revert()}async discardChanges(){return!this.editor?.isDirty()||!this.popup?!0:Pe(this.popup.shadow,"Unsaved changes",`Throw the changes to ${this.editing} away?`,"Discard")}save(e){!this.editor||!this.editing||this.saving!==null||(this.closeAfterSave=e,this.saving=this.editor.getValue(),this.savingName=this.editing,this.legacy?window.chrome.webview.postMessage(`css-write ${JSON.stringify({content:this.saving})}`):nt("save",{name:this.editing,content:this.saving}))}saved(e,t){let o=this.saving??"";if(this.saving=null,e){this.popup?.showError(`Could not save: ${e}`);return}t===this.active&&Rt.markSaved(o),t===this.editing&&this.editor?.markSaved(o),this.preview(),this.closeAfterSave&&this.popup?.close()}activate(e){e===(this.active??"")||this.activating||(this.activating=!0,nt("activate",{name:e}))}async create(){if(!this.popup)return;let e=await st(this.popup.shadow,"New CSS file","theme.css","Ends in .css");e&&(this.openAfterImport=Nl(e),nt("import",{name:this.openAfterImport,content:""}))}async paste(){if(!this.popup)return;let e="";try{e=await navigator.clipboard.readText()}catch{this.popup.showError("Could not read the clipboard.");return}if(!e.trim()){this.popup.showError("The clipboard has no text in it. Copy the CSS first.");return}let t=await st(this.popup.shadow,"Name for the pasted CSS","pasted.css","Ends in .css");t&&(this.openAfterImport=Nl(t),nt("import",{name:this.openAfterImport,content:e}))}async importFiles(e){let t=[];for(let o of e){if(!/\.css$/i.test(o.name)||o.size>ry){t.push(o.name);continue}nt("import",{name:o.name,content:await o.text()})}t.length&&this.popup?.showError(`Not imported (only .css files up to 4 MB): ${t.join(", ")}`)}imported(e){if(e.error){this.popup?.showError(`Could not add ${e.requested}: ${e.error}`);return}this.active||this.activate(e.name),e.requested===this.openAfterImport?(this.openAfterImport=null,this.load(e.name)):this.editing||this.load(e.name)}async rename(e){if(!this.popup)return;let t=await st(this.popup.shadow,`Rename ${e}`,e,"Ends in .css");if(!t)return;let o=Nl(t);o!==e&&(this.renaming={from:e,to:o},nt("rename",{from:e,to:o}))}async remove(e){!this.popup||!await Pe(this.popup.shadow,`Delete ${e}?`,"It goes to the recycle bin.","Delete")||nt("delete",{name:e})}canClose(){return this.forceClose||!this.editor?.isDirty()||!this.popup?!0:(Pe(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},ay=new _l,ly=()=>ay.open()});var Im={};A(Im,{hostWatchesSwapper:()=>ur,reloadStylesheets:()=>qs});var ur,qs,pr=w(()=>{"use strict";F();ur=()=>d.hostFeatures?.includes("swapper-watch")??!1,qs=s=>{for(let e of document.querySelectorAll('link[rel="stylesheet"]')){if(!(e instanceof HTMLLinkElement)||!e.href)continue;let t=new URL(e.href);if(!/(^|\.)krunker\.io$/.test(t.hostname)||!s.has(t.pathname.slice(1).toLowerCase()))continue;t.searchParams.set("kuteSwap",String(Date.now()));let o=e.cloneNode();o.href=t.href,o.addEventListener("load",()=>e.remove(),{once:!0}),o.addEventListener("error",()=>o.remove(),{once:!0}),e.after(o)}}});var _m,Nm=w(()=>{_m='

                  Userscripts

                  Userscripts off
                  folder_openOpen scripts folder
                  ×
                  Scripts run inside Krunker. Only add scripts you trust, and never anything that breaks krunker.io/docs/terms.txt. Drop .js files onto a group, or create one with New script.
                  '});var Ol={};A(Ol,{open:()=>hy});var dy,uy,oe,Ks,Hl,py,hy,Fl=w(()=>{"use strict";F();Nm();ts();Ds();Do();dy=4*1024*1024,uy=`// ==UserScript== + `;cr.innerHTML=em;$k=window.importSettingsPopup,Ck=window.importSettings,Qh=1;window.importSettingsPopup=()=>{$k(),queueMicrotask(()=>{U("#importTxt").after(cr)})};window.importSettings=()=>{let s=U("#importTxt"),e=JSON.parse(s.value);localStorage.getItem("kute_Sensitivity")==="false"&&(e.sensitivityX=localStorage.getItem("kro_setngss_sensitivityX"),e.sensitivityY=localStorage.getItem("kro_setngss_sensitivityY"),e.aimSensitivityX=localStorage.getItem("kro_setngss_aimSensitivityX"),e.aimSensitivityY=localStorage.getItem("kro_setngss_aimSensitivityY")),localStorage.getItem("kute_Sound")==="false"&&(e.sound=localStorage.getItem("kro_setngss_sound"),e.ambientVolume=localStorage.getItem("kro_setngss_ambientVolume"),e.dialogueVolume=localStorage.getItem("kro_setngss_dialogueVolume"),e.micVolume=localStorage.getItem("kro_setngss_micVolume"),e.voiceVolume=localStorage.getItem("kro_setngss_voiceVolume"),e.voiceDistance=localStorage.getItem("kro_setngss_voiceDistance"),e.gunsVolume=localStorage.getItem("kro_setngss_gunsVolume"),e.playerVolume=localStorage.getItem("kro_setngss_playerVolume"),e.skinVolume=localStorage.getItem("kro_setngss_skinVolume"),e.uiVolume=localStorage.getItem("kro_setngss_uiVolume"),e.assetVolume=localStorage.getItem("kro_setngss_assetVolume")),localStorage.getItem("kute_Keybinds")==="false"&&delete e.controls,s.value=JSON.stringify(e),Ck(),u.bindShoot(),Mk(),u.kuteIcons?.refresh(),u.autoDetect?.dropUndo(),u.autoDetect?.afterImport()}});var fl={};A(fl,{default:()=>Rk});function Ak(s){let e=s.nextElementSibling;return e instanceof HTMLElement&&e.matches(".market-grid-sentinel")?e:null}async function om(s){for(let e=0;e{"use strict";Tk=".view-stack-overlay, .modal-overlay";Lk=()=>new Promise(s=>{requestAnimationFrame(()=>s())});ml=class{constructor(){this.watched=new WeakSet,this.popupClickAt=-1/0,this.lastTop=0,this.lastHeight=0,this.restore=null,this.onWheel=()=>this.finish(!1),document.addEventListener("scroll",e=>this.onScroll(e),{capture:!0,passive:!0}),document.addEventListener("click",e=>{e.target instanceof Element&&e.target.closest(Tk)&&(this.popupClickAt=performance.now())},{capture:!0,passive:!0})}onScroll(e){let t=e.target;if(!(t instanceof HTMLElement))return;if(this.restore){t===this.restore.scroller&&t.scrollTop!==this.restore.top&&(t.scrollTop=this.restore.top);return}let o=t.querySelector(":scope > .market-grid");o instanceof HTMLElement&&(this.watch(t,o),this.lastTop=t.scrollTop,this.lastHeight=o.offsetHeight)}watch(e,t){if(this.watched.has(t))return;this.watched.add(t);let o=t.children.length;new MutationObserver(n=>{let r=n.reduce((l,c)=>l+c.removedNodes.length,0),i=o;if(o=t.children.length,this.restore?.grid===t){o>i&&this.pageArrived();return}i>0&&r>=i&&this.lastTop>e.clientHeight&&performance.now()-this.popupClickAt<5e3&&this.start(e,t,i,n.flatMap(l=>[...l.removedNodes]))}).observe(t,{childList:!0})}start(e,t,o,n){let r=document.createElement("div");r.className=t.className,r.style.cssText=t.style.cssText,r.append(...n),this.restore={scroller:e,grid:t,sentinels:new Set,top:this.lastTop,count:o,until:performance.now()+1e4,pageTimer:0,picture:r},t.style.minHeight=`${this.lastHeight}px`,t.style.alignContent="start",Object.assign(r.style,{position:"absolute",top:`${t.offsetTop}px`,left:`${t.offsetLeft}px`,width:`${t.offsetWidth}px`,margin:"0",zIndex:"1",pointerEvents:"none"}),e.append(r),e.style.overflowAnchor="none",e.scrollTop=this.lastTop,e.addEventListener("wheel",this.onWheel,{passive:!0}),this.waitForPage(),this.blink(this.restore).catch(i=>console.error("[kute] inventory scroll:",i))}pageArrived(){let{restore:e}=this;e&&(e.grid.children.length>=e.count-1||performance.now()>e.until?this.finish(!0):this.waitForPage())}waitForPage(){let{restore:e}=this;e&&(clearTimeout(e.pageTimer),e.pageTimer=window.setTimeout(()=>this.finish(!0),1500))}async blink(e){for(;this.restore===e;){let t=Ak(e.grid);t&&(e.sentinels.add(t),t.style.position="sticky",t.style.bottom="0",t.style.display="none",await om(2),t.style.display=""),await om(2)}}finish(e){let{restore:t}=this;if(t){this.restore=null,clearTimeout(t.pageTimer),t.scroller.removeEventListener("wheel",this.onWheel),t.picture.remove(),t.grid.style.minHeight="",t.grid.style.alignContent="",t.scroller.style.overflowAnchor="";for(let o of t.sentinels)o.style.position="",o.style.bottom="",o.style.display="";e&&(t.scroller.scrollTop=t.top),this.lastTop=t.scroller.scrollTop,this.lastHeight=t.grid.offsetHeight}}},Rk=new ml});var nm,sm=w(()=>{nm=`#kuteKeystrokes{position:absolute;left:463px;bottom:23px;z-index:10;display:flex;align-items:center;gap:12px;box-sizing:border-box;width:190px;height:82px;padding:5px 10px;border:1px solid rgba(53,224,232,.7);border-radius:8px;background:#0a1416e0;box-shadow:0 4px 18px #00000059;color:#cfeff1;font-family:Arial,sans-serif;font-weight:700;pointer-events:none}#kuteKeystrokesKeys{display:grid;grid-template-columns:repeat(4,24px);grid-template-rows:repeat(3,20px);gap:4px}.kuteKey{display:flex;justify-content:center;align-items:center;overflow:hidden;border:1px solid rgba(53,224,232,.35);border-radius:4px;background:#35e0e814;font-size:10px;white-space:nowrap}.kuteKey.on,#kuteMouse>.on,#kuteWheel>.on{border-color:#35e0e8;background:#35e0e8;color:#0a1416;box-shadow:0 0 8px #35e0e8cc}#kuteKeyMelee{grid-area:1 / 1}#kuteKeyForward{grid-area:1 / 2}#kuteKeySwap{grid-area:1 / 3}#kuteKeyReload{grid-area:1 / 4}#kuteKeyLeft{grid-area:2 / 1}#kuteKeyBack{grid-area:2 / 2}#kuteKeyRight{grid-area:2 / 3}#kuteKeyCrouch{grid-area:3 / 1 / 4 / 3}#kuteKeyJump{grid-area:3 / 3 / 4 / 5}#kuteMouseBox{position:relative;padding:5px}.kuteMove{--arc: rgba(53, 224, 232, .14);position:absolute;inset:0;box-sizing:border-box;border:2px solid transparent;border-radius:24px 24px 19px 19px}.kuteMove.on{--arc: rgba(53, 224, 232, .6)}.kuteMove.fast{--arc: #35e0e8}#kuteMoveLeft{border-left-color:var(--arc)}#kuteMoveRight{border-right-color:var(--arc)}#kuteMoveUp{border-top-color:var(--arc)}#kuteMoveDown{border-bottom-color:var(--arc)}#kuteMouse{position:relative;width:38px;height:58px;box-sizing:border-box;border:1px solid rgba(53,224,232,.35);border-radius:19px 19px 14px 14px;overflow:hidden}#kuteMouseLeft,#kuteMouseRight{position:absolute;top:0;width:50%;height:45%;border-bottom:1px solid rgba(53,224,232,.35);box-sizing:border-box;background:#35e0e814}#kuteMouseLeft{left:0}#kuteMouseRight{right:0}#kuteMouseSplit{position:absolute;top:0;left:calc(50% - .5px);width:1px;height:45%;background:#35e0e859}#kuteWheel{position:absolute;top:6px;left:50%;z-index:1;display:flex;flex-direction:column;box-sizing:border-box;width:10px;height:18px;margin-left:-5px;overflow:hidden;border:1px solid rgba(53,224,232,.5);border-radius:5px;background:#0a1416}#kuteWheel.on{border-color:#35e0e8;background:#35e0e8;box-shadow:0 0 8px #35e0e8cc}#kuteWheelUp,#kuteWheelDown{flex:1 1 0}#kuteWheelUp{border-bottom:1px solid rgba(53,224,232,.35)} +`});var im,rm=w(()=>{im='
                  '});var kl={};A(kl,{default:()=>Kk});function pm(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`N${s-96}`:s>=112&&s<=123?`F${s-111}`:Fk[s]??"?"}function qk(s,e){let t=[],o=[[`cont_${s}_alt`,-1],[`cont_${s}`,e]];for(let[n,r]of o){let i=null;try{i=window.localStorage.getItem(n)}catch{i=null}let a=i===null?r:Number(i);a>0&&a<1e4&&t.push(a)}return t}var Nk,_k,am,lm,bl,Bk,zk,vl,cm,dm,Hk,um,Ok,Dk,Fk,wl,Kk,yl=w(()=>{"use strict";sm();rm();D();Nk=131,_k=120,am=32,lm=80,bl=.02,Bk=.35,zk=20,vl=80,cm=3,dm=3e3,Hk=3,um="kute_keystrokes_speed",Ok=120,Dk=[["kuteKeyForward","0",87],["kuteKeyBack","1",83],["kuteKeyLeft","2",65],["kuteKeyRight","3",68],["kuteKeyJump","jumpKey",32],["kuteKeyCrouch","crouchKey",16],["kuteKeyReload","reloadKey",82],["kuteKeyMelee","meleeKey",81],["kuteKeySwap","swapKey",69]],Fk={8:"BKSP",9:"TAB",13:"ENT",16:"SHIFT",17:"CTRL",18:"ALT",20:"CAPS",32:"SPACE",37:"\u2190",38:"\u2191",39:"\u2192",40:"\u2193",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"};wl=class{constructor(){this.widget=null,this.byCode=new Map,this.wheelTimers=new Map,this.rampWheelAt=-1/0,this.spaceDownAt=-1/0,this.spaceIgnored=!1,this.arcs=[],this.moveX=0,this.moveY=0,this.lastMove=-1/0,this.moveTimer=0,this.typical=Hk,this.typicalMs=0,this.fastUntil=[0,0,0,0],this.onKeyDown=e=>this.key(e.keyCode,!0),this.onKeyUp=e=>this.key(e.keyCode,!1),this.onMouseDown=e=>this.button(e.button,!0),this.onMouseUp=e=>this.button(e.button,!1),this.onWheel=e=>this.wheel(e.deltaY<0),this.onMouseMove=e=>this.move(e),this.onMoveIdle=()=>{this.moveTimer=0;let e=performance.now()-this.lastMove;if(e{let{data:t}=e;typeof t?.wheel=="number"&&t.wheel!==0?this.wheel(t.wheel>0):typeof t?.rampWheel=="number"&&t.rampWheel!==0&&this.rampWheel(t.rampWheel>0)},this.releaseAll=()=>{for(let e of this.widget?.querySelectorAll(".on")??[])e.classList.remove("on");this.moveX=0,this.moveY=0,this.fastUntil.fill(0),this.drawMove()},this.onPointerLockChange=()=>{if(document.pointerLockElement){this.readBinds();return}this.releaseAll();try{window.localStorage.setItem(um,this.typical.toFixed(3))}catch{}},u.settings.toggleKeystrokes=e=>this.toggle(e),this.toggle(!!u.settings.data.keystrokes)}toggle(e){if(queueMicrotask(()=>u.hudEditor?.apply()),!e){this.remove();return}if(this.widget)return;let t=document.createElement("style");t.id="kuteKeystrokesCSS",t.textContent=nm,document.head.append(t),this.widget=document.createElement("div"),this.widget.id="kuteKeystrokes",this.widget.innerHTML=im,(document.querySelector("#uiBase")??document.body).append(this.widget),this.readBinds(),this.loadTypical();let{widget:o}=this,n=[["kuteMoveLeft",-1,0],["kuteMoveRight",1,0],["kuteMoveUp",0,-1],["kuteMoveDown",0,1]];this.arcs=n.map(([r,i,a])=>[o.querySelector(`#${r}`),i,a]),window.addEventListener("keydown",this.onKeyDown,!0),window.addEventListener("keyup",this.onKeyUp,!0),window.addEventListener("mousedown",this.onMouseDown,!0),window.addEventListener("mouseup",this.onMouseUp,!0),window.addEventListener("mousemove",this.onMouseMove,{capture:!0,passive:!0}),window.addEventListener("wheel",this.onWheel,{capture:!0,passive:!0}),window.addEventListener("blur",this.releaseAll),document.addEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.addEventListener("message",this.onHostMessage)}remove(){window.removeEventListener("keydown",this.onKeyDown,!0),window.removeEventListener("keyup",this.onKeyUp,!0),window.removeEventListener("mousedown",this.onMouseDown,!0),window.removeEventListener("mouseup",this.onMouseUp,!0),window.removeEventListener("mousemove",this.onMouseMove,!0),window.removeEventListener("wheel",this.onWheel,!0),window.removeEventListener("blur",this.releaseAll),document.removeEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.removeEventListener("message",this.onHostMessage);for(let e of this.wheelTimers.values())clearTimeout(e);this.wheelTimers.clear(),clearTimeout(this.moveTimer),this.moveTimer=0,this.arcs=[],this.widget?.remove(),this.widget=null,this.byCode.clear(),document.querySelector("#kuteKeystrokesCSS")?.remove()}readBinds(){if(this.widget){this.byCode.clear();for(let[e,t,o]of Dk){let n=this.widget.querySelector(`#${e}`);if(!n)continue;let r=qk(t,o);n.textContent=r.length>0?pm(r[0]):"",n.title=r.map(pm).join(" / ");for(let i of r){let a=this.byCode.get(i)??[];a.push(n),this.byCode.set(i,a)}}}}key(e,t){if(e===Nk){this.button(0,t);return}if(e===am){t&&(this.spaceDownAt=performance.now(),this.spaceIgnored=this.spaceDownAt-this.rampWheelAt=100,n=Math.min(t-this.lastMove,100);if(this.lastMove=t,!(n>0))return;let r=Math.exp(-n/zk);this.moveX=this.moveX*r+e.movementX/n*(1-r),this.moveY=this.moveY*r+e.movementY/n*(1-r);let i=Math.hypot(this.moveX,this.moveY);!o&&i>bl&&(this.typicalMs=Math.min(this.typicalMs+n,dm),this.typical+=(Math.min(i,this.typical*cm)-this.typical)*(n/this.typicalMs)),this.drawMove(t),this.moveTimer||(this.moveTimer=window.setTimeout(this.onMoveIdle,vl))}loadTypical(){let e=NaN;try{e=Number(window.localStorage.getItem(um))}catch{e=NaN}e>0&&(this.typical=e,this.typicalMs=dm)}drawMove(e=performance.now()){let t=Math.hypot(this.moveX,this.moveY),o=Math.max(this.typical,bl)*cm;this.arcs.forEach(([n,r,i],a)=>{let l=this.moveX*r+this.moveY*i;l>o&&(this.fastUntil[a]=e+Ok);let c="kuteMove";this.fastUntil[a]>e?c="kuteMove on fast":t>bl&&l>=t*Bk&&(c="kuteMove on"),n.className!==c&&(n.className=c)})}rampWheel(e){if(this.rampWheelAt=performance.now(),this.rampWheelAt-this.spaceDownAt{this.widget?.querySelector(`#${t}`)?.classList.remove("on"),this.wheelTimers.delete(t)},_k))}},Kk=new wl});var mm,hm=w(()=>{mm='

                  Kute Icons

                  Tick all
                  Done
                  '});var El={};A(El,{default:()=>Gk});function km(){let s=u.settings.data[xl];return s&&typeof s=="object"?s:{}}function fm(){return u.hostFeatures?.includes("kute-icons")??!1}function gm(s){return km()[s.id]!==!1}function bm(s){return s.hiddenBy.filter(e=>{let t=null;try{t=localStorage.getItem(`kro_setngss_${e.id}`)}catch{return!1}return t===null?!1:e.kind==="checkbox"?t==="false":Number(t)===0})}function vm(s){return s.kind==="checkbox"?`${s.name} is off`:`${s.name} is 0`}async function wm(s){await Ce({title:"Reload the game?",paragraphs:[s,"The game keeps the images it already loaded, so this shows after a reload. Nothing else changes, and you can do it later."],stay:"Later",leave:"Reload now"})&&window.chrome.webview.postMessage("hard-reload")}var Uk,xl,Sl,Gk,$l=w(()=>{"use strict";hm();D();Rt();bn();Uk="https://krunker.io/kute-icons/",xl="kuteIconSlots";Sl=class{constructor(){this.asking=!1,this.watched=new WeakSet,u.kuteIcons={customize:()=>this.customize(),refresh:()=>this.refresh()},u.settings.toggleKuteIcons=e=>this.onToggle(!!e),this.refresh(),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&setTimeout(()=>this.refresh(),1500)})}refresh(){for(let e of Mo){let t=e.element?document.getElementById(e.element):null;!t||this.watched.has(t)||(this.watched.add(t),new MutationObserver(()=>Qt()).observe(t,{attributes:!0,attributeFilter:["src"]}))}Qt()}async onToggle(e){if(Qt(),!fm()){e&&u.showNotification("Kute icons need a newer Kute, update the client",!1,4);return}e&&await this.warnHidden(Mo.filter(gm)),await wm(e?"Kute icons are on.":"Kute icons are off, your own icons are back.")}async warnHidden(e){let t=new Map,o=[];for(let r of e){let i=bm(r);if(i.length!==0){for(let a of i)t.set(a.id,a);o.push(`${r.name}: ${i.map(a=>vm(a)).join(", ")}`)}}if(o.length===0||(this.asking=!0,!await Ce({title:"Hidden by your Krunker settings",paragraphs:[o.length===1?"This Kute icon will not show:":"These Kute icons will not show:",...o,"Switch those Krunker settings on for you?"],stay:"Leave them",leave:"Switch on"}).finally(()=>{this.asking=!1})))return!1;for(let r of t.values())window.setSetting(r.id,r.kind==="checkbox"?!0:"1");return u.showNotification("Switched on in your Krunker settings",!1,3),!0}customize(){let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=mm;let n=f=>o.querySelector(`#${f}`),r=fm(),i=u.settings.data.kuteIcons===!0,a="Ticked icons show Kute's version. Your Krunker settings stay as they are.";i||(a="Use Kute Icons is off, so none of these show yet."),r||(a="This needs a newer Kute. Update the client to use Kute icons."),n("kiHint").textContent=a;let l=!1,c=[],d=()=>{for(let{slot:f,box:g,note:b}of c){let v=g.checked?bm(f):[];if(b.replaceChildren(),v.length===0)continue;b.append(`Hidden: ${v.map(E=>vm(E)).join(", ")} `);let k=document.createElement("span");k.className="kiShow",k.textContent="Show it",k.onclick=async E=>{E.preventDefault(),E.stopPropagation(),await this.warnHidden([f]),d()},b.append(k)}},h=(f,g)=>{l=!0;let b={...km(),[f.id]:g};u.settings.data[xl]=b,window.chrome.webview.postMessage(`set-config-json ${xl} ${JSON.stringify(b)}`)};for(let f of Mo){let g=document.createElement("label");g.className="kiRow";let b=document.createElement("img");b.src=Uk+f.file,b.alt="";let v=document.createElement("span");v.textContent=f.name;let k=document.createElement("span");k.className="kiHidden",v.append(k);let E=document.createElement("input");E.type="checkbox",E.checked=gm(f),E.onchange=async()=>{h(f,E.checked),E.checked&&await this.warnHidden([f]),d()},g.append(b,v,E),n("kiRows").append(g),c.push({slot:f,box:E,note:k})}d(),n("kiAll").onclick=async()=>{let f=c.filter(({box:g})=>!g.checked);for(let{slot:g,box:b}of f)b.checked=!0,h(g,!0);await this.warnHidden(f.map(({slot:g})=>g)),d()};let p=new AbortController,m=()=>{p.abort(),e.remove(),l&&r&&u.settings.data.kuteIcons===!0&&wm("Your Kute icons changed.")};n("kiDone").onclick=m,e.addEventListener("mousedown",f=>{f.target===e&&m()}),document.addEventListener("keydown",f=>{f.key!=="Escape"||this.asking||(f.stopPropagation(),m())},{signal:p.signal,capture:!0}),document.body.append(e)}},Gk=new Sl});var Tl={};A(Tl,{default:()=>Vk});var ym,xm,Cl,Sm,Wk,Ml,Vk,Al=w(()=>{"use strict";D();Rt();ym="kute_update_asked",xm="kute_update_ready",Cl=[.25,.5,.75],Sm=()=>new Promise(s=>{let e=()=>{document.pointerLockElement?setTimeout(e,2e3):s()};e()}),Wk=s=>`${Math.round(s/1048576)} MB`,Ml=class{constructor(){this.step=0,this.busy=!1,!(u.platform!=="linux"||!u.hostFeatures?.includes("appimage-update"))&&(window.chrome.webview.addEventListener("message",e=>{let t=e.data?.update;t&&typeof t=="object"&&this.receive(t).catch(()=>{})}),window.chrome.webview.postMessage("update-state"))}async receive(e){e.stage==="offer"?await this.offer(e):e.stage==="downloading"?this.progress(e):e.stage==="ready"?await this.ready(e):e.stage==="failed"&&u.showNotification(`The update to Kute ${e.version} failed: ${e.error??"unknown error"}`,!1,8)}async offer(e){if(this.busy||sessionStorage.getItem(ym)===e.version)return;this.busy=!0,await Sm(),sessionStorage.setItem(ym,e.version);let t=e.install===!0,o=await Ce({title:`Kute ${e.version} is out`,paragraphs:t?[`You have ${e.current}. The update${e.size?` (${Wk(e.size)})`:""} downloads while you play.`,"It replaces your Kute AppImage and starts the next time you open Kute."]:[`You have ${e.current}.`,"This copy of Kute does not run as an AppImage and cannot update itself. The download page has the new version."],stay:"Later",leave:t?"Update":"Open download page"});this.busy=!1,o&&(window.chrome.webview.postMessage(t?"update-install":"update-page"),t&&u.showNotification(`Downloading Kute ${e.version}`,!1,4))}progress(e){if(!e.total||!e.done)return;let t=e.done/e.total;for(;this.step=Cl[this.step];)u.showNotification(`Downloading Kute ${e.version}: ${Math.round(Cl[this.step]*100)} %`,!1,3),this.step++}async ready(e){if(sessionStorage.getItem(xm)===e.version)return;await Sm(),sessionStorage.setItem(xm,e.version),await Ce({title:`Kute ${e.version} is ready`,paragraphs:["It starts the next time you open Kute. Restart now to use it right away."],stay:"Later",leave:"Restart now"})&&window.chrome.webview.postMessage("update-restart")}},Vk=new Ml});var $m,Em=w(()=>{$m=`

                  CSS Manager

                  visibilityHold to peek
                  folder_openShow folder
                  storeCSS Store
                  ×
                  One file is active at a time and loads after all of Krunker's styles, so a rule with the same selector wins. Krunker's inline styles and its own !important rules still need !important here. Files live in Documents\\kute\\css.
                  Your CSS
                  Click a file to edit it, the circle makes it active
                  addNew
                  content_pastePaste
                  upload_fileImport
                  `});var Mm,Cm=w(()=>{Mm=`:host{--accent: #35e0e8;--bg: #1e1e1e;--panel: #252525;--line: #333;--muted: #999;--ok: #5ce05a;--warn: #ffb74d;--bad: #eb5656}.managerPopup{position:relative;box-sizing:border-box;display:flex;flex-direction:column;width:min(1020px,94vw);height:min(760px,90vh);background:var(--bg);color:#fff;border-radius:14px;box-shadow:0 8px 48px #000c;font-family:Consolas,monospace;font-size:14px;overflow:hidden}.managerHeader{display:flex;align-items:center;gap:.6em;padding:1em 1.2em .8em 1.4em;border-bottom:1px solid var(--line)}.managerTitle{margin:0 auto 0 0;font-size:1.6em;letter-spacing:1px;color:var(--accent)}.managerClose{margin-left:.4em;font-size:1.6em;line-height:1;color:var(--muted);cursor:pointer}.managerClose:hover{color:#fff}.managerHint{padding:.7em 1.4em;color:var(--muted);line-height:1.5;border-bottom:1px solid var(--line)}.managerHint code{padding:.05em .35em;border-radius:4px;background:#181818;color:var(--accent)}.managerBody{flex:1 1 auto;min-height:0;overflow-y:auto;padding:1em 1.4em}.managerError,.managerNotice{margin:.8em 1.4em 0;padding:.6em .9em;border-radius:8px;white-space:pre-wrap;line-height:1.5}.managerError{background:#4a1d1d;color:#ffb4b4}.managerNotice{display:flex;align-items:center;gap:1em;background:#173a52;color:#cfe8ff}.managerNotice span{flex:1}[hidden]{display:none!important}.btn{display:inline-flex;align-items:center;gap:.4em;padding:.45em .9em;border-radius:7px;background:#2d2d2d;color:#fff;cursor:pointer;user-select:none;white-space:nowrap}.btn:hover{background:#383838;color:var(--accent)}.btn.primary{background:#1b5e63}.btn.primary:hover{background:#23777d;color:#fff}.btn.small{padding:.25em .55em;font-size:.92em}.iconBtn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:var(--muted);cursor:pointer;user-select:none}.iconBtn:hover{background:#333;color:#fff}.iconBtn.danger:hover{color:var(--bad)}.mi{font-family:Material Icons;font-weight:400;font-style:normal;font-size:18px;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;font-feature-settings:"liga"}.group{margin-bottom:1.2em;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.groupHead{display:flex;align-items:center;gap:.7em;padding:.7em .9em;border-bottom:1px solid var(--line)}.groupTitle{font-size:1.15em;color:#fff}.groupRuns{margin-right:auto;color:var(--muted);font-size:.9em}.empty{padding:.9em;color:var(--muted)}.dropZone{margin:.7em;padding:.8em;border:2px dashed #444;border-radius:8px;color:#777;text-align:center}.dropHover{border-color:var(--accent)!important;background:#35e0e814!important;color:var(--accent)}.toggle{position:relative;flex:0 0 auto;width:38px;height:20px;border-radius:10px;background:#444;cursor:pointer;transition:background .15s}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#ddd;transition:left .15s}.toggle.on{background:#1b8f96}.toggle.on:after{left:21px;background:#fff}.state{flex:0 0 auto;padding:.1em .5em;border-radius:5px;font-size:.85em;background:#333;color:var(--muted)}.state.ok{background:#1f3d1f;color:var(--ok)}.state.warn{background:#3d321f;color:var(--warn)}.state.bad{background:#3d1f1f;color:var(--bad);cursor:help}.askBackdrop{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background:#0009}.askBox{width:min(480px,90%);padding:1.3em 1.4em;border-radius:12px;background:#262626;box-shadow:0 8px 32px #000c}.askTitle{margin-bottom:.8em;font-size:1.1em;color:var(--accent)}.askInput,.field{box-sizing:border-box;width:100%;padding:.5em .7em;border:1px solid #444;border-radius:6px;background:#181818;color:#fff;font:inherit;outline:none}.askInput:focus,.field:focus{border-color:var(--accent)}.askHint{margin-top:.5em;color:var(--muted);font-size:.9em;line-height:1.4}.askActions{display:flex;justify-content:flex-end;gap:.6em;margin-top:1em}.editor{position:relative;display:flex;flex:1 1 auto;min-height:0;border:1px solid var(--line);border-radius:8px;background:#181818;overflow:hidden;font-family:Consolas,Cascadia Mono,monospace;font-size:13.5px;line-height:1.5;tab-size:4}.editorGutter{flex:0 0 auto;padding:.6em .6em .6em .8em;overflow:hidden;color:#555;text-align:right;white-space:pre;user-select:none;border-right:1px solid #2a2a2a}.editorCode{position:relative;flex:1 1 auto;min-width:0}.editorCode pre,.editorCode textarea{position:absolute;inset:0;box-sizing:border-box;margin:0;padding:.6em .8em;border:0;font:inherit;line-height:inherit;tab-size:inherit;white-space:pre;overflow-wrap:normal;letter-spacing:normal}.editorCode pre{overflow:hidden;color:#d4d4d4;pointer-events:none}.editorCode textarea{resize:none;overflow:auto;background:transparent;color:transparent;caret-color:#fff;outline:none}.editorCode textarea::selection{background:#3578c873;color:transparent}.tk-c{color:#6a9955}.tk-s{color:#ce9178}.tk-n{color:#b5cea8}.tk-k{color:#c586c0}.tk-l{color:#569cd6}.tk-f{color:#dcdcaa}.tk-p{color:#9cdcfe}.editorBar{display:flex;align-items:center;gap:.6em;margin-bottom:.7em}.editorFile{margin-right:auto;color:#fff;font-size:1.05em}.editorFile .dirty{color:var(--warn)}.editorView{display:flex;flex-direction:column;height:100%}.editorKeys{margin-top:.5em;color:#666;font-size:.85em} +`});var Tm={};A(Tm,{askConfirm:()=>Re,askText:()=>nt,formatSize:()=>go,hostSupportsManagers:()=>Os,makeDropTarget:()=>st,openManagerPopup:()=>fo,readBase64:()=>Rl});function st(s,e){Ll.set(s,e)}function Zk(s){let e=[...s.items].filter(n=>n.kind==="file").map(n=>n.webkitGetAsEntry()).filter(n=>n!==null);if(!e.length)return Promise.resolve([...s.files].map(n=>({path:n.name,file:n})));let t=[],o=async n=>{if(t.length>=Jk)return;if(n.isFile){let i=await new Promise((a,l)=>n.file(a,l));t.push({path:n.fullPath.replace(/^\/+/,""),file:i});return}let r=n.createReader();for(;;){let i=await new Promise((a,l)=>r.readEntries(a,l));if(!i.length)break;for(let a of i)await o(a)}};return Promise.all(e.map(o)).then(()=>t)}function fo(s,{onMessage:e,canClose:t,onEscape:o}){let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let r=document.createElement("div");n.append(r);let i=r.attachShadow({mode:"open"});i.innerHTML=`${s}`;let a=new AbortController,{signal:l}=a,c=v=>{v.data&&typeof v.data=="object"&&e(v.data)};window.chrome.webview.addEventListener("message",c);let d=()=>{l.aborted||t&&!t()||(a.abort(),window.chrome.webview.removeEventListener("message",c),n.remove())};for(let v of["keydown","keyup","keypress"])i.addEventListener(v,k=>k.stopPropagation());document.addEventListener("keydown",v=>{if(v.key!=="Escape")return;v.stopPropagation();let k=i.querySelector(".askBackdrop [data-cancel]");k?k.click():o?.()||d()},{signal:l,capture:!0}),n.addEventListener("mousedown",v=>{v.target===n&&d()});let h=i.querySelector("[data-error]"),p=0,m=v=>{h&&(h.textContent=v,h.hidden=!1,clearTimeout(p),p=setTimeout(()=>{h.hidden=!0},8e3))},f=null,g=v=>{f!==v&&(f?.classList.remove("dropHover"),f=v,v?.classList.add("dropHover"))},b=v=>{for(let k of v.composedPath()){if(k===n)break;if(k instanceof HTMLElement&&Ll.has(k))return k}return null};return n.addEventListener("dragover",v=>{v.preventDefault();let k=b(v);g(k),v.dataTransfer&&(v.dataTransfer.dropEffect=k?"copy":"none")}),n.addEventListener("dragleave",v=>{v.relatedTarget||g(null)}),n.addEventListener("drop",v=>{v.preventDefault();let k=b(v);g(null);let E=k&&Ll.get(k);!E||!v.dataTransfer||Zk(v.dataTransfer).then(L=>{L.length&&E(L)}).catch(L=>m(`Could not read the dropped files: ${L?.message??L}`))}),i.querySelector("[data-close]")?.addEventListener("click",d),document.body.append(n),{shadow:i,close:d,signal:l,showError:m}}function nt(s,e,t,o=""){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
                  +
                  Cancel
                  OK
                  `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=o;let r=n.querySelector(".askInput");r.value=t,(s.querySelector(".managerPopup")??s).append(n),r.focus();let a=t.lastIndexOf(".");return r.setSelectionRange(t.lastIndexOf("/")+1,a>0?a:t.length),new Promise(l=>{let c=d=>{n.remove(),l(d)};n.querySelector("[data-ok]").onclick=()=>c(r.value.trim()||null),n.querySelector("[data-cancel]").onclick=()=>c(null),r.onkeydown=d=>{d.key==="Enter"&&c(r.value.trim()||null)}})}function Re(s,e,t,o){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
                  +
                  Cancel
                  `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=t;let r=n.querySelector("[data-ok]");return r.textContent=o,(s.querySelector(".managerPopup")??s).append(n),new Promise(i=>{let a=l=>{n.remove(),i(l)};r.onclick=()=>a(!0),n.querySelector("[data-cancel]").onclick=()=>a(!1)})}var Os,Ll,Jk,Rl,go,Ds=w(()=>{"use strict";D();Cm();Os=()=>u.hostFeatures?.includes("script-manager")??!1,Ll=new WeakMap,Jk=5e3;Rl=s=>new Promise((e,t)=>{let o=new FileReader;o.onload=()=>e(String(o.result).slice(String(o.result).indexOf(",")+1)),o.onerror=()=>t(o.error),o.readAsDataURL(s)});go=s=>s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`});var Nl={};A(Nl,{open:()=>sy});var Qk,ey,Pl,ty,Do,Ge,Il,oy,sy,_l=w(()=>{"use strict";D();Em();vn();Ds();Oo();Qk=120,ey=4*1024*1024,Pl="custom.css",ty=()=>u.hostFeatures?.includes("css-manager")??!1,Do=s=>/\.css$/i.test(s)?s:`${s}.css`,Ge=(s,e)=>window.chrome.webview.postMessage(e?`css-${s} ${JSON.stringify(e)}`:`css-${s}`),Il=class{constructor(){this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.files=[],this.active=null,this.listed=!1,this.saving=null,this.savingName=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.closeAfterSave=!1,this.forceClose=!1,this.legacy=!1,this.live=!0,this.previewTimer=0}open(){if(this.popup)return;if(!ts()){u.showNotification("The CSS Manager needs a newer Kute. Update Kute to use it.",!1,6);return}this.legacy=!ty(),this.popup=fo($m,{onMessage:i=>this.receive(i),canClose:()=>this.canClose()});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{clearTimeout(this.previewTimer),Lt.revert(),this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.listed=!1,this.saving=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.forceClose=!1}),this.$("#ccFolder").onclick=()=>Ge("reveal",{name:this.editing??""}),this.$("#ccOff").hidden=u.settings.data.customCss!==!1,this.$("#ccStore").onclick=()=>this.openStore(),this.$("#ccStoreBack").onclick=()=>{this.$("#ccStorePanel").hidden=!0,this.$(".managerBody").classList.remove("storeOpen")};let o=this.$("#ccLive");o.checked=this.live,o.onchange=()=>{this.live=o.checked,this.preview()};let n=e.host.parentElement;if(this.$("#ccPeek").onpointerdown=i=>{i.preventDefault(),n.style.opacity="0",window.addEventListener("pointerup",()=>{n.style.opacity=""},{once:!0,signal:t})},this.legacy){this.$(".managerPopup").classList.add("legacy"),this.$("#ccHint").textContent="Loaded after all of Krunker's styles, so a rule with the same selector wins. Saved as Documents\\kute\\custom.css. Update Kute to keep several CSS files and switch between them.",this.$("#ccEditor").textContent="Loading...",Ge("read");return}this.$("#ccNew").onclick=()=>this.create(),this.$("#ccPaste").onclick=()=>this.paste();let r=this.$("#ccImportInput");this.$("#ccImport").onclick=()=>r.click(),r.onchange=()=>{this.importFiles([...r.files??[]]),r.value=""},st(this.$("#ccFiles"),i=>this.importFiles(i.map(a=>a.file))),this.$("#ccEditor").textContent="Loading...",Ge("list")}async openStore(){let e=this.$("#ccStorePanel"),t=this.$("#ccStoreList");this.$(".managerBody").classList.add("storeOpen"),e.hidden=!1,t.replaceChildren();let o=document.createElement("p");o.textContent="Loading the CSS Store...",t.append(o);try{let n=await fetch("https://raw.githubusercontent.com/Liamoulee/KSS/main/index.json");if(!n.ok)throw new Error(`HTTP ${n.status}`);let r=await n.json();t.replaceChildren();for(let i of r){let a=document.createElement("div");if(a.className="storeCard",i.preview){let m=document.createElement("img");m.src=i.preview.startsWith("https://")?i.preview:"https://raw.githubusercontent.com/Liamoulee/KSS/main/"+i.preview.split("/").map(encodeURIComponent).join("/"),m.alt=`${i.name} preview`,m.onerror=()=>m.remove(),a.append(m)}let l=document.createElement("h3");l.textContent=i.name;let c=document.createElement("p");c.textContent=`By ${i.author}`;let d=document.createElement("button");d.className="storeDownloadBtn";let h=this.files.some(m=>m.name.toLowerCase()===Do(i.name).toLowerCase()),p=m=>{d.textContent=m};p(h?"Already downloaded":"Download the CSS"),h&&(d.classList.add("installed"),d.disabled=!0),d.onclick=async()=>{if(h=this.files.some(m=>m.name.toLowerCase()===Do(i.name).toLowerCase()),h){p("Already downloaded"),d.classList.add("installed"),d.disabled=!0;return}d.disabled=!0,p("Downloading...");try{let m=await fetch("https://raw.githubusercontent.com/Liamoulee/KSS/main/"+i.file.split("/").map(encodeURIComponent).join("/"));if(!m.ok)throw new Error(`HTTP ${m.status}`);let f=await m.text();Ge("import",{name:Do(i.name),content:f}),h=!0,p("Already downloaded"),d.classList.add("installed"),d.disabled=!0}catch(m){console.error("CSS Store import failed:",m),d.disabled=!1,p("Try again")}},a.append(l,c,d),t.append(a)}r.length===0&&(t.textContent="No CSS available.")}catch(n){console.error("CSS Store failed to load:",n),t.replaceChildren();let r=document.createElement("p");r.textContent="Unable to load the CSS Store. Please try again later.",t.append(r)}}$(e){return this.popup?.shadow.querySelector(e)}receive(e){if(typeof e.managerError=="string"&&this.popup?.showError(e.managerError),this.legacy){typeof e.customCss?.content=="string"&&!this.editor&&(this.active=Pl,this.showEditor(Pl,e.customCss.content)),e.customCssSaved&&this.saving!==null&&this.saved(e.customCssSaved.error,Pl);return}e.cssFiles&&this.updateList(e.cssFiles),e.cssFile&&e.cssFile.name===this.loading&&(this.loading=null,typeof e.cssFile.content=="string"?this.showEditor(e.cssFile.name,e.cssFile.content):this.popup?.showError(`Could not read ${e.cssFile.name}`)),e.cssSaved&&this.saving!==null&&e.cssSaved.name===this.savingName&&this.saved(e.cssSaved.error,e.cssSaved.name),e.cssImported&&this.imported(e.cssImported),e.cssActivated&&(this.activating=!1,e.cssActivated.error?this.popup?.showError(`Could not switch: ${e.cssActivated.error}`):Lt.markSaved(String(e.cssActivated.content??"")),this.preview())}updateList(e){this.files=Array.isArray(e.files)?e.files:[];let t=this.active;this.active=e.active??null,t&&!this.active&&!this.activating&&(Lt.markSaved(""),this.preview());let o=new Set(this.files.map(n=>n.name));if(this.renaming&&this.editing===this.renaming.from&&o.has(this.renaming.to)){this.editing=this.renaming.to;let n=this.popup?.shadow.querySelector(".editorFile")?.firstChild;n&&(n.textContent=this.editing)}if(this.renaming=null,this.editing&&!o.has(this.editing)&&this.closeEditor(),!this.listed){this.listed=!0;let n=this.active??this.files[0]?.name;n?this.load(n):this.closeEditor()}this.renderList()}renderList(){let e=this.$("#ccList");if(e){if(e.textContent="",!this.files.length){let t=document.createElement("div");t.className="empty",t.textContent="No CSS files yet. Make one with New, paste one, or import .css files.",e.append(t)}for(let t of this.files)e.append(this.row(t));e.append(this.row(null))}}row(e){let t=e?.name??"",o=document.createElement("div");o.className="cssRow",o.classList.toggle("none",!e),o.classList.toggle("active",(this.active??"")===t),o.classList.toggle("editing",!!e&&this.editing===t);let n=document.createElement("div");n.className="cssRadio",n.title=e?"Use this one":"No CSS",n.onclick=l=>{l.stopPropagation(),this.activate(t)};let r=document.createElement("div");if(r.className="cssName",r.textContent=e?t:"None",o.append(n,r),!e)return o.onclick=()=>this.activate(""),o;let i=document.createElement("div");i.className="cssSize",i.textContent=go(e.size);let a=document.createElement("div");a.className="cssActions";for(let[l,c,d,h]of[["edit","Rename",()=>this.rename(t),!1],["delete","Delete",()=>this.remove(t),!0]]){let p=document.createElement("div");p.className=h?"iconBtn danger":"iconBtn",p.title=c,p.innerHTML=`${l}`,p.onclick=m=>{m.stopPropagation(),d()},a.append(p)}return o.append(i,a),o.onclick=()=>this.load(t),o}async load(e){e===this.editing&&this.editor||await this.discardChanges()&&(this.loading=e,Ge("get",{name:e}))}showEditor(e,t){let o=this.$("#ccEditor");if(!o)return;let{editor:n}=po(o,{title:e,content:t,language:"css",onSave:r=>this.save(r),onClose:()=>this.popup?.close(),onChange:()=>{clearTimeout(this.previewTimer),this.previewTimer=setTimeout(()=>this.preview(),Qk)}});this.editor=n,this.editing=e,this.renderList(),this.preview()}closeEditor(){this.editor=null,this.editing=null;let e=this.$("#ccEditor");e&&(e.innerHTML='
                  Pick a file below to edit it.
                  '),this.preview()}preview(){let{editor:e}=this;this.live&&e&&(this.editing===this.active||e.isDirty())?Lt.apply(e.getValue()):Lt.revert()}async discardChanges(){return!this.editor?.isDirty()||!this.popup?!0:Re(this.popup.shadow,"Unsaved changes",`Throw the changes to ${this.editing} away?`,"Discard")}save(e){!this.editor||!this.editing||this.saving!==null||(this.closeAfterSave=e,this.saving=this.editor.getValue(),this.savingName=this.editing,this.legacy?window.chrome.webview.postMessage(`css-write ${JSON.stringify({content:this.saving})}`):Ge("save",{name:this.editing,content:this.saving}))}saved(e,t){let o=this.saving??"";if(this.saving=null,e){this.popup?.showError(`Could not save: ${e}`);return}t===this.active&&Lt.markSaved(o),t===this.editing&&this.editor?.markSaved(o),this.preview(),this.closeAfterSave&&this.popup?.close()}activate(e){e===(this.active??"")||this.activating||(this.activating=!0,Ge("activate",{name:e}))}async create(){if(!this.popup)return;let e=await nt(this.popup.shadow,"New CSS file","theme.css","Ends in .css");e&&(this.openAfterImport=Do(e),Ge("import",{name:this.openAfterImport,content:""}))}async paste(){if(!this.popup)return;let e="";try{e=await navigator.clipboard.readText()}catch{this.popup.showError("Could not read the clipboard.");return}if(!e.trim()){this.popup.showError("The clipboard has no text in it. Copy the CSS first.");return}let t=await nt(this.popup.shadow,"Name for the pasted CSS","pasted.css","Ends in .css");t&&(this.openAfterImport=Do(t),Ge("import",{name:this.openAfterImport,content:e}))}async importFiles(e){let t=[];for(let o of e){if(!/\.css$/i.test(o.name)||o.size>ey){t.push(o.name);continue}Ge("import",{name:o.name,content:await o.text()})}t.length&&this.popup?.showError(`Not imported (only .css files up to 4 MB): ${t.join(", ")}`)}imported(e){if(e.error){this.popup?.showError(`Could not add ${e.requested}: ${e.error}`);return}this.active||this.activate(e.name),e.requested===this.openAfterImport?(this.openAfterImport=null,this.load(e.name)):this.editing||this.load(e.name)}async rename(e){if(!this.popup)return;let t=await nt(this.popup.shadow,`Rename ${e}`,e,"Ends in .css");if(!t)return;let o=Do(t);o!==e&&(this.renaming={from:e,to:o},Ge("rename",{from:e,to:o}))}async remove(e){!this.popup||!await Re(this.popup.shadow,`Delete ${e}?`,"It goes to the recycle bin.","Delete")||Ge("delete",{name:e})}canClose(){return this.forceClose||!this.editor?.isDirty()||!this.popup?!0:(Re(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},oy=new Il,sy=()=>oy.open()});var Am={};A(Am,{hostWatchesSwapper:()=>dr,reloadStylesheets:()=>Fs});var dr,Fs,ur=w(()=>{"use strict";D();dr=()=>u.hostFeatures?.includes("swapper-watch")??!1,Fs=s=>{for(let e of document.querySelectorAll('link[rel="stylesheet"]')){if(!(e instanceof HTMLLinkElement)||!e.href)continue;let t=new URL(e.href);if(!/(^|\.)krunker\.io$/.test(t.hostname)||!s.has(t.pathname.slice(1).toLowerCase()))continue;t.searchParams.set("kuteSwap",String(Date.now()));let o=e.cloneNode();o.href=t.href,o.addEventListener("load",()=>e.remove(),{once:!0}),o.addEventListener("error",()=>o.remove(),{once:!0}),e.after(o)}}});var Rm,Lm=w(()=>{Rm='

                  Userscripts

                  Userscripts off
                  folder_openOpen scripts folder
                  ×
                  Scripts run inside Krunker. Only add scripts you trust, and never anything that breaks krunker.io/docs/terms.txt. Drop .js files onto a group, or create one with New script.
                  '});var zl={};A(zl,{open:()=>ly});var ry,iy,oe,qs,Bl,ay,ly,Hl=w(()=>{"use strict";D();Lm();es();Ds();Oo();ry=4*1024*1024,iy=`// ==UserScript== // @name {{name}} // @author // @version 1.0 @@ -207,25 +207,24 @@ this._console.log("{{name}} is running"); this.unload = () => {}; return this; -`,oe=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},Ks=(s,e,t,o="")=>{let n=oe("div",`iconBtn ${o}`);return n.title=e,n.append(oe("span","mi",s)),n.onclick=t,n},Hl=class{constructor(){this.popup=null,this.groups=[],this.openSettings=new Set,this.editing=null,this.pendingRead=null,this.pendingSave=null,this.needsRefresh=!1,this.renderQueued=!1,this.forceClose=!1,this.prefsTimers=new Map,Xe&&(Xe.onChange=()=>this.queueRender()),d.userscriptManager.masterChanged=e=>this.onMasterChanged(e)}masterOn(){return d.settings?.data?.userscripts!==!1}onMasterChanged(e){if(e&&!Xe)this.needsRefresh=!0;else if(e&&!Lt())for(let t of this.groups.filter(o=>o.id==="game").flatMap(o=>o.scripts)){let o=this.entryFor(t.key);!o||!t.enabled||(o.start(),(o.tainted||o.state!=="running"&&o.state!=="waiting"&&o.state!=="error")&&(this.needsRefresh=!0))}this.updateNotice(),this.editing||this.render()}reload(e){return e.length?Lt()?(Lo(e,!0,this.masterOn()),!0):!1:!0}applyMaster(){let e=this.popup?.shadow;if(!e)return;let t=this.masterOn();e.querySelector(".managerPopup")?.classList.toggle("scriptsOff",!t);let o=e.querySelector("#usMaster");o&&(o.classList.toggle("on",t),o.querySelector(".toggle")?.classList.toggle("on",t),o.querySelector("span").textContent=t?"Userscripts on":"Userscripts off")}open(){if(this.popup)return;if(!Fs()){window.chrome.webview.postMessage("open, userscripts"),d.showNotification("This Kute version can only open the scripts folder. Update Kute for the script manager.",!1,6);return}this.popup=vo(_m,{onMessage:t=>this.receive(t),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1}),this.popup.signal.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.forceClose=!1});let{shadow:e}=this.popup;e.querySelector("#usFolder").onclick=()=>this.send("reveal",{}),e.querySelector("#usRefreshNow").onclick=()=>location.reload(),e.querySelector("#usMaster").onclick=()=>d.settings.changeSetting("userscripts",!this.masterOn(),!1),this.applyMaster(),this.body().textContent="Loading...",this.send("list",{})}send(e,t){window.chrome.webview.postMessage(`scripts-${e} ${JSON.stringify(t)}`)}body(){return this.popup?.shadow.querySelector("#usBody")}receive(e){if(e.managerError&&(this.popup?.showError(e.managerError),this.pendingSave&&(this.pendingSave=null)),e.userscripts){if(this.groups=e.userscripts.groups??[],this.pendingSave&&this.editing){let{closeAfter:t}=this.pendingSave;this.pendingSave=null,this.editing.editor.markSaved(),this.editing.group==="game"&&!this.reload([this.editing.file])&&(this.needsRefresh=!0),t&&(this.editing=null)}this.editing||this.render(),this.updateNotice()}if(e.userscriptSource&&e.userscriptSource.key===this.pendingRead){this.pendingRead=null;let t=this.findScript(e.userscriptSource.key);t&&typeof e.userscriptSource.content=="string"?this.showEditor(t.group,t.file,e.userscriptSource.content):this.popup?.showError("The script could not be read.")}}findScript(e){for(let t of this.groups){let o=t.scripts.find(n=>n.key===e);if(o)return o}}entryFor(e){return Xe?.entries?.find(t=>t.key===e)}queueRender(){!this.popup||this.renderQueued||(this.renderQueued=!0,queueMicrotask(()=>{this.renderQueued=!1,this.updateNotice(),this.popup&&!this.editing&&this.render()}))}updateNotice(){let e=this.popup?.shadow.querySelector("#usRefresh");if(!e)return;let t=this.masterOn(),o=Xe?.entries?.some(n=>n.outdated||!t&&n.state==="running");e.hidden=!this.needsRefresh&&!o}render(){let e=this.body();if(!(!e||!this.popup)){this.applyMaster(),e.textContent="";for(let t of this.groups)e.append(this.renderGroup(t))}}renderGroup(e){let t=oe("div","group"),o=oe("div","groupHead");o.append(oe("div","groupTitle",e.label),oe("div","groupRuns",`runs in ${e.runs}`));let n=oe("div","btn small");n.append(oe("span","mi","add"),"New script"),n.onclick=()=>this.createScript(e.id),o.append(n),t.append(o),e.scripts.length===0&&t.append(oe("div","empty","No scripts yet."));for(let r of e.scripts)this.renderScript(t,e,r);return t.append(oe("div","dropZone",`Drop .js files here to add them to ${e.label}`)),ot(t,r=>this.importFiles(e,r)),t}async importFiles(e,t){if(!this.popup)return;let o=[],n=t.filter(({file:a})=>{if(!/\.js$/i.test(a.name))o.push(`${a.name}: not a .js file`);else if(a.size>dy)o.push(`${a.name}: larger than 4 MB`);else return!0;return!1}),r=new Set(e.scripts.map(a=>a.file.toLowerCase())),i=n.filter(({file:a})=>r.has(a.name.toLowerCase())).map(({file:a})=>a.name);if(i.length){let a=`${i.join(", ")} already exist in ${e.label}. Replace them with the dropped files?`;if(!await Pe(this.popup.shadow,"Replace scripts?",a,"Replace"))return}for(let{file:a}of n)this.send("write",{group:e.id,file:a.name,content:await a.text(),noList:!0});this.send("list",{}),e.id==="game"&&!this.reload(n.map(({file:a})=>a.name))&&(this.needsRefresh=!0),this.updateNotice(),o.length&&this.popup?.showError(o.join(` -`))}stateOf(e,t,o){return t?.state==="error"?["Error","bad",t.error]:t?.outdated?["Old version","warn","Your changes apply after a refresh, this script has no unload to stop the running version"]:this.masterOn()?o||!Xe?e.enabled?["On","ok",""]:["Off","",""]:e.enabled?t?.state==="running"?["Running","ok",t.late?"Started after the page loaded. It is a document-start script, refresh if it misses something":""]:t?.state==="waiting"?["Starting","ok","Starts once the page has loaded"]:!t&&Lt()?["Starting","ok",""]:["After refresh","warn","On, starts with the next page load"]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:["Off","",""]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:e.enabled?["On","","Runs once userscripts are on"]:["Off","",""]}renderScript(e,t,o){let n=t.id!=="game",r=n?void 0:this.entryFor(o.key),i=r?.meta??o.meta,a=oe("div","scriptRow"),l=oe("div",`toggle${o.enabled?" on":""}`);l.title=o.enabled?"Turn off":"Turn on",l.onclick=()=>this.toggle(o,r,n);let c=oe("div","scriptInfo"),u=oe("div","scriptName",i.name||o.file);i.version&&u.append(oe("span","version",`v${i.version}`)),i.author&&u.append(oe("span","author",`by ${i.author}`)),c.append(u);let h=[i.desc,i.name?o.file:"",wo(o.size)].filter(Boolean).join(" \xB7 ");c.append(oe("div","scriptDesc",h)),c.title=[i.desc,`${o.file}, ${o.runAt}${o.priority?`, priority ${o.priority}`:""}`].filter(Boolean).join(` -`);let[p,f,m]=this.stateOf(o,r,n),g=oe("div",`state ${f}`,p);m&&(g.title=m);let b=oe("div","scriptActions");r?.settings&&Object.keys(r.settings).length&&b.append(Ks("tune","Script settings",()=>{this.openSettings.has(o.key)?this.openSettings.delete(o.key):this.openSettings.add(o.key),this.render()})),b.append(Ks("edit","Edit",()=>{this.pendingRead=o.key,this.send("read",{key:o.key})}),Ks("swap_horiz",`Move to ${n?"Game":"Social"}`,()=>this.move(o,r,n)),Ks("folder_open","Show in folder",()=>this.send("reveal",{key:o.key})),Ks("delete","Delete (goes to the recycle bin)",()=>this.deleteScript(o,r),"danger")),a.append(l,c,g,b),e.append(a),r?.settings&&this.openSettings.has(o.key)&&e.append(this.renderSettings(o,r))}toggle(e,t,o){e.enabled=!e.enabled,this.send("toggle",{key:e.key,enabled:e.enabled}),o||this.masterOn()&&(t?e.enabled?(t.start(),(t.tainted||t.state!=="running"&&t.state!=="waiting"&&t.state!=="error")&&(this.needsRefresh=!0)):t.stop()||(this.needsRefresh=!0):e.enabled&&Lt()?Lo([e.key],!1,!0):e.enabled&&(this.needsRefresh=!0)),this.updateNotice(),this.render()}move(e,t,o){t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("move",{key:e.key,group:o?"game":"social"}),o&&!this.reload([e.file])&&(this.needsRefresh=!0),this.updateNotice()}async deleteScript(e,t){!this.popup||!await Pe(this.popup.shadow,`Delete ${e.file}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||(t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("delete",{key:e.key}))}async createScript(e){if(!this.popup)return;let t=await st(this.popup.shadow,"New script","my-script.js","The file name. It ends up in the scripts folder of this group.");if(!t)return;let o=/\.js$/i.test(t)?t:`${t}.js`;if(this.groups.some(r=>r.id===e&&r.scripts.some(i=>i.file.toLowerCase()===o.toLowerCase()))){this.popup.showError(`${o} already exists in this group.`);return}this.showEditor(e,o,uy.replaceAll("{{name}}",o.replace(/\.js$/i,"")),!0)}renderSettings(e,t){let o=oe("div","scriptSettings"),n=t.settings??{},r=()=>{clearTimeout(this.prefsTimers.get(e.key)),this.prefsTimers.set(e.key,setTimeout(()=>{this.prefsTimers.delete(e.key);let a=Object.fromEntries(Object.entries(n).map(([l,c])=>[l,c.value]));this.send("prefs",{key:e.key,prefs:a})},300))},i=(a,l)=>{t.setPref(a,l),r()};for(let[a,l]of Object.entries(n)){let c=oe("div","settingRow"),u=oe("div","settingLabel",l.title||a);l.desc&&u.append(oe("small","",l.desc)),c.append(u,this.settingControl(a,l,i)),o.append(c)}return o}settingControl(e,t,o){switch(t.type){case"bool":{let n=oe("div",`toggle${t.value?" on":""}`);return n.onclick=()=>{o(e,!t.value),n.classList.toggle("on",!!t.value)},n}case"num":{let n=oe("div");n.style.cssText="display:flex;gap:.6em;align-items:center";let r=oe("input");if(r.type="number",r.style.width="90px",r.value=String(t.value),t.min!==void 0&&(r.min=String(t.min)),t.max!==void 0&&(r.max=String(t.max)),r.step=String(t.step??"any"),t.min!==void 0&&t.max!==void 0){let i=oe("input");i.type="range",i.min=String(t.min),i.max=String(t.max),i.step=String(t.step??"any"),i.value=String(t.value),i.oninput=()=>{r.value=i.value,o(e,Number(i.value))},r.onchange=()=>{i.value=r.value},n.append(i)}return r.addEventListener("change",()=>{r.value!==""&&Number.isFinite(Number(r.value))&&o(e,Number(r.value))}),n.append(r),n}case"sel":{let n=oe("select");for(let r of t.opts??[]){let i=oe("option","",String(r));i.value=String(r),i.selected=r===t.value,n.append(i)}return n.onchange=()=>{let r=(t.opts??[]).find(i=>String(i)===n.value);o(e,r??n.value)},n}case"color":{let n=oe("input");return n.type="color",n.value=String(t.value),n.onchange=()=>o(e,n.value),n}case"text":{let n=oe("input");return n.type="text",n.value=String(t.value??""),n.onchange=()=>o(e,n.value),n}case"keybind":{let n=i=>[i?.ctrl&&"Ctrl",i?.alt&&"Alt",i?.shift&&"Shift",i?.key||"none"].filter(Boolean).join(" + "),r=oe("div","btn small",n(t.value));return r.onclick=()=>{r.textContent="Press a key...";let i=a=>{if(["Control","Alt","Shift","Meta"].includes(a.key))return;a.preventDefault(),a.stopPropagation(),window.removeEventListener("keydown",i,!0);let l={key:a.key.toLowerCase(),ctrl:a.ctrlKey,alt:a.altKey,shift:a.shiftKey};o(e,l),r.textContent=n(l)};window.addEventListener("keydown",i,!0)},r}default:return oe("div","scriptFile",`unsupported type "${t.type}"`)}}showEditor(e,t,o,n=!1){let r=this.body();if(!r)return;let{editor:i}=fo(r,{title:t,content:o,language:"js",isNew:n,onSave:a=>{this.editing&&(this.pendingSave={closeAfter:a},this.editing.closeAfterSave=a,this.send("write",{group:e,file:t,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={group:e,file:t,editor:i,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Pe(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||(this.editing=null,this.render())}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Pe(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},py=new Hl,hy=()=>py.open()});var zm,Bm=w(()=>{zm=`

                  Swapper

                  refreshReload list
                  folder_openOpen swapper folder
                  ×
                  A file in the swapper folder replaces the game's file with the same path: swapper/textures/pistol.png replaces krunker.io/textures/pistol.png. Easiest way: drop your file onto the game file it should replace (right side), it gets the right folder and name. Folder names do not care about case. Text files like CSS can be written right here: New file, or the edit button on a game file to start from a copy.
                  Your swaps
                  note_addNew file
                  create_new_folderNew folder
                  Drop files or folders here to put them into the swapper folder as they are
                  Game files
                  `});var jl={};A(jl,{open:()=>wy});var fy,gy,Hm,hr,by,Dl,ce,rt,js,Fm,Om,ql,Kl,vy,wy,Ul=w(()=>{"use strict";F();Bm();Ds();Do();pr();fy=new Set(["css","js","mjs","json","txt","html","htm","svg","xml","obj","mtl","glsl","frag","vert","md","csv"]),gy=4*1024*1024,Hm=s=>fy.has(s.slice(s.lastIndexOf(".")+1).toLowerCase()),hr=()=>d.hostFeatures?.includes("swapper-editor")??!1,by=32*1024*1024,Dl=400,ce=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},rt=(s,e,t,o="")=>{let n=ce("div",`iconBtn ${o}`);return n.title=e,n.append(ce("span","mi",s)),n.onclick=r=>{r.stopPropagation(),t()},n},js=s=>s.slice(s.lastIndexOf("/")+1),Fm=s=>s.includes("/")?s.slice(0,s.lastIndexOf("/")):"",Om=(s,e)=>{let t={name:"",path:"",folders:new Map,files:[]},o=n=>{let r=t;for(let i of n.split("/").filter(Boolean)){let a=r.folders.get(i);a||(a={name:i,path:r.path?`${r.path}/${i}`:i,folders:new Map,files:[]},r.folders.set(i,a)),r=a}return r};for(let n of e)o(n);for(let n of s)o(Fm(n.path)).files.push({name:js(n.path),path:n.path,size:n.size});return t},ql=s=>s.files.length+[...s.folders.values()].reduce((e,t)=>e+ql(t),0),Kl=class{constructor(){this.popup=null,this.list=null,this.collapsedOwn=new Set,this.expandedGame=new Set,this.search="",this.touched=new Set,this.stale=new Set,this.uploadDone=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1}open(){if(this.popup)return;if(!Fs()){window.chrome.webview.postMessage("open, swapper"),d.showNotification("This Kute version can only open the swapper folder. Update Kute for the swapper manager.",!1,6);return}this.popup=vo(zm,{onMessage:r=>this.receive(r),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1,this.uploadDone?.(null),this.uploadDone=null}),e.querySelector("#swFolder").onclick=()=>this.send("reveal",{path:""}),e.querySelector("#swReload").onclick=()=>this.send("list",{}),e.querySelector("#swRefreshNow").onclick=()=>location.reload(),e.querySelector("#swNewFolder").onclick=()=>this.newFolder("");let o=e.querySelector("#swNewFile");hr()||(o.style.display="none"),o.onclick=()=>this.newFile(""),ot(e.querySelector("#swOwnColumn"),r=>this.drop("",r));let n=e.querySelector("#swSearch");n.value=this.search,n.oninput=()=>{this.search=n.value.trim().toLowerCase(),this.renderGame()},e.querySelector("#swOwnTree").textContent="Loading...",this.send("list",{}),ur()||window.addEventListener("focus",()=>{!this.editing&&!this.uploadDone&&this.send("list",{})},{signal:t})}send(e,t){window.chrome.webview.postMessage(`swapper-${e} ${JSON.stringify(t)}`)}async drop(e,t){let o=t;!e&&o.every(({path:n})=>n.toLowerCase().startsWith("swapper/"))&&(o=o.map(({path:n,file:r})=>({path:n.slice(8),file:r}))),await this.upload(o.map(({path:n,file:r})=>({path:e?`${e}/${n}`:n,file:r})))}async replace(e,t){if(!this.popup)return;if(t.length!==1){this.popup.showError("Drop exactly one file onto a game file. Drop several onto a folder instead.");return}let[{file:o}]=t,n=r=>r.slice(r.lastIndexOf(".")+1).toLowerCase();if(n(o.name)!==n(e)){let r=`${o.name} is saved as ${js(e)}, the game will read it as .${n(e)}. Go ahead?`;if(!await Pe(this.popup.shadow,"Different file type",r,"Save anyway"))return}await this.upload([{path:e,file:o}])}async upload(e){let t=[];for(let{path:o,file:n}of e){if(!this.popup)return;if(n.size>by){t.push(`${o}: larger than 32 MB, put it in with Open swapper folder`);continue}let r=await Pl(n),i=await new Promise(a=>{this.uploadDone=a,this.send("upload",{path:o,data:r})});i?t.push(i):this.touched.add(o.toLowerCase())}this.send("list",{}),t.length&&this.popup?.showError(t.join(` -`))}receive(e){if(e.managerError&&this.popup?.showError(e.managerError),e.swapperUploaded){let o=this.uploadDone;this.uploadDone=null,o?.(e.swapperUploaded.error??null)}if(e.swapperSource&&e.swapperSource.path===this.pendingRead&&(this.pendingRead=null,typeof e.swapperSource.content=="string"?this.showEditor(e.swapperSource.path,e.swapperSource.content):this.popup?.showError(`${e.swapperSource.path} could not be read as text.`)),e.swapperWritten&&this.saving&&(this.saving=!1,e.swapperWritten.error?this.popup?.showError(e.swapperWritten.error):this.editing&&(this.touched.add(this.editing.path.toLowerCase()),this.editing.editor.markSaved(),this.editing.closeAfterSave&&this.closeEditor())),e.swapperChanged&&!this.editing&&!this.uploadDone&&this.send("list",{}),!e.swapper)return;let t=this.list;this.list=e.swapper,t&&this.applyChanges(t,e.swapper),this.render()}applyChanges(e,t){let o=c=>new Map(c.files.map(u=>[u.path.toLowerCase(),u.size])),n=o(e),r=o(t),i=new Set(this.touched);if(this.touched.clear(),e.enabled!==t.enabled)for(let c of[...n.keys(),...r.keys()])i.add(c);for(let[c,u]of r)n.get(c)!==u&&i.add(c);for(let c of n.keys())r.has(c)||i.add(c);if(!i.size)return;let a=new Set([...i].filter(c=>c.endsWith(".css")));a.size&&!ur()&&qs(a);let l=new Set(t.seen.map(c=>c.toLowerCase()));for(let c of i)!a.has(c)&&l.has(c)&&this.stale.add(c)}get(e){return this.popup?.shadow.querySelector(e)}render(){if(!this.popup||!this.list)return;let e=this.get("#swNotice"),t=this.list.enabled===!1;e.hidden=!t&&!this.stale.size;let o=this.stale.size;e.querySelector("span").textContent=t?"The swapper is switched off (Settings, Customization), none of these files are used.":`The game already loaded ${o===1?"1 changed file":`${o} changed files`}, ${o===1?"it changes":"they change"} after a page refresh.`,this.renderOwn(),this.renderGame()}renderOwn(){if(!this.list)return;let e=this.get("#swOwnTree");e.textContent="";let t=Om(this.list.files,this.list.dirs);if(this.get("#swOwnCount").textContent=`${this.list.files.length} file${this.list.files.length===1?"":"s"}`,!this.list.files.length&&!this.list.dirs.length){e.append(ce("div","treeNote","Nothing swapped yet. Drop a file onto one of the game files on the right, or drop a whole swapper pack here."));return}let o=new Map(this.list.seen.map(i=>[i.toLowerCase(),i])),n=new Map;for(let i of this.list.seen){let a=js(i).toLowerCase();n.set(a,[...n.get(a)??[],i])}let r=(i,a)=>{for(let l of[...i.folders.values()].sort((c,u)=>c.name.localeCompare(u.name))){let c=this.collapsedOwn.has(l.path),u=this.folderRow(l.name,a,!c,`${ql(l)}`);u.onclick=()=>{c?this.collapsedOwn.delete(l.path):this.collapsedOwn.add(l.path),this.renderOwn()};let h=u.querySelector(".scriptActions");hr()&&h?.append(rt("note_add","New file inside",()=>this.newFile(l.path))),h?.append(rt("create_new_folder","New folder inside",()=>this.newFolder(l.path)),rt("drive_file_rename_outline","Rename or move",()=>this.move(l.path)),rt("folder_open","Open in Explorer",()=>this.send("reveal",{path:l.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(l.path),"danger")),ot(u,p=>this.drop(l.path,p)),e.append(u),c||r(l,a+1)}for(let l of[...i.files].sort((c,u)=>c.name.localeCompare(u.name)))e.append(this.ownFileRow(l,a,o,n))};r(t,0)}folderRow(e,t,o,n){let r=ce("div","node folder");return r.style.setProperty("--depth",String(t)),r.append(ce("span","mi",o?"expand_more":"chevron_right"),ce("span","mi kind",o?"folder_open":"folder")),r.append(ce("span","nodeName",e),ce("span","nodeSize",n),ce("div","scriptActions")),r}ownFileRow(e,t,o,n){let r=ce("div","node");r.style.setProperty("--depth",String(t+1)),r.append(ce("span","mi","description"),ce("span","nodeName",e.name),ce("span","nodeSize",wo(e.size)));let i=o.get(e.path.toLowerCase()),a=(n.get(e.name.toLowerCase())??[]).filter(c=>c.toLowerCase()!==e.path.toLowerCase());if(i){let c=ce("span","state ok","Used");c.title=`The game loaded krunker.io/${i} this session, this file replaced it.`,r.append(c)}else if(a.length){let[c]=a,u=ce("span","state warn","Wrong folder?");u.title=`The game asks for this file as ${a.join(", ")}`;let h=ce("div","btn small","Move there");h.title=`Move to ${c}`,h.onclick=()=>this.send("move",{from:e.path,to:c}),r.append(u,h)}else{let c=ce("span","state","Not requested");c.title="The game did not ask for this path in this session. It may still come (another map, a skin), or the path does not match any game file.",r.append(c)}let l=ce("div","scriptActions");return hr()&&Hm(e.path)&&e.size<=gy&&(l.append(rt("edit","Edit",()=>this.edit(e.path))),r.ondblclick=()=>this.edit(e.path)),l.append(rt("drive_file_rename_outline","Rename or move",()=>this.move(e.path)),rt("folder_open","Show in Explorer",()=>this.send("reveal",{path:e.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(e.path),"danger")),r.append(l),ot(r,c=>this.drop(Fm(e.path),c)),r}renderGame(){if(!this.list||!this.popup)return;let e=this.get("#swGameTree");e.textContent="";let{seen:t}=this.list;this.get("#swGameCount").textContent=`${t.length} loaded this session`;let o=new Set(this.list.files.map(a=>a.path.toLowerCase()));if(!t.length){e.append(ce("div","treeNote","The game has not loaded any files yet. Play a round or open a menu, then Reload list."));return}let n=(a,l)=>{let c=ce("div","node");if(c.style.setProperty("--depth",String(l)),c.title=`krunker.io/${a} -Drop a file here to replace it`,c.append(ce("span","mi","insert_drive_file"),ce("span","nodeName",l?js(a):a)),o.has(a.toLowerCase())&&c.append(ce("span","swapped","swapped")),hr()&&Hm(a)){let u=this.list?.files.find(p=>p.path.toLowerCase()===a.toLowerCase()),h=ce("div","scriptActions");u?h.append(rt("edit","Edit your swap",()=>this.edit(u.path))):h.append(rt("edit_note","Edit a copy, saving it swaps the file",()=>this.editCopy(a))),c.append(h)}return ot(c,u=>this.replace(a,u)),c};if(this.search){let a=t.filter(l=>l.toLowerCase().includes(this.search));for(let l of a.slice(0,Dl))e.append(n(l,0));a.length||e.append(ce("div","treeNote","No game file matches.")),a.length>Dl&&e.append(ce("div","treeNote",`${a.length-Dl} more, search for something longer.`));return}let r=Om(t.map(a=>({path:a,size:0})),[]),i=(a,l)=>{for(let c of[...a.folders.values()].sort((u,h)=>u.name.localeCompare(h.name))){let u=this.expandedGame.has(c.path),h=this.folderRow(c.name,l,u,`${ql(c)}`);h.title="Drop files here to put them into this folder",h.onclick=()=>{u?this.expandedGame.delete(c.path):this.expandedGame.add(c.path),this.renderGame()},ot(h,p=>this.drop(c.path,p)),e.append(h),u&&i(c,l+1)}for(let c of[...a.files].sort((u,h)=>u.name.localeCompare(h.name)))e.append(n(c.path,l+1))};i(r,0)}async newFile(e){if(!this.popup)return;let t=await st(this.popup.shadow,"New file",e?`${e}/new.css`:"css/new.css","A path inside the swapper folder, the same path the game loads the file from");if(!t)return;let o=t.replace(/^\/+/,"");if(this.list?.files.some(n=>n.path.toLowerCase()===o.toLowerCase())){this.popup.showError(`${o} already exists, edit it instead.`);return}this.showEditor(o,"",!0)}edit(e){this.pendingRead||this.editing||(this.pendingRead=e,this.send("read",{path:e}))}async editCopy(e){if(this.pendingRead||this.editing)return;this.pendingRead=e;let t=null;for(let o of["https://krunker.io","https://assets.krunker.io"])try{let n=await fetch(`${o}/${e}`);if(n.ok){t=await n.text();break}}catch{}this.pendingRead===e&&(this.pendingRead=null,t===null&&(this.popup?.showError(`Could not download krunker.io/${e}, starting with an empty file.`),t=""),this.showEditor(e,t,!0))}showEditor(e,t,o=!1){if(!this.popup)return;let n=this.get("#swEditor");this.get(".swapColumns").style.display="none",n.style.display="";let{editor:r}=fo(n,{title:e,content:t,language:Ua(e),isNew:o,onSave:i=>{!this.editing||this.saving||(this.saving=!0,this.editing.closeAfterSave=i,this.send("write",{path:e,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={path:e,editor:r,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Pe(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||this.closeEditor()}closeEditor(){if(this.editing=null,!this.popup)return;let e=this.get("#swEditor");e.textContent="",e.style.display="none",this.get(".swapColumns").style.display="",this.render()}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Pe(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}async newFolder(e){if(!this.popup)return;let t=await st(this.popup.shadow,"New folder",e?`${e}/`:"textures","A path inside the swapper folder, for example textures/weapons");t&&this.send("mkdir",{path:t})}async move(e){if(!this.popup)return;let t=await st(this.popup.shadow,"Rename or move",e,"The new path inside the swapper folder. Change the folders in front to move it.");!t||t===e||this.send("move",{from:e,to:t})}async remove(e){!this.popup||!await Pe(this.popup.shadow,`Delete ${js(e)}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||this.send("delete",{path:e})}},vy=new Kl,wy=()=>vy.open()});var Dm={};var Gl=w(()=>{"use strict";F();ts();pr();d.userscriptManager={open:()=>{Promise.resolve().then(()=>(Fl(),Ol)).then(s=>s.open()).catch(s=>console.error("[kute] userscript manager:",s))}};d.settings.toggleUserscripts=s=>{if(d.settings.data.userscripts=s,s)Lt()?Lo(null,!1,!0):d.userscriptManager.masterChanged||d.showNotification("Refresh the page to start your userscripts.",!1,5);else{let e=(Xe?.entries??[]).filter(t=>(t.state==="running"||t.state==="waiting")&&!t.stop()).map(t=>t.meta.name||t.key);e.length&&d.showNotification(`${e.join(", ")} cannot be stopped and keeps running until the next refresh.`,!1,6)}d.userscriptManager.masterChanged?.(s)};window.chrome.webview.addEventListener("message",s=>{let e=s.data?.swapperChanged?.css;Array.isArray(e)&&e.length&&qs(new Set(e.map(String)))});d.swapperManager={open:()=>{Promise.resolve().then(()=>(Ul(),jl)).then(s=>s.open()).catch(s=>console.error("[kute] swapper manager:",s))}};d.customCss={open:()=>{Promise.resolve().then(()=>(zl(),Bl)).then(s=>s.open()).catch(s=>console.error("[kute] custom css:",s))}}});var Km={};A(Km,{default:()=>W});var Wl,ky,yy,qm,Vl,xy,W,xe=w(()=>{"use strict";F();Nt();Wl="kute_market_session",ky="x-kute-session",yy=3e3,qm=3600*1e3,Vl=class{constructor(){this.sessionPromise=null,this.memorySession=null,this.cache=new Map,this.lastError="",this.retryAt=0}loggedIn(){try{return localStorage.getItem("krunker_token")!==null}catch{return!1}}hostSupported(){return d.hostFeatures?.includes("market-attest")===!0}stored(){if(this.memorySession&&Date.now()t.expiresAt-qm?null:t}catch{return null}}forget(e){if(this.stored()?.session===e){try{localStorage.removeItem(Wl)}catch{}this.memorySession=null}}attest(e){return new Promise(t=>{let o=0,n=r=>{let i=null;try{i=typeof r.data=="string"?JSON.parse(r.data):r.data}catch{return}let a=i?.marketAttest;!a||a.challenge!==e||(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(a))};o=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},yy),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(`market-attest, ${e}, ${this.loggedIn()}`)})}session(){let e=this.stored();return e?Promise.resolve(e.session):(this.sessionPromise??=this.newSession().finally(()=>{this.sessionPromise=null}),this.sessionPromise)}async newSession(){if(this.lastError="",!this.loggedIn())return this.lastError="log in to Krunker to use the market",null;if(!this.hostSupported())return this.lastError="this Kute version cannot sign in to the market, update Kute",null;let e=await he.requestStatus("/market/session",{method:"POST"});if(!e.data?.challenge)return this.lastError=e.status===503?"the market is not available right now":"could not reach the market",e.status===429&&this.limited(e.retryAt),null;let t=await this.attest(e.data.challenge);if(!t)return this.lastError="Kute did not answer the sign in",null;let o=await he.requestStatus("/market/session/confirm",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({challenge:t.challenge,sig:t.sig,version:t.version,loggedIn:t.loggedIn})});if(!o.data?.session)return this.lastError=typeof o.error?.error=="string"?o.error.error:"the market refused the sign in",o.status===429&&this.limited(o.retryAt),null;this.memorySession={session:o.data.session,expiresAt:o.data.expiresAt};try{localStorage.setItem(Wl,JSON.stringify(this.memorySession))}catch{}return o.data.session}async request(e,t={},o=!1){return(await this.requestStatus(e,t,o)).data}async requestStatus(e,t={},o=!1){if(Date.now()this.request(e)){let n=Date.now(),r=this.cache.get(e);if(r&&n-r.at(a===null&&this.cache.delete(e),a));if(this.cache.set(e,{at:n,ttl:t,value:i}),this.cache.size>500){let a=this.cache.keys().next();a.done||this.cache.delete(a.value)}return i}retry(){return Date.now(){let n=await this.requestStatus(o);if(n.status!==404)return n.data;let r=await this.cached(`/market/item/${e}`,3e5);if(!r)return null;let[i,a]=await Promise.all([this.cached(`/market/item/${e}/history?range=${t}`,3e5),this.cached(`/market/item/${e}/listings`,6e4)]);return{item:r,history:i,listings:a}})}async values(e){let t=[...new Set(e)].sort((n,r)=>n-r),o={};for(let n=0;nUs,RARITIES:()=>Ut,formatAge:()=>Ge,formatKr:()=>Re,formatPercent:()=>it});function Re(s){return Number.isFinite(s)?Math.abs(s)>=1e6?`${(s/1e6).toFixed(s%1e6===0?0:1)}M`:Math.round(s).toLocaleString("en-US"):"?"}function it(s){if(s==null||!Number.isFinite(s))return"\u2013";let e=s*100;return`${e>0?"+":""}${Math.abs(e)>=100?e.toFixed(0):e.toFixed(1)} %`}function Ge(s){if(!Number.isFinite(s)||s<0)return"\u2013";let e=s/6e4;if(e<60)return`${Math.max(1,Math.round(e))} min`;let t=e/60;return t<48?`${Math.round(t)} h`:`${Math.round(t/24)} d`}var Ut,Us,We=w(()=>{"use strict";Ut=[{name:"Uncommon",color:"#b2f252"},{name:"Rare",color:"#2196F3"},{name:"Epic",color:"#E040FB"},{name:"Legendary",color:"#FBC02D"},{name:"Relic",color:"#ff5722"},{name:"Contraband",color:"#f44336"},{name:"Unobtainable",color:"#ffffff"},{name:"NFT",color:"#9e9e9e"}],Us={A:"#5ce05a",B:"#9ccc65",C:"#fbc02d",D:"#ff9800",F:"#f44336"}});var Um={};A(Um,{TRADE_VERDICTS:()=>Gt,TYPE_NAMES:()=>$t,activityLabel:()=>Jl,change:()=>ae,empty:()=>fe,esc:()=>S,evidenceLabel:()=>Ws,fairValue:()=>at,identity:()=>me,lineNote:()=>Xl,money:()=>T,noEvidence:()=>Wt,singleListing:()=>Yl,stat:()=>ne,verdictOf:()=>Gs});var $t,Gt,Gs,S,T,ae,Wt,Yl,at,Xl,Ws,Jl,me,fe,ne,pe=w(()=>{"use strict";We();$t=["Weapons","Hats","Bodies","Melee","Sprays","Dyes","Waists","Faces","Charms","Emotes","Stickers","Skydomes","Poses","Spin tickets","Capes","Heads","Paints","Backs","Consumables"],Gt={good:{label:"Favorable trade",detail:"More estimated value coming in"},fair:{label:"Fair trade",detail:"Similar estimated value"},bad:{label:"Unfavorable trade",detail:"More estimated value going out"},uncertain:{label:"Not enough evidence",detail:"Estimates are too uncertain for a verdict"}},Gs=s=>Object.hasOwn(Gt,s)?s:"uncertain",S=s=>String(s??"").replace(/[&<>"']/g,e=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[e]??e),T=s=>s==null?"Unavailable":Re(s),ae=s=>{if(s==null)return'No trend yet';let e="muted";return s>.005&&(e="positive"),s<-.005&&(e="negative"),`${S(it(s))}`},Wt=s=>s.method==="floor"||s.method==="krunker",Yl=s=>s.method==="ask"&&s.onS===1,at=(s,e="")=>s?Wt(s)?`${T(s.fair)}${e}${s.method==="floor"?"floor":"krunker"}`:Yl(s)?`${T(s.fair)}${e}1 listing`:`${T(s.fair)}${e}`:T(void 0),Xl=s=>s.unknown?Wt(s)?`No price evidence · ${s.method==="floor"?"floor":"Krunker"} ${T(s.fair)}`:"Needs more evidence":`${T(s.fair)} KR each`,Ws=s=>s.method==="floor"?"No price evidence, quick-sell floor":s.method==="krunker"?"No price evidence, Krunker's estimate":Yl(s)?"One listing only":s.method?.includes("trades")?s.method.startsWith("sales")?"Sales + private trades":"Private-trade estimate":s.method?.startsWith("sales")?(s.sales7d??0)>=5?"Recent sales":"Sparse sales":"Limited evidence",Jl=s=>s.privateTrading?.trades7d?`${s.privateTrading.trades7d} private trade${s.privateTrading.trades7d===1?"":"s"} this week${s.sales7d?` + ${s.sales7d} sales`:""}`:(s.sales7d??0)>=7?"Active this week":(s.sales7d??0)>0?"Traded this week":"No reported sales this week",me=s=>`${s.thumbnail?``:'K'}${S(s.name)}${S(Ut[s.rarity??-1]?.name??"Item")}`,fe=(s,e,t="")=>`
                  ◇

                  ${S(s)}

                  ${S(e)}

                  ${t}
                  `,ne=(s,e,t)=>`
                  ${S(s)}${e}${t}
                  `});var Wm={};A(Wm,{default:()=>mr});var Sy,ko,_e,Gm,Ey,$y,Cy,Zl,My,Ql,Ty,mr,ec=w(()=>{"use strict";F();xe();We();pe();Sy=1500,ko="data-kute-market",_e="kuteMarketLine",Gm="kuteMarketCardStyle",Ey=".market-card, .market-item-card",$y=` +`,oe=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},qs=(s,e,t,o="")=>{let n=oe("div",`iconBtn ${o}`);return n.title=e,n.append(oe("span","mi",s)),n.onclick=t,n},Bl=class{constructor(){this.popup=null,this.groups=[],this.openSettings=new Set,this.editing=null,this.pendingRead=null,this.pendingSave=null,this.needsRefresh=!1,this.renderQueued=!1,this.forceClose=!1,this.prefsTimers=new Map,Je&&(Je.onChange=()=>this.queueRender()),u.userscriptManager.masterChanged=e=>this.onMasterChanged(e)}masterOn(){return u.settings?.data?.userscripts!==!1}onMasterChanged(e){if(e&&!Je)this.needsRefresh=!0;else if(e&&!At())for(let t of this.groups.filter(o=>o.id==="game").flatMap(o=>o.scripts)){let o=this.entryFor(t.key);!o||!t.enabled||(o.start(),(o.tainted||o.state!=="running"&&o.state!=="waiting"&&o.state!=="error")&&(this.needsRefresh=!0))}this.updateNotice(),this.editing||this.render()}reload(e){return e.length?At()?(To(e,!0,this.masterOn()),!0):!1:!0}applyMaster(){let e=this.popup?.shadow;if(!e)return;let t=this.masterOn();e.querySelector(".managerPopup")?.classList.toggle("scriptsOff",!t);let o=e.querySelector("#usMaster");o&&(o.classList.toggle("on",t),o.querySelector(".toggle")?.classList.toggle("on",t),o.querySelector("span").textContent=t?"Userscripts on":"Userscripts off")}open(){if(this.popup)return;if(!Os()){window.chrome.webview.postMessage("open, userscripts"),u.showNotification("This Kute version can only open the scripts folder. Update Kute for the script manager.",!1,6);return}this.popup=fo(Rm,{onMessage:t=>this.receive(t),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1}),this.popup.signal.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.forceClose=!1});let{shadow:e}=this.popup;e.querySelector("#usFolder").onclick=()=>this.send("reveal",{}),e.querySelector("#usRefreshNow").onclick=()=>location.reload(),e.querySelector("#usMaster").onclick=()=>u.settings.changeSetting("userscripts",!this.masterOn(),!1),this.applyMaster(),this.body().textContent="Loading...",this.send("list",{})}send(e,t){window.chrome.webview.postMessage(`scripts-${e} ${JSON.stringify(t)}`)}body(){return this.popup?.shadow.querySelector("#usBody")}receive(e){if(e.managerError&&(this.popup?.showError(e.managerError),this.pendingSave&&(this.pendingSave=null)),e.userscripts){if(this.groups=e.userscripts.groups??[],this.pendingSave&&this.editing){let{closeAfter:t}=this.pendingSave;this.pendingSave=null,this.editing.editor.markSaved(),this.editing.group==="game"&&!this.reload([this.editing.file])&&(this.needsRefresh=!0),t&&(this.editing=null)}this.editing||this.render(),this.updateNotice()}if(e.userscriptSource&&e.userscriptSource.key===this.pendingRead){this.pendingRead=null;let t=this.findScript(e.userscriptSource.key);t&&typeof e.userscriptSource.content=="string"?this.showEditor(t.group,t.file,e.userscriptSource.content):this.popup?.showError("The script could not be read.")}}findScript(e){for(let t of this.groups){let o=t.scripts.find(n=>n.key===e);if(o)return o}}entryFor(e){return Je?.entries?.find(t=>t.key===e)}queueRender(){!this.popup||this.renderQueued||(this.renderQueued=!0,queueMicrotask(()=>{this.renderQueued=!1,this.updateNotice(),this.popup&&!this.editing&&this.render()}))}updateNotice(){let e=this.popup?.shadow.querySelector("#usRefresh");if(!e)return;let t=this.masterOn(),o=Je?.entries?.some(n=>n.outdated||!t&&n.state==="running");e.hidden=!this.needsRefresh&&!o}render(){let e=this.body();if(!(!e||!this.popup)){this.applyMaster(),e.textContent="";for(let t of this.groups)e.append(this.renderGroup(t))}}renderGroup(e){let t=oe("div","group"),o=oe("div","groupHead");o.append(oe("div","groupTitle",e.label),oe("div","groupRuns",`runs in ${e.runs}`));let n=oe("div","btn small");n.append(oe("span","mi","add"),"New script"),n.onclick=()=>this.createScript(e.id),o.append(n),t.append(o),e.scripts.length===0&&t.append(oe("div","empty","No scripts yet."));for(let r of e.scripts)this.renderScript(t,e,r);return t.append(oe("div","dropZone",`Drop .js files here to add them to ${e.label}`)),st(t,r=>this.importFiles(e,r)),t}async importFiles(e,t){if(!this.popup)return;let o=[],n=t.filter(({file:a})=>{if(!/\.js$/i.test(a.name))o.push(`${a.name}: not a .js file`);else if(a.size>ry)o.push(`${a.name}: larger than 4 MB`);else return!0;return!1}),r=new Set(e.scripts.map(a=>a.file.toLowerCase())),i=n.filter(({file:a})=>r.has(a.name.toLowerCase())).map(({file:a})=>a.name);if(i.length){let a=`${i.join(", ")} already exist in ${e.label}. Replace them with the dropped files?`;if(!await Re(this.popup.shadow,"Replace scripts?",a,"Replace"))return}for(let{file:a}of n)this.send("write",{group:e.id,file:a.name,content:await a.text(),noList:!0});this.send("list",{}),e.id==="game"&&!this.reload(n.map(({file:a})=>a.name))&&(this.needsRefresh=!0),this.updateNotice(),o.length&&this.popup?.showError(o.join(` +`))}stateOf(e,t,o){return t?.state==="error"?["Error","bad",t.error]:t?.outdated?["Old version","warn","Your changes apply after a refresh, this script has no unload to stop the running version"]:this.masterOn()?o||!Je?e.enabled?["On","ok",""]:["Off","",""]:e.enabled?t?.state==="running"?["Running","ok",t.late?"Started after the page loaded. It is a document-start script, refresh if it misses something":""]:t?.state==="waiting"?["Starting","ok","Starts once the page has loaded"]:!t&&At()?["Starting","ok",""]:["After refresh","warn","On, starts with the next page load"]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:["Off","",""]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:e.enabled?["On","","Runs once userscripts are on"]:["Off","",""]}renderScript(e,t,o){let n=t.id!=="game",r=n?void 0:this.entryFor(o.key),i=r?.meta??o.meta,a=oe("div","scriptRow"),l=oe("div",`toggle${o.enabled?" on":""}`);l.title=o.enabled?"Turn off":"Turn on",l.onclick=()=>this.toggle(o,r,n);let c=oe("div","scriptInfo"),d=oe("div","scriptName",i.name||o.file);i.version&&d.append(oe("span","version",`v${i.version}`)),i.author&&d.append(oe("span","author",`by ${i.author}`)),c.append(d);let h=[i.desc,i.name?o.file:"",go(o.size)].filter(Boolean).join(" \xB7 ");c.append(oe("div","scriptDesc",h)),c.title=[i.desc,`${o.file}, ${o.runAt}${o.priority?`, priority ${o.priority}`:""}`].filter(Boolean).join(` +`);let[p,m,f]=this.stateOf(o,r,n),g=oe("div",`state ${m}`,p);f&&(g.title=f);let b=oe("div","scriptActions");r?.settings&&Object.keys(r.settings).length&&b.append(qs("tune","Script settings",()=>{this.openSettings.has(o.key)?this.openSettings.delete(o.key):this.openSettings.add(o.key),this.render()})),b.append(qs("edit","Edit",()=>{this.pendingRead=o.key,this.send("read",{key:o.key})}),qs("swap_horiz",`Move to ${n?"Game":"Social"}`,()=>this.move(o,r,n)),qs("folder_open","Show in folder",()=>this.send("reveal",{key:o.key})),qs("delete","Delete (goes to the recycle bin)",()=>this.deleteScript(o,r),"danger")),a.append(l,c,g,b),e.append(a),r?.settings&&this.openSettings.has(o.key)&&e.append(this.renderSettings(o,r))}toggle(e,t,o){e.enabled=!e.enabled,this.send("toggle",{key:e.key,enabled:e.enabled}),o||this.masterOn()&&(t?e.enabled?(t.start(),(t.tainted||t.state!=="running"&&t.state!=="waiting"&&t.state!=="error")&&(this.needsRefresh=!0)):t.stop()||(this.needsRefresh=!0):e.enabled&&At()?To([e.key],!1,!0):e.enabled&&(this.needsRefresh=!0)),this.updateNotice(),this.render()}move(e,t,o){t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("move",{key:e.key,group:o?"game":"social"}),o&&!this.reload([e.file])&&(this.needsRefresh=!0),this.updateNotice()}async deleteScript(e,t){!this.popup||!await Re(this.popup.shadow,`Delete ${e.file}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||(t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("delete",{key:e.key}))}async createScript(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New script","my-script.js","The file name. It ends up in the scripts folder of this group.");if(!t)return;let o=/\.js$/i.test(t)?t:`${t}.js`;if(this.groups.some(r=>r.id===e&&r.scripts.some(i=>i.file.toLowerCase()===o.toLowerCase()))){this.popup.showError(`${o} already exists in this group.`);return}this.showEditor(e,o,iy.replaceAll("{{name}}",o.replace(/\.js$/i,"")),!0)}renderSettings(e,t){let o=oe("div","scriptSettings"),n=t.settings??{},r=()=>{clearTimeout(this.prefsTimers.get(e.key)),this.prefsTimers.set(e.key,setTimeout(()=>{this.prefsTimers.delete(e.key);let a=Object.fromEntries(Object.entries(n).map(([l,c])=>[l,c.value]));this.send("prefs",{key:e.key,prefs:a})},300))},i=(a,l)=>{t.setPref(a,l),r()};for(let[a,l]of Object.entries(n)){let c=oe("div","settingRow"),d=oe("div","settingLabel",l.title||a);l.desc&&d.append(oe("small","",l.desc)),c.append(d,this.settingControl(a,l,i)),o.append(c)}return o}settingControl(e,t,o){switch(t.type){case"bool":{let n=oe("div",`toggle${t.value?" on":""}`);return n.onclick=()=>{o(e,!t.value),n.classList.toggle("on",!!t.value)},n}case"num":{let n=oe("div");n.style.cssText="display:flex;gap:.6em;align-items:center";let r=oe("input");if(r.type="number",r.style.width="90px",r.value=String(t.value),t.min!==void 0&&(r.min=String(t.min)),t.max!==void 0&&(r.max=String(t.max)),r.step=String(t.step??"any"),t.min!==void 0&&t.max!==void 0){let i=oe("input");i.type="range",i.min=String(t.min),i.max=String(t.max),i.step=String(t.step??"any"),i.value=String(t.value),i.oninput=()=>{r.value=i.value,o(e,Number(i.value))},r.onchange=()=>{i.value=r.value},n.append(i)}return r.addEventListener("change",()=>{r.value!==""&&Number.isFinite(Number(r.value))&&o(e,Number(r.value))}),n.append(r),n}case"sel":{let n=oe("select");for(let r of t.opts??[]){let i=oe("option","",String(r));i.value=String(r),i.selected=r===t.value,n.append(i)}return n.onchange=()=>{let r=(t.opts??[]).find(i=>String(i)===n.value);o(e,r??n.value)},n}case"color":{let n=oe("input");return n.type="color",n.value=String(t.value),n.onchange=()=>o(e,n.value),n}case"text":{let n=oe("input");return n.type="text",n.value=String(t.value??""),n.onchange=()=>o(e,n.value),n}case"keybind":{let n=i=>[i?.ctrl&&"Ctrl",i?.alt&&"Alt",i?.shift&&"Shift",i?.key||"none"].filter(Boolean).join(" + "),r=oe("div","btn small",n(t.value));return r.onclick=()=>{r.textContent="Press a key...";let i=a=>{if(["Control","Alt","Shift","Meta"].includes(a.key))return;a.preventDefault(),a.stopPropagation(),window.removeEventListener("keydown",i,!0);let l={key:a.key.toLowerCase(),ctrl:a.ctrlKey,alt:a.altKey,shift:a.shiftKey};o(e,l),r.textContent=n(l)};window.addEventListener("keydown",i,!0)},r}default:return oe("div","scriptFile",`unsupported type "${t.type}"`)}}showEditor(e,t,o,n=!1){let r=this.body();if(!r)return;let{editor:i}=po(r,{title:t,content:o,language:"js",isNew:n,onSave:a=>{this.editing&&(this.pendingSave={closeAfter:a},this.editing.closeAfterSave=a,this.send("write",{group:e,file:t,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={group:e,file:t,editor:i,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Re(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||(this.editing=null,this.render())}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Re(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},ay=new Bl,ly=()=>ay.open()});var Im,Pm=w(()=>{Im=`

                  Swapper

                  refreshReload list
                  folder_openOpen swapper folder
                  ×
                  A file in the swapper folder replaces the game's file with the same path: swapper/textures/pistol.png replaces krunker.io/textures/pistol.png. Easiest way: drop your file onto the game file it should replace (right side), it gets the right folder and name. Folder names do not care about case. Text files like CSS can be written right here: New file, or the edit button on a game file to start from a copy.
                  Your swaps
                  note_addNew file
                  create_new_folderNew folder
                  Drop files or folders here to put them into the swapper folder as they are
                  Game files
                  `});var ql={};A(ql,{open:()=>my});var dy,uy,Nm,pr,py,Ol,ce,rt,Ks,Bm,_m,Dl,Fl,hy,my,Kl=w(()=>{"use strict";D();Pm();Ds();Oo();ur();dy=new Set(["css","js","mjs","json","txt","html","htm","svg","xml","obj","mtl","glsl","frag","vert","md","csv"]),uy=4*1024*1024,Nm=s=>dy.has(s.slice(s.lastIndexOf(".")+1).toLowerCase()),pr=()=>u.hostFeatures?.includes("swapper-editor")??!1,py=32*1024*1024,Ol=400,ce=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},rt=(s,e,t,o="")=>{let n=ce("div",`iconBtn ${o}`);return n.title=e,n.append(ce("span","mi",s)),n.onclick=r=>{r.stopPropagation(),t()},n},Ks=s=>s.slice(s.lastIndexOf("/")+1),Bm=s=>s.includes("/")?s.slice(0,s.lastIndexOf("/")):"",_m=(s,e)=>{let t={name:"",path:"",folders:new Map,files:[]},o=n=>{let r=t;for(let i of n.split("/").filter(Boolean)){let a=r.folders.get(i);a||(a={name:i,path:r.path?`${r.path}/${i}`:i,folders:new Map,files:[]},r.folders.set(i,a)),r=a}return r};for(let n of e)o(n);for(let n of s)o(Bm(n.path)).files.push({name:Ks(n.path),path:n.path,size:n.size});return t},Dl=s=>s.files.length+[...s.folders.values()].reduce((e,t)=>e+Dl(t),0),Fl=class{constructor(){this.popup=null,this.list=null,this.collapsedOwn=new Set,this.expandedGame=new Set,this.search="",this.touched=new Set,this.stale=new Set,this.uploadDone=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1}open(){if(this.popup)return;if(!Os()){window.chrome.webview.postMessage("open, swapper"),u.showNotification("This Kute version can only open the swapper folder. Update Kute for the swapper manager.",!1,6);return}this.popup=fo(Im,{onMessage:r=>this.receive(r),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1,this.uploadDone?.(null),this.uploadDone=null}),e.querySelector("#swFolder").onclick=()=>this.send("reveal",{path:""}),e.querySelector("#swReload").onclick=()=>this.send("list",{}),e.querySelector("#swRefreshNow").onclick=()=>location.reload(),e.querySelector("#swNewFolder").onclick=()=>this.newFolder("");let o=e.querySelector("#swNewFile");pr()||(o.style.display="none"),o.onclick=()=>this.newFile(""),st(e.querySelector("#swOwnColumn"),r=>this.drop("",r));let n=e.querySelector("#swSearch");n.value=this.search,n.oninput=()=>{this.search=n.value.trim().toLowerCase(),this.renderGame()},e.querySelector("#swOwnTree").textContent="Loading...",this.send("list",{}),dr()||window.addEventListener("focus",()=>{!this.editing&&!this.uploadDone&&this.send("list",{})},{signal:t})}send(e,t){window.chrome.webview.postMessage(`swapper-${e} ${JSON.stringify(t)}`)}async drop(e,t){let o=t;!e&&o.every(({path:n})=>n.toLowerCase().startsWith("swapper/"))&&(o=o.map(({path:n,file:r})=>({path:n.slice(8),file:r}))),await this.upload(o.map(({path:n,file:r})=>({path:e?`${e}/${n}`:n,file:r})))}async replace(e,t){if(!this.popup)return;if(t.length!==1){this.popup.showError("Drop exactly one file onto a game file. Drop several onto a folder instead.");return}let[{file:o}]=t,n=r=>r.slice(r.lastIndexOf(".")+1).toLowerCase();if(n(o.name)!==n(e)){let r=`${o.name} is saved as ${Ks(e)}, the game will read it as .${n(e)}. Go ahead?`;if(!await Re(this.popup.shadow,"Different file type",r,"Save anyway"))return}await this.upload([{path:e,file:o}])}async upload(e){let t=[];for(let{path:o,file:n}of e){if(!this.popup)return;if(n.size>py){t.push(`${o}: larger than 32 MB, put it in with Open swapper folder`);continue}let r=await Rl(n),i=await new Promise(a=>{this.uploadDone=a,this.send("upload",{path:o,data:r})});i?t.push(i):this.touched.add(o.toLowerCase())}this.send("list",{}),t.length&&this.popup?.showError(t.join(` +`))}receive(e){if(e.managerError&&this.popup?.showError(e.managerError),e.swapperUploaded){let o=this.uploadDone;this.uploadDone=null,o?.(e.swapperUploaded.error??null)}if(e.swapperSource&&e.swapperSource.path===this.pendingRead&&(this.pendingRead=null,typeof e.swapperSource.content=="string"?this.showEditor(e.swapperSource.path,e.swapperSource.content):this.popup?.showError(`${e.swapperSource.path} could not be read as text.`)),e.swapperWritten&&this.saving&&(this.saving=!1,e.swapperWritten.error?this.popup?.showError(e.swapperWritten.error):this.editing&&(this.touched.add(this.editing.path.toLowerCase()),this.editing.editor.markSaved(),this.editing.closeAfterSave&&this.closeEditor())),e.swapperChanged&&!this.editing&&!this.uploadDone&&this.send("list",{}),!e.swapper)return;let t=this.list;this.list=e.swapper,t&&this.applyChanges(t,e.swapper),this.render()}applyChanges(e,t){let o=c=>new Map(c.files.map(d=>[d.path.toLowerCase(),d.size])),n=o(e),r=o(t),i=new Set(this.touched);if(this.touched.clear(),e.enabled!==t.enabled)for(let c of[...n.keys(),...r.keys()])i.add(c);for(let[c,d]of r)n.get(c)!==d&&i.add(c);for(let c of n.keys())r.has(c)||i.add(c);if(!i.size)return;let a=new Set([...i].filter(c=>c.endsWith(".css")));a.size&&!dr()&&Fs(a);let l=new Set(t.seen.map(c=>c.toLowerCase()));for(let c of i)!a.has(c)&&l.has(c)&&this.stale.add(c)}get(e){return this.popup?.shadow.querySelector(e)}render(){if(!this.popup||!this.list)return;let e=this.get("#swNotice"),t=this.list.enabled===!1;e.hidden=!t&&!this.stale.size;let o=this.stale.size;e.querySelector("span").textContent=t?"The swapper is switched off (Settings, Customization), none of these files are used.":`The game already loaded ${o===1?"1 changed file":`${o} changed files`}, ${o===1?"it changes":"they change"} after a page refresh.`,this.renderOwn(),this.renderGame()}renderOwn(){if(!this.list)return;let e=this.get("#swOwnTree");e.textContent="";let t=_m(this.list.files,this.list.dirs);if(this.get("#swOwnCount").textContent=`${this.list.files.length} file${this.list.files.length===1?"":"s"}`,!this.list.files.length&&!this.list.dirs.length){e.append(ce("div","treeNote","Nothing swapped yet. Drop a file onto one of the game files on the right, or drop a whole swapper pack here."));return}let o=new Map(this.list.seen.map(i=>[i.toLowerCase(),i])),n=new Map;for(let i of this.list.seen){let a=Ks(i).toLowerCase();n.set(a,[...n.get(a)??[],i])}let r=(i,a)=>{for(let l of[...i.folders.values()].sort((c,d)=>c.name.localeCompare(d.name))){let c=this.collapsedOwn.has(l.path),d=this.folderRow(l.name,a,!c,`${Dl(l)}`);d.onclick=()=>{c?this.collapsedOwn.delete(l.path):this.collapsedOwn.add(l.path),this.renderOwn()};let h=d.querySelector(".scriptActions");pr()&&h?.append(rt("note_add","New file inside",()=>this.newFile(l.path))),h?.append(rt("create_new_folder","New folder inside",()=>this.newFolder(l.path)),rt("drive_file_rename_outline","Rename or move",()=>this.move(l.path)),rt("folder_open","Open in Explorer",()=>this.send("reveal",{path:l.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(l.path),"danger")),st(d,p=>this.drop(l.path,p)),e.append(d),c||r(l,a+1)}for(let l of[...i.files].sort((c,d)=>c.name.localeCompare(d.name)))e.append(this.ownFileRow(l,a,o,n))};r(t,0)}folderRow(e,t,o,n){let r=ce("div","node folder");return r.style.setProperty("--depth",String(t)),r.append(ce("span","mi",o?"expand_more":"chevron_right"),ce("span","mi kind",o?"folder_open":"folder")),r.append(ce("span","nodeName",e),ce("span","nodeSize",n),ce("div","scriptActions")),r}ownFileRow(e,t,o,n){let r=ce("div","node");r.style.setProperty("--depth",String(t+1)),r.append(ce("span","mi","description"),ce("span","nodeName",e.name),ce("span","nodeSize",go(e.size)));let i=o.get(e.path.toLowerCase()),a=(n.get(e.name.toLowerCase())??[]).filter(c=>c.toLowerCase()!==e.path.toLowerCase());if(i){let c=ce("span","state ok","Used");c.title=`The game loaded krunker.io/${i} this session, this file replaced it.`,r.append(c)}else if(a.length){let[c]=a,d=ce("span","state warn","Wrong folder?");d.title=`The game asks for this file as ${a.join(", ")}`;let h=ce("div","btn small","Move there");h.title=`Move to ${c}`,h.onclick=()=>this.send("move",{from:e.path,to:c}),r.append(d,h)}else{let c=ce("span","state","Not requested");c.title="The game did not ask for this path in this session. It may still come (another map, a skin), or the path does not match any game file.",r.append(c)}let l=ce("div","scriptActions");return pr()&&Nm(e.path)&&e.size<=uy&&(l.append(rt("edit","Edit",()=>this.edit(e.path))),r.ondblclick=()=>this.edit(e.path)),l.append(rt("drive_file_rename_outline","Rename or move",()=>this.move(e.path)),rt("folder_open","Show in Explorer",()=>this.send("reveal",{path:e.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(e.path),"danger")),r.append(l),st(r,c=>this.drop(Bm(e.path),c)),r}renderGame(){if(!this.list||!this.popup)return;let e=this.get("#swGameTree");e.textContent="";let{seen:t}=this.list;this.get("#swGameCount").textContent=`${t.length} loaded this session`;let o=new Set(this.list.files.map(a=>a.path.toLowerCase()));if(!t.length){e.append(ce("div","treeNote","The game has not loaded any files yet. Play a round or open a menu, then Reload list."));return}let n=(a,l)=>{let c=ce("div","node");if(c.style.setProperty("--depth",String(l)),c.title=`krunker.io/${a} +Drop a file here to replace it`,c.append(ce("span","mi","insert_drive_file"),ce("span","nodeName",l?Ks(a):a)),o.has(a.toLowerCase())&&c.append(ce("span","swapped","swapped")),pr()&&Nm(a)){let d=this.list?.files.find(p=>p.path.toLowerCase()===a.toLowerCase()),h=ce("div","scriptActions");d?h.append(rt("edit","Edit your swap",()=>this.edit(d.path))):h.append(rt("edit_note","Edit a copy, saving it swaps the file",()=>this.editCopy(a))),c.append(h)}return st(c,d=>this.replace(a,d)),c};if(this.search){let a=t.filter(l=>l.toLowerCase().includes(this.search));for(let l of a.slice(0,Ol))e.append(n(l,0));a.length||e.append(ce("div","treeNote","No game file matches.")),a.length>Ol&&e.append(ce("div","treeNote",`${a.length-Ol} more, search for something longer.`));return}let r=_m(t.map(a=>({path:a,size:0})),[]),i=(a,l)=>{for(let c of[...a.folders.values()].sort((d,h)=>d.name.localeCompare(h.name))){let d=this.expandedGame.has(c.path),h=this.folderRow(c.name,l,d,`${Dl(c)}`);h.title="Drop files here to put them into this folder",h.onclick=()=>{d?this.expandedGame.delete(c.path):this.expandedGame.add(c.path),this.renderGame()},st(h,p=>this.drop(c.path,p)),e.append(h),d&&i(c,l+1)}for(let c of[...a.files].sort((d,h)=>d.name.localeCompare(h.name)))e.append(n(c.path,l+1))};i(r,0)}async newFile(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New file",e?`${e}/new.css`:"css/new.css","A path inside the swapper folder, the same path the game loads the file from");if(!t)return;let o=t.replace(/^\/+/,"");if(this.list?.files.some(n=>n.path.toLowerCase()===o.toLowerCase())){this.popup.showError(`${o} already exists, edit it instead.`);return}this.showEditor(o,"",!0)}edit(e){this.pendingRead||this.editing||(this.pendingRead=e,this.send("read",{path:e}))}async editCopy(e){if(this.pendingRead||this.editing)return;this.pendingRead=e;let t=null;for(let o of["https://krunker.io","https://assets.krunker.io"])try{let n=await fetch(`${o}/${e}`);if(n.ok){t=await n.text();break}}catch{}this.pendingRead===e&&(this.pendingRead=null,t===null&&(this.popup?.showError(`Could not download krunker.io/${e}, starting with an empty file.`),t=""),this.showEditor(e,t,!0))}showEditor(e,t,o=!1){if(!this.popup)return;let n=this.get("#swEditor");this.get(".swapColumns").style.display="none",n.style.display="";let{editor:r}=po(n,{title:e,content:t,language:ja(e),isNew:o,onSave:i=>{!this.editing||this.saving||(this.saving=!0,this.editing.closeAfterSave=i,this.send("write",{path:e,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={path:e,editor:r,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Re(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||this.closeEditor()}closeEditor(){if(this.editing=null,!this.popup)return;let e=this.get("#swEditor");e.textContent="",e.style.display="none",this.get(".swapColumns").style.display="",this.render()}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Re(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}async newFolder(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New folder",e?`${e}/`:"textures","A path inside the swapper folder, for example textures/weapons");t&&this.send("mkdir",{path:t})}async move(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"Rename or move",e,"The new path inside the swapper folder. Change the folders in front to move it.");!t||t===e||this.send("move",{from:e,to:t})}async remove(e){!this.popup||!await Re(this.popup.shadow,`Delete ${Ks(e)}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||this.send("delete",{path:e})}},hy=new Fl,my=()=>hy.open()});var zm={};var jl=w(()=>{"use strict";D();es();ur();u.userscriptManager={open:()=>{Promise.resolve().then(()=>(Hl(),zl)).then(s=>s.open()).catch(s=>console.error("[kute] userscript manager:",s))}};u.settings.toggleUserscripts=s=>{if(u.settings.data.userscripts=s,s)At()?To(null,!1,!0):u.userscriptManager.masterChanged||u.showNotification("Refresh the page to start your userscripts.",!1,5);else{let e=(Je?.entries??[]).filter(t=>(t.state==="running"||t.state==="waiting")&&!t.stop()).map(t=>t.meta.name||t.key);e.length&&u.showNotification(`${e.join(", ")} cannot be stopped and keeps running until the next refresh.`,!1,6)}u.userscriptManager.masterChanged?.(s)};window.chrome.webview.addEventListener("message",s=>{let e=s.data?.swapperChanged?.css;Array.isArray(e)&&e.length&&Fs(new Set(e.map(String)))});u.swapperManager={open:()=>{Promise.resolve().then(()=>(Kl(),ql)).then(s=>s.open()).catch(s=>console.error("[kute] swapper manager:",s))}};u.customCss={open:()=>{Promise.resolve().then(()=>(_l(),Nl)).then(s=>s.open()).catch(s=>console.error("[kute] custom css:",s))}}});var Om={};A(Om,{default:()=>W});var Ul,fy,gy,Hm,Gl,by,W,xe=w(()=>{"use strict";D();It();Ul="kute_market_session",fy="x-kute-session",gy=3e3,Hm=3600*1e3,Gl=class{constructor(){this.sessionPromise=null,this.memorySession=null,this.cache=new Map,this.lastError="",this.retryAt=0}loggedIn(){try{return localStorage.getItem("krunker_token")!==null}catch{return!1}}hostSupported(){return u.hostFeatures?.includes("market-attest")===!0}stored(){if(this.memorySession&&Date.now()t.expiresAt-Hm?null:t}catch{return null}}forget(e){if(this.stored()?.session===e){try{localStorage.removeItem(Ul)}catch{}this.memorySession=null}}attest(e){return new Promise(t=>{let o=0,n=r=>{let i=null;try{i=typeof r.data=="string"?JSON.parse(r.data):r.data}catch{return}let a=i?.marketAttest;!a||a.challenge!==e||(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(a))};o=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},gy),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(`market-attest, ${e}, ${this.loggedIn()}`)})}session(){let e=this.stored();return e?Promise.resolve(e.session):(this.sessionPromise??=this.newSession().finally(()=>{this.sessionPromise=null}),this.sessionPromise)}async newSession(){if(this.lastError="",!this.loggedIn())return this.lastError="log in to Krunker to use the market",null;if(!this.hostSupported())return this.lastError="this Kute version cannot sign in to the market, update Kute",null;let e=await he.requestStatus("/market/session",{method:"POST"});if(!e.data?.challenge)return this.lastError=e.status===503?"the market is not available right now":"could not reach the market",e.status===429&&this.limited(e.retryAt),null;let t=await this.attest(e.data.challenge);if(!t)return this.lastError="Kute did not answer the sign in",null;let o=await he.requestStatus("/market/session/confirm",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({challenge:t.challenge,sig:t.sig,version:t.version,loggedIn:t.loggedIn})});if(!o.data?.session)return this.lastError=typeof o.error?.error=="string"?o.error.error:"the market refused the sign in",o.status===429&&this.limited(o.retryAt),null;this.memorySession={session:o.data.session,expiresAt:o.data.expiresAt};try{localStorage.setItem(Ul,JSON.stringify(this.memorySession))}catch{}return o.data.session}async request(e,t={},o=!1){return(await this.requestStatus(e,t,o)).data}async requestStatus(e,t={},o=!1){if(Date.now()this.request(e)){let n=Date.now(),r=this.cache.get(e);if(r&&n-r.at(a===null&&this.cache.delete(e),a));if(this.cache.set(e,{at:n,ttl:t,value:i}),this.cache.size>500){let a=this.cache.keys().next();a.done||this.cache.delete(a.value)}return i}retry(){return Date.now(){let n=await this.requestStatus(o);if(n.status!==404)return n.data;let r=await this.cached(`/market/item/${e}`,3e5);if(!r)return null;let[i,a]=await Promise.all([this.cached(`/market/item/${e}/history?range=${t}`,3e5),this.cached(`/market/item/${e}/listings`,6e4)]);return{item:r,history:i,listings:a}})}async values(e){let t=[...new Set(e)].sort((n,r)=>n-r),o={};for(let n=0;njs,RARITIES:()=>bo,formatAge:()=>We,formatKr:()=>Pe,formatPercent:()=>it});function Pe(s){return Number.isFinite(s)?Math.abs(s)>=1e6?`${(s/1e6).toFixed(s%1e6===0?0:1)}M`:Math.round(s).toLocaleString("en-US"):"?"}function it(s){if(s==null||!Number.isFinite(s))return"\u2013";let e=s*100;return`${e>0?"+":""}${Math.abs(e)>=100?e.toFixed(0):e.toFixed(1)} %`}function We(s){if(!Number.isFinite(s)||s<0)return"\u2013";let e=s/6e4;if(e<60)return`${Math.max(1,Math.round(e))} min`;let t=e/60;return t<48?`${Math.round(t)} h`:`${Math.round(t/24)} d`}var bo,js,Ve=w(()=>{"use strict";bo=[{name:"Uncommon",color:"#b2f252"},{name:"Rare",color:"#2196F3"},{name:"Epic",color:"#E040FB"},{name:"Legendary",color:"#FBC02D"},{name:"Relic",color:"#ff5722"},{name:"Contraband",color:"#f44336"},{name:"Unobtainable",color:"#ffffff"},{name:"NFT",color:"#9e9e9e"}],js={A:"#5ce05a",B:"#9ccc65",C:"#fbc02d",D:"#ff9800",F:"#f44336"}});var Fm={};A(Fm,{TRADE_VERDICTS:()=>jt,TYPE_NAMES:()=>Et,activityLabel:()=>Wl,change:()=>ae,empty:()=>fe,esc:()=>S,evidenceLabel:()=>Gs,identity:()=>me,money:()=>T,stat:()=>ne,verdictOf:()=>Us});var Et,jt,Us,S,T,ae,Gs,Wl,me,fe,ne,pe=w(()=>{"use strict";Ve();Et=["Weapons","Hats","Bodies","Melee","Sprays","Dyes","Waists","Faces","Charms","Emotes","Stickers","Skydomes","Poses","Spin tickets","Capes","Heads","Paints","Backs","Consumables"],jt={good:{label:"Favorable trade",detail:"More estimated value coming in"},fair:{label:"Fair trade",detail:"Similar estimated value"},bad:{label:"Unfavorable trade",detail:"More estimated value going out"},uncertain:{label:"Not enough evidence",detail:"Estimates are too uncertain for a verdict"}},Us=s=>Object.hasOwn(jt,s)?s:"uncertain",S=s=>String(s??"").replace(/[&<>"']/g,e=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[e]??e),T=s=>s==null?"Unavailable":Pe(s),ae=s=>{if(s==null)return'No trend yet';let e="muted";return s>.005&&(e="positive"),s<-.005&&(e="negative"),`${S(it(s))}`},Gs=s=>s.method?.includes("trades")?s.method.startsWith("sales")?"Sales + private trades":"Private-trade estimate":s.method?.startsWith("sales")?(s.sales7d??0)>=5?"Recent sales":"Sparse sales":"Limited evidence",Wl=s=>s.privateTrading?.trades7d?`${s.privateTrading.trades7d} private trade${s.privateTrading.trades7d===1?"":"s"} this week${s.sales7d?` + ${s.sales7d} sales`:""}`:(s.sales7d??0)>=7?"Active this week":(s.sales7d??0)>0?"Traded this week":"No reported sales this week",me=s=>`${s.thumbnail?``:'K'}${S(s.name)}${S(bo[s.rarity??-1]?.name??"Item")}`,fe=(s,e,t="")=>`
                  ◇

                  ${S(s)}

                  ${S(e)}

                  ${t}
                  `,ne=(s,e,t)=>`
                  ${S(s)}${e}${t}
                  `});var Km={};A(Km,{default:()=>hr});var vy,vo,Ke,qm,wy,ky,yy,Vl,xy,Yl,Sy,hr,Xl=w(()=>{"use strict";D();xe();Ve();pe();vy=1500,vo="data-kute-market",Ke="kuteMarketLine",qm="kuteMarketCardStyle",wy=".market-card, .market-item-card",ky=` .market-card,.market-item-card{position:relative} -.${_e}{display:inline-flex!important;align-items:center;gap:.35em;white-space:nowrap;cursor:pointer;pointer-events:auto} -.${_e}:hover{filter:brightness(1.25)} -.${_e}.kuteFloating{position:absolute;left:6px;bottom:6px;z-index:3;background:rgba(0,0,0,.72);color:#fff;padding:2px 7px;border-radius:5px;font-size:12px;font-weight:700} -.${_e} .kuteMark{color:#f5479b;font-weight:900} -.${_e} .kuteGrade{display:inline-flex;align-items:center;justify-content:center;min-width:1.4em;height:1.4em;border-radius:3px;padding:0 .25em;color:#111;font-size:.75em;line-height:1} -.${_e} .kuteDelta{font-size:.85em} -.${_e} .kuteDelta.kuteDeal{color:#5ce05a} -.${_e} .kuteDelta.kuteOver{color:#f44336} -.${_e} .kuteNone{opacity:.6} +.${Ke}{display:inline-flex!important;align-items:center;gap:.35em;white-space:nowrap;cursor:pointer;pointer-events:auto} +.${Ke}:hover{filter:brightness(1.25)} +.${Ke}.kuteFloating{position:absolute;left:6px;bottom:6px;z-index:3;background:rgba(0,0,0,.72);color:#fff;padding:2px 7px;border-radius:5px;font-size:12px;font-weight:700} +.${Ke} .kuteMark{color:#f5479b;font-weight:900} +.${Ke} .kuteGrade{display:inline-flex;align-items:center;justify-content:center;min-width:1.4em;height:1.4em;border-radius:3px;padding:0 .25em;color:#111;font-size:.75em;line-height:1} +.${Ke} .kuteDelta{font-size:.85em} +.${Ke} .kuteDelta.kuteDeal{color:#5ce05a} +.${Ke} .kuteDelta.kuteOver{color:#f44336} .kuteDetailBtn .kuteMark{color:#f5479b;font-weight:900;margin-right:2px} -`,Cy=".item-detail-container, .items-detail-root",Zl="kuteDetailBtn",My=5e3,Ql=class s{constructor(){this.timer=void 0,this.busy=!1,this.pick=null,this.onPick=e=>{if(document.pointerLockElement||!(e.target instanceof Element))return;let t=e.target.closest("[id^='trd_'], .trade-inv-item[data-index]");if(!t)return;let o=/^trd_(?:sel_|inv_)?\d+_(\d+)/.exec(t.id),n=o?o[1]:t.getAttribute("data-index");if(n===null||!/^\d+$/.test(n))return;let r=t.querySelector(".tItemN")?.textContent?.trim()??"";this.pick={skin:Number(n),name:r,at:Date.now()}}}start(){if(this.timer===void 0){if(!document.getElementById(Gm)){let e=document.createElement("style");e.id=Gm,e.textContent=$y,document.head.append(e)}this.timer=window.setInterval(()=>this.tick(),Sy),document.addEventListener("pointerdown",this.onPick,!0)}}stop(){clearInterval(this.timer),this.timer=void 0,document.removeEventListener("pointerdown",this.onPick,!0),this.pick=null;for(let e of document.querySelectorAll(`.${_e}, .${Zl}`))e.remove();for(let e of document.querySelectorAll(`[${ko}]`))e.removeAttribute(ko)}static thumbPath(e){let t=/\/textures\/previews\/([^?#]+)/.exec(e);return t?t[1]:null}static askOf(e){let t=e.querySelector(".inline-price");if(t){let o=Number((t.textContent??"").replace(/[^\d.]/g,""));return Number.isFinite(o)&&o>0?o:null}for(let o of e.querySelectorAll("span, div")){if(o.classList.contains(_e)||o.children.length)continue;let n=o.textContent?.trim()??"";if(/^~/.test(n))continue;let r=/^([\d,.]+)\s*KR$/i.exec(n)??/^([\d,.]+)$/.exec(n);if(r&&o.closest(".estimate-badge")===null){let i=Number(r[1].replace(/,/g,""));if(Number.isFinite(i)&&i>0)return i}}return null}async tick(){if(this.busy||document.pointerLockElement)return;let e=document.querySelector(Cy),t=e?.getAttribute("aria-label")??"1";e&&e.getAttribute(ko)!==t&&(e.setAttribute(ko,t),e.querySelector(`.${Zl}`)?.remove(),await this.detailButton(e,t));let o=[...document.querySelectorAll(Ey)].filter(n=>!n.hasAttribute(ko));if(o.length){this.busy=!0;try{let n=new Map;for(let i of o){i.setAttribute(ko,"1");let a=i.querySelector("img"),l=a instanceof HTMLImageElement?s.thumbPath(a.currentSrc||a.src):null;if(!l)continue;let c=n.get(l)??[];c.push(i),n.set(l,c)}if(!n.size)return;let r=await W.valuesByThumbnails([...n.keys()]);for(let[i,a]of n){let l=r[i];for(let c of a)c.isConnected&&this.draw(c,l??null)}}finally{this.busy=!1}}}async detailValue(e,t){let{pick:o}=this;if(o&&Date.now()-o.atc.name.toLowerCase()===t.toLowerCase())??[];return l.length===1?l[0]:null}async detailButton(e,t){let o=e.querySelector(".full-details-container, .items-detail-header-actions");if(!o)return;let n=document.createElement("button");n.type="button";let r=o.querySelector("button");n.className=`${r?.className??""} ${Zl}`.trim();let i=r?.querySelector("i")?.className??"material-icons";n.innerHTML=`candlestick_chart Kute Market`,n.title="K value, liquidity, price history, depth and owners in Kute Market",o.append(n);let a=await this.detailValue(e,t);if(!a||e.getAttribute(ko)!==t){n.remove();return}let l=n.querySelector("span");l&&(l.textContent=Wt(a)?"Kute Market \xB7 no price data":`Kute Market \xB7 K ${Re(a.fair)} ${a.grade}`),n.addEventListener("click",c=>{c.stopPropagation(),d.market?.open("item",a.skin)})}draw(e,t){if(e.querySelector(`.${_e}`)?.remove(),!t)return;let o=document.createElement("div"),n=e.querySelector(".estimate-badge");o.className=n?`${n.className} ${_e}`:`${_e} kuteFloating`;let r=s.askOf(e);if(Wt(t))o.innerHTML='K no data',o.title=`Kute has no price evidence for this item: no sale, trade or listing it could see. ${t.method==="floor"?"The game's quick-sell floor":"Krunker's estimate"} is ${Re(t.fair)} kr, and such items are often worth far more. Click for the item in Kute Market`;else{let i="";if(r!==null&&t.fair>0){let a=r/t.fair-1,l="";a<=-.1&&t.confidence>=40?l="kuteDeal":a>=.25&&(l="kuteOver");let c=Math.round(Math.abs(a)*100);i=`${a<0?"\u2212":"+"}${c}%`}o.innerHTML=`K ${Re(t.fair)}${S(t.grade)}${i}`,o.title=`Kute fair value ${Re(t.fair)} kr, evidence score ${t.confidence}/100, public-market activity grade ${t.grade}`+(t.privateTrading?.trades7d?`, ${t.privateTrading.trades7d} reported private trades this week`:"")+(t.exchange?.status==="applied"?", includes private exchange evidence":"")+(r!==null?`, this ask ${it(r/t.fair-1)} against it`:"")+". Click for the item in Kute Market"}o.addEventListener("click",i=>{i.stopPropagation(),i.preventDefault(),d.market?.open("item",t.skin)}),n?n.after(o):e.append(o)}},Ty=new Ql,mr=Ty});var Ym,Vm=w(()=>{Ym='
                  '});var Xm={};A(Xm,{default:()=>fr});var Ly,tc,Ry,fr,oc=w(()=>{"use strict";xe();We();pe();Vm();Ly=1200,tc=class s{constructor(){this.timer=void 0,this.lastKey="",this.retryAt=0,this.failures=0,this.generation=0,this.busy=!1,this.expanded=!1,this.dismiss=e=>{let t=this.box?.shadowRoot?.querySelector("details");if(t?.open){if(e instanceof KeyboardEvent){if(e.key!=="Escape")return;e.preventDefault(),e.stopPropagation(),t.querySelector("summary")?.focus()}else if(e.target instanceof Node&&this.box?.contains(e.target))return;t.open=!1,this.expanded=!1}},this.box=null}start(){this.timer===void 0&&(this.timer=window.setInterval(()=>this.tick(),Ly),window.addEventListener("pointerdown",this.dismiss,!0),window.addEventListener("keydown",this.dismiss,!0))}stop(){clearInterval(this.timer),this.timer=void 0,this.generation++,window.removeEventListener("pointerdown",this.dismiss,!0),window.removeEventListener("keydown",this.dismiss,!0),this.clear()}clear(){this.box?.remove(),this.box=null,this.lastKey="",this.expanded=!1}static kr(e){let t=/([\d,.]+)/.exec(e.replace(/[~\s]/g,""));return t&&Number(t[1].replace(/,/g,""))||0}static row(e,t){let o=e.parentElement;for(;o&&!o.contains(t);)o=o.parentElement;return o&&o!==document.body?o:null}snapshot(){let e=[...document.querySelectorAll(".trade-window .trade-side")].filter(u=>u.getClientRects().length);if(e.length>=2){let u=s.row(e[0],e[1]);if(!u)return null;let h=m=>[...m.querySelectorAll(".trade-offer-scroll .trade-inv-item")].map(g=>{let b=g.getAttribute("data-index"),v=b!==null&&/^\d+$/.test(b)?Number(b):-1,k=g.querySelector("img")?.getAttribute("src")??"",E={skin:v,count:s.kr(g.querySelector(".trade-item-count")?.textContent??"1")||1};v<0&&(E.path=/\/textures\/previews\/([^?#]+)/.exec(k)?.[1]??"");for(let[L,x]of[["serial","data-serial"],["wear","data-wear-float"],["style","data-style"]]){let $=g.getAttribute(x);$!==null&&$!==""&&Number.isFinite(Number($))&&(E[L]=Number($))}return E}),p=h(e[0]),f=h(e[1]);return{give:p,get:f,giveKr:0,getKr:0,anchor:u,key:JSON.stringify([p,f])}}let t=[document.getElementById("tradeList0"),document.getElementById("tradeList1")];if(!t[0]?.getClientRects().length||!t[1]?.getClientRects().length)return null;let o=s.row(t[0],t[1]);if(!o)return null;let n=u=>[...u.querySelectorAll("[id^='trd_']")].flatMap(h=>{let p=/^trd_(?:sel_)?\d+_(\d+)(?:_\d+)?$/.exec(h.id);return p?[{skin:Number(p[1]),count:s.kr(h.querySelector(".tItemCnt")?.textContent??"1")||1}]:[]}),r=u=>Math.max(0,s.kr(document.getElementById(`currency_item_${u}_1`)?.querySelector(".tCurrencyAmount")?.textContent??"0")),i=n(t[0]),a=n(t[1]),l=r(0),c=r(1);return{give:i,get:a,giveKr:l,getKr:c,anchor:o,key:JSON.stringify([i,a,l,c])}}current(e,t){if(this.timer===void 0||t!==this.generation||document.pointerLockElement||document.hidden)return!1;let o=this.snapshot();return o?.anchor===e.anchor&&o.key===e.key}async tick(){if(this.busy||this.timer===void 0||document.pointerLockElement||document.hidden)return;this.busy=!0;let{generation:e}=this;try{let t=this.snapshot();if(!t){this.clear();return}if(Date.now()p.skin<0&&p.path).map(p=>p.path),r=n.length?await W.valuesByThumbnails(n):{};if(!this.current(t,e))return;let i=p=>p.map(({path:f,...m})=>({...m,skin:m.skin<0?r[f??""]?.skin??-1:m.skin})),a=i(t.give),l=i(t.get);if([...a,...l].some(p=>p.skin<0)){this.render(t,null,"An item could not be identified. A complete comparison is unavailable.");return}let c=await W.analyzeStatus({give:a,get:l,giveKr:t.giveKr,getKr:t.getKr}),u=c.data;if(u?(this.failures=0,this.retryAt=0):(this.failures++,this.retryAt=c.status===429?c.retryAt??Date.now()+6e4:Date.now()+Math.min(6e4,5e3*2**(this.failures-1)),this.lastKey=""),!this.current(t,e))return;let h=c.status===429?`Request limit reached. Estimates resume after ${new Date(this.retryAt).toLocaleTimeString()}.`:"Estimates unavailable. Retrying with a longer delay.";this.render(t,u,h)}finally{this.busy=!1}}render(e,t,o){this.box||(this.box=document.createElement("div"),this.box.className="kuteTradeBox",this.box.style.cssText="all:initial;display:block;box-sizing:border-box;width:100%;min-width:0;margin:0 0 10px;",this.box.attachShadow({mode:"open"}).innerHTML=Ym);let n=this.box.shadowRoot?.querySelector(".panel");if(!n)return;n.className=`panel${e.give.length||e.get.length||e.giveKr||e.getKr?" filled":""}`,this.expanded=n.querySelector("details")?.open??this.expanded;let r='
                  Kute trade insight';if(!t)r+=`

                  ${S(o)}

                  `;else{let i=!e.give.length&&!e.giveKr||!e.get.length&&!e.getKr,a=[...t.give.items,...t.get.items].some(m=>m.unknown),l=Gs(t.verdict),c=i?"Add items on both sides to compare":Gt[l].detail,u=Gt[l].label;a&&(u="Incomplete comparison"),i&&(u="Add both sides"),r+=`${c}`;let h=(m,g)=>{let b=m.items.reduce((k,E)=>k+E.count,0),v=m.items.some(k=>k.unknown);return`
                  ${g}${Re(m.value)}${v?"+":""} KR${b} ${b===1?"item":"items"}${m.kr?` + ${Re(m.kr)} KR`:""} · ${v?"Partial estimate":"Estimated value"}
                  `},p=i||a?'–Incomplete comparison':`${t.difference>0?"+":""}${Re(t.difference)} KR${S(it(t.differenceShare))} of the larger side`;r+=`
                  ${h(t.give,"You give")}
                  ${u}${p}
                  ${h(t.get,"You receive")}
                  `;let f=(m,g)=>`

                  ${g}

                  ${m.items.map(b=>`
                  ${b.count>1?`${b.count} × `:""}${S(b.name)}${b.serial!==void 0?` #${S(b.serial)}`:""}${b.wear!==void 0?` · wear ${b.wear.toFixed(4)}`:""}${b.unknown?"":`${S(b.grade)}`}${b.unknown?"Unvalued":`${Re(b.lineValue)} KR`}
                  `).join("")}${m.kr?`
                  Added KR${Re(m.kr)} KR
                  `:""}${!m.items.length&&!m.kr?'No items added':""}
                  `;r+=`Item breakdown & evidenceHide item breakdown & evidence
                  ${f(t.give,"You give")}${f(t.get,"You receive")}
                  • Estimates describe market data, not guaranteed sale prices. Activity grades do not guarantee a selling time.
                  • ${t.drivers.filter(m=>!m.startsWith("Liquidity adjustments")).map(m=>`
                  • ${S(m)}
                  • `).join("")}
                  `}n.innerHTML=r,this.box.nextElementSibling!==e.anchor&&e.anchor.before(this.box)}},Ry=new tc,fr=Ry});var Zm={};A(Zm,{readWatchlist:()=>Se,saveWatchlist:()=>yo,toggleWatch:()=>sc});function Se(){try{let s=JSON.parse(localStorage.getItem(Jm)??"[]");if(!Array.isArray(s))return[];let e=new Set;return s.filter(t=>!t||!Number.isInteger(t.skin)||t.skin<0||e.has(t.skin)||typeof t.name!="string"?!1:(e.add(t.skin),!0)).slice(0,100).map(t=>({skin:t.skin,name:t.name,rarity:Number.isInteger(t.rarity)?t.rarity:void 0,thumbnail:typeof t.thumbnail=="string"?t.thumbnail:null,target:Number.isFinite(t.target)&&t.target>0?t.target:null}))}catch{return[]}}function yo(s){try{return localStorage.setItem(Jm,JSON.stringify(s.slice(0,100))),window.dispatchEvent(new Event("kute-market-watch-changed")),!0}catch{return!1}}function sc(s){let e=Se(),t=e.some(o=>o.skin===s.skin);return!t&&e.length>=100?!1:yo(t?e.filter(o=>o.skin!==s.skin):[...e,{skin:s.skin,name:s.name,rarity:s.rarity,thumbnail:s.thumbnail??null,target:null}])}var Jm,Vt=w(()=>{"use strict";Jm="kute_market_watch"});var of={};A(of,{UNREAD_EVENT:()=>Vs,default:()=>Ct});var Py,Iy,Qm,ef,tf,Vs,Ny,nc,_y,Ct,gr=w(()=>{"use strict";F();Nt();xe();Vt();We();Py=5*6e4,Iy=3*36e5,Qm="kute_market_alerts",ef="kute_market_watch_report",tf="kute_market_alerts_unread",Vs="kute-market-alerts-unread",Ny=2*36e5,nc=class{constructor(){this.timer=0,this.busy=!1,this.seen=new Map;try{let e=JSON.parse(localStorage.getItem(Qm)??"[]");if(Array.isArray(e))for(let[t,o]of e.slice(0,100))Number.isInteger(t)&&Number.isFinite(o?.target)&&typeof o?.reached=="boolean"&&this.seen.set(t,o)}catch{this.seen.clear()}this.unread=new Set;try{let e=JSON.parse(localStorage.getItem(tf)??"[]");if(Array.isArray(e))for(let t of e.slice(0,100))Number.isInteger(t)&&this.unread.add(t)}catch{this.unread.clear()}this.onChange=()=>{this.check(),this.report()}}start(){this.timer||(this.timer=window.setInterval(()=>{this.check()},Py),window.addEventListener("kute-market-watch-changed",this.onChange),this.check(),this.report())}async report(){if(!this.active())return;let e=Se().map(n=>n.skin).sort((n,r)=>n-r),t=e.join(","),o={};try{o=JSON.parse(localStorage.getItem(ef)??"{}")??{}}catch{}if(!(o.key===t&&Date.now()-(o.at??0)o.target!==null);for(let o of this.seen.keys())e.some(n=>n.skin===o)||this.seen.delete(o);this.save();let t=this.unread.size;for(let o of this.unread)e.some(n=>n.skin===o)||this.unread.delete(o);if(this.unread.size!==t&&this.saveUnread(),!!e.length){this.busy=!0;try{let o=await W.values(e.map(i=>i.skin));if(!this.active())return;let n=Se(),r=[];for(let i of e){if(i.target===null||!n.some(u=>u.skin===i.skin&&u.target===i.target))continue;let a=o[i.skin];if(!a||!a.bookAt||!a.valuedAt||Date.now()-Math.min(a.bookAt,a.valuedAt)>Iy||a.lowest===null)continue;let l=a.lowest<=i.target,c=this.seen.get(i.skin);l&&(!c?.reached||c.target!==i.target)&&(r.push({name:i.name,price:a.lowest}),this.unread.add(i.skin)),this.seen.set(i.skin,{target:i.target,reached:l})}if(r.length){this.saveUnread();let i=r[0],a=r.length>1?` and ${r.length-1} more`:"";d.showNotification(`Watchlist: ${i.name} at ${Re(i.price)} KR${a}. Observed ask reached your target.`,!1,8)}this.save()}catch{}finally{this.busy=!1}}}},_y=new nc,Ct=_y});var rf={};A(rf,{contributedItem:()=>rc,contributedSale:()=>ac,contributedTrade:()=>ic});function Ys(s){let e=s;if(typeof e=="string")try{e=JSON.parse(e)}catch{return null}return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function rc(s){let e=typeof s=="number"?{ind:s}:Ys(s);if(!e)return null;let t=e.ind??e.skinindex??e.skin_index??e.i??e.index,o=e.count??e.cnt??e.c??1;if(!mt(t)||!mt(o,1)||o>1e4)return null;let n=Ys(e.m??e.metadata??e.meta)??{},r={skin:t,count:o};for(let i of["serial","wear","style","paint","instance"]){let a=e[i]??n[i];if(a!=null){if(i==="wear"?typeof a!="number"||!Number.isFinite(a)||a<0||a>1:!mt(a))return null;r[i]=a}}return r}function sf(s){if(typeof s=="number")return mt(s)?[{id:1,amount:s}]:null;if(!Array.isArray(s)||s.length>64)return null;let e=new Map;for(let t of s){let o=Ys(t);if(!o||!mt(o.cid,1)||typeof o.amt!="number"||!Number.isFinite(o.amt)||o.amt<0||o.amt>1e9||o.cid===1&&!mt(o.amt))return null;let n=(e.get(o.cid)??0)+o.amt;if(!Number.isFinite(n)||n>1e9)return null;e.set(o.cid,n)}return[...e].filter(([,t])=>t>0).map(([t,o])=>({id:t,amount:o}))}function ic(s,e){let t=Ys(s);if(!t||!mt(t.trid,1,Number.MAX_SAFE_INTEGER)||t.status&&t.status!=="completed")return null;let o=nf(t.dte??t.date);if(!Number.isFinite(o)||oe||!Array.isArray(t.sksell)||!Array.isArray(t.skbuy)||t.sksell.length+t.skbuy.length>40)return null;let n=t.sksell.map(rc),r=t.skbuy.map(rc);if([...n,...r].some(l=>!l)||!n.length&&!r.length)return null;let i=sf(t.csell??[]),a=sf(t.cbuy??[]);return!i||!a?null:{trid:t.trid,at:o,context:"history",give:n,get:r,giveCurrencies:i,getCurrencies:a,giveKr:i.find(l=>l.id===1)?.amount??0,getKr:a.find(l=>l.id===1)?.amount??0}}function ac(s,e){let t=Ys(s);if(!t||t.status!=="completed"||!mt(t.marketid,1,Number.MAX_SAFE_INTEGER)||!mt(t.skinindex)||!mt(t.amount,1))return null;let o=nf(t.date);return!Number.isFinite(o)||oe||!["buy","sell"].includes(t.type)?null:{marketid:t.marketid,type:t.type,skinindex:t.skinindex,amount:t.amount,date:new Date(o).toISOString()}}var mt,nf,lc=w(()=>{"use strict";mt=(s,e=0,t=1e9)=>typeof s=="number"&&Number.isSafeInteger(s)&&s>=e&&s<=t,nf=s=>typeof s=="string"?Date.parse(/^\d{4}-\d\d-\d\d \d\d:\d\d(:\d\d)?$/.test(s)?`${s.replace(" ","T")}Z`:s):NaN});var df={};A(df,{default:()=>br});function af(s){let e=2166136261,t=84696351;for(let o=0;o>>0,t=Math.imul(t^s.charCodeAt(o),16777619)>>>0;return e.toString(36)+t.toString(36)}function By(){try{let s=JSON.parse(localStorage.getItem(lf)??"[]");return new Set(Array.isArray(s)?s.filter(e=>typeof e=="string").slice(-cf):[])}catch{return new Set}}var lf,cf,cc,zy,br,dc=w(()=>{"use strict";F();Nt();xe();lc();lf="kute_market_sent",cf=2e3;cc=class{constructor(){this.running=!1,this.generation=0,this.nextPostAt=0,this.failures=0,this.account="",this.queue=new Map,this.sent=By(),this.timer=void 0,this.controller=null,this.listings=new Map,this.openTrades=new Map,this.seen=new Set,this.listener=e=>this.receive(e)}start(){this.running||!d.hostFeatures?.includes("history-capture")||(this.running=!0,this.generation++,window.chrome.webview.addEventListener("message",this.listener))}stop(){this.running&&window.chrome.webview.removeEventListener("message",this.listener),this.running=!1,this.generation++,clearTimeout(this.timer),this.controller?.abort(),this.controller=null,this.queue.clear(),this.forgetCaptured()}useAccount(e){this.account!==e&&(this.queue.clear(),this.forgetCaptured(),this.account=e)}forgetCaptured(){this.listings.clear(),this.openTrades.clear(),this.seen.clear()}active(){return this.running&&!document.hidden&&!document.pointerLockElement&&!he.down&&!he.offline()&&W.loggedIn()}currentAccount(){try{return localStorage.getItem("krunker_username")??""}catch{return""}}current(e,t){return this.active()&&e===this.generation&&t===this.currentAccount()}receive(e){let t=null;try{t=typeof e.data=="string"?JSON.parse(e.data):e.data}catch{return}if(d.hostFeatures?.includes("market-capture")){t?.marketCapture&&this.captured(t.marketCapture);return}let o=t?.marketHistory;!o||o.kind!=="sales"&&o.kind!=="trades"||this.capture(o.data,o.kind)}captured(e){if(typeof e.path!="string"||e.data?.error)return;let t=e.path.split(/[?#]/)[0],o=e.data?.data;if(e.method==="GET"){if(t==="/market/history")this.capture(e.data,"sales");else if(t==="/trades/history"){if(Array.isArray(o?.open)){this.openTrades.clear();for(let i of o.open.slice(0,100))Number.isSafeInteger(i?.trid)&&this.openTrades.set(i.trid,i)}this.capture(e.data,"trades")}else t==="/market/listings"&&Array.isArray(o?.listings)&&this.listed(o.listings);return}if(e.method!=="POST")return;if(t==="/market/purchase"){let i=this.listings.get(o?.mid);if(i&&i.skin===o?.skn){let a={marketid:o.mid,type:"buy",date:new Date().toISOString(),skinindex:o.skn,amount:i.price,status:"completed"};this.capture({history:[a]},"sales")}return}let n=/^\/trades\/(\d+)\/accept$/.exec(t),r=n&&this.openTrades.get(Number(n[1]));r&&this.capture({completed:[r]},"trades")}listed(e){if(this.active()){this.useAccount(this.currentAccount());for(let t of e.slice(0,200))!Number.isSafeInteger(t?.marketid)||!Number.isSafeInteger(t?.skinindex)||!Number.isSafeInteger(t?.funds)||(this.listings.delete(t.marketid),this.listings.set(t.marketid,{skin:t.skinindex,price:t.funds}),this.seen.size<200&&this.seen.add(t.skinindex));for(;this.listings.size>3e3;)this.listings.delete(this.listings.keys().next().value??0);this.schedule()}}capture(e,t){if(!this.active()||e?.error)return;let o=this.currentAccount(),n=e?.data??e,r=t==="trades"?n?.completed:n?.history;if(!Array.isArray(r))return;this.useAccount(o);let i=Date.now();for(let a of r.slice(0,500)){let l=t==="trades"?ic(a,i):ac(a,i);if(!l)continue;let c=t+JSON.stringify(l);this.sent.has(af(`${o} -${c}`))||this.queue.set(c,{kind:t,row:l})}for(;this.queue.size>300;)this.queue.delete(this.queue.keys().next().value??"");this.schedule()}schedule(){if(clearTimeout(this.timer),!this.running||!this.queue.size&&!this.seen.size)return;let e=Math.max(100,this.nextPostAt-Date.now(),W.retryAt-Date.now());this.timer=window.setTimeout(()=>{this.flush()},e)}async flush(){if(!this.running||this.controller||!this.queue.size&&!this.seen.size)return;if(this.account!==this.currentAccount()){this.queue.clear(),this.seen.clear();return}if(!this.active()||Date.now()cf;)this.sent.delete(this.sent.values().next().value??"");try{localStorage.setItem(lf,JSON.stringify([...this.sent]))}catch{}this.failures=0}catch{e===this.generation&&(this.failures++,this.nextPostAt=Date.now()+Math.min(6e4,5e3*2**Math.min(this.failures-1,4)))}finally{this.controller===i&&(this.controller=null,this.schedule())}}},zy=new cc,br=zy});var uf={};A(uf,{DISCOVERY_TABS:()=>vr,TITLES:()=>Xs});var Xs,vr,wr=w(()=>{"use strict";Xs={overview:"Market",intelligence:"Discover",search:"Discover",active:"Discover",movers:"Discover",deals:"Discover",indices:"Market",watchlist:"Watchlist",portfolio:"Inventory",analyze:"Trade",help:"How it works",item:"Item overview"},vr=["search","active","deals","movers","intelligence"]});var pf={};A(pf,{element:()=>qo,html:()=>P,markup:()=>Js});function qo(s,e,...t){let o=Object.entries(e).filter(([,r])=>r!==!1&&r!==null).map(([r,i])=>i===!0?` ${r}`:` ${r}="${S(String(i))}"`).join(""),n=t.map(r=>typeof r=="object"?r.html:S(String(r))).join("");return`<${s}${o}>${n}`}var Js,P,Be=w(()=>{"use strict";pe();Js=s=>({html:s});P=(s,...e)=>s.reduce((t,o,n)=>t+String(e[n-1])+o)});var mf={};A(mf,{itemDesk:()=>uc,marketDesk:()=>pc});function uc(s){let e=s.analytics;if(!e)return'

                  Advanced analytics unavailable

                  This server does not yet provide the detailed metrics for this item.

                  ';let{book:t}=e,o=!!t.observedAt&&Date.now()-t.observedAt<=3*36e5,n=a=>e.latest!==null&&a!==null?`${ae(e.latest/a-1)} latest daily mean vs average`:"Needs consecutive daily sale prices",{position:r}=e.range90,i=t.ladder.length?`
                  ${t.ladder.map(a=>``).join("")}
                  Ask ceilingListingsTotal asks / KR
                  ${T(a.price)} KR${a.premium?`Within +${Math.round(a.premium*100)}% of lowest`:"At the lowest ask"}
                  ${a.count}
                  ${T(a.kr)}
                  `:'

                  The next successful book observation will populate the ask ladder.

                  ';return`
                  ADVANCED / TRADING DESK

                  Price, activity & supply

                  Completed daily means through ${S(e.throughDay)} UTC. ${e.observedDays30} of 30 days have observed sale prices.

                  Descriptive analytics
                  Sale-price return / 7D ${ae(e.change7d)}30D ${ae(e.change30d)}Latest daily mean ${Zs(e.latest)}
                  ${ne("Sales-weighted price / 30D",Zs(e.weightedPrice30),e.weightedPrice30===null?"No completed sale-price observations":`${ae(e.estimateVsWeighted)} Kute estimate vs benchmark`)}${ne("Simple moving average / 7D",Zs(e.sma7),n(e.sma7))}${ne("Simple moving average / 30D",Zs(e.sma30),n(e.sma30))}${ne("RSI / 14 periods",en(e.rsi14),e.rsi14===null?`Needs 15 consecutive priced days; ${e.consecutiveDays} available`:"Wilder smoothing of daily sale means; scale 0 to 100")}${ne("Daily volatility / 30D",Yt(e.dailyVolatility30),`${e.returnPairs30} adjacent daily returns; needs 10; not annualized`)}${ne("Max drawdown / 90D",Yt(e.maxDrawdown90),`${e.observedDays90} priced days; gaps can hide larger declines`)}${ne("Range position / 90D",Yt(r),e.range90.low!==null?`${T(e.range90.low)} to ${T(e.range90.high)} KR in daily means`:"Needs at least 5 observed price days")}${ne("Reported turnover / 30D",Zs(e.turnover30d),"Daily mean price multiplied by units sold")}

                  Activity & supply pressure

                  Supply ${hf(e.statsAt)}
                  `+Qs("Weekly sales",e.reportedDays7?`${T(e.sales7d)} units`:"No reports",`${e.priorReportedDays7?T(e.priorSales7d):"No reports"} in the prior week; reports on ${e.reportedDays7}/7 and ${e.priorReportedDays7}/7 days`)+Qs("Relative weekly volume",en(e.activityRatio,"x"),"Latest 7 days / prior 7; requires reports for both full weeks")+Qs("Listed supply / daily sales",en(e.daysListedAtRecentPace," days"),"Reported listings / recent daily sales; a supply ratio, not time to sell")+Qs("Circulating supply listed",Yt(e.listedShare),`${T(e.reportedListed)} reported listed / ${T(e.circulation)} circulating`)+Qs("30D turnover / circulation",Yt(e.turnoverShare),"Reported units sold / current supply; an item can trade more than once")+'

                  Ask-side depth ladder

                  '+hf(t.observedAt)+"
                  "+(o?"":'

                  This book needs a fresh observation. The ladder describes the stored sample.

                  ')+i+`

                  Cumulative counts in ${t.sampled} sampled listings; ${e.reportedListed} reported listed. These rows overlap. ${t.belowEstimate} sampled asks are below the Kute estimate.

                  Largest observed seller${t.sellers} identified sellers; identity available for ${t.knownSellerListings}/${t.sampled} listings
                  ${Yt(t.largestSellerShare)}
                  Read the metrics

                  All technical indicators use completed daily average sale prices, not exchange closing prices or individual transactions. Moving averages require every day in their window. RSI resets at a missing price day; a flat sequence is shown as 50. A high or low RSI describes past momentum and does not establish a buy or sell signal.

                  Volatility is the sample standard deviation of log returns between adjacent observed days. Drawdown is the largest observed peak-to-trough decline. The sales-weighted benchmark weights each daily mean by its reported sale count. Missing days are excluded, never treated as zero-price trades.

                  The ladder contains asking prices only. We have no bid book, so it cannot measure bid/ask spread, execution slippage, or buyer demand. Supply ratios require a supply observation within 24 hours. These metrics do not enable unvalidated forecasts.

                  `}function pc(s){let e=s.diagnostics,t=s.breadth;return!e||!t?"":`
                  ADVANCED / MARKET DIAGNOSTICS

                  How broad is the move?

                  ${t.eligible} eligible items
                  ${ne("Advance / decline ratio",en(e.advanceDeclineRatio,"x"),`${t.rising} rising / ${t.falling} falling; 0.5% movement threshold`)}${ne("Median item return / 7D",ae(e.medianChange),"Equal item weighting among eligible estimates")}${ne("Middle half of returns",`${ae(e.lowerQuartile)} to ${ae(e.upperQuartile)}`,"25th to 75th percentile; dispersion across items")}${ne("Top 10 turnover share",Yt(e.top10VolumeShare),"Concentration of 30D KR turnover in eligible items")}
                  ${(s.categories??[]).map(o=>``).join("")}
                  CategoryEligible7D medianRising / falling30D KR turnoverTurnover share
                  ${S($t[o.type]??"Other")}${o.items}${ae(o.change)}${o.rising??"?"} / ${o.falling??"?"}${T(o.volume)}${Yt(e.eligibleVolume>0?o.volume/e.eligibleVolume:null)}

                  Coverage: ${t.eligible} of ${T(t.total)} tradable items. Requires a sales-based estimate updated within 24 hours, at least 5 sales in 7 days, and a measured 7D trend. Turnover shares describe this eligible set, not the entire market. Price changes use Kute estimates.

                  `}var en,Yt,Zs,hf,Qs,kr=w(()=>{"use strict";pe();We();en=(s,e="")=>s==null?"Unavailable":s.toFixed(1)+e,Yt=s=>s==null?"Unavailable":en(s*100,"%"),Zs=s=>s==null?"Unavailable":`${T(s)} KR`,hf=s=>s?`${Ge(Math.max(0,Date.now()-s))} ago`:"freshness unknown",Qs=(s,e,t)=>`
                  ${s}${t}
                  ${e}
                  `});var gf={};A(gf,{overviewView:()=>hc});async function hc(s){let[e,t]=await Promise.all([W.cached("/market/overview",5*ff),W.cached("/market/indices",60*ff)]);if(!e)return s.unavailable();let o=new Date().toISOString().slice(0,10),n=e.days.filter(f=>f.dayf.name==="kute-100"),l=Se().slice(0,4),c=l.length?await W.values(l.map(f=>f.skin)):{},u=l.length?P` +`,yy=".item-detail-container, .items-detail-root",Vl="kuteDetailBtn",xy=5e3,Yl=class s{constructor(){this.timer=void 0,this.busy=!1,this.pick=null,this.onPick=e=>{if(document.pointerLockElement||!(e.target instanceof Element))return;let t=e.target.closest("[id^='trd_'], .trade-inv-item[data-index]");if(!t)return;let o=/^trd_(?:sel_|inv_)?\d+_(\d+)/.exec(t.id),n=o?o[1]:t.getAttribute("data-index");if(n===null||!/^\d+$/.test(n))return;let r=t.querySelector(".tItemN")?.textContent?.trim()??"";this.pick={skin:Number(n),name:r,at:Date.now()}}}start(){if(this.timer===void 0){if(!document.getElementById(qm)){let e=document.createElement("style");e.id=qm,e.textContent=ky,document.head.append(e)}this.timer=window.setInterval(()=>this.tick(),vy),document.addEventListener("pointerdown",this.onPick,!0)}}stop(){clearInterval(this.timer),this.timer=void 0,document.removeEventListener("pointerdown",this.onPick,!0),this.pick=null;for(let e of document.querySelectorAll(`.${Ke}, .${Vl}`))e.remove();for(let e of document.querySelectorAll(`[${vo}]`))e.removeAttribute(vo)}static thumbPath(e){let t=/\/textures\/previews\/([^?#]+)/.exec(e);return t?t[1]:null}static askOf(e){let t=e.querySelector(".inline-price");if(t){let o=Number((t.textContent??"").replace(/[^\d.]/g,""));return Number.isFinite(o)&&o>0?o:null}for(let o of e.querySelectorAll("span, div")){if(o.classList.contains(Ke)||o.children.length)continue;let n=o.textContent?.trim()??"";if(/^~/.test(n))continue;let r=/^([\d,.]+)\s*KR$/i.exec(n)??/^([\d,.]+)$/.exec(n);if(r&&o.closest(".estimate-badge")===null){let i=Number(r[1].replace(/,/g,""));if(Number.isFinite(i)&&i>0)return i}}return null}async tick(){if(this.busy||document.pointerLockElement)return;let e=document.querySelector(yy),t=e?.getAttribute("aria-label")??"1";e&&e.getAttribute(vo)!==t&&(e.setAttribute(vo,t),e.querySelector(`.${Vl}`)?.remove(),await this.detailButton(e,t));let o=[...document.querySelectorAll(wy)].filter(n=>!n.hasAttribute(vo));if(o.length){this.busy=!0;try{let n=new Map;for(let i of o){i.setAttribute(vo,"1");let a=i.querySelector("img"),l=a instanceof HTMLImageElement?s.thumbPath(a.currentSrc||a.src):null;if(!l)continue;let c=n.get(l)??[];c.push(i),n.set(l,c)}if(!n.size)return;let r=await W.valuesByThumbnails([...n.keys()]);for(let[i,a]of n){let l=r[i];for(let c of a)c.isConnected&&this.draw(c,l??null)}}finally{this.busy=!1}}}async detailValue(e,t){let{pick:o}=this;if(o&&Date.now()-o.atc.name.toLowerCase()===t.toLowerCase())??[];return l.length===1?l[0]:null}async detailButton(e,t){let o=e.querySelector(".full-details-container, .items-detail-header-actions");if(!o)return;let n=document.createElement("button");n.type="button";let r=o.querySelector("button");n.className=`${r?.className??""} ${Vl}`.trim();let i=r?.querySelector("i")?.className??"material-icons";n.innerHTML=`candlestick_chart Kute Market`,n.title="K value, liquidity, price history, depth and owners in Kute Market",o.append(n);let a=await this.detailValue(e,t);if(!a||e.getAttribute(vo)!==t){n.remove();return}let l=n.querySelector("span");l&&(l.textContent=`Kute Market \xB7 K ${Pe(a.fair)} ${a.grade}`),n.addEventListener("click",c=>{c.stopPropagation(),u.market?.open("item",a.skin)})}draw(e,t){if(e.querySelector(`.${Ke}`)?.remove(),!t)return;let o=document.createElement("div"),n=e.querySelector(".estimate-badge");o.className=n?`${n.className} ${Ke}`:`${Ke} kuteFloating`;let r=s.askOf(e),i="";if(r!==null&&t.fair>0){let a=r/t.fair-1,l="";a<=-.1&&t.confidence>=40?l="kuteDeal":a>=.25&&(l="kuteOver");let c=Math.round(Math.abs(a)*100);i=`${a<0?"\u2212":"+"}${c}%`}o.innerHTML=`K ${Pe(t.fair)}${S(t.grade)}${i}`,o.title=`Kute fair value ${Pe(t.fair)} kr, evidence score ${t.confidence}/100, public-market activity grade ${t.grade}`+(t.privateTrading?.trades7d?`, ${t.privateTrading.trades7d} reported private trades this week`:"")+(t.exchange?.status==="applied"?", includes private exchange evidence":"")+(r!==null?`, this ask ${it(r/t.fair-1)} against it`:"")+". Click for the item in Kute Market",o.addEventListener("click",a=>{a.stopPropagation(),a.preventDefault(),u.market?.open("item",t.skin)}),n?n.after(o):e.append(o)}},Sy=new Yl,hr=Sy});var Um,jm=w(()=>{Um='
                  '});var Gm={};A(Gm,{default:()=>mr});var $y,Jl,Cy,mr,Zl=w(()=>{"use strict";xe();Ve();pe();jm();$y=1200,Jl=class s{constructor(){this.timer=void 0,this.lastKey="",this.retryAt=0,this.failures=0,this.generation=0,this.busy=!1,this.expanded=!1,this.dismiss=e=>{let t=this.box?.shadowRoot?.querySelector("details");if(t?.open){if(e instanceof KeyboardEvent){if(e.key!=="Escape")return;e.preventDefault(),e.stopPropagation(),t.querySelector("summary")?.focus()}else if(e.target instanceof Node&&this.box?.contains(e.target))return;t.open=!1,this.expanded=!1}},this.box=null}start(){this.timer===void 0&&(this.timer=window.setInterval(()=>this.tick(),$y),window.addEventListener("pointerdown",this.dismiss,!0),window.addEventListener("keydown",this.dismiss,!0))}stop(){clearInterval(this.timer),this.timer=void 0,this.generation++,window.removeEventListener("pointerdown",this.dismiss,!0),window.removeEventListener("keydown",this.dismiss,!0),this.clear()}clear(){this.box?.remove(),this.box=null,this.lastKey="",this.expanded=!1}static kr(e){let t=/([\d,.]+)/.exec(e.replace(/[~\s]/g,""));return t&&Number(t[1].replace(/,/g,""))||0}static row(e,t){let o=e.parentElement;for(;o&&!o.contains(t);)o=o.parentElement;return o&&o!==document.body?o:null}snapshot(){let e=[...document.querySelectorAll(".trade-window .trade-side")].filter(d=>d.getClientRects().length);if(e.length>=2){let d=s.row(e[0],e[1]);if(!d)return null;let h=f=>[...f.querySelectorAll(".trade-offer-scroll .trade-inv-item")].map(g=>{let b=g.getAttribute("data-index"),v=b!==null&&/^\d+$/.test(b)?Number(b):-1,k=g.querySelector("img")?.getAttribute("src")??"",E={skin:v,count:s.kr(g.querySelector(".trade-item-count")?.textContent??"1")||1};v<0&&(E.path=/\/textures\/previews\/([^?#]+)/.exec(k)?.[1]??"");for(let[L,x]of[["serial","data-serial"],["wear","data-wear-float"],["style","data-style"]]){let $=g.getAttribute(x);$!==null&&$!==""&&Number.isFinite(Number($))&&(E[L]=Number($))}return E}),p=h(e[0]),m=h(e[1]);return{give:p,get:m,giveKr:0,getKr:0,anchor:d,key:JSON.stringify([p,m])}}let t=[document.getElementById("tradeList0"),document.getElementById("tradeList1")];if(!t[0]?.getClientRects().length||!t[1]?.getClientRects().length)return null;let o=s.row(t[0],t[1]);if(!o)return null;let n=d=>[...d.querySelectorAll("[id^='trd_']")].flatMap(h=>{let p=/^trd_(?:sel_)?\d+_(\d+)(?:_\d+)?$/.exec(h.id);return p?[{skin:Number(p[1]),count:s.kr(h.querySelector(".tItemCnt")?.textContent??"1")||1}]:[]}),r=d=>Math.max(0,s.kr(document.getElementById(`currency_item_${d}_1`)?.querySelector(".tCurrencyAmount")?.textContent??"0")),i=n(t[0]),a=n(t[1]),l=r(0),c=r(1);return{give:i,get:a,giveKr:l,getKr:c,anchor:o,key:JSON.stringify([i,a,l,c])}}current(e,t){if(this.timer===void 0||t!==this.generation||document.pointerLockElement||document.hidden)return!1;let o=this.snapshot();return o?.anchor===e.anchor&&o.key===e.key}async tick(){if(this.busy||this.timer===void 0||document.pointerLockElement||document.hidden)return;this.busy=!0;let{generation:e}=this;try{let t=this.snapshot();if(!t){this.clear();return}if(Date.now()p.skin<0&&p.path).map(p=>p.path),r=n.length?await W.valuesByThumbnails(n):{};if(!this.current(t,e))return;let i=p=>p.map(({path:m,...f})=>({...f,skin:f.skin<0?r[m??""]?.skin??-1:f.skin})),a=i(t.give),l=i(t.get);if([...a,...l].some(p=>p.skin<0)){this.render(t,null,"An item could not be identified. A complete comparison is unavailable.");return}let c=await W.analyzeStatus({give:a,get:l,giveKr:t.giveKr,getKr:t.getKr}),d=c.data;if(d?(this.failures=0,this.retryAt=0):(this.failures++,this.retryAt=c.status===429?c.retryAt??Date.now()+6e4:Date.now()+Math.min(6e4,5e3*2**(this.failures-1)),this.lastKey=""),!this.current(t,e))return;let h=c.status===429?`Request limit reached. Estimates resume after ${new Date(this.retryAt).toLocaleTimeString()}.`:"Estimates unavailable. Retrying with a longer delay.";this.render(t,d,h)}finally{this.busy=!1}}render(e,t,o){this.box||(this.box=document.createElement("div"),this.box.className="kuteTradeBox",this.box.style.cssText="all:initial;display:block;box-sizing:border-box;width:100%;min-width:0;margin:0 0 10px;",this.box.attachShadow({mode:"open"}).innerHTML=Um);let n=this.box.shadowRoot?.querySelector(".panel");if(!n)return;n.className=`panel${e.give.length||e.get.length||e.giveKr||e.getKr?" filled":""}`,this.expanded=n.querySelector("details")?.open??this.expanded;let r='
                  Kute trade insight';if(!t)r+=`

                  ${S(o)}

                  `;else{let i=!e.give.length&&!e.giveKr||!e.get.length&&!e.getKr,a=[...t.give.items,...t.get.items].some(f=>f.unknown),l=Us(t.verdict),c=i?"Add items on both sides to compare":jt[l].detail,d=jt[l].label;a&&(d="Incomplete comparison"),i&&(d="Add both sides"),r+=`${c}`;let h=(f,g)=>{let b=f.items.reduce((k,E)=>k+E.count,0),v=f.items.some(k=>k.unknown);return`
                  ${g}${Pe(f.value)}${v?"+":""} KR${b} ${b===1?"item":"items"}${f.kr?` + ${Pe(f.kr)} KR`:""} · ${v?"Partial estimate":"Estimated value"}
                  `},p=i||a?'–Incomplete comparison':`${t.difference>0?"+":""}${Pe(t.difference)} KR${S(it(t.differenceShare))} of the larger side`;r+=`
                  ${h(t.give,"You give")}
                  ${d}${p}
                  ${h(t.get,"You receive")}
                  `;let m=(f,g)=>`

                  ${g}

                  ${f.items.map(b=>`
                  ${b.count>1?`${b.count} × `:""}${S(b.name)}${b.serial!==void 0?` #${S(b.serial)}`:""}${b.wear!==void 0?` · wear ${b.wear.toFixed(4)}`:""}${b.unknown?"":`${S(b.grade)}`}${b.unknown?"Unvalued":`${Pe(b.lineValue)} KR`}
                  `).join("")}${f.kr?`
                  Added KR${Pe(f.kr)} KR
                  `:""}${!f.items.length&&!f.kr?'No items added':""}
                  `;r+=`Item breakdown & evidenceHide item breakdown & evidence
                  ${m(t.give,"You give")}${m(t.get,"You receive")}
                  • Estimates describe market data, not guaranteed sale prices. Activity grades do not guarantee a selling time.
                  • ${t.drivers.filter(f=>!f.startsWith("Liquidity adjustments")).map(f=>`
                  • ${S(f)}
                  • `).join("")}
                  `}n.innerHTML=r,this.box.nextElementSibling!==e.anchor&&e.anchor.before(this.box)}},Cy=new Jl,mr=Cy});var Vm={};A(Vm,{readWatchlist:()=>Se,saveWatchlist:()=>wo,toggleWatch:()=>Ql});function Se(){try{let s=JSON.parse(localStorage.getItem(Wm)??"[]");if(!Array.isArray(s))return[];let e=new Set;return s.filter(t=>!t||!Number.isInteger(t.skin)||t.skin<0||e.has(t.skin)||typeof t.name!="string"?!1:(e.add(t.skin),!0)).slice(0,100).map(t=>({skin:t.skin,name:t.name,rarity:Number.isInteger(t.rarity)?t.rarity:void 0,thumbnail:typeof t.thumbnail=="string"?t.thumbnail:null,target:Number.isFinite(t.target)&&t.target>0?t.target:null}))}catch{return[]}}function wo(s){try{return localStorage.setItem(Wm,JSON.stringify(s.slice(0,100))),window.dispatchEvent(new Event("kute-market-watch-changed")),!0}catch{return!1}}function Ql(s){let e=Se(),t=e.some(o=>o.skin===s.skin);return!t&&e.length>=100?!1:wo(t?e.filter(o=>o.skin!==s.skin):[...e,{skin:s.skin,name:s.name,rarity:s.rarity,thumbnail:s.thumbnail??null,target:null}])}var Wm,Ut=w(()=>{"use strict";Wm="kute_market_watch"});var Zm={};A(Zm,{UNREAD_EVENT:()=>Ws,default:()=>$t});var My,Ty,Ym,Xm,Jm,Ws,Ay,ec,Ly,$t,fr=w(()=>{"use strict";D();It();xe();Ut();Ve();My=5*6e4,Ty=3*36e5,Ym="kute_market_alerts",Xm="kute_market_watch_report",Jm="kute_market_alerts_unread",Ws="kute-market-alerts-unread",Ay=2*36e5,ec=class{constructor(){this.timer=0,this.busy=!1,this.seen=new Map;try{let e=JSON.parse(localStorage.getItem(Ym)??"[]");if(Array.isArray(e))for(let[t,o]of e.slice(0,100))Number.isInteger(t)&&Number.isFinite(o?.target)&&typeof o?.reached=="boolean"&&this.seen.set(t,o)}catch{this.seen.clear()}this.unread=new Set;try{let e=JSON.parse(localStorage.getItem(Jm)??"[]");if(Array.isArray(e))for(let t of e.slice(0,100))Number.isInteger(t)&&this.unread.add(t)}catch{this.unread.clear()}this.onChange=()=>{this.check(),this.report()}}start(){this.timer||(this.timer=window.setInterval(()=>{this.check()},My),window.addEventListener("kute-market-watch-changed",this.onChange),this.check(),this.report())}async report(){if(!this.active())return;let e=Se().map(n=>n.skin).sort((n,r)=>n-r),t=e.join(","),o={};try{o=JSON.parse(localStorage.getItem(Xm)??"{}")??{}}catch{}if(!(o.key===t&&Date.now()-(o.at??0)o.target!==null);for(let o of this.seen.keys())e.some(n=>n.skin===o)||this.seen.delete(o);this.save();let t=this.unread.size;for(let o of this.unread)e.some(n=>n.skin===o)||this.unread.delete(o);if(this.unread.size!==t&&this.saveUnread(),!!e.length){this.busy=!0;try{let o=await W.values(e.map(i=>i.skin));if(!this.active())return;let n=Se(),r=[];for(let i of e){if(i.target===null||!n.some(d=>d.skin===i.skin&&d.target===i.target))continue;let a=o[i.skin];if(!a||!a.bookAt||!a.valuedAt||Date.now()-Math.min(a.bookAt,a.valuedAt)>Ty||a.lowest===null)continue;let l=a.lowest<=i.target,c=this.seen.get(i.skin);l&&(!c?.reached||c.target!==i.target)&&(r.push({name:i.name,price:a.lowest}),this.unread.add(i.skin)),this.seen.set(i.skin,{target:i.target,reached:l})}if(r.length){this.saveUnread();let i=r[0],a=r.length>1?` and ${r.length-1} more`:"";u.showNotification(`Watchlist: ${i.name} at ${Pe(i.price)} KR${a}. Observed ask reached your target.`,!1,8)}this.save()}catch{}finally{this.busy=!1}}}},Ly=new ec,$t=Ly});var ef={};A(ef,{contributedItem:()=>tc,contributedSale:()=>sc,contributedTrade:()=>oc});function Vs(s){let e=s;if(typeof e=="string")try{e=JSON.parse(e)}catch{return null}return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function tc(s){let e=typeof s=="number"?{ind:s}:Vs(s);if(!e)return null;let t=e.ind??e.skinindex??e.skin_index??e.i??e.index,o=e.count??e.cnt??e.c??1;if(!ht(t)||!ht(o,1)||o>1e4)return null;let n=Vs(e.m??e.metadata??e.meta)??{},r={skin:t,count:o};for(let i of["serial","wear","style","paint","instance"]){let a=e[i]??n[i];if(a!=null){if(i==="wear"?typeof a!="number"||!Number.isFinite(a)||a<0||a>1:!ht(a))return null;r[i]=a}}return r}function Qm(s){if(typeof s=="number")return ht(s)?[{id:1,amount:s}]:null;if(!Array.isArray(s)||s.length>64)return null;let e=new Map;for(let t of s){let o=Vs(t);if(!o||!ht(o.cid,1)||typeof o.amt!="number"||!Number.isFinite(o.amt)||o.amt<0||o.amt>1e9||o.cid===1&&!ht(o.amt))return null;let n=(e.get(o.cid)??0)+o.amt;if(!Number.isFinite(n)||n>1e9)return null;e.set(o.cid,n)}return[...e].filter(([,t])=>t>0).map(([t,o])=>({id:t,amount:o}))}function oc(s,e){let t=Vs(s);if(!t||!ht(t.trid,1,Number.MAX_SAFE_INTEGER)||t.status&&t.status!=="completed")return null;let o=Date.parse(t.dte??t.date??"");if(!Number.isFinite(o)||oe||!Array.isArray(t.sksell)||!Array.isArray(t.skbuy)||t.sksell.length+t.skbuy.length>40)return null;let n=t.sksell.map(tc),r=t.skbuy.map(tc);if([...n,...r].some(l=>!l)||!n.length&&!r.length)return null;let i=Qm(t.csell??[]),a=Qm(t.cbuy??[]);return!i||!a?null:{trid:t.trid,at:o,context:"history",give:n,get:r,giveCurrencies:i,getCurrencies:a,giveKr:i.find(l=>l.id===1)?.amount??0,getKr:a.find(l=>l.id===1)?.amount??0}}function sc(s,e){let t=Vs(s);if(!t||t.status!=="completed"||!ht(t.marketid,1,Number.MAX_SAFE_INTEGER)||!ht(t.skinindex)||!ht(t.amount,1))return null;let o=Date.parse(t.date);return!Number.isFinite(o)||oe||!["buy","sell"].includes(t.type)?null:{marketid:t.marketid,type:t.type,skinindex:t.skinindex,amount:t.amount,date:new Date(o).toISOString()}}var ht,nc=w(()=>{"use strict";ht=(s,e=0,t=1e9)=>typeof s=="number"&&Number.isSafeInteger(s)&&s>=e&&s<=t});var nf={};A(nf,{default:()=>gr});function tf(s){let e=2166136261,t=84696351;for(let o=0;o>>0,t=Math.imul(t^s.charCodeAt(o),16777619)>>>0;return e.toString(36)+t.toString(36)}function Ry(){try{let s=JSON.parse(localStorage.getItem(of)??"[]");return new Set(Array.isArray(s)?s.filter(e=>typeof e=="string").slice(-sf):[])}catch{return new Set}}var of,sf,rc,Py,gr,ic=w(()=>{"use strict";D();It();xe();nc();of="kute_market_sent",sf=2e3;rc=class{constructor(){this.running=!1,this.generation=0,this.nextPostAt=0,this.failures=0,this.account="",this.queue=new Map,this.sent=Ry(),this.timer=void 0,this.controller=null,this.listings=new Map,this.openTrades=new Map,this.seen=new Set,this.listener=e=>this.receive(e)}start(){this.running||!u.hostFeatures?.includes("history-capture")||(this.running=!0,this.generation++,window.chrome.webview.addEventListener("message",this.listener))}stop(){this.running&&window.chrome.webview.removeEventListener("message",this.listener),this.running=!1,this.generation++,clearTimeout(this.timer),this.controller?.abort(),this.controller=null,this.queue.clear(),this.forgetCaptured()}useAccount(e){this.account!==e&&(this.queue.clear(),this.forgetCaptured(),this.account=e)}forgetCaptured(){this.listings.clear(),this.openTrades.clear(),this.seen.clear()}active(){return this.running&&!document.hidden&&!document.pointerLockElement&&!he.down&&!he.offline()&&W.loggedIn()}currentAccount(){try{return localStorage.getItem("krunker_username")??""}catch{return""}}current(e,t){return this.active()&&e===this.generation&&t===this.currentAccount()}receive(e){let t=null;try{t=typeof e.data=="string"?JSON.parse(e.data):e.data}catch{return}if(u.hostFeatures?.includes("market-capture")){t?.marketCapture&&this.captured(t.marketCapture);return}let o=t?.marketHistory;!o||o.kind!=="sales"&&o.kind!=="trades"||this.capture(o.data,o.kind)}captured(e){if(typeof e.path!="string"||e.data?.error)return;let t=e.path.split(/[?#]/)[0],o=e.data?.data;if(e.method==="GET"){if(t==="/market/history")this.capture(e.data,"sales");else if(t==="/trades/history"){if(Array.isArray(o?.open)){this.openTrades.clear();for(let i of o.open.slice(0,100))Number.isSafeInteger(i?.trid)&&this.openTrades.set(i.trid,i)}this.capture(e.data,"trades")}else t==="/market/listings"&&Array.isArray(o?.listings)&&this.listed(o.listings);return}if(e.method!=="POST")return;if(t==="/market/purchase"){let i=this.listings.get(o?.mid);if(i&&i.skin===o?.skn){let a={marketid:o.mid,type:"buy",date:new Date().toISOString(),skinindex:o.skn,amount:i.price,status:"completed"};this.capture({history:[a]},"sales")}return}let n=/^\/trades\/(\d+)\/accept$/.exec(t),r=n&&this.openTrades.get(Number(n[1]));r&&this.capture({completed:[r]},"trades")}listed(e){if(this.active()){this.useAccount(this.currentAccount());for(let t of e.slice(0,200))!Number.isSafeInteger(t?.marketid)||!Number.isSafeInteger(t?.skinindex)||!Number.isSafeInteger(t?.funds)||(this.listings.delete(t.marketid),this.listings.set(t.marketid,{skin:t.skinindex,price:t.funds}),this.seen.size<200&&this.seen.add(t.skinindex));for(;this.listings.size>3e3;)this.listings.delete(this.listings.keys().next().value??0);this.schedule()}}capture(e,t){if(!this.active()||e?.error)return;let o=this.currentAccount(),n=e?.data??e,r=t==="trades"?n?.completed:n?.history;if(!Array.isArray(r))return;this.useAccount(o);let i=Date.now();for(let a of r.slice(0,500)){let l=t==="trades"?oc(a,i):sc(a,i);if(!l)continue;let c=t+JSON.stringify(l);this.sent.has(tf(`${o} +${c}`))||this.queue.set(c,{kind:t,row:l})}for(;this.queue.size>300;)this.queue.delete(this.queue.keys().next().value??"");this.schedule()}schedule(){if(clearTimeout(this.timer),!this.running||!this.queue.size&&!this.seen.size)return;let e=Math.max(100,this.nextPostAt-Date.now(),W.retryAt-Date.now());this.timer=window.setTimeout(()=>{this.flush()},e)}async flush(){if(!this.running||this.controller||!this.queue.size&&!this.seen.size)return;if(this.account!==this.currentAccount()){this.queue.clear(),this.seen.clear();return}if(!this.active()||Date.now()sf;)this.sent.delete(this.sent.values().next().value??"");try{localStorage.setItem(of,JSON.stringify([...this.sent]))}catch{}this.failures=0}catch{e===this.generation&&(this.failures++,this.nextPostAt=Date.now()+Math.min(6e4,5e3*2**Math.min(this.failures-1,4)))}finally{this.controller===i&&(this.controller=null,this.schedule())}}},Py=new rc,gr=Py});var rf={};A(rf,{DISCOVERY_TABS:()=>br,TITLES:()=>Ys});var Ys,br,vr=w(()=>{"use strict";Ys={overview:"Market",intelligence:"Discover",search:"Discover",active:"Discover",movers:"Discover",deals:"Discover",indices:"Market",watchlist:"Watchlist",portfolio:"Inventory",analyze:"Trade",help:"How it works",item:"Item overview"},br=["search","active","deals","movers","intelligence"]});var af={};A(af,{element:()=>Fo,html:()=>P,markup:()=>Xs});function Fo(s,e,...t){let o=Object.entries(e).filter(([,r])=>r!==!1&&r!==null).map(([r,i])=>i===!0?` ${r}`:` ${r}="${S(String(i))}"`).join(""),n=t.map(r=>typeof r=="object"?r.html:S(String(r))).join("");return`<${s}${o}>${n}`}var Xs,P,_e=w(()=>{"use strict";pe();Xs=s=>({html:s});P=(s,...e)=>s.reduce((t,o,n)=>t+String(e[n-1])+o)});var cf={};A(cf,{itemDesk:()=>ac,marketDesk:()=>lc});function ac(s){let e=s.analytics;if(!e)return'

                  Advanced analytics unavailable

                  This server does not yet provide the detailed metrics for this item.

                  ';let{book:t}=e,o=!!t.observedAt&&Date.now()-t.observedAt<=3*36e5,n=a=>e.latest!==null&&a!==null?`${ae(e.latest/a-1)} latest daily mean vs average`:"Needs consecutive daily sale prices",{position:r}=e.range90,i=t.ladder.length?`
                  ${t.ladder.map(a=>``).join("")}
                  Ask ceilingListingsTotal asks / KR
                  ${T(a.price)} KR${a.premium?`Within +${Math.round(a.premium*100)}% of lowest`:"At the lowest ask"}
                  ${a.count}
                  ${T(a.kr)}
                  `:'

                  The next successful book observation will populate the ask ladder.

                  ';return`
                  ADVANCED / TRADING DESK

                  Price, activity & supply

                  Completed daily means through ${S(e.throughDay)} UTC. ${e.observedDays30} of 30 days have observed sale prices.

                  Descriptive analytics
                  Sale-price return / 7D ${ae(e.change7d)}30D ${ae(e.change30d)}Latest daily mean ${Js(e.latest)}
                  ${ne("Sales-weighted price / 30D",Js(e.weightedPrice30),e.weightedPrice30===null?"No completed sale-price observations":`${ae(e.estimateVsWeighted)} Kute estimate vs benchmark`)}${ne("Simple moving average / 7D",Js(e.sma7),n(e.sma7))}${ne("Simple moving average / 30D",Js(e.sma30),n(e.sma30))}${ne("RSI / 14 periods",Qs(e.rsi14),e.rsi14===null?`Needs 15 consecutive priced days; ${e.consecutiveDays} available`:"Wilder smoothing of daily sale means; scale 0 to 100")}${ne("Daily volatility / 30D",Gt(e.dailyVolatility30),`${e.returnPairs30} adjacent daily returns; needs 10; not annualized`)}${ne("Max drawdown / 90D",Gt(e.maxDrawdown90),`${e.observedDays90} priced days; gaps can hide larger declines`)}${ne("Range position / 90D",Gt(r),e.range90.low!==null?`${T(e.range90.low)} to ${T(e.range90.high)} KR in daily means`:"Needs at least 5 observed price days")}${ne("Reported turnover / 30D",Js(e.turnover30d),"Daily mean price multiplied by units sold")}

                  Activity & supply pressure

                  Supply ${lf(e.statsAt)}
                  `+Zs("Weekly sales",e.reportedDays7?`${T(e.sales7d)} units`:"No reports",`${e.priorReportedDays7?T(e.priorSales7d):"No reports"} in the prior week; reports on ${e.reportedDays7}/7 and ${e.priorReportedDays7}/7 days`)+Zs("Relative weekly volume",Qs(e.activityRatio,"x"),"Latest 7 days / prior 7; requires reports for both full weeks")+Zs("Listed supply / daily sales",Qs(e.daysListedAtRecentPace," days"),"Reported listings / recent daily sales; a supply ratio, not time to sell")+Zs("Circulating supply listed",Gt(e.listedShare),`${T(e.reportedListed)} reported listed / ${T(e.circulation)} circulating`)+Zs("30D turnover / circulation",Gt(e.turnoverShare),"Reported units sold / current supply; an item can trade more than once")+'

                  Ask-side depth ladder

                  '+lf(t.observedAt)+"
                  "+(o?"":'

                  This book needs a fresh observation. The ladder describes the stored sample.

                  ')+i+`

                  Cumulative counts in ${t.sampled} sampled listings; ${e.reportedListed} reported listed. These rows overlap. ${t.belowEstimate} sampled asks are below the Kute estimate.

                  Largest observed seller${t.sellers} identified sellers; identity available for ${t.knownSellerListings}/${t.sampled} listings
                  ${Gt(t.largestSellerShare)}
                  Read the metrics

                  All technical indicators use completed daily average sale prices, not exchange closing prices or individual transactions. Moving averages require every day in their window. RSI resets at a missing price day; a flat sequence is shown as 50. A high or low RSI describes past momentum and does not establish a buy or sell signal.

                  Volatility is the sample standard deviation of log returns between adjacent observed days. Drawdown is the largest observed peak-to-trough decline. The sales-weighted benchmark weights each daily mean by its reported sale count. Missing days are excluded, never treated as zero-price trades.

                  The ladder contains asking prices only. We have no bid book, so it cannot measure bid/ask spread, execution slippage, or buyer demand. Supply ratios require a supply observation within 24 hours. These metrics do not enable unvalidated forecasts.

                  `}function lc(s){let e=s.diagnostics,t=s.breadth;return!e||!t?"":`
                  ADVANCED / MARKET DIAGNOSTICS

                  How broad is the move?

                  ${t.eligible} eligible items
                  ${ne("Advance / decline ratio",Qs(e.advanceDeclineRatio,"x"),`${t.rising} rising / ${t.falling} falling; 0.5% movement threshold`)}${ne("Median item return / 7D",ae(e.medianChange),"Equal item weighting among eligible estimates")}${ne("Middle half of returns",`${ae(e.lowerQuartile)} to ${ae(e.upperQuartile)}`,"25th to 75th percentile; dispersion across items")}${ne("Top 10 turnover share",Gt(e.top10VolumeShare),"Concentration of 30D KR turnover in eligible items")}
                  ${(s.categories??[]).map(o=>``).join("")}
                  CategoryEligible7D medianRising / falling30D KR turnoverTurnover share
                  ${S(Et[o.type]??"Other")}${o.items}${ae(o.change)}${o.rising??"?"} / ${o.falling??"?"}${T(o.volume)}${Gt(e.eligibleVolume>0?o.volume/e.eligibleVolume:null)}

                  Coverage: ${t.eligible} of ${T(t.total)} tradable items. Requires a sales-based estimate updated within 24 hours, at least 5 sales in 7 days, and a measured 7D trend. Turnover shares describe this eligible set, not the entire market. Price changes use Kute estimates.

                  `}var Qs,Gt,Js,lf,Zs,wr=w(()=>{"use strict";pe();Ve();Qs=(s,e="")=>s==null?"Unavailable":s.toFixed(1)+e,Gt=s=>s==null?"Unavailable":Qs(s*100,"%"),Js=s=>s==null?"Unavailable":`${T(s)} KR`,lf=s=>s?`${We(Math.max(0,Date.now()-s))} ago`:"freshness unknown",Zs=(s,e,t)=>`
                  ${s}${t}
                  ${e}
                  `});var uf={};A(uf,{overviewView:()=>cc});async function cc(s){let[e,t]=await Promise.all([W.cached("/market/overview",5*df),W.cached("/market/indices",60*df)]);if(!e)return s.unavailable();let o=new Date().toISOString().slice(0,10),n=e.days.filter(m=>m.daym.name==="kute-100"),l=Se().slice(0,4),c=l.length?await W.values(l.map(m=>m.skin)):{},d=l.length?P`
                  ${l.map(m=>{let f=c[m.skin];return P` `).join("")}
                  @@ -323,11 +322,11 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del ${s.compactList(e.active??[])}