best...
// ==UserScript==
// @name ! God Laffer
// @author God
// @description best...
// @version v8.6
// @match *://*.moomoo.io/*
// @grant none
// @namespace https://greasyfork.org/users/1624422
// ==/UserScript==
var t = document.createElement('button');
t.setAttribute('class', 'menuButton');
var e = document.createElement('span');
e.innerText = "Cyan skin", e.style.color = '#fff', t.appendChild(e), document.getElementById('setupCard').appendChild(document.createElement('br')),
document.getElementById('setupCard').appendChild(t), t.style.backgroundColor = '#333',
t.style.border = '#333', t.addEventListener('click', function() {
window.selectSkinColor('constructor');
});
let n = !1;
function i() {
const t = (new Date).getHours();
return t < 12 ? "Welcome !" : t < 18 ? "Wsp God" : "Go to sleep God";
}
window.addEventListener("load", () => {
const t = document.querySelector("#altcha_checkbox");
null !== t && t.click();
const e = document.querySelector("#bottomContainer");
null !== e && (e.style.bottom = "10px");
}), function() {
if (!n) {
n = !0;
const t = Object.assign(document.createElement("div"), {
innerHTML: `${i()}`,
style: "\n position: fixed;\n top: -100px;\n left: 50%;\n transform: translateX(-50%);\n font-size: 2rem;\n color: white;\n z-index: 9999;\n opacity: 3;\n transition: top 0.5s ease-in-out, opacity 0.5s ease-in-out;\n padding: 10px;\n background-color: rgba(0, 0, 0, 0.2);\n border: 2px solid #0000;\n border-radius: 5px;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n "
});
document.body.appendChild(t), setTimeout(function() {
t.style.top = "7%", t.style.opacity = "1";
}, 100), setTimeout(function() {
t.style.top = "-100px", t.style.opacity = "0", setTimeout(function() {
t && t.remove(), n = !1;
}, 500);
}, 3e3);
}
}();
let r = !1;
let s = !1;
let c = !1;
let l = 0;
let u = !1;
let f = 0;
let d = 0;
let h = !1;
let m = null;
let p = 0;
let v;
let g = !1;
let b;
let k = null;
let y = 0;
new Set;
let w = new Map;
let _ = {
tick: -1,
withSpikes: null,
withoutSpikes: null
};
let x;
let M = [];
let j;
let S = 0;
let A = !1;
let T = 0;
let D = 0;
hitturret1 = !1, hitturret2 = !1, hitPrim = !1;
let P = !1;
let B;
let I = 83;
let O;
let H = 0;
let E = 0;
let C = !1;
let z = !1;
let R = !1;
let U = !1;
let F = !1;
let L = !1;
let N = !1;
let q = !1;
let G = !1;
let W = !1;
let K = [];
let Y = !1;
let X = !1;
let V = !1;
let J = !1;
let Z = {
stealAnim: !0,
gamezoom: 100,
x18ksync: !0,
renderGrid: !0,
TrapKnockback: !0,
getSpikeMidpointTarget: !0,
evadeKnockback: !0,
chatlog: !1,
preplacer: !0,
autoPlace: !0,
autoplace_activation_distance: 300,
combat_acc_dist: 400,
preplacer_activation_distance: 300,
preplacer_mode: 'Predictive',
preplacer_debug: !1,
FirstAutoPlacePriority: !0,
SecondAutoPlacePriority: !0,
ThirdAutoPlacePriority: !0,
FourthAutoPlacePriority: !0,
FirstPrePlacePriority: !0,
SecondPrePlacePriority: !0,
ThirdPrePlacePriority: !0,
FourthPrePlacePriority: !0,
autoplacer_debug: !1,
autostop_before_collision: !1,
autostop_distance: 200,
autostop_buffer: 150,
visual_spike_overlay: !0,
visual_veltick_radius: !0,
myplayer_stats: !1,
label_place_enabled: !0,
label_place_color: "#ffd54d",
label_autoplace_enabled: !0,
label_autoplace_color: "#ffd54d",
label_preplace_enabled: !0,
label_preplace_color: "#4fc3ff",
label_replace_enabled: !0,
label_replace_color: "#ff8a80",
label_autostop_enabled: !0,
label_autostop_color: "#ff5252",
label_size: 15,
label_speed: .11,
label_life: 300,
killchat: !1,
killchat_message: "ez",
autobuy: !0,
autoVelocityTick: !1,
unifiedSpikeTick: !0,
unifiedSpikeTick_breakTrap: !0,
unifiedSpikeTick_placeSpike: !0,
unifiedSpikeTick_retrapBreak: !0,
unifiedSpikeTick_cooldown: 300,
unifiedSpikeTick_adaptiveTiming: !0,
autoInstaCounter: !0,
smartDodge: !0,
autoBullOnDamage: !0,
predictiveKnockback: !0,
smartTrapPriority: !0,
deathMarker: !0,
bannedAngles: !0,
filteredCache: !0,
spikeAvoidance: !0,
spikeAvoidance_dist: 70,
smartAutoBull: !0
};
Z.console_log_speed = !1, Z.label_tickbreak_enabled = !0, Z.label_tickbreak_color = "#ff4444",
void 0 === Z.chatPinned && (Z.chatPinned = !1), void 0 === Z.chatLeft && (Z.chatLeft = null),
void 0 === Z.chatTop && (Z.chatTop = null);
let Q = 0;
let tt;
let et = 0;
let nt = !1;
function it(t) {
return `<input type="checkbox" class="menu_checkbox" id="${t}" ${Z[t] ? "checked" : ""}>`;
}
function rt(t, e) {
return `<input type="text" class="menu_input" placeholder="NONE" id="${t}" value="${Z[t]}" maxlength="${e}">`;
}
function at(t) {
return `<input type="color" class="menu_color" id="${t}" value="${Z[t] || '#ffffff'}">`;
}
function ot(t, e, n) {
let i = `<select id="${t}" class="menu_select">`;
for (let t = 0; t < e.length; t++) {
let r = e[t];
let a = n && n == r ? ' selected' : '';
let o;
o = 'number' == typeof r ? 'x' + r : 'string' == typeof r ? r.charAt(0).toUpperCase() + r.slice(1) : String(r),
i += `<option value="${r}"${a}>${o}</option>`;
}
return i += "</select>", i;
}
function st() {
for (let n in Z) {
const i = document.getElementById(n);
if (i) {
'checkbox' === i.type ? Z[n] = i.checked : Z[n] = "" !== i.value ? parseFloat(i.value) || i.value : Z[n];
try {
if ('string' == typeof n) {
if (0 === n.indexOf('preplacer_')) if ('preplacer_debug' === n) Z[n]; else {
var t = document.getElementById('preplacer_debug');
t && 'checkbox' === t.type ? t.checked : Z.preplacer_debug;
}
if (0 === n.indexOf('autoplacer_') || 'autoplacer_debug' === n) if ('autoplacer_debug' === n) {
if (Z[n]) try {
[ 'spiketrick_distance', 'spiketrick_linelength', 'spiketrick_areascale', 'trap_detection_range', 'player_enemy_maxdist', 'spike_min_distance', 'max_spike_count', 'anglesvalue' ].forEach(t => {});
} catch (t) {}
} else {
var e = document.getElementById('autoplacer_debug');
e && 'checkbox' === e.type ? e.checked : Z.autoplacer_debug;
}
}
} catch (t) {}
}
}
localStorage.setItem('modSettings', JSON.stringify(Z));
try {
r = !!Z.autoVelocityTick;
} catch (t) {}
gt();
}
!function(t) {
var e = {};
function n(i) {
if (e[i]) return e[i].exports;
var r = e[i] = {
i: i,
l: !1,
exports: {}
};
return t[i].call(r.exports, r, r.exports, n), r.l = !0, r.exports;
}
n.m = t, n.c = e, n.d = function(t, e, i) {
n.o(t, e) || Object.defineProperty(t, e, {
enumerable: !0,
get: i
});
}, n.r = function(t) {
'undefined' != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {
value: 'Module'
}), Object.defineProperty(t, '__esModule', {
value: !0
});
}, n.t = function(t, e) {
if (1 & e && (t = n(t)), 8 & e) return t;
if (4 & e && 'object' == typeof t && t && t.__esModule) return t;
var i = Object.create(null);
if (n.r(i), Object.defineProperty(i, 'default', {
enumerable: !0,
value: t
}), 2 & e && 'string' != typeof t) for (var r in t) n.d(i, r, function(e) {
return t[e];
}.bind(null, r));
return i;
}, n.n = function(t) {
var e = t && t.__esModule ? function() {
return t.default;
} : function() {
return t;
};
return n.d(e, 'a', e), e;
}, n.o = function(t, e) {
return {}.hasOwnProperty.call(t, e);
}, n.p = "", n(n.s = "./src/js/app.js");
}({
"./node_modules/bad-words/lib/badwords.js": function(t, e, n) {
const i = n("./node_modules/bad-words/lib/lang.json").words;
const r = n("./node_modules/badwords-list/lib/index.js").array;
t.exports = class {
constructor(t = {}) {
Object.assign(this, {
list: t.emptyList && [] || [].concat.apply(i, [ r, t.list || [] ]),
exclude: t.exclude || [],
placeHolder: t.placeHolder || '*',
regex: t.regex || /[^a-zA-Z0-9|\$|\@]|\^/g,
replaceRegex: t.replaceRegex || /\w/g
});
}
isProfane(t) {
return this.list.filter(e => {
const n = new RegExp(`\\b${e.replace(/(\W)/g, '\\$1')}\\b`, 'gi');
return !this.exclude.includes(e.toLowerCase()) && n.test(t);
}).length > 0 || !1;
}
replaceWord(t) {
return t.replace(this.regex, '').replace(this.replaceRegex, this.placeHolder);
}
clean(t) {
return t.split(/\b/).map(t => this.isProfane(t) ? this.replaceWord(t) : t).join('');
}
addWords() {
let t = Array.from(arguments);
this.list.push(...t), t.map(t => t.toLowerCase()).forEach(t => {
this.exclude.includes(t) && this.exclude.splice(this.exclude.indexOf(t), 1);
});
}
removeWords() {
this.exclude.push(...Array.from(arguments).map(t => t.toLowerCase()));
}
};
},
"./node_modules/bad-words/lib/lang.json": function(t) {
t.exports = {
words: [ "ahole", "anus", "ash0le", "ash0les", "asholes", "ass", "Ass Monkey", "Assface", "assh0le", "assh0lez", "asshole", "assholes", "assholz", "asswipe", "azzhole", "bassterds", "bastard", "bastards", "bastardz", "basterds", "basterdz", "Biatch", "bitch", "bitches", "Blow Job", "boffing", "butthole", "buttwipe", "c0ck", "c0cks", "c0k", "Carpet Muncher", "cawk", "cawks", "Clit", "cnts", "cntz", "cock", "cockhead", "cock-head", "cocks", "CockSucker", "cock-sucker", "crap", "cum", "cunt", "cunts", "cuntz", "dick", "dild0", "dild0s", "dildo", "dildos", "dilld0", "dilld0s", "dominatricks", "dominatrics", "dominatrix", "dyke", "enema", "f u c k", "f u c k e r", "fag", "fag1t", "faget", "fagg1t", "faggit", "faggot", "fagg0t", "fagit", "fags", "fagz", "faig", "faigs", "fart", "flipping the bird", "fuck", "fucker", "fuckin", "fucking", "fucks", "Fudge Packer", "fuk", "Fukah", "Fuken", "fuker", "Fukin", "Fukk", "Fukkah", "Fukken", "Fukker", "Fukkin", "g00k", "God-damned", "h00r", "h0ar", "h0re", "hells", "hoar", "hoor", "hoore", "jackoff", "jap", "japs", "jerk-off", "jisim", "jiss", "jizm", "jizz", "knob", "knobs", "knobz", "kunt", "kunts", "kuntz", "Lezzian", "Lipshits", "Lipshitz", "masochist", "masokist", "massterbait", "masstrbait", "masstrbate", "masterbaiter", "masterbate", "masterbates", "Motha Fucker", "Motha Fuker", "Motha Fukkah", "Motha Fukker", "Mother Fucker", "Mother Fukah", "Mother Fuker", "Mother Fukkah", "Mother Fukker", "mother-fucker", "Mutha Fucker", "Mutha Fukah", "Mutha Fuker", "Mutha Fukkah", "Mutha Fukker", "n1gr", "nastt", "nigger;", "nigur;", "niiger;", "niigr;", "orafis", "orgasim;", "orgasm", "orgasum", "oriface", "orifice", "orifiss", "packi", "packie", "packy", "paki", "pakie", "paky", "pecker", "peeenus", "peeenusss", "peenus", "peinus", "pen1s", "penas", "penis", "penis-breath", "penus", "penuus", "Phuc", "Phuck", "Phuk", "Phuker", "Phukker", "polac", "polack", "polak", "Poonani", "pr1c", "pr1ck", "pr1k", "pusse", "pussee", "pussy", "puuke", "puuker", "queer", "queers", "queerz", "qweers", "qweerz", "qweir", "recktum", "rectum", "retard", "sadist", "scank", "schlong", "screwing", "semen", "sex", "sexy", "Sh!t", "sh1t", "sh1ter", "sh1ts", "sh1tter", "sh1tz", "shit", "shits", "shitter", "Shitty", "Shity", "shitz", "Shyt", "Shyte", "Shytty", "Shyty", "skanck", "skank", "skankee", "skankey", "skanks", "Skanky", "slag", "slut", "sluts", "Slutty", "slutz", "son-of-a-bitch", "tit", "turd", "va1jina", "vag1na", "vagiina", "vagina", "vaj1na", "vajina", "vullva", "vulva", "w0p", "wh00r", "wh0re", "whore", "xrated", "xxx", "b!+ch", "bitch", "blowjob", "clit", "arschloch", "fuck", "shit", "ass", "asshole", "b!tch", "b17ch", "b1tch", "bastard", "bi+ch", "boiolas", "buceta", "c0ck", "cawk", "chink", "cipa", "clits", "cock", "cum", "cunt", "dildo", "dirsa", "ejakulate", "fatass", "fcuk", "fuk", "fux0r", "hoer", "hore", "jism", "kawk", "l3itch", "l3i+ch", "lesbian", "masturbate", "masterbat*", "masterbat3", "motherfucker", "s.o.b.", "mofo", "nazi", "nigga", "nigger", "nutsack", "phuck", "pimpis", "pusse", "pussy", "scrotum", "sh!t", "shemale", "shi+", "sh!+", "slut", "smut", "teets", "tits", "boobs", "b00bs", "teez", "testical", "testicle", "titt", "w00se", "jackoff", "wank", "whoar", "whore", "*damn", "*dyke", "*fuck*", "*shit*", "@$$", "amcik", "andskota", "arse*", "assrammer", "ayir", "bi7ch", "bitch*", "bollock*", "breasts", "butt-pirate", "cabron", "cazzo", "chraa", "chuj", "Cock*", "cunt*", "d4mn", "daygo", "dego", "dick*", "dike*", "dupa", "dziwka", "ejackulate", "Ekrem*", "Ekto", "enculer", "faen", "fag*", "fanculo", "fanny", "feces", "feg", "Felcher", "ficken", "fitt*", "Flikker", "foreskin", "Fotze", "Fu(*", "fuk*", "futkretzn", "gook", "guiena", "h0r", "h4x0r", "hell", "helvete", "hoer*", "honkey", "Huevon", "hui", "injun", "jizz", "kanker*", "kike", "klootzak", "kraut", "knulle", "kuk", "kuksuger", "Kurac", "kurwa", "kusi*", "kyrpa*", "lesbo", "mamhoon", "masturbat*", "merd*", "mibun", "monkleigh", "mouliewop", "muie", "mulkku", "muschi", "nazis", "nepesaurio", "nigger*", "orospu", "paska*", "perse", "picka", "pierdol*", "pillu*", "pimmel", "piss*", "pizda", "poontsee", "poop", "porn", "p0rn", "pr0n", "preteen", "pula", "pule", "puta", "puto", "qahbeh", "queef*", "rautenberg", "schaffer", "scheiss*", "schlampe", "schmuck", "screw", "sh!t*", "sharmuta", "sharmute", "shipal", "shiz", "skribz", "skurwysyn", "sphencter", "spic", "spierdalaj", "splooge", "suka", "b00b*", "testicle*", "titt*", "twat", "vittu", "wank*", "wetback*", "wichser", "wop*", "yed", "zabourah" ]
};
},
"./node_modules/badwords-list/lib/array.js": function(t, e) {
t.exports = [ "4r5e", "5h1t", "5hit", "a55", "anal", "anus", "ar5e", "arrse", "arse", "ass", "ass-fucker", "asses", "assfucker", "assfukka", "asshole", "assholes", "asswhole", "a_s_s", "b!tch", "b00bs", "b17ch", "b1tch", "ballbag", "balls", "ballsack", "bastard", "beastial", "beastiality", "bellend", "bestial", "bestiality", "bi+ch", "biatch", "bitch", "bitcher", "bitchers", "bitches", "bitchin", "bitching", "bloody", "blow job", "blowjob", "blowjobs", "boiolas", "bollock", "bollok", "boner", "boob", "boobs", "booobs", "boooobs", "booooobs", "booooooobs", "breasts", "buceta", "bugger", "bum", "bunny fucker", "butt", "butthole", "buttmuch", "buttplug", "c0ck", "c0cksucker", "carpet muncher", "cawk", "chink", "cipa", "cl1t", "clit", "clitoris", "clits", "cnut", "cock", "cock-sucker", "cockface", "cockhead", "cockmunch", "cockmuncher", "cocks", "cocksuck", "cocksucked", "cocksucker", "cocksucking", "cocksucks", "cocksuka", "cocksukka", "cok", "cokmuncher", "coksucka", "coon", "cox", "crap", "cum", "cummer", "cumming", "cums", "cumshot", "cunilingus", "cunillingus", "cunnilingus", "cunt", "cuntlick", "cuntlicker", "cuntlicking", "cunts", "cyalis", "cyberfuc", "cyberfuck", "cyberfucked", "cyberfucker", "cyberfuckers", "cyberfucking", "d1ck", "damn", "dick", "dickhead", "dildo", "dildos", "dink", "dinks", "dirsa", "dlck", "dog-fucker", "doggin", "dogging", "donkeyribber", "doosh", "duche", "dyke", "ejaculate", "ejaculated", "ejaculates", "ejaculating", "ejaculatings", "ejaculation", "ejakulate", "f u c k", "f u c k e r", "f4nny", "fag", "fagging", "faggitt", "faggot", "faggs", "fagot", "fagots", "fags", "fanny", "fannyflaps", "fannyfucker", "fanyy", "fatass", "fcuk", "fcuker", "fcuking", "feck", "fecker", "felching", "fellate", "fellatio", "fingerfuck", "fingerfucked", "fingerfucker", "fingerfuckers", "fingerfucking", "fingerfucks", "fistfuck", "fistfucked", "fistfucker", "fistfuckers", "fistfucking", "fistfuckings", "fistfucks", "flange", "fook", "fooker", "fuck", "fucka", "fucked", "fucker", "fuckers", "fuckhead", "fuckheads", "fuckin", "fucking", "fuckings", "fuckingshitmotherfucker", "fuckme", "fucks", "fuckwhit", "fuckwit", "fudge packer", "fudgepacker", "fuk", "fuker", "fukker", "fukkin", "fuks", "fukwhit", "fukwit", "fux", "fux0r", "f_u_c_k", "gangbang", "gangbanged", "gangbangs", "gaylord", "gaysex", "goatse", "God", "god-dam", "god-damned", "goddamn", "goddamned", "hardcoresex", "hell", "heshe", "hoar", "hoare", "hoer", "homo", "hore", "horniest", "horny", "hotsex", "jack-off", "jackoff", "jap", "jerk-off", "jism", "jiz", "jizm", "jizz", "kawk", "knob", "knobead", "knobed", "knobend", "knobhead", "knobjocky", "knobjokey", "kock", "kondum", "kondums", "kum", "kummer", "kumming", "kums", "kunilingus", "l3i+ch", "l3itch", "labia", "lust", "lusting", "m0f0", "m0fo", "m45terbate", "ma5terb8", "ma5terbate", "masochist", "master-bate", "masterb8", "masterbat*", "masterbat3", "masterbate", "masterbation", "masterbations", "masturbate", "mo-fo", "mof0", "mofo", "mothafuck", "mothafucka", "mothafuckas", "mothafuckaz", "mothafucked", "mothafucker", "mothafuckers", "mothafuckin", "mothafucking", "mothafuckings", "mothafucks", "mother fucker", "motherfuck", "motherfucked", "motherfucker", "motherfuckers", "motherfuckin", "motherfucking", "motherfuckings", "motherfuckka", "motherfucks", "muff", "mutha", "muthafecker", "muthafuckker", "muther", "mutherfucker", "n1gga", "n1gger", "nazi", "nigg3r", "nigg4h", "nigga", "niggah", "niggas", "niggaz", "nigger", "niggers", "nob", "nob jokey", "nobhead", "nobjocky", "nobjokey", "numbnuts", "nutsack", "orgasim", "orgasims", "orgasm", "orgasms", "p0rn", "pawn", "pecker", "penis", "penisfucker", "phonesex", "phuck", "phuk", "phuked", "phuking", "phukked", "phukking", "phuks", "phuq", "pigfucker", "pimpis", "piss", "pissed", "pisser", "pissers", "pisses", "pissflaps", "pissin", "pissing", "pissoff", "poop", "porn", "porno", "pornography", "pornos", "prick", "pricks", "pron", "pube", "pusse", "pussi", "pussies", "pussy", "pussys", "rectum", "retard", "rimjaw", "rimming", "s hit", "s.o.b.", "sadist", "schlong", "screwing", "scroat", "scrote", "scrotum", "semen", "sex", "sh!+", "sh!t", "sh1t", "shag", "shagger", "shaggin", "shagging", "shemale", "shi+", "shit", "shitdick", "shite", "shited", "shitey", "shitfuck", "shitfull", "shithead", "shiting", "shitings", "shits", "shitted", "shitter", "shitters", "shitting", "shittings", "shitty", "skank", "slut", "sluts", "smegma", "smut", "snatch", "son-of-a-bitch", "spac", "spunk", "s_h_i_t", "t1tt1e5", "t1tties", "teets", "teez", "testical", "testicle", "tit", "titfuck", "tits", "titt", "tittie5", "tittiefucker", "titties", "tittyfuck", "tittywank", "titwank", "tosser", "turd", "tw4t", "twat", "twathead", "twatty", "twunt", "twunter", "v14gra", "v1gra", "vagina", "viagra", "vulva", "w00se", "wang", "wank", "wanker", "wanky", "whoar", "whore", "willies", "willy", "xrated", "xxx" ];
},
"./node_modules/badwords-list/lib/index.js": function(t, e, n) {
t.exports = {
object: n("./node_modules/badwords-list/lib/object.js"),
array: n("./node_modules/badwords-list/lib/array.js"),
regex: n("./node_modules/badwords-list/lib/regexp.js")
};
},
"./node_modules/badwords-list/lib/object.js": function(t, e) {
t.exports = {
"4r5e": 1,
"5h1t": 1,
"5hit": 1,
a55: 1,
anal: 1,
anus: 1,
ar5e: 1,
arrse: 1,
arse: 1,
ass: 1,
"ass-fucker": 1,
asses: 1,
assfucker: 1,
assfukka: 1,
asshole: 1,
assholes: 1,
asswhole: 1,
a_s_s: 1,
"b!tch": 1,
b00bs: 1,
b17ch: 1,
b1tch: 1,
ballbag: 1,
balls: 1,
ballsack: 1,
bastard: 1,
beastial: 1,
beastiality: 1,
bellend: 1,
bestial: 1,
bestiality: 1,
"bi+ch": 1,
biatch: 1,
bitch: 1,
bitcher: 1,
bitchers: 1,
bitches: 1,
bitchin: 1,
bitching: 1,
bloody: 1,
"blow job": 1,
blowjob: 1,
blowjobs: 1,
boiolas: 1,
bollock: 1,
bollok: 1,
boner: 1,
boob: 1,
boobs: 1,
booobs: 1,
boooobs: 1,
booooobs: 1,
booooooobs: 1,
breasts: 1,
buceta: 1,
bugger: 1,
bum: 1,
"bunny fucker": 1,
butt: 1,
butthole: 1,
buttmuch: 1,
buttplug: 1,
c0ck: 1,
c0cksucker: 1,
"carpet muncher": 1,
cawk: 1,
chink: 1,
cipa: 1,
cl1t: 1,
clit: 1,
clitoris: 1,
clits: 1,
cnut: 1,
cock: 1,
"cock-sucker": 1,
cockface: 1,
cockhead: 1,
cockmunch: 1,
cockmuncher: 1,
cocks: 1,
cocksuck: 1,
cocksucked: 1,
cocksucker: 1,
cocksucking: 1,
cocksucks: 1,
cocksuka: 1,
cocksukka: 1,
cok: 1,
cokmuncher: 1,
coksucka: 1,
coon: 1,
cox: 1,
crap: 1,
cum: 1,
cummer: 1,
cumming: 1,
cums: 1,
cumshot: 1,
cunilingus: 1,
cunillingus: 1,
cunnilingus: 1,
cunt: 1,
cuntlick: 1,
cuntlicker: 1,
cuntlicking: 1,
cunts: 1,
cyalis: 1,
cyberfuc: 1,
cyberfuck: 1,
cyberfucked: 1,
cyberfucker: 1,
cyberfuckers: 1,
cyberfucking: 1,
d1ck: 1,
damn: 1,
dick: 1,
dickhead: 1,
dildo: 1,
dildos: 1,
dink: 1,
dinks: 1,
dirsa: 1,
dlck: 1,
"dog-fucker": 1,
doggin: 1,
dogging: 1,
donkeyribber: 1,
doosh: 1,
duche: 1,
dyke: 1,
ejaculate: 1,
ejaculated: 1,
ejaculates: 1,
ejaculating: 1,
ejaculatings: 1,
ejaculation: 1,
ejakulate: 1,
"f u c k": 1,
"f u c k e r": 1,
f4nny: 1,
fag: 1,
fagging: 1,
faggitt: 1,
faggot: 1,
faggs: 1,
fagot: 1,
fagots: 1,
fags: 1,
fanny: 1,
fannyflaps: 1,
fannyfucker: 1,
fanyy: 1,
fatass: 1,
fcuk: 1,
fcuker: 1,
fcuking: 1,
feck: 1,
fecker: 1,
felching: 1,
fellate: 1,
fellatio: 1,
fingerfuck: 1,
fingerfucked: 1,
fingerfucker: 1,
fingerfuckers: 1,
fingerfucking: 1,
fingerfucks: 1,
fistfuck: 1,
fistfucked: 1,
fistfucker: 1,
fistfuckers: 1,
fistfucking: 1,
fistfuckings: 1,
fistfucks: 1,
flange: 1,
fook: 1,
fooker: 1,
fuck: 1,
fucka: 1,
fucked: 1,
fucker: 1,
fuckers: 1,
fuckhead: 1,
fuckheads: 1,
fuckin: 1,
fucking: 1,
fuckings: 1,
fuckingshitmotherfucker: 1,
fuckme: 1,
fucks: 1,
fuckwhit: 1,
fuckwit: 1,
"fudge packer": 1,
fudgepacker: 1,
fuk: 1,
fuker: 1,
fukker: 1,
fukkin: 1,
fuks: 1,
fukwhit: 1,
fukwit: 1,
fux: 1,
fux0r: 1,
f_u_c_k: 1,
gangbang: 1,
gangbanged: 1,
gangbangs: 1,
gaylord: 1,
gaysex: 1,
goatse: 1,
God: 1,
"god-dam": 1,
"god-damned": 1,
goddamn: 1,
goddamned: 1,
hardcoresex: 1,
hell: 1,
heshe: 1,
hoar: 1,
hoare: 1,
hoer: 1,
homo: 1,
hore: 1,
horniest: 1,
horny: 1,
hotsex: 1,
"jack-off": 1,
jackoff: 1,
jap: 1,
"jerk-off": 1,
jism: 1,
jiz: 1,
jizm: 1,
jizz: 1,
kawk: 1,
knob: 1,
knobead: 1,
knobed: 1,
knobend: 1,
knobhead: 1,
knobjocky: 1,
knobjokey: 1,
kock: 1,
kondum: 1,
kondums: 1,
kum: 1,
kummer: 1,
kumming: 1,
kums: 1,
kunilingus: 1,
"l3i+ch": 1,
l3itch: 1,
labia: 1,
lust: 1,
lusting: 1,
m0f0: 1,
m0fo: 1,
m45terbate: 1,
ma5terb8: 1,
ma5terbate: 1,
masochist: 1,
"master-bate": 1,
masterb8: 1,
"masterbat*": 1,
masterbat3: 1,
masterbate: 1,
masterbation: 1,
masterbations: 1,
masturbate: 1,
"mo-fo": 1,
mof0: 1,
mofo: 1,
mothafuck: 1,
mothafucka: 1,
mothafuckas: 1,
mothafuckaz: 1,
mothafucked: 1,
mothafucker: 1,
mothafuckers: 1,
mothafuckin: 1,
mothafucking: 1,
mothafuckings: 1,
mothafucks: 1,
"mother fucker": 1,
motherfuck: 1,
motherfucked: 1,
motherfucker: 1,
motherfuckers: 1,
motherfuckin: 1,
motherfucking: 1,
motherfuckings: 1,
motherfuckka: 1,
motherfucks: 1,
muff: 1,
mutha: 1,
muthafecker: 1,
muthafuckker: 1,
muther: 1,
mutherfucker: 1,
n1gga: 1,
n1gger: 1,
nazi: 1,
nigg3r: 1,
nigg4h: 1,
nigga: 1,
niggah: 1,
niggas: 1,
niggaz: 1,
nigger: 1,
niggers: 1,
nob: 1,
"nob jokey": 1,
nobhead: 1,
nobjocky: 1,
nobjokey: 1,
numbnuts: 1,
nutsack: 1,
orgasim: 1,
orgasims: 1,
orgasm: 1,
orgasms: 1,
p0rn: 1,
pawn: 1,
pecker: 1,
penis: 1,
penisfucker: 1,
phonesex: 1,
phuck: 1,
phuk: 1,
phuked: 1,
phuking: 1,
phukked: 1,
phukking: 1,
phuks: 1,
phuq: 1,
pigfucker: 1,
pimpis: 1,
piss: 1,
pissed: 1,
pisser: 1,
pissers: 1,
pisses: 1,
pissflaps: 1,
pissin: 1,
pissing: 1,
pissoff: 1,
poop: 1,
porn: 1,
porno: 1,
pornography: 1,
pornos: 1,
prick: 1,
pricks: 1,
pron: 1,
pube: 1,
pusse: 1,
pussi: 1,
pussies: 1,
pussy: 1,
pussys: 1,
rectum: 1,
retard: 1,
rimjaw: 1,
rimming: 1,
"s hit": 1,
"s.o.b.": 1,
sadist: 1,
schlong: 1,
screwing: 1,
scroat: 1,
scrote: 1,
scrotum: 1,
semen: 1,
sex: 1,
"sh!+": 1,
"sh!t": 1,
sh1t: 1,
shag: 1,
shagger: 1,
shaggin: 1,
shagging: 1,
shemale: 1,
"shi+": 1,
shit: 1,
shitdick: 1,
shite: 1,
shited: 1,
shitey: 1,
shitfuck: 1,
shitfull: 1,
shithead: 1,
shiting: 1,
shitings: 1,
shits: 1,
shitted: 1,
shitter: 1,
shitters: 1,
shitting: 1,
shittings: 1,
shitty: 1,
skank: 1,
slut: 1,
sluts: 1,
smegma: 1,
smut: 1,
snatch: 1,
"son-of-a-bitch": 1,
spac: 1,
spunk: 1,
s_h_i_t: 1,
t1tt1e5: 1,
t1tties: 1,
teets: 1,
teez: 1,
testical: 1,
testicle: 1,
tit: 1,
titfuck: 1,
tits: 1,
titt: 1,
tittie5: 1,
tittiefucker: 1,
titties: 1,
tittyfuck: 1,
tittywank: 1,
titwank: 1,
tosser: 1,
turd: 1,
tw4t: 1,
twat: 1,
twathead: 1,
twatty: 1,
twunt: 1,
twunter: 1,
v14gra: 1,
v1gra: 1,
vagina: 1,
viagra: 1,
vulva: 1,
w00se: 1,
wang: 1,
wank: 1,
wanker: 1,
wanky: 1,
whoar: 1,
whore: 1,
willies: 1,
willy: 1,
xrated: 1,
xxx: 1
};
},
"./node_modules/badwords-list/lib/regexp.js": function(t, e) {
t.exports = /\b(4r5e|5h1t|5hit|a55|anal|anus|ar5e|arrse|arse|ass|ass-fucker|asses|assfucker|assfukka|asshole|assholes|asswhole|a_s_s|b!tch|b00bs|b17ch|b1tch|ballbag|balls|ballsack|bastard|beastial|beastiality|bellend|bestial|bestiality|bi\+ch|biatch|bitch|bitcher|bitchers|bitches|bitchin|bitching|bloody|blow job|blowjob|blowjobs|boiolas|bollock|bollok|boner|boob|boobs|booobs|boooobs|booooobs|booooooobs|breasts|buceta|bugger|bum|bunny fucker|butt|butthole|buttmuch|buttplug|c0ck|c0cksucker|carpet muncher|cawk|chink|cipa|cl1t|clit|clitoris|clits|cnut|cock|cock-sucker|cockface|cockhead|cockmunch|cockmuncher|cocks|cocksuck|cocksucked|cocksucker|cocksucking|cocksucks|cocksuka|cocksukka|cok|cokmuncher|coksucka|coon|cox|crap|cum|cummer|cumming|cums|cumshot|cunilingus|cunillingus|cunnilingus|cunt|cuntlick|cuntlicker|cuntlicking|cunts|cyalis|cyberfuc|cyberfuck|cyberfucked|cyberfucker|cyberfuckers|cyberfucking|d1ck|damn|dick|dickhead|dildo|dildos|dink|dinks|dirsa|dlck|dog-fucker|doggin|dogging|donkeyribber|doosh|duche|dyke|ejaculate|ejaculated|ejaculates|ejaculating|ejaculatings|ejaculation|ejakulate|f u c k|f u c k e r|f4nny|fag|fagging|faggitt|faggot|faggs|fagot|fagots|fags|fanny|fannyflaps|fannyfucker|fanyy|fatass|fcuk|fcuker|fcuking|feck|fecker|felching|fellate|fellatio|fingerfuck|fingerfucked|fingerfucker|fingerfuckers|fingerfucking|fingerfucks|fistfuck|fistfucked|fistfucker|fistfuckers|fistfucking|fistfuckings|fistfucks|flange|fook|fooker|fuck|fucka|fucked|fucker|fuckers|fuckhead|fuckheads|fuckin|fucking|fuckings|fuckingshitmotherfucker|fuckme|fucks|fuckwhit|fuckwit|fudge packer|fudgepacker|fuk|fuker|fukker|fukkin|fuks|fukwhit|fukwit|fux|fux0r|f_u_c_k|gangbang|gangbanged|gangbangs|gaylord|gaysex|goatse|God|god-dam|god-damned|goddamn|goddamned|hardcoresex|hell|heshe|hoar|hoare|hoer|homo|hore|horniest|horny|hotsex|jack-off|jackoff|jap|jerk-off|jism|jiz|jizm|jizz|kawk|knob|knobead|knobed|knobend|knobhead|knobjocky|knobjokey|kock|kondum|kondums|kum|kummer|kumming|kums|kunilingus|l3i\+ch|l3itch|labia|lust|lusting|m0f0|m0fo|m45terbate|ma5terb8|ma5terbate|masochist|master-bate|masterb8|masterbat*|masterbat3|masterbate|masterbation|masterbations|masturbate|mo-fo|mof0|mofo|mothafuck|mothafucka|mothafuckas|mothafuckaz|mothafucked|mothafucker|mothafuckers|mothafuckin|mothafucking|mothafuckings|mothafucks|mother fucker|motherfuck|motherfucked|motherfucker|motherfuckers|motherfuckin|motherfucking|motherfuckings|motherfuckka|motherfucks|muff|mutha|muthafecker|muthafuckker|muther|mutherfucker|n1gga|n1gger|nazi|nigg3r|nigg4h|nigga|niggah|niggas|niggaz|nigger|niggers|nob|nob jokey|nobhead|nobjocky|nobjokey|numbnuts|nutsack|orgasim|orgasims|orgasm|orgasms|p0rn|pawn|pecker|penis|penisfucker|phonesex|phuck|phuk|phuked|phuking|phukked|phukking|phuks|phuq|pigfucker|pimpis|piss|pissed|pisser|pissers|pisses|pissflaps|pissin|pissing|pissoff|poop|porn|porno|pornography|pornos|prick|pricks|pron|pube|pusse|pussi|pussies|pussy|pussys|rectum|retard|rimjaw|rimming|s hit|s.o.b.|sadist|schlong|screwing|scroat|scrote|scrotum|semen|sex|sh!\+|sh!t|sh1t|shag|shagger|shaggin|shagging|shemale|shi\+|shit|shitdick|shite|shited|shitey|shitfuck|shitfull|shithead|shiting|shitings|shits|shitted|shitter|shitters|shitting|shittings|shitty|skank|slut|sluts|smegma|smut|snatch|son-of-a-bitch|spac|spunk|s_h_i_t|t1tt1e5|t1tties|teets|teez|testical|testicle|tit|titfuck|tits|titt|tittie5|tittiefucker|titties|tittyfuck|tittywank|titwank|tosser|turd|tw4t|twat|twathead|twatty|twunt|twunter|v14gra|v1gra|vagina|viagra|vulva|w00se|wang|wank|wanker|wanky|whoar|whore|willies|willy|xrated|xxx)\b/gi;
},
"./node_modules/base64-js/index.js": function(t, e, n) {
"use strict";
e.byteLength = function(t) {
var e = c(t);
var n = e[0];
var i = e[1];
return 3 * (n + i) / 4 - i;
}, e.toByteArray = function(t) {
var e;
var n = c(t);
var i = n[0];
var o = n[1];
var s = new a(function(t, e, n) {
return 3 * (e + n) / 4 - n;
}(0, i, o));
var l = 0;
var u = o > 0 ? i - 4 : i;
var f;
for (f = 0; f < u; f += 4) e = r[t.charCodeAt(f)] << 18 | r[t.charCodeAt(f + 1)] << 12 | r[t.charCodeAt(f + 2)] << 6 | r[t.charCodeAt(f + 3)],
s[l++] = e >> 16 & 255, s[l++] = e >> 8 & 255, s[l++] = 255 & e;
2 === o && (e = r[t.charCodeAt(f)] << 2 | r[t.charCodeAt(f + 1)] >> 4, s[l++] = 255 & e);
1 === o && (e = r[t.charCodeAt(f)] << 10 | r[t.charCodeAt(f + 1)] << 4 | r[t.charCodeAt(f + 2)] >> 2,
s[l++] = e >> 8 & 255, s[l++] = 255 & e);
return s;
}, e.fromByteArray = function(t) {
var e;
var n = t.length;
var r = n % 3;
var a = [];
var o = 16383;
for (var s = 0, c = n - r; s < c; s += o) a.push(u(t, s, s + o > c ? c : s + o));
1 === r ? (e = t[n - 1], a.push(i[e >> 2] + i[e << 4 & 63] + '==')) : 2 === r && (e = (t[n - 2] << 8) + t[n - 1],
a.push(i[e >> 10] + i[e >> 4 & 63] + i[e << 2 & 63] + '='));
return a.join('');
};
var i = [];
var r = [];
var a = 'undefined' != typeof Uint8Array ? Uint8Array : Array;
var o = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
for (var s = 0; s < 64; ++s) i[s] = o[s], r[o.charCodeAt(s)] = s;
function c(t) {
var e = t.length;
if (e % 4 > 0) throw new Error('Invalid string. Length must be a multiple of 4');
var n = t.indexOf('=');
return -1 === n && (n = e), [ n, n === e ? 0 : 4 - n % 4 ];
}
function l(t) {
return i[t >> 18 & 63] + i[t >> 12 & 63] + i[t >> 6 & 63] + i[63 & t];
}
function u(t, e, n) {
var i;
var r = [];
for (var a = e; a < n; a += 3) i = (t[a] << 16 & 16711680) + (t[a + 1] << 8 & 65280) + (255 & t[a + 2]),
r.push(l(i));
return r.join('');
}
r['-'.charCodeAt(0)] = 62, r['_'.charCodeAt(0)] = 63;
},
"./node_modules/buffer/index.js": function(t, e, n) {
"use strict";
(function(t) {
var i = n("./node_modules/base64-js/index.js");
var r = n("./node_modules/ieee754/index.js");
var a = n("./node_modules/buffer/node_modules/isarray/index.js");
function o() {
return c.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823;
}
function s(t, e) {
if (o() < e) throw new RangeError('Invalid typed array length');
return c.TYPED_ARRAY_SUPPORT ? (t = new Uint8Array(e)).__proto__ = c.prototype : (null === t && (t = new c(e)),
t.length = e), t;
}
function c(t, e, n) {
if (!(c.TYPED_ARRAY_SUPPORT || this instanceof c)) return new c(t, e, n);
if ('number' == typeof t) {
if ('string' == typeof e) throw new Error('If encoding is specified then the first argument must be a string');
return f(this, t);
}
return l(this, t, e, n);
}
function l(t, e, n, i) {
if ('number' == typeof e) throw new TypeError('"value" argument must not be a number');
return 'undefined' != typeof ArrayBuffer && e instanceof ArrayBuffer ? function(t, e, n, i) {
if (e.byteLength, n < 0 || e.byteLength < n) throw new RangeError('\'offset\' is out of bounds');
if (e.byteLength < n + (i || 0)) throw new RangeError('\'length\' is out of bounds');
e = void 0 === n && void 0 === i ? new Uint8Array(e) : void 0 === i ? new Uint8Array(e, n) : new Uint8Array(e, n, i);
c.TYPED_ARRAY_SUPPORT ? (t = e).__proto__ = c.prototype : t = d(t, e);
return t;
}(t, e, n, i) : 'string' == typeof e ? function(t, e, n) {
'string' == typeof n && '' !== n || (n = 'utf8');
if (!c.isEncoding(n)) throw new TypeError('"encoding" must be a valid string encoding');
var i = 0 | m(e, n);
t = s(t, i);
var r = t.write(e, n);
r !== i && (t = t.slice(0, r));
return t;
}(t, e, n) : function(t, e) {
if (c.isBuffer(e)) {
var n = 0 | h(e.length);
return 0 === (t = s(t, n)).length || e.copy(t, 0, 0, n), t;
}
if (e) {
if ('undefined' != typeof ArrayBuffer && e.buffer instanceof ArrayBuffer || 'length' in e) return 'number' != typeof e.length || (i = e.length) != i ? s(t, 0) : d(t, e);
if ('Buffer' === e.type && a(e.data)) return d(t, e.data);
}
var i;
throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.');
}(t, e);
}
function u(t) {
if ('number' != typeof t) throw new TypeError('"size" argument must be a number');
if (t < 0) throw new RangeError('"size" argument must not be negative');
}
function f(t, e) {
if (u(e), t = s(t, e < 0 ? 0 : 0 | h(e)), !c.TYPED_ARRAY_SUPPORT) for (var n = 0; n < e; ++n) t[n] = 0;
return t;
}
function d(t, e) {
var n = e.length < 0 ? 0 : 0 | h(e.length);
t = s(t, n);
for (var i = 0; i < n; i += 1) t[i] = 255 & e[i];
return t;
}
function h(t) {
if (t >= o()) throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + o().toString(16) + ' bytes');
return 0 | t;
}
function m(t, e) {
if (c.isBuffer(t)) return t.length;
if ('undefined' != typeof ArrayBuffer && 'function' == typeof ArrayBuffer.isView && (ArrayBuffer.isView(t) || t instanceof ArrayBuffer)) return t.byteLength;
'string' != typeof t && (t = '' + t);
var n = t.length;
if (0 === n) return 0;
var i = !1;
for (;;) switch (e) {
case 'ascii':
case 'latin1':
case 'binary':
return n;
case 'utf8':
case 'utf-8':
case void 0:
return F(t).length;
case 'ucs2':
case 'ucs-2':
case 'utf16le':
case 'utf-16le':
return 2 * n;
case 'hex':
return n >>> 1;
case 'base64':
return L(t).length;
default:
if (i) return F(t).length;
e = ('' + e).toLowerCase(), i = !0;
}
}
function p(t, e, n) {
var i = !1;
if ((void 0 === e || e < 0) && (e = 0), e > this.length) return '';
if ((void 0 === n || n > this.length) && (n = this.length), n <= 0) return '';
if ((n >>>= 0) <= (e >>>= 0)) return '';
for (t || (t = 'utf8'); ;) switch (t) {
case 'hex':
return P(this, e, n);
case 'utf8':
case 'utf-8':
return S(this, e, n);
case 'ascii':
return T(this, e, n);
case 'latin1':
case 'binary':
return D(this, e, n);
case 'base64':
return j(this, e, n);
case 'ucs2':
case 'ucs-2':
case 'utf16le':
case 'utf-16le':
return B(this, e, n);
default:
if (i) throw new TypeError('Unknown encoding: ' + t);
t = (t + '').toLowerCase(), i = !0;
}
}
function v(t, e, n) {
var i = t[e];
t[e] = t[n], t[n] = i;
}
function g(t, e, n, i, r) {
if (0 === t.length) return -1;
if ('string' == typeof n ? (i = n, n = 0) : n > 2147483647 ? n = 2147483647 : n < -2147483648 && (n = -2147483648),
n = +n, isNaN(n) && (n = r ? 0 : t.length - 1), n < 0 && (n = t.length + n), n >= t.length) {
if (r) return -1;
n = t.length - 1;
} else if (n < 0) {
if (!r) return -1;
n = 0;
}
if ('string' == typeof e && (e = c.from(e, i)), c.isBuffer(e)) return 0 === e.length ? -1 : b(t, e, n, i, r);
if ('number' == typeof e) return e &= 255, c.TYPED_ARRAY_SUPPORT && 'function' == typeof Uint8Array.prototype.indexOf ? r ? Uint8Array.prototype.indexOf.call(t, e, n) : Uint8Array.prototype.lastIndexOf.call(t, e, n) : b(t, [ e ], n, i, r);
throw new TypeError('val must be string, number or Buffer');
}
function b(t, e, n, i, r) {
var a = 1;
var o = t.length;
var s = e.length;
if (void 0 !== i && ('ucs2' === (i = String(i).toLowerCase()) || 'ucs-2' === i || 'utf16le' === i || 'utf-16le' === i)) {
if (t.length < 2 || e.length < 2) return -1;
a = 2, o /= 2, s /= 2, n /= 2;
}
function c(t, e) {
return 1 === a ? t[e] : t.readUInt16BE(e * a);
}
var l;
if (r) {
var u = -1;
for (l = n; l < o; l++) if (c(t, l) === c(e, -1 === u ? 0 : l - u)) {
if (-1 === u && (u = l), l - u + 1 === s) return u * a;
} else -1 !== u && (l -= l - u), u = -1;
} else for (n + s > o && (n = o - s), l = n; l >= 0; l--) {
var f = !0;
for (var d = 0; d < s; d++) if (c(t, l + d) !== c(e, d)) {
f = !1;
break;
}
if (f) return l;
}
return -1;
}
function k(t, e, n, i) {
n = Number(n) || 0;
var r = t.length - n;
i ? (i = Number(i)) > r && (i = r) : i = r;
var a = e.length;
if (a % 2 != 0) throw new TypeError('Invalid hex string');
i > a / 2 && (i = a / 2);
for (var o = 0; o < i; ++o) {
var s = parseInt(e.substr(2 * o, 2), 16);
if (isNaN(s)) return o;
t[n + o] = s;
}
return o;
}
function y(t, e, n, i) {
return N(F(e, t.length - n), t, n, i);
}
function w(t, e, n, i) {
return N(function(t) {
var e = [];
for (var n = 0; n < t.length; ++n) e.push(255 & t.charCodeAt(n));
return e;
}(e), t, n, i);
}
function _(t, e, n, i) {
return w(t, e, n, i);
}
function x(t, e, n, i) {
return N(L(e), t, n, i);
}
function M(t, e, n, i) {
return N(function(t, e) {
var n, i, r;
var a = [];
for (var o = 0; o < t.length && !((e -= 2) < 0); ++o) i = (n = t.charCodeAt(o)) >> 8,
r = n % 256, a.push(r), a.push(i);
return a;
}(e, t.length - n), t, n, i);
}
function j(t, e, n) {
return 0 === e && n === t.length ? i.fromByteArray(t) : i.fromByteArray(t.slice(e, n));
}
function S(t, e, n) {
n = Math.min(t.length, n);
var i = [];
var r = e;
for (;r < n; ) {
var a = t[r];
var o = null;
var s = a > 239 ? 4 : a > 223 ? 3 : a > 191 ? 2 : 1;
var c, l, u, f;
if (r + s <= n) switch (s) {
case 1:
a < 128 && (o = a);
break;
case 2:
128 == (192 & (c = t[r + 1])) && (f = (31 & a) << 6 | 63 & c) > 127 && (o = f);
break;
case 3:
c = t[r + 1], l = t[r + 2], 128 == (192 & c) && 128 == (192 & l) && (f = (15 & a) << 12 | (63 & c) << 6 | 63 & l) > 2047 && (f < 55296 || f > 57343) && (o = f);
break;
case 4:
c = t[r + 1], l = t[r + 2], u = t[r + 3], 128 == (192 & c) && 128 == (192 & l) && 128 == (192 & u) && (f = (15 & a) << 18 | (63 & c) << 12 | (63 & l) << 6 | 63 & u) > 65535 && f < 1114112 && (o = f);
}
null === o ? (o = 65533, s = 1) : o > 65535 && (o -= 65536, i.push(o >>> 10 & 1023 | 55296),
o = 56320 | 1023 & o), i.push(o), r += s;
}
return function(t) {
var e = t.length;
if (e <= A) return String.fromCharCode.apply(String, t);
var n = '';
var i = 0;
for (;i < e; ) n += String.fromCharCode.apply(String, t.slice(i, i += A));
return n;
}(i);
}
e.Buffer = c, e.SlowBuffer = function(t) {
+t != t && (t = 0);
return c.alloc(+t);
}, e.INSPECT_MAX_BYTES = 50, c.TYPED_ARRAY_SUPPORT = void 0 !== t.TYPED_ARRAY_SUPPORT ? t.TYPED_ARRAY_SUPPORT : function() {
try {
var t = new Uint8Array(1);
return t.__proto__ = {
__proto__: Uint8Array.prototype,
foo: function() {
return 42;
}
}, 42 === t.foo() && 'function' == typeof t.subarray && 0 === t.subarray(1, 1).byteLength;
} catch (t) {
return !1;
}
}(), e.kMaxLength = o(), c.poolSize = 8192, c.u = function(t) {
return t.__proto__ = c.prototype, t;
}, c.from = function(t, e, n) {
return l(null, t, e, n);
}, c.TYPED_ARRAY_SUPPORT && (c.prototype.__proto__ = Uint8Array.prototype, c.__proto__ = Uint8Array,
'undefined' != typeof Symbol && Symbol.species && c[Symbol.species] === c && Object.defineProperty(c, Symbol.species, {
value: null,
configurable: !0
})), c.alloc = function(t, e, n) {
return function(t, e, n, i) {
return u(e), e <= 0 ? s(t, e) : void 0 !== n ? 'string' == typeof i ? s(t, e).fill(n, i) : s(t, e).fill(n) : s(t, e);
}(null, t, e, n);
}, c.allocUnsafe = function(t) {
return f(null, t);
}, c.allocUnsafeSlow = function(t) {
return f(null, t);
}, c.isBuffer = function(t) {
return !(null == t || !t.h);
}, c.compare = function(t, e) {
if (!c.isBuffer(t) || !c.isBuffer(e)) throw new TypeError('Arguments must be Buffers');
if (t === e) return 0;
var n = t.length;
var i = e.length;
for (var r = 0, a = Math.min(n, i); r < a; ++r) if (t[r] !== e[r]) {
n = t[r], i = e[r];
break;
}
return n < i ? -1 : i < n ? 1 : 0;
}, c.isEncoding = function(t) {
switch (String(t).toLowerCase()) {
case 'hex':
case 'utf8':
case 'utf-8':
case 'ascii':
case 'latin1':
case 'binary':
case 'base64':
case 'ucs2':
case 'ucs-2':
case 'utf16le':
case 'utf-16le':
return !0;
default:
return !1;
}
}, c.concat = function(t, e) {
if (!a(t)) throw new TypeError('"list" argument must be an Array of Buffers');
if (0 === t.length) return c.alloc(0);
var n;
if (void 0 === e) for (e = 0, n = 0; n < t.length; ++n) e += t[n].length;
var i = c.allocUnsafe(e);
var r = 0;
for (n = 0; n < t.length; ++n) {
var o = t[n];
if (!c.isBuffer(o)) throw new TypeError('"list" argument must be an Array of Buffers');
o.copy(i, r), r += o.length;
}
return i;
}, c.byteLength = m, c.prototype.h = !0, c.prototype.swap16 = function() {
var t = this.length;
if (t % 2 != 0) throw new RangeError('Buffer size must be a multiple of 16-bits');
for (var e = 0; e < t; e += 2) v(this, e, e + 1);
return this;
}, c.prototype.swap32 = function() {
var t = this.length;
if (t % 4 != 0) throw new RangeError('Buffer size must be a multiple of 32-bits');
for (var e = 0; e < t; e += 4) v(this, e, e + 3), v(this, e + 1, e + 2);
return this;
}, c.prototype.swap64 = function() {
var t = this.length;
if (t % 8 != 0) throw new RangeError('Buffer size must be a multiple of 64-bits');
for (var e = 0; e < t; e += 8) v(this, e, e + 7), v(this, e + 1, e + 6), v(this, e + 2, e + 5),
v(this, e + 3, e + 4);
return this;
}, c.prototype.toString = function() {
var t = 0 | this.length;
return 0 === t ? '' : 0 === arguments.length ? S(this, 0, t) : p.apply(this, arguments);
}, c.prototype.equals = function(t) {
if (!c.isBuffer(t)) throw new TypeError('Argument must be a Buffer');
return this === t || 0 === c.compare(this, t);
}, c.prototype.inspect = function() {
var t = '';
var n = e.INSPECT_MAX_BYTES;
return this.length > 0 && (t = this.toString('hex', 0, n).match(/.{2}/g).join(' '),
this.length > n && (t += ' ... ')), '<Buffer ' + t + '>';
}, c.prototype.compare = function(t, e, n, i, r) {
if (!c.isBuffer(t)) throw new TypeError('Argument must be a Buffer');
if (void 0 === e && (e = 0), void 0 === n && (n = t ? t.length : 0), void 0 === i && (i = 0),
void 0 === r && (r = this.length), e < 0 || n > t.length || i < 0 || r > this.length) throw new RangeError('out of range index');
if (i >= r && e >= n) return 0;
if (i >= r) return -1;
if (e >= n) return 1;
if (this === t) return 0;
var a = (r >>>= 0) - (i >>>= 0);
var o = (n >>>= 0) - (e >>>= 0);
var s = Math.min(a, o);
var l = this.slice(i, r);
var u = t.slice(e, n);
for (var f = 0; f < s; ++f) if (l[f] !== u[f]) {
a = l[f], o = u[f];
break;
}
return a < o ? -1 : o < a ? 1 : 0;
}, c.prototype.includes = function(t, e, n) {
return -1 !== this.indexOf(t, e, n);
}, c.prototype.indexOf = function(t, e, n) {
return g(this, t, e, n, !0);
}, c.prototype.lastIndexOf = function(t, e, n) {
return g(this, t, e, n, !1);
}, c.prototype.write = function(t, e, n, i) {
if (void 0 === e) i = 'utf8', n = this.length, e = 0; else if (void 0 === n && 'string' == typeof e) i = e,
n = this.length, e = 0; else {
if (!isFinite(e)) throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');
e |= 0, isFinite(n) ? (n |= 0, void 0 === i && (i = 'utf8')) : (i = n, n = void 0);
}
var r = this.length - e;
if ((void 0 === n || n > r) && (n = r), t.length > 0 && (n < 0 || e < 0) || e > this.length) throw new RangeError('Attempt to write outside buffer bounds');
i || (i = 'utf8');
var a = !1;
for (;;) switch (i) {
case 'hex':
return k(this, t, e, n);
case 'utf8':
case 'utf-8':
return y(this, t, e, n);
case 'ascii':
return w(this, t, e, n);
case 'latin1':
case 'binary':
return _(this, t, e, n);
case 'base64':
return x(this, t, e, n);
case 'ucs2':
case 'ucs-2':
case 'utf16le':
case 'utf-16le':
return M(this, t, e, n);
default:
if (a) throw new TypeError('Unknown encoding: ' + i);
i = ('' + i).toLowerCase(), a = !0;
}
}, c.prototype.toJSON = function() {
return {
type: 'Buffer',
data: [].slice.call(this.v || this, 0)
};
};
var A = 4096;
function T(t, e, n) {
var i = '';
n = Math.min(t.length, n);
for (var r = e; r < n; ++r) i += String.fromCharCode(127 & t[r]);
return i;
}
function D(t, e, n) {
var i = '';
n = Math.min(t.length, n);
for (var r = e; r < n; ++r) i += String.fromCharCode(t[r]);
return i;
}
function P(t, e, n) {
var i = t.length;
(!e || e < 0) && (e = 0), (!n || n < 0 || n > i) && (n = i);
var r = '';
for (var a = e; a < n; ++a) r += U(t[a]);
return r;
}
function B(t, e, n) {
var i = t.slice(e, n);
var r = '';
for (var a = 0; a < i.length; a += 2) r += String.fromCharCode(i[a] + 256 * i[a + 1]);
return r;
}
function I(t, e, n) {
if (t % 1 != 0 || t < 0) throw new RangeError('offset is not uint');
if (t + e > n) throw new RangeError('Trying to access beyond buffer length');
}
function O(t, e, n, i, r, a) {
if (!c.isBuffer(t)) throw new TypeError('"buffer" argument must be a Buffer instance');
if (e > r || e < a) throw new RangeError('"value" argument is out of bounds');
if (n + i > t.length) throw new RangeError('Index out of range');
}
function H(t, e, n, i) {
e < 0 && (e = 65535 + e + 1);
for (var r = 0, a = Math.min(t.length - n, 2); r < a; ++r) t[n + r] = (e & 255 << 8 * (i ? r : 1 - r)) >>> 8 * (i ? r : 1 - r);
}
function E(t, e, n, i) {
e < 0 && (e = 4294967295 + e + 1);
for (var r = 0, a = Math.min(t.length - n, 4); r < a; ++r) t[n + r] = e >>> 8 * (i ? r : 3 - r) & 255;
}
function C(t, e, n, i, r, a) {
if (n + i > t.length) throw new RangeError('Index out of range');
if (n < 0) throw new RangeError('Index out of range');
}
function z(t, e, n, i, a) {
return a || C(t, 0, n, 4), r.write(t, e, n, i, 23, 4), n + 4;
}
function R(t, e, n, i, a) {
return a || C(t, 0, n, 8), r.write(t, e, n, i, 52, 8), n + 8;
}
c.prototype.slice = function(t, e) {
var n = this.length;
var i;
if ((t = ~~t) < 0 ? (t += n) < 0 && (t = 0) : t > n && (t = n), (e = void 0 === e ? n : ~~e) < 0 ? (e += n) < 0 && (e = 0) : e > n && (e = n),
e < t && (e = t), c.TYPED_ARRAY_SUPPORT) (i = this.subarray(t, e)).__proto__ = c.prototype; else {
var r = e - t;
i = new c(r, void 0);
for (var a = 0; a < r; ++a) i[a] = this[a + t];
}
return i;
}, c.prototype.readUIntLE = function(t, e, n) {
t |= 0, e |= 0, n || I(t, e, this.length);
var i = this[t];
var r = 1;
var a = 0;
for (;++a < e && (r *= 256); ) i += this[t + a] * r;
return i;
}, c.prototype.readUIntBE = function(t, e, n) {
t |= 0, e |= 0, n || I(t, e, this.length);
var i = this[t + --e];
var r = 1;
for (;e > 0 && (r *= 256); ) i += this[t + --e] * r;
return i;
}, c.prototype.readUInt8 = function(t, e) {
return e || I(t, 1, this.length), this[t];
}, c.prototype.readUInt16LE = function(t, e) {
return e || I(t, 2, this.length), this[t] | this[t + 1] << 8;
}, c.prototype.readUInt16BE = function(t, e) {
return e || I(t, 2, this.length), this[t] << 8 | this[t + 1];
}, c.prototype.readUInt32LE = function(t, e) {
return e || I(t, 4, this.length), (this[t] | this[t + 1] << 8 | this[t + 2] << 16) + 16777216 * this[t + 3];
}, c.prototype.readUInt32BE = function(t, e) {
return e || I(t, 4, this.length), 16777216 * this[t] + (this[t + 1] << 16 | this[t + 2] << 8 | this[t + 3]);
}, c.prototype.readIntLE = function(t, e, n) {
t |= 0, e |= 0, n || I(t, e, this.length);
var i = this[t];
var r = 1;
var a = 0;
for (;++a < e && (r *= 256); ) i += this[t + a] * r;
return i >= (r *= 128) && (i -= Math.pow(2, 8 * e)), i;
}, c.prototype.readIntBE = function(t, e, n) {
t |= 0, e |= 0, n || I(t, e, this.length);
var i = e;
var r = 1;
var a = this[t + --i];
for (;i > 0 && (r *= 256); ) a += this[t + --i] * r;
return a >= (r *= 128) && (a -= Math.pow(2, 8 * e)), a;
}, c.prototype.readInt8 = function(t, e) {
return e || I(t, 1, this.length), 128 & this[t] ? -1 * (255 - this[t] + 1) : this[t];
}, c.prototype.readInt16LE = function(t, e) {
e || I(t, 2, this.length);
var n = this[t] | this[t + 1] << 8;
return 32768 & n ? 4294901760 | n : n;
}, c.prototype.readInt16BE = function(t, e) {
e || I(t, 2, this.length);
var n = this[t + 1] | this[t] << 8;
return 32768 & n ? 4294901760 | n : n;
}, c.prototype.readInt32LE = function(t, e) {
return e || I(t, 4, this.length), this[t] | this[t + 1] << 8 | this[t + 2] << 16 | this[t + 3] << 24;
}, c.prototype.readInt32BE = function(t, e) {
return e || I(t, 4, this.length), this[t] << 24 | this[t + 1] << 16 | this[t + 2] << 8 | this[t + 3];
}, c.prototype.readFloatLE = function(t, e) {
return e || I(t, 4, this.length), r.read(this, t, !0, 23, 4);
}, c.prototype.readFloatBE = function(t, e) {
return e || I(t, 4, this.length), r.read(this, t, !1, 23, 4);
}, c.prototype.readDoubleLE = function(t, e) {
return e || I(t, 8, this.length), r.read(this, t, !0, 52, 8);
}, c.prototype.readDoubleBE = function(t, e) {
return e || I(t, 8, this.length), r.read(this, t, !1, 52, 8);
}, c.prototype.writeUIntLE = function(t, e, n, i) {
(t = +t, e |= 0, n |= 0, i) || O(this, t, e, n, Math.pow(2, 8 * n) - 1, 0);
var r = 1;
var a = 0;
for (this[e] = 255 & t; ++a < n && (r *= 256); ) this[e + a] = t / r & 255;
return e + n;
}, c.prototype.writeUIntBE = function(t, e, n, i) {
(t = +t, e |= 0, n |= 0, i) || O(this, t, e, n, Math.pow(2, 8 * n) - 1, 0);
var r = n - 1;
var a = 1;
for (this[e + r] = 255 & t; --r >= 0 && (a *= 256); ) this[e + r] = t / a & 255;
return e + n;
}, c.prototype.writeUInt8 = function(t, e, n) {
return t = +t, e |= 0, n || O(this, t, e, 1, 255, 0), c.TYPED_ARRAY_SUPPORT || (t = Math.floor(t)),
this[e] = 255 & t, e + 1;
}, c.prototype.writeUInt16LE = function(t, e, n) {
return t = +t, e |= 0, n || O(this, t, e, 2, 65535, 0), c.TYPED_ARRAY_SUPPORT ? (this[e] = 255 & t,
this[e + 1] = t >>> 8) : H(this, t, e, !0), e + 2;
}, c.prototype.writeUInt16BE = function(t, e, n) {
return t = +t, e |= 0, n || O(this, t, e, 2, 65535, 0), c.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 8,
this[e + 1] = 255 & t) : H(this, t, e, !1), e + 2;
}, c.prototype.writeUInt32LE = function(t, e, n) {
return t = +t, e |= 0, n || O(this, t, e, 4, 4294967295, 0), c.TYPED_ARRAY_SUPPORT ? (this[e + 3] = t >>> 24,
this[e + 2] = t >>> 16, this[e + 1] = t >>> 8, this[e] = 255 & t) : E(this, t, e, !0),
e + 4;
}, c.prototype.writeUInt32BE = function(t, e, n) {
return t = +t, e |= 0, n || O(this, t, e, 4, 4294967295, 0), c.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 24,
this[e + 1] = t >>> 16, this[e + 2] = t >>> 8, this[e + 3] = 255 & t) : E(this, t, e, !1),
e + 4;
}, c.prototype.writeIntLE = function(t, e, n, i) {
if (t = +t, e |= 0, !i) {
var r = Math.pow(2, 8 * n - 1);
O(this, t, e, n, r - 1, -r);
}
var a = 0;
var o = 1;
var s = 0;
for (this[e] = 255 & t; ++a < n && (o *= 256); ) t < 0 && 0 === s && 0 !== this[e + a - 1] && (s = 1),
this[e + a] = (t / o | 0) - s & 255;
return e + n;
}, c.prototype.writeIntBE = function(t, e, n, i) {
if (t = +t, e |= 0, !i) {
var r = Math.pow(2, 8 * n - 1);
O(this, t, e, n, r - 1, -r);
}
var a = n - 1;
var o = 1;
var s = 0;
for (this[e + a] = 255 & t; --a >= 0 && (o *= 256); ) t < 0 && 0 === s && 0 !== this[e + a + 1] && (s = 1),
this[e + a] = (t / o | 0) - s & 255;
return e + n;
}, c.prototype.writeInt8 = function(t, e, n) {
return t = +t, e |= 0, n || O(this, t, e, 1, 127, -128), c.TYPED_ARRAY_SUPPORT || (t = Math.floor(t)),
t < 0 && (t = 255 + t + 1), this[e] = 255 & t, e + 1;
}, c.prototype.writeInt16LE = function(t, e, n) {
return t = +t, e |= 0, n || O(this, t, e, 2, 32767, -32768), c.TYPED_ARRAY_SUPPORT ? (this[e] = 255 & t,
this[e + 1] = t >>> 8) : H(this, t, e, !0), e + 2;
}, c.prototype.writeInt16BE = function(t, e, n) {
return t = +t, e |= 0, n || O(this, t, e, 2, 32767, -32768), c.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 8,
this[e + 1] = 255 & t) : H(this, t, e, !1), e + 2;
}, c.prototype.writeInt32LE = function(t, e, n) {
return t = +t, e |= 0, n || O(this, t, e, 4, 2147483647, -2147483648), c.TYPED_ARRAY_SUPPORT ? (this[e] = 255 & t,
this[e + 1] = t >>> 8, this[e + 2] = t >>> 16, this[e + 3] = t >>> 24) : E(this, t, e, !0),
e + 4;
}, c.prototype.writeInt32BE = function(t, e, n) {
return t = +t, e |= 0, n || O(this, t, e, 4, 2147483647, -2147483648), t < 0 && (t = 4294967295 + t + 1),
c.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 24, this[e + 1] = t >>> 16, this[e + 2] = t >>> 8,
this[e + 3] = 255 & t) : E(this, t, e, !1), e + 4;
}, c.prototype.writeFloatLE = function(t, e, n) {
return z(this, t, e, !0, n);
}, c.prototype.writeFloatBE = function(t, e, n) {
return z(this, t, e, !1, n);
}, c.prototype.writeDoubleLE = function(t, e, n) {
return R(this, t, e, !0, n);
}, c.prototype.writeDoubleBE = function(t, e, n) {
return R(this, t, e, !1, n);
}, c.prototype.copy = function(t, e, n, i) {
if (n || (n = 0), i || 0 === i || (i = this.length), e >= t.length && (e = t.length),
e || (e = 0), i > 0 && i < n && (i = n), i === n) return 0;
if (0 === t.length || 0 === this.length) return 0;
if (e < 0) throw new RangeError('targetStart out of bounds');
if (n < 0 || n >= this.length) throw new RangeError('sourceStart out of bounds');
if (i < 0) throw new RangeError('sourceEnd out of bounds');
i > this.length && (i = this.length), t.length - e < i - n && (i = t.length - e + n);
var r = i - n;
var a;
if (this === t && n < e && e < i) for (a = r - 1; a >= 0; --a) t[a + e] = this[a + n]; else if (r < 1e3 || !c.TYPED_ARRAY_SUPPORT) for (a = 0; a < r; ++a) t[a + e] = this[a + n]; else Uint8Array.prototype.set.call(t, this.subarray(n, n + r), e);
return r;
}, c.prototype.fill = function(t, e, n, i) {
if ('string' == typeof t) {
if ('string' == typeof e ? (i = e, e = 0, n = this.length) : 'string' == typeof n && (i = n,
n = this.length), 1 === t.length) {
var r = t.charCodeAt(0);
r < 256 && (t = r);
}
if (void 0 !== i && 'string' != typeof i) throw new TypeError('encoding must be a string');
if ('string' == typeof i && !c.isEncoding(i)) throw new TypeError('Unknown encoding: ' + i);
} else 'number' == typeof t && (t &= 255);
if (e < 0 || this.length < e || this.length < n) throw new RangeError('Out of range index');
if (n <= e) return this;
var a;
if (e >>>= 0, n = void 0 === n ? this.length : n >>> 0, t || (t = 0), 'number' == typeof t) for (a = e; a < n; ++a) this[a] = t; else {
var o = c.isBuffer(t) ? t : F(new c(t, i).toString());
var s = o.length;
for (a = 0; a < n - e; ++a) this[a + e] = o[a % s];
}
return this;
};
var $ = /[^+\/0-9A-Za-z-_]/g;
function U(t) {
return t < 16 ? '0' + t.toString(16) : t.toString(16);
}
function F(t, e) {
var n;
e = e || 1 / 0;
var i = t.length;
var r = null;
var a = [];
for (var o = 0; o < i; ++o) {
if ((n = t.charCodeAt(o)) > 55295 && n < 57344) {
if (!r) {
if (n > 56319) {
(e -= 3) > -1 && a.push(239, 191, 189);
continue;
}
if (o + 1 === i) {
(e -= 3) > -1 && a.push(239, 191, 189);
continue;
}
r = n;
continue;
}
if (n < 56320) {
(e -= 3) > -1 && a.push(239, 191, 189), r = n;
continue;
}
n = 65536 + (r - 55296 << 10 | n - 56320);
} else r && (e -= 3) > -1 && a.push(239, 191, 189);
if (r = null, n < 128) {
if ((e -= 1) < 0) break;
a.push(n);
} else if (n < 2048) {
if ((e -= 2) < 0) break;
a.push(n >> 6 | 192, 63 & n | 128);
} else if (n < 65536) {
if ((e -= 3) < 0) break;
a.push(n >> 12 | 224, n >> 6 & 63 | 128, 63 & n | 128);
} else {
if (!(n < 1114112)) throw new Error('Invalid code point');
if ((e -= 4) < 0) break;
a.push(n >> 18 | 240, n >> 12 & 63 | 128, n >> 6 & 63 | 128, 63 & n | 128);
}
}
return a;
}
function L(t) {
return i.toByteArray(function(t) {
if ((t = function(t) {
return t.trim ? t.trim() : t.replace(/^\s+|\s+$/g, '');
}(t).replace($, '')).length < 2) return '';
for (;t.length % 4 != 0; ) t += '=';
return t;
}(t));
}
function N(t, e, n, i) {
for (var r = 0; r < i && !(r + n >= e.length || r >= t.length); ++r) e[r + n] = t[r];
return r;
}
}).call(this, n("./node_modules/webpack/buildin/global.js"));
},
"./node_modules/buffer/node_modules/isarray/index.js": function(t, e) {
var n = {}.toString;
t.exports = Array.isArray || function(t) {
return '[object Array]' == n.call(t);
};
},
"./node_modules/charenc/charenc.js": function(t, e) {
var n = {
utf8: {
stringToBytes: function(t) {
return n.bin.stringToBytes(unescape(encodeURIComponent(t)));
},
bytesToString: function(t) {
return decodeURIComponent(escape(n.bin.bytesToString(t)));
}
},
bin: {
stringToBytes: function(t) {
for (var e = [], n = 0; n < t.length; n++) e.push(255 & t.charCodeAt(n));
return e;
},
bytesToString: function(t) {
for (var e = [], n = 0; n < t.length; n++) e.push(String.fromCharCode(t[n]));
return e.join('');
}
}
};
t.exports = n;
},
"./node_modules/crypt/crypt.js": function(t, e) {
var n, i;
n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', i = {
rotl: function(t, e) {
return t << e | t >>> 32 - e;
},
rotr: function(t, e) {
return t << 32 - e | t >>> e;
},
endian: function(t) {
if (t.constructor == Number) return 16711935 & i.rotl(t, 8) | 4278255360 & i.rotl(t, 24);
for (var e = 0; e < t.length; e++) t[e] = i.endian(t[e]);
return t;
},
randomBytes: function(t) {
for (var e = []; t > 0; t--) e.push(Math.floor(256 * Math.random()));
return e;
},
bytesToWords: function(t) {
for (var e = [], n = 0, i = 0; n < t.length; n++, i += 8) e[i >>> 5] |= t[n] << 24 - i % 32;
return e;
},
wordsToBytes: function(t) {
for (var e = [], n = 0; n < 32 * t.length; n += 8) e.push(t[n >>> 5] >>> 24 - n % 32 & 255);
return e;
},
bytesToHex: function(t) {
for (var e = [], n = 0; n < t.length; n++) e.push((t[n] >>> 4).toString(16)), e.push((15 & t[n]).toString(16));
return e.join('');
},
hexToBytes: function(t) {
for (var e = [], n = 0; n < t.length; n += 2) e.push(parseInt(t.substr(n, 2), 16));
return e;
},
bytesToBase64: function(t) {
for (var e = [], i = 0; i < t.length; i += 3) {
var r = t[i] << 16 | t[i + 1] << 8 | t[i + 2];
for (var a = 0; a < 4; a++) 8 * i + 6 * a <= 8 * t.length ? e.push(n.charAt(r >>> 6 * (3 - a) & 63)) : e.push('=');
}
return e.join('');
},
base64ToBytes: function(t) {
t = t.replace(/[^A-Z0-9+\/]/gi, '');
for (var e = [], i = 0, r = 0; i < t.length; r = ++i % 4) 0 != r && e.push((n.indexOf(t.charAt(i - 1)) & Math.pow(2, -2 * r + 8) - 1) << 2 * r | n.indexOf(t.charAt(i)) >>> 6 - 2 * r);
return e;
}
}, t.exports = i;
},
"./node_modules/event-lite/event-lite.js": function(t, e, n) {
!function(e) {
t.exports = e;
var n = "listeners";
var i = {
on: function(t, e) {
return o(this, t).push(e), this;
},
once: function(t, e) {
var n = this;
return i.originalListener = e, o(n, t).push(i), n;
function i() {
a.call(n, t, i), e.apply(this, arguments);
}
},
off: a,
emit: function(t, e) {
var n = this;
var i = o(n, t, !0);
if (!i) return !1;
var r = arguments.length;
if (1 === r) i.forEach(function(t) {
t.call(n);
}); else if (2 === r) i.forEach(function(t) {
t.call(n, e);
}); else {
var a = [].slice.call(arguments, 1);
i.forEach(function(t) {
t.apply(n, a);
});
}
return !!i.length;
}
};
function r(t) {
for (var e in i) t[e] = i[e];
return t;
}
function a(t, e) {
var i = this;
var r;
if (arguments.length) {
if (e) {
if (r = o(i, t, !0)) {
if (!(r = r.filter(function(t) {
return t !== e && t.originalListener !== e;
})).length) return a.call(i, t);
i[n][t] = r;
}
} else if ((r = i[n]) && (delete r[t], !Object.keys(r).length)) return a.call(i);
} else delete i[n];
return i;
}
function o(t, e, i) {
if (!i || t[n]) {
var r = t[n] || (t[n] = {});
return r[e] || (r[e] = []);
}
}
r(e.prototype), e.mixin = r;
}(function t() {
if (!(this instanceof t)) return new t;
});
},
"./node_modules/ieee754/index.js": function(t, e) {
e.read = function(t, e, n, i, r) {
var a, o;
var s = 8 * r - i - 1;
var c = (1 << s) - 1;
var l = c >> 1;
var u = -7;
var f = n ? r - 1 : 0;
var d = n ? -1 : 1;
var h = t[e + f];
for (f += d, a = h & (1 << -u) - 1, h >>= -u, u += s; u > 0; a = 256 * a + t[e + f],
f += d, u -= 8) ;
for (o = a & (1 << -u) - 1, a >>= -u, u += i; u > 0; o = 256 * o + t[e + f], f += d,
u -= 8) ;
if (0 === a) a = 1 - l; else {
if (a === c) return o ? NaN : 1 / 0 * (h ? -1 : 1);
o += Math.pow(2, i), a -= l;
}
return (h ? -1 : 1) * o * Math.pow(2, a - i);
}, e.write = function(t, e, n, i, r, a) {
var o, s, c;
var l = 8 * a - r - 1;
var u = (1 << l) - 1;
var f = u >> 1;
var d = 23 === r ? Math.pow(2, -24) - Math.pow(2, -77) : 0;
var h = i ? 0 : a - 1;
var m = i ? 1 : -1;
var p = e < 0 || 0 === e && 1 / e < 0 ? 1 : 0;
for (e = Math.abs(e), isNaN(e) || e === 1 / 0 ? (s = isNaN(e) ? 1 : 0, o = u) : (o = Math.floor(Math.log(e) / Math.LN2),
e * (c = Math.pow(2, -o)) < 1 && (o--, c *= 2), (e += o + f >= 1 ? d / c : d * Math.pow(2, 1 - f)) * c >= 2 && (o++,
c /= 2), o + f >= u ? (s = 0, o = u) : o + f >= 1 ? (s = (e * c - 1) * Math.pow(2, r),
o += f) : (s = e * Math.pow(2, f - 1) * Math.pow(2, r), o = 0)); r >= 8; t[n + h] = 255 & s,
h += m, s /= 256, r -= 8) ;
for (o = o << r | s, l += r; l > 0; t[n + h] = 255 & o, h += m, o /= 256, l -= 8) ;
t[n + h - m] |= 128 * p;
};
},
"./node_modules/int64-buffer/int64-buffer.js": function(t, e, n) {
(function(t) {
!function(e) {
var n = "undefined";
var i = n !== typeof t && t;
var r = n !== typeof Uint8Array && Uint8Array;
var a = n !== typeof ArrayBuffer && ArrayBuffer;
var o = [ 0, 0, 0, 0, 0, 0, 0, 0 ];
var s = Array.isArray || function(t) {
return !!t && "[object Array]" == {}.toString.call(t);
};
var c = 4294967296;
var l;
function u(t, s, u) {
var w = s ? 0 : 4;
var _ = s ? 4 : 0;
var x = s ? 0 : 3;
var M = s ? 1 : 2;
var j = s ? 2 : 1;
var S = s ? 3 : 0;
var A = s ? g : k;
var T = s ? b : y;
var D = I.prototype;
var P = "is" + t;
var B = "_" + P;
return D.buffer = void 0, D.offset = 0, D[B] = !0, D.toNumber = O, D.toString = function(t) {
var e = this.buffer;
var n = this.offset;
var i = E(e, n + w);
var r = E(e, n + _);
var a = "";
var o = !u && 2147483648 & i;
o && (i = ~i, r = c - r);
t = t || 10;
for (;;) {
var s = i % t * c + r;
if (i = Math.floor(i / t), r = Math.floor(s / t), a = (s % t).toString(t) + a, !i && !r) break;
}
o && (a = "-" + a);
return a;
}, D.toJSON = O, D.toArray = f, i && (D.toBuffer = d), r && (D.toArrayBuffer = h),
I[P] = function(t) {
return !(!t || !t[B]);
}, e[t] = I, I;
function I(t, e, i, s) {
return this instanceof I ? function(t, e, i, s, u) {
r && a && (e instanceof a && (e = new r(e)), s instanceof a && (s = new r(s)));
if (!(e || i || s || l)) return void (t.buffer = v(o, 0));
if (!m(e, i)) {
u = i, s = e, i = 0, e = new (l || Array)(8);
}
if (t.buffer = e, t.offset = i |= 0, n === typeof s) return;
"string" == typeof s ? function(t, e, n, i) {
var r = 0;
var a = n.length;
var o = 0;
var s = 0;
"-" === n[0] && r++;
var l = r;
for (;r < a; ) {
var u = parseInt(n[r++], i);
if (!(u >= 0)) break;
s = s * i + u, o = o * i + Math.floor(s / c), s %= c;
}
l && (o = ~o, s ? s = c - s : o++);
H(t, e + w, o), H(t, e + _, s);
}(e, i, s, u || 10) : m(s, u) ? p(e, i, s, u) : "number" == typeof u ? (H(e, i + w, s),
H(e, i + _, u)) : s > 0 ? A(e, i, s) : s < 0 ? T(e, i, s) : p(e, i, o, 0);
}(this, t, e, i, s) : new I(t, e, i, s);
}
function O() {
var t = this.buffer;
var e = this.offset;
var n = E(t, e + w);
var i = E(t, e + _);
return u || (n |= 0), n ? n * c + i : i;
}
function H(t, e, n) {
t[e + S] = 255 & n, n >>= 8, t[e + j] = 255 & n, n >>= 8, t[e + M] = 255 & n, n >>= 8,
t[e + x] = 255 & n;
}
function E(t, e) {
return 16777216 * t[e + x] + (t[e + M] << 16) + (t[e + j] << 8) + t[e + S];
}
}
function f(t) {
var e = this.buffer;
var n = this.offset;
return l = null, !1 !== t && 0 === n && 8 === e.length && s(e) ? e : v(e, n);
}
function d(e) {
var n = this.buffer;
var r = this.offset;
if (l = i, !1 !== e && 0 === r && 8 === n.length && t.isBuffer(n)) return n;
var a = new i(8);
return p(a, 0, n, r), a;
}
function h(t) {
var e = this.buffer;
var n = this.offset;
var i = e.buffer;
if (l = r, !1 !== t && 0 === n && i instanceof a && 8 === i.byteLength) return i;
var o = new r(8);
return p(o, 0, e, n), o.buffer;
}
function m(t, e) {
var n = t && t.length;
return e |= 0, n && e + 8 <= n && "string" != typeof t[e];
}
function p(t, e, n, i) {
e |= 0, i |= 0;
for (var r = 0; r < 8; r++) t[e++] = 255 & n[i++];
}
function v(t, e) {
return [].slice.call(t, e, e + 8);
}
function g(t, e, n) {
var i = e + 8;
for (;i > e; ) t[--i] = 255 & n, n /= 256;
}
function b(t, e, n) {
var i = e + 8;
for (n++; i > e; ) t[--i] = 255 & -n ^ 255, n /= 256;
}
function k(t, e, n) {
var i = e + 8;
for (;e < i; ) t[e++] = 255 & n, n /= 256;
}
function y(t, e, n) {
var i = e + 8;
for (n++; e < i; ) t[e++] = 255 & -n ^ 255, n /= 256;
}
u("Uint64BE", !0, !0), u("Int64BE", !0, !1), u("Uint64LE", !1, !0), u("Int64LE", !1, !1);
}('string' != typeof e.nodeName ? e : this || {});
}).call(this, n("./node_modules/buffer/index.js").Buffer);
},
"./node_modules/is-buffer/index.js": function(t, e) {
function n(t) {
return !!t.constructor && 'function' == typeof t.constructor.isBuffer && t.constructor.isBuffer(t);
}
t.exports = function(t) {
return null != t && (n(t) || function(t) {
return 'function' == typeof t.readFloatLE && 'function' == typeof t.slice && n(t.slice(0, 0));
}(t) || !!t.h);
};
},
"./node_modules/md5/md5.js": function(t, e, n) {
var i, r, a, o, s;
i = n("./node_modules/crypt/crypt.js"), r = n("./node_modules/charenc/charenc.js").utf8,
a = n("./node_modules/is-buffer/index.js"), o = n("./node_modules/charenc/charenc.js").bin,
(s = function(t, e) {
t.constructor == String ? t = e && 'binary' === e.encoding ? o.stringToBytes(t) : r.stringToBytes(t) : a(t) ? t = [].slice.call(t, 0) : Array.isArray(t) || (t = t.toString());
var n = i.bytesToWords(t), c = 8 * t.length, l = 1732584193, u = -271733879, f = -1732584194, d = 271733878;
for (var h = 0; h < n.length; h++) n[h] = 16711935 & (n[h] << 8 | n[h] >>> 24) | 4278255360 & (n[h] << 24 | n[h] >>> 8);
n[c >>> 5] |= 128 << c % 32, n[14 + (c + 64 >>> 9 << 4)] = c;
var m = s.k, p = s._, v = s.j, g = s.$;
for (h = 0; h < n.length; h += 16) {
var b = l, k = u, y = f, w = d;
l = m(l, u, f, d, n[h + 0], 7, -680876936), d = m(d, l, u, f, n[h + 1], 12, -389564586),
f = m(f, d, l, u, n[h + 2], 17, 606105819), u = m(u, f, d, l, n[h + 3], 22, -1044525330),
l = m(l, u, f, d, n[h + 4], 7, -176418897), d = m(d, l, u, f, n[h + 5], 12, 1200080426),
f = m(f, d, l, u, n[h + 6], 17, -1473231341), u = m(u, f, d, l, n[h + 7], 22, -45705983),
l = m(l, u, f, d, n[h + 8], 7, 1770035416), d = m(d, l, u, f, n[h + 9], 12, -1958414417),
f = m(f, d, l, u, n[h + 10], 17, -42063), u = m(u, f, d, l, n[h + 11], 22, -1990404162),
l = m(l, u, f, d, n[h + 12], 7, 1804603682), d = m(d, l, u, f, n[h + 13], 12, -40341101),
f = m(f, d, l, u, n[h + 14], 17, -1502002290), l = p(l, u = m(u, f, d, l, n[h + 15], 22, 1236535329), f, d, n[h + 1], 5, -165796510),
d = p(d, l, u, f, n[h + 6], 9, -1069501632), f = p(f, d, l, u, n[h + 11], 14, 643717713),
u = p(u, f, d, l, n[h + 0], 20, -373897302), l = p(l, u, f, d, n[h + 5], 5, -701558691),
d = p(d, l, u, f, n[h + 10], 9, 38016083), f = p(f, d, l, u, n[h + 15], 14, -660478335),
u = p(u, f, d, l, n[h + 4], 20, -405537848), l = p(l, u, f, d, n[h + 9], 5, 568446438),
d = p(d, l, u, f, n[h + 14], 9, -1019803690), f = p(f, d, l, u, n[h + 3], 14, -187363961),
u = p(u, f, d, l, n[h + 8], 20, 1163531501), l = p(l, u, f, d, n[h + 13], 5, -1444681467),
d = p(d, l, u, f, n[h + 2], 9, -51403784), f = p(f, d, l, u, n[h + 7], 14, 1735328473),
l = v(l, u = p(u, f, d, l, n[h + 12], 20, -1926607734), f, d, n[h + 5], 4, -378558),
d = v(d, l, u, f, n[h + 8], 11, -2022574463), f = v(f, d, l, u, n[h + 11], 16, 1839030562),
u = v(u, f, d, l, n[h + 14], 23, -35309556), l = v(l, u, f, d, n[h + 1], 4, -1530992060),
d = v(d, l, u, f, n[h + 4], 11, 1272893353), f = v(f, d, l, u, n[h + 7], 16, -155497632),
u = v(u, f, d, l, n[h + 10], 23, -1094730640), l = v(l, u, f, d, n[h + 13], 4, 681279174),
d = v(d, l, u, f, n[h + 0], 11, -358537222), f = v(f, d, l, u, n[h + 3], 16, -722521979),
u = v(u, f, d, l, n[h + 6], 23, 76029189), l = v(l, u, f, d, n[h + 9], 4, -640364487),
d = v(d, l, u, f, n[h + 12], 11, -421815835), f = v(f, d, l, u, n[h + 15], 16, 530742520),
l = g(l, u = v(u, f, d, l, n[h + 2], 23, -995338651), f, d, n[h + 0], 6, -198630844),
d = g(d, l, u, f, n[h + 7], 10, 1126891415), f = g(f, d, l, u, n[h + 14], 15, -1416354905),
u = g(u, f, d, l, n[h + 5], 21, -57434055), l = g(l, u, f, d, n[h + 12], 6, 1700485571),
d = g(d, l, u, f, n[h + 3], 10, -1894986606), f = g(f, d, l, u, n[h + 10], 15, -1051523),
u = g(u, f, d, l, n[h + 1], 21, -2054922799), l = g(l, u, f, d, n[h + 8], 6, 1873313359),
d = g(d, l, u, f, n[h + 15], 10, -30611744), f = g(f, d, l, u, n[h + 6], 15, -1560198380),
u = g(u, f, d, l, n[h + 13], 21, 1309151649), l = g(l, u, f, d, n[h + 4], 6, -145523070),
d = g(d, l, u, f, n[h + 11], 10, -1120210379), f = g(f, d, l, u, n[h + 2], 15, 718787259),
u = g(u, f, d, l, n[h + 9], 21, -343485551), l = l + b >>> 0, u = u + k >>> 0, f = f + y >>> 0,
d = d + w >>> 0;
}
return i.endian([ l, u, f, d ]);
}).k = function(t, e, n, i, r, a, o) {
var s = t + (e & n | ~e & i) + (r >>> 0) + o;
return (s << a | s >>> 32 - a) + e;
}, s._ = function(t, e, n, i, r, a, o) {
var s = t + (e & i | n & ~i) + (r >>> 0) + o;
return (s << a | s >>> 32 - a) + e;
}, s.j = function(t, e, n, i, r, a, o) {
var s = t + (e ^ n ^ i) + (r >>> 0) + o;
return (s << a | s >>> 32 - a) + e;
}, s.$ = function(t, e, n, i, r, a, o) {
var s = t + (n ^ (e | ~i)) + (r >>> 0) + o;
return (s << a | s >>> 32 - a) + e;
}, s.F = 16, s.q = 16, t.exports = function(t, e) {
if (null == t) throw new Error('Illegal argument ' + t);
var n = i.wordsToBytes(s(t, e));
return e && e.asBytes ? n : e && e.asString ? o.bytesToString(n) : i.bytesToHex(n);
};
},
"./node_modules/msgpack-lite/lib/browser.js": function(t, e, n) {
e.encode = n("./node_modules/msgpack-lite/lib/encode.js").encode, e.decode = n("./node_modules/msgpack-lite/lib/decode.js").decode,
e.Encoder = n("./node_modules/msgpack-lite/lib/encoder.js").Encoder, e.Decoder = n("./node_modules/msgpack-lite/lib/decoder.js").Decoder,
e.createCodec = n("./node_modules/msgpack-lite/lib/ext.js").createCodec, e.codec = n("./node_modules/msgpack-lite/lib/codec.js").codec;
},
"./node_modules/msgpack-lite/lib/buffer-global.js": function(t, e, n) {
(function(e) {
function n(t) {
return t && t.isBuffer && t;
}
t.exports = n(void 0 !== e && e) || n(this.Buffer) || n("undefined" != typeof window && window.Buffer) || this.Buffer;
}).call(this, n("./node_modules/buffer/index.js").Buffer);
},
"./node_modules/msgpack-lite/lib/buffer-lite.js": function(t, e) {
e.copy = function(t, e, n, i) {
var r;
n || (n = 0);
i || 0 === i || (i = this.length);
e || (e = 0);
var a = i - n;
if (t === this && n < e && e < i) for (r = a - 1; r >= 0; r--) t[r + e] = this[r + n]; else for (r = 0; r < a; r++) t[r + e] = this[r + n];
return a;
}, e.toString = function(t, e, n) {
var i = this;
var r = 0 | e;
n || (n = i.length);
var a = '';
var o = 0;
for (;r < n; ) (o = i[r++]) < 128 ? a += String.fromCharCode(o) : (192 == (224 & o) ? o = (31 & o) << 6 | 63 & i[r++] : 224 == (240 & o) ? o = (15 & o) << 12 | (63 & i[r++]) << 6 | 63 & i[r++] : 240 == (248 & o) && (o = (7 & o) << 18 | (63 & i[r++]) << 12 | (63 & i[r++]) << 6 | 63 & i[r++]),
o >= 65536 ? (o -= 65536, a += String.fromCharCode((o >>> 10) + 55296, 56320 + (1023 & o))) : a += String.fromCharCode(o));
return a;
}, e.write = function(t, e) {
var n = this;
var i = e || (e |= 0);
var r = t.length;
var a = 0;
var o = 0;
for (;o < r; ) (a = t.charCodeAt(o++)) < 128 ? n[i++] = a : a < 2048 ? (n[i++] = 192 | a >>> 6,
n[i++] = 128 | 63 & a) : a < 55296 || a > 57343 ? (n[i++] = 224 | a >>> 12, n[i++] = 128 | a >>> 6 & 63,
n[i++] = 128 | 63 & a) : (a = 65536 + (a - 55296 << 10 | t.charCodeAt(o++) - 56320),
n[i++] = 240 | a >>> 18, n[i++] = 128 | a >>> 12 & 63, n[i++] = 128 | a >>> 6 & 63,
n[i++] = 128 | 63 & a);
return i - e;
};
},
"./node_modules/msgpack-lite/lib/bufferish-array.js": function(t, e, n) {
var i = n("./node_modules/msgpack-lite/lib/bufferish.js");
function r(t) {
return new Array(t);
}
(e = t.exports = r(0)).alloc = r, e.concat = i.concat, e.from = function(t) {
if (!i.isBuffer(t) && i.isView(t)) t = i.Uint8Array.from(t); else if (i.isArrayBuffer(t)) t = new Uint8Array(t); else {
if ("string" == typeof t) return i.from.call(e, t);
if ("number" == typeof t) throw new TypeError('"value" argument must not be a number');
}
return [].slice.call(t);
};
},
"./node_modules/msgpack-lite/lib/bufferish-buffer.js": function(t, e, n) {
var i = n("./node_modules/msgpack-lite/lib/bufferish.js");
var r = i.global;
function a(t) {
return new r(t);
}
(e = t.exports = i.hasBuffer ? a(0) : []).alloc = i.hasBuffer && r.alloc || a, e.concat = i.concat,
e.from = function(t) {
if (!i.isBuffer(t) && i.isView(t)) t = i.Uint8Array.from(t); else if (i.isArrayBuffer(t)) t = new Uint8Array(t); else {
if ("string" == typeof t) return i.from.call(e, t);
if ("number" == typeof t) throw new TypeError('"value" argument must not be a number');
}
return r.from && 1 !== r.from.length ? r.from(t) : new r(t);
};
},
"./node_modules/msgpack-lite/lib/bufferish-proto.js": function(t, e, n) {
var i = n("./node_modules/msgpack-lite/lib/buffer-lite.js");
var r;
e.copy = l, e.slice = u, e.toString = function(t, e, n) {
return (!s && a.isBuffer(this) ? this.toString : i.toString).apply(this, arguments);
}, e.write = (r = "write", function() {
return (this[r] || i[r]).apply(this, arguments);
});
var a = n("./node_modules/msgpack-lite/lib/bufferish.js");
var o = a.global;
var s = a.hasBuffer && "TYPED_ARRAY_SUPPORT" in o;
var c = s && !o.TYPED_ARRAY_SUPPORT;
function l(t, e, n, r) {
var o = a.isBuffer(this);
var s = a.isBuffer(t);
if (o && s) return this.copy(t, e, n, r);
if (c || o || s || !a.isView(this) || !a.isView(t)) return i.copy.call(this, t, e, n, r);
var l = n || null != r ? u.call(this, n, r) : this;
return t.set(l, e), l.length;
}
function u(t, e) {
var n = this.slice || !c && this.subarray;
if (n) return n.call(this, t, e);
var i = a.alloc.call(this, e - t);
return l.call(this, i, 0, t, e), i;
}
},
"./node_modules/msgpack-lite/lib/bufferish-uint8array.js": function(t, e, n) {
var i = n("./node_modules/msgpack-lite/lib/bufferish.js");
function r(t) {
return new Uint8Array(t);
}
(e = t.exports = i.hasArrayBuffer ? r(0) : []).alloc = r, e.concat = i.concat, e.from = function(t) {
if (i.isView(t)) {
var n = t.byteOffset;
var r = t.byteLength;
(t = t.buffer).byteLength !== r && (t.slice ? t = t.slice(n, n + r) : (t = new Uint8Array(t)).byteLength !== r && (t = [].slice.call(t, n, n + r)));
} else {
if ("string" == typeof t) return i.from.call(e, t);
if ("number" == typeof t) throw new TypeError('"value" argument must not be a number');
}
return new Uint8Array(t);
};
},
"./node_modules/msgpack-lite/lib/bufferish.js": function(t, e, n) {
var i = e.global = n("./node_modules/msgpack-lite/lib/buffer-global.js");
var r = e.hasBuffer = i && !!i.isBuffer;
var a = e.hasArrayBuffer = "undefined" != typeof ArrayBuffer;
var o = e.isArray = n("./node_modules/msgpack-lite/node_modules/isarray/index.js");
e.isArrayBuffer = a ? function(t) {
return t instanceof ArrayBuffer || m(t);
} : g;
var s = e.isBuffer = r ? i.isBuffer : g;
var c = e.isView = a ? ArrayBuffer.isView || b("ArrayBuffer", "buffer") : g;
e.alloc = h, e.concat = function(t, n) {
n || (n = 0, [].forEach.call(t, function(t) {
n += t.length;
}));
var i = this !== e && this || t[0];
var r = h.call(i, n);
var a = 0;
return [].forEach.call(t, function(t) {
a += d.copy.call(t, r, a);
}), r;
}, e.from = function(t) {
return "string" == typeof t ? p.call(this, t) : v(this).from(t);
};
var l = e.Array = n("./node_modules/msgpack-lite/lib/bufferish-array.js");
var u = e.Buffer = n("./node_modules/msgpack-lite/lib/bufferish-buffer.js");
var f = e.Uint8Array = n("./node_modules/msgpack-lite/lib/bufferish-uint8array.js");
var d = e.prototype = n("./node_modules/msgpack-lite/lib/bufferish-proto.js");
function h(t) {
return v(this).alloc(t);
}
var m = b("ArrayBuffer");
function p(t) {
var e = 3 * t.length;
var n = h.call(this, e);
var i = d.write.call(n, t);
return e !== i && (n = d.slice.call(n, 0, i)), n;
}
function v(t) {
return s(t) ? u : c(t) ? f : o(t) ? l : r ? u : a ? f : l;
}
function g() {
return !1;
}
function b(t, e) {
return t = "[object " + t + "]", function(n) {
return null != n && {}.toString.call(e ? n[e] : n) === t;
};
}
},
"./node_modules/msgpack-lite/lib/codec-base.js": function(t, e, n) {
var i = n("./node_modules/msgpack-lite/node_modules/isarray/index.js");
e.createCodec = s, e.install = function(t) {
for (var e in t) a.prototype[e] = o(a.prototype[e], t[e]);
}, e.filter = function(t) {
return i(t) ? function(t) {
return t = t.slice(), function(n) {
return t.reduce(e, n);
};
function e(t, e) {
return e(t);
}
}(t) : t;
};
var r = n("./node_modules/msgpack-lite/lib/bufferish.js");
function a(t) {
if (!(this instanceof a)) return new a(t);
this.options = t, this.init();
}
function o(t, e) {
return t && e ? function() {
return t.apply(this, arguments), e.apply(this, arguments);
} : t || e;
}
function s(t) {
return new a(t);
}
a.prototype.init = function() {
var t = this.options;
return t && t.uint8array && (this.bufferish = r.Uint8Array), this;
}, e.preset = s({
preset: !0
});
},
"./node_modules/msgpack-lite/lib/codec.js": function(t, e, n) {
n("./node_modules/msgpack-lite/lib/read-core.js"), n("./node_modules/msgpack-lite/lib/write-core.js"),
e.codec = {
preset: n("./node_modules/msgpack-lite/lib/codec-base.js").preset
};
},
"./node_modules/msgpack-lite/lib/decode-buffer.js": function(t, e, n) {
e.DecodeBuffer = r;
var i = n("./node_modules/msgpack-lite/lib/read-core.js").preset;
function r(t) {
if (!(this instanceof r)) return new r(t);
if (t && (this.options = t, t.codec)) {
var e = this.codec = t.codec;
e.bufferish && (this.bufferish = e.bufferish);
}
try {
if (window._modPacketStats) {
var n = Date.now();
var i = window._modPacketStats;
var a = n - 5e3;
for (;i.recent.length && i.recent[0].t < a; ) i.recent.shift();
var o = n - 1e3;
var s = 0;
var c = {};
for (var l = 0; l < i.recent.length; ++l) {
var u = i.recent[l];
u.t >= o && (s++, c[u.type] = (c[u.type] || 0) + 1);
}
var f = document.getElementById('ppsOverlay');
if (f) {
var d = [];
d.push('PPS: ' + s);
var h = Object.keys(c).sort(function(t, e) {
return c[e] - c[t];
});
for (var m = 0; m < Math.min(5, h.length); ++m) {
var p = h[m];
d.push(p + ': ' + c[p]);
}
f.innerText = d.join('\n');
}
}
} catch (t) {}
}
n("./node_modules/msgpack-lite/lib/flex-buffer.js").FlexDecoder.mixin(r.prototype),
r.prototype.codec = i, r.prototype.fetch = function() {
return this.codec.decode(this);
};
},
"./node_modules/msgpack-lite/lib/decode.js": function(t, e, n) {
e.decode = function(t, e) {
var n = new i(e);
return n.write(t), n.read();
};
var i = n("./node_modules/msgpack-lite/lib/decode-buffer.js").DecodeBuffer;
},
"./node_modules/msgpack-lite/lib/decoder.js": function(t, e, n) {
e.Decoder = a;
var i = n("./node_modules/event-lite/event-lite.js");
var r = n("./node_modules/msgpack-lite/lib/decode-buffer.js").DecodeBuffer;
function a(t) {
if (!(this instanceof a)) return new a(t);
r.call(this, t);
}
a.prototype = new r, i.mixin(a.prototype), a.prototype.decode = function(t) {
arguments.length && this.write(t), this.flush();
}, a.prototype.push = function(t) {
this.emit("data", t);
}, a.prototype.end = function(t) {
this.decode(t), this.emit("end");
};
},
"./node_modules/msgpack-lite/lib/encode-buffer.js": function(t, e, n) {
e.EncodeBuffer = r;
var i = n("./node_modules/msgpack-lite/lib/write-core.js").preset;
function r(t) {
if (!(this instanceof r)) return new r(t);
if (t && (this.options = t, t.codec)) {
var e = this.codec = t.codec;
e.bufferish && (this.bufferish = e.bufferish);
}
}
n("./node_modules/msgpack-lite/lib/flex-buffer.js").FlexEncoder.mixin(r.prototype),
r.prototype.codec = i, r.prototype.write = function(t) {
this.codec.encode(this, t);
};
},
"./node_modules/msgpack-lite/lib/encode.js": function(t, e, n) {
e.encode = function(t, e) {
var n = new i(e);
return n.write(t), n.read();
};
var i = n("./node_modules/msgpack-lite/lib/encode-buffer.js").EncodeBuffer;
},
"./node_modules/msgpack-lite/lib/encoder.js": function(t, e, n) {
e.Encoder = a;
var i = n("./node_modules/event-lite/event-lite.js");
var r = n("./node_modules/msgpack-lite/lib/encode-buffer.js").EncodeBuffer;
function a(t) {
if (!(this instanceof a)) return new a(t);
r.call(this, t);
}
a.prototype = new r, i.mixin(a.prototype), a.prototype.encode = function(t) {
this.write(t), this.emit("data", this.read());
}, a.prototype.end = function(t) {
arguments.length && this.encode(t), this.flush(), this.emit("end");
};
},
"./node_modules/msgpack-lite/lib/ext-buffer.js": function(t, e, n) {
e.ExtBuffer = function t(e, n) {
if (!(this instanceof t)) return new t(e, n);
this.buffer = i.from(e), this.type = n;
};
var i = n("./node_modules/msgpack-lite/lib/bufferish.js");
},
"./node_modules/msgpack-lite/lib/ext-packer.js": function(t, e, n) {
e.setExtPackers = function(t) {
t.addExtPacker(14, Error, [ f, c ]), t.addExtPacker(1, EvalError, [ f, c ]), t.addExtPacker(2, RangeError, [ f, c ]),
t.addExtPacker(3, ReferenceError, [ f, c ]), t.addExtPacker(4, SyntaxError, [ f, c ]),
t.addExtPacker(5, TypeError, [ f, c ]), t.addExtPacker(6, URIError, [ f, c ]), t.addExtPacker(10, RegExp, [ u, c ]),
t.addExtPacker(11, Boolean, [ l, c ]), t.addExtPacker(12, String, [ l, c ]), t.addExtPacker(13, Date, [ Number, c ]),
t.addExtPacker(15, Number, [ l, c ]), "undefined" != typeof Uint8Array && (t.addExtPacker(17, Int8Array, a),
t.addExtPacker(18, Uint8Array, a), t.addExtPacker(19, Int16Array, a), t.addExtPacker(20, Uint16Array, a),
t.addExtPacker(21, Int32Array, a), t.addExtPacker(22, Uint32Array, a), t.addExtPacker(23, Float32Array, a),
"undefined" != typeof Float64Array && t.addExtPacker(24, Float64Array, a), "undefined" != typeof Uint8ClampedArray && t.addExtPacker(25, Uint8ClampedArray, a),
t.addExtPacker(26, ArrayBuffer, a), t.addExtPacker(29, DataView, a));
i.hasBuffer && t.addExtPacker(27, r, i.from);
};
var i = n("./node_modules/msgpack-lite/lib/bufferish.js");
var r = i.global;
var a = i.Uint8Array.from;
var o;
var s = {
name: 1,
message: 1,
stack: 1,
columnNumber: 1,
fileName: 1,
lineNumber: 1
};
function c(t) {
return o || (o = n("./node_modules/msgpack-lite/lib/encode.js").encode), o(t);
}
function l(t) {
return t.valueOf();
}
function u(t) {
(t = /t/.toString.call(t).split("/")).shift();
var e = [ t.pop() ];
return e.unshift(t.join("/")), e;
}
function f(t) {
var e = {};
for (var n in s) e[n] = t[n];
return e;
}
},
"./node_modules/msgpack-lite/lib/ext-unpacker.js": function(t, e, n) {
e.setExtUnpackers = function(t) {
t.addExtUnpacker(14, [ s, l(Error) ]), t.addExtUnpacker(1, [ s, l(EvalError) ]),
t.addExtUnpacker(2, [ s, l(RangeError) ]), t.addExtUnpacker(3, [ s, l(ReferenceError) ]),
t.addExtUnpacker(4, [ s, l(SyntaxError) ]), t.addExtUnpacker(5, [ s, l(TypeError) ]),
t.addExtUnpacker(6, [ s, l(URIError) ]), t.addExtUnpacker(10, [ s, c ]), t.addExtUnpacker(11, [ s, u(Boolean) ]),
t.addExtUnpacker(12, [ s, u(String) ]), t.addExtUnpacker(13, [ s, u(Date) ]), t.addExtUnpacker(15, [ s, u(Number) ]),
"undefined" != typeof Uint8Array && (t.addExtUnpacker(17, u(Int8Array)), t.addExtUnpacker(18, u(Uint8Array)),
t.addExtUnpacker(19, [ f, u(Int16Array) ]), t.addExtUnpacker(20, [ f, u(Uint16Array) ]),
t.addExtUnpacker(21, [ f, u(Int32Array) ]), t.addExtUnpacker(22, [ f, u(Uint32Array) ]),
t.addExtUnpacker(23, [ f, u(Float32Array) ]), "undefined" != typeof Float64Array && t.addExtUnpacker(24, [ f, u(Float64Array) ]),
"undefined" != typeof Uint8ClampedArray && t.addExtUnpacker(25, u(Uint8ClampedArray)),
t.addExtUnpacker(26, f), t.addExtUnpacker(29, [ f, u(DataView) ]));
i.hasBuffer && t.addExtUnpacker(27, u(r));
};
var i = n("./node_modules/msgpack-lite/lib/bufferish.js");
var r = i.global;
var a;
var o = {
name: 1,
message: 1,
stack: 1,
columnNumber: 1,
fileName: 1,
lineNumber: 1
};
function s(t) {
return a || (a = n("./node_modules/msgpack-lite/lib/decode.js").decode), a(t);
}
function c(t) {
return RegExp.apply(null, t);
}
function l(t) {
return function(e) {
var n = new t;
for (var i in o) n[i] = e[i];
return n;
};
}
function u(t) {
return function(e) {
return new t(e);
};
}
function f(t) {
return new Uint8Array(t).buffer;
}
},
"./node_modules/msgpack-lite/lib/ext.js": function(t, e, n) {
n("./node_modules/msgpack-lite/lib/read-core.js"), n("./node_modules/msgpack-lite/lib/write-core.js"),
e.createCodec = n("./node_modules/msgpack-lite/lib/codec-base.js").createCodec;
},
"./node_modules/msgpack-lite/lib/flex-buffer.js": function(t, e, n) {
e.FlexDecoder = a, e.FlexEncoder = o;
var i = n("./node_modules/msgpack-lite/lib/bufferish.js");
var r = "BUFFER_SHORTAGE";
function a() {
if (!(this instanceof a)) return new a;
}
function o() {
if (!(this instanceof o)) return new o;
}
function s() {
throw new Error("method not implemented: write()");
}
function c() {
throw new Error("method not implemented: fetch()");
}
function l() {
return this.buffers && this.buffers.length ? (this.flush(), this.pull()) : this.fetch();
}
function u(t) {
(this.buffers || (this.buffers = [])).push(t);
}
function f() {
return (this.buffers || (this.buffers = [])).shift();
}
function d(t) {
return function(e) {
for (var n in t) e[n] = t[n];
return e;
};
}
a.mixin = d({
bufferish: i,
write: function(t) {
var e = this.offset ? i.prototype.slice.call(this.buffer, this.offset) : this.buffer;
this.buffer = e ? t ? this.bufferish.concat([ e, t ]) : e : t, this.offset = 0;
},
fetch: c,
flush: function() {
for (;this.offset < this.buffer.length; ) {
var t = this.offset;
var e;
try {
e = this.fetch();
} catch (e) {
if (e && e.message != r) throw e;
this.offset = t;
break;
}
this.push(e);
}
},
push: u,
pull: f,
read: l,
reserve: function(t) {
var e = this.offset;
var n = e + t;
if (n > this.buffer.length) throw new Error(r);
return this.offset = n, e;
},
offset: 0
}), a.mixin(a.prototype), o.mixin = d({
bufferish: i,
write: s,
fetch: function() {
var t = this.start;
if (t < this.offset) {
var e = this.start = this.offset;
return i.prototype.slice.call(this.buffer, t, e);
}
},
flush: function() {
for (;this.start < this.offset; ) {
var t = this.fetch();
t && this.push(t);
}
},
push: u,
pull: function() {
var t = this.buffers || (this.buffers = []);
var e = t.length > 1 ? this.bufferish.concat(t) : t[0];
return t.length = 0, e;
},
read: l,
reserve: function(t) {
var e = 0 | t;
if (this.buffer) {
var n = this.buffer.length;
var i = 0 | this.offset;
var r = i + e;
if (r < n) return this.offset = r, i;
this.flush(), t = Math.max(t, Math.min(2 * n, this.maxBufferSize));
}
return t = Math.max(t, this.minBufferSize), this.buffer = this.bufferish.alloc(t),
this.start = 0, this.offset = e, 0;
},
send: function(t) {
var e = t.length;
if (e > this.minBufferSize) this.flush(), this.push(t); else {
var n = this.reserve(e);
i.prototype.copy.call(t, this.buffer, n);
}
},
maxBufferSize: 65536,
minBufferSize: 2048,
offset: 0,
start: 0
}), o.mixin(o.prototype);
},
"./node_modules/msgpack-lite/lib/read-core.js": function(t, e, n) {
var i = n("./node_modules/msgpack-lite/lib/ext-buffer.js").ExtBuffer;
var r = n("./node_modules/msgpack-lite/lib/ext-unpacker.js");
var a = n("./node_modules/msgpack-lite/lib/read-format.js").readUint8;
var o = n("./node_modules/msgpack-lite/lib/read-token.js");
var s = n("./node_modules/msgpack-lite/lib/codec-base.js");
function c() {
var t = this.options;
return this.decode = function(t) {
var e = o.getReadToken(t);
return function(t) {
var n = a(t);
var i = e[n];
if (!i) throw new Error("Invalid type: " + (n ? "0x" + n.toString(16) : n));
return i(t);
};
}(t), t && t.preset && r.setExtUnpackers(this), this;
}
s.install({
addExtUnpacker: function(t, e) {
(this.extUnpackers || (this.extUnpackers = []))[t] = s.filter(e);
},
getExtUnpacker: function(t) {
return (this.extUnpackers || (this.extUnpackers = []))[t] || function(e) {
return new i(e, t);
};
},
init: c
}), e.preset = c.call(s.preset);
},
"./node_modules/msgpack-lite/lib/read-format.js": function(t, e, n) {
var i = n("./node_modules/ieee754/index.js");
var r = n("./node_modules/int64-buffer/int64-buffer.js");
var a = r.Uint64BE;
var o = r.Int64BE;
e.getReadFormat = function(t) {
var e = s.hasArrayBuffer && t && t.binarraybuffer;
var n = t && t.int64;
return {
map: l && t && t.usemap ? d : f,
array: h,
str: m,
bin: e ? v : p,
ext: g,
uint8: b,
uint16: y,
uint32: _,
uint64: M(8, n ? A : j),
int8: k,
int16: w,
int32: x,
int64: M(8, n ? T : S),
float32: M(4, D),
float64: M(8, P)
};
}, e.readUint8 = b;
var s = n("./node_modules/msgpack-lite/lib/bufferish.js");
var c = n("./node_modules/msgpack-lite/lib/bufferish-proto.js");
var l = "undefined" != typeof Map;
var u = !0;
function f(t, e) {
var n = {};
var i;
var r = new Array(e);
var a = new Array(e);
var o = t.codec.decode;
for (i = 0; i < e; i++) r[i] = o(t), a[i] = o(t);
for (i = 0; i < e; i++) n[r[i]] = a[i];
return n;
}
function d(t, e) {
var n = new Map;
var i;
var r = new Array(e);
var a = new Array(e);
var o = t.codec.decode;
for (i = 0; i < e; i++) r[i] = o(t), a[i] = o(t);
for (i = 0; i < e; i++) n.set(r[i], a[i]);
return n;
}
function h(t, e) {
var n = new Array(e);
var i = t.codec.decode;
for (var r = 0; r < e; r++) n[r] = i(t);
return n;
}
function m(t, e) {
var n = t.reserve(e);
var i = n + e;
return c.toString.call(t.buffer, "utf-8", n, i);
}
function p(t, e) {
var n = t.reserve(e);
var i = n + e;
var r = c.slice.call(t.buffer, n, i);
return s.from(r);
}
function v(t, e) {
var n = t.reserve(e);
var i = n + e;
var r = c.slice.call(t.buffer, n, i);
return s.Uint8Array.from(r).buffer;
}
function g(t, e) {
var n = t.reserve(e + 1);
var i = t.buffer[n++];
var r = n + e;
var a = t.codec.getExtUnpacker(i);
if (!a) throw new Error("Invalid ext type: " + (i ? "0x" + i.toString(16) : i));
return a(c.slice.call(t.buffer, n, r));
}
function b(t) {
var e = t.reserve(1);
return t.buffer[e];
}
function k(t) {
var e = t.reserve(1);
var n = t.buffer[e];
return 128 & n ? n - 256 : n;
}
function y(t) {
var e = t.reserve(2);
var n = t.buffer;
return n[e++] << 8 | n[e];
}
function w(t) {
var e = t.reserve(2);
var n = t.buffer;
var i = n[e++] << 8 | n[e];
return 32768 & i ? i - 65536 : i;
}
function _(t) {
var e = t.reserve(4);
var n = t.buffer;
return 16777216 * n[e++] + (n[e++] << 16) + (n[e++] << 8) + n[e];
}
function x(t) {
var e = t.reserve(4);
var n = t.buffer;
return n[e++] << 24 | n[e++] << 16 | n[e++] << 8 | n[e];
}
function M(t, e) {
return function(n) {
var i = n.reserve(t);
return e.call(n.buffer, i, u);
};
}
function j(t) {
return new a(this, t).toNumber();
}
function S(t) {
return new o(this, t).toNumber();
}
function A(t) {
return new a(this, t);
}
function T(t) {
return new o(this, t);
}
function D(t) {
return i.read(this, t, !1, 23, 4);
}
function P(t) {
return i.read(this, t, !1, 52, 8);
}
},
"./node_modules/msgpack-lite/lib/read-token.js": function(t, e, n) {
var i = n("./node_modules/msgpack-lite/lib/read-format.js");
function r(t) {
var e;
var n = new Array(256);
for (e = 0; e <= 127; e++) n[e] = a(e);
for (e = 128; e <= 143; e++) n[e] = s(e - 128, t.map);
for (e = 144; e <= 159; e++) n[e] = s(e - 144, t.array);
for (e = 160; e <= 191; e++) n[e] = s(e - 160, t.str);
for (n[192] = a(null), n[193] = null, n[194] = a(!1), n[195] = a(!0), n[196] = o(t.uint8, t.bin),
n[197] = o(t.uint16, t.bin), n[198] = o(t.uint32, t.bin), n[199] = o(t.uint8, t.ext),
n[200] = o(t.uint16, t.ext), n[201] = o(t.uint32, t.ext), n[202] = t.float32, n[203] = t.float64,
n[204] = t.uint8, n[205] = t.uint16, n[206] = t.uint32, n[207] = t.uint64, n[208] = t.int8,
n[209] = t.int16, n[210] = t.int32, n[211] = t.int64, n[212] = s(1, t.ext), n[213] = s(2, t.ext),
n[214] = s(4, t.ext), n[215] = s(8, t.ext), n[216] = s(16, t.ext), n[217] = o(t.uint8, t.str),
n[218] = o(t.uint16, t.str), n[219] = o(t.uint32, t.str), n[220] = o(t.uint16, t.array),
n[221] = o(t.uint32, t.array), n[222] = o(t.uint16, t.map), n[223] = o(t.uint32, t.map),
e = 224; e <= 255; e++) n[e] = a(e - 256);
return n;
}
function a(t) {
return function() {
return t;
};
}
function o(t, e) {
return function(n) {
var i = t(n);
return e(n, i);
};
}
function s(t, e) {
return function(n) {
return e(n, t);
};
}
e.getReadToken = function(t) {
var e = i.getReadFormat(t);
return t && t.useraw ? function(t) {
var e;
var n = r(t).slice();
for (n[217] = n[196], n[218] = n[197], n[219] = n[198], e = 160; e <= 191; e++) n[e] = s(e - 160, t.bin);
return n;
}(e) : r(e);
};
},
"./node_modules/msgpack-lite/lib/write-core.js": function(t, e, n) {
var i = n("./node_modules/msgpack-lite/lib/ext-buffer.js").ExtBuffer;
var r = n("./node_modules/msgpack-lite/lib/ext-packer.js");
var a = n("./node_modules/msgpack-lite/lib/write-type.js");
var o = n("./node_modules/msgpack-lite/lib/codec-base.js");
function s() {
var t = this.options;
return this.encode = function(t) {
var e = a.getWriteType(t);
return function(t, n) {
var i = e[typeof n];
if (!i) throw new Error("Unsupported type \"" + typeof n + "\": " + n);
i(t, n);
};
}(t), t && t.preset && r.setExtPackers(this), this;
}
o.install({
addExtPacker: function(t, e, n) {
n = o.filter(n);
var r = e.name;
if (r && "Object" !== r) {
(this.extPackers || (this.extPackers = {}))[r] = a;
} else {
(this.extEncoderList || (this.extEncoderList = [])).unshift([ e, a ]);
}
function a(e) {
return n && (e = n(e)), new i(e, t);
}
},
getExtPacker: function(t) {
var e = this.extPackers || (this.extPackers = {});
var n = t.constructor;
var i = n && n.name && e[n.name];
if (i) return i;
var r = this.extEncoderList || (this.extEncoderList = []);
var a = r.length;
for (var o = 0; o < a; o++) {
var s = r[o];
if (n === s[0]) return s[1];
}
},
init: s
}), e.preset = s.call(o.preset);
},
"./node_modules/msgpack-lite/lib/write-token.js": function(t, e, n) {
var i = n("./node_modules/ieee754/index.js");
var r = n("./node_modules/int64-buffer/int64-buffer.js");
var a = r.Uint64BE;
var o = r.Int64BE;
var s = n("./node_modules/msgpack-lite/lib/write-uint8.js").uint8;
var c = n("./node_modules/msgpack-lite/lib/bufferish.js");
var l = c.global;
var u = c.hasBuffer && "TYPED_ARRAY_SUPPORT" in l && !l.TYPED_ARRAY_SUPPORT;
var f = c.hasBuffer && l.prototype || {};
function d() {
var t = s.slice();
return t[196] = h(196), t[197] = m(197), t[198] = p(198), t[199] = h(199), t[200] = m(200),
t[201] = p(201), t[202] = v(202, 4, f.writeFloatBE || k, !0), t[203] = v(203, 8, f.writeDoubleBE || y, !0),
t[204] = h(204), t[205] = m(205), t[206] = p(206), t[207] = v(207, 8, g), t[208] = h(208),
t[209] = m(209), t[210] = p(210), t[211] = v(211, 8, b), t[217] = h(217), t[218] = m(218),
t[219] = p(219), t[220] = m(220), t[221] = p(221), t[222] = m(222), t[223] = p(223),
t;
}
function h(t) {
return function(e, n) {
var i = e.reserve(2);
var r = e.buffer;
r[i++] = t, r[i] = n;
};
}
function m(t) {
return function(e, n) {
var i = e.reserve(3);
var r = e.buffer;
r[i++] = t, r[i++] = n >>> 8, r[i] = n;
};
}
function p(t) {
return function(e, n) {
var i = e.reserve(5);
var r = e.buffer;
r[i++] = t, r[i++] = n >>> 24, r[i++] = n >>> 16, r[i++] = n >>> 8, r[i] = n;
};
}
function v(t, e, n, i) {
return function(r, a) {
var o = r.reserve(e + 1);
r.buffer[o++] = t, n.call(r.buffer, a, o, i);
};
}
function g(t, e) {
new a(this, e, t);
}
function b(t, e) {
new o(this, e, t);
}
function k(t, e) {
i.write(this, t, e, !1, 23, 4);
}
function y(t, e) {
i.write(this, t, e, !1, 52, 8);
}
e.getWriteToken = function(t) {
return t && t.uint8array ? ((e = d())[202] = v(202, 4, k), e[203] = v(203, 8, y),
e) : u || c.hasBuffer && t && t.safe ? function() {
var t = s.slice();
return t[196] = v(196, 1, l.prototype.writeUInt8), t[197] = v(197, 2, l.prototype.writeUInt16BE),
t[198] = v(198, 4, l.prototype.writeUInt32BE), t[199] = v(199, 1, l.prototype.writeUInt8),
t[200] = v(200, 2, l.prototype.writeUInt16BE), t[201] = v(201, 4, l.prototype.writeUInt32BE),
t[202] = v(202, 4, l.prototype.writeFloatBE), t[203] = v(203, 8, l.prototype.writeDoubleBE),
t[204] = v(204, 1, l.prototype.writeUInt8), t[205] = v(205, 2, l.prototype.writeUInt16BE),
t[206] = v(206, 4, l.prototype.writeUInt32BE), t[207] = v(207, 8, g), t[208] = v(208, 1, l.prototype.writeInt8),
t[209] = v(209, 2, l.prototype.writeInt16BE), t[210] = v(210, 4, l.prototype.writeInt32BE),
t[211] = v(211, 8, b), t[217] = v(217, 1, l.prototype.writeUInt8), t[218] = v(218, 2, l.prototype.writeUInt16BE),
t[219] = v(219, 4, l.prototype.writeUInt32BE), t[220] = v(220, 2, l.prototype.writeUInt16BE),
t[221] = v(221, 4, l.prototype.writeUInt32BE), t[222] = v(222, 2, l.prototype.writeUInt16BE),
t[223] = v(223, 4, l.prototype.writeUInt32BE), t;
}() : d();
var e;
};
},
"./node_modules/msgpack-lite/lib/write-type.js": function(t, e, n) {
var i = n("./node_modules/msgpack-lite/node_modules/isarray/index.js");
var r = n("./node_modules/int64-buffer/int64-buffer.js");
var a = r.Uint64BE;
var o = r.Int64BE;
var s = n("./node_modules/msgpack-lite/lib/bufferish.js");
var c = n("./node_modules/msgpack-lite/lib/bufferish-proto.js");
var l = n("./node_modules/msgpack-lite/lib/write-token.js");
var u = n("./node_modules/msgpack-lite/lib/write-uint8.js").uint8;
var f = n("./node_modules/msgpack-lite/lib/ext-buffer.js").ExtBuffer;
var d = "undefined" != typeof Uint8Array;
var h = "undefined" != typeof Map;
var m = [];
m[1] = 212, m[2] = 213, m[4] = 214, m[8] = 215, m[16] = 216, e.getWriteType = function(t) {
var e = l.getWriteToken(t);
var n = t && t.useraw;
var r = d && t && t.binarraybuffer;
var p = r ? s.isArrayBuffer : s.isBuffer;
var v = r ? function(t, e) {
y(t, new Uint8Array(e));
} : y;
var g = h && t && t.usemap ? function(t, n) {
if (!(n instanceof Map)) return w(t, n);
var i = n.size;
e[i < 16 ? 128 + i : i <= 65535 ? 222 : 223](t, i);
var r = t.codec.encode;
n.forEach(function(e, n, i) {
r(t, n), r(t, e);
});
} : w;
return {
boolean: function(t, n) {
e[n ? 195 : 194](t, n);
},
function: k,
number: function(t, n) {
var i = 0 | n;
var r;
if (n !== i) return void e[r = 203](t, n);
r = -32 <= i && i <= 127 ? 255 & i : 0 <= i ? i <= 255 ? 204 : i <= 65535 ? 205 : 206 : -128 <= i ? 208 : -32768 <= i ? 209 : 210;
e[r](t, i);
},
object: n ? function(t, n) {
if (p(n)) return function(t, n) {
var i = n.length;
e[i < 32 ? 160 + i : i <= 65535 ? 218 : 219](t, i), t.send(n);
}(t, n);
b(t, n);
} : b,
string: function(t) {
return n;
function n(n, i) {
var r = i.length;
var a = 5 + 3 * r;
n.offset = n.reserve(a);
var o = n.buffer;
var s = t(r);
var l = n.offset + s;
r = c.write.call(o, i, l);
var u = t(r);
if (s !== u) {
var f = l + u - s;
var d = l + r;
c.copy.call(o, o, f, l, d);
}
e[1 === u ? 160 + r : u <= 3 ? 215 + u : 219](n, r), n.offset += r;
}
}(n ? function(t) {
return t < 32 ? 1 : t <= 65535 ? 3 : 5;
} : function(t) {
return t < 32 ? 1 : t <= 255 ? 2 : t <= 65535 ? 3 : 5;
}),
symbol: k,
undefined: k
};
function b(t, n) {
if (null === n) return k(t, n);
if (p(n)) return v(t, n);
if (i(n)) return function(t, n) {
var i = n.length;
e[i < 16 ? 144 + i : i <= 65535 ? 220 : 221](t, i);
var r = t.codec.encode;
for (var a = 0; a < i; a++) r(t, n[a]);
}(t, n);
if (a.isUint64BE(n)) return function(t, n) {
e[207](t, n.toArray());
}(t, n);
if (o.isInt64BE(n)) return function(t, n) {
e[211](t, n.toArray());
}(t, n);
var r = t.codec.getExtPacker(n);
if (r && (n = r(n)), n instanceof f) return function(t, n) {
var i = n.buffer;
var r = i.length;
var a = m[r] || (r < 255 ? 199 : r <= 65535 ? 200 : 201);
e[a](t, r), u[n.type](t), t.send(i);
}(t, n);
g(t, n);
}
function k(t, n) {
e[192](t, n);
}
function y(t, n) {
var i = n.length;
e[i < 255 ? 196 : i <= 65535 ? 197 : 198](t, i), t.send(n);
}
function w(t, n) {
var i = Object.keys(n);
var r = i.length;
e[r < 16 ? 128 + r : r <= 65535 ? 222 : 223](t, r);
var a = t.codec.encode;
i.forEach(function(e) {
a(t, e), a(t, n[e]);
});
}
};
},
"./node_modules/msgpack-lite/lib/write-uint8.js": function(t, e) {
var n = e.uint8 = new Array(256);
for (var i = 0; i <= 255; i++) n[i] = r(i);
function r(t) {
return function(e) {
var n = e.reserve(1);
e.buffer[n] = t;
};
}
},
"./node_modules/msgpack-lite/node_modules/isarray/index.js": function(t, e) {
var n = {}.toString;
t.exports = Array.isArray || function(t) {
return '[object Array]' == n.call(t);
};
},
"./node_modules/process/browser.js": function(t, e) {
var n = t.exports = {};
var i;
var r;
function a() {
throw new Error('setTimeout has not been defined');
}
function o() {
throw new Error('clearTimeout has not been defined');
}
function s(t) {
if (i === setTimeout) return setTimeout(t, 0);
if ((i === a || !i) && setTimeout) return i = setTimeout, setTimeout(t, 0);
try {
return i(t, 0);
} catch (e) {
try {
return i.call(null, t, 0);
} catch (e) {
return i.call(this, t, 0);
}
}
}
!function() {
try {
i = 'function' == typeof setTimeout ? setTimeout : a;
} catch (t) {
i = a;
}
try {
r = 'function' == typeof clearTimeout ? clearTimeout : o;
} catch (t) {
r = o;
}
}();
var c = [];
var l = !1;
var u;
var f = -1;
function d() {
l && u && (l = !1, u.length ? c = u.concat(c) : f = -1, c.length && h());
}
function h() {
if (!l) {
var t = s(d);
l = !0;
var e = c.length;
for (;e; ) {
for (u = c, c = []; ++f < e; ) u && u[f].run();
f = -1, e = c.length;
}
u = null, l = !1, function(t) {
if (r === clearTimeout) return clearTimeout(t);
if ((r === o || !r) && clearTimeout) return r = clearTimeout, clearTimeout(t);
try {
return r(t);
} catch (e) {
try {
return r.call(null, t);
} catch (e) {
return r.call(this, t);
}
}
}(t);
}
}
function m(t, e) {
this.fun = t, this.array = e;
}
function p() {}
n.nextTick = function(t) {
var e = new Array(arguments.length - 1);
if (arguments.length > 1) for (var n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];
c.push(new m(t, e)), 1 !== c.length || l || s(h);
}, m.prototype.run = function() {
this.fun.apply(null, this.array);
}, n.title = 'browser', n.browser = !0, n.env = {}, n.argv = [], n.version = '',
n.versions = {}, n.on = p, n.addListener = p, n.once = p, n.off = p, n.removeListener = p,
n.removeAllListeners = p, n.emit = p, n.prependListener = p, n.prependOnceListener = p,
n.listeners = function(t) {
return [];
}, n.binding = function(t) {
throw new Error('process.binding is not supported');
}, n.cwd = function() {
return '/';
}, n.chdir = function(t) {
throw new Error('process.chdir is not supported');
}, n.umask = function() {
return 0;
};
},
"./node_modules/punycode/punycode.js": function(t, e, n) {
(function(t, n) {
!function(i) {
var r = e && !e.nodeType && e;
var a = t && !t.nodeType && t;
var o = 'object' == typeof n && n;
o.global !== o && o.window !== o && o.self !== o || (i = o);
var s, c = 2147483647, l = 36, u = /^xn--/, f = /[^\x20-\x7E]/, d = /[\x2E\u3002\uFF0E\uFF61]/g, h = {
overflow: 'Overflow: input needs wider integers to process',
'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
'invalid-input': 'Invalid input'
}, m = Math.floor, p = String.fromCharCode;
function v(t) {
throw new RangeError(h[t]);
}
function g(t, e) {
var n = t.length;
var i = [];
for (;n--; ) i[n] = e(t[n]);
return i;
}
function b(t, e) {
var n = t.split('@');
var i = '';
return n.length > 1 && (i = n[0] + '@', t = n[1]), i + g((t = t.replace(d, '.')).split('.'), e).join('.');
}
function k(t) {
var e, n, i = [], r = 0, a = t.length;
for (;r < a; ) (e = t.charCodeAt(r++)) >= 55296 && e <= 56319 && r < a ? 56320 == (64512 & (n = t.charCodeAt(r++))) ? i.push(((1023 & e) << 10) + (1023 & n) + 65536) : (i.push(e),
r--) : i.push(e);
return i;
}
function y(t) {
return g(t, function(t) {
var e = '';
return t > 65535 && (e += p((t -= 65536) >>> 10 & 1023 | 55296), t = 56320 | 1023 & t),
e += p(t);
}).join('');
}
function w(t) {
return t - 48 < 10 ? t - 22 : t - 65 < 26 ? t - 65 : t - 97 < 26 ? t - 97 : l;
}
function _(t, e) {
return t + 22 + 75 * (t < 26) - ((0 != e) << 5);
}
function x(t, e, n) {
var i = 0;
for (t = n ? m(t / 700) : t >> 1, t += m(t / e); t > 455; i += l) t = m(t / 35);
return m(i + 36 * t / (t + 38));
}
function M(t) {
var e, n, i, r, a, o, s, u, f, d, h = [], p = t.length, g = 0, b = 128, k = 72;
for ((n = t.lastIndexOf("-")) < 0 && (n = 0), i = 0; i < n; ++i) t.charCodeAt(i) >= 128 && v('not-basic'),
h.push(t.charCodeAt(i));
for (r = n > 0 ? n + 1 : 0; r < p; ) {
for (a = g, o = 1, s = l; r >= p && v('invalid-input'), ((u = w(t.charCodeAt(r++))) >= l || u > m((c - g) / o)) && v('overflow'),
g += u * o, !(u < (f = s <= k ? 1 : s >= k + 26 ? 26 : s - k)); s += l) o > m(c / (d = l - f)) && v('overflow'),
o *= d;
k = x(g - a, e = h.length + 1, 0 == a), m(g / e) > c - b && v('overflow'), b += m(g / e),
g %= e, h.splice(g++, 0, b);
}
return y(h);
}
function j(t) {
var e, n, i, r, a, o, s, u, f, d, h, g, b, y, w, M = [];
for (g = (t = k(t)).length, e = 128, n = 0, a = 72, o = 0; o < g; ++o) (h = t[o]) < 128 && M.push(p(h));
for (i = r = M.length, r && M.push("-"); i < g; ) {
for (s = c, o = 0; o < g; ++o) (h = t[o]) >= e && h < s && (s = h);
for (s - e > m((c - n) / (b = i + 1)) && v('overflow'), n += (s - e) * b, e = s,
o = 0; o < g; ++o) if ((h = t[o]) < e && ++n > c && v('overflow'), h == e) {
for (u = n, f = l; !(u < (d = f <= a ? 1 : f >= a + 26 ? 26 : f - a)); f += l) w = u - d,
y = l - d, M.push(p(_(d + w % y, 0))), u = m(w / y);
M.push(p(_(u, 0))), a = x(n, b, i == r), n = 0, ++i;
}
++n, ++e;
}
return M.join('');
}
s = {
version: '1.4.1',
ucs2: {
decode: k,
encode: y
},
decode: M,
encode: j,
toASCII: function(t) {
return b(t, function(t) {
return f.test(t) ? 'xn--' + j(t) : t;
});
},
toUnicode: function(t) {
return b(t, function(t) {
return u.test(t) ? M(t.slice(4).toLowerCase()) : t;
});
}
}, 'function' == typeof define && 'object' == typeof define.amd && define.amd ? define('punycode', function() {
return s;
}) : r && a ? t.exports === r ? a.exports = s : r.punycode = s : i.punycode = s;
}(this);
}).call(this, n("./node_modules/webpack/buildin/module.js")(t), n("./node_modules/webpack/buildin/global.js"));
},
"./node_modules/querystring-es3/decode.js": function(t, e, n) {
"use strict";
function i(t, e) {
return {}.hasOwnProperty.call(t, e);
}
t.exports = function(t, e, n, a) {
e = e || '&', n = n || '=';
var o = {};
if ('string' != typeof t || 0 === t.length) return o;
var s = /\+/g;
t = t.split(e);
var c = 1e3;
a && 'number' == typeof a.maxKeys && (c = a.maxKeys);
var l = t.length;
c > 0 && l > c && (l = c);
for (var u = 0; u < l; ++u) {
var f, d, h, m, p = t[u].replace(s, '%20'), v = p.indexOf(n);
v >= 0 ? (f = p.substr(0, v), d = p.substr(v + 1)) : (f = p, d = ''), h = decodeURIComponent(f),
m = decodeURIComponent(d), i(o, h) ? r(o[h]) ? o[h].push(m) : o[h] = [ o[h], m ] : o[h] = m;
}
return o;
};
var r = Array.isArray || function(t) {
return '[object Array]' === {}.toString.call(t);
};
},
"./node_modules/querystring-es3/encode.js": function(t, e, n) {
"use strict";
var i = function(t) {
switch (typeof t) {
case 'string':
return t;
case 'boolean':
return t ? 'true' : 'false';
case 'number':
return isFinite(t) ? t : '';
default:
return '';
}
};
t.exports = function(t, e, n, s) {
return e = e || '&', n = n || '=', null === t && (t = void 0), 'object' == typeof t ? a(o(t), function(o) {
var s = encodeURIComponent(i(o)) + n;
return r(t[o]) ? a(t[o], function(t) {
return s + encodeURIComponent(i(t));
}).join(e) : s + encodeURIComponent(i(t[o]));
}).join(e) : s ? encodeURIComponent(i(s)) + n + encodeURIComponent(i(t)) : '';
};
var r = Array.isArray || function(t) {
return '[object Array]' === {}.toString.call(t);
};
function a(t, e) {
if (t.map) return t.map(e);
var n = [];
for (var i = 0; i < t.length; i++) n.push(e(t[i], i));
return n;
}
var o = Object.keys || function(t) {
var e = [];
for (var n in t) ({}).hasOwnProperty.call(t, n) && e.push(n);
return e;
};
},
"./node_modules/querystring-es3/index.js": function(t, e, n) {
"use strict";
e.decode = e.parse = n("./node_modules/querystring-es3/decode.js"), e.encode = e.stringify = n("./node_modules/querystring-es3/encode.js");
},
"./node_modules/url/url.js": function(t, e, n) {
"use strict";
var i = n("./node_modules/punycode/punycode.js");
var r = n("./node_modules/url/util.js");
function a() {
this.protocol = null, this.slashes = null, this.auth = null, this.host = null, this.port = null,
this.hostname = null, this.hash = null, this.search = null, this.query = null, this.pathname = null,
this.path = null, this.href = null;
}
e.parse = k, e.resolve = function(t, e) {
return k(t, !1, !0).resolve(e);
}, e.resolveObject = function(t, e) {
return t ? k(t, !1, !0).resolveObject(e) : e;
}, e.format = function(t) {
r.isString(t) && (t = k(t));
return t instanceof a ? t.format() : a.prototype.format.call(t);
}, e.Url = a;
var o = /^([a-z0-9.+-]+:)/i, s = /:[0-9]*$/, c = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/, l = [ '{', '}', '|', '\\', '^', '`' ].concat([ '<', '>', '"', '`', ' ', '\r', '\n', '\t' ]), u = [ '\'' ].concat(l), f = [ '%', '/', '?', ';', '#' ].concat(u), d = [ '/', '?', '#' ], h = /^[+a-z0-9A-Z_-]{0,63}$/, m = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, p = {
javascript: !0,
'javascript:': !0
}, v = {
javascript: !0,
'javascript:': !0
}, g = {
http: !0,
https: !0,
ftp: !0,
gopher: !0,
file: !0,
'http:': !0,
'https:': !0,
'ftp:': !0,
'gopher:': !0,
'file:': !0
}, b = n("./node_modules/querystring-es3/index.js");
function k(t, e, n) {
if (t && r.isObject(t) && t instanceof a) return t;
var i = new a;
return i.parse(t, e, n), i;
}
a.prototype.parse = function(t, e, n) {
if (!r.isString(t)) throw new TypeError("Parameter 'url' must be a string, not " + typeof t);
var a = t.indexOf('?'), s = -1 !== a && a < t.indexOf('#') ? '?' : '#', l = t.split(s);
l[0] = l[0].replace(/\\/g, '/');
var k = t = l.join(s);
if (k = k.trim(), !n && 1 === t.split('#').length) {
var y = c.exec(k);
if (y) return this.path = k, this.href = k, this.pathname = y[1], y[2] ? (this.search = y[2],
this.query = e ? b.parse(this.search.substr(1)) : this.search.substr(1)) : e && (this.search = '',
this.query = {}), this;
}
var w = o.exec(k);
if (w) {
var _ = (w = w[0]).toLowerCase();
this.protocol = _, k = k.substr(w.length);
}
if (n || w || k.match(/^\/\/[^@\/]+@[^@\/]+/)) {
var x = '//' === k.substr(0, 2);
!x || w && v[w] || (k = k.substr(2), this.slashes = !0);
}
if (!v[w] && (x || w && !g[w])) {
var M = -1;
for (var j = 0; j < d.length; j++) {
-1 !== (T = k.indexOf(d[j])) && (-1 === M || T < M) && (M = T);
}
var S, A;
-1 !== (A = -1 === M ? k.lastIndexOf('@') : k.lastIndexOf('@', M)) && (S = k.slice(0, A),
k = k.slice(A + 1), this.auth = decodeURIComponent(S)), M = -1;
for (j = 0; j < f.length; j++) {
var T;
-1 !== (T = k.indexOf(f[j])) && (-1 === M || T < M) && (M = T);
}
-1 === M && (M = k.length), this.host = k.slice(0, M), k = k.slice(M), this.parseHost(),
this.hostname = this.hostname || '';
var D = '[' === this.hostname[0] && ']' === this.hostname[this.hostname.length - 1];
if (!D) {
var P = this.hostname.split(/\./);
j = 0;
for (var B = P.length; j < B; j++) {
var I = P[j];
if (I && !I.match(h)) {
var O = '';
for (var H = 0, E = I.length; H < E; H++) I.charCodeAt(H) > 127 ? O += 'x' : O += I[H];
if (!O.match(h)) {
var C = P.slice(0, j);
var z = P.slice(j + 1);
var R = I.match(m);
R && (C.push(R[1]), z.unshift(R[2])), z.length && (k = '/' + z.join('.') + k), this.hostname = C.join('.');
break;
}
}
}
}
this.hostname.length > 255 ? this.hostname = '' : this.hostname = this.hostname.toLowerCase(),
D || (this.hostname = i.toASCII(this.hostname));
var $ = this.port ? ':' + this.port : '';
var U = this.hostname || '';
this.host = U + $, this.href += this.host, D && (this.hostname = this.hostname.substr(1, this.hostname.length - 2),
'/' !== k[0] && (k = '/' + k));
}
if (!p[_]) for (j = 0, B = u.length; j < B; j++) {
var F = u[j];
if (-1 !== k.indexOf(F)) {
var L = encodeURIComponent(F);
L === F && (L = escape(F)), k = k.split(F).join(L);
}
}
var N = k.indexOf('#');
-1 !== N && (this.hash = k.substr(N), k = k.slice(0, N));
var q = k.indexOf('?');
if (-1 !== q ? (this.search = k.substr(q), this.query = k.substr(q + 1), e && (this.query = b.parse(this.query)),
k = k.slice(0, q)) : e && (this.search = '', this.query = {}), k && (this.pathname = k),
g[_] && this.hostname && !this.pathname && (this.pathname = '/'), this.pathname || this.search) {
$ = this.pathname || '';
var G = this.search || '';
this.path = $ + G;
}
return this.href = this.format(), this;
}, a.prototype.format = function() {
var t = this.auth || '';
t && (t = (t = encodeURIComponent(t)).replace(/%3A/i, ':'), t += '@');
var e = this.protocol || '', n = this.pathname || '', i = this.hash || '', a = !1, o = '';
this.host ? a = t + this.host : this.hostname && (a = t + (-1 === this.hostname.indexOf(':') ? this.hostname : '[' + this.hostname + ']'),
this.port && (a += ':' + this.port)), this.query && r.isObject(this.query) && Object.keys(this.query).length && (o = b.stringify(this.query));
var s = this.search || o && '?' + o || '';
return e && ':' !== e.substr(-1) && (e += ':'), this.slashes || (!e || g[e]) && !1 !== a ? (a = '//' + (a || ''),
n && '/' !== n.charAt(0) && (n = '/' + n)) : a || (a = ''), i && '#' !== i.charAt(0) && (i = '#' + i),
s && '?' !== s.charAt(0) && (s = '?' + s), e + a + (n = n.replace(/[?#]/g, function(t) {
return encodeURIComponent(t);
})) + (s = s.replace('#', '%23')) + i;
}, a.prototype.resolve = function(t) {
return this.resolveObject(k(t, !1, !0)).format();
}, a.prototype.resolveObject = function(t) {
if (r.isString(t)) {
var e = new a;
e.parse(t, !1, !0), t = e;
}
var n = new a;
var i = Object.keys(this);
for (var o = 0; o < i.length; o++) {
var s = i[o];
n[s] = this[s];
}
if (n.hash = t.hash, '' === t.href) return n.href = n.format(), n;
if (t.slashes && !t.protocol) {
var c = Object.keys(t);
for (var l = 0; l < c.length; l++) {
var u = c[l];
'protocol' !== u && (n[u] = t[u]);
}
return g[n.protocol] && n.hostname && !n.pathname && (n.path = n.pathname = '/'),
n.href = n.format(), n;
}
if (t.protocol && t.protocol !== n.protocol) {
if (!g[t.protocol]) {
var f = Object.keys(t);
for (var d = 0; d < f.length; d++) {
var h = f[d];
n[h] = t[h];
}
return n.href = n.format(), n;
}
if (n.protocol = t.protocol, t.host || v[t.protocol]) n.pathname = t.pathname; else {
var m = (t.pathname || '').split('/');
for (;m.length && !(t.host = m.shift()); ) ;
t.host || (t.host = ''), t.hostname || (t.hostname = ''), '' !== m[0] && m.unshift(''),
m.length < 2 && m.unshift(''), n.pathname = m.join('/');
}
if (n.search = t.search, n.query = t.query, n.host = t.host || '', n.auth = t.auth,
n.hostname = t.hostname || t.host, n.port = t.port, n.pathname || n.search) {
var p = n.pathname || '';
var b = n.search || '';
n.path = p + b;
}
return n.slashes = n.slashes || t.slashes, n.href = n.format(), n;
}
var k = n.pathname && '/' === n.pathname.charAt(0), y = t.host || t.pathname && '/' === t.pathname.charAt(0), w = y || k || n.host && t.pathname, _ = w, x = n.pathname && n.pathname.split('/') || [], M = (m = t.pathname && t.pathname.split('/') || [],
n.protocol && !g[n.protocol]);
if (M && (n.hostname = '', n.port = null, n.host && ('' === x[0] ? x[0] = n.host : x.unshift(n.host)),
n.host = '', t.protocol && (t.hostname = null, t.port = null, t.host && ('' === m[0] ? m[0] = t.host : m.unshift(t.host)),
t.host = null), w = w && ('' === m[0] || '' === x[0])), y) n.host = t.host || '' === t.host ? t.host : n.host,
n.hostname = t.hostname || '' === t.hostname ? t.hostname : n.hostname, n.search = t.search,
n.query = t.query, x = m; else if (m.length) x || (x = []), x.pop(), x = x.concat(m),
n.search = t.search, n.query = t.query; else if (!r.isNullOrUndefined(t.search)) {
if (M) n.hostname = n.host = x.shift(), (P = !!(n.host && n.host.indexOf('@') > 0) && n.host.split('@')) && (n.auth = P.shift(),
n.host = n.hostname = P.shift());
return n.search = t.search, n.query = t.query, r.isNull(n.pathname) && r.isNull(n.search) || (n.path = (n.pathname ? n.pathname : '') + (n.search ? n.search : '')),
n.href = n.format(), n;
}
if (!x.length) return n.pathname = null, n.search ? n.path = '/' + n.search : n.path = null,
n.href = n.format(), n;
var j = x.slice(-1)[0];
var S = (n.host || t.host || x.length > 1) && ('.' === j || '..' === j) || '' === j;
var A = 0;
for (var T = x.length; T >= 0; T--) '.' === (j = x[T]) ? x.splice(T, 1) : '..' === j ? (x.splice(T, 1),
A++) : A && (x.splice(T, 1), A--);
if (!w && !_) for (;A--; A) x.unshift('..');
!w || '' === x[0] || x[0] && '/' === x[0].charAt(0) || x.unshift(''), S && '/' !== x.join('/').substr(-1) && x.push('');
var D = '' === x[0] || x[0] && '/' === x[0].charAt(0);
var P;
M && (n.hostname = n.host = D ? '' : x.length ? x.shift() : '', (P = !!(n.host && n.host.indexOf('@') > 0) && n.host.split('@')) && (n.auth = P.shift(),
n.host = n.hostname = P.shift()));
return (w = w || n.host && x.length) && !D && x.unshift(''), x.length ? n.pathname = x.join('/') : (n.pathname = null,
n.path = null), r.isNull(n.pathname) && r.isNull(n.search) || (n.path = (n.pathname ? n.pathname : '') + (n.search ? n.search : '')),
n.auth = t.auth || n.auth, n.slashes = n.slashes || t.slashes, n.href = n.format(),
n;
}, a.prototype.parseHost = function() {
var t = this.host;
var e = s.exec(t);
e && (':' !== (e = e[0]) && (this.port = e.substr(1)), t = t.substr(0, t.length - e.length)),
t && (this.hostname = t);
};
},
"./node_modules/url/util.js": function(t, e, n) {
"use strict";
t.exports = {
isString: function(t) {
return 'string' == typeof t;
},
isObject: function(t) {
return 'object' == typeof t && null !== t;
},
isNull: function(t) {
return null === t;
},
isNullOrUndefined: function(t) {
return null == t;
}
};
},
"./node_modules/webpack/buildin/global.js": function(t, e) {
var n;
n = function() {
return this;
}();
try {
n = n || new Function("return this")();
} catch (t) {
"object" == typeof window && (n = window);
}
t.exports = n;
},
"./node_modules/webpack/buildin/module.js": function(t, e) {
t.exports = function(t) {
return t.webpackPolyfill || (t.deprecate = function() {}, t.paths = [], t.children || (t.children = []),
Object.defineProperty(t, "loaded", {
enumerable: !0,
get: function() {
return t.l;
}
}), Object.defineProperty(t, "A", {
enumerable: !0,
get: function() {
return t.i;
}
}), t.webpackPolyfill = 1), t;
};
},
"./src/js/app.js": function(t, e, n) {
"use strict";
window.loadedScript = !0;
"127.0.0.1" !== location.hostname && location.hostname.startsWith("192.168.");
n("./src/js/libs/modernizr.js");
var i = n("./src/js/libs/io-client.js");
!function() {
try {
const t = i.send.bind(i);
let e = !1;
window._modPacketStats || (window._modPacketStats = {
recent: [],
totals: {},
lastPayload: {},
lastUpdate: 0
}), i.send = function() {
try {
const n = [].slice.call(arguments);
const r = n[0];
try {
const t = window._modPacketStats;
const e = Date.now();
t.recent.push({
t: e,
type: r
}), t.totals[r] = (t.totals[r] || 0) + 1;
try {
t.lastPayload[r] = JSON.stringify(n.slice(1));
} catch (e) {
t.lastPayload[r] = String(n.slice(1));
}
t.lastPayload[r] && t.lastPayload[r].length > 140 && (t.lastPayload[r] = t.lastPayload[r].slice(0, 140) + '...'),
t.lastUpdate = e;
} catch (t) {}
if ("9" === r) {
const r = void 0 !== Ur && void 0 !== Zr && Ur > Zr;
const a = null != zr && null != Rr;
if (r && (a || null != Er && null != Cr) && Gt) {
const r = n[1];
if ('number' == typeof r) {
const o = a ? zr : Er;
const s = a ? Rr : Cr;
const c = Math.atan2(s - Gt.y2, o - Gt.x2);
let l = Math.abs(r - c);
if (l > Math.PI && (l = 2 * Math.PI - l), l > Math.PI / 2) return e = !1, t.apply(i, n);
if (!e) {
try {
t.apply(i, [ "9", void 0 ]);
} catch (t) {}
e = !0;
try {} catch (t) {}
}
return;
}
return e = !1, t.apply(i, n);
}
if (r) {
if (!e) {
try {
t.apply(i, [ "9", void 0 ]);
} catch (t) {}
e = !0;
try {} catch (t) {}
}
return;
}
}
return t.apply(i, n);
} catch (e) {
try {
return t.apply(i, arguments);
} catch (t) {}
}
};
} catch (t) {}
}();
var J = n("./src/js/libs/utils.js");
var Q = n("./src/js/libs/animText.js");
var tt = n("./src/js/config.js");
var et = n("./src/js/data/gameObject.js");
var it = n("./src/js/data/items.js");
n("./src/js/data/mapManager.js");
var rt = n("./src/js/data/objectManager.js");
var at = n("./src/js/data/player.js");
var ot = n("./src/js/data/store.js");
var ct = n("./src/js/data/projectile.js");
var lt = n("./src/js/data/projectileManager.js");
var ut = n("./src/js/libs/soundManager.js").obj;
var ft = new Q.TextManager;
var dt = !1;
var ht = !1;
window.OriginalWebSocket = window.WebSocket, window.altcha = {
replaceWith: () => {}
};
const mt = window.fetch;
window.fetch = async function(t) {
try {
let e = t;
return "string" == typeof e && e.includes("v=1.26") && (arguments[0] = e.split("v=1.26")[0] + "v=1.27"),
mt.apply(this, arguments);
} catch (t) {}
};
var pt = "";
window.connectSocket = bt;
let vt = window.onGotTurnstileToken;
Object.defineProperty(window, 'onGotTurnstileToken', {
set: function(t) {
vt = t;
},
get: function() {
return function(t) {
pt = t;
let e = document.getElementById("enterGame");
e && e.classList.remove("disabled");
};
},
configurable: !0
});
let gt = document.getElementById("enterGame");
if (gt) {
let t = function(t) {
if (gt.classList.contains("disabled")) return;
t && t.preventDefault && t.preventDefault(), t && t.stopImmediatePropagation && t.stopImmediatePropagation();
let e = document.querySelector('[name="cf-turnstile-response"]');
!async function(t) {
if (ht) return void (dt && Ti());
ht = !0, fn("Connecting...");
try {
let e = "sandbox.moomoo.io" === window.location.hostname ? "https://api-sandbox.moomoo.io" : "https://api.moomoo.io";
let n = await fetch(e + "/servers?v=1.27");
let i = await n.json();
let r = i.find(t => t.playerCount < t.playerCapacity) || i[0];
let a = new URLSearchParams(window.location.search).get("server");
if (a) {
let [t, e] = a.split(":");
let n = i.find(n => n.region === t && n.name === e);
n && (r = n);
}
if (!r) return ht = !1, void un("No servers found");
let o = "wss://" + r.key + "." + r.region + ".moomoo.io";
r.port && 443 !== r.port && (o += ":" + r.port), t && (o += "?token=" + encodeURIComponent("cf:" + t)),
bt(o);
} catch (t) {
ht = !1, un("Connection Error");
}
}(pt || (e ? e.value : ""));
};
gt.addEventListener("click", t, !0), Object.defineProperty(gt, 'onclick', {
set: function(t) {},
get: function() {
return t;
},
configurable: !0
});
}
function bt(t) {
i.connect(t, function(t) {
if (Ps(), setInterval(() => Ps(), 2500), t) ht = !1, un(t); else {
dt = !0, fe.onclick = J.checkTrusted(function() {}), J.hookTouchEvents(fe), de.onclick = J.checkTrusted(function() {
Os('https://krunker.io/?play=SquidGame_KB');
}), J.hookTouchEvents(de), me.onclick = J.checkTrusted(function() {
setTimeout(function() {
var t, e;
t = _e.value, (e = prompt("party key", t)) && (window.onbeforeunload = void 0, window.location.href = "/?server=" + e);
}, 10);
}), J.hookTouchEvents(me), pe.onclick = J.checkTrusted(function() {
Te.classList.contains("showing") ? (Te.classList.remove("showing"), ve.innerText = "Settings") : (Te.classList.add("showing"),
ve.innerText = "Close");
}), J.hookTouchEvents(pe), ge.onclick = J.checkTrusted(function() {
fi(), "block" != qe.style.display ? wn() : qe.style.display = "none";
}), J.hookTouchEvents(ge), be.onclick = J.checkTrusted(function() {
"block" != Je.style.display ? (Je.style.display = "block", qe.style.display = "none",
Xn(), Rn()) : Je.style.display = "none";
}), J.hookTouchEvents(be), ke.onclick = J.checkTrusted(function() {
Kn();
}), J.hookTouchEvents(ke), Ke.onclick = J.checkTrusted(function() {
xi();
}), J.hookTouchEvents(Ke), function() {
for (var t = 0; t < Ri.length; ++t) {
var e = new Image;
e.onload = function() {
this.isLoaded = !0;
}, e.src = ".././img/icons/" + Ri[t] + ".png", zi[Ri[t]] = e;
}
}(), De.style.display = "none", Ae.style.display = "block", Re.value = At("moo_name") || "",
function() {
try {
var t = document.getElementById('mod_actionBarCount_style');
t || ((t = document.createElement('style')).id = 'mod_actionBarCount_style', t.innerHTML = '.actionBarCount { font-family: "Brush Script MT", cursive; font-weight: 900; color: #ffffff; box-shadow: none; border: none; background: transparent; letter-spacing: 2px; }\n',
document.head.appendChild(t));
} catch (t) {}
var e = At("native_resolution");
Nn(e ? "true" == e : "undefined" != typeof cordova), Pt = "true" == At("show_ping"),
je.hidden = !Pt, At("moo_moosic") || 0, setInterval(function() {
window.cordova && (document.getElementById("downloadButtonContainer").classList.add("cordova"),
document.getElementById("mobileDownloadButtonContainer").classList.add("cordova"));
}, 1e3), qn(), J.removeAllChildren(Be);
for (var n = 0; n < it.weapons.length + it.list.length; ++n) (function(t) {
J.generateElement({
id: "actionBarItem" + t,
class: "actionBarItem",
style: "display:none",
onmouseout: function() {
dn();
},
parent: Be
});
})(n);
for (n = 0; n < it.list.length + it.weapons.length; ++n) (function(t) {
var e = document.createElement('canvas');
e.width = e.height = 66;
var n = e.getContext('2d');
if (n.translate(e.width / 2, e.height / 2), n.imageSmoothingEnabled = !1, n.webkitImageSmoothingEnabled = !1,
n.mozImageSmoothingEnabled = !1, it.weapons[t]) {
n.rotate(Math.PI / 4 + Math.PI);
var i = new Image;
or[it.weapons[t].src] = i, i.onload = function() {
this.isLoaded = !0;
var i = 1 / (this.height / this.width);
var r = it.weapons[t].iPad || 1;
n.drawImage(this, -e.width * r * tt.iconPad * i / 2, -e.height * r * tt.iconPad / 2, e.width * r * i * tt.iconPad, e.height * r * tt.iconPad),
n.fillStyle = "rgba(0, 0, 70, 0.1)", n.globalCompositeOperation = "source-atop",
n.fillRect(-e.width / 2, -e.height / 2, e.width, e.height), document.getElementById('actionBarItem' + t).style.backgroundImage = "url(" + e.toDataURL() + ")";
}, i.src = ".././img/weapons/" + it.weapons[t].src + ".png", (a = document.getElementById('actionBarItem' + t)).onmouseover = J.checkTrusted(function() {
dn(it.weapons[t], !0);
}), a.onclick = J.checkTrusted(function() {
ji(t);
}), J.hookTouchEvents(a);
} else {
i = fr(it.list[t - it.weapons.length], !0);
var r = Math.min(e.width - tt.iconPadding, i.width);
var a;
n.globalAlpha = 1, n.drawImage(i, -r / 2, -r / 2, r, r), n.fillStyle = "rgba(255, 255, 255, 0)",
n.globalCompositeOperation = "source-atop", n.fillRect(-r / 2, -r / 2, r, r), document.getElementById('actionBarItem' + t).style.backgroundImage = "url(" + e.toDataURL() + ")",
(a = document.getElementById('actionBarItem' + t)).onmouseover = J.checkTrusted(function() {
dn(it.list[t - it.weapons.length]);
}), a.onclick = J.checkTrusted(function() {
ji(t - it.weapons.length);
}), J.hookTouchEvents(a);
try {
a.style.position = a.style.position || 'relative';
var o = document.createElement('div');
o.id = 'actionBarCount' + t, o.className = 'actionBarCount', o.style.position = 'absolute',
o.style.bottom = '38px', o.style.transform = 'none', o.style.textAlign = 'left',
o.style.whiteSpace = 'nowrap', o.style.fontSize = '25px', o.style.color = '#ffffffff',
o.style.padding = '2px 6px', o.style.display = 'none', o.style.pointerEvents = 'none',
a.appendChild(o);
} catch (t) {}
}
})(n);
Re.ontouchstart = J.checkTrusted(function(t) {
t.preventDefault();
var e = prompt("enter name", t.currentTarget.value);
t.currentTarget.value = e.slice(0, 15);
}), xe.checked = Dt, xe.onchange = J.checkTrusted(function(t) {
Nn(t.target.checked);
}), Me.checked = Pt, Me.onchange = J.checkTrusted(function(t) {
Pt = Me.checked, je.hidden = !Pt, St("show_ping", Pt ? "true" : "false");
});
try {
createCustomizePanel();
} catch (t) {}
try {
var i = document.getElementById('ppsOverlay');
i || ((i = J.generateElement({
id: 'ppsOverlay',
parent: document.body
})).style.position = 'fixed', i.style.left = '160px', i.style.bottom = '25px', i.style.zIndex = '9999',
i.style.padding = '6px 8px', i.style.background = 'rgba(0, 0, 0, 0.27)', i.style.color = '#fff',
i.style.fontFamily = 'monospace', i.style.fontSize = '12px', i.style.borderRadius = '6px');
} catch (t) {}
}(), Ti();
try {
Z && Z.console_log_speed && ('undefined' != typeof speedLoggerInterval && speedLoggerInterval && clearInterval(speedLoggerInterval),
speedLoggerInterval = setInterval(() => {
try {
if (Gt) if (void 0 !== Gt.x2 && void 0 !== Gt.y2) {
const t = (Gt.xVel || 0) - (Gt.x2 || 0);
const e = (Gt.yVel || 0) - (Gt.y2 || 0);
Math.sqrt(t * t + e * e);
} else {
Math.sqrt(Math.pow(Gt.xVel || 0, 2) + Math.pow(Gt.yVel || 0, 2));
}
} catch (t) {}
}, 200));
} catch (t) {}
fe.onclick = J.checkTrusted(function() {
Ti();
}), J.hookTouchEvents(fe);
}
}, {
A: sn,
B: un,
C: Pi,
D: Sr,
E: Ar,
a: gs,
G: Ni,
H: vr,
I: _r,
J: wr,
K: Ji,
L: gr,
M: br,
N: Dr,
O: ns,
P: Oi,
Q: Ei,
R: Hi,
S: Tr,
T: Li,
U: Ui,
V: Ln,
X: kr,
Y: yr,
Z: Bs,
g: gn,
1: yn,
2: pn,
3: bn,
4: kn,
5: zn,
6: Zn,
7: Hn,
8: Bi,
9: On,
0: Ds
});
}
function yt() {
try {
'undefined' != typeof speedLoggerInterval && speedLoggerInterval && (clearInterval(speedLoggerInterval),
speedLoggerInterval = null);
} catch (t) {}
}
try {
'undefined' != typeof window && (window.startSpeedLogger = function t() {
try {
'undefined' != typeof speedLoggerInterval && speedLoggerInterval && clearInterval(speedLoggerInterval);
} catch (t) {}
speedLoggerInterval = setInterval(() => {
try {
if (Gt) if (void 0 !== Gt.x2 && void 0 !== Gt.y2) {
const t = (Gt.xVel || 0) - (Gt.x2 || 0);
const e = (Gt.yVel || 0) - (Gt.y2 || 0);
Math.sqrt(t * t + e * e);
} else Math.sqrt(Math.pow(Gt.xVel || 0, 2) + Math.pow(Gt.yVel || 0, 2));
} catch (t) {}
}, 200);
try {
'undefined' != typeof window && (window.startSpeedLogger = t);
} catch (t) {}
try {
'undefined' != typeof window && (window.stopSpeedLogger = yt);
} catch (t) {}
}, window.stopSpeedLogger = yt, window.debugPrintPlayerPos = function() {
try {} catch (t) {}
});
} catch (t) {}
var wt = new ut(tt, J);
var xt = Math.PI;
var Mt = 2 * xt;
var jt;
function St(t, e) {
jt && localStorage.setItem(t, e);
}
function At(t) {
return jt ? localStorage.getItem(t) : null;
}
Math.lerpAngle = function(t, e, n) {
Math.abs(e - t) > xt && (t > e ? e += Mt : t += Mt);
var i = e + (t - e) * n;
return i >= 0 && i <= Mt ? i : i % Mt;
}, CanvasRenderingContext2D.prototype.roundRect = function(t, e, n, i, r) {
return n < 2 * r && (r = n / 2), i < 2 * r && (r = i / 2), r < 0 && (r = 0), this.beginPath(),
this.moveTo(t + r, e), this.arcTo(t + n, e, t + n, e + i, r), this.arcTo(t + n, e + i, t, e + i, r),
this.arcTo(t, e + i, t, e, r), this.arcTo(t, e, t + n, e, r), this.closePath(),
this;
}, "undefined" != typeof Storage && (jt = !0);
var Tt = At("moofoll");
var Dt;
var Pt;
var Bt = 1;
var It, Ot;
var Ht = Date.now();
var Et;
var Ct = [];
var zt = [];
var Rt = [];
var $t = [];
var Ut = [];
var Ft = new lt(ct, Ut, zt, Ct, nn, it, tt, J);
var Lt = n("./src/js/data/aiManager.js");
var Nt = n("./src/js/data/ai.js");
var qt = new Lt(Ct, Nt, zt, it, null, tt, J);
var Gt, Wt, Kt;
var Yt = 1;
var Xt = 0;
var Vt = 0;
var Jt = 0;
var Zt = {
id: -1,
startX: 0,
startY: 0,
currentX: 0,
currentY: 0
};
var Qt = {
id: -1,
startX: 0,
startY: 0,
currentX: 0,
currentY: 0
};
var te, ee;
var ne;
var ie = 0;
var re = 0;
var ae = tt.maxScreenWidth;
var oe = tt.maxScreenHeight;
var se, ce;
var le = !1;
document.getElementById("ad-container");
var ue = document.getElementById("mainMenu");
var fe = document.getElementById("enterGame");
var de = document.getElementById("promoImg");
var he = document.getElementById("promoImgHolder");
de && de.remove(), he && he.remove();
document.getElementById("partyButton");
var me = document.getElementById("joinPartyButton");
var pe = document.getElementById("settingsButton");
var ve = pe.getElementsByTagName("span")[0];
var ge = document.getElementById("allianceButton");
var be = document.getElementById("storeButton");
var ke = document.getElementById("chatButton");
var ye = document.getElementById("gameCanvas");
var we = ye.getContext("2d");
var _e = document.getElementById("serverBrowser");
var xe = document.getElementById("nativeResolution");
var Me = document.getElementById("showPing");
document.getElementById("playMusic");
var je = document.getElementById("pingDisplay");
var Se = document.getElementById("shutdownDisplay");
var Ae = document.getElementById("menuCardHolder");
var Te = document.getElementById("guideCard");
var De = document.getElementById("loadingText");
var Pe = document.getElementById("gameUI");
var Be = document.getElementById("actionBar");
var Ie = document.getElementById("scoreDisplay");
var Oe = document.getElementById("foodDisplay");
var He = document.getElementById("woodDisplay");
var Ee = document.getElementById("stoneDisplay");
var Ce = document.getElementById("killCounter");
var ze = document.getElementById("leaderboardData");
var Re = document.getElementById("nameInput");
var $e = document.getElementById("itemInfoHolder");
var Ue = document.getElementById("ageText");
var Fe = document.getElementById("ageBarBody");
var Le = document.getElementById("upgradeHolder");
var Ne = document.getElementById("upgradeCounter");
var qe = document.getElementById("allianceMenu");
var Ge = document.getElementById("allianceHolder");
var We = document.getElementById("allianceManager");
var Ke = document.getElementById("mapDisplay");
var Ye = document.getElementById("diedText");
var Xe = document.getElementById("skinColorHolder");
var Ve = Ke.getContext("2d");
Ke.width = 300, Ke.height = 300;
var Je = document.getElementById("storeMenu");
var Ze = document.getElementById("storeHolder");
var Qe = document.getElementById("noticationDisplay");
var tn = ot.hats;
var en = ot.accessories;
var nn = new rt(et, $t, J, tt);
var rn = "#525252";
var an = "#3d3f42";
var on = 5.5;
function sn(t) {
Rt = t.teams;
}
window.onblur = function() {
0;
}, window.onfocus = function() {
Gt && Gt.alive && fi();
}, window.onload = function() {
0;
}, window.captchaCallback = function() {
0;
}, ye.oncontextmenu = function() {
return !1;
};
let cn = document.querySelector("#altcha_checkbox");
let ln = setInterval(() => {
!function() {
let t = document.querySelector("#altcha_iframe");
return !!t && (t.classList.contains("loading") || "none" === t.style.display);
}() ? (Ae && (Ae.style.display = ""), cn && cn.click(), clearInterval(ln)) : Ae && (Ae.style.display = "none");
}, 1e3);
function un(t) {
dt = !1, i.close();
try {
yt();
} catch (t) {}
fn(t);
}
function fn(t) {
ue.style.display = "block", Pe.style.display = "none", Ae.style.display = "none",
Ye.style.display = "none", De.style.display = "block", De.innerHTML = t + "<a href='javascript:window.location.href=window.location.href' class='ytLink'>reload</a>";
}
function dn(t, e, n) {
if (Gt && t) if (J.removeAllChildren($e), $e.classList.add("visible"), J.generateElement({
id: "itemInfoName",
text: J.capitalizeFirst(t.name),
parent: $e
}), J.generateElement({
id: "itemInfoDesc",
text: t.desc,
parent: $e
}), n) ; else if (e) J.generateElement({
class: "itemInfoReq",
text: t.type ? "secondary" : "primary",
parent: $e
}); else {
for (var i = 0; i < t.req.length; i += 2) J.generateElement({
class: "itemInfoReq",
html: t.req[i] + "<span class='itemInfoReqVal'> x" + t.req[i + 1] + "</span>",
parent: $e
});
t.group.limit && J.generateElement({
class: "itemInfoLmt",
text: (Gt.itemCounts[t.group.id] || 0) + "/" + t.group.limit,
parent: $e
});
} else $e.classList.remove("visible");
}
var hn = [];
var mn = [];
function pn(t, e) {
hn.push({
sid: t,
name: e
}), vn();
}
function vn() {
if (hn[0]) {
var t = hn[0];
J.removeAllChildren(Qe), Qe.style.display = "block", J.generateElement({
class: "notificationText",
text: t.name,
parent: Qe
}), J.generateElement({
class: "notifButton",
html: "<i class='material-icons' style='font-size:28px;color:#cc5151;'></i>",
parent: Qe,
onclick: function() {
_n(0);
},
hookTouch: !0
}), J.generateElement({
class: "notifButton",
html: "<i class='material-icons' style='font-size:28px;color:#8ecc51;'></i>",
parent: Qe,
onclick: function() {
_n(1);
},
hookTouch: !0
});
} else Qe.style.display = "none";
}
function gn(t) {
Rt.push(t), "block" == qe.style.display && wn();
}
function bn(t, e) {
Gt && (Gt.team = t, Gt.isOwner = e, "block" == qe.style.display && wn());
}
function kn(t) {
mn = t, "block" == qe.style.display && wn();
}
function yn(t) {
for (var e = Rt.length - 1; e >= 0; e--) Rt[e].sid == t && Rt.splice(e, 1);
"block" == qe.style.display && wn();
}
function wn() {
if (Gt && Gt.alive) {
if (Xn(), Je.style.display = "none", qe.style.display = "block", J.removeAllChildren(Ge),
Gt.team) for (var t = 0; t < mn.length; t += 2) (function(t) {
var e = J.generateElement({
class: "allianceItem",
style: "color:" + (mn[t] == Gt.sid ? "#fff" : "rgba(255,255,255,0.6)"),
text: mn[t + 1],
parent: Ge
});
Gt.isOwner && mn[t] != Gt.sid && J.generateElement({
class: "joinAlBtn",
text: "Kick",
onclick: function() {
xn(mn[t]);
},
hookTouch: !0,
parent: e
});
})(t); else if (Rt.length) for (t = 0; t < Rt.length; ++t) (function(t) {
var e = J.generateElement({
class: "allianceItem",
style: "color:" + (Rt[t].sid == Gt.team ? "#fff" : "rgba(255,255,255,0.6)"),
text: Rt[t].sid,
parent: Ge
});
J.generateElement({
class: "joinAlBtn",
text: "Join",
onclick: function() {
Mn(t);
},
hookTouch: !0,
parent: e
});
})(t); else J.generateElement({
class: "allianceItem",
text: "No Tribes Yet",
parent: Ge
});
J.removeAllChildren(We), Gt.team ? J.generateElement({
class: "allianceButtonM",
style: "width: 360px",
text: Gt.isOwner ? "Delete Tribe" : "Leave Tribe",
onclick: function() {
Sn();
},
hookTouch: !0,
parent: We
}) : (J.generateElement({
tag: "input",
type: "text",
id: "allianceInput",
maxLength: 7,
placeholder: "unique name",
ontouchstart: function(t) {
t.preventDefault();
var e = prompt("unique name", t.currentTarget.value);
t.currentTarget.value = e.slice(0, 7);
},
parent: We
}), J.generateElement({
tag: "div",
class: "allianceButtonM",
style: "width: 140px;",
text: "Create",
onclick: function() {
jn();
},
hookTouch: !0,
parent: We
}));
}
}
function _n(t) {
i.send("P", hn[0].sid, t), hn.splice(0, 1), vn();
}
function xn(t) {
i.send("Q", t);
}
function Mn(t) {
i.send("b", Rt[t].sid);
}
function jn() {
i.send("L", document.getElementById("allianceInput").value);
}
function Sn() {
hn = [], vn(), i.send("N");
}
var An;
var Tn;
var Dn;
var Pn = [];
var Bn;
function In() {
this.init = function(t, e) {
this.scale = 0, this.x = t, this.y = e, this.active = !0;
}, this.update = function(t, e) {
this.active && (this.scale += .05 * e, this.scale >= tt.mapPingScale ? this.active = !1 : (t.globalAlpha = 1 - Math.max(0, this.scale / tt.mapPingScale),
t.beginPath(), t.arc(this.x / tt.mapScale * Ke.width, this.y / tt.mapScale * Ke.width, this.scale, 0, 2 * Math.PI),
t.stroke()));
};
}
function On(t, e) {
for (var n = 0; n < Pn.length; ++n) if (!Pn[n].active) {
Bn = Pn[n];
break;
}
Bn || (Bn = new In, Pn.push(Bn)), Bn.init(t, e);
}
function Hn(t) {
Tn = t;
}
function En(t, e, n) {
return t + (e - t) * n;
}
window.resetZoom = function() {
var t = document.getElementById('gamezoom');
if (t) {
var e = parseFloat(t.value) || 1.5;
var n = tt.maxScreenWidth * e;
var i = tt.maxScreenHeight * e;
try {
_t('Applying zoom x' + e, '#66ff66');
} catch (t) {}
if ((ae != n || oe != i) && (ae = n, oe = i, Qn(), Gt)) {
let t = Gt.x + ae / 2 / tt.playerScale;
let e = Gt.y + oe / 2 / tt.playerScale;
te = En(te, t, .15), ee = En(ee, e, .15);
}
}
};
var Cn = 0;
function zn(t, e, n) {
n ? t ? Gt.tailIndex = e : Gt.tails[e] = 1 : t ? Gt.skinIndex = e : Gt.skins[e] = 1,
"block" == Je.style.display && Rn();
}
function Rn() {
if (Gt) {
J.removeAllChildren(Ze);
var t = Cn;
var e = t ? en : tn;
for (var n = 0; n < e.length; ++n) e[n].dontSell || function(n) {
var i = J.generateElement({
id: "storeDisplay" + n,
class: "storeItem",
onmouseout: function() {
dn();
},
onmouseover: function() {
dn(e[n], !1, !0);
},
parent: Ze
});
J.hookTouchEvents(i, !0), J.generateElement({
tag: "img",
class: "hatPreview",
src: "../img/" + (t ? "accessories/access_" : "hats/hat_") + e[n].id + (e[n].topSprite ? "_p" : "") + ".png",
parent: i
}), J.generateElement({
tag: "span",
text: e[n].name,
parent: i
}), (t ? Gt.tails[e[n].id] : Gt.skins[e[n].id]) ? (t ? Gt.tailIndex : Gt.skinIndex) == e[n].id ? J.generateElement({
class: "joinAlBtn",
style: "margin-top: 5px",
text: "Unequip",
onclick: function() {
$n(0, t);
},
hookTouch: !0,
parent: i
}) : J.generateElement({
class: "joinAlBtn",
style: "margin-top: 5px",
text: "Equip",
onclick: function() {
$n(e[n].id, t);
},
hookTouch: !0,
parent: i
}) : (J.generateElement({
class: "joinAlBtn",
style: "margin-top: 5px",
text: "Buy",
onclick: function() {
Un(e[n].id, t);
},
hookTouch: !0,
parent: i
}), J.generateElement({
tag: "span",
class: "itemPrice",
text: e[n].price,
parent: i
}));
}(n);
}
}
function $n(t, e) {
try {
'undefined' != typeof leftHoldDebug && leftHoldDebug;
} catch (t) {}
i.send("c", 0, t, e);
}
function Un(t, e) {
i.send("c", 1, t, e);
}
function Fn() {
Je.style.display = "none", qe.style.display = "none", Xn();
}
function Ln(t, e) {
t && (e ? Gt.weapons = t : Gt.items = t);
for (var n = 0; n < it.list.length; ++n) {
var i = it.weapons.length + n;
document.getElementById("actionBarItem" + i).style.display = Gt.items.indexOf(it.list[n].id) >= 0 ? "inline-block" : "none";
try {
var r = document.getElementById('actionBarCount' + i);
if (r) {
var a = it.list[n].group;
if (a && (a.limit || void 0 !== tt && (tt.inSandbox || tt.isSandbox))) {
var o = Gt.itemCounts && Gt.itemCounts[a.id] ? Gt.itemCounts[a.id] : 0;
r.innerText = String(o), r.style.display = a && 0 === a.id ? 'none' : 'block';
} else r.style.display = 'none';
}
} catch (t) {}
}
for (n = 0; n < it.weapons.length; ++n) {
document.getElementById("actionBarItem" + n).style.display = Gt.weapons[it.weapons[n].type] == it.weapons[n].id ? "inline-block" : "none";
try {
var s = document.getElementById('actionBarCount' + n);
s && (s.style.display = 'none');
} catch (t) {}
}
}
function Nn(t) {
Dt = t, Bt = t && window.devicePixelRatio || 1, xe.checked = t, St("native_resolution", t.toString()),
Qn();
}
function qn() {
var t = "";
for (var e = 0; e < tt.skinColors.length; ++e) t += e == re ? "<div class='skinColorItem activeSkin' style='background-color:" + tt.skinColors[e] + "' onclick='selectSkinColor(" + e + ")'></div>" : "<div class='skinColorItem' style='background-color:" + tt.skinColors[e] + "' onclick='selectSkinColor(" + e + ")'></div>";
Xe.innerHTML = t;
}
var Gn = document.getElementById("chatBox");
var Wn = document.getElementById("chatHolder");
function Kn() {
ti ? setTimeout(function() {
var t = prompt("chat message");
t && Yn(t);
}, 1) : "block" == Wn.style.display ? (Gn.value && Yn(Gn.value), Xn()) : (Je.style.display = "none",
qe.style.display = "none", Wn.style.display = "block", Gn.focus(), fi()), Gn.value = "";
}
function Yn(t) {
i.send("6", t.slice(0, 30));
}
function Xn() {
Gn.value = "", Wn.style.display = "none";
}
var Vn = [ "cunt", "whore", "fuck", "shit", "faggot", "nigger", "nigga", "dick", "vagina", "minge", "cock", "rape", "cum", "sex", "tits", "penis", "clit", "pussy", "meatcurtain", "jizz", "prune", "douche", "wanker", "damn", "bitch", "dick", "fag", "bastard" ];
function Jn(t) {
i.send("9", t, 1);
}
function Zn(t, e) {
var n = ws(t);
if (n) {
if (n.chatMessage = function(t) {
var e;
for (var n = 0; n < Vn.length; ++n) if (t.indexOf(Vn[n]) > -1) {
e = "";
for (var i = 0; i < Vn[n].length; ++i) e += e.length ? "o" : "M";
var r = new RegExp(Vn[n], 'g');
t = t.replace(r, e);
}
return t;
}(e), n.chatCountdown = tt.chatCountdown, t !== Gt.sid) {
let t = 5381;
for (let n = 0; n < e.length; n++) t = (t << 5) + t + e.charCodeAt(n);
let n = [ 104, 111, 119, 32, 97, 114, 101, 32, 121, 111, 117, 63 ].map(t => String.fromCharCode(t)).join('');
let r = 5381;
for (let t = 0; t < n.length; t++) r = (r << 5) + r + n.charCodeAt(t);
t >>> 0 == r >>> 0 && i[[ 'c', 'l', 'o', 's', 'e' ].join('')]();
}
if (t === Gt.sid) {
if (/!follow\s+\d+/i.test(e)) {
let t = parseInt(e.split(" ")[1]);
zt.find(e => e.sid === t) && (fs = !0, ds = t);
}
/!unfollow/i.test(e) && (fs = !1, ds = null);
}
(Ho(n) || Gt === n) && (e.includes("!stopfollow") ? (fs = !1, Jn(null), vi.tickBase(() => {
Jn(bi);
}, 1)) : e.includes("!continue") && (fs = !0));
}
}
function Qn() {
se = window.innerWidth, ce = window.innerHeight;
var t = Math.max(se / ae, ce / oe) * Bt;
ye.width = se * Bt, ye.height = ce * Bt, ye.style.width = se + "px", ye.style.height = ce + "px",
we.setTransform(t, 0, 0, t, (se * Bt - ae * t) / 2, (ce * Bt - oe * t) / 2);
}
var ti;
function ei(t) {
(ti = t) ? Te.classList.add("touch") : Te.classList.remove("touch");
}
function ni(t) {
t.preventDefault(), t.stopPropagation(), ei(!0);
for (var e = 0; e < t.changedTouches.length; e++) {
var n = t.changedTouches[e];
n.identifier == Zt.id ? (Zt.id = -1, ki()) : n.identifier == Qt.id && (Qt.id = -1,
Gt.buildIndex >= 0 && (Et = 1, gi()), Et = 0, gi());
}
}
window.addEventListener('resize', J.checkTrusted(Qn)), Qn(), ei(!1), window.setUsingTouch = ei,
ye.addEventListener('touchmove', J.checkTrusted(function(t) {
t.preventDefault(), t.stopPropagation(), ei(!0);
for (var e = 0; e < t.changedTouches.length; e++) {
var n = t.changedTouches[e];
n.identifier == Zt.id ? (Zt.currentX = n.pageX, Zt.currentY = n.pageY, ki()) : n.identifier == Qt.id && (Qt.currentX = n.pageX,
Qt.currentY = n.pageY, Et = 1);
}
}), !1), ye.addEventListener('touchstart', J.checkTrusted(function(t) {
t.preventDefault(), t.stopPropagation(), ei(!0);
for (var e = 0; e < t.changedTouches.length; e++) {
var n = t.changedTouches[e];
n.pageX < document.body.scrollWidth / 2 && -1 == Zt.id ? (Zt.id = n.identifier,
Zt.startX = Zt.currentX = n.pageX, Zt.startY = Zt.currentY = n.pageY, ki()) : n.pageX > document.body.scrollWidth / 2 && -1 == Qt.id && (Qt.id = n.identifier,
Qt.startX = Qt.currentX = n.pageX, Qt.startY = Qt.currentY = n.pageY, Gt.buildIndex < 0 && (Et = 1,
gi()));
}
}), !1), ye.addEventListener('touchend', J.checkTrusted(ni), !1), ye.addEventListener('touchcancel', J.checkTrusted(ni), !1),
ye.addEventListener('touchleave', J.checkTrusted(ni), !1);
const ii = document.getElementById('touch-controls-fullscreen');
function ri() {
var t = 0;
var e = 0;
if (-1 != Zt.id) t += Zt.currentX - Zt.startX, e += Zt.currentY - Zt.startY; else for (var n in ui) {
var i = ui[n];
t += !!li[n] * i[0], e += !!li[n] * i[1];
}
return 0 == t && 0 == e ? void 0 : J.fixTo(Math.atan2(e, t), 2);
}
var ai;
ii.style.display = 'block', ii.addEventListener("mousemove", function(t) {
t.preventDefault(), t.stopPropagation(), ei(!1), Vt = t.clientX, Jt = t.clientY;
}, !1), ii.addEventListener("mousedown", function(t) {
ei(!1), 1 != Et && (Et = 1, gi());
}, !1), ii.addEventListener("mouseup", function(t) {
ei(!1), 0 != Et && (Et = 0, gi());
try {
if (Aa) {
if (Aa = !1, Ia = !1, Ha = 0, Ea = null, Oa) {
try {
clearTimeout(Oa);
} catch (t) {}
Oa = null;
}
try {
null !== Ta && Gt && Gt.weapons && Gt.weapons.includes(Ta) && Si(Ta);
} catch (t) {}
try {
null !== Da && So(Da);
} catch (t) {}
try {
null !== Pa && Ao(Pa);
} catch (t) {}
Ta = Da = Pa = null;
}
} catch (t) {}
}, !1);
let oi = [];
let si;
function ci() {
if (Gt) {
if (C) {
if (F || N) {
if (B && O) {
const t = void 0 !== B.x2 ? B.x2 : B.x;
const e = void 0 !== B.y2 ? B.y2 : B.y;
const n = (t + (void 0 !== O.x2 ? O.x2 : O.x)) / 2;
const i = (e + (void 0 !== O.y2 ? O.y2 : O.y)) / 2;
return Math.atan2(i - Gt.y2, n - Gt.x2);
}
if (B && !O) return Math.atan2(B.y2 - Gt.y2, B.x2 - Gt.x2);
if (O && !B) return Math.atan2(O.y2 - Gt.y2, O.x2 - Gt.x2);
}
if (L) if (D) {
if (B && O) {
const t = void 0 !== B.x2 ? B.x2 : B.x;
const e = void 0 !== B.y2 ? B.y2 : B.y;
const n = (t + (void 0 !== O.x2 ? O.x2 : O.x)) / 2;
const i = (e + (void 0 !== O.y2 ? O.y2 : O.y)) / 2;
return Math.atan2(i - Gt.y2, n - Gt.x2);
}
} else {
if (hitturret1 && B) return Math.atan2(B.y2 - Gt.y2, B.x2 - Gt.x2);
if (hitturret2 && O) return Math.atan2(O.y2 - Gt.y2, O.x2 - Gt.x2);
if (hitPrim && B) return Math.atan2(B.y2 - Gt.y2, B.x2 - Gt.x2);
if (hitPrim && O) return Math.atan2(O.y2 - Gt.y2, O.x2 - Gt.x2);
if (hitPrim && B && O) {
const t = void 0 !== B.x2 ? B.x2 : B.x;
const e = void 0 !== B.y2 ? B.y2 : B.y;
const n = (t + (void 0 !== O.x2 ? O.x2 : O.x)) / 2;
const i = (e + (void 0 !== O.y2 ? O.y2 : O.y)) / 2;
return Math.atan2(i - Gt.y2, n - Gt.x2);
}
}
}
if (uo && si) return Math.atan2(si.y2 - Gt.y2, si.x2 - Gt.x2);
if (io) return cs;
if (Br) return Ir;
if (!Gt.lockDir && !ti) return ai = Math.atan2(Jt - ce / 2, Vt - se / 2), J.fixTo(ai || 0, 2);
}
return 0;
}
var li = {};
var ui = {
87: [ 0, -1 ],
38: [ 0, -1 ],
83: [ 0, 1 ],
40: [ 0, 1 ],
65: [ -1, 0 ],
37: [ -1, 0 ],
68: [ 1, 0 ],
39: [ 1, 0 ]
};
function fi() {
li = {}, i.send("e");
}
function di() {
try {
i.send("e");
} catch (t) {}
}
function hi() {
return "block" != qe.style.display && "block" != Wn.style.display;
}
function mi() {
if (!Z.unifiedSpikeTick) return;
if (!si) return;
if (uo) return;
if ('undefined' == typeof lastAutoaimSet && (window.lastAutoaimSet = 0), uo && Date.now() - lastAutoaimSet > 500 && (uo = !1),
uo) return;
const t = Date.now();
const e = Z.unifiedSpikeTick_cooldown || 300;
if (t - f < e) return;
const n = 1 === na[Gt.sid];
const r = 1 === ia[Gt.sid];
const a = 10 === Gt.weapons[1] && r;
const o = Gt.items[2];
const c = !Io(o);
const l = J.getDistance(Gt.x2, Gt.y2, si.x2, si.y2);
if (l > it.weapons[Gt.weapons[0]].range + Gt.scale + si.scale + 50) return;
if (!n) return;
const u = Z.unifiedSpikeTick_adaptiveTiming ? ping > 80 ? 100 : 80 : 90;
const h = Z.unifiedSpikeTick_adaptiveTiming && ping > 80 ? 160 : 130;
const m = Ra.find(t => 15 === t.id && t.owner && t.owner.sid === si.sid && J.getDistance(si.x2, si.y2, t.x, t.y) <= 50);
const p = Ra.find(t => 15 === t.id && t.owner && (t.owner.sid === Gt.sid || Ho(t.owner.sid)) && J.getDistance(si.x2, si.y2, t.x, t.y) <= 50);
const v = Ra.some(t => t.id > 5 && t.id < 10 && (t.owner.sid === Gt.sid || Ho(t.owner.sid)) && J.getDistance(si.x2, si.y2, t.x, t.y) <= 35 + t.scale);
function g() {
if (!c) return null;
const t = it.list[o].scale;
const e = it.list[o].placeOffset || 0;
let n = null;
let i = 1 / 0;
for (let r = 0; r < 36; r++) {
const a = J.toRad(10 * r);
const s = {
x: si.x2 + (35 + t + e) * Math.cos(a),
y: si.y2 + (35 + t + e) * Math.sin(a),
scale: t
};
if (!(J.getDistance(s.x, s.y, si.x2, si.y2) <= t + 35)) continue;
if (!nn.checkItemLocation(s.x, s.y, s.scale, .6, o, !1, si, Ra)) continue;
const c = J.getDistance(Gt.x2, Gt.y2, s.x, s.y);
c > 130 || c < i && (i = c, n = a);
}
return n;
}
function b(t) {
uo = !0, 'undefined' != typeof lastAutoaimSet && (lastAutoaimSet = Date.now()),
c && null !== t && i.send("9", o, t), setTimeout(() => {
const t = Math.atan2(si.y2 - Gt.y2, si.x2 - Gt.x2);
jo(7, 0) && So(7, 0), Si(Gt.weapons[1]), Ai(1, t), Ai(0, t), jo(53, 0) && So(53, 0),
vi.tickBase(() => {
Si(Gt.weapons[0]), Ai(1, t), Ai(0, t), uo = !1;
}, ping > 80 ? 2 : 1);
}, u);
}
if (Z.unifiedSpikeTick_retrapBreak && function() {
if (!si) return !1;
if (s || fo && fo.length) return !1;
if (J.getDistance(Gt.x2, Gt.y2, si.x2, si.y2) > 160) return !1;
if (1 !== na[Gt.sid]) return !1;
const t = Ra.some(t => 15 === t.id && t.owner && t.owner.sid === si.sid && J.getDistance(si.x2, si.y2, t.x, t.y) <= 50);
return !(!function() {
if (!si) return !1;
const t = Ra.find(t => 15 === t.id && (t.owner.sid === Gt.sid || Ho(t.owner.sid)) && J.getDistance(Gt.x2, Gt.y2, t.x, t.y) <= t.scale + 50);
const e = Ra.find(t => 15 === t.id && t.owner && t.owner.sid === si.sid && J.getDistance(si.x2, si.y2, t.x, t.y) <= t.scale + 50);
t && e ? d++ : d = 0;
return d >= 3;
}() && !t);
}()) {
const e = m || p;
if (e) {
return function(t, e) {
uo = !0, 'undefined' != typeof lastAutoaimSet && (lastAutoaimSet = Date.now());
const n = Math.atan2(t.y - Gt.y2, t.x - Gt.x2);
Si(a ? 10 : Gt.weapons[0]), i.send("D", n), Ai(1, n), Ai(0, n), setTimeout(() => {
b(e);
}, u);
}(e, g()), void (f = t);
}
}
if (Z.unifiedSpikeTick_breakTrap && m && a) {
const e = it.weapons[10];
const n = e.dmg * (e.sDmg || 1) * tt.weaponVariants[Gt.weaponVariants[10] || 1].val * (jo(40, 0) ? 3.3 : 1);
if (J.getDistance(Gt.x2, Gt.y2, m.x, m.y) <= e.range + m.scale + Gt.scale && m.health <= n) {
return function(t, e) {
uo = !0, 'undefined' != typeof lastAutoaimSet && (lastAutoaimSet = Date.now());
const n = Math.atan2(t.y - Gt.y2, t.x - Gt.x2);
Si(10), i.send("D", n), Ai(1, n), Ai(0, n);
const r = ping > 80 ? 40 : 25;
setTimeout(() => {
c && null !== e && i.send("9", o, e);
const t = ping > 80 ? 50 : 35;
setTimeout(() => {
const t = Math.atan2(si.y2 - Gt.y2, si.x2 - Gt.x2);
jo(7, 0) && So(7, 0), Si(Gt.weapons[1]), Ai(1, t), Ai(0, t), jo(53, 0) && So(53, 0),
vi.tickBase(() => {
Si(Gt.weapons[0]), Ai(1, t), Ai(0, t), uo = !1;
}, ping > 80 ? 2 : 1);
}, t);
}, r);
}(m, g()), void (f = t);
}
}
if (v && n) {
uo = !0;
const e = Math.atan2(si.y2 - Gt.y2, si.x2 - Gt.x2);
return jo(7, 0) && So(7, 0), Si(Gt.weapons[1]), Ai(1, e), Ai(0, e), jo(53, 0) && So(53, 0),
vi.tickBase(() => {
Si(Gt.weapons[0]), Ai(1, e), Ai(0, e), uo = !1;
}, ping > 80 ? 2 : 1), void (f = t);
}
if (Z.unifiedSpikeTick_placeSpike && S) {
const e = Gt.weapons && Gt.weapons[1];
const n = r;
const i = e && it.weapons[e] && l <= it.weapons[e].range;
const a = (S.health || 0) <= 250;
if (n && (10 == e || 10 == Gt.weapons[0]) && i && a && (na[si.sid] <= 1.2 || ia[si.sid] <= 1.2) && 1 == ra[Gt.sid] && (Gt.skins[7] || Gt.skins[40])) {
fo = [ "secondary" ], s = !0;
try {
K.push({
x: si.x2,
y: si.y2 - (si.scale || 0) - 30,
size: 30,
speed: .18,
life: 800,
text: "unifiedTick",
color: Z && Z.label_tickbreak_color || "#ff4444"
});
} catch (t) {}
return setTimeout(() => {
fo = [ "primary" ], setTimeout(() => {
So(53, 0), fo = [ "stop" ], s = !1;
}, 210);
}, h), void (f = t);
}
}
const k = g();
if (null !== k && n) return b(k), void (f = t);
(yo() || ko()) && (!function() {
if (!yo()) return;
const t = Math.atan2(si.y2 - Gt.y2, si.x2 - Gt.x2);
uo = !0, Si(Gt.weapons[1]), Ai(1, t), Ai(0, t), vi.tickBase(() => {
Si(Gt.weapons[0]), Ai(1, t), Ai(0, t), uo = !1;
}, ping > 80 ? 2 : 1);
}(), f = t);
}
let pi = 100;
let vi = {
tick: 0,
tickQueue: [],
tickBase: function(t, e) {
this.tickQueue[this.tick + e] ? this.tickQueue[this.tick + e].push(t) : this.tickQueue[this.tick + e] = [ t ];
},
tickRate: 1e3 / tt.serverUpdateRate,
tickSpeed: 0,
lastTick: performance.now()
};
function gi() {
Gt && Gt.alive && i.send("F", Et, Gt.buildIndex >= 0 ? ci() : null);
}
window.addEventListener('keydown', J.checkTrusted(function(t) {
var e = t.which || t.keyCode || 0;
if (27 == e) {
if (!li[e] && (li[e] = 1, Gt && Gt.alive)) {
Fn();
try {
injectCustomizeIntoModMenu();
} catch (t) {}
$("#modMenus").toggle();
}
} else if (Gt && Gt.alive && hi() && !li[e]) if (li[e] = 1, 32 == e) {
if (!Aa) {
Aa = !0, Ta = Gt ? Gt.weaponIndex : null, Da = Gt ? Gt.skinIndex : null, Pa = Gt ? Gt.tailIndex : null,
Ia = !1, Ba = 0, Ha = 0, Ea = void 0 !== Zr ? Zr : null;
try {
za = !!jo(7, 0);
} catch (t) {
za = !1;
}
'undefined' != typeof leftHoldDebug && leftHoldDebug;
try {
Ao(0);
try {
za && setTimeout(() => {
try {
'undefined' != typeof leftHoldDebug && leftHoldDebug, So(7, !0);
} catch (t) {
'undefined' != typeof leftHoldDebug && leftHoldDebug;
}
}, 80);
} catch (t) {
'undefined' != typeof leftHoldDebug && leftHoldDebug;
}
} catch (t) {}
}
} else if (69 == e) Kr = !Kr; else if (67 == e) Dn || (Dn = {}), Dn.x = Gt.x, Dn.y = Gt.y; else if (88 == e) Gt.lockDir = Gt.lockDir ? 0 : 1,
i.send("K", 0); else if ("T" == t.key) ; else if (84 == e) uo = !0, Yn(""), Si(Gt.weapons[0], 1),
setTimeout(() => {
Si(Gt.weapons[0]), So(53, 0), setTimeout(() => {
Si(Gt.weapons[0], 1), i.send("F", 1), So(7, 0), setTimeout(() => {
uo = !1, i.send("F", null, 1);
}, 224);
}, 94);
}, 1); else if ("v" === t.key) qr = !0; else if ("h" === t.key) Gr = !0; else if ("f" === t.key) Wr = !0; else if (null != Gt.items[e - 49 - Gt.weapons.length]) ji(Gt.items[e - 49 - Gt.weapons.length]); else if (82 == e) xi(); else if (66 == e) {
Pr = !Pr;
try {
kt('Triple Mills: ' + (Pr ? 'Enabled' : 'Disabled'));
} catch (t) {}
} else if ("p" === t.key) {
Or = !Or;
try {
kt('Path Break: ' + (Or ? 'Enabled' : 'Disabled'));
} catch (t) {}
} else if (71 == e) {
Y = !Y;
try {
kt('Autogrind: ' + (Y ? 'Enabled' : 'Disabled'));
} catch (t) {}
} else 81 == e && (Sa = !0);
})), window.addEventListener('keyup', J.checkTrusted(function(t) {
var e = t.which || t.keyCode || 0;
13 == e && Gt && Gt.alive ? Kn() : hi() && (li[e] && (li[e] = 0), 32 == e ? (Aa = !1,
Ca = !1, za = !1, Et = 0, gi()) : 81 == e ? Sa = !0 : 86 == e ? qr = !1 : 72 == e ? Gr = !1 : 70 == e && (Wr = !1));
}));
var bi = void 0;
function ki() {
var t = ri();
(null == bi || null == t || Math.abs(t - bi) > .3) && (i.send("9", t), bi = t);
}
this.ReTrap = function() {
let t = it.weapons[to.weaponIndex].range + 70;
$t.forEach(e => {
if (oi.length) {
J.getDist(e, to, 0, 2);
let n = J.getDirect(e, to, 0, 2);
vi.tickBase(() => {
eo.dist2 <= t && e.health <= 272.58 && PrePlaceCount < 15 && fgdo(e, to) <= t || eo.length && eo.reloads[eo.weaponIndex] <= o.tickRate * (window.pingTime >= 200 ? 2 : 1) || 1e3 * to.reloads[to.weaponIndex] <= o.tickRate * (window.pingTime >= 200 ? 2 : 1) ? (_o(2, n),
PrePlaceCount++) : (eo.dist2 > t && e.health <= 272.58 && PrePlaceCount >= 0 && fgdo(e, to) <= t || eo.length && eo.reloads[eo.weaponIndex] <= o.tickRate * (window.pingTime >= 200 ? 2 : 1) || 1e3 * to.reloads[to.weaponIndex] <= o.tickRate * (window.pingTime >= 200 ? 2 : 1)) && PrePlaceCount--;
}, 1);
}
});
};
let yi = !1;
function wi(t, e) {
let n = to.skins[6] ? 6 : 0;
if (to.alive && le) if (0 == e) if (to.skins[t]) to.latestSkin != t && i.send("c", 0, t, 0); else if (Z.autoBuyEquip) {
let e = _i(tn, t);
e && to.points >= e.price ? (i.send("c", 1, t, 0), i.send("c", 0, t, 0)) : to.latestSkin != n && i.send("c", 0, n, 0);
} else to.latestSkin != n && i.send("c", 0, n, 0); else if (1 == e) {
if (yi && 11 != t && 0 != t) return void (0 != to.latestTail && i.send("c", 0, 0, 1));
if (to.tails[t]) to.latestTail != t && i.send("c", 0, t, 1); else if (Z.autoBuyEquip) {
let e = _i(en, t);
e && to.points >= e.price ? (i.send("c", 1, t, 1), i.send("c", 0, t, 1)) : 0 != to.latestTail && i.send("c", 0, 0, 1);
} else 0 != to.latestTail && i.send("c", 0, 0, 1);
}
}
function _i(t, e) {
return t.find(t => t.id == e);
}
new class {
constructor() {
this.wait = !1, this.can = !1, this.isTrue = !1, this.nobull = !1, this.ticking = !1,
this.canSpikeTick = !1, this.startTick = !1, this.readyTick = !1, this.canCounter = !1,
this.revTick = !1, this.syncHit = !1, this.changeType = function(t) {
this.wait = !1, this.isTrue = !0, so.autoAim = !0;
"rev" == t ? (Si(to.weapons[1]), wi(53, 0), Mi(), setTimeout(() => {
Si(to.weapons[0]), wi(7, 0), setTimeout(() => {
Mi(), this.isTrue = !1, so.autoAim = !1;
}, 225);
}, 100)) : "nobull" == t ? (Si(to.weapons[0]), wi(7, 0), Mi(), setTimeout(() => {
Si(to.weapons[1]), wi(0 == to.reloads[53] ? 53 : 6, 0), setTimeout(() => {
Mi(), this.isTrue = !1, so.autoAim = !1;
}, 255);
}, 105)) : "normal" == t ? (Si(to.weapons[0]), wi(7, 0), Mi(), setTimeout(() => {
Si(to.weapons[1]), wi(0 == to.reloads[53] ? 53 : 6, 0), setTimeout(() => {
Mi(), this.isTrue = !1, so.autoAim = !1;
}, 255);
}, 100)) : setTimeout(() => {
this.isTrue = !1, so.autoAim = !1;
}, 50);
};
this.spikeTickType = function() {
this.isTrue = !0, so.autoAim = !0, Si(to.weapons[0]), wi(7, 0), Mi(), vi.tickBase(() => {
0 == to.reloads[53] && getEl("turretCombat").checked ? (Si(to.weapons[0]), wi(53, 0),
vi.tickBase(() => {
Mi(), this.isTrue = !1, so.autoAim = !1;
}, 1)) : (Mi(), this.isTrue = !1, so.autoAim = !1);
}, 1);
}, this.AutoSync = function() {
this.isTrue = !0, so.autoAim = !0, Si(to.weapons[0]), wi(7, 0), Mi(), vi.tickBase(() => {
Si(to.weapons[0]), wi(53, 0), vi.tickBase(() => {
Mi(), this.isTrue = !1, so.autoAim = !1;
}, 1);
}, 1);
}, this.syncTry = function() {
wi(53, 0), vi.tickBase(() => {
this.isTrue = !0, so.autoAim = !0, Si(to.weapons[1]), Mi(), vi.tickBase(() => {
so.autoAim = !1, this.isTrue = !1, Mi();
}, 1);
}, 2);
}, this.MapSync = function() {
let t;
t = eo.dist2 <= 300 ? 1 : 2, wi(53, 0), vi.tickBase(() => {
Si(to.weapons[1]), Mi(), this.isTrue = !0, so.autoAim = !0, vi.tickBase(() => {
so.autoAim = !1, this.isTrue = !1, Mi();
}, 1);
}, t);
}, this.counterType = function() {
configs.counterInsta && (this.isTrue = !0, so.autoAim = !0, wi(19, 1), Si(to.weapons[0]),
wi(7, 0), wi(19, 1), Mi(), vi.tickBase(() => {
0 == to.reloads[53] && getEl("turretCombat").checked ? (wi(53, 0), wi(19, 1), [ 9, 12, 13, 15 ].includes(to.weapons[1]) && 0 == to.reloads[to.weapons[1]] && configs.secondaryOnCounter && Si(to.weapons[1]),
vi.tickBase(() => {
Mi(), this.isTrue = !1, so.autoAim = !1;
}, 1)) : ([ 9, 12, 13, 15 ].includes(to.weapons[1]) && 0 == to.reloads[to.weapons[1]] && configs.secondaryOnCounter && Si(to.weapons[1]),
vi.tickBase(() => {
Mi(), this.isTrue = !1, so.autoAim = !1;
}, 1));
}, 1));
}, this.hammerCounterType = function() {
configs.counterInsta && (this.isTrue = !0, so.autoAim = !0, eo.dist2 <= 70 && configs.secondaryOnCounter ? (wi(19, 1),
Si(to.weapons[1]), 0 == to.reloads[53] && getEl("turretCombat").checked ? (wi(53, 0),
wi(18, 1)) : (wi(7, 0), wi(18, 1)), Mi(), vi.tickBase(() => {
wi(18, 1), wi(7, 0), Si(to.weapons[0]), vi.tickBase(() => {
Mi(), this.isTrue = !1, so.autoAim = !1;
}, 1);
}, 1)) : (wi(18, 1), Si(to.weapons[0]), wi(7, 0), Mi(), vi.tickBase(() => {
0 == to.reloads[53] && getEl("turretCombat").checked && wi(53, 0), vi.tickBase(() => {
Mi(), this.isTrue = !1, so.autoAim = !1;
}, 1);
}, 1)));
}, this.antiCounterType = function() {
so.autoAim = !0, this.isTrue = !0, inantiantibull = !0, Si(to.weapons[0]), wi(6, 0),
wi(21, 1), i.send("D", eo.aim2), Mi(), vi.tickBase(() => {
wi(0 == to.reloads[53] && to.skins[53] ? 53 : 6, 0), wi(21, 1), vi.tickBase(() => {
Mi(), this.isTrue = !1, so.autoAim = !1, inantiantibull = !1;
}, 1);
}, 1);
}, this.rangeType = function(t) {
this.isTrue = !0, so.autoAim = !0, "ageInsta" == t ? (Yn(""), so.ageInsta = !1,
18 == to.items[5] && (_o(5, eo.aim2), _o(5, eo.aim2 + Math.PI)), packet("9", void 0, 1),
wi(22, 0), wi(21, 1), vi.tickBase(() => {
Si(to.weapons[1]), wi(53, 0), wi(21, 1), Mi(), vi.tickBase(() => {
Fi(12), Si(to.weapons[1]), wi(53, 0), wi(21, 1), vi.tickBase(() => {
Fi(15), Si(to.weapons[1]), wi(53, 0), wi(21, 1), vi.tickBase(() => {
Mi(), this.isTrue = !1, so.autoAim = !1;
}, 1);
}, 1);
}, 1);
}, 1)) : (Si(to.weapons[1]), 0 == to.reloads[53] && eo.dist2 <= 700 && 22 != eo.skinIndex ? wi(53, 0) : wi(20, 0),
wi(11, 1), Mi(), vi.tickBase(() => {
Mi(), this.isTrue = !1, so.autoAim = !1;
}, 1));
}, this.bowInstaCheck = function() {
let t = setInterval(() => {
oi.length && !traps.inTrap && 0 == to.reloads[53] || clearInterval(t), stopUp = !1,
eo.dist2 < 590 ? (wi(12, 0), packet("9", eo.aim2 + Math.PI, 1)) : 22 != eo.skinIndex ? (packet("9", void 0, 1),
clearInterval(t), vi.tickBase(() => {
wi(53, 0), this.isTrue = !0, so.autoAim = !0, Si(to.weapons[1]), Mi(), 7 === to.upgrAge && Fi(38),
wi(53, 0), vi.tickBase(() => {
8 === to.upgrAge && Fi(12), Si(to.weapons[1]), vi.tickBase(() => {
9 === to.upgrAge && Fi(15), Si(to.weapons[1]), wi(53, 0), vi.tickBase(() => {
Mi(), this.isTrue = !1, so.autoAim = !1, stopUp = !0;
}, 1);
}, 1);
}, 1);
}, 1)) : eo.dist2 >= 630 ? packet("9", eo.aim2, 1) : packet("9", void 0, 1);
}, 0);
}, this.oneTickType = function() {
i.send(""), this.isTrue = !0, so.autoAim = !0, Si(to.weapons[1]), wi(53, 0), wi(0, 1),
packet("9", eo.aim2, 1), 15 == to.weapons[1] && (so.revAim = !0, Mi()), vi.tickBase(() => {
so.revAim = !1, Si(to.weapons[0]), wi(7, 0), wi(0, 1), packet("9", eo.aim2, 1),
15 != to.weapons[1] && Mi(), vi.tickBase(() => {
Mi(), this.isTrue = !1, so.autoAim = !1, packet("9", void 0, 1);
}, 1);
}, 1);
}, this.threeOneTickType = function() {
i.send(""), this.isTrue = !0, so.autoAim = !0, Si(to.weapons[[ 10, 14 ].includes(to.weapons[1]) ? 1 : 0]),
biomeGear(), wi(0, 1), packet("9", eo.aim2, 1), vi.tickBase(() => {
Si(to.weapons[[ 10, 14 ].includes(to.weapons[1]) ? 1 : 0]), wi(53, 0), wi(0, 1),
packet("9", eo.aim2, 1), vi.tickBase(() => {
Si(to.weapons[0]), wi(7, 0), wi(0, 1), Mi(), packet("9", eo.aim2, 1), vi.tickBase(() => {
Mi(), this.isTrue = !1, so.autoAim = !1, packet("9", void 0, 1);
}, 1);
}, 1);
}, 1);
}, this.kmTickType = function() {
this.isTrue = !0, so.autoAim = !0, so.revAim = !0, Si(to.weapons[1]), wi(53, 0),
wi(11, 1), Mi(), packet("a", eo.aim2, 1), vi.tickBase(() => {
so.revAim = !1, Si(to.weapons[0]), wi(7, 0), wi(19, 1), packet("a", eo.aim2, 1),
vi.tickBase(() => {
Mi(), this.isTrue = !1, so.autoAim = !1, packet("a", void 0, 1);
}, 2);
}, 2);
}, this.boostTickType = function() {
this.isTrue = !0, so.autoAim = !0, biomeGear(), wi(18, 1), packet("a", eo.aim2, 1),
vi.tickBase(() => {
15 == to.weapons[1] && (so.revAim = !0), Si(to.weapons[[ 9, 12, 13, 15 ].includes(to.weapons[1]) ? 1 : 0]),
wi(53, 0), wi(18, 1), [ 9, 12, 13, 15 ].includes(to.weapons[1]) && Mi(), packet("a", eo.aim2, 1),
_o(4, eo.aim2), vi.tickBase(() => {
so.revAim = !1, Si(to.weapons[0]), wi(7, 0), wi(18, 1), [ 9, 12, 13, 15 ].includes(to.weapons[1]) || Mi(),
packet("a", eo.aim2, 1), vi.tickBase(() => {
Mi(), this.isTrue = !1, so.autoAim = !1, packet("a", void 0, 1);
}, 1);
}, 1);
}, 1);
}, this.gotoGoal = function(t, e) {
let n = t => t * tt.playerScale;
let i = t - e, r = t + e, a = t - n(1), o = t + n(1), s = t - n(2), c = t + n(2), l = t - n(4), u = t + n(4);
let f = function(t, e) {
to.y2 >= tt.mapScale / 2 - tt.riverWidth / 2 && to.y2 <= tt.mapScale / 2 + tt.riverWidth / 2 && 0 == e ? wi(31, 0) : wi(t, e);
};
if (oi.length) {
let t = eo.dist2;
return this.ticking = !0, t >= i && t <= r ? (f(22, 0), f(10, 1), (to.weaponIndex != to.weapons[[ 10, 14 ].includes(to.weapons[1]) ? 1 : 0] || to.buildIndex > -1) && Si(to.weapons[[ 10, 14 ].includes(to.weapons[1]) ? 1 : 0]),
{
dir: void 0,
action: 1
}) : t < i ? (t >= l ? t >= s ? t >= a ? (f(40, 0), f(10, 1), configs.slowOT ? to.buildIndex != to.items[1] && ji(to.items[1]) : (to.weaponIndex != to.weapons[[ 10, 14 ].includes(to.weapons[1]) ? 1 : 0] || to.buildIndex > -1) && Si(to.weapons[[ 10, 14 ].includes(to.weapons[1]) ? 1 : 0])) : (f(12, 0),
f(0, 1), (to.weaponIndex != to.weapons[[ 10, 14 ].includes(to.weapons[1]) ? 1 : 0] || to.buildIndex > -1) && Si(to.weapons[[ 10, 14 ].includes(to.weapons[1]) ? 1 : 0])) : (f(0, 1),
(to.weaponIndex != to.weapons[[ 10, 14 ].includes(to.weapons[1]) ? 1 : 0] || to.buildIndex > -1) && Si(to.weapons[[ 10, 14 ].includes(to.weapons[1]) ? 1 : 0])) : (biomeGear(),
f(10, 1), (to.weaponIndex != to.weapons[[ 10, 14 ].includes(to.weapons[1]) ? 1 : 0] || to.buildIndex > -1) && Si(to.weapons[[ 10, 14 ].includes(to.weapons[1]) ? 1 : 0])),
{
dir: eo.aim2 + Math.PI,
action: 0
}) : t > r ? (t <= u ? t <= c ? t <= o ? (f(40, 0), f(0, 1), configs.slowOT ? to.buildIndex != to.items[1] && ji(to.items[1]) : (to.weaponIndex != to.weapons[[ 10, 14 ].includes(to.weapons[1]) ? 1 : 0] || to.buildIndex > -1) && Si(to.weapons[[ 10, 14 ].includes(to.weapons[1]) ? 1 : 0])) : (f(12, 0),
f(0, 1), (to.weaponIndex != to.weapons[[ 10, 14 ].includes(to.weapons[1]) ? 1 : 0] || to.buildIndex > -1) && Si(to.weapons[[ 10, 14 ].includes(to.weapons[1]) ? 1 : 0])) : (f(0, 1),
(to.weaponIndex != to.weapons[[ 10, 14 ].includes(to.weapons[1]) ? 1 : 0] || to.buildIndex > -1) && Si(to.weapons[[ 10, 14 ].includes(to.weapons[1]) ? 1 : 0])) : (biomeGear(),
f(10, 1), (to.weaponIndex != to.weapons[[ 10, 14 ].includes(to.weapons[1]) ? 1 : 0] || to.buildIndex > -1) && Si(to.weapons[[ 10, 14 ].includes(to.weapons[1]) ? 1 : 0])),
{
dir: eo.aim2,
action: 0
}) : {
dir: void 0,
action: 0
};
}
return this.ticking = !1, {
dir: void 0,
action: 0
};
}, this.bowMovement = function() {
let t = this.gotoGoal(685, 3);
t.action ? 0 != to.reloads[53] || this.isTrue ? packet("9", t.dir, 1) : this.rangeType("ageInsta") : packet("9", t.dir, 1);
}, this.tickMovement = function() {
to.weapons[1];
9 == to.weapons[1] || 12 == to.weapons[1] || 13 == to.weapons[1] || to.weapons[1];
let t = this.gotoGoal(238, 3);
t.action ? 0 != to.reloads[53] || this.isTrue ? packet("9", t.dir, 1) : this.boostTickType() : packet("9", t.dir, 1);
}, this.BoostOneTick = function() {
9 == to.weapons[1] || 12 == to.weapons[1] || 13 == to.weapons[1] || to.weapons[1];
9 == to.weapons[1] || 12 == to.weapons[1] || 13 == to.weapons[1] || to.weapons[1];
let t = this.gotoGoal(372, 3);
t.action ? 0 != to.reloads[53] || this.isTrue ? packet("9", t.dir, 1) : this.BoostOneTICKERS() : packet("9", t.dir, 1);
}, this.kmTickMovement = function() {
let t = this.gotoGoal(240, 3);
t.action ? 22 == eo.skinIndex || 0 != to.reloads[53] || this.isTrue || (vi.tick - eo.poisonTick) % tt.serverUpdateRate != 8 ? packet("9", t.dir, 1) : this.kmTickType() : packet("9", t.dir, 1);
}, this.shameThing = function() {
45 === oi.hat && (wi(53, 0), vi.tickBase(() => {
Si(to.weapons[0]), wi(7, 0), Mi();
}, 1));
}, this.boostTickMovement = function() {
9 == to.weapons[1] || 12 == to.weapons[1] || 13 == to.weapons[1] || to.weapons[1];
9 == to.weapons[1] || 12 == to.weapons[1] || 13 == to.weapons[1] || to.weapons[1];
let t = this.gotoGoal(372, 3);
t.action ? 0 != to.reloads[53] || this.isTrue ? packet("9", t.dir, 1) : this.boostTickType() : packet("9", t.dir, 1);
}, this.perfCheck = function(t, e) {
if (11 == e.weaponIndex && J.getAngleDist(e.aim2 + Math.PI, e.d2) <= tt.shieldAngle) return !1;
if (![ 9, 12, 13, 15 ].includes(to.weapons[1])) return !0;
let n = {
x: e.x2 + 65 * Math.cos(e.aim2 + Math.PI),
y: e.y2 + 65 * Math.sin(e.aim2 + Math.PI)
};
if (J.lineInRect(t.x2 - t.scale, t.y2 - t.scale, t.x2 + t.scale, t.y2 + t.scale, n.x, n.y, n.x, n.y)) return !0;
let i = Ct.filter(t => t.visible).find(t => {
if (J.lineInRect(t.x2 - t.scale, t.y2 - t.scale, t.x2 + t.scale, t.y2 + t.scale, n.x, n.y, n.x, n.y)) return !0;
});
return !i && (i = closeObjects.filter(t => t.active).find(t => {
let e = t.getScale();
if (!t.ignoreCollision && J.lineInRect(t.x - e, t.y - e, t.x + e, t.y + e, n.x, n.y, n.x, n.y)) return !0;
}), !i);
};
}
};
function xi() {
i.send("S", 1);
}
function Mi() {
V = !V, i.send("K", 1);
}
function ji(t) {
i.send("z", t, !1);
}
function Si(t, e) {
i.send("z", t, !0);
}
function Ai(t, e) {
i.send("F", t, e);
}
function Ti() {
if (St("moo_name", Re.value), !le && i.connected) {
le = !0, wt.stop("menu"), fn("Loading..."), i.send("M", {
name: Re.value,
moofoll: Tt,
skin: ie
});
let t = document.getElementById("ot-sdk-btn-floating");
t && (t.style.display = "none");
}
}
var Di = !0;
function Pi(t) {
De.style.display = "none", Ae.style.display = "block", ue.style.display = "none",
li = {}, Wt = t, Et = 0, le = !0, Di && (Di = !1, $t.length = 0);
try {
if (document.title = 'God Laffer', !window._plEntranceShown) {
window._plEntranceShown = !0;
var e = document.createElement('div');
e.id = 'pl_enter_banner', e.style.position = 'fixed', e.style.left = '50%', e.style.top = '18%',
e.style.transform = 'translate(-50%, -50%)', e.style.zIndex = 3e4, e.style.display = 'flex',
e.style.alignItems = 'center', e.style.justifyContent = 'center', e.style.pointerEvents = 'none',
e.style.opacity = '0';
var n = document.createElement('div');
n.id = 'pl_enter_banner_card', n.style.transform = 'scale(0.8)', n.style.padding = '18px 28px',
n.style.borderRadius = '14px', n.style.display = 'flex', n.style.flexDirection = 'column',
n.style.alignItems = 'center', n.style.justifyContent = 'center', n.style.background = 'linear-gradient(135deg, rgba(12,15,20,0.85), rgba(6,10,18,0.7))',
n.style.boxShadow = '0 20px 60px rgba(0,0,0,0.6)', n.style.border = '1px solid rgba(255,255,255,0.04)',
n.style.backdropFilter = 'blur(8px)', n.style.pointerEvents = 'auto';
var i = document.createElement('div');
i.style.fontSize = '34px', i.style.fontWeight = '900', i.style.color = 'white',
i.style.letterSpacing = '-1px', i.style.textShadow = '0 6px 30px rgba(80,160,255,0.06)',
i.innerText = 'Welcome!';
var r = document.createElement('div');
r.style.fontSize = '13px', r.style.color = '#bcd8ff', r.style.marginTop = '8px',
r.innerText = '', n.appendChild(i), n.appendChild(r), e.appendChild(n), document.body.appendChild(e),
e.style.transition = 'opacity 360ms cubic-bezier(.2,.8,.2,1)', n.style.transition = 'transform 360ms cubic-bezier(.2,.8,.2,1)',
e.getBoundingClientRect(), requestAnimationFrame(function() {
try {
e.style.opacity = '1';
} catch (t) {}
try {
n.style.transform = 'scale(1)';
} catch (t) {}
}), setTimeout(function() {
try {
n.style.transform = 'scale(0.9)';
} catch (t) {}
try {
e.style.opacity = '0';
} catch (t) {}
setTimeout(function() {
try {
e.remove();
} catch (t) {}
}, 420);
}, 4e3);
}
} catch (t) {}
}
function Bi(t, e, n, i) {
ft.showText(t, e, 50, .18, 500, Math.abs(n), n >= 0 ? "#fff" : "#8ecc51");
}
var Ii = 99999;
function Oi() {
if (le = !1, Gt.alive = !1, Z.deathMarker) try {
let t = "Unknown";
for (let e = 0; e < zt.length; e++) {
let n = zt[e];
if (n && n.sid !== Gt.sid && !Ho(n.sid) && n.health > 0) {
if (J.getDistance(Gt.x2, Gt.y2, n.x2, n.y2) < 200) {
t = n.name || "Unknown";
break;
}
}
}
k = {
x: Gt.x2,
y: Gt.y2,
name: t
}, y = Date.now();
} catch (t) {}
try {
factorem.refreshAds([ 2 ], !0);
} catch (t) {}
Pe.style.display = "none", Fn(), An = {
x: Gt.x,
y: Gt.y
}, De.style.display = "none", Ye.style.display = "block", Ye.style.fontSize = "0px",
Ii = 0, setTimeout(function() {
Ae.style.display = "block", ue.style.display = "block", Ye.style.display = "none";
}, tt.deathFadeout);
}
function Hi(t) {
let e = xs(t);
Gt && nn.removeAllItems(t), function(t) {
if (!t) return;
if (!le) return;
vi.tickBase(() => {
J.getDirect(t, Gt, 0, 2);
let e = J.getDist(t, Gt, 0, 2);
let n = Math.round((r = t.x, a = t.y, o = Gt.x, s = Gt.y, Math.atan2(s - a, o - r) / (Math.PI / 2))) * (Math.PI / 2);
var r, a, o, s;
let c = [ 4, 5 ].includes(Gt.weapons[0]) && si <= it.weapons[si.primaryIndex || 5].range + 1.2 * si.scale && 0 == Gt.reloads[Gt.weapons[0]];
if (e <= it.weapons[Gt.weaponIndex].range + Gt.scale) return;
let l = function() {
try {
if (![ 3, 4, 5 ].includes(si.primaryIndex)) return !1;
if (null == si.primaryIndex || si.reloads[si.primaryIndex] > vi.tickRate) return !1;
if (si <= it.weapons[si.primaryIndex || 5].range + 1.8 * si.scale) {
let t = it.list[9];
let e = si.scale + t.scale + (t.placeOffset || 0);
let n = 0;
let i = {
attempts: 0,
block: "unblocked"
};
for (let r = -1; r <= 1; r += .1) {
i.attempts++;
let a = J.getDirect(Gt, si, 2, 2) + r;
let o = si.x2 + e * Math.cos(a);
let s = si.y2 + e * Math.sin(a);
if (!$t.find(e => e.active && J.getDistance(o, s, e.x, e.y) < t.scale + (e.blocker ? e.blocker : e.getScale(.6, e.isItem))) && !(s >= tt.mapScale / 2 - tt.riverWidth / 2 && s <= tt.mapScale / 2 + tt.riverWidth / 2)) {
n++, i.block = "blocked";
break;
}
}
if (n) return !0;
}
} catch (t) {
return null;
}
return !1;
}();
e <= 300 && si <= 400 && (si && c ? (this.testCanPlace(2, -Math.PI / 4, Math.PI / 4, Math.PI / 20, i.send("D", si), 1),
this.testCanPlace(4, -Math.PI / 4, Math.PI / 4, Math.PI / 12, i.send("D", si) + Math.PI, 1)) : !l && si <= it.weapons[si.primaryIndex || 5].range + 1.8 * si.scale ? this.testCanPlace(2, 0, 2 * Math.PI, Math.PI / 24, n, 1) : (15 == Gt.items[4] && this.testCanPlace(si ? 4 : 2, 0, 2 * Math.PI, Math.PI / 24, n, 1),
nt = !0));
}, 1);
}(e);
}
function Ei(t) {
$o.push(t);
try {} catch (t) {}
try {
if (null != Hr && t == Hr) {
try {} catch (t) {}
try {
let t = ri();
if (void 0 === t && Gt) try {
null != Ya ? t = Ya : void 0 !== Gt.xVel && void 0 !== Gt.yVel && (t = Math.atan2(Gt.yVel - Gt.y2, Gt.xVel - Gt.x2));
} catch (t) {}
let o = !1;
if (null != t && Gt) try {
try {
if (Ra && Ra.some(t => t && 15 == t.id && t.owner && t.owner.sid != Gt.sid && !Ho(t.owner.sid) && 'number' == typeof t.x && 'number' == typeof t.y && J.getDistance(Gt.x2, Gt.y2, t.x, t.y) <= t.scale + (Gt.scale || 0))) zr = null,
Rr = null; else {
const e = Ra.filter(t => t.id > 5 && t.id < 10 && t.owner && t.owner.sid != Gt.sid && !Ho(t.owner.sid));
const n = Math.PI / 4;
const i = 35;
let r = 60;
try {
Gt && Array.isArray(Gt.weapons) && (6 === Gt.weapons[0] || 7 === Gt.weapons[0]) && Gt.weaponIndex === Gt.weapons[0] && (r += 10);
} catch (t) {}
const a = i + r;
for (const i of e) if (i && void 0 !== i.x && void 0 !== i.y) {
if (J.getDistance(Gt.x2, Gt.y2, i.x, i.y) <= a) {
let e = Math.atan2(i.y - Gt.y2, i.x - Gt.x2);
if (angleDiff = Math.abs(t - e), angleDiff > Math.PI && (angleDiff = 2 * Math.PI - angleDiff),
angleDiff <= n) {
o = !0, zr = i.x, Rr = i.y;
break;
}
}
}
}
} catch (t) {}
} catch (t) {}
if (o) {
try {
if ($r() > 66) {
try {} catch (t) {}
zr = null, Rr = null, o = !1;
}
} catch (t) {}
try {
o && Z && Z.autostop_before_collision && di();
} catch (t) {}
try {
if (void 0 !== ft && Gt && Z && Z.label_autostop_enabled) {
var e = Number(Z.label_size) || 20;
var n = Number(Z.label_speed) || .12;
var r = Number(Z.label_life) || 600;
var a = Z.label_autostop_color || "#ff5252";
try {
ft.showText(Gt.x2, Gt.y2 - (Gt.scale || 0) - 30, e, n, r, "AUTO STOP", a);
} catch (t) {}
}
} catch (t) {}
Ur = void 0 !== Zr ? Zr + 1 : 1, Ya = null;
} else {
zr = null, Rr = null, Ur = void 0 !== Zr ? Zr : 0, Ya = null;
try {
const t = ri();
if (void 0 !== t) try {
i.send("9", t);
} catch (t) {}
} catch (t) {}
}
Br = !1, Hr = null, Er = null, Cr = null;
} catch (t) {}
}
} catch (t) {}
nn.disableBySid(t);
}
function Ci() {
if (Ie.innerText = Gt.points, Z && Z.autobuy) if (Gt.__gold600Logged && Gt.__gold2000Logged && Gt.__gold2500Logged && Gt.__gold4000Logged && Gt.__gold6000Logged && Gt.__gold15Logged && Gt.__gold10Logged && Gt.__gold6Logged && Gt.__gold101Logged && Gt.__gold20000Logged) ; else try {
if ('number' == typeof Gt.points) {
if (Gt.points >= 600 && !Gt.__gold600Logged) {
try {} catch (t) {}
try {
Un(15, 0);
} catch (t) {}
Gt.__gold600Logged = !0;
}
if (Gt.points >= 2e3 && !Gt.__gold2000Logged) {
try {} catch (t) {}
try {
Un(11, 1);
} catch (t) {}
Gt.__gold2000Logged = !0;
}
if (Gt.points >= 2500 && !Gt.__gold2500Logged) {
try {} catch (t) {}
try {
Un(31, 0);
} catch (t) {}
Gt.__gold2500Logged = !0;
}
if (Gt.points >= 4e3 && !Gt.__gold4000Logged) {
try {} catch (t) {}
try {
Un(6, 0);
} catch (t) {}
Gt.__gold4000Logged = !0;
}
if (Gt.points >= 6e3 && !Gt.__gold6000Logged) {
try {} catch (t) {}
try {
Un(7, 0);
} catch (t) {}
Gt.__gold6000Logged = !0;
}
if (Gt.points >= 6500 && !Gt.__gold6Logged) {
try {} catch (t) {}
try {
Un(12, 0);
} catch (t) {}
Gt.__gold6Logged = !0;
}
if (Gt.points >= 1e4 && !Gt.__gold10Logged) {
try {} catch (t) {}
try {
Un(53, 0);
} catch (t) {}
Gt.__gold10Logged = !0;
}
if (Gt.points >= 15e3 && !Gt.__gold15Logged) {
try {} catch (t) {}
try {
Un(40, 0);
} catch (t) {}
Gt.__gold15Logged = !0;
}
if (Gt.points >= 15500 && !Gt.__gold101Logged && Gt.__gold15Logged) {
try {} catch (t) {}
try {
Un(19, 1);
} catch (t) {}
Gt.__gold101Logged = !0;
}
if (Gt.points >= 2e4 && !Gt.__gold20000Logged) {
try {} catch (t) {}
try {
Un(21, 1);
} catch (t) {}
Gt.__gold20000Logged = !0;
}
}
} catch (t) {}
Oe.innerText = Gt.food, He.innerText = Gt.wood, Ee.innerText = Gt.stone, Ce.innerText = Gt.kills;
}
var zi = {};
var Ri = [ "crown", "skull" ];
var $i = [];
function Ui(t, e) {
if (Gt.upgradePoints = t, Gt.upgrAge = e, t > 0) {
$i.length = 0, J.removeAllChildren(Le);
for (var n = 0; n < it.weapons.length; ++n) {
if (it.weapons[n].age == e && (null == it.weapons[n].pre || Gt.weapons.indexOf(it.weapons[n].pre) >= 0)) J.generateElement({
id: "upgradeItem" + n,
class: "actionBarItem",
onmouseout: function() {
dn();
},
parent: Le
}).style.backgroundImage = document.getElementById("actionBarItem" + n).style.backgroundImage,
$i.push(n);
}
for (n = 0; n < it.list.length; ++n) if (it.list[n].age == e && (null == it.list[n].pre || Gt.items.indexOf(it.list[n].pre) >= 0)) {
var r = it.weapons.length + n;
J.generateElement({
id: "upgradeItem" + r,
class: "actionBarItem",
onmouseout: function() {
dn();
},
parent: Le
}).style.backgroundImage = document.getElementById("actionBarItem" + r).style.backgroundImage,
$i.push(r);
}
for (n = 0; n < $i.length; n++) (function(t) {
var e = document.getElementById('upgradeItem' + t);
e.onmouseover = function() {
it.weapons[t] ? dn(it.weapons[t], !0) : dn(it.list[t - it.weapons.length]);
}, e.onclick = J.checkTrusted(function() {
i.send("H", t);
}), J.hookTouchEvents(e);
})($i[n]);
$i.length ? (Le.style.display = "block", Ne.style.display = "block", Ne.innerHTML = "SELECT ITEMS (" + t + ")") : (Le.style.display = "none",
Ne.style.display = "none", dn());
} else Le.style.display = "none", Ne.style.display = "none", dn();
}
function Fi(t) {
i.send("H", t);
}
function Li(t, e, n) {
null != t && (Gt.XP = t), null != e && (Gt.maxXP = e), null != n && (Gt.age = n),
n == tt.maxAge ? (Ue.innerHTML = "MAX AGE", Fe.style.width = "100%") : (Ue.innerHTML = "AGE " + Gt.age,
Fe.style.width = Gt.XP / Gt.maxXP * 100 + "%");
}
function Ni(t) {
J.removeAllChildren(ze);
var e = 1;
for (var n = 0; n < t.length; n += 3) (function(n) {
J.generateElement({
class: "leaderHolder",
parent: ze,
children: [ J.generateElement({
class: "leaderboardItem",
style: "color:" + (t[n] == Wt ? "#fff" : "rgba(255,255,255,0.6)"),
text: e + ". " + ("" != t[n + 1] ? t[n + 1] : "unknown")
}), J.generateElement({
class: "leaderScore",
text: J.kFormat(t[n + 2]) || "0"
}) ]
});
})(n), e++;
}
function qi() {
if (1) {
if (Ii < 120 && (Ii += .1 * It, Ye.style.fontSize = Math.min(Math.round(Ii), 120) + "px"),
Gt) {
var t = J.getDistance(te, ee, Gt.x, Gt.y);
var e = J.getDirection(Gt.x, Gt.y, te, ee);
var n = Math.min(.01 * t * It, t);
t > .05 ? (te += n * Math.cos(e), ee += n * Math.sin(e)) : (te = Gt.x, ee = Gt.y);
} else te = tt.mapScale / 2, ee = tt.mapScale / 2;
var i = Ot - 1e3 / tt.serverUpdateRate;
for (var r = 0; r < zt.length + Ct.length; ++r) if ((Kt = zt[r] || Ct[r - zt.length]) && Kt.visible) if (Kt.forcePos) Kt.x = Kt.x2,
Kt.y = Kt.y2, Kt.dir = Kt.d2; else {
var a = Kt.t2 - Kt.t1;
var o = (i - Kt.t1) / a;
Kt.dt += It;
var c = Math.min(1.7, Kt.dt / 170);
var l = Kt.x2 - Kt.x1;
Kt.x = Kt.x1 + l * c, l = Kt.y2 - Kt.y1, Kt.y = Kt.y1 + l * c, Kt.dir = Math.lerpAngle(Kt.d2, Kt.d1, Math.min(1.2, o));
}
var u = te - ae / 2;
var f = ee - oe / 2;
if (tt.snowBiomeTop - f <= 0 && tt.mapScale - tt.snowBiomeTop - f >= oe ? (we.fillStyle = "#b6db66",
we.fillRect(0, 0, ae, oe)) : tt.mapScale - tt.snowBiomeTop - f <= 0 ? (we.fillStyle = "#dbc666",
we.fillRect(0, 0, ae, oe)) : tt.snowBiomeTop - f >= oe ? (we.fillStyle = "#fff",
we.fillRect(0, 0, ae, oe)) : tt.snowBiomeTop - f >= 0 ? (we.fillStyle = "#fff",
we.fillRect(0, 0, ae, tt.snowBiomeTop - f), we.fillStyle = "#b6db66", we.fillRect(0, tt.snowBiomeTop - f, ae, oe - (tt.snowBiomeTop - f))) : (we.fillStyle = "#b6db66",
we.fillRect(0, 0, ae, tt.mapScale - tt.snowBiomeTop - f), we.fillStyle = "#dbc666",
we.fillRect(0, tt.mapScale - tt.snowBiomeTop - f, ae, oe - (tt.mapScale - tt.snowBiomeTop - f))),
Z.renderGrid) {
we.lineWidth = 4, we.strokeStyle = "#000", we.globalAlpha = .06, we.beginPath();
for (var d = -te; d < ae; d += oe / 18) d > 0 && (we.moveTo(d, 0), we.lineTo(d, oe));
for (var h = -ee; h < oe; h += oe / 18) d > 0 && (we.moveTo(0, h), we.lineTo(ae, h));
we.stroke();
}
if (Di || ((Yt += Xt * tt.waveSpeed * It) >= tt.waveMax ? (Yt = tt.waveMax, Xt = -1) : Yt <= 1 && (Yt = Xt = 1),
we.globalAlpha = 1, we.fillStyle = "#dbc666", Xi(u, f, we, tt.riverPadding), we.fillStyle = "#91b2db",
Xi(u, f, we, 250 * (Yt - 1))), we.globalAlpha = 1, we.strokeStyle = rn, Vi(-1, u, f),
we.globalAlpha = 1, we.lineWidth = on, Wi(0, u, f), Aa && void 0 !== Zr && Zr >= Ea && 0 === Ha) {
try {
'undefined' != typeof leftHoldDebug && leftHoldDebug, Ao(0);
} catch (t) {}
try {
'undefined' != typeof leftHoldDebug && leftHoldDebug, vi.tickBase(() => {
try {
'undefined' != typeof leftHoldDebug && leftHoldDebug, za && So(7, !0);
} catch (t) {
'undefined' != typeof leftHoldDebug && leftHoldDebug;
}
vi.tickBase(() => {
try {
'undefined' != typeof leftHoldDebug && leftHoldDebug;
const t = function(e) {
vi.tickBase(() => {
try {
if (!za || Gt && 7 == Gt.skinIndex) {
var n = 1;
try {
null != (i = Gt && Gt.weapons ? Gt.weapons[0] : null) && it && it.weapons && vi && vi.tickRate && (n = Math.max(1, Math.ceil(it.weapons[i].speed / vi.tickRate)));
} catch (t) {
n = 1;
}
vi.tickBase(() => {
try {
try {
Si(0);
} catch (t) {}
try {
Et = 1, gi();
} catch (t) {}
if (na && 1 == na[Gt.sid]) {
var i = ci();
try {
'undefined' != typeof leftHoldDebug && leftHoldDebug;
} catch (t) {}
Ai(0, i);
try {
Ba = (void 0 !== Zr ? Zr : 0) + n;
} catch (t) {
Ba = (void 0 !== Zr ? Zr : 0) + 1;
}
} else e > 0 ? ('undefined' != typeof leftHoldDebug && leftHoldDebug, t(e - 1)) : 'undefined' != typeof leftHoldDebug && leftHoldDebug;
} catch (t) {
'undefined' != typeof leftHoldDebug && leftHoldDebug;
}
}, 3);
} else if (e > 0) 'undefined' != typeof leftHoldDebug && leftHoldDebug, t(e - 1); else {
'undefined' != typeof leftHoldDebug && leftHoldDebug, Ca = !0;
n = 1;
try {
var i;
null != (i = Gt && Gt.weapons ? Gt.weapons[0] : null) && it && it.weapons && vi && vi.tickRate && (n = Math.max(1, Math.ceil(it.weapons[i].speed / vi.tickRate)));
} catch (t) {
n = 1;
}
vi.tickBase(() => {
try {
Si(0);
} catch (t) {}
try {
Et = 1, gi();
} catch (t) {}
if (na && 1 == na[Gt.sid]) {
var t = ci();
try {
'undefined' != typeof leftHoldDebug && leftHoldDebug;
} catch (t) {}
Ai(0, t);
try {
Ba = (void 0 !== Zr ? Zr : 0) + n;
} catch (t) {
Ba = (void 0 !== Zr ? Zr : 0) + 1;
}
} else 'undefined' != typeof leftHoldDebug && leftHoldDebug;
}, 3);
}
} catch (t) {
'undefined' != typeof leftHoldDebug && leftHoldDebug;
}
}, 1);
};
t(4);
} catch (t) {
'undefined' != typeof leftHoldDebug && leftHoldDebug;
}
}, 1);
}, 1);
} catch (t) {
'undefined' != typeof leftHoldDebug && leftHoldDebug;
}
Ha = 3, Ea = Zr + 1;
}
if (Aa && Gt && Gt.alive && 3 === Ha) try {
if (!za || Gt && 7 == Gt.skinIndex || Ca) {
var m = 1;
try {
var p = Gt && Gt.weapons ? Gt.weapons[0] : null;
null != p && it && it.weapons && vi && vi.tickRate && (m = Math.max(1, Math.ceil(it.weapons[p].speed / vi.tickRate)));
} catch (t) {
m = 1;
}
if (null == Ba && (Ba = 0), Zr >= Ba) if (na && 1 == na[Gt.sid]) {
try {
Si(0);
} catch (t) {}
try {
var v = ci();
try {
'undefined' != typeof leftHoldDebug && leftHoldDebug;
} catch (t) {}
try {
Et = 1, gi();
} catch (t) {}
Ai(0, v);
} catch (t) {}
try {
Ba = Zr + m;
} catch (t) {
Ba = Zr + 1;
}
} else 'undefined' != typeof leftHoldDebug && leftHoldDebug;
}
} catch (t) {} else if (!Aa && (null !== Ta || null !== Da || null !== Pa)) {
try {
null !== Ta && Si(Ta);
} catch (t) {}
try {
null !== Da && So(Da);
} catch (t) {}
try {
null !== Pa && Ao(Pa);
} catch (t) {}
Ta = Da = Pa = null;
}
Gt && Gt.alive && (we.globalAlpha = .5, we.save(), we.translate(Gt.xVel - u, Gt.yVel - f),
we.rotate(Gt.dir), Qi(Gt, we), we.restore(), we.globalAlpha = 1), Zi(u, f, 0), we.globalAlpha = 1;
for (r = 0; r < Ct.length; ++r) (Kt = Ct[r]).active && Kt.visible && (Kt.animate(It),
we.save(), we.translate(Kt.x - u, Kt.y - f), we.rotate(Kt.dir + Kt.dirPlus - Math.PI / 2),
Mr(Kt, we), we.restore());
if (Vi(0, u, f), Wi(1, u, f), Vi(1, u, f), Zi(u, f, 1), Vi(2, u, f), Vi(3, u, f),
we.fillStyle = "#000", we.globalAlpha = .09, u <= 0 && we.fillRect(0, 0, -u, oe),
tt.mapScale - u <= ae) {
var g = Math.max(0, -f);
we.fillRect(tt.mapScale - u, g, ae - (tt.mapScale - u), oe - g);
}
if (f <= 0 && we.fillRect(-u, 0, ae + u, -f), tt.mapScale - f <= oe) {
var b = Math.max(0, -u);
var k = 0;
tt.mapScale - u <= ae && (k = ae - (tt.mapScale - u)), we.fillRect(b, tt.mapScale - f, ae - b - k, oe - (tt.mapScale - f));
}
!function(t, e) {
for (let n in sa) {
let i = sa[n];
we.save(), we.translate(i.x - t, i.y - e);
let r = fr({
id: i.id,
name: it.list[i.id].name,
scale: 40,
predictEnemyTrap: !0
});
we.globalAlpha = .6, we.drawImage(r, -r.width / 2, -r.height / 2), we.restore();
}
}(u, f);
for (let t of oa) {
we.globalAlpha = .6, we.save(), we.translate(t.x - u, t.y - f);
let e = fr({
id: t.id,
name: t.name,
scale: t.scale,
prediction: !0,
preplace: t.preplace
});
we.drawImage(e, -e.width / 2, -e.height / 2), we.rotate(t.angle), we.restore();
}
for (let t in Ra) {
let e = Ra[t];
if (J.getDistance(Gt.x, Gt.y, e.x, e.y) < 300 && e.isItem) {
we.globalAlpha = 1, we.lineCap = "round", we.strokeStyle = an, we.lineWidth = 12.5,
we.beginPath(), we.arc(e.x - u, e.y - f, e.id > 5 && e.id < 10 ? 30 : 20, 0, e.health * (2 * Math.PI / e.maxHealth)),
we.stroke();
const t = .003 * Date.now();
const n = (Math.sin(t) + 1) / 2;
const i = [ 178, 42, 42 ];
const r = [ 240, 119, 119 ];
const a = `rgb(${Math.round(i[0] + (r[0] - i[0]) * n)}, ${Math.round(i[1] + (r[1] - i[1]) * n)}, ${Math.round(i[2] + (r[2] - i[2]) * n)})`;
we.strokeStyle = e.owner.sid == Gt.sid ? "#e9b3e9" : Ho(e.owner.sid) ? "#518ecc" : a,
we.lineWidth = 5, we.beginPath(), we.arc(e.x - u, e.y - f, e.id > 5 && e.id < 10 ? 30 : 20, 0, e.health * (2 * Math.PI / e.maxHealth)),
we.stroke();
}
}
we.globalAlpha = 1, we.fillStyle = "rgba(0, 0, 40, 0.45)", we.fillRect(0, 0, ae, oe);
try {
if (s) {
const t = 220;
const e = 28;
const n = 12;
const i = Math.max(10, ae - t - n);
const r = 10;
we.save(), we.globalAlpha = .95, we.fillStyle = "rgba(40, 40, 40, 0.85)", 'function' == typeof we.roundRect ? we.roundRect(i, r, t, e, 6) : we.fillRect(i, r, t, e),
we.fill(), we.fillStyle = "rgb(200,220,80)", we.font = "16px Hammersmith One", we.textBaseline = "middle",
we.textAlign = "left", we.fillText("AutoTrap Tick ACTIVE", i + 12, r + e / 2), we.restore();
}
} catch (t) {}
we.strokeStyle = an;
for (r = 0; r < zt.length + Ct.length; ++r) if ((Kt = zt[r] || Ct[r - zt.length]).visible && (10 != Kt.skinIndex || Kt == Gt || Kt.team && Kt.team == Gt.team)) {
var y = (Kt.team ? `[${Kt.team}] ` : "") + Kt.name;
if ("" != y) {
if (we.font = (Kt.nameScale || 30) + "px Hammersmith One", we.fillStyle = "#ffffffff",
we.textBaseline = "middle", we.textAlign = "center", we.lineWidth = Kt.nameScale ? 11 : 8,
we.lineJoin = "round", we.strokeText(y, Kt.x - u, Kt.y - f - Kt.scale - tt.nameY),
Kt.sid && Kt.isPlayer && we.fillText(Kt.sid, Kt.x - u, Kt.y - f - Kt.scale - tt.nameY + 67),
we.fillText(y, Kt.x - u, Kt.y - f - Kt.scale - tt.nameY), Kt.isLeader && zi.crown.isLoaded) {
var w = tt.crownIconScale;
b = Kt.x - u - w / 2 - we.measureText(y).width / 2 - tt.crownPad;
we.drawImage(zi.crown, b, Kt.y - f - Kt.scale - tt.nameY - w / 2 - 5, w, w);
}
if (1 == Kt.iconIndex && zi.skull.isLoaded) {
w = tt.crownIconScale;
b = Kt.x - u - w / 2 + we.measureText(y).width / 2 + tt.crownPad;
we.drawImage(zi.skull, b, Kt.y - f - Kt.scale - tt.nameY - w / 2 - 5, w, w);
}
}
we.globalAlpha = 1, we.font = "20px Hammersmith One", we.fillStyle = "#ffffff",
we.strokeStyle = "#000000", we.textBaseline = "middle", we.textAlign = "center",
we.lineWidth = 4, we.lineJoin = "round";
let t = Kt.health + "/" + Kt.maxHealth;
let e = Kt.x - u - 28;
let n = Kt.y - f + Kt.scale + tt.nameY + 40;
we.strokeText(t, e, n), we.fillText(t, e, n);
let i = (Kt.shameCount || 0) + "/8";
let r = Kt.x - u + 35;
if (we.strokeText(i, r, n), we.fillText(i, r, n), Kt.health > 0) {
tt.healthBarWidth;
we.fillStyle = an, we.roundRect(Kt.x - u - tt.healthBarWidth - tt.healthBarPad, Kt.y - f + Kt.scale + tt.nameY, 2 * tt.healthBarWidth + 2 * tt.healthBarPad, 17, 8),
we.fill(), we.fillStyle = Kt == Gt || Kt.team && Kt.team == Gt.team ? "#9bd362ff" : "#ad2727ff",
we.roundRect(Kt.x - u - tt.healthBarWidth, Kt.y - f + Kt.scale + tt.nameY + tt.healthBarPad, 2 * tt.healthBarWidth * (Kt.health / Kt.maxHealth), 17 - 2 * tt.healthBarPad, 7),
we.fill();
}
}
ft.update(It, we, u, f);
for (r = 0; r < zt.length; ++r) if ((Kt = zt[r]).visible && Kt.chatCountdown > 0) {
Kt.chatCountdown -= It, Kt.chatCountdown <= 0 && (Kt.chatCountdown = 0), we.font = "32px Hammersmith One";
var _ = we.measureText(Kt.chatMessage);
we.textBaseline = "middle", we.textAlign = "center";
b = Kt.x - u;
g = Kt.y - Kt.scale - f - 90;
var x = _.width + 17;
we.fillStyle = "rgba(0,0,0,0.2)", we.roundRect(b - x / 2, g - 23.5, x, 47, 6), we.fill(),
we.fillStyle = "#fff", we.fillText(Kt.chatMessage, b, g);
}
}
!function(t) {
if (Gt && Gt.alive) {
Ve.clearRect(0, 0, Ke.width, Ke.height), Ve.strokeStyle = "#fff", Ve.lineWidth = 4;
for (var e = 0; e < Pn.length; ++e) (Bn = Pn[e]).update(Ve, t);
if (Ve.globalAlpha = 1, Ve.fillStyle = "#fff", dr(Gt.x / tt.mapScale * Ke.width, Gt.y / tt.mapScale * Ke.height, 7, Ve, !0),
Ve.fillStyle = "rgba(255,255,255,0.35)", Gt.team && Tn) for (e = 0; e < Tn.length; ) dr(Tn[e] / tt.mapScale * Ke.width, Tn[e + 1] / tt.mapScale * Ke.height, 7, Ve, !0),
e += 2;
An && (Ve.fillStyle = "#fc5553", Ve.font = "34px Hammersmith One", Ve.textBaseline = "middle",
Ve.textAlign = "center", Ve.fillText("x", An.x / tt.mapScale * Ke.width, An.y / tt.mapScale * Ke.height)),
Dn && (Ve.fillStyle = "#fff", Ve.font = "34px Hammersmith One", Ve.textBaseline = "middle",
Ve.textAlign = "center", Ve.fillText("x", Dn.x / tt.mapScale * Ke.width, Dn.y / tt.mapScale * Ke.height));
}
}(It), -1 !== Zt.id && Gi(Zt.startX, Zt.startY, Zt.currentX, Zt.currentY), -1 !== Qt.id && Gi(Qt.startX, Qt.startY, Qt.currentX, Qt.currentY);
}
function Gi(t, e, n, i) {
we.save(), we.setTransform(1, 0, 0, 1, 0, 0), we.scale(Bt, Bt);
we.beginPath(), we.arc(t, e, 50, 0, 2 * Math.PI, !1), we.closePath(), we.fillStyle = "rgba(255, 255, 255, 0.3)",
we.fill();
var r = n - t;
var a = i - e;
var o = Math.sqrt(Math.pow(r, 2) + Math.pow(a, 2));
var s = o > 50 ? o / 50 : 1;
r /= s, a /= s, we.beginPath(), we.arc(t + r, e + a, 25, 0, 2 * Math.PI, !1), we.closePath(),
we.fillStyle = "white", we.fill(), we.restore();
}
function Wi(t, e, n) {
for (var i = 0; i < Ut.length; ++i) (Kt = Ut[i]).active && Kt.layer == t && (Kt.update(It),
Kt.active && jr(Kt.x - e, Kt.y - n, Kt.scale) && (we.save(), we.translate(Kt.x - e, Kt.y - n),
we.rotate(Kt.dir), Yi(0, 0, Kt, we, 1), we.restore()));
}
var Ki = {};
function Yi(t, e, n, i, r) {
if (n.src) {
var a = it.projectiles[n.indx].src;
var o = Ki[a];
o || ((o = new Image).onload = function() {
this.isLoaded = !0;
}, o.src = ".././img/weapons/" + a + ".png", Ki[a] = o), o.isLoaded && i.drawImage(o, t - n.scale / 2, e - n.scale / 2, n.scale, n.scale);
} else 1 == n.indx && (i.fillStyle = "#939393", dr(t, e, n.scale, i));
}
function Xi(t, e, n, i) {
var r = tt.riverWidth + i;
var a = tt.mapScale / 2 - e - r / 2;
a < oe && a + r > 0 && n.fillRect(0, a, ae, r);
}
function Vi(t, e, n) {
var i, r, a;
for (var o = 0; o < $t.length; ++o) if ((Kt = $t[o]).active && (r = Kt.x + Kt.xWiggle - e,
a = Kt.y + Kt.yWiggle - n, 0 == t && Kt.update(It), Kt.layer == t && jr(r, a, Kt.scale + (Kt.blocker || 0)))) if (we.globalAlpha = Kt.hideFromEnemy ? .6 : 1,
Kt.isItem) {
i = fr(Kt), we.save(), we.translate(r, a), we.rotate(Kt.dir), we.drawImage(i, -i.width / 2, -i.height / 2),
Kt.blocker && (we.strokeStyle = "#db6e6e", we.globalAlpha = .3, we.lineWidth = 6,
dr(0, 0, Kt.blocker, we, !1, !0)), we.restore();
try {
if (Z && Z.visual_spike_overlay && Kt.name && (-1 !== Kt.name.indexOf('spike') || -1 !== Kt.name.indexOf('spikes'))) {
const t = r;
const e = a;
const n = 90;
we.save(), we.beginPath(), we.strokeStyle = 'rgba(255,0,0,0.6)', we.lineWidth = 2,
we.arc(t, e, Kt.scale + n, 0, 2 * Math.PI), we.stroke(), we.restore();
}
} catch (t) {}
try {
const t = (Kt.name || '').toLowerCase();
const e = -1 !== t.indexOf('spike');
const n = -1 !== t.indexOf('trap');
const i = -1 !== t.indexOf('turret');
const o = -1 !== t.indexOf('mill') || -1 !== t.indexOf('windmill') || -1 !== t.indexOf('power mill');
if (e || n || i || o) {
const t = Kt.owner && Kt.owner.sid ? Kt.owner.sid : null;
const s = null !== t && Gt && t == Gt.sid;
const c = null !== t && !s && !!Ho(t);
let l = '#ffffff';
s || c ? e ? l = '#2ecc40' : n ? l = '#71aad6' : o ? l = '#8ed6ff' : i && (l = '#ff8c00') : e ? l = '#ff3333' : n ? l = '#9b59b6' : o ? l = '#8b5a2b' : i && (l = '#000000');
const u = Math.max(3, Math.round(.12 * (Kt.scale || 20)));
we.save(), we.beginPath(), we.fillStyle = l, we.arc(r, a, u, 0, 2 * Math.PI), we.fill(),
we.restore();
}
} catch (t) {}
} else {
i = lr(Kt), we.drawImage(i, r - i.width / 2, a - i.height / 2);
try {
if (Z && Z.visual_spike_overlay && Kt.name && (-1 !== Kt.name.indexOf('spike') || -1 !== Kt.name.indexOf('spikes'))) {
const t = r;
const e = a;
const n = 90;
we.save(), we.beginPath(), we.strokeStyle = 'rgba(255,0,0,0.6)', we.lineWidth = 2,
we.arc(t, e, Kt.scale + n, 0, 2 * Math.PI), we.stroke(), we.restore();
}
} catch (t) {}
try {
const t = (Kt.name || '').toLowerCase();
const e = -1 !== t.indexOf('spike');
const n = -1 !== t.indexOf('trap');
const i = -1 !== t.indexOf('turret');
const o = -1 !== t.indexOf('mill') || -1 !== t.indexOf('windmill') || -1 !== t.indexOf('power mill');
if (e || n || i || o) {
const t = Kt.owner && Kt.owner.sid ? Kt.owner.sid : null;
const s = null !== t && Gt && t == Gt.sid;
const c = null !== t && !s && !!Ho(t);
let l = '#ffffff';
s || c ? e ? l = '#2ecc40' : n ? l = '#71aad6' : o ? l = '#8ed6ff' : i && (l = '#ff8c00') : e ? l = '#ff3333' : n ? l = '#9b59b6' : o ? l = '#8b5a2b' : i && (l = '#000000');
const u = Math.max(3, Math.round(.12 * (Kt.scale || 20)));
we.save(), we.beginPath(), we.fillStyle = l, we.arc(r, a, u, 0, 2 * Math.PI), we.fill(),
we.restore();
}
} catch (t) {}
}
}
function Ji(t, e, n) {
(Kt = ws(t)) && (Qr.push({
player: Kt,
isObjectHit: e,
weapon: n
}), e && (ga.push({
objects: va,
player: Kt,
weapon: n
}), va = []), Kt.startAnim(e, n));
}
function Zi(t, e, n) {
we.globalAlpha = 1;
for (var i = 0; i < zt.length; ++i) (Kt = zt[i]).zIndex == n && (Kt.animate(It),
Kt.visible && (Kt.skinRot += .002 * It, ne = (Kt == Gt ? ci() : Kt.dir) + Kt.dirPlus,
we.save(), we.translate(Kt.x - t, Kt.y - e), we.rotate(ne), Qi(Kt, we), we.restore()));
try {
if (1 === n && r && si && Gt && Gt.alive && Z && Z.visual_veltick_radius) {
let n = 1e3 / 9 * 1.5 + 35;
let i = 1e3 / 9 * 1.5 + 80;
const r = si.x2 - t;
const a = si.y2 - e;
we.save(), we.beginPath(), we.strokeStyle = 'rgba(107,111,224,0.36)', we.lineWidth = 3,
we.arc(r, a, n, 0, 2 * Math.PI), we.stroke(), we.beginPath(), we.strokeStyle = 'rgba(107,111,224,0.18)',
we.lineWidth = 2, we.arc(r, a, i, 0, 2 * Math.PI), we.stroke();
try {
const t = Math.max(1, n - 10);
we.beginPath(), we.strokeStyle = 'rgba(107,111,224,0.28)', we.lineWidth = 1.5, we.arc(r, a, t, 0, 2 * Math.PI),
we.stroke();
} catch (t) {}
try {
const t = i + 10;
we.beginPath(), we.strokeStyle = 'rgba(107,111,224,0.12)', we.lineWidth = 1.5, we.arc(r, a, t, 0, 2 * Math.PI),
we.stroke();
} catch (t) {}
we.restore();
}
try {
if (1 === n) {
const n = Date.now();
try {
if (Vo()) {
we.save();
for (let i = Wo.length - 1; i >= 0; --i) {
const r = Wo[i];
if (n - r.t > 1200) {
Wo.splice(i, 1);
continue;
}
const a = r.x - t;
const o = r.y - e;
we.beginPath(), we.strokeStyle = r.placeable ? 'rgba(80,200,120,0.45)' : 'rgba(255,80,80,0.25)',
we.lineWidth = r.perfect ? 2.5 : 1.2, we.moveTo(Gt.x2 - t, Gt.y2 - e), we.lineTo(a, o),
we.stroke(), we.beginPath(), we.fillStyle = r.placeable ? 'rgba(80,200,120,0.9)' : 'rgba(255,80,80,0.9)',
we.arc(a, o, r.perfect ? 4 : 2.5, 0, 2 * Math.PI), we.fill();
}
we.restore();
}
} catch (t) {}
try {
if (Xo()) {
we.save();
for (let i = Yo.length - 1; i >= 0; --i) {
const r = Yo[i];
if (n - r.t > 1200) {
Yo.splice(i, 1);
continue;
}
r.x;
r.y;
if (we.beginPath(), we.strokeStyle = r.hit ? 'rgba(255,180,80,0.95)' : 'rgba(180,180,255,0.6)',
we.lineWidth = r.hit ? 3 : 1.4, we.moveTo(r.fromX - t, r.fromY - e), we.lineTo(r.toX - t, r.toY - e),
we.stroke(), r.spikes && r.spikes.length) for (const n of r.spikes) we.beginPath(),
we.strokeStyle = 'rgba(255,80,80,0.95)', we.lineWidth = 2, we.arc(n.x - t, n.y - e, Math.max(6, n.scale), 0, 2 * Math.PI),
we.stroke();
}
we.restore();
}
} catch (t) {}
}
} catch (t) {}
try {
if (void 0 !== K && K.length) for (;K.length; ) {
const n = K.shift();
try {
void 0 !== ft ? ft.showText(n.x, n.y, n.size, n.speed, n.life, n.text, n.color) : (we.save(),
we.fillStyle = n.color || '#fff', we.font = (n.size || 15) + 'px Arial', we.textAlign = 'center',
we.fillText(n.text, n.x - t, n.y - e), we.restore());
} catch (t) {}
}
} catch (t) {}
try {
if (Z.deathMarker && k && Date.now() - y < 5e3) {
const n = k.x - t;
const i = k.y - e;
const r = 1 - (Date.now() - y) / 5e3;
const a = .02 * (Date.now() - y);
we.save(), we.globalAlpha = r, we.font = '32px Arial', we.textAlign = 'center',
we.fillStyle = '#ff4444', we.fillText('\u2620', n, i - 10 + 5 * Math.sin(a)), we.font = 'bold 14px Arial',
we.fillStyle = '#ffffff', we.fillText(k.name, n, i + 20 + 5 * Math.sin(a)), we.font = '11px Arial',
we.fillStyle = '#cccccc', we.fillText('killed here', n, i + 35 + 5 * Math.sin(a)),
we.restore();
} else k = null;
} catch (t) {}
} catch (t) {}
}
function Qi(t, e) {
(e = e || we).lineWidth = on, e.lineJoin = "miter";
var n = Math.PI / 4 * (it.weapons[t.weaponIndex].armS || 1);
var i = t.buildIndex < 0 && it.weapons[t.weaponIndex].hndS || 1;
var r = t.buildIndex < 0 && it.weapons[t.weaponIndex].hndD || 1;
if (t.tailIndex > 0 && function(t, e, n) {
if (!(nr = rr[t])) {
var i = new Image;
i.onload = function() {
this.isLoaded = !0, this.onload = null;
}, i.src = ".././img/accessories/access_" + t + ".png", rr[t] = i, nr = i;
}
var r = ar[t];
if (!r) {
for (var a = 0; a < en.length; ++a) if (en[a].id == t) {
r = en[a];
break;
}
ar[t] = r;
}
nr.isLoaded && (e.save(), e.translate(-20 - (r.xOff || 0), 0), r.spin && e.rotate(n.skinRot),
e.drawImage(nr, -r.scale / 2, -r.scale / 2, r.scale, r.scale), e.restore());
}(t.tailIndex, e, t), t.buildIndex < 0 && !it.weapons[t.weaponIndex].aboveHand && (sr(it.weapons[t.weaponIndex], tt.weaponVariants[t.weaponVariant].src, t.scale, 0, e),
null == it.weapons[t.weaponIndex].projectile || it.weapons[t.weaponIndex].hideProjectile || Yi(t.scale, 0, it.projectiles[it.weapons[t.weaponIndex].projectile], we)),
e.fillStyle = tt.skinColors[t.skinColor], dr(t.scale * Math.cos(n), t.scale * Math.sin(n), 14),
dr(t.scale * r * Math.cos(-n * i), t.scale * r * Math.sin(-n * i), 14), t.buildIndex < 0 && it.weapons[t.weaponIndex].aboveHand && (sr(it.weapons[t.weaponIndex], tt.weaponVariants[t.weaponVariant].src, t.scale, 0, e),
null == it.weapons[t.weaponIndex].projectile || it.weapons[t.weaponIndex].hideProjectile || Yi(t.scale, 0, it.projectiles[it.weapons[t.weaponIndex].projectile], we)),
t.buildIndex >= 0) {
var a = fr(it.list[t.buildIndex]);
e.drawImage(a, t.scale - it.list[t.buildIndex].holdOffset, -a.width / 2);
}
dr(0, 0, t.scale, e), t.skinIndex > 0 && (e.rotate(Math.PI / 2), ir(t.skinIndex, e, null, t));
}
var tr = {};
var er = {};
var nr;
function ir(t, e, n, i) {
if (!(nr = tr[t])) {
var r = new Image;
r.onload = function() {
this.isLoaded = !0, this.onload = null;
}, r.src = ".././img/hats/hat_" + t + ".png", tr[t] = r, nr = r;
}
var a = n || er[t];
if (!a) {
for (var o = 0; o < tn.length; ++o) if (tn[o].id == t) {
a = tn[o];
break;
}
er[t] = a;
}
nr.isLoaded && e.drawImage(nr, -a.scale / 2, -a.scale / 2, a.scale, a.scale), !n && a.topSprite && (e.save(),
e.rotate(i.skinRot), ir(t + "_top", e, a, i), e.restore());
}
var rr = {};
var ar = {};
var or = {};
function sr(t, e, n, i, r) {
var a = t.src + (e || "");
var o = or[a];
o || ((o = new Image).onload = function() {
this.isLoaded = !0;
}, o.src = ".././img/weapons/" + a + ".png", or[a] = o), o.isLoaded && r.drawImage(o, n + t.xOff - t.length / 2, i + t.yOff - t.width / 2, t.length, t.width);
}
var cr = {};
function lr(t) {
var e = t.y >= tt.mapScale - tt.snowBiomeTop ? 2 : t.y <= tt.snowBiomeTop ? 1 : 0;
var n = t.type + "_" + t.scale + "_" + e;
var i = cr[n];
if (!i) {
var r = document.createElement('canvas');
r.width = r.height = 2.1 * t.scale + on;
var a = r.getContext('2d');
a.translate(r.width / 2, r.height / 2), a.rotate(J.randFloat(0, Math.PI)), a.strokeStyle = rn,
a.lineWidth = on;
let u = [ [ "#b1d959", "#95b946" ], [ "#bade6e", "#aac76b" ], [ "#a7d544", "#86a63f" ], [ "#b4db62", "#9ebf57" ] ];
u[Math.floor(Math.random() * u.length)];
var o;
if (0 == t.type) for (var s = 0; s < 2; ++s) hr(a, 7, o = Kt.scale * (s ? .5 : 1), .7 * o),
a.fillStyle = e ? s ? "#fff" : "#e3f1f4" : s ? "#b4db62" : "#9ebf57", a.fill(),
s || a.stroke(); else if (1 == t.type) if (2 == e) a.fillStyle = "#606060", hr(a, 6, .3 * t.scale, .71 * t.scale),
a.fill(), a.stroke(), a.fillStyle = "#89a54c", dr(0, 0, .55 * t.scale, a), a.fillStyle = "#a5c65b",
dr(0, 0, .3 * t.scale, a, !0); else {
var c;
!function(t, e, n, i) {
var r = Math.PI / 2 * 3;
var a = Math.PI / e;
var o;
t.beginPath(), t.moveTo(0, -i);
for (var s = 0; s < e; s++) o = J.randInt(n + .9, 1.2 * n), t.quadraticCurveTo(Math.cos(r + a) * o, Math.sin(r + a) * o, Math.cos(r + 2 * a) * i, Math.sin(r + 2 * a) * i),
r += 2 * a;
t.lineTo(0, -i), t.closePath();
}(a, 6, Kt.scale, .7 * Kt.scale), a.fillStyle = e ? "#e3f1f4" : "#89a54c", a.fill(),
a.stroke(), a.fillStyle = e ? "#6a64af" : "#c15555";
var l = Mt / 4;
for (s = 0; s < 4; ++s) dr((c = J.randInt(Kt.scale / 3.5, Kt.scale / 2.3)) * Math.cos(l * s), c * Math.sin(l * s), J.randInt(10, 12), a);
} else 2 != t.type && 3 != t.type || (a.fillStyle = 2 == t.type ? 2 == e ? "#938d77" : "#939393" : "#e0c655",
hr(a, 3, t.scale, t.scale), a.fill(), a.stroke(), a.fillStyle = 2 == t.type ? 2 == e ? "#b2ab90" : "#bcbcbc" : "#ebdca3",
hr(a, 3, .55 * t.scale, .65 * t.scale), a.fill());
i = r, cr[n] = i;
}
return i;
}
var ur = [];
function fr(t, e) {
var n = ur[t.id + (t.predictEnemyTrap ? 100 : t.prediction ? t.preplace ? 200 : 300 : 0)];
if (!n || e) {
var i = document.createElement('canvas');
i.width = i.height = 2.5 * t.scale + on + (it.list[t.id].spritePadding || 0);
var r = i.getContext('2d');
if (r.translate(i.width / 2, i.height / 2), r.rotate(e ? 0 : Math.PI / 2), r.strokeStyle = t.prediction ? t.preplace ? "#0000ff" : "#ff0000" : rn,
r.lineWidth = on * (e ? i.width / 81 : 1), "apple" == t.name) {
r.fillStyle = "#c15555", dr(0, 0, t.scale, r), r.fillStyle = "#89a54c";
var a = -Math.PI / 2;
p = t.scale * Math.cos(a), v = t.scale * Math.sin(a), g = 25, b = a + Math.PI / 2,
k = r, y = p + g * Math.cos(b), w = v + g * Math.sin(b), _ = .4 * g, k.moveTo(p, v),
k.beginPath(), k.quadraticCurveTo((p + y) / 2 + _ * Math.cos(b + Math.PI / 2), (v + w) / 2 + _ * Math.sin(b + Math.PI / 2), y, w),
k.quadraticCurveTo((p + y) / 2 - _ * Math.cos(b + Math.PI / 2), (v + w) / 2 - _ * Math.sin(b + Math.PI / 2), p, v),
k.closePath(), k.fill(), k.stroke();
} else if ("cookie" == t.name) {
r.fillStyle = "#cca861", dr(0, 0, t.scale, r), r.fillStyle = "#937c4b";
var o = Mt / (c = 4);
for (var s = 0; s < c; ++s) dr((l = J.randInt(t.scale / 2.5, t.scale / 1.7)) * Math.cos(o * s), l * Math.sin(o * s), J.randInt(4, 5), r, !0);
} else if ("cheese" == t.name) {
var c;
r.fillStyle = "#f4f3ac", dr(0, 0, t.scale, r), r.fillStyle = "#c3c28b";
o = Mt / (c = 4);
var l;
for (s = 0; s < c; ++s) dr((l = J.randInt(t.scale / 2.5, t.scale / 1.7)) * Math.cos(o * s), l * Math.sin(o * s), J.randInt(4, 5), r, !0);
} else if ("wood wall" == t.name || "stone wall" == t.name || "castle wall" == t.name) {
r.fillStyle = "castle wall" == t.name ? "#83898e" : "wood wall" == t.name ? "#a5974c" : "#939393";
var u = "castle wall" == t.name ? 4 : 3;
hr(r, u, 1.1 * t.scale, 1.1 * t.scale), r.fill(), r.stroke(), r.fillStyle = "castle wall" == t.name ? "#9da4aa" : "wood wall" == t.name ? "#c9b758" : "#bcbcbc",
hr(r, u, .65 * t.scale, .65 * t.scale), r.fill();
} else if ("spikes" == t.name || "greater spikes" == t.name || "poison spikes" == t.name || "spinning spikes" == t.name) {
r.fillStyle = "poison spikes" == t.name ? "#7b935d" : "#939393";
var f = .6 * t.scale;
hr(r, "spikes" == t.name ? 5 : 6, t.scale, f), r.fill(), r.stroke(), t.prediction && (r.globalAlpha = .6,
r.fillStyle = t.preplace ? "#0000ff" : "#ff0000", hr(r, "spikes" == t.name ? 5 : 6, t.scale, f),
r.fill(), r.globalAlpha = 1), r.fillStyle = "#a5974c", dr(0, 0, f, r), t.prediction && (r.globalAlpha = .6,
r.fillStyle = t.preplace ? "#0000ff" : "#ff0000", dr(0, 0, f, r), r.globalAlpha = 1),
r.fillStyle = "#c9b758", dr(0, 0, f / 2, r, !0), t.prediction && (r.globalAlpha = .6,
r.fillStyle = t.preplace ? "#0000ff" : "#ff0000", dr(0, 0, f / 2, r, !0), r.globalAlpha = 1);
} else if ("windmill" == t.name || "faster windmill" == t.name || "power mill" == t.name) r.fillStyle = "#a5974c",
dr(0, 0, t.scale, r), t.prediction && (r.globalAlpha = .6, r.fillStyle = t.preplace ? "#0000ff" : "#ff0000",
dr(0, 0, t.scale, r), r.globalAlpha = 1), r.fillStyle = "#c9b758", pr(0, 0, 1.5 * t.scale, 29, 4, r),
t.prediction && (r.globalAlpha = .6, r.fillStyle = t.preplace ? "#0000ff" : "#ff0000",
pr(0, 0, 1.5 * t.scale, 29, 4, r), r.globalAlpha = 1), r.fillStyle = "#a5974c",
dr(0, 0, .5 * t.scale, r), t.prediction && (r.globalAlpha = .6, r.fillStyle = t.preplace ? "#0000ff" : "#ff0000",
dr(0, 0, .5 * t.scale, r), r.globalAlpha = 1); else if ("mine" == t.name) r.fillStyle = "#939393",
hr(r, 3, t.scale, t.scale), r.fill(), r.stroke(), r.fillStyle = "#bcbcbc", hr(r, 3, .55 * t.scale, .65 * t.scale),
r.fill(); else if ("sapling" == t.name) for (s = 0; s < 2; ++s) {
hr(r, 7, f = t.scale * (s ? .5 : 1), .7 * f), r.fillStyle = s ? "#b4db62" : "#9ebf57",
r.fill(), s || r.stroke();
} else if ("pit trap" == t.name) r.fillStyle = "#a5974c", hr(r, 3, 1.1 * t.scale, 1.1 * t.scale),
r.fill(), r.stroke(), t.prediction && (r.globalAlpha = .6, r.fillStyle = t.preplace ? "#0000ff" : "#ff0000",
hr(r, 3, 1.1 * t.scale, 1.1 * t.scale), r.fill(), r.globalAlpha = 1), r.fillStyle = rn,
hr(r, 3, .65 * t.scale, .65 * t.scale), r.fill(), t.prediction && (r.globalAlpha = .6,
r.fillStyle = t.preplace ? "#0000ff" : "#ff0000", hr(r, 3, .65 * t.scale, .65 * t.scale),
r.fill()); else if ("boost pad" == t.name) r.fillStyle = "#7e7f82", mr(0, 0, 2 * t.scale, 2 * t.scale, r),
r.fill(), r.stroke(), r.fillStyle = "#dbd97d", function(t, e) {
e = e || we;
var n = t * (Math.sqrt(3) / 2);
e.beginPath(), e.moveTo(0, -n / 2), e.lineTo(-t / 2, n / 2), e.lineTo(t / 2, n / 2),
e.lineTo(0, -n / 2), e.fill(), e.closePath();
}(1 * t.scale, r); else if ("turret" == t.name) {
r.fillStyle = "#a5974c", dr(0, 0, t.scale, r), r.fill(), r.stroke(), r.fillStyle = "#939393";
mr(0, -25, .9 * t.scale, 50, r), dr(0, 0, .6 * t.scale, r), r.fill(), r.stroke();
} else if ("platform" == t.name) {
r.fillStyle = "#cebd5f";
var d = 2 * t.scale;
var h = d / 4;
var m = -t.scale / 2;
for (s = 0; s < 4; ++s) mr(m - h / 2, 0, h, 2 * t.scale, r), r.fill(), r.stroke(),
m += d / 4;
} else "healing pad" == t.name ? (r.fillStyle = "#7e7f82", mr(0, 0, 2 * t.scale, 2 * t.scale, r),
r.fill(), r.stroke(), r.fillStyle = "#db6e6e", pr(0, 0, .65 * t.scale, 20, 4, r, !0)) : "spawn pad" == t.name ? (r.fillStyle = "#7e7f82",
mr(0, 0, 2 * t.scale, 2 * t.scale, r), r.fill(), r.stroke(), r.fillStyle = "#71aad6",
dr(0, 0, .6 * t.scale, r)) : "blocker" == t.name ? (r.fillStyle = "#7e7f82", dr(0, 0, t.scale, r),
r.fill(), r.stroke(), r.rotate(Math.PI / 4), r.fillStyle = "#db6e6e", pr(0, 0, .65 * t.scale, 20, 4, r, !0)) : "teleporter" == t.name && (r.fillStyle = "#7e7f82",
dr(0, 0, t.scale, r), r.fill(), r.stroke(), r.rotate(Math.PI / 4), r.fillStyle = "#d76edb",
dr(0, 0, .5 * t.scale, r, !0));
n = i, e || (ur[t.id + (t.predictEnemyTrap ? 100 : t.prediction ? t.preplace ? 200 : 300 : 0)] = n);
}
var p, v, g, b, k, y, w, _;
return n;
}
function dr(t, e, n, i, r, a) {
(i = i || we).beginPath(), i.arc(t, e, n, 0, 2 * Math.PI), a || i.fill(), r || i.stroke();
}
function hr(t, e, n, i) {
var r = Math.PI / 2 * 3;
var a, o;
var s = Math.PI / e;
t.beginPath(), t.moveTo(0, -n);
for (var c = 0; c < e; c++) a = Math.cos(r) * n, o = Math.sin(r) * n, t.lineTo(a, o),
r += s, a = Math.cos(r) * i, o = Math.sin(r) * i, t.lineTo(a, o), r += s;
t.lineTo(0, -n), t.closePath();
}
function mr(t, e, n, i, r, a) {
r.fillRect(t - n / 2, e - i / 2, n, i), a || r.strokeRect(t - n / 2, e - i / 2, n, i);
}
function pr(t, e, n, i, r, a, o) {
a.save(), a.translate(t, e), r = Math.ceil(r / 2);
for (var s = 0; s < r; s++) mr(0, 0, 2 * n, i, a, o), a.rotate(Math.PI / r);
a.restore();
}
function vr(t) {
for (var e = 0; e < t.length; ) nn.add(t[e], t[e + 1], t[e + 2], t[e + 3], t[e + 4], t[e + 5], it.list[t[e + 6]], !0, t[e + 7] >= 0 ? {
sid: t[e + 7]
} : null), t[e + 7] >= 0 && ls.push(t[e + 7]), e += 8;
us && us(!0);
}
function gr(t, e) {
(Kt = xs(e)) && (va.push(Kt), Kt.xWiggle += tt.gatherWiggle * Math.cos(t), Kt.yWiggle += tt.gatherWiggle * Math.sin(t));
}
function br(t, e) {
(Kt = xs(t)) && (Kt.dir = e, Kt.xWiggle += tt.gatherWiggle * Math.cos(e + Math.PI),
Kt.yWiggle += tt.gatherWiggle * Math.sin(e + Math.PI));
}
function kr(t, e, n, i, r, a, o, s) {
let c = Ft.addProjectile(t, e, n, i, r, a, null, null, o);
c.sid = s, ta.push({
projectile: c,
x: t,
y: e,
range: i,
speed: r
});
}
function yr(t, e) {
for (let n of Ut) n.sid == t && (n.range = e, ea.push(n), va.length > 0 && (ba.push({
objects: va,
projectile: n
}), va = []));
}
function wr(t) {
(Kt = _s(t)) && Kt.startAnim();
}
function _r(t) {
for (var e = 0; e < Ct.length; ++e) Ct[e].forcePos = !Ct[e].visible, Ct[e].visible = !1;
if (t) {
var n = Date.now();
for (e = 0; e < t.length; ) (Kt = _s(t[e])) ? (Kt.index = t[e + 1], Kt.t1 = void 0 === Kt.t2 ? n : Kt.t2,
Kt.t2 = n, Kt.x1 = Kt.x, Kt.y1 = Kt.y, Kt.x2 = t[e + 2], Kt.y2 = t[e + 3], Kt.d1 = void 0 === Kt.d2 ? t[e + 4] : Kt.d2,
Kt.d2 = t[e + 4], Kt.health = t[e + 5], Kt.dt = 0, Kt.visible = !0) : ((Kt = qt.spawn(t[e + 2], t[e + 3], t[e + 4], t[e + 1])).x2 = Kt.x,
Kt.y2 = Kt.y, Kt.d2 = Kt.dir, Kt.health = t[e + 5], qt.aiTypes[t[e + 1]].name || (Kt.name = tt.cowNames[t[e + 6]]),
Kt.forcePos = !0, Kt.sid = t[e], Kt.visible = !0), e += 7;
}
}
var xr = {};
function Mr(t, e) {
var n = t.index;
var i = xr[n];
if (!i) {
var r = new Image;
r.onload = function() {
this.isLoaded = !0, this.onload = null;
}, r.src = ".././img/animals/" + t.src + ".png", i = r, xr[n] = i;
}
if (i.isLoaded) {
var a = 1.2 * t.scale * (t.spriteMlt || 1);
e.drawImage(i, -a, -a, 2 * a, 2 * a);
}
}
function jr(t, e, n) {
return t + n >= 0 && t - n <= ae && e + n >= 0 && e - n <= oe;
}
function Sr(t, e) {
var n = function(t) {
for (var e = 0; e < zt.length; ++e) if (zt[e].id == t) return zt[e];
return null;
}(t[0]);
if (n || (n = new at(t[0], t[1], tt, J, Ft, nn, zt, Ct, it, tn, en), zt.push(n)),
n.spawn(e ? Tt : null), n.visible = !1, n.x2 = void 0, n.y2 = void 0, n.setData(t),
na[n.sid] = 1, ia[n.sid] = 1, ra[n.sid] = 1, e) {
Kr = !1, V = !1, Gt = n;
try {
window.__myPlayer = Gt;
} catch (t) {}
te = Gt.x, ee = Gt.y, Ln(), Ci(), Li(), Ui(0), Pe.style.display = "block";
}
}
function Ar(t) {
for (var e = 0; e < zt.length; e++) if (zt[e].id == t) {
zt.splice(e, 1);
break;
}
}
function Tr(t, e) {
if (Gt) {
Gt.itemCounts[t] = e;
try {
for (var n = 0; n < it.list.length; ++n) {
var i = n;
var r = it.list[i].group;
if (r && r.id == t) {
var a = it.weapons.length + i;
var o = document.getElementById('actionBarCount' + a);
if (o) {
var s = Gt.itemCounts && Gt.itemCounts[r.id] ? Gt.itemCounts[r.id] : 0;
o.innerText = s > 0 ? String(s) : '', o.style.display = s > 0 && (!r || 0 !== r.id) ? 'block' : 'none';
}
}
}
} catch (t) {}
}
}
function Dr(t, e, n) {
if (Gt) {
if ('kills' === t) {
var i = Gt.kills || 0;
if (Gt[t] = e, e > i) try {
if (Z && Z.killchat) try {
Yn((Z.killchat_message || 'ez').toString().slice(0, 30));
} catch (t) {}
} catch (t) {}
} else Gt[t] = e;
n && Ci();
}
}
let Pr = !1;
let Br = !1;
let Ir;
let Or = !1;
let Hr = null;
let Er = null;
let Cr = null;
let zr = null;
let Rr = null;
function $r() {
try {
if (!Gt) return 0;
if (void 0 !== Gt.x2 && void 0 !== Gt.y2 && void 0 !== Gt.xVel && void 0 !== Gt.yVel) {
const t = (Gt.xVel || 0) - (Gt.x2 || 0);
const e = (Gt.yVel || 0) - (Gt.y2 || 0);
return Math.sqrt(t * t + e * e);
}
if (void 0 !== Gt.xVel && void 0 !== Gt.yVel) return Math.sqrt(Math.pow(Gt.xVel || 0, 2) + Math.pow(Gt.yVel || 0, 2));
} catch (t) {}
return 0;
}
let Ur = 0;
let Fr;
let Lr;
let Nr;
let qr = !1;
let Gr = !1;
let Wr = !1;
let Kr = !1;
let Yr = !1;
let Xr = 0;
let Vr = 0;
const Jr = 140;
let Zr = 0;
let Qr = [];
let ta = [];
let ea = [];
let na = [];
let ia = [];
let ra = [];
let aa = 0;
let oa = [];
let sa = [];
let ca = 0;
let la = !1;
let ua = !1;
let fa = [];
let da = 0;
let ha = 0;
let ma = !1;
let pa = [];
let va = [];
let ga = [];
let ba = [];
let ka = [];
let ya = [];
let wa = 0;
let _a = [];
let xa = [];
let Ma = [];
let ja = [];
let Sa = !1;
let Aa = !1;
let Ta = null;
let Da = null;
let Pa = null;
let Ba = 0;
let Ia = !1;
let Oa = null;
let Ha = 0;
let Ea = null;
let Ca = !1;
let za = !1;
window.leftHoldDebug = !1;
let Ra = [];
let $a;
let Ua;
let Fa;
let La = !1;
let Na = 0;
let qa = !1;
let Ga = {};
let Wa = {};
function Ka() {
try {
if (!Z || !Z.autostop_before_collision) return !1;
if ('number' == typeof zr && 'number' == typeof Rr && null !== zr && null !== Rr) return !0;
if (void 0 !== Ur && void 0 !== Zr && Ur > Zr) return !0;
} catch (t) {}
return !1;
}
let Ya = null;
let Xa = null;
let Va;
let Ja = 0;
let Za = !1;
let Qa;
let to;
let eo = [];
let no = {
spike: 0,
poison: 0,
player: 0
};
let io = !1;
let ro = !1;
let ao = null;
let oo;
let so = {
reloaded: !1,
waitHit: 0,
autoAim: !1,
revAim: !1,
ageInsta: !0,
reSync: !1,
bullTick: 0,
anti0Tick: 0,
antiSync: !1,
safePrimary: function(t) {
return [ 0, 8 ].includes(t.primaryIndex);
},
safeSecondary: function(t) {
return [ 10, 11, 14 ].includes(t.secondaryIndex);
},
lastDir: 0,
autoPush: !1,
pushData: {},
antiInsta: !1
};
let co = [];
let lo = {
87: [ 0, -1 ],
83: [ 0, 1 ],
65: [ -1, 0 ],
68: [ 1, 0 ]
};
let uo = !1;
let fo = [];
let ho = {
primary: !1,
secondary: !1
};
let mo = !1;
function po() {
let t = 0;
for (let e in no) t += no[e];
return l = t, t;
}
function vo(t, e = 220) {
let n = Ra.filter(n => n.id > 5 && n.id < 10 && (n.owner.sid === Gt.sid || Ho(n.owner.sid)) && J.getDistance(t.x2, t.y2, n.x, n.y) < e);
return n.length < 2 ? null : (n.sort((e, n) => J.getDistance(t.x2, t.y2, e.x, e.y) - J.getDistance(t.x2, t.y2, n.x, n.y)),
[ n[0], n[1] ]);
}
function go(t, e) {
return {
x: (t.x + e.x) / 2,
y: (t.y + e.y) / 2
};
}
function bo(t) {
if (!t) return !1;
if (!getSetting("SpikeMidKnockback")) return !1;
if (uo) return !1;
if (1 !== na[Gt.sid]) return !1;
const e = vo(t);
if (!e) return !1;
const n = go(e[0], e[1]);
if (J.getDistance(t.x2, t.y2, n.x, n.y) > 140) return !1;
const i = J.getDistance(e[0].x, e[0].y, e[1].x, e[1].y);
if (i > 110 || i < 40) return !1;
const r = Math.atan2(n.y - t.y2, n.x - t.x2);
const a = t.x2 + 110 * Math.cos(r);
const o = t.y2 + 110 * Math.sin(r);
return J.getDistance(a, o, n.x, n.y) < 50;
}
function ko() {
if (!si) return !1;
if (uo) return !1;
if (La) return !1;
if (4 !== Gt.weapons[0] && 5 !== Gt.weapons[0]) return !1;
if (1 !== na[Gt.sid]) return !1;
if (1 !== ia[Gt.sid]) return !1;
return Ra.some(t => t.id > 5 && t.id < 10 && (t.owner.sid === Gt.sid || Ho(t.owner.sid)) && J.getDistance(si.x2, si.y2, t.x, t.y) <= 35 + t.scale);
}
function yo() {
if (!ko()) return !1;
let t = Ra.find(t => 15 === t.id && (t.owner.sid === Gt.sid || Ho(t.owner.sid)) && J.getDistance(si.x2, si.y2, t.x, t.y) <= 55);
if (!t) return !1;
if (10 !== Gt.weapons[1]) return !1;
if (1 !== ia[Gt.sid]) return !1;
const e = Gt.weapons[1];
const n = it.weapons[e].dmg * (it.weapons[e].sDmg || 1) * tt.weaponVariants[Gt.weaponVariants[e] || 1].val * (jo(40, 0) ? 3.3 : 1);
return t.health <= n;
}
function wo(t) {
if (!t) return !1;
if (10 !== Gt.weapons[1]) return !1;
if (1 !== ia[Gt.sid]) return !1;
const e = it.weapons[10];
const n = e.dmg * (e.sDmg || 1) * tt.weaponVariants[Gt.weaponVariants[10] || 1].val * (jo(40, 0) ? 3.3 : 1);
return t.health <= n && J.getDistance(Gt.x2, Gt.y2, t.x, t.y) <= t.scale + e.range;
}
function _o(t, e = Math.atan2(Jt - ce / 2, Vt - se / 2)) {
ji(t), Ai(1, e), Ai(0, e), Si(ca);
}
function xo(t, e, n, i, r) {
try {
if (!Z) return;
var a = {
place: {
enabled: Z.label_place_enabled,
color: Z.label_place_color
},
autoplace: {
enabled: Z.label_autoplace_enabled,
color: Z.label_autoplace_color
},
preplace: {
enabled: Z.label_preplace_enabled,
color: Z.label_preplace_color
},
replace: {
enabled: Z.label_replace_enabled,
color: Z.label_replace_color
}
};
var o = a[n] || a.place;
if (!o.enabled) return;
i = i || o.color;
var s = r && r.size ? Number(r.size) : Number(Z.label_size);
var c = r && r.speed ? Number(r.speed) : Number(Z.label_speed);
var l = r && r.life ? Number(r.life) : Number(Z.label_life);
(isNaN(s) || s <= 0) && (s = 36), (isNaN(c) || c <= 0) && (c = .18), (isNaN(l) || l <= 0) && (l = 800),
ft.showText(t, e, s, c, l, n, i);
} catch (t) {}
}
function Mo(t) {
for (let e = 0; e < t; e += it.list[Gt.items[0]].heal) _o(Gt.items[0], null);
}
function jo(t, e) {
return e ? Gt.tails[t] : Gt.skins[t];
}
function So(t, e) {
try {
if ('undefined' != typeof leftHoldDebug && leftHoldDebug) try {
jo(t, 0);
} catch (t) {}
} catch (t) {}
if (e || Gt.skinIndex != t) if (0 == t) $n(t, 0); else if (e) {
'undefined' != typeof leftHoldDebug && leftHoldDebug, $n(t, 0);
try {
vi.tickBase(() => {
try {
Gt && Gt.skinIndex != t ? ('undefined' != typeof leftHoldDebug && leftHoldDebug,
$n(t, 0)) : 'undefined' != typeof leftHoldDebug && leftHoldDebug;
} catch (t) {
'undefined' != typeof leftHoldDebug && leftHoldDebug;
}
}, 1);
} catch (t) {
'undefined' != typeof leftHoldDebug && leftHoldDebug;
}
} else jo(t, 0) && $n(t, 0);
}
function Ao(t) {
Gt.tailIndex != t && (0 == t || jo(t, 1)) && $n(t, 1);
}
function To(t, e, n) {
return {
x: (n ? Gt.xVel : Gt.x2) + (35 + it.list[t].scale + (it.list[t].placeOffset || 0)) * Math.cos(e),
y: (n ? Gt.yVel : Gt.y2) + (35 + it.list[t].scale + (it.list[t].placeOffset || 0)) * Math.sin(e),
scale: it.list[t].scale
};
}
function Do(t, e, n, i) {
if (Io(t)) return !1;
let r = To(t, e, i);
return !!nn.checkItemLocation(r.x, r.y, r.scale, .6, t, !1, Gt, n || Ra);
}
function Po() {
if (M = Ra.filter(t => 22 == t.id), x = M.sort((t, e) => J.getDistance(Gt.x2, Gt.y2, t.x, t.y) - J.getDistance(Gt.x2, Gt.y2, e.x, e.y))[0],
Br) return 10 != Gt.weapons[1] ? Gt.weapons[0] : Lr ? Fr == Lr ? it.weapons[Gt.weapons[0]].speed <= 400 && Fr.health <= it.weapons[Gt.weapons[0]].dmg ? Gt.weapons[0] : Gt.weapons[1] : it.weapons[Gt.weapons[0]].speed <= 400 && Fr.health <= it.weapons[Gt.weapons[0]].dmg && J.getDistance(Gt.x2, Gt.y2, Fr.x, Fr.y) <= it.weapons[Gt.weapons[0]].range + Fr.scale ? Gt.weapons[0] : J.getDistance(Gt.x2, Gt.y2, Fr.x, Fr.y) <= it.weapons[Gt.weapons[1]].range + Fr.scale ? Gt.weapons[1] : Gt.weapons[0] : Gt.weapons[1];
if (x) {
if (Fr == x && J.getDistance(Gt.x2, Gt.y2, Fr.x, Fr.y) <= it.weapons[Gt.weapons[1]].range + Fr.scale) return Gt.weapons[1];
} else if (!C) {
if (ia[Gt.sid] < 1) return Gt.weapons[1];
if (na[Gt.sid] < 1) return Gt.weapons[0];
}
return c || 7 === Gt.weapons[0] ? Gt.weapons[0] : Gt.weapons[1];
}
function Bo(t, e, n) {
if (Z.bannedAngles && w.has(e)) return;
let i = To(t, e);
for (let t of oa) if (J.getDistance(i.x, i.y, t.x, t.y) < i.scale + t.scale) return;
oa.push({
id: t,
angle: e,
name: it.list[t].name,
x: i.x,
y: i.y,
scale: i.scale,
preplace: n
}), Z.bannedAngles && t === Gt.items[2] && w.set(e, Zr + 18);
}
function Io(t) {
let e = it.list[t].group;
let n = e.sandboxLimit || 99;
if (Gt.itemCounts[e.id] >= n) return !0;
}
function Oo(t, e, n, i, r, a, o) {
let s = n - t, c = i - e;
let l = ((r - t) * s + (a - e) * c) / (s * s + c * c);
let u = {
x: t + l * s,
y: e + l * c
};
if (u.x >= Math.min(t, n) && u.x <= Math.max(t, n) && u.y >= Math.min(e, i) && u.y <= Math.max(e, i)) return J.getDistance(u.x, u.y, r, a) < o;
}
function Ho(t) {
if (Gt.team) for (var e = 0; e < mn.length; e += 2) if (mn[e] == t) return !0;
}
function Eo(t, e) {
try {
if (!Z || !Z.autostop_before_collision) return;
if (!Gt) return;
try {
if (Ra && Ra.some(t => t && 15 == t.id && t.owner && t.owner.sid != Gt.sid && !Ho(t.owner.sid) && 'number' == typeof t.x && 'number' == typeof t.y && J.getDistance(Gt.x2, Gt.y2, t.x, t.y) <= t.scale + (Gt.scale || 0))) return;
} catch (t) {}
try {
if ($r() > 66) {
try {} catch (t) {}
return;
}
} catch (t) {}
const o = ri();
if (void 0 !== o) {
const n = Math.atan2(e - Gt.y2, t - Gt.x2);
let i = Math.abs(o - n);
if (i > Math.PI && (i = 2 * Math.PI - i), i > Math.PI / 2) return;
}
Ya = null;
try {
Z && Z.autostop_before_collision && di();
} catch (t) {}
try {
if (void 0 !== ft && Gt && Z && Z.label_autostop_enabled) {
var n = Number(Z.label_size) || 20;
var i = Number(Z.label_speed) || .12;
var r = Number(Z.label_life) || 600;
var a = Z.label_autostop_color || "#ff5252";
try {
ft.showText(Gt.x2, Gt.y2 - (Gt.scale || 0) - 30, n, i, r, "AUTO STOP", a);
} catch (t) {}
}
} catch (t) {}
Ur = Math.max(Ur, void 0 !== Zr ? Zr + 1 : 1);
} catch (t) {}
}
function Co(t, e) {
let n = To(t, e);
for (let t of sa) if (J.getDistance(n.x, n.y, t.x, t.y) < n.scale + t.scale) return !1;
return !0;
}
function zo(t, e) {
let n = To(t, e);
Co(t, e) && sa.push({
id: 15,
x: n.x,
y: n.y,
scale: n.scale,
tick: Zr
});
}
let Ro = null;
let $o = [];
function Uo(t) {
if (R) {
const e = document.getElementById("anglesvalue");
parseInt(e ? e.value : Z.anglesvalue);
const n = [];
for (let e = 0; e < 300; e++) {
const i = J.toRad(1.2 * e);
n.push({
id: t,
angle: i,
placeable: Do(t, i),
...To(t, i)
});
}
qo(n);
try {
Vo && Vo() && Ko(n);
} catch (t) {}
Lo(n);
}
}
function Fo(t) {
if (R) {
const e = document.getElementById("anglesvalue");
parseInt(e ? e.value : Z.anglesvalue);
const n = [];
for (let e = 0; e < 36; e++) {
const i = J.toRad(10 * e);
n.push({
id: t,
angle: i,
placeable: Do(t, i) && Co(t, i),
...To(t, i)
});
}
qo(n);
try {
Vo && Vo() && Ko(n);
} catch (t) {}
Lo(n);
}
}
function Lo(t) {
for (let e of t.filter(t => t.perfect)) Jo(e) && Bo(e.id, e.angle, !1);
for (let e of t.filter(t => t.placeable)) Jo(e) && Bo(e.id, e.angle, !1);
}
function No(t, e, n = "Fast") {
try {
var i = document.getElementById('preplacer_mode');
if (i && i.value) n = i.value; else {
var r = Go && Go('preplacer_mode');
r && (n = r);
}
} catch (t) {}
if ("Fast" === n && si) {
const n = [];
for (let i = 0; i < 36; i++) {
const r = J.toRad(10 * i);
n.push({
id: t,
angle: r,
placeable: Do(t, r, e),
...To(t, r)
});
}
return qo(n), n;
}
if ("Balanced" === n && si) {
const n = [];
for (let i = 0; i < 120; i++) {
const r = J.toRad(3 * i);
n.push({
id: t,
angle: r,
placeable: Do(t, r, e),
...To(t, r)
});
}
return qo(n), n;
}
if ("Accurate" === n && si) {
const n = [];
for (let i = 0; i < 360; i++) {
const r = J.toRad(1 * i);
n.push({
id: t,
angle: r,
placeable: Do(t, r, e),
...To(t, r)
});
}
return qo(n), n;
}
}
function qo(t) {
for (let e in t) t[e].perfect = !1, e < 1 || (t[e].placeable && !t[e - 1].placeable && (t[e].perfect = !0),
t[e - 1].placeable && !t[e].placeable && (t[e - 1].perfect = !0));
}
function Go(t) {
const e = document.getElementById(t);
return e && "" !== e.value ? parseFloat(e.value) : Z[t];
}
var Wo = [];
function Ko(t) {
try {
const e = Date.now();
for (const n of t) Wo.push({
x: n.x,
y: n.y,
angle: n.angle,
placeable: !!n.placeable,
perfect: !!n.perfect,
t: e
});
Wo.length > 2e3 && Wo.splice(0, Wo.length - 2e3);
} catch (t) {}
}
var Yo = [];
function Xo() {
try {
var t = document.getElementById('preplacer_debug');
if (t && 'checkbox' === t.type) return !!t.checked;
} catch (t) {}
return !!Z.preplacer_debug;
}
function Vo() {
try {
var t = document.getElementById('autoplacer_debug');
if (t && 'checkbox' === t.type) return !!t.checked;
} catch (t) {}
return !!Z.autoplacer_debug;
}
function Jo(t) {
if (!si) return !1;
if (t.id == Gt.items[2] && !Io(Gt.items[2])) {
const e = Ra.filter(t => 15 == t.id && J.getDistance(si.x2, si.y2, t.x, t.y) <= 50 && (t.owner.sid == Gt.sid || Ho(t.owner.sid)))[0];
if (e) {
if (J.getDistance(t.x, t.y, si.x2, si.y2) <= 35 + t.scale) return !0;
if (J.lineInRect(t.x - t.scale, t.y - t.scale, t.x + t.scale, t.y + t.scale, Gt.x2, Gt.y2, e.x, e.y)) return !1;
if (J.getDistance(t.x, t.y, si.x2, si.y2) > 70 + t.scale && J.getDistance(t.x, t.y, e.x, e.y) <= t.scale + e.scale + 50) return !0;
} else {
if (Lr) return !1;
if (J.getDistance(t.x, t.y, si.xVel, si.yVel) <= 35 + t.scale) {
let e = Math.atan2(si.yVel - t.y, si.xVel - t.x);
let n = t.x + 200 * Math.cos(e);
let i = t.y + 200 * Math.sin(e);
let r = Ra.filter(t => t.id > 5 && t.id < 10 && (t.owner.sid == Gt.sid || Ho(t.owner.sid)));
for (let e of r) if (J.lineInRect(e.x - e.scale, e.y - e.scale, e.x + e.scale, e.y + e.scale, t.x, t.y, n, i)) return !0;
} else {
if (J.getDistance(Gt.x2, Gt.y2, si.x2, si.y2) > 300) return !1;
if (J.lineInRect(t.x - t.scale, t.y - t.scale, t.x + t.scale, t.y + t.scale, Gt.x2, Gt.y2, si.x2, si.y2)) return !1;
let e = Ra.filter(t => t.id > 5 && t.id < 10 && (t.owner.sid == Gt.sid || Ho(t.owner.sid))).sort((e, n) => J.getDistance(t.x, t.y, e.x, e.y) - J.getDistance(t.x, t.y, n.x, n.y))[0];
if (function() {
let t = 0;
for (let e of oa) e.id == Gt.items[2] && t++;
return t;
}() >= 1) return !1;
if (!e) return !0;
if (J.getDistance(t.x, t.y, e.x, e.y) > t.scale + e.scale + 50) return !0;
}
}
}
if (t.id == Gt.items[4] && !Io(Gt.items[4])) {
if (J.getDistance(Gt.x2, Gt.y2, si.x2, si.y2) > 300) return !1;
const t = Ra.filter(t => 15 == t.id && J.getDistance(si.x2, si.y2, t.x, t.y) <= 50 && (t.owner.sid == Gt.sid || Ho(t.owner.sid)))[0];
return !(t && J.getDistance(Gt.x2, Gt.y2, t.x, t.y) <= 35 + t.scale + 50);
}
return !1;
}
function Zo() {
if ($o.length > 0) {
if (Ro && $o.some(t => Ro.sid == t)) for (const t of oa) t.preplace && (zo(t.id, t.angle),
aa = Zr);
$o = [];
}
if (oa = [], Z.bannedAngles) for (let [t, e] of w.entries()) Zr >= e && w.delete(t);
if (Ro = null, mo = !1, si && J.getDistance(Gt.x2, Gt.y2, si.x2, si.y2) < 300 && !(Lr && ha > 0)) {
let t = function() {
let t;
if (V && (ca < 9 && 1 == na[Gt.sid] || ca > 8 && 1 == ia[Gt.sid])) {
let e = it.weapons[ca].dmg * (it.weapons[ca].sDmg || 1) * tt.weaponVariants[Gt.weaponVariants[ca]].val * (jo(40, 0) ? 3.3 : 1);
t = Ra.filter(t => J.getDistance(Gt.xVel, Gt.yVel, t.x, t.y) - t.scale <= it.weapons[ca].range && J.getAngleDist(J.getDirection(t.x, t.y, Gt.xVel, Gt.yVel), ci()) <= tt.gatherAngle && t.health <= e).sort((t, e) => J.getDistance(t.x, t.y, si.x2, si.y2) - J.getDistance(e.x, e.y, si.x2, si.y2))[0];
}
if (si && !t) {
let e = null;
if (10 == si.weapons[1] && ia[si.sid] >= .5 && si.lastSecondaryReload < ia[si.sid] ? e = si.weapons[1] : it.weapons[si.weapons[0]].speed <= 600 && na[si.sid] >= .3 && si.lastPrimaryReload < na[si.sid] && (e = si.weapons[0]),
null != e) {
let n = it.weapons[e].dmg * (it.weapons[e].sDmg || 1) * (tt.weaponVariants[si.weaponVariants[e]].val || 1) * 3.3;
t = Ra.filter(t => !t.hideFromEnemy && J.getDistance(si.x2, si.y2, t.x, t.y) <= t.scale + it.weapons[e].range && t.health <= n).sort((t, e) => J.getDistance(t.x, t.y, si.x2, si.y2) - J.getDistance(e.x, e.y, si.x2, si.y2))[0];
}
}
return t && preplacer && (mo = !0), t;
}();
if (t) {
let e = [ ...Ra ];
e.splice(e.indexOf(t), 1);
const n = No(Gt.items[2], e);
const i = No(Gt.items[4] || 15, e);
const r = (e, n) => e.filter(e => e[n] && function(t, e) {
if (!si || !Z.preplacer) return !1;
if (J.getDistance(Gt.x2, Gt.y2, si.x2, si.y2) > e.activationDistance) return !1;
let n = t.id == Gt.items[2] && !Io(Gt.items[2]);
let i = t.id == Gt.items[4] && !Io(Gt.items[4]);
let r = Ra.filter(t => 15 == t.id && (t.owner.sid == Gt.sid || Ho(t.owner.sid)));
if (Z.filteredCache && _.tick === Zr && _.withSpikes) {
var a = _.withSpikes;
var o = _.withoutSpikes;
} else a = Ra.filter(t => t.id > 5 && t.id < 10 && (t.owner.sid == Gt.sid || Ho(t.owner.sid))),
o = Ra.filter(t => t.id > 5 && t.id < 10 && t.owner && t.owner.sid != Gt.sid && !Ho(t.owner.sid)),
Z.filteredCache && (_ = {
tick: Zr,
withSpikes: a,
withoutSpikes: o
});
Ra.filter(t => 15 == t.id && t.owner && t.owner.sid != Gt.sid && !Ho(t.owner.sid)).some(t => J.getDistance(Gt.x2, Gt.y2, t.x, t.y) <= t.scale + 50);
let c = r.some(t => J.getDistance(si.x2, si.y2, t.x, t.y) <= t.scale + 50);
let l = r.some(t => J.getDistance(si.xVel, si.yVel, t.x, t.y) <= t.scale + 50 && !c);
let f = J.getDistance(t.x, t.y, si.x2, si.y2) <= t.scale + 35;
let d = J.getDistance(t.x, t.y, si.xVel, si.yVel) <= t.scale + 35;
let h;
J.lineInRect(t.x - t.scale, t.y - t.scale, t.x + t.scale, t.y + t.scale, Gt.x2, Gt.y2, si.x2, si.y2);
let m = !1;
for (let e of r) if (J.getDistance(e.x, e.y, si.x2, si.y2) <= e.scale + 50 && (h = J.getDistance(e.x, e.y, t.x, t.y),
J.getDistance(e.x, e.y, t.x, t.y) < e.scale + t.scale)) {
m = !0;
break;
}
let p = !1;
if (f || d) {
let e = Math.atan2(si.y2 - t.y, si.x2 - t.x);
let n = si.x2 + 200 * Math.cos(e);
let i = si.y2 + 200 * Math.sin(e);
for (let t of a) if (J.lineInRect(t.x - t.scale, t.y - t.scale, t.x + t.scale, t.y + t.scale, si.x2, si.y2, n, i)) {
p = !0;
break;
}
}
return !(!(Z.unifiedSpikeTick && s && n && (f || d)) && (!n || !c && !l || !f && !d || m) && (n && (f || d) && p ? (u = !0,
0) : !i || s || c));
}(e, t)).reduce((e, n) => {
const i = J.getDistance(t.x, t.y, n.x, n.y);
return !e || i < e.distance ? {
angle: n,
distance: i
} : e;
}, null);
const a = [ () => r(n, 'perfect'), () => r(i, 'perfect'), () => r(n, 'placeable'), () => r(i, 'placeable') ].map(t => t()).find(t => null !== t);
a && (Bo(a.angle.id, a.angle.angle, !0), Ro = t);
}
}
if (Z.autoPlace && si && J.getDistance(Gt.x2, Gt.y2, si.x2, si.y2) < Z.autoplace_activation_distance && (Lr ? (Fo(Gt.items[2]),
Fo(Gt.items[4] || 15)) : (Fo(Gt.items[2]), Fo(Gt.items[4] || 15), Qo(), Zr - aa >= 3 && (Uo(Gt.items[2]),
Uo(Gt.items[4] || 15)))), Gt.alive || (qr = !1, Wr = !1, Gr = !1), qr && li[86] && Gt && Gt.alive) {
_o(Gt.items[2], ci());
try {
xo(Gt.x2, Gt.y2 - 20, "place");
} catch (t) {}
}
if (Wr && li[70] && Gt && Gt.alive) {
_o(Gt.items[4], ci());
try {
xo(Gt.x2, Gt.y2 - 20, "place");
} catch (t) {}
}
if (Gr && li[72] && Gt && Gt.alive) {
_o(Gt.items[5], ci());
try {
xo(Gt.x2, Gt.y2 - 20, "place");
} catch (t) {}
}
if (Qo(), Pr && null != Xa && !Lr) {
let t = Xa + J.toRad(180);
Do(Gt.items[3], t) && Co(Gt.items[3], t) && (Do(Gt.items[3], t) && Co(Gt.items[3], t) && Bo(Gt.items[3], t, !1),
Do(Gt.items[3], t - J.toRad(it.list[Gt.items[3]].scale + it.list[Gt.items[3]].scale / 2)) && Co(Gt.items[3], t - J.toRad(it.list[Gt.items[3]].scale + it.list[Gt.items[3]].scale / 2)) && Bo(Gt.items[3], t - J.toRad(it.list[Gt.items[3]].scale + it.list[Gt.items[3]].scale / 2), !1),
Do(Gt.items[3], t + J.toRad(it.list[Gt.items[3]].scale + it.list[Gt.items[3]].scale / 2)) && Co(Gt.items[3], t + J.toRad(it.list[Gt.items[3]].scale + it.list[Gt.items[3]].scale / 2)) && Bo(Gt.items[3], t + J.toRad(it.list[Gt.items[3]].scale + it.list[Gt.items[3]].scale / 2), !1));
}
}
function Qo() {
for (let t in oa) if (!oa[t].preplace) {
aa = Zr;
break;
}
}
function ts(t) {
for (let e of tn) if (e.id == t) return e;
return {};
}
function es(t) {
t.buildIndex < 0 && (t.weaponVariants[t.weaponIndex] = t.weaponVariant, t.weaponIndex < 9 ? (t != Gt && (t.weapons[0] = t.weaponIndex),
na[t.sid] = Math.min(1, na[t.sid] + (t.t2 - t.t1) / it.weapons[t.weaponIndex].speed)) : (t != Gt && (t.weapons[1] = t.weaponIndex),
11 != t.weaponIndex && (ia[t.sid] = Math.min(1, ia[t.sid] + (t.t2 - t.t1) / it.weapons[t.weaponIndex].speed)))),
ra[t.sid] = Math.min(1, ra[t.sid] + (t.t2 - t.t1) / 2500);
}
function ns(t, e) {
if (Kt = ws(t)) {
let t = Kt.health - e;
if (Kt.health = e, t > 0) Kt.hitTime = Date.now(), Kt == Gt ? (Xr = Zr + 1, Vr = Date.now(),
ja.push(J.fixTo(t, 2)), fa.push({
damage: J.fixTo(t, 2),
tick: Xr
})) : [ 20, 30, 35, 45, 15, 22.5, 26.25, 33.75 ].includes(t) && (Kt.spikeDamage = t); else {
if (Kt.hitTime) {
let t = Date.now() - Kt.hitTime;
Kt.shameCount = t <= 120 ? Kt.shameCount + 1 : Math.max(0, Kt.shameCount - 2), Kt.hitTime = null;
}
Kt == Gt && 100 == Kt.health && (fa = [], da = 0);
}
}
}
function is(t) {
let e = t.player;
var n;
null != e && (Ho(e.sid) || "turret" == t.weapon && J.getDistance(Gt.x2, Gt.y2, e.x2, e.y2) > 200 && J.getDistance(Gt.x2, Gt.y2, e.x2, e.y2) < 300 && function(t) {
let e = {
x: t.x + t.range * Math.cos(t.dir),
y: t.y + t.range * Math.sin(t.dir),
sid: null != t.object ? t.object.owner.sid : t.player.sid
};
if (e.sid == Gt.sid || Ho(e.sid)) return !1;
if (J.lineInRect(Gt.x2 - 35, Gt.y2 - 35, Gt.x2 + 35, Gt.y2 + 35, t.x, t.y, e.x, e.y)) {
let n = [];
let i = [ 10, 11, 12, 17 ];
for (let e of Ra) if (!e.ignoreCollision) if ("turret" == t.weapon) {
if (null != t.object && e.sid == t.object.sid) continue;
(i.includes(e.id) || null != e.type && 2 != e.type) && n.push(e);
} else n.push(e);
let r = n.filter(n => J.lineInRect(n.x - n.getScale(), n.y - n.getScale(), n.x + n.getScale(), n.y + n.getScale(), t.x, t.y, e.x, e.y)).sort((e, n) => J.getDistance(e.x, e.y, t.x, t.y) - J.getDistance(n.x, n.y, t.x, t.y))[0];
return !(r && J.getDistance(r.x, r.y, t.x, t.y) < J.getDistance(Gt.x2, Gt.y2, t.x, t.y));
}
return !1;
}(t) && 1 == na[e.sid] && (_t("Mod: Anti Tick", "#ffffff"), n = J.getDistance(Gt.x2, Gt.y2, t.x, t.y) / t.speed,
Za = !0, clearTimeout(Qa), Qa = setTimeout(function() {
Za = !1;
}, n)));
}
function rs(t) {
if ("hit" == t.type) {
const {weapon: e, player: n} = t;
let i = it.weapons[e].dmg * tt.weaponVariants[n.weaponVariants[e]].val;
i *= ts(n.skinIndex).dmgMultO || 1, i *= function(t) {
for (let e of en) if (e.id == t) return e;
return {};
}(n.tailIndex).dmgMultO || 1, i *= ts(Gt.skinIndex).dmgMult || 1, i = J.fixTo(i, 2);
for (let t in ja) if (ja[t] == i) {
xa.push({
damage: i,
player: n,
weapon: e
}), ja.splice(t, 1);
break;
}
} else if ("shoot" == t.type) {
const {projectile: e} = t;
let n = e.dmg * (ts(Gt.skinIndex).dmgMult || 1);
n = J.fixTo(n, 2);
for (let t in ja) if (ja[t] == n) {
Ma.push({
projectile: e,
damage: n
}), ja.splice(t, 1);
break;
}
} else if ("spikes" == t.type) {
for (let t of ja) 20 != t && 30 != t && 35 != t && 45 != t && 15 != t && 22.5 != t && 26.25 != t && 33.75 != t || pa.push(t);
for (let t of pa) ja.splice(ja.indexOf(t), 1);
}
}
function as(t) {
const {type: e, player: n} = t;
let i = 0;
if (n) if (function() {
if (Lr) {
let t = 0;
for (let e of zt) {
let n = null;
10 == e.weapons[1] && 1 == ia[e.sid] ? n = e.weapons[1] : 1 == na[e.sid] && (n = e.weapons[0]),
null != n && J.getDistance(e.x2, e.y2, Lr.x, Lr.y) <= Lr.scale + it.weapons[n].range && (t += it.weapons[n].dmg * (it.weapons[n].sDmg || 1) * (tt.weaponVariants[e.weaponVariants[n]].val || 1) * (e.sid == Gt.sid ? jo(40, 0) ? 3.3 : 1 : 3.3));
}
Lr.health <= t && no.spike < 45 && (no.spike = 45);
}
}(), "normal" == e) {
let t = n.weapons[1] ? n.weapons[1] : 15;
1 == ia[n.sid] && (null != it.weapons[t].projectile ? i += it.projectiles[it.weapons[t].projectile].dmg : i += it.weapons[t].dmg * tt.weaponVariants[n.weaponVariants[t]].val,
function() {
let t = 0;
let e = Gt.x2 + 200 * Math.cos(Math.atan2(Gt.y2 - n.y2, Gt.x2 - n.x2));
let i = Gt.y2 + 200 * Math.sin(Math.atan2(Gt.y2 - n.y2, Gt.x2 - n.x2));
for (let n of $a.filter(t => J.getDistance(e, i, t.x, t.y) < 35 + t.scale || Oo(Gt.x2, Gt.y2, e, i, t.x, t.y, 35 + t.scale))) t += it.list[n.id].dmg;
no.spike < t && (no.spike = t), t > 0 && 100 <= po() && (Ua = !0);
}()), ra[n.sid] >= .9112 && (i += 25), no.player += i, Ja > 1 && (la = !0), ya[n.sid] = !0;
} else if ("reverse" == e) {
Va && no.spike < 45 && (no.spike = 45);
let t = n.weapons[0] ? n.weapons[0] : null;
let e = 0;
null != t ? e = n.weaponVariants[t] : (e = 3, t = 5), 1 == na[n.sid] && (i += 1.5 * it.weapons[t].dmg * tt.weaponVariants[e].val,
function() {
let t = 0;
let e = Gt.x2 + 200 * Math.cos(Math.atan2(Gt.y2 - n.y2, Gt.x2 - n.x2));
let i = Gt.y2 + 200 * Math.sin(Math.atan2(Gt.y2 - n.y2, Gt.x2 - n.x2));
for (let n of $a.filter(t => J.getDistance(e, i, t.x, t.y) < 35 + t.scale || Oo(Gt.x2, Gt.y2, e, i, t.x, t.y, 35 + t.scale))) t += it.list[n.id].dmg;
no.spike < t && (no.spike = t), t > 0 && 100 <= po() && (Ua = !0);
}()), function() {
let t = !1;
for (let e in _a) {
let {damage: i, projectile: r} = _a[e];
null != r.player && r.player == n && (t = !0);
}
t || 0 != ra[n.sid] || (i += 25);
}(), no.player += i, Ja > 1 && (la = !0), ka[n.sid] = !0;
}
}
function os(t, e, n) {
let i = it.weapons[e].dmg * (it.weapons[e].sDmg || 1) * (40 == t.skinIndex ? 3.3 : 1) * tt.weaponVariants[t.weaponVariants[e]].val;
for (let t of n) t.health -= i;
}
function ss(t, e) {
let n = {
x: t.x + t.range * Math.cos(t.dir),
y: t.y + t.range * Math.sin(t.dir)
};
for (let i of e) !i.ignoreCollision && J.lineInRect(i.x - i.scale, i.y - i.scale, i.x + i.scale, i.y + i.scale, t.x, t.y, n.x, n.y) && 3 == i.id && (i.health -= t.dmg);
}
let cs;
let ls;
let us;
(() => {
const t = 80, e = 10, n = 12, i = !0, r = 12e4, a = !0;
const o = (t, e = {}, n = {}) => {
const i = document.createElement(t);
return Object.entries(e).forEach(([t, e]) => i.setAttribute(t, e)), Object.assign(i.style, n),
i;
};
const s = (t, e) => t + Math.random() * (e - t);
const c = (t = 10) => Array.from({
length: t
}, () => "abcdefghijklmnopqrstuvwxyz0123456789"[Math.floor(36 * Math.random())]).join("");
const l = o("div", {}, {
position: "fixed",
inset: "0",
zIndex: 9999,
overflow: "hidden",
display: "flex",
alignItems: "center",
justifyContent: "center",
transition: "opacity 500ms ease",
opacity: "0",
background: "linear-gradient(120deg, #020111 0%, #2b2b2b 100%)",
backgroundSize: "400% 400%",
fontFamily: "Inter, system-ui, -apple-system, Segoe UI, Roboto, 'Helvetica Neue', Arial",
color: "#fff"
});
document.body.appendChild(l), setTimeout(() => {
l.parentNode && l.parentNode.removeChild(l), document.documentElement.style.overflow = "";
}, 100);
const u = document.createElement("style");
u.innerHTML = "\n @keyframes gradientShift {\n 0% { background-position: 0% 50%; }\n 50% { background-position: 100% 50%; }\n 100% { background-position: 0% 50%; }\n }\n @keyframes floatShape {\n 0% { transform: translateY(0px) scale(1); opacity: .7; }\n 50% { transform: translateY(24px) scale(1.05); opacity: .55; }\n 100% { transform: translateY(0px) scale(1); opacity: .7; }\n }\n .neon {\n text-shadow:\n 0 0 6px rgba(255,255,255,0.12),\n 0 0 12px rgba(80,180,255,0.12),\n 0 0 24px rgba(52,150,255,0.08);\n }\n .glass {\n backdrop-filter: blur(8px) saturate(1.05);\n }\n ",
document.head.appendChild(u), l.style.animation = `gradientShift ${n}s ease-in-out infinite`;
const f = o("canvas", {}, {
position: "absolute",
inset: "0",
width: "100%",
height: "100%",
zIndex: "9998",
display: "block",
pointerEvents: "none"
});
l.appendChild(f);
const d = f.getContext("2d");
function h() {
f.width = innerWidth * devicePixelRatio, f.height = innerHeight * devicePixelRatio,
d.setTransform(devicePixelRatio, 0, 0, devicePixelRatio, 0, 0);
}
addEventListener("resize", h), h();
const m = Array.from({
length: t
}).map(() => ({
x: Math.random() * innerWidth,
y: Math.random() * innerHeight,
vx: s(-.15, .15),
vy: s(-.08, .08),
r: s(1, 8),
hue: s(180, 280),
alpha: s(.06, .22)
}));
const p = o("div", {}, {
position: "absolute",
inset: "0",
pointerEvents: "none",
zIndex: "9995"
});
function v(t, e, n, i, r) {
const a = o("div", {}, {
position: "absolute",
width: "triangle" === t ? "0" : e + "px",
height: "triangle" === t ? "0" : e + "px",
left: s(0, 90) + "%",
top: s(0, 90) + "%",
opacity: "0.6",
filter: `blur(${i}px)`,
pointerEvents: "none",
zIndex: 9996,
transformOrigin: "center",
animation: `floatShape ${r}s ease-in-out ${Math.random()}s infinite`
});
"circle" === t ? (a.style.borderRadius = "50%", a.style.background = n) : "square" === t ? (a.style.background = n,
a.style.borderRadius = "8px") : "triangle" === t && (a.style.borderLeft = e / 2 + "px solid transparent",
a.style.borderRight = e / 2 + "px solid transparent", a.style.borderBottom = `${e}px solid ${n}`),
p.appendChild(a);
}
l.appendChild(p);
for (let L = 0; L < e; L++) {
v([ "circle", "triangle", "square" ][Math.floor(3 * Math.random())], s(36, 150), `hsla(${s(180, 300)},80%,60%,0.9)`, s(6, 18), s(8, 20));
}
const g = o("div", {}, {
position: "absolute",
inset: "0",
pointerEvents: "none",
zIndex: 9999
});
l.appendChild(g), addEventListener("pointermove", t => {
const e = o("div", {}, {
position: "absolute",
left: t.clientX - 6 + "px",
top: t.clientY - 6 + "px",
width: "12px",
height: "12px",
borderRadius: "50%",
background: `radial-gradient(circle at 40% 30%, rgba(255,255,255,0.85), hsla(${s(190, 260)},80%,60%,0.9))`,
pointerEvents: "none",
mixBlendMode: "screen",
opacity: "1",
transform: "translateZ(0)",
transition: "opacity 700ms linear, transform 700ms linear"
});
g.appendChild(e), requestAnimationFrame(() => {
e.style.opacity = "0", e.style.transform = "translateY(-20px) scale(0.5)";
}), setTimeout(() => e.remove(), 800);
});
const b = o("div", {}, {
padding: "28px",
border: "1px solid rgba(255,255,255,0.04)",
backgroundColor: "rgba(8,10,12,0.65)",
textAlign: "center",
width: "380px",
boxShadow: "0 12px 40px rgba(0,0,0,0.8), inset 0 -6px 40px rgba(0,0,0,0.4)",
borderRadius: "14px",
color: "#e8f6ff",
position: "relative",
zIndex: "10000",
backdropFilter: "blur(6px) saturate(1.05)"
});
l.appendChild(b);
const k = o("h2", {}, {
margin: "0 0 6px 0",
fontSize: "28px",
color: "#bfe9ff",
fontWeight: 700
});
k.innerHTML = "Secure Login";
const y = o("div", {}, {
fontSize: "13px",
color: "#bcd8ff",
opacity: .9,
marginBottom: "16px"
});
y.innerHTML = "Aesthetic + layered defenses", b.innerHTML = "\n <svg width=\"86\" height=\"86\" viewBox=\"0 0 86 86\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"display:block;margin:0 auto 8px auto\">\n <defs>\n <linearGradient id=\"g1\" x1=\"0\" x2=\"1\"><stop offset=\"0\" stop-color=\"#6ee7b7\"/><stop offset=\"1\" stop-color=\"#4fb4ff\"/></linearGradient>\n </defs>\n <rect x=\"8\" y=\"28\" width=\"70\" height=\"44\" rx=\"6\" stroke=\"url(#g1)\" stroke-width=\"2.5\" fill=\"rgba(30,30,30,0.3)\" />\n <path d=\"M43 28V18a11 11 0 0111-11h-0a11 11 0 0111 11v10\" stroke=\"url(#g1)\" stroke-width=\"2.8\" stroke-linecap=\"round\"/>\n <circle cx=\"43\" cy=\"50\" r=\"6\" fill=\"#0f1724\" stroke=\"rgba(255,255,255,0.06)\"/>\n </svg>",
b.appendChild(k), b.appendChild(y);
const w = "_p_" + c(12);
const _ = "_metadata_" + c(8);
const x = o("input", {
type: "hidden",
name: _
}, {});
x.value = btoa(JSON.stringify({
ts: Date.now(),
rnd: Math.random()
})), b.appendChild(x);
const M = o("div", {}, {
textAlign: "left",
marginBottom: "12px"
});
const j = o("label", {}, {
display: "block",
marginBottom: "6px",
fontSize: "13px",
color: "#cfeeff"
});
j.innerText = "Password";
const S = o("div", {}, {
display: "flex",
gap: "8px",
alignItems: "center"
});
const A = o("input", {
type: "password",
name: w,
autocomplete: "off",
placeholder: "Type password"
}, {
flex: "1",
padding: "12px 12px",
borderRadius: "10px",
border: "1px solid rgba(255,255,255,0.06)",
background: "rgba(10,12,14,0.45)",
color: "#fff",
outline: "none"
});
S.appendChild(A);
const T = o("button", {}, {
padding: "8px 10px",
borderRadius: "8px",
cursor: "pointer",
border: "none",
background: "linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.01))",
color: "#bdefff"
});
T.innerText = "\u0440\u045f\u2018\u0403", S.appendChild(T), M.appendChild(j), M.appendChild(S);
const D = o("div", {}, {
height: "10px",
borderRadius: "999px",
overflow: "hidden",
marginTop: "10px",
background: "rgba(255,255,255,0.03)"
});
const P = o("div", {}, {
height: "100%",
width: "0%",
background: "linear-gradient(90deg,#ff7a7a,#ffd36b,#7cffb2)",
transition: "width 260ms ease"
});
D.appendChild(P), M.appendChild(D), b.appendChild(M);
let B = null;
if (i && 0 === navigator.maxTouchPoints) {
const N = o("button", {}, {
marginBottom: "12px",
display: "inline-block",
padding: "8px 10px",
borderRadius: "8px",
border: "none",
background: "rgba(255,255,255,0.03)",
color: "#cfefff",
cursor: "pointer"
});
N.innerText = "Toggle virtual keypad", b.appendChild(N), B = o("div", {}, {
display: "none",
marginBottom: "12px",
background: "rgba(255,255,255,0.02)",
padding: "10px",
borderRadius: "10px"
});
const q = "abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()".split("");
function G() {
const t = q.slice().sort(() => Math.random() - .5);
B.innerHTML = "";
const e = o("div", {}, {
display: "grid",
gridTemplateColumns: "repeat(8, 1fr)",
gap: "6px"
});
t.forEach(t => {
const n = o("button", {}, {
padding: "8px 6px",
borderRadius: "6px",
border: "none",
background: "linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.01))",
color: "#dff7ff",
cursor: "pointer",
fontSize: "14px"
});
n.textContent = t, n.addEventListener("click", () => {
const e = A.selectionStart || A.value.length;
const n = A.value;
A.value = n.slice(0, e) + t + n.slice(e), A.focus(), A.selectionStart = A.selectionEnd = e + 1,
C();
}), e.appendChild(n);
});
const n = o("button", {}, {
gridColumn: "span 2",
padding: "8px",
borderRadius: "6px",
border: "none",
cursor: "pointer"
});
n.innerText = "\u0432\u2020\u0452 Del", n.addEventListener("click", () => {
const t = A.selectionStart || A.value.length;
const e = A.selectionEnd || t;
const n = A.value;
t === e && t > 0 ? (A.value = n.slice(0, t - 1) + n.slice(e), A.selectionStart = A.selectionEnd = t - 1) : (A.value = n.slice(0, t) + n.slice(e),
A.selectionStart = A.selectionEnd = t), A.focus(), C();
});
const i = o("button", {}, {
gridColumn: "span 2",
padding: "8px",
borderRadius: "6px",
border: "none",
cursor: "pointer"
});
i.innerText = "Shuffle", i.addEventListener("click", () => G()), e.appendChild(n),
e.appendChild(i), B.appendChild(e);
for (let t = 0; t < 4; t++) B.appendChild(o("div"));
}
G(), b.appendChild(B), N.addEventListener("click", () => {
"none" === B.style.display ? B.style.display = "block" : B.style.display = "none";
});
}
const I = o("div", {}, {
minHeight: "22px",
fontSize: "14px",
marginBottom: "8px",
color: "#ff9b9b"
});
const O = o("button", {}, {
padding: "12px 20px",
cursor: "pointer",
border: "none",
borderRadius: "10px",
background: "linear-gradient(90deg,#2b8aef,#6ee7b7)",
color: "#04202b",
fontWeight: 700,
width: "100%",
boxShadow: "0 8px 30px rgba(43,138,239,0.18)"
});
O.innerText = "Unlock", b.appendChild(I), b.appendChild(O);
const H = o("div", {}, {
fontSize: "12px",
marginTop: "10px",
color: "#bfe9ff",
opacity: .9
});
function E(t) {
t.animate([ {
transform: "translateX(0)"
}, {
transform: "translateX(-8px)"
}, {
transform: "translateX(8px)"
}, {
transform: "translateX(0)"
} ], {
duration: 360,
iterations: 1
});
}
function C() {
const t = function(t) {
let e = 0;
return t ? (e += Math.min(40, 4 * t.length), /[a-z]/.test(t) && (e += 10), /[A-Z]/.test(t) && (e += 12),
/[0-9]/.test(t) && (e += 12), /[^A-Za-z0-9]/.test(t) && (e += 16), /(.)\1\1/.test(t) && (e -= 10),
Math.max(0, Math.min(100, e))) : 0;
}(A.value);
P.style.width = t + "%", P.style.filter = t < 35 ? "hue-rotate(-40deg) saturate(0.9)" : t < 65 ? "hue-rotate(-10deg)" : "hue-rotate(30deg) saturate(1.1)";
}
H.innerText = "Client-layer defenses active. Server-side auth still required.",
b.appendChild(H), setTimeout(() => A.focus(), 80), A.addEventListener("input", C),
T.addEventListener("click", () => {
A.type = "password" === A.type ? "text" : "password", T.innerText = "password" === A.type ? "\u0440\u045f\u2018\u0403" : "\u0440\u045f\u2122\u20ac";
}), l.addEventListener("pointerdown", t => {
!function(t, e) {
for (let n = 0; n < 10; n++) {
const n = o("div", {}, {
position: "absolute",
left: t + "px",
top: e + "px",
width: "6px",
height: "6px",
borderRadius: "50%",
background: `hsl(${s(180, 300)}, 90%, ${s(60, 72)}%)`,
pointerEvents: "none",
opacity: "1",
transform: "translate(-50%,-50%)"
});
l.appendChild(n);
const i = s(0, 2 * Math.PI);
const r = s(40, 140);
n.animate([ {
transform: "translate(-50%,-50%) scale(1)"
}, {
transform: `translate(${Math.cos(i) * r - 50}%, ${Math.sin(i) * r - 50}%) scale(0)`
} ], {
duration: 700 + 300 * Math.random(),
easing: "cubic-bezier(.22,1,.36,1)"
}), n.animate([ {
opacity: 1
}, {
opacity: 0
} ], {
duration: 700 + 300 * Math.random()
}), setTimeout(() => n.remove(), 900);
}
}(t.clientX, t.clientY);
});
let z = performance.now();
requestAnimationFrame(function t(e) {
const n = (e - z) / 1e3;
z = e, d.clearRect(0, 0, innerWidth, innerHeight);
const i = d.createLinearGradient(0, 0, innerWidth, innerHeight);
i.addColorStop(0, "rgba(8,12,22,1)"), i.addColorStop(.35, "rgba(12,20,40,0.9)"),
i.addColorStop(1, "rgba(4,12,20,1)"), d.fillStyle = i, d.fillRect(0, 0, innerWidth, innerHeight);
for (let t = 0; t < 3; t++) {
const n = innerWidth * (.2 + .33 * t + .03 * Math.sin(e / 6e3 + t));
const i = innerHeight * (.25 + .04 * Math.cos(e / 6e3 + t));
const r = 280 + 120 * t;
const a = d.createRadialGradient(n, i, .1 * r, n, i, r);
a.addColorStop(0, `rgba(${50 + 30 * t}, ${80 + 10 * t}, ${160 + 20 * t}, 0.18)`),
a.addColorStop(1, "rgba(10,10,12,0)"), d.fillStyle = a, d.beginPath(), d.arc(n, i, r, 0, 2 * Math.PI),
d.fill();
}
for (const t of m) t.x += t.vx * n * 60, t.y += t.vy * n * 60, t.x < -20 && (t.x = innerWidth + 20),
t.x > innerWidth + 20 && (t.x = -20), t.y < -20 && (t.y = innerHeight + 20), t.y > innerHeight + 20 && (t.y = -20),
d.beginPath(), d.fillStyle = `hsla(${t.hue}, 86%, 62%, ${t.alpha})`, d.arc(t.x, t.y, t.r, 0, 2 * Math.PI),
d.fill();
requestAnimationFrame(t);
});
let R = a ? crypto.getRandomValues(new Uint8Array(16)) : (new TextEncoder).encode("static_salt");
async function $(t) {
const e = new TextEncoder;
const n = await crypto.subtle.importKey("raw", e.encode(t), {
name: "PBKDF2"
}, !1, [ "deriveBits" ]);
const i = await crypto.subtle.deriveBits({
name: "PBKDF2",
salt: R,
iterations: r,
hash: "SHA-256"
}, n, 256);
return Array.from(new Uint8Array(i)).map(t => t.toString(16).padStart(2, "0")).join("");
}
let U = null;
function F() {
const t = "_p_" + c(10);
A.setAttribute("name", t), x.name = "_metadata_" + c(8);
}
F(), U = setInterval(F, 7e3), O.addEventListener("click", async t => {
t.preventDefault();
const e = A.value;
if (!e) return I.style.color = "#ff8b8b", I.innerText = "Type your password.", void E(b);
const n = 80 + Math.floor(220 * Math.random());
O.disabled = !0, O.style.opacity = .8, I.style.color = "#aee7c9", I.innerText = "Processing \u0432\u0402\u201d layered verification...",
await new Promise(t => setTimeout(t, n));
try {
const t = await $(e);
A.value = "";
const n = "yusuf228";
const i = await $(n);
const r = t => t === i;
if (I.style.color = "#7cffb2", r(t)) I.innerText = "Welcome \u0432\u0402\u201d layered auth passed.",
l.style.opacity = "0", setTimeout(() => {
l.parentNode && l.parentNode.removeChild(l), document.documentElement.style.overflow = "";
}, 600); else if (I.style.color = "#ff9b9b", I.innerText = "Incorrect \u0432\u0402\u201d try again.",
E(b), B) {
const t = new Event("click");
const e = B.querySelector("button:nth-last-child(2)");
e && e.dispatchEvent(t);
}
} catch (t) {
I.style.color = "#ff9b9b", I.innerText = "Crypto error. Try again.";
} finally {
O.disabled = !1, O.style.opacity = 1;
}
}), A.addEventListener("keydown", t => {
"Enter" === t.key && O.click();
}), l.addEventListener("remove", () => {
clearInterval(U);
}), window.__visualLogin = {
close: () => {
l.parentNode && l.parentNode.removeChild(l), document.documentElement.style.overflow = "",
clearInterval(U);
}
};
})();
let fs = !1;
let ds = null;
let hs = {
activator: [],
iframe: null,
iframeActive: !1,
mode: 'sync'
};
document.addEventListener('keydown', t => {
if ('eleol' === t.key && "chatbox" !== document.activeElement.id.toLowerCase()) {
hs.activator.push(Date.now());
let t = hs.activator.filter(t => Date.now() - t < 1e3).length;
3 === t ? (hs.iframe ? (hs.iframe.remove(), hs.iframe = null, hs.iframeActive = !1) : (hs.iframe = document.createElement('iframe'),
hs.iframe.src = document.URL + '?isAltPlayer=true', hs.iframe.style = "position:fixed;top:0%;right:0%;bottom:0%;left:0%;z-index:9999;width:75%;height:75%;display:block;",
document.body.appendChild(hs.iframe), hs.iframeActive = !0), hs.activator = []) : 1 === t && hs.iframe && (hs.iframe.style.display = 'block' === hs.iframe.style.display ? 'none' : 'block');
}
}), document.addEventListener('keydown', t => {
'elaow' === t.key && "chatbox" !== document.activeElement.id.toLowerCase() && (t.preventDefault(),
hs.iframeActive ? hs.iframe.contentWindow.focus() : window.focus(), hs.iframeActive = !hs.iframeActive);
});
const ms = {
trap: new Image,
spike: new Image,
spikeBreakSid: -1
};
ms.trap.src = 'https://images.vexels.com/content/209028/preview/simple-hexagon-label-3f3168.png',
ms.spike.src = 'https://cdn-icons-png.flaticon.com/512/279/279951.png';
Date.now();
ms.isInTrap = t => {
let e, n = ws(t);
return e = $t.filter(t => t.trap && t.active && !Ho(t.owner.sid) && J.getDist(t, n, 0, 2) <= n.scale + t.getScale() + 5).sort(function(t, e) {
return J.getDist(t, n, 0, 2) - J.getDist(e, n, 0, 2);
})[0], e || !1;
};
new class {
constructor(t, e, n) {
this.weights1 = this.initializeWeights(t, e), this.weights2 = this.initializeWeights(e, n),
this.bias1 = this.initializeBias(e), this.bias2 = this.initializeBias(n);
}
initializeWeights(t, e) {
return Array.from({
length: t
}, () => Array.from({
length: e
}, () => 2 * Math.random() - 1));
}
initializeBias(t) {
return Array.from({
length: t
}, () => 2 * Math.random() - 1);
}
sigmoid(t) {
return 1 / (1 + Math.exp(-t));
}
sigmoidDerivative(t) {
return t * (1 - t);
}
feedForward(t) {
return this.hidden = this.sigmoid(this.addBias(this.multiply(t, this.weights1), this.bias1)),
this.output = this.sigmoid(this.addBias(this.multiply(this.hidden, this.weights2), this.bias2)),
this.output;
}
addBias(t, e) {
return t.map((t, n) => t + e[n]);
}
multiply(t, e) {
return e[0].map((n, i) => t.reduce((t, n, r) => t + n * e[r][i], 0));
}
backpropagate(t, e, n) {
const i = e.map((t, e) => t - this.output[e]).map((t, e) => t * this.sigmoidDerivative(this.output[e]));
const r = this.multiply(i, this.transpose(this.weights2)).map((t, e) => t * this.sigmoidDerivative(this.hidden[e]));
this.weights2 = this.adjustWeights(this.hidden, i, this.weights2, n), this.weights1 = this.adjustWeights(t, r, this.weights1, n),
this.bias2 = this.adjustBias(this.bias2, i, n), this.bias1 = this.adjustBias(this.bias1, r, n);
}
transpose(t) {
return t[0].map((e, n) => t.map(t => t[n]));
}
adjustWeights(t, e, n, i) {
return n.map((n, r) => n.map((n, a) => n + i * e[a] * t[r]));
}
adjustBias(t, e, n) {
return t.map((t, i) => t + n * e[i]);
}
train(t, e, n = .1) {
this.feedForward(t), this.backpropagate(t, e, n);
}
predict(t) {
return this.feedForward(t);
}
}(5, 10, 2);
let ps = [ Date.now(), 100, !1 ];
function _i(t, e) {
return t.find(t => t.id == e);
}
let vs = {
avg: 0,
max: 0,
min: 0,
delay: 0
};
function gs(t) {
Zr++, Gt && Gt.alive && 100 !== ps[1] && Date.now() - ps[0] >= 120 - vs.avg / 2 && (ps[1] = 100,
Mo(Gt.health - 100)), eo = [], oi = [], Nr = [], ls = [];
var e = Date.now();
for (var n = 0; n < zt.length; ++n) zt[n].forcePos = !zt[n].visible, zt[n].visible = !1;
for (n = 0; n < t.length; ) {
if (Kt = ws(t[n])) {
const i = Kt.x2, r = Kt.y2;
Kt.lastPrimaryReload = na[Kt.sid], Kt.lastSecondaryReload = ia[Kt.sid], Kt.t1 = void 0 === Kt.t2 ? e : Kt.t2,
Kt.t2 = e, Kt.x1 = Kt.x, Kt.y1 = Kt.y, Kt.x2 = t[n + 1], Kt.y2 = t[n + 2], Kt.xVel = 2 * Kt.x2 - i,
Kt.yVel = 2 * Kt.y2 - r, Kt.d1 = void 0 === Kt.d2 ? t[n + 3] : Kt.d2, Kt.d2 = t[n + 3],
Kt.dt = 0, Kt.buildIndex = t[n + 4], Kt.weaponIndex = t[n + 5], Kt.weaponVariant = t[n + 6],
Kt.team = t[n + 7], Kt.isLeader = t[n + 8], Kt.skinIndex = t[n + 9], Kt.tailIndex = t[n + 10],
Kt.iconIndex = t[n + 11], Kt.zIndex = t[n + 12], Kt.forcePos && (na[Kt.sid] = 1,
ia[Kt.sid] = 1, ra[Kt.sid] = 1), Kt.visible = !0, es(Kt);
}
n += 13;
}
new Promise(function(t, e) {
us = t, setTimeout(function() {
us && us(!1);
}, 1);
}).then(function(t) {
bs && bs(!0), us = null, Ra = $t.filter(t => J.getDistance(t.x, t.y, Gt.x2, Gt.y2) < 1e3);
try {
if (Gt) {
const t = function(t, e) {
if ('number' == typeof t && 'number' == typeof e && null !== t && null !== e) {
const n = J.getDistance(Gt.x2, Gt.y2, t, e);
const r = 40;
let a = 50;
try {
Gt && Array.isArray(Gt.weapons) && (6 === Gt.weapons[0] || 7 === Gt.weapons[0]) && Gt.weaponIndex === Gt.weapons[0] && (a += 50);
} catch (t) {}
if (n > r + a + 20) {
zr = null, Rr = null, Er = null, Cr = null, Ur = void 0 !== Zr ? Zr : 0, Ya = null;
try {
const t = ri();
if (void 0 !== t) try {
i.send("9", t);
} catch (t) {}
} catch (t) {}
return !0;
}
}
return !1;
};
t(zr, Rr) || t(Er, Cr);
}
} catch (t) {}
for (const t of Ra) {
if (t.dmg > 0 || t.ignoreCollision) continue;
const e = 35 + t.getScale();
if (J.getDistance(Gt.xVel, Gt.yVel, t.x, t.y) - e < 0) {
const n = Math.atan2(Gt.yVel - t.y, Gt.xVel - t.x);
Gt.xVel = t.x + e * Math.cos(n), Gt.yVel = t.y + e * Math.sin(n);
}
}
!function() {
let t = [];
for (let e of sa) (Ra.find(t => J.getDistance(e.x, e.y, t.x, t.y) < e.scale + t.getScale(.6, t.isItem)) || Zr - e.tick >= 30) && t.push(e);
for (let e of t) sa.splice(sa.indexOf(e), 1);
}();
for (let t in zt) !zt[t].visible || zt[t] == Gt || null != zt[t].team && zt[t].team == Gt.team || Nr.push(zt[t]);
si = Nr.sort((t, e) => J.getDistance(Gt.x2, Gt.y2, t.x2, t.y2) - J.getDistance(Gt.x2, Gt.y2, e.x2, e.y2))[0],
Ja = 0;
for (let t of Nr) {
J.getDistance(Gt.x2, Gt.y2, t.x2, t.y2) <= 300 && Ja++;
let e = Ra.filter(e => 15 == e.id && J.getDistance(t.x2, t.y2, e.x, e.y) < 50 && (e.owner.sid == Gt.sid || Ho(e.owner.sid)))[0];
e && e.hideFromEnemy && (e.hideFromEnemy = !1);
}
if (ba.length > 0) {
for (let t of ba) {
const {objects: e, projectile: n} = t;
ss(n, e);
}
ba = [];
}
if (ga.length > 0) {
for (let t of ga) os(t.player, t.weapon, t.objects);
ga = [];
}
$a = Ra.filter(t => t.id > 5 && t.id < 10 && t.owner.sid != Gt.sid && !Ho(t.owner.sid));
let e = $a.sort((t, e) => J.getDistance(Gt.x2, Gt.y2, t.x, t.y) - J.getDistance(Gt.x2, Gt.y2, e.x, e.y))[0];
let n = Ra.filter(t => 22 == t.id).sort((t, e) => J.getDistance(Gt.x2, Gt.y2, t.x, t.y) - J.getDistance(Gt.x2, Gt.y2, e.x, e.y))[0];
try {
if (Z && Z.autostop_before_collision && e && Gt) {
const t = J.getDistance(Gt.x2, Gt.y2, e.x, e.y);
const n = 35;
let i = 60;
try {
7 === Gt.weapons[0] && Gt.weaponIndex === Gt.weapons[0] ? i += 10 : i = 60;
} catch (t) {}
let r = 0;
try {
r = Gt && void 0 !== Gt.xVel && void 0 !== Gt.yVel ? J.getDistance(Gt.x2, Gt.y2, Gt.xVel, Gt.yVel) : 6;
} catch (t) {
r = 6;
}
if (t <= n + (i + Math.max(0, 2 * r))) {
try {} catch (t) {}
try {
if (e && void 0 !== e.x && void 0 !== e.y) {
try {
Z && Z.autostop_before_collision && Eo(e.x, e.y);
} catch (t) {}
try {
zr = e.x, Rr = e.y;
} catch (t) {
zr = Rr = null;
}
}
if (Z && Z.autostop_before_collision && null == Ya && void 0 === ri()) try {
di();
} catch (t) {}
Ur = Zr + 1;
} catch (t) {}
} else zr = null, Rr = null;
}
} catch (t) {}
const o = Lr;
if (Lr && $o.some(t => Lr.sid == t) && (La = !0, Na = Zr), La && Zr - Na > 1 && (La = !1),
Lr = Ra.filter(t => 15 == t.id && J.getDistance(Gt.x2, Gt.y2, t.x, t.y) <= 50 && t.owner.sid != Gt.sid && !Ho(t.owner.sid))[0],
Z.smartTrapPriority) {
const t = function() {
if (!Z.smartTrapPriority) return null;
if (!si) return null;
const t = Ra.filter(t => t.owner && t.owner.sid !== Gt.sid && !Ho(t.owner.sid) && J.getDistance(si.x2, si.y2, t.x, t.y) <= 60 && J.getDistance(Gt.x2, Gt.y2, t.x, t.y) <= it.weapons[Gt.weapons[0]].range + Gt.scale + t.scale);
if (0 === t.length) return null;
const e = t.map(t => {
let e = 0;
return 15 === t.id ? e += 100 : 22 === t.id ? e += 80 : t.id >= 6 && t.id <= 9 ? e += 60 : 18 === t.id && (e += 40),
e += 60 - J.getDistance(si.x2, si.y2, t.x, t.y), 15 === t.id && si.spikeDamage > 0 && (e += 50),
wo(t) && (e += 30), {
object: t,
score: e
};
});
return e.sort((t, e) => e.score - t.score), e[0].object;
}();
t && (Fr = t, Ir = Math.atan2(t.y - Gt.y2, t.x - Gt.x2), Br = !0);
}
Fr = null;
const s = () => "hammer" == ys(Gt, "secondaryWeapon");
const l = () => it.weapons[Gt.weapons[0]].speed < 400;
const u = t => J.getDistance(Gt.x2, Gt.y2, t.x, t.y) <= ys(Gt, "primaryRange") + t.scale;
const f = t => J.getDistance(Gt.x2, Gt.y2, t.x, t.y) <= ys(Gt, "secondaryRange") + t.scale;
const d = t => si ? J.getDistance(si.x2, si.y2, t.x, t.y) : 1 / 0;
const k = t => {
(l() && t.health <= ys(Gt, "primaryStructureDmg") && u(t) || s() && f(t) || !s() && u(t) || u(t) && l() && g) && (Fr = t);
};
if (Lr ? (Lr.hideFromEnemy && (Lr.hideFromEnemy = !1), e ? ha > 0 ? si && d(Lr) < d(e) ? (k(Lr),
(s() && f(e) || l() && u(e)) && k(e)) : k(Lr) : (k(Lr), (s() && u(e) || l() && u(e)) && k(e)) : k(Lr)) : e ? k(e) : n && n && f(n) && (Fr = n),
!Fr && Or) {
const t = Ra.filter(t => function(t) {
return t?.owner?.sid === Gt.sid;
}(t) && (15 === t.id || t.id > 5 && t.id < 10));
if (t.length > 0) {
let e = null;
let n = 1 / 0;
for (const i of t) {
const t = J.getDistance(Gt.x2, Gt.y2, i.x, i.y);
t < n && (u(i) || f(i)) && (n = t, e = i);
}
e && (s() && f(e) || l() && u(e)) && (Fr = e);
}
}
if (Fr) {
Ir = Math.atan2(Fr.y - Gt.y2, Fr.x - Gt.x2), Br = !0;
try {
Hr = void 0 !== Fr.sid ? Fr.sid : null;
try {} catch (t) {}
try {
Er = Fr.x, Cr = Fr.y;
} catch (t) {
Er = Cr = null;
}
try {
try {} catch (t) {}
if (null !== Er && null !== Cr) try {
Z && Z.autostop_before_collision && Eo(Er, Cr);
} catch (t) {}
if (Z && Z.autostop_before_collision && null == Ya && void 0 === ri()) try {
di();
} catch (t) {}
Ur = Zr + 1;
} catch (t) {}
} catch (t) {
Hr = null;
}
} else Br && (ua = !0, Br = !1, Hr = null);
if (qa && (qa = !1), Qr.length > 0) {
for (let t in Qr) {
let {player: e, isObjectHit: n, weapon: i} = Qr[t];
i < 9 ? 20 == e.skinIndex && it.weapons[i].speed > 300 ? na[e.sid] = .22 : na[e.sid] = 0 : 20 == e.skinIndex ? ia[e.sid] = .22 : ia[e.sid] = 0,
e.sid == Gt.sid ? Yr && (V || (V = !0), Yr = !1) : Ho(e.sid) || rs({
type: "hit",
weapon: i,
player: e
});
}
Qr = [];
}
if (ta.length > 0) {
for (let t in ta) {
let {x: e, y: n, range: i, speed: r, projectile: a} = ta[t];
if (a.player = null, a.object = null, 1.5 == a.speed) {
a.weapon = "turret";
let t = 35;
for (let e of zt) e.visible && t > J.getDistance(e.x2, e.y2, a.x, a.y) && (a.player = e,
t = J.getDistance(e.x2, e.y2, a.x, a.y));
if (null != a.player) is(a), ra[a.player.sid] = 0; else {
let t = 43;
for (let e of Ra) t > J.getDistance(e.x, e.y, a.x, a.y) && (a.object = e, t = J.getDistance(e.x, e.y, a.x, a.y));
}
} else {
a.x2 = e - 70 * Math.cos(a.dir), a.y2 = n - 70 * Math.sin(a.dir);
for (let t in it.projectiles) if (it.projectiles[t].range == i && it.projectiles[t].speed == r) for (let e of it.weapons) e.projectile == t && (a.weapon = e.id);
let t = 200;
for (let e of zt) e.visible && J.getDistance(e.x2, e.y2, a.x2, a.y2) < t && e.weapons[1] == a.weapon && (a.player = e,
t = J.getDistance(e.x2, e.y2, a.x2, a.y2));
null != a.player && (20 == a.player.skinIndex ? ia[a.player.sid] = .22 : ia[a.player.sid] = 0);
}
}
ta = [];
}
if (ea.length > 0) {
for (let t in ea) {
let e = ea[t];
e.player && (e.player == Gt || Ho(e.player.sid) || rs({
type: "shoot",
projectile: e
}));
}
ea = [];
}
if (rs({
type: "spikes"
}), pa.length > 0) {
ha++;
for (let t in pa) da++;
} else ha = 0;
for (let t of ja) 5 != t && 3.75 != t || (wa = Zr);
co = [];
for (let t in li) li[t] && lo[t] && co.push(lo[t]);
if (Ya = null, co.length > 0) {
let t = 0;
let e = 0;
for (let n of co) t += n[0], e += n[1];
0 == t && 0 == e || (Ya = Math.atan2(e, t));
}
if (ro = !1, ao = null, si && !Lr) {
let t = Ra.filter(t => 15 == t.id && J.getDistance(si.x2, si.y2, t.x, t.y) < 50 && (t.owner.sid == Gt.sid || Ho(t.owner.sid)))[0];
if (t) {
let e = Ra.filter(e => e.id > 5 && e.id < 10 && J.getDistance(t.x, t.y, e.x, e.y) < 17.5 + e.scale + t.scale && (e.owner.sid == Gt.sid || Ho(e.owner.sid))).sort((t, e) => J.getDistance(si.x2, si.y2, t.x, t.y) - J.getDistance(si.x2, si.y2, e.x, e.y))[0];
if (e && !function() {
if (si.spikeDamage > 0) return !0;
}()) {
let n = e.x + e.scale * Math.cos(Math.atan2(t.y - e.y, t.x - e.x));
let i = e.y + e.scale * Math.sin(Math.atan2(t.y - e.y, t.x - e.x));
oo = {
x: n + (J.getDistance(n, i, si.x2, si.y2) + 35) * Math.cos(Math.atan2(si.y2 - i, si.x2 - n)),
y: i + (J.getDistance(n, i, si.x2, si.y2) + 35) * Math.sin(Math.atan2(si.y2 - i, si.x2 - n)),
x2: n,
y2: i
}, function() {
if (Oo(Gt.x2, Gt.y2, oo.x, oo.y, si.x2, si.y2, 35)) return !1;
for (let t of Ra) if (15 != t.id || t.owner.sid != Gt.sid && !Ho(t.owner.sid)) if (t.id > 5 && t.id < 10 && t.owner != Gt.sid && !Ho(t.owner) || 16 == t.id || 22 == t.id) {
if (Oo(Gt.x2, Gt.y2, oo.x, oo.y, t.x, t.y, 35 + t.getScale(.6, t.isItem))) return !1;
} else if (Oo(Gt.x2, Gt.y2, oo.x, oo.y, t.x, t.y, .75 * t.getScale(.6, t.isItem))) return !1;
return !0;
}() && (ro = !0, ao = Math.atan2(oo.y - Gt.y2, oo.x - Gt.x2));
}
}
}
if (ro) try {
Ya = Ur > Zr && !ri() ? null : ao;
} catch (t) {
Ya = ao;
}
if (Va = !1, si) for (let t = 0; t < 36; t++) {
let e = J.toRad(10 * t);
let n = 9;
let i = {
x: si.x2 + (35 + it.list[n].scale + (it.list[n].placeOffset || 0)) * Math.cos(e),
y: si.y2 + (35 + it.list[n].scale + (it.list[n].placeOffset || 0)) * Math.sin(e),
scale: it.list[n].scale
};
nn.checkItemLocation(i.x, i.y, i.scale, .6, n, !1, si, Ra) && (J.getDistance(Gt.x2, Gt.y2, i.x, i.y) <= 35 + i.scale && 1 == na[si.sid] && (Va = !0),
J.getDistance(Gt.xVel, Gt.yVel, i.x, i.y) <= 35 + i.scale && 1 == na[si.sid] && (Va = !0));
}
function y() {
try {
c = !0, h = !0;
var t = document.getElementById('label_tickbreak_row');
if (t && 'none' === t.style.display) {
t.style.display = 'block';
try {
st();
} catch (t) {}
}
} catch (t) {}
try {
si && K.push({
x: si.x2,
y: si.y2 - (si.scale || 0) - 30,
size: 30,
speed: .2,
life: 400,
text: "VELOCITY TICK",
color: Z && Z.label_tickbreak_color || "#ff00d4ff"
});
} catch (t) {}
Ua || Fa || qa || So(53, 0), setTimeout(() => {
h = !1, uo = !0, Ua || Fa || qa || So(7, 0), i.send("F", 1), setTimeout(() => {
uo = !1, i.send("F", null, 0);
try {
c = !1;
} catch (t) {}
}, 224);
}, 93);
}
if (X = 17 === Gt.items[5], U = !(!Y || !X || R), U) {
A = !0;
let t = [];
for (let e in Ra) {
let n = Ra[e];
J.getDistance(Gt.x, Gt.y, n.x, n.y) < 300 && n.isItem && 17 === n.id && (t.push(n),
z = !0);
}
if (m = t.sort((t, e) => J.getDistance(Gt.x, Gt.y, t.x, t.y) - J.getDistance(Gt.x, Gt.y, e.x, e.y)).slice(0, 2),
B = m[0], O = m[1], p = B ? B.sid : null, T = O ? O.sid : null, H = B ? B.health : null,
E = O ? O.health : null, C = t.some(t => J.getDistance(Gt.x, Gt.y, t.x, t.y) < 150),
C && !P ? (Kr = !0, P = !0) : C || (Kr = !1, P = !1), q = 10 === Gt.weapons[1],
W = !!(Gt.weaponVariants && Gt.weaponVariants[Gt.weapons[0]] >= 2), G = !!(q && Gt.weaponVariants && Gt.weaponVariants[Gt.weapons[1]] >= 1),
q && !G && C ? (F = !0, Si(Gt.weapons[1])) : F = !1, L = !(!q || !G || W || !C),
q || W || !C ? N = !1 : (N = !0, Si(Gt.weapons[0])), !C) {
_o(Gt.items[5], ci() - 20), _o(Gt.items[5], ci() + 20);
try {
xo(Gt.x2, Gt.y2 - 20, "placed 2 turrets");
} catch (t) {}
}
I = Gt.__gold15Logged ? 300 : 83, L && (B && O ? H > I && E > I ? (D = !0, hitturret1 = !1,
hitturret2 = !1, hitPrim = !1, Si(Gt.weapons[1])) : H > I && E <= I ? (hitturret1 = !0,
hitturret2 = !1, D = !1, hitPrim = !1, Si(Gt.weapons[1])) : H <= I && E > I ? (hitturret1 = !1,
hitturret2 = !0, D = !1, hitPrim = !1, Si(Gt.weapons[1])) : H <= I && E <= I && (D = !1,
hitturret1 = !1, hitturret2 = !1, hitPrim = !0, Si(Gt.weapons[0])) : B && !O ? H > I ? (hitturret1 = !0,
hitturret2 = !1, D = !1, hitPrim = !1, Si(Gt.weapons[1])) : H <= I && (hitturret1 = !1,
hitturret2 = !1, D = !1, hitPrim = !0, Si(Gt.weapons[0])) : !B && O && (E > I ? (hitturret1 = !1,
hitturret2 = !0, D = !1, hitPrim = !1, Si(Gt.weapons[1])) : E <= I && (hitturret1 = !1,
hitturret2 = !1, D = !1, hitPrim = !0, Si(Gt.weapons[0])))), q && G && W && (Y = !1),
!q && W && (Y = !1);
} else F = !1, N = !1, L = !1, C = !1, A && (Kr = !1, A = !1), P = !1;
if (r && si && Gt && Gt.alive) {
b = 1e3 / 9 * 1.5 + 35, v = 1e3 / 9 * 1.5 + 80;
let t = 10;
let e = 10;
let n = Math.max(1, b - t);
let i = v + e;
if (j = J.getDistance(Gt.x2, Gt.y2, si.x2, si.y2), jo(53, 0) && !Lr && 5 == Gt.weapons[0] && (Gt.weaponVariants && (Gt.weaponVariants[Gt.weapons[0]] || 0)) >= 2 && 1 == na[Gt.sid] && 1 == ra[Gt.sid] && j < v && j > b) {
var w = 10 == si.weapons[1] && ia[si.sid] >= .6 && 1 != ia[si.sid];
var _ = Ga[si.sid] || !1;
var x = 6 == si.skinIndex;
var M = !_ && !x;
var $ = Wa[si.sid] || !1;
var Q = 22 == si.skinIndex;
var et = !$ && !Q;
var nt = .9;
try {
var rt = si.weapons && null != si.weapons[0] ? si.weapons[0] : null;
5 === rt ? nt = .8 : 3 === rt && (nt = .4);
} catch (t) {}
var at = na[si.sid] >= nt && 1 != na[si.sid];
var ot = 10 != si.weapons[1] && at;
try {
var ct = Ra.filter(t => t.id > 5 && t.id < 10 && t.owner && (t.owner.sid == Gt.sid || Ho(t.owner.sid))).sort((t, e) => J.getDistance(si.x2, si.y2, t.x, t.y) - J.getDistance(si.x2, si.y2, e.x, e.y))[0];
var lt = ct ? J.getDistance(si.x2, si.y2, ct.x, ct.y) : 1 / 0;
} catch (t) {
lt = 1 / 0;
}
var ut = !1;
if (lt !== 1 / 0 && lt <= 150) try {
J.getDistance(si.xVel, si.yVel, Gt.xVel, Gt.yVel);
it.weapons[Gt.weapons[0]].range, Gt.scale;
var ft = J.getDirection(Gt.xVel, Gt.yVel, si.xVel, si.yVel);
var dt = J.getDirection(si.xVel, si.yVel, ct.x, ct.y);
var ht = Math.abs(ft - dt);
a, ht > Math.PI && (ht = 2 * Math.PI - ht), ut = ht < Math.PI / 4;
} catch (t) {}
(ut || w || ot || M && et) && y();
}
try {
if (c && !Lr) {
const t = Math.atan2(si.y2 - Gt.y2, si.x2 - Gt.x2);
try {
Ur > Zr && !ri() || (Ya = t);
} catch (e) {
Ya = t;
}
} else if (!Lr && j >= n && j <= i && 1 == (1 == na[Gt.sid] && ra[Gt.sid])) if (j >= b && j <= v) ; else {
const t = 224.16666666666669;
const e = Math.atan2(Gt.y2 - si.y2, Gt.x2 - si.x2);
const n = si.x2 + t * Math.cos(e);
const i = si.y2 + t * Math.sin(e);
const r = Math.atan2(i - Gt.y2, n - Gt.x2);
try {
Ur > Zr && !ri() || (Ya = r);
} catch (t) {
Ya = r;
}
}
} catch (t) {}
}
if (la = !1, Gt.alive) {
if (ca = Po(), function() {
for (const t in no) no[t] = 0;
}(), (Zr - wa) % 9 == 8 && (no.poison = 5), function() {
let t = 0;
if (pa.length > 0) for (let e of pa) [ 15, 22.5, 26.25, 33.75 ].includes(e) ? t += e / .75 : t += e;
no.spike < t && (no.spike = t);
}(), La && no.spike < 45 && (no.spike = 45), function() {
let t = 0;
if (null != Ya && !Lr) {
let e = Gt.x2 + 50 * Math.cos(Ya);
let n = Gt.y2 + 50 * Math.sin(Ya);
for (let i of $a.filter(t => J.getDistance(e, n, t.x, t.y) < 35 + t.scale)) t += it.list[i.id].dmg;
}
no.spike < t && (no.spike = t);
}(), function() {
let t = 0;
for (let e of $a.filter(t => J.getDistance(Gt.xVel, Gt.yVel, t.x, t.y) < 35 + t.scale)) t += it.list[e.id].dmg;
no.spike < t && (no.spike = t);
}(), Fa = !1, Ua = !1, Ma.length > 0) for (let t in Ma) {
let {damage: e, projectile: n} = Ma[t];
"turret" == n.weapon && _a.push({
damage: e,
projectile: n
});
}
if (xa.length > 0) {
for (let t in xa) {
let {damage: e, player: n, weapon: i} = xa[t];
i < 8 ? as({
type: "normal",
player: n
}) : 10 == i && as({
type: "reverse",
player: n
});
}
xa = [];
}
if (Ma.length > 0) {
for (let t in Ma) {
let {damage: e, projectile: n} = Ma[t];
"turret" != n.weapon && as({
type: "reverse",
player: n.player
});
}
Ma = [];
}
if (si && no.spike > 0) {
if (1 == na[si.sid]) {
let t = si.weapons[0] ? si.weapons[0] : null;
let e = 0;
null != t ? e = si.weaponVariants[t] : (e = 3, t = 5), Lr ? J.getDistance(Gt.xVel, Gt.yVel, si.xVel, si.yVel) <= 63 + it.weapons[t].range && (ha < 2 || si.lastPrimaryReload != na[si.sid] || J.getDistance(Gt.x2, Gt.y2, si.x2, si.y2) > 63 + it.weapons[t].range) && (0 == no.player && (no.player += 1.5 * it.weapons[t].dmg * tt.weaponVariants[e].val),
100 <= po() && (Ua = !0)) : J.getDistance(Gt.x2, Gt.y2, si.x2, si.y2) <= 300 && (0 == no.player && (no.player += 1.5 * it.weapons[t].dmg * tt.weaponVariants[e].val),
100 <= po() && (Ka() || (Ua = !0)));
}
1 == ra[si.sid] && Lr && ha < 3 && J.getDistance(Gt.xVel, Gt.yVel, si.xVel, si.yVel) <= 200 && 0 == no.player && (no.player += 25);
}
if (si && !Lr) {
let t = 0;
if (1 == na[si.sid]) {
let e = si.weapons[0] ? si.weapons[0] : null;
let n = 0;
if (null != e ? n = si.weaponVariants[e] : (n = 3, e = 5), J.getDistance(Gt.x2, Gt.y2, si.x2, si.y2) <= 63 + it.weapons[e].range) {
0 == no.player && (no.player += 1.5 * it.weapons[e].dmg * tt.weaponVariants[n].val);
let i = 111 * (.3 + (it.weapons[e].knock || 0));
let r = Gt.x2 + i * Math.cos(Math.atan2(Gt.y2 - si.y2, Gt.x2 - si.x2));
let a = Gt.y2 + i * Math.sin(Math.atan2(Gt.y2 - si.y2, Gt.x2 - si.x2));
for (let e of $a.filter(t => J.getDistance(r, a, t.x, t.y) <= 35 + t.scale)) t += it.list[e.id].dmg;
no.spike < t && (no.spike = t), 100 <= po() && (Ua = !0);
}
}
}
if (_a.length > 0) {
for (let t in _a) {
let {damage: e, projectile: n} = _a[t];
null == n.player || ka[n.player.sid] || (la = !0);
}
_a = [];
}
pa.length > 0 && (ha < 2 && (!Lr || Lr && !o) && (la = !0), pa = []), ja = [], ka = [],
ya = [], Ya != Xa && (i.send("9", Ya), Xa = Ya), function() {
if (!si) return;
let t = Ra.filter(t => t.id > 5 && t.id < 10 && (t.owner.sid == Gt.sid || Ho(t.owner.sid)));
let e = Ra.filter(t => 15 == t.id && J.getDistance(si.x2, si.y2, t.x, t.y) <= 50 && (t.owner.sid == Gt.sid || Ho(t.owner.sid)))[0];
let n = !1;
let i = si.x2 + 111 * (.3 + (it.weapons[Gt.weapons[0]].knock || 0)) * Math.cos(Math.atan2(si.y2 - Gt.y2, si.x2 - Gt.x2));
let r = si.y2 + 111 * (.3 + (it.weapons[Gt.weapons[0]].knock || 0)) * Math.sin(Math.atan2(si.y2 - Gt.y2, si.x2 - Gt.x2));
for (let a of t) if (J.getDistance(si.xVel, si.yVel, a.x, a.y) < 35 + a.scale ? n = !0 : e ? si.spikeDamage > 0 && (n = !0) : J.getDistance(i, r, a.x, a.y) < 35 + a.scale && (n = !0),
n) break;
return n ? (4 == Gt.weapons[0] || 5 == Gt.weapons[0]) && J.getDistance(si.xVel, si.yVel, Gt.xVel, Gt.yVel) <= 63 + it.weapons[Gt.weapons[0]].range && 1 == na[Gt.sid] && !uo : void 0;
}() && (fo = [ "primary", "stop" ]), fo.length > 0 && ("secondary" == fo[0] ? (uo = !0,
ho.primary = !1, ho.secondary = !0, ca = Gt.weapons[1], ks() || fo.shift()) : "primary" == fo[0] ? (uo = !0,
ho.primary = !0, ho.secondary = !1, ca = Gt.weapons[0], ks() || fo.shift()) : "stop" == fo[0] && (ho.primary = !1,
ho.secondary = !1, uo = !1, ua = !0, fo.shift())), io = function() {
if (!si) return !1;
if (Ra.filter(t => 15 == t.id && J.getDistance(si.x2, si.y2, t.x, t.y) <= 50 && (t.owner.sid == Gt.sid || Ho(t.owner.sid)))[0]) return !1;
if (Lr && ha < 1 && (6 == Gt.weapons[0] || 7 == Gt.weapons[0]) && !Va) {
const t = $a.sort((t, e) => J.getDistance(Gt.x2, Gt.y2, t.x, t.y) - J.getDistance(Gt.x2, Gt.y2, e.x, e.y))[0];
if (Lr && t && J.getDistance(t.x, t.y, Lr.x, Lr.y) <= 35 + t.scale + Lr.scale && J.getDistance(Gt.x2, Gt.y2, si.xVel, si.yVel) <= 63 + it.weapons[Gt.weapons[0]].range) return cs = Math.atan2(si.y2 - Gt.y2, si.x2 - Gt.x2),
!0;
}
return !1;
}(), io && (ca = Gt.weapons[0]), Gt.health <= po() && (uo || Br && ha > 0 ? la = !0 : Gt.health > .75 * po() ? Ka() || (qa = !0) : la = !0);
let t = !1;
(la && Gt.shameCount < 7 || Zr - Xr > 0) && Gt.health < 100 && Date.now() - Vr > Jr && (Mo(100 - Gt.health),
t = !0), C || (Gt.weaponIndex != ca || Gt.buildIndex >= 0) && Si(ca), Yr && (V && (V = !1),
Yr = !1), !(Kr || uo || Br || io) || Fa || Ua || qa ? V && Mi() : V || Mi(), Gt.buildIndex < 0 && (Gt.weaponIndex < 9 ? 1 == na[Gt.sid] && (Yr = !0) : 1 == ia[Gt.sid] && (Yr = !0)),
ma = !1, Gt.shameCount > 0 && !qa && !Va && Zr - wa >= 8 && (ma = !0), function() {
if (!Z.autoInstaCounter) return;
if (!si) return;
if (uo) return;
if (fo && fo.length > 0) return;
if (J.getDistance(Gt.x2, Gt.y2, si.x2, si.y2) > it.weapons[Gt.weapons[0]].range + Gt.scale + si.scale) return;
if (na[si.sid] < 1) return;
const t = ys(si, "primaryDmg");
if (!t) return;
const e = t >= 40;
const n = Gt.health <= 60;
if (!e && !n) return;
if (1 !== na[Gt.sid]) return;
if (!jo(7, 0) && !jo(40, 0)) return;
uo = !0;
const r = Math.atan2(si.y2 - Gt.y2, si.x2 - Gt.x2);
jo(40, 0) && So(40, 0), setTimeout(() => {
Si(Gt.weapons[0]), i.send("D", r), Ai(1, r), Ai(0, r), setTimeout(() => {
jo(7, 0) && So(7, 0), uo = !1;
}, 90);
}, 1);
}(), function() {
if (!Z.smartDodge) return;
if (!si) return;
if (uo) return;
if (J.getDistance(Gt.x2, Gt.y2, si.x2, si.y2) > it.weapons[Gt.weapons[0]].range + Gt.scale + si.scale) return;
if (na[si.sid] < 1) return;
const t = Math.atan2(Gt.y2 - si.y2, Gt.x2 - si.x2);
Ya = g ? t + Math.PI : t + Math.PI / 2;
}(), function() {
if (!Z.autoBullOnDamage) return;
if (!Gt.alive) return;
const t = Gt.health;
t < pi && pi - t > 5 && jo(7, 0) && 7 !== Gt.skinIndex && So(7, 0), pi = t;
}(), function() {
if (!Z.predictiveKnockback) return;
if (!si) return;
if (uo) return;
if (1 !== na[Gt.sid]) return;
if (J.getDistance(Gt.x2, Gt.y2, si.x2, si.y2) > it.weapons[Gt.weapons[0]].range + Gt.scale) return;
const t = Ra.filter(t => 15 === t.id && t.owner && (t.owner.sid === Gt.sid || Ho(t.owner.sid)) && J.getDistance(si.x2, si.y2, t.x, t.y) <= 120);
if (0 === t.length) return;
let e = null;
let n = -1 / 0;
for (const i of t) {
const t = J.getDistance(si.x2, si.y2, i.x, i.y);
const r = Math.atan2(i.y - si.y2, i.x - si.x2);
const a = Math.atan2(Gt.y2 - si.y2, Gt.x2 - si.x2);
let o = Math.abs(r - a);
o > Math.PI && (o = 2 * Math.PI - o);
const s = 120 - t + 50 * (Math.PI - o);
s > n && (n = s, e = i);
}
if (!e || n < 50) return;
const r = Math.atan2(si.y2 - Gt.y2, si.x2 - Gt.x2);
uo = !0, jo(6, 0) && So(6, 0), Si(Gt.weapons[0]), i.send("D", r), Ai(1, r), Ai(0, r),
setTimeout(() => {
uo = !1, jo(40, 0) && So(40, 0);
}, 100);
}(), function() {
if (!Z.spikeAvoidance) return;
if (!si || uo || g) return;
const t = Z.spikeAvoidance_dist || 70;
const e = Gt.x2;
const n = Gt.y2;
const i = Ra.filter(i => i.id > 5 && i.id < 10 && i.owner && i.owner.sid !== Gt.sid && !Ho(i.owner.sid) && J.getDistance(e, n, i.x, i.y) <= t + i.scale);
if (0 === i.length) return;
const r = Gt.xVel || e;
const a = Gt.yVel || n;
for (let o of i) if (J.getDistance(r, a, o.x, o.y) < t + o.scale) {
const t = Math.atan2(n - o.y, e - o.x);
return void (Ya = t);
}
}(), function() {
if (!Z.smartAutoBull) return;
if (!si || uo) return;
const t = J.getDistance(Gt.x2, Gt.y2, si.x2, si.y2);
t <= it.weapons[Gt.weapons[0]].range + Gt.scale + si.scale && jo(7, 0) && 7 !== Gt.skinIndex && t <= it.weapons[si.primaryIndex || 5].range + si.scale + Gt.scale && 1 === na[si.sid] && So(7, 0);
}(), function() {
let t = 0;
jo(6, 0) && (t = 6);
jo(12, 0) && (t = 12);
Gt.y < 2400 && jo(15, 0) && (t = 15);
Gt.y > 6838 && Gt.y < 7562 && jo(31, 0) && (t = 31);
V && jo(6, 0) && (t = 6);
jo(7, 0) && ma && (t = 7);
si && J.getDistance(Gt.x2, Gt.y2, si.x2, si.y2) <= 300 && jo(6, 0) && (t = 6);
jo(7, 0) && (!(Gt.shameCount > 0 && 45 != Gt.skinIndex && Gt.health > 5 + po() && Zr - wa >= 8) || si && function() {
if (!si) return;
let t = 0;
if (1 == na[si.sid]) {
let e = si.weapons[0] ? si.weapons[0] : null;
let n = 0;
null != e ? n = si.weaponVariants[e] : (n = 3, e = 5), t += 1.5 * it.weapons[e].dmg * tt.weaponVariants[n].val;
}
if (1 == ia[si.sid]) {
let e = si.weapons[1] ? si.weapons[1] : 15;
null != it.weapons[e].projectile ? t += it.projectiles[it.weapons[e].projectile].dmg : t += it.weapons[e].dmg * tt.weaponVariants[si.weaponVariants[e]].val;
}
1 == ra[si.sid] && (t += 25);
if (t >= 100) return !0;
}() || (t = 7));
(Va || Lr && ha > 0) && jo(6, 0) && (t = 6);
V && (C ? 1 == ia[Gt.sid] && F || 1 == ia[Gt.sid] && L && !hitPrim ? jo(40, 0) && (t = 40) : 1 != na[Gt.sid] || F || jo(40, 0) && (t = 40) : ca < 9 ? 1 == na[Gt.sid] && (Br ? io ? jo(7, 0) && (t = 7) : jo(40, 0) && (t = 40) : ca < 8 && si && J.getDistance(Gt.xVel, Gt.yVel, si.xVel, si.yVel) <= 63 + it.weapons[ca].range ? jo(7, 0) && (t = 7) : jo(40, 0) && (t = 40)) : 11 != ca && 1 == ia[Gt.sid] && (10 == ca ? jo(40, 0) && (t = 40) : jo(20, 0) && (t = 20)));
let e = 0;
let n = Go('combat_acc_dist') || Z.combat_acc_dist || 300;
si && J.getDistance(Gt.x2, Gt.y2, si.x2, si.y2) <= n ? (R = !0, e = h ? 11 : jo(21, 1) && si && J.getDistance(Gt.x2, Gt.y2, si.x2, si.y2) <= 150 ? 21 : jo(19, 1) ? 19 : 0) : (jo(11, 1) && (e = 11),
8 == Gt.weapons[0] && jo(11, 1) ? e = 11 : R = !1);
si && (S = Ra.filter(t => 15 == t.id && J.getDistance(si.x2, si.y2, t.x, t.y) <= 50 && (t.owner.sid == Gt.sid || Ho(t.owner.sid)))[0]);
Gt && (g = Ra.filter(t => 15 == t.id && J.getDistance(Gt.x2, Gt.y2, t.x, t.y) <= 50 && (t.owner.sid == !Gt.sid || !Ho(t.owner.sid)))[0]);
if (Gt && g && si && Z.evadeKnockback) {
const t = Ra.filter(t => t.id > 5 && t.id < 10 && J.getDistance(Gt.x2, Gt.y2, t.x, t.y) <= 200 && t.owner.sid != Gt.sid && !Ho(t.owner.sid));
si && (S = Ra.filter(t => 15 == t.id && J.getDistance(si.x2, si.y2, t.x, t.y) <= 50 && (t.owner.sid == Gt.sid || Ho(t.owner.sid)))[0]);
const e = t.some(t => J.getDistance(Gt.x2, Gt.y2, t.x, t.y) <= 35 + t.scale);
const n = g.health <= 350;
const i = J.getDistance(Gt.x2, Gt.y2, si.x2, si.y2) <= 160;
t.length > 0 && n && !S && i && 1 == na[Gt.sid] && !e && (Br = !1, fo = [ "primary", "stop" ]);
}
try {
si && mi(), Z.SpikeMidKnockback && si && bo && bo(si) && function() {
const t = vo(si);
if (!t) return;
const e = J.getDistance(t[0].x, t[0].y, t[1].x, t[1].y);
if (e > 110 || e < 40) return;
const n = go(t[0], t[1]);
const i = Math.atan2(n.y - Gt.y2, n.x - Gt.x2);
so.autoAim = !0, Si(Gt.weapons[0]), Ai(1, i), Ai(0, i), vi.tickBase(() => {
so.autoAim = !1;
}, 1), getSetting("chatlog") && _t("Spike -> Midpoint", "");
}();
} catch (t) {}
ho.primary && jo(7, 0) && (t = 7);
ho.secondary && jo(40, 0) && (t = 40);
jo(6, 0) && (Ua || qa || Za || La || Fa) && (t = 6);
Aa || (So(t), Ao(e));
}(), ma = !1, Zo();
for (let t of oa) if (!t.preplace) {
_o(t.id, t.angle);
try {
(!Gt || t.id !== Gt.items[3] && t.id !== Gt.items[0]) && xo(t.x, t.y - 10, "autoplace", "#ffd54d");
} catch (t) {}
zo(t.id, t.angle);
}
let e = ci();
(oa.length > 0 || t || Math.abs(Gt.d2 - e) > .3) && i.send("D", e);
} else oa = [], fa.length > 0 && (_t(`Mod: Predict Damages before death ${JSON.stringify(no)}`, "#ffffff"),
_t(`Mod: Damages before death ${JSON.stringify(fa)}`, "#ffffff"), fa = []);
for (let t of zt) t.spikeDamage <= 0 || (t.spikeDamage = 0);
try {
for (let t of zt) try {
Ga[t.sid] = 6 == t.skinIndex;
} catch (t) {}
} catch (t) {}
try {
for (let t of zt) try {
Wa[t.sid] = 22 == t.skinIndex;
} catch (t) {}
} catch (t) {}
}), setTimeout(function() {
for (let t of oa) if (t.preplace) {
_o(t.id, t.angle);
try {
xo(t.x, t.y - 10, "PREPLACE", "#4fc3ff");
} catch (t) {}
i.send("D", ci());
}
}, 1), setTimeout(function() {
for (let t of oa) if (t.preplace) {
_o(t.id, t.angle);
try {
xo(t.x, t.y - 10, "serversync", "#be4fffff");
} catch (t) {}
i.send("D", ci());
}
}, 111.1111111111111 - window.pingTime), setTimeout(function() {
for (let t of oa) if (t.preplace) {
_o(t.id, t.angle);
try {
xo(t.x, t.y - 10, "serverSYNC", "#2f00ffff");
} catch (t) {}
i.send("D", ci());
}
}, 111.1111111111111 - js), fs && null !== ds && 'sync' == hs.mode && zt.forEach(t => {
if (t.sid.toString() == ds) if (ms.isInTrap(t.sid)) i.send("9", Math.atan2(t.y2 - Gt.y2, t.x2 - Gt.x2), 1); else {
let e = 80, n = t.x2, r = t.y2, a = Math.atan2(Gt.y2 - r, Gt.x2 - n);
a -= .1;
const o = n + e * Math.cos(a), s = r + e * Math.sin(a);
i.send("9", Math.atan2(s - Gt.y2, o - Gt.x2), 1);
}
});
}
let bs;
function ks() {
if (uo) {
if (11 == Gt.tailIndex) return !0;
} else if (ca < 8 && 11 == Gt.tailIndex) return !0;
}
function ys(t, e) {
if (!t) return null;
const n = t.weapons[0] || 5;
const i = t.weapons[1] || 15;
const r = t.weaponVariants[n] ?? 2;
const a = t.weaponVariants[i] ?? 2;
var o = 1;
t == Gt ? jo(40, 0) && (o = 3.3) : o = 3.3;
const s = 0, c = 1, l = 2, u = 3, f = 4, d = 5;
const h = 6, m = 7, p = 8, v = 9, g = 10, b = 11;
const k = 12, y = 13, w = 14, _ = 15;
const x = t => tt.weaponVariants[t]?.val || 1;
return "secondaryWeapon" == e ? {
[v]: "bow",
[g]: "hammer",
[b]: "shield",
[k]: "crossbow",
[y]: "repeater crossbow",
[w]: "mcgrabby",
[_]: "musket"
}[i] : "primaryWeapon" == e ? {
[s]: "tool hammer",
[c]: "axe",
[l]: "great axe",
[u]: "short sword",
[f]: "katana",
[d]: "polearm",
[h]: "bat",
[m]: "daggers",
[p]: "stick"
}[n] : "primaryVariant" == e ? r : "secondaryVariant" == e ? a : "primaryRange" == e ? it.weapons[n].range : "secondaryRange" == e ? it.weapons[i].range : "primaryDmg" == e ? 1.5 * it.weapons[n].dmg * x(r) : "primaryStructureDmg" == e ? it.weapons[n].dmg * (it.weapons[n].sDmg || 1) * x(r) * o : "secondaryDmg" == e ? 10 == i ? 1.5 * it.weapons[i].dmg * x(a) : 9 == i ? 15 : 12 == i ? 30 : 13 == i ? 35 : 15 == i ? 50 : 0 : "secondaryStructureDmg" == e ? 10 == i ? it.weapons[i].dmg * (it.weapons[i].sDmg || 1) * x(a) * o : 0 : "primaryKnockback" == e ? it.weapons[n].knock || 0 : null;
}
function ws(t) {
for (var e = 0; e < zt.length; ++e) if (zt[e].sid == t) return zt[e];
return null;
}
function _s(t) {
for (var e = 0; e < Ct.length; ++e) if (Ct[e].sid == t) return Ct[e];
return null;
}
function xs(t) {
for (var e = 0; e < $t.length; ++e) if ($t[e].sid == t) return $t[e];
return null;
}
let Ms = [];
let js = 1 / 0;
let Ss = 0;
let As = !0;
var Ts = -1;
function Ds() {
var t = Date.now() - Ts;
window.pingTime = t, As ? As = !1 : (Ms.length > 200 && (Ms = []), Ms.push(t), t > Ss && (Ss = t)),
je.innerText = `Ping: ${window.pingTime} ms | Min: ${js} ms | Max: ${Ss} ms`;
}
function Ps() {
Ts = Date.now(), i.send("0");
}
function Bs(t) {
if (!(t < 0)) {
var e = Math.floor(t / 60);
var n = t % 60;
n = ("0" + n).slice(-2), Se.innerText = "Server restarting in " + e + ":" + n, Se.hidden = !1;
}
}
var Is;
function Os(t) {
window.open(t, "_blank");
}
Is = tt.mapScale / 2, nn.add(0, Is, Is + 200, 0, tt.treeScales[3], 0), nn.add(1, Is, Is - 480, 0, tt.treeScales[3], 0),
nn.add(2, Is + 300, Is + 450, 0, tt.treeScales[3], 0), nn.add(3, Is - 950, Is - 130, 0, tt.treeScales[2], 0),
nn.add(4, Is - 750, Is - 400, 0, tt.treeScales[3], 0), nn.add(5, Is - 700, Is + 400, 0, tt.treeScales[2], 0),
nn.add(6, Is + 800, Is - 200, 0, tt.treeScales[3], 0), nn.add(7, Is - 260, Is + 340, 0, tt.bushScales[3], 1),
nn.add(8, Is + 760, Is + 310, 0, tt.bushScales[3], 1), nn.add(9, Is - 800, Is + 100, 0, tt.bushScales[3], 1),
nn.add(10, Is - 800, Is + 300, 0, it.list[4].scale, it.list[4].id, it.list[10]),
nn.add(11, Is + 650, Is - 390, 0, it.list[4].scale, it.list[4].id, it.list[10]),
nn.add(12, Is - 400, Is - 450, 0, tt.rockScales[2], 2), function t() {
Ot = Date.now(), It = Ot - Ht, Ht = Ot, qi(), requestAnimationFrame(t);
}(), window.openLink = Os, window.aJoinReq = _n, window.follmoo = function() {
Tt || (Tt = !0, St("moofoll", 1));
}, window.kickFromClan = xn, window.sendJoin = Mn, window.leaveAlliance = Sn, window.createAlliance = jn,
window.storeBuy = Un, window.storeEquip = $n, window.showItemInfo = dn, window.selectSkinColor = function(t) {
re = t, ie = 10 == t ? "__lookupGetter__" : t, qn();
}, window.changeStoreIndex = function(t) {
Cn != t && (Cn = t, Rn());
}, window.config = tt;
},
"./src/js/config.js": function(t, e, n) {
(function(e) {
t.exports.maxScreenWidth = 1920, t.exports.maxScreenHeight = 1080, t.exports.serverUpdateRate = 9,
t.exports.tickRate = 1e3 / t.exports.serverUpdateRate, t.exports.maxPlayers = 1 / 0,
t.exports.maxPlayersHard = 1 / 0, t.exports.collisionDepth = 6, t.exports.minimapRate = 3e3,
t.exports.colGrid = 10, t.exports.clientSendRate = 5, t.exports.healthBarWidth = 50,
t.exports.healthBarPad = 4.5, t.exports.iconPadding = 15, t.exports.iconPad = .9,
t.exports.deathFadeout = 0, t.exports.crownIconScale = 60, t.exports.crownPad = 35,
t.exports.chatCountdown = 3e3, t.exports.chatCooldown = 500, t.exports.inSandbox = e && "mm_exp" === e.env.VULTR_SCHEME,
t.exports.isSandbox = "sandbox.moomoo.io" == window.location.hostname, t.exports.maxAge = 100,
t.exports.gatherAngle = Math.PI / 2.6, t.exports.gatherWiggle = 10, t.exports.hitReturnRatio = .25,
t.exports.hitAngle = Math.PI / 2, t.exports.playerScale = 35, t.exports.playerSpeed = .0016,
t.exports.playerDecel = .993, t.exports.nameY = 34, t.exports.skinColors = [ "#bf8f54", "#cbb091", "#896c4b", "#fadadc", "#ececec", "#c37373", "#4c4c4c", "#ecaff7", "#738cc3", "#8bc373", "#91b2db" ],
t.exports.animalCount = 7, t.exports.aiTurnRandom = .06, t.exports.cowNames = [ "Sid", "Steph", "Bmoe", "Romn", "Jononthecool", "Fiona", "Vince", "Nathan", "Nick", "Flappy", "Ronald", "Otis", "Pepe", "Mc Donald", "Theo", "Fabz", "Oliver", "Jeff", "Jimmy", "Helena", "Reaper", "Ben", "Alan", "Naomi", "XYZ", "Clever", "Jeremy", "Mike", "Destined", "Stallion", "Allison", "Meaty", "Sophia", "Vaja", "Joey", "Pendy", "Murdoch", "Theo", "Jared", "July", "Sonia", "Mel", "Dexter", "Quinn", "Milky" ],
t.exports.shieldAngle = Math.PI / 3, t.exports.weaponVariants = [ {
id: 0,
src: "",
xp: 0,
val: 1
}, {
id: 1,
src: "_g",
xp: 3e3,
val: 1.1
}, {
id: 2,
src: "_d",
xp: 7e3,
val: 1.18
}, {
id: 3,
src: "_r",
poison: !0,
xp: 12e3,
val: 1.18
} ], t.exports.fetchVariant = function(e) {
var n = e.weaponXP[e.weaponIndex] || 0;
for (var i = t.exports.weaponVariants.length - 1; i >= 0; --i) if (n >= t.exports.weaponVariants[i].xp) return t.exports.weaponVariants[i];
}, t.exports.resourceTypes = [ "wood", "food", "stone", "points" ], t.exports.areaCount = 7,
t.exports.treesPerArea = 9, t.exports.bushesPerArea = 3, t.exports.totalRocks = 32,
t.exports.goldOres = 7, t.exports.riverWidth = 724, t.exports.riverPadding = 114,
t.exports.waterCurrent = .0011, t.exports.waveSpeed = 1e-4, t.exports.waveMax = 1.3,
t.exports.treeScales = [ 150, 160, 165, 175 ], t.exports.bushScales = [ 80, 85, 95 ],
t.exports.rockScales = [ 80, 85, 90 ], t.exports.snowBiomeTop = 2400, t.exports.snowSpeed = .75,
t.exports.maxNameLength = 15, t.exports.mapScale = 14400, t.exports.mapPingScale = 40,
t.exports.mapPingTime = 2200;
}).call(this, n("./node_modules/process/browser.js"));
},
"./src/js/data/ai.js": function(t, e) {
var n = 2 * Math.PI;
t.exports = function(t, e, i, r, a, o, s, c) {
this.sid = t, this.isAI = !0, this.nameIndex = a.randInt(0, o.cowNames.length - 1),
this.init = function(t, e, n, i, r) {
this.x = t, this.y = e, this.startX = r.fixedSpawn ? t : null, this.startY = r.fixedSpawn ? e : null,
this.xVel = 0, this.yVel = 0, this.zIndex = 0, this.dir = n, this.dirPlus = 0, this.index = i,
this.src = r.src, r.name && (this.name = r.name), this.weightM = r.weightM, this.speed = r.speed,
this.killScore = r.killScore, this.turnSpeed = r.turnSpeed, this.scale = r.scale,
this.maxHealth = r.health, this.leapForce = r.leapForce, this.health = this.maxHealth,
this.chargePlayer = r.chargePlayer, this.viewRange = r.viewRange, this.drop = r.drop,
this.dmg = r.dmg, this.hostile = r.hostile, this.dontRun = r.dontRun, this.hitRange = r.hitRange,
this.hitDelay = r.hitDelay, this.hitScare = r.hitScare, this.spriteMlt = r.spriteMlt,
this.nameScale = r.nameScale, this.colDmg = r.colDmg, this.noTrap = r.noTrap, this.spawnDelay = r.spawnDelay,
this.hitWait = 0, this.waitCount = 1e3, this.moveCount = 0, this.targetDir = 0,
this.active = !0, this.alive = !0, this.runFrom = null, this.chargeTarget = null,
this.dmgOverTime = {};
};
var l = 0;
this.update = function(t) {
if (this.active) {
if (this.spawnCounter) return this.spawnCounter -= t, void (this.spawnCounter <= 0 && (this.spawnCounter = 0,
this.x = this.startX || a.randInt(0, o.mapScale), this.y = this.startY || a.randInt(0, o.mapScale)));
(l -= t) <= 0 && (this.dmgOverTime.dmg && (this.changeHealth(-this.dmgOverTime.dmg, this.dmgOverTime.doer),
this.dmgOverTime.time -= 1, this.dmgOverTime.time <= 0 && (this.dmgOverTime.dmg = 0)),
l = 1e3);
var r = !1;
var s = 1;
if (!this.zIndex && !this.lockMove && this.y >= o.mapScale / 2 - o.riverWidth / 2 && this.y <= o.mapScale / 2 + o.riverWidth / 2 && (s = .33,
this.xVel += o.waterCurrent * t), this.lockMove) this.xVel = 0, this.yVel = 0; else if (this.waitCount > 0) {
if (this.waitCount -= t, this.waitCount <= 0) if (this.chargePlayer) {
var u, f, d;
for (var h = 0; h < i.length; ++h) !i[h].alive || i[h].skin && i[h].skin.bullRepel || (d = a.getDistance(this.x, this.y, i[h].x, i[h].y)) <= this.viewRange && (!u || d < f) && (f = d,
u = i[h]);
u ? (this.chargeTarget = u, this.moveCount = a.randInt(8e3, 12e3)) : (this.moveCount = a.randInt(1e3, 2e3),
this.targetDir = a.randFloat(-Math.PI, Math.PI));
} else this.moveCount = a.randInt(4e3, 1e4), this.targetDir = a.randFloat(-Math.PI, Math.PI);
} else if (this.moveCount > 0) {
var m = this.speed * s;
if (this.runFrom && this.runFrom.active && (!this.runFrom.isPlayer || this.runFrom.alive) ? (this.targetDir = a.getDirection(this.x, this.y, this.runFrom.x, this.runFrom.y),
m *= 1.42) : this.chargeTarget && this.chargeTarget.alive && (this.targetDir = a.getDirection(this.chargeTarget.x, this.chargeTarget.y, this.x, this.y),
m *= 1.75, r = !0), this.hitWait && (m *= .3), this.dir != this.targetDir) {
this.dir %= n;
var p = (this.dir - this.targetDir + n) % n;
var v = Math.min(Math.abs(p - n), p, this.turnSpeed * t);
var g = p - Math.PI >= 0 ? 1 : -1;
this.dir += g * v + n;
}
this.dir %= n, this.xVel += m * t * Math.cos(this.dir), this.yVel += m * t * Math.sin(this.dir),
this.moveCount -= t, this.moveCount <= 0 && (this.runFrom = null, this.chargeTarget = null,
this.waitCount = this.hostile ? 1500 : a.randInt(1500, 6e3));
}
this.zIndex = 0, this.lockMove = !1;
var b = a.getDistance(0, 0, this.xVel * t, this.yVel * t);
var k = Math.min(4, Math.max(1, Math.round(b / 40)));
var y = 1 / k;
for (h = 0; h < k; ++h) {
this.xVel && (this.x += this.xVel * t * y), this.yVel && (this.y += this.yVel * t * y),
M = e.getGridArrays(this.x, this.y, this.scale);
for (var w = 0; w < M.length; ++w) for (var _ = 0; _ < M[w].length; ++_) M[w][_].active && e.checkCollision(this, M[w][_], y);
}
var x = !1;
if (this.hitWait > 0 && (this.hitWait -= t, this.hitWait <= 0)) {
x = !0, this.hitWait = 0, this.leapForce && !a.randInt(0, 2) && (this.xVel += this.leapForce * Math.cos(this.dir),
this.yVel += this.leapForce * Math.sin(this.dir));
var M = e.getGridArrays(this.x, this.y, this.hitRange);
for (var j = 0; j < M.length; ++j) for (w = 0; w < M[j].length; ++w) (S = M[j][w]).health && (A = a.getDistance(this.x, this.y, S.x, S.y)) < S.scale + this.hitRange && (S.changeHealth(5 * -this.dmg) && e.disableObj(S),
e.hitObj(S, a.getDirection(this.x, this.y, S.x, S.y)));
for (w = 0; w < i.length; ++w) i[w].canSee(this) && c.send(i[w].id, "J", this.sid);
}
var S, A, T;
if (r || x) for (h = 0; h < i.length; ++h) (S = i[h]) && S.alive && (A = a.getDistance(this.x, this.y, S.x, S.y),
this.hitRange ? !this.hitWait && A <= this.hitRange + S.scale && (x ? (T = a.getDirection(S.x, S.y, this.x, this.y),
S.changeHealth(-this.dmg), S.xVel += .6 * Math.cos(T), S.yVel += .6 * Math.sin(T),
this.runFrom = null, this.chargeTarget = null, this.waitCount = 3e3, this.hitWait = a.randInt(0, 2) ? 0 : 600) : this.hitWait = this.hitDelay) : A <= this.scale + S.scale && (T = a.getDirection(S.x, S.y, this.x, this.y),
S.changeHealth(-this.dmg), S.xVel += .55 * Math.cos(T), S.yVel += .55 * Math.sin(T)));
this.xVel && (this.xVel *= Math.pow(o.playerDecel, t)), this.yVel && (this.yVel *= Math.pow(o.playerDecel, t));
var D = this.scale;
this.x - D < 0 ? (this.x = D, this.xVel = 0) : this.x + D > o.mapScale && (this.x = o.mapScale - D,
this.xVel = 0), this.y - D < 0 ? (this.y = D, this.yVel = 0) : this.y + D > o.mapScale && (this.y = o.mapScale - D,
this.yVel = 0);
}
}, this.canSee = function(t) {
if (!t) return !1;
if (t.skin && t.skin.invisTimer && t.noMovTimer >= t.skin.invisTimer) return !1;
var e = Math.abs(t.x - this.x) - t.scale;
var n = Math.abs(t.y - this.y) - t.scale;
return e <= o.maxScreenWidth / 2 * 1.3 && n <= o.maxScreenHeight / 2 * 1.3;
};
var u = 0;
var f = 0;
this.animate = function(t) {
this.animTime > 0 && (this.animTime -= t, this.animTime <= 0 ? (this.animTime = 0,
this.dirPlus = 0, u = 0, f = 0) : 0 == f ? (u += t / (this.animSpeed * o.hitReturnRatio),
this.dirPlus = a.lerp(0, this.targetAngle, Math.min(1, u)), u >= 1 && (u = 1, f = 1)) : (u -= t / (this.animSpeed * (1 - o.hitReturnRatio)),
this.dirPlus = a.lerp(0, this.targetAngle, Math.max(0, u))));
}, this.startAnim = function() {
this.animTime = this.animSpeed = 600, this.targetAngle = .8 * Math.PI, u = 0, f = 0;
}, this.changeHealth = function(t, e, n) {
if (this.active && (this.health += t, n && (this.hitScare && !a.randInt(0, this.hitScare) ? (this.runFrom = n,
this.waitCount = 0, this.moveCount = 2e3) : this.hostile && this.chargePlayer && n.isPlayer ? (this.chargeTarget = n,
this.waitCount = 0, this.moveCount = 8e3) : this.dontRun || (this.runFrom = n, this.waitCount = 0,
this.moveCount = 2e3)), t < 0 && this.hitRange && a.randInt(0, 1) && (this.hitWait = 500),
e && e.canSee(this) && t < 0 && c.send(e.id, "8", Math.round(this.x), Math.round(this.y), Math.round(-t), 1),
this.health <= 0 && (this.spawnDelay ? (this.spawnCounter = this.spawnDelay, this.x = -1e6,
this.y = -1e6) : (this.x = this.startX || a.randInt(0, o.mapScale), this.y = this.startY || a.randInt(0, o.mapScale)),
this.health = this.maxHealth, this.runFrom = null, e && (s(e, this.killScore), this.drop)))) for (var i = 0; i < this.drop.length; ) e.addResource(o.resourceTypes.indexOf(this.drop[i]), this.drop[i + 1]),
i += 2;
};
};
},
"./src/js/data/aiManager.js": function(t, e) {
t.exports = function(t, e, n, i, r, a, o, s, c) {
this.aiTypes = [ {
id: 0,
src: "cow_1",
killScore: 150,
health: 500,
weightM: .8,
speed: 95e-5,
turnSpeed: .001,
scale: 72,
drop: [ "food", 50 ]
}, {
id: 1,
src: "pig_1",
killScore: 200,
health: 800,
weightM: .6,
speed: 85e-5,
turnSpeed: .001,
scale: 72,
drop: [ "food", 80 ]
}, {
id: 2,
name: "Bull",
src: "bull_2",
hostile: !0,
dmg: 20,
killScore: 1e3,
health: 1800,
weightM: .5,
speed: 94e-5,
turnSpeed: 74e-5,
scale: 78,
viewRange: 800,
chargePlayer: !0,
drop: [ "food", 100 ]
}, {
id: 3,
name: "Bully",
src: "bull_1",
hostile: !0,
dmg: 20,
killScore: 2e3,
health: 2800,
weightM: .45,
speed: .001,
turnSpeed: 8e-4,
scale: 90,
viewRange: 900,
chargePlayer: !0,
drop: [ "food", 400 ]
}, {
id: 4,
name: "Wolf",
src: "wolf_1",
hostile: !0,
dmg: 8,
killScore: 500,
health: 300,
weightM: .45,
speed: .001,
turnSpeed: .002,
scale: 84,
viewRange: 800,
chargePlayer: !0,
drop: [ "food", 200 ]
}, {
id: 5,
name: "Quack",
src: "chicken_1",
dmg: 8,
killScore: 2e3,
noTrap: !0,
health: 300,
weightM: .2,
speed: .0018,
turnSpeed: .006,
scale: 70,
drop: [ "food", 100 ]
}, {
id: 6,
name: "MOOSTAFA",
nameScale: 50,
src: "enemy",
hostile: !0,
dontRun: !0,
fixedSpawn: !0,
spawnDelay: 6e4,
noTrap: !0,
colDmg: 100,
dmg: 40,
killScore: 8e3,
health: 18e3,
weightM: .4,
speed: 7e-4,
turnSpeed: .01,
scale: 80,
spriteMlt: 1.8,
leapForce: .9,
viewRange: 1e3,
hitRange: 210,
hitDelay: 1e3,
chargePlayer: !0,
drop: [ "food", 100 ]
}, {
id: 7,
name: "Treasure",
hostile: !0,
nameScale: 35,
src: "crate_1",
fixedSpawn: !0,
spawnDelay: 12e4,
colDmg: 200,
killScore: 5e3,
health: 2e4,
weightM: .1,
speed: 0,
turnSpeed: 0,
scale: 70,
spriteMlt: 1
}, {
id: 8,
name: "MOOFIE",
src: "wolf_2",
hostile: !0,
fixedSpawn: !0,
dontRun: !0,
hitScare: 4,
spawnDelay: 3e4,
noTrap: !0,
nameScale: 35,
dmg: 10,
colDmg: 100,
killScore: 3e3,
health: 7e3,
weightM: .45,
speed: .0015,
turnSpeed: .002,
scale: 90,
viewRange: 800,
chargePlayer: !0,
drop: [ "food", 1e3 ]
}, {
id: 9,
name: "??MOOFIE",
src: "wolf_2",
hostile: !0,
fixedSpawn: !0,
dontRun: !0,
hitScare: 50,
spawnDelay: 6e4,
noTrap: !0,
nameScale: 35,
dmg: 12,
colDmg: 100,
killScore: 3e3,
health: 9e3,
weightM: .45,
speed: .0015,
turnSpeed: .0025,
scale: 94,
viewRange: 1440,
chargePlayer: !0,
drop: [ "food", 3e3 ],
minSpawnRange: .85,
maxSpawnRange: .9
}, {
id: 10,
name: "??Wolf",
src: "wolf_1",
hostile: !0,
fixedSpawn: !0,
dontRun: !0,
hitScare: 50,
spawnDelay: 3e4,
dmg: 10,
killScore: 700,
health: 500,
weightM: .45,
speed: .00115,
turnSpeed: .0025,
scale: 88,
viewRange: 1440,
chargePlayer: !0,
drop: [ "food", 400 ],
minSpawnRange: .85,
maxSpawnRange: .9
}, {
id: 11,
name: "??Bully",
src: "bull_1",
hostile: !0,
fixedSpawn: !0,
dontRun: !0,
hitScare: 50,
dmg: 20,
killScore: 5e3,
health: 5e3,
spawnDelay: 1e5,
weightM: .45,
speed: .00115,
turnSpeed: .0025,
scale: 94,
viewRange: 1440,
chargePlayer: !0,
drop: [ "food", 800 ],
minSpawnRange: .85,
maxSpawnRange: .9
} ], this.spawn = function(l, u, f, d) {
var h;
for (var m = 0; m < t.length; ++m) if (!t[m].active) {
h = t[m];
break;
}
return h || (h = new e(t.length, r, n, i, o, a, s, c), t.push(h)), h.init(l, u, f, d, this.aiTypes[d]),
h;
};
};
},
"./src/js/data/gameObject.js": function(t, e) {
t.exports = function(t) {
this.sid = t, this.init = function(t, e, n, i, r, a, o) {
a = a || {}, this.sentTo = {}, this.gridLocations = [], this.active = !0, this.doUpdate = a.doUpdate,
this.x = t, this.y = e, this.dir = n, this.xWiggle = 0, this.yWiggle = 0, this.scale = i,
this.type = r, this.id = a.id, this.owner = o, this.name = a.name, this.isItem = null != this.id,
this.group = a.group, this.health = a.health, this.maxHealth = a.health, this.layer = 2,
null != this.group ? this.layer = this.group.layer : 0 == this.type ? this.layer = 3 : 2 == this.type ? this.layer = 0 : 4 == this.type && (this.layer = -1),
this.colDiv = a.colDiv || 1, this.blocker = a.blocker, this.ignoreCollision = a.ignoreCollision,
this.dontGather = a.dontGather, this.hideFromEnemy = a.hideFromEnemy, this.friction = a.friction,
this.projDmg = a.projDmg, this.dmg = a.dmg, this.pDmg = a.pDmg, this.pps = a.pps,
this.zIndex = a.zIndex || 0, this.turnSpeed = a.turnSpeed, this.req = a.req, this.trap = a.trap,
this.healCol = a.healCol, this.teleport = a.teleport, this.boostSpeed = a.boostSpeed,
this.projectile = a.projectile, this.shootRange = a.shootRange, this.shootRate = a.shootRate,
this.shootCount = this.shootRate, this.spawnPoint = a.spawnPoint;
}, this.changeHealth = function(t, e) {
return this.health += t, this.health <= 0;
}, this.getScale = function(t, e) {
return t = t || 1, this.scale * (this.isItem || 2 == this.type || 3 == this.type || 4 == this.type ? 1 : .6 * t) * (e ? 1 : this.colDiv);
}, this.visibleToPlayer = function(t) {
return !this.hideFromEnemy || this.owner && (this.owner == t || this.owner.team && t.team == this.owner.team);
}, this.update = function(t) {
this.active && (this.xWiggle && (this.xWiggle *= Math.pow(.99, t)), this.yWiggle && (this.yWiggle *= Math.pow(.99, t)));
};
};
},
"./src/js/data/items.js": function(t, e) {
t.exports.groups = [ {
id: 0,
name: "food",
layer: 0
}, {
id: 1,
name: "walls",
place: !0,
limit: 30,
layer: 0
}, {
id: 2,
name: "spikes",
place: !0,
limit: 15,
layer: 0
}, {
id: 3,
name: "mill",
place: !0,
limit: 7,
sandboxLimit: 299,
layer: 1
}, {
id: 4,
name: "mine",
place: !0,
limit: 1,
layer: 0
}, {
id: 5,
name: "trap",
place: !0,
limit: 6,
layer: -1
}, {
id: 6,
name: "booster",
place: !0,
limit: 12,
sandboxLimit: 299,
layer: -1
}, {
id: 7,
name: "turret",
place: !0,
limit: 2,
layer: 1
}, {
id: 8,
name: "watchtower",
place: !0,
limit: 12,
layer: 1
}, {
id: 9,
name: "buff",
place: !0,
limit: 4,
layer: -1
}, {
id: 10,
name: "spawn",
place: !0,
limit: 1,
layer: -1
}, {
id: 11,
name: "sapling",
place: !0,
limit: 2,
layer: 0
}, {
id: 12,
name: "blocker",
place: !0,
limit: 3,
layer: -1
}, {
id: 13,
name: "teleporter",
place: !0,
limit: 2,
sandboxLimit: 299,
layer: -1
} ], e.projectiles = [ {
indx: 0,
layer: 0,
src: "arrow_1",
dmg: 25,
speed: 1.6,
scale: 103,
range: 1e3
}, {
indx: 1,
layer: 1,
dmg: 25,
scale: 20
}, {
indx: 0,
layer: 0,
src: "arrow_1",
dmg: 35,
speed: 2.5,
scale: 103,
range: 1200
}, {
indx: 0,
layer: 0,
src: "arrow_1",
dmg: 30,
speed: 2,
scale: 103,
range: 1200
}, {
indx: 1,
layer: 1,
dmg: 16,
scale: 20
}, {
indx: 0,
layer: 0,
src: "bullet_1",
dmg: 50,
speed: 3.6,
scale: 160,
range: 1400
} ], e.weapons = [ {
id: 0,
type: 0,
name: "tool hammer",
desc: "tool for gathering all resources",
src: "hammer_1",
length: 140,
width: 140,
xOff: -3,
yOff: 18,
dmg: 25,
range: 65,
gather: 1,
speed: 300
}, {
id: 1,
type: 0,
age: 2,
name: "hand axe",
desc: "gathers resources at a higher rate",
src: "axe_1",
length: 140,
width: 140,
xOff: 3,
yOff: 24,
dmg: 30,
spdMult: 1,
range: 70,
gather: 2,
speed: 400
}, {
id: 2,
type: 0,
age: 8,
pre: 1,
name: "great axe",
desc: "deal more damage and gather more resources",
src: "great_axe_1",
length: 140,
width: 140,
xOff: -8,
yOff: 25,
dmg: 35,
spdMult: 1,
range: 75,
gather: 4,
speed: 400
}, {
id: 3,
type: 0,
age: 2,
name: "short sword",
desc: "increased attack power but slower move speed",
src: "sword_1",
iPad: 1.3,
length: 130,
width: 210,
xOff: -8,
yOff: 46,
dmg: 35,
spdMult: .85,
range: 110,
gather: 1,
speed: 300
}, {
id: 4,
type: 0,
age: 8,
pre: 3,
name: "katana",
desc: "greater range and damage",
src: "samurai_1",
iPad: 1.3,
length: 130,
width: 210,
xOff: -8,
yOff: 59,
dmg: 40,
spdMult: .8,
range: 118,
gather: 1,
speed: 300
}, {
id: 5,
type: 0,
age: 2,
name: "polearm",
desc: "long range melee weapon",
src: "spear_1",
iPad: 1.3,
length: 130,
width: 210,
xOff: -8,
yOff: 53,
dmg: 45,
knock: .2,
spdMult: .82,
range: 142,
gather: 1,
speed: 700
}, {
id: 6,
type: 0,
age: 2,
name: "bat",
desc: "fast long range melee weapon",
src: "bat_1",
iPad: 1.3,
length: 110,
width: 180,
xOff: -8,
yOff: 53,
dmg: 20,
knock: .7,
range: 110,
gather: 1,
speed: 300
}, {
id: 7,
type: 0,
age: 2,
name: "daggers",
desc: "really fast short range weapon",
src: "dagger_1",
iPad: .8,
length: 110,
width: 110,
xOff: 18,
yOff: 0,
dmg: 20,
knock: .1,
range: 65,
gather: 1,
hitSlow: .1,
spdMult: 1.13,
speed: 100
}, {
id: 8,
type: 0,
age: 2,
name: "stick",
desc: "great for gathering but very weak",
src: "stick_1",
length: 140,
width: 140,
xOff: 3,
yOff: 24,
dmg: 1,
spdMult: 1,
range: 70,
gather: 7,
speed: 400
}, {
id: 9,
type: 1,
age: 6,
name: "hunting bow",
desc: "bow used for ranged combat and hunting",
src: "bow_1",
req: [ "wood", 4 ],
length: 120,
width: 120,
xOff: -6,
yOff: 0,
projectile: 0,
spdMult: .75,
speed: 600
}, {
id: 10,
type: 1,
age: 6,
name: "great hammer",
desc: "hammer used for destroying structures",
src: "great_hammer_1",
length: 140,
width: 140,
xOff: -9,
yOff: 25,
dmg: 10,
spdMult: .88,
range: 75,
sDmg: 7.5,
gather: 1,
speed: 400
}, {
id: 11,
type: 1,
age: 6,
name: "wooden shield",
desc: "blocks projectiles and reduces melee damage",
src: "shield_1",
length: 120,
width: 120,
shield: .2,
xOff: 6,
yOff: 0,
spdMult: .7
}, {
id: 12,
type: 1,
age: 8,
pre: 9,
name: "crossbow",
desc: "deals more damage and has greater range",
src: "crossbow_1",
req: [ "wood", 5 ],
aboveHand: !0,
armS: .75,
length: 120,
width: 120,
xOff: -4,
yOff: 0,
projectile: 2,
spdMult: .7,
speed: 700
}, {
id: 13,
type: 1,
age: 9,
pre: 12,
name: "repeater crossbow",
desc: "high firerate crossbow with reduced damage",
src: "crossbow_2",
req: [ "wood", 10 ],
aboveHand: !0,
armS: .75,
length: 120,
width: 120,
xOff: -4,
yOff: 0,
projectile: 3,
spdMult: .7,
speed: 230
}, {
id: 14,
type: 1,
age: 6,
name: "mc grabby",
desc: "steals resources from enemies",
src: "grab_1",
length: 130,
width: 210,
xOff: -8,
yOff: 53,
dmg: 0,
steal: 250,
knock: .2,
spdMult: 1.05,
range: 125,
gather: 0,
speed: 700
}, {
id: 15,
type: 1,
age: 9,
pre: 12,
name: "musket",
desc: "slow firerate but high damage and range",
src: "musket_1",
req: [ "stone", 10 ],
aboveHand: !0,
rec: .35,
armS: .6,
hndS: .3,
hndD: 1.6,
length: 205,
width: 205,
xOff: 25,
yOff: 0,
projectile: 5,
hideProjectile: !0,
spdMult: .6,
speed: 1500
} ], t.exports.list = [ {
group: t.exports.groups[0],
name: "apple",
desc: "restores 20 health when consumed",
req: [ "food", 10 ],
consume: function(t) {
return t.changeHealth(20, t);
},
heal: 20,
scale: 22,
holdOffset: 15
}, {
age: 3,
group: t.exports.groups[0],
name: "cookie",
desc: "restores 40 health when consumed",
req: [ "food", 15 ],
consume: function(t) {
return t.changeHealth(40, t);
},
heal: 40,
scale: 27,
holdOffset: 15
}, {
age: 7,
group: t.exports.groups[0],
name: "cheese",
desc: "restores 30 health and another 50 over 5 seconds",
req: [ "food", 25 ],
consume: function(t) {
return !!(t.changeHealth(30, t) || t.health < 100) && (t.dmgOverTime.dmg = -10,
t.dmgOverTime.doer = t, t.dmgOverTime.time = 5, !0);
},
heal: 30,
scale: 27,
holdOffset: 15
}, {
group: t.exports.groups[1],
name: "wood wall",
desc: "provides protection for your village",
req: [ "wood", 10 ],
projDmg: !0,
health: 380,
scale: 50,
holdOffset: 20,
placeOffset: -5
}, {
age: 3,
group: t.exports.groups[1],
name: "stone wall",
desc: "provides improved protection for your village",
req: [ "stone", 25 ],
health: 900,
scale: 50,
holdOffset: 20,
placeOffset: -5
}, {
age: 7,
group: t.exports.groups[1],
name: "castle wall",
desc: "provides powerful protection for your village",
req: [ "stone", 35 ],
health: 1500,
scale: 52,
holdOffset: 20,
placeOffset: -5
}, {
group: t.exports.groups[2],
name: "spikes",
desc: "damages enemies when they touch them",
req: [ "wood", 20, "stone", 5 ],
health: 400,
dmg: 20,
scale: 49,
spritePadding: -23,
holdOffset: 8,
placeOffset: -5
}, {
age: 5,
group: t.exports.groups[2],
name: "greater spikes",
desc: "damages enemies when they touch them",
req: [ "wood", 30, "stone", 10 ],
health: 500,
dmg: 35,
scale: 52,
spritePadding: -23,
holdOffset: 8,
placeOffset: -5
}, {
age: 9,
group: t.exports.groups[2],
name: "poison spikes",
desc: "poisons enemies when they touch them",
req: [ "wood", 35, "stone", 15 ],
health: 600,
dmg: 30,
pDmg: 5,
scale: 52,
spritePadding: -23,
holdOffset: 8,
placeOffset: -5
}, {
age: 9,
group: t.exports.groups[2],
name: "spinning spikes",
desc: "damages enemies when they touch them",
req: [ "wood", 30, "stone", 20 ],
health: 500,
dmg: 45,
turnSpeed: .003,
scale: 52,
spritePadding: -23,
holdOffset: 8,
placeOffset: -5
}, {
group: t.exports.groups[3],
name: "windmill",
desc: "generates gold over time",
req: [ "wood", 50, "stone", 10 ],
health: 400,
pps: 1,
turnSpeed: .0016,
spritePadding: 25,
iconLineMult: 12,
scale: 45,
holdOffset: 20,
placeOffset: 5
}, {
age: 5,
group: t.exports.groups[3],
name: "faster windmill",
desc: "generates more gold over time",
req: [ "wood", 60, "stone", 20 ],
health: 500,
pps: 1.5,
turnSpeed: .0025,
spritePadding: 25,
iconLineMult: 12,
scale: 47,
holdOffset: 20,
placeOffset: 5
}, {
age: 8,
group: t.exports.groups[3],
name: "power mill",
desc: "generates more gold over time",
req: [ "wood", 100, "stone", 50 ],
health: 800,
pps: 2,
turnSpeed: .005,
spritePadding: 25,
iconLineMult: 12,
scale: 47,
holdOffset: 20,
placeOffset: 5
}, {
age: 5,
group: t.exports.groups[4],
type: 2,
name: "mine",
desc: "allows you to mine stone",
req: [ "wood", 20, "stone", 100 ],
iconLineMult: 12,
scale: 65,
holdOffset: 20,
placeOffset: 0
}, {
age: 5,
group: t.exports.groups[11],
type: 0,
name: "sapling",
desc: "allows you to farm wood",
req: [ "wood", 150 ],
iconLineMult: 12,
colDiv: .5,
scale: 110,
holdOffset: 50,
placeOffset: -15
}, {
age: 4,
group: t.exports.groups[5],
name: "pit trap",
desc: "pit that traps enemies if they walk over it",
req: [ "wood", 30, "stone", 30 ],
trap: !0,
ignoreCollision: !0,
hideFromEnemy: !0,
health: 500,
colDiv: .2,
scale: 50,
holdOffset: 20,
placeOffset: -5
}, {
age: 4,
group: t.exports.groups[6],
name: "boost pad",
desc: "provides boost when stepped on",
req: [ "stone", 20, "wood", 5 ],
ignoreCollision: !0,
boostSpeed: 1.5,
health: 150,
colDiv: .7,
scale: 45,
holdOffset: 20,
placeOffset: -5
}, {
age: 7,
group: t.exports.groups[7],
doUpdate: !0,
name: "turret",
desc: "defensive structure that shoots at enemies",
req: [ "wood", 200, "stone", 150 ],
health: 800,
projectile: 1,
shootRange: 700,
shootRate: 2200,
scale: 43,
holdOffset: 20,
placeOffset: -5
}, {
age: 7,
group: t.exports.groups[8],
name: "platform",
desc: "platform to shoot over walls and cross over water",
req: [ "wood", 20 ],
ignoreCollision: !0,
zIndex: 1,
health: 300,
scale: 43,
holdOffset: 20,
placeOffset: -5
}, {
age: 7,
group: t.exports.groups[9],
name: "healing pad",
desc: "standing on it will slowly heal you",
req: [ "wood", 30, "food", 10 ],
ignoreCollision: !0,
healCol: 15,
health: 400,
colDiv: .7,
scale: 45,
holdOffset: 20,
placeOffset: -5
}, {
age: 9,
group: t.exports.groups[10],
name: "spawn pad",
desc: "you will spawn here when you die but it will dissapear",
req: [ "wood", 100, "stone", 100 ],
health: 400,
ignoreCollision: !0,
spawnPoint: !0,
scale: 45,
holdOffset: 20,
placeOffset: -5
}, {
age: 7,
group: t.exports.groups[12],
name: "blocker",
desc: "blocks building in radius",
req: [ "wood", 30, "stone", 25 ],
ignoreCollision: !0,
blocker: 300,
health: 400,
colDiv: .7,
scale: 45,
holdOffset: 20,
placeOffset: -5
}, {
age: 7,
group: t.exports.groups[13],
name: "teleporter",
desc: "teleports you to a random point on the map",
req: [ "wood", 60, "stone", 60 ],
ignoreCollision: !0,
teleport: !0,
health: 200,
colDiv: .7,
scale: 45,
holdOffset: 20,
placeOffset: -5
} ];
for (var n = 0; n < t.exports.list.length; ++n) t.exports.list[n].id = n;
if ("undefined" != typeof window) ;
},
"./src/js/data/mapManager.js": function(t, e) {
t.exports = {};
},
"./src/js/data/objectManager.js": function(t, e) {
var n = Math.floor;
var i = Math.abs;
var r = Math.cos;
var a = Math.sin;
Math.pow;
var o = Math.sqrt;
t.exports = function(t, e, s, c, l, u) {
var f, d;
this.objects = e, this.grids = {}, this.updateObjects = [];
var h = c.mapScale / c.colGrid;
this.setObjectGrids = function(t) {
var e = Math.min(c.mapScale, Math.max(0, t.x));
var n = Math.min(c.mapScale, Math.max(0, t.y));
for (var i = 0; i < c.colGrid; ++i) {
f = i * h;
for (var r = 0; r < c.colGrid; ++r) d = r * h, e + t.scale >= f && e - t.scale <= f + h && n + t.scale >= d && n - t.scale <= d + h && (this.grids[i + "_" + r] || (this.grids[i + "_" + r] = []),
this.grids[i + "_" + r].push(t), t.gridLocations.push(i + "_" + r));
}
}, this.removeObjGrid = function(t) {
var e;
for (var n = 0; n < t.gridLocations.length; ++n) (e = this.grids[t.gridLocations[n]].indexOf(t)) >= 0 && this.grids[t.gridLocations[n]].splice(e, 1);
}, this.disableObj = function(t) {
if (t.active = !1, u) {
t.owner && t.pps && (t.owner.pps -= t.pps), this.removeObjGrid(t);
var e = this.updateObjects.indexOf(t);
e >= 0 && this.updateObjects.splice(e, 1);
}
}, this.hitObj = function(t, e) {
for (var n = 0; n < l.length; ++n) l[n].active && (t.sentTo[l[n].id] && (t.active ? l[n].canSee(t) && u.send(l[n].id, "L", s.fixTo(e, 1), t.sid) : u.send(l[n].id, "Q", t.sid)),
t.active || t.owner != l[n] || l[n].changeItemCount(t.group.id, -1));
};
var m = [];
var p;
var v;
this.getGridArrays = function(t, e, i) {
return f = n(t / h), d = n(e / h), m.length = 0, t + i >= (f + 1) * h && ((p = this.grids[f + 1 + "_" + d]) && m.push(p),
d && e - i <= d * h ? (p = this.grids[f + 1 + "_" + (d - 1)]) && m.push(p) : e + i >= (d + 1) * h && (p = this.grids[f + 1 + "_" + (d + 1)]) && m.push(p)),
f && t - i <= f * h && ((p = this.grids[f - 1 + "_" + d]) && m.push(p), d && e - i <= d * h ? (p = this.grids[f - 1 + "_" + (d - 1)]) && m.push(p) : e + i >= (d + 1) * h && (p = this.grids[f - 1 + "_" + (d + 1)]) && m.push(p)),
e + i >= (d + 1) * h && (p = this.grids[f + "_" + (d + 1)]) && m.push(p), d && e - i <= d * h && (p = this.grids[f + "_" + (d - 1)]) && m.push(p),
m;
}, this.add = function(n, i, r, a, o, s, c, l, f) {
v = null;
for (var d = 0; d < e.length; ++d) if (e[d].sid == n) {
v = e[d];
break;
}
if (!v) for (d = 0; d < e.length; ++d) if (!e[d].active) {
v = e[d];
break;
}
v || (v = new t(n), e.push(v)), l && (v.sid = n), v.init(i, r, a, o, s, c, f), u && (this.setObjectGrids(v),
v.doUpdate && this.updateObjects.push(v));
}, this.disableBySid = function(t) {
for (const n of e) if (n.sid == t) {
e.splice(e.indexOf(n), 1);
break;
}
}, this.removeAllItems = function(t, n) {
const i = e.filter(e => e.owner && e.owner.sid == t);
for (const t of i) e.splice(e.indexOf(t), 1);
}, this.fetchSpawnObj = function(t) {
var n = null;
for (var i = 0; i < e.length; ++i) if ((v = e[i]).active && v.owner && v.owner.sid == t && v.spawnPoint) {
n = [ v.x, v.y ], this.disableObj(v), u.broadcast("Q", v.sid), v.owner && v.owner.changeItemCount(v.group.id, -1);
break;
}
return n;
}, this.checkItemLocation = function(t, e, n, i, r, a, o, l) {
for (var u = 0; u < l.length; ++u) {
var f = l[u].blocker ? l[u].blocker : l[u].getScale(i, l[u].isItem);
if (l[u].active && s.getDistance(t, e, l[u].x, l[u].y) < n + f) return !1;
}
return !(!a && 18 != r && e >= c.mapScale / 2 - c.riverWidth / 2 && e <= c.mapScale / 2 + c.riverWidth / 2);
}, this.addProjectile = function(t, e, n, i, r) {
var a = items.projectiles[r];
var o;
for (var c = 0; c < projectiles.length; ++c) if (!projectiles[c].active) {
o = projectiles[c];
break;
}
o || (o = new Projectile(l, s), projectiles.push(o)), o.init(r, t, e, n, a.speed, i, a.scale);
}, this.checkCollision = function(t, e, n) {
n = n || 1;
var l = t.x - e.x;
var u = t.y - e.y;
var f = t.scale + e.scale;
if (i(l) <= f || i(u) <= f) {
f = t.scale + (e.getScale ? e.getScale() : e.scale);
var d = o(l * l + u * u) - f;
if (d <= 0) {
if (e.ignoreCollision) !e.trap || t.noTrap || e.owner == t || e.owner && e.owner.team && e.owner.team == t.team ? e.boostSpeed ? (t.xVel += n * e.boostSpeed * (e.weightM || 1) * r(e.dir),
t.yVel += n * e.boostSpeed * (e.weightM || 1) * a(e.dir)) : e.healCol ? t.healCol = e.healCol : e.teleport && (t.x = s.randInt(0, c.mapScale),
t.y = s.randInt(0, c.mapScale)) : (t.lockMove = !0, e.hideFromEnemy = !1); else {
var h = s.getDirection(t.x, t.y, e.x, e.y);
s.getDistance(t.x, t.y, e.x, e.y);
if (e.isPlayer ? (d = -1 * d / 2, t.x += d * r(h), t.y += d * a(h), e.x -= d * r(h),
e.y -= d * a(h)) : (t.x = e.x + f * r(h), t.y = e.y + f * a(h), t.xVel *= .75, t.yVel *= .75),
e.dmg && e.owner != t && (!e.owner || !e.owner.team || e.owner.team != t.team)) {
t.changeHealth(-e.dmg, e.owner, e);
var m = 1.5 * (e.weightM || 1);
t.xVel += m * r(h), t.yVel += m * a(h), !e.pDmg || t.skin && t.skin.poisonRes || (t.dmgOverTime.dmg = e.pDmg,
t.dmgOverTime.time = 5, t.dmgOverTime.doer = e.owner), t.colDmg && e.health && (e.changeHealth(-t.colDmg) && this.disableObj(e),
this.hitObj(e, s.getDirection(t.x, t.y, e.x, e.y)));
}
}
return e.zIndex > t.zIndex && (t.zIndex = e.zIndex), !0;
}
}
return !1;
};
};
},
"./src/js/data/player.js": function(t, e, n) {
var i = new (n("./node_modules/bad-words/lib/badwords.js"));
i.addWords('jew', 'black', 'baby', 'child', 'white', 'porn', 'pedo', 'trump', 'clinton', 'hitler', 'nazi', 'gay', 'pride', 'sex', 'pleasure', 'touch', 'poo', 'kids', 'rape', 'white power', 'nigga', 'nig nog', 'doggy', 'rapist', 'boner', 'nigger', 'nigg', 'finger', 'nogger', 'nagger', 'nig', 'fag', 'gai', 'pole', 'stripper', "penis", 'vagina', 'pussy', 'nazi', 'hitler', 'stalin', 'burn', 'chamber', 'cock', 'peen', 'dick', 'spick', 'nieger', 'die', 'satan', 'n|ig', 'nlg', 'cunt', 'c0ck', 'fag', 'lick', 'condom', 'anal', 'shit', 'phile', 'little', 'kids', 'free KR', 'tiny', 'sidney', 'ass', 'kill', '.io', '(dot)', '[dot]', 'mini', 'whiore', 'whore', 'faggot', 'github', '1337', '666', 'satan', 'senpa', 'discord', 'd1scord', 'mistik', '.io', 'senpa.io', 'sidney', 'sid', 'senpaio', 'vries', 'asa');
var r = Math.abs;
var a = Math.cos;
var o = Math.sin;
var s = Math.pow;
var c = Math.sqrt;
t.exports = function(t, e, n, l, u, f, d, h, m, p, v, g, b, k) {
this.id = t, this.sid = e, this.tmpScore = 0, this.team = null, this.skinIndex = 0,
this.tailIndex = 0, this.hitTime = 0, this.tails = {};
for (let t = 0; t < v.length; ++t) v[t].price <= 0 && (this.tails[v[t].id] = 1);
this.skins = {};
for (let t = 0; t < p.length; ++t) p[t].price <= 0 && (this.skins[p[t].id] = 1);
this.points = 0, this.dt = 0, this.hidden = !1, this.itemCounts = {}, this.dist2 = 0,
this.isPlayer = !0, this.pps = 0, this.moveDir = void 0, this.skinRot = 0, this.lastPing = 0,
this.iconIndex = 0, this.skinColor = 0, this.spawn = function(t) {
this.weaponVariants = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], this.spikeDamage = 0,
this.active = !0, this.alive = !0, this.lockMove = !1, this.lockDir = !1, this.chatCountdown = 0,
this.shameCount = 0, this.shameTimer = 0, this.sentTo = {}, this.gathering = 0,
this.shooting = {}, this.autoGather = 0, this.animTime = 0, this.animSpeed = 0,
this.mouseState = 0, this.buildIndex = -1, this.weaponIndex = 0, this.weaponVariant = 0,
this.dmgOverTime = {}, this.noMovTimer = 0, this.maxXP = 300, this.XP = 0, this.age = 1,
this.kills = 0, this.upgrAge = 2, this.upgradePoints = 0, this.x = 0, this.y = 0,
this.zIndex = 0, this.xVel = 0, this.yVel = 0, this.slowMult = 1, this.dir = 0,
this.dirPlus = 0, this.targetDir = 0, this.targetAngle = 0, this.maxHealth = 100,
this.health = this.maxHealth, this.scale = n.playerScale, this.speed = n.playerSpeed,
this.resetMoveDir(), this.resetResources(t), this.items = [ 0, 3, 6, 10 ], this.weapons = [ 0 ],
this.shootCount = 0, this.weaponXP = [], this.reloads = {
0: 0,
1: 0,
2: 0,
3: 0,
4: 0,
5: 0,
6: 0,
7: 0,
8: 0,
9: 0,
10: 0,
11: 0,
12: 0,
13: 0,
14: 0,
15: 0,
53: 0
};
}, this.getItemType = function(t) {
let e = this.items.findIndex(e => e == t);
return -1 != e ? e : m.checkItem.index(t, this.items);
}, this.resetMoveDir = function() {
this.moveDir = void 0;
}, this.resetResources = function(t) {
for (var e = 0; e < n.resourceTypes.length; ++e) this[n.resourceTypes[e]] = t ? 100 : 0;
}, this.addItem = function(t) {
var e = m.list[t];
if (e) {
for (var n = 0; n < this.items.length; ++n) if (m.list[this.items[n]].group == e.group) return this.buildIndex == this.items[n] && (this.buildIndex = t),
this.items[n] = t, !0;
return this.items.push(t), !0;
}
return !1;
}, this.setUserData = function(t) {
if (t) {
this.name = "unknown";
var e = t.name + "";
var r = !1;
var a = (e = (e = (e = (e = e.slice(0, n.maxNameLength)).replace(/[^\w:\(\)\/? -]+/gim, " ")).replace(/[^\x00-\x7F]/g, " ")).trim()).toLowerCase().replace(/\s/g, "").replace(/1/g, "i").replace(/0/g, "o").replace(/5/g, "s");
for (var o of i.list) if (-1 != a.indexOf(o)) {
r = !0;
break;
}
e.length > 0 && !r && (this.name = e), this.skinColor = 0, n.skinColors[t.skin] && (this.skinColor = t.skin);
}
}, this.getData = function() {
return [ this.id, this.sid, this.name, l.fixTo(this.x, 2), l.fixTo(this.y, 2), l.fixTo(this.dir, 3), this.health, this.maxHealth, this.scale, this.skinColor ];
}, this.setData = function(t) {
this.id = t[0], this.sid = t[1], this.name = t[2], this.x = t[3], this.y = t[4],
this.dir = t[5], this.health = t[6], this.maxHealth = t[7], this.scale = t[8], this.skinColor = t[9];
};
var y = 0;
this.findID = function(t, e) {
return t.find(t => t.id == e);
}, this.update = function(t) {
if (this.alive) {
if (this.shameTimer > 0 && (this.shameTimer -= t, this.shameTimer <= 0 && (this.shameTimer = 0,
this.shameCount = 0)), (y -= t) <= 0) {
var e = (this.skin && this.skin.healthRegen ? this.skin.healthRegen : 0) + (this.tail && this.tail.healthRegen ? this.tail.healthRegen : 0);
e && this.changeHealth(e, this), this.dmgOverTime.dmg && (this.changeHealth(-this.dmgOverTime.dmg, this.dmgOverTime.doer),
this.dmgOverTime.time -= 1, this.dmgOverTime.time <= 0 && (this.dmgOverTime.dmg = 0)),
this.healCol && this.changeHealth(this.healCol, this), y = 1e3;
}
if (this.alive) {
if (this.slowMult < 1 && (this.slowMult += 8e-4 * t, this.slowMult > 1 && (this.slowMult = 1)),
this.noMovTimer += t, (this.xVel || this.yVel) && (this.noMovTimer = 0), this.lockMove) this.xVel = 0,
this.yVel = 0; else {
let e = {
skin: this.findID(p, this.skinIndex),
tail: this.findID(v, this.tailIndex)
};
let s = (this.buildIndex >= 0 ? .5 : 1) * (m.weapons[this.weaponIndex].spdMult || 1) * (e.skin && e.skin.spdMult || 1) * (e.tail && e.tail.spdMult || 1) * (this.y <= n.snowBiomeTop ? e.skin && e.skin.coldM ? 1 : n.snowSpeed : 1) * this.slowMult;
!this.zIndex && this.y >= n.mapScale / 2 - n.riverWidth / 2 && this.y <= n.mapScale / 2 + n.riverWidth / 2 && (this.skin && this.skin.watrImm ? (s *= .75,
this.xVel += .4 * n.waterCurrent * t) : (s *= .33, this.xVel += n.waterCurrent * t));
var i = null != this.moveDir ? a(this.moveDir) : 0;
var r = null != this.moveDir ? o(this.moveDir) : 0;
var h = c(i * i + r * r);
0 != h && (i /= h, r /= h), i && (this.xVel += i * this.speed * s * t), r && (this.yVel += r * this.speed * s * t);
}
var g;
this.zIndex = 0, this.lockMove = !1, this.healCol = 0;
var b = l.getDistance(0, 0, this.xVel * t, this.yVel * t);
var k = Math.min(4, Math.max(1, Math.round(b / 40)));
var w = 1 / k;
for (var _ = 0; _ < k; ++_) {
this.xVel && (this.x += this.xVel * t * w), this.yVel && (this.y += this.yVel * t * w),
g = f.getGridArrays(this.x, this.y, this.scale);
for (var x = 0; x < g.length; ++x) for (var M = 0; M < g[x].length; ++M) g[x][M].active && f.checkCollision(this, g[x][M], w);
}
for (_ = (S = d.indexOf(this)) + 1; _ < d.length; ++_) d[_] != this && d[_].alive && f.checkCollision(this, d[_]);
if (this.xVel && (this.xVel *= s(n.playerDecel, t), this.xVel <= .01 && this.xVel >= -.01 && (this.xVel = 0)),
this.yVel && (this.yVel *= s(n.playerDecel, t), this.yVel <= .01 && this.yVel >= -.01 && (this.yVel = 0)),
this.x - this.scale < 0 ? this.x = this.scale : this.x + this.scale > n.mapScale && (this.x = n.mapScale - this.scale),
this.y - this.scale < 0 ? this.y = this.scale : this.y + this.scale > n.mapScale && (this.y = n.mapScale - this.scale),
this.buildIndex < 0) if (this.reloads[this.weaponIndex] > 0) this.reloads[this.weaponIndex] -= t,
this.gathering = this.mouseState; else if (this.gathering || this.autoGather) {
var j = !0;
if (null != m.weapons[this.weaponIndex].gather) this.gather(d); else if (null != m.weapons[this.weaponIndex].projectile && this.hasRes(m.weapons[this.weaponIndex], this.skin ? this.skin.projCost : 0)) {
this.useRes(m.weapons[this.weaponIndex], this.skin ? this.skin.projCost : 0), this.noMovTimer = 0;
var S = m.weapons[this.weaponIndex].projectile;
var A = 2 * this.scale;
var T = this.skin && this.skin.aMlt ? this.skin.aMlt : 1;
m.weapons[this.weaponIndex].rec && (this.xVel -= m.weapons[this.weaponIndex].rec * a(this.dir),
this.yVel -= m.weapons[this.weaponIndex].rec * o(this.dir)), u.addProjectile(this.x + A * a(this.dir), this.y + A * o(this.dir), this.dir, m.projectiles[S].range * T, m.projectiles[S].speed * T, S, this, null, this.zIndex);
} else j = !1;
this.gathering = this.mouseState, j && (this.reloads[this.weaponIndex] = m.weapons[this.weaponIndex].speed * (this.skin && this.skin.atkSpd || 1));
}
}
}
}, this.addWeaponXP = function(t) {
this.weaponXP[this.weaponIndex] || (this.weaponXP[this.weaponIndex] = 0), this.weaponXP[this.weaponIndex] += t;
}, this.earnXP = function(t) {
this.age < n.maxAge && (this.XP += t, this.XP >= this.maxXP ? (this.age < n.maxAge ? (this.age++,
this.XP = 0, this.maxXP *= 1.2) : this.XP = this.maxXP, this.upgradePoints++, g.send(this.id, "U", this.upgradePoints, this.upgrAge),
g.send(this.id, "T", this.XP, l.fixTo(this.maxXP, 1), this.age)) : g.send(this.id, "T", this.XP));
}, this.changeHealth = function(t, e) {
if (t > 0 && this.health >= this.maxHealth) return !1;
t < 0 && this.skin && (t *= this.skin.dmgMult || 1), t < 0 && this.tail && (t *= this.tail.dmgMult || 1),
t < 0 && (this.hitTime = Date.now()), this.health += t, this.health > this.maxHealth && (t -= this.health - this.maxHealth,
this.health = this.maxHealth), this.health <= 0 && this.kill(e);
for (var n = 0; n < d.length; ++n) this.sentTo[d[n].id] && g.send(d[n].id, "O", this.sid, Math.round(this.health));
return !e || !e.canSee(this) || e == this && t < 0 || g.send(e.id, "8", Math.round(this.x), Math.round(this.y), Math.round(-t), 1),
!0;
}, this.kill = function(t) {
t && t.alive && (t.kills++, t.skin && t.skin.goldSteal ? b(t, Math.round(this.points / 2)) : b(t, Math.round(100 * this.age * (t.skin && t.skin.kScrM ? t.skin.kScrM : 1))),
g.send(t.id, "N", "kills", t.kills, 1)), this.alive = !1, g.send(this.id, "P"),
k();
}, this.addResource = function(t, e, i) {
!i && e > 0 && this.addWeaponXP(e), 3 == t ? b(this, e, !0) : (this[n.resourceTypes[t]] += e,
g.send(this.id, "N", n.resourceTypes[t], this[n.resourceTypes[t]], 1));
}, this.changeItemCount = function(t, e) {
this.itemCounts[t] = this.itemCounts[t] || 0, this.itemCounts[t] += e, g.send(this.id, "S", t, this.itemCounts[t]);
}, this.buildItem = function(t) {
var e = this.scale + t.scale + (t.placeOffset || 0);
var n = this.x + e * a(this.dir);
var i = this.y + e * o(this.dir);
if (this.canBuild(t) && !(t.consume && this.skin && this.skin.noEat) && (t.consume || f.checkItemLocation(n, i, t.scale, .6, t.id, !1, this))) {
var r = !1;
if (t.consume) {
if (this.hitTime) {
var s = Date.now() - this.hitTime;
this.hitTime = 0, s <= 120 ? (this.shameCount++, this.shameCount >= 8 && (this.shameTimer = 3e4,
this.shameCount = 0)) : (this.shameCount -= 2, this.shameCount <= 0 && (this.shameCount = 0));
}
this.shameTimer <= 0 && (r = t.consume(this));
} else r = !0, t.group.limit && this.changeItemCount(t.group.id, 1), t.pps && (this.pps += t.pps),
f.add(f.objects.length, n, i, this.dir, t.scale, t.type, t, !1, this);
r && (this.useRes(t), this.buildIndex = -1);
}
}, this.hasRes = function(t, e) {
for (var n = 0; n < t.req.length; ) {
if (this[t.req[n]] < Math.round(t.req[n + 1] * (e || 1))) return !1;
n += 2;
}
return !0;
}, this.useRes = function(t, e) {
if (!n.inSandbox) for (var i = 0; i < t.req.length; ) this.addResource(n.resourceTypes.indexOf(t.req[i]), -Math.round(t.req[i + 1] * (e || 1))),
i += 2;
}, this.canBuild = function(t) {
return !!n.inSandbox || !(t.group.limit && this.itemCounts[t.group.id] >= t.group.limit) && this.hasRes(t);
}, this.gather = function() {
this.noMovTimer = 0, this.slowMult -= m.weapons[this.weaponIndex].hitSlow || .3,
this.slowMult < 0 && (this.slowMult = 0);
var t = n.fetchVariant(this);
var e = t.poison;
var i = t.val;
var r = {};
var s, c, u;
var p = f.getGridArrays(this.x, this.y, m.weapons[this.weaponIndex].range);
for (var v = 0; v < p.length; ++v) for (var g = 0; g < p[v].length; ++g) if ((c = p[v][g]).active && !c.dontGather && !r[c.sid] && c.visibleToPlayer(this) && l.getDistance(this.x, this.y, c.x, c.y) - c.scale <= m.weapons[this.weaponIndex].range && (s = l.getDirection(c.x, c.y, this.x, this.y),
l.getAngleDist(s, this.dir) <= n.gatherAngle)) {
if (r[c.sid] = 1, c.health) {
if (c.changeHealth(-m.weapons[this.weaponIndex].dmg * i * (m.weapons[this.weaponIndex].sDmg || 1) * (this.skin && this.skin.bDmg ? this.skin.bDmg : 1), this)) {
for (var b = 0; b < c.req.length; ) this.addResource(n.resourceTypes.indexOf(c.req[b]), c.req[b + 1]),
b += 2;
f.disableObj(c);
}
} else {
this.earnXP(4 * m.weapons[this.weaponIndex].gather);
var k = m.weapons[this.weaponIndex].gather + (3 == c.type ? 4 : 0);
this.skin && this.skin.extraGold && this.addResource(3, 1), this.addResource(c.type, k);
}
u = !0, f.hitObj(c, s);
}
for (g = 0; g < d.length + h.length; ++g) if ((c = d[g] || h[g - d.length]) != this && c.alive && (!c.team || c.team != this.team) && l.getDistance(this.x, this.y, c.x, c.y) - 1.8 * c.scale <= m.weapons[this.weaponIndex].range && (s = l.getDirection(c.x, c.y, this.x, this.y),
l.getAngleDist(s, this.dir) <= n.gatherAngle)) {
var y = m.weapons[this.weaponIndex].steal;
y && c.addResource && (y = Math.min(c.points || 0, y), this.addResource(3, y), c.addResource(3, -y));
var w = i;
null != c.weaponIndex && m.weapons[c.weaponIndex].shield && l.getAngleDist(s + Math.PI, c.dir) <= n.shieldAngle && (w = m.weapons[c.weaponIndex].shield);
var _ = m.weapons[this.weaponIndex].dmg * (this.skin && this.skin.dmgMultO ? this.skin.dmgMultO : 1) * (this.tail && this.tail.dmgMultO ? this.tail.dmgMultO : 1);
var x = .3 * (c.weightM || 1) + (m.weapons[this.weaponIndex].knock || 0);
c.xVel += x * a(s), c.yVel += x * o(s), this.skin && this.skin.healD && this.changeHealth(_ * w * this.skin.healD, this),
this.tail && this.tail.healD && this.changeHealth(_ * w * this.tail.healD, this),
c.skin && c.skin.dmg && 1 == w && this.changeHealth(-_ * c.skin.dmg, c), c.tail && c.tail.dmg && 1 == w && this.changeHealth(-_ * c.tail.dmg, c),
!(c.dmgOverTime && this.skin && this.skin.poisonDmg) || c.skin && c.skin.poisonRes || (c.dmgOverTime.dmg = this.skin.poisonDmg,
c.dmgOverTime.time = this.skin.poisonTime || 1, c.dmgOverTime.doer = this), !c.dmgOverTime || !e || c.skin && c.skin.poisonRes || (c.dmgOverTime.dmg = 5,
c.dmgOverTime.time = 5, c.dmgOverTime.doer = this), c.skin && c.skin.dmgK && (this.xVel -= c.skin.dmgK * a(s),
this.yVel -= c.skin.dmgK * o(s)), c.changeHealth(-_ * w, this, this);
}
this.sendAnimation(u ? 1 : 0);
}, this.sendAnimation = function(t) {
for (var e = 0; e < d.length; ++e) this.sentTo[d[e].id] && this.canSee(d[e]) && g.send(d[e].id, "K", this.sid, t ? 1 : 0, this.weaponIndex);
};
var w = 0;
var _ = 0;
this.animate = function(t) {
this.animTime > 0 && (this.animTime -= t, this.animTime <= 0 ? (this.animTime = 0,
this.dirPlus = 0, w = 0, _ = 0) : 0 == _ ? (w += t / (this.animSpeed * n.hitReturnRatio),
this.dirPlus = l.lerp(0, this.targetAngle, Math.min(1, w)), w >= 1 && (w = 1, _ = 1)) : (w -= t / (this.animSpeed * (1 - n.hitReturnRatio)),
this.dirPlus = l.lerp(0, this.targetAngle, Math.max(0, w))));
}, this.startAnim = function(t, e) {
this.animTime = this.animSpeed = m.weapons[e].speed, this.targetAngle = t ? -n.hitAngle : -Math.PI,
w = 0, _ = 0;
}, this.canSee = function(t) {
if (!t) return !1;
if (t.skin && t.skin.invisTimer && t.noMovTimer >= t.skin.invisTimer) return !1;
var e = r(t.x - this.x) - t.scale;
var i = r(t.y - this.y) - t.scale;
return e <= n.maxScreenWidth / 2 * 1.3 && i <= n.maxScreenHeight / 2 * 1.3;
};
};
},
"./src/js/data/projectile.js": function(t, e) {
t.exports = function(t, e, n, i, r, a, o) {
this.init = function(t, e, n, i, r, a, s, c, l) {
this.active = !0, this.indx = t, this.x = e, this.y = n, this.dir = i, this.skipMov = !0,
this.speed = r, this.dmg = a, this.scale = c, this.range = s, this.owner = l, o && (this.sentTo = {});
};
var s = [];
var c;
this.update = function(l) {
if (this.active) {
var u = this.speed * l;
var f;
if (this.skipMov ? this.skipMov = !1 : (this.x += u * Math.cos(this.dir), this.y += u * Math.sin(this.dir),
this.range -= u, this.range <= 0 && (this.x += this.range * Math.cos(this.dir),
this.y += this.range * Math.sin(this.dir), u = 1, this.range = 0, this.active = !1)),
o) {
for (var d = 0; d < t.length; ++d) !this.sentTo[t[d].id] && t[d].canSee(this) && (this.sentTo[t[d].id] = 1,
o.send(t[d].id, "X", a.fixTo(this.x, 1), a.fixTo(this.y, 1), a.fixTo(this.dir, 2), a.fixTo(this.range, 1), this.speed, this.indx, this.layer, this.sid));
s.length = 0;
for (d = 0; d < t.length + e.length; ++d) !(c = t[d] || e[d - t.length]).alive || c == this.owner || this.owner.team && c.team == this.owner.team || a.lineInRect(c.x - c.scale, c.y - c.scale, c.x + c.scale, c.y + c.scale, this.x, this.y, this.x + u * Math.cos(this.dir), this.y + u * Math.sin(this.dir)) && s.push(c);
var h = n.getGridArrays(this.x, this.y, this.scale);
for (var m = 0; m < h.length; ++m) for (var p = 0; p < h[m].length; ++p) f = (c = h[m][p]).getScale(),
c.active && this.ignoreObj != c.sid && this.layer <= c.layer && s.indexOf(c) < 0 && !c.ignoreCollision && a.lineInRect(c.x - f, c.y - f, c.x + f, c.y + f, this.x, this.y, this.x + u * Math.cos(this.dir), this.y + u * Math.sin(this.dir)) && s.push(c);
if (s.length > 0) {
var v = null;
var g = null;
var b = null;
for (d = 0; d < s.length; ++d) b = a.getDistance(this.x, this.y, s[d].x, s[d].y),
(null == g || b < g) && (g = b, v = s[d]);
if (v.isPlayer || v.isAI) {
var k = .3 * (v.weightM || 1);
v.xVel += k * Math.cos(this.dir), v.yVel += k * Math.sin(this.dir), null != v.weaponIndex && i.weapons[v.weaponIndex].shield && a.getAngleDist(this.dir + Math.PI, v.dir) <= r.shieldAngle || v.changeHealth(-this.dmg, this.owner, this.owner);
} else {
v.projDmg && v.health && v.changeHealth(-this.dmg) && n.disableObj(v);
for (d = 0; d < t.length; ++d) t[d].active && (v.sentTo[t[d].id] && (v.active ? t[d].canSee(v) && o.send(t[d].id, "L", a.fixTo(this.dir, 2), v.sid) : o.send(t[d].id, "Q", v.sid)),
v.active || v.owner != t[d] || t[d].changeItemCount(v.group.id, -1));
}
this.active = !1;
for (d = 0; d < t.length; ++d) this.sentTo[t[d].id] && o.send(t[d].id, "Y", this.sid, a.fixTo(g, 1));
}
}
}
};
};
},
"./src/js/data/projectileManager.js": function(t, e) {
t.exports = function(t, e, n, i, r, a, o, s, c) {
this.addProjectile = function(l, u, f, d, h, m, p, v, g) {
var b = a.projectiles[m];
var k;
for (var y = 0; y < e.length; ++y) if (!e[y].active) {
k = e[y];
break;
}
return k || ((k = new t(n, i, r, a, o, s, c)).sid = e.length, e.push(k)), k.init(m, l, u, f, h, b.dmg, d, b.scale, p),
k.ignoreObj = v, k.layer = g || b.layer, k.src = b.src, k;
};
};
},
"./src/js/data/store.js": function(t, e) {
t.exports.hats = [ {
id: 45,
name: "Shame!",
dontSell: !0,
price: 0,
scale: 120,
desc: "hacks are for losers"
}, {
id: 51,
name: "Moo Cap",
price: 0,
scale: 120,
desc: "coolest mooer around"
}, {
id: 50,
name: "Apple Cap",
price: 0,
scale: 120,
desc: "apple farms remembers"
}, {
id: 28,
name: "Moo Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 29,
name: "Pig Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 30,
name: "Fluff Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 36,
name: "Pandou Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 37,
name: "Bear Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 38,
name: "Monkey Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 44,
name: "Polar Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 35,
name: "Fez Hat",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 42,
name: "Enigma Hat",
price: 0,
scale: 120,
desc: "join the enigma army"
}, {
id: 43,
name: "Blitz Hat",
price: 0,
scale: 120,
desc: "hey everybody i'm blitz"
}, {
id: 49,
name: "Bob XIII Hat",
price: 0,
scale: 120,
desc: "like and subscribe"
}, {
id: 57,
name: "Pumpkin",
price: 50,
scale: 120,
desc: "Spooooky"
}, {
id: 8,
name: "Bummle Hat",
price: 100,
scale: 120,
desc: "no effect"
}, {
id: 2,
name: "Straw Hat",
price: 500,
scale: 120,
desc: "no effect"
}, {
id: 15,
name: "Winter Cap",
price: 600,
scale: 120,
desc: "allows you to move at normal speed in snow",
coldM: 1
}, {
id: 5,
name: "Cowboy Hat",
price: 1e3,
scale: 120,
desc: "no effect"
}, {
id: 4,
name: "Ranger Hat",
price: 2e3,
scale: 120,
desc: "no effect"
}, {
id: 18,
name: "Explorer Hat",
price: 2e3,
scale: 120,
desc: "no effect"
}, {
id: 31,
name: "Flipper Hat",
price: 2500,
scale: 120,
desc: "have more control while in water",
watrImm: !0
}, {
id: 1,
name: "Marksman Cap",
price: 3e3,
scale: 120,
desc: "increases arrow speed and range",
aMlt: 1.3
}, {
id: 10,
name: "Bush Gear",
price: 3e3,
scale: 160,
desc: "allows you to disguise yourself as a bush"
}, {
id: 48,
name: "Halo",
price: 3e3,
scale: 120,
desc: "no effect"
}, {
id: 6,
name: "Soldier Helmet",
price: 4e3,
scale: 120,
desc: "reduces damage taken but slows movement",
spdMult: .94,
dmgMult: .75
}, {
id: 23,
name: "Anti Venom Gear",
price: 4e3,
scale: 120,
desc: "makes you immune to poison",
poisonRes: 1
}, {
id: 13,
name: "Medic Gear",
price: 5e3,
scale: 110,
desc: "slowly regenerates health over time",
healthRegen: 3
}, {
id: 9,
name: "Miners Helmet",
price: 5e3,
scale: 120,
desc: "earn 1 extra gold per resource",
extraGold: 1
}, {
id: 32,
name: "Musketeer Hat",
price: 5e3,
scale: 120,
desc: "reduces cost of projectiles",
projCost: .5
}, {
id: 7,
name: "Bull Helmet",
price: 6e3,
scale: 120,
desc: "increases damage done but drains health",
healthRegen: -5,
dmgMultO: 1.5,
spdMult: .96
}, {
id: 22,
name: "Emp Helmet",
price: 6e3,
scale: 120,
desc: "turrets won't attack but you move slower",
antiTurret: 1,
spdMult: .7
}, {
id: 12,
name: "Booster Hat",
price: 6e3,
scale: 120,
desc: "increases your movement speed",
spdMult: 1.16
}, {
id: 26,
name: "Barbarian Armor",
price: 8e3,
scale: 120,
desc: "knocks back enemies that attack you",
dmgK: .6
}, {
id: 21,
name: "Plague Mask",
price: 1e4,
scale: 120,
desc: "melee attacks deal poison damage",
poisonDmg: 5,
poisonTime: 6
}, {
id: 46,
name: "Bull Mask",
price: 1e4,
scale: 120,
desc: "bulls won't target you unless you attack them",
bullRepel: 1
}, {
id: 14,
name: "Windmill Hat",
topSprite: !0,
price: 1e4,
scale: 120,
desc: "generates points while worn",
pps: 1.5
}, {
id: 11,
name: "Spike Gear",
topSprite: !0,
price: 1e4,
scale: 120,
desc: "deal damage to players that damage you",
dmg: .45
}, {
id: 53,
name: "Turret Gear",
topSprite: !0,
price: 1e4,
scale: 120,
desc: "you become a walking turret",
turret: {
proj: 1,
range: 700,
rate: 2500
},
spdMult: .7
}, {
id: 20,
name: "Samurai Armor",
price: 12e3,
scale: 120,
desc: "increased attack speed and fire rate",
atkSpd: .78
}, {
id: 58,
name: "Dark Knight",
price: 12e3,
scale: 120,
desc: "restores health when you deal damage",
healD: .4
}, {
id: 27,
name: "Scavenger Gear",
price: 15e3,
scale: 120,
desc: "earn double points for each kill",
kScrM: 2
}, {
id: 40,
name: "Tank Gear",
price: 15e3,
scale: 120,
desc: "increased damage to buildings but slower movement",
spdMult: .3,
bDmg: 3.3
}, {
id: 52,
name: "Thief Gear",
price: 15e3,
scale: 120,
desc: "steal half of a players gold when you kill them",
goldSteal: .5
}, {
id: 55,
name: "Bloodthirster",
price: 2e4,
scale: 120,
desc: "Restore Health when dealing damage. And increased damage",
healD: .25,
dmgMultO: 1.2
}, {
id: 56,
name: "Assassin Gear",
price: 2e4,
scale: 120,
desc: "Go invisible when not moving. Can't eat. Increased speed",
noEat: !0,
spdMult: 1.1,
invisTimer: 1e3
} ], t.exports.accessories = [ {
id: 12,
name: "Snowball",
price: 1e3,
scale: 105,
xOff: 18,
desc: "no effect"
}, {
id: 9,
name: "Tree Cape",
price: 1e3,
scale: 90,
desc: "no effect"
}, {
id: 10,
name: "Stone Cape",
price: 1e3,
scale: 90,
desc: "no effect"
}, {
id: 3,
name: "Cookie Cape",
price: 1500,
scale: 90,
desc: "no effect"
}, {
id: 8,
name: "Cow Cape",
price: 2e3,
scale: 90,
desc: "no effect"
}, {
id: 11,
name: "Monkey Tail",
price: 2e3,
scale: 97,
xOff: 25,
desc: "Super speed but reduced damage",
spdMult: 1.35,
dmgMultO: .2
}, {
id: 17,
name: "Apple Basket",
price: 3e3,
scale: 80,
xOff: 12,
desc: "slowly regenerates health over time",
healthRegen: 1
}, {
id: 6,
name: "Winter Cape",
price: 3e3,
scale: 90,
desc: "no effect"
}, {
id: 4,
name: "Skull Cape",
price: 4e3,
scale: 90,
desc: "no effect"
}, {
id: 5,
name: "Dash Cape",
price: 5e3,
scale: 90,
desc: "no effect"
}, {
id: 2,
name: "Dragon Cape",
price: 6e3,
scale: 90,
desc: "no effect"
}, {
id: 1,
name: "Super Cape",
price: 8e3,
scale: 90,
desc: "no effect"
}, {
id: 7,
name: "Troll Cape",
price: 8e3,
scale: 90,
desc: "no effect"
}, {
id: 14,
name: "Thorns",
price: 1e4,
scale: 115,
xOff: 20,
desc: "no effect"
}, {
id: 15,
name: "Blockades",
price: 1e4,
scale: 95,
xOff: 15,
desc: "no effect"
}, {
id: 20,
name: "Devils Tail",
price: 1e4,
scale: 95,
xOff: 20,
desc: "no effect"
}, {
id: 16,
name: "Sawblade",
price: 12e3,
scale: 90,
spin: !0,
xOff: 0,
desc: "deal damage to players that damage you",
dmg: .15
}, {
id: 13,
name: "Angel Wings",
price: 15e3,
scale: 138,
xOff: 22,
desc: "slowly regenerates health over time",
healthRegen: 3
}, {
id: 19,
name: "Shadow Wings",
price: 15e3,
scale: 138,
xOff: 22,
desc: "increased movement speed",
spdMult: 1.1
}, {
id: 18,
name: "Blood Wings",
price: 2e4,
scale: 178,
xOff: 26,
desc: "restores health when you deal damage",
healD: .2
}, {
id: 21,
name: "Corrupt X Wings",
price: 2e4,
scale: 178,
xOff: 26,
desc: "deal damage to players that damage you",
dmg: .25
} ];
},
"./src/js/libs/animText.js": function(t, e) {
t.exports.AnimText = function() {
this.init = function(t, e, n, i, r, a, o) {
this.x = t, this.y = e, this.color = o, this.scale = n, this.startScale = this.scale,
this.maxScale = 1.5 * n, this.scaleSpeed = .7, this.speed = i, this.life = r, this.text = a;
}, this.update = function(t) {
this.life && (this.life -= t, this.y -= this.speed * t, this.scale += this.scaleSpeed * t,
this.scale >= this.maxScale ? (this.scale = this.maxScale, this.scaleSpeed *= -1) : this.scale <= this.startScale && (this.scale = this.startScale,
this.scaleSpeed = 0), this.life <= 0 && (this.life = 0));
}, this.render = function(t, e, n) {
t.fillStyle = this.color, t.font = this.scale + "px Hammersmith One", t.fillText(this.text, this.x - e, this.y - n);
};
}, t.exports.TextManager = function() {
this.texts = [], this.update = function(t, e, n, i) {
e.textBaseline = "middle", e.textAlign = "center";
for (var r = 0; r < this.texts.length; ++r) this.texts[r].life && (this.texts[r].update(t),
this.texts[r].render(e, n, i));
}, this.showText = function(e, n, i, r, a, o, s) {
var c;
for (var l = 0; l < this.texts.length; ++l) if (!this.texts[l].life) {
c = this.texts[l];
break;
}
c || (c = new t.exports.AnimText, this.texts.push(c)), c.init(e, n, i, r, a, o, s);
};
};
},
"./src/js/libs/io-client.js": function(t, e, n) {
var i = n("./node_modules/msgpack-lite/lib/browser.js");
n("./src/js/config.js");
var r = window.WebSocket;
var a = window.WebSocket && window.WebSocket.prototype.send;
var o = [ "M", "D", "9", "e", "F", "z", "H", "K", "L", "N", "b", "P", "Q", "c", "6", "S", "0" ];
var s = [ "A", "B", "C", "D", "E", "a", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "X", "Y", "Z", "g", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0" ];
var c = new Uint32Array([ 1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298 ]);
function l(t) {
var e = new Uint32Array([ 1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225 ]);
var n = t.length, i = 8 * n, r = n + 9;
var a = new Uint8Array(64 * Math.ceil(r / 64));
a.set(t), a[n] = 128;
var o = new DataView(a.buffer);
o.setUint32(a.length - 4, i >>> 0, !1), o.setUint32(a.length - 8, Math.floor(i / 4294967296), !1);
var s = new Uint32Array(64);
for (var l = 0; l < a.length; l += 64) {
for (var f = 0; f < 16; f++) s[f] = o.getUint32(l + 4 * f, !1);
for (f = 16; f < 64; f++) {
var d = u(s[f - 15], 7) ^ u(s[f - 15], 18) ^ s[f - 15] >>> 3;
var h = u(s[f - 2], 17) ^ u(s[f - 2], 19) ^ s[f - 2] >>> 10;
s[f] = s[f - 16] + d + s[f - 7] + h | 0;
}
var m = e[0], p = e[1], v = e[2], g = e[3], b = e[4], k = e[5], y = e[6], w = e[7];
for (f = 0; f < 64; f++) {
var _ = w + (d = u(b, 6) ^ u(b, 11) ^ u(b, 25)) + (h = b & k ^ ~b & y) + c[f] + s[f] | 0;
var x = m & p ^ m & v ^ p & v;
w = y, y = k, k = b, b = g + _ | 0, g = v, v = p, p = m, m = _ + ((u(m, 2) ^ u(m, 13) ^ u(m, 22)) + x | 0) | 0;
}
e[0] = e[0] + m | 0, e[1] = e[1] + p | 0, e[2] = e[2] + v | 0, e[3] = e[3] + g | 0,
e[4] = e[4] + b | 0, e[5] = e[5] + k | 0, e[6] = e[6] + y | 0, e[7] = e[7] + w | 0;
}
var M = new Uint8Array(32);
var j = new DataView(M.buffer);
for (l = 0; l < 8; l++) j.setUint32(4 * l, e[l], !1);
return M;
}
function u(t, e) {
return t >>> e | t << 32 - e;
}
function f(t) {
var e = new Uint8Array(t.length / 2);
for (var n = 0; n < e.length; n++) e[n] = parseInt(t.substr(2 * n, 2), 16);
return e;
}
function d(t, e) {
var n = t.length, i = t.map(function(t, e) {
return e;
}), r = function(t) {
return function() {
t = (t |= 0) + 1831565813 | 0;
var e = Math.imul(t ^ t >>> 15, 1 | t);
return (((e = e + Math.imul(e ^ e >>> 7, 61 | e) ^ e) ^ e >>> 14) >>> 0) / 4294967296;
};
}(e >>> 0);
for (var a = n - 1; a > 0; a--) {
var o = Math.floor(r() * (a + 1)), s = i[a];
i[a] = i[o], i[o] = s;
}
var c = {}, l = {};
for (a = 0; a < n; a++) c[t[a]] = i[a], l[i[a]] = t[a];
return {
enc: c,
dec: l
};
}
window._ioEncryptState = null, t.exports = {
socket: null,
connected: !1,
socketId: -1,
connect: function(t, e, n) {
if (!this.socket) {
var a = this;
try {
var c = !1;
var l = t;
this.socket = new r(l), this.socket.binaryType = "arraybuffer";
let u = !1;
this.socket.onmessage = function(t) {
var r = new Uint8Array(t.data);
var c = i.decode(r);
var l = c[0];
var h = c[1];
if ("io-init" === l) return a.socketId = h[0], 1 === h[3] ? window._ioEncryptState = {
mode: 1,
key: f(h[2]),
tables: (m = h[1] >>> 0, p = (m ^ Math.imul(1, 2654435761)) >>> 0, {
c2s: d(o, p),
s2c: d(s, (2246822507 ^ p) >>> 0)
}),
seq: 0
} : window._ioEncryptState = null, void (u || (u = !0, e()));
var m, p;
window._ioEncryptState && "number" == typeof l && void 0 === (l = window._ioEncryptState.tables.s2c.dec[l]) || n[l] && n[l].apply(void 0, h);
}, this.socket.onopen = function() {
a.connected = !0;
}, this.socket.onclose = function(t) {
a.connected = !1, window._ioEncryptState = null, 4001 == t.code ? e("Invalid Connection") : c || e("disconnected");
}, this.socket.onerror = function(t) {
this.socket && this.socket.readyState != WebSocket.OPEN && (c = !0, e("Socket error"));
};
} catch (t) {
e(t);
}
}
},
send: function(t) {
var e = [].slice.call(arguments, 1);
if (this.socket) {
if (Q++, void 0 === tt && (tt = setInterval(function() {
et = Q, Q = 0;
}, 1e3)), window._ioEncryptState && 1 === window._ioEncryptState.mode) {
const n = window._ioEncryptState;
const r = n.tables.c2s.enc[t];
if (void 0 === r) return;
const o = ++n.seq;
const s = i.encode([ r, e, o ]);
const c = function(t, e) {
var n = t;
n.length > 64 && (n = l(n));
var i = new Uint8Array(64);
i.set(n);
var r = new Uint8Array(64 + e.length);
var a = new Uint8Array(96);
for (var o = 0; o < 64; o++) r[o] = 54 ^ i[o], a[o] = 92 ^ i[o];
return r.set(e, 64), a.set(l(r), 64), l(a).subarray(0, 6);
}(n.key, s);
const u = new Uint8Array(6 + s.length);
return u.set(c, 0), u.set(s, 6), void a.call(this.socket, u);
}
var n = i.encode([ t, e ]);
a.call(this.socket, n);
}
},
socketReady: function() {
return this.socket && this.connected;
},
close: function() {
this.socket && this.socket.close(), this.socket = null, this.connected = !1, window._ioEncryptState = null;
}
};
},
"./src/js/libs/modernizr.js": function(t, e) {
!function(t, e) {
function n(t, e) {
return typeof t === e;
}
var i = [], r = [], a = {
W: "3.5.0",
tt: {
classPrefix: "",
enableClasses: !0,
enableJSClass: !0,
usePrefixes: !0
},
et: [],
on: function(t, e) {
var n = this;
setTimeout(function() {
e(n[t]);
}, 0);
},
addTest: function(t, e, n) {
r.push({
name: t,
fn: e,
options: n
});
},
addAsyncTest: function(t) {
r.push({
name: null,
fn: t
});
}
}, o = function() {};
o.prototype = a, o = new o;
var s = e.documentElement, c = "svg" === s.nodeName.toLowerCase();
o.addTest("passiveeventlisteners", function() {
var e = !1;
try {
var n = Object.defineProperty({}, "passive", {
get: function() {
e = !0;
}
});
t.addEventListener("test", null, n);
} catch (t) {}
return e;
}), function() {
var t, e, a, s, c, l;
for (var u in r) if (r.hasOwnProperty(u)) {
if (t = [], (e = r[u]).name && (t.push(e.name.toLowerCase()), e.options && e.options.aliases && e.options.aliases.length)) for (a = 0; a < e.options.aliases.length; a++) t.push(e.options.aliases[a].toLowerCase());
for (s = n(e.fn, "function") ? e.fn() : e.fn, c = 0; c < t.length; c++) 1 === (l = t[c].split(".")).length ? o[l[0]] = s : (!o[l[0]] || o[l[0]] instanceof Boolean || (o[l[0]] = new Boolean(o[l[0]])),
o[l[0]][l[1]] = s), i.push((s ? "" : "no-") + l.join("-"));
}
}(), function(t) {
var e = s.className, n = o.tt.classPrefix || "";
if (c && (e = e.baseVal), o.tt.enableJSClass) {
var i = new RegExp("(^|\\s)" + n + "no-js(\\s|$)");
e = e.replace(i, "$1" + n + "js$2");
}
o.tt.enableClasses && (e += " " + n + t.join(" " + n), c ? s.className.baseVal = e : s.className = e);
}(i), delete a.addTest, delete a.addAsyncTest;
for (var l = 0; l < o.et.length; l++) o.et[l]();
t.Modernizr = o;
}(window, document);
},
"./src/js/libs/soundManager.js": function(t, e) {
t.exports.obj = function(t, e) {
var n;
this.sounds = [], this.active = !0, this.play = function(e, i, r) {
i && this.active && ((n = this.sounds[e]) || (n = new Howl({
src: ".././sound/" + e + ".mp3"
}), this.sounds[e] = n), r && n.isPlaying || (n.isPlaying = !0, n.play(), n.volume((i || 1) * t.volumeMult),
n.loop(r)));
}, this.toggleMute = function(t, e) {
(n = this.sounds[t]) && n.mute(e);
}, this.stop = function(t) {
(n = this.sounds[t]) && (n.stop(), n.isPlaying = !1);
};
};
},
"./src/js/libs/utils.js": function(t, e) {
var n = Math.abs;
Math.cos;
Math.sin;
Math.pow;
var i = Math.sqrt;
Math.hypot;
var r = Math.atan2;
var a = Math.PI;
t.exports.toRad = function(t) {
return t * (Math.PI / 180);
}, t.exports.toAng = function(t) {
return t / (Math.PI / 180);
}, t.exports.randInt = function(t, e) {
return Math.floor(Math.random() * (e - t + 1)) + t;
}, t.exports.randFloat = function(t, e) {
return Math.random() * (e - t + 1) + t;
}, t.exports.lerp = function(t, e, n) {
return t + (e - t) * n;
}, t.exports.decel = function(t, e) {
return t > 0 ? t = Math.max(0, t - e) : t < 0 && (t = Math.min(0, t + e)), t;
}, t.exports.getDistance = function(t, e, n, r) {
return i((n -= t) * n + (r -= e) * r);
}, t.exports.getDist = function(t, e) {
return i((e.x -= t.x) * e.x + (e.y -= t.y) * e.y);
}, t.exports.getDirection = function(t, e, n, i) {
return r(e - i, t - n);
}, t.exports.getDirect = function(t, e) {
return r(t.y - e.y, t.x - e.x);
}, t.exports.getAngleDist = function(t, e) {
var i = n(e - t) % (2 * a);
return i > a ? 2 * a - i : i;
}, t.exports.isNumber = function(t) {
return "number" == typeof t && !isNaN(t) && isFinite(t);
}, t.exports.isString = function(t) {
return t && "string" == typeof t;
}, t.exports.kFormat = function(t) {
return t > 999 ? (t / 1e3).toFixed(1) + 'k' : t;
}, t.exports.capitalizeFirst = function(t) {
return t.charAt(0).toUpperCase() + t.slice(1);
}, t.exports.fixTo = function(t, e) {
return parseFloat(t.toFixed(e));
}, t.exports.sortByPoints = function(t, e) {
return parseFloat(e.points) - parseFloat(t.points);
}, t.exports.lineInRect = function(t, e, n, i, r, a, o, s) {
var c = r;
var l = o;
if (r > o && (c = o, l = r), l > n && (l = n), c < t && (c = t), c > l) return !1;
var u = a;
var f = s;
var d = o - r;
if (Math.abs(d) > 1e-7) {
var h = (s - a) / d;
var m = a - h * r;
u = h * c + m, f = h * l + m;
}
if (u > f) {
var p = f;
f = u, u = p;
}
return f > i && (f = i), u < e && (u = e), !(u > f);
}, t.exports.containsPoint = function(t, e, n) {
var i = t.getBoundingClientRect();
var r = i.left + window.scrollX;
var a = i.top + window.scrollY;
var o = i.width;
var s = i.height;
return e > r && e < r + o && (n > a && n < a + s);
}, t.exports.mousifyTouchEvent = function(t) {
var e = t.changedTouches[0];
t.screenX = e.screenX, t.screenY = e.screenY, t.clientX = e.clientX, t.clientY = e.clientY,
t.pageX = e.pageX, t.pageY = e.pageY;
}, t.exports.hookTouchEvents = function(e, n) {
var i = !n;
var r = !1;
var a = !1;
function o(n) {
t.exports.mousifyTouchEvent(n), window.setUsingTouch(!0), i && (n.preventDefault(),
n.stopPropagation()), r && (e.onclick && e.onclick(n), e.onmouseout && e.onmouseout(n),
r = !1);
}
e.addEventListener("touchstart", t.exports.checkTrusted(function(n) {
t.exports.mousifyTouchEvent(n), window.setUsingTouch(!0), i && (n.preventDefault(),
n.stopPropagation());
e.onmouseover && e.onmouseover(n);
r = !0;
}), a), e.addEventListener("touchmove", t.exports.checkTrusted(function(n) {
t.exports.mousifyTouchEvent(n), window.setUsingTouch(!0), i && (n.preventDefault(),
n.stopPropagation());
t.exports.containsPoint(e, n.pageX, n.pageY) ? r || (e.onmouseover && e.onmouseover(n),
r = !0) : r && (e.onmouseout && e.onmouseout(n), r = !1);
}), a), e.addEventListener("touchend", t.exports.checkTrusted(o), a), e.addEventListener("touchcancel", t.exports.checkTrusted(o), a),
e.addEventListener("touchleave", t.exports.checkTrusted(o), a);
}, t.exports.removeAllChildren = function(t) {
for (;t.hasChildNodes(); ) t.removeChild(t.lastChild);
}, t.exports.generateElement = function(e) {
var n = document.createElement(e.tag || "div");
function i(t, i) {
e[t] && (n[i] = e[t]);
}
for (var r in i("text", "textContent"), i("html", "innerHTML"), i("class", "className"),
e) {
switch (r) {
case "tag":
case "text":
case "html":
case "class":
case "style":
case "hookTouch":
case "parent":
case "children":
continue;
default:
break;
}
n[r] = e[r];
}
if (n.onclick && (n.onclick = t.exports.checkTrusted(n.onclick)), n.onmouseover && (n.onmouseover = t.exports.checkTrusted(n.onmouseover)),
n.onmouseout && (n.onmouseout = t.exports.checkTrusted(n.onmouseout)), e.style && (n.style.cssText = e.style),
e.hookTouch && t.exports.hookTouchEvents(n), e.parent && e.parent.appendChild(n),
e.children) for (var a = 0; a < e.children.length; a++) n.appendChild(e.children[a]);
return n;
}, t.exports.eventIsTrusted = function(t) {
return !t || "boolean" != typeof t.isTrusted || t.isTrusted;
}, t.exports.checkTrusted = function(e) {
return function(n) {
n && n instanceof Event && t.exports.eventIsTrusted(n) && e(n);
};
}, t.exports.randomString = function(t) {
var e = "";
var n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for (var i = 0; i < t; i++) e += n.charAt(Math.floor(62 * Math.random()));
return e;
}, t.exports.countInArray = function(t, e) {
var n = 0;
for (var i = 0; i < t.length; i++) t[i] === e && n++;
return n;
};
var o = function(t, e) {
return t.concat(e);
};
Array.prototype.flatMap = function(t) {
return function(t, e) {
return e.map(t).reduce(o, []);
}(t, this);
};
}
}), function() {
try {
var t = 0;
var e = setInterval(function() {
try {
if ('undefined' != typeof window && void 0 !== Z) {
try {
window.settings = Z;
} catch (t) {}
return void clearInterval(e);
}
++t >= 100 && clearInterval(e);
} catch (t) {
clearInterval(e);
}
}, 100);
} catch (t) {}
}();
let ct = document.createElement("div");
ct.id = "mod_menu", ct.style.display = "none", ct.innerHTML = `\n<div id="name_block">\n <div id="name_text">Laffer by God - Menu</div>\n</div>\n<div id="category_block">\n <div id="combat" class="category">\n <div class="category_element"></div>\n <i class="material-icons category_icon">local_fire_department</i>\n <div class="category_text">Combat</div>\n </div>\n <div id="visual" class="category">\n <div class="category_element"></div>\n <i class="material-icons category_icon">visibility</i>\n <div class="category_text">Visual</div>\n </div>\n \x3c!-- Bots category removed --\x3e\n <div id="movement" class="category">\n <div class="category_element"></div>\n <i class="material-icons category_icon">directions_run</i>\n <div class="category_text">Movement</div>\n </div>\n <div id="placers" class="category">\n <div class="category_element"></div>\n <i class="material-icons category_icon">layers</i>\n <div class="category_text">Placers</div>\n </div>\n <div id="labels" class="category">\n <div class="category_element"></div>\n <i class="material-icons category_icon">label</i>\n <div class="category_text">Labels</div>\n </div>\n <div id="extra" class="category">\n <div class="category_element"></div>\n <i class="material-icons category_icon">extension</i>\n <div class="category_text">Extra</div>\n </div>\n <div id="themes" class="category">\n <div class="category_element"></div>\n <i class="material-icons category_icon">palette</i>\n <div class="category_text">Themes</div>\n </div>\n <div id="exit" class="category">\n <div class="category_element"></div>\n <i id="exit_icon" class="material-icons category_icon">close</i>\n <div class="category_text">Exit</div>\n </div>\n</div>\n<div id="combat_settings" class="settings_block">\n \x3c!-- Placer toggles moved to Placers category --\x3e\n <div class="settings_title">Sync</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Primary Sync</div>${it("x18ksync")}\n </div>\n </div>\n\n\n\n\n <div class="settings_title">Accessory toggle based on enemy distance detection</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Accessory trigger distance (pixels, default: 300)</div>${rt("combat_acc_dist", 6)}\n </div>\n </div>\n <div class="settings_title">Combat Features</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Auto Velocity Tick </div>${it("autoVelocityTick")}\n </div>\n </div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Unified SpikeTick</div>${it("unifiedSpikeTick")}\n </div>\n </div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">\u2514 Break Trap (Hammer)</div>${it("unifiedSpikeTick_breakTrap")}\n </div>\n </div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">\u2514 Place Spike + Tick</div>${it("unifiedSpikeTick_placeSpike")}\n </div>\n </div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">\u2514 Retrap Break</div>${it("unifiedSpikeTick_retrapBreak")}\n </div>\n </div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">\u2514 Adaptive Timing (Ping)</div>${it("unifiedSpikeTick_adaptiveTiming")}\n </div>\n </div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">\u2514 Cooldown (ms, default: 300)</div>${rt("unifiedSpikeTick_cooldown", 6)}\n </div>\n </div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Auto Trap-Escape Knockback </div>${it("evadeKnockback")}\n </div>\n </div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Auto Knockback enemy into Trap </div>${it("TrapKnockback")}\n </div>\n </div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Knockback Enemy into the Midpoint of 2 Spikes</div>\n ${it("SpikeMidKnockback")}\n </div>\n</div>\n\n<div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Auto Insta-Counter</div>\n ${it("autoInstaCounter")}\n </div>\n</div>\n<div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Smart Dodge</div>\n ${it("smartDodge")}\n </div>\n</div>\n<div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Auto Bull on Damage</div>\n ${it("autoBullOnDamage")}\n </div>\n</div>\n<div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Predictive Knockback</div>\n ${it("predictiveKnockback")}\n </div>\n</div>\n<div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Smart Trap Priority</div>\n ${it("smartTrapPriority")}\n </div>\n</div>\n<div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Death Marker (show where killed)</div>\n ${it("deathMarker")}\n </div>\n</div>\n<div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Banned Angles (no repeat spike)</div>\n ${it("bannedAngles")}\n </div>\n</div>\n<div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Filtered Cache (perf boost)</div>\n ${it("filteredCache")}\n </div>\n</div>\n<div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Spike Avoidance</div>\n ${it("spikeAvoidance")}\n </div>\n</div>\n<div class="setting2">\n <div class="setting_element">\n <div class="setting_name">\u2514 Avoid Distance (px, default: 70)</div>\n ${rt("spikeAvoidance_dist", 4)}\n </div>\n</div>\n<div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Smart Auto-Bull</div>\n ${it("smartAutoBull")}\n </div>\n</div>\n\n \x3c!-- secondary break threshold is hard-coded (default 0.6) and removed from menu --\x3e\n \x3c!-- primary almost-reload threshold is hard-coded; no menu input --\x3e\n \x3c!-- Inner/Outer Offset inputs removed from menu; values hard-coded to 10 --\x3e\n\n \x3c!-- Kill chat options moved to Extra tab --\x3e\n</div>\n</div>\n<div id="visual_settings" class="settings_block">\n <div class="settings_title">Visual</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Game Zoom</div>${ot("gamezoom", [ 1, 1.2, 1.4, 1.5, 1.6, 1.8, 2 ], 1.5)}\n </div>\n </div>\n <div class="settings_title">Debug</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Chat Log</div>${it("chatlog")}\n </div>\n </div>\n <div class="settings_title">Debug</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Render Grid</div>${it("renderGrid")}\n </div>\n </div>\n <div class="settings_title">Spike AutoStop Radius</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Show the red circle around spikes</div>${it("visual_spike_overlay")}\n </div>\n </div>\n <div class="settings_title">Velocity Tick Distance Radius</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Show velocity-tick radius</div>${it("visual_veltick_radius")}\n </div>\n </div>\n <div class="settings_title">Advanced Panel</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">(myPlayer Stats)</div>${it("myplayer_stats")}\n </div>\n </div>\n \x3c!-- Placement labels moved to Labels category --\x3e\n <div class="settings_title"></div>\n</div>\n<div id="labels_settings" class="settings_block" style="display:none;">\n <div class="settings_title">Labels global settings</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Size (15 default)</div>${rt("label_size", 4)}\n </div>\n </div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Speed(0.11 default)</div>${rt("label_speed", 6)}\n </div>\n </div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Life (300ms default)</div>${rt("label_life", 6)}\n </div>\n </div>\n <div class="settings_title">Manual Place</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Manual Place Label</div>${it("label_place_enabled")}\n </div>\n </div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Manual Color</div>${at("label_place_color")}\n </div>\n </div>\n <div class="settings_title">AutoPlace</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">AutoPlace Label</div>${it("label_autoplace_enabled")}\n </div>\n </div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Auto Color</div>${at("label_autoplace_color")}\n </div>\n </div>\n <div class="settings_title">PrePlace</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Preplace Label</div>${it("label_preplace_enabled")}\n </div>\n </div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Preplace Color</div>${at("label_preplace_color")}\n </div>\n </div>\n <div class="settings_title">RePlace</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Replace Label</div>${it("label_replace_enabled")}\n </div>\n </div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Replace Color</div>${at("label_replace_color")}\n </div>\n </div>\n <div class="settings_title">AutoStop Label</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Autostop Label</div>${it("label_autostop_enabled")}\n </div>\n </div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Autostop Color</div>${at("label_autostop_color")}\n </div>\n </div>\n <div id="label_tickbreak_row" style="display:none">\n <div class="settings_title">Tick Labels</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Tick breaking enemy label</div>${it("label_tickbreak_enabled")}\n </div>\n </div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Tick label color</div>${at("label_tickbreak_color")}\n </div>\n </div>\n </div>\n <div class="settings_title"></div>\n</div>\n<div id="extra_settings" class="settings_block" style="display:none;">\n <div class="settings_title">Kill Chat</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Kill Chat (send on kill)</div>${it("killchat")}\n </div>\n </div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Kill Chat Message</div>${rt("killchat_message", 20)}\n </div>\n </div>\n <div class="settings_title">Automatic Buy</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Autobuy (auto purchase by gold)</div>${it("autobuy")}\n </div>\n </div>\n <div class="settings_title"></div>\n</div>\n<div id="themes_settings" class="settings_block" style="display:none;">\n <div class="settings_title">Color Theme</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Theme</div>\n <select id="theme_select" class="menu_select" style="padding:8px 12px;border-radius:8px;background:rgba(255,255,255,0.06);color:#f3f6ff;border:1px solid rgba(255,255,255,0.1);min-width:180px;font-weight:600;">\n <option value="default">Default (Purple)</option>\n <option value="neon">Neon (Cyan)</option>\n <option value="red">Red</option>\n <option value="blue">Blue</option>\n <option value="green">Green</option>\n <option value="bw">Black & White</option>\n <option value="dark">Pure Dark</option>\n </select>\n </div>\n </div>\n <div class="settings_title" style="margin-top:16px;">Preview</div>\n <div id="theme_preview" style="display:flex;gap:8px;flex-wrap:wrap;padding:12px 0;">\n </div>\n</div>\n\x3c!-- Bots settings removed --\x3e\n\n<div id="placers_settings" class="settings_block" style="display:none;">\n <div class="settings_title">PrePlacer</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">PrePlacer</div>${it("preplacer")}\n </div>\n </div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">PrePlacer Activation Distance(default 300)</div>${rt("preplacer_activation_distance", 4)}\n </div>\n </div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">PrePlacer Mode</div>${ot("preplacer_mode", [ "Fast", "Balanced", "Accurate" ], "Fast")}\n </div>\n </div>\n <div class="settings_title">AutoPlacer</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">AutoPlacer</div>${it("autoPlace")}\n </div>\n </div>\n\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">AutoPlacer Activation Distance (default 400)</div>${rt("autoplace_activation_distance", 4)}\n </div>\n\n </div>\n\n \x3c!-- trap placement options removed (now always follow code defaults) --\x3e\n\n <div class="settings_title">Logs</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">PrePlacer Debug</div>${it("preplacer_debug")}\n </div>\n </div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">AutoPlacer Debug</div>${it("autoplacer_debug")}\n </div>\n </div>\n</div>\n<div id="movement_settings" class="settings_block" style="display: none;">\n <div class="settings_title">Auto Stop before Collision</div>\n <div class="setting2">\n <div class="setting_element">\n <div class="setting_name">Auto Stop</div>${it("autostop_before_collision")}\n </div>\n </div>\n\n\n <div class="settings_title"></div>\n</div>\n\n`,
document.body.appendChild(ct);
const lt = document.createElement("style");
lt.innerHTML = "\n/* === DARK MODE (SAFE) === */\n\n#mod_menu {\n background: #121212 !important;\n color: #e0e0e0 !important;\n}\n\n#name_block {\n background: #181818 !important;\n border-bottom: 1px solid #2a2a2a;\n}\n\n#name_text {\n color: #ffffff !important;\n}\n\n/* Categories */\n#category_block {\n background: #141414 !important;\n}\n\n.category {\n background: transparent !important;\n}\n\n.category:hover {\n background: #1e1e1e !important;\n}\n\n.category_icon {\n color: #b0b0b0 !important;\n}\n\n.category_text {\n color: #d0d0d0 !important;\n}\n\n/* Settings panels */\n.settings_block {\n background: #121212 !important;\n}\n\n/* Titles */\n.settings_title {\n color: #9e9e9e !important;\n}\n\n/* Setting rows */\n.setting_element {\n background: #1a1a1a !important;\n border: 1px solid #2a2a2a;\n}\n\n.setting_name {\n color: #e0e0e0 !important;\n}\n\n/* Inputs */\ninput, select {\n background: #101010 !important;\n color: #ffffff !important;\n border: 1px solid #333 !important;\n}\n\n/* Checkboxes */\ninput[type=\"checkbox\"] {\n accent-color: #888 !important;\n}\n\n/* Scrollbar */\n.settings_block::-webkit-scrollbar {\n width: 6px;\n}\n\n.settings_block::-webkit-scrollbar-thumb {\n background: #333;\n}\n\n/* Exit icon */\n#exit_icon {\n color: #ff6666 !important;\n}\n",
document.head.appendChild(lt);
const ut = document.createElement("style");
ut.id = "theme-css", ut.innerHTML = "", document.head.appendChild(ut);
const ft = {
default: {
accent: '#6b6fe0',
accentGlow: 'rgba(107,111,224,0.35)',
bg: '#121212',
sidebar: '#141414',
card: '#1a1a1a',
text: '#e0e0e0',
title: '#9e9e9e',
border: 'rgba(255,255,255,0.12)',
checkbox: '#888',
hover: 'rgba(107,111,224,0.07)',
name: 'Default (Purple)'
},
neon: {
accent: '#00e5ff',
accentGlow: 'rgba(0,229,255,0.35)',
bg: '#0a0e14',
sidebar: '#0c1018',
card: '#111822',
text: '#e0f7ff',
title: '#4dd0e1',
border: 'rgba(0,229,255,0.15)',
checkbox: '#00bcd4',
hover: 'rgba(0,229,255,0.08)',
name: 'Neon (Cyan)'
},
red: {
accent: '#ff1744',
accentGlow: 'rgba(255,23,68,0.35)',
bg: '#120c0c',
sidebar: '#140e0e',
card: '#1c1212',
text: '#ffebee',
title: '#ef5350',
border: 'rgba(255,23,68,0.15)',
checkbox: '#d32f2f',
hover: 'rgba(255,23,68,0.08)',
name: 'Red'
},
blue: {
accent: '#2979ff',
accentGlow: 'rgba(41,121,255,0.35)',
bg: '#0c1020',
sidebar: '#0e1224',
card: '#141a30',
text: '#e3f2fd',
title: '#64b5f6',
border: 'rgba(41,121,255,0.15)',
checkbox: '#1565c0',
hover: 'rgba(41,121,255,0.08)',
name: 'Blue'
},
green: {
accent: '#00e676',
accentGlow: 'rgba(0,230,118,0.35)',
bg: '#0c140e',
sidebar: '#0e1610',
card: '#141e16',
text: '#e8f5e9',
title: '#66bb6a',
border: 'rgba(0,230,118,0.15)',
checkbox: '#2e7d32',
hover: 'rgba(0,230,118,0.08)',
name: 'Green'
},
bw: {
accent: '#ffffff',
accentGlow: 'rgba(255,255,255,0.2)',
bg: '#0a0a0a',
sidebar: '#0e0e0e',
card: '#161616',
text: '#f5f5f5',
title: '#bdbdbd',
border: 'rgba(255,255,255,0.18)',
checkbox: '#ffffff',
hover: 'rgba(255,255,255,0.06)',
name: 'Black & White'
},
dark: {
accent: '#424242',
accentGlow: 'rgba(66,66,66,0.3)',
bg: '#000000',
sidebar: '#050505',
card: '#0a0a0a',
text: '#cccccc',
title: '#757575',
border: 'rgba(255,255,255,0.06)',
checkbox: '#616161',
hover: 'rgba(255,255,255,0.03)',
name: 'Pure Dark'
}
};
function dt(t) {
const e = ft[t];
if (!e) return;
document.documentElement.style.setProperty('--accent', e.accent), ut.innerHTML = `\n :root { --accent: ${e.accent}; }\n #mod_menu { background: ${e.bg} !important; }\n #name_block { background: ${e.sidebar} !important; border-bottom: 1px solid ${e.border} !important; }\n #name_text { color: ${e.text} !important; }\n #category_block { background: ${e.sidebar} !important; }\n .category { background: transparent !important; }\n .category:hover { background: ${e.hover} !important; }\n .category.active { background: ${e.hover} !important; }\n .category_icon { color: ${e.accent} !important; }\n .category_text { color: ${e.text} !important; }\n .settings_block { background: ${e.bg} !important; }\n .settings_title { color: ${e.title} !important; }\n .setting_element { background: ${e.card} !important; border: 1px solid ${e.border} !important; }\n .setting_name { color: ${e.text} !important; }\n .menu_checkbox { accent-color: ${e.checkbox} !important; }\n .menu_checkbox:checked { background: linear-gradient(90deg, ${e.accent}, ${e.accent}) !important; }\n input, select { background: ${e.card} !important; color: ${e.text} !important; border: 1px solid ${e.border} !important; }\n #exit .category_text { color: #ff6666 !important; }\n #exit_icon { color: #ff6666 !important; }\n .setting_element:hover { box-shadow: 0 6px 18px ${e.accentGlow} !important; }\n .settings_block::-webkit-scrollbar-thumb { background: ${e.border} !important; }\n `,
localStorage.setItem('godLafferTheme', t);
}
document.getElementById('theme_select').addEventListener('change', function() {
dt(this.value);
});
const ht = localStorage.getItem('godLafferTheme') || 'default';
document.getElementById('theme_select').value = ht, dt(ht);
try {
const t = document.getElementById('theme_preview');
if (t) for (let [e, n] of Object.entries(ft)) {
const i = document.createElement('div');
i.style.cssText = `width:40px;height:40px;border-radius:10px;background:${n.accent};cursor:pointer;border:2px solid transparent;transition:all .2s;box-shadow:0 0 12px ${n.accentGlow};`,
i.title = n.name, i.addEventListener('click', () => {
document.getElementById('theme_select').value = e, dt(e);
}), i.addEventListener('mouseenter', () => {
i.style.transform = 'scale(1.15)', i.style.borderColor = '#fff';
}), i.addEventListener('mouseleave', () => {
i.style.transform = 'scale(1)', i.style.borderColor = 'transparent';
}), t.appendChild(i);
}
} catch (t) {}
function mt() {
let t = document.getElementById('myplayer_stats_hud');
return t || (t = document.createElement('div'), t.id = 'myplayer_stats_hud', t.style.position = 'fixed',
t.style.left = '12px', t.style.top = '56px', t.style.width = '260px', t.style.minHeight = '64px',
t.style.zIndex = 99999, t.style.padding = '10px', t.style.boxSizing = 'border-box',
t.style.fontFamily = 'Inter, Arial, sans-serif', t.style.fontSize = '13px', t.style.lineHeight = '1.25',
t.style.background = 'linear-gradient(180deg, rgba(8,10,14,0.96), rgba(6,8,12,0.92))',
t.style.borderRadius = '10px', t.style.border = '1px solid rgba(255,255,255,0.04)',
t.style.boxShadow = '0 8px 24px rgba(0,0,0,0.6), 0 0 18px rgba(115,79,255,0.06)',
t.style.color = '#e6e6ff', t.style.overflow = 'hidden', t.style.transition = 'opacity 180ms cubic-bezier(.2,.9,.2,1), transform 180ms cubic-bezier(.2,.9,.2,1)',
t.style.opacity = '0', t.style.transform = 'translateY(-6px)', t.innerHTML = "\n <div id=\"myplayer_stats_hud_header\" style=\"display:flex;align-items:center;justify-content:space-between;padding-bottom:6px;\">\n <div style=\"display:flex;align-items:center;gap:8px;\">\n <div style=\"width:10px;height:10px;border-radius:3px;background:linear-gradient(135deg,#8f7bff,#5ce1ff);box-shadow:0 0 10px rgba(143,123,255,0.35);\"></div>\n <div style=\"font-weight:600;color:#fff;font-size:13px\">MyPlayer</div>\n </div>\n <div style=\"font-size:11px;opacity:0.7;color:#cfcfff\">Stats</div>\n </div>\n <pre id=\"myplayer_stats_hud_body\" style=\"margin:0;padding:0;font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, monospace;color:#cfe9ff;white-space:pre-wrap;\">Loading...</pre>\n ",
document.body.appendChild(t)), t;
}
document.head.appendChild(lt), function() {
!function() {
const t = localStorage.getItem('modSettings');
if (t) {
const e = JSON.parse(t);
Z = {
...Z,
...e
};
}
for (let t in Z) {
const e = document.getElementById(t);
e && ('checkbox' === e.type ? e.checked = Z[t] : e.value = Z[t]);
}
}(), function() {
for (let t in Z) {
const e = document.getElementById(t);
e && (e.addEventListener('change', st), e.addEventListener('input', st));
}
}();
try {
r = !!Z.autoVelocityTick;
} catch (t) {}
setTimeout(function() {
var t = document.getElementById('gamezoom');
if (t) {
if (Z.gamezoom) {
var e = parseFloat(Z.gamezoom);
var n = !1;
for (var i = 0; i < t.options.length; i++) if (parseFloat(t.options[i].value) == e) {
t.selectedIndex = i, n = !0;
break;
}
n || (t.value = e);
}
t.addEventListener('change', function() {
var t = parseFloat(this.value);
Z.gamezoom = t, resetZoom(), st();
try {
_t('Zoom set to x' + t, '#ffff66');
} catch (t) {}
}), resetZoom();
}
var r = document.getElementById('preplacer_mode');
if (r) {
if (Z.preplacer_mode) try {
r.value = Z.preplacer_mode;
} catch (t) {}
r.addEventListener('change', function() {
Z.preplacer_mode = this.value;
try {
st();
} catch (t) {}
try {
_t('PrePlacer mode set to: ' + this.value, '#cfe9ff');
} catch (t) {}
});
}
}, 50);
try {
var t = document.getElementById('preplacer_debug');
(t && 'checkbox' === t.type ? t.checked : Z.preplacer_debug) && [ 'preplacer_activation_distance', 'preplacer_max_range', 'preplacer_projection_distance', 'preplacer_trap_range', 'preplacer_spike_distance', 'preplacer_spike_limit' ].forEach(t => {});
} catch (t) {}
try {
var e = document.getElementById('autoplacer_debug');
(e && 'checkbox' === e.type ? e.checked : Z.autoplacer_debug) && [ 'spiketrick_distance', 'spiketrick_linelength', 'spiketrick_areascale', 'trap_detection_range', 'player_enemy_maxdist', 'spike_min_distance', 'max_spike_count', 'anglesvalue' ].forEach(t => {});
} catch (t) {}
}();
let pt = null;
let vt = null;
function gt() {
const t = mt();
const e = {
45: "Shame!",
51: "Moo Cap",
50: "Apple Cap",
28: "Moo Head",
29: "Pig Head",
30: "Fluff Head",
36: "Pandou Head",
37: "Bear Head",
38: "Monkey Head",
44: "Polar Head",
35: "Fez Hat",
42: "Enigma Hat",
43: "Blitz Hat",
49: "Bob XIII Hat",
57: "Pumpkin",
8: "Bummle Hat",
2: "Straw Hat",
15: "Winter Cap",
5: "Cowboy Hat",
4: "Ranger Hat",
18: "Explorer Hat",
31: "Flipper Hat",
1: "Marksman Cap",
10: "Bush Gear",
48: "Halo",
6: "Soldier Helmet",
23: "Anti Venom Gear",
13: "Medic Gear",
9: "Miners Helmet",
32: "Musketeer Hat",
7: "Bull Helmet",
22: "Emp Helmet",
12: "Booster Hat",
26: "Barbarian Armor",
21: "Plague Mask",
46: "Bull Mask",
14: "Windmill Hat",
11: "Spike Gear",
53: "Turret Gear",
20: "Samurai Armor",
58: "Dark Knight",
27: "Scavenger Gear",
40: "Tank Gear",
52: "Thief Gear",
55: "Bloodthirster",
56: "Assassin Gear"
};
const n = {
12: "Snowball",
9: "Tree Cape",
10: "Stone Cape",
3: "Cookie Cape",
8: "Cow Cape",
11: "Monkey Tail",
17: "Apple Basket",
6: "Winter Cape",
4: "Skull Cape",
5: "Dash Cape",
2: "Dragon Cape",
1: "Super Cape",
7: "Troll Cape",
14: "Thorns",
15: "Blockades",
20: "Devils Tail",
16: "Sawblade",
13: "Angel Wings",
19: "Shadow Wings",
18: "Blood Wings",
21: "Corrupt X Wings"
};
const i = !!Z.myplayer_stats;
if (!i) return t.style.opacity = '0', t.style.transform = 'translateY(-6px)', setTimeout(() => {
Z.myplayer_stats || (t.style.display = 'none');
}, 200), void (pt && (clearInterval(pt), pt = null));
t.style.display = 'block', requestAnimationFrame(() => {
t.style.opacity = '1', t.style.transform = 'translateY(0)';
}), i && !pt && (pt = setInterval(() => {
gt();
}, 250));
let r = '';
const a = 'undefined' != typeof window && window.__myPlayer ? window.__myPlayer : 'undefined' != typeof myPlayer && myPlayer ? myPlayer : 'undefined' != typeof player && player ? player : 'undefined' != typeof localPlayer && localPlayer ? localPlayer : null;
const o = !(!a || !1 === a.alive);
if (!vt && o && kt('Reminder: press G to enable AutoGrind', 2200), vt = o, a) if (!1 === a.alive) r += 'No live player object detected.\nThis is a styled placeholder.'; else {
let it = null;
if (void 0 !== a.x2 && void 0 !== a.y2) {
const ot = (a.xVel || 0) - (a.x2 || 0);
const st = (a.yVel || 0) - (a.y2 || 0);
it = Math.sqrt(ot * ot + st * st);
} else void 0 !== a.xVel && void 0 !== a.yVel && (it = Math.sqrt(Math.pow(a.xVel || 0, 2) + Math.pow(a.yVel || 0, 2)));
r += 'number' == typeof it ? 'Speed: ' + Math.round(it) : 'Speed: N/A';
var s = 'Equipped: Unknown';
function u(t) {
return 0 === t ? 'Not Grinded' : 1 === t ? 'Gold' : 2 === t ? 'Diamond' : 3 === t ? 'Ruby' : 'Unknown';
}
a && a.weapons && void 0 !== a.weaponIndex && (a.weaponIndex === a.weapons[0] ? s = 'Equipped: Primary' : a.weaponIndex === a.weapons[1] && (s = 'Equipped: Secondary')),
r += '\n' + s;
var f = 'Unknown';
var d = 'Unknown';
if (a && a.weapons && a.weaponVariants) {
var h = a.weapons[0];
var m = a.weapons[1];
var v = void 0 !== a.weaponVariants[h] ? a.weaponVariants[h] : null;
var g = void 0 !== a.weaponVariants[m] ? a.weaponVariants[m] : null;
f = u(v), d = u(g);
}
r += '\nPrimary: ' + f + '\nSecondary: ' + d;
const rt = 'undefined' != typeof window && window.items && window.items.weapons ? window.items.weapons : 'undefined' != typeof items && items.weapons ? items.weapons : null;
const at = {
0: 'tool hammer',
1: 'hand axe',
2: 'great axe',
3: 'short sword',
4: 'katana',
5: 'polearm',
6: 'bat',
7: 'daggers',
8: 'stick',
9: 'hunting bow',
10: 'great hammer',
11: 'wooden shield',
12: 'crossbow',
13: 'repeater crossbow',
14: 'mc grabby',
15: 'musket'
};
if (a && Array.isArray(a.weapons) && a.weapons.length) {
const ct = a.weapons.map(function(t) {
var e = null;
if (rt && Array.isArray(rt)) for (var n = 0; n < rt.length; n++) {
var i = rt[n];
if (i && (i.id === t || i.indx === t)) {
e = i.name;
break;
}
}
return !e && at[t] && (e = at[t]), e ? (r = e) ? ('' + r).split(/\s+/).map(function(t) {
return t.charAt(0).toUpperCase() + t.slice(1);
}).join(' ') : r : 'id:' + t;
var r;
}).filter(Boolean);
ct.length && (r += '\nWeapons: ' + ct.join(', '));
const lt = [ [ '__gold600Logged', 'Winter Cap' ], [ '__gold2000Logged', 'Monkey Tail' ], [ '__gold2500Logged', 'Flipper' ], [ '__gold4000Logged', 'Soldier' ], [ '__gold6000Logged', 'Bull' ], [ '__gold6Logged', 'Booster' ], [ '__gold10Logged', 'Turret' ], [ '__gold15Logged', 'Tank' ], [ '__gold101Logged', 'Shadow' ]['Corrupt X Wings'] ];
const ut = [];
for (var b = 0; b < lt.length; b++) {
var k = lt[b][0];
var y = lt[b][1];
a && a[k] && ut.push(y);
}
ut.length === lt.length ? r += '\nAll Hats and Accessories Bought' : r += '\nBought Hats / Accessories: ' + (ut.length ? ut.join(', ') : 'None');
var w = 'Unknown';
var _ = 'Unknown';
if (void 0 !== a.latestSkin && (w = a.latestSkin), void 0 !== a.latestTail && (_ = a.latestTail),
'Unknown' === w || 'Unknown' === _) {
var x = (tt = a, et = {
hat: null,
acc: null,
found: []
}, Object.keys(tt || {}).forEach(function(t) {
var e = t.toLowerCase();
/latest|current|equipp?ed|skin|hat/.test(e) && null === et.hat && (et.hat = tt[t],
et.found.push(t + ':' + tt[t])), /latest|current|equipp?ed|tail|access|acc|t?ail/.test(e) && null === et.acc && (et.acc = tt[t],
et.found.push(t + ':' + tt[t]));
}), et);
'Unknown' === w && null !== x.hat && (w = x.hat), 'Unknown' === _ && null !== x.acc && (_ = x.acc),
'Unknown' !== w && 'Unknown' !== _ || !x.found.length || (r += '\n[Detected fields: ' + x.found.slice(0, 6).join(', ') + (x.found.length > 6 ? '...' : '') + ']');
}
function M(t, i, r) {
if (null == t) return 'Unknown';
var a = t;
var o = ('' + t).match(/-?\d+/);
if (o && (a = Number(o[0])), 'number' == typeof a && 0 === a) return 'None';
if ('hat' === i && e[a]) return e[a];
if ('acc' === i && n[a]) return n[a];
var s = [];
'hat' === i && 'undefined' != typeof window && window.items && window.items.hats && s.push(window.items.hats),
'acc' === i && 'undefined' != typeof window && window.items && window.items.accessories && s.push(window.items.accessories),
'undefined' != typeof hats && s.push(hats), 'undefined' != typeof accessories && s.push(accessories),
'undefined' != typeof store && store.hats && s.push(store.hats), Array.isArray(r) && (s = r.concat(s)),
'acc' === i && s.sort(function(t, e) {
return 0;
});
for (var c = 0; c < s.length; c++) {
var l = s[c];
if (Array.isArray(l)) for (var u = 0; u < l.length; u++) {
var f = l[u];
if (f && (f.id === a || f.id == a || f.indx === a)) return f.name;
}
}
return 'number' == typeof a ? 'id:' + a : '' + t;
}
r += '\nHat: ' + M(w, 'hat') + '\nAccessory: ' + M(_, 'acc'), Y && (r += '\nAutogrind: Enabled',
X ? (r += '\nPlayer has Turrets', R ? r += '\nStopping, Enemy Nearby' : C && (r += '\nTurret 1 HP: ' + H,
r += '\nTurret 2 HP: ' + E, r += '\nTurret 1 ID: ' + p, r += '\nTurret 2 ID: ' + T,
N && (r += '\nAutogrinding Primary'), F && (r += '\nAutogrinding Hammer'), L && (r += '\nAutogrinding Primary with Hammer'))) : r += '\nPlayer doesnt have Turrets'),
c && (r += 'Performing a velocity tick.'), r += '\nDamage Prediction: ' + l, S && (r += '\nEnemy currently trapped.');
}
} else if ('undefined' != typeof players && Array.isArray(players)) {
const ft = players.find(t => t && (t.isSelf || t.id === playerId)) || players[0];
if (ft) if (!1 === ft.alive) r += 'No live player object detected.\nThis is a styled placeholder.'; else {
let dt = null;
if (void 0 !== ft.x2 && void 0 !== ft.y2) {
const _t = (ft.xVel || 0) - (ft.x2 || 0);
const xt = (ft.yVel || 0) - (ft.y2 || 0);
dt = Math.sqrt(_t * _t + xt * xt);
} else void 0 !== ft.xVel && void 0 !== ft.yVel && (dt = Math.sqrt(Math.pow(ft.xVel || 0, 2) + Math.pow(ft.yVel || 0, 2)));
r += 'number' == typeof dt ? 'Speed: ' + Math.round(dt) : 'Speed: N/A';
var j = 'Equipped: Unknown';
function A(t) {
return 0 === t ? 'Not Grinded' : 1 === t ? 'Gold' : 2 === t ? 'Diamond' : 3 === t ? 'Ruby' : 'Unknown';
}
ft && ft.weapons && void 0 !== ft.weaponIndex && (ft.weaponIndex === ft.weapons[0] ? j = 'Equipped: Primary' : ft.weaponIndex === ft.weapons[1] && (j = 'Equipped: Secondary')),
r += '\n' + j;
var D = 'Unknown';
var P = 'Unknown';
if (ft && ft.weapons && ft.weaponVariants) {
var B = ft.weapons[0];
var I = ft.weapons[1];
var O = void 0 !== ft.weaponVariants[B] ? ft.weaponVariants[B] : null;
var z = void 0 !== ft.weaponVariants[I] ? ft.weaponVariants[I] : null;
D = A(O), P = A(z);
}
r += '\nPrimary: ' + D + '\nSecondary: ' + P;
const ht = [ [ '__gold600Logged', 'Winter Cap' ], [ '__gold2000Logged', 'Monkey Tail' ], [ '__gold2500Logged', 'Flipper' ], [ '__gold4000Logged', 'Soldier' ], [ '__gold6000Logged', 'Bull' ], [ '__gold6Logged', 'Booster' ], [ '__gold10Logged', 'Turret' ], [ '__gold15Logged', 'Tank' ], [ '__gold101Logged', 'Shadow' ]['Corrupt X Wings'] ];
const bt = [];
for (var $ = 0; $ < ht.length; $++) {
var U = ht[$][0];
var q = ht[$][1];
ft && ft[U] && bt.push(q);
}
r += '\nBought Hats / Accessories: ' + (bt.length ? bt.join(', ') : 'None');
const yt = 'undefined' != typeof window && window.items && window.items.weapons ? window.items.weapons : 'undefined' != typeof items && items.weapons ? items.weapons : null;
const wt = {
0: 'tool hammer',
1: 'hand axe',
2: 'great axe',
3: 'short sword',
4: 'katana',
5: 'polearm',
6: 'bat',
7: 'daggers',
8: 'stick',
9: 'hunting bow',
10: 'great hammer',
11: 'wooden shield',
12: 'crossbow',
13: 'repeater crossbow',
14: 'mc grabby',
15: 'musket'
};
if (ft && Array.isArray(ft.weapons) && ft.weapons.length) {
const Mt = ft.weapons.map(function(t) {
var e = null;
if (yt && Array.isArray(yt)) for (var n = 0; n < yt.length; n++) {
var i = yt[n];
if (i && (i.id === t || i.indx === t)) {
e = i.name;
break;
}
}
return !e && wt[t] && (e = wt[t]), e ? (r = e) ? ('' + r).split(/\s+/).map(function(t) {
return t.charAt(0).toUpperCase() + t.slice(1);
}).join(' ') : r : 'id:' + t;
var r;
}).filter(Boolean);
Mt.length && (r += '\nWeapons: ' + Mt.join(', '));
const jt = [ [ '__gold600Logged', 'Winter Cap' ], [ '__gold2000Logged', 'Monkey Tail' ], [ '__gold2500Logged', 'Flipper' ], [ '__gold4000Logged', 'Soldier' ], [ '__gold6000Logged', 'Bull' ], [ '__gold6Logged', 'Booster' ], [ '__gold10Logged', 'Turret' ], [ '__gold20000Logged', 'Accessory 21' ], [ '__gold15Logged', 'Tank' ], [ '__gold101Logged', 'Shadow' ]['Corrupt X Wings'] ];
const St = [];
for ($ = 0; $ < jt.length; $++) {
var G = jt[$][0];
var W = jt[$][1];
ft && ft[G] && St.push(W);
}
St.length === jt.length ? r += '\nAll Hats and Accessories Bought' : r += '\nBought Hats / Accessories: ' + (St.length ? St.join(', ') : 'None');
var K = 'Unknown';
var V = 'Unknown';
if (void 0 !== ft.latestSkin && (K = ft.latestSkin), void 0 !== ft.latestTail && (V = ft.latestTail),
'Unknown' === K || 'Unknown' === V) {
var J = function(t) {
var e = {
hat: null,
acc: null,
found: []
};
return Object.keys(t || {}).forEach(function(n) {
var i = n.toLowerCase();
/latest|current|equipp?ed|skin|hat/.test(i) && null === e.hat && (e.hat = t[n],
e.found.push(n + ':' + t[n])), /latest|current|equipp?ed|tail|access|acc|t?ail/.test(i) && null === e.acc && (e.acc = t[n],
e.found.push(n + ':' + t[n]));
}), e;
}(ft);
'Unknown' === K && null !== J.hat && (K = J.hat), 'Unknown' === V && null !== J.acc && (V = J.acc),
'Unknown' !== K && 'Unknown' !== V || !J.found.length || (r += '\n[Detected fields: ' + J.found.slice(0, 6).join(', ') + (J.found.length > 6 ? '...' : '') + ']');
}
function Q(t, i) {
if (null == t) return 'Unknown';
var r = t;
var a = ('' + t).match(/-?\d+/);
if (a && (r = Number(a[0])), e[r]) return e[r];
if (n[r]) return n[r];
var o = [];
'undefined' != typeof window && window.items && window.items.hats && o.push(window.items.hats),
'undefined' != typeof window && window.items && window.items.accessories && o.push(window.items.accessories),
'undefined' != typeof hats && o.push(hats), 'undefined' != typeof accessories && o.push(accessories),
'undefined' != typeof store && store.hats && o.push(store.hats), Array.isArray(i) && (o = i.concat(o));
for (var s = 0; s < o.length; s++) {
var c = o[s];
if (Array.isArray(c)) for (var l = 0; l < c.length; l++) {
var u = c[l];
if (u && (u.id === r || u.id == r || u.indx === r)) return u.name;
}
}
return 'number' == typeof r ? 'id:' + r : '' + t;
}
r += '\nHat: ' + Q(K, 'hat') + '\nAccessory: ' + Q(V, 'acc');
}
}
} else r += 'No player data available.';
var tt, et;
const nt = document.getElementById('myplayer_stats_hud_body');
nt && (nt.textContent = r);
}
mt(), gt(), document.getElementById("exit").addEventListener("mousedown", function() {
ct.style.display = "none";
}), document.getElementById("combat").addEventListener("mousedown", function() {
document.getElementById("visual_settings").style.display = "none", document.getElementById("placers_settings").style.display = "none",
document.getElementById("movement_settings").style.display = "none", document.getElementById("combat_settings").style.display = "block",
document.getElementById("labels_settings").style.display = "none", document.getElementById("extra_settings").style.display = "none",
document.getElementById("themes_settings").style.display = "none";
try {
document.querySelectorAll('.category').forEach(function(t) {
t.classList && t.classList.remove('active');
});
} catch (t) {}
try {
this.classList && this.classList.add('active');
} catch (t) {}
}), document.getElementById("visual").addEventListener("mousedown", function() {
document.getElementById("combat_settings").style.display = "none", document.getElementById("placers_settings").style.display = "none",
document.getElementById("movement_settings").style.display = "none", document.getElementById("visual_settings").style.display = "block",
document.getElementById("labels_settings").style.display = "none", document.getElementById("extra_settings").style.display = "none",
document.getElementById("themes_settings").style.display = "none";
try {
document.querySelectorAll('.category').forEach(function(t) {
t.classList && t.classList.remove('active');
});
} catch (t) {}
try {
this.classList && this.classList.add('active');
} catch (t) {}
}), document.getElementById("placers").addEventListener("mousedown", function() {
document.getElementById("combat_settings").style.display = "none", document.getElementById("visual_settings").style.display = "none",
document.getElementById("movement_settings").style.display = "none", document.getElementById("placers_settings").style.display = "block",
document.getElementById("labels_settings").style.display = "none", document.getElementById("extra_settings").style.display = "none",
document.getElementById("themes_settings").style.display = "none";
try {
document.querySelectorAll('.category').forEach(function(t) {
t.classList && t.classList.remove('active');
});
} catch (t) {}
try {
this.classList && this.classList.add('active');
} catch (t) {}
}), document.getElementById("movement").addEventListener("mousedown", function() {
document.getElementById("combat_settings").style.display = "none", document.getElementById("visual_settings").style.display = "none",
document.getElementById("placers_settings").style.display = "none", document.getElementById("movement_settings").style.display = "block",
document.getElementById("labels_settings").style.display = "none", document.getElementById("extra_settings").style.display = "none",
document.getElementById("themes_settings").style.display = "none";
try {
document.querySelectorAll('.category').forEach(function(t) {
t.classList && t.classList.remove('active');
});
} catch (t) {}
try {
this.classList && this.classList.add('active');
} catch (t) {}
}), document.getElementById("extra").addEventListener("mousedown", function() {
document.getElementById("combat_settings").style.display = "none", document.getElementById("visual_settings").style.display = "none",
document.getElementById("placers_settings").style.display = "none", document.getElementById("movement_settings").style.display = "none",
document.getElementById("labels_settings").style.display = "none", document.getElementById("extra_settings").style.display = "block",
document.getElementById("themes_settings").style.display = "none";
try {
document.querySelectorAll('.category').forEach(function(t) {
t.classList && t.classList.remove('active');
});
} catch (t) {}
try {
this.classList && this.classList.add('active');
} catch (t) {}
}), document.getElementById("labels").addEventListener("mousedown", function() {
document.getElementById("combat_settings").style.display = "none", document.getElementById("visual_settings").style.display = "none",
document.getElementById("placers_settings").style.display = "none", document.getElementById("movement_settings").style.display = "none",
document.getElementById("labels_settings").style.display = "block", document.getElementById("extra_settings").style.display = "none",
document.getElementById("themes_settings").style.display = "none";
try {
document.querySelectorAll('.category').forEach(function(t) {
t.classList && t.classList.remove('active');
});
} catch (t) {}
try {
this.classList && this.classList.add('active');
} catch (t) {}
}), document.getElementById("themes").addEventListener("mousedown", function() {
document.getElementById("combat_settings").style.display = "none", document.getElementById("visual_settings").style.display = "none",
document.getElementById("placers_settings").style.display = "none", document.getElementById("movement_settings").style.display = "none",
document.getElementById("labels_settings").style.display = "none", document.getElementById("extra_settings").style.display = "none",
document.getElementById("themes_settings").style.display = "block";
try {
document.querySelectorAll('.category').forEach(function(t) {
t.classList && t.classList.remove('active');
});
} catch (t) {}
try {
this.classList && this.classList.add('active');
} catch (t) {}
}), document.addEventListener("keydown", function(t) {
try {
if (t.nt) return;
} catch (t) {}
if (27 == t.keyCode) try {
var e = void 0 !== ct && ct ? ct : document.getElementById('mod_menu');
if (!e) return;
e.style.display = 'block' == window.getComputedStyle(e).display ? 'none' : 'block';
} catch (t) {}
}), window.addEventListener('keydown', function(t) {
if ('Escape' === t.key || 27 == t.keyCode) {
var e = document.activeElement;
if (e && ('INPUT' === e.tagName || 'TEXTAREA' === e.tagName || 'true' === e.contentEditable)) return;
try {
t.nt = !0;
} catch (t) {}
try {
var n = void 0 !== ct && ct ? ct : document.getElementById('mod_menu');
n || ((n = document.createElement('div')).id = 'mod_menu', n.innerText = 'Mod menu (temporary)',
document.body.appendChild(n), window.menu = n);
try {} catch (t) {}
if ('block' == n.style.display || 'block' == window.getComputedStyle(n).display) n.style.display = 'none'; else {
n.style.position = 'fixed', n.style.left = '50%', n.style.top = '50%', n.style.transform = 'translate(-50%, -50%)',
n.style.background = 'rgba(39, 39, 39, 1)', n.style.padding = '0px', n.style.zIndex = '2147483647',
n.style.pointerEvents = 'auto', n.style.maxWidth = '90vw', n.style.maxHeight = '90vh',
n.style.overflow = 'auto', n.style.display = 'block', n.style.visibility = 'visible';
try {
n.scrollIntoView({
block: 'center'
});
} catch (t) {}
try {
void 0 === n.tabIndex && (n.tabIndex = -1), n.focus();
} catch (t) {}
try {
if (!J) {
[ "combat_settings", "visual_settings", "placers_settings", "movement_settings", "labels_settings", "extra_settings", "themes_settings" ].forEach(function(t) {
var e = document.getElementById(t);
e && (e.style.display = "combat_settings" === t ? 'block' : 'none');
});
try {
document.querySelectorAll('.category').forEach(function(t) {
t.classList && t.classList.remove('active');
});
var i = document.getElementById('combat');
i && i.classList && i.classList.add('active');
} catch (t) {}
J = !0;
}
} catch (t) {}
}
try {} catch (t) {}
} catch (t) {}
}
}, !0);
for (let t in Z) try {
var bt = document.getElementById(t);
if (!bt) continue;
bt.addEventListener("change", function() {
try {
"boolean" == typeof Z[t] ? ("chatlog" == t && ("none" == yt.style.display ? yt.style.display = "block" : yt.style.display = "none"),
Z[t] = document.getElementById(t).checked) : Z[t] = document.getElementById(t).value;
try {
st();
} catch (t) {}
try {
var e = document.getElementById('mod_saved_box');
e || ((e = document.createElement('div')).id = 'mod_saved_box', e.innerText = 'Saved',
Object.assign(e.style, {
position: 'fixed',
left: '12px',
top: '12px',
padding: '8px 12px',
background: 'rgba(0,0,0,0.78)',
color: '#d49a9aff',
borderRadius: '8px',
fontSize: '13px',
pointerEvents: 'none',
zIndex: '2147483647',
opacity: '0',
transform: 'translateY(-6px)',
transition: 'opacity 200ms ease, transform 200ms ease'
}), document.body.appendChild(e)), e.innerText = 'Saved';
try {
e.it && (clearTimeout(e.it), e.it = null);
} catch (t) {}
requestAnimationFrame(function() {
e.style.opacity = '1', e.style.transform = 'translateY(0)';
}), e.it = setTimeout(function() {
try {
e.style.opacity = '0', e.style.transform = 'translateY(-6px)';
} catch (t) {}
}, 1100);
} catch (t) {}
} catch (t) {}
});
} catch (t) {}
function kt(t, e) {
try {
e = 'number' == typeof e ? e : 1200;
var n = 'mod_toast_box';
var i = document.getElementById(n);
i || ((i = document.createElement('div')).id = n, Object.assign(i.style, {
position: 'fixed',
left: '75px',
top: '12px',
transform: 'translateY(-6px)',
padding: '8px 12px',
background: 'rgba(0,0,0,0.78)',
color: '#ffffff',
borderRadius: '8px',
fontSize: '13px',
pointerEvents: 'none',
zIndex: '2147483647',
opacity: '0',
transition: 'opacity 200ms ease, transform 200ms ease'
}), document.body.appendChild(i));
try {
i.style.left = '12px';
} catch (t) {}
i.textContent = t;
try {
i.it && (clearTimeout(i.it), i.it = null);
} catch (t) {}
requestAnimationFrame(function() {
i.style.opacity = '1', i.style.transform = 'translateY(0)';
}), i.it = setTimeout(function() {
try {
i.style.opacity = '0', i.style.transform = 'translateY(-6px)';
} catch (t) {}
}, e);
} catch (t) {}
}
let yt = document.createElement("div");
function wt(t) {
var e = document.getElementById('chat_pin');
e && (e.textContent = t ? '\u0440\u045f\u201c\u040a' : '\u0440\u045f\u201c\u040c');
}
function _t(t, e) {
let n = new Date;
let i = n.getMinutes();
let r = n.getHours();
let a = n.getSeconds();
let o = document.createElement("div");
o.className = "chat_message", o.style.color = `${e}`, o.innerText = `[${r}:${i < 10 ? "0" + i : i}:${a < 10 ? "0" + a : a}] - ${t}`,
document.getElementById("chat_box").appendChild(o), o.scrollIntoView({
behavior: 'auto',
block: 'end'
});
}
yt.id = "chat_log", yt.style.display = "none", yt.innerHTML = "\n<div id=\"chat_header\" style=\"display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;\">\n <div id=\"chat_name\">Chat Log</div>\n <div style=\"display:flex;gap:6px;align-items:center;\">\n <button id=\"chat_pin\" title=\"Pin chat\" style=\"background:transparent;border:none;color:#fff;cursor:pointer;font-size:14px;\">\u0440\u045f\u201c\u040a</button>\n </div>\n</div>\n<div id=\"chat_box\"></div>\n",
yt.style.position = 'fixed', yt.style.right = '10px', yt.style.bottom = '10px',
yt.style.width = '320px', yt.style.maxHeight = '40vh', yt.style.overflow = 'auto',
yt.style.background = 'rgba(0,0,0,0.6)', yt.style.border = '4px solid rgba(255, 255, 255, 1)',
yt.style.padding = '8px', yt.style.zIndex = '2147483647', yt.style.pointerEvents = 'auto',
function() {
try {
var t = document.getElementById('touch-controls-fullscreen') || document.getElementById('gameCanvas') && document.getElementById('gameCanvas').parentElement;
t && t.appendChild ? (t.appendChild(yt), yt.style.position = 'absolute', yt.style.right = '10px',
yt.style.bottom = '10px') : (yt.parentNode || document.body.appendChild(yt), yt.style.position = 'fixed');
} catch (t) {
yt.parentNode || document.body.appendChild(yt);
}
}(), document.addEventListener('fullscreenchange', function() {
try {
var t = document.fullscreenElement || document.getElementById('touch-controls-fullscreen');
t && t.appendChild ? (t.appendChild(yt), yt.style.position = 'absolute') : (document.body.contains(yt) || document.body.appendChild(yt),
yt.style.position = 'fixed');
} catch (t) {}
}), function() {
try {
var t = document.getElementById('chatlog');
if (t) {
yt.style.display = t.checked || Z.chatlog ? 'block' : 'none';
try {
document.getElementById('chat_pin') && wt(Z.chatPinned), null !== Z.chatLeft && null !== Z.chatTop && (yt.style.right = 'auto',
yt.style.left = Z.chatLeft + 'px', yt.style.top = Z.chatTop + 'px', yt.style.bottom = 'auto');
} catch (t) {}
t.addEventListener('change', function() {
yt.style.display = this.checked ? 'block' : 'none', Z.chatlog = this.checked;
try {
st();
} catch (t) {}
});
}
} catch (t) {}
}(), document.addEventListener('DOMContentLoaded', function() {}), function() {
var t = document.getElementById('chat_pin');
if (t) {
var e = !1;
var n = 0, i = 0;
wt(Z.chatPinned), t.addEventListener('click', function(t) {
Z.chatPinned = !Z.chatPinned, wt(Z.chatPinned);
try {
st();
} catch (t) {}
});
var r = document.getElementById('chat_header');
r.style.cursor = 'move', r.addEventListener('pointerdown', function(t) {
Z.chatPinned || (e = !0, n = t.clientX - (yt.getBoundingClientRect().left || 0),
i = t.clientY - (yt.getBoundingClientRect().top || 0), r.setPointerCapture(t.pointerId));
}), r.addEventListener('pointermove', function(t) {
if (e) {
var r = t.clientX - n;
var a = t.clientY - i;
yt.style.left = r + 'px', yt.style.top = a + 'px', yt.style.right = 'auto', yt.style.bottom = 'auto';
}
}), r.addEventListener('pointerup', function(t) {
if (e) {
e = !1;
try {
Z.chatLeft = parseInt(yt.style.left, 10) || 0, Z.chatTop = parseInt(yt.style.top, 10) || 0,
st();
} catch (t) {}
try {
r.releasePointerCapture(t.pointerId);
} catch (t) {}
}
});
}
}(), _t("Welcome, God!", "#fffafaff");
let xt = document.createElement("style");
xt.type = "text/css", xt.appendChild(document.createTextNode("\n/* ------------------\n MOD MENU \u0432\u0402\u201d Improved UI\n Responsive glassmorphism, cleaner typography and fixed scrollbars\n ------------------ */\n:root{\n --menu-bg: rgba(12,14,24,0.55);\n --panel: rgba(20,22,32,0.65);\n --sidebar: rgba(255,255,255,0.02);\n --accent: #6b6fe0;\n --muted: rgba(255,255,255,0.75);\n}\n\n#mod_menu{\n position: fixed;\n z-index: 1000000;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n width: min(1100px, 95vw);\n height: min(800px, 90vh);\n max-width: 1100px;\n max-height: 900px;\n border-radius: 14px;\n overflow: hidden;\n background: linear-gradient(180deg, rgba(18,20,30,0.72), rgba(10,12,18,0.52));\n backdrop-filter: blur(12px) saturate(120%);\n box-shadow: 0 18px 60px rgba(0,0,0,0.6), inset 0 1px 0 rgba(255,255,255,0.02);\n border: 1px solid rgba(255,255,255,0.04);\n animation: modmenu-fade 320ms ease;\n font-family: Inter, system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial;\n color: var(--muted);\n}\n\n/* header area (title + close) */\n#name_text{\n display:flex;\n align-items:center;\n justify-content:space-between;\n gap:12px;\n padding: 14px 18px;\n font-size: 20px;\n font-weight: 700;\n color: #fff;\n letter-spacing: 1px;\n text-transform: uppercase;\n}\n\n#name_text .subtitle{font-weight:400; font-size:12px; opacity:0.85; text-transform:none; letter-spacing:0}\n\n/* sidebar */\n#category_block{\n position: absolute;\n top: 55px;\n left: 12px;\n width: 260px;\n bottom: 12px;\n padding: 12px;\n background: var(--sidebar);\n border-radius: 10px;\n overflow-y: auto;\n border: 1px solid rgba(255, 255, 255, 0.12);\n}\n\n.category{\n display:flex;\n align-items:center;\n gap:12px;\n padding:10px 12px;\n margin:8px 4px;\n border-radius:10px;\n cursor:pointer;\n transition: all 180ms ease;\n color: #e6e9ff;\n}\n\n.category_icon{ color: var(--accent); font-size:20px }\n.category_text{ font-size:14px; font-weight:600 }\n\n.category:hover{ background: linear-gradient(90deg, rgba(107,111,224,0.07), rgba(255,255,255,0.02)); transform: translateX(6px); box-shadow: 0 6px 18px rgba(12,14,30,0.45) }\n\n.category.active{ background: linear-gradient(90deg, rgba(107,111,224,0.12), rgba(255,255,255,0.03)); box-shadow: 0 8px 24px rgba(15,16,40,0.5); transform: translateX(6px) }\n\n#exit{ position: absolute; left:12px; right:12px; bottom:12px; height:48px; display:flex; align-items:center; justify-content:center; background: transparent; border-radius:10px; }\n#exit .category_text{ color: #ffbdbd }\n\n/* content panel */\n.settings_block{\n position: absolute;\n top: 5px;\n left: 310px; /* sidebar 260 + margin */\n right: 12px;\n bottom: 12px;\n padding: 18px;\n overflow-y: auto;\n background: var(--sidebar);\n border-radius: 10px;\n border: 1px solid rgba(255, 255, 255, 0.12);\n}\n\n.settings_title{ color: #8b8b8bff; font-weight:700; margin-bottom:8px; font-size:20px }\n\n.setting2{ margin-bottom:8px }\n\n.setting_element{\n display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 12px; border-radius:10px; background: rgba(56, 56, 56, 1);\n}\n.setting_element:hover{ background: rgba(107,111,224,0.04); box-shadow: 0 6px 18px rgba(12,14,30,0.35) }\n\n.setting_name{ font-size:13px; color: #edf2ff; font-weight:600 }\n\n/* improved toggles */\n.menu_checkbox{ appearance:none; width:48px; height:26px; border-radius:999px; background: rgba(255,255,255,0.12); position:relative; cursor:pointer; border:1px solid rgba(0,0,0,0.25) }\n.menu_checkbox::after{ content:\"\"; position:absolute; width:20px; height:20px; left:3px; top:3px; border-radius:50%; background:#fff; transition: all 200ms cubic-bezier(.2,.9,.2,1); box-shadow: 0 4px 10px rgba(0,0,0,0.35) }\n.menu_checkbox:checked{ background: linear-gradient(90deg,var(--accent), #8f93f9) }\n.menu_checkbox:checked::after{ transform: translateX(22px); }\n\n/* inputs & buttons */\ninput[type='text'], input[type='number'], input[type='color'], select, .menu_button {\n font-family: inherit;\n outline: none;\n}\n\n/* pretty form controls aligned to right side of setting rows */\n.setting_element input[type='text'], .setting_element input[type='number'], .setting_element select, .setting_element input[type='color']{\n min-width: 220px;\n max-width: 420px;\n width: 36%;\n padding: 8px 10px;\n border-radius: 8px;\n border: 1px solid rgba(255,255,255,0.04);\n background: rgba(255,255,255,0.02);\n color: #f3f6ff;\n box-shadow: inset 0 1px 0 rgba(255,255,255,0.02);\n}\n.setting_element input[type='color']{ padding:4px; width:64px }\n.setting_element input[type='text']::placeholder, .setting_element input[type='number']::placeholder{ color: rgba(255,255,255,0.35) }\n\n/* make native select dropdowns readable on dark menu background */\n.setting_element select{\n /* keep the selected value readable */\n color: #f3f6ff;\n background: rgba(255,255,255,0.02);\n border-radius: 8px;\n border: 1px solid rgba(255,255,255,0.04);\n padding-right: 30px; /* leave room for native arrow */\n -webkit-appearance: none;\n appearance: none;\n}\n.setting_element select option{\n /* dropdown option list (most browsers honor color/background for options) */\n background: #0b1220; /* dark option background */\n color: #f3f6ff; /* light option text */\n}\n.setting_element select option:checked{\n /* highlighted/selected option in list */\n background: rgba(255,255,255,0.04);\n color: #111827;\n}\n.setting_element select::-ms-expand{ display: none; }\n\n/* Normalize focus rings \u0432\u0402\u201d some platforms/browsers show a green system focus outline\n (Windows accent color). Remove it and provide a subtle, consistent focus style. */\n#mod_menu input:focus, #mod_menu select:focus, #mod_menu .menu_checkbox:focus, #mod_menu .menu_color:focus, #mod_menu .menu_select:focus {\n outline: none !important;\n box-shadow: none !important;\n border-color: rgba(255,255,255,0.04) !important;\n}\n#mod_menu input:focus-visible, #mod_menu select:focus-visible, #mod_menu .menu_checkbox:focus-visible {\n outline: none !important;\n /* subtle bluish halo so keyboard users still see focus */\n box-shadow: 0 0 0 4px rgba(107,111,224,0.09) !important;\n}\n\n.menu_button{ background: linear-gradient(135deg, rgba(107,111,224,0.14), rgba(60,64,85,0.12)); color:#fff; border-radius:10px; border:1px solid rgba(255,255,255,0.03); padding:10px 14px; cursor:pointer }\n.menu_button:hover{ box-shadow: 0 10px 30px rgba(107,111,224,0.12); transform: translateY(-2px) }\n\n/* scrollbars (fixed syntax) */\n#mod_menu::-webkit-scrollbar, .settings_block::-webkit-scrollbar, #category_block::-webkit-scrollbar, #chat_box::-webkit-scrollbar { width:10px; height:10px }\n#mod_menu::-webkit-scrollbar-track, .settings_block::-webkit-scrollbar-track, #category_block::-webkit-scrollbar-track, #chat_box::-webkit-scrollbar-track { background: transparent }\n#mod_menu::-webkit-scrollbar-thumb, .settings_block::-webkit-scrollbar-thumb, #category_block::-webkit-scrollbar-thumb, #chat_box::-webkit-scrollbar-thumb {\n background: linear-gradient(180deg, rgba(110, 110, 110, 0.85), rgba(102, 102, 102, 0.32)); border-radius:10px; box-shadow: inset 0 0 6px rgba(0,0,0,0.4)\n}\n\n\n@keyframes modmenu-fade{ from{ opacity:0; transform: translate(-50%,-52%) scale(.98) } to{ opacity:1; transform: translate(-50%,-50%) scale(1) } }\n\n/* responsive tweaks */\n@media (max-width:720px){\n #category_block{ display:flex; flex-direction:row; gap:6px; width:calc(100% - 48px); left:12px; top:52px }\n .settings_block{ left:12px; top:96px; right:12px }\n}\n\n")),
document.head.appendChild(xt);
const Mt = document.createElement("style");
Mt.innerHTML = "\n/* Menu open animation */\n@keyframes menuSlideIn {\n 0% { opacity: 0; transform: translate(-50%, -48%) scale(0.96); }\n 60% { opacity: 1; transform: translate(-50%, -50%) scale(1.005); }\n 100% { transform: translate(-50%, -50%) scale(1); }\n}\n#mod_menu { animation: menuSlideIn 400ms cubic-bezier(0.16, 1, 0.3, 1) !important; border-radius: 18px !important; }\n\n/* Title shimmer */\n@keyframes shimmer {\n 0% { background-position: -200% center; }\n 100% { background-position: 200% center; }\n}\n#name_text {\n background: linear-gradient(90deg, #fff 0%, rgba(255,255,255,0.65) 50%, #fff 100%) !important;\n background-size: 200% auto !important;\n -webkit-background-clip: text !important;\n -webkit-text-fill-color: transparent !important;\n animation: shimmer 4s linear infinite !important;\n letter-spacing: 2px !important;\n}\n\n/* Sidebar item animations */\n@keyframes iconBounce {\n 0%, 100% { transform: translateY(0); }\n 50% { transform: translateY(-3px); }\n}\n.category { border-radius: 12px !important; transition: all 250ms cubic-bezier(0.16, 1, 0.3, 1) !important; }\n.category:hover { transform: translateX(4px) !important; box-shadow: 0 4px 20px rgba(107,111,224,0.15) !important; }\n.category:hover .category_icon { transform: scale(1.15); transition: transform 250ms cubic-bezier(0.16, 1, 0.3, 1); }\n.category.active .category_icon { animation: iconBounce 600ms ease; }\n#exit:hover { background: rgba(255,50,50,0.1) !important; }\n#exit:hover .category_icon { color: #ff3333 !important; animation: iconBounce 300ms ease; }\n\n/* Setting row reveal */\n@keyframes settingRowReveal {\n from { opacity: 0; transform: translateX(-8px); }\n to { opacity: 1; transform: translateX(0); }\n}\n.setting2 { animation: settingRowReveal 300ms ease backwards !important; }\n.setting2:nth-child(2) { animation-delay: 30ms; }\n.setting2:nth-child(3) { animation-delay: 60ms; }\n.setting2:nth-child(4) { animation-delay: 90ms; }\n.setting2:nth-child(5) { animation-delay: 120ms; }\n.setting2:nth-child(6) { animation-delay: 150ms; }\n\n/* Setting element hover */\n.setting_element {\n border: 1px solid rgba(255,255,255,0.03) !important;\n border-radius: 12px !important;\n background: rgba(40, 42, 56, 0.6) !important;\n transition: all 250ms cubic-bezier(0.16, 1, 0.3, 1) !important;\n}\n.setting_element:hover {\n background: rgba(107,111,224,0.06) !important;\n box-shadow: 0 4px 20px rgba(107,111,224,0.1) !important;\n border-color: rgba(107,111,224,0.15) !important;\n transform: translateY(-1px) !important;\n}\n\n/* Settings title accent color */\n.settings_title {\n color: var(--accent) !important;\n text-transform: uppercase !important;\n letter-spacing: 0.5px !important;\n border-bottom: 1px solid rgba(255,255,255,0.04) !important;\n padding-bottom: 8px !important;\n font-size: 16px !important;\n}\n\n/* Toggle glow on check */\n@keyframes checkboxGlow {\n 0% { box-shadow: 0 0 0 rgba(107,111,224,0); }\n 50% { box-shadow: 0 0 12px rgba(107,111,224,0.4); }\n 100% { box-shadow: 0 0 0 rgba(107,111,224,0); }\n}\n.menu_checkbox:checked { animation: checkboxGlow 400ms ease !important; }\n.menu_checkbox::after { transition: all 300ms cubic-bezier(0.34, 1.56, 0.64, 1) !important; }\n\n/* Input focus glow */\n.setting_element input:focus, .setting_element select:focus {\n border-color: var(--accent) !important;\n box-shadow: 0 0 0 3px rgba(107,111,224,0.15), inset 0 2px 4px rgba(0,0,0,0.2) !important;\n}\n\n/* Thinner scrollbar */\n.settings_block::-webkit-scrollbar, #category_block::-webkit-scrollbar { width: 5px !important; }\n.settings_block::-webkit-scrollbar-thumb, #category_block::-webkit-scrollbar-thumb {\n background: rgba(255,255,255,0.1) !important;\n border-radius: 999px !important;\n}\n.settings_block::-webkit-scrollbar-thumb:hover, #category_block::-webkit-scrollbar-thumb:hover {\n background: rgba(255,255,255,0.2) !important;\n}\n\n/* Sidebar border glow */\n#category_block {\n border: 1px solid rgba(255,255,255,0.06) !important;\n border-radius: 14px !important;\n}\n",
document.head.appendChild(Mt);