const fx_version = '0.5.3.4'; // FX Client Version
const fx_update = 'Jan 9'; // FX Client Last Updated

const ter_version = '1.83.0'; // Territorial Version
const ter_update = '8 January 2023'; // Territorial Last Updated


if (localStorage.getItem("win_count") == undefined || localStorage.getItem("win_count") == null) {
    var wins_counter = 0;
    console.log('Couldn\'t find a saved win data. creating one...');
} else if (localStorage.getItem("win_count") != undefined || localStorage.getItem("win_count") != null) {
    var wins_counter = localStorage.getItem("win_count");
}

var settings = {
    "fontName": "Trebuchet MS",
    "showBotDonations": false,
    "hideAllLinks": false,
    "realisticNames": false,
    "customMapFileBtn": true
};
var settingsManager = new (function() {
    var inputFields = {
        fontName: document.getElementById("settings_fontname")
    };
    var checkboxFields = {
        showBotDonations: document.getElementById("settings_donations_bots"),
        hideAllLinks: document.getElementById("settings_hidealllinks"),
        realisticNames: document.getElementById("settings_realisticnames"),
        customMapFileBtn: document.getElementById("settings_custommapfileinput")
    };
    this.save = function() {
        Object.keys(inputFields).forEach(function(key) { settings[key] = inputFields[key].value.trim(); });
        Object.keys(checkboxFields).forEach(function(key) { settings[key] = checkboxFields[key].checked; });
        this.applySettings();
        WindowManager.closeWindow("settings");
        localStorage.setItem("settings", JSON.stringify(settings));
        // should probably firgure out a way to do this without reloading - // You can't do it, localstorages REQUIRE you to reload
        window.location.reload();
    };
    this.syncFields = function() {
        Object.keys(inputFields).forEach(function(key) { inputFields[key].value = settings[key]; });
        Object.keys(checkboxFields).forEach(function(key) { checkboxFields[key].checked = settings[key]; });
    };
    this.resetAll = function() {
        if (!confirm("Are you Really SURE you want to RESET ALL SETTINGS back to the default?")) return;
        localStorage.removeItem("settings");
        window.location.reload();
    };
    this.applySettings = function() {
        setVarByName("bu", "px " + settings.fontName);
    };
});
function removeWins() {
    var confirm1 = confirm('Do you really want to reset your Wins?');
    if (confirm1) {
        wins_counter = 0;
        localStorage.removeItem('win_count');
        alert("Successfully reset wins");
    }
}
var WindowManager = new (function() {
    var windows = {};
    this.add = function(newWindow) {
        windows[newWindow.name] = newWindow;
        windows[newWindow.name].isOpen = false;
    };
    this.openWindow = function(windowName) {
        if (windows[windowName].isOpen === true) return;
        if (windows[windowName].beforeOpen !== undefined) windows[windowName].beforeOpen();
        windows[windowName].isOpen = true;
        windows[windowName].element.style.display = null;
    };
    this.closeWindow = function(windowName) {
        if (windows[windowName].isOpen === false) return;
        windows[windowName].isOpen = false;
        windows[windowName].element.style.display = "none";
    };
    this.closeAll = function() {
        Object.values(windows).forEach(function(windowObj) {
            WindowManager.closeWindow(windowObj.name);
        });
    };
});
WindowManager.add({
    name: "settings",
    element: document.querySelector(".settings"),
    beforeOpen: function() { settingsManager.syncFields(); }
});
WindowManager.add({
    name: "donationHistory",
    element: document.querySelector("#donationhistory"),
    beforeOpen: function() {
        document.getElementById("donationhistory_note").style.display = ((settings.showBotDonations || getVarByName("dt")) ? "none" : "block");
    }
});
document.getElementById("canvasA").addEventListener("mousedown", WindowManager.closeAll);
document.getElementById("canvasA").addEventListener("touchstart", WindowManager.closeAll);
//var tfxc = document.createElement('div');
//tfxc.setAttribute('class', 'settingsd');
var settingsGearIcon = document.createElement('img');
settingsGearIcon.setAttribute('src', 'assets/geari_white.png');
//gear.setAttribute('id', 'optionsimg');
//tfxc.appendChild(gear);

var donationsTracker = new (function(){
    this.donationHistory = Array();
    // fill the array with empty arrays with length of 3
    for (var i = 0; i < 512; i++) this.donationHistory.push([]);
    // from inside of game:
    // ((!gE[g].startsWith("[Bot] ") || settings.showBotDonations) && donationsTracker.logDonation(g,k,x))
    this.logDonation = function(senderID, receiverID, amount) {
        this.donationHistory[receiverID].push([senderID,amount]);
    };
    this.getRecipientHistoryOf = function(playerID) {
        return this.donationHistory[playerID];
    };
});
// usage from inside: displayDonationsHistory(Y, gE);
function displayDonationsHistory(playerID, playerNames) {
    var history = donationsTracker.getRecipientHistoryOf(playerID);
    console.log("History for " + playerNames[playerID] + ":");
    console.log(history);
    document.querySelector("#donationhistory h1").innerHTML = "Donation history for " + playerNames[playerID];
    var historyText = "";
    history.reverse();
    if (history.length > 0) history.forEach(function(historyItem, index) {
        historyText += (history.length - index) + ". Received " + historyItem[1] + " resources from " + playerNames[historyItem[0]] + "<br>";
    });
    else historyText = "Nothing to display";
    document.querySelector("#donationhistory p#donationhistory_text").innerHTML = historyText;
    WindowManager.openWindow("donationHistory");
}

var utils = new (function() {
    this.getMaxTroops = function(playerTerritories, playerID) { return playerTerritories[playerID]*150; };
    this.getDensity = function(playerBalances, playerTerritories, playerID) {
        return (Math.floor((playerBalances[playerID] / ((playerTerritories[playerID] === 0 ? 1 : playerTerritories[playerID]) * 150)) * 100) + "%");
    };
});


var setVarByName, getVarByName;


(function () {

    setVarByName = function(varName, newValue) { return eval(varName + ' = "' + newValue + '"'); }
    getVarByName = function(varName) { return eval(varName); }

    function a() {
        if (b)
            return c.username;
        if (12 <= d) {
            var g = e.loadString(20);
            "" === g && (g = "[FX] " + "Android User " + Math.floor(1E3 * Math.random()),
                e.saveString(20, g))
        } else
            5 <= d ? (g = e.loadString(0),
                "" === g && (g = "[FX] " + "Player " + Math.floor(1E3 * Math.random()),
                    e.saveString(0, g))) : g = f.g(0);
        return g
    }
    function h() {
        i = Math.floor(1 + Math.random() * (Math.pow(2, 30) - 1));
        if (b)
            i = c.id;
        else if (12 <= d) {
            var g = e.loadNumber(20);
            -1 === g ? e.saveNumber(20, i) : i = g
        } else
            5 <= d ? (g = e.loadNumber(2),
                2 === g ? e.saveNumber(2, i + 3) : i = g - 3) : i = f.g(1)
    }
    function j() {
        var g = 0;
        if (b)
            g = c.password;
        else if (12 <= d)
            g = e.loadString(22);
        else {
            if (5 <= d)
                return g;
            g = f.g(9)
        }
        var k = Math.floor(Math.pow(2, 48));
        g = Math.floor(parseInt(m.n(g)));
        if (0 < g && g < k)
            return g;
        g = Math.floor(1 + (k - 1) * Math.random());
        return o(g) ? g : 0
    }
    function p() {
        if (b)
            q = c.zoom || r < s;
        else if (12 <= d) {
            var g = e.loadNumber(21);
            -1 === g ? (q = 100 >= e.getNumber(0) || r < s,
                e.saveNumber(21, q ? 1 : 0)) : q = 1 === g || r < s
        } else
            5 <= d ? (g = e.loadNumber(1),
                2 === g ? (q = !0,
                    e.saveNumber(1, q ? 1 : 0)) : q = 1 === g) : q = 0 === f.g(4) || r < s
    }
    function u() {
        return b ? c.emojis : 5 <= d ? e.loadString(1) : f.g(7)
    }
    function v() {
        return b ? c.colors : 12 <= d ? e.loadString(21) : 5 <= d ? e.loadString(2) : f.g(8)
    }
    function w(g) {
        if (b)
            window.webkit.messageHandlers.iosCommandA.postMessage("username " + g);
        else if (12 <= d)
            e.saveString(20, g),
                e.setState(10);
        else if (5 <= d)
            e.saveString(0, g);
        else {
            if (3 > g.length || 0 <= g.indexOf(";"))
                g = "Player 666";
            f.x(0, g);
            f.y()
        }
    }
    function o(g) {
        g = m.z(g.toString());
        return b ? (c.password = g,
            window.webkit.messageHandlers.iosCommandA.postMessage("password " + g),
            !0) : 12 <= d ? (e.saveString(22, g),
                !0) : 5 <= d ? !1 : 2 === f.a0() ? (f.x(9, g),
                    f.y(),
                    !0) : !1
    }
    function a1(g, k) {
        b ? (window.webkit.messageHandlers.iosCommandA.postMessage("zoom " + (g ? 1 : 0)),
            window.webkit.messageHandlers.iosCommandA.postMessage("sound " + (k ? 1 : 0))) : 12 <= d ? (e.saveNumber(22, k ? 1 : 0),
                e.saveNumber(21, g ? 1 : 0)) : 5 <= d ? (e.saveNumber(1, g ? 1 : 0),
                    e.saveNumber(11, k ? 1 : 0)) : (f.x(2, k ? 1 : 0),
                        f.x(4, g ? 0 : 1),
                        f.y())
    }
    function a3() {
        for (var g = "", k = 0; k < a5.a6; k += 2)
            g += a5.a7[k] || a5.a7[k + 1] ? a5.a7[k] && !a5.a7[k + 1] ? "1" : !a5.a7[k] && a5.a7[k + 1] ? "2" : "3" : "0";
        b ? window.webkit.messageHandlers.iosCommandA.postMessage("emojis " + g) : 5 <= d ? e.saveString(1, g) : (f.x(7, g),
            f.y())
    }
    function a8(g) {
        if (b)
            window.webkit.messageHandlers.iosCommandA.postMessage("colors " + g);
        else {
            if (12 <= d)
                e.saveString(21, g);
            else if (5 <= d) {
                e.saveString(2, g);
                return
            }
            f.x(8, g);
            f.y()
        }
    }
    function a9(g) {
        b || 5 <= d && e.setState(g)
    }
    function aB() {
        /* b ? window.webkit.messageHandlers.iosCommandA.postMessage("show ad 1800000") : 12 <= d && e.presentAd(18E5) */
        console.log('Game tried to display an ad, but we prevented it.');
    }
    function aC() {
        b ? location.reload() : 7 <= d ? e.setState(5) : location.reload()
    }
    function aD() {
        14 > d || e.saveString(23, '<!DOCTYPE html>\n<html lang="aG">\n' + document.getElementsByTagName("html")[0].innerHTML + "\n</html>")
    }
    self.aiCommand746 = function (g) {
        0 === g ? aI() : 1 !== g || 14 > d || aJ.aK()
    }
        ;
    var aL, aM, aN, aO, aP, aQ, aR, aS, aT, aU, aV, aW, aX;
    function aY() {
        aQ = 0;
        aR = 2048;
        aS = new Uint32Array(4 * aR);
        aT = 0;
        aU = new Uint32Array(aR);
        aV = new Int32Array(4);
        aV[0] = -4 * aZ;
        aV[1] = 4;
        aV[2] = -aV[0];
        aV[3] = -aV[1];
        aW = new Uint8Array(aZ * aa)
    }
    function ab(g) {
        aM = g;
        aX = !1;
        ac();
        ad();
        for (g = ae.af(aM) - 1; 0 <= g; g--)
            0 === ae.ag(aM, g) && (aL = g,
                ah());
        aX && ai()
    }
    function ai() {
        aj();
        ak()
    }
    function ah() {
        aP = ae.al(aM, aL);
        aN = ae.am(aM, aL);
        an();
        0 === aQ ? ao() : (ap(),
            aq() ? ar() : ao())
    }
    function aq() {
        aO = as(aN, aQ);
        return aO > at
    }
    function ap() {
        var g;
        for (g = aQ - 1; 0 <= g; g--)
            aW[as(aS[g], 4)] = 0
    }
    function ao() {
        1 === ae.af(aM) && au.av(aM);
        if (aM !== aw)
            ax[aM] += aN,
                ay.az(aM);
        else {
            var g = ax[aM];
            ax[aM] += aN;
            ay.az(aM);
            b0.b1[13] -= ax[aM] - g
        }
        ae.b2(aM, aL)
    }
    function ac() {
        var g = b4[aM].length;
        g = g > aR ? aR : g;
        aT = 0;
        for (--g; 0 <= g; g--)
            aU[aT++] = b4[aM][g]
    }
    function ad() {
        var g;
        for (g = b4[aM].length - 1; 0 <= g; g--)
            b5.b6(b4[aM][g]) && b5.b7(b4[aM][g], aM);
        b4[aM] = []
    }
    function an() {
        aQ = 0;
        aP === b8 ? b9() : bA()
    }
    function bA() {
        var g, k;
        for (g = 3; 0 <= g; g--)
            for (k = aT - 1; 0 <= k; k--) {
                var x = aU[k] + aV[g];
                var l = as(x, 4);
                0 === aW[l] && b5.bE(x) && b5.bF(x) === aP && (aW[l] = 1,
                    aS[aQ++] = x)
            }
    }
    function b9() {
        var g, k;
        for (g = 3; 0 <= g; g--)
            for (k = aT - 1; 0 <= k; k--) {
                var x = aU[k] + aV[g];
                var l = as(x, 4);
                0 === aW[l] && b5.bG(x) && (aW[l] = 1,
                    aS[aQ++] = x)
            }
    }
    function ar() {
        bH() ? (bI(),
            aP !== b8 && bJ()) : ao()
    }
    function bJ() {
        bK();
        bL(bM[aP]);
        bL(bN[aP]);
        bO(b4[aP]);
        bP(bN[aP]);
        bP(bQ[aP]);
        bR();
        bS()
    }
    function bI() {
        aX = !0;
        ae.bT(aM, aL, aN);
        bU[aM] += aQ;
        bV();
        bW()
    }
    function bH() {
        return aP === b8 ? bX() : bY()
    }
    function bY() {
        var g = aQ * at
            , k = bb()
            , x = bd();
        k = g + 2 * k + x;
        var l = aO * aQ;
        if (l > k)
            return aN -= k,
                bg(k - g, x),
                !0;
        aN -= l;
        bg(l - g, x);
        return !1
    }
    function bg(g, k) {
        if (0 < k)
            if (g >= k)
                ae.bh(aP, aM, 0),
                    g -= k;
            else {
                ae.bh(aP, aM, k - g);
                return
            }
        g = as(g, 2);
        ax[aP] = ax[aP] >= g ? ax[aP] - g : 0
    }
    function bd() {
        return ae.bi(aP, aM)
    }
    function bb() {
        return as(aQ * ax[aP], 1 + bj() * bk())
    }
    function bj() {
        return Math.floor(2 + bl(as(bU[aP], 100), 8))
    }
    function bk() {
        return bM[aP].length + as(bN[aP].length + bQ[aP].length, 50)
    }
    function bX() {
        aN -= aQ * at;
        return !0
    }
    function bW() {
        for (var g = aQ - 1; 0 <= g; g--)
            b4[aM].push(aS[g]),
                bM[aM].push(aS[g]),
                b5.b7(aS[g], aM)
    }
    function bm() {
        var g = 1
            , k = [null, null];
        this.bp = function () {
            g = .72 * (q ? .0011 : .001) * bq;
            for (var x = 1; 0 <= x; x--)
                k[x] && this.br(x, k[x].l)
        }
            ;
        this.br = function (x, l) {
            k[x] = {
                l: l,
                font: bt + 10 + bu
            };
            this.bv(x)
        }
            ;
        this.bv = function (x) {
            if (bw.bx() && k[x]) {
                var l = k[x].l
                    , t = Math.floor(.15 * g * bw.bz(13).height)
                    , n = bt + t + bu
                    , z = c2.measureText(l, n)
                    , y = .8 * g * bw.bz(13).width;
                z > y && (t = Math.floor(t * y / z),
                    n = bt + t + bu);
                k[x] = {
                    l: l,
                    font: n
                };
                c4.c5 = !0
            }
        }
            ;
        this.c6 = function () {
            return Math.floor(g * bw.bz(13).height)
        }
            ;
        this.c7 = function (x, l) {
            return !bw.bx() || x < cA || l < cB - cC.c1 - g * bw.bz(13).height - 2 * cA || l > cB - cC.c1 - 2 * cA ? !1 : x < cA + g * bw.bz(13).width ? (cD.cE(0),
                !0) : x < 2 * cA + g * bw.bz(13).width ? !1 : x < 2 * cA + 2 * g * bw.bz(13).width ? (cD.cE(1),
                    !0) : !1
        }
            ;
        this.cF = function () {
            return Math.floor(cB - cC.c1 - g * bw.bz(13).height - 2 * cA)
        }
            ;
        this.cG = function () {
            if (bw.bx()) {
                cH.imageSmoothingEnabled = !0;
                cH.setTransform(g, 0, 0, g, cA, this.cF());
                cH.drawImage(bw.bz(14), 0, 0);
                cH.setTransform(g, 0, 0, g, 2 * cA + g * bw.bz(13).width, this.cF());
                cH.drawImage(bw.bz(13), 0, 0);
                for (var x = 1; 0 <= x; x--)
                    k[x] && (cH.setTransform(1, 0, 0, 1, (1 + x) * cA + x * g * bw.bz(13).width, this.cF()),
                        cH.font = k[x].font,
                        cH.textBaseline = cI,
                        cH.textAlign = cJ,
                        cH.fillStyle = cK,
                        cH.fillText(k[x].l, .5 * g * bw.bz(13).width, .86 * g * bw.bz(13).height));
                cH.setTransform(1, 0, 0, 1, 0, 0)
            }
        }
    }
    function cL(g, k, x, l) {
        var t = as(3 * ax[g], 256);
        l -= l >= as(ax[g], 2) ? t : 0;
        cP(x, g);
        ae.cQ(g, l, k);
        ax[g] -= l + t;
        au.cR(g, !1)
    }
    function cS(g, k) {
        var x, l;
        for (x = bM[g].length - 1; 0 <= x; x--)
            if (b5.cU(bM[g][x]))
                for (l = 3; 0 <= l; l--)
                    if (b5.bE(bM[g][x] + aV[l]) && b5.bF(bM[g][x] + aV[l]) === k) {
                        b4[g].push(bM[g][x]);
                        break
                    }
    }
    function cP(g, k) {
        for (var x = b4[k].length - 1; x >= g; x--)
            b5.cW(b4[k][x], k)
    }
    function cX(g) {
        for (var k, x = bM[g].length - 1; 0 <= x; x--)
            if (b5.cU(bM[g][x]))
                for (k = 3; 0 <= k; k--)
                    if (b5.bG(bM[g][x] + aV[k])) {
                        b4[g].push(bM[g][x]);
                        break
                    }
    }
    function cY(g, k) {
        var x, l;
        var t = bM[g].length;
        var n = 256 <= t ? 12 : 32 <= t ? 6 : 1;
        t = t - 1 - ce.cf(n);
        cg = 0;
        a: for (; 0 <= t; t -= n)
            for (l = 3; 0 <= l; l--) {
                var z = b5.bG(bM[g][t] + aV[l]) ? b8 : b5.bF(bM[g][t] + aV[l]);
                if (z === b8 || b5.bE(bM[g][t] + aV[l]) && z !== g && (k || ch(g, z))) {
                    for (x = cg - 1; 0 <= x; x--)
                        if (ci[x] === z)
                            continue a;
                    ci[cg] = z;
                    if (++cg >= cj)
                        return !0
                }
            }
        return 0 < cg
    }
    function ck(g, k) {
        var x, l;
        cg = 0;
        for (x = bM[g].length - 1; 0 <= x; x--)
            for (l = 3; 0 <= l; l--) {
                var t = b5.bG(bM[g][x] + aV[l]) ? b8 : b5.bF(bM[g][x] + aV[l]);
                if (t === b8 || b5.bE(bM[g][x] + aV[l]) && t !== g && (k || ch(g, t))) {
                    ci[cg++] = t;
                    return
                }
            }
    }
    function cl() {
        var g;
        for (g = cg - 1; 0 <= g; g--)
            if (ci[g] === b8) {
                for (cg--; g < cg; g++)
                    ci[g] = ci[g + 1];
                return !0
            }
        return !1
    }
    function cn(g) {
        var k, x;
        for (k = cg - 1; 0 <= k; k--)
            if (ae.co(g, ci[k]))
                for (cg--,
                    x = k; x < cg; x++)
                    ci[x] = ci[x + 1];
        return 0 === cg
    }
    function cp() {
        var g;
        for (g = cg - 1; 0 <= g; g--)
            if (ci[g] >= cq)
                return !0;
        return !1
    }
    function cr() {
        var g, k;
        for (g = cg - 1; 0 <= g; g--)
            if (ci[g] < cq)
                for (cg--,
                    k = g; k < cg; k++)
                    ci[k] = ci[k + 1];
        return 0 < cg
    }
    function cs(g) {
        var k, x = ci[0], l = ax[x] + ae.bi(x, g);
        for (k = cg - 1; 1 <= k; k--) {
            var t = ax[ci[k]] + ae.bi(ci[k], g);
            t < l && (x = ci[k],
                l = t)
        }
        return x
    }
    function cv(g) {
        var k = ci[0];
        if (1 === cg)
            return k;
        var x = as(cz[g] + d0[g], 2)
            , l = as(d2[g] + d3[g], 2)
            , t = d5(x - as(cz[k] + d0[k], 2)) + d5(l - as(d2[k] + d3[k], 2));
        for (g = cg - 1; 1 <= g; g--) {
            var n = d5(x - as(cz[ci[g]] + d0[ci[g]], 2)) + d5(l - as(d2[ci[g]] + d3[ci[g]], 2));
            n < t && (t = n,
                k = ci[g])
        }
        return k
    }
    function d6() {
        return ci[ce.cf(cg)]
    }
    var cj, cg, ci, d7;
    function d8() {
        cj = 8;
        cg = 0;
        ci = new Uint16Array(cj)
    }
    function d9() {
        d7 = dA ? new Uint8Array(b8) : null
    }
    function dB(g, k) {
        dA && (d7[g] = 0);
        if (ae.dD(g) && !(60 > k))
            if (0 === bM[g].length)
                dE.dF(g, dG.cN[g - cq]) || (dG.dH(g - cq, 200),
                    dI(g, k, dG.cN[g - cq], ay.dJ(g)));
            else if (!(0 < bN[g].length && ce.random() < ce.value(bN[g].length > bM[g].length ? 7 : 3) && dE.dF(g, dG.cN[g - cq]))) {
                var x = ay.dJ(g);
                ax[g] > x && k < ax[g] - x && (k = ax[g] - x);
                dA ? dK(g, k, dG.cN[g - cq], x) : dL(g, k, dG.cN[g - cq])
            }
    }
    function dK(g, k, x, l) {
        cY(g, !1) || ck(g, !1) ? (d7[g] = 1,
            cn(g) || (cl() ? (dN(g, k),
                dO(g, b8, x)) : (ce.dP(dG.dQ[x]) ? l = cs(g) : (cp() && ce.dP(dG.dS[x]) && cr(),
                    l = cv(g)),
                    dR(g, k, l),
                    dO(g, l, x)))) : 0 < bN[g].length && ce.random() < ce.value(60) && dE.dF(g, x) || (dG.dH(g - cq, 200),
                        dI(g, k, x, l))
    }
    function dT(g, k) {
        cY(g, !1) || ck(g, !1) ? (d7[g] = 1,
            cl() ? dN(g, k) : dR(g, k, d6())) : dI(g, k, 0, 0)
    }
    function dO(g, k, x) {
        3 <= x && 2142 < c4.dU() && (k === b8 || ax[k] < as(ax[g], 20)) && dG.dH(g - cq, 25)
    }
    function dI(g, k, x, l) {
        if (0 !== dW.dX[g] && !(5 === x && ax[g] < l || 4 === x && ax[g] < as(l, 2)))
            for (x = ce.cf(dY),
                l = 0; l < dY; l++) {
                var t = dZ[(l + x) % dY];
                if (dW.dX[t] === dW.dX[g] && 1 === d7[t]) {
                    da(g, t, k);
                    t < cq && ce.random() < ce.value(10) && (d7[t] = 0);
                    break
                }
            }
    }
    function dL(g, k, x) {
        !cY(g, !0) && !ck(g, !0) || cn(g) || (cl() ? dN(g, k) : ce.dP(dG.dQ[x]) ? dR(g, k, cs(g)) : (cp() && ce.dP(dG.dS[x]) && cr(),
            dR(g, k, cv(g))))
    }
    function db(g, k) {
        if (cY(g, !0) || ck(g, !0))
            cl() ? dN(g, k) : dR(g, k, d6())
    }
    function dR(g, k, x) {
        if (as(ax[g], 8) > ax[x]) {
            var l = as(11 * ax[x], 5);
            k = k > l ? k : l
        }
        l = b4[g].length;
        cS(g, x);
        cL(g, x, l, k)
    }
    function dN(g, k) {
        var x = b8
            , l = b4[g].length;
        cX(g);
        return b4[g].length !== l ? (cL(g, x, l, k),
            !0) : !1
    }
    var dd = [60, 74, 112, 200, 256, 512];
    function de() {
        var g, k, x, l, t, n;
        this.dl = "Very Easy;Easy;Normal;Hard;Harder;Very Hard".split(";");
        this.dm = [97, 95, 93, 90, 87, 84];
        this.dS = [98, 95, 90, 40, 20, 0];
        this.dn = [85, 70, 65, 30, 7, 3];
        this.dQ = [0, 0, 0, 0, 50, 90];
        this.bp = function () {
            var z;
            g = new Uint8Array(dq);
            k = new Uint16Array(dq);
            x = new Uint16Array(dq);
            l = new Uint8Array(dq);
            this.cN = new Uint8Array(dq);
            t = new Uint16Array(dq);
            n = new Uint16Array(dq);
            if (9 === dr)
                this.ds();
            else if (dt)
                if (dA)
                    for (z = dq - 1; 0 <= z; z--)
                        this.cN[z] = du.dv[dW.dX[z + cq] - 1].bD;
                else
                    for (z = dq - 1; 0 <= z; z--)
                        this.cN[z] = du.dv[0].bD;
            else {
                var y = 8 === dr ? 1 : 0;
                for (z = dq - 1; 0 <= z; z--)
                    this.cN[z] = y
            }
            for (z = dq - 1; 0 <= z; z--)
                2 >= this.cN[z] ? (l[z] = 5,
                    t[z] = n[z] = 1040,
                    0 === this.cN[z] ? (k[z] = 1E3,
                        x[z] = 1E3) : 1 === this.cN[z] ? (k[z] = 1E3,
                            x[z] = 920,
                            t[z] = n[z] = 1100) : (k[z] = 1E3,
                                x[z] = 870)) : 4 >= this.cN[z] ? (l[z] = 1 + ce.cf(20),
                                    n[z] = 250 + ce.cf(1501),
                                    t[z] = 500 + ce.cf(501),
                                    3 === this.cN[z] ? (k[z] = 600 + ce.cf(101),
                                        x[z] = 300 + ce.cf(401)) : (k[z] = 300 + ce.cf(201),
                                            x[z] = 100 + ce.cf(201))) : (t[z] = 1E3,
                                                n[z] = 1E3,
                                                l[z] = 35 + ce.cf(16),
                                                k[z] = 400 + ce.cf(101),
                                                x[z] = 50 + ce.cf(101)),
                    g[z] = 1 + as(t[z] * ce.random(), 10 * ce.value(100))
        }
            ;
        this.ds = function () {
            var z, y;
            var A = dy.dz;
            for (z = A - 1; 0 <= z; z--)
                this.cN[z] = 5;
            for (y = 0; 6 > y; y++)
                if (0 < dy.e0[y]) {
                    for (z = A + dy.e0[y] - 1; z >= A; z--)
                        this.cN[z] = y;
                    A += dy.e0[y]
                }
        }
            ;
        this.dH = function (z, y) {
            0 <= z && (g[z] = y)
        }
            ;
        this.dF = function (z) {
            if (0 === --g[z]) {
                t[z] !== n[z] && (t[z] += t[z] < n[z] ? 3 : -3);
                k[z] !== x[z] && (k[z] += k[z] < x[z] ? l[z] : -l[z],
                    k[z] = Math.abs(k[z] - x[z]) <= l[z] ? x[z] : k[z]);
                g[z] = as(t[z], 10);
                var y = z + cq;
                dB(y, as(k[z] * ax[y], 1E3))
            }
        }
    }
    function e4() {
        e5.dF();
        e6.dF();
        e7.e8();
        e9.dF()
    }
    function eA() {
        ay.dF();
        eB.dF();
        eC.dF();
        eD.dF();
        eE.dF();
        eF.dF();
        au.dF();
        eG.dF();
        eH();
        eI.dF();
        dy.dF();
        e6.dF();
        e7.dF();
        eJ.dF();
        eK.dF();
        eL.dF();
        e5.dF();
        eM.dF();
        eN.dF();
        eO.dF();
        b0.dF();
        eP.dF();
        e9.dF()
    }
    function eQ() {
        eR.dF();
        eS.dF();
        c2.dF();
        eT.dF();
        eU.eV()
    }
    function eW() {
        eI.eX(!1);
        eL.eX();
        e7.eX(!1);
        eK.eX();
        eN.eX();
        eO.eX();
        e6.eX();
        eP.bv()
    }
    function eY() {
        e6.eX() && (c4.c5 = !0);
        e9.dF()
    }
    function eZ() {
        function g(A) {
            var B;
            for (B = l - 1; 0 <= B; B--)
                0 === n[t[B]] && bU[t[B]] >= A && ab(t[B])
        }
        function k(A) {
            n[A] = 10 === n[A] ? x : 1E3 > bU[A] ? 3 : 1E4 > bU[A] ? 2 : 6E4 > bU[A] ? 1 : 0
        }
        var x, l, t, n, z, y;
        this.bp = function () {
            z = y = 0;
            x = 6;
            l = 0;
            t = new Uint16Array(b8);
            n = new Uint8Array(b8)
        }
            ;
        this.dF = function () {
            var A;
            z = b0.b1[13];
            y = ax[aw];
            for (A = l - 1; 0 <= A; A--)
                10 === n[t[A]] ? k(t[A]) : 0 === n[t[A]]-- && (k(t[A]),
                    ab(t[A]));
            16E4 <= bU[ei[0]] && (g(16E4),
                3E5 <= bU[ei[0]] && g(3E5));
            bU[aw] > b0.b1[7] && (b0.b1[7] = bU[aw]);
            b0.b1[14] += y - ax[aw] + z - b0.b1[13]
        }
            ;
        this.av = function (A) {
            var B;
            for (B = l - 1; 0 <= B; B--)
                if (A === t[B]) {
                    l--;
                    for (A = B; A < l; A++)
                        t[A] = t[A + 1];
                    break
                }
        }
            ;
        this.cR = function (A, B) {
            var C;
            for (C = l - 1; 0 <= C; C--)
                if (A === t[C])
                    return;
            t[l++] = A;
            n[A] = B ? 2 : 10
        }
    }
    function en() {
        function g() {
            l = 3;
            a: {
                for (var y = 40; 1 <= y; y--) {
                    t = d0[z] + as(ce.random() * (cz[z] - d0[z] + 1), ce.value(100));
                    n = d3[z] + as(ce.random() * (d2[z] - d3[z] + 1), ce.value(100));
                    var A = k(b5.ex(t, n));
                    if (1 !== A)
                        break a
                }
                A = 1
            }
            if (0 === A)
                return !1;
            if (2 === A)
                return !0;
            A = x(1, 1);
            return 0 === A ? !1 : 2 === A ? !0 : 2 === x(54, 4)
        }
        function k(y) {
            if (b5.b6(y) && (b5.bG(y) || b5.bF(y) !== z && ch(z, b5.bF(y)))) {
                if (ev.co(z, y))
                    return 2;
                if (0 === l--)
                    return 0
            }
            return 1
        }
        function x(y, A) {
            for (var B, C, F, E, H, J, K, D = y; D < y + 50 * A; D += A)
                if (B = d0[z] - D,
                    B = 1 > B ? 1 : B,
                    C = d3[z] - D,
                    C = 1 > C ? 1 : C,
                    F = cz[z] + D,
                    F = F >= aZ - 1 ? aZ - 2 : F,
                    E = d2[z] + D,
                    E = E >= aa - 1 ? aa - 2 : E,
                    K = as(2 * ce.random() * (F - B + E - C), ce.value(100)),
                    H = F - B,
                    J = E - C,
                    K <= H ? (t = B + K,
                        n = C) : K <= H + J ? (t = F,
                            n = C + K - H) : K <= 2 * H + J ? (t = B + K - H - J,
                                n = E) : (t = B,
                                    n = C + K - 2 * H - J),
                    B = k(b5.ex(t, n)),
                    1 !== B)
                    return B;
            return 1
        }
        var l, t, n, z;
        this.dF = function (y, A) {
            z = y;
            if (0 === bN[z].length)
                return !1;
            if (g()) {
                var B = as(dG.dn[A] * ax[z], 100);
                100 > B && 100 <= ax[z] && (B = 100);
                if (100 <= B)
                    return eu(z, ev.ew(), b5.ex(t, n), B)
            }
            return !1
        }
    }
    function f8() {
        var g, k;
        this.bp = function () {
            g = dq;
            k = new Uint16Array(dq);
            for (var x = dq - 1; 0 <= x; x--)
                k[x] = x
        }
            ;
        this.dF = function () {
            for (var x = g - 1; 0 <= x; x--)
                if (0 === fB[k[x] + cq]) {
                    var l = x;
                    for (g--; l < g; l++)
                        k[l] = k[l + 1]
                } else
                    dG.dF(k[x])
        }
    }
    function fD() {
        function g(y, A, B, C, F, E) {
            0 < B && 1E3 >= B && (k.push(y),
                x.push(A),
                l.push(B),
                t.push(C),
                n.push(F),
                z.push(E))
        }
        var k, x, l, t, n, z;
        this.bp = function () {
            k = [];
            x = [];
            l = [];
            t = [];
            n = [];
            z = []
        }
            ;
        this.dF = function () {
            var y, A = k.length;
            for (y = 0; y < A; y++)
                if (0 === x[y])
                    fH(k[y], t[y], l[y]);
                else if (1 === x[y])
                    this.fI(k[y], l[y], n[y], z[y]);
                else if (2 === x[y])
                    this.fJ(k[y], t[y]);
                else if (6 === x[y]) {
                    var B = k[y];
                    0 !== fB[B] && 2 !== fP[k] && eO.fT(B, 1 === t[y])
                } else
                    7 === x[y] && this.fL(k[y], t[y]);
            0 < A && this.bp()
        }
            ;
        this.fI = function (y, A, B, C) {
            0 !== fB[y] && 2 !== fP[k] && ev.co(y, b5.ex(B, C)) && eu(y, ev.ew(), b5.ex(B, C), as(A * ax[y], 1E3)) && y === aw && (b0.b1[0] += A,
                b0.b1[1]++,
                b0.b1[2]++)
        }
            ;
        this.fJ = function (y, A) {
            if (0 !== fB[y] && 2 !== fP[k] && ae.co(y, A)) {
                var B = ae.bi(y, A);
                ae.bh(y, A, 0);
                if (y !== aw)
                    ax[y] += B,
                        ay.az(y);
                else {
                    var C = ax[y];
                    ax[y] += B;
                    ay.az(y);
                    b0.b1[13] -= ax[y] - C
                }
            }
        }
            ;
        this.fL = function (y, A) {
            if (0 !== fB[y] && 2 !== fP[k]) {
                var B = ae.fR(y, A);
                if (-1 !== B) {
                    var C = ae.am(y, B);
                    ae.bT(y, B, 0);
                    ax[y] += C;
                    ay.az(y)
                }
            }
        }
            ;
        this.fU = function (y, A, B) {
            1 === fV && g(y, 0, A, B, 0, 0)
        }
            ;
        this.fX = function (y, A, B, C) {
            1 === fV && (fY ? fZ.cQ(y, B, C) : g(y, 1, A, 0, B, C))
        }
            ;
        this.fa = function (y, A) {
            1 === fV && g(y, 2, 1, A, 0, 0)
        }
            ;
        this.fb = function (y, A) {
            1 === fV && g(y, 7, 1, A, 0, 0)
        }
            ;
        this.fc = function (y, A) {
            1 === fV && g(y, 6, 1, A, 0, 0)
        }
            ;
        this.fd = function (y) {
            1 === fV && 0 !== fB[y] && 2 !== fP[y] && (8 === dr ? fe.ff(1 - y) : this.fg(y));
            e5.fh(y, 4)
        }
            ;
        this.fg = function (y) {
            fY ? (fi(y),
                fj()) : eE.fk(y)
        }
            ;
        this.fl = function (y) {
            0 !== fB[y] && 2 !== fP[y] && fm.fn(y) && (1 === dY ? fe.ff(y) : (e5.fh(y, y === aw ? 21 : 22),
                8 === dr ? fe.ff(1 - y) : dt ? (fi(y),
                    fj(),
                    fY && fZ.dF()) : this.fg(y)))
        }
    }
    function fq() {
        function g(B) {
            for (l--; B < l; B++)
                t[B] = t[B + 1],
                    n[B] = n[B + 1],
                    z[B] = z[B + 1],
                    y[B] = y[B + 1],
                    A[B] = A[B + 1]
        }
        var k, x, l, t, n, z, y, A;
        this.bp = function () {
            k = 1;
            l = 0;
            x = 2 * b8;
            t = new Uint16Array(x);
            n = new Uint8Array(x);
            z = new Uint16Array(x);
            y = new Uint32Array(x);
            A = new Uint32Array(x)
        }
            ;
        this.fw = function (B, C) {
            y[B] = C
        }
            ;
        this.dF = function () {
            for (var B = l - 1; 0 <= B; B--)
                0 === n[B]-- && (n[B] = 2,
                    fx.dF(B, z[B], t[B], y[B], A[B]))
        }
            ;
        this.av = function (B, C) {
            var F;
            for (F = l - 1; 0 <= F; F--)
                if (B === t[F] && C === z[F]) {
                    g(F);
                    break
                }
        }
            ;
        this.fz = function (B) {
            var C;
            for (C = l - 1; 0 <= C; C--)
                B === t[C] && (fx.g0(B, y[C]),
                    g(C))
        }
            ;
        this.cR = function (B, C, F) {
            if (l >= x)
                return 0;
            t[l] = B;
            n[l] = 0;
            z[l] = k;
            y[l] = C;
            A[l] = F;
            B = k;
            k++;
            l++;
            k = k > 2 * x ? 1 : k;
            return B
        }
            ;
        this.cG = function () {
            if (!(40 > g3 || 0 === l)) {
                var B, C = g8 / g3, F = g9 / g3, E = (gA + g8) / g3, H = (cB + g9) / g3;
                cH.textAlign = cJ;
                cH.textBaseline = cI;
                for (B = l - 1; 0 <= B; B--) {
                    var J = b5.gB(y[B]);
                    var K = b5.cF(y[B]);
                    var D = t[B];
                    if (J > C - 1 && J < E && K > F - 1 && K < H && 0 !== fB[D]) {
                        var L = Math.floor(.94 * g3 * e6.gC(D));
                        if (!(6 > L)) {
                            J = Math.floor(gA * (J + .5 - C) / (E - C));
                            K = Math.floor(cB * (K + .48 - F) / (H - F));
                            cH.font = bt + L + bu;
                            cH.fillStyle = gD;
                            cH.fillText(gE[D], J, K);
                            var I = Math.floor(.57 * L);
                            6 > I || (D = ae.am(D, ae.fR(D, z[B])),
                                cH.font = bt + I + bu,
                                cH.fillText(eL.gF(D), J, K + Math.floor(.82 * L)))
                        }
                    }
                }
            }
        }
    }
    function gG() {
        function g(I) {
            J = c4.gY;
            K = 33;
            n = z = t = 0;
            y = K / I;
            l = 1 / (I / K / 4);
            A = (gA / 2 + g8) / g3;
            B = (cB / 2 + g9) / g3;
            C = g3
        }
        function k(I) {
            .125 > Math.abs(Math.log(H / C)) && (H = I * C)
        }
        function x(I, N, G, M) {
            F = (I + G + 1) / 2;
            E = (N + M + 1) / 2;
            I = gA / (G - I + 1);
            N = cB / (M - N + 1);
            H = .9 * (I < N ? I : N)
        }
        var l, t, n, z, y, A, B, C, F, E, H, J, K, D = !1, L = !1;
        this.gZ = function () {
            return D
        }
            ;
        this.ga = function () {
            g(1);
            this.gb(0, 0, aZ - 1, aa - 1);
            fY || this.gc(aw, 3E3, !0, .3)
        }
            ;
        this.gc = function (I, N, G, M) {
            if (!(ge || D && !G && L || 0 === bU[I])) {
                gf.gg = !1;
                L = G;
                g(N);
                F = (d0[I] + cz[I] + 1) / 2;
                E = (d3[I] + d2[I] + 1) / 2;
                N = cz[I] - d0[I] + 1;
                I = d2[I] - d3[I] + 1;
                G = gA / N;
                var Q = cB / I;
                H = G < Q ? G : Q;
                H *= 0 !== M ? M : 20 > N && 20 > I ? .5 : .9;
                k(.875);
                D = !0;
                gj.gk()
            }
        }
            ;
        this.gl = function (I) {
            gf.gg = !1;
            L = !0;
            g(I);
            x(0, 0, aZ - 1, aa - 1);
            k(.875);
            D = !0;
            gj.gk()
        }
            ;
        this.gb = function (I, N, G, M) {
            x(I, N, G, M);
            g3 = H;
            gf.gs(F, gA / 2);
            gf.gt(E, cB / 2);
            gu.gv()
        }
            ;
        this.gw = function () {
            if (D && L)
                return !1;
            D = !1;
            return !0
        }
            ;
        this.dF = function () {
            if (D) {
                .5 > t ? z < y && (z += y * l,
                    n = t) : t > 1 - n && (z -= y * l,
                        z = z < y * l ? y * l : z);
                J = J >= c4.gY ? c4.gY - 1 : J;
                var I = c4.gY - J;
                1E3 < I ? t = 1 : (t += z * I / K,
                    t = 1 < t ? 1 : t);
                J = c4.gY;
                var N = g3;
                I = g8;
                var G = g9;
                g3 = C * Math.pow(H / C, t);
                N = g3 / N;
                var M = 1 - (C * Math.pow(H / C, 1 - t) - C) / (H - C);
                gf.gs(A + M * (F - A), gA / 2);
                gf.gt(B + M * (E - B), cB / 2);
                e6.zoom(N, (I * N - g8) / (1 - N), (G * N - g9) / (1 - N));
                gu.gv();
                1 <= t && (D = !1,
                    h4.h5 = !0);
                c4.c5 = !0
            }
        }
    }
    function h6() {
        function g() {
            var J;
            a: {
                for (J = 0; 8 > J; J++)
                    if (t = as(z * ce.random(), ce.value(100)),
                        n = as(y * ce.random(), ce.value(100)),
                        k()) {
                        J = !0;
                        break a
                    }
                J = !1
            }
            if (!J)
                a: {
                    var K, D, L, I;
                    J = as(z * ce.random(), ce.value(100));
                    var N = as(y * ce.random(), ce.value(100));
                    for (K = 40; 1 <= K; K--)
                        for (D = y - K; 0 <= D; D -= 40)
                            for (n = (D + N) % y,
                                L = 40; 1 <= L; L--)
                                for (I = z - L; 0 <= I; I -= 40)
                                    if (t = (I + J) % z,
                                        k()) {
                                        J = !0;
                                        break a
                                    }
                    J = !1
                }
            return J
        }
        function k() {
            var J, K;
            var D = as(A - F, 2);
            var L = C + n * A + D
                , I = B + t * A + D;
            for (J = L + F - 1; J >= L; J--)
                for (K = I + F - 1; K >= I; K--)
                    if (D = b5.ex(K, J),
                        !b5.b6(D) || b5.cU(D))
                        return !1;
            return !0
        }
        function x() {
            fB[E] = 0;
            ax[E] = 0;
            bU[E] = hR[E] = 0;
            b4[E] = [];
            bM[E] = [];
            bN[E] = [];
            bQ[E] = [];
            d0[E] = d3[E] = cz[E] = d2[E] = 0
        }
        function l(J, K) {
            fB[E] = 1;
            ax[E] = E < cq ? hS : dd[dG.cN[E - cq]];
            d0[E] = J + 10;
            d3[E] = K + 10;
            d2[E] = cz[E] = 0;
            var D, L;
            for (D = J; D < J + 4; D++)
                for (L = K; L < K + 4; L++)
                    if (D > J && D < J + 3 || L > K && L < K + 3) {
                        var I = b5.ex(D, L);
                        b5.b6(I) && (d0[E] = D < d0[E] ? D : d0[E],
                            cz[E] = D > cz[E] ? D : cz[E],
                            d3[E] = L < d3[E] ? L : d3[E],
                            d2[E] = L > d2[E] ? L : d2[E],
                            H[bU[E]] = I,
                            bU[E]++,
                            b5.hV(I, E))
                    }
            hR[E] = bU[E];
            for (I = bU[E] - 1; 0 <= I; I--)
                b5.hW(H[I], E) ? (b5.b7(H[I], E),
                    bM[E].push(H[I])) : b5.hX(H[I]) ? (b5.b7(H[I], E),
                        bN[E].push(H[I])) : b5.hY(H[I]) && (b5.b7(H[I], E),
                            bQ[E].push(H[I]))
        }
        var t, n, z, y, A, B, C, F, E, H;
        this.bp = function () {
            var J;
            H = Array(12);
            F = 6;
            A = 10;
            z = as(aZ, A);
            y = as(aa, A);
            B = as(aZ - A * z, 2);
            C = as(aa - A * y, 2);
            if (fY)
                for (J = 0; J < cq; J++)
                    E = J,
                        x(),
                        fB[E] = 1;
            for (E = 0; E < b8; E++)
                if (1 !== fB[E])
                    if (E < hG && g()) {
                        var K = B + t * A + as(A, 2);
                        J = C + n * A + as(A, 2);
                        x();
                        l(K - 2, J - 2)
                    } else
                        x();
            b0.b1[7] = bU[aw];
            b0.b1[8] = ax[aw]
        }
            ;
        this.hZ = function (J, K, D) {
            var L, I;
            E = J;
            for (L = 0; 20 > L; L++)
                for (J = K + L; J >= K - L; J--)
                    for (I = D + L; I >= D - L; I--)
                        if ((J === K + L || J === K - L || I === D + L || I === D - L) && 3 < J && J < aZ - 5 && 3 < I && I < aa - 5) {
                            var N;
                            if (N = b5.b6(b5.ex(J, I)))
                                a: {
                                    var G, M = J + 3, Q = I + 3;
                                    for (N = Q; N > Q - 6; N--)
                                        for (G = M; G > M - 6; G--) {
                                            var R = b5.ex(G, N);
                                            if (b5.cU(R)) {
                                                N = !1;
                                                break a
                                            }
                                        }
                                    N = !0
                                }
                            if (N) {
                                if (0 < bU[E]) {
                                    for (D = cz[E]; D >= d0[E]; D--)
                                        for (K = d2[E]; K >= d3[E]; K--)
                                            L = 4 * (K * aZ + D),
                                                b5.he(E, L) && (b5.hf(L),
                                                    bU[E]--);
                                    x()
                                }
                                l(J - 1, I - 1);
                                return !0
                            }
                        }
            return !1
        }
            ;
        this.hg = function (J) {
            E = J;
            if (g()) {
                J = B + t * A + as(A, 2);
                var K = C + n * A + as(A, 2);
                x();
                l(J - 2, K - 2)
            } else
                x()
        }
    }
    function hh() {
        hi.hj();
        cH.setTransform(g3, 0, 0, g3, 0, 0);
        cH.imageSmoothingEnabled = 3 > g3;
        cH.drawImage(hk, gf.gB(), gf.cF());
        eJ.cG();
        cH.drawImage(hl, gf.gB(), gf.cF());
        cH.imageSmoothingEnabled = !1;
        hi.cG();
        cH.setTransform(1, 0, 0, 1, 0, 0);
        e6.cG();
        eG.cG();
        ge || (cH.imageSmoothingEnabled = !1,
            e5.cG(),
            eI.cG(),
            eN.cG(),
            eO.cG(),
            e7.cG(),
            gf.cG(),
            c2.cG(),
            eP.cG(),
            eK.cG(),
            eL.cG(),
            fm.cG(),
            eS.cG(),
            hm.cG(),
            hn.cG(),
            eT.cG())
    }
    function ho(g, k, x) {
        g.clearRect(0, 0, k, x);
        g.fillStyle = hq;
        g.fillRect(0, 0, k, x)
    }
    function hr(g, k, x, l) {
        g.fillStyle = cK;
        g.fillRect(0, 0, k, l);
        g.fillRect(0, 0, l, x);
        g.fillRect(k - l, 0, l, x);
        g.fillRect(0, x - l, k, l)
    }
    function ht(g, k, x, l, t, n, z) {
        g.fillStyle = cK;
        n = Math.floor(l * n);
        n += (n - t) % 2;
        var y = Math.floor((n - t) / 2);
        l = Math.floor((l - n) / 2);
        g.fillRect(k + l, x + l + y, n, t);
        z && g.fillRect(k + l + y, x + l, t, n)
    }
    function hz() {
        this.i0 = null;
        this.bp = function (g) {
            this.i0 = g;
            e5.i1(this.i0)
        }
            ;
        this.i2 = function (g) {
            var k = 8 / (1 + Math.pow(2, (this.i0[g].i4 - this.i0[1 - g].i4) / 10 / 32));
            k = Math.floor(10 * k + .5);
            var x = this.i7(this.i0[g].i4 + k);
            k = this.i7(this.i0[1 - g].i4 - k);
            0 === g ? e5.i9(this.i0, x, k, ["rgba(10,140,10,0.75)", "rgba(140,10,10,0.75)"]) : e5.i9(this.i0, k, x, ["rgba(140,10,10,0.75)", "rgba(10,140,10,0.75)"])
        }
            ;
        this.i7 = function (g) {
            g = 0 > g ? 0 : 16E3 < g ? 16E3 : g;
            return 16E3 <= g ? "Unknown" : (g / 10).toFixed(1)
        }
    }
    function iA() {
        function g(t) {
            for (var n = k.length - 1; 0 <= n; n--)
                if (t >= k[n] && t < x[n])
                    return n;
            return -1
        }
        var k, x, l;
        (function () {
            k = [32, 65, 191, 913, 931];
            x = [64, 127, 688, 930, 1155];
            l = Array(k.length + 1);
            for (var t = 0; t < l.length; t++) {
                l[t] = 0;
                for (var n = t - 1; 0 <= n; n--)
                    l[t] += x[n] - k[n]
            }
        }
        )();
        this.iF = function (t) {
            t = t.trim();
            if (0 === t.indexOf("Bot ") || 0 === t.indexOf("[Bot] "))
                t = !1;
            else
                a: {
                    t = t.trim();
                    var n = t.length;
                    if (3 > n || 20 < n)
                        t = !1;
                    else {
                        for (var z = 0, y, A = 0; A < n; A++)
                            if (y = t.charCodeAt(A),
                                z += 65 <= y && 90 >= y || 1040 <= y && 1071 >= y ? 1 : 0,
                                -1 === g(y)) {
                                t = !1;
                                break a
                            }
                        t = 3 < z && z > Math.floor(n / 2) ? !1 : !0
                    }
                }
            return t
        }
            ;
        this.iL = function (t) {
            t = t.trim();
            for (var n = t.length, z = [], y, A = 0; A < n; A++) {
                y = t.charCodeAt(A);
                var B = g(y);
                z.push(l[B] + y - k[B])
            }
            return z
        }
            ;
        this.iM = function (t) {
            for (var n = "", z = t.length, y, A = 0; A < z; A++)
                for (y = 1; y < l.length; y++)
                    if (t[A] < l[y]) {
                        y = k[y - 1] + t[A] - l[y - 1];
                        n += String.fromCharCode(y);
                        break
                    }
            return n
        }
            ;
        this.iN = function (t) {
            t = this.iL(t);
            for (var n = "", z = 0; z < t.length; z++)
                n += 10 > t[z] ? "00" : 100 > t[z] ? "0" : "",
                    n += t[z].toString(10);
            return n
        }
            ;
        this.iO = function (t) {
            for (var n = Array(Math.floor(t.length / 3)), z = 0; z < t.length; z += 3)
                n[Math.floor(z / 3)] = parseInt(t.substring(z, z + 3));
            return this.iM(n)
        }
            ;
        this.z = function (t) {
            var n, z = [t.length];
            for (n = 0; n < t.length; n++)
                z[n] = t.charCodeAt(n) - 48;
            var y = "";
            for (n = 0; n < t.length; n++)
                if (n === t.length - 1 || 51 < 10 * z[n] + z[n + 1])
                    y += z[n].toString();
                else {
                    var A = 10 * z[n] + z[n + 1];
                    y += String.fromCharCode(A + (26 > A ? 65 : 71));
                    n++
                }
            return y
        }
            ;
        this.n = function (t) {
            for (var n = "", z, y = 0; y < t.length; y++)
                z = t.charCodeAt(y),
                    48 <= z && 58 > z ? n += String.fromCharCode(z) : 65 <= z && 75 > z ? n += "0" + (z - 65).toString() : 75 <= z && 91 > z ? n += (z - 65).toString() : 97 <= z && 123 > z && (n += (z - 71).toString());
            return n
        }
            ;
        this.iP = function (t) {
            var n = t.length, z, y = [];
            for (z = 0; z < n; z++) {
                var A = t.charCodeAt(z);
                58 > A ? y.push(t[z]) : (A = 91 > A ? A - 65 : A - 71,
                    y.push(String(as(A, 10))),
                    y.push(String(A - 10 * as(A, 10))))
            }
            n = y.length - 2;
            A = 0;
            t = [];
            for (z = 0; z < n; z += 3)
                t[A++] = parseInt(y[z] + y[z + 1] + y[z + 2]);
            return t
        }
            ;
        this.iR = function () {
            var t, n = "";
            for (t = 0; 6 > t; t++) {
                var z = 48 + ce.random() % 36;
                z += 58 <= z ? 39 : 0;
                n += String.fromCharCode(z)
            }
            return n
        }
    }
    function iT() {
        this.ff = function (g) {
            if (2 === fV)
                var k = !0;
            else
                eO.im(),
                    fV = 2,
                    io = ip,
                    k = !1;
            if (!k) {
                if (8 === dr) {
                    var x = g = 0 > g ? bU[0] >= bU[1] ? 0 : 1 : g;
                    (k = g === aw) ? e5.fh(g, 2) : e5.fh(1 - aw, 3);
                    ia.i2(g)
                } else
                    // if the game is team game
                    dA ? (
                        g = eP.ib(), k = dW.dX[aw] === g,
                        9 === dr ? (x = (k ? ei[0] : 512))
                        : (g = dW.ic(dW.id[g]), x = g[0], 512 !== x && e5.ie(g[1])),
                        e5.ig(k)
                    ) : (
                        x = ei[0], k = (x === aw), e5.ih(x)
                    );
                dt || ii.ij(ik(), x);
                eS.show(k, !1);
                e5.iq(!0);
                eI.eX(!0);
                e7.eX(!0);
                c4.c5 = !0;
                h4.ir();
                a9(0)
            }
        }
    }
    function is() {
        this.cQ = function (g, k, x) {
            0 !== fB[g] && it.hZ(g, k, x) && (c4.c5 = !0)
        }
            ;
        this.dF = function () {
            fY = !1;
            for (var g = 0; g < cq; g++)
                0 !== fB[g] && 0 === bU[g] && it.hg(g);
            0 !== fB[aw] ? (b0.b1[7] = bU[aw],
                b0.b1[8] = ax[aw],
                eN.cE(),
                e7.iu(),
                eR.gb(d0[aw] - 5, d3[aw] - 5, cz[aw] + 5, d2[aw] + 5),
                eT.bp()) : eS.show(!1, !1);
            e5.iv(18);
            e6.iw();
            e6.eX();
            fZ = null;
            h4.ix = !0;
            h4.iy();
            dt && a9(1)
        }
    }
    var cq, ip, dq, io, b8 = 512, hG = 512, iz = 150, dt, j0, fV = 0, j1, j2, j3, hS = 512, at = 2, aw, ge, fY, j4, dA, j5, dr, j6, fZ, ia, j7;
    function j8(g, k, x, l, t) {
        j0 = ge = !1;
        dr = l;
        j6 = t;
        dA = 7 > dr || 9 === dr;
        ip = cq = x.length;
        dt = 1 === ip;
        dr = 10 === dr && dt ? 7 : dr;
        dr = 8 === dr && 2 !== cq ? 7 : dr;
        j5 = 9 === dr ? 2 : dr + 2;
        j7 = 2 >= cq ? 30 : 50 >= cq ? 40 : 50;
        fZ = (j4 = fY = jD.jE ? jD.jE.customSpawn : dA || 100 > cq) ? new is : null;
        hS = 512;
        hG = b8;
        dt && (hG = du.jF());
        dq = hG - cq;
        io = 0;
        aw = k;
        ce.jG(jD.jE ? jD.jE.seedSpawn : g);
        jH(x);
        dy.bp();
        dW.bp(x);
        fV = 1;
        j2 = 15E8;
        j3 = 1E9;
        b0.bp();
        jI();
        jJ.jK();
        h4.bp();
        ay.bp();
        d9();
        b5.bp(x);
        hi.bp();
        eP.bp();
        dG.bp();
        jL.jM();
        jL.jN();
        it.bp();
        jO();
        eJ.bp();
        hn.bp();
        jP.putImageData(jQ, 0, 0);
        eI.bp();
        gf.bp();
        eN.bp();
        eO.bp();
        eK.bp();
        e7.bp();
        fm.bp();
        c2.bp();
        e5.bp();
        eL.bp();
        hm.bp();
        eS.bp();
        eC.bp();
        eG.bp();
        au.bp();
        eF.bp();
        aY();
        ae.bp();
        e6.bp();
        eB.bp();
        eE.bp();
        eM.bp();
        eD.bp();
        8 === dr ? (ia = new hz,
            ia.bp(x)) : ia = null;
        jR();
        eT.bp();
        dt ? c4.jS() : c4.jT();
        c4.c5 = !0;
        dt && fY || a9(1)
    }
    function jR() {
        eR.ga();
        0 === fB[aw] && eS.show(!1, !0);
        e6.eX()
    }
    function jU() {
        e9.close(e9.jV, 3246);
        fV = 0;
        c4.jW();
        jX.bp();
        a9(0);
        aB()
    }
    var dG, au, dE, eF, eC, eG, eR, it, m, hm, fm, e5, jY, eL, c2, eN, gf, jZ, eK, eI, e7, eS, ja, jb, aJ, jc, jd, je, du, jX, bw, b5, f, ae, ay, e6, jL, dy, jJ, jf, jg, gj, ev, ce, fx, hi, jh, ji, eT, ii, jj, eJ, jk, jl, eO, eU, e9, eD, jm, jn, eE, eB, eM, jo, jp, jD;
    function jq() {
        dG = new de;
        au = new eZ;
        dE = new en;
        eF = new f8;
        eC = new fD;
        eG = new fq;
        eR = new gG;
        it = new h6;
        m = new iA;
        hm = new jr;
        fm = new js;
        e5 = new jt;
        jY = new ju;
        eL = new jv;
        c2 = new jw;
        eN = new jx;
        gf = new jy;
        jZ = new jz;
        eK = new k0;
        eI = new k1;
        e7 = new k2;
        eS = new k3;
        ja = new k4;
        jb = new k5;
        aJ = new k6;
        jc = new k7;
        jc.jM();
        jd = new k8;
        je = new k9;
        du = new kA;
        jX = new kB;
        bw = new kC;
        b5 = new kD;
        f = new kE;
        ae = new kF;
        ay = new kG;
        e6 = new kH;
        jL = new kI;
        dy = new kJ;
        jJ = new kK;
        jf = new kL;
        jg = new kM;
        gj = new kN;
        ev = new kO;
        ce = new kP;
        fx = new kQ;
        hi = new kR;
        jh = new kS;
        ji = new kT;
        eT = new kU;
        ii = new kV;
        jj = new kW;
        eJ = new kX;
        jk = new kY;
        jl = new kZ;
        eO = new ka;
        eU = new kb;
        e9 = new kc;
        eD = new kd;
        jm = new ke;
        jn = new kf;
        eE = new kg;
        eB = new kh;
        eM = new ki;
        jo = new kj;
        jp = new kk;
        jD = new kl
    }
    function jr() {
        function g(N, G, M, Q) {
            for (var R, P = 0; P < N.length; P++) {
                G.push(document.createElement("canvas"));
                G[P].width = M;
                G[P].height = M;
                R = G[P].getContext("2d", {
                    alpha: !0
                });
                var U = M
                    , W = R;
                W.fillStyle = Q;
                W.beginPath();
                W.arc(Math.floor(U / 2), Math.floor(U / 2), Math.floor(.47 * U), 0, 2 * Math.PI);
                W.fill();
                6 === N[P] ? R.drawImage(bw.bz(19), 0, 0) : 7 === N[P] ? R.drawImage(bw.l4("emojis"), -4 * M, 0) : R.drawImage(bw.bz(3), -N[P] * M, 0)
            }
        }
        function k(N) {
            for (var G = L.length - 1; 0 <= G; G--)
                if (L[G] === N)
                    return !0;
            return !1
        }
        function x(N) {
            return -1 === N || 0 === N || 6 === N || !t[5] && (8 === N || !t[4] && 7 === N) || !t[7] && (2 === N || !t[6] && 1 === N) || 3 === N && !t[2] || 5 === N && !t[1] && !t[5] && !t[7] ? !1 : !0
        }
        function l(N, G) {
            return N < z - A - J || N > z + 2 * A + J || G < y - A - J || G > y + 2 * A + J ? -1 : 3 * (G < y - J / 2 ? 0 : G < y + A + J / 2 ? 1 : 2) + (N < z - J / 2 ? 0 : N < z + A + J / 2 ? 1 : 2)
        }
        var t = [], n, z, y, A, B, C, F, E, H, J, K, D, L, I;
        this.kv = [];
        this.bp = function () {
            L = [];
            t = [];
            n = !1;
            B = C = z = y = F = 0;
            this.kw();
            for (var N = this.kx.length - 1; 0 <= N; N--)
                t.push(!1);
            t.push(!1)
        }
            ;
        this.kw = function () {
            this.kx = [];
            K = [];
            this.ky = [];
            var N = bw.bz(3).height;
            A = Math.floor((q ? .075 : .0468) * bq);
            D = A / N;
            J = Math.floor(A / 3);
            g([0, 1, 2, 3, 7, 4, 5, 6], this.kx, N, "rgba(0,180,0,0.6)");
            g([0, 4, 5], K, N, "rgba(200,0,0,0.6)");
            g([0, 2, 4], this.ky, N, "rgba(0,0,0,0.6)");
            g([0, 5], this.kv, N, "rgba(200,200,0,0.6)");
            this.kx[6] = this.kv[1]
        }
            ;
        this.l6 = function (N, G) {
            if (this.l7()) {
                var M = this.c7(N, G);
                c4.c5 = 0 < M;
                return 2 > M
            }
            return !1
        }
            ;
        this.l8 = function (N, G) {
            this.l7() || (B = N,
                C = G,
                F = (new Date).getTime())
        }
            ;
        this.l9 = function (N) {
            return N < cq && 2 !== fP[N]
        }
            ;
        this.c7 = function (N, G) {
            C = B = -1E3;
            if (2 === fP[aw] || 0 === fB[aw] && !fY)
                return this.lA(),
                    1;
            if (n) {
                this.lA();
                if (a5.lB(N, G))
                    a5.lC(N, G, E) && (n = !0);
                else
                    return a5.lD(),
                        2;
                return 1
            }
            var M = l(N, G);
            if (!x(M) || 0 === M || 6 === M || !t[2] && 3 === M)
                return this.lA(),
                    2;
            if (1 === M) {
                if (t[6]) {
                    M = (new Date).getTime();
                    M > I + 4E3 && (L = []);
                    I = M;
                    if (k(E))
                        return this.lA(),
                            1;
                    L.push(E);
                    16 < L.length && L.shift();
                    this.lA();
                    return 1
                }
                return 0
            }
            if (2 === M) {
                if (t[7]) {
                    for (M = L.length - 1; 0 <= M; M--)
                        0 === fB[L[M]] && L.splice(M, 1);
                    0 < L.length && (eM.lJ(1, L, !0) && (e5.lK(L, E),
                        ii.lL(L, E)),
                        L = []);
                    this.lA();
                    return 1
                }
                return 0
            }
            if (3 === M) {
                this.lA();
                if (this.l9(E) && 7 > dr && 1071 > c4.dU())
                    return e5.lM(),
                        1;
                e5.lN();
                dt ? da(aw, E, as(eN.lO() * ax[aw], 1E3)) : ii.lP(eN.lO(), E === b8 ? aw : E);
                return 1
            }
            if (4 === M)
                return t[0] ? fY ? (this.lA(),
                    dt ? (fZ.cQ(0, b5.gB(H), b5.cF(H)),
                        fZ.dF()) : ii.lR(1E3, b5.gB(H), b5.cF(H))) : (this.lA(),
                            e5.lN(),
                            dt ? fH(aw, E, eN.lO()) : (!j4 || 300 < e7.lQ()) && ii.lP(eN.lO(), E === b8 ? aw : E)) : t[8] ? (this.lA(),
                                eD.lS(E, eN.lO())) : this.lA(),
                    1;
            if (5 === M)
                return t[1] ? (this.lA(),
                    e5.lN(),
                    dt ? eC.fI(aw, eN.lO(), b5.gB(H), b5.cF(H)) : ii.lR(eN.lO(), b5.gB(H), b5.cF(H)),
                    1) : 0;
            if (7 === M && t[4])
                return this.lA(),
                    n = a5.show(N, G),
                    1;
            if (8 === M)
                return t[5] ? (eM.lJ(0, [E], !0) && (e5.lT(E, 0),
                    ii.lU(E)),
                    this.lA(),
                    1) : 0;
            this.lA();
            return 2
        }
            ;
        this.click = function (N, G) {
            if (this.l7() || 2 === fP[aw] || 0 === fB[aw] && !fY)
                return !1;
            var M = (q ? .0288 : .0144) * bq;
            if (Math.abs(N - B) > M || Math.abs(G - C) > M || (new Date).getTime() > F + 425)
                return !1;
            M = Math.floor((N + g8) / g3);
            var Q = Math.floor((G + g9) / g3);
            if (1 > M || 1 > Q || M >= aZ - 1 || Q >= aa - 1)
                return !1;
            var R = Q * aZ * 4 + 4 * M;
            if (!b5.b6(R))
                return !1;
            if (2 === fV)
                return 1 <= a5.lY && (E = b5.bF(R),
                    this.l9(E)) ? (E === aw && this.lA(),
                        t[4] = !0,
                        this.lZ(N, G)) : !1;
            H = b5.ex(M, Q);
            if (fY)
                return t[0] = !0,
                    this.lZ(N, G);
            t[1] = ev.co(aw, H);
            if (b5.bG(R))
                return E = b8,
                    la(aw) ? t[0] = !0 : lb(aw, E) && (t[8] = !0),
                    this.lZ(N, G);
            E = b5.bF(R);
            if (E === aw) {
                this.lA();
                if (0 === a5.lY)
                    return !1;
                t[4] = !0;
                return this.lZ(N, G)
            }
            M = t;
            Q = E;
            Q = hm.l9(Q) && !k(Q) && eM.lJ(1, [Q], !1);
            M[6] = Q;
            t[4] = 1 <= a5.lY && this.l9(E);
            if (ch(E, aw)) {
                t[5] = this.l9(E) && !e6.ld(E) && eM.lJ(0, [E], !1);
                M = t;
                Q = E;
                if (0 === L.length)
                    Q = !1;
                else if ((new Date).getTime() > I + 4E3)
                    L = [],
                        Q = !1;
                else {
                    if (R = !k(Q)) {
                        b: {
                            if (dA)
                                for (R = L.length - 1; 0 <= R; R--)
                                    if (!ch(Q, L[R])) {
                                        Q = !0;
                                        break b
                                    }
                            Q = !1
                        }
                        R = !Q
                    }
                    Q = R
                }
                M[7] = Q;
                lf(aw, E) ? t[0] = !0 : lb(aw, E) && (t[8] = !0);
                return this.lZ(N, G)
            }
            t[2] = dA;
            return this.lZ(N, G)
        }
            ;
        this.lZ = function (N, G) {
            z = N - Math.floor(A / 2);
            y = G - Math.floor(A / 2);
            return this.l7()
        }
            ;
        this.lh = function (N, G) {
            if (!this.l7())
                return !1;
            if (n) {
                if (a5.lB(N, G))
                    return !1;
                a5.lD();
                n = !1;
                return c4.c5 = !0
            }
            return x(l(N, G)) ? !1 : (this.lA(),
                c4.c5 = !0)
        }
            ;
        this.lA = function () {
            var N;
            for (N = t.length - 1; 0 <= N; N--)
                t[N] = !1;
            n = !1
        }
            ;
        this.li = function () {
            this.lA()
        }
            ;
        this.l7 = function () {
            var N;
            for (N = t.length - 1; 0 <= N; N--)
                if (t[N])
                    return !0;
            return n
        }
            ;
        this.cG = function () {
            this.l7() && this.lj()
        }
            ;
        this.lj = function () {
            if (n)
                a5.cG();
            else {
                // draw order buttons
                var N = (A + J) / D;
                cH.imageSmoothingEnabled = !0;
                cH.setTransform(D, 0, 0, D, z, y);
                t[0] ? fY ? cH.drawImage(this.kx[3], 0, 0) : cH.drawImage(this.kx[0], 0, 0) : t[8] ? cH.drawImage(this.kv[0], 0, 0) : cH.drawImage(K[0], 0, 0);
                t[1] && cH.drawImage(this.kx[1], N, 0);
                // donation
                t[2] && cH.drawImage(this.kx[2], -N, 0);
                t[4] && cH.drawImage(this.kx[4], 0, N);
                // non-agression pact
                t[5] && cH.drawImage(this.kx[5], N, N);
                // point
                t[6] && cH.drawImage(this.kx[6], 0, -N);
                // target
                t[7] && cH.drawImage(this.kx[7], N, -N);
                cH.imageSmoothingEnabled = !1;
                cH.setTransform(1, 0, 0, 1, 0, 0);
            }
        }
    }
    function js() {
        function g() {
            var B = t.getContext("2d", {
                alpha: !0
            });
            B.clearRect(0, 0, l, l);
            B.fillStyle = ls;
            B.fillRect(0, 0, l, l);
            0 === y && (B.fillStyle = lt,
                B.fillRect(0, 0, l, l));
            B.fillStyle = cK;
            B.fillRect(0, 0, l, 1);
            B.fillRect(0, 0, 1, l);
            B.fillRect(0, l - 1, l, 1);
            B.fillRect(l - 1, 0, 1, l);
            var C = .9 * l / bw.bz(0).width;
            B.imageSmoothingEnabled = !0;
            B.setTransform(C, 0, 0, C, Math.floor((l - C * bw.bz(0).width) / 2), Math.floor((l - C * bw.bz(0).height) / 2));
            B.drawImage(bw.bz(0), 0, 0);
            B.setTransform(1, 0, 0, 1, 0, 0)
        }
        function k(B, C) {
            if (!fm.lp)
                return B <= l + m0 && C >= eN.fG ? 0 : -1;
            if (B <= 4 * l + m0) {
                if (C >= eN.fG)
                    return 0;
                if (C >= eN.fG - l - A * m0)
                    return 2;
                if (C >= eN.fG - 2 * (l + A * m0))
                    return 3
            } else if (B <= 7 * l + m0 && C >= eN.fG - l - A * m0)
                return 1;
            return -1
        }
        function x(B, C) {
            cH.setTransform(1, 0, 0, 1, m0, eN.fG - B * A * m0 - B * l);
            cH.fillStyle = ls;
            cH.fillRect(0, 0, 4 * l, l);
            y === B + 1 && C === cK && (cH.fillStyle = lt,
                cH.fillRect(0, 0, 4 * l, l));
            cH.fillStyle = C;
            cH.fillRect(0, 0, 4 * l, 1);
            cH.fillRect(0, 0, 1, l);
            cH.fillRect(4 * l, 0, 1, l);
            cH.fillRect(0, l - 1, 4 * l, 1);
            cH.fillText(z[B], 2 * l, .54 * l)
        }
        var l, t, n, z = ["Quit Game", "Surrender", "Statistics"], y, A;
        this.bp = function () {
            y = -1;
            this.lp = !1;
            A = q ? 1.2 : .6;
            this.lq()
        }
            ;
        this.lq = function () {
            l = eN.cw;
            t = document.createElement("canvas");
            t.width = l;
            t.height = l;
            n = bt + Math.floor((q ? .5 : .45) * l) + bu;
            g()
        }
            ;
        this.lv = function () {
            (this.lp = !this.lp) ? (ge = !1,
                dt && 1 === fV && !fY && (setTimeout(function () {
                    h4.ir()
                }, 0),
                    a9(0))) : (y = -1,
                        g(),
                        dt && a9(1));
            c4.c5 = !0
        }
            ;
        this.c7 = function (B, C) {
            var F = k(B, C);
            return this.lp ? 0 === F ? (jU(),
                2) : 1 === F ? (this.lv(),
                    2) : 2 === F ? (this.fn(aw) && (dt ? eC.fl(aw) : ii.ly(),
                        this.lv()),
                        2) : 3 === F && 2 <= b0.lz ? (hn.lv(),
                            c4.c5 = !0,
                            2) : hn.l7 || dt && !fY ? 1 : (this.lv(),
                                2) : 0 === F ? (this.lv(),
                                    2) : 0
        }
            ;
        this.lh = function (B, C) {
            var F = k(B, C);
            if (F === y)
                return -1 !== y;
            y = F;
            this.lp || g();
            c4.c5 = !0;
            return -1 !== y
        }
            ;
        this.cG = function () {
            if (this.lp) {
                var B = Math.floor(5.5 * l);
                cH.setTransform(1, 0, 0, 1, m0, eN.fG);
                cH.fillStyle = ls;
                cH.fillRect(0, 0, B, l);
                0 === y ? (cH.fillStyle = lt,
                    cH.fillRect(0, 0, 4 * l, l)) : 1 === y && (cH.fillStyle = lt,
                        cH.fillRect(4 * l, 0, Math.floor(1.5 * l), l));
                cH.fillStyle = cK;
                cH.fillRect(0, 0, B, 1);
                cH.fillRect(0, 0, 1, l);
                cH.fillRect(4 * l, 0, 1, l);
                cH.fillRect(0, l - 1, B, 1);
                cH.fillRect(B - 1, 0, 1, l);
                cH.font = n;
                cH.textBaseline = cI;
                cH.textAlign = cJ;
                cH.fillText(z[0], 2 * l, .54 * l);
                B = .4 * l;
                fm.m4(m0 + 4 * l + (1.5 * l - B) / 2, eN.fG + .3 * l, B);
                x(1, fm.fn(aw) ? cK : m6);
                2 <= b0.lz && x(2, cK);
                cH.setTransform(1, 0, 0, 1, 0, 0)
            } else
                cH.drawImage(t, m0, eN.fG)
        }
            ;
        this.fn = function (B) {
            return 0 !== fB[B] && 2 !== fV && hm.l9(B)
        }
            ;
        this.m4 = function (B, C, F) {
            cH.setTransform(1, 0, 0, 1, B, C);
            cH.lineWidth = 2;
            cH.strokeStyle = cK;
            cH.beginPath();
            cH.moveTo(0, 0);
            cH.lineTo(F, F);
            cH.moveTo(0, F);
            cH.lineTo(F, 0);
            cH.stroke()
        }
    }
    function jt() {
        var g, k, x, l, t, n, z;
        function y() {
            return eN.mV(e5.mS()) ? eO.l7 ? eN.fG - eN.cw - 2 * J : eN.fG - J : eO.l7 ? s - eN.cw - (q ? 3 : 2) * J : s - J
        }
        function A(G, M, Q, R, P, U, W, X) {
            var V = 1E3 <= Q;
            var na = Math.floor(c2.measureText(M, e5.c0) + 1.5 * K + (V ? H : 1.5 * K));
            if (na + J > r && !V && 50 !== Q && 20 < M.length) {
                var ba = Math.floor(.5 * M.length);
                A(G, M.substring(0, ba), Q, R, P, U, W, X);
                A(G, M.substring(ba), Q, R, P, U, W, X)
            } else {
                var ca = Q - 1E3;
                ba = na + (50 === Q ? D : 0);
                var pa = document.createElement("canvas");
                pa.width = na;
                pa.height = H;
                var S = pa.getContext("2d", {
                    alpha: !0
                });
                S.font = e5.c0;
                S.textBaseline = cI;
                S.textAlign = mZ;
                S.clearRect(0, 0, na, H);
                S.fillStyle = U;
                S.fillRect(0, 0, na, H);
                S.fillStyle = P;
                S.fillText(M, Math.floor(1.5 * K), Math.floor(H / 2));
                V && (V = H / a5.c1,
                    S.imageSmoothingEnabled = !0,
                    S.setTransform(V, 0, 0, V, na - H, 0),
                    S.drawImage(a5.l0[ca], 0, 0));
                E.unshift({
                    gY: G,
                    l: M,
                    id: Q,
                    player: R,
                    ll: pa,
                    mM: P,
                    mN: U,
                    c1: na,
                    mT: ba,
                    mO: W,
                    mP: X
                })
            }
        }
        function B(G, M) {
            var Q, R = 0, P = E.length;
            for (Q = 0; Q < P; Q++)
                if (E[Q].id === G && (R++,
                    R >= M)) {
                    E.splice(Q, 1);
                    break
                }
        }
        function C(G, M, Q) {
            return "rgb(" + G + "," + M + "," + Q + ")"
        }
        function F(G, M) {
            var Q, R = !1;
            for (Q = E.length - 1; 0 <= Q; Q--)
                E[Q].id !== G || M !== b8 && E[Q].player !== M || (E.splice(Q, 1),
                    R = !0);
            return R
        }
        var E, H, J, K, D, L, I, N;
        this.bp = function () {
            I = 0;
            L = q ? 7 : 12;
            g = [0, 0, 0];
            k = [0, 0, 0];
            x = [220, 180, 180];
            l = [0, 0, 0];
            t = [0, 0, 0];
            n = [" were conquered.", " left the game.", " surrendered."];
            z = [" was conquered by ", " left the game.", " surrendered."];
            E = [];
            this.lq();
            fY && this.fh(0, 18);
            var G = "Map: " + jf.n6() + "   Pixels: " + eL.gF(jJ.n7) + "   Land: " + eL.gF(jJ.n8) + " (" + e7.n9(100 * jJ.n8 / jJ.n7, 1) + ")"
                , M = "";
            0 < jJ.nB && (M += "Water: " + eL.gF(jJ.nB) + " (" + e7.n9(100 * jJ.nB / jJ.n7, 1) + ")");
            0 < jJ.nC && (M += 0 < jJ.nB ? "   " : "",
                M += "Mountains: " + eL.gF(jJ.nC) + " (" + e7.n9(100 * jJ.nC / jJ.n7, 1) + ")");
            A(340, G, 6, 0, C(215, 245, 255), hq, -1, !1);
            0 < M.length && A(340, M, 6, 0, C(215, 245, 255), hq, -1, !1);
            10 === dr && A(120, "Full sending against human players is disabled.", 6, 0, C(235, 255, 120), hq, -1, !1)
        }
            ;
        this.lq = function () {
            var G;
            H = Math.floor((q ? .031 : .0249) * bq);
            H = 10 > H ? 10 : H;
            this.by = Math.floor(2 * H / 3);
            this.c0 = bt + this.by + bu;
            J = m0;
            K = Math.floor(H / 5);
            if (0 < E.length) {
                var M = E;
                E = [];
                for (G = M.length - 1; 0 <= G; G--)
                    A(M[G].gY, M[G].l, M[G].id, M[G].player, M[G].mM, M[G].mN, M[G].mO, M[G].mP)
            }
            this.mQ()
        }
            ;
        this.mQ = function () {
            N = document.createElement("canvas");
            D = c2.measureText("Accept", this.c0) + 5 * K;
            N.height = H;
            N.width = D;
            var G = N.getContext("2d", {
                alpha: !0
            });
            G.font = this.c0;
            G.textBaseline = cI;
            G.textAlign = cJ;
            G.clearRect(0, 0, D, H);
            G.fillStyle = mR;
            G.fillRect(0, 0, D, H);
            G.fillStyle = cK;
            G.fillText("Accept", Math.floor(D / 2), Math.floor(H / 2))
        }
            ;
        this.mS = function () {
            if (eO.l7)
                return eO.c1;
            var G = E.length;
            return 0 === G ? 0 : 1 === G ? E[0].mT : mU(E[0].mT, E[1].mT)
        }
            ;
        this.c7 = function (G, M) {
            for (var Q = y(), R, P = E.length - 1; 0 <= P; P--)
                if (R = Q - (P + 1) * H,
                    M >= R && M < R + H) {
                    if (50 === E[P].id) {
                        if (G >= gA - D - J - E[P].c1)
                            return G >= gA - D - J ? (P = E[P].player,
                                this.lT(P, 0),
                                ii.lU(P)) : eR.gc(E[P].player, 800, !1, 0),
                                !0;
                        break
                    }
                    if (G >= gA - E[P].c1 - J)
                        return E[P].mP && (eR.gc(E[P].player, 800, !1, 0),
                            0 <= E[P].mO && (Q = E[P].mO,
                                E[P].mO = E[P].player,
                                E[P].player = Q)),
                            !0;
                    break
                }
            return !1
        }
            ;
        this.iv = function (G) {
            for (var M = E.length - 1; 0 <= M; M--)
                E[M].id === G && (E[M].gY = 1)
        }
            ;
        this.fh = function (G, M) {
            0 === M ? (b0.b1[G < cq ? 4 : 3]++, c2.cQ(G, 0), A(q ? 100 : 160, "You conquered " + gE[G] + ".", 0, G, "rgb(10,220,10)", hq, -1, !1)) :
                1 === M ? (F(50, b8), c2.cQ(G, 1), A(360, "You were conquered by " + gE[G] + ".", 0, G, "rgb(255,40,40)", hq, -1, !0), eR.gc(G, 2700, !0, 0)) :
                    2 === M ? (c2.cQ(G, 2), A(0, "Congratulations! You won the game.", 0, G, "rgb(10,255,255)", hq, -1, !0), // i don't think this is the right part for win counter
                        eR.gc(G, 2700, !0, 0)) :
                        3 === M ? (c2.cQ(G, 2), A(0, gE[G] + " won the game.", 0, G, cK, hq, -1, !0), eR.gc(G, 2700, !0, 0)) :
                            4 === M ? (ip--, io--, this.mb(1, G, G)) :
                                5 === M ? 2 !== fP[G] && hm.l9(aw) && (B(1, 5), e6.md(G) ? A(180, gE[G] + " has broken the non-aggression pact and invades you!", 1, G, C(255, 200, 180), hq, -1, !0) : A(180, gE[G] + " is attacking you!", 1, G, "rgb(255,70,10)", hq, -1, !0)) :
                                    18 === M ? A(255, "Choose your start position!", 18, 0, cK, hq, -1, !1) :
                                        21 === M ? A(220, "You surrendered!", M, 0, "rgb(255,40,40)", hq, -1, !1) :
                                            22 === M && this.mb(2, G, G)
        };
        this.mf = function (G) {
            A(200, "Error [" + G + "]", 94, 0, cK, mh, -1, !1)
        }
            ;
        this.ih = function (G) {
            c2.cQ(G, 2);
            100 > cq ? A(0, gE[G] + " won the game.", 3, G, cK, hq, -1, !0) : A(0, gE[G] + " has been immortalized!", 3, G, cK, hq, -1, !0);
            eR.gc(G, 2700, !0, 0)
            if (aw === G) {
                console.log(`${gE[aw]} Won the Game!`);
                wins_counter++;
                A(0, "Your Current Win Count is Now " + wins_counter + " !", 3, aw, cK, hq, -1, true)
                window.localStorage.setItem("win_count", wins_counter);
            }
        }
            ;
        this.mi = function (G, M, Q) {
            G === aw ? A(175, " Message to " + gE[M] + ": ", 1E3 + Q, M, C(200, 255, 210), hq, -1, !0) : this.ml(G, Q)
        }
            ;
        this.ml = function (G, M) {
            var Q, R = 0;
            A(175, gE[G] + ": ", 1E3 + M, G, cK, "rgba(5,60,25,0.9)", -1, !0);
            for (Q = 0; Q < E.length; Q++)
                if (1E3 <= E[Q].id && E[Q].player === G && (R++,
                    3 < R)) {
                    E.splice(Q, 1);
                    break
                }
        }
            ;
        // End of team game
        this.ig = function (G) {
            var M = dW.id[eP.mp()];
            G ? (
                9 === dr ? (G = "The Resistance defeated the virus.", c2.mq("The Resistance", 2, 1, 12))
                : G = "Congratulations! Team " + dW.bo[M] + " has won the game!",
                A(0, G, 40, 0, "rgb(10,220,10)", hq, -1, !1)
            ) : (
                9 === dr ? (G = "Mankind lost the war against the virus.", c2.mq("The Virus", 2, 0, 16))
                : G = "Our alliance has been defeated!",
                A(0, G, 41, 0, "rgb(200,80,80)", hq, -1, !1)
            );
            9 !== dr && c2.mq("Team " + dW.bo[M], 2, 1, 12);
            eR.gl(2700)
        }
            ;
        // 1v1
        this.i1 = function (G) {
            A(300, G[0].name + " [" + ia.i7(G[0].i4) + "] vs " + G[1].name + " [" + ia.i7(G[1].i4) + "]", 65, 0, gD, "rgba(100,255,255,0.75)", -1, !1)
        }
            ;
        this.mr = function (G) {
            A(200, G, 0, 0, "rgb(40,255,200)", "rgba(10,60,40,0.9)", -1, !1)
        }
            ;
        this.i9 = function (G, M, Q, R) {
            1 === e9.mt() && (A(0, G[0].name + ": " + ia.i7(G[0].i4) + " -> " + M, 66, 0, cK, R[0], -1, !1),
                A(0, G[1].name + ": " + ia.i7(G[1].i4) + " -> " + Q, 66, 1, cK, R[1], -1, !1))
        }
            ;
        this.ie = function (G) {
            1 === e9.mt() && A(0, "[" + G + "] has won " + cq + (j6 ? " x 2" : "") + " points!", 45, 0, "rgb(225,240,255)", hq, -1, !1)
        }
            ;
        this.lT = function (G, M) {
            0 === M ? F(50, G) ? (A(128, "You signed a non-aggression pact with " + gE[G] + ".", 52, G, C(180, 255, 180), hq, -1, !0),
                e6.mv(G, 2, 255)) : A(384, "You asked " + gE[G] + " to sign a non-aggression pact.", 51, G, C(210, 210, 255), hq, -1, !0) : F(51, G) ? (A(128, gE[G] + " accepted the non-aggression pact.", 52, G, cK, "rgba(60,120,10,0.9)", -1, !0),
                    e6.mv(G, 2, 255)) : (A(384, gE[G] + " requests a non-aggression pact.", 50, G, cK, "rgba(90,90,90,0.9)", -1, !0),
                        e6.mv(G, 2, 96))
        }
            ;
        this.lK = function (G, M) {
            var Q = "You ", R;
            a: {
                for (R = G.length - 1; 0 <= R; R--)
                    if (2 * bU[G[R]] > bU[aw]) {
                        R = !1;
                        break a
                    }
                R = !0
            }
            R ? (Q += "ordered ",
                R = C(255, 235, 210)) : (Q += "asked ",
                    R = C(210, 255, 210));
            1 < G.length ? A(230, Q + G.length + " players to attack " + gE[M] + ".", 66, M, R, hq, -1, !0) : A(230, Q + gE[G[0]] + " to attack " + gE[M] + ".", 66, G[0], R, hq, M, !0)
        }
            ;
        this.my = function (G, M) {
            bU[G] > 2 * bU[aw] ? A(230, gE[G] + " orders you to attack " + gE[M] + "!", 66, G, cK, "rgba(90,50,5,0.9)", M, !0) : A(230, gE[G] + " asks you to attack " + gE[M] + ".", 66, G, cK, "rgba(75,65,5,0.9)", M, !0)
        }
            ;
        this.n0 = function (G, M) {
            F(G, M)
        }
            ;
        this.lN = function () {
            100 <= ax[aw] || A(80, "Your balance is too low!", 9, 0, cK, hq, -1, !1)
        };
        this.lM = function () {
            A(80, "Boosting is disallowed in the first minute!", 9, 0, cK, hq, -1, !1)
        };
        // Sending donation
        this.n1 = function (G, M) {
            2 !== fP[aw] && A(200, "You exported " + eL.gF(G) + " resource" + (1 === G ? "" : "s") + " to " + gE[M] + ".", 30, M, "rgb(190,255,190)", hq, -1, !0)
        };
        // Receiving donation
        this.n3 = function (G, M) {
            if (2 !== fP[aw]) {
                var Q = 2 === fP[M] || M >= cq;
                var R = 200 - 20 * E.length;
                A(80 > R ? 80 : R, (Q ? "A bot" : gE[M]) + " supported you with " + eL.gF(G) + " resource" + (1 === G ? "" : "s") + ".", 31, M, gD, Q ? "rgba(205,205,205,0.9)" : "rgba(205,255,205,0.9)", -1, !0);
                B(31, q ? 4 : 6)
            }
        };
        this.iq = function (G) {
            var M, Q = c4.dU();
            for (M = 2; 0 <= M; M--)
                0 < l[M] && (G || t[M] < Q - 220) && this.nE(M)
        }
            ;
        this.nE = function (G) {
            var M = l[G];
            var Q = g[G];
            l[G] = 0;
            1 === M ? (M = gE[Q] + z[G],
                0 === G && (M += gE[k[G]] + "."),
                A(x[G], M, 7, k[G], cK, hq, -1, !0)) : 2 <= M && (M = gE[Q] + " and " + (M - 1) + " other player" + (2 === M ? "" : "s") + n[G],
                    A(x[G], M, 7, Q, cK, hq, -1, !1))
        }
            ;
        this.mb = function (G, M, Q) {
            var R = c4.dU()
                , P = l[G] + 1;
            l[G]++;
            g[G] = M;
            k[G] = Q;
            1 === P && (t[G] = R);
            1 === P && (32 > ip || 2 === fV) ? this.nE(G) : 1 < P && (t[G] < R - 140 || 2 === fV) && this.nE(G)
        }
            ;
        this.dF = function () {
            var G, M = E.length - L;
            M = 1 >= M ? 1 : M * M;
            for (G = E.length - 1; 0 <= G; G--)
                0 < E[G].gY && (E[G].gY -= M,
                    0 >= E[G].gY && E.splice(G, 1));
            if (128 !== I && (I++,
                !(128 > I)))
                for (G = 5,
                    M = dY - 1; 0 <= M; M--)
                    1 === fP[dZ[M]] && 0 < G-- && A(240, gE[dZ[M]] + " joined the game.", 1, dZ[M], gD, "rgba(255,255,255,0.75)", -1, !0);
            this.iq(!1)
        }
            ;
        this.cG = function () {
            for (var G = y(), M, Q = E.length - 1; 0 <= Q; Q--)
                M = G - (Q + 1) * H,
                    50 === E[Q].id ? (cH.drawImage(E[Q].ll, gA - E[Q].c1 - D - J, M),
                        cH.drawImage(N, gA - D - J, M)) : cH.drawImage(E[Q].ll, gA - E[Q].c1 - J, M)
        }
    }
    function nH() {
        this.by = this.nJ = this.nI = this.hw = this.cw = this.c1 = 0;
        this.bs = -1;
        this.lm = ["Accept Cookies", "More Information", "Decline"];
        this.colors = ["rgba(0,255,0,0.4)", "rgba(0,0,255,0.4)", "rgba(255,0,0,0.4)"];
        this.l7 = !1;
        this.bp = function () {
            this.lq();
            this.l7 = 5 > d && !b && 0 === f.a0()
        }
            ;
        this.lq = function () {
            this.c1 = Math.floor(2.8 * Math.floor((q ? .09 : .062) * bq));
            this.cw = Math.floor(1 * this.c1);
            this.hw = Math.floor(.06 * this.c1);
            this.hx = this.c1 - 2 * this.hw;
            this.nI = this.hw;
            this.nJ = (this.cw - (this.lm.length + 1) * this.nI) / this.lm.length;
            this.by = Math.floor(.3 * this.nJ)
        }
            ;
        this.c7 = function (g, k) {
            if (!this.l7)
                return !1;
            var x = this.nL(g, k);
            if (-1 === x)
                return !1;
            0 === x ? (f.nM(2),
                this.l7 = !1) : 1 === x ? nN.bp(nO, !0) : 2 === x && (f.nM(1),
                    this.l7 = !1);
            return c4.c5 = !0
        }
            ;
        this.lh = function (g, k) {
            if (!this.l7)
                return !1;
            var x = this.bs;
            this.bs = this.nL(g, k);
            x !== this.bs && (c4.c5 = !0);
            return -1 !== this.bs
        }
            ;
        this.nL = function (g, k) {
            g -= cA;
            k -= Math.floor(cB - this.cw - cA);
            if (0 > g || 0 > k || g >= this.c1 || k >= this.cw)
                return -1;
            var x = Math.floor((k - .5 * this.nI) / ((this.cw - this.nI) / this.lm.length));
            return 0 > x ? 0 : x >= this.lm.length ? this.lm.length - 1 : x
        }
            ;
        this.cG = function () {
            this.l7 && this.nP()
        }
            ;
        this.nP = function () {
            var g = cA
                , k = Math.floor(cB - this.cw - cA);
            cH.setTransform(1, 0, 0, 1, g, k);
            cH.fillStyle = hq;
            cH.fillRect(0, 0, this.c1, this.cw);
            cH.textBaseline = cI;
            cH.textAlign = cJ;
            cH.strokeStyle = cK;
            cH.font = bt + this.by + bu;
            cH.strokeRect(0, 0, this.c1, this.cw);
            for (var x = this.lm.length - 1; 0 <= x; x--)
                cH.setTransform(1, 0, 0, 1, g + this.hw, k + this.nI + x * (this.nI + this.nJ)),
                    cH.fillStyle = this.colors[x],
                    cH.fillRect(0, 0, this.hx, this.nJ),
                    this.bs === x && (cH.fillStyle = nQ,
                        cH.fillRect(0, 0, this.hx, this.nJ)),
                    cH.fillStyle = cK,
                    cH.fillText(this.lm[x], this.hx / 2, .54 * this.nJ),
                    cH.strokeRect(0, 0, this.hx, this.nJ);
            cH.setTransform(1, 0, 0, 1, 0, 0)
        }
    }
    function ju() {
        function g(y) {
            return 10 > y ? "0" + y : String(y)
        }
        var k, x, l, t, n, z;
        this.bp = function () {
            void 0 === t && this.lq();
            this.setTime()
        }
            ;
        this.lq = function () {
            t = Math.floor((q ? .53 : .36) * bq);
            n = Math.floor(.065 * t);
            z = bt + Math.floor(.9 * n) + bu;
            l--;
            this.setTime()
        }
            ;
        this.dF = function () {
            this.setTime() && (c4.c5 = !0)
        }
            ;
        this.setTime = function () {
            var y = new Date;
            var A = y.getUTCMinutes()
                , B = y.getUTCSeconds();
            x = 3600 - 60 * A - B;
            x %= 900;
            k = "Next Contest: " + g(Math.floor(x / 60)) + ":" + g(x % 60);
            y = l;
            l = 60 * A + B;
            if (y === l)
                return !1;
            t = c2.measureText(k, z);
            t += Math.floor(.4 * n);
            return !0
        }
            ;
        this.cG = function () {
            cH.lineWidth = 1 + Math.floor(n / 15);
            cH.translate(gA - n, Math.floor(.5 * (cB + t)));
            cH.rotate(-Math.PI / 2);
            cH.fillStyle = cK;
            cH.fillRect(0, 0, t, n);
            cH.strokeStyle = gD;
            cH.strokeRect(0, 0, t, n + 10);
            cH.fillStyle = gD;
            cH.font = z;
            cH.textBaseline = cI;
            cH.textAlign = cJ;
            cH.fillText(k, Math.floor(t / 2), Math.floor(.59 * n));
            cH.setTransform(1, 0, 0, 1, 0, 0)
        }
    }
    function nZ() {
        this.na = 10;
        this.nc = this.nb = 50;
        this.nd = 8;
        this.ne = this.nb + this.nc;
        this.a6 = this.nb + this.nc + this.nd;
        this.c1 = 72;
        this.ng = this.nf = 0;
        this.l0 = Array(this.a6);
        this.nh = 8;
        this.ni = Array(this.nb + this.nc);
        this.nj = Array(this.nb + this.nc);
        this.f6 = this.f5 = 0;
        this.zoom = 1;
        this.nk = .2;
        this.lY = 0;
        this.nl = this.a7 = null;
        this.nm = 0;
        this.bp = function () {
            var g;
            this.a7 = Array(this.a6);
            this.nl = Array(this.a6);
            var k = bw.l4("emojis");
            this.no();
            for (g = this.lY = 0; g < this.nb; g++)
                this.np(g, g, k);
            k = bw.l4("flags");
            for (g = 0; g < this.nc; g++)
                this.np(g, this.nb + g, k);
            this.nr();
            this.l0[26] = this.ns(25, 2);
            this.nt()
        }
            ;
        this.np = function (g, k, x) {
            this.a7[k] = !1;
            this.nl[k] = 0;
            var l = document.createElement("canvas");
            l.width = this.c1;
            l.height = this.c1;
            var t = l.getContext("2d", {
                alpha: !0
            });
            t.clearRect(0, 0, this.c1, this.c1);
            23 === k ? t.drawImage(hm.ky[2], 0, 0) : 36 === k ? t.drawImage(hm.ky[0], 0, 0) : 49 === k ? t.drawImage(hm.ky[1], 0, 0) : t.drawImage(x, this.c1 * g % (g === k ? this.na * this.c1 : 4E3), g === k ? as(g, this.na) * this.c1 : 0, this.c1, this.c1, 0, 0, this.c1, this.c1);
            this.l0[k] = l
        };
        this.nr = function () {
            this.l0[this.a6 - 5] = this.l0[26];
            this.l0[this.a6 - 4] = this.ns(this.a6 - 5, 2);
            this.l0[this.a6 - 1] = this.ns(this.a6 - 5, 1);
            this.l0[this.a6 - 8] = this.ns(this.a6 - 4, 1);
            this.l0[this.a6 - 3] = this.l0[39];
            this.l0[this.a6 - 2] = this.ns(this.a6 - 3, 1);
            this.l0[this.a6 - 7] = this.ns(this.a6 - 2, 1);
            this.l0[this.a6 - 6] = this.ns(this.a6 - 7, 1)
        }
            ;
        this.ns = function (g, k) {
            var x = document.createElement("canvas");
            x.width = this.c1;
            x.height = this.c1;
            var l = x.getContext("2d", {
                alpha: !0
            });
            l.clearRect(0, 0, this.c1, this.c1);
            l.rotate(k * Math.PI / 2);
            l.drawImage(this.l0[g], 1 === k ? 0 : -this.c1, -this.c1);
            return x
        }
            ;
        this.nt = function () {
            var g = u().split("");
            if (2 * g.length !== this.a6)
                this.lY = 0;
            else {
                for (var k = 0; k < this.a6; k += 2) {
                    var x = parseInt(g[Math.floor(k / 2)]);
                    this.a7[k] = 1 === x % 2;
                    this.a7[k + 1] = 1 < x
                }
                this.nw()
            }
        }
            ;
        this.nw = function () {
            for (var g = this.lY = 0; g < this.a6; g++)
                this.a7[g] && (this.nl[this.lY++] = g)
        }
            ;
        this.lD = function () {
            8 === this.lY && this.nl[0] === this.ne && this.nw()
        }
            ;
        this.nx = function () {
            this.lY = this.nd;
            for (var g = 0; g < this.nd; g++)
                this.nl[g] = this.ne + g
        }
            ;
        this.no = function () {
            this.nf = Math.floor((q ? .075 : .0468) * bq);
            this.zoom = this.nf / this.c1;
            this.ng = (1 + this.nk) * this.nf
        }
            ;
        this.show = function (g, k) {
            if (1 > this.lY)
                return !1;
            this.nm = c4.gY;
            var x = Math.floor(gA / this.ng);
            x = 3 > x ? 3 : x > this.nh ? this.nh : x;
            x = this.lY > x ? x : this.lY;
            var l = 1 + as(this.lY - 1, x)
                , t = Math.floor(x * this.ng)
                , n = Math.floor(g - t / 2);
            n = n + t > gA ? gA - t : n;
            n = 0 > n ? 0 : n;
            var z = Math.floor(k - this.ng / 2);
            l = Math.floor(l * this.ng);
            z = z + l > cB ? cB - l : z;
            z = 0 > z ? 0 : z;
            this.f5 = n + t;
            this.f6 = z + l;
            for (t = 0; t < this.lY; t++)
                this.ni[t] = Math.floor(n + t % x * this.ng),
                    this.nj[t] = Math.floor(z + as(t, x) * this.ng);
            return !0
        }
            ;
        this.lB = function (g, k) {
            return !(g < this.ni[0] || k < this.nj[0] || g >= this.f5 || k >= this.f6)
        }
            ;
        this.lC = function (g, k, x) {
            if (x === aw && this.nm + 190 > c4.gY)
                return !1;
            for (var l = this.lY - 1; 0 <= l; l--)
                if (g >= this.ni[l] && k >= this.nj[l]) {
                    if (39 === this.nl[l])
                        return this.nx(),
                            this.show(g, k),
                            !0;
                    dt ? e6.mv(aw, 0, this.nl[l]) : x === aw ? ii.o1(this.nl[l]) : ii.o2(this.nl[l], x);
                    this.nw();
                    break
                }
            return !1
        }
            ;
        this.o3 = function (g) {
            return 16 > g || 40 <= g && 47 > g
        }
            ;
        this.o4 = function (g) {
            return g >= this.nb && g < this.nb + this.nc
        }
            ;
        this.cG = function () {
            cH.imageSmoothingEnabled = !0;
            for (var g = this.nk * this.nf / 2, k = this.lY - 1; 0 <= k; k--)
                cH.setTransform(this.zoom, 0, 0, this.zoom, this.ni[k] + g, this.nj[k] + g),
                    cH.drawImage(this.l0[this.nl[k]], 0, 0);
            cH.imageSmoothingEnabled = !1;
            cH.setTransform(1, 0, 0, 1, 0, 0)
        }
            ;
        this.o5 = function (g, k, x) {
            cH.imageSmoothingEnabled = !0;
            cH.setTransform(this.zoom, 0, 0, this.zoom, g, k);
            cH.drawImage(this.l0[x], 0, 0);
            cH.imageSmoothingEnabled = !1;
            cH.setTransform(1, 0, 0, 1, 0, 0)
        }
    }
    var gD = "rgb(0,0,0)", o6 = "rgba(0,0,0,0.7)", o7 = "rgba(0,0,0,0.5)", ls = "rgba(0,0,0,0.5)", hq = "rgba(0,0,0,0.75)", o8 = "rgba(0,0,0,0.85)", o9 = "rgba(0,96,96,0.75)", oA = "rgb(255,255,255)", m6 = "rgb(128,128,128)", oB = "rgb(30,255,30)", oC = "rgb(0,200,0)", oD = "rgb(0,255,0)", oE = "rgba(0,255,0,0.6)", oF = "rgba(0,255,0,0.5)", oG = "rgba(0,200,0,0.5)", mR = "rgba(0,100,0,0.75)", oH = "rgba(0,40,0,0.8)", oI = "rgb(128,255,128)", oJ = "rgba(255,255,150,0.2)", oK = "rgba(0,255,0,0.3)", lt = "rgba(255,255,255,0.3)", oL = "rgba(0,40,90,0.75)", oM = "rgba(220,0,0,0.6)", oN = "rgba(255,100,100,0.8)", mh = "rgba(100,0,0,0.85)", oO = "rgba(60,0,0,0.85)", oP = "rgb(255,120,120)", oQ = "rgb(255,160,160)", oR = "rgb(255,70,70)", oS = "rgb(230,0,0)", oT = "rgba(0,60,60,0.85)", oU = "rgb(160,160,255)", cK = "rgb(255,255,255)", oV = "rgba(255,255,255,0.6)", oW = "rgba(255,255,255,0.4)", nQ = "rgba(255,255,255,0.25)", oX = "rgba(255,255,255,0.85)", oY = "rgba(255,255,255,0.75)", oZ = "rgb(255,120,100)", oa = "rgba(255,255,0,0.5)", cI = "middle", ob = "bottom", cJ = "center", mZ = "left", oc = "right", bt = "bold ", od = "italic ", oe = "normal ", bu = "px Arial", of = [bt, od + bt, bt], og = "https://play.google.com/store/apps/details?id=territorial.io", oh = "https://apps.apple.com/app/id1581110913", oi = "https://www.youtube.com/watch?v=toZTQ8aRdFc", oj = "https://discord.gg/pthqvpTXmh", ok = "https://www.instagram.com/davidtschacher/", nO = "https://fxclient.cf/cookie_policy", ol = "https://fxclient.cf/privacy_policy", om = "https://territorial.io/tutorial", on = ["https://territorial.io/players", "https://territorial.io/clans"], m0, oo, cA, op, oq, or, os, cC, ot = ["wss://", "/s50/", "/s51/", "/s52/"];
    function ou() {
        ov();
        op = 3;
        cC = new ow;
        cC.bp()
    }
    function ox() {
        oy.addEventListener("mousedown", oz);
        oy.addEventListener("mousemove", p0);
        oy.addEventListener("mouseup", p1);
        oy.addEventListener("click", p2);
        oy.addEventListener("mouseleave", p3);
        oy.addEventListener("wheel", p4);
        oy.addEventListener("touchstart", p5);
        oy.addEventListener("touchmove", p6);
        oy.addEventListener("touchend", p7);
        oy.addEventListener("touchcancel", p8);
        oy.addEventListener("dragover", p9);
        oy.addEventListener("drop", pA);
        oq = !1
    }
    function ov() {
        cA = Math.floor((q ? .02 : .01152) * bq);
        cA = 2 > cA ? 2 : cA;
        m0 = Math.floor((q ? .0114 : .01296) * bq);
        m0 = 2 > m0 ? 2 : m0;
        oo = Math.floor(.005 * pB);
        oo = 1 > oo ? 1 : oo
    }
    function oz(g) {
        g.preventDefault();
        oq || (e9.pD(e9.jV),
            pE(Math.floor(pF * g.clientX), Math.floor(pF * g.clientY)))
    }
    function p5(g) {
        g.preventDefault();
        e9.pD(e9.jV);
        oq = !0;
        0 < g.touches.length && (or = Math.floor(pF * g.touches[0].clientX),
            os = Math.floor(pF * g.touches[0].clientY),
            jh.pG(g) || pE(or, os))
    }
    function pE(g, k) {
        if (0 === fV)
            aJ.c7(g, k);
        else if (!(hn.c7(g, k) || hm.l6(g, k) || eS.c7(g, k) || eL.c7(g, k))) {
            var x = fm.c7(g, k);
            2 === x || eI.c7(g, k) || (gf.c7(g, k) ? c4.c5 = !0 : eN.pI(g, k) ? (gf.gg = !1,
                eN.pJ(g, k) && (c4.c5 = !0)) : e5.c7(g, k) || eO.c7(g, k) || 0 === x && hm.l8(g, k))
        }
    }
    function p0(g) {
        oq = !1;
        g.preventDefault();
        pK(Math.floor(pF * g.clientX), Math.floor(pF * g.clientY))
    }
    function p6(g) {
        g.preventDefault();
        0 < g.touches.length && (or = Math.floor(pF * g.touches[0].clientX),
            os = Math.floor(pF * g.touches[0].clientY),
            jh.pL(g) || pK(or, os))
    }
    function pK(g, k) {
        0 === fV ? aJ.lh(g, k) : hn.lh(g) || (hm.l7() ? hm.lh(g, k) : fm.lh(g, k) || (eN.pM ? eN.lh(g, k) && (c4.c5 = !0) : (eI.lh(g, k),
            gf.gg && gf.lh(g, k) && (c4.c5 = !0))))
    }
    function p3(g) {
        g.preventDefault();
        0 === fV ? (aJ.click(-1024, -1024),
            jZ.pN()) : (eI.pO(-1024, -1024),
                fm.lh(-1024, -1024),
                eN.pP(),
                gf.gg && (gf.gg = !1))
    }
    function p1(g) {
        g.preventDefault();
        oq || pQ(Math.floor(pF * g.clientX), Math.floor(pF * g.clientY))
    }
    function p2(g) {
        2 === aJ.pR() && du.click(g.clientX, g.clientY)
    }
    function p7(g) {
        g.preventDefault();
        g && g.touches && 0 < g.touches.length && 0 !== fV ? gf.gg = !1 : pQ(or, os)
    }
    function p8(g) {
        g.preventDefault();
        pQ(or, os)
    }
    function p9(g) {
        jo.pS(g)
    }
    function pA(g) {
        jo.pT(g)
    }
    function pQ(g, k) {
        0 === fV ? aJ.click(g, k) : (eI.pO(g, k),
            hn.pO(),
            eN.pP(),
            gf.gg = !1,
            hm.click(g, k) && (c4.c5 = !0))
    }
    function p4(g) {
        g.preventDefault();
        e9.pD(e9.jV);
        var k = Math.floor(pF * g.clientX)
            , x = Math.floor(pF * g.clientY)
            , l = g.deltaY;
        1 === g.deltaMode && (l *= 20);
        0 === fV ? aJ.pU(k, x, l) : eI.pU(k, x, l) || (eN.pI(k, x) ? eN.pU(l) && (c4.c5 = !0) : gf.pU(k, x, 2 * l) && (c4.c5 = !0))
    }
    function pV(g, k, x) {
        g.fillStyle = cK;
        g.fillRect(0, 0, k, 1);
        g.fillRect(0, x - 1, k, 1);
        g.fillRect(0, 0, 1, x);
        g.fillRect(k - 1, 0, 1, x)
    }
    function jv() {
        function g(C) {
            var F = n[C].ll.width;
            n[C].hp.clearRect(0, 0, F, A);
            n[C].hp.fillStyle = 0 !== n[C].id ? "rgba(33,33,120,0.83)" : n[C].cM === b8 ? "rgba(88,88,88,0.83)" : n[C].cM < cq ? "rgba(100,70,33,0.83)" : "rgba(33,100,80,0.83)";
            n[C].hp.fillRect(0, 0, F, A);
            pV(n[C].hp, F, A);
            F > z + 2 * A && (n[C].hp.fillRect(F - z - A, 0, 1, A),
                n[C].hp.fillText(gE[n[C].cM], Math.floor((F - z) / 2), Math.floor(.57 * A)));
            var E = 0 !== n[C].id ? 0 : A;
            n[C].hp.fillText(eL.gF(n[C].cN), Math.floor(F - z / 2 - E), Math.floor(.57 * A));
            n[C].hp.fillStyle = oV;
            n[C].hp.fillRect(Math.floor(F - z - E), A - B, Math.floor(z * n[C].cN / n[C].pk), B);
            0 === n[C].id ? (k(C, F),
                n[C].hp.strokeStyle = oI,
                n[C].hp.fillRect(A, 0, 1, A),
                F -= A,
                n[C].hp.beginPath(),
                n[C].hp.moveTo(Math.floor(.3 * A + F), Math.floor(A / 2)),
                n[C].hp.lineTo(Math.floor(A - .3 * A + F), Math.floor(A / 2)),
                n[C].hp.stroke(),
                n[C].hp.beginPath(),
                n[C].hp.moveTo(Math.floor(A / 2 + F), Math.floor(.3 * A)),
                n[C].hp.lineTo(Math.floor(A / 2 + F), Math.floor(A - .3 * A)),
                n[C].hp.stroke()) : k(C, 2 * A)
        }
        function k(C, F) {
            n[C].hp.strokeStyle = n[C].pl ? m6 : oQ;
            n[C].hp.fillStyle = cK;
            n[C].hp.fillRect(F - A, 0, 1, A);
            var E = Math.floor(A / 12);
            n[C].hp.lineWidth = 3 > E ? 3 : E;
            n[C].hp.lineCap = "round";
            F = A + 1;
            n[C].hp.beginPath();
            n[C].hp.moveTo(Math.floor(F - .35 * A), Math.floor(.35 * A));
            n[C].hp.lineTo(Math.floor(F - A + .35 * A), Math.floor(A - .35 * A));
            n[C].hp.stroke();
            n[C].hp.beginPath();
            n[C].hp.moveTo(Math.floor(F - A + .35 * A), Math.floor(.35 * A));
            n[C].hp.lineTo(Math.floor(F - .35 * A), Math.floor(A - .35 * A));
            n[C].hp.stroke()
        }
        function x(C) {
            C.ll = document.createElement("canvas");
            pc.font = y;
            var F = z;
            C.cM < b8 && 0 === C.id && (F += Math.floor(pc.measureText(gE[C.cM] + "000").width));
            F += A;
            0 === C.id && (F += A);
            C.ll.width = F;
            C.ll.height = A;
            C.hp = C.ll.getContext("2d", {
                alpha: !0
            });
            C.hp.font = y;
            C.hp.textBaseline = cI;
            C.hp.textAlign = cJ
        }
        function l(C) {
            return eK.q6() ? gA - n[C].ll.width - m0 : eK.fF
        }
        function t(C) {
            return Math.floor(2 * m0 + (eK.q6() ? e7.cw + m0 : 0) + eK.cw + 1.3 * C * A)
        }
        var n, z, y, A, B;
        this.bp = function () {
            n = [];
            this.lq()
        }
            ;
        this.lq = function () {
            y = e5.c0;
            A = e5.by + 5;
            A = Math.floor(1.25 * A);
            q && (A = Math.floor(1.25 * A));
            B = Math.floor(.15 * A);
            pc.font = y;
            z = Math.floor(pc.measureText("02 000 000 0000").width);
            for (var C = n.length - 1; 0 <= C; C--)
                x(n[C]),
                    g(C)
        }
            ;
        this.eX = function () {
            for (var C = n.length - 1; 0 <= C; C--)
                n[C].pf && (n[C].pf = !1,
                    g(C))
        }
            ;
        this.gF = function (C) {
            if (1E3 > C)
                return 0 > C ? "-" + this.gF(Math.abs(C)) : C.toString();
            var F = Math.floor(Math.log(C + .5) / Math.log(10)) + 1
                , E = Math.floor((F - 1) / 3);
            C = C.toString();
            for (var H = C.substring(F - 3, F), J = 1; J < E; J++)
                H = C.substring(F - 3 * (J + 1), F - 3 * J) + " " + H;
            return C.substring(0, F - 3 * E) + " " + H
        }
            ;
        this.c7 = function (C, F) {
            if (2 === fV || 0 === fB[aw] || j0 || !hm.l9(aw))
                return !1;
            var E, H = q ? A : 0, J = q ? Math.floor(.15 * A) : 0;
            for (E = n.length - 1; 0 <= E; E--) {
                var K = l(E);
                var D = t(E);
                var L = n[E].ll.width;
                if (F >= D - J && F <= D + A + J) {
                    if (C >= K - H && C <= K + A + H)
                        return n[E].pl || (n[E].pf = !0,
                            n[E].pl = !0,
                            0 === n[E].id ? dt ? eC.fJ(aw, n[E].cM) : ii.pz(n[E].cM === b8 ? aw : n[E].cM) : dt ? eC.fL(aw, n[E].id) : ii.q0(n[E].id)),
                            !0;
                    if (0 === n[E].id && C >= K + L - A - H && C <= K + L + H)
                        return dt ? fH(aw, n[E].cM, eN.lO()) : ii.lP(eN.lO(), n[E].cM === b8 ? aw : n[E].cM),
                            !0
                }
            }
            return !1
        }
            ;
        this.dF = function () {
            if (2 !== fV && 0 !== fB[aw] && !j0 && hm.l9(aw)) {
                var C = ae.af(aw);
                b: if (n.length !== C)
                    var F = !0;
                else {
                    for (F = C - 1; 0 <= F; F--)
                        if (n[F].id !== ae.ag(aw, F) || n[F].cM !== ae.al(aw, F)) {
                            F = !0;
                            break b
                        }
                    F = !1
                }
                if (F) {
                    var E, H = [];
                    F = 0;
                    b: for (; F < C; F++) {
                        var J = ae.ag(aw, F);
                        var K = ae.al(aw, F);
                        for (E = 0; E < n.length; E++)
                            if (n[E].id === J && n[E].cM === K) {
                                H.push(n.splice(E, 1)[0]);
                                continue b
                            }
                        E = ae.am(aw, F);
                        J = {
                            cM: K,
                            cN: E,
                            pk: E,
                            id: J,
                            pf: !0,
                            pl: !1,
                            ll: null,
                            hp: null
                        };
                        x(J);
                        H.push(J)
                    }
                    n = H
                }
                for (--C; 0 <= C; C--)
                    F = ae.am(aw, C),
                        n[C].cN !== F && (n[C].cN = F,
                            n[C].pk = F > n[C].pk ? F : n[C].pk,
                            n[C].pf = !0)
            }
        }
            ;
        this.cG = function () {
            if (0 !== fB[aw] && hm.l9(aw) && !j0)
                for (var C = n.length - 1; 0 <= C; C--)
                    cH.drawImage(n[C].ll, l(C), t(C))
        }
    }
    function jw() {
        function g() {
            cH.drawImage(K, m0 + (dA ? m0 + eP.qK() : 0), qL + 2 * m0)
        }
        function k() {
            K.width = l[0].width + H;
            K.height = y + H;
            D = K.getContext("2d", {
                alpha: !0
            });
            D.clearRect(0, 0, l[0].width + H, y + H);
            D.translate(Math.floor(H / 2), Math.floor(H / 2));
            D.lineWidth = H;
            D.fillStyle = 1 === l[0].qI ? oX : hq;
            x();
            D.fill();
            D.strokeStyle = 1 === l[0].qI ? gD : cK;
            x();
            D.stroke();
            D.textAlign = cJ;
            D.textBaseline = cI;
            D.fillStyle = 1 === l[0].qI ? gD : cK;
            D.font = A[0];
            D.fillText(F[l[0].qH], Math.floor(l[0].width / 2), Math.floor(.72 * C[0] * y));
            D.font = A[1];
            D.fillText(l[0].l, Math.floor(l[0].width / 2), Math.floor((C[0] + .48 * C[1]) * y))
        }
        function x() {
            D.beginPath();
            D.moveTo(J, 0);
            D.lineTo(l[0].width - J, 0);
            D.lineTo(l[0].width, J);
            D.lineTo(l[0].width, y - J);
            D.lineTo(l[0].width - J, y);
            D.lineTo(J, y);
            D.lineTo(0, y - J);
            D.lineTo(0, J);
            D.closePath()
        }
        var l, t, n, z, y, A, B, C, F, E, H, J, K, D, L, I;
        this.bp = function () {
            L = 0;
            t = 4;
            n = z = 0;
            l = [];
            A = Array(2);
            B = Array(2);
            C = Array(2);
            F = ["YOU CONQUERED", "YOU WERE CONQUERED BY", "THE GAME WAS WON BY", "MAP:"];
            C[0] = .3;
            C[1] = .7;
            E = Array(4);
            K = document.createElement("canvas");
            I = c4.gY + 2E3;
            this.lq()
        }
            ;
        this.lq = function () {
            var N;
            y = Math.floor((q ? .0725 : .058) * bq);
            B[0] = Math.floor(.85 * C[0] * y);
            B[1] = Math.floor(.85 * C[1] * y);
            A[0] = bt + B[0] + bu;
            A[1] = bt + B[1] + bu;
            for (N = E.length - 1; 0 <= N; N--)
                E[N] = this.measureText(F[N] + "000", A[0]);
            H = Math.floor(1 + .05 * y);
            J = Math.floor(.2 * y);
            if (0 < l.length) {
                for (N = l.length - 1; 0 <= N; N--) {
                    var G = this.measureText(l[N].l + "00", A[1]);
                    l[N].width = G < E[N] ? E[N] : G
                }
                k()
            }
        }
            ;
        this.dF = function () {
            if (0 !== t)
                if (4 === t)
                    c4.gY > I && (t = 0,
                        1 === fV && c2.mq(jf.n6(), 3, 1, 9));
                else {
                    if (1 === t)
                        0 === n && (k(),
                            n = 1E-4),
                            n += .002 * (c4.gY - L),
                            1 <= n && (z = 0,
                                t = 2,
                                n = 1),
                            c4.c5 = !0;
                    else if (2 === t) {
                        if (z += (c4.gY - L) / 1E3,
                            z > l[0].gX || 1 < z && 1 < l.length)
                            t = 3
                    } else
                        3 === t && (n -= .002 * (c4.gY - L),
                            0 >= n && (n = 0,
                                l.shift(),
                                t = 0 < l.length ? 1 : 0),
                            c4.c5 = !0);
                    L = c4.gY
                }
        }
            ;
        this.measureText = function (N, G) {
            cH.font = G;
            return Math.floor(cH.measureText(N).width)
        }
            ;
        this.cQ = function (N, G) {
            this.mq(gE[N], G, 1, 0 === G ? 3 : 7)
        }
            ;
        this.mq = function (N, G, M, Q) {
            var R = this.measureText(N + "00", A[1]);
            R = R < E[G] ? E[G] : R;
            l.push({
                l: N,
                width: R,
                qH: G,
                qI: M,
                gX: Q
            });
            0 === t && (n = 0,
                t = 1,
                L = c4.gY)
        }
            ;
        this.cG = function () {
            0 !== t && 0 !== n && (1 > n ? (cH.globalAlpha = n,
                g(),
                cH.globalAlpha = 1) : g())
        }
    }
    function ka() {
        function g() {
            var D = eO.c1;
            F = !1;
            ho(n, D, l);
            var L = Math.floor(D / 2);
            1 === y ? (n.fillStyle = oE,
                n.fillRect(L, 0, L, l)) : -1 === y && (n.fillStyle = oM,
                    n.fillRect(0, 0, L, l));
            hr(n, D, l, 2);
            L = Math.floor(.25 * l);
            L = 2 > L ? 2 : L;
            n.fillStyle = oY;
            var I = Math.floor((l - 4) * A[1] / B[1]);
            0 < I && n.fillRect(2, l - 2 - I, L, I);
            I = Math.floor((l - 4) * A[0] / B[0]);
            0 < I && n.fillRect(D - 2 - L, l - 2 - I, L, I);
            L = Math.floor(l / 8);
            L = 2 > L ? 2 : L;
            ht(n, Math.floor(.4 * l), 0, l, L, .5, !1);
            ht(n, Math.floor(D - 1.4 * l), 0, l, L, .5, !0);
            n.drawImage(z, Math.floor((D - z.width) / 2), 3)
        }
        function k() {
            F = !0;
            E = 140;
            y = 0;
            C = [];
            eO.l7 = !1;
            A[0] = A[1] = 0
        }
        function x() {
            return eN.mV(e5.mS()) ? eN.fG - l - m0 : s - l - (q ? 2 : 1) * m0
        }
        var l, t, n, z, y, A, B, C, F, E, H, J, K;
        this.bp = function () {
            J = K = 0;
            F = this.l7 = !1;
            E = 140;
            y = 0;
            A = [0, 0];
            B = [1, 1];
            C = [];
            H = new Uint32Array(10);
            this.lq()
        }
            ;
        this.lq = function () {
            l = eN.cw;
            this.c1 = 4 * l;
            this.qW();
            t = document.createElement("canvas");
            t.width = this.c1;
            t.height = l;
            n = t.getContext("2d", {
                alpha: !0
            });
            g()
        }
            ;
        this.eX = function () {
            F && g()
        }
            ;
        this.qW = function () {
            var D = l - 6;
            D = 6 > D ? 6 : D;
            if (void 0 === z || z.width !== D) {
                z = document.createElement("canvas");
                z.width = D;
                z.height = D;
                var L = z.getContext("2d", {
                    alpha: !0
                });
                L.clearRect(0, 0, D, D);
                var I = Math.floor(D / 8);
                I = 1 > I ? 1 : I;
                L.lineWidth = I;
                L.strokeStyle = cK;
                var N = Math.floor(D / 2);
                D = Math.floor((D - I) / 2);
                L.beginPath();
                L.arc(N, N, D, 0, 2 * Math.PI);
                L.moveTo(N, N - D);
                L.lineTo(N, N + D);
                L.moveTo(N + Math.cos(.78 * Math.PI) * D, N + Math.cos(.28 * Math.PI) * D);
                L.lineTo(N, N);
                L.lineTo(N + Math.cos(.22 * Math.PI) * D, N + Math.cos(1.72 * Math.PI) * D);
                L.stroke()
            }
        }
            ;
        this.c7 = function (D, L) {
            if (D < r - this.c1 - m0)
                return !1;
            var I = x();
            if (L < I || L > I + l)
                return !1;
            I = D > r - m0 - this.c1 / 2;
            dt ? this.fT(0, I) : hm.l9(aw) && 0 !== fB[aw] && ii.qZ(I);
            return !0
        }
            ;
        this.dF = function () {
            if (0 < K)
                K--,
                    0 === K && k();
            else if (this.l7) {
                E--;
                var D;
                if (D = 270 === E && 2 <= J)
                    a: {
                        for (D = dY - 1; 0 <= D; D--)
                            if (hm.l9(dZ[D])) {
                                D = !1;
                                break a
                            }
                        D = !0
                    }
                D && (F = !0,
                    A[0] += B[0]);
                180 === E && 3 * A[0] < B[0] ? k() : A[0] >= B[0] ? fe.ff(-1) : A[1] >= B[1] ? K = 4 : 0 >= E && k()
            } else {
                for (D = 9; 0 <= D; D--)
                    12 < Math.abs(H[D] - bU[ei[D]]) && (E = 140),
                        H[D] = bU[ei[D]];
                D = 0 >= --E ? !0 : !1;
                if (D) {
                    this.l7 = !0;
                    E = 360;
                    var L = 0;
                    for (D = dY - 1; 0 <= D; D--)
                        hm.l9(dZ[D]) && (L += bU[dZ[D]]);
                    B[0] = mU(as(3 * L, 5), 1);
                    dA && 9 !== dr && (B[0] = qe(mU(as(L * (100 - as(100 * eP.qf(), j1)), 100), 1), B[0]));
                    B[1] = mU(L - B[0], 1);
                    J++
                }
            }
        }
            ;
        this.im = function () {
            this.l7 && A[0] < B[0] && k()
        }
            ;
        this.fT = function (D, L) {
            var I;
            if (this.l7) {
                for (I = C.length - 1; 0 <= I; I--)
                    if (C[I] === D)
                        return;
                C.push(D);
                F = !0;
                I = dt ? B[0] : bU[D];
                L ? A[0] += I : A[1] += I;
                D === aw && (y = L ? 1 : -1)
            }
        }
            ;
        this.cG = function () {
            if (this.l7) {
                var D = x();
                cH.drawImage(t, r - this.c1 - m0, D)
            }
        }
    }
    function jx() {
        function g() {
            if (C < 1 / 3) {
                var K = Math.floor(540 * C);
                return "rgba(" + K + ",180,0,0.75)"
            }
            if (C < 2 / 3)
                return K = Math.floor(540 * (C - 1 / 3)),
                    "rgba(180," + (180 - K) + ",0,0.75)";
            K = Math.floor(540 * (C - 2 / 3));
            return "rgba(180,0," + K + ",0.75)"
        }
        function k() {
            A.clearRect(0, 0, t, eN.cw);
            var K = Math.floor(C * (t - 2 * z));
            A.fillStyle = hq;
            A.fillRect(0, 0, z, eN.cw);
            A.fillRect(z + K, 0, t - z - K, eN.cw);
            A.fillStyle = g();
            A.fillRect(z, 0, K, eN.cw);
            A.fillStyle = cK;
            A.fillRect(0, 0, t, 1);
            A.fillRect(0, eN.cw - 1, t, 1);
            A.fillRect(0, 0, 1, eN.cw);
            A.fillRect(z, 0, 1, eN.cw);
            A.fillRect(z + K, 0, 1, eN.cw);
            A.fillRect(t - z, 0, 1, eN.cw);
            A.fillRect(t - 1, 0, 1, eN.cw);
            K = 1 + Math.floor(.0625 * eN.cw);
            var D = 1 + Math.floor(.3 * eN.cw);
            A.fillRect(Math.floor(.25 * eN.cw) + D, Math.floor((eN.cw - K) / 2), eN.cw - 2 * D, K);
            A.fillRect(Math.floor(t - 1.25 * eN.cw) + D, Math.floor((eN.cw - K) / 2), eN.cw - 2 * D - D % 2, K);
            A.fillRect(Math.floor(t - 1.25 * eN.cw) + Math.floor((eN.cw - K) / 2), D, K, eN.cw - 2 * D - D % 2);
            F = Math.floor(ax[aw] * C);
            A.fillText(eL.gF(F), Math.floor(t / 2), Math.floor(.55 * eN.cw))
        }
        function x(K) {
            if (1 < K && 0 === C)
                return C = .01,
                    k(),
                    !0;
            if (1 < K && 1 === C || 0 === C)
                return !1;
            C *= K;
            C = 1 < C ? 1 : 0 > C ? 0 : C;
            k();
            return !0
        }
        function l(K) {
            var D = C;
            C = (K - n - z) / (t - 2 * z);
            C = 0 > C ? 0 : C;
            C = 1 < C ? 1 : C;
            return D !== C ? (k(),
                !0) : !1
        }
        var t, n, z, y, A, B, C, F, E, H, J = 11 / 12;
        this.bp = function () {
            B = !fY;
            H = !1;
            C = .5;
            F = 0;
            this.pM = !1;
            this.lq()
        }
            ;
        this.lq = function () {
            q && r < .8 * s ? (this.cw = Math.floor(.0536 * bq),
                t = r - 4 * m0 - this.cw) : (t = Math.floor((q ? .65 : .389) * bq),
                    t += 12 - t % 12,
                    this.cw = Math.floor(t / 12));
            z = Math.floor(3 * this.cw / 2);
            E = bt + Math.floor(.5 * this.cw) + bu;
            y = document.createElement("canvas");
            y.width = t;
            y.height = this.cw;
            A = y.getContext("2d", {
                alpha: !0
            });
            A.font = E;
            A.textBaseline = cI;
            A.textAlign = cJ;
            this.ql();
            k()
        }
            ;
        this.ql = function () {
            n = q && r < .8 * s ? this.cw + 3 * m0 : Math.floor((gA - t) / 2);
            this.fG = cB - this.cw - (q ? 2 : 1) * m0
        }
            ;
        this.eX = function () {
            H && (H = !1,
                k())
        }
            ;
        this.l7 = function () {
            return !(!B || fm.lp && n < Math.floor(m0 + 5.5 * this.cw))
        }
            ;
        this.mV = function (K) {
            return this.l7() ? n + t > r - K - m0 : !1
        }
            ;
        this.cE = function () {
            B = !0
        }
            ;
        this.qa = function () {
            B = !1
        }
            ;
        this.lO = function () {
            var K = Math.floor(1E3 * C);
            return 0 >= K ? 1 : 1E3 < K ? 1E3 : K
        }
            ;
        this.pI = function (K, D) {
            return this.l7() && K > n && K < n + t && D > this.fG
        }
            ;
        this.pJ = function (K, D) {
            if (!this.l7())
                return !1;
            if (K > n && K < n + z && D > eN.fG)
                return x(J);
            if (K > n + t - z && K < n + t && D > eN.fG)
                return x(1 / J);
            this.pM = !0;
            return l(K)
        }
            ;
        this.qw = function (K) {
            0 !== fV && this.l7() && x(K) && (c4.c5 = !0)
        }
            ;
        this.pU = function (K) {
            if (0 === K || !this.l7())
                return !1;
            0 < K ? (K = 400 / (400 + K),
                K = K < J ? J : K) : (K = (400 - K) / 400,
                    K = K > 1 / J ? 1 / J : K);
            return x(K)
        }
            ;
        this.lh = function (K, D) {
            return this.pM ? l(K, D) : !1
        }
            ;
        this.pP = function () {
            this.pM = !1
        }
            ;
        this.dF = function () {
            this.l7() && Math.floor(ax[aw] * C) !== F && (H = !0)
        }
            ;
        this.cG = function () {
            this.l7() && cH.drawImage(y, n, this.fG)
        }
    }
    var g3, g8, g9;
    function jy() {
        var g, k, x, l, t, n, z;
        this.bp = function () {
            g = Array(2);
            k = Array(2);
            this.gg = !1;
            z = n = g9 = g8 = 0;
            g3 = 1;
            this.lq()
        }
            ;
        this.lq = function () {
            x = Math.floor((q ? .072 : .0502) * bq);
            x = 8 > x ? 8 : x;
            for (var y = 1; 0 <= y; y--)
                g[y] = document.createElement("canvas"),
                    g[y].width = x,
                    g[y].height = x,
                    k[y] = g[y].getContext("2d", {
                        alpha: !0
                    });
            this.ql();
            y = Math.floor(1 + x / 20);
            for (var A = 1; 0 <= A; A--)
                k[A].clearRect(0, 0, x, x),
                    k[A].fillStyle = o6,
                    k[A].beginPath(),
                    k[A].arc(x / 2, x / 2, x / 2 - y, 0, 2 * Math.PI),
                    k[A].fill(),
                    k[A].lineWidth = y,
                    k[A].fillStyle = oA,
                    k[A].strokeStyle = oA,
                    k[A].beginPath(),
                    k[A].arc(x / 2, x / 2, x / 2 - y, 0, 2 * Math.PI),
                    k[A].stroke(),
                    ht(k[A], 0, 0, x, y, .3, 0 === A)
        }
            ;
        this.gB = function () {
            return -g8 / g3
        }
            ;
        this.cF = function () {
            return -g9 / g3
        }
            ;
        this.gs = function (y, A) {
            g8 = g3 * y - A
        }
            ;
        this.gt = function (y, A) {
            g9 = g3 * y - A
        }
            ;
        this.c7 = function (y, A) {
            if (Math.pow(y - (l + x / 2), 2) + Math.pow(A - (t + x / 2), 2) < x * x / 4 || Math.pow(y - (l + x / 2), 2) + Math.pow(A - (t + 2 * x), 2) < x * x / 4)
                return A < t + 1.25 * x ? this.pU(Math.floor(gA / 2), Math.floor(cB / 2), -200) : this.pU(Math.floor(gA / 2), Math.floor(cB / 2), 200);
            eR.gw() && (this.gg = !0,
                n = y,
                z = A);
            return !1
        }
            ;
        this.lh = function (y, A) {
            if (!eR.gw())
                return !0;
            var B = g8
                , C = g9
                , F = n - y
                , E = z - A;
            g8 += F;
            g9 += E;
            e6.lh(F, E);
            this.rB();
            n = y;
            z = A;
            return B !== g8 || C !== g9
        }
            ;
        this.pU = function (y, A, B) {
            if (!eR.gw())
                return !0;
            if (0 < B)
                B = 450 / (450 + B),
                    B = .5 > B ? .5 : B;
            else if (0 > B)
                B = (450 - B) / 450,
                    B = 2 < B ? 2 : B;
            else
                return !1;
            this.rC(y, A, B);
            return !0
        }
            ;
        this.rC = function (y, A, B) {
            B = 1024 < B * g3 ? 1024 / g3 : B;
            B = .125 > B * g3 ? .125 / g3 : B;
            e6.zoom(B, y, A);
            g3 *= B;
            g8 = (g8 + y) * B - y;
            g9 = (g9 + A) * B - A;
            gf.rB()
        }
            ;
        this.rB = function () {
            var y = r / 16
                , A = 0
                , B = s / 16
                , C = 0;
            g8 < -r + y && (A = -r + y - g8);
            g8 > g3 * aZ - y && (A = g3 * aZ - y - g8);
            g9 < -s + B && (C = -s + B - g9);
            g9 > g3 * aa - B && (C = g3 * aa - B - g9);
            g8 += A;
            g9 += C;
            gu.gv();
            e6.rJ(A, C)
        }
            ;
        this.ql = function () {
            l = gA - x - m0;
            t = Math.floor(cB / 2 - 1.25 * x)
        }
            ;
        this.cG = function () {
            cH.drawImage(g[0], l, t);
            cH.drawImage(g[1], l, Math.floor(t + 3 * x / 2))
        }
    }
    function jz() {
        function g() {
            A = Math.floor(.2 * (q ? .07 : .035) * bq);
            A = mU(q ? 3 : 1, A);
            var P = r / (n.length + B);
            A = P > A ? P : A;
            G = Math.floor((1 - B) * A);
            z = 0;
            k()
        }
        function k() {
            z = -20 > z ? -20 : z;
            z = z > (n.length - 15) * A ? (n.length - 15) * A : z;
            F = Math.floor(z / A);
            E = F + Math.floor(gA / A);
            E = E > n.length - 1 ? n.length - 1 : E;
            F = E < F ? E : F;
            F = 0 > F ? 0 : F;
            var P = E;
            C = y / n[P];
            for (var U = E - 1; U >= F; U--)
                n[U] > n[P] && (P = U,
                    C = y / Math.pow(n[U], N))
        }
        function x(P) {
            P = Math.floor((z + gA - P - B * A) / A);
            P = -1 > P ? -1 : -1 === P ? 0 : P > n.length - 1 ? -1 : P;
            return P !== H ? (H = P,
                -1 === M && 0 === H && I && (M = setInterval(t, 100)),
                !0) : !1
        }
        function l(P) {
            var U = Math.floor(C * Math.pow(n[P], N));
            cH.fillRect(z + gA - (P + 1) * A, cB - U, G, U)
        }
        function t() {
            8 === aJ.pR() && (H = -1);
            if (0 !== H)
                Q = (new Date).getTime(),
                    clearInterval(M),
                    M = -1;
            else {
                var P = n[1] / 864E3;
                if (-1 !== Q) {
                    var U = (new Date).getTime();
                    P += (U - Q) * n[1] / 864E5;
                    Q = -1
                }
                0 < P && (n[0] += Math.floor(P),
                    c4.c5 = !0)
            }
        }
        var n, z, y, A, B, C, F, E, H, J, K, D, L, I, N, G, M, Q, R;
        this.bp = function () {
            Q = M = -1;
            I = !1;
            N = 1;
            H = -1;
            this.rZ = !1;
            L = 0;
            D = new Date;
            z = 0;
            B = .3;
            R = [];
            R.push({
                mm: "Plateau A",
                b3: 0,
                pC: 57
            });
            R.push({
                mm: "Max A",
                b3: 1,
                pC: 1
            });
            R.push({
                mm: "Black Friday",
                b3: 15,
                pC: 15
            });
            R.push({
                mm: "Max B",
                b3: 19,
                pC: 19
            });
            R.push({
                mm: "Max C",
                b3: 44,
                pC: 44
            });
            R.push({
                mm: "First Android Version",
                b3: 58,
                pC: 58
            });
            R.push({
                mm: "Max D",
                b3: 67,
                pC: 67
            });
            R.push({
                mm: "The iFrame Explosion",
                b3: 98,
                pC: 99
            });
            R.push({
                mm: "The 155-Day Uptrend",
                b3: 58,
                pC: 213
            });
            R.push({
                mm: "Max E",
                b3: 213,
                pC: 213
            });
            R.push({
                mm: "Plateau B",
                b3: 214,
                pC: 259
            });
            R.push({
                mm: "Turbulent Times",
                b3: 260,
                pC: 344
            });
            R.push({
                mm: "Max F",
                b3: 262,
                pC: 262
            });
            R.push({
                mm: "Max G",
                b3: 282,
                pC: 282
            });
            R.push({
                mm: "Max H",
                b3: 333,
                pC: 333
            });
            R.push({
                mm: "The 19-Day Downtrend",
                b3: 283,
                pC: 301
            });
            R.push({
                mm: "Plateau C",
                b3: 345,
                pC: 385
            });
            R.push({
                mm: "The Alliance Ascent",
                b3: 386,
                pC: 395
            });
            R.push({
                mm: "Max I",
                b3: 395,
                pC: 395
            });
            R.push({
                mm: "First iOS Version",
                b3: 411,
                pC: 411
            });
            R.push({
                mm: "Plateau D",
                b3: 396,
                pC: 453
            });
            R.push({
                mm: "The TikTok Revolution",
                b3: 454,
                pC: 470
            });
            R.push({
                mm: "Max J",
                b3: 456,
                pC: 456
            });
            R.push({
                mm: "Max K",
                b3: 472,
                pC: 472
            });
            R.push({
                mm: "Max L",
                b3: 478,
                pC: 478
            });
            R.push({
                mm: "YT Drew",
                b3: 471,
                pC: 485
            });
            R.push({
                mm: "Plateau E",
                b3: 485,
                pC: 600
            });
            R.push({
                mm: "Uptrend A",
                b3: 600,
                pC: 613
            });
            R.push({
                mm: "Max M",
                b3: 613,
                pC: 613
            });
            R.push({
                mm: "Downtrend A",
                b3: 614,
                pC: 635
            });
            R.push({
                mm: "Plateau F",
                b3: 636,
                pC: 737
            });
            R.push({
                mm: "End of Record",
                b3: 738,
                pC: 738
            });
            R.push({
                mm: "FX Client Beta",
                b3: 883,
                pC: 1000
            });
            R.push({
                mm: "FX Client",
                b3: 1000,
                pC: 1500
            });
            n = [208644377, 208644377, 208644377, 206964709, 205156594, 250680803, 249089835, 234476552, 252346209, 263196406, 270821533, 291436400, 294907103, 288866179, 297960890, 310165928, 323215738, 326005712, 312078872, 282668674, 268883231, 261100885, 247870209, 240175828, 231697235, 240614202, 237647174, 230525212, 228239099, 226070733, 215992739, 216961676, 231079584, 235793502, 234032821, 228402462, 216942832, 211862670, 209792418, 220626495, 221020535, 228198633, 226910806, 227687295, 210969547, 197393506, 205629061, 215820135, 213694935, 209455870, 215822584, 215130299, 214034219, 229190414, 230055290, 225313791, 223398523, 231870169, 226224938, 218242706, 235891029, 210498444, 195329116, 187676007, 183432634, 175752106, 170096205, 173369342, 171454357, 185810310, 189616577, 190788861, 179291487, 179513980, 189122353, 188375572, 202060722, 203256609, 197948652, 191950448, 194693217, 196335490, 195911919, 202264283, 199251620, 193699336, 188441210, 183419345, 195919988, 198126823, 199780788, 197440550, 190144884, 179139362, 166469099, 178827877, 183801980, 197952484, 188875861, 185919783, 186237411, 182504952, 183532013, 174109004, 178159701, 161031347, 194622838, 205645645, 200496457, 194773327, 194546481, 207893217, 210920126, 213376144, 173859897, 154326886, 158943729, 166772975, 175066046, 177406405, 179018562, 185986119, 186747583, 200787939, 208959937, 161987576, 185512400, 185788899, 185957487, 194591063, 215634157, 230579314, 237637383, 240518707, 221398239, 225230795, 224891285, 211292916, 216944626, 219436299, 226523918, 232405568, 232166426, 216921782, 244767964, 257278946, 243548100, 237386943, 242802627, 229717622, 168149709, 259971896, 267057767, 257606635, 209857364, 126035568, 129833237, 151312703, 197006695, 73120657, 37551024, 39229432, 29517736, 29382631, 31512045, 42652097, 47363019, 49624906, 46687310, 33767120, 31230439, 34211643, 43094531, 53747053, 55380682, 49779117, 47748833, 21038802, 20406484, 24523793, 26566139, 25284142, 26825553, 23497443, 20291865, 17765022, 21291320, 21106123, 19050128, 18324426, 19044067, 19594721, 19347845, 23365124, 24186529, 19824881, 17952812, 17093838, 17328579, 17607296, 21284737, 22551012, 20471281, 19350848, 19654931, 18725460, 18641926, 23301269, 25178902, 21617041, 21433781, 21078957, 19526047, 18665064, 21394401, 21575049, 19286677, 18018450, 17550775, 17282428, 17055509, 19348704, 20177845, 19766211, 19088037, 18118802, 18269428, 18500614, 19130220, 19351798, 19205188, 19489961, 20233286, 20726811, 23245145, 26158741, 26096642, 24424181, 23690661, 22967492, 21098008, 20325973, 19431907, 17008295, 15583096, 14209752, 14307184, 13541498, 12822679, 13154311, 12161194, 12956543, 11435697, 13428928, 12262514, 12858519, 12405344, 12884309, 14410011, 15556681, 15260178, 14863807, 13861458, 15176144, 14089849, 13063987, 12378716, 13061867, 13118900, 13112653, 13137263, 13062253, 13126875, 14136833, 14711852, 14341250, 11888270, 13137006, 12830841, 12516937, 12783789, 13139393, 12931E3, 12857582, 13677329, 13892963, 13171528, 14135236, 14640750, 15677970, 16758399, 19125177, 17723446, 16469484, 17032884, 19792603, 21426397, 22032534, 20271251, 16190176, 16772813, 17675977, 18764026, 18346209, 19576834, 20989792, 21350839, 14696885, 14653075, 14677999, 14958759, 14210260, 15488352, 15623604, 14473144, 12823062, 14869909, 15142264, 15567014, 17896725, 20081347, 17765006, 12763925, 13523610, 13979983, 15080856, 17116394, 18483238, 18084320, 12100282, 12221529, 12441579, 12058220, 12441689, 12821546, 13401583, 13009895, 12271066, 12210094, 12355642, 13737115, 14257807, 14904897, 14072161, 15640387, 15721803, 16397970, 19254839, 21608906, 20527471, 16596206, 15550563, 14385591, 15547262, 13174302, 12462319, 13000669, 12832541, 12186376, 13150940, 14654379, 14299386, 14158528, 15185971, 12444117, 14253445, 15049053, 14123310, 16892853, 15963931, 11858727, 10012703, 9478191, 9193460, 8851082, 9298848, 9638204, 9442496, 8653593, 9093527, 8530977, 8809114, 9609612, 9906912, 9615756, 9477879, 9713075, 9126583, 8949378, 9577595, 10180186, 9858705, 9534213, 9184660, 8889455, 8311313, 9738346, 9772164, 9157791, 8445413, 8467279, 8756002, 9257951, 10213536, 10620530, 10352296, 9350531, 9118709, 9614237, 9692491, 10801215, 10984804, 9542309, 9609538, 9391430, 9515517, 10064494, 11061684, 10408005, 9794768, 9297643, 9275992, 9394076, 9716084, 10045958, 9715229, 9091248, 10010584, 9845528, 9532588, 8986320, 9037708, 9820996, 8953464, 9074064, 8644692, 8025308, 8832112, 10785788, 10539708, 8908744, 8331216, 8858100, 8626840, 7666284, 8503372, 8855308, 6762540, 6414076, 6786692, 6445532, 6262192, 5918176, 5864376, 5464928, 5384996, 5942760, 5261972, 5404612, 6184860, 6312948, 5815660, 5208552, 4734392, 4538784, 4661404, 5145524, 4819368, 4369224, 4458584, 4289956, 3538288, 3517544, 3871876, 3388048, 3344796, 3089228, 2863676, 2268964, 2160500, 2580004, 2244356, 2018408, 1688912, 1945368, 1796332, 1619260, 2060292, 1597656, 1472788, 1306208, 1171408, 1021096, 1109312, 1241276, 1305092, 1142748, 1157700, 991984, 786992, 786396, 1043956, 1029320, 860500, 834824, 841912, 736464, 690328, 878376, 907232, 794932, 646388, 752600, 672836, 636212, 794108, 746856, 642928, 671328, 493568, 458168, 428776, 464736, 371412, 314568, 225472, 252072, 227604, 251048, 269184, 174136, 825576, 536060, 165952, 153252, 180036, 149616, 138472, 157832, 188152, 180108, 134076, 70960, 89236, 111428, 60520, 74620, 73424, 74720, 71584, 94432, 62572, 66420, 32532, 34452, 41048, 51372, 61916, 43236, 55172, 26776, 47E3, 57424, 93100, 64980, 37288, 44296, 34588, 40700, 29200, 24604, 18184, 42660, 31404, 38096, 18556, 17388, 19568, 17604, 22328, 40300, 39392, 33440, 17960, 7984, 11612, 67700, 14108, 22444, 19756, 9436, 16864, 14400, 17216, 14436, 8612, 15952, 29764, 18748, 16348, 23976, 22080, 20268, 20984, 9480, 30736, 15996, 9484, 9392, 9716, 21540, 57428, 24788, 18728, 8528, 5972, 20560, 18268, 28088, 15364, 15300, 29348, 30992, 20564, 34420, 16716, 14424, 12360, 15124, 51172, 13176];
            this.lq();
            e9.rb(0, 0)
        }
            ;
        this.lq = function () {
            y = Math.floor(.15 * s);
            J = Math.floor((q ? .018 : .0137) * bq);
            J = 10 > J ? 10 : J;
            K = bt + J + bu;
            g()
        }
            ;
        this.rd = function () {
            I || ii.re()
        }
            ;
        this.rf = function (P) {
            var U;
            I = !0;
            for (U = 0; U < P.length; U++)
                n.unshift(P[U]);
            g();
            c4.c5 = !0
        }
            ;
        this.rj = function () {
            k()
        }
            ;
        this.lh = function (P, U) {
            U > cB - .6 * y ? this.rZ ? P !== L && (z += P - L,
                L = P,
                k(),
                x(P),
                this.rZ = -1 !== H,
                c4.c5 = !0) : x(P) && (c4.c5 = !0) : this.pN()
        }
            ;
        this.pN = function () {
            -1 !== H && (this.rZ = !1,
                H = -1,
                c4.c5 = !0)
        }
            ;
        this.pU = function (P, U) {
            -1 !== H && (z += Math.floor(U),
                k(),
                x(P),
                c4.c5 = !0)
        }
            ;
        this.c7 = function (P, U) {
            this.lh(P, U);
            -1 !== H && (L = P,
                this.rZ = !0)
        }
            ;
        this.pO = function () {
            -1 !== H && (this.rZ = !1)
        }
            ;
        this.cG = function () {
            cH.fillStyle = oW;
            for (var P = E; P >= F; P--)
                l(P);
            I && 0 === F && (cH.fillStyle = oM,
                l(0));
            -1 !== H && (cH.fillStyle = oV,
                l(H));
            if (-1 !== H) {
                cH.font = K;
                cH.textBaseline = ob;
                P = new Date;
                P.setTime(D.getTime() - 864E5 * H);
                var U = "month"
                    , W = "day";
                "undefined" !== typeof Intl && (U = (new Intl.DateTimeFormat("en-US", {
                    month: "long"
                })).format(P),
                    W = (new Intl.DateTimeFormat("en-US", {
                        weekday: "long"
                    })).format(P));
                P = W + ", " + P.getUTCDate() + " " + U + " " + P.getFullYear();
                var X = 1 === n[H] ? " second played" : " total seconds played";
                X = eL.gF(n[H]) + X;
                var V = Math.floor(cH.measureText(P).width)
                    , na = Math.floor(cH.measureText(X).width)
                    , ba = Math.floor(.5 * (V + J));
                U = z + gA - (H + 1) * A;
                U = U < ba ? ba : U > gA - ba ? gA - ba : U;
                W = cB - Math.floor(C * Math.pow(n[H], N));
                var ca = Math.floor(1.1 * J)
                    , pa = W > cB - ca ? cB - ca : W;
                cH.fillStyle = hq;
                cH.fillRect(gA - na - J, pa - ca, na + J, ca);
                cH.fillRect(U - ba, cB - ca, V + J, ca);
                cH.fillStyle = cK;
                cH.textAlign = oc;
                cH.fillText(X, Math.floor(gA - .5 * J), pa);
                X = pa - 2 * ca;
                V = -1;
                na = n.length - H - 1;
                for (ba = R.length - 1; 0 <= ba; ba--)
                    na >= R[ba].b3 && na <= R[ba].pC && (-1 === V || R[ba].pC - R[ba].b3 < R[V].pC - R[V].b3) && (V = ba);
                -1 !== V && (na = Math.floor(cH.measureText(R[V].mm).width),
                    cH.fillStyle = hq,
                    cH.fillRect(gA - na - J, X, na + J, ca),
                    cH.fillStyle = cK,
                    cH.fillText(R[V].mm, Math.floor(gA - .5 * J), X + ca));
                cH.textAlign = cJ;
                cH.fillText(P, U, cB);
                cH.strokeStyle = nQ;
                cH.lineWidth = 1;
                cH.beginPath();
                cH.moveTo(0, W);
                cH.lineTo(gA, W);
                cH.closePath();
                cH.stroke()
            }
        }
    }
    function k0() {
        this.cw = this.fF = 0;
        var g, k, x, l, t, n, z, y, A, B, C, F, E;
        this.bp = function () {
            t = hS;
            C = "rgba(0,100,0,0.8)";
            F = "rgba(150,0,0,0.8)";
            B = !0;
            y = !1;
            A = ax[aw];
            this.lq()
        }
            ;
        this.lq = function () {
            k = Math.floor((q ? .305 : .24) * bq);
            this.cw = Math.floor(.5 + .13 * k);
            k = Math.floor(6 * this.cw);
            g = bt + Math.floor(.8 * this.cw) + bu;
            E = Math.floor(.5 * this.cw);
            pc.font = g;
            x = m0;
            l = Math.floor(1 + .13 * this.cw);
            n = document.createElement("canvas");
            n.width = k;
            n.height = this.cw;
            z = n.getContext("2d", {
                alpha: !0
            });
            z.font = g;
            z.textBaseline = cI;
            z.textAlign = cJ;
            this.s4()
        }
            ;
        this.q6 = function () {
            return q && r < 1.2 * s
        }
            ;
        this.ql = function () {
            this.q6() ? this.fF = gA - k - m0 : this.fF = Math.floor(eI.s5() + (gA - eI.s5() - e7.c1 - k) / 2 - .5 * m0)
        }
            ;
        this.eX = function () {
            y && (y = !1,
                this.s4())
        }
            ;
        this.s4 = function () {
            z.clearRect(0, 0, k, this.cw);
            z.fillStyle = B ? C : F;
            z.fillRect(0, 0, k, this.cw);
            z.fillStyle = oV;
            this.s6();
            this.s7();
            z.fillStyle = ax[aw] >= ay.dJ(aw) ? oQ : cK;
            z.fillText(eL.gF(A), Math.floor(k / 2), E);
            z.fillStyle = cK;
            z.fillRect(0, 0, k, 1);
            z.fillRect(0, 0, 1, this.cw);
            z.fillRect(0, this.cw - 1, k, 1);
            z.fillRect(k - 1, 0, 1, this.cw)
        }
            ;
        this.s6 = function () {
            var H = Math.floor((ay.s8() - 1) * this.cw / 9);
            H = qe(H, this.cw - l);
            z.fillRect(0, H, l, this.cw - H);
            z.fillRect(k - l, H, l, this.cw - H)
        }
            ;
        this.s7 = function () {
            z.fillRect(l, this.cw - l, Math.floor((k - 2 * l) * ax[aw] / t), l)
        }
            ;
        this.dF = function () {
            0 !== fB[aw] && 2 !== fP[aw] && A !== ax[aw] && (t = mU(ax[aw], t),
                B = ax[aw] > A && 10 <= ax[aw],
                A = ax[aw],
                y = !0)
        }
            ;
        this.cG = function () {
            0 === fB[aw] || fY || 2 === fP[aw] || cH.drawImage(n, this.fF, x)
        }
    }
    var s9, qL, sA, sB, sC, ei, sD;
    function k1() {
        function g() {
            var S;
            B.clearRect(0, 0, s9, qL);
            B.fillStyle = oL;
            B.fillRect(0, 0, s9, J);
            B.fillStyle = o8;
            B.fillRect(0, J, s9, qL - J);
            sD[aw] >= V && x(sD[aw] - V, oK);
            0 !== sD[aw] && 0 === V && x(0, oJ);
            -1 !== X && x(X, lt);
            B.fillStyle = oA;
            B.fillRect(0, J, s9, 1);
            B.fillRect(0, 0, s9, oo);
            B.fillRect(0, 0, oo, qL);
            B.fillRect(s9 - oo, 0, oo, qL);
            B.fillRect(0, qL - oo, s9, oo);
            B.font = sA;
            B.textBaseline = cI;
            B.textAlign = cJ;
            B.fillText(Q, Math.floor(s9 / 2), Math.floor(E + sC / 2));
            var O = sD[aw] < V + y - 1 ? 1 : 2;
            B.font = sB;
            B.textAlign = mZ;
            for (S = y - O; 0 <= S; S--)
                k(ei[S + V]),
                    l(S, S + V, ei[S + V]);
            B.textAlign = oc;
            for (S = y - O; 0 <= S; S--)
                k(ei[S + V]),
                    t(S, ei[S + V]);
            2 === O && (k(aw),
                B.textAlign = mZ,
                l(y - 1, sD[aw], aw),
                B.textAlign = oc,
                t(y - 1, aw));
            0 === V && (S = .7 * K / bw.bz(4).height,
                B.setTransform(S, 0, 0, S, Math.floor(D + .58 * K + .5 * S * bw.bz(4).width), Math.floor(E + sC + .4 * K)),
                B.imageSmoothingEnabled = !0,
                B.drawImage(bw.bz(4), -Math.floor(bw.bz(4).width / 2), -Math.floor(bw.bz(4).height / 2)),
                B.setTransform(1, 0, 0, 1, 0, 0))
        }
        function k(S) {
            dA && (B.fillStyle = dW.sl[dW.id[dW.dX[S]]])
        }
        function x(S, O) {
            B.fillStyle = O;
            S = S > y - 1 ? y - 1 : S;
            var T = Math.floor((S === y - 1 ? 2 : 0 === S ? 1.15 : 1) * K);
            T = S === y - 2 ? Math.floor(J + 9.15 * K) - Math.floor(J + 8.15 * K) : T;
            B.fillRect(0, Math.floor(J + (S + (0 === S ? 0 : .15)) * K), s9, T)
        }
        function l(S, O, T) {
            B.fillText(R[O], D, Math.floor(E + sC + (S + .5) * K));
            1 === fP[T] && (B.font = od + sB);
            B.fillText(G[T] === T ? gE[T] : N[G[T] % b8], L, Math.floor(E + sC + (S + .5) * K));
            0 !== fP[T] && (B.font = sB)
        }
        function t(S, O) {
            B.fillText(bU[O], I, Math.floor(E + sC + (S + .5) * K))
        }
        function n(S) {
            S -= m0 + J;
            if (0 > S)
                return Math.floor(S / K) - 1;
            if (S < (y - 1) * K)
                return Math.floor(S / K);
            if (S < qL - J)
                return y - 1;
            S -= qL - J;
            return y + Math.floor(S / K)
        }
        function z(S, O) {
            return S >= m0 && S < m0 + s9 && O >= m0 && O < m0 + qL
        }
        var y, A, B, C, F, E, H, J, K, D, L, I, N, G, M, Q, R, P, U, W, X, V, na, ba, ca, pa;
        this.bp = function () {
            var S, O;
            na = 0;
            ba = !1;
            pa = ca = 0;
            Q = "LEADERBOARD";
            X = -1;
            y = q ? 6 : 10;
            V = 0;
            W = !1;
            P = new Uint16Array(y + 1);
            U = new Uint32Array(y + 1);
            F = b8;
            ei = new Uint16Array(F);
            sD = new Uint16Array(F);
            for (S = F - 1; 0 <= S; S--)
                ei[S] = S,
                    sD[S] = S;
            this.lq(!0);
            N = [];
            G = new Uint16Array(b8);
            M = new Uint16Array(b8);
            var T = Math.floor(s9 - L - D - C)
                , Y = 0;
            R = Array(b8);
            B.font = sB;
            for (S = b8 - 1; 0 <= S; S--)
                if (R[S] = S + 1 + ".",
                    G[S] = S,
                    M[S] = Math.floor(B.measureText(gE[S]).width),
                    M[S] > T) {
                    var Z = gE[S];
                    for (O = gE[S].length - 1; 1 <= O && !(Z = Z.substring(0, O),
                        M[S] = Math.floor(B.measureText(Z + "...").width),
                        M[S] <= T); O--)
                        ;
                    Z += "...";
                    N.push(Z);
                    G[S] = b8 + Y++
                }
            g()
        }
            ;
        this.lq = function (S) {
            q ? (s9 = Math.floor(.335 * bq),
                qL = Math.floor(y * s9 / 8)) : (s9 = Math.floor(.27 * bq),
                    qL = Math.floor(y * s9 / 10));
            s9 = Math.floor(.97 * s9);
            A = document.createElement("canvas");
            A.width = s9;
            A.height = qL;
            B = A.getContext("2d", {
                alpha: !0
            });
            E = .025 * s9;
            sC = .16 * s9;
            H = 0 * s9;
            J = Math.floor(.45 * E + sC);
            K = (qL - sC - 2 * E - H) / y;
            sA = bt + Math.floor(.55 * sC) + bu;
            sB = Math.floor(.6 * K) + bu;
            B.font = sB;
            D = Math.floor(B.measureText("555").width);
            L = Math.floor(B.measureText("555600.00").width);
            C = Math.floor(B.measureText("00920600").width);
            B.font = sA;
            I = s9 - D;
            if (!S) {
                B.font = sB;
                for (S = b8 - 1; 0 <= S; S--)
                    M[S] = Math.floor(B.measureText(G[S] === S ? gE[S] : N[G[S] % b8]).width);
                g()
            }
        }
            ;
        this.s5 = function () {
            return s9
        }
            ;
        this.eX = function (S) {
            W && (S || 14 >= sf && 0 === c4.dU() % 6 || 14 < sf) && (W = !1,
                g())
        }
            ;
        this.dF = function () {
            for (var S = F - 1; 0 <= S; S--)
                if (0 === fB[ei[S]]) {
                    var O = S
                        , T = ei[O];
                    for (F--; O < F; O++)
                        ei[O] = ei[O + 1],
                            sD[ei[O]] = O;
                    ei[F] = T;
                    sD[ei[F]] = F
                }
            T = F - 1;
            for (O = 0; O < T; O++)
                bU[ei[O]] < bU[ei[O + 1]] && (S = ei[O],
                    ei[O] = ei[O + 1],
                    ei[O + 1] = S,
                    sD[ei[O]] = O,
                    sD[ei[O + 1]] = O + 1);
            a: {
                S = W;
                W = !0;
                for (O = T = sD[aw] >= y - 1 ? y - 2 : y - 1; 0 <= O; O--)
                    if (P[O] !== ei[O] || U[O] !== bU[ei[O]])
                        break a;
                if (T !== y - 2 || P[y] === sD[aw] && U[y] === bU[aw])
                    W = S
            }
            for (S = y - 1; 0 <= S; S--)
                P[S] = ei[S],
                    U[S] = bU[ei[S]];
            P[y] = sD[aw];
            U[y] = bU[aw]
        }
            ;
        this.c7 = function (S, O) {
            if (z(S, O)) {
                na = c4.gY;
                ba = !0;
                ca = pa = n(O);
                if (oq) {
                    var T = sy(-1, pa, y);
                    T = T === y ? -1 : T;
                    X !== T && (X = T,
                        g(),
                        c4.c5 = !0)
                }
                return !0
            }
            return !1
        }
            ;
        this.lh = function (S, O) {
            var T = n(O);
            if (ba) {
                var Y = V;
                V += ca - T;
                V = sy(0, V, b8 - y);
                V !== Y && (ca = T,
                    T = sy(-1, T, y),
                    X = T = T !== y && z(S, O) ? T : -1,
                    g(),
                    c4.c5 = !0);
                return !0
            }
            T = sy(-1, T, y);
            T = T === y || !z(S, O) || oq ? -1 : T;
            return X !== T ? (X = T,
                g(),
                c4.c5 = !0) : !1
        };
        // mouseClick
        this.pO = function (S, O) {
            if (!ba)
                return !1;
            ba = !1;
            var T = n(O);
            oq && -1 !== X && (X = -1,
                g(),
                c4.c5 = !0);
            if (350 > c4.gY - na && pa === T && (T = sy(-1, T, y),
                T = T !== y && z(S, O) ? T : -1,
                -1 !== T)) {
                var Y = ei[T + V];
                T === y - 1 && sD[aw] >= V + y - 1 && (Y = aw);
                //0 !== fB[Y] && eR.gc(Y, 800, !1, 0)
                // if the game is a team game, display donation history
                if (dA) displayDonationsHistory(Y, gE);
                eR.gc(Y, 800, !1, 0);
            }
            return !0
        };
        this.pU = function (S, O, T) {
            return ba ? !1 : z(S, O) ? (S = n(O),
                S = sy(-1, S, y),
                S = S === y || oq ? -1 : S,
                0 < T ? V < b8 - y && (V++,
                    X = S,
                    g(),
                    c4.c5 = !0) : 0 < V && (V--,
                        X = S,
                        g(),
                        c4.c5 = !0),
                !0) : !1
        };
        this.cG = function () {
            cH.drawImage(A, m0, m0)
        }
    }
    function k2() {
        function g() {
            z.clearRect(0, 0, e7.c1, e7.cw);
            z.fillStyle = hq;
            z.fillRect(0, 0, e7.c1, e7.cw);
            z.fillStyle = oE;
            z.fillRect(0, e7.cw - B - 1, Math.floor((0 < G ? G : Math.sqrt(L[4] / L[3])) * e7.c1), B);
            z.fillStyle = cK;
            z.fillRect(0, 0, e7.c1, 1);
            z.fillRect(0, 0, 1, e7.cw);
            z.fillRect(e7.c1 - 1, 0, 1, e7.cw);
            z.fillRect(0, e7.cw - 1, e7.c1, 1);
            z.fillRect(0, e7.cw - B - 1, e7.c1, 1);
            // render
            for (var P = 0, U = 0; U < D.length; U++)
                if (I[U]) {
                    z.textAlign = mZ;
                    var W = Math.floor((C - B + 2 * E) * (U - P + 1) / (D.length + 1) - .7 * E);
                    z.fillText(D[U], F, W);
                    z.textAlign = oc;
                    5 === U && 0 !== fB[aw] && ax[aw] >= ay.dJ(aw) ? (z.fillStyle = oZ,
                        z.fillText(k(U), e7.c1 - F, W),
                        z.fillStyle = cK) : z.fillText(k(U), e7.c1 - F, W)
                } else P++
        }
        function k(P) {
            return 3 > P ? L[P].toString() :
                3 === P ? e7.n9(L[P] / 100, 2) :
                    4 === P ? e7.n9(L[P] / 100, 2) :
                        5 === P ? e7.n9(L[P] / 100, 2) :
                            P === 6 ? eL.gF(L[P]) :
                                P === 7 ? e7.s8(L[7]) :
                                    P === 8 ? utils.getMaxTroops(bU, aw) : utils.getDensity(ax, bU, aw) // max amount of troops / current amount of troops
        }

        function x(P) {
            P = as(1E4 * P, j1);
            8 === dr && (0 === fB[0] ? fe.ff(1) : 0 === fB[1] && fe.ff(0));
            P >= L[3] && (fe.ff(-1),
                L[4] = -1);
            L[4] !== P && (K++,
                L[4] = P)
        }
        function l() {
            for (var P = dY - 1; 0 <= P; P--)
                if (0 < b4[dZ[P]].length)
                    return !1;
            return !0
        }
        function t() {
            // original line is bU[aw] !== L[6] && (L[6] = bU[aw], K++)
            if (bU[aw] !== L[6]) {
                L[6] = bU[aw];
                K++;
            }
        }
        var n, z, y, A, B, C, F, E, H, J, K, D, L, I, N, G, M, Q, R;
        this.bp = function () {
            G = M = 0;
            D = Array(9);
            D[0] = "Humans";
            D[1] = dt ? "Players" : "Bots";
            D[2] = "Spectators";
            D[3] = "Threshold";
            D[4] = "Occupation";
            D[5] = "Interest";
            D[6] = "Income";
            D[7] = "Time Spent";
            D[8] = "Maximum Troops";
            D[9] = "Density"
            R = j1 - as(j1, 100);
            L = Array(D.length);
            L[0] = dt ? 0 : cq;
            L[1] = dt ? dY : dq;
            L[2] = io;
            L[3] = 10000;
            L[4] = as(10000 * bU[0], j1);
            L[5] = 700;
            L[6] = 0;
            t();
            // the updating is on line 4420
            L[7] = 0;
            L[8] = 0;
            L[9] = 0;
            N = k(6);
            I = Array(D.length);
            for (var P = D.length - 1; 0 <= P; P--)
                I[P] = !0;
            Q = 0;
            dt ? (I[0] = !1,
                I[2] = !1,
                I[3] = !1,
                Q = 3) : (I[3] = !1,
                    Q = 1);
            K = 0;
            this.lq()
        }
            ;
        this.lq = function () {
            this.c1 = Math.floor((q ? .1646 : .126) * bq);
            this.cw = Math.floor(1.18 * this.c1);
            B = Math.floor(.04 * this.c1);
            F = Math.floor(.05 * this.c1);
            E = .04 * this.c1;
            C = this.cw;
            this.cw -= Math.floor(Q * (this.cw - 2 * B) / D.length);
            J = Math.floor(.55 * (C - B) / D.length);
            H = bt + J + bu;
            n = document.createElement("canvas");
            n.width = this.c1;
            n.height = this.cw;
            z = n.getContext("2d", {
                alpha: !0
            });
            z.font = H;
            z.textBaseline = cI;
            z.lineWidth = 1;
            this.iu();
            this.ql();
            eK.ql();
            g()
        }
            ;
        this.ql = function () {
            y = gA - this.c1 - m0
        }
            ;
        this.tB = function () {
            A = m0
        }
            ;
        this.iu = function () {
            A = m0 + (eK.q6() && 0 !== fB[aw] && !fY ? eK.cw + m0 : 0)
        }
            ;
        this.eX = function (P) {
            0 < K && (P || 12 > sf && 100 <= K || 12 <= sf) && (K = 0,
                g())
        }
            ;
        this.lQ = function () {
            return L[7]
        }
            ;
        this.s8 = function (P) {
            var U = Math.floor(P / 1E3 / 60);
            P = Math.floor((P - 6E4 * U) / 1E3);
            return 10 > P ? U + ":0" + P : U + ":" + P
        }
            ;
        this.n9 = function (P, U) {
            return P.toFixed(U) + "%"
        }
            ;
        this.dF = function () {
            I[0] && ip - io !== L[0] && (L[0] = ip - io,
                K++);
            dY - L[0] !== L[1] && (L[1] = dY - L[0],
                K++);
            this.e8();
            if (dA) {
                var P = eP.qf();
                P >= R && l() ? (fe.ff(-1),
                    x(eP.qf())) : x(P)
            } else
                P = bU[ei[0]],
                    P >= R && l() && fe.ff(-1),
                    x(P);
            P = ay.tN(aw);
            P !== L[5] && (L[5] = P,
                K++);
            t();
            L[7] += c4.tO();
            P = k(7);
            N !== P && (N = P,
                K += 100)
        }
            ;
        this.e8 = function () {
            I[2] && io !== L[2] && (L[2] = io,
                K++)
        }
            ;
        this.tP = function (P) {
            if (P === j7)
                return G = 0,
                    g(),
                    !1;
            if (-1 === P && 0 === M)
                return !1;
            var U = G
                , W = performance.now();
            if (0 <= P) {
                var X = W - 392 * P;
                M = 0 === P || X < M ? X : M
            }
            G = (W - M) / (392 * j7);
            G = 1 < G ? 1 : G;
            g();
            return G !== U
        }
            ;
        this.cG = function () {
            cH.drawImage(n, y, A)
        }
    }
    function k3() {
        var g, k, x, l, t, n, z, y, A, B;
        this.tU = -1;
        this.bp = function () {
            g = !1;
            l = 0;
            t = .61;
            n = .07;
            z = .09;
            B = y = 0;
            this.tU = -1
        }
            ;
        this.lq = function () {
            if (g) {
                x = q ? Math.floor(.69 * bq) : Math.floor(.5 * bq);
                x = qe(x, mU(r - 2 * m0, 10));
                x = qe(x, Math.floor(3.57 * mU(s - 2 * m0, 3)));
                l = Math.floor(.28 * x);
                A = document.createElement("canvas");
                A.width = x;
                A.height = l;
                var C = A.getContext("2d", {
                    alpha: !0
                })
                    , F = Math.floor(1 + l / 40);
                C.clearRect(0, 0, x, l);
                C.fillStyle = hq;
                C.fillRect(F, F, x - 2 * F, l - 2 * F);
                C.lineJoin = "bevel";
                C.lineWidth = 2 * F;
                C.strokeStyle = cK;
                C.strokeRect(F, F, x - 2 * F, l - 2 * F);
                C.imageSmoothingEnabled = !0;
                var E = bw.bz(k)
                    , H = E.height
                    , J = t * l / H;
                C.setTransform(J, 0, 0, J, Math.floor((x - J * E.width) / 2), Math.floor((l - J * H) / 2));
                C.drawImage(E, 0, 0);
                C.setTransform(1, 0, 0, 1, Math.floor(x - z * l - n * l - F), Math.floor(F + n * l));
                F = Math.floor(z * l);
                C.lineWidth = Math.floor(1 + l / 80);
                C.strokeStyle = cK;
                C.beginPath();
                C.moveTo(0, 0);
                C.lineTo(F, F);
                C.moveTo(0, F);
                C.lineTo(F, 0);
                C.stroke();
                C.setTransform(1, 0, 0, 1, 0, 0)
            }
        }
            ;
        this.show = function (C, F) {
            g || (k = C ? 1 : 2,
                g = !0,
                this.lq(),
                hm.li(),
                eN.qa(),
                B = c4.gY,
                -1 === this.tU && (this.tU = c4.dU()),
                y = F ? 1 : 0)
        }
            ;
        this.dF = function () {
            !g || 1 <= y || (y += 5E-4 * (c4.gY - B),
                y = 1 < y ? 1 : y,
                B = c4.gY,
                c4.c5 = !0)
        }
            ;
        this.c7 = function (C, F) {
            if (!g || 0 >= y)
                return !1;
            C -= Math.floor((gA - x) / 2);
            F -= cB - l - 2 * m0;
            if (0 > C || 0 > F || C > x || F > l)
                return !1;
            C > x - l / 3 && F < l / 3 && (g = !1,
                c4.c5 = !0);
            return !0
        }
            ;
        this.cG = function () {
            !g || 0 >= y || (cH.globalAlpha = y,
                cH.drawImage(A, Math.floor((gA - x) / 2), cB - l - 2 * m0),
                cH.globalAlpha = 1)
        }
    }
    function kX() {
        function g(n, z, y, A, B, C, F) {
            0 !== fB[n] && 0 !== bU[n] && (y = gA * ((d0[n] + cz[n] + 1) / 2 - y) / (B - y) - .5 * z,
                A = cB * ((d3[n] + d2[n] + 1) / 2 - A) / (C - A) - .5 * z,
                y > gA || A > cB || y < -z || A < -z || (cH.setTransform(g3 * F, 0, 0, g3 * F, y, A),
                    cH.drawImage(x[dA ? dW.dX[n] : n < cq ? 1 : 0], 0, 0)))
        }
        var k, x, l, t;
        this.bp = function () {
            var n;
            x = [];
            k = !1;
            if (fY)
                if (t = 0,
                    l = 63,
                    k = !0,
                    dA)
                    for (n = 0; n <= j5; n++)
                        x.push(this.tb(dW.tc[dW.id[n]], l));
                else
                    x.push(this.tb(dW.tc[0], l)),
                        x.push(this.tb(dW.tc[4], l))
        }
            ;
        this.dF = function () {
            k && 349 === ++t && (x = [],
                k = !1)
        }
            ;
        this.tb = function (n, z) {
            var y = document.createElement("canvas");
            y.width = z;
            y.height = z;
            var A = y.getContext("2d", {
                alpha: !0
            });
            A.clearRect(0, 0, z, z);
            var B = A.getImageData(0, 0, z, z), C = B.data, F, E, H = Math.floor(z / 2), J = 1 + H * H;
            for (F = z - 1; 0 <= F; F--)
                for (E = z - 1; 0 <= E; E--) {
                    var K = (F - H) * (F - H) + (E - H) * (E - H);
                    var D = 4 * (E * z + F);
                    C[D] = n[0];
                    C[D + 1] = n[1];
                    C[D + 2] = n[2];
                    K = Math.floor((J - K) * n[3] / J);
                    C[D + 3] = 0 < K ? K : 0
                }
            A.putImageData(B, 0, 0);
            return y
        }
            ;
        this.cG = function () {
            if (k) {
                var n;
                cH.imageSmoothingEnabled = !0;
                cH.globalAlpha = 1 - (160 < t ? (t - 160) / 190 : 0);
                var z = g8 / g3
                    , y = g9 / g3
                    , A = (gA + g8) / g3
                    , B = (cB + g9) / g3;
                var C = .25;
                var F = l * g3 * C;
                for (n = b8 - 1; n >= cq; n--)
                    g(n, F, z, y, A, B, C);
                C = .5;
                F = l * g3 * C;
                for (n = cq - 1; 0 <= n; n--)
                    g(n, F, z, y, A, B, C);
                cH.globalAlpha = 1;
                cH.imageSmoothingEnabled = 3 > g3;
                cH.setTransform(g3, 0, 0, g3, 0, 0)
            }
        }
    }
    function fH(g, k, x) {
        if (!(0 === fB[g] || 0 > x || 1E3 < x || 2 === fP[g])) {
            var l = as(x * ax[g], 1E3);
            10 === dr && k < cq && 2 !== fP[k] && (l = eB.tj(g, l));
            if (dA && k < b8 && !ch(g, k))
                da(g, k, l);
            else {
                k < b8 && 0 === fB[k] && (k = b8);
                var t = as(3 * ax[g], 256);
                l -= 500 <= x ? t : 0;
                if (!(l <= at) && ae.dD(g)) {
                    var n = b4[g].length;
                    k === b8 ? cX(g) : cS(g, k);
                    if (0 !== n || 0 !== b4[g].length)
                        dA && (d7[g] = 1),
                            g === aw && (b0.b1[0] += 500 <= x ? x - 12 : x,
                                b0.b1[1]++,
                                b0.b1[12] += t,
                                b0.b1[13] += l),
                            cP(n, g),
                            ae.cQ(g, l, k),
                            ax[g] -= l + t,
                            au.cR(g, !1)
                }
            }
        }
    }
    function eu(g, k, x, l) {
        10 === dr && g < cq && (l = eB.tj(g, l));
        if (l <= at || !ae.dD(g))
            return !1;
        k = eG.cR(g, k, x);
        if (0 === k)
            return !1;
        x = as(3 * ax[g], 128);
        l >= as(ax[g], 2) && (l -= x);
        g === aw && (b0.b1[12] += x);
        ae.tk(g, l, k);
        ax[g] -= l + x;
        return !0
    }
    function da(g, k, x) {
        if (!(!dA || 0 === fB[g] || 0 === fB[k] || 0 > x || x > ax[g] || g === k || ch(g, k) || g < cq && k < cq && 7 > dr && 1071 > c4.dU())) {
            var l = as(ax[g], 16);
            x -= x >= as(ax[g], 2) ? l : 0;
            var t = bU[k] * iz - ax[k];
            0 >= t || (x = x > t ? t : x,
                // if the donating player is us, show a message and add to statistics
                g === aw && (e5.n1(x, k), b0.b1[12] += l, b0.b1[16] += x),
                // if the receiving player is us, show message and add to statistics
                k === aw && (e5.n3(x, g), b0.b1[10] += x),
                // remove points (+tax) from donating player
                ax[g] -= x + l,
                // add points to receiving player
                ax[k] += x,
                // track donations
                ((!gE[g].startsWith("[Bot] ") || settings.showBotDonations) && donationsTracker.logDonation(g,k,x))
                //donationsTracker.logDonation(g,k,x)
            )
        }
    }
    function tl() {
        this.ix = this.h5 = this.tm = !1;
        this.tn = [0, 0, 0, 0];
        this.to = function () {
            this.ix = this.ix || this.h5;
            if (this.h5 || this.tm && this.ix) {
                var g = gu.tp[0]
                    , k = gu.tp[1]
                    , x = gu.tp[2]
                    , l = gu.tp[3];
                g = g < this.tn[0] ? this.tn[0] : g;
                k = k < this.tn[1] ? this.tn[1] : k;
                x = x > this.tn[2] ? this.tn[2] : x;
                l = l > this.tn[3] ? this.tn[3] : l;
                this.tm = this.h5 = !1;
                g === this.tn[0] && k === this.tn[1] && x === this.tn[2] && l === this.tn[3] ? this.iy() : x >= g && l >= k && jP.putImageData(jQ, 0, 0, g, k, x - g + 1, l - k + 1)
            }
        }
            ;
        this.iy = function () {
            this.ix && this.tn[2] >= this.tn[0] && this.tn[3] >= this.tn[1] && jP.putImageData(jQ, 0, 0, this.tn[0], this.tn[1], this.tn[2] - this.tn[0] + 1, this.tn[3] - this.tn[1] + 1);
            this.ix = !1
        }
            ;
        this.ir = function () {
            this.tn[2] >= this.tn[0] && this.tn[3] >= this.tn[1] && jP.putImageData(jQ, 0, 0, this.tn[0], this.tn[1], this.tn[2] - this.tn[0] + 1, this.tn[3] - this.tn[1] + 1);
            this.ix = !1
        }
            ;
        this.bp = function () {
            var g;
            this.ix = this.h5 = this.tm = !1;
            this.tn[0] = aZ;
            this.tn[1] = aa;
            this.tn[2] = this.tn[3] = 0;
            var k = 1;
            a: for (; k < aZ - 1; k++)
                for (g = aa - 2; 1 < g; g--)
                    if (1 === tq[b5.ex(k, g) + 2]) {
                        this.tn[0] = k;
                        break a
                    }
            g = 1;
            a: for (; g < aa - 1; g++)
                for (k = aZ - 2; 1 < k; k--)
                    if (1 === tq[b5.ex(k, g) + 2]) {
                        this.tn[1] = g;
                        break a
                    }
            k = aZ - 2;
            a: for (; 0 < k; k--)
                for (g = aa - 2; 1 < g; g--)
                    if (1 === tq[b5.ex(k, g) + 2]) {
                        this.tn[2] = k;
                        break a
                    }
            g = aa - 2;
            a: for (; 0 < g; g--)
                for (k = aZ - 2; 1 < k; k--)
                    if (1 === tq[b5.ex(k, g) + 2]) {
                        this.tn[3] = g;
                        break a
                    }
        }
    }
    function tr() {
        this.l7 = !1;
        this.m7 = null;
        this.ts = 0;
        this.cw = this.c1 = null;
        this.tt = .013;
        this.tu = .022;
        this.tv = .025;
        this.tx = 3;
        this.ty = 1.2;
        this.tz = .2;
        this.u0 = .235;
        this.u1 = .9;
        this.u2 = .08;
        var g = ["Top Players", "Top Clans", "Top Players So Far", "Top Clans So Far"], k, x = [-1E6, -1E6];
        this.position = [0, 0];
        this.u7 = [0, 0];
        this.bp = function () {
            this.m7 = [null, null];
            this.l7 = !1;
            this.ts = 0;
            this.lq()
        }
            ;
        this.cE = function (l) {
            this.ts = l;
            this.l7 = !0;
            this.bv();
            jX.ta();
            c4.c5 = !0
        }
            ;
        this.dF = function () {
            this.l7 && this.bv()
        }
            ;
        this.bv = function () {
            c4.gY - 12E4 >= x[this.ts] && (x[this.ts] = c4.gY,
                this.u7 = [0, 0],
                e9.rb(0, 1 + this.ts) && ii.u8(0, this.ts))
        }
            ;
        this.lq = function () {
            var l;
            this.c1 = this.u9(q ? .85 : .66, .75, r, s);
            this.cw = Math.floor(this.c1 / .75);
            for (l = 1; 0 <= l; l--)
                this.m7[l] && (this.m7[l][4] = bt + Math.floor(this.m7[l][5] * this.cw / 10) + bu);
            k = bt + Math.floor(.1 * this.cw) + bu
        }
            ;
        this.u9 = function (l, t, n, z) {
            return n < t * z ? Math.floor(l * n) : Math.floor(t * l * z)
        }
            ;
        this.uA = function (l, t, n, z, y, A, B) {
            this.position[l] = B;
            var C = t.length
                , F = bt + Math.floor(y * this.cw / 10) + bu;
            this.uF(t, F, A * this.c1);
            z = [[], C, -1, z, F, y, 10 * B];
            for (y = 0; y < C; y++)
                A = {
                    name: t[y].name,
                    value: t[y].i4 / n,
                    colorIndex: t[y].colorIndex
                },
                    z[0].push(A);
            this.m7[l] = z;
            this.uG(l);
            t = this.m7[l][0][0].name;
            1 === l && (t = "[" + t + "]");
            0 === B && uH.br(l, t);
            c4.c5 = !0
        }
            ;
        this.uG = function (l) {
            this.m7[l][0].sort(function (t, n) {
                return n.value - t.value
            })
        }
            ;
        this.uI = function (l, t, n, z) {
            if (this.m7 && this.m7[l]) {
                var y, A = !1, B = 383 / 384;
                if (0 === l) {
                    for (y = 0; y < this.m7[l][0].length; y++)
                        if (t === this.m7[l][0][y].name && n > .99 * this.m7[l][0][y].value && n < 1.01 * this.m7[l][0][y].value) {
                            this.m7[l][0][y].value = z;
                            A = !0;
                            break
                        }
                    A || this.m7[l][0].push({
                        name: t,
                        value: z
                    })
                } else {
                    for (y = 0; y < this.m7[l][0].length; y++)
                        if (t === this.m7[l][0][y].name) {
                            this.m7[l][0][y].value += 32 < this.m7[l][0][y].value ? (64 - this.m7[l][0][y].value) / 256 : .25;
                            this.m7[l][0][y].value *= 1 / B;
                            A = !0;
                            break
                        }
                    for (y = 0; y < this.m7[l][0].length; y++)
                        this.m7[l][0][y].value *= B;
                    A || this.m7[l][0].push({
                        name: t,
                        value: .25
                    })
                }
                this.uG(l)
            }
        }
            ;
        this.uF = function (l, t, n) {
            for (var z = l.length - 1; 0 <= z; z--)
                for (; 3 < l[z].name.length && c2.measureText(l[z].name, t) > n;)
                    l[z].name = l[z].name.substring(0, l[z].name.length - 4) + "..."
        }
            ;
        this.c7 = function (l, t) {
            if (!this.l7)
                return !1;
            l -= (gA - this.c1) / 2;
            t -= (cB - this.cw) / 2;
            if (0 > l || l > this.c1 || 0 > t || t > this.cw)
                return this.l7 = !1,
                    0 === aJ.pR() && jd.cE(0, !0),
                    c4.c5 = !0;
            if (t < .3 * this.cw)
                var n = 1;
            else
                t < .85 * this.cw ? (n = (0 === this.ts ? 14.1 : 3) * (t - .3 * this.cw) / (.55 * this.cw),
                    n = Math.floor(1 + n * n)) : n = 0 === this.ts ? 200 : 10;
            this.u7[this.ts] = l < this.c1 / 2 ? -n : n;
            if (x[this.ts] + 50 > c4.gY)
                return !0;
            x[this.ts] = c4.gY;
            e9.rb(0, 1 + this.ts) && ii.u8(0, this.ts);
            return !0
        }
            ;
        this.cG = function () {
            if (this.l7) {
                var l = this.tt * this.c1
                    , t = this.tx * l
                    , n = this.tu * this.c1
                    , z = this.ty * n
                    , y = this.tv * this.c1
                    , A = Math.floor(.25 * this.cw);
                cH.setTransform(1, 0, 0, 1, (gA - this.c1) / 2, (cB - this.cw) / 2);
                cH.fillStyle = 0 === this.ts ? oT : oO;
                cH.fillRect(0, 0, this.c1, A);
                cH.fillStyle = o8;
                cH.fillRect(0, A, this.c1, this.cw - A);
                cH.fillStyle = cK;
                cH.font = k;
                cH.textBaseline = cI;
                cH.textAlign = cJ;
                cH.fillText(g[this.ts], Math.floor(this.c1 / 2), Math.floor(.135 * this.cw));
                cH.font = bt + Math.floor(.025 * this.cw) + bu;
                cH.fillText(g[this.ts + 2], Math.floor(this.c1 / 2), Math.floor(.2125 * this.cw));
                cH.beginPath();
                cH.moveTo(this.c1 / 4, 0);
                cH.lineTo(this.c1 / 2 - l, 0);
                cH.lineTo(this.c1 / 2, -t);
                cH.lineTo(this.c1 / 2 + l, 0);
                cH.lineTo(this.c1 - n, 0);
                cH.lineTo(this.c1 + z, -z);
                cH.lineTo(this.c1, n);
                cH.lineTo(this.c1, this.cw / 2 - l);
                cH.lineTo(this.c1 + t, this.cw / 2);
                cH.lineTo(this.c1, this.cw / 2 + l);
                cH.lineTo(this.c1, this.cw - n);
                cH.lineTo(this.c1 + z, this.cw + z);
                cH.lineTo(this.c1 - n, this.cw);
                cH.lineTo(this.c1 / 2 + l, this.cw);
                cH.lineTo(this.c1 / 2, this.cw + t);
                cH.lineTo(this.c1 / 2 - l, this.cw);
                cH.lineTo(n, this.cw);
                cH.lineTo(-z, this.cw + z);
                cH.lineTo(0, this.cw - n);
                cH.lineTo(0, this.cw / 2 + l);
                cH.lineTo(-t, this.cw / 2);
                cH.lineTo(0, this.cw / 2 - l);
                cH.lineTo(0, n);
                cH.lineTo(-z, -z);
                cH.lineTo(n, 0);
                cH.lineTo(this.c1 / 4, 0);
                cH.lineTo(this.c1 / 4, y);
                cH.lineTo(y, y);
                cH.lineTo(y, this.cw - y);
                cH.lineTo(this.c1 - y, this.cw - y);
                cH.lineTo(this.c1 - y, y);
                cH.lineTo(this.c1 / 4, y);
                cH.fill();
                this.m7[this.ts] && this.uO(A);
                this.uP(A);
                cH.setTransform(1, 0, 0, 1, 0, 0)
            }
        }
            ;
        this.uP = function (l) {
            var t = mU(2, Math.floor(.06 * this.c1));
            t -= t % 2;
            var n = mU(2, Math.floor(.01 * this.c1));
            n -= n % 2;
            l = Math.floor(.82 * l);
            cH.fillRect(t, l, t, n);
            cH.fillRect(this.c1 - t - t, l, t, n);
            cH.fillRect(Math.floor(this.c1 - t - t + (t - n) / 2), Math.floor(l - (t - n) / 2), n, t)
        }
            ;
        this.uO = function (l) {
            cH.font = this.m7[this.ts][4];
            for (var t, n = this.m7[this.ts][1] - 1; 0 <= n; n--)
                cH.textAlign = oc,
                    t = Math.floor(this.u2 * this.cw + l + n * ((1 - 2 * this.u2) * this.cw - l) / 9),
                    cH.fillText(this.m7[this.ts][0][n].value.toFixed(this.m7[this.ts][3]), Math.floor(this.u1 * this.c1), t),
                    cH.fillText(n + 1 + this.m7[this.ts][6] + ".", Math.floor(this.tz * this.c1), t),
                    cH.textAlign = mZ,
                    cH.fillText(this.m7[this.ts][0][n].name, Math.floor(this.u0 * this.c1), t)
        }
    }
    function uQ() {
        var g, k, x, l, t, n, z, y, A, B, C, F, E;
        this.l7 = !1;
        this.bp = function (H, J) {
            if (13 <= d)
                J ? F = H : F === H && e.saveString(200, H);
            else if (J) {
                (cC.m7[1].iY.l7 || cC.m7[2].iY.l7) && cC.ua();
                jX.ta();
                F = H;
                A = Math.floor((q ? r > s ? .6 : .45 : .4) * pB);
                x = A / bw.bz(17).width;
                t = Math.floor(x * bw.bz(17).height);
                n = Math.floor(.4 * t);
                z = Math.floor(.6 * t);
                y = Math.floor(2.5 * z);
                l = t + n + 3 * z;
                var K = bt + Math.floor(n / pF) + bu;
                B = Math.floor(pF * c2.measureText(F, K));
                C = (B > A ? B : A) + 2 * y;
                g = Math.floor((gA - C) / 2);
                k = Math.floor((cB - l) / 2);
                E = document.createElement("a");
                E.appendChild(document.createTextNode(F));
                E.title = F;
                E.target = "blank";
                E.href = F;
                E.style.font = K;
                E.style.textAlign = "center";
                E.style.color = cK;
                E.style.position = "absolute";
                E.style.padding = "0px";
                E.style.margin = "0px";
                E.style.top = Math.floor((k + 2 * z + t) / pF) + "px";
                E.style.left = Math.floor((g + (C - B) / 2) / pF) + "px";
                document.body.appendChild(E);
                this.l7 = !0;
                c4.c5 = !0
            }
        }
            ;
        this.lA = function () {
            if (!this.l7)
                return !1;
            document.body.removeChild(E);
            this.l7 = !1;
            return !0
        }
            ;
        this.c7 = function (H, J) {
            if (!this.l7)
                return !1;
            if (H < g || J < k || H > g + C || J > k + l)
                c4.c5 = !0,
                    this.l7 = !1,
                    document.body.removeChild(E),
                    0 === aJ.pR() && jd.cE(0, !0);
            return !0
        }
            ;
        this.cG = function () {
            this.l7 && (cH.imageSmoothingEnabled = !0,
                cH.setTransform(1, 0, 0, 1, g, k),
                cH.fillStyle = hq,
                cH.fillRect(0, 0, C, l),
                cH.lineWidth = op,
                cH.strokeStyle = cK,
                cH.strokeRect(0, 0, C, l),
                cH.setTransform(x, 0, 0, x, g + (C - A) / 2, k + z),
                cH.drawImage(bw.bz(17), 0, 0),
                cH.setTransform(1, 0, 0, 1, 0, 0))
        }
    }
    function ub() {
        var g = 0
            , k = [0, 0, 0, 0, 0]
            , x = [0, 0, 0, 0, 0]
            , l = [1, 1, 1, 1, 1]
            , t = [!0, !0, !0, !1, !0];
        this.uc = [!0, !0, !0, !1, !0];
        var n = null, z;
        this.ud = function (y, A) {
            n = y;
            t = A;
            z = [og, oh, oi, oj, ok];
            this.bp()
        }
            ;
        this.bp = function () {
            if (bw.bx()) {
                var y = Math.floor((q ? .261 : .195) * bq);
                var A = Math.floor(.9 * y)
                    , B = Math.floor(.17 * A);
                g = q ? 2 * m0 : m0;
                l[0] = y / n[0].width;
                l[1] = A / n[1].width;
                l[2] = B / n[2].height;
                l[3] = B / n[3].height;
                l[4] = B / n[4].height;
                l[3] *= 1.07;
                k[0] = g;
                k[1] = g;
                k[2] = g;
                k[3] = g;
                k[4] = Math.floor(2 * g + l[3] * n[3].width);
                x[0] = g;
                x[1] = x[0] + g + l[0] * n[0].height;
                x[2] = x[1] + g + l[1] * n[1].height;
                x[3] = x[2] + g + l[2] * n[2].height;
                x[4] = x[3];
                if (!t[0])
                    for (y = 0; 5 > y; y++)
                        x[y] -= l[0] * n[0].height + g;
                if (!t[1])
                    for (y = 2; 5 > y; y++)
                        x[y] -= l[1] * n[1].height + g
            }
        }
            ;
        this.l7 = function () {
            return !(7 === aJ.pR() && q)
        }
            ;
        this.c7 = function (y, A, B) {
            if (!n || !this.l7())
                return !1;
            var C;
            for (C = t.length - 1; 0 <= C; C--)
                if (t[C] && this.uc[C] && y > k[C] && A > x[C] && y < k[C] + l[C] * n[C].width && A < x[C] + l[C] * n[C].height)
                    return nN.bp(z[C], B),
                        !0;
            return !1
        }
            ;
        this.cG = function () {
            if (n && this.l7()) {
                cH.imageSmoothingEnabled = !0;
                var y;
                for (y = 0; 5 > y; y++)
                    t[y] && this.uc[y] && (cH.setTransform(l[y], 0, 0, l[y], k[y], x[y]),
                        cH.drawImage(n[y], 0, 0));
                cH.setTransform(1, 0, 0, 1, 0, 0)
            }
        }
    }
    function k4() {
        function g(t) {
            var n = ja.uh[t]
                , z = n.fF
                , y = n.fG
                , A = n.c1
                , B = n.cw;
            cH.fillStyle = n.uk;
            cH.fillRect(z, y, A, B);
            t === k && (cH.fillStyle = l,
                cH.fillRect(z, y, A, B));
            cH.lineWidth = 3;
            cH.strokeStyle = x;
            cH.strokeRect(z, y, A, B);
            t = n.fF;
            z = n.fG;
            y = n.c1;
            A = n.cw;
            cH.textAlign = cJ;
            cH.textBaseline = cI;
            cH.font = n.font;
            cH.fillStyle = x;
            cH.fillText(n.nR, Math.floor(t + y / 2), Math.floor(z + A / 2 + .1 * n.by))
        }
        var k, x, l;
        this.f2 = this.fG = this.cw = this.c1 = 0;
        this.bp = function () {
            k = -1;
            x = cK;
            l = "rgba(255,255,255,0.16)";
            this.uh = Array(7);
            this.cw = Math.floor((q ? .123 : .093) * bq);
            this.c1 = Math.floor((q ? 3.96 : 4.2) * this.cw);
            this.f2 = Math.floor(.025 * this.c1);
            var t = Math.floor(.26 * this.cw)
                , n = bt + t + bu;
            this.uh[0] = {
                fF: 0,
                fG: 0,
                c1: Math.floor(.6 * this.c1 - this.f2 / 2),
                cw: this.cw,
                nR: "Multiplayer",
                font: n,
                uk: "rgba(22,88,22,0.8)",
                by: t
            };
            t = Math.floor(.18 * this.cw);
            n = bt + t + bu;
            this.uh[1] = {
                fF: 0,
                fG: 0,
                c1: this.c1 - this.uh[0].c1 - this.f2,
                cw: this.cw,
                nR: "Singleplayer",
                font: n,
                uk: "rgba(22,88,88,0.8)",
                by: t
            };
            this.uh[2] = {
                fF: 0,
                fG: 0,
                c1: this.c1,
                cw: Math.floor(.3 * this.cw),
                nR: "",
                font: this.uh[1].font,
                uk: "rgba(100,0,0,0.8)",
                by: this.uh[1].by
            };
            this.uh[3] = {
                fF: 0,
                fG: 0,
                c1: this.c1,
                cw: this.cw,
                nR: "Back",
                font: this.uh[0].font,
                uk: "rgba(0,0,0,0.8)",
                by: this.uh[0].by
            };
            this.uh[4] = {
                fF: 0,
                fG: 0,
                c1: this.c1,
                cw: Math.floor(.3 * this.cw),
                nR: "The game was updated!",
                font: this.uh[1].font,
                uk: "rgba(100,0,0,0.8)",
                by: this.uh[1].by
            };
            this.uh[5] = {
                fF: 0,
                fG: 0,
                c1: this.uh[0].c1,
                cw: Math.floor(.8 * this.cw),
                nR: "Reload",
                font: this.uh[0].font,
                uk: "rgba(0,100,0,0.8)",
                by: this.uh[0].by
            };
            this.uh[6] = {
                fF: 0,
                fG: 0,
                c1: this.uh[1].c1,
                cw: this.uh[5].cw,
                nR: "Back",
                font: this.uh[0].font,
                uk: "rgba(0,0,0,0.8)",
                by: this.uh[0].by
            };
            this.rj()
        }
            ;
        this.rj = function () {
            this.fG = Math.floor(.54 * cB);
            this.uh[0].fF = Math.floor(.5 * gA - .5 * this.c1);
            this.uh[1].fF = this.uh[0].fF + this.uh[0].c1 + this.f2;
            this.uh[2].fF = this.uh[3].fF = this.uh[0].fF;
            this.uh[4].fF = this.uh[5].fF = this.uh[0].fF;
            this.uh[6].fF = this.uh[1].fF;
            this.uh[0].fG = Math.floor(.54 * cB);
            this.uh[1].fG = this.uh[0].fG;
            this.uh[2].fG = Math.floor((cB - this.uh[2].cw - this.uh[3].cw - this.f2) / 2);
            this.uh[3].fG = this.uh[2].fG + this.uh[2].cw + this.f2;
            this.uh[4].fG = Math.floor((cB - this.uh[4].cw - this.uh[5].cw - this.f2) / 2);
            this.uh[5].fG = this.uh[6].fG = this.uh[4].fG + this.uh[4].cw + this.f2
        }
            ;
        this.ul = function () {
            g(0);
            g(1)
        }
            ;
        this.un = function () {
            g(2);
            g(3)
        }
            ;
        this.uo = function () {
            g(4);
            g(5);
            g(6)
        }
            ;
        this.lh = function (t, n, z) {
            var y = -1;
            0 === aJ.pR() ? y = this.pI(t, n, 0, 2) : 3 === aJ.pR() ? y = this.pI(t, n, 3, 1) : 5 === aJ.pR() && (y = this.pI(t, n, 5, 2));
            k !== y && (k = y,
                z && (c4.c5 = !0));
            return -1 !== y ? (jZ.pN(),
                !0) : !1
        }
            ;
        this.pI = function (t, n, z, y) {
            for (var A = z; A < z + y; A++)
                if (t >= this.uh[A].fF && n >= this.uh[A].fG && t <= this.uh[A].fF + this.uh[A].c1 && n <= this.uh[A].fG + this.uh[A].cw)
                    return A;
            return -1
        }
    }
    function ur() {
        function g(k) {
            return 0 > k ? 0 : 255 < k ? 255 : Math.floor(k)
        }
        this.cw = this.c1 = 0;
        this.l7 = !1;
        this.uv = this.uu = this.ut = this.nl = this.f2 = this.us = 0;
        this.colors = null;
        this.bp = function () {
            r < 2 * s ? this.c1 = Math.floor((q ? .94 : .4) * r) : (this.cw = Math.floor((q ? .88 : .4) * s),
                this.c1 = Math.floor(2 * this.cw));
            this.cw = this.c1 / 2;
            this.f2 = this.cw / 16;
            this.l7 = !0;
            this.us = 0;
            this.ut = (this.cw - 3 * this.f2) / 2;
            this.uu = this.c1 - 3 * this.f2 - this.ut;
            this.uv = (this.cw - 4 * this.f2) / 3
        }
            ;
        this.uw = function () {
            this.colors = [[0, 0, 0], [0, 0, 0]];
            var k = v().split("");
            if (6 !== k.length)
                for (k = 2; 0 <= k; k--)
                    this.colors[0][k] = g(256 * Math.random());
            else
                for (var x = 2; 0 <= x; x--)
                    this.colors[0][x] = g(4 * (10 * parseInt(k[2 * x]) + parseInt(k[2 * x + 1])));
            this.uy()
        }
            ;
        this.uz = function () {
            return [as(this.colors[0][0], 4), as(this.colors[0][1], 4), as(this.colors[0][2], 4)]
        }
            ;
        this.c7 = function (k, x) {
            this.us = 0;
            var l = (cB - this.cw) / 2;
            k -= (gA - this.c1) / 2;
            x -= l;
            if (0 > k || 0 > x || k >= this.c1 - 1 || x >= this.cw - 1)
                return this.l7 = !1,
                    0 === aJ.pR() && jd.cE(0, !0),
                    c4.c5 = !0,
                    !1;
            if (k < this.f2 || x < this.f2 || k >= this.c1 - this.f2 || x >= this.cw - this.f2)
                return !0;
            if (k < this.f2 + this.ut)
                return x < this.f2 + this.ut && 0 !== this.nl && (this.nl = 0,
                    c4.c5 = !0),
                    !0;
            if (k < 2 * this.f2 + this.ut)
                return !0;
            k -= 2 * this.f2 + this.ut;
            if (x < this.f2 + this.uv)
                return this.us = 1,
                    this.colors[this.nl][0] = g(256 * k / this.uu),
                    c4.c5 = !0;
            if (x < 2 * this.f2 + this.uv)
                return !0;
            if (x < 2 * this.f2 + 2 * this.uv)
                return this.us = 2,
                    this.colors[this.nl][1] = g(256 * k / this.uu),
                    c4.c5 = !0;
            x >= 3 * this.f2 + 2 * this.uv && (this.us = 3,
                this.colors[this.nl][2] = g(256 * k / this.uu),
                c4.c5 = !0);
            return !0
        }
            ;
        this.uy = function () {
            for (var k = 2; 0 <= k; k--)
                this.colors[0][k] = g(this.colors[0][k])
        }
            ;
        this.v0 = function () {
            for (var k = "", x, l = 0; 3 > l; l++)
                x = as(this.colors[0][l], 4),
                    10 > x && (k += "0"),
                    k += x.toString();
            a8(k)
        }
            ;
        this.lh = function (k) {
            0 !== this.us && (k -= 2 * this.f2 + this.ut + (gA - this.c1) / 2,
                this.colors[this.nl][this.us - 1] = g(256 * k / this.uu),
                c4.c5 = !0)
        }
            ;
        this.v1 = function () {
            0 < this.us && (this.us = 0,
                this.uy(),
                this.v0(),
                c4.c5 = !0)
        }
            ;
        this.cG = function () {
            cH.setTransform(1, 0, 0, 1, (gA - this.c1) / 2, (cB - this.cw) / 2);
            cH.fillStyle = hq;
            cH.fillRect(0, 0, this.c1, this.cw);
            cH.lineWidth = op;
            cH.strokeStyle = cK;
            cH.strokeRect(-1, -1, this.c1 + 2, this.cw + 2);
            cH.font = bt + Math.floor(.8 * this.ut) + bu;
            cH.textBaseline = cI;
            cH.textAlign = cJ;
            this.v2(0);
            cH.lineWidth = op;
            this.v3(0);
            this.v3(1);
            this.v3(2);
            cH.setTransform(1, 0, 0, 1, 0, 0)
        }
            ;
        this.v2 = function (k) {
            cH.fillStyle = "rgb(" + this.colors[k][0] + "," + this.colors[k][1] + "," + this.colors[k][2] + ")";
            cH.fillRect(this.f2, this.f2, this.ut, 2 * this.ut + this.f2);
            cH.lineWidth = 2 + op;
            cH.strokeStyle = cK;
            cH.strokeRect(this.f2, this.f2, this.ut, 2 * this.ut + this.f2)
        }
            ;
        this.v3 = function (k) {
            cH.fillStyle = "rgb(" + (0 === k ? 200 : 2 === k ? 50 : 0) + "," + (1 === k ? 200 : 2 === k ? 50 : 0) + "," + (2 === k ? 255 : 0) + ")";
            cH.fillRect(2 * this.f2 + this.ut, this.f2 + k * (this.f2 + this.uv), Math.floor(this.colors[this.nl][k] * this.uu / 255), this.uv);
            cH.strokeStyle = cK;
            cH.strokeRect(2 * this.f2 + this.ut, this.f2 + k * (this.f2 + this.uv), this.uu, this.uv)
        }
    }
    function k5() {
        function g() {
            return 0 === D ? 0 : 1 + (D - 1 + L) % (e9.vF - 1)
        }
        function k() {
            D++;
            K = c4.gY;
            e9.rb(g(), 4) && (I = !0,
                ii.vG(g()))
        }
        function x() {
            0 === D ? jc.vL(3249) : (D === e9.vF - 1 && (D = -1),
                k())
        }
        function l(N, G, M) {
            var Q = Math.floor((gA - y) / 2) + C
                , R = Q + Math.floor(M * (y - 2 * C));
            cH.lineWidth = G;
            cH.beginPath();
            cH.moveTo(Q, N);
            cH.lineTo(R, N);
            cH.lineTo(Math.floor(Q - C + M * y), N + z);
            cH.lineTo(Q - C, N + z);
            cH.closePath()
        }
        var t, n, z, y, A, B, C, F, E, H, J, K, D, L = 0, I;
        this.bp = function () {
            aJ.setState(6);
            t = 0;
            n = 1;
            F = "rgba(0,220,120,0.4)";
            E = "rgba(0,0,0,0.8)";
            this.lq();
            c4.c5 = !0;
            D = 0;
            I = !1;
            k()
        }
            ;
        this.lq = function () {
            y = Math.floor((q ? .5 : .25) * bq);
            A = y + 12;
            z = Math.floor(.125 * y);
            C = 3 * z;
            B = Math.floor(.225 * y);
            J = Math.floor(.3 * z);
            H = oe + J + bu
        }
            ;
        this.vD = function (N) {
            L = N
        }
            ;
        this.vH = function (N) {
            N === g() && (I = !1,
                x())
        }
            ;
        this.rd = function (N) {
            6 !== aJ.pR() || I || (K = c4.gY,
                I = !0,
                ii.vG(N))
        }
            ;
        this.c7 = function (N, G) {
            var M = Math.floor((gA - A) / 2)
                , Q = Math.floor(.5 * (cB - cA - z - B)) + z + cA;
            return N > M && N < M + A && G > Q && G < Q + B ? (this.vM(),
                ja.lh(N, G, !1),
                !0) : !1
        }
            ;
        this.vM = function () {
            e9.vN(3260);
            jX.bp();
            c4.c5 = !0
        }
            ;
        this.dF = function () {
            6 === aJ.pR() && (I ? c4.gY > K + 2E4 && jc.vL(3250) : c4.gY > K + 2E4 && x(),
                t += .07 * n * (16 > t ? 5 + t : 84 < t ? 105 - t : 17),
                100 < t ? (t = 100,
                    n = -1) : 0 > t && (t = 0,
                        n = 1),
                F = "rgba(0," + Math.floor(190 - 1.9 * t) + "," + Math.floor(120 - 1.2 * t) + "," + (.4 + .004 * t) + ")",
                E = "rgba(0," + Math.floor(1.9 * t) + "," + Math.floor(1.2 * t) + "," + (.8 - .004 * t) + ")",
                c4.c5 = !0)
        }
            ;
        this.cG = function () {
            var N = Math.floor((gA - A) / 2)
                , G = Math.floor(.5 * (cB - cA - z - B))
                , M = t / 100;
            cH.fillStyle = E;
            l(G, 3, 1);
            cH.fill();
            cH.fillStyle = F;
            l(G, 3, M);
            cH.fill();
            cH.strokeStyle = cK;
            l(G, 3, 1);
            cH.stroke();
            cH.textAlign = cJ;
            cH.textBaseline = cI;
            cH.font = H;
            cH.fillStyle = cK;
            cH.fillText("Loading", Math.floor(.5 * gA), Math.floor(G + .58 * z));
            G = G + z + cA;
            M = A;
            var Q = B;
            cH.fillStyle = o7;
            cH.fillRect(N, G, M, Q);
            cH.lineWidth = 3;
            cH.strokeStyle = cK;
            cH.strokeRect(N, G, M, Q);
            var R = Math.floor(.3 * Q);
            cH.textAlign = cJ;
            cH.textBaseline = cI;
            cH.font = oe + R + bu;
            cH.fillStyle = cK;
            cH.fillText("Back", Math.floor(N + M / 2), Math.floor(G + Q / 2 + .1 * R))
        }
    }
    function k6() {
        var g;
        this.bp = function () {
            ja.bp();
            jd.bp();
            g = 0;
            vV.bp();
            jX.bp();
            jp.bp()
        }
            ;
        this.setState = function (k) {
            g = k
        }
            ;
        this.pR = function () {
            return g
        }
            ;
        this.vX = function () {
            this.setState(8);
            jk.ta();
            cC.ua();
            cD.l7 = !1;
            nN.c7(-1E3, -1E3)
        }
            ;
        this.ua = function (k) {
            if (!vY)
                return !1;
            if (!(400 > c4.gY)) {
                if ("Enter" === k.key || "Escape" === k.key) {
                    if (this.vZ())
                        return 0 === g && jd.cE(0, !0),
                            !0;
                    if ("Enter" === k.key) {
                        if (0 === g)
                            return jX.va(),
                                !0;
                        if (7 === g)
                            return !0
                    }
                }
                return !1
            }
        }
            ;
        this.vZ = function () {
            return nN.lA() || cC.ua() ? !0 : cD.l7 ? (cD.l7 = !1,
                !0) : !1
        }
            ;
        this.aK = function () {
            c4.c5 = !0;
            8 === g ? ge ? ge = !ge : hn.l7 ? hn.lv() : fm.lv() : 7 === g ? jk.vb() : 6 === g ? jb.vM() : 3 === g ? jc.vc(0, 0) : 2 === g ? du.vc() : 0 === g && (this.vZ() || a9(11))
        }
            ;
        this.c7 = function (k, x) {
            if (!vV.c7(k, x) && vY && !(nN.c7(k, x) || 6 === g && jb.c7(k, x) || 2 === g && du.c7(k, x) || jm.c7(k, x) || cD.c7(k, x) || vd.c7(k, x, !0) || cC.c7(k, x, !0))) {
                jZ.c7(k, x);
                if (0 === g)
                    jX.c7(k, x);
                else if (3 === g)
                    jc.c7(k, x);
                else if (5 === g)
                    je.c7(k, x);
                else if (7 === g && jk.c7(k, x))
                    return;
                uH.c7(k, x)
            }
        }
            ;
        this.lh = function (k, x) {
            jm.lh(k, x);
            if (!jZ.rZ) {
                if (vV.lh(k, x)) {
                    jZ.pN();
                    return
                }
                if (2 === g && du.lh(k, x)) {
                    jZ.pN();
                    return
                }
                if (0 <= cC.pI(k, x)) {
                    jZ.pN();
                    return
                }
                if (cC.lh(k, x)) {
                    jZ.pN();
                    return
                }
                if (ja.lh(k, x, !0))
                    return
            }
            jZ.lh(k, x)
        }
            ;
        this.click = function (k, x) {
            jZ.pO();
            cC.v1() || vd.c7(k, x, !1) || cC.c7(k, x, !1)
        }
            ;
        this.pU = function (k, x, l) {
            cC.m7[1].iY.l7 || 0 === g && jZ.pU(k, l)
        }
            ;
        this.ve = function () {
            ja.rj();
            cC.rj();
            0 === g ? (jd.rj(0),
                jZ.rj()) : 7 === g && jk.lq();
            c4.c5 = !0
        }
            ;
        this.cG = function () {
            if (8 !== g && 10 !== g) {
                cH.imageSmoothingEnabled = !0;
                this.hj();
                jZ.cG();
                jY.cG();
                // draw background territorial.io logo
                var k = Math.floor(.3 * cB)
                    , x = bw.l4("territorial.io")
                    , l = 1.75 * cB / x.width;
                l = l * x.width < .98 * gA ? .98 * gA / x.width : l;
                cH.globalAlpha = .15;
                var t = Math.floor(.5 * (gA - l * x.width));
                t = Math.floor(t / l);
                k = Math.floor(k - .5 * x.height * l);
                k = Math.floor(k / l);
                cH.setTransform(l, 0, 0, l, t, k);
                cH.drawImage(x, t, k);
                cH.setTransform(1, 0, 0, 1, 0, 0);
                cH.globalAlpha = 1;
                vd.cG();
                uH.cG();
                cC.cG();
                jm.cG();
                0 === g ? jX.cG() : 2 === g ? du.cG() : 3 === g ? jc.cG() : 5 === g ? je.cG() : 6 === g ? jb.cG() : 7 === g && jk.cG();
                cC.vg();
                vV.cG();
                cD.cG();
                nN.cG()
            }
        }
            ;
        this.hj = function () {
            if (vY) {
                var k = r / aZ
                    , x = s / aa;
                k = k > x ? k : x;
                cH.setTransform(k, 0, 0, k, Math.floor((r - k * aZ) / 2), Math.floor((s - k * aa) / 2));
                cH.drawImage(hk, 0, 0);
                cH.setTransform(1, 0, 0, 1, 0, 0);
                cH.fillStyle = o7
            } else
                cH.fillStyle = gD;
            cH.fillRect(0, 0, r, s)
        }
    }
    function vj() {
        this.cw = this.c1 = 0;
        this.l7 = !1;
        this.na = 10;
        this.bB = .12;
        this.vl = this.vk = this.us = !1;
        this.bp = function () {
            this.c1 = r < 1 * s ? Math.floor((q ? .94 : .6) * r) : Math.floor((q ? .94 : .6) * s);
            this.c1 -= this.c1 % this.na;
            this.cw = 1 * this.c1;
            this.l7 = !0;
            this.us = !1
        }
            ;
        this.c7 = function (g, k, x) {
            var l = (cB - this.cw) / 2;
            g -= (gA - this.c1) / 2;
            k -= l;
            if (0 > g || 0 > k || g >= this.c1 - 1 || k >= this.cw - 1)
                return 0 === x && (this.l7 = !1,
                    0 === aJ.pR() && jd.cE(0, !0),
                    c4.c5 = !0),
                    !1;
            l = Math.floor(this.c1 / this.na);
            g = as(g, l) + this.na * as(k, l);
            g = 0 > g ? 0 : g >= a5.ne ? a5.ne - 1 : g;
            if (0 === x || 1 === x && !a5.a7[g] || 2 === x && a5.a7[g])
                this.vk = !a5.a7[g],
                    this.vl = this.us = !0,
                    a5.a7[g] = !a5.a7[g],
                    a5.nw(),
                    c4.c5 = !0;
            return !0
        }
            ;
        this.lh = function (g, k) {
            this.us && this.c7(g, k, this.vk ? 1 : 2)
        }
            ;
        this.v1 = function () {
            this.vl && (a3(),
                this.vl = !1);
            this.us = this.vl = !1
        }
            ;
        this.cG = function () {
            cH.imageSmoothingEnabled = !0;
            var g = (gA - this.c1) / 2
                , k = (cB - this.cw) / 2;
            cH.setTransform(1, 0, 0, 1, g, k);
            cH.fillStyle = hq;
            cH.fillRect(0, 0, this.c1, this.cw);
            cH.lineWidth = op;
            cH.strokeStyle = cK;
            cH.strokeRect(-1, -1, this.c1 + 2, this.cw + 2);
            for (var x = Math.floor(this.c1 / this.na), l = (x - 2 * this.bB * x) / a5.c1, t = a5.ne - 1; 0 <= t; t--)
                cH.setTransform(1, 0, 0, 1, Math.floor(g + t % this.na * x), Math.floor(k + as(t, this.na) * x)),
                    a5.a7[t] && (cH.fillStyle = oF,
                        cH.fillRect(0, 0, x, x)),
                    cH.setTransform(l, 0, 0, l, Math.floor(g + t % this.na * x + this.bB * x), Math.floor(k + as(t, this.na) * x + this.bB * x)),
                    cH.drawImage(a5.l0[t], 0, 0);
            cH.setTransform(1, 0, 0, 1, 0, 0);
            cH.imageSmoothingEnabled = !1
        }
    }
    function k7() {
        function g() {
            var n = aJ.pR();
            0 === n ? jX.ta() : 6 === n ? e9.vN(x) : 7 === n ? (jk.ta(),
                e9.close(e9.vo, 3240)) : 8 === n && (jU(),
                    jX.ta());
            aJ.setState(3);
            ja.rj();
            ja.uh[2].nR = k(x);
            c4.c5 = !0
        }
        function k(n) {
            var z;
            for (z = l.length - 1; 0 <= z; z--)
                if (n === l[z].code)
                    return l[z].l;
            return t + n
        }
        var x, l, t;
        this.jM = function () {
            l = [];
            l.push({
                l: "No Server Response",
                code: 1006
            });
            l.push({
                l: "Account successfully saved!",
                code: 3231
            });
            l.push({
                l: "Account Error",
                code: 3232
            });
            l.push({
                l: "No Servers Found",
                code: 3249
            });
            l.push({
                l: "Thanks for the vote.",
                code: 3252
            });
            l.push({
                l: "Please accept Cookies",
                code: 3265
            });
            l.push({
                l: "Invalid Password Format",
                code: 3266
            });
            l.push({
                l: "Lobby Timeout",
                code: 4207
            });
            l.push({
                l: "Invalid Username",
                code: 4214
            });
            l.push({
                l: "User already exists.",
                code: 4224
            });
            l.push({
                l: "No Client Response Error",
                code: 4229
            });
            t = "Error "
        }
            ;
        this.bp = function (n, z) {
            x = z;
            var y = aJ.pR();
            if (6 === y) {
                if (4211 === z) {
                    je.bp(0, 0);
                    return
                }
                if (4214 !== z) {
                    jb.vH(n);
                    return
                }
            } else if (7 === y) {
                if (n !== e9.vo)
                    return
            } else {
                8 === y && (n !== e9.jV || dt || e5.mf(k(z)));
                return
            }
            g()
        }
            ;
        this.vL = function (n) {
            x = n;
            8 === aJ.pR() ? e5.mf(k(n)) : g()
        }
            ;
        this.lq = function () {
            ja.uh[2].nR = k(x)
        }
            ;
        this.c7 = function (n, z) {
            3 === ja.pI(n, z, 3, 1) && this.vc(n, z)
        }
            ;
        this.vc = function (n, z) {
            jX.bp();
            ja.lh(n, z, !1);
            c4.c5 = !0
        }
            ;
        this.cG = function () {
            ja.un()
        }
    }
    function k8() {
        function g() {
            k.push({
                input: document.createElement("INPUT"),
                l7: !1,
                color: x
            });
            var t = k.length - 1;
            k[t].input.setAttribute("type", "text");
            k[t].input.setAttribute("id", "userna");
            k[t].input.value = "";
            k[t].input.style.textAlign = 0 === t ? "center" : "left";
            k[t].input.style.backgroundColor = x;
            k[t].input.style.border = "3px solid " + cK;
            k[t].input.style.color = cK;
            k[t].input.style.position = "absolute";
            k[t].input.readOnly = 3 === t;
            k[t].input.addEventListener("input", function () {
                0 === t && jX.vv()
            })
        }
        var k, x, l;
        this.bp = function () {
            x = "rgba(0,0,0,0.6)";
            l = oM;
            void 0 !== k && this.cE(0, !1);
            k = [];
            g();
            this.lq()
        }
            ;
        this.lq = function () {
            var t = Math.floor(.22 * ja.cw / pF);
            k[0].input.style.font = bt + t + bu;
            k[0].input.style.padding = Math.floor(.3 * t) + "px 5px";
            k[0].input.style.width = Math.floor(ja.c1 / pF - 13) + "px"
        }
            ;
        this.bz = function (t) {
            return k[t]
        }
            ;
        this.rj = function (t) {
            k[t].input.style.left = Math.floor((gA / pF - (ja.c1 / pF - 3) - 7) / 2) + "px";
            0 === t && (k[t].input.style.bottom = Math.floor((cB - ja.fG + ja.f2) / pF) + "px")
        }
            ;
        this.cE = function (t, n) {
            k[t].l7 !== n && ((k[t].l7 = n) ? document.body.appendChild(k[t].input) : document.body.removeChild(k[t].input))
        }
            ;
        this.vw = function (t, n) {
            n && k[t].color === x || !n && k[t].color === l || (k[t].color = n ? x : l,
                k[t].input.style.backgroundColor = k[t].color)
        }
    }
    function kb() {
        this.vz = this.vy = 0;
        var g, k, x, l;
        this.bp = function (t) {
            if (7 === aJ.pR()) {
                g = t;
                k = 0;
                x = c4.gY + 4500;
                l = ji.w4(g) ? 2 : 0;
                aJ.setState(10);
                cH.imageSmoothingEnabled = !0;
                aJ.hj();
                t = bw.l4("loading");
                var n = (q ? .396 : .25) * bq / t.width;
                cH.setTransform(n, 0, 0, n, Math.floor((r - n * t.width) / 2), Math.floor((s - n * t.height) / 2));
                cH.drawImage(t, 0, 0);
                cH.setTransform(1, 0, 0, 1, 0, 0)
            }
        }
            ;
        this.eV = function () {
            0 < l && c4.gY > x && (l--,
                x += 4500,
                0 === c4.w6 && 0 === c4.w7 && (0 === l && e9.jV < e9.w8 && (e9.jV += e9.w9),
                    e9.rb(e9.jV, 5)))
        }
            ;
        this.wA = function () {
            10 === aJ.pR() && (k++,
                2 <= k && (ji.wB(g),
                    g = null))
        }
    }
    function kY() {
        function g(P, U) {
            var W = F[P].getContext("2d", {
                alpha: !0
            });
            W.clearRect(0, 0, 48, 48);
            var X = 48 / U.width
                , V = 48 / U.height;
            X = V < X ? V : X;
            W.setTransform(X, 0, 0, X, Math.floor((48 - X * U.width) / 2), Math.floor((48 - X * U.height) / 2));
            W.drawImage(U, 0, 0);
            W.setTransform(1, 0, 0, 1, 0, 0)
        }
        function k(P, U, W, X) {
            X.beginPath();
            X.moveTo(P, P);
            X.lineTo(P + Math.cos(W) * U, P + Math.cos(W + 1.5 * Math.PI) * U);
            X.stroke()
        }
        function x() {
            if (7 === aJ.pR()) {
                for (var P = -1, U = E.length - 1; 0 <= U; U--)
                    if (null === E[U].ll) {
                        P = U;
                        break
                    }
                if (-1 !== P) {
                    U = l(E[P].ws, E[P].seedMap);
                    if (null !== U)
                        E[P].ll = U;
                    else {
                        U = aZ;
                        var W = aa
                            , X = hk
                            , V = pc
                            , na = wy
                            , ba = wz
                            , ca = wo
                            , pa = wp;
                        x0(E[P].ws, E[P].seedMap);
                        x1.x2();
                        var S = document.createElement("canvas");
                        S.width = 128;
                        S.height = 128;
                        var O = S.getContext("2d", {
                            alpha: !1
                        })
                            , T = 128 / aZ
                            , Y = 128 / aa;
                        Y > T && (T = Y);
                        O.imageSmoothingEnabled = !0;
                        O.setTransform(T, 0, 0, T, (128 - T * aZ) / 2, (128 - T * aa) / 2);
                        O.drawImage(hk, 0, 0);
                        aZ = U;
                        aa = W;
                        hk = X;
                        pc = V;
                        wy = na;
                        wz = ba;
                        wo = ca;
                        wp = pa;
                        E[P].ll = S
                    }
                    c4.c5 = !0
                }
            }
        }
        function l(P, U) {
            for (var W = E.length - 1; 0 <= W; W--)
                if (null !== E[W].ll && E[W].ws === P && E[W].seedMap === U)
                    return E[W].ll;
            return null
        }
        function t(P, U) {
            var W, X;
            if (0 === E.length)
                return !1;
            var V = 0;
            var na = B;
            for (X = 0; X < y[1]; X++) {
                var ba = A;
                for (W = 0; W < y[0]; W++) {
                    if (P > ba && P < ba + n && U > na && U < na + n)
                        return ii.x4(E[V].wq),
                            J = E[V].wq !== J ? E[V].wq : -1,
                            c4.c5 = !0;
                    V++;
                    if (V >= E.length)
                        return !1;
                    ba += n + cA
                }
                na += n + cA
            }
            return !1
        }
        var n, z, y, A, B, C, F, E, H, J, K, D, L = ["Joined", "Skipped", "Multiplayer", "Singleplayer"], I = [0, 0, 0, 0], N, G, M, Q, R;
        this.bp = function () {
            R = 0; A
            J = -1;
            aJ.setState(7);
            E = [];
            this.lq();
            var P;
            F = Array(11);
            for (P = F.length; 0 <= P; P--)
                F[P] = document.createElement("canvas"),
                    F[P].width = 48,
                    F[P].height = 48;
            for (P = 0; 7 > P; P++) {
                var U = P + 2
                    , W = F[U - 2].getContext("2d", {
                        alpha: !0
                    })
                    , X = 1.5 * Math.PI;
                W.lineWidth = 2;
                W.strokeStyle = cK;
                W.clearRect(0, 0, 48, 48);
                for (var V = 0; V < U; V++) {
                    var na = X + 2 * Math.PI / U;
                    var ba = X
                        , ca = na
                        , pa = W;
                    pa.fillStyle = dW.wg[V + 1];
                    pa.beginPath();
                    pa.arc(24, 24, 23, ba, ca);
                    pa.lineTo(24, 24);
                    pa.fill();
                    0 !== V && k(24, 23, X, W);
                    X = na
                }
                k(24, 23, 1.5 * Math.PI, W);
                W.beginPath();
                W.arc(24, 24, 23, 0, 2 * Math.PI);
                W.stroke()
            }
            g(7, bw.bz(4));
            g(8, a5.l0[27]);
            g(9, a5.l0[46]);
            g(10, a5.l0[36]);
            c4.c5 = !0
        }
            ;
        this.vb = function () {
            this.ta();
            e9.vN(3240);
            jX.bp();
            c4.c5 = !0
        }
            ;
        this.ta = function () {
            E = [];
            F = []
        }
            ;
        this.lq = function () {
            var P, U;
            y = [0, 0];
            H = [0, 0, 0, 0];
            q ? (K = Math.floor(.8 * .4 * bq),
                D = Math.floor(.56 * K),
                H[0] = cA,
                r < s ? (H[1] = D + 2 * cA,
                    H[2] = r - 3 * H[0],
                    H[3] = uH.cF() - 3 * cA - D,
                    G = Math.floor(.95 * D),
                    M = Math.floor((r - K - cA) / 2),
                    Q = Math.floor(cA + D / 2)) : (H[1] = cA,
                        H[2] = r - 3 * cA - K,
                        H[3] = uH.cF() - 2 * cA,
                        G = Math.floor(.8 * K),
                        H[3] - D < K && (G = Math.floor(.8 * (H[3] - D)),
                            G = mU(D, G)),
                        M = Math.floor(r - K / 2 - cA),
                        Q = Math.floor(cA + D + (H[3] - D) / 2),
                        Q = mU(Q, Math.floor(D + 2 * cA + G / 2)))) : (K = Math.floor(.2016 * bq),
                            D = Math.floor(.56 * K),
                            H[2] = Math.floor(.5 * r),
                            H[3] = Math.floor(.5 * s),
                            H[1] = Math.floor(.45 * (s - H[3])),
                            H[0] = Math.floor((r - H[2]) / 2),
                            G = Math.floor(.75 * D),
                            M = Math.floor(r / 2),
                            Q = Math.floor(H[1] + H[3] + (s - H[3] - H[1]) / 2));
            N = bt + Math.floor(.65 * D / 4) + bu;
            for (P = U = 1; P * U < E.length;)
                H[2] / (P + 1) > H[3] / (U + 1) ? P++ : U++;
            var W = (H[2] - (P - 1) * cA) / P;
            var X = (H[3] - (U - 1) * cA) / U;
            n = W < X ? W : X;
            z = Math.floor(n);
            C = bt + Math.floor(.5 * n / 5) + bu;
            y[0] = P;
            y[1] = U;
            A = H[0] + Math.floor((H[2] - y[0] * n - (y[0] - 1) * cA) / 2);
            B = H[1] + Math.floor((H[3] - y[1] * n - (y[1] - 1) * cA) / 2)
        }
            ;
        this.uI = function (P, U) {
            var W, X = E.length;
            I = P;
            for (W = 0; W < U.length; W++) {
                var V = l(U[W].wo, U[W].wp);
                E.push({
                    wq: U[W].id,
                    jB: U[W].jB,
                    jC: U[W].wr,
                    ws: U[W].wo,
                    seedMap: U[W].wp,
                    joined: U[W].wt,
                    nW: U[W].vR,
                    wu: U[W].wu,
                    ll: V
                })
            }
            for (W = X - 1; 0 <= W; W--)
                E.shift();
            if (-1 !== J)
                for (V = J,
                    J = -1,
                    W = E.length - 1; 0 <= W; W--)
                    if (E[W].wq === V) {
                        J = V;
                        break
                    }
            if (E.length > R || E.length < R)
                R = E.length,
                    this.lq();
            this.wv();
            c4.c5 = !0
        }
            ;
        this.wv = function () {
            for (var P = E.length - 1; 0 <= P; P--)
                null === E[P].ll && setTimeout(x, 0)
        }
            ;
        this.c7 = function (P, U) {
            return 4 * ((P - M) * (P - M) + (U - Q) * (U - Q)) <= G * G ? (this.vb(),
                ja.lh(P, U, !1),
                !0) : t(P, U)
        }
            ;
        this.cG = function () {
            var P = 0
                , U = B;
            cH.imageSmoothingEnabled = !0;
            cH.lineWidth = 3;
            var W = Math.floor(.5 * G);
            cH.fillStyle = o7;
            cH.beginPath();
            cH.arc(M, Q, W, 0, 2 * Math.PI);
            cH.fill();
            cH.strokeStyle = cK;
            cH.beginPath();
            cH.arc(M, Q, W, 0, 2 * Math.PI);
            cH.stroke();
            W = bw.bz(0).height;
            var X = .6 * G / W;
            cH.setTransform(X, 0, 0, X, Math.floor(M - .56 * X * bw.bz(0).width), Math.floor(Q - .5 * X * W));
            cH.drawImage(bw.bz(0), 0, 0);
            cH.setTransform(1, 0, 0, 1, 0, 0);
            cH.fillStyle = o7;
            cH.fillRect(r - K - cA, cA, K, D);
            0 <= J ? (cH.fillStyle = oF,
                cH.fillRect(r - K - cA, cA, K, Math.floor(.25 * D))) : (cH.fillStyle = oa,
                    cH.fillRect(r - K - cA, cA + Math.floor(.25 * D), K, Math.floor(.25 * D)));
            cH.strokeStyle = cK;
            cH.strokeRect(r - K - cA, cA, K, D);
            cH.fillStyle = cK;
            cH.font = N;
            cH.textBaseline = cI;
            W = Math.floor(.04 * K);
            X = Math.floor(.08 * D);
            for (var V = 3; 0 <= V; V--) {
                var na = Math.floor(cA + (V + 1) * (D + 2 * X) / 5 - X);
                cH.textAlign = mZ;
                cH.fillText(L[V], r - K - cA + W, na);
                cH.textAlign = oc;
                cH.fillText(eL.gF(I[V]), r - cA - W, na)
            }
            if (0 !== E.length)
                for (X = 0; X < y[1]; X++) {
                    na = A;
                    for (W = 0; W < y[0]; W++) {
                        V = P;
                        var ba = Math.floor(na)
                            , ca = Math.floor(U);
                        if (null === E[V].ll)
                            cH.fillStyle = o7,
                                cH.fillRect(ba, ca, z, z);
                        else {
                            var pa = z / 128;
                            cH.setTransform(pa, 0, 0, pa, ba, ca);
                            cH.drawImage(E[V].ll, 0, 0);
                            cH.setTransform(1, 0, 0, 1, 0, 0)
                        }
                        if (J === E[V].wq) {
                            pa = ba;
                            var S = ca
                                , O = Math.floor(.2 * z)
                                , T = Math.floor(.3 * O);
                            cH.fillStyle = oH;
                            cH.fillRect(pa + z - O, S, O, O);
                            cH.fillStyle = gD;
                            cH.fillRect(pa + z - O, S, 2, O);
                            cH.fillRect(pa + z - O, S + O - 2, O, 2);
                            fm.m4(pa + z - O + T, S + T, O - 2 * T);
                            cH.setTransform(1, 0, 0, 1, 0, 0);
                            cH.lineWidth = 3;
                            cH.fillStyle = oH
                        } else
                            cH.fillStyle = o6;
                        S = Math.floor(n / 4);
                        cH.fillRect(ba, Math.floor(ca + .8 * n), z, Math.floor(n / 5));
                        cH.fillRect(ba, ca, S, S);
                        cH.fillStyle = gD;
                        cH.fillRect(ba, Math.floor(ca + .8 * n), z, 2);
                        cH.fillRect(ba + S - 2, ca, 2, S);
                        cH.fillRect(ba, ca + S - 2, S, 2);
                        cH.font = C;
                        cH.textBaseline = cI;
                        cH.textAlign = mZ;
                        cH.fillStyle = oU;
                        cH.fillText(E[V].joined.toString(), Math.floor(ba + .07 * n), Math.floor(ca + .9 * n));
                        256 >= E[V].wu && (cH.textAlign = cJ,
                            cH.fillStyle = oD,
                            cH.fillText(E[V].wu.toString(), Math.floor(ba + .5 * n), Math.floor(ca + .9 * n)));
                        cH.textAlign = oc;
                        cH.fillStyle = oP;
                        cH.fillText(E[V].nW.toString(), Math.floor(ba + .93 * n), Math.floor(ca + .9 * n));
                        cH.strokeStyle = oV;
                        cH.strokeRect(ba, ca, z, z);
                        O = Math.floor(.16 * n);
                        pa = O / 48;
                        cH.setTransform(pa, 0, 0, pa, Math.floor(ba + (S - O) / 2), Math.floor(ca + (S - O) / 2));
                        F.length > E[V].jB && cH.drawImage(F[E[V].jB], 0, 0);
                        cH.setTransform(1, 0, 0, 1, 0, 0);
                        E[V].jC && (V = bw.bz(4),
                            pa = .5 * n / V.width,
                            cH.setTransform(pa, 0, 0, pa, Math.floor(ba + (n - pa * V.width) / 2), Math.floor(ca + (n - pa * V.height) / 2)),
                            cH.globalAlpha = .6,
                            cH.drawImage(V, 0, 0),
                            cH.globalAlpha = 1,
                            cH.setTransform(1, 0, 0, 1, 0, 0));
                        P++;
                        if (P >= E.length)
                            return;
                        na += n + cA
                    }
                    U += n + cA
                }
        }
    }
    function k9() {
        this.bp = function (g, k) {
            aJ.setState(5);
            ja.lh(g, k, !1);
            c4.c5 = !0
        }
            ;
        this.cG = function () {
            ja.uo()
        }
            ;
        this.c7 = function (g, k) {
            var x = ja.pI(g, k, 5, 2);
            5 === x ? aC() : 6 === x && (jX.bp(),
                ja.lh(g, k, !1),
                c4.c5 = !0)
        }
    }
    function kA() {
        function g(x, l, t, n, z, y, A, B, C) {
            cH.fillStyle = z;
            cH.fillRect(x, l, t, n);
            0 <= B && (cH.fillStyle = "rgba(" + 22 * B + "," + (110 - 22 * B) + ",0,0.75)",
                cH.fillRect(x, l, (1 + B) * t / 6, n));
            0 < C && (cH.fillStyle = "rgba(255,255,255,0.3)",
                cH.fillRect(x, l, C * t / b8, n));
            cH.strokeStyle = cK;
            cH.strokeRect(x, l, t, n);
            0 !== y && (cH.fillStyle = cK,
                cH.font = bt + Math.floor(y * n) + bu,
                cH.fillText(A, Math.floor(x + t / 2), Math.floor(l + .52 * n)))
        }
        var k = [0, 0, 0, 0];
        this.dv = [{
            bD: 0,
            mm: 512
        }];
        this.bp = function () {
            aJ.setState(2);
            if (settings.customMapFileBtn) jp.cE(true); // custom map file select button, removed in 1.83.0
            this.lq();
            c4.c5 = !0
        };
        this.ta = function () {
            if (settings.customMapFileBtn) jp.cE(false) // custom map file select button, removed in 1.83.0
        };
        this.lq = function () {
            if (settings.customMapFileBtn) jp.lq(); // custom map file select button, removed in 1.83.0
            k[2] = Math.floor((q ? .49 : .4) * bq);
            k[1] = Math.floor((s - k[2] / 6 - this.dv.length * (cA + k[2] / 10)) / 2);
            k[0] = Math.floor((r - k[2]) / 2);
            jl.l7 && jl.lq()
        };
        this.xD = function (x) {
            var l;
            if (6 < x)
                this.dv = [{
                    bD: 0,
                    mm: 512
                }];
            else {
                this.dv = [];
                for (l = 0; l < x + 2; l++)
                    this.dv.push({
                        bD: 0,
                        mm: 0
                    });
                this.xE()
            }
        }
            ;
        this.vc = function () {
            c4.c5 = !0;
            jl.l7 ? jl.l7 = !1 : (this.ta(),
                jX.bp())
        }
            ;
        this.jF = function () {
            for (var x = 0, l = this.dv.length - 1; 0 <= l; l--)
                x += this.dv[l].mm;
            return x
        }
            ;
        this.lh = function (x, l) {
            return jl.l7 && jl.lh(x, l) ? !0 : -1 === this.pI(x, l) ? !1 : !0
        }
            ;
        this.xF = function () {
            e9.jV = 0;
            e9.rb(0, 3) && ii.xG(0);
            aJ.vX();
            if (!jD.jE) {
                var x = this.dv.length - 2;
                x = 0 > x ? 7 : x;
                j8(Math.floor(16384 * Math.random()), 0, [{
                    name: jX.xH(),
                    id: 0,
                    xI: cC.m7[2].iY.uz(),
                    xJ: 0
                }], x, !1)
            }
        }
            ;
        this.click = function (x, l) {
            return !1
        }
            ;
        this.c7 = function (x, l) {
            if (cD.l7 || cC.m7[1].iY.l7 || cC.m7[2].iY.l7)
                return !1;
            if (jl.l7)
                return jl.c7(x, l);
            var t = this.pI(x, l);
            if (-1 === t)
                return !1;
            if (100 === t)
                return !0;
            if (0 === t)
                return this.vc(),
                    !0;
            if (1 === t)
                return jl.show(),
                    !0;
            if (2 === t)
                return this.ta(),
                    this.xF(),
                    !0;
            if (27 === t)
                return 8 > this.dv.length && (this.dv.push({
                    bD: 0,
                    mm: b8
                }),
                    this.xE(),
                    this.lq(),
                    c4.c5 = !0),
                    !0;
            var n = Math.floor((t - 3) / 3);
            if (0 === t % 3)
                return 1 < this.dv.length && (this.dv.splice(n, 1),
                    this.lq(),
                    c4.c5 = !0),
                    !0;
            var z = (k[2] - k[2] / 10 - 2 * cA) / 2;
            if (1 === t % 3) {
                if (0 === n && 1 === this.dv[n].mm)
                    return !0;
                x < k[0] + k[2] - 1.5 * z - cA ? this.dv[n].bD-- : this.dv[n].bD++;
                0 > this.dv[n].bD ? this.dv[n].bD = 5 : 5 < this.dv[n].bD && (this.dv[n].bD = 0);
                return c4.c5 = !0
            }
            c4.c5 = !0;
            var y = (x - (k[0] + k[2] - z)) / z - .5;
            y = Math.floor((0 > y ? -(y * y) : y * y) * b8);
            y = 0 === y ? 1 : y;
            z = b8;
            for (t = this.dv.length - 1; 0 <= t; t--)
                n !== t && (z -= this.dv[t].mm);
            if (0 > y) {
                if (1 === this.dv[n].mm)
                    return this.dv[n].mm = z,
                        !0
            } else if (this.dv[n].mm === z)
                return this.dv[n].mm = 1,
                    !0;
            this.dv[n].mm += y;
            1 > this.dv[n].mm ? this.dv[n].mm = 1 : this.dv[n].mm > z && (this.dv[n].mm = z);
            return !0
        }
            ;
        this.xE = function () {
            for (var x = Math.floor(b8 / this.dv.length), l = b8 % this.dv.length, t = this.dv.length - 1; 0 <= t; t--)
                this.dv[t].mm = x;
            this.dv[0].mm += l
        }
            ;
        this.pI = function (x, l) {
            var t, n = (k[2] - 2 * cA) / 3, z = k[2] / 6;
            if (x < k[0] || l < k[1] || x >= k[0] + k[2])
                return -1;
            if (l < k[1] + z)
                return x < k[0] + n ? 0 : x < k[0] + n + cA ? -1 : x < k[0] + 2 * n + cA ? 1 : x < k[0] + 2 * n + 2 * cA ? -1 : 2;
            var y = k[2] / 10;
            n = (k[2] - y - 2 * cA) / 2;
            for (t = 0; t < this.dv.length; t++) {
                var A = k[1] + z + cA + t * (y + cA);
                if (l < A)
                    return -1;
                if (!(l > A + y))
                    return x < k[0] + y ? 3 + 3 * t : x < k[0] + y + cA ? -1 : x < k[0] + k[2] - n - cA ? 4 + 3 * t : x < k[0] + k[2] - n ? -1 : 5 + 3 * t
            }
            return 8 > this.dv.length ? (A = k[1] + z + cA + this.dv.length * (y + cA),
                l < A || l > A + y || x > k[0] + y ? -1 : 27) : -1
        }
            ;
        this.cG = function () {
            var x;
            cH.lineWidth = 2;
            cH.textAlign = cJ;
            cH.textBaseline = cI;
            var l = (k[2] - 2 * cA) / 3
                , t = k[2] / 6;
            g(k[0], k[1], l, t, "rgba(128,0,0,0.75)", .4, "Back", -1, -1);
            g(k[0] + l + cA, k[1], l, t, "rgba(0,128,128,0.75)", .4, "Maps", -1, -1);
            g(k[0] + k[2] - l, k[1], l, t, "rgba(0,128,0,0.75)", .4, "Start", -1, -1);
            var n = k[2] / 10;
            l = (k[2] - n - 2 * cA) / 2;
            for (x = 0; x < this.dv.length; x++) {
                var z = k[1] + t + cA + x * (n + cA);
                g(k[0], z, n, n, "rgba(0,128,0,0.75)", 0, null, -1);
                g(k[0] + n + cA, z, l, n, hq, .4, this.xL(x), this.dv[x].bD, -1);
                g(k[0] + k[2] - l, z, l, n, hq, .4, this.xM(x), -1, this.dv[x].mm)
            }
            if (8 > this.dv.length) {
                z = k[1] + t + cA + this.dv.length * (n + cA);
                g(k[0], z, n, n, "rgba(128,128,20,0.75)", 0, null, -1, -1);
                x = k[0];
                cH.fillStyle = cK;
                l = mU(2, Math.floor(.5 * n));
                l -= l % 2;
                t = mU(2, Math.floor(.1 * n));
                t -= t % 2;
                n = Math.floor((n - l) / 2);
                var y = Math.floor(n + (l - t) / 2);
                cH.fillRect(x + n, z + y, l, t);
                cH.fillRect(x + y, z + n, t, l)
            }
            jl.l7 && jl.cG()
        }
            ;
        this.xL = function (x) {
            return 0 === x && 1 === this.dv[x].mm ? "You" : dG.dl[this.dv[x].bD]
        }
            ;
        this.xM = function (x) {
            return 1 === this.dv[x].mm ? "1 Player" : this.dv[x].mm + " Players"
        }
    }
    function ow() {
        this.c1 = this.b3 = 0;
        this.m7 = null;
        this.bp = function () {
            this.m7 = [];
            this.m7.push({
                fF: 0,
                fG: 0,
                lw: q,
                iY: null
            });
            this.m7.push({
                fF: 0,
                fG: 0,
                lw: !1,
                iY: new vj
            });
            this.m7.push({
                fF: 0,
                fG: 0,
                lw: !1,
                iY: new ur
            });
            this.m7[2].iY.uw();
            this.b3 = this.m7.length;
            this.c1 = 0
        }
            ;
        this.rj = function () {
            this.c1 = Math.floor((q ? .063 : .04) * bq);
            this.c1 += 4 - this.c1 % 4;
            this.m7[0].fF = cA;
            this.m7[0].fG = cB - this.c1 - cA;
            for (var g = 1; g < this.b3; g++)
                this.m7[g].fF = this.m7[g - 1].fF + Math.floor(q ? 1.5 * cA : 3.7 * cA) + this.c1,
                    this.m7[g].fG = this.m7[0].fG
        }
            ;
        this.pI = function (g, k) {
            if (!bw.bx())
                return -1;
            for (var x = this.b3 - 1; 0 <= x; x--)
                if (g >= this.m7[x].fF && k >= this.m7[x].fG && g < this.m7[x].fF + this.c1 && k < this.m7[x].fG + this.c1)
                    return x;
            return -1
        }
            ;
        this.xP = function () {
            for (var g = 2; 1 <= g; g--)
                if (this.m7[g].iY.l7)
                    return !0;
            return !1
        }
            ;
        this.ua = function () {
            return this.m7[1].iY.l7 ? (this.m7[1].iY.c7(-5E3, -5E3, 0),
                !0) : this.m7[2].iY.l7 ? (this.m7[2].iY.c7(-5E3, -5E3),
                    !0) : !1
        }
            ;
        this.c7 = function (g, k, x) {
            if (x) {
                if (this.m7[1].iY.l7)
                    return this.m7[1].iY.c7(g, k, 0),
                        !0;
                if (this.m7[2].iY.l7)
                    return this.m7[2].iY.c7(g, k),
                        !0
            }
            g = this.pI(g, k);
            if (x) {
                if (0 === g)
                    return this.m7[g].lw = !this.m7[g].lw,
                        q = this.m7[g].lw,
                        jj.xQ(),
                        a1(this.m7[0].lw, !1),
                        !0;
                if (1 <= g && 3 > g)
                    return this.m7[g].iY.bp(),
                        jX.ta(),
                        c4.c5 = !0
            }
            return !1
        }
            ;
        this.lh = function (g, k) {
            return this.m7[1].iY.l7 ? (this.m7[1].iY.lh(g, k),
                !0) : this.m7[2].iY.l7 ? (this.m7[2].iY.lh(g),
                    !0) : !1
        }
            ;
        this.v1 = function () {
            for (var g = 2; 1 <= g; g--)
                if (this.m7[g].iY.l7)
                    return this.m7[g].iY.v1(),
                        !0;
            return !1
        }
            ;
        this.cG = function () {
            if (bw.bx()) {
                cH.imageSmoothingEnabled = !0;
                for (var g = this.b3 - 1; 0 <= g; g--)
                    cH.fillStyle = this.m7[g].lw ? mR : hq,
                        cH.fillRect(this.m7[g].fF, this.m7[g].fG, this.c1, this.c1),
                        0 === g ? this.xR(g, bw.bz(15)) : 1 === g ? this.xS() : 2 === g && this.xT(),
                        cH.setTransform(1, 0, 0, 1, 0, 0),
                        cH.lineWidth = op,
                        cH.strokeStyle = cK,
                        cH.strokeRect(this.m7[g].fF, this.m7[g].fG, this.c1, this.c1);
                cH.imageSmoothingEnabled = !1
            }
        }
            ;
        this.xR = function (g, k) {
            var x = .08 * this.c1
                , l = (this.c1 - 2 * x) / k.width;
            cH.setTransform(l, 0, 0, l, this.m7[g].fF + x, this.m7[g].fG + (this.c1 - l * k.height) / 2);
            cH.drawImage(k, 0, 0)
        }
            ;
        this.xS = function () {
            var g = .06 * this.c1
                , k = (this.c1 - 2 * g) / a5.c1;
            cH.setTransform(k, 0, 0, k, this.m7[1].fF + g, this.m7[1].fG + g);
            cH.drawImage(a5.l0[4], 0, 0)
        }
            ;
        this.xT = function () {
            cH.setTransform(1, 0, 0, 1, this.m7[2].fF, this.m7[2].fG);
            for (var g = this.c1 / 4, k = 3; 0 <= k; k--)
                for (var x = 3; 0 <= x; x--)
                    cH.fillStyle = "rgb(" + Math.floor(367 * (k + 1) * (x + 1) % 256) + "," + Math.floor(687 * (k + 1) * (x + 1) % 256) + "," + Math.floor(651 * (k + 1) * (x + 1) % 256) + ")",
                        cH.fillRect(k * g, x * g, g, g)
        }
            ;
        this.vg = function () {
            for (var g = 2; 1 <= g; g--)
                if (this.m7[g].iY.l7) {
                    this.m7[g].iY.cG();
                    break
                }
        }
    }
    function kB() {
        function g() {
            if (0 !== t.indexOf("vote "))
                return !1;
            var n = t.split(" ");
            if (2 !== n.length)
                return !1;
            jX.xU = n[1];
            k();
            e9.rb(0, 7) && ii.xf(0);
            jc.vL(3252);
            return !0
        }
        function k() {
            t = a();
            jd.bz(0).input.value = t;
            jd.vw(0, !0)
        }
        function x() {
            if (0 !== t.indexOf("account "))
                return !1;
            var n = t.split(" ");
            if (2 !== n.length)
                return k(),
                    jc.vL(3266),
                    !0;
            var z = Math.floor(Math.pow(2, 48));
            n = parseInt(m.n(n[1]));
            if (0 >= n || n >= z)
                return k(),
                    jc.vL(3266),
                    !0;
            if (o(n))
                return k(),
                    jc.vL(3231),
                    !0;
            k();
            5 <= d ? jc.vL(3232) : (jc.vL(3265),
                vV.l7 = !0,
                vV.bs = -1);
            return !0
        }
        function l() {
            if (void 0 !== t && m.iF(t))
                return jd.vw(0, !0),
                    !0;
            jd.vw(0, !1);
            return !1
        }
        var t;
        this.xU = "";
        this.xV = -7E3;
        this.bp = function () {
            aJ.setState(0);
            ja.rj();
            jd.cE(0, !0);
            jd.rj(0);
            jY.bp();
            cC.rj();
            void 0 === t && (t = a(),
                jd.bz(0).input.value = t,
                l())
        }
            ;
        this.ta = function () {
            jd.cE(0, !1)
        }
            ;
        this.xX = function (n) {
            return 0 === n ? ja.c1 : 1 === n ? Math.floor(.3 * ja.cw) : 2 === n ? jd.bz(0).input.style.font : t
        }
            ;
        this.vv = function () {
            t = jd.bz(0).input.value.trim();
            l();
            if ("password" === t || "account" === t) {
                var n = m.z(j().toString());
                t = "account " + n;
                jd.bz(0).input.value = t
            }
        }
            ;
        this.c7 = function (n, z) {
            c4.xY();
            1 === ja.pI(n, z, 1, 1) ? x() || g() || (a9(10),
                l() ? (this.ta(),
                    w(t),
                    du.bp()) : jc.vL(4214)) : 0 === ja.pI(n, z, 0, 1) && this.va()
        }
            ;
        this.va = function () {
            x() || g() || (a9(10),
                void 0 !== t && m.iF(t) && 40 === t.charCodeAt(0) && 41 === t.charCodeAt(2) ? jb.vD(Math.abs(t.charCodeAt(1)) + 7) : jb.vD(jm.xd - 1),
                l() ? bw.bx() ? (this.ta(),
                    w(t),
                    jb.bp()) : jc.vL(3228) : jc.vL(4214))
        }
            ;
        this.xh = function () {
            return !cC.xP() && !cD.l7 && !nN.l7
        }
            ;
        this.cG = function () {
            if (this.xh()) {
                // draw foreground territorial.io logo
                cH.imageSmoothingEnabled = !0;
                var n = bw.l4("territorial.io")
                    , z = 1.1 * ja.c1 / n.width;
                cH.setTransform(z, 0, 0, z, Math.floor((gA - z * n.width) / 2), ja.fG - z * n.height - .72 * ja.cw);
                cH.drawImage(n, 0, 0);
                cH.setTransform(1, 0, 0, 1, 0, 0);
                ja.ul()
            }
        }
            ;
        this.xH = function () {
            return t
        }
    }
    function kC() {
        function g(n, z, y, A) {
            l[n] = z;
            x[n] = new Image; 0
            x[n].onload = function () {
                if (0 < y) {
                    var B, C, F = document.createElement("canvas"), E = x[n].width, H = x[n].height;
                    F.width = E;
                    F.height = H;
                    var J = F.getContext("2d", {
                        alpha: !0
                    });
                    J.drawImage(x[n], 0, 0);
                    var K = J.getImageData(0, 0, E, H)
                        , D = K.data;
                    if (3 > y) {
                        var L = 2 === y ? 160 : 600;
                        for (B = E - 1; 0 <= B; B--)
                            for (C = H - 1; 0 <= C; C--) {
                                var I = 4 * (B + C * E);
                                D[I] + D[I + 1] + D[I + 2] < L && (D[I + 3] = Math.floor(255 * (D[I] + D[I + 1] + D[I + 2]) / L))
                            }
                    } else if (3 === y)
                        for (B = E - 1; 0 <= B; B--)
                            for (C = H - 1; 0 <= C; C--)
                                I = 4 * (B + C * E),
                                    0 === D[I] && 200 < D[I + 1] && 0 === D[I + 2] && (D[I + 3] = 0);
                    else if (4 === y)
                        for (B = E - 1; 0 <= B; B--)
                            for (C = H - 1; 0 <= C; C--)
                                I = 4 * (B + C * E),
                                    D[I + 1] > D[I] + 20 && D[I + 1] > D[I + 2] + 20 && 40 > D[I] + D[2] && (D[I + 3] = 255 - D[I + 1],
                                        D[I] = D[I + 1] = D[I + 2] = D[I]);
                    else if (5 === y)
                        for (B = E - 1; 0 <= B; B--)
                            for (C = H - 1; 0 <= C; C--)
                                I = 4 * (B + C * E),
                                    200 < D[I + 1] && D[I + 1] - 20 > D[I] && D[I + 1] - 20 > D[I + 2] ? 40 > D[I] + D[I + 2] ? D[I + 3] = 0 : (D[I + 3] = D[I],
                                        D[I] = 255,
                                        D[I + 1] = 255,
                                        D[I + 2] = 255) : 50 > D[I] && 50 > D[I + 1] && 50 > D[I + 2] && (50 > D[I] + D[I + 1] + D[I + 2] ? (D[I + 1] = D[I + 1],
                                            D[I + 3] = 180) : (D[I + 1] = D[I + 1],
                                                D[I + 3] = 180 + Math.floor(75 * (D[I] + D[I + 1] + D[I + 2] - 50) / 100)));
                    else if (6 === y)
                        for (B = E - 1; 0 <= B; B--)
                            for (C = H - 1; 0 <= C; C--)
                                I = 4 * (B + C * E),
                                    D[I + 3] = Math.floor(255 * (D[I] + D[I + 1] + D[I + 2]) / 765),
                                    D[I] = D[I + 1] = D[I + 2] = 255;
                    else if (7 === y)
                        for (B = E - 1; 0 <= B; B--)
                            for (C = H - 1; 0 <= C; C--)
                                I = 4 * (B + C * E),
                                    D[I + 1] > D[I + 2] + 10 && (D[I + 3] = D[I],
                                        D[I + 1] = D[I + 2]);
                    J.putImageData(K, 0, 0);
                    x[n] = F
                }
                k--;
                bw.bx() && (uH.bv(),
                    hm.kw(),
                    a5.bp(),
                    vd.ud([x[8], x[16], x[7], x[9], x[10]], [!b, 0 === d, !0, !1, !0]),
                    c4.c5 = !0,
                    x[7] = t,
                    x[8] = t,
                    x[9] = t,
                    x[10] = t)
            }
                ;
            x[n].src = A
        }
        var k, x, l, t;
        this.bp = function () {
            if (void 0 === x) {
                k = 20;
                x = Array(k);
                l = Array(k);
                t = document.createElement("canvas");
                t.width = 1;
                t.height = 1;
                for (var n = k - 1; 0 <= n; n--)
                    x[n] = t;
                g(0, "exit", 6, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAABGBAMAAACkrn5fAAAAHlBMVEUAAAAiJCI4OjdcXltoameIioejpqPExsPY29j///9xarZIAAAAyUlEQVRIx+3WQQqCQBTG8TdOB5DUI+S6nRcoPIFhu1bBHGGO4Any3TYxAkWTv1DSYr71D4b5mOE9kWmszkeC/ZptT6Ocl+xj5qgtbVR1iZn9VE2wU2uO2Jryhm2h2OaKbdZgu/NKrXVK7f6q1JpaqTWFYpvrUtqhPTTYpst0aBOv2Drltlxh392iu0U1t5I4biX13PZvF7+zvOFWihXWlNy+aqZ/M3LcivXcds1xK9kKK3GYAVtYe+8CZ/c/7Br9blSNcgn75O/tE26TasUvH0ImAAAAAElFTkSuQmCC");
                g(1, "victory", 6, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUIAAABBBAMAAABWYLC1AAAAElBMVEUAAAA6PDlbXVqEhoO4urf///8hX3N2AAAEcklEQVRo3s2ZyZKcMAyGWdx3alLcSaW4k8lwZ9LjuwH3+79KlkljLb/czFJp+tYusD8k/ZItF/5y/a0F/dXb+KW472/cQCIbd8b4//+dDFu12/ByZ8Jkq0uHbRvuTFglwomOezx8j5/HxkrgTXEYqSxQyvcWCpVEhOG53p3QQTGfDiMUlppJxPXHEQrVxIT0092fEOaVw9Q8LpV5GysPJGUsWweojyCVCAgPIBQYc8nzwxEIvcYZjyQUmPv8kYQC68dhNoeWmOsD1Tyc/G5L+elvHLzs0tG3l7/PPn6KVJTfGxqpG0+9vXFW2w+ZGaoU0x3YrfwZP3dkrONijUK5ndBOLBAh2Wz8CwybMAESRPX4kDwZuGODMNkkjLoiwtLTyac8IXs2NpbJO2E0YVInhSH/c8LxolY1CVs+tFiEi2TqGW8lZqikTRlhLSYPGcIK2Ao/3gi/ilwiErQz4nIAJnx9xyJsga3w4xN3s6EbTVhowhJNbhCWyFaYcOVUvShpLZ+glfmREurZZ5MQ2wqOx/Q9k3YyeWNgJp0B4YgmNwh7aCv8eJp61U4mwT+xsJwA4Zarv37xm+ENQr89+/BCAwc93qXhRjmZpJeZ/Rs0YU1scU2MU1FkM/tKbT8kwt8+LB+8TtrT9dMCqHsrsyhYmdnfiYkEoaPBXRG/sPd8eunqZqfPmS1MHRGsfGLF5nX2Z4OwZWm6T15ihK3+/D7XBKFFcAErjzKVx3NTGIT8WZe+jRGSl0pdC7RUBqJW5D3P7O/iI9itDzx2Gla5oiAs6YwjKEBSKhOQMiDMnicGNmkUwc6V8sPTmHeyWAGpBELbgJWzx5c3Emqc0nIyya1Lqvax+BhhKfoE4/bdgHDR+6YOn6Zien0FK5fZpiInrITeRpWaL6qr5SwnUzGftJXTytUbCGszIzhjR8HcHKzTVNfqU9SHCGeRdAdjB1vgE4mWyuR1Q0QRLm8gDHsI9SErmg334HVD5EOE8w4vP2tnBrPxsICPeJ9SjDgESnkGpurMxkMEnUOVbT5Xy2cAEnN3U7rd8Kn5EGRscJOz5LqIunNoElbx+0eq3hev17IJRyNDwbpMGjwv3V5CsHOotRFtwhYWSmvn0BB9nfftbUq0txlV3rAJHTry6JVR+yG+f3/oVNDbhKiVYO+xWftkNQhPbLEW7bEr5WabsLClDM4p7Og/7zmnlPic4mVMZQj9xdzgkpUrmmTfctbr4VlvC/9hB2FvCoWtnM7A31SukJ1Qcl5+Audl2pMKOwidKRS2cm81WwHhmO85BOL8dQdhLZsxmNDhRSHhjb5NoF+xg7AwhcJX9nZ5lIRFvvcV6JZl2kHojZonVm7t4tMbG0ujfxio6+YdhD2MLbVyZZd9RVjhYo+6InEH4ck8q/KVezMt9daeA/exWc/h6oocoTP2Q/m7gKXIEZa5u4DAlp1uE5aWUHL3KbHIEvL7FFFsAouE+TYhlcqQIyR3UrG5QZi7kwoFCMT6k648n17v6n7uv9eL5/et9Asv0oTxJYkUxgAAAABJRU5ErkJggg==");
                g(2, "defeat", 6, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAABABAMAAADL6o5mAAAAHlBMVEUAAAAlJyU7PTtUVlNsbmuJi4ijpaLCxMHX2db///+Cup+UAAACo0lEQVRo3s3ZsW7bMBAAUNqyZWUzsnT1VECbhy7ZvHTwlqmAN6PoUG0CggzairpIyi1Nk1b629awTPGOpHm0DyE1WYJEPlHk3UkW6w5t7eMXEWczKHvN52QoXfcjHUoUi4PSbdOhtItkKBEekZPSLdOh7NKhtOlQ3nwRnaC8pENp06F0t+lQvsWi/O/4+uPXiJNljcbgvUb5G5ci3mmWeVyKqGLNW5MyGyh1ZMo41hIyKaJRh573u9JY5HDo1LMsjBOfBLq9/oC0Rg4L5UYdeuWi5HqDAZShyT9clAKGBzJlBgMLB0UN9CKMksOEyEFpYOFBpkxBpywU1AmZkrFThpv7HUYZwcjPQEGzj04RsOpnoJRwnGNScFo7h7JS16HqcmbJDIUzW0hrWstQVfQWlMkhXg655BzKkoVyOPn7EMDjUa4Os0SidsIoCxbK5tBWhV7FCZSRJ8RtT1M6mE2PYb/tE1EdQsnoFNCpizLudwqYDCiUqScdhlLyfunkeslCo+TMlKJvPkNvNASKr14JpayPV0mtZKFRfFVcKKU5Cir4rYRAWXtq21CKetY31uVxiiI9FX8gZap+F7BrP2WC3oMupRSqZprBeeunlCiNXkopVesTrWShUDJpLS7sgd9GwYG/cn1B8lFGVWctuc7PQcao1hTK9YdP0hjgCykTo1579lLM7RcHxSg9VZYMoWw5KFfOL58BlHbOQdmYDa+CKeC1/2yKpbqvgyk1B2VsafgplNI6b6smVnH7wJq7h5tO2bFQCvdNkintkoVibX8RRtkJFkoDUmCpRwkqpZ3zUMDsgDObStkKFspUj9tqEr+EUO4EDwUt8Ez/ykKj3AkmSonGWGopn0J5WAkuSoX+KG60ksVL+Xm/8kXuAAoO1RvtOkT5B9F51EylDpRdAAAAAElFTkSuQmCC");
                g(3, "orders", 6, "data:image/png;base64, ");
                g(4, "crown", 4, "data:image/png;base64, ");
                g(5, "arena", 6, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAABABAMAAAAHc7SNAAAAHlBMVEUAAAAjJSM7PTpUVlNqbWqHiYalp6S/wr7W2NX////RSpP4AAAD9klEQVRo3sWZvW+bQBiHiSGAt6hdki1Dh7Jl9eapkjdPrbxV6lCxeaw3okqpbqNuzMd/2yRw3PvJkQVYYhHgnvfer9/dBQG4WnftgwWuawBwXAIgBQB/lwDIAEC1BEAOAJolAAwAaB/mHz+C4y8RhQkCKOcHuEMAl/kBDgigWTgG2/Z+7vFDPH77fW6AmAAUSxbi1+t5boAdAajnBjgRgHbm8a/o+HNLgiEGfy0UhUMMfrU/zvMCbOy4HxeSBKehBJtlirGze9AlW1GqtM2fH0rp6HroCTWzNcnpTMmxa+f5HZcEORnnyQ9gewkFyJUcS1zsp1wSUID2tx/gKAMYJccy14MSLgkYQOeeUYCLCBBqOZY7LRhxScABzl6A3gcEINFyDIY+lwQcoPEDFBLAWhE8IQQ7MUnAAd58MA5wkQAOiuxOYBM+sGIsABy9AN0QBMAosnsNx7xjkkAAKP0ABQdYabL7IBpWjwD88wNUHCDWZLeBPditkm8wwMuvD1+Mez8VU/qE3IwBUkV2r5AKWTFJkIPymUwHKBhAV2VzJrtjPOmGRiEECKcDVAzg7X9NxmR3ih2TQ0dTgGg6wKsPMED3aspe2+F9iYyWKwjwmQWhDlAQgC66zjGyLmCZ4yakYQCffo6lYUUAKgLQmx4y2U2WQ3FLJMHUQkQBXt5HANb5hkiCa1L9Q1quppZiBlBgABv+OZEEvKCQvSoOUAeTAGoMYHq/bkjsZCpA9b52zADaLQSI7EMpkQS5CtC8T5AAgEt35xECJHbcmEgCowL0TXOqJAMAZfenhgBrO/MhLsaRPn4fhRSgvvED9H7dAYDDkGkGye5kBKCUAJ7uAz9An1qGlfiH4ZmjuDvVCntVGKDZBxMASDYMTa5xpbcUd6ekXQIyA80WAYiluAxu6Wdi2brRGOxLUw+w+obfHAeIvGWjkXenhL2qoRfsUHKMA0Af1NIejC288ShAgQBs0X6cAnBLAE6ydSOFeGiarhsaGBoegIgAKNYJM8Oi0AHshEqoAQCTa3Igg2T3aRSgxQAJZPcBpAggVay7Ek9JDBKmDmAF88AHEKGRMsW6WNyazJGfcjYZytqwRgDuK7XS8vboK6V4fnTGAHfiqwoAWuIYJcc24motRY7J+YQVUwBCcF9seWc0M3vx+KQhqtg4Li/A8PF6+OIRLYUqNDP38gHSFgMc3LLND5C6+2tspbHWXStnJEgSQIDUVTE/QOjuH8Tl5hbMdaWcn5TiyujVfX4A+2YNTEYbo0cgBp6VU8wLBrCFq54EkNr7K2Jlaq3LlR2DDLoGAWyGjjgBILT3Y7zadItsbc8khU0TASTD8xMAetfXrGr2sdf8B96/CJXN/8t1AAAAAElFTkSuQmCC");
                g(6, "territorial.io", 6, "data:image/png;base64, ");
                g(7, "youtube", 7, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKEAAAAkCAMAAADW8qrvAAAANlBMVEX+AgDxYgDjhgD/eXnQpAC7vAD/oaMA/wClzwCH4QAx/zdf/1ty/3Sf/6D/3d2+/77d/93///85QMf8AAACr0lEQVRYw8WYWbaDIAxAsdVqAzzi/jf7GBIGZxxO89GiUbgGEkJEH+Q7DF3bti8rjRPhxTftLavpuuH77X8gwv10BLQrTfsEpHECG4TwEhUy0ItKW1Gh7Zp6AwF0KRP16GSLsApQCLKidt1igE3NZZFjKZWEXR2gaMguaSwPa54jbCoJ2Yjo+lWxpR8jhFpA0dH6jlzbIzhCdOIf8606wm814atPq8+whXDXY+WS+Y4QDtWETdYxHlmGFwm7akLRZwsRaLrVc4TtAsL7vUkIWbxRRBrCngu9xArSinvS/cuccKYhQpletjrXl3ZasRQNP+Pfe9+ZZZhd4EnW5KmYHNxwVFIZ4UwTCP1U0GqhC3+5QjiOn11CPxQGj9EJ0Io8QchM6fMIcZVw/PvsEfpOAxkUMQ9PEObvZh87KtGsEY6rU81bs46zg4SLoNiI1YRaYvGECl2aLcI1Rib0Q2gM42HuN7qeUFOEtV8HZMvwv2ikTzLyZ4PQj2WK5U62NCc8Jd2ImcghwiUzRkI/wWHcOD7nPCcI2ZhxC/BPXiJUaXWrOwjxDOHmLLMXxlhzD6EpCbc9ZdOXadF5172dEJUK83Il2jBXCmE3Eka5ErF5EPMbwgO7Xp5e30+IJBcyh2cJzQ3ZV0GoniM8n8HeTziN2DZH1PrCKaAghCd2PZ/enT9JlYQ9D8dHQFNPqMYskUuEp0+jE0IaVxakCJQt54SswYIQZci+MGVfwZaitihSuHJGSMF7MQstCWea4tpM+tKiHy4sw7zcgMWoNIdOOyWcaRIOnSAAs5T7dGVpRpi61dmOOCqYEs403nQqf1dyXwjnq3NZXU5yMmbsFmA0ZJdGhmeAS3RJA1ET6nyg7c14GtW+L8UVzuEo4zMVzgM1WKoSU5m44TJxw0VirhLDL6rE/6vBvdrCmmWnAAAAAElFTkSuQmCC");
                g(8, "googleplay", 3, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAAA1CAMAAADf/zF9AAAAwFBMVEUAAgAHCgUmBAcPEQ44DAkZGhhcDRktIwEoKicyLAQPNR81NzSYGTE/QT8KVjKuJivSJUZPUU/rK01yXQYVdUNcXlvyMkn7M0VlZ2Rwc3B7fXoWqGCEh4MCtMqQko+3iKe4mQIAwuianJn/hy0ExfEAx/78iy2go6CjpaIA0/8O23QA3LXFrRIR1PIE2v4A4P60tXoA8HPftAuytLEA/wC+wL3/wQD/xwDHycan3VT/0QDU1tPg49/q7Ony9PH7/vsMGtIFAAAFvUlEQVRo3uWaa5ebNhCGpRJSGtbJalN2kZfKqZr0sJtbN5SEWLf//68yI4GNDb6sG5+E0/mAMQbxMLx6NQKTfyFkOZmQyEsAWeZpRCcRUZpLidBSJGRCkQiJ0JNiBmqAljmZWOSSlOnUoGclKeOpQcf/O+g0xS4cxRDUL31LMYlX64SmKa7Q1eIc0M9ub3+nxx3KGmsNHFxprU1RawzoHrlOFa4qbDZX1mpJidAFIVwl54H+4+39/e3zo5iNLrjUOamVEIJx0RhRQFPcpnOhlCgiYLZqzitbEunMjBT2TNBv3gD1/e2zw0fWeoaeCStN2FDqCD8AmpDGb6PKp1taJo2uzgmN1A9HYJuSkIxzntYaMh2PQae28IOBFdIUlp8T+s3bB4j7Q9I2ghBQrJO1BQEn49Bzfw4jpSGNPit0oAbsvUeqBu2DWVE3lI7LI8G7AffDzgGa2eas0C31w94eKayMSVKbWd2g5Y1Bk9LOI8KUjgEaOuO5oF+/7lPvkzatrFYGBIDyQEcbgU4aq5TVGUHoSJ0PeoMasKPddUtZSQYfBQR8ZvMw4qDv5V0RxqsKC1+Gv7EiOhP03Rb1IWn/DMP467sB9cP9858feoT6mMHmB0L/eTdG/fXTq+hnh96m/vrly/LTy7HBJuEwjy8eM4uIosHl0yhE9+VE6E1qYP6yXC7fvRyUppVxGLZmR0MrKEK2Yq5DNLkfojR7NPSHAfXXz5899HL56rdNy9Oe2MLCzI+FNq4ZDFOui4qSyrns8dDb1MDcQS/fbTADrZYsYYVy9j9Cq7quG2hPngR992GL+p/PPehlL9UJ5LkKQxwVRzPvgBahRnEmPhW6T724+WtHpkvnGvr4nr8HGpvkp0C//7BBvbi5QepO07/2XMA4Oxt6Q5az1ZWkebZqOsnzmGA12ELHWZ4OoKVzRQud5IVviLatUUoPQXfUyIzUHvrVhnvkbpiyxLuJFr59rryvzILNgF4NGIMM0H5H27At6BqAPXRaY++GKkz4UgyUo/umM4D+2KMOzEDtfXoTsMBe4+mrEJIkam0CK0swQJbqlT146LjdsTU3hIbqNoFEa98Ru9+dmFmncBfYWuyDXlN3zDc3f396GQ2FKLt7GggiaFnNmTB4AuhUtmR5A5tiCsuGs9J20KBdxVNp23sFTRmc0UPyuYeeKdfkDH43CSQ/x9mE09Fe6I56cd0xX794MlAvZLpsJwMYAJ1ah48QYIoCCavb1AAvz4AxCpfnoaE7wI7+IvINn9actJaXZbzIYf95hsesM7QbOlAvrq9b6hdPR3owkoQWUgwNCuxarp3F71Er/QpPHuaKAXoG18sbr/JZz6crLMQDNPP6MKh15UxKcXEIGqkXV9eB+vLpuO/oNk/hIYh1dd+5ss7ZIP0VfPfipTpAM9ABMKki3uqIrXqzFHCNwU4tyBxSEdJ9CPojMHvo68uLXWZZuKAG73SggvljMu1MlQ19uoOGqyyTdnuknaqcZYeh3wMzUl9d/LK7XANQHXKd1qjapNV01tM0HdW0djbzRpiOQ1d+CozHCn+U3XLXUejAfHU10v/6NR4KrymlRNNFZ6vQWvvukXF0jwjPrjjmr3UP4Xcs4G7MRqGBs8nReXB7gjLhh6ED8y4xr8eSelWeaT+K9X26cGsv3vbpqO7tuEPTzgtfhC06Ogi9OArZj3roAc4qGbeNode2I2Ku4DcbFJD4EdHLw9fTkdTroRPr6fXI4etpBu1a1W7fuKZd0Mh8uUfMm8pmWdZ7mkFZtu4yadbVHjSOYT3tu21/xzHtZavCBvwuOQS9QOQn33NKR0UoHOS2No8KvuV3Y8+nF5eXF0/Jd40ItF4xHJb1CdPjZlhNbkPHF98b2T9/D93q+PkN2Ri2fsyLIob2BbZ3wqFS6+wHvd2iM87ZSY9ORh45TPeV3BTf2E7y3fgk/4Uwzf97TPKfNRP8D9M3N725zWJlxsgAAAAASUVORK5CYII=");
                g(9, "discord", 7, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAyBAMAAADVdiTZAAAAG1BMVEUA/wBI/0lu/26P/5Cl/6O8/73R/9Hn/+j///+iRuwXAAABJUlEQVQ4y83TvW7CMBQF4BsKdKVIpYxIRaJjVLUSI6JDGSNlCCOq1JC1f+CxFIL92D22E+di/ABciZB8seRj35joVZ3VN1FXBSqhRYgPJEIsSQXrAnmjL2uP5Usm81z83Bec5WM+J9T4vS8Yfzz1yFQ0v2ackKsrxr2G7d4ZPjK1O214z3no+Jdz1/EKTy1NI/w6jmcIID6JJirGe8cYdIdGIcQOwx3j/gEpI6X+qoRkGqrnd6OXFR/NRAcdOWFc6hDPera0Xk/Fozo1ck4bHsSVpg0jYJSlervGW9zWSdQXhhXozlbGek1uY9/s2hRWect7ucnsf5ld7DfosX+kcsv+AdwtDfvHdW877x/u0raB6Oa0qG35rKZhbokg41sKclQEmTr/f+SUPtWxuyYAAAAASUVORK5CYII=");
                g(10, "insta", 3, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAABgFBMVEV0ObxpQMSOOaSGPKuNOMfOKJe6LpyaOKHiJnC4MJW1L6ycNrbCLKOoM7mXOL6rM7GxM5vSKpCBQLe7MpJxRcK5ManHLp3ULIjmKWrEMYvAMo6KP7yfO5/HMYTZLH6oOZrcLXTYLYOFQcjbLnp4R7/BN4LRM37gM2xjUsrlM2RvUcNzUMvoNmG/QXZhWMvqN1xZW87ZPHfiPmVPY9S6SZroQlvSSHGQV7TNSpLSTGrsRlPZSYDlTFXXUWHvTE3xTUPdVVnsUk7gV1bWV4rtV0q0YrLyWUPjYE/1XzfDZ6vsZkjwaT/oaXb2ajmieb/fbJPua2n4by63e7b3dC3wdEvzez73fjH8gynShbflh6j5jTjZjbX8kTD5kE3Dl8fwlW/llK3fl7fxnIP5nlPaob79oj79o0nuo53ipbnnpqoA/wD+sk36sWz3tpT/uV39vFXyxcL/yWTiyN/7zZz/0nLvz9zzz9D92H/63MX339b14+v869/87/D98vr/+vj8//t610aAAAAEu0lEQVRIx3XWCVsaVxQG4KuUKMZGQSOgsigFxaqIRYISExXEBXELYIKKVrGusQ3pKCoMfz3fOXeGgS7fwxNw5rx3OTNkEDdafmvNzMz09PT4+MTEr0h/f//o6KheKf4DzFA9lU/8ImOzjY7+hDQRo3RGlk/IcpsNL9vQ0NAbio6IUN04Ms1rkaPbZFD+WuaNjCTjTZFroWKTUW2EDZE2bA/F+FerN8p7XvfINBSRNk6/BDbT9vZ2sSn7+6sdPXp+pjSIaMPw2+Wayqk3Qn/VyqtN6kZwPedduam0NWrZ09WlK0HjC4ENbNeMcdUaRzXmrK12UXoAMTpv2PSuxqMV91c9SK8eT2SjWKZTtcjbt1IJrjeZ2ss4rKwaxZbe3ld6IgpmKnd3SyQYmNq3cVAZ1oDFYunjWGReWRSsYIMMlGDQTpOoqy3lgxS8l2vPnwcicppuUoJBeweWW/bogKudTryczkMUP/eZMeTzAJtuQaKjY1itq0U5PlfHDkulw5jTabWWaOuDZki1TxpBYtizgSOfuZ5HVrixqnJot8eq6OPgIBVsDCBMOoaHPfs4EuHxna6Y0rikqhKzx0qA1hiNaWYjsChchyITv9PlcsWeuRgXko3fzpHETEiwsBRxloHLpdDiS4lAIFGiS6gEAgEQF8ihmY2AwLZLOOJ3ueyBAHco4Q64kQQmVL+MjIwwqR9ayZgFzdE3WKJZXBgwgElqCZ+WBOZR3G6gAD79brVqBH3yg9Ti8XA4nMBoV2Gv1+vDy+e7wlAJMkzsbISnL+L3+3GqFg2PjY2dYoVRvHd2eilx/PnF53O7JWEjCMSnaLT5WeS6Xq/Su8MBBoPKqyZCRkxNxaPReVSqi3MIkbm5EFAQqrMTlae0QiYjZIhE5+cXiSy9Ry7xYWthASo0Gww6orQw2lWYCRtBYHGJyMoysovtXy9QoCaDtOA4LdAnyQgRAksrRNaSlCesbDe5/IFQaIua3EmtAFFP3TyNILCyRuvZTFHwqf60m0omgbb4UjocMGHMfupmI5aW1tbWNpmk0+n19fUKTlYvd5PJ3esq3TCTQTJh2pRGVgA2N89wJJvhZJ/4tqxW+X5WZkNsmPjYCBLZNJNPlEwmVzH+A3t4vzDHJt5ECKQzJzh9wuTT3t7e2ZP8ij1dJj9SFyYdjh2QHRA3kWwuk8tlUfM1n8/rKnt2eXmWXU+lPn4gE3ScUrd9bEQ2R8m/1OuVfP7ggF5yqr0MetEwuMGfvRphkM9j/erxgRYNZTKamQvN0wWiG0cj+XyhcIKVVQq6KdASm80DRtzxejVCoHB0RG2qnB/J4AhQw2w9ULs7DcLi6PyFelT5fvcHUmCTQ8c30YgH6l81jntAEhKFo4uLi7uXludQI/JQdSvooGmIkLjg3Ffq//tIelicDI7p5EYDt7e3f95VXv75IMMs6stf+AaF5Cw+N56Ver3Mt8fH7418Rc5OsqkUbuvQrLYweoiTkOUy0t7echtyOXQtlUKfJx1jRPi5z+BbS+4Rw6RTqWVczlmD3PxL6EozaXzhsBkQn0//2XPPRX83p2GOcc9uppLLkjT9uOL6Rz0SSXPORpKW32M3NwbQEU90fn58LMmcXvkDXWCtCs7c/y4AAAAASUVORK5CYII=");
                g(11, "emojis", 4, "data:image/png;base64, ");
                g(12, "flags", 3, "data:image/png;base64, ");
                g(13, "bestTeam", 5, "data:image/png;base64, ");
                g(14, "bestPlayer", 5, "data:image/png;base64, ");
                g(15, "zoom", 6, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAuBAMAAACllzYEAAAAHlBMVEUAAAAhIyA3ODZTVVJrbWqEhoOkpqO8v7vX2tb///8goTJXAAABaElEQVQ4y32Tu1ODQBDGL8QAdlg5dml8dZTa2TijXQpnIh2TwoQOxwehi2PB0flKYP/b7HFv5nALBn5337d7ewshXZyuKX2PST8egUW76OE7EJFa+BhJ9bSsUWFaeTV3GKHbn8EvlB79bjSv4VO8jUr4VdiHNnK938MHPie0Yh+ZLqmGuNsJ7CNURgewI5qPoRE86GwkJyWIBIfcUfJrmMm0sclDyDnPWmLyADacl8jnRbEGKIoiJRP4EmU2LJmIDfLvAf7z/37mv6IUm08pzbV/rx5f1pPA1Fn/iX3eS3nekAslz7gcGw9bg3uqn6Rup5oH+uaTLpO4r0SmZVuUFE2lfTc+z1qr9+BVtGJqzq1RHNfQdAtnrEW75UwuXOFgvj3crpCyDu6UIpP9fPHZU5XkiYVXvsXIPcc+VwspzY2pPorE/NgCfYK+QJ5+QFA6fjQt2A4IWuIWODixe2ELcuIUNJGL+zQle92exY5pfDIaAAAAAElFTkSuQmCC");
                g(16, "apple", 3, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAAA8BAMAAAA9AI20AAAAG1BMVEUAAAAjJCJUVlOEhoOanZkA/wC8vrvW2dX7/fq38z8cAAAEbUlEQVRYw+2YzXOiSBTAGzW6x8ZY6pGYFMMxUct4JGbLcMwld9QpliNkLeUqUvT7s+e9BoUITpIpuWxtp0IJdP943/3B3t7eXtnF2xViGZIbf1+8mVcS3YQKmk3o16AKtLhCdAsqad4be3WrQcdX7BUqalesURXaZM2q0DZr/TfQQVVo8fTXb/LgzO9SiQpon/WPg0fjk5j3cuNnH74ZQPcztOBsegz6xnP7i+i99Tk6ZOwoadwH34LnR5jDBB6j9RjR4vkF4pEF6wmho1EQOyP83uwWuisX1uPgPNpmdciho/5efwiWoiZau86T5QX+ZACL+S0MpEKDVW9/PTMAljq0R026P4/WmJFHx30v2E/9+GFj7KzI8IIZ+K6AZdyCAXbowd3ewN9kkA4McYB+Hs078BG9gNgI/12trJ1L6BGEVjRoRwbZOsbrfipaqa1nUXvQOY+eB1kUIXpv+BAZ0VM8DI5od7id4auh7DBK0VOJ/rEtt7WYqXoAmxvlLn0f94Tp7qx3K24LFRL0IrCDOxiIzgZtLbqim6INQosevJSiTZwtr2ccr6lWsaJ2IFaRocM4Re/x0WIwhEV7hD2e1GmCjtUA0fB0Y5Shw9x8bCWPtlu6BIeswD95K7YiTT6xpWQJZG7ic7ovQ9/n0MZFa4jIkeuXLU/hpYXO0H4O7V4WbWfkWvZ6NT4zbp3F6HfQOVNzpXx8RDHalcX0c7SZobM5XpwzjqlMHA0/azf/FL1XeKlLBccKF6G7v4vObL2rm6WzciznC631NXTO1pl97ZZHKtxMl/wOdWiLG+UxQVO+btwFV7AMrDk99bvvbYhvFL2A9op5jnL1Q1KB38lgDxUz/a5gvYM8CsToUsUFr85rMqWnp+hdDt08mtSKGKI413/yOmaVMl8m+aQpE9nBbGzBV17WaHtPuXYipm+0xil6n0Mr7sGkgSAVUBxMqSAkWbVmmmBtqp9k63v8t2uotgs+dgwP9jyi4/xOJHVkqJBNEN2ieLBCikSvlqxWsJcu0YKCCHn0wqb6eojXrPLxIpp8aKJMvE/mnYZknJ1ySEfyCaFJL7SbVycFHMc5uCpDm0Vjmw3HMXGEDG5mkBJSk6Qt0T6IllLihdCaHD09RfvF0id7KglaFNBk9lN0nXZfBYNEhdInmIoNbwoGiZ1EqYJBWuWrJ+20PkX0CZQWeDN1I0LsuizuFAWmlBoSNwKhZXJugwLaP7VH4jGth8EXwELB4OtiPDRlOP3ACwazjY6+J2fXJdrHjlExQmRWfUh0WwY/ysbV6xkWrZDx8cMxZRwNlfDYLYqkk0cJHbGOo9VKljgLpky2K04SJROxfIXxynVOfg+VBcal/O47S9YUe/Sy0ORTQsswM0rQ4iepsnEO96pcaYdqwI31YCINOrtNtV2pqpxl1nNUd0hPo7lcJg0m39rLpEU7F3cX2yb9jz5paRJ8WNF9BV3hRrrC7X+FhxYVHrVUeEBU5bFWhYdxb6+Nf7YXbpv0CLGqg89fkK30UIXyeWIAAAAASUVORK5CYII=");
                g(17, "open link", 7, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAPBAMAAADpFNeEAAAAGFBMVEUA/wBi/2N//4CX/5i//8DU/9Pq/+r///90hWfkAAAA6klEQVQoz5XSPQ+CMBAG4FME1i6GlUHjSuLA6uaqEyt+JF3VSt+/b99WhRQG7XCB0qdcrycia42rkomxgJ2edsP8AfYEKH8Gc+CYaLQ/g5Szm8mcpkGGZwgurwsDKqfrrgf6kaNKcMihCpwk5+YZOr+2DMCOQBuAtkoKgpTgvsQOd7cCOMSg82DJz/0fHKjewMQAW4KGxRyeAYqBTyNgCFy6gyq517MEYKAjUNsA2nAPc95DyMaHW4Pu0wNoCVIQPJjN96aHoIjBzINqD9X30vu8cKW6JTGQ2pc18x2x0pbdOgTSxCD1YAHzAmJBjxvc7JBGAAAAAElFTkSuQmCC");
                g(18, "loading", 6, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZEAAABGBAMAAAD/Q7RHAAAAGFBMVEUAAAAnKSZKTElucG2Fh4SoqqfLzcr///+y5yZlAAAEnUlEQVRo3u3aS3PaMBAAYGNsuHoy0+TKTJv6SjNNfeWSciVNJlydF7qGl/n7JTGSd1e7wgaFaWfMKfFD1qeXV5KD8cb8kuC//rWSVtJKWkkraSWtpJW0klbSSlpJK2klraSV/KuSbw9qe8HsfnCyfHVuZu95Kmb3iUdJ+KAvKf7gM119vDoUb8Bv9gLsu2PD97+n4O/tr1/+OzHXXiqTRjHyJukqkLcndKqnDw94yTYfty7JoyD5jtIYeZJ0FEr2Fp670EcnkgScYiRrXkJLI/EjyUjOhtzduSwpBrJEJ4YloSJJPHqRRDRnK3DSPHIpS8w5TjLnJJlVGIkPydjKWdVsw+pZDokueE5SMJKunULuQcIky5a/S7KQJbtiQZLUTmHlQcIkW13YYyqKkRQOycKWKNcjD5dwyebMYJA7JLscspLCknAJgLHxUEnEJbtkmAuXZC5LysqEEq4V1OkoeySm/bxenf22ujd41NolWTskCyoxxfNydXajrL55qCSDXe4LeaNHdl8wkiLofP2NxwNeUhBJiKKJiBbUwRKFBtIxbrVlha3wCzMGGYzROMxLPhIDkhjn/aOtFa93x0o6uHJ1Cb3Bce1NoZYMJabN5w7JEkv6uLSibQT+w0PcFZGhQyFYmZ18CnVY0q0hKbAks6JrL1F9j4S6Gar50jVK0csLSTR97pC85x9IprW7+CESU0B9psCTHroGS8ZgwJAkSyRRqAF7k/TJyIFkWhCjesOSC5CAJNk+GEjqvwobSVIS9sRwVO3vzoXo2TEXGhZOSQ4knUazq/qSDMXe1QgAbp3rBpFzkl4dyQpIurBnqibhilsyJo2WeU6us7U8WLIZ2JLgkyUhkFSNKoN5x5K4liSvJNEnSaZE0gG5ic1dfThFaSTRQ9vpJbBOqsE3hp20kUS/r9JPl0itKzGjwbrqPXlzia5jdXIJ7I+qCsrhFKVRjyeLD6DHJ54lrlEYVIQC789mkliSDD1LUhIEgTdjJEzXm0nw7Bq840eeJY5opSesBrHv+LUoyQTJ5BgJM113RJCpMNnGknSfJKYSGEH6l3BR/dS+4c2WwBidlaDmxUX1oR+JMNNa8MtHK0vSgUZekhIJnWl5kpDZb7fKGLM2iebuBZqp5bIk3rBTepN1TxJT8gO00jJhO3x5FZSYDYuJLKGdgaxI6P9BwxuZgyt4cI8kYxrOR4770kphJTm7VmhZSZCk+H68ShRcbjxJ4MrdNWxFY2mlMJaanSSJyAClwCN/Pmx8SaJ9zc46wUkWLglISl5NPV4irXCH7B1F0xVuvMXnWOH2IBF2HWLcLUE81mjXgWzRTODI7VvSdfafBZmBjRruBKHXp667jKvt5GiJsDuXkXBfmXbXaHeuPHGOJVzfHAXHS/gdU0W2Naam9BvtmJIdwIn0jnsKPEj4XWy6KlVFio12sXE5aElX2GY8VkJ2xx9hRSV2kByLW8WypEcilHNuI+l4Cf7a45ldLzZ5GVrfN4yC/ZKQhu6/ECTxJQnCKoK/s6cdqDfl5AscuIMjS/S/7Bc4z3SlR5DU+5VfRRWvp/sqKiy/iqr/IdZfF1HJgRmsN+0AAAAASUVORK5CYII=");
                g(19, "target", 7, "data:image/png;base64, ")
            }
        }
            ;
        this.bz = function (n) {
            return x[n]
        }
            ;
        this.l4 = function (n) {
            for (var z = l.length - 1; 0 <= z; z--)
                if (l[z] === n)
                    return x[z];
            return t
        }
            ;
        this.bx = function () {
            return 0 === k
        }
    }
    function kD() {
        function g(D, L) {
            tq[D] = 0;
            tq[D + 1] = 0;
            tq[D + 2] = L;
            tq[D + 3] = 0;
            k(D)
        }
        function k(D) {
            if (!h4.h5) {
                var L = b5.gB(D);
                D = b5.cF(D);
                h4.h5 = L >= gu.tp[0] && L <= gu.tp[2] && D >= gu.tp[1] && D <= gu.tp[3]
            }
        }
        var x = [224, 224, 224], l = [[172, 172, 172], [144, 0, 0], [0, 128, 0], [0, 0, 144], [128, 128, 0], [128, 0, 128], [0, 128, 128], [196, 196, 196], [0, 0, 0]], t = [[4, 4, 4, 20], [4, 0, 0, 27], [0, 4, 0, 31], [0, 0, 4, 27], [4, 4, 0, 31], [4, 0, 4, 31], [0, 4, 4, 31], [4, 4, 4, 14], [4, 4, 4, 13]], n, z, y, A, B, C, F, E, H, J, K;
        this.bp = function (D) {
            n = new Uint8Array(b8);
            z = new Uint8Array(b8);
            y = new Uint8Array(b8);
            A = new Uint8Array(b8);
            B = new Uint8Array(b8);
            C = new Uint8Array(b8);
            F = new Uint8Array(b8);
            E = new Uint8Array(b8);
            H = new Uint8Array(b8);
            J = new Uint8Array(b8);
            this.qo = new Uint8Array(b8);
            K = new Int32Array(4);
            K[0] = -4 * aZ;
            K[1] = 4;
            K[2] = -K[0];
            K[3] = -K[1];
            if (dA)
                for (var L, I = b8 - 1; 0 <= I; I--)
                    L = dW.id[dW.dX[I]],
                        D = as((t[L][3] + 1) * ce.random(), ce.value(100)),
                        n[I] = l[L][0] + D * t[L][0],
                        z[I] = l[L][1] + D * t[L][1],
                        y[I] = l[L][2] + D * t[L][2];
            else {
                for (L = b8 - 1; L >= cq; L--)
                    n[L] = 4 * as(64 * ce.random(), ce.value(100)),
                        z[L] = 4 * as(64 * ce.random(), ce.value(100)),
                        y[L] = 4 * as(64 * ce.random(), ce.value(100));
                for (L = cq - 1; 0 <= L; L--)
                    n[L] = 4 * D[L].xI[0],
                        z[L] = 4 * D[L].xI[1],
                        y[L] = 4 * D[L].xI[2]
            }
            for (D = b8 - 1; 0 <= D; D--)
                L = as(n[D] + z[D] + y[D], 3),
                    n[D] += yM(L - n[D], 2),
                    z[D] += yM(L - z[D], 2),
                    y[D] += yM(L - y[D], 2),
                    n[D] -= n[D] % 4,
                    z[D] -= z[D] % 4,
                    y[D] -= y[D] % 4;
            for (D = b8 - 1; 0 <= D; D--)
                n[D] += as(D, 128),
                    z[D] += as(D % 128, 32),
                    y[D] += as(D % 32, 8),
                    A[D] = D % 8;
            this.yJ();
            for (D = b8 - 1; 0 <= D; D--)
                B[D] = 32 > n[D] ? n[D] + 32 : n[D] - 32,
                    C[D] = 32 > z[D] ? z[D] + 32 : z[D] - 32,
                    F[D] = 32 > y[D] ? y[D] + 32 : y[D] - 32;
            for (D = b8 - 1; 0 <= D; D--)
                E[D] = 235 < n[D] ? n[D] - 20 : n[D] + 20,
                    H[D] = 235 < z[D] ? z[D] - 20 : z[D] + 20,
                    J[D] = 235 < y[D] ? y[D] - 20 : y[D] + 20
        }
            ;
        this.yJ = function () {
            for (var D = b8 - 1; 0 <= D; D--)
                this.qo[D] = 280 > n[D] + z[D] + y[D] ? 0 : 1
        }
            ;
        this.gB = function (D) {
            return as(D, 4) % aZ
        }
            ;
        this.cF = function (D) {
            return as(D, 4 * aZ)
        }
            ;
        this.ex = function (D, L) {
            return Math.floor(4 * (L * aZ + D))
        }
            ;
        this.hY = function (D) {
            return this.yN(D + K[0]) || this.yN(D + K[1]) || this.yN(D + K[2]) || this.yN(D + K[3])
        }
            ;
        this.hW = function (D, L) {
            return this.yO(D + K[0], L) || this.yO(D + K[1], L) || this.yO(D + K[2], L) || this.yO(D + K[3], L)
        }
            ;
        this.bE = function (D) {
            return 208 <= tq[D + 3]
        }
            ;
        this.he = function (D, L) {
            return this.bE(L) && this.yP(D, L)
        }
            ;
        this.yP = function (D, L) {
            return D === this.bF(L)
        }
            ;
        this.yQ = function (D) {
            return 208 <= tq[D + 3] && 224 > tq[D + 3]
        }
            ;
        this.cU = function (D) {
            return 224 <= tq[D + 3] && 248 > tq[D + 3]
        }
            ;
        this.hX = function (D) {
            for (var L = 3; 0 <= L; L--)
                if (this.yR(D + K[L]))
                    return !0;
            return !1
        }
            ;
        this.yS = function (D) {
            return 192 <= tq[D + 3] && 208 > tq[D + 3]
        }
            ;
        this.yT = function (D, L) {
            return this.yS(D) && L === this.bF(D)
        }
            ;
        this.b6 = function (D) {
            return this.bE(D) || this.bG(D)
        }
            ;
        this.yR = function (D) {
            return 0 === tq[D + 3] && 2 === tq[D + 2] || this.yS(D)
        }
            ;
        this.bG = function (D) {
            return 0 === tq[D + 3] && 1 === tq[D + 2]
        }
            ;
        this.yN = function (D) {
            return 0 === tq[D + 3] && 3 === tq[D + 2]
        }
            ;
        this.yO = function (D, L) {
            return this.bG(D) || this.bE(D) && L !== this.bF(D)
        }
            ;
        this.bF = function (D) {
            return tq[D] % 4 * 128 + tq[D + 1] % 4 * 32 + tq[D + 2] % 4 * 8 + tq[D + 3] % 8
        }
            ;
        this.hf = function (D) {
            g(D, 1)
        }
            ;
        this.yV = function (D) {
            g(D, 2)
        }
            ;
        this.hV = function (D, L) {
            tq[D] = n[L];
            tq[D + 1] = z[L];
            tq[D + 2] = y[L];
            tq[D + 3] = 208 + A[L];
            k(D)
        }
            ;
        this.b7 = function (D, L) {
            tq[D] = B[L];
            tq[D + 1] = C[L];
            tq[D + 2] = F[L];
            tq[D + 3] = 224 + A[L];
            k(D)
        }
            ;
        this.cW = function (D, L) {
            tq[D] = E[L];
            tq[D + 1] = H[L];
            tq[D + 2] = J[L];
            tq[D + 3] = 248 + A[L];
            k(D)
        }
            ;
        this.yY = function (D, L) {
            tq[D] = x[0] + n[L] % 4;
            tq[D + 1] = x[1] + z[L] % 4;
            tq[D + 2] = x[2] + y[L] % 4;
            tq[D + 3] = 192 + A[L];
            k(D)
        }
    }
    function kE() {
        function g() {
            for (var C = 0, F = 1; 5 > F; F++)
                C += z[F] % 1024;
            return C
        }
        function k() {
            for (var C = 1; C < y - B; C++)
                z[C] = parseInt(z[C])
        }
        function x() {
            z[0] = "[FX] " + "Player " + Math.floor(1E3 * Math.random());
            z[1] = r < s ? Math.floor(1 + Math.random() * (Math.pow(2, 30) - 1)) : 0;
            z[2] = 1;
            z[3] = 1;
            z[4] = r < s ? 0 : 1;
            z[5] = 0;
            z[6] = "000";
            z[7] = "0";
            z[8] = "0";
            z[9] = "0";
            f.y()
        }
        function l() {
            for (var C = y - B - 1; 0 <= C; C--)
                z[C] = m.n(z[C]);
            z[0] = m.iO(z[0])
        }
        function t(C, F, E) {
            var H = new Date;
            H.setTime(H.getTime() + Math.floor(31536E6 * E));
            C = C + "=" + F + ";expires=" + H.toUTCString() + ";SameSite=Strict;Secure;path=/";
            document.cookie = C
        }
        var n, z, y, A, B;
        this.bp = function () {
            if (!(5 <= d || b)) {
                B = 4;
                A = 0;
                n = [];
                y = 10;
                for (var C = 0; C < y; C++)
                    n.push("u" + C);
                z = Array(y);
                for (var F, E = document.cookie.split(";"), H = E.length - 1; 0 <= H; H--) {
                    E[H] = E[H].trim();
                    for (C = 2; 0 <= C; C--)
                        E[H] = E[H].replace(" ", "");
                    3 < E[H].length && (C = n.indexOf(E[H].substring(0, 2)),
                        F = E[H].indexOf("="),
                        0 <= C && 2 === F ? z[C] = E[H].substring(F + 1, E[H].length) : 0 < F && t(E[H].substring(0, F), "0", 0))
                }
                z[9] || (z[9] = "0");
                a: {
                    for (C = y - 1; 0 <= C; C--)
                        if (void 0 === z[C]) {
                            C = !1;
                            break a
                        }
                    C = !0
                }
                C ? (A = 2,
                    l(),
                    k(),
                    g() !== z[5] && x()) : x()
            }
        }
            ;
        this.y = function () {
            if (2 === A) {
                z[1] = 0 === z[1] ? Math.floor(1 + Math.random() * (Math.pow(2, 30) - 1)) : z[1];
                z[5] = g();
                for (var C = 1; C < y - B; C++)
                    z[C] = z[C].toString();
                z[0] = m.iN(z[0]);
                for (C = y - B - 1; 0 <= C; C--)
                    z[C] = m.z(z[C]);
                for (C = y - 1; 0 <= C; C--)
                    t(n[C], z[C], 1);
                l();
                k()
            }
        }
            ;
        this.a0 = function () {
            return A
        }
            ;
        this.nM = function (C) {
            A = C;
            this.y()
        }
            ;
        this.x = function (C, F) {
            5 <= d || b || (z[C] = F)
        }
            ;
        this.g = function (C) {
            return 5 <= d || b ? 0 : z[C]
        }
    }
    function kd() {
        function g(l) {
            for (k -= 2; l < k; l += 2)
                x[l] = x[l + 2],
                    x[l + 1] = x[l + 3]
        }
        var k = 0
            , x = new Uint16Array(32);
        this.bp = function () {
            k = 0
        }
            ;
        this.dF = function () {
            if (0 !== k)
                if (0 === fB[aw] || ae.yq(aw) === ae.af(aw))
                    k = 0;
                else {
                    var l;
                    for (l = k - 2; 0 <= l; l -= 2) {
                        var t = x[l];
                        if (t < b8 && 0 === fB[t])
                            g(l);
                        else {
                            var n = x[l + 1];
                            if (t >= b8 && la(aw) || t < b8 && lf(aw, t))
                                dt ? fH(aw, t, n) : ii.lP(n, t === b8 ? aw : t),
                                    g(l)
                        }
                    }
                }
        }
            ;
        this.lS = function (l, t) {
            var n;
            a: {
                for (n = 0; n < k; n += 2)
                    if (x[n] === l) {
                        x[n + 1] += t;
                        x[n + 1] = qe(x[n + 1], 1E3);
                        n = !0;
                        break a
                    }
                n = !1
            }
            n || 32 === k || (x[k] = l,
                x[k + 1] = t,
                k += 2)
        }
    }
    function fi(g) {
        yt(g);
        yu(g);
        yv(g);
        au.av(g);
        eG.fz(g);
        ae.yw(g)
    }
    function yt(g) {
        hm.l9(g) && io++;
        var k = ae.yy(g);
        0 === k.length ? g === aw && yz() : (z0(g, k),
            z1(g, k))
    }
    function yz() {
        b0.b1[17] += ax[aw] + ae.z2(aw);
        eS.show(!1, !1);
        e7.tB()
    }
    function z0(g, k) {
        var x;
        for (x = k.length - 1; 0 <= x; x--)
            ae.z3(k[x], g)
    }
    function z4(g) {
        var k, x = 0;
        for (k = g.length - 1; 1 <= k; k--)
            bU[g[k]] > bU[g[x]] && (x = k);
        return x
    }
    function z1(g, k) {
        var x, l = k[z4(k)];
        9 === dr && 1 === dW.dX[g] && ce.dP(8) && dy.z6(l);
        if (g === aw)
            e5.fh(l, 1),
                yz();
        else {
            for (x = k.length - 1; 0 <= x; x--)
                if (k[x] === aw) {
                    e5.fh(g, 0);
                    return
                }
            g < cq && e5.mb(0, g, l)
        }
    }
    function yv(g) {
        fB[g] = ax[g] = 0;
        b4[g] = null;
        bM[g] = null;
        bN[g] = null;
        bQ[g] = null;
        eE.fd(g)
    }
    function yu(g) {
        var k, x;
        for (k = cz[g]; k >= d0[g]; k--)
            for (x = d2[g]; x >= d3[g]; x--) {
                var l = 4 * (x * aZ + k);
                b5.he(g, l) && (b5.hf(l),
                    bU[g]--)
            }
    }
    function kk() {
        this.z7 = null;
        this.z9 = null; 
        this.bp = function () {
            this.z7 = document.createElement("INPUT");
            this.z7.setAttribute("type", "file");
            this.z7.setAttribute("accept", ".gif,.jpg,.jpeg,.png,.json");
            this.z7.setAttribute("id", "inputfilebtn");


            this.z7.style.position = "absolute";
            this.z7.style.color = this.me(255, 255, 255);
            this.lq();
            this.z7.addEventListener("change", function (g) {
                jo.z8(g)
            })
        }
            ;
        this.me = function (g, k, x) {
            return "rgb(" + g + "," + k + "," + x + ")"
        }
            ;
        this.lq = function () {
            var g = Math.floor(.22 * ja.cw / pF)
                , k = Math.max(Math.floor(.5 * gA / pF - 4 * g), 0);
            gA < cB && (k = Math.floor(cA / pF));
            this.z7.style.font = bt + g + bu;
            this.z7.style.left = k + "px";
            this.z7.style.bottom = Math.floor(cA / pF) + "px"
        }
            ;
        this.cE = function (g) {
            g ? document.body.appendChild(this.z7) : document.body.removeChild(this.z7)
        }
    }
    function kj() {
        function g(t) {
            (t = t.target.files) && 0 < t.length && jo.zE(t[0])
        }
        function k(t) {
            var n = new Image;
            n.onload = x;
            n.src = t.target.result
        }
        function x(t) {
            var n = t.target;
            t = n.width;
            var z = n.height;
            8192 < t || 8192 < z || 2 > t || 2 > z ? alert("Image w & h must be between 2 and 8192 pixels.") : (wo = 3,
                wp = 16384,
                aZ = t,
                aa = z,
                hk.width = aZ,
                hk.height = aa,
                pc.drawImage(n, 0, 0),
                wz = pc.getImageData(0, 0, aZ, aa).data)
        }
        var l;
        this.bp = function () {
            l = document.createElement("input");
            l.type = "file";
            l.onchange = g
        }
            ;
        this.zC = function () {
            l.click()
        }
            ;
        this.z8 = function (t) {
            g(t)
        }
            ;
        this.zE = function (t) {
            var n = t.name.split(".");
            var z = n[n.length - 1].toLowerCase();
            "json" === z || "gif" !== z && "jpg" !== z && "jpeg" !== z && "png" !== z || (jf.zI = n[0],
                z = new FileReader,
                z.onload = k,
                z.readAsDataURL(t))
        }
            ;
        this.pS = function (t) {
            if (0 === aJ.pR() || 2 === aJ.pR())
                t.stopPropagation(),
                    t.preventDefault(),
                    t.dataTransfer.dropEffect = "copy"
        }
            ;
        this.pT = function (t) {
            if (0 === aJ.pR() || 2 === aJ.pR())
                t.stopPropagation(),
                    t.preventDefault(),
                    (t = t.dataTransfer.files) && 0 < t.length && jo.zE(t[0])
        }
    }
    function kh() {
        this.zN = null;
        this.bp = function () {
            this.zN = 10 !== dr ? null : new Uint32Array(b8)
        }
            ;
        this.dF = function () {
            10 === dr && this.zO()
        }
            ;
        this.zO = function () {
            var g, k = this.zN, x = dZ, l = ax;
            for (g = dY - 1; 0 <= g; g--) {
                var t = x[g];
                if (!(t >= cq)) {
                    var n = Math.max(as(l[t], 4), 2048);
                    var z = Math.max(ay.tN(t), 100);
                    k[t] += as(z * n, 1E4);
                    k[t] > n && (k[t] = n)
                }
            }
        }
            ;
        this.tj = function (g, k) {
            if (k > this.zN[g])
                return k = this.zN[g],
                    this.zN[g] = 0,
                    k;
            this.zN[g] -= k;
            return k
        }
    }
    function kl() {
        function g(n) {
            jD.zQ(JSON.parse(n.target.result));
            jD.lC()
        }
        function k(n) {
            if (22 >= n.length)
                return !1;
            jD.jE.map = 0;
            jD.jE.seedMap = 0;
            x0(0, 0);
            "data:image/png;base64," !== n.substring(0, 22) && (n = "data:image/png;base64," + n);
            var z = new Image;
            z.onload = function () {
                wo = 3;
                wp = 16384;
                aZ = z.width;
                aa = z.height;
                8192 < aZ || 8192 < aa || 2 > aZ || 2 > aa ? (x0(0, 0),
                    alert("Image w & h must be between 2 and 8192.")) : (hk.width = aZ,
                        hk.height = aa,
                        pc.drawImage(z, 0, 0),
                        wz = pc.getImageData(0, 0, aZ, aa).data)
            }
                ;
            z.src = n;
            jD.jE.mapBase64 = "";
            return !0
        }
        function x(n, z, y, A) {
            return "string" !== typeof n || n.length < z ? A : n.length > y ? n.substring(0, y) : n
        }
        function l(n, z) {
            return Math.min(Math.max(Math.floor(n), 0), z)
        }
        function t(n) {
            return "number" === typeof n
        }
        this.jE = null;
        this.zP = function (n) {
            var z = new FileReader;
            z.onload = g;
            z.readAsText(n)
        }
            ;
        this.zQ = function (n) {
            this.jE = {};
            this.jE.map = t(n.map) ? l(n.map, 13) : 0;
            this.jE.seedMap = t(n.seedMap) ? l(n.seedMap, 16383) : 0;
            this.jE.seedSpawn = t(n.seedSpawn) ? l(n.seedSpawn, 16383) : 0;
            this.jE.customSpawn = "boolean" === typeof n.customSpawn ? n.customSpawn : !1;
            var z = this.jE;
            var y = n.zU;
            y = Array.isArray(y) && 3 === y.length ? y : null;
            z.zU = y;
            this.jE.numberPlayers = t(n.numberPlayers) ? l(n.numberPlayers, 512) : 512;
            this.jE.playerX = Array.isArray(n.playerX) ? n.playerX : [];
            this.jE.playerY = Array.isArray(n.playerY) ? n.playerY : [];
            this.jE.playerName = Array.isArray(n.playerName) ? n.playerName : [];
            this.jE.playerStrength = Array.isArray(n.playerStrength) ? n.playerStrength : [];
            this.jE.playerTeam = Array.isArray(n.playerTeam) ? n.playerTeam : [];
            this.jE.mapName = x(n.mapName, 1, 25, "Map");
            this.jE.description = x(n.description, 0, 400, "");
            this.jE.mapBase64 = "string" === typeof n.mapBase64 ? n.mapBase64 : "";
            this.zX()
        }
            ;
        this.zX = function () {
            var n, z = this.jE.playerName.length;
            for (n = 0; n < z; n++)
                this.jE.playerName[n] = x(this.jE.playerName[n], 3, 24, "Bot")
        }
            ;
        this.lC = function () {
            k(this.jE.mapBase64) || x0(jD.jE.map, jD.jE.seedMap)
        }
    }
    function kF() {
        function g(y) {
            return y < cq ? k * y : k * cq + x * (y - cq)
        }
        var k, x, l, t, n, z;
        this.bp = function () {
            k = 16 > cq ? 12 : 8;
            x = 4;
            var y = g(b8);
            l = new Uint8Array(b8);
            t = new Uint16Array(y);
            n = new Uint32Array(y);
            z = new Uint16Array(y)
        }
            ;
        this.yw = function (y) {
            l[y] = 0
        }
            ;
        this.z3 = function (y, A) {
            var B;
            a: {
                var C = g(y);
                for (B = l[y] - 1; 0 <= B; B--)
                    if (0 === z[C + B] && t[C + B] === A)
                        break a;
                B = l[y]
            }
            B !== l[y] && (C = n[g(y) + B],
                this.b2(y, B),
                this.cQ(y, C, b8))
        }
            ;
        this.co = function (y, A) {
            var B, C = g(y);
            for (B = l[y] - 1; 0 <= B; B--)
                if (0 === z[C + B] && t[C + B] === A)
                    return !0;
            return !1
        }
            ;
        this.dD = function (y) {
            return y < cq ? l[y] < k : l[y] < x
        }
            ;
        this.af = function (y) {
            return l[y]
        }
            ;
        this.al = function (y, A) {
            return t[g(y) + A]
        }
            ;
        this.ag = function (y, A) {
            return z[g(y) + A]
        }
            ;
        this.fR = function (y, A) {
            var B, C = g(y);
            for (B = l[y] - 1; 0 <= B; B--)
                if (z[C + B] === A)
                    return B;
            return -1
        }
            ;
        this.am = function (y, A) {
            return n[g(y) + A]
        }
            ;
        this.bi = function (y, A) {
            var B, C = g(y);
            for (B = l[y] - 1; 0 <= B; B--)
                if (0 === z[C + B] && t[C + B] === A)
                    return n[C + B];
            return 0
        }
            ;
        this.z2 = function (y) {
            var A = g(y)
                , B = 0;
            for (y = l[y] - 1; 0 <= y; y--)
                B += n[A + y];
            return B
        }
            ;
        this.zh = function (y) {
            var A = g(y)
                , B = 0;
            for (y = l[y] - 1; 0 <= y; y--)
                0 === z[A + y] && (B += n[A + y]);
            return B
        }
            ;
        this.yq = function (y) {
            var A = g(y)
                , B = 0;
            for (y = l[y] - 1; 0 <= y; y--)
                0 < z[A + y] && B++;
            return B
        }
            ;
        this.bh = function (y, A, B) {
            var C = g(y);
            for (y = l[y] - 1; 0 <= y; y--)
                0 === z[C + y] && t[C + y] === A && (n[C + y] = B)
        }
            ;
        this.bT = function (y, A, B) {
            n[g(y) + A] = B
        }
            ;
        this.cQ = function (y, A, B) {
            var C, F = g(y);
            B === aw && b0.b1[y < cq ? 6 : 5]++;
            for (C = l[y] - 1; 0 <= C; C--)
                if (0 === z[F + C] && t[F + C] === B) {
                    n[F + C] += A;
                    n[F + C] = n[F + C] > j2 ? j2 : n[F + C];
                    return
                }
            t[F + l[y]] = B;
            n[F + l[y]] = A;
            z[F + l[y]] = 0;
            l[y]++;
            y < cq && (B === aw ? e5.fh(y, 5) : y === aw && e6.md(B))
        }
            ;
        this.tk = function (y, A, B) {
            var C = g(y);
            fB[y] = 2;
            t[C + l[y]] = 0;
            n[C + l[y]] = A;
            z[C + l[y]] = B;
            l[y]++
        }
            ;
        this.b2 = function (y, A) {
            var B;
            if (0 !== l[y]) {
                var C = g(y);
                l[y]--;
                for (B = A; B < l[y]; B++)
                    t[C + B] = t[C + B + 1],
                        n[C + B] = n[C + B + 1],
                        z[C + B] = z[C + B + 1]
            }
        }
            ;
        this.yy = function (y) {
            var A, B, C = [];
            for (A = dY - 1; 0 <= A; A--) {
                var F = g(dZ[A]);
                for (B = l[dZ[A]] - 1; 0 <= B; B--)
                    if (0 === z[F + B] && t[F + B] === y) {
                        C.push(dZ[A]);
                        break
                    }
            }
            return C
        }
    }
    function kG() {
        var g, k, x, l, t, n;
        this.bp = function () {
            l = x = k = g = 10
        }
            ;
        this.zo = function () {
            n = 512;
            t = new Uint16Array(n);
            for (var z = 0; z < n; z++)
                t[z] = 100 + bl(as(25600 * z, n - 4), 9)
        }
            ;
        this.s8 = function () {
            return l
        }
            ;
        this.dF = function () {
            if (0 >= --x) {
                x = g;
                var z, y = ax[aw];
                dt && !dA && 0 !== fB[0] && 0 === du.dv[0].bD && (ax[0] += as(bU[0], 6));
                for (z = dY - 1; 0 <= z; z--) {
                    var A = as(ay.tN(dZ[z]) * ax[dZ[z]], 1E4);
                    ax[dZ[z]] += 1 > A ? 1 : A;
                    ay.az(dZ[z])
                }
                b0.b1[9] += ax[aw] - y;
                if (0 >= --l) {
                    l = k;
                    z = ax[aw];
                    for (A = dY - 1; 0 <= A; A--)
                        ax[dZ[A]] += bU[dZ[A]],
                            ay.az(dZ[A]);
                    b0.b1[8] += ax[aw] - z
                }
            }
        }
            ;
        this.tN = function (z) {
            var y = t[as((n - 1) * bU[z], j1)];
            if (1920 > c4.dU()) {
                var A = as(100 * (13440 - 6 * c4.dU()), 1920);
                y = A > y ? A : y
            }
            A = this.dJ(z);
            ax[z] > A && (y -= as(2 * y * (ax[z] - A), A));
            return 0 > y ? 0 : 700 < y ? 700 : y
        }
            ;
        this.dJ = function (z) {
            z = 100 * bU[z];
            return z > j3 ? j3 : z
        }
            ;
        this.az = function (z) {
            var y = bU[z] * iz;
            ax[z] = ax[z] > j2 ? j2 : ax[z] > y ? y : ax[z]
        }
    }
    function kH() {
        function g() {
            X.width = gA;
            X.height = cB;
            V = X.getContext("2d", {
                alpha: !0
            });
            V.textAlign = cJ;
            V.textBaseline = cI;
            V.imageSmoothingEnabled = !0
        }
        function k() {
            W = !1;
            U = 1;
            R = P = 0;
            V.clearRect(0, 0, gA, cB);
            for (var O = g8 / g3, T = g9 / g3, Y = (gA + g8) / g3, Z = (cB + g9) / g3, ha, ma, fa, ea, qa, ua = 0 !== fB[aw] && hm.l9(aw), za = dY - 1; 0 <= za; za--)
                if (fa = dZ[za],
                    ea = Math.floor(Q * g3 * K[fa] * H[fa]),
                    !(ea < M || ea >= L) && F[fa] + H[fa] > O && F[fa] < Y && E[fa] + J[fa] > T && E[fa] < Z) {
                    ha = Math.floor(gA * (F[fa] + H[fa] / 2 - O) / (Y - O));
                    ma = Math.floor(cB * (E[fa] + J[fa] / 2 - T) / (Z - T) - .1 * ea);
                    V.font = of[fP[fa]] + ea + bu;
                    qa = V;
                    var ra = fa;
                    ra = ea >= I && ea < L ? dW.a0f[b5.qo[ra]] + t(ea).toFixed(3) + ")" : dW.a0g[b5.qo[ra]];
                    qa.fillStyle = ra;
                    V.fillText(8 === dr ? eL.gF(ax[fa]) : gE[fa], ha, ma);
                    W = !0;
                    if (0 < ca[fa]) {
                        qa = ha;
                        ra = ma;
                        var va = ea
                            , sa = fa;
                        if (0 === sD[sa])
                            if (a5.o4(ba[sa])) {
                                var Aa = qa
                                    , ta = va
                                    , ya = sa;
                                sa = ba[sa];
                                var wa = .9 * ta / a5.c1
                                    , Ca = Math.floor(ra - .5 * wa * a5.c1 - .05 * ta);
                                V.globalAlpha = t(ta);
                                for (var Ba = Math.floor(Aa - .5 * ta / D[ya] - .4 * ta - wa * a5.c1), xa = 0; 2 > xa; xa++)
                                    V.setTransform(wa, 0, 0, wa, Ba, Ca),
                                        V.drawImage(a5.l0[sa], 0, 0),
                                        Ba = Math.floor(Aa + .5 * ta / D[ya] + .4 * ta);
                                V.globalAlpha = 1;
                                V.setTransform(1, 0, 0, 1, 0, 0);
                                x(qa, ra, va, 0, 0)
                            } else
                                a5.o3(ba[sa]) ? (l(qa, ra, va, ba[sa], 0),
                                    x(qa, ra, va, 0, 1)) : (l(qa, ra, va, ba[sa], 1),
                                        x(qa, ra, va, 1, 0));
                        else
                            l(qa, ra, va, ba[sa], 0)
                    } else
                        0 === sD[fa] && x(ha, ma, ea, 0, 0);
                    if (ua && (0 < ca[fa + b8] || 0 < ca[fa + 2 * b8] || 0 < ca[fa + 3 * b8] || 0 < ca[fa + 4 * b8])) {
                        ra = ha;
                        va = ma;
                        Aa = ea;
                        ta = fa;
                        ya = -1;
                        for (qa = 4; 1 <= qa; qa--)
                            0 < ca[ta + qa * b8] && ya++;
                        for (qa = 1; 5 > qa; qa++)
                            0 < ca[ta + qa * b8] && (sa = Aa,
                                wa = qa,
                                Ca = ta,
                                Ba = ca[ta + qa * b8],
                                xa = .8 * sa / a5.c1,
                                V.setTransform(xa, 0, 0, xa, Math.floor(ra - .5 * xa * a5.c1 - .534 * ya * sa), Math.floor(va + 1.4 * xa * a5.c1)),
                                V.globalAlpha = t(sa),
                                V.drawImage(1 === wa ? a5.l0[ba[Ca + b8]] : 2 === wa && 255 > Ba ? hm.ky[2] : hm.kx[wa + 3], 0, 0),
                                V.globalAlpha = 1,
                                V.setTransform(1, 0, 0, 1, 0, 0),
                                ya -= 2)
                    }
                    qa = Math.floor(N * ea);
                    qa < M || (V.font = bt + qa + bu,
                        V.fillText(8 === dr ? gE[fa] : eL.gF(ax[fa]), ha, ma + Math.floor(.78 * ea)))
                }
        }
        function x(O, T, Y, Z, ha) {
            var ma = .95 * Y / S;
            V.setTransform(ma, 0, 0, ma, Math.floor(O - .5 * ma * pa + .8 * Z * Y), Math.floor(T - 1.76 * ma * S - .82 * ha * Y));
            V.globalAlpha = t(Y);
            V.drawImage(bw.bz(4), 0, 0);
            V.globalAlpha = 1;
            V.setTransform(1, 0, 0, 1, 0, 0)
        }
        function l(O, T, Y, Z, ha) {
            var ma = 1.2 * Y / a5.c1;
            V.setTransform(ma, 0, 0, ma, Math.floor(O - .5 * ma * a5.c1 - .8 * ha * Y), Math.floor(T - 1.5 * ma * a5.c1));
            V.globalAlpha = t(Y);
            V.drawImage(a5.l0[Z], 0, 0);
            V.globalAlpha = 1;
            V.setTransform(1, 0, 0, 1, 0, 0)
        }
        function t(O) {
            return O >= I && O < L ? 1 - (O - I) / (L - I) : 1
        }
        function n(O) {
            var T, Y = F[O];
            for (T = F[O] - d0[O] - 1; 0 <= T; T--)
                if (Y--,
                    !y(O, Y, E[O], J[O])) {
                    Y++;
                    break
                }
            var Z = F[O];
            for (T = cz[O] - F[O] - H[O]; 0 <= T; T--)
                if (Z++,
                    !y(O, Z + H[O] - 1, E[O], J[O])) {
                    Z--;
                    break
                }
            Y = Math.floor((Y + Z) / 2);
            Z = E[O];
            for (T = E[O] - d3[O] - 1; 0 <= T; T--)
                if (Z--,
                    !A(O, Y, Z, H[O])) {
                    Z++;
                    break
                }
            var ha = E[O];
            for (T = d2[O] - E[O] - J[O]; 0 <= T; T--)
                if (ha++,
                    !A(O, Y, ha + J[O] - 1, H[O])) {
                    ha--;
                    break
                }
            T = Math.floor((Z + ha) / 2);
            z(O, Y, T, H[O], J[O]) && (F[O] = Y,
                E[O] = T)
        }
        function z(O, T, Y, Z, ha) {
            var ma;
            for (ma = T + Z - 1; ma >= T; ma--)
                if (!y(O, ma, Y, ha))
                    return !1;
            var fa = Math.floor(.25 * ha);
            fa = 1 > fa ? 1 : fa;
            for (ma = Y + ha - 1 - fa; ma >= Y + fa; ma--)
                if (!A(O, T, ma, Z))
                    return !1;
            return !0
        }
        function y(O, T, Y, Z) {
            return b5.he(O, 4 * (Y * aZ + T)) && b5.he(O, 4 * ((Y + Z - 1) * aZ + T))
        }
        function A(O, T, Y, Z) {
            return b5.he(O, 4 * (Y * aZ + T)) && b5.he(O, 4 * (Y * aZ + T + Z - 1))
        }
        var B, C, F, E, H, J, K, D, L, I, N, G, M, Q, R, P, U, W, X, V, na, ba, ca, pa, S;
        this.bp = function () {
            W = !1;
            Q = .88;
            N = .5;
            G = 1.8;
            L = Math.floor(.5 * pB);
            I = Math.floor(.2 * L);
            M = 8 === dr ? jm.a0L ? 6 : 4 : jm.a0L ? 10 : 7;
            C = B = 0;
            F = new Uint16Array(b8);
            E = new Uint16Array(b8);
            H = new Uint16Array(b8);
            J = new Uint16Array(b8);
            K = new Float32Array(b8);
            D = new Float32Array(b8);
            ba = new Uint8Array(2 * b8);
            ca = new Uint8Array(5 * b8);
            X = X ? X : document.createElement("canvas");
            g();
            P = R = 0;
            U = 1;
            na = 0;
            if (8 === dr) {
                var O;
                V.font = bt + 100 + bu;
                var T = 100 / Math.floor(V.measureText("20 000 000").width);
                for (O = b8 - 1; 0 <= O; O--)
                    D[O] = K[O] = T
            } else
                for (V.font = bt + Math.floor(100 * N) + bu,
                    T = 80 / Math.floor(V.measureText(eL.gF(j2)).width),
                    V.font = bt + 100 + bu,
                    O = b8 - 1; 0 <= O; O--)
                    D[O] = 100 / Math.floor(V.measureText(gE[O]).width),
                        K[O] = T < D[O] ? T : D[O];
            for (O = b8 - 1; 0 <= O; O--)
                12 > bU[O] ? (F[O] = d0[O] + 1,
                    E[O] = d3[O] + 1,
                    H[O] = 1,
                    J[O] = 1) : (F[O] = d0[O],
                        E[O] = d3[O] + 1,
                        H[O] = 4,
                        J[O] = 2);
            if (fY)
                for (O = 0; O < cq; O++)
                    H[O] = 0;
            pa = bw.bz(4).width;
            S = bw.bz(4).height
        }
            ;
        this.lq = function () {
            g();
            k()
        }
            ;
        this.iw = function () {
            for (var O = na = 0; O < cq; O++)
                3 !== cz[O] - d0[O] || 3 !== d2[O] - d3[O] ? (F[O] = d0[O] + (cz[O] !== d0[O] ? 1 : 0),
                    E[O] = d3[O],
                    H[O] = 1,
                    J[O] = 1) : (F[O] = d0[O],
                        E[O] = d3[O] + 1,
                        H[O] = 4,
                        J[O] = 2)
        }
            ;
        this.mv = function (O, T, Y) {
            0 === fB[O] || 4 !== T && 2 === fP[O] || (O += T * b8,
                0 === T ? ba[O] === Y && 0 < ca[O] ? ca[O] = 0 : (ba[O] = Y,
                    ca[O] = a5.o4(Y) ? 255 : 64) : 1 === T ? (ca[O] = 64,
                        ba[O] = Y) : ca[O] = Y)
        }
            ;
        this.cG = function () {
            W && (1 !== U ? (cH.imageSmoothingEnabled = !0,
                cH.setTransform(U, 0, 0, U, 0, 0),
                cH.drawImage(X, -R / U, -P / U),
                cH.setTransform(1, 0, 0, 1, 0, 0)) : (cH.imageSmoothingEnabled = !1,
                    cH.drawImage(X, -R, -P)))
        }
            ;
        this.rJ = function (O, T) {
            R += O;
            P += T
        }
            ;
        this.lh = function (O, T) {
            e6.rJ(O, T)
        }
            ;
        this.zoom = function (O, T, Y) {
            U *= O;
            R = (R + T) * O - T;
            P = (P + Y) * O - Y
        }
            ;
        this.eX = function () {
            return 0 >= --na ? (na = 4 >= sf ? 10 : 12 > sf ? 5 : 2,
                k(),
                !0) : !1
        }
            ;
        this.gC = function (O) {
            return K[O]
        }
            ;
        this.dF = function () {
            if (4 <= ++C) {
                var O, T;
                C = 0;
                for (T = 4; 1 <= T; T--)
                    for (O = dY - 1; 0 <= O; O--) {
                        var Y = dZ[O] + T * b8;
                        0 < ca[Y] && 255 > ca[Y] && ca[Y]--
                    }
                if (2 !== fV)
                    for (O = dY - 1; 0 <= O; O--)
                        Y = dZ[O],
                            0 < ca[Y] && 255 > ca[Y] && ca[Y]--
            }
            O = Math.floor(.1 * dY);
            O = 8 > O ? 8 : O;
            O = O > dY ? dY : O;
            for (Y = B + O - 1; Y >= B; Y--)
                if (T = Y % dY,
                    T = dZ[T],
                    0 < H[T] && z(T, F[T], E[T], H[T], J[T])) {
                    for (var Z, ha, ma, fa, ea = T, qa = !1, ua = 0; 8 > ua; ua++) {
                        ha = H[ea] + 2;
                        Z = J[ea] + 2;
                        if (ha > cz[ea] - d0[ea] + 1 || Z > d2[ea] - d3[ea] + 1)
                            break;
                        fa = F[ea] - 1;
                        ma = E[ea] - 1;
                        if (z(ea, fa, ma, ha, Z))
                            F[ea] = fa,
                                E[ea] = ma,
                                H[ea] = ha,
                                J[ea] = Z,
                                qa = !0;
                        else
                            break
                    }
                    if (Z = !qa) {
                        ea = T;
                        qa = !1;
                        ua = H[ea];
                        for (var za = 1 + Math.floor(.02 * ua), ra = 1; 5 > ra; ra++) {
                            ha = ua + ra * za;
                            if (ha > cz[ea] - d0[ea] + 1)
                                break;
                            Z = 1 + Math.floor(G * K[ea] * ha);
                            if (Z > d2[ea] - d3[ea] + 1)
                                break;
                            fa = d0[ea] + Math.floor(Math.random() * (cz[ea] - d0[ea] + 2 - ha));
                            ma = d3[ea] + Math.floor(Math.random() * (d2[ea] - d3[ea] + 2 - Z));
                            z(ea, fa, ma, ha, Z) && (F[ea] = fa,
                                E[ea] = ma,
                                H[ea] = ha,
                                J[ea] = Z,
                                qa = !0)
                        }
                        Z = qa
                    }
                    Z && n(T)
                } else {
                    a: {
                        ha = T;
                        ma = F[ha] + 1;
                        fa = E[ha] + 1;
                        for (ea = H[ha] - 2; ;) {
                            if (1 > ea) {
                                H[ha] = 0;
                                break
                            }
                            Z = 1 + Math.floor(G * K[ha] * ea);
                            if (z(ha, ma, fa, ea, Z)) {
                                F[ha] = ma;
                                E[ha] = fa;
                                H[ha] = ea;
                                J[ha] = Z;
                                Z = !0;
                                break a
                            }
                            ma++;
                            fa++;
                            ea -= 2
                        }
                        Z = !1
                    }
                    if (Z)
                        n(T);
                    else
                        for (Z = T,
                            ma = cz[Z] - d0[Z] + 1,
                            ha = Math.floor(.02 * ma),
                            ha = 1 > ha ? 1 : ha,
                            T = -6 * ha; ma >= T; ma -= ha)
                            if (ea = 0 < ma ? ma : 1,
                                fa = 1 + Math.floor(G * K[Z] * ea),
                                ua = d0[Z] + Math.floor(Math.random() * (cz[Z] - d0[Z] + 2 - ea)),
                                qa = d3[Z] + Math.floor(Math.random() * (d2[Z] - d3[Z] + 2 - fa)),
                                z(Z, ua, qa, ea, fa)) {
                                F[Z] = ua;
                                E[Z] = qa;
                                H[Z] = ea;
                                J[Z] = fa;
                                break
                            }
                }
            B += O;
            B %= dY
        }
            ;
        this.md = function (O) {
            var T = O + 2 * b8
                , Y = ca[T];
            return 0 < Y ? (e5.n0(50, O),
                ca[T] = 0,
                255 === Y) : !1
        }
            ;
        this.ld = function (O) {
            return 255 === ca[O + 2 * b8]
        }
    }
    function kI() {
        function g() {
            var l;
            if (!jD.jE)
                return !1;
            var t = jD.jE.playerName.length;
            if (1 > t)
                return !1;
            for (l = cq; l < b8; l++)
                gE[l] = jD.jE.playerName[l % t];
            return !0
        }
        var k, x;
        this.bp = function () {
            var l, t;
            // k is name of bots on single player, x is name of bots in multipalyer
            k = "Abbasid Caliphate;Aceh s;Achaemenid Z;Afsharid z;Aghlabid Emirate;Ahom z;Akkadian Z;Aksumite Z;Akwamu;Alaouite z;Almohad Caliphate;Almoravid z;Angevin Z;Aq Qoyunlu;Armenian Z;Assyria;Ashanti Z;Austrian Z;Austria-Hungary;Ayyubid z;Aztec Z;Aulikara Z;Babylonian Z;Balhae;Banten s;S Banjar;Bamana Z;Bengal s;Benin Z;Kadamba z;Bornu Z;E Brazil;Britannic Z;British Z;British Raj;Bruneian Z;Bukhara Z;Burgundian State;Buyid z;Byzantine Z;Caliphate of C\u00f3rdoba;Cao Wei;Carthaginian Z;Cebu Rajahnate;Chagatai Khanate;Chalukya z;Chauhan z;Chav\u00edn Z;Chenla;Chera z;Chola z;Comanche Z;Congo Free State;Crimean Khanate;Dacian Z;Delhi s;Demak s;Durrani Z;Dutch Z;Egyptian Z;Elamite Z;Exarchate of Africa;Abyssinia;Fatimid Caliphate;First French Z;Frankish Z;Funan;Gallic Z;Gaza Z;Republic of Genoa;German Z;Ghana Z;Ghaznavid z;Ghurid z;Goguryeo;Goryeo;Gorkha Z;G\u00f6kt\u00fcrk Khaganate;Golden Horde;S Gowa;Seljuq Z;Gupta Z;Hafsid Y;Han z;Hanseatic League;E Harsha;Hephthalite Z;Hittite Z;Holy Roman Z;Hotak z;Hoysala Z;Hunnic Z;Husainid z;Idrisid z;Ilkhanate;K Israel;K Judah;Inca Z;Italian Z;E Japan;Jin z;Johor Z;Jolof Z;Joseon;Kaabu Z;Kachari Y;Kalmar Union;Kanem Z;Kanva z;Kara-Khanid Khanate;Kazakh Khanate;Khazar Khaganate;Khmer Z;Khilji z;Khwarazmian z;Kievan Rus';Konbaung z;Kong Z;Korean Z;Kushan Z;K Kush;Lakota;Latin Z;Later L\u00ea z;Liao z;Lodi s;Khmer Z;Macedonian Z;Majapahit Z;Mali Z;Malacca Z;Mamluk s;Manchukuo;Maratha Z;Marinid z;Massina Z;Mataram s;Mauretania;Mauryan Z;Median Z;Mlechchha z;Ming z;Mitanni Z;Mongol Z;Mughal Z;Nanda Z;Nguy\u1ec5n z;North Sea Z;E Nicaea;Numidia;Omani Z;Ottoman Z;Oyo Z;Pagan Z;Pahlavi z;Pala Z;Palmyrene Z;Parthian Z;Pontic Z;Portuguese Z;K Prussia;Ptolemaic Z;Qajar z;Qara Qoyunlu;Qin z;Qing z;Ramnad Sethupathis;Rashidun Caliphate;Rashtrakuta z;Roman Z;Rouran Khaganate;Rozwi Z;Rustamid z;Russian Z;Tsardom of Russia;Saadi z;Safavid z;Saffarid z;Sassanid z;Satavahana z;Samanid Z;Soviet Union;Saudeleur z;Duchy of Savoy;Seleucid Z;Serbian Z;Shu Han;Shang z;Siam Z;Sikh Z;Singhasari;Sokoto Caliphate;Song z;Songhai Z;Spanish Z;Srivijaya Z;Sui z;K Mysore;Shunga Z;S Sulu;Sumer;Sur Z;Swedish Z;Tahirid z;Tang z;T\u00e2y S\u01a1n z;S Ternate;E Thessalonica;German Reich;Tibetan Z;Tondo z;S Tidore;Timurid Z;K Tlemcen;E Trebizond;Toltec Z;Toungoo z;Toucouleur Z;Tu'i Tonga Z;Turgesh Khaganate;Umayyad Caliphate;Uyunid Emirate;Uyghur Khaganate;Uzbek Khanate;Vandal Y;Vijayanagara Z;Republic of Venice;Wari Z;Wassoulou Z;Wattasids;Western Roman Z;Eastern Wu;Western Xia z;Xin z;Yuan z;Zand z;Zhou z;Zulu Z;Yugoslavia;Kosovo;Sikkim;Kanem\u2013Bornu Z;Wadai Z;Ethiopian Z;Rozvi Z;Sasanian Z;E Vietnam;Shilluk Y;K Aksum;Gwiriko Y;Toro Y;Malindi Y;K Loango;K Mapungubwe;Ryukyu Y;K Cyprus;K Jerusalem;Garhwal Y;K Nepal;K Cambodia;Champa Y;Hanthawaddy Y;Phayao Y;K Sardinia;K Sicily;K Gwynedd;K Scotland;K Desmond;K Poland;K Hungary;K Croatia;K Bohemia;Albanian Y;K Georgia;K Portugal;Khanate of Sibir;K Romania;Cossack Hetmanate;Duchy of Bouillon;K Ireland;Lordship of Ireland;K Italy;Republic of Pisa;Idrisid z;Almoravid z;Almohad Caliphate;Marinid z;Wattasid z;Saadian z;Republic of Sal\u00e9;Rif Republic;K Kush;Makuria;Alodia;Ayyubid z;Mamluk s;Egypt Eyalet;K Fazughli;S Sennar;S Darfur;Mahdist State;S Egypt;K Egypt;Emirate of Cyrenaica;K Libya;Republic of Egypt;Republic of the Sudan;United Arab Republic;Libyan Arab Republic;Zirid z;Hafsid z;K Kuku;Regency of Algiers;Gurunsi;Liptako;Tenkodogo;Wogodogo;Yatenga;Bilanga;Bilayanga;Bongandini;Con;Macakoali;Piela;Nungu;K Sine;K Saloum;K Baol;K Cayor;K Waalo;Bundu;Bonoman;Gyaaman;Denkyira;Mankessim Y;K Dahomey;Oyo Z;K Nri;Aro Confederacy;Kwararafa;Biafra;Buganda;Bunyoro;Ankole;Busoga;Tanganyika;Kuba Y;K Luba;K Lunda;Yeke Y;K Ndongo;Kasanje Y;K Matamba;Mbunda Y;Chokwe Y;Kazembe Y;K Butua;Ndebele Y;Mthethwa Z;Bophuthatswana;Ciskei;Transkei;Venda;Rhodesia;Kart z;Nogai Horde;Khanate of Bukhara;Khanate of Khiva;Khamag Mongol;Northern Fujiwara;Kamakura Shogunate;Ashikaga Shogunate;Jaxa;Republic of Ezo;Jiangxi Soviet;Hunan Soviet;Guangzhou Commune;Gojoseon;Alaiye;Beylik of Bafra;Kara Koyunlu;Kars Republic;K Iraq;Arab Federation;Kar-Kiya z;Baduspanids;Marashiyan z;Afrasiyab z;Mihrabanid z;Safavid Iran;Sheikhdom of Kuwait;Bani Khalid Emirate;Emirate of Diriyah;Emirate of Najd;Muscat and Oman;Emirate of Riyadh;S Najd;K Hejaz;Fadhli s;Emirate of Beihan;Emirate of Dhala;S Lahej;Republic of Kuwait;K Cochin;Jaffna Y;Laur Y;Pandya z;Jaunpur s;Jaintia Y;Hyderabad State;Travancore;Udaipur State;Manikya z;Lan Xang;K Vientiane;K Champasak;Lao Issara;K Laos;Pyu States;Ava;Mon Ys;Pegu;K Mrauk U;Taungoo z;Shan States;Arakan;Raktamaritika;Singhanavati;Dvaravati;Ngoenyang;Hariphunchai;Tambralinga;Lavo Y;Langkasuka;Sukhothai Y;S Singora;Ayutthaya Y;Thonburi Y;Lan Na;Pattani Y;Jambi s;Palembang s;S Deli;S Langkat;S Serdang;S Cirebon;K Pajang;K Bali;Bima s;K Larantuka;K Banggai;Luwu;S Bone;Caucasian Albania;Kabardia;Circassia;K Abkhazia;Elisu s;Avar Khanate;Caucasian Imamate;K Imereti;K Kartli;K Kakheti;Crown of Aragon;Emirate of Granada;K Majorca;Crown of Castile;K Haiti;Cocoll\u00e1n;Zapotec Civilization;Mosquito Y;Somoza Regime;Iroquois Confederacy;Cherokee Nation;Vermont Republic;State of Muskogee;K Alo;K Sigave;K Fiji;K Nauru;K Chile;Muisca Confederation;El Stronato;K Chimor;Jungle Republic;Liga Federal;Supreme Junta;Weimar Republic;K Bavaria;Bremen;Frankfurt;Hamburg;K Hanover;Holstein;Lippe;Nassau;Oldenburg;Pomerania;Reuss;Saxe-Altenburg;Saxony;Schleswig;Waldeck;W\u00fcrttemberg;Helvetic Republic;Republic of Florence;Duchy of Urbino;Republic of Cospaia;Duchy of Lucca;Duchy of Mantua;Duchy of Milan;Papal States".split(";");
            x = "Abbasid Caliphate;Aceh s;Achaemenid Z;Afsharid z;Aghlabid Emirate;Ahom z;Akkadian Z;Aksumite Z;Akwamu;Alaouite z;Almohad Caliphate;Almoravid z;Angevin Z;Aq Qoyunlu;Armenian Z;Assyria;Ashanti Z;Austrian Z;Austria-Hungary;Ayyubid z;Aztec Z;Aulikara Z;Babylonian Z;Balhae;Banten s;S Banjar;Bamana Z;Bengal s;Benin Z;Kadamba z;Bornu Z;E Brazil;Britannic Z;British Z;British Raj;Bruneian Z;Bukhara Z;Burgundian State;Buyid z;Byzantine Z;Caliphate of C\u00f3rdoba;Cao Wei;Carthaginian Z;Cebu Rajahnate;Chagatai Khanate;Chalukya z;Chauhan z;Chav\u00edn Z;Chenla;Chera z;Chola z;Comanche Z;Congo Free State;Crimean Khanate;Dacian Z;Delhi s;Demak s;Durrani Z;Dutch Z;Egyptian Z;Elamite Z;Exarchate of Africa;Abyssinia;Fatimid Caliphate;First French Z;Frankish Z;FX Empire;Kingdom of FX;Funan;Gallic Z;Gaza Z;Republic of Genoa;German Z;Ghana Z;Ghaznavid z;Ghurid z;Goguryeo;Goryeo;Gorkha Z;G\u00f6kt\u00fcrk Khaganate;Golden Horde;S Gowa;Seljuq Z;Gupta Z;Hafsid Y;Han z;Hanseatic League;E Harsha;Hephthalite Z;Hittite Z;Holy Roman Z;Hotak z;Hoysala Z;Hunnic Z;Husainid z;Idrisid z;Ilkhanate;K Israel;K Judah;Inca Z;Italian Z;E Japan;Jin z;Johor Z;Jolof Z;Joseon;Kaabu Z;Kachari Y;Kalmar Union;Kanem Z;Kanva z;Kara-Khanid Khanate;Kazakh Khanate;Khazar Khaganate;Khmer Z;Khilji z;Khwarazmian z;Kievan Rus';Konbaung z;Kong Z;Korean Z;Kushan Z;K Kush;Lakota;Latin Z;Later L\u00ea z;Liao z;Lodi s;Khmer Z;Macedonian Z;Majapahit Z;Mali Z;Malacca Z;Mamluk s;Manchukuo;Maratha Z;Marinid z;Massina Z;Mataram s;Mauretania;Mauryan Z;Median Z;Mlechchha z;Ming z;Mitanni Z;Mongol Z;Mughal Z;Nanda Z;Nguy\u1ec5n z;North Sea Z;E Nicaea;Numidia;Omani Z;Ottoman Z;Oyo Z;Pagan Z;Pahlavi z;Pala Z;Palmyrene Z;Parthian Z;Pontic Z;Portuguese Z;K Prussia;Ptolemaic Z;Qajar z;Qara Qoyunlu;Qin z;Qing z;Ramnad Sethupathis;Rashidun Caliphate;Rashtrakuta z;Roman Z;Rouran Khaganate;Rozwi Z;Rustamid z;Russian Z;Tsardom of Russia;Saadi z;Safavid z;Saffarid z;Sassanid z;Satavahana z;Samanid Z;Soviet Union;Saudeleur z;Duchy of Savoy;Seleucid Z;Serbian Z;Shu Han;Shang z;Siam Z;Sikh Z;Singhasari;Sokoto Caliphate;Song z;Songhai Z;Spanish Z;Srivijaya Z;Sui z;K Mysore;Shunga Z;S Sulu;Sumer;Sur Z;Swedish Z;Tahirid z;Tang z;T\u00e2y S\u01a1n z;S Ternate;E Thessalonica;German Reich;Tibetan Z;Tondo z;S Tidore;Timurid Z;K Tlemcen;E Trebizond;Toltec Z;Toungoo z;Toucouleur Z;Tu'i Tonga Z;Turgesh Khaganate;Umayyad Caliphate;Uyunid Emirate;Uyghur Khaganate;Uzbek Khanate;Vandal Y;Vijayanagara Z;Republic of Venice;Wari Z;Wassoulou Z;Wattasids;Western Roman Z;Eastern Wu;Western Xia z;Xin z;Yuan z;Zand z;Zhou z;Zulu Z;Yugoslavia;Kosovo;Sikkim;Kanem\u2013Bornu Z;Wadai Z;Ethiopian Z;Rozvi Z;Sasanian Z;E Vietnam;Shilluk Y;K Aksum;Gwiriko Y;Toro Y;Malindi Y;K Loango;K Mapungubwe;Ryukyu Y;K Cyprus;K Jerusalem;Garhwal Y;K Nepal;K Cambodia;Champa Y;Hanthawaddy Y;Phayao Y;K Sardinia;K Sicily;K Gwynedd;K Scotland;K Desmond;K Poland;K Hungary;K Croatia;K Bohemia;Albanian Y;K Georgia;K Portugal;Khanate of Sibir;K Romania;Cossack Hetmanate;Duchy of Bouillon;K Ireland;Lordship of Ireland;K Italy;Republic of Pisa;Idrisid z;Almoravid z;Almohad Caliphate;Marinid z;Wattasid z;Saadian z;Republic of Sal\u00e9;Rif Republic;K Kush;Makuria;Alodia;Ayyubid z;Mamluk s;Egypt Eyalet;K Fazughli;S Sennar;S Darfur;Mahdist State;S Egypt;K Egypt;Emirate of Cyrenaica;K Libya;Republic of Egypt;Republic of the Sudan;United Arab Republic;Libyan Arab Republic;Zirid z;Hafsid z;K Kuku;Regency of Algiers;Gurunsi;Liptako;Tenkodogo;Wogodogo;Yatenga;Bilanga;Bilayanga;Bongandini;Con;Macakoali;Piela;Nungu;K Sine;K Saloum;K Baol;K Cayor;K Waalo;Bundu;Bonoman;Gyaaman;Denkyira;Mankessim Y;K Dahomey;Oyo Z;K Nri;Aro Confederacy;Kwararafa;Biafra;Buganda;Bunyoro;Ankole;Busoga;Tanganyika;Kuba Y;K Luba;K Lunda;Yeke Y;K Ndongo;Kasanje Y;K Matamba;Mbunda Y;Chokwe Y;Kazembe Y;K Butua;Ndebele Y;Mthethwa Z;Bophuthatswana;Ciskei;Transkei;Venda;Rhodesia;Kart z;Nogai Horde;Khanate of Bukhara;Khanate of Khiva;Khamag Mongol;Northern Fujiwara;Kamakura Shogunate;Ashikaga Shogunate;Jaxa;Republic of Ezo;Jiangxi Soviet;Hunan Soviet;Guangzhou Commune;Gojoseon;Alaiye;Beylik of Bafra;Kara Koyunlu;Kars Republic;K Iraq;Arab Federation;Kar-Kiya z;Baduspanids;Marashiyan z;Afrasiyab z;Mihrabanid z;Safavid Iran;Sheikhdom of Kuwait;Bani Khalid Emirate;Emirate of Diriyah;Emirate of Najd;Muscat and Oman;Emirate of Riyadh;S Najd;K Hejaz;Fadhli s;Emirate of Beihan;Emirate of Dhala;S Lahej;Republic of Kuwait;K Cochin;Jaffna Y;Laur Y;Pandya z;Jaunpur s;Jaintia Y;Hyderabad State;Travancore;Udaipur State;Manikya z;Lan Xang;K Vientiane;K Champasak;Lao Issara;K Laos;Pyu States;Ava;Mon Ys;Pegu;K Mrauk U;Taungoo z;Shan States;Arakan;Raktamaritika;Singhanavati;Dvaravati;Ngoenyang;Hariphunchai;Tambralinga;Lavo Y;Langkasuka;Sukhothai Y;S Singora;Ayutthaya Y;Thonburi Y;Lan Na;Pattani Y;Jambi s;Palembang s;S Deli;S Langkat;S Serdang;S Cirebon;K Pajang;K Bali;Bima s;K Larantuka;K Banggai;Luwu;S Bone;Caucasian Albania;Kabardia;Circassia;K Abkhazia;Elisu s;Avar Khanate;Caucasian Imamate;K Imereti;K Kartli;K Kakheti;Crown of Aragon;Emirate of Granada;K Majorca;Crown of Castile;K Haiti;Cocoll\u00e1n;Zapotec Civilization;Mosquito Y;Somoza Regime;Iroquois Confederacy;Cherokee Nation;Vermont Republic;State of Muskogee;K Alo;K Sigave;K Fiji;K Nauru;K Chile;Muisca Confederation;El Stronato;K Chimor;Jungle Republic;Liga Federal;Supreme Junta;Weimar Republic;K Bavaria;Bremen;Frankfurt;Hamburg;K Hanover;Holstein;Lippe;Nassau;Oldenburg;Pomerania;Reuss;Saxe-Altenburg;Saxony;Schleswig;Waldeck;W\u00fcrttemberg;Helvetic Republic;Republic of Florence;Duchy of Urbino;Republic of Cospaia;Duchy of Lucca;Duchy of Mantua;Duchy of Milan;Papal States".split(";");
            // check if funny names is enabled
            /*if (settings.funnyNames) {
                k = "69 Empire;Ohio;FX;FX Client;Ohio Empire;Kingdom of Trump;Republic of New York;Florida Man;United States of Islamic Free Socialist Republics of Soviets;Stalin Empire;Adolf Hitler;420;69;14;420:69;New Union;Jesus;Gamer Girl;Dragoons;Hw;Helicopter; ;F;SX;FVE;ADC;ABC;Soviet Union;LookDS;Fortnite;Fortnite Battlepass;Warzone;Minecraft;Call of FX Client;Teryak;LOL;LOL Empire;Kingdom of LOL;D;XD;LMAO;BRB;DWS;CGT;343;4456;696969;LSX;RWS;Amazon;Google;Google Empire;Kermanshah;Iran;Russia;Ukraine;Mohsen;ELOL;ELO;CHESS;Cerix;SAE;TFC;World Cup;Qatar;United Mexican States;Spanish Dum;SAFF;USSR;Crap;Fuck Empire;VBucks;Free VBucks;Gems;Steven Hawking;Q-DMR;Cocaine;DMT;PS5;Xbox;Microsft;Kingdom of Evil;Bux;Box;Dum Dum;Amogus;Among You;EsS;DRT;Ezraeel;CBF;AXS;6732;345;65;6;57;6;75687;7867;8;78;67;7546;54;634;6456;567658;768;78578;78578;768;789;79;Gd;German Empire;Fx;FX Client;FX Mod;Moms;Your Mom;X;PornHub;Kid;Childrens;SXCC;TSX;XFGT;ZALE;F;SEX;SEX Empire;Crown of ESIOS;Fr*nch;Nazis;FR;ELITE;[DREW];Swiss Person;Drew Durnil;DE;Persian K;King of Zelda;MC;Bedrocks;Rock Bottom;AES;ARSHED;Crushed;Mash Potatos;Mamad;Mohammad;ISLAM;Jesuss;ESX;Easter Egg Empire;XSAARF;Darwin;Einstin;Stalin;XEAEQQL;Serbia;Kosovo is Albania;Sun;Earth;Moon;R;MNTE;Serbs;Chad;Gigachad;GigaChad Empire;Terra Chad;Linus Tech Tips;MrBeast;D;ABSD;USA;Space Race;C;Random;Sheeesh;Kdmork;Water;[FX];FX Bot;Ohio is strong;Pineapple on Pizza;Covid-19;British Empire;ZZZZ;Zombies;PewDiePie;Zanzibar Technology;Tapels;Naples;Rome never Falls;Nik;Nuuk;Nuke Us;North Korea;Kim Jung-Un;Seoul;Washington D.C.;NN;RFVDGTRG;Polish;Poles;Mars;Jupiter;SUUUN;Andromeda;Triangulum;NGC-6;Hollywood;Bollywood;Messi;Ronaldo Dynasty;SUIIII;Habsburgs;Moscua;Rasputin;Turkey;Turkey da best;Guten Tag Poland;Polish Lithuanian Commonwealth;British Raj;Hello Your Compter Has Virus;Youtube;Indian Tech Support;Zanzibar;Optfine Empire;Kingdom of Oil;Persian Gulf has oil;Land of Freedom;BOTSWANA;Zombia;COC;Supercell;GigaCell;Megabyte;Internet Connection;CTRL + W = Chat;CTRL + W;Ohioans;Ohioan;O hio;K-POP;BTS;6ix9ine;Charleys;Mom;Your Mom;Your Mom with Belt;A+;Your Father with Milk;No Father;Kiddo;xR;iPhone is best;This is elon musk;Elon Musk;Charley Cooper;Raeesi;PACIL;Despacito;Ohio for ever;Wakanda;Wakanda for ever;Basij for life;King;Queen;Rook;e4;Chess is da best;69696969696969696969696;VCD;Robolx;Robolox;Roblox;Rubux;Free Rubux;Free Discord Nitro;Pandas;T-34;Gay;Gayreece;DRP;Drop of water;Ohio Dynasty;OHIO;OHIO;OHIO;OHIO;OHIO;OHIO;ohio;ohio;Florida;Kingdom of Florida;Yes;Reddit;Mom I'm Famous;YESSS!;undefined;UNO Reverse Card;Get Rekt;Netflix;Dj Jesus;Dancing Polish Cow;Crimea is USA;Serbia is Gay;Qatar isn't gay;Australia is fake;Australia-Hungary;Nuclear Fusion;Nuclear Bombs;Mirex;Florida;Communist Texas;Capitalist USSR;Rome always falls;Papal States of da Pope;Cuba is Sigma;Chad is Chad;Republic of Macedonia, oh wait North Macedonia;Alexander the Great was Macedonian;Turkey is Turk;Mongols are Pro-Gamers;Funky;Creep-er;Wind;Earth;History is useless;Here It Comes;Poor Albanian;Homeless Albanian;Least Angry Russian;Palestine is;West Taiwan;East Ukraine;N-Word;Shakespere;Short Guy;Peter Dum Dum;Come to Brazil;We speak Brazilian here;Third Mexican Republic;OHIO💀;Dead Kingdom;Alt+F4 for chat;GERHGRTHSDFHRTSHDRTGHRT;Gamer girl bath water;Mr. Dickhead;Mr. Cocksex;Average FX Client User;Sheeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeesh;123456789;Password;This game is written in html;".split(";");
                var _test = "Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;Ohio;".split(";");
                k = _test;
                x = k;
            }*/
            var n = "K ; Y;E ; Z; z; s;S ".split(";")
                , z = "Kingdom of ; Kingdom;Empire of ; Empire; Dynasty; Sultanate;Sultanate of ".split(";");
            for (l = k.length - 1; 0 <= l; l--)
                for (t = n.length - 1; 0 <= t; t--) {
                    k[l] = k[l].replace(n[t], z[t])
                    x[l] = x[l].replace(n[t], z[t])
                };
            if (settings.realisticNames) k = x = realisticNames;
        }
            ;
        this.jM = function () {
            if (9 === dr) {
                var l, t = ce.random(), n = x.length, z = cq + dy.dz;
                for (l = z - 1; l >= cq; l--)
                    gE[l] = "[Bot] " + x[(l + t) % n];
                for (l = z; l < b8; l++)
                    gE[l] = "[Zombie] " + x[(l + t) % n]
            } else if (dt) {
                if (!g())
                    for (t = ce.random(),
                        l = cq; l < b8; l++)
                        gE[l] = k[(l + t) % b8]
            } else
                for (t = x.length,
                    n = ce.random(),
                    l = cq; l < b8; l++)
                    gE[l] = "[Bot] " + x[(l + n) % t]
        }
            ;
        this.jN = function () {
            var l;
            if (jm.a10 && !dt) {
                a11 = Array(cq);
                var t = cq;
                var n = x.length;
                var z = ce.a12();
                for (l = 0; l < t; l++)
                    a11[l] = gE[l],
                        gE[l] = x[(l + z) % n];
                gE[aw] = a11[aw]
            }
        }
    }
    function ki() {
        this.a16 = [];
        this.a17 = [];
        this.bp = function () {
            this.a16 = [];
            this.a17 = []
        }
            ;
        this.dF = function () {
            0 <= this.a16.length && this.a18(this.a16);
            0 <= this.a17.length && this.a18(this.a17)
        }
            ;
        this.a18 = function (g) {
            var k, x = -1;
            for (k = g.length - 1; 0 <= k; k--)
                if (g[k].gY--,
                    0 >= g[k].gY) {
                    x = k;
                    break
                }
            for (k = x; 0 <= k; k--)
                g.shift()
        }
            ;
        this.lJ = function (g, k, x) {
            return this.a1A(this.a16, g, k, x)
        }
            ;
        this.a1B = function (g, k, x) {
            return this.a1A(this.a17, g, k, x)
        }
            ;
        this.a1A = function (g, k, x, l) {
            var t;
            a: {
                var n;
                for (t = x.length - 1; 0 <= t; t--)
                    for (n = g.length - 1; 0 <= n; n--)
                        if (g[n].player === x[t] && k === g[n].id) {
                            t = !0;
                            break a
                        }
                t = !1
            }
            if (t)
                return !1;
            if (l)
                for (l = x.length - 1; 0 <= l; l--)
                    g.push({
                        player: x[l],
                        id: k,
                        gY: 384
                    });
            return !0
        }
    }
    var gE, a11, fB, d0, d3, cz, d2, bU, hR, ax, b4, bM, bN, bQ, fP;
    function jH(g) {
        a11 = gE = Array(b8);
        fB = new Uint8Array(b8);
        d0 = new Uint16Array(b8);
        d3 = new Uint16Array(b8);
        cz = new Uint16Array(b8);
        d2 = new Uint16Array(b8);
        bU = new Uint32Array(b8);
        hR = new Uint32Array(b8);
        ax = new Uint32Array(b8);
        b4 = Array(b8);
        bM = Array(b8);
        bN = Array(b8);
        bQ = Array(b8);
        fP = new Uint8Array(b8);
        for (var k = g.length - 1; 0 <= k; k--)
            gE[k] = g[k].name,
                fP[k] = g[k].xJ
    }
    function kg() {
        this.nS = 0;
        this.i0 = null;
        this.bp = function () {
            this.nS = 0;
            this.i0 = []
        }
            ;
        this.fk = function (g) {
            this.i0.push(g);
            io++;
            fP[g] = 2;
            b5.qo[g] = (b5.qo[g] + 2) % 4;
            g === aw && (eS.show(!1, !1),
                e7.tB());
            e6.md(g)
        }
            ;
        this.fd = function (g) {
            var k;
            if (2 !== fP[g]) {
                var x = this.i0;
                for (k = x.length - 1; 0 <= k; k--)
                    if (x[k] === g) {
                        x.splice(k, 1);
                        break
                    }
            }
        }
            ;
        this.dF = function () {
            dt || (30 === this.nS && this.a1E(),
                this.nS = (this.nS + 1) % 60)
        }
            ;
        this.a1E = function () {
            var g, k = this.i0;
            for (g = k.length - 1; 0 <= g; g--) {
                var x = k[g];
                if (ae.dD(x)) {
                    var l = as(20 * ax[x], 100);
                    60 > l || (0 === bM[x].length ? !dE.dF(x, 2) && dA && dI(x, l, 0, 0) : dA ? dT(x, l) : db(x, l))
                }
            }
        }
    }
    function kc() {
        function g(l) {
            return x[l].a1L && k[l].a1Q()
        }
        this.w8 = 5;
        this.w9 = this.w8 - 1;
        this.vF = this.w8 + this.w9;
        var k;
        this.a1H = null;
        var x;
        this.vo = this.jV = 0;
        this.bp = function () {
            var l;
            this.a1H = Array(this.w8);
            this.a1H[0] = "territorial.io";
            this.a1H[this.w8 - 1] = "vampirr.io";
            var t = ce.a12(0);
            ce.jG(0);
            for (l = 1; l < this.w8 - 1; l++)
                this.a1H[l] = m.iR() + ".com";
            ce.jG(t);
            k = Array(this.vF);
            x = Array(this.vF);
            for (l = this.vF - 1; 0 <= l; l--)
                x[l] = {
                    a1L: !1,
                    gY: 0,
                    a1M: !1
                }
        }
            ;
        this.mt = function () {
            return this.vo < this.w8 ? this.vo : this.vo - this.w9
        }
            ;
        this.dF = function () {
            for (var l = this.vF - 1; 0 <= l; l--)
                this.vB(l) && c4.gY > x[l].gY + 15E3 && ii.a1N(l, x[l].a1M)
        }
            ;
        this.rb = function (l, t) {
            if (!x[l].a1L)
                return this.a1P(l, t),
                    !1;
            if (k[l].a1Q())
                return k[l].a1R(t),
                    k[l].vB();
            k[l].lA();
            this.a1P(l, t);
            return !1
        }
            ;
        this.a1P = function (l, t) {
            x[l].a1L = !0;
            x[l].gY = c4.gY;
            x[l].a1M = !1;
            k[l] = new a1T;
            k[l].bp(l, t)
        }
            ;
        this.a1R = function (l, t) {
            g(l) && k[l].a1R(t)
        }
            ;
        this.a1U = function (l, t) {
            0 === t ? jZ.rd() : 3 > t ? ii.u8(l, t - 1) : 3 === t ? ii.xG(l) : 4 === t ? jb.rd(l) : 5 === t ? l === this.jV && ii.a1V() : 6 === t ? ii.a1W(l) : 7 === t && ii.xf(l)
        }
            ;
        this.vB = function (l) {
            return x[l].a1L && k[l].vB()
        }
            ;
        this.send = function (l, t) {
            x[l].gY = c4.gY;
            x[l].a1M = !1;
            k[l].send(t)
        }
            ;
        this.pD = function (l) {
            x[l].a1M = !0
        }
            ;
        this.close = function (l, t) {
            g(l) && k[l].close(t)
        }
            ;
        this.a1Y = function (l, t) {
            jc.vL(t);
            g(l) && k[l].close(t)
        }
            ;
        this.vN = function (l) {
            for (var t = this.vF - 1; 0 <= t; t--)
                this.close(t, l)
        }
            ;
        this.a1Z = function (l, t) {
            for (var n = this.vF - 1; 0 <= n; n--)
                n !== l && this.close(n, t)
        }
            ;
        this.a1a = function (l, t) {
            k[l].lA();
            jc.bp(l, t.code)
        }
    }
    var dZ, dY;
    function jO() {
        var g;
        dY = 0;
        for (g = b8 - 1; 0 <= g; g--)
            0 !== fB[g] && dY++;
        dZ = new Uint16Array(dY);
        var k = 0;
        for (g = 0; g < b8; g++)
            0 !== fB[g] && (dZ[k++] = g)
    }
    function eH() {
        a1b();
        fj()
    }
    function fj() {
        for (var g = dY - 1; 0 <= g; g--)
            0 === fB[dZ[g]] && a1c(g)
    }
    function a1c(g) {
        for (dY--; g < dY; g++)
            dZ[g] = dZ[g + 1]
    }
    function a1b() {
        for (var g, k = dY - 1; 0 <= k; k--)
            bU[dZ[k]] <= as(hR[dZ[k]], 4) ? 1E3 >= bU[dZ[k]] && (2 !== fB[dZ[k]] || 0 === bU[dZ[k]]) && fi(dZ[k]) : bU[dZ[k]] >= hR[dZ[k]] ? hR[dZ[k]] = bU[dZ[k]] : (g = as(hR[dZ[k]] - bU[dZ[k]], 1E3),
                hR[dZ[k]] -= 1 > g ? 1 : g)
    }
    function ik() {
        var g, k = 0;
        for (g = dY - 1; 0 <= g; g--)
            k += ax[dZ[g]];
        return k % 4096
    }
    var oy, cH, a1d, a1e, r, s, pB, bq, gA, cB, pF, a1f, b, c, e, d, q, a1g = !1, a1h, a1i, i, gu, sf, h4, a5, b0, hn, vV, c4, dW, eP, cD, fe, vd, nN, uH, a1j, a1k, a1l = 0, a1m = "", a1n = !1;
    function a1o() {
        a1k = 2;
        a1e = 2515;
        a1d = ter_version + ter_update;
        jq();
        d8();
        a1n = !0;
        d = (e = "undefined" !== typeof Android ? Android : null) ? e.getVersion() : 0;
        12 <= d && e.prepareAd("6685097465");
        b = !1;
        window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.iosCommandA && (b = !0,
            // window.webkit.messageHandlers.iosCommandA.postMessage("prepare ad 5907904081"),
            c = "undefined" !== typeof mwIOSdataX ? mwIOSdataX : {
                username: "[FX] iOS User " + Math.floor(1E3 * Math.random()),
                id: Math.floor(1 + Math.random() * (Math.pow(2, 30) - 1)),
                zoom: !0,
                sound: !0,
                emojis: "0",
                colors: "0",
                password: "0",
                freeSpawn: !1,
                unlimitedTime: !1,
                alliances: !1
            });
        a1j = (new Date).getTime() % 1024;
        a1h = a1p();
        jj.bp();
        f.bp();
        h();
        p();
        aD();
        document.addEventListener ? document.addEventListener("contextmenu", function (g) {
            g.preventDefault()
        }, !1) : document.attachEvent("oncontextmenu", function () {
            window.event.returnValue = !1
        });
        a1q();
        document.addEventListener("keyup", a1r);
        document.addEventListener("keydown", a1s);
        document.addEventListener("visibilitychange", a1t);
        window.addEventListener("error", a1u, !0);
        sf = 10;
        x1 = new a1v;
        gu = new a1w;
        h4 = new tl;
        a5 = new nZ;
        b0 = new a1x;
        hn = new a1y;
        vV = new nH;
        c4 = new a1z;
        c4.jW();
        c4.bp();
        dW = new a20;
        eP = new a21;
        uH = new bm;
        uH.bp();
        cD = new tr;
        cD.bp();
        fe = new iT;
        vd = new ub;
        nN = new uQ;
        ou();
        ce.bp();
        ay.zo();
        jf.bp();
        jJ.bp();
        aJ.bp();
        jo.bp();
        jm.bp();
        e9.bp();
        jZ.bp();
        jL.bp();
        ox();
        bw.bp();
        c4.c5 = !0;
        setTimeout(function () {
            x0(2, 14071)
        }, 0)
    }
    function aI() {
        a1n || a1o()
    }
    function a1p() {
        try {
            return window.self !== window.top
        } catch (g) {
            return !0
        }
    }
    function a1u(g) {
        a1g || (a1g = !0,
            g.message ? (a1l = g.lineno,
                a1m = g.message,
                e9.rb(0, 6) && ii.a1W(0),
                g = "[A_ERROR " + a1l + "][" + a1m + "]",
                a22(g)) : (g = "[B_ERROR " + g.type + "][" + (g.srcElement || g.target) + "]",
                    console.log(g)))
    }
    function a22(g) {
        e ? e.showToast(g) : alert(g)
    }
    function a1s(g) {
        "ArrowLeft" === g.key ? gj.vw(3) : "ArrowUp" === g.key ? gj.vw(0) : "ArrowRight" === g.key ? gj.vw(1) : "ArrowDown" === g.key ? gj.vw(2) : "a" === g.key ? eN.qw(.96875) : "d" === g.key ? eN.qw(32 / 31) : "s" === g.key ? eN.qw(.875) : "w" === g.key ? eN.qw(8 / 7) : "1" === g.key ? eN.qw(5 / 6) : "2" === g.key && eN.qw(1.2)
    }
    function a1t() {
        "hidden" === document.visibilityState ? c4.a23() : c4.xY()
    }
    function a1r(g) {
        400 > c4.gY || (8 !== aJ.pR() && aJ.ua(g) ? c4.c5 = !0 : "Escape" === g.key ? aJ.aK() : "ArrowLeft" === g.key ? gj.a24(3) : "ArrowUp" === g.key ? gj.a24(0) : "ArrowRight" === g.key ? gj.a24(1) : "ArrowDown" === g.key ? gj.a24(2) : "h" === g.key && 1 <= fV && (ge = !ge,
            c4.c5 = !0))
    }
    function a1q() {
        a1f = window.location.hostname;
        a1i = 0 <= a1f.toLowerCase().indexOf("territorial.io")
    }
    function kJ() {
        var g;
        this.bp = function () {
            g = [];
            9 === dr && this.a26()
        }
            ;
        this.a26 = function () {
            var k = [8, 51, 68, 88, 138, 178, 313];
            var x = [35, 330];
            this.dz = 0;
            this.e0 = [0, 0, 0, 0, 0, 0];
            cq <= k[0] ? (this.dz = x[0] - cq,
                this.e0[1] = x[1] - as(x[1] * cq, k[0]),
                this.e0[0] = 512 - this.e0[1] - x[0]) : cq <= k[1] ? (this.dz = x[0] - k[0] - as((x[0] - k[0]) * (cq - k[0]), k[1] - k[0]),
                    this.e0[0] = 512 - this.dz - cq) : cq <= k[2] ? (this.e0[0] = 512 - k[1] - as((512 - k[1]) * (cq - k[1]), k[2] - k[1]),
                        this.e0[1] = 512 - cq - this.e0[0]) : cq <= k[3] ? (this.e0[1] = 512 - k[2] - as((512 - k[2]) * (cq - k[2]), k[3] - k[2]),
                            this.e0[2] = 512 - cq - this.e0[1]) : cq <= k[4] ? (this.e0[2] = 512 - k[3] - as((512 - k[3]) * (cq - k[3]), k[4] - k[3]),
                                this.e0[3] = 512 - cq - this.e0[2]) : cq <= k[5] ? (this.e0[3] = 512 - k[4] - as((512 - k[4]) * (cq - k[4]), k[5] - k[4]),
                                    this.e0[4] = 512 - cq - this.e0[3]) : cq <= k[6] ? (this.e0[4] = 512 - k[5] - as((512 - k[5]) * (cq - k[5]), k[6] - k[5]),
                                        this.e0[5] = 512 - cq - this.e0[4]) : this.e0[5] = 512 - cq;
            x = this.dz;
            for (k = 0; 6 > k; k++)
                x += this.e0[k];
            if (x > dq) {
                for (k = this.dz = 0; 5 > k; k++)
                    this.e0[k] = 0;
                this.e0[5] = dq
            }
        }
            ;
        this.z6 = function (k) {
            g.push({
                player: k,
                mm: 14 + ce.cf(20)
            })
        }
            ;
        this.dF = function () {
            if (9 === dr) {
                var k;
                for (k = g.length - 1; 0 <= k; k--)
                    0 >= --g[k].mm && (e6.mv(g[k].player, 0, 46),
                        g.splice(k))
            }
        }
    }
    var aZ, aa, hk, pc, wy, wz, wo, wp, vY, a2B = 14, x1;
    function x0(g, k) {
        g %= a2B;
        if (g !== wo || a2D(wo) && k !== wp) {
            var x = performance.now();
            vY = !1;
            x1.x2();
            ce.jG(g);
            wo = g;
            wp = k;
            a2D(g) && (jf.bz(g).a1K = k);
            if (a2E(wo))
                a2F(x);
            else {
                var l = jf.bz(wo);
                aZ = l.c1;
                aa = l.cw;
                ce.jG(l.a1K);
                jg.jM([aZ, aa, l.gK, l.gH]);
                a2G();
                jJ.a2H();
                jg.a2I();
                a2J(x)
            }
        }
    }
    function a2J(g) {
        var k = performance.now();
        sf = Math.floor(29 - (k - g) / (33 * jf.bz(wo).per));
        sf = 0 > sf ? 0 : 20 < sf ? 20 : sf
    }
    function a2L() {
        return a2B - 4
    }
    function a2E(g) {
        return g >= a2L()
    }
    function a2D(g) {
        return !(1 === g || g >= a2L())
    }
    function a2M(g) {
        return 3 === g || 7 === g || 9 === g
    }
    function a2N(g) {
        return 2 === g || 7 === g || 9 === g
    }
    function a1v() {
        function g() {
            x1.dF()
        }
        function k(l, t) {
            0 < t && (wz[l] += t,
                wz[l + 1] += t,
                wz[l + 2] += t)
        }
        function x(l) {
            return wz[l + 2] > wz[l] && wz[l + 2] > wz[l + 1]
        }
        this.rW = -1;
        this.a2O = this.aA = 0;
        this.a2P = 8;
        this.a2Q = 32;
        this.a2R = 8;
        this.a2S = 32;
        this.a2T = [0, 0];
        this.qo = [0, 0, 0, 0];
        this.a2U = null;
        this.a2V = !0;
        this.a2W = !1;
        this.x2 = function () {
            -1 !== this.rW && clearTimeout(this.rW);
            this.rW = -1;
            this.a2U = null;
            jg.a2I()
        }
            ;
        this.bp = function () {
            7 === aJ.pR() || this.a2W || (this.a2V = !0,
                this.aA = 0,
                this.a2O = 1,
                this.a2T = [jf.bz(wo).a2X[0], jf.bz(wo).a2Y[0]],
                this.qo = [jf.bz(wo).a2Z[3], jf.bz(wo).a2Z[4], jf.bz(wo).a2Z[5], jf.bz(wo).a2Z[6]],
                this.a2P = jf.bz(wo).a2Z[7],
                this.a2Q = jf.bz(wo).a2Z[8],
                this.a2R = jf.bz(wo).a2Z[9],
                this.a2S = jf.bz(wo).a2Z[10],
                this.a2V ? this.rW = setTimeout(g, 16) : this.dF())
        }
            ;
        this.dF = function () {
            if (8 === aJ.pR() && eR.gZ())
                this.rW = setTimeout(g, 16);
            else {
                if (0 === this.aA) {
                    var l = ce.a12();
                    ce.jG(jf.bz(wo).a2Z[2]);
                    jg.jM([aZ, aa, jf.bz(wo).a2Z[0], jf.bz(wo).a2Z[1]]);
                    ce.jG(l);
                    this.a2U = jg.a2b();
                    this.aA++;
                    if (this.a2V) {
                        this.rW = setTimeout(g, 16);
                        return
                    }
                }
                l = this.a2V ? 10 : 1E6;
                l = aa - this.a2O - 1 < l ? aa - this.a2O - 1 : l;
                l = this.a2O + l;
                for (var t, n, z = this.a2O; z < l; z++)
                    for (var y = 1; y < aZ - 1; y++)
                        if (n = y + z * aZ,
                            t = 4 * n,
                            x(t))
                            this.a2d(t, n, 1);
                        else {
                            this.a2d(t, n, 0);
                            n = y;
                            var A = z;
                            (1 < n && x(t - 4) || n < aZ - 2 && x(t + 4) || 1 < A && x(t - 4 * aZ) || A < aa - 2 && x(t + 4 * aZ)) && this.a2e(y, z)
                        }
                this.a2O = l;
                this.a2O >= aa - 1 ? (pc.putImageData(wy, 0, 0, 1, 1, aZ - 2, aa - 2),
                    c4.c5 = !0,
                    this.x2()) : this.a2V && (this.rW = setTimeout(g, 16))
            }
        }
            ;
        this.a2d = function (l, t, n) {
            k(l, Math.floor(this.a2T[n] + this.qo[n] * this.a2U[t] / 1E4) - wz[l])
        }
            ;
        this.a2i = function (l, t, n, z, y) {
            k(l, Math.floor(this.a2T[z] + (1 - t / n) * y) - wz[l])
        }
            ;
        this.a2e = function (l, t) {
            var n = l - this.a2Q;
            var z = t - this.a2Q;
            var y = l + this.a2Q
                , A = t + this.a2Q;
            n = 1 > n ? 1 : n;
            y = y > aZ - 2 ? aZ - 2 : y;
            A = A > aa - 2 ? aa - 2 : A;
            for (var B = 1 > z ? 1 : z; B <= A; B++)
                for (var C = n; C <= y; C++)
                    if (z = 4 * (C + B * aZ),
                        x(z)) {
                        var F = this.a2P + (this.a2Q - this.a2P) * this.a2U[C + aZ * B] / 1E4;
                        if (!(Math.abs(l - C) > F || Math.abs(t - B) > F)) {
                            var E = Math.sqrt((l - C) * (l - C) + (t - B) * (t - B));
                            E >= F || this.a2i(z, E, F, 1, this.qo[3])
                        }
                    } else
                        F = this.a2R + (this.a2S - this.a2R) * this.a2U[C + aZ * B] / 1E4,
                            Math.abs(l - C) > F || Math.abs(t - B) > F || (E = Math.sqrt((l - C) * (l - C) + (t - B) * (t - B)),
                                E >= F || this.a2i(z, E, F, 0, this.qo[2]))
        }
    }
    function a2G() {
        2 === wo ? a2k([256], [256], [0, 205, 256], [500, 500, 0], [0, 0, 0]) : 7 === wo ? a2k([512], [512], [0, 380, 512], [500, 500, 0], [0, 0, 0]) : 8 === wo ? a2k([410], [410], [0, 120, 210], [0, 80, 640], [0, 0, 0]) : 9 === wo && a2k([512], [512], [0, 70, 180, 200, 290, 420, 512], [500, 500, 0, 0, 500, 500, 0], [0, 0, 0, 0, 0, 0, 0])
    }
    function a2k(g, k, x, l, t) {
        var n, z, y, A = g.length - 1, B = aZ + aa;
        B *= B;
        var C = x.length;
        for (n = C - 1; 0 <= n; n--)
            x[n] *= x[n];
        var F = Array(C)
            , E = Array(C)
            , H = Array(C)
            , J = jg.a2b();
        if (void 0 === t)
            for (t = Array(C),
                n = C - 1; 0 <= n; n--)
                t[n] = 0;
        for (n = 1; n < C; n++)
            F[n] = x[n] - x[n - 1],
                E[n] = l[n] - l[n - 1],
                H[n] = t[n] - t[n - 1];
        for (z = aZ - 1; 0 <= z; z--)
            for (y = aa - 1; 0 <= y; y--) {
                var K = B;
                for (n = A; 0 <= n; n--) {
                    var D = (z - g[n]) * (z - g[n]) + (y - k[n]) * (y - k[n]);
                    K = D < K ? D : K
                }
                D = l[C - 1];
                var L = t[C - 1];
                for (n = 1; n < C; n++)
                    if (K < x[n]) {
                        D = l[n - 1] + yM((K - x[n - 1]) * E[n], F[n]);
                        L = t[n - 1] + yM((K - x[n - 1]) * H[n], F[n]);
                        break
                    }
                a2y(aZ * y + z, D, L, J)
            }
    }
    function a2y(g, k, x, l) {
        500 > k ? l[g] = as(l[g] * k * 2, 1E3) : 500 < k && (l[g] += as(2 * (1E4 - l[g]) * (k - 500), 1E3));
        l[g] += as(x * (10 * k - l[g]), 1E3)
    }
    function kK() {
        var g;
        this.nC = this.nB = this.n8 = this.n7 = 0;
        this.bp = function () {
            g = Array(a2L());
            g[0] = {
                c1: [0, 5E3, 8E3, 1E4],
                f7: [220, 250, 255, 220],
                mx: [190, 220, 0, 0],
                cm: [170, 200, 0, 0]
            };
            g[1] = {
                c1: [0, 4E3, 5E3, 6E3, 1E4],
                f7: [25, 0, 100, 0, 25],
                mx: [25, 0, 0, 0, 25],
                cm: [25, 0, 0, 0, 25]
            };
            g[2] = {
                c1: [0, 500, 2500, 2999, 3E3, 3200, 4200, 5200, 5700, 8800, 1E4],
                f7: [15, 15, 70, 40, 40, 40, 252, 40, 40, 20, 30],
                mx: [80, 80, 190, 90, 40, 40, 248, 180, 180, 90, 140],
                cm: [120, 120, 220, 110, 40, 40, 217, 10, 10, 10, 10]
            };
            g[3] = {
                c1: [0, 400, 1800, 2E3, 3200, 4500, 6E3, 7700, 8500, 9500, 1E4],
                f7: [10, 10, 20, 10, 30, 10, 16, 40, 55, 230, 230],
                mx: [10, 10, 40, 50, 100, 40, 80, 120, 55, 230, 230],
                cm: [80, 80, 200, 10, 60, 10, 16, 40, 55, 230, 230]
            };
            g[4] = {
                c1: [0, 300, 1400, 1700, 3E3, 4E3, 1E4],
                f7: [10, 10, 20, 10, 10, 170, 212],
                mx: [20, 20, 60, 100, 100, 110, 170],
                cm: [70, 70, 160, 30, 30, 60, 120]
            };
            g[5] = {
                c1: [0, 1E3, 3E3, 3500, 4E3, 4500, 7E3, 7500, 8E3, 1E4],
                f7: [10, 10, 20, 10, 5, 10, 20, 5, 20, 25],
                mx: [30, 30, 50, 100, 30, 100, 140, 60, 140, 200],
                cm: [80, 80, 200, 10, 5, 10, 20, 5, 20, 25]
            };
            g[6] = {
                c1: [0, 700, 2650, 3200, 5E3, 8E3, 1E4],
                f7: [10, 10, 60, 255, 255, 200, 200],
                mx: [10, 10, 60, 255, 255, 200, 200],
                cm: [80, 80, 255, 255, 255, 200, 200]
            };
            g[7] = {
                c1: [0, 400, 1999, 2E3, 3200, 4E3, 4700, 5500, 6500, 9500, 1E4],
                f7: [10, 10, 80, 255, 255, 55, 6, 70, 20, 155, 255],
                mx: [10, 10, 90, 245, 245, 170, 80, 190, 20, 155, 255],
                cm: [80, 80, 255, 235, 235, 55, 26, 10, 20, 155, 255]
            };
            g[8] = {
                c1: [0, 700, 1300, 1900, 1901, 2500, 3400, 6E3, 1E4],
                f7: [25, 30, 30, 30, 255, 255, 30, 40, 20],
                mx: [25, 30, 150, 150, 245, 245, 80, 150, 70],
                cm: [60, 170, 170, 170, 235, 235, 30, 40, 40]
            };
            g[9] = {
                c1: [0, 400, 2009, 2010, 3300, 4E3, 5200, 6500, 8E3, 9500, 1E4],
                f7: [10, 10, 80, 255, 255, 55, 23, 36, 20, 155, 255],
                mx: [10, 10, 90, 245, 245, 170, 60, 160, 20, 155, 255],
                cm: [80, 80, 255, 235, 235, 55, 9, 72, 20, 155, 255]
            }
        }
            ;
        this.a2H = function () {
            hk = document.createElement("canvas");
            hk.width = aZ;
            hk.height = aa;
            pc = hk.getContext("2d", {
                alpha: !1
            });
            var k = pc.getImageData(0, 0, aZ, aa);
            wz = k.data;
            var x = g[wo].c1, l = g[wo].f7, t = g[wo].mx, n = g[wo].cm, z, y, A = jg.a2b(), B = x.length - 2, C = Array(B + 1), F = Array(B + 1), E = Array(B + 1), H = Array(B + 1);
            for (y = B; 0 <= y; y--)
                C[y] = x[y + 1] - x[y],
                    F[y] = l[y + 1] - l[y],
                    E[y] = t[y + 1] - t[y],
                    H[y] = n[y + 1] - n[y];
            for (z = aZ * aa - 1; 0 <= z; z--)
                for (y = B; 0 <= y; y--)
                    if (A[z] >= x[y]) {
                        var J = A[z] - x[y];
                        wz[4 * z] = l[y] + yM(F[y] * J, C[y]);
                        wz[4 * z + 1] = t[y] + yM(E[y] * J, C[y]);
                        wz[4 * z + 2] = n[y] + yM(H[y] * J, C[y]);
                        wz[4 * z + 3] = 255;
                        break
                    }
            pc.putImageData(k, 0, 0);
            jf.a32() && bw.bx() && jf.a32() && (x = bw.l4("arena"),
                pc.save(),
                pc.globalAlpha = 1 === wo ? .1 : 1,
                pc.imageSmoothingEnabled = !0,
                k = 2.8,
                pc.scale(k, k),
                pc.drawImage(x, Math.floor((aZ / k - x.width) / 2), Math.floor(.5 * aa / k - x.height / 2)),
                pc.restore(),
                x = bw.l4("territorial.io"),
                pc.save(),
                pc.globalAlpha = 1 === wo ? .1 : 1,
                pc.imageSmoothingEnabled = !0,
                k = .87,
                pc.scale(k, k),
                pc.drawImage(x, Math.floor(.745 * (aZ / k - x.width)), Math.floor(.422 * aa / k - x.height / 2)),
                pc.restore());
            vY = !0;
            c4.c5 = !0
        }
            ;
        this.jK = function () {
            var k, x = 0;
            var l = aa * aZ * 4;
            var t = tq
                , n = wz;
            for (k = aZ - 1; 0 <= k; k--)
                t[4 * k + 2] = 3,
                    t[l - 4 * k - 2] = 3;
            l = 4 * aZ;
            for (k = aa - 1; 0 <= k; k--)
                t[k * l + 2] = 3,
                    t[k * l + l - 2] = 3;
            for (k = aZ * aa - 1; 0 <= k; k--)
                l = 4 * k,
                    3 !== t[l + 2] && (n[l + 2] > n[l + 1] && n[l + 2] > n[l] ? t[l + 2] = 2 : (t[l + 2] = 1,
                        x++));
            this.n7 = (aZ - 2) * (aa - 2);
            this.nC = 0;
            if (a2M(wo)) {
                n = 0;
                l = tq;
                var z = wz;
                for (t = aZ * aa - 1; 0 <= t; t--)
                    k = 4 * t,
                        z[k] === z[k + 1] && z[k] === z[k + 2] && 3 !== l[k + 2] && (n++,
                            l[k + 2] = 3);
                jJ.nC = n
            }
            this.n8 = j1 = x - this.nC;
            this.nB = this.n7 - this.n8 - this.nC
        }
    }
    function a2F(g) {
        var k;
        wo === a2L() ? k = " " : wo === a2L() + 1 ? k = " " : wo === a2L() + 2 ? k = " " : wo === a2L() + 3 && (k = " ");
        k = m.iP(k);
        var x = jf.bz(wo).a2X
            , l = jf.bz(wo).a2Y;
        aZ = 1E3 * k[0] + k[1];
        aa = 1E3 * k[2] + k[3];
        hk = document.createElement("canvas");
        hk.width = aZ;
        hk.height = aa;
        pc = hk.getContext("2d", {
            alpha: !1
        });
        wy = pc.getImageData(0, 0, aZ, aa);
        wz = wy.data;
        for (var t = k.length, n = !0, z = 0, y = 4; y < t; y++)
            if (n) {
                for (; 0 < k[y]--;)
                    wz[z] = l[0],
                        wz[z + 1] = l[1],
                        wz[z + 2] = l[2],
                        wz[z + 3] = 255,
                        z += 4;
                n = !1
            } else {
                for (; 0 < k[y]--;)
                    wz[z] = x[0],
                        wz[z + 1] = x[1],
                        wz[z + 2] = x[2],
                        wz[z + 3] = 255,
                        z += 4;
                n = !0
            }
        pc.putImageData(wy, 0, 0);
        vY = !0;
        a2J(g);
        x1.bp();
        c4.c5 = !0
    }
    function kL() {
        var g;
        this.zI = "";
        this.bp = function () {
            g = Array(a2B);
            g[0] = {
                name: "White Arena",
                c1: 230,
                cw: 230,
                gK: 1E3,
                gH: 2E3,
                a1K: 173,
                per: 1
            };
            g[1] = {
                name: "Black Arena",
                c1: 800,
                cw: 800,
                gK: 100,
                gH: 50,
                a1K: 43,
                per: 1
            };
            g[2] = {
                name: "Island",
                c1: 512,
                cw: 512,
                gK: 128,
                gH: 32,
                a1K: 0,
                per: 1.5
            };
            g[3] = {
                name: "Mountains",
                c1: 960,
                cw: 960,
                gK: 60,
                gH: 8,
                a1K: 0,
                per: 1.2
            };
            g[4] = {
                name: "Desert",
                c1: 900,
                cw: 900,
                gK: 100,
                gH: 5,
                a1K: 0,
                per: 1.2
            };
            g[5] = {
                name: "Swamp",
                c1: 1E3,
                cw: 1E3,
                gK: 100,
                gH: 40,
                a1K: 0,
                per: 1.2
            };
            g[6] = {
                name: "Snow",
                c1: 1E3,
                cw: 1E3,
                gK: 100,
                gH: 20,
                a1K: 0,
                per: 1.2
            };
            g[7] = {
                name: "Cliffs",
                c1: 1024,
                cw: 1024,
                gK: 128,
                gH: 32,
                a1K: 0,
                per: 1.5
            };
            g[8] = {
                name: "Pond",
                c1: 820,
                cw: 820,
                gK: 200,
                gH: 100,
                a1K: 0,
                per: 1.2
            };
            g[9] = {
                name: "Halo",
                c1: 1024,
                cw: 1024,
                gK: 128,
                gH: 32,
                a1K: 0,
                per: 1.5
            };
            g[10] = {
                name: "Europe",
                a2X: [140, 130, 120],
                a2Y: [12, 12, 76],
                a2Z: [240, 120, 4672, 30, 26, 30, 90, 8, 32, 3, 9],
                per: 1
            };
            g[11] = {
                name: "World",
                a2X: [165, 145, 125],
                a2Y: [15, 15, 69],
                a2Z: [250, 100, 8, 25, 15, 25, 90, 8, 32, 3, 9],
                per: 1
            };
            g[12] = {
                name: "Caucasia",
                a2X: [140, 130, 120],
                a2Y: [20, 20, 84],
                a2Z: [240, 120, 100, 30, 25, 30, 90, 8, 32, 3, 9],
                per: 1
            };
            g[13] = {
                name: "USA 48",
                a2X: [120, 105, 92],
                a2Y: [12, 12, 60],
                a2Z: [300, 300, 9827, 26, 18, 36, 36, 8, 32, 3, 9],
                per: 1
            }
        }
            ;
        this.a32 = function () {
            return 1 === wo
        }
            ;
        this.bz = function (k) {
            return g[k]
        }
            ;
        this.n6 = function () {
            return 16384 === wp ? this.zI : this.bz(wo).name
        }
    }
    var hl, tq, jP, jQ;
    function jI() {
        void 0 === hl && (hl = document.createElement("canvas"));
        hl.width = aZ;
        hl.height = aa;
        jP = hl.getContext("2d", {
            alpha: !0
        });
        jQ = jP.getImageData(0, 0, aZ, aa);
        tq = jQ.data
    }
    function kM() {
        function g(I, N, G) {
            C[0] = I;
            for (I = 1; I < G; I++)
                C[I] = C[I - 1] + N,
                    1E4 <= C[I] ? (C[I] = 9999,
                        N = -N) : 0 > C[I] ? (C[I] = 0,
                            N = -N) : (N += 16384 <= ce.random() ? B : -B,
                                N = N < -A ? -A : N > A ? A : N)
        }
        function k(I, N, G, M) {
            if (G)
                for (G = 0; G < M; G++)
                    t[N * n + I + G] = C[G];
            else
                for (G = 0; G < M; G++)
                    t[N * n + I + G * n] = C[G]
        }
        function x(I, N) {
            var G = I - C[N - 1];
            if (0 !== G) {
                var M = 1 + as(Math.abs(G), N - 1);
                M = 0 > G ? -M : M;
                C[N - 1] = I;
                var Q = N - 1 - as(Math.abs(G), Math.abs(M));
                Q = 1 > Q ? 1 : Q > N - 2 ? N - 2 : Q;
                for (var R = N - 2; R >= Q; R--)
                    C[R] += G - (N - 1 - R) * M;
                if (0 > G)
                    for (G = N - 2; 1 <= G; G--)
                        0 > C[G] && (C[G] = -C[G] - 1);
                else
                    for (G = N - 2; 1 <= G; G--)
                        1E4 <= C[G] && (C[G] = 2E4 - C[G] - 1)
            }
        }
        function l(I) {
            for (var N = 0; N < I.length - 1; N++)
                I[N] = I[N + 1] - I[N];
            I[I.length - 1] = I[I.length - 3]
        }
        var t, n, z, y, A, B, C, F, E, H, J, K, D, L;
        this.jM = function (I) {
            n = I[0];
            z = I[1];
            A = I[2];
            B = I[3];
            t = new Int16Array(n * z);
            y = n > z ? n : z;
            C = new Int16Array(y);
            F = [];
            E = [];
            H = [];
            J = Array(n);
            K = Array(z);
            for (I = n - 1; 0 <= I; I--)
                J[I] = !1;
            for (I = z - 1; 0 <= I; I--)
                K[I] = !1;
            D = new Int16Array(n);
            L = new Int16Array(z);
            I = y;
            var N = ce.random() % 1E4
                , G = ce.random() % (2 * A + 1) - A;
            g(N, G, I);
            I = L;
            N = C;
            G = z;
            for (var M = 0; M < G; M++)
                I[M] = N[M];
            k(0, 0, !0, n);
            I = t[0];
            N = y;
            G = ce.random() % (2 * A + 1) - A;
            g(I, G, N);
            I = D;
            N = C;
            G = n;
            for (M = 0; M < G; M++)
                I[M] = N[M];
            k(0, 0, !1, z);
            l(D);
            l(L);
            g(t[n - 1], D[n - 1], z);
            k(n - 1, 0, !1, z);
            g(t[n * (z - 1)], L[z - 1], n);
            x(t[n * z - 1], n);
            k(0, z - 1, !0, n);
            J[n - 1] = J[0] = !0;
            K[z - 1] = K[0] = !0;
            I = n;
            F.push(0);
            E.push(I);
            H.push(!0);
            I = z;
            F.push(0);
            E.push(I);
            H.push(!1);
            a: for (; ;) {
                I = F.length - 1;
                for (N = I - 1; 0 <= N; N--)
                    E[N] > E[I] && (I = N);
                if (5 > E[I])
                    break a;
                N = F[I] + as(E[I], 2);
                if (H[I]) {
                    G = void 0;
                    var Q;
                    M = N;
                    for (var R = 0, P = 0; P < z - 1;) {
                        for (Q = R + 1; Q < z; Q++)
                            if (K[Q]) {
                                P = Q;
                                break
                            }
                        Q = P - R + 1;
                        g(t[M + n * R], 0 === R ? D[M] : C[G - 1] - C[G - 2], Q);
                        x(t[P * n + M], Q);
                        k(M, R, !1, Q);
                        G = Q;
                        R = P
                    }
                    J[M] = !0
                } else {
                    G = void 0;
                    M = N;
                    for (P = R = 0; P < n - 1;) {
                        for (Q = R + 1; Q < n; Q++)
                            if (J[Q]) {
                                P = Q;
                                break
                            }
                        Q = P - R + 1;
                        g(t[M * n + R], 0 === R ? L[M] : C[G - 1] - C[G - 2], Q);
                        x(t[M * n + P], Q);
                        k(R, M, !0, Q);
                        G = Q;
                        R = P
                    }
                    K[M] = !0
                }
                G = F[I] + E[I] - N;
                M = H[I];
                F.push(N);
                E.push(G);
                H.push(M);
                E[I] = N - F[I] + 1
            }
            for (I = 0; I < n; I++)
                if (!J[I])
                    for (N = 0; N < z; N++)
                        K[N] || (G = t[N * n + I - 1] + t[(N - 1) * n + I],
                            M = 2,
                            J[I + 1] && (M++,
                                G += t[N * n + I + 1]),
                            K[N + 1] && (M++,
                                G += t[(N + 1) * n + I]),
                            t[N * n + I] = as(G, M))
        }
            ;
        this.a2b = function () {
            return t
        }
            ;
        this.a2I = function () {
            t = null
        }
    }
    function as(g, k) {
        return Math.floor(g / k + 1 / (2 * k))
    }
    function yM(g, k) {
        return 0 <= g ? as(g, k) : -as(-g, k)
    }
    function d5(g) {
        return g * g
    }
    function mU(g, k) {
        return g > k ? g : k
    }
    function qe(g, k) {
        return g < k ? g : k
    }
    function sy(g, k, x) {
        return k < g ? g : k > x ? x : k
    }
    function a3q(g, k) {
        for (var x = as(g + 1, 2), l = 0; l < k; l++)
            x = as(x + as(g, x), 2);
        return x
    }
    function bl(g, k) {
        return 1 > g ? 0 : a3q(g, k)
    }
    function a3r(g, k, x, l, t, n, z, y) {
        return !(g + x <= t || k + l <= n || g >= t + z || k >= n + y)
    }
    function a3s(g, k, x, l, t, n, z, y) {
        return g <= t && k <= n && g + x >= t + z && k + l >= n + y
    }
    function ke() {
        function g() {
            vd.uc[2] = vd.uc[3] = vd.uc[4] = !jm.a3t;
            if (settings.hideAllLinks && (jm.a3t)) vd.uc[0] = vd.uc[1] = false;
            else vd.uc[0] = vd.uc[1] = true;
            var y = jm.a10 ? 1 : 0
                , A = jm.a3t ? 1 : 0
                , B = jm.a0L ? 1 : 0;
            b ? (window.webkit.messageHandlers.iosCommandA.postMessage("freeSpawn " + y),
                window.webkit.messageHandlers.iosCommandA.postMessage("unlimitedTime " + A)) : 5 <= d ? (e.saveNumber(25, y),
                    e.saveNumber(26, A)) : (f.x(6, 4 * B + 2 * A + y),
                        f.y())
        }
        function k(y, A, B, C) {
            if (0 === C)
                return y >= B.f3 && (0 === C || A >= B.f4) && A <= B.f4 + B.nI;
            A -= C * (B.nI - 2);
            return y >= B.f5 && (0 === C || A >= B.f4) && A <= B.f4 + B.nI
        }
        function x() {
            var y = Math.floor((q ? .145 : .09) * bq)
                , A = Math.floor(1.5 * y)
                , B = Math.floor(.065 * (q ? .53 : .36) * bq);
            return {
                f3: r - y - B,
                f4: cA,
                hw: y,
                nI: Math.floor(.35 * y),
                f5: r - A - B,
                hx: A
            }
        }
        function l(y, A, B, C, F, E, H, J, K, D) {
            D = Math.floor(D * C);
            cH.font = bt + D + bu;
            J && (F += 80,
                E += 80,
                H += 80);
            cH.fillStyle = "rgba(" + F + "," + E + "," + H + ",0.6)";
            cH.fillRect(y, A, B, C);
            cH.fillStyle = cK;
            cH.fillRect(y, A, B, 2);
            cH.fillRect(y, A + C - 2, B, 2);
            cH.fillRect(y, A, 2, C);
            cH.fillRect(y + B - 2, A, 2, C);
            cH.fillText(K, Math.floor(y + B / 2), Math.floor(A + C / 2 + .1 * D))
        }
        this.xd = 1;
        this.a0L = this.a3t = this.a10 = !1;
        var t = -1
            , n = !1
            , z = [];
        this.bp = function () {
            z = [];
            z.push({
                name: "More",
                id: 0,
                f7: 140,
                mx: 120,
                cm: 0
            });
            z.push({
                name: "Lobby 1",
                id: 1,
                f7: 0,
                mx: 0,
                cm: 0
            });
            z.push({
                name: "Hide Usernames",
                id: 2,
                f7: 0,
                mx: 0,
                cm: 0
            });
            z.push({
                name: "Hide Links",
                id: 3,
                f7: 0,
                mx: 0,
                cm: 0
            });
            !b && 5 > d && z.push({
                name: "High Resolution",
                id: 4,
                f7: 0,
                mx: 0,
                cm: 0
            });
            z.push({
                name: "Tutorial",
                id: 5,
                f7: 0,
                mx: 0,
                cm: 0
            });
            z.push({
                name: "Player List",
                id: 6,
                f7: 0,
                mx: 0,
                cm: 0
            });
            z.push({
                name: "Clan List",
                id: 7,
                f7: 0,
                mx: 0,
                cm: 0
            });
            z.push({
                name: "Privacy Policy",
                id: 8,
                f7: 0,
                mx: 0,
                cm: 0
            });
            !b && 5 > d && z.push({
                name: "Cookie Policy",
                id: 9,
                f7: 0,
                mx: 0,
                cm: 0
            });
            z.push({
                name: ter_version + ' ' + ter_update,
                id: 10,
                f7: 90,
                mx: 0,
                cm: 0
            });
            z.push({
                name: 'FX Client v' + fx_version + ' ' + fx_update,
                id: 16,
                f7: 0,
                mx: 0,
                cm: 70
            });
            if (b)
                this.a10 = c.freeSpawn,
                    this.a3t = c.unlimitedTime,
                    this.a0L = !1;
            else if (5 <= d)
                this.a10 = 1 === e.loadNumber(25),
                    this.a3t = 1 === e.loadNumber(26),
                    this.a0L = !1;
            else {
                var y = f.g(6);
                this.a10 = 1 === (y & 1);
                this.a3t = 2 === (y & 2);
                this.a0L = 4 === (y & 4)
            }
            z[2].mx = this.a10 ? 130 : 0;
            z[3].mx = this.a3t ? 130 : 0;
            !b && 5 > d && (z[4].mx = this.a0L ? 130 : 0);
            this.a3t && (vd.uc[2] = vd.uc[3] = vd.uc[4] = false);
            this.a3t && settings.hideAllLinks && (vd.uc[0] = vd.uc[1] = false);
            (!settings.hideAllLinks) && (vd.uc[0] = vd.uc[1] = true);
        };
        // mouseDown
        this.c7 = function (y, A) {
            var B;
            if (!(7 <= aJ.pR())) {
                var C = x();
                if (n) {
                    for (B = 1; B < z.length; B++)
                        if (k(y, A, C, B))
                            return 1 === z[B].id ? (jm.xd = 1 === jm.xd ? 2 : 2 === jm.xd ? 5 : 1,
                                z[1].name = "Lobby " + (5 === jm.xd ? "1B" : jm.xd),
                                c4.c5 = !0) : 2 === z[B].id ? (jm.a10 = !jm.a10,
                                    z[B].mx = jm.a10 ? 130 : 0,
                                    g(),
                                    c4.c5 = !0) : 3 === z[B].id ? (jm.a3t = !jm.a3t,
                                        z[B].mx = jm.a3t ? 130 : 0,
                                        g(),
                                        c4.c5 = !0) : 4 === z[B].id ? (jm.a0L = !jm.a0L,
                                            z[B].mx = jm.a0L ? 130 : 0,
                                            g(),
                                            jj.xQ(),
                                            c4.c5 = !0) : 5 === z[B].id ? (nN.bp(om, !0),
                                                nN.bp(om, !1)) : 6 === z[B].id ? (nN.bp(on[0], !0),
                                                    nN.bp(on[0], !1)) : 7 === z[B].id ? (nN.bp(on[1], !0),
                                                        nN.bp(on[1], !1)) : 8 === z[B].id ? (nN.bp(ol, !0),
                                                            nN.bp(ol, !1)) : 9 === z[B].id && (nN.bp(nO, !0),
                                                                nN.bp(nO, !1)), !0;
                    //cH.drawImage(settingsGearIcon,A.f3-A.hw/2,A.f4,A.nI,A.nI);
                    if (y > (C.f3-C.hw/2) && y < ((C.f3-C.hw/2)+C.nI) && A > C.f4 && A < (C.f4 + C.nI)) WindowManager.openWindow("settings");
                    n = false;
                    c4.c5 = true;
                    return false
                }
                if (y > (C.f3-C.hw/2) && y < ((C.f3-C.hw/2)+C.nI) && A > C.f4 && A < (C.f4 + C.nI)) WindowManager.openWindow("settings");
                return k(y, A, C, 0) ? (n = true, c4.c5 = true) : false
            }
        };
        // mouseMove
        this.lh = function (y, A) {
            var B;
            // menu page
            if (!(7 <= aJ.pR())) {
                var C = x();
                var F = t;
                // how many items to check (different depending on if the menu is open)
                var E = n ? z.length - 2 : 1;
                t = -1;
                for (B = 0; B < E; B++)
                    if (k(y, A, C, B)) {
                        t = B;
                        break
                    }
                F !== t && (c4.c5 = !0)
            }
        };
        // render "More" menu
        this.cG = function () {
            var y;
            if (!(7 <= aJ.pR())) {
                var A = x();
                cH.textAlign = cJ;
                cH.textBaseline = cI;
                // Render "More" button
                l(A.f3, A.f4, A.hw, A.nI, z[0].f7, z[0].mx, z[0].cm, 0 === t, z[0].name, .6);
                // render settings gear icon
                //cH.fillStyle = "rgba(" + F + "," + E + "," + H + ",0.6)";
                //cH.fillRect(y, A, B, C);
                cH.fillStyle = "#FFFFFF";
                cH.imageSmoothingEnabled = true;
                cH.drawImage(settingsGearIcon,A.f3-A.hw/2,A.f4,A.nI,A.nI);
                cH.imageSmoothingEnabled = false;
                // render win count
                //l(A.f3, A.f4, A.hw, A.nI, z[0].f7, z[0].mx, z[0].cm, 0 === t, "test", .6);
                //cH.fillText(K, Math.floor(y + B / 2), Math.floor(A + C / 2 + .1 * D))
                //function l(y, A, B, C, F, E, H, J, K, D) {
                //cH.fillText("test", Math.floor(A.f3 + A.f4 / 2), Math.floor(A.f4 + A.nI / 2 + .1 * .6));
                //cH.textAlign = "right";
                cH.font = bt + Math.floor(A.nI * 0.4) + bu;
                if (!n) cH.fillText("Win count: " + wins_counter, Math.floor(A.f3 + A.hw / 2), Math.floor((A.f4 + A.nI / 2) * 2.1));
                //cH.textAlign = cJ;
                // If menu is open render the buttons inside
                if (n) {
                    var B = z.length;
                    for (y = 1; y < B; y++)
                        l(A.f5, A.f4 + y * A.nI - 2 * y, A.hx, A.nI, z[y].f7, z[y].mx, z[y].cm, t === y, z[y].name, (y === B - 1 || y === B - 2) ? .32 : .45)
                }

            }
        }
    }
    function kN() {
        function g() {
            x = !0;
            l = -1;
            t = Array(4);
            for (var y = 3; 0 <= y; y--)
                t[y] = !1;
            y = Math.floor(1 + .02 * pB);
            n = Array(4);
            z = Array(4);
            z[1] = z[3] = n[0] = n[2] = 0;
            z[0] = n[3] = -y;
            n[1] = z[2] = y
        }
        function k() {
            if (-1 !== l)
                if (0 !== fV && eR.gw()) {
                    for (var y = !1, A = 3; 0 <= A; A--)
                        t[A] && (y = !0,
                            g8 += n[A],
                            g9 += z[A],
                            e6.lh(n[A], z[A]),
                            gf.rB());
                    y ? c4.c5 = !0 : gj.gk()
                } else
                    gj.gk()
        }
        var x = !1, l, t, n, z;
        this.vw = function (y) {
            0 !== fV && eR.gw() && (x || g(),
                t[y] = !0,
                -1 === l && (l = setInterval(k, 20),
                    k()))
        }
            ;
        this.a24 = function (y) {
            if (0 !== fV && (x || g(),
                t[y] = !1,
                -1 !== l)) {
                y = !1;
                for (var A = 3; 0 <= A; A--)
                    y = y || t[A];
                y || this.gk()
            }
        }
            ;
        this.gk = function () {
            if (x && -1 !== l) {
                for (var y = 3; 0 <= y; y--)
                    t[y] = !1;
                clearInterval(l);
                l = -1
            }
        }
    }
    function kO() {
        var g;
        this.ew = function () {
            return g
        }
            ;
        this.co = function (k, x) {
            var l;
            if (0 === bN[k].length || !b5.b6(x) || !b5.bG(x) && b5.bF(x) === k)
                return !1;
            for (l = 21; 0 <= l; l--) {
                if (21 === l) {
                    var t = bN[k]
                        , n = x
                        , z = b5.gB(n);
                    n = b5.cF(n);
                    var y = 0;
                    var A = b5.gB(t[0]);
                    var B = b5.cF(t[0]);
                    A = Math.abs(A - z) + Math.abs(B - n);
                    for (B = t.length - 1; 1 <= B; B--) {
                        var C = b5.gB(t[B]);
                        var F = b5.cF(t[B]);
                        C = Math.abs(C - z) + Math.abs(F - n);
                        C < A && (A = C,
                            y = B)
                    }
                    g = t[y]
                } else
                    g = bN[k][as(l * bN[k].length, 21)];
                a: {
                    B = g;
                    y = x;
                    t = b5.gB(B);
                    z = b5.cF(B);
                    n = b5.gB(y);
                    y = b5.cF(y);
                    A = Math.abs(n - t) + Math.abs(y - z);
                    if (!(2 > A))
                        for (C = B,
                            B = 0; B < A; B++)
                            if (C = Math.abs(n - b5.gB(C)) >= Math.abs(y - b5.cF(C)) ? C + aV[n > t ? 1 : 3] : C + aV[y > z ? 2 : 0],
                                !b5.yR(C)) {
                                if (b5.b6(C)) {
                                    if (0 === B || B + 20 < A)
                                        break;
                                    t = !0;
                                    break a
                                }
                                break
                            }
                    t = !1
                }
                if (t)
                    return !0
            }
            return !1
        }
    }
    function a21() {
        function g() {
            var B, C = 0, F = 0, E = Math.floor(t / 2), H = Math.floor(n / 2), J = 1.5 * Math.PI;
            for (B = j5; 0 <= B; B--)
                F += A[B],
                    0 === A[B] && C++;
            x = !1;
            y.clearRect(0, 0, t, t);
            y.fillStyle = hq;
            y.fillRect(0, 0, t, t);
            y.fillStyle = oA;
            y.fillRect(0, 0, t, 2);
            y.fillRect(0, 0, 2, t);
            y.fillRect(t - 2, 0, 2, t);
            y.fillRect(0, t - 2, t, 2);
            if (0 < F)
                if (C === j5)
                    for (B = j5; 0 <= B; B--) {
                        if (0 < A[B]) {
                            F = E;
                            J = H;
                            y.fillStyle = dW.wg[dW.id[B]];
                            y.beginPath();
                            y.arc(F, F, J, 0, 2 * Math.PI);
                            y.fill();
                            break
                        }
                    }
                else {
                    for (B = 0; B <= j5; B++)
                        if (0 < A[B]) {
                            C = J + 2 * Math.PI * A[B] / F;
                            var K = E
                                , D = H
                                , L = J
                                , I = C;
                            y.fillStyle = dW.wg[dW.id[B]];
                            y.beginPath();
                            y.arc(K, K, D, L, I);
                            y.lineTo(K, K);
                            y.fill();
                            0 !== B && k(E, H, J);
                            J = C
                        }
                    k(E, H, 1.5 * Math.PI)
                }
            y.beginPath();
            y.arc(E, E, H, 0, 2 * Math.PI);
            y.stroke()
        }
        function k(B, C, F) {
            y.beginPath();
            y.moveTo(B, B);
            y.lineTo(B + Math.cos(F) * C, B + Math.cos(F + 1.5 * Math.PI) * C);
            y.stroke()
        }
        var x = !1
            , l = 0
            , t = 0
            , n = 0
            , z = null
            , y = null
            , A = null;
        this.bp = function () {
            if (dA) {
                l = 16;
                A = new Uint32Array(j5 + 1);
                for (var B = j5; 0 < B; B--)
                    A[B] = 1;
                this.lq()
            } else
                A = y = z = null
        }
            ;
        this.qK = function () {
            return t
        }
            ;
        this.lq = function () {
            dA && (t = Math.floor(.18 * pB),
                t += t % 2,
                n = Math.floor(7 * t / 8),
                z = z ? z : document.createElement("canvas"),
                z.width = t,
                z.height = t,
                y = z.getContext("2d", {
                    alpha: !0
                }),
                y.lineWidth = 2,
                y.strokeStyle = cK,
                g())
        }
            ;
        this.qf = function () {
            return A[this.mp()]
        }
            ;
        this.ib = function () {
            l = 31;
            this.dF();
            return this.mp()
        }
            ;
        this.mp = function () {
            for (var B = 0, C = j5; 0 < C; C--)
                A[C] > A[B] && (B = C);
            return B
        }
            ;
        this.dF = function () {
            if (dA && 32 <= ++l) {
                l = 0;
                var B;
                for (B = j5; 0 <= B; B--)
                    A[B] = 0;
                for (B = dY - 1; 0 <= B; B--)
                    A[dW.dX[dZ[B]]] += bU[dZ[B]];
                x = !0
            }
        }
            ;
        this.bv = function () {
            dA && x && g()
        }
            ;
        this.cG = function () {
            dA && cH.drawImage(z, m0, qL + 2 * m0)
        }
    }
    function kP() {
        var g, k;
        this.bp = function () {
            k = Array(101);
            for (var x = k.length - 1; 0 <= x; x--)
                k[x] = as(32768 * x, 100);
            this.jG(0)
        }
            ;
        this.value = function (x) {
            return k[x]
        }
            ;
        this.a12 = function () {
            return as(g - 1, 2)
        }
            ;
        this.jG = function (x) {
            g = 2 * x % 32768 + 1
        }
            ;
        this.random = function () {
            return g = 167 * g % 32768
        }
            ;
        this.cf = function (x) {
            return as(x * this.random(), 32768)
        }
            ;
        this.dP = function (x) {
            return 0 !== x && this.random() < this.value(x)
        }
    }
    function kW() {
        function g() {
            (500 <= z || 5 < n) && k()
        }
        function k() {
            n = 0;
            z += 700 > z ? 200 : 0;
            bw.bx() && (l() || t) && (t = !1,
                ov(),
                uH.bp(),
                ja.bp(),
                jd.lq(),
                vd.bp(),
                jb.lq(),
                jZ.lq(),
                jY.lq(),
                vV.lq(),
                cD.lq(),
                a5.bp(),
                1 <= fV ? (eI.lq(!1),
                    eK.lq(),
                    e7.lq(),
                    gf.lq(),
                    eN.lq(),
                    e5.lq(),
                    fm.lq(),
                    eO.lq(),
                    eL.lq(),
                    c2.lq(),
                    hm.kw(),
                    hn.lq(),
                    e6.lq(),
                    eS.lq(),
                    eP.lq(),
                    gf.rB()) : (0 === aJ.pR() ? jd.cE(0, !0) : 2 === aJ.pR() ? du.lq() : 3 === aJ.pR() && jc.lq(),
                        aJ.vZ(),
                        aJ.ve()),
                c4.c5 = !0)
        }
        function x(y) {
            return y && 128 < y ? Math.floor(y) : 128
        }
        function l() {
            if (5 <= d) {
                var y = x(document.documentElement.clientWidth);
                var A = x(document.documentElement.clientHeight);
                pF = 1;
                if (y !== gA || A !== cB) {
                    gA = y;
                    cB = A;
                    r = gA;
                    s = cB;
                    pB = qe(r, s);
                    bq = as(s + r, 2);
                    if (5 <= d) {
                        var B = e.loadNumber(23);
                        var C = e.loadNumber(24);
                        y > B && (B = y,
                            e.saveNumber(23, B));
                        A > C && (C = A,
                            e.saveNumber(24, C))
                    } else
                        B = y,
                            C = A;
                    y = oy.width;
                    A = oy.height;
                    B > y && (y = B,
                        oy.width = B);
                    C > A && (A = C,
                        oy.height = C);
                    oy.style.width = y + "px";
                    oy.style.height = A + "px";
                    B = !0
                } else
                    B = !1;
                return B
            }
            jm.a0L ? (pF = window.devicePixelRatio) || (pF = 1) : pF = 1;
            B = x(document.documentElement.clientWidth);
            C = x(document.documentElement.clientHeight);
            y = Math.floor(.5 + pF * B);
            A = Math.floor(.5 + pF * C);
            if (y === gA && A === cB)
                return !1;
            gA = r = y;
            cB = s = A;
            pB = qe(r, s);
            bq = as(s + r, 2);
            oy.width = y;
            oy.height = A;
            oy.style.width = B + "px";
            oy.style.height = C + "px";
            return !0
        }
        var t = !1, n, z;
        this.bp = function () {
            n = 1;
            z = 100;
            r = s = pB = gA = cB = bq = 0;
            pF = 1;
            oy = document.getElementById("canvasA");
            cH = oy.getContext("2d", {
                alpha: !1
            });
            cH.imageSmoothingEnabled = !1;
            l();
            window.addEventListener("resize", g)
        }
            ;
        this.dF = function () {
            jn.dF();
            ++n >= z && k()
        }
            ;
        this.xQ = function () {
            t = !0;
            500 <= z && k()
        }
    }
    function kQ() {
        function g(H) {
            eG.av(x, E);
            ae.b2(x, F);
            H && (ax[x] += l)
        }
        function k() {
            b5.yT(t, x) && b5.yV(t)
        }
        var x, l, t, n, z, y, A, B, C, F, E;
        this.dF = function (H, J, K, D, L) {
            C = H;
            E = J;
            x = K;
            z = b5.gB(D);
            y = b5.cF(D);
            A = b5.gB(L);
            B = b5.cF(L);
            n = t = b5.ex(z, y);
            F = ae.fR(x, E);
            -1 === F ? (k(),
                eG.av(x, E),
                H = !1) : (l = ae.am(x, F),
                    H = !0);
            if (H && (k(),
                H = as(l, 128),
                H = 1 > H ? 1 : H,
                l -= H,
                x === aw && (b0.b1[15] += H),
                l <= at ? (x === aw && (b0.b1[15] += l),
                    g(!1),
                    H = !1) : (ae.bT(x, F, l),
                        H = !0),
                H))
                if (H = b5.ex(z, y),
                    t = Math.abs(A - z) >= Math.abs(B - y) ? H + aV[A > z ? 1 : 3] : H + aV[B > y ? 2 : 0],
                    z = b5.gB(t),
                    y = b5.cF(t),
                    eG.fw(C, t),
                    H = b5.b6(t) ? !1 : !0,
                    H)
                    b5.yR(t) && b5.yY(t, x);
                else
                    a: {
                        if (b5.bG(t))
                            H = b8;
                        else {
                            H = b5.bF(t);
                            if (H === x) {
                                g(!0);
                                break a
                            }
                            if (!ch(x, H)) {
                                J = bU[H] * iz - ax[H];
                                0 >= J || (J = l > J ? J : l,
                                    l -= J,
                                    x === aw && (e5.n1(J, H),
                                        b0.b1[16] += J),
                                    H === aw && (e5.n3(J, x),
                                        b0.b1[10] += J),
                                    ax[H] += J);
                                g(!0);
                                break a
                            }
                        }
                        x === aw && (b0.b1[13] += l);
                        eG.av(x, E);
                        ae.b2(x, F);
                        b4[x].push(n);
                        ae.cQ(x, l, H);
                        au.cR(x, !0)
                    }
        }
            ;
        this.g0 = function (H, J) {
            x = H;
            t = b5.ex(b5.gB(J), b5.cF(J));
            k()
        }
    }
    function kR() {
        var g, k, x, l;
        this.bp = function () {
            var t, n, z;
            x = !0;
            l = "rgb(" + wz[0] + "," + wz[1] + "," + wz[2] + ")";
            var y = a2N(wo) ? !0 : x = !1;
            if (y)
                k = null;
            else {
                g = as(96, 4);
                if (1 === wo) {
                    var A = 0;
                    var B = 160
                } else
                    A = 128,
                        B = 32;
                l = "rgb(" + A + "," + A + "," + A + ")";
                k = Array(4);
                for (y = 3; 0 <= y; y--) {
                    k[y] = document.createElement("canvas");
                    var C = 0 === y % 2 ? aZ : g;
                    var F = 0 === y % 2 ? g : aa + 2 * g;
                    k[y].width = C;
                    k[y].height = F;
                    var E = k[y].getContext("2d", {
                        alpha: !1
                    });
                    var H = E.getImageData(0, 0, C, F);
                    var J = H.data;
                    if (0 === y % 2)
                        for (n = g - 1; 0 <= n; n--) {
                            var K = B + Math.floor((n + 1) * (A - B) / (g + 1));
                            for (t = C - 1; 0 <= t; t--) {
                                var D = 4 * ((0 === y ? g - n - 1 : n) * C + t);
                                J[D] = K;
                                J[D + 1] = K;
                                J[D + 2] = K;
                                J[D + 3] = 255
                            }
                        }
                    else {
                        for (t = g - 1; 0 <= t; t--)
                            for (K = B + Math.floor((t + 1) * (A - B) / (g + 1)),
                                n = F - 1 - g; n >= g; n--)
                                D = 4 * (n * C + (3 === y ? g - t - 1 : t)),
                                    J[D] = K,
                                    J[D + 1] = K,
                                    J[D + 2] = K,
                                    J[D + 3] = 255;
                        for (z = 1; 0 <= z; z--)
                            for (t = g - 1; 0 <= t; t--)
                                for (n = g - 1; 0 <= n; n--)
                                    K = (Math.pow(t * t + n * n, .5) + 1) / (g + 1),
                                        K = 1 < K ? 1 : K,
                                        K = B + Math.floor(K * (A - B)),
                                        D = 4 * ((0 === z ? g - n - 1 : n + z * (F - g)) * C + (1 === y ? t : g - t - 1)),
                                        J[D] = K,
                                        J[D + 1] = K,
                                        J[D + 2] = K,
                                        J[D + 3] = 255
                    }
                    E.putImageData(H, 0, 0)
                }
                pc.fillStyle = "rgb(" + B + "," + B + "," + B + ")";
                pc.fillRect(0, 0, aZ, 1);
                pc.fillRect(0, aa - 1, aZ, 1);
                pc.fillRect(0, 0, 1, aa);
                pc.fillRect(aZ - 1, 0, 1, aa)
            }
        }
            ;
        this.hj = function () {
            var t = x ? 0 : -g;
            a3s(t, t, aZ - 2 * t, aa - 2 * t, gu.a4n, gu.a4o, gu.a4p, gu.a4q) || (cH.fillStyle = l,
                cH.fillRect(0, 0, gA, cB))
        }
            ;
        this.cG = function () {
            x || (a3r(0, -g, aZ, g, gu.a4n, gu.a4o, gu.a4p, gu.a4q) && cH.drawImage(k[0], gu.a4r, gu.a4s - g),
                a3r(aZ, -g, g, aa + 2 * g, gu.a4n, gu.a4o, gu.a4p, gu.a4q) && cH.drawImage(k[1], gu.a4r + aZ, gu.a4s - g),
                a3r(0, aa, aZ, g, gu.a4n, gu.a4o, gu.a4p, gu.a4q) && cH.drawImage(k[2], gu.a4r, gu.a4s + aa),
                a3r(-g, -g, g, aa + 2 * g, gu.a4n, gu.a4o, gu.a4p, gu.a4q) && cH.drawImage(k[3], gu.a4r - g, gu.a4s - g))
        }
    }
    function a1T() {
        function g() { }
        function k() {
            e9.a1U(z, y)
        }
        function x(E) {
            A++;
            1 === A ? C.readAsArrayBuffer(E.data) : B.push(E.data)
        }
        function l() {
            A--;
            ji.a52(z, new Uint8Array(C.result));
            0 < A && (C.readAsArrayBuffer(B[0]),
                B.shift())
        }
        function t() { }
        function n(E) {
            e9.a1a(z, E)
        }
        var z, y, A, B, C, F;
        this.bp = function (E, H) {
            z = E;
            y = H;
            A = 0;
            B = [];
            C = new FileReader;
            C.addEventListener("loadend", l);
            var J = ot[0];
            J = z < e9.w8 ? J + (e9.a1H[z] + ot[1 + a1k]) : J + (e9.a1H[0] + "/i" + (1 + a1k) + (z - e9.w9) + "/");
            F = new WebSocket(J);
            F.onopen = k;
            F.onmessage = x;
            F.onclose = n;
            F.onerror = t
        }
            ;
        this.a4x = function () {
            return F.readyState === F.CONNECTING
        }
            ;
        this.vB = function () {
            return F.readyState === F.OPEN
        }
            ;
        this.a1Q = function () {
            return this.a4x() || this.vB()
        }
            ;
        this.a1R = function (E) {
            y = E
        }
            ;
        this.send = function (E) {
            this.vB() && F.send(E)
        }
            ;
        this.close = function (E) {
            this.a1Q() && (F.close(E),
                this.lA())
        }
            ;
        this.lA = function () {
            F.onopen = g;
            F.onmessage = g;
            F.onclose = g;
            F.onerror = g;
            C.removeEventListener("loadend", l)
        }
    }
    function a1x() {
        this.cV = 501;
        this.a53 = new Uint32Array(this.cV);
        this.rz = new Uint32Array(this.cV);
        this.tM = new Uint16Array(this.cV);
        this.lz = 0;
        this.a54 = 1;
        this.dV = 0;
        this.max = [0, 0, 0];
        this.b1 = 0;
        this.a55 = "Avg. Attack Strength;Number Attacks;Ships sent;Bots conquered;Humans conquered;Attacked by Bots;Attacked by Humans;Territorial Loss;Territorial Income;Interest Income;Received Support;Overall Income;Commanding Costs;Attack Losses;Defense Losses;Shipping Losses;Transmitted Support;Overall Expenses".split(";");
        this.bp = function () {
            this.lz = 0;
            this.a54 = 1;
            this.dV = 0;
            this.a56();
            this.a57()
        }
            ;
        this.dF = function () {
            0 < this.dV-- || this.a58()
        }
            ;
        this.a58 = function () {
            0 !== fB[aw] && (this.a53[this.lz] = bU[aw],
                this.rz[this.lz] = ax[aw],
                this.tM[this.lz] = ay.tN(aw),
                this.a59(this.lz),
                this.lz++,
                this.lz === this.cV && this.a5A(),
                this.dV = this.a54 - 1,
                hn.bv())
        }
            ;
        this.a5A = function () {
            this.a56();
            this.a59(0);
            this.lz = 1 + as(this.cV, 2);
            for (var g = 1; g < this.lz; g++)
                this.a53[g] = this.a53[2 * g],
                    this.rz[g] = this.rz[2 * g],
                    this.tM[g] = this.tM[2 * g],
                    this.a59(g);
            this.a54 *= 2
        }
            ;
        this.a56 = function () {
            this.max[0] = this.max[1] = this.max[2] = 0
        }
            ;
        this.a57 = function () {
            this.b1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        }
            ;
        this.a59 = function (g) {
            this.max[0] = this.a53[g] > this.max[0] ? this.a53[g] : this.max[0];
            this.max[1] = this.rz[g] > this.max[1] ? this.rz[g] : this.max[1];
            this.max[2] = this.tM[g] > this.max[2] ? this.tM[g] : this.max[2]
        }
    }
    function a1y() {
        this.bs = this.qB = this.a5C = this.a5B = this.xB = this.nJ = this.nI = this.uM = this.uL = this.hx = this.hw = this.cw = this.c1 = 0;
        this.lm = ["Territory", "Balance", "Interest", "Numbers"];
        this.l7 = !1;
        this.a5D = -1;
        this.a5E = !1;
        this.bp = function () {
            this.l7 = !1;
            this.a5D = -1;
            this.a5E = !1;
            this.lq()
        }
            ;
        this.lq = function () {
            this.c1 = r < 1.618 * s ? r : 1.618 * s;
            this.c1 = Math.floor((q && r < s ? 1 : q ? .8 : r < s ? .65 : .5) * this.c1);
            this.qB = Math.floor(1 + .006 * this.c1);
            this.c1 -= q && r < s ? 2 * m0 + this.qB : 0;
            this.cw = Math.floor(this.c1 / 1.618);
            this.hw = Math.floor(1 + .02 * this.c1);
            this.nI = this.hx = Math.floor(1 + .04 * this.c1);
            this.nJ = Math.floor(1 + .075 * this.c1);
            this.a5B = Math.floor(this.c1 * (q ? .028 : .02));
            this.a5B = 6 > this.a5B ? 6 : this.a5B;
            this.a5C = Math.floor(.028 * this.c1);
            this.a5C = 6 > this.a5C ? 6 : this.a5C;
            this.xB = this.cw - 2 * this.nI - this.nJ;
            this.l7 && this.a5F()
        }
            ;
        this.c7 = function (g, k) {
            if (!this.l7)
                return !1;
            var x = g
                , l = k;
            g -= as(gA - this.c1, 2);
            k -= as(cB - this.cw, 2);
            if (0 > g || 0 > k || g >= this.c1 || k >= this.cw) {
                if (1 < fm.c7(x, l))
                    return !0;
                this.lA();
                return !0
            }
            if (k < this.cw - this.nJ)
                return this.a5E = !0,
                    this.a5D = (g - 2 * this.hw - this.uL) / this.uM,
                    !0;
            x = Math.floor(g / (this.c1 / this.lm.length));
            x = 0 > x ? 0 : x >= this.lm.length ? this.lm.length - 1 : x;
            x !== this.bs && (this.bs = x,
                this.a5F(),
                c4.c5 = !0);
            return !0
        }
            ;
        this.lh = function (g) {
            if (this.l7 && this.a5E) {
                g -= as(gA - this.c1, 2);
                var k = this.a5D;
                this.a5D = (g - 2 * this.hw - this.uL) / this.uM;
                if (0 <= this.a5D && 1 >= this.a5D || 0 <= k && 1 >= k)
                    c4.c5 = !0;
                return !0
            }
            return !1
        }
            ;
        this.pO = function () {
            this.a5E && (this.a5E = !1)
        }
            ;
        this.lv = function () {
            this.l7 ? this.lA() : this.show()
        }
            ;
        this.show = function () {
            2 > b0.lz || (this.l7 = !0,
                this.a5F())
        }
            ;
        this.lA = function () {
            this.l7 = !1;
            this.a5D = -1
        }
            ;
        this.a5F = function () {
            2 > this.bs ? this.uL = c2.measureText(eL.gF(b0.max[this.bs]), bt + this.a5B + bu) : 2 === this.bs && (this.uL = c2.measureText(e7.n9(6, 2), bt + this.a5B + bu));
            this.uM = this.c1 - 2 * this.hw - this.uL - this.hx
        }
            ;
        this.bv = function () {
            this.l7 && this.a5F()
        }
            ;
        this.cG = function () {
            this.l7 && this.nP()
        }
            ;
        this.nP = function () {
            var g = as(gA - this.c1, 2)
                , k = as(cB - this.cw, 2);
            cH.setTransform(1, 0, 0, 1, g, k);
            cH.fillStyle = hq;
            cH.fillRect(0, 0, this.c1, this.cw);
            this.a5G();
            cH.strokeRect(0, 0, this.c1, this.cw);
            cH.textAlign = oc;
            cH.font = bt + this.a5B + bu;
            0 === this.bs ? this.a5H(b0.a53, g, k) : 1 === this.bs ? this.a5H(b0.rz, g, k) : 2 === this.bs ? this.a5I(g, k) : 3 === this.bs && (this.a5J(g, k),
                this.a5K(g, k));
            cH.setTransform(1, 0, 0, 1, 0, 0)
        }
            ;
        this.a5G = function () {
            cH.lineWidth = this.qB;
            cH.textBaseline = cI;
            cH.textAlign = cJ;
            cH.strokeStyle = cK;
            cH.font = bt + this.a5C + bu;
            var g = this.c1 / this.lm.length;
            cH.fillStyle = oG;
            cH.fillRect(this.bs * g, this.cw - this.nJ, g, this.nJ);
            cH.fillStyle = cK;
            for (var k = this.lm.length - 1; 0 <= k; k--)
                cH.strokeRect(k * g, this.cw - this.nJ, g, this.nJ),
                    cH.fillText(this.lm[k], (k + .5) * g, this.cw - .46 * this.nJ)
        }
            ;
        this.a5H = function (g, k, x) {
            var l = b0.max[this.bs];
            cH.setTransform(1, 0, 0, 1, k + 2 * this.hw + this.uL, x + this.nI);
            cH.lineWidth = 2;
            k = this.xB / Math.sqrt(l);
            cH.beginPath();
            cH.moveTo(this.uM, this.xB - k * Math.sqrt(g[b0.lz - 1]));
            for (x = b0.lz - 2; 0 <= x; x--)
                cH.lineTo(x * this.uM / (b0.lz - 1), this.xB - k * Math.sqrt(g[x]));
            cH.stroke();
            g = this.m4(g, k, .5);
            .95 > g && cH.fillText(eL.gF(l), -this.hw, 0);
            .05 < Math.abs(g - .5) && cH.fillText(eL.gF(Math.floor(l / 4)), -this.hw, Math.floor(this.xB / 2));
            .05 < g && cH.fillText("0", -this.hw, this.xB)
        }
            ;
        this.a5I = function (g, k) {
            cH.setTransform(1, 0, 0, 1, g + 2 * this.hw + this.uL, k + this.nI);
            cH.lineWidth = 2;
            var x = this.xB / b0.max[this.bs];
            cH.beginPath();
            cH.moveTo(this.uM, this.xB - x * b0.tM[b0.lz - 1]);
            for (var l = b0.lz - 2; 0 <= l; l--)
                cH.lineTo(l * this.uM / (b0.lz - 1), this.xB - x * b0.tM[l]);
            cH.stroke();
            x = this.m4(b0.tM, x, 1);
            l = b0.max[this.bs] / 100;
            .95 > x && cH.fillText(e7.n9(l, 2), -this.hw, 0);
            .05 < Math.abs(x - .5) && cH.fillText(e7.n9(l / 2, 2), -this.hw, Math.floor(this.xB / 2));
            .05 < x && cH.fillText(e7.n9(0, 2), -this.hw, this.xB)
        }
            ;
        this.a5J = function (g, k) {
            var x;
            cH.setTransform(1, 0, 0, 1, g + .34 * this.c1, k + 2 * this.nI);
            cH.textAlign = oc;
            var l = this.cw - 4 * this.nI - this.nJ;
            for (x = 7; 0 <= x; x--)
                cH.fillText(b0.a55[x], 0, x * l / 7);
            cH.setTransform(1, 0, 0, 1, g + .39 * this.c1, k + 2 * this.nI);
            cH.textAlign = mZ;
            x = b0.b1[1];
            cH.fillText(e7.n9(b0.b1[0] / (10 * (1 > x ? 1 : x)), 1), 0, 0);
            for (x = 6; 1 <= x; x--)
                cH.fillText(b0.b1[x].toString(), 0, x * l / 7);
            cH.fillText(e7.n9(100 * (1 - bU[aw] / b0.b1[7]), 0), 0, l)
        }
            ;
        this.a5K = function (g, k) {
            var x;
            cH.setTransform(1, 0, 0, 1, g + .74 * this.c1, k + 2 * this.nI);
            cH.textAlign = oc;
            var l = this.cw - 4 * this.nI - this.nJ;
            cH.fillStyle = oC;
            for (x = 2; 0 <= x; x--)
                cH.fillText(b0.a55[x + 8], 0, x * l / 9);
            cH.fillStyle = oB;
            cH.fillText(b0.a55[11], 0, 3 * l / 9);
            cH.fillStyle = oS;
            for (x = 8; 4 <= x; x--)
                cH.fillText(b0.a55[x + 8], 0, x * l / 9);
            cH.fillStyle = oR;
            cH.fillText(b0.a55[17], 0, 9 * l / 9);
            cH.fillStyle = oC;
            x = eL.gF(b0.b1[8] + b0.b1[9] + b0.b1[10] + b0.b1[11]);
            var t = cH.measureText(x).width;
            cH.setTransform(1, 0, 0, 1, g + .79 * this.c1 + t, k + 2 * this.nI);
            cH.fillText(eL.gF(b0.b1[8]), 0, 0);
            cH.fillText(eL.gF(b0.b1[9]), 0, 1 * l / 9);
            cH.fillText(eL.gF(b0.b1[10]), 0, 2 * l / 9);
            cH.fillStyle = oB;
            cH.fillText(x, 0, 3 * l / 9);
            cH.fillStyle = oS;
            x = b0.b1[13] - ae.zh(aw);
            cH.fillText(eL.gF(b0.b1[12]), 0, 4 * l / 9);
            cH.fillText(eL.gF(x), 0, 5 * l / 9);
            cH.fillText(eL.gF(b0.b1[14]), 0, 6 * l / 9);
            cH.fillText(eL.gF(b0.b1[15]), 0, 7 * l / 9);
            cH.fillText(eL.gF(b0.b1[16]), 0, 8 * l / 9);
            x = b0.b1[12] + x + b0.b1[14] + b0.b1[15] + b0.b1[16] + b0.b1[17];
            cH.fillStyle = oR;
            cH.fillText(eL.gF(x), 0, l);
            cH.fillStyle = cK
        }
            ;
        this.m4 = function (g, k, x) {
            if (0 > this.a5D || 1 < this.a5D)
                return .25;
            var l = this.a5D * (b0.lz - 1)
                , t = Math.floor(l)
                , n = g[t];
            n += (l - t) * (g[t < b0.lz - 1 ? t + 1 : t] - n);
            cH.strokeStyle = oW;
            .04 < this.a5D && this.a5Q(0, this.xB - k * Math.pow(n, x), l * this.uM / (b0.lz - 1), this.xB - k * Math.pow(n, x));
            .04 < n / b0.max[this.bs] && this.a5Q(l * this.uM / (b0.lz - 1), this.xB, l * this.uM / (b0.lz - 1), this.xB - k * Math.pow(n, x));
            cH.fillStyle = oN;
            cH.beginPath();
            cH.arc(l * this.uM / (b0.lz - 1), this.xB - k * Math.pow(n, x), 4, 0, 2 * Math.PI);
            cH.fill();
            g = this.a5D * c4.tO();
            g = 0 === fB[aw] ? Math.floor(g * eS.tU) : Math.floor(g * c4.dU());
            cH.fillStyle = cK;
            cH.fillText(1 === x ? e7.n9(n / 100, 2) : eL.gF(Math.floor(n)), -this.hw, this.xB - k * Math.pow(n, x));
            cH.textAlign = cJ;
            cH.fillText(e7.s8(g), l * this.uM / (b0.lz - 1), this.xB + this.a5B - (q ? 2 : 0));
            cH.textAlign = oc;
            return k * Math.pow(n, x) / this.xB
        }
            ;
        this.a5Q = function (g, k, x, l) {
            cH.beginPath();
            cH.moveTo(g, k);
            cH.lineTo(x, l);
            cH.stroke()
        }
    }
    function a20() {
        this.wg = "rgba(130,130,130,0.88) rgba(130,12,12,0.88) rgba(12,130,12,0.88) rgba(12,12,130,0.88) rgba(130,130,12,0.88) rgba(130,12,130,0.88) rgba(12,130,130,0.88) rgba(130,130,130,0.88) rgba(0,0,0,0.88)".split(" ");
        this.sl = [cK, "rgb(255,120,120)", "rgb(0,230,0)", "rgb(150,150,255)", "rgb(240,240,25)", "rgb(240,25,240)", "rgb(25,240,240)", cK, "rgb(170,170,170)"];
        this.a5R = [cK, "rgb(255,0,0)", "rgb(0,255,0)", "rgb(0,0,255)", "rgb(255,255,0)", "rgb(255,0,255)", "rgb(0,255,255)", cK, gD];
        this.a5S = [gD, cK, cK, cK, gD, gD, gD, gD, cK];
        this.a0f = ["rgba(255,255,255,", "rgba(0,0,0,", "rgba(170,170,170,", "rgba(85,85,85,"];
        this.a0g = ["rgb(255,255,255)", "rgb(0,0,0)", "rgb(170,170,170)", "rgb(85,85,85)"];
        this.bo = "White Red Green Blue Yellow Magenta Cyan White Black".split(" ");
        this.tc = [[255, 255, 255, 180], [255, 0, 0, 180], [0, 255, 0, 180], [50, 50, 255, 180], [255, 255, 0, 180], [255, 0, 255, 180], [0, 255, 255, 180], [255, 255, 255, 180], [0, 0, 0, 180]];
        var g = [[255, 255, 255], [255, 0, 0], [0, 255, 0], [0, 0, 255], [255, 255, 0], [255, 0, 255], [0, 255, 255], [255, 255, 255], [0, 0, 0]];
        this.id = [0, 1, 2, 3, 4, 5, 6, 7, 8];
        var k, x;
        this.bp = function (l) {
            this.dX = new Uint8Array(b8);
            this.a5Y();
            dA && (9 === dr ? this.a5Z() : this.dF(l))
        }
            ;
        this.a5Y = function () {
            for (var l = this.id.length - 1; 0 <= l; l--)
                this.id[l] = l;
            k = [];
            x = []
        }
            ;
        this.a5Z = function () {
            var l;
            for (l = cq + dy.dz - 1; 0 <= l; l--)
                this.dX[l] = 1;
            for (l = cq + dy.dz; l < b8; l++)
                this.dX[l] = 2;
            this.id[1] = 7;
            this.id[2] = 8
        }
            ;
        this.dF = function (l) {
            var t = new Uint8Array(cq)
                , n = new Uint8Array(cq)
                , z = new Uint16Array(8)
                , y = new Uint16Array(this.id.length);
            this.a5d(l, t, n, z);
            this.yE(z);
            dt || this.a5e(y, t, n);
            this.a5f(t, n, y);
            dt ? this.a5g() : this.a5h()
        }
            ;
        this.a5d = function (l, t, n, z) {
            var y, A, B = this.id.length - 1, C = new Uint16Array(B);
            for (y = cq - 1; 0 <= y; y--) {
                for (A = B; 1 <= A; A--)
                    C[A - 1] = Math.abs(4 * l[y].xI[0] - g[A][0]) + Math.abs(4 * l[y].xI[1] - g[A][1]) + Math.abs(4 * l[y].xI[2] - g[A][2]);
                var F = 768;
                for (A = B - 1; 0 <= A; A--) {
                    var E = (A + y) % B;
                    C[E] < F && (F = C[E],
                        t[y] = E)
                }
                z[t[y]] += 4;
                F = 768;
                for (A = B - 1; 0 <= A; A--)
                    E = (A + y) % B,
                        C[E] < F && E !== t[y] && (F = C[E],
                            n[y] = E);
                z[n[y]]++
            }
        }
            ;
        this.yE = function (l) {
            var t, n, z = this.id.length - 1;
            for (t = z; 0 <= t; t--)
                this.id[t] = t;
            for (t = z - 1; 0 <= t; t--)
                l[t]++;
            for (t = 1; t <= z; t++) {
                var y = 0;
                for (n = 1; n < z; n++)
                    l[n] > l[y] && (y = n);
                l[y] = 0;
                this.id[t] = y + 1
            }
        }
            ;
        this.a5e = function (l, t, n) {
            var z = this.id.length - 1
                , y = new Uint16Array(z)
                , A = [];
            var B = cq - 1;
            a: for (; 0 <= B; B--) {
                var C = B;
                var F = a11[C].indexOf("[");
                if (0 > F)
                    F = null;
                else {
                    var E = a11[C].indexOf("]");
                    F = 1 < E - F && 8 >= E - F ? a11[C].substring(F + 1, E).toUpperCase().trim() : null
                }
                if (null !== F) {
                    for (E = k.length - 1; 0 <= E; E--)
                        if (F === k[E]) {
                            x[E].push(B);
                            continue a
                        }
                    k.push(F);
                    A.push(!1);
                    x.push([]);
                    x[k.length - 1].push(B)
                }
            }
            for (E = k.length - 1; 0 <= E; E--) {
                C = -1;
                for (F = k.length - 1; 0 <= F; F--)
                    !A[F] && (-1 === C || x[F].length > x[C].length) && (C = F);
                for (F = z - 1; 0 <= F; F--)
                    y[F] = 1;
                for (F = x[C].length - 1; 0 <= F; F--)
                    y[t[x[C][F]]] += 3,
                        y[n[x[C][F]]]++;
                for (B = z - 1; 0 <= B; B--) {
                    var H = C % z;
                    for (F = z - 1; 0 <= F; F--)
                        y[F] > y[H] && (H = F);
                    var J = -1;
                    for (F = j5; 0 < F; F--)
                        if (this.id[F] === H + 1) {
                            J = F;
                            break
                        }
                    y[H] = 0;
                    if (-1 !== J) {
                        H = 0;
                        for (F = j5; 0 < F; F--)
                            l[J] > l[F] && H++;
                        if (H !== j5 - 1) {
                            for (F = x[C].length - 1; 0 <= F; F--)
                                l[J]++,
                                    this.dX[x[C][F]] = J;
                            break
                        }
                    }
                }
                A[C] = !0
            }
        }
            ;
        this.a5f = function (l, t, n) {
            var z;
            var y = this.id.length - 1;
            var A = as(cq, j5);
            0 < cq % j5 && A++;
            var B = new Uint8Array(y + 1);
            for (z = y; 1 <= z; z--)
                B[this.id[z]] = z;
            for (y = 0; y < cq; y++)
                z = B[l[y] + 1],
                    0 === this.dX[y] && z <= j5 && n[z] < A && (n[z]++,
                        this.dX[y] = z);
            for (y = 0; y < cq; y++)
                z = B[t[y] + 1],
                    0 === this.dX[y] && z <= j5 && n[z] < A && (n[z]++,
                        this.dX[y] = z);
            for (z = j5; 1 <= z; z--)
                for (y = cq - 1; 0 <= y && !(n[z] >= A); y--)
                    0 === this.dX[y] && (n[z]++,
                        this.dX[y] = z)
        }
            ;
        this.a5g = function () {
            var l, t = new Uint16Array(j5);
            t[j5 - 1] = b8;
            for (l = j5 - 2; 0 <= l; l--)
                t[l] = du.dv[l].mm;
            t[0]--;
            var n = 0 === t[0] ? 1 : 0;
            for (l = cq; l < b8; l++)
                this.dX[l] = n + 1,
                    t[n]--,
                    0 >= t[n] && n++
        }
            ;
        this.a5h = function () {
            for (var l = cq; l < b8; l++)
                this.dX[l] = 1 + l % j5
        }
            ;
        this.ic = function (l) {
            if (dt)
                return [512, ""];
            var t, n, z = -1, y = -1;
            for (n = k.length - 1; 0 <= n; n--)
                for (t = x[n].length - 1; 0 <= t && this.id[this.dX[x[n][t]]] === l; t--)
                    if (-1 === z || sD[x[n][t]] < sD[z])
                        z = x[n][t],
                            y = n;
            return -1 === z || 0 === fB[z] ? [512, ""] : [z, k[y]]
        }
    }
    function bV() {
        for (var g, k, x = aQ - 1; 0 <= x; x--)
            g = as(aS[x], 4) % aZ,
                k = as(aS[x], 4 * aZ),
                d0[aM] = d0[aM] > g ? g : d0[aM],
                d3[aM] = d3[aM] > k ? k : d3[aM],
                cz[aM] = cz[aM] < g ? g : cz[aM],
                d2[aM] = d2[aM] < k ? k : d2[aM]
    }
    function aj() {
        var g = b4[aM].length, k;
        var x = g - 1;
        a: for (; 0 <= x; x--) {
            for (k = 3; 0 <= k; k--) {
                var l = b4[aM][x] + aV[k];
                if (b5.bG(l) || b5.bE(l) && b5.bF(l) !== aM) {
                    b5.cW(b4[aM][x], aM);
                    continue a
                }
            }
            b4[aM][x] = b4[aM][g - 1];
            b4[aM].pop();
            g--
        }
    }
    function ak() {
        var g = bM[aM].length, k, x, l = g - 1;
        a: for (; 0 <= l; l--) {
            var t = x = !1;
            for (k = 3; 0 <= k; k--) {
                var n = bM[aM][l] + aV[k];
                if (b5.yO(n, aM))
                    continue a;
                t = t || b5.yR(n);
                x = x || b5.yN(n)
            }
            t ? bN[aM].push(bM[aM][l]) : x ? bQ[aM].push(bM[aM][l]) : b5.hV(bM[aM][l], aM);
            bM[aM][l] = bM[aM][g - 1];
            bM[aM].pop();
            g--
        }
    }
    function bK() {
        bU[aP] -= aQ
    }
    function bL(g) {
        for (var k = g.length, x = k - 1; 0 <= x; x--)
            b5.he(aP, g[x]) || (g[x] = g[k - 1],
                g.pop(),
                k--)
    }
    function bO(g) {
        for (var k = g.length, x = k - 1; 0 <= x; x--)
            !b5.he(aP, g[x]) && b5.b6(g[x]) && (g[x] = g[k - 1],
                g.pop(),
                k--)
    }
    function bP(g) {
        for (var k = g.length, x, l, t = k - 1; 0 <= t; t--)
            for (x = 3; 0 <= x; x--)
                if (l = g[t] + aV[x],
                    b5.yO(l, aP)) {
                    bM[aP].push(g[t]);
                    g[t] = g[k - 1];
                    g.pop();
                    k--;
                    break
                }
    }
    function bR() {
        for (var g, k, x = aQ - 1; 0 <= x; x--)
            for (g = 3; 0 <= g; g--)
                k = aS[x] + aV[g],
                    b5.yP(aP, k) && b5.yQ(k) && (bM[aP].push(k),
                        b5.b7(k, aP))
    }
    function bS() {
        var g;
        a: for (; d3[aP] < d2[aP];) {
            for (g = cz[aP]; g >= d0[aP]; g--)
                if (b5.he(aP, 4 * (d3[aP] * aZ + g)))
                    break a;
            d3[aP]++
        }
        a: for (; d3[aP] < d2[aP];) {
            for (g = cz[aP]; g >= d0[aP]; g--)
                if (b5.he(aP, 4 * (d2[aP] * aZ + g)))
                    break a;
            d2[aP]--
        }
        a: for (; d0[aP] < cz[aP];) {
            for (g = d2[aP]; g >= d3[aP]; g--)
                if (b5.he(aP, 4 * (g * aZ + d0[aP])))
                    break a;
            d0[aP]++
        }
        a: for (; d0[aP] < cz[aP];) {
            for (g = d2[aP]; g >= d3[aP]; g--)
                if (b5.he(aP, 4 * (g * aZ + cz[aP])))
                    break a;
            cz[aP]--
        }
    }
    function ch(g, k) {
        return 0 === dW.dX[g] || dW.dX[g] !== dW.dX[k]
    }
    function lb(g, k) {
        var x, l = ae.af(g);
        for (x = 0; x < l; x++)
            if (0 === ae.ag(g, x)) {
                var t = ae.al(g, x);
                if (t === b8) {
                    if (k === b8)
                        break;
                    if (la(k))
                        return !0
                } else if (k === b8) {
                    if (la(t))
                        return !0
                } else if (lf(k, t))
                    return !0
            }
        return !1
    }
    function la(g) {
        var k, x, l = bM[g].length;
        for (k = 3; 0 <= k; k--) {
            var t = aV[k];
            for (x = 0; x < l; x++)
                if (b5.bG(bM[g][x] + t))
                    return !0
        }
        return !1
    }
    function lf(g, k) {
        var x;
        var l = bM[g].length;
        var t = bM[k].length;
        t < l && (l = g,
            g = k,
            k = l,
            l = t);
        for (x = 3; 0 <= x; x--) {
            var n = aV[x];
            for (t = 0; t < l; t++) {
                var z = bM[g][t] + n;
                if (b5.bE(z) && b5.bF(z) === k)
                    return !0
            }
        }
        return !1
    }
    function a1z() {
        function g() {
            c4.gY = performance.now();
            c4.a61();
            window.requestAnimationFrame(g)
        }
        function k() {
            var x = performance.now();
            c4.gY + 1500 < x && (c4.gY = x,
                c4.a61())
        }
        this.c5 = !1;
        this.a63 = this.a62 = this.a61 = null;
        this.gY = 0;
        this.a64 = -1;
        this.bp = function () {
            window.requestAnimationFrame(g);
            this.gY = performance.now()
        }
            ;
        this.a23 = function () {
            1 !== fV || !dt || fm.lp || fY || fm.lv();
            -1 === this.a64 && (this.a64 = setInterval(k, 2E3))
        }
            ;
        this.xY = function () {
            this.c5 = !0;
            -1 !== this.a64 && (clearInterval(this.a64),
                this.a64 = -1)
        }
            ;
        this.jW = function () {
            this.a61 = this.a67;
            this.a62 = null;
            this.c5 = !0
        }
            ;
        this.jS = function () {
            this.a62 = new a68;
            this.a61 = this.a69
        }
            ;
        this.jT = function () {
            this.a63 = new a6A;
            this.a63.bp();
            this.a61 = this.a6B
        }
            ;
        this.a67 = function () {
            jY.dF();
            jb.dF();
            jj.dF();
            e9.dF();
            eU.wA();
            cD.dF();
            this.c5 && (this.c5 = !1,
                aJ.cG())
        }
            ;
        this.a69 = function () {
            this.a62.dF()
        }
            ;
        this.a6B = function () {
            this.a63.dF()
        }
            ;
        this.dU = function () {
            return dt ? this.a62.w7 : this.a63.w7
        }
            ;
        this.tO = function () {
            return 56
        }
    }
    function a68() {
        this.gY = c4.gY;
        this.a54 = 56;
        this.w7 = this.bs = 0;
        this.a6C = !1;
        this.dF = function () {
            jj.dF();
            fY ? eY() : 0 === this.bs ? c4.gY >= this.gY && (this.gY += this.a54 * Math.floor(1 + (c4.gY - this.gY) / this.a54),
                2 === fV || fm.lp ? e4() : (eA(),
                    this.w7++,
                    h4.to()),
                this.bs++) : (fm.lp ? eY() : (c4.c5 = !0,
                    eW()),
                    this.bs = 0);
            eQ();
            c4.c5 && (c4.c5 = !1,
                hh())
        }
    }
    function a6A() {
        this.gY = c4.gY;
        this.a54 = 56;
        this.w6 = this.w7 = this.bs = 0;
        this.a6D = null;
        this.a0F = 7;
        var g;
        this.bp = function () {
            this.w6 = 0;
            this.a6D = [];
            g = this.w7 = this.bs = 0
        }
            ;
        this.a6E = function (k) {
            if (fY)
                this.tP(k);
            else if (this.a6D.push(k),
                2 === fV) {
                for (k = 0; k < this.a6D.length; k++)
                    ji.a6F(this.a6D[k], g),
                        g = (g + 1) % 8;
                this.a6D = []
            }
        }
            ;
        this.tP = function (k) {
            ji.a6F(k, g);
            g = (g + 1) % 8;
            e7.tP(this.w6);
            this.w6 === j7 ? (fZ.dF(),
                this.w7 = this.bs = this.w6 = 0,
                this.gY = c4.gY) : (this.w6++,
                    e6.iw(),
                    e6.eX(),
                    h4.to())
        }
            ;
        this.dF = function () {
            jj.dF();
            fY ? (c4.c5 = e7.tP(-1) || c4.c5,
                eY()) : 0 === this.bs ? c4.gY >= this.gY && (this.gY += this.a54 * Math.floor(1 + (c4.gY - this.gY) / this.a54),
                    2 === fV ? e4() : this.a6G(),
                    this.bs++) : (c4.c5 = !0,
                        eW(),
                        this.bs = 0);
            eQ();
            c4.c5 && (c4.c5 = !1,
                hh())
        }
            ;
        this.a6G = function () {
            if (this.w7 !== 7 * this.w6)
                eA(),
                    this.w7++,
                    h4.to();
            else {
                for (var k = !1; this.a6I();)
                    if (k = !0,
                        eA(),
                        this.w7++,
                        0 < this.a6D.length)
                        for (var x = this.a0F - 2; 0 <= x; x--)
                            eA(),
                                this.w7++;
                    else
                        break;
                k ? h4.to() : (e4(),
                    h4.iy())
            }
        }
            ;
        this.a6I = function () {
            return 0 < this.a6D.length ? (this.w6++,
                ji.a6F(this.a6D[0], g),
                g = (g + 1) % 8,
                this.a6D.shift(),
                !0) : !1
        }
    }
    function kf() {
        function g(k, x) {
            8 !== aJ.pR() || 0 !== x && x !== dr || dt || e5.mr(k)
        }
        this.gS = 0;
        this.a6J = !0;
        this.dF = function () {
            c4.gY > this.gS && (this.gS = c4.gY + 2500,
                this.a6K())
        }
            ;
        this.a6K = function () {
            var k = new Date;
            var x = k.getUTCSeconds();
            this.a6J ? 55 > x || -1 !== c4.a64 || (this.a6J = !1,
                x = k.getUTCMinutes(),
                4 === x % 5 ? (k = k.getUTCHours(),
                    59 === x && 15 <= k && 21 >= k ? g("Upcoming Game of the Day", 0) : 14 === x % 30 ? g("Upcoming Alliance Contest", 0) : 29 === x % 30 ? g("Upcoming Battle Royale Contest", 0) : g("Upcoming One-vs-One Game", 8)) : 2 === x % 5 && g("Upcoming Zombie Game", 9)) : 55 > x && (this.a6J = !0)
        }
    }
    function kS() {
        function g() {
            return Math.pow(Math.pow(t - x, 2) + Math.pow(n - l, 2), .5)
        }
        function k(z) {
            x = pF * z.touches[0].clientX;
            l = pF * z.touches[0].clientY;
            t = pF * z.touches[1].clientX;
            n = pF * z.touches[1].clientY
        }
        var x, l, t, n;
        this.pG = function (z) {
            return 1 < z.touches.length ? (k(z),
                hm.lA(),
                !0) : !1
        }
            ;
        this.pL = function (z) {
            if (0 === fV)
                return !1;
            if (1 < z.touches.length) {
                if (!eR.gw())
                    return !0;
                var y = g();
                k(z);
                z = g();
                gf.rC(Math.floor((x + t) / 2), Math.floor((l + n) / 2), z / y);
                return c4.c5 = !0
            }
            return !1
        }
    }
    function kT() {
        function g(t, n) {
            for (var z = Array(t), y = 0; y < t; y++)
                z[y] = k(n, 10);
            return m.iM(z)
        }
        function k(t, n) {
            for (var z = 0, y, A, B = l; B < l + n; B++)
                y = as(B, 8),
                    A = 7 - B % 8,
                    z |= (t[y] >> A & 1) << l + n - B - 1;
            l += n;
            return z
        }
        var x, l;
        this.a52 = function (t, n) {
            l = 0;
            x = n.length;
            if (0 === x)
                e9.a1Y(t, 3205);
            else {
                var z = k(n, 1);
                if (0 === z)
                    if (z = k(n, 2),
                        0 === z)
                        if (0 === k(n, 1)) {
                            if (0 === t && 8 !== aJ.pR() && !(4 > x)) {
                                uH.br(0, g(k(n, 5), n));
                                uH.br(1, "[" + g(k(n, 3), n) + "]");
                                var y = k(n, 12)
                                    , A = k(n, 6)
                                    , B = Array(y);
                                for (z = 0; z < y; z++)
                                    B[z] = k(n, A);
                                jZ.rf(B)
                            }
                        } else {
                            if (8 !== aJ.pR())
                                if (3 > x)
                                    e9.a1Y(t, 3208);
                                else {
                                    y = k(n, 1);
                                    A = k(n, 16);
                                    B = k(n, 4);
                                    var C = [];
                                    for (z = 0; z < B; z++) {
                                        var F = k(n, 14);
                                        var E = k(n, 5);
                                        E = g(E, n);
                                        C.push({
                                            name: E,
                                            i4: F
                                        })
                                    }
                                    0 === y ? cD.uA(0, C, 10, 1, .36, .55, A) : cD.uA(1, C, 100, 2, .47, .5, A)
                                }
                        }
                    else if (1 === z)
                        if (t !== e9.vo)
                            e9.close(t, 3239);
                        else if (6 === aJ.pR() && jk.bp(),
                            7 !== aJ.pR())
                            e9.close(t, 3251);
                        else {
                            y = [0, 0, 0, 0];
                            A = k(n, 6);
                            for (z = 0; 4 > z; z++)
                                y[z] = k(n, A);
                            B = k(n, 4);
                            C = [];
                            for (z = 0; z < B; z++)
                                C.push({
                                    id: k(n, 5),
                                    jB: k(n, 4),
                                    wr: 1 === k(n, 1),
                                    wo: k(n, 6),
                                    wp: k(n, 14),
                                    wt: k(n, A),
                                    wu: k(n, 9) + 1,
                                    vR: k(n, 10)
                                });
                            jk.uI(y, C)
                        }
                    else
                        2 !== z && 3 !== z || eU.bp(n);
                else
                    1 === z && (z = aJ.pR(),
                        8 !== z ? 10 === z && e9.a1Y(t, 3243) : t !== e9.jV ? e9.a1Y(t, 3244) : 0 === k(n, 1) ? c4.a63.a6E(n) : (z = k(n, 2),
                            0 === z ? 3 !== x ? e9.a1Y(e9.jV, 3230) : (z = k(n, 9),
                                y = k(n, 7),
                                0 !== fB[z] && 0 !== fB[aw] && (y %= a5.a6,
                                    e5.mi(z, aw, y),
                                    e6.mv(z, 1, y))) : 1 === z ? 2 !== x ? e9.a1Y(e9.jV, 3235) : (z = k(n, 9),
                                        0 !== fB[z] && 0 !== fB[aw] && eM.a1B(0, [z], !0) && e5.lT(z, 1)) : 3 !== x ? e9.a1Y(e9.jV, 3236) : (z = k(n, 9),
                                            y = k(n, 9),
                                            0 !== fB[z] && 0 !== fB[y] && 0 !== fB[aw] && eM.a1B(1, [z], !0) && (e6.mv(z, 3, 96),
                                                e6.mv(y, 4, 96),
                                                e5.my(z, y)))))
            }
        }
            ;
        this.wB = function (t) {
            l = 1;
            x = t.length;
            if (2 === k(t, 2)) {
                l += 20;
                for (var n = k(t, 9), z = k(t, 14), y = k(t, 4), A = 1 === k(t, 1), B = k(t, 6), C = k(t, 14), F = k(t, 9) + 1, E = [], H, J, K, D = 0; D < F; D++)
                    H = k(t, 1),
                        J = [k(t, 6), k(t, 6), k(t, 6)],
                        K = g(k(t, 5), t),
                        E.push({
                            name: K,
                            xI: J,
                            xJ: H
                        });
                aJ.vX();
                x0(B, C);
                1 === E.length && du.xD(y);
                j8(z, n, E, y, A)
            } else {
                l += 20;
                n = k(t, 1);
                z = k(t, 14);
                y = k(t, 4);
                A = 1 === k(t, 1);
                B = k(t, 6);
                C = k(t, 14);
                F = [];
                for (D = 0; 2 > D; D++)
                    E = k(t, 1),
                        H = [k(t, 6), k(t, 6), k(t, 6)],
                        J = k(t, 14),
                        K = g(k(t, 5), t),
                        F.push({
                            name: K,
                            xI: H,
                            i4: J,
                            xJ: E
                        });
                aJ.vX();
                x0(B, C);
                j8(z, n, F, y, A)
            }
        }
            ;
        this.w4 = function (t) {
            l = 1;
            x = t.length;
            var n = k(t, 2)
                , z = k(t, 10);
            e9.vo > e9.w9 && (z += e9.w9);
            if (e9.vo === z)
                return e9.jV = z,
                    !1;
            e9.close(e9.vo, 3247);
            e9.jV = z;
            eU.vy = k(t, 10);
            eU.vz = k(t, 2 === n ? 9 : 1);
            e9.rb(z, 5) && ii.a1V();
            return !0
        }
            ;
        this.a6F = function (t, n) {
            l = 2;
            var z = 8 * t.length;
            if (k(t, 3) !== n)
                e9.a1Y(e9.jV, 3248);
            else
                for (; l + 8 <= z;) {
                    var y = k(t, 3);
                    var A = k(t, 9);
                    if (0 === y) {
                        y = k(t, 10);
                        var B = k(t, 9);
                        B = B === A ? b8 : B;
                        eC.fU(A, y, B)
                    } else if (1 === y) {
                        y = k(t, 10);
                        B = k(t, 11);
                        var C = k(t, 11);
                        eC.fX(A, y, B, C)
                    } else
                        2 === y ? (B = k(t, 9),
                            B = B === A ? b8 : B,
                            eC.fa(A, B)) : 3 === y ? eC.fd(A) : 4 === y ? (y = k(t, 7),
                                e6.mv(A, 0, y)) : 5 === y ? eC.fl(A) : 6 === y ? eC.fc(A, k(t, 1)) : 7 === y && eC.fb(A, 1 + k(t, 11))
                }
        }
    }
    function a1w() {
        this.a4q = this.a4p = this.a4o = this.a4n = this.a4s = this.a4r = 0;
        this.tp = [0, 0, 0, 0];
        this.gv = function () {
            this.a4r = gf.gB();
            this.a4s = gf.cF();
            this.a4n = -this.a4r;
            this.a4o = -this.a4s;
            this.a4p = gA / g3;
            this.a4q = cB / g3;
            this.tp[0] = Math.floor(this.a4n);
            this.tp[1] = Math.floor(this.a4o);
            this.tp[2] = Math.floor(this.tp[0] + this.a4p + 1);
            this.tp[3] = Math.floor(this.tp[1] + this.a4q + 1);
            h4.tm = !0
        }
    }
    function kU() {
        var g, k;
        this.bp = function () {
            g = 1;
            k = 0
        }
            ;
        this.dF = function () {
            0 < g && (k = 0 === k ? c4.gY + 16 : k,
                g -= .001 * (c4.gY - k),
                g = 0 > g ? 0 : g,
                k = c4.gY,
                c4.c5 = !0)
        }
            ;
        this.cG = function () {
            0 < g && (cH.fillStyle = "rgba(0,0,0," + g + ")",
                cH.fillRect(0, 0, gA, cB))
        }
    }
    function kZ() {
        this.l7 = !1;
        this.xC = [0, 0, 0, 0];
        this.show = function () {
            this.l7 = !0;
            this.lq();
            c4.c5 = !0
        }
            ;
        this.lq = function () {
            var g = s - 7 * cA;
            this.xC[2] = q ? Math.floor(.75 * pB) : Math.floor(.5 * pB);
            this.xC[3] = Math.floor(1.2 * this.xC[2]);
            this.xC[3] > g && (this.xC[3] = g,
                this.xC[2] = Math.floor(g / 1.2));
            this.xC[0] = Math.floor((r - this.xC[2]) / 2);
            this.xC[1] = Math.floor((s - this.xC[3]) / 2)
        }
            ;
        this.lh = function (g, k) {
            return g < this.xC[0] || k < this.xC[1] || g > this.xC[0] + this.xC[2] || k > this.xC[1] + this.xC[3] ? !1 : !0
        }
            ;
        this.c7 = function (g, k) {
            c4.c5 = !0;
            if (g < this.xC[0] || k < this.xC[1] || g > this.xC[0] + this.xC[2] || k > this.xC[1] + this.xC[3])
                return this.l7 = !1,
                    !0;
            var x = Math.floor(.13 * this.xC[3]);
            if (k < this.xC[1] + x)
                return g > this.xC[0] + this.xC[2] - 1.2 * x && (this.l7 = !1),
                    !0;
            x = Math.floor(7 * (k - this.xC[1] - x) / (this.xC[3] - x));
            x = 0 > x ? 0 : 6 < x ? 6 : x;
            g > this.xC[0] + this.xC[2] / 2 && (x += 7);
            x0(x, Math.floor(16384 * Math.random()));
            return !0
        }
            ;
        this.cG = function () {
            var g, k = Math.floor(.13 * this.xC[3]), x = (this.xC[3] - k - 8 * cA) / 7, l = Math.floor((this.xC[2] - 3 * cA) / 2);
            cH.lineWidth = 2;
            cH.textAlign = cJ;
            cH.textBaseline = cI;
            cH.font = bt + Math.floor(.48 * x) + bu;
            cH.fillStyle = hq;
            cH.fillRect(this.xC[0], this.xC[1], this.xC[2], this.xC[3]);
            cH.fillStyle = o9;
            cH.fillRect(this.xC[0], this.xC[1], this.xC[2], k);
            cH.strokeStyle = cK;
            cH.strokeRect(this.xC[0], this.xC[1], this.xC[2], this.xC[3]);
            cH.fillStyle = cK;
            for (g = 6; 0 <= g; g--) {
                var t = Math.floor(this.xC[1] + k + cA + g * (x + cA));
                wo === g ? (cH.fillStyle = o9,
                    cH.fillRect(this.xC[0] + cA, t, l, x),
                    cH.fillStyle = cK) : wo === g + 7 && (cH.fillStyle = o9,
                        cH.fillRect(this.xC[0] + l + 2 * cA, t, l, x),
                        cH.fillStyle = cK);
                cH.strokeRect(this.xC[0] + cA, t, l, x);
                cH.strokeRect(this.xC[0] + l + 2 * cA, t, l, x);
                cH.fillText(jf.bz(g).name, Math.floor(this.xC[0] + cA + l / 2), Math.floor(t + .5 * x));
                cH.fillText(jf.bz(g + 7).name, Math.floor(this.xC[0] + this.xC[2] - cA - l / 2), Math.floor(t + .5 * x))
            }
            fm.m4(Math.floor(this.xC[0] + this.xC[2] - .8 * k), Math.floor(this.xC[1] + .25 * k), Math.floor(.5 * k));
            cH.setTransform(1, 0, 0, 1, 0, 0)
        }
    }
    function kV() {
        function g(n) {
            var z = j()
                , y = Math.floor(z / 16777216);
            l(n, 24, y);
            l(n, 24, z - 16777216 * y)
        }
        function k(n) {
            l(n, 14, a1e);
            l(n, 4, b ? 2 : 12 <= d ? 1 : 0 < d ? 3 : 0);
            l(n, 1, a1i ? 1 : 0);
            l(n, 1, a1h ? 1 : 0);
            l(n, 5, (new Date).getHours() % 24)
        }
        function x(n) {
            return as(n, 8) + (0 < n % 8 ? 1 : 0)
        }
        function l(n, z, y) {
            for (var A, B, C = t; C < t + z; C++)
                A = as(C, 8),
                    B = 7 - C % 8,
                    n[A] |= (y >> z - (C - t + 1) & 1) << B;
            t += z
        }
        var t;
        this.re = function () {
            var n = new Uint8Array(3);
            t = 0;
            l(n, 1, 0);
            l(n, 3, 0);
            l(n, 14, a1e);
            e9.send(0, n)
        }
            ;
        this.vG = function (n) {
            var z = m.iL(jX.xH())
                , y = z.length
                , A = new Uint8Array(x(105 + 10 * y));
            t = 0;
            l(A, 1, 0);
            l(A, 3, 1);
            l(A, 10, a1j);
            var B = cC.m7[2].iY.uz();
            l(A, 6, B[0]);
            l(A, 6, B[1]);
            l(A, 6, B[2]);
            g(A);
            k(A);
            for (B = 0; B < y; B++)
                l(A, 10, z[B]);
            e9.vo = n;
            e9.send(n, A)
        }
            ;
        this.u8 = function (n, z) {
            var y = new Uint8Array(5);
            t = 0;
            l(y, 1, 0);
            l(y, 3, 7);
            l(y, 3, 0);
            l(y, 14, a1e);
            l(y, 1, z);
            l(y, 16, Math.abs(4096 + cD.position[z] + cD.u7[z]) % 65536);
            e9.send(n, y)
        }
            ;
        this.a1W = function (n) {
            var z, y = new Uint8Array(100);
            t = 0;
            l(y, 1, 0);
            l(y, 3, 7);
            l(y, 3, 1);
            l(y, 14, a1l);
            var A = m.iL(a1m)
                , B = qe(A.length, 77);
            l(y, 7, B);
            for (z = 0; z < B; z++)
                l(y, 10, A[z]);
            e9.send(n, y)
        }
            ;
        this.xf = function (n) {
            var z;
            if (!(jX.xV + 7E3 > c4.gY)) {
                jX.xV = c4.gY;
                var y = new Uint8Array(17);
                t = 0;
                l(y, 1, 0);
                l(y, 3, 7);
                l(y, 3, 2);
                g(y);
                var A = mU(jX.xU.length - 20, 0);
                for (z = jX.xU.length - 1; z >= A; z--)
                    l(y, 4, Math.abs(jX.xU.charCodeAt(z) - 48) % 10);
                e9.send(n, y)
            }
        }
            ;
        this.a1N = function (n, z) {
            var y = new Uint8Array(1);
            t = 0;
            l(y, 1, 0);
            l(y, 3, 5);
            l(y, 1, z ? 1 : 0);
            e9.send(n, y)
        }
            ;
        this.x4 = function (n) {
            var z = new Uint8Array(1);
            t = 0;
            l(z, 1, 0);
            l(z, 3, 2);
            l(z, 4, n);
            e9.send(e9.vo, z)
        }
            ;
        this.a1V = function () {
            var n = new Uint8Array(7);
            t = 0;
            l(n, 1, 0);
            l(n, 3, 6);
            l(n, 8, e9.mt());
            l(n, 10, eU.vy);
            l(n, 9, eU.vz);
            l(n, 10, a1j);
            l(n, 14, a1e);
            e9.send(e9.jV, n)
        }
            ;
        this.lP = function (n, z) {
            var y = new Uint8Array(3);
            t = 0;
            l(y, 1, 1);
            l(y, 3, 0);
            l(y, 10, n);
            l(y, 9, z);
            e9.send(e9.jV, y)
        }
            ;
        this.lR = function (n, z, y) {
            var A = new Uint8Array(5);
            t = 0;
            l(A, 1, 1);
            l(A, 3, 1);
            l(A, 10, n);
            l(A, 11, z);
            l(A, 11, y);
            e9.send(e9.jV, A)
        }
            ;
        this.pz = function (n) {
            var z = new Uint8Array(2);
            t = 0;
            l(z, 1, 1);
            l(z, 3, 2);
            l(z, 1, 0);
            l(z, 9, n);
            e9.send(e9.jV, z)
        }
            ;
        this.q0 = function (n) {
            var z = new Uint8Array(2);
            t = 0;
            l(z, 1, 1);
            l(z, 3, 2);
            l(z, 1, 1);
            l(z, 11, n - 1);
            e9.send(e9.jV, z)
        }
            ;
        this.ij = function (n, z) {
            var y = new Uint8Array(4);
            t = 0;
            l(y, 1, 1);
            l(y, 3, 3);
            l(y, 12, n);
            l(y, 10, z);
            e9.send(e9.jV, y)
        }
            ;
        this.ly = function () {
            var n = new Uint8Array(1);
            t = 0;
            l(n, 1, 1);
            l(n, 3, 4);
            e9.send(e9.jV, n)
        }
            ;
        this.o1 = function (n) {
            var z = new Uint8Array(2);
            t = 0;
            l(z, 1, 1);
            l(z, 3, 5);
            l(z, 7, n);
            e9.send(e9.jV, z)
        }
            ;
        this.o2 = function (n, z) {
            e5.mi(aw, z, n);
            var y = new Uint8Array(3);
            t = 0;
            l(y, 1, 1);
            l(y, 3, 6);
            l(y, 2, 0);
            l(y, 9, z);
            l(y, 7, n);
            e9.send(e9.jV, y)
        }
            ;
        this.lU = function (n) {
            var z = new Uint8Array(2);
            t = 0;
            l(z, 1, 1);
            l(z, 3, 6);
            l(z, 2, 1);
            l(z, 9, n);
            e9.send(e9.jV, z)
        }
            ;
        this.lL = function (n, z) {
            var y, A = n.length, B = new Uint8Array(x(15 + 9 * A));
            t = 0;
            l(B, 1, 1);
            l(B, 3, 6);
            l(B, 2, 2);
            l(B, 9, z);
            for (y = 0; y < A; y++)
                l(B, 9, n[y]);
            e9.send(e9.jV, B)
        }
            ;
        this.qZ = function (n) {
            var z = new Uint8Array(1);
            t = 0;
            l(z, 1, 1);
            l(z, 3, 7);
            l(z, 1, n ? 1 : 0);
            e9.send(e9.jV, z)
        }
            ;
        this.xG = function (n) {
            var z = new Uint8Array(4);
            t = 0;
            l(z, 1, 0);
            l(z, 3, 3);
            k(z);
            e9.send(n, z)
        }
    }
    setTimeout(aI, 1E4);
}
)();

if (localStorage.getItem("settings") !== null) {
    settings = {...settings, ...JSON.parse(localStorage.getItem("settings"))};
}
settingsManager.applySettings();

console.log('Successfully loaded FX Client');
