function keydown(e) {
let hideKey = Settings.data.hide || { ctrl: true, key: "e" };
let closeKey = Settings.data.close || { ctrl: true, key: "x" };
if (((hideKey.ctrl && e.ctrlKey) || (!hideKey.ctrl && !e.ctrlKey)) && ((hideKey.shift && e.shiftKey) || (!hideKey.shift && !e.shiftKey)) && ((hideKey.alt && e.altKey) || (!hideKey.alt && !e.altKey)) && e.key.toLowerCase() == hideKey.key) {
e.preventDefault();
guiWrapper.style.display = guiWrapper.style.display === "block" ? "none" : "block";
} else if (((closeKey.ctrl && e.ctrlKey) || (!closeKey.ctrl && !e.ctrlKey)) && ((closeKey.shift && e.shiftKey) || (!closeKey.shift && !e.shiftKey)) && ((closeKey.alt && e.altKey) || (!closeKey.alt && !e.altKey)) && e.key.toLowerCase() == closeKey.key) {
e.preventDefault();
close();
}
}
function createKeybindListener(onpress, element = window) {
return new Promise(resolve => {
const pressed = {};
let shift, ctrl, alt, key;
const keydown = e => {
e.preventDefault();
pressed[e.code] = true;
shift ||= e.shiftKey;
ctrl ||= e.ctrlKey;
alt ||= e.altKey;
if (!["shift", "control", "alt", "meta"].includes(e.key.toLowerCase())) key = e.key.toLowerCase();
onpress?.({ shift, ctrl, alt, key });
};
const keyup = e => {
delete pressed[e.code];
if (Object.keys(pressed).length > 0) return;
element.removeEventListener("keydown", keydown);
element.removeEventListener("keyup", keyup);
resolve({ shift, ctrl, alt, key });
};
element.addEventListener("keydown", keydown);
element.addEventListener("keyup", keyup);
});
}
});
let img = new Image;
img.src = "https://raw.githubusercontent.com/05Konz/Blooket-Cheats/main/autoupdate/timestamps/gui.png?" + Date.now();
img.crossOrigin = "Anonymous";
img.onload = function() {
const c = document.createElement("canvas");
const ctx = c.getContext("2d");
ctx.drawImage(img, 0, 0, this.width, this.height);
let { data } = ctx.getImageData(0, 0, this.width, this.height), decode = "", last;
for (let i = 0; i < data.length; i += 4) {
let char = String.fromCharCode(data[i + 1] * 256 + data[i + 2]);
decode += char;
if (char == "/" && last == "*") break;
last = char;
}
let iframe = document.querySelector("iframe");
let _, time = 1710881112502, error = "There was an error checking for script updates. Run cheat anyway?";
try {
[_, time, error] = decode.match(/LastUpdated: (.+?); ErrorMessage: "((.|\n)+?)"/);
} catch (e) {}
if (parseInt(time) <= 1710881112502 || iframe.contentWindow.confirm(error)) cheat();
}
img.onerror = img.onabort = () => {
img.onerror = img.onabort = null;
cheat();
let iframe = document.querySelector("iframe");
iframe.contentWindow.alert("It seems the GitHub is either blocked or down.\n\nIf it's NOT blocked, join the Discord server for updates\nhttps://discord.gg/jHjGrrdXP6")
}
})();