· 5 years ago · Jun 13, 2020, 09:02 PM
1//// ==UserScript==
2// @name ?⎝⧹ζ͜͡???? ???༻ ⧸⎠? (1.1) K|DA TV share
3// @namespace -
4// @version 1.1
5// @description Advanced MooMoo.io Hacking | Made By ⎝⧹ ζ͜͡?????? ???????༻ ⧸⎠#5743
6// @author ζ͜͡?????? ???????༻ + ??т?Ⓝ??Ɨ? D.KNIGHT
7// @match *://moomoo.io/*
8// @match *://sandbox.moomoo.io/*
9// @grant none
10// @require https://greasyfork.org/scripts/368273-msgpack/code/msgpack.js?version=598723
11// @require http://code.jquery.com/jquery-3.3.1.min.js
12// @require https://code.jquery.com/ui/1.12.0/jquery-ui.min.js
13// @require https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.0/jquery-confirm.min.js
14// @require https://greasyfork.org/scripts/368273-msgpack/code/msgpack.js?version=598723
15// @require http://code.jquery.com/jquery-3.3.1.min.js
16// @require https://code.jquery.com/ui/1.12.0/jquery-ui.min.js
17// @require https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.0/jquery-confirm.min.js
18// ==/UserScript==
19
20!function(e) {
21 var t = {};
22 function n(i) {
23 if (t[i])
24 return t[i].exports;
25 var r = t[i] = {
26 i: i,
27 l: !1,
28 exports: {}
29 };
30 return e[i].call(r.exports, r, r.exports, n),
31 r.l = !0,
32 r.exports
33 }
34 n.m = e,
35 n.c = t,
36 n.d = function(e, t, i) {
37 n.o(e, t) || Object.defineProperty(e, t, {
38 enumerable: !0,
39 get: i
40 })
41 }
42 ,
43 n.r = function(e) {
44 "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
45 value: "Module"
46 }),
47 Object.defineProperty(e, "__esModule", {
48 value: !0
49 })
50 }
51 ,
52 n.t = function(e, t) {
53 if (1 & t && (e = n(e)),
54 8 & t)
55 return e;
56 if (4 & t && "object" == typeof e && e && e.__esModule)
57 return e;
58 var i = Object.create(null);
59 if (n.r(i),
60 Object.defineProperty(i, "default", {
61 enumerable: !0,
62 value: e
63 }),
64 2 & t && "string" != typeof e)
65 for (var r in e)
66 n.d(i, r, function(t) {
67 return e[t]
68 }
69 .bind(null, r));
70 return i
71 }
72 ,
73 n.n = function(e) {
74 var t = e && e.__esModule ? function() {
75 return e.default
76 }
77 : function() {
78 return e
79 }
80 ;
81 return n.d(t, "a", t),
82 t
83 }
84 ,
85 n.o = function(e, t) {
86 return Object.prototype.hasOwnProperty.call(e, t)
87 }
88 ,
89 n.p = "",
90 n(n.s = 21)
91}([function(e, t, n) {
92 var i = t.global = n(25)
93 , r = t.hasBuffer = i && !!i.isBuffer
94 , s = t.hasArrayBuffer = "undefined" != typeof ArrayBuffer
95 , a = t.isArray = n(5);
96 t.isArrayBuffer = s ? function(e) {
97 return e instanceof ArrayBuffer || p(e)
98 }
99 : m;
100 var o = t.isBuffer = r ? i.isBuffer : m
101 , c = t.isView = s ? ArrayBuffer.isView || y("ArrayBuffer", "buffer") : m;
102 t.alloc = d,
103 t.concat = function(e, n) {
104 n || (n = 0,
105 Array.prototype.forEach.call(e, (function(e) {
106 n += e.length
107 }
108 )));
109 var i = this !== t && this || e[0]
110 , r = d.call(i, n)
111 , s = 0;
112 return Array.prototype.forEach.call(e, (function(e) {
113 s += f.copy.call(e, r, s)
114 }
115 )),
116 r
117 }
118 ,
119 t.from = function(e) {
120 return "string" == typeof e ? function(e) {
121 var t = 3 * e.length
122 , n = d.call(this, t)
123 , i = f.write.call(n, e);
124 return t !== i && (n = f.slice.call(n, 0, i)),
125 n
126 }
127 .call(this, e) : g(this).from(e)
128 }
129 ;
130 var l = t.Array = n(28)
131 , h = t.Buffer = n(29)
132 , u = t.Uint8Array = n(30)
133 , f = t.prototype = n(6);
134 function d(e) {
135 return g(this).alloc(e)
136 }
137 var p = y("ArrayBuffer");
138 function g(e) {
139 return o(e) ? h : c(e) ? u : a(e) ? l : r ? h : s ? u : l
140 }
141 function m() {
142 return !1
143 }
144 function y(e, t) {
145 return e = "[object " + e + "]",
146 function(n) {
147 return null != n && {}.toString.call(t ? n[t] : n) === e
148 }
149 }
150}
151, function(e, t, n) {
152 var i = n(5);
153 t.createCodec = o,
154 t.install = function(e) {
155 for (var t in e)
156 s.prototype[t] = a(s.prototype[t], e[t])
157 }
158 ,
159 t.filter = function(e) {
160 return i(e) ? function(e) {
161 return e = e.slice(),
162 function(n) {
163 return e.reduce(t, n)
164 }
165 ;
166 function t(e, t) {
167 return t(e)
168 }
169 }(e) : e
170 }
171 ;
172 var r = n(0);
173 function s(e) {
174 if (!(this instanceof s))
175 return new s(e);
176 this.options = e,
177 this.init()
178 }
179 function a(e, t) {
180 return e && t ? function() {
181 return e.apply(this, arguments),
182 t.apply(this, arguments)
183 }
184 : e || t
185 }
186 function o(e) {
187 return new s(e)
188 }
189 s.prototype.init = function() {
190 var e = this.options;
191 return e && e.uint8array && (this.bufferish = r.Uint8Array),
192 this
193 }
194 ,
195 t.preset = o({
196 preset: !0
197 })
198}
199, function(e, t, n) {
200 var i = n(3).ExtBuffer
201 , r = n(32)
202 , s = n(33)
203 , a = n(1);
204 function o() {
205 var e = this.options;
206 return this.encode = function(e) {
207 var t = s.getWriteType(e);
208 return function(e, n) {
209 var i = t[typeof n];
210 if (!i)
211 throw new Error('Unsupported type "' + typeof n + '": ' + n);
212 i(e, n)
213 }
214 }(e),
215 e && e.preset && r.setExtPackers(this),
216 this
217 }
218 a.install({
219 addExtPacker: function(e, t, n) {
220 n = a.filter(n);
221 var r = t.name;
222 r && "Object" !== r ? (this.extPackers || (this.extPackers = {}))[r] = s : (this.extEncoderList || (this.extEncoderList = [])).unshift([t, s]);
223 function s(t) {
224 return n && (t = n(t)),
225 new i(t,e)
226 }
227 },
228 getExtPacker: function(e) {
229 var t = this.extPackers || (this.extPackers = {})
230 , n = e.constructor
231 , i = n && n.name && t[n.name];
232 if (i)
233 return i;
234 for (var r = this.extEncoderList || (this.extEncoderList = []), s = r.length, a = 0; a < s; a++) {
235 var o = r[a];
236 if (n === o[0])
237 return o[1]
238 }
239 },
240 init: o
241 }),
242 t.preset = o.call(a.preset)
243}
244, function(e, t, n) {
245 t.ExtBuffer = function e(t, n) {
246 if (!(this instanceof e))
247 return new e(t,n);
248 this.buffer = i.from(t),
249 this.type = n
250 }
251 ;
252 var i = n(0)
253}
254, function(e, t) {
255 t.read = function(e, t, n, i, r) {
256 var s, a, o = 8 * r - i - 1, c = (1 << o) - 1, l = c >> 1, h = -7, u = n ? r - 1 : 0, f = n ? -1 : 1, d = e[t + u];
257 for (u += f,
258 s = d & (1 << -h) - 1,
259 d >>= -h,
260 h += o; h > 0; s = 256 * s + e[t + u],
261 u += f,
262 h -= 8)
263 ;
264 for (a = s & (1 << -h) - 1,
265 s >>= -h,
266 h += i; h > 0; a = 256 * a + e[t + u],
267 u += f,
268 h -= 8)
269 ;
270 if (0 === s)
271 s = 1 - l;
272 else {
273 if (s === c)
274 return a ? NaN : 1 / 0 * (d ? -1 : 1);
275 a += Math.pow(2, i),
276 s -= l
277 }
278 return (d ? -1 : 1) * a * Math.pow(2, s - i)
279 }
280 ,
281 t.write = function(e, t, n, i, r, s) {
282 var a, o, c, l = 8 * s - r - 1, h = (1 << l) - 1, u = h >> 1, f = 23 === r ? Math.pow(2, -24) - Math.pow(2, -77) : 0, d = i ? 0 : s - 1, p = i ? 1 : -1, g = t < 0 || 0 === t && 1 / t < 0 ? 1 : 0;
283 for (t = Math.abs(t),
284 isNaN(t) || t === 1 / 0 ? (o = isNaN(t) ? 1 : 0,
285 a = h) : (a = Math.floor(Math.log(t) / Math.LN2),
286 t * (c = Math.pow(2, -a)) < 1 && (a--,
287 c *= 2),
288 (t += a + u >= 1 ? f / c : f * Math.pow(2, 1 - u)) * c >= 2 && (a++,
289 c /= 2),
290 a + u >= h ? (o = 0,
291 a = h) : a + u >= 1 ? (o = (t * c - 1) * Math.pow(2, r),
292 a += u) : (o = t * Math.pow(2, u - 1) * Math.pow(2, r),
293 a = 0)); r >= 8; e[n + d] = 255 & o,
294 d += p,
295 o /= 256,
296 r -= 8)
297 ;
298 for (a = a << r | o,
299 l += r; l > 0; e[n + d] = 255 & a,
300 d += p,
301 a /= 256,
302 l -= 8)
303 ;
304 e[n + d - p] |= 128 * g
305 }
306}
307, function(e, t) {
308 var n = {}.toString;
309 e.exports = Array.isArray || function(e) {
310 return "[object Array]" == n.call(e)
311 }
312}
313, function(e, t, n) {
314 var i = n(31);
315 t.copy = c,
316 t.slice = l,
317 t.toString = function(e, t, n) {
318 return (!a && r.isBuffer(this) ? this.toString : i.toString).apply(this, arguments)
319 }
320 ,
321 t.write = function(e) {
322 return function() {
323 return (this[e] || i[e]).apply(this, arguments)
324 }
325 }("write");
326 var r = n(0)
327 , s = r.global
328 , a = r.hasBuffer && "TYPED_ARRAY_SUPPORT"in s
329 , o = a && !s.TYPED_ARRAY_SUPPORT;
330 function c(e, t, n, s) {
331 var a = r.isBuffer(this)
332 , c = r.isBuffer(e);
333 if (a && c)
334 return this.copy(e, t, n, s);
335 if (o || a || c || !r.isView(this) || !r.isView(e))
336 return i.copy.call(this, e, t, n, s);
337 var h = n || null != s ? l.call(this, n, s) : this;
338 return e.set(h, t),
339 h.length
340 }
341 function l(e, t) {
342 var n = this.slice || !o && this.subarray;
343 if (n)
344 return n.call(this, e, t);
345 var i = r.alloc.call(this, t - e);
346 return c.call(this, i, 0, e, t),
347 i
348 }
349}
350, function(e, t, n) {
351 (function(e) {
352 !function(t) {
353 var n, i = "undefined", r = i !== typeof e && e, s = i !== typeof Uint8Array && Uint8Array, a = i !== typeof ArrayBuffer && ArrayBuffer, o = [0, 0, 0, 0, 0, 0, 0, 0], c = Array.isArray || function(e) {
354 return !!e && "[object Array]" == Object.prototype.toString.call(e)
355 }
356 , l = 4294967296;
357 function h(e, c, h) {
358 var b = c ? 0 : 4
359 , x = c ? 4 : 0
360 , S = c ? 0 : 3
361 , T = c ? 1 : 2
362 , I = c ? 2 : 1
363 , E = c ? 3 : 0
364 , M = c ? y : v
365 , A = c ? k : w
366 , P = O.prototype
367 , B = "is" + e
368 , C = "_" + B;
369 return P.buffer = void 0,
370 P.offset = 0,
371 P[C] = !0,
372 P.toNumber = R,
373 P.toString = function(e) {
374 var t = this.buffer
375 , n = this.offset
376 , i = _(t, n + b)
377 , r = _(t, n + x)
378 , s = ""
379 , a = !h && 2147483648 & i;
380 for (a && (i = ~i,
381 r = l - r),
382 e = e || 10; ; ) {
383 var o = i % e * l + r;
384 if (i = Math.floor(i / e),
385 r = Math.floor(o / e),
386 s = (o % e).toString(e) + s,
387 !i && !r)
388 break
389 }
390 return a && (s = "-" + s),
391 s
392 }
393 ,
394 P.toJSON = R,
395 P.toArray = u,
396 r && (P.toBuffer = f),
397 s && (P.toArrayBuffer = d),
398 O[B] = function(e) {
399 return !(!e || !e[C])
400 }
401 ,
402 t[e] = O,
403 O;
404 function O(e, t, r, c) {
405 return this instanceof O ? function(e, t, r, c, h) {
406 if (s && a && (t instanceof a && (t = new s(t)),
407 c instanceof a && (c = new s(c))),
408 t || r || c || n) {
409 if (!p(t, r))
410 h = r,
411 c = t,
412 r = 0,
413 t = new (n || Array)(8);
414 e.buffer = t,
415 e.offset = r |= 0,
416 i !== typeof c && ("string" == typeof c ? function(e, t, n, i) {
417 var r = 0
418 , s = n.length
419 , a = 0
420 , o = 0;
421 "-" === n[0] && r++;
422 for (var c = r; r < s; ) {
423 var h = parseInt(n[r++], i);
424 if (!(h >= 0))
425 break;
426 o = o * i + h,
427 a = a * i + Math.floor(o / l),
428 o %= l
429 }
430 c && (a = ~a,
431 o ? o = l - o : a++),
432 j(e, t + b, a),
433 j(e, t + x, o)
434 }(t, r, c, h || 10) : p(c, h) ? g(t, r, c, h) : "number" == typeof h ? (j(t, r + b, c),
435 j(t, r + x, h)) : c > 0 ? M(t, r, c) : c < 0 ? A(t, r, c) : g(t, r, o, 0))
436 } else
437 e.buffer = m(o, 0)
438 }(this, e, t, r, c) : new O(e,t,r,c)
439 }
440 function R() {
441 var e = this.buffer
442 , t = this.offset
443 , n = _(e, t + b)
444 , i = _(e, t + x);
445 return h || (n |= 0),
446 n ? n * l + i : i
447 }
448 function j(e, t, n) {
449 e[t + E] = 255 & n,
450 n >>= 8,
451 e[t + I] = 255 & n,
452 n >>= 8,
453 e[t + T] = 255 & n,
454 n >>= 8,
455 e[t + S] = 255 & n
456 }
457 function _(e, t) {
458 return 16777216 * e[t + S] + (e[t + T] << 16) + (e[t + I] << 8) + e[t + E]
459 }
460 }
461 function u(e) {
462 var t = this.buffer
463 , i = this.offset;
464 return n = null,
465 !1 !== e && 0 === i && 8 === t.length && c(t) ? t : m(t, i)
466 }
467 function f(t) {
468 var i = this.buffer
469 , s = this.offset;
470 if (n = r,
471 !1 !== t && 0 === s && 8 === i.length && e.isBuffer(i))
472 return i;
473 var a = new r(8);
474 return g(a, 0, i, s),
475 a
476 }
477 function d(e) {
478 var t = this.buffer
479 , i = this.offset
480 , r = t.buffer;
481 if (n = s,
482 !1 !== e && 0 === i && r instanceof a && 8 === r.byteLength)
483 return r;
484 var o = new s(8);
485 return g(o, 0, t, i),
486 o.buffer
487 }
488 function p(e, t) {
489 var n = e && e.length;
490 return t |= 0,
491 n && t + 8 <= n && "string" != typeof e[t]
492 }
493 function g(e, t, n, i) {
494 t |= 0,
495 i |= 0;
496 for (var r = 0; r < 8; r++)
497 e[t++] = 255 & n[i++]
498 }
499 function m(e, t) {
500 return Array.prototype.slice.call(e, t, t + 8)
501 }
502 function y(e, t, n) {
503 for (var i = t + 8; i > t; )
504 e[--i] = 255 & n,
505 n /= 256
506 }
507 function k(e, t, n) {
508 var i = t + 8;
509 for (n++; i > t; )
510 e[--i] = 255 & -n ^ 255,
511 n /= 256
512 }
513 function v(e, t, n) {
514 for (var i = t + 8; t < i; )
515 e[t++] = 255 & n,
516 n /= 256
517 }
518 function w(e, t, n) {
519 var i = t + 8;
520 for (n++; t < i; )
521 e[t++] = 255 & -n ^ 255,
522 n /= 256
523 }
524 h("Uint64BE", !0, !0),
525 h("Int64BE", !0, !1),
526 h("Uint64LE", !1, !0),
527 h("Int64LE", !1, !1)
528 }("string" != typeof t.nodeName ? t : this || {})
529 }
530 ).call(this, n(11).Buffer)
531}
532, function(e, t, n) {
533 var i = n(3).ExtBuffer
534 , r = n(35)
535 , s = n(17).readUint8
536 , a = n(36)
537 , o = n(1);
538 function c() {
539 var e = this.options;
540 return this.decode = function(e) {
541 var t = a.getReadToken(e);
542 return function(e) {
543 var n = s(e)
544 , i = t[n];
545 if (!i)
546 throw new Error("Invalid type: " + (n ? "0x" + n.toString(16) : n));
547 return i(e)
548 }
549 }(e),
550 e && e.preset && r.setExtUnpackers(this),
551 this
552 }
553 o.install({
554 addExtUnpacker: function(e, t) {
555 (this.extUnpackers || (this.extUnpackers = []))[e] = o.filter(t)
556 },
557 getExtUnpacker: function(e) {
558 return (this.extUnpackers || (this.extUnpackers = []))[e] || function(t) {
559 return new i(t,e)
560 }
561 },
562 init: c
563 }),
564 t.preset = c.call(o.preset)
565}
566, function(e, t, n) {
567 t.encode = function(e, t) {
568 var n = new i(t);
569 return n.write(e),
570 n.read()
571 }
572 ;
573 var i = n(10).EncodeBuffer
574}
575, function(e, t, n) {
576 t.EncodeBuffer = r;
577 var i = n(2).preset;
578 function r(e) {
579 if (!(this instanceof r))
580 return new r(e);
581 if (e && (this.options = e,
582 e.codec)) {
583 var t = this.codec = e.codec;
584 t.bufferish && (this.bufferish = t.bufferish)
585 }
586 }
587 n(14).FlexEncoder.mixin(r.prototype),
588 r.prototype.codec = i,
589 r.prototype.write = function(e) {
590 this.codec.encode(this, e)
591 }
592}
593, function(e, t, n) {
594 "use strict";
595 (function(e) {
596 /*!
597 * The buffer module from node.js, for the browser.
598 *
599 * @author Feross Aboukhadijeh <http://feross.org>
600 * @license MIT
601 */
602 var i = n(26)
603 , r = n(4)
604 , s = n(27);
605 function a() {
606 return c.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823
607 }
608 function o(e, t) {
609 if (a() < t)
610 throw new RangeError("Invalid typed array length");
611 return c.TYPED_ARRAY_SUPPORT ? (e = new Uint8Array(t)).__proto__ = c.prototype : (null === e && (e = new c(t)),
612 e.length = t),
613 e
614 }
615 function c(e, t, n) {
616 if (!(c.TYPED_ARRAY_SUPPORT || this instanceof c))
617 return new c(e,t,n);
618 if ("number" == typeof e) {
619 if ("string" == typeof t)
620 throw new Error("If encoding is specified then the first argument must be a string");
621 return u(this, e)
622 }
623 return l(this, e, t, n)
624 }
625 function l(e, t, n, i) {
626 if ("number" == typeof t)
627 throw new TypeError('"value" argument must not be a number');
628 return "undefined" != typeof ArrayBuffer && t instanceof ArrayBuffer ? function(e, t, n, i) {
629 if (t.byteLength,
630 n < 0 || t.byteLength < n)
631 throw new RangeError("'offset' is out of bounds");
632 if (t.byteLength < n + (i || 0))
633 throw new RangeError("'length' is out of bounds");
634 return t = void 0 === n && void 0 === i ? new Uint8Array(t) : void 0 === i ? new Uint8Array(t,n) : new Uint8Array(t,n,i),
635 c.TYPED_ARRAY_SUPPORT ? (e = t).__proto__ = c.prototype : e = f(e, t),
636 e
637 }(e, t, n, i) : "string" == typeof t ? function(e, t, n) {
638 if ("string" == typeof n && "" !== n || (n = "utf8"),
639 !c.isEncoding(n))
640 throw new TypeError('"encoding" must be a valid string encoding');
641 var i = 0 | p(t, n)
642 , r = (e = o(e, i)).write(t, n);
643 return r !== i && (e = e.slice(0, r)),
644 e
645 }(e, t, n) : function(e, t) {
646 if (c.isBuffer(t)) {
647 var n = 0 | d(t.length);
648 return 0 === (e = o(e, n)).length || t.copy(e, 0, 0, n),
649 e
650 }
651 if (t) {
652 if ("undefined" != typeof ArrayBuffer && t.buffer instanceof ArrayBuffer || "length"in t)
653 return "number" != typeof t.length || function(e) {
654 return e != e
655 }(t.length) ? o(e, 0) : f(e, t);
656 if ("Buffer" === t.type && s(t.data))
657 return f(e, t.data)
658 }
659 throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")
660 }(e, t)
661 }
662 function h(e) {
663 if ("number" != typeof e)
664 throw new TypeError('"size" argument must be a number');
665 if (e < 0)
666 throw new RangeError('"size" argument must not be negative')
667 }
668 function u(e, t) {
669 if (h(t),
670 e = o(e, t < 0 ? 0 : 0 | d(t)),
671 !c.TYPED_ARRAY_SUPPORT)
672 for (var n = 0; n < t; ++n)
673 e[n] = 0;
674 return e
675 }
676 function f(e, t) {
677 var n = t.length < 0 ? 0 : 0 | d(t.length);
678 e = o(e, n);
679 for (var i = 0; i < n; i += 1)
680 e[i] = 255 & t[i];
681 return e
682 }
683 function d(e) {
684 if (e >= a())
685 throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + a().toString(16) + " bytes");
686 return 0 | e
687 }
688 function p(e, t) {
689 if (c.isBuffer(e))
690 return e.length;
691 if ("undefined" != typeof ArrayBuffer && "function" == typeof ArrayBuffer.isView && (ArrayBuffer.isView(e) || e instanceof ArrayBuffer))
692 return e.byteLength;
693 "string" != typeof e && (e = "" + e);
694 var n = e.length;
695 if (0 === n)
696 return 0;
697 for (var i = !1; ; )
698 switch (t) {
699 case "ascii":
700 case "latin1":
701 case "binary":
702 return n;
703 case "utf8":
704 case "utf-8":
705 case void 0:
706 return z(e).length;
707 case "ucs2":
708 case "ucs-2":
709 case "utf16le":
710 case "utf-16le":
711 return 2 * n;
712 case "hex":
713 return n >>> 1;
714 case "base64":
715 return H(e).length;
716 default:
717 if (i)
718 return z(e).length;
719 t = ("" + t).toLowerCase(),
720 i = !0
721 }
722 }
723 function g(e, t, n) {
724 var i = e[t];
725 e[t] = e[n],
726 e[n] = i
727 }
728 function m(e, t, n, i, r) {
729 if (0 === e.length)
730 return -1;
731 if ("string" == typeof n ? (i = n,
732 n = 0) : n > 2147483647 ? n = 2147483647 : n < -2147483648 && (n = -2147483648),
733 n = +n,
734 isNaN(n) && (n = r ? 0 : e.length - 1),
735 n < 0 && (n = e.length + n),
736 n >= e.length) {
737 if (r)
738 return -1;
739 n = e.length - 1
740 } else if (n < 0) {
741 if (!r)
742 return -1;
743 n = 0
744 }
745 if ("string" == typeof t && (t = c.from(t, i)),
746 c.isBuffer(t))
747 return 0 === t.length ? -1 : y(e, t, n, i, r);
748 if ("number" == typeof t)
749 return t &= 255,
750 c.TYPED_ARRAY_SUPPORT && "function" == typeof Uint8Array.prototype.indexOf ? r ? Uint8Array.prototype.indexOf.call(e, t, n) : Uint8Array.prototype.lastIndexOf.call(e, t, n) : y(e, [t], n, i, r);
751 throw new TypeError("val must be string, number or Buffer")
752 }
753 function y(e, t, n, i, r) {
754 var s, a = 1, o = e.length, c = t.length;
755 if (void 0 !== i && ("ucs2" === (i = String(i).toLowerCase()) || "ucs-2" === i || "utf16le" === i || "utf-16le" === i)) {
756 if (e.length < 2 || t.length < 2)
757 return -1;
758 a = 2,
759 o /= 2,
760 c /= 2,
761 n /= 2
762 }
763 function l(e, t) {
764 return 1 === a ? e[t] : e.readUInt16BE(t * a)
765 }
766 if (r) {
767 var h = -1;
768 for (s = n; s < o; s++)
769 if (l(e, s) === l(t, -1 === h ? 0 : s - h)) {
770 if (-1 === h && (h = s),
771 s - h + 1 === c)
772 return h * a
773 } else
774 -1 !== h && (s -= s - h),
775 h = -1
776 } else
777 for (n + c > o && (n = o - c),
778 s = n; s >= 0; s--) {
779 for (var u = !0, f = 0; f < c; f++)
780 if (l(e, s + f) !== l(t, f)) {
781 u = !1;
782 break
783 }
784 if (u)
785 return s
786 }
787 return -1
788 }
789 function k(e, t, n, i) {
790 n = Number(n) || 0;
791 var r = e.length - n;
792 i ? (i = Number(i)) > r && (i = r) : i = r;
793 var s = t.length;
794 if (s % 2 != 0)
795 throw new TypeError("Invalid hex string");
796 i > s / 2 && (i = s / 2);
797 for (var a = 0; a < i; ++a) {
798 var o = parseInt(t.substr(2 * a, 2), 16);
799 if (isNaN(o))
800 return a;
801 e[n + a] = o
802 }
803 return a
804 }
805 function v(e, t, n, i) {
806 return V(z(t, e.length - n), e, n, i)
807 }
808 function w(e, t, n, i) {
809 return V(function(e) {
810 for (var t = [], n = 0; n < e.length; ++n)
811 t.push(255 & e.charCodeAt(n));
812 return t
813 }(t), e, n, i)
814 }
815 function b(e, t, n, i) {
816 return w(e, t, n, i)
817 }
818 function x(e, t, n, i) {
819 return V(H(t), e, n, i)
820 }
821 function S(e, t, n, i) {
822 return V(function(e, t) {
823 for (var n, i, r, s = [], a = 0; a < e.length && !((t -= 2) < 0); ++a)
824 i = (n = e.charCodeAt(a)) >> 8,
825 r = n % 256,
826 s.push(r),
827 s.push(i);
828 return s
829 }(t, e.length - n), e, n, i)
830 }
831 function T(e, t, n) {
832 return 0 === t && n === e.length ? i.fromByteArray(e) : i.fromByteArray(e.slice(t, n))
833 }
834 function I(e, t, n) {
835 n = Math.min(e.length, n);
836 for (var i = [], r = t; r < n; ) {
837 var s, a, o, c, l = e[r], h = null, u = l > 239 ? 4 : l > 223 ? 3 : l > 191 ? 2 : 1;
838 if (r + u <= n)
839 switch (u) {
840 case 1:
841 l < 128 && (h = l);
842 break;
843 case 2:
844 128 == (192 & (s = e[r + 1])) && (c = (31 & l) << 6 | 63 & s) > 127 && (h = c);
845 break;
846 case 3:
847 s = e[r + 1],
848 a = e[r + 2],
849 128 == (192 & s) && 128 == (192 & a) && (c = (15 & l) << 12 | (63 & s) << 6 | 63 & a) > 2047 && (c < 55296 || c > 57343) && (h = c);
850 break;
851 case 4:
852 s = e[r + 1],
853 a = e[r + 2],
854 o = e[r + 3],
855 128 == (192 & s) && 128 == (192 & a) && 128 == (192 & o) && (c = (15 & l) << 18 | (63 & s) << 12 | (63 & a) << 6 | 63 & o) > 65535 && c < 1114112 && (h = c)
856 }
857 null === h ? (h = 65533,
858 u = 1) : h > 65535 && (h -= 65536,
859 i.push(h >>> 10 & 1023 | 55296),
860 h = 56320 | 1023 & h),
861 i.push(h),
862 r += u
863 }
864 return function(e) {
865 var t = e.length;
866 if (t <= E)
867 return String.fromCharCode.apply(String, e);
868 for (var n = "", i = 0; i < t; )
869 n += String.fromCharCode.apply(String, e.slice(i, i += E));
870 return n
871 }(i)
872 }
873 t.Buffer = c,
874 t.SlowBuffer = function(e) {
875 return +e != e && (e = 0),
876 c.alloc(+e)
877 }
878 ,
879 t.INSPECT_MAX_BYTES = 50,
880 c.TYPED_ARRAY_SUPPORT = void 0 !== e.TYPED_ARRAY_SUPPORT ? e.TYPED_ARRAY_SUPPORT : function() {
881 try {
882 var e = new Uint8Array(1);
883 return e.__proto__ = {
884 __proto__: Uint8Array.prototype,
885 foo: function() {
886 return 42
887 }
888 },
889 42 === e.foo() && "function" == typeof e.subarray && 0 === e.subarray(1, 1).byteLength
890 } catch (e) {
891 return !1
892 }
893 }(),
894 t.kMaxLength = a(),
895 c.poolSize = 8192,
896 c._augment = function(e) {
897 return e.__proto__ = c.prototype,
898 e
899 }
900 ,
901 c.from = function(e, t, n) {
902 return l(null, e, t, n)
903 }
904 ,
905 c.TYPED_ARRAY_SUPPORT && (c.prototype.__proto__ = Uint8Array.prototype,
906 c.__proto__ = Uint8Array,
907 "undefined" != typeof Symbol && Symbol.species && c[Symbol.species] === c && Object.defineProperty(c, Symbol.species, {
908 value: null,
909 configurable: !0
910 })),
911 c.alloc = function(e, t, n) {
912 return function(e, t, n, i) {
913 return h(t),
914 t <= 0 ? o(e, t) : void 0 !== n ? "string" == typeof i ? o(e, t).fill(n, i) : o(e, t).fill(n) : o(e, t)
915 }(null, e, t, n)
916 }
917 ,
918 c.allocUnsafe = function(e) {
919 return u(null, e)
920 }
921 ,
922 c.allocUnsafeSlow = function(e) {
923 return u(null, e)
924 }
925 ,
926 c.isBuffer = function(e) {
927 return !(null == e || !e._isBuffer)
928 }
929 ,
930 c.compare = function(e, t) {
931 if (!c.isBuffer(e) || !c.isBuffer(t))
932 throw new TypeError("Arguments must be Buffers");
933 if (e === t)
934 return 0;
935 for (var n = e.length, i = t.length, r = 0, s = Math.min(n, i); r < s; ++r)
936 if (e[r] !== t[r]) {
937 n = e[r],
938 i = t[r];
939 break
940 }
941 return n < i ? -1 : i < n ? 1 : 0
942 }
943 ,
944 c.isEncoding = function(e) {
945 switch (String(e).toLowerCase()) {
946 case "hex":
947 case "utf8":
948 case "utf-8":
949 case "ascii":
950 case "latin1":
951 case "binary":
952 case "base64":
953 case "ucs2":
954 case "ucs-2":
955 case "utf16le":
956 case "utf-16le":
957 return !0;
958 default:
959 return !1
960 }
961 }
962 ,
963 c.concat = function(e, t) {
964 if (!s(e))
965 throw new TypeError('"list" argument must be an Array of Buffers');
966 if (0 === e.length)
967 return c.alloc(0);
968 var n;
969 if (void 0 === t)
970 for (t = 0,
971 n = 0; n < e.length; ++n)
972 t += e[n].length;
973 var i = c.allocUnsafe(t)
974 , r = 0;
975 for (n = 0; n < e.length; ++n) {
976 var a = e[n];
977 if (!c.isBuffer(a))
978 throw new TypeError('"list" argument must be an Array of Buffers');
979 a.copy(i, r),
980 r += a.length
981 }
982 return i
983 }
984 ,
985 c.byteLength = p,
986 c.prototype._isBuffer = !0,
987 c.prototype.swap16 = function() {
988 var e = this.length;
989 if (e % 2 != 0)
990 throw new RangeError("Buffer size must be a multiple of 16-bits");
991 for (var t = 0; t < e; t += 2)
992 g(this, t, t + 1);
993 return this
994 }
995 ,
996 c.prototype.swap32 = function() {
997 var e = this.length;
998 if (e % 4 != 0)
999 throw new RangeError("Buffer size must be a multiple of 32-bits");
1000 for (var t = 0; t < e; t += 4)
1001 g(this, t, t + 3),
1002 g(this, t + 1, t + 2);
1003 return this
1004 }
1005 ,
1006 c.prototype.swap64 = function() {
1007 var e = this.length;
1008 if (e % 8 != 0)
1009 throw new RangeError("Buffer size must be a multiple of 64-bits");
1010 for (var t = 0; t < e; t += 8)
1011 g(this, t, t + 7),
1012 g(this, t + 1, t + 6),
1013 g(this, t + 2, t + 5),
1014 g(this, t + 3, t + 4);
1015 return this
1016 }
1017 ,
1018 c.prototype.toString = function() {
1019 var e = 0 | this.length;
1020 return 0 === e ? "" : 0 === arguments.length ? I(this, 0, e) : function(e, t, n) {
1021 var i = !1;
1022 if ((void 0 === t || t < 0) && (t = 0),
1023 t > this.length)
1024 return "";
1025 if ((void 0 === n || n > this.length) && (n = this.length),
1026 n <= 0)
1027 return "";
1028 if ((n >>>= 0) <= (t >>>= 0))
1029 return "";
1030 for (e || (e = "utf8"); ; )
1031 switch (e) {
1032 case "hex":
1033 return P(this, t, n);
1034 case "utf8":
1035 case "utf-8":
1036 return I(this, t, n);
1037 case "ascii":
1038 return M(this, t, n);
1039 case "latin1":
1040 case "binary":
1041 return A(this, t, n);
1042 case "base64":
1043 return T(this, t, n);
1044 case "ucs2":
1045 case "ucs-2":
1046 case "utf16le":
1047 case "utf-16le":
1048 return B(this, t, n);
1049 default:
1050 if (i)
1051 throw new TypeError("Unknown encoding: " + e);
1052 e = (e + "").toLowerCase(),
1053 i = !0
1054 }
1055 }
1056 .apply(this, arguments)
1057 }
1058 ,
1059 c.prototype.equals = function(e) {
1060 if (!c.isBuffer(e))
1061 throw new TypeError("Argument must be a Buffer");
1062 return this === e || 0 === c.compare(this, e)
1063 }
1064 ,
1065 c.prototype.inspect = function() {
1066 var e = ""
1067 , n = t.INSPECT_MAX_BYTES;
1068 return this.length > 0 && (e = this.toString("hex", 0, n).match(/.{2}/g).join(" "),
1069 this.length > n && (e += " ... ")),
1070 "<Buffer " + e + ">"
1071 }
1072 ,
1073 c.prototype.compare = function(e, t, n, i, r) {
1074 if (!c.isBuffer(e))
1075 throw new TypeError("Argument must be a Buffer");
1076 if (void 0 === t && (t = 0),
1077 void 0 === n && (n = e ? e.length : 0),
1078 void 0 === i && (i = 0),
1079 void 0 === r && (r = this.length),
1080 t < 0 || n > e.length || i < 0 || r > this.length)
1081 throw new RangeError("out of range index");
1082 if (i >= r && t >= n)
1083 return 0;
1084 if (i >= r)
1085 return -1;
1086 if (t >= n)
1087 return 1;
1088 if (this === e)
1089 return 0;
1090 for (var s = (r >>>= 0) - (i >>>= 0), a = (n >>>= 0) - (t >>>= 0), o = Math.min(s, a), l = this.slice(i, r), h = e.slice(t, n), u = 0; u < o; ++u)
1091 if (l[u] !== h[u]) {
1092 s = l[u],
1093 a = h[u];
1094 break
1095 }
1096 return s < a ? -1 : a < s ? 1 : 0
1097 }
1098 ,
1099 c.prototype.includes = function(e, t, n) {
1100 return -1 !== this.indexOf(e, t, n)
1101 }
1102 ,
1103 c.prototype.indexOf = function(e, t, n) {
1104 return m(this, e, t, n, !0)
1105 }
1106 ,
1107 c.prototype.lastIndexOf = function(e, t, n) {
1108 return m(this, e, t, n, !1)
1109 }
1110 ,
1111 c.prototype.write = function(e, t, n, i) {
1112 if (void 0 === t)
1113 i = "utf8",
1114 n = this.length,
1115 t = 0;
1116 else if (void 0 === n && "string" == typeof t)
1117 i = t,
1118 n = this.length,
1119 t = 0;
1120 else {
1121 if (!isFinite(t))
1122 throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");
1123 t |= 0,
1124 isFinite(n) ? (n |= 0,
1125 void 0 === i && (i = "utf8")) : (i = n,
1126 n = void 0)
1127 }
1128 var r = this.length - t;
1129 if ((void 0 === n || n > r) && (n = r),
1130 e.length > 0 && (n < 0 || t < 0) || t > this.length)
1131 throw new RangeError("Attempt to write outside buffer bounds");
1132 i || (i = "utf8");
1133 for (var s = !1; ; )
1134 switch (i) {
1135 case "hex":
1136 return k(this, e, t, n);
1137 case "utf8":
1138 case "utf-8":
1139 return v(this, e, t, n);
1140 case "ascii":
1141 return w(this, e, t, n);
1142 case "latin1":
1143 case "binary":
1144 return b(this, e, t, n);
1145 case "base64":
1146 return x(this, e, t, n);
1147 case "ucs2":
1148 case "ucs-2":
1149 case "utf16le":
1150 case "utf-16le":
1151 return S(this, e, t, n);
1152 default:
1153 if (s)
1154 throw new TypeError("Unknown encoding: " + i);
1155 i = ("" + i).toLowerCase(),
1156 s = !0
1157 }
1158 }
1159 ,
1160 c.prototype.toJSON = function() {
1161 return {
1162 type: "Buffer",
1163 data: Array.prototype.slice.call(this._arr || this, 0)
1164 }
1165 }
1166 ;
1167 var E = 4096;
1168 function M(e, t, n) {
1169 var i = "";
1170 n = Math.min(e.length, n);
1171 for (var r = t; r < n; ++r)
1172 i += String.fromCharCode(127 & e[r]);
1173 return i
1174 }
1175 function A(e, t, n) {
1176 var i = "";
1177 n = Math.min(e.length, n);
1178 for (var r = t; r < n; ++r)
1179 i += String.fromCharCode(e[r]);
1180 return i
1181 }
1182 function P(e, t, n) {
1183 var i = e.length;
1184 (!t || t < 0) && (t = 0),
1185 (!n || n < 0 || n > i) && (n = i);
1186 for (var r = "", s = t; s < n; ++s)
1187 r += F(e[s]);
1188 return r
1189 }
1190 function B(e, t, n) {
1191 for (var i = e.slice(t, n), r = "", s = 0; s < i.length; s += 2)
1192 r += String.fromCharCode(i[s] + 256 * i[s + 1]);
1193 return r
1194 }
1195 function C(e, t, n) {
1196 if (e % 1 != 0 || e < 0)
1197 throw new RangeError("offset is not uint");
1198 if (e + t > n)
1199 throw new RangeError("Trying to access beyond buffer length")
1200 }
1201 function O(e, t, n, i, r, s) {
1202 if (!c.isBuffer(e))
1203 throw new TypeError('"buffer" argument must be a Buffer instance');
1204 if (t > r || t < s)
1205 throw new RangeError('"value" argument is out of bounds');
1206 if (n + i > e.length)
1207 throw new RangeError("Index out of range")
1208 }
1209 function R(e, t, n, i) {
1210 t < 0 && (t = 65535 + t + 1);
1211 for (var r = 0, s = Math.min(e.length - n, 2); r < s; ++r)
1212 e[n + r] = (t & 255 << 8 * (i ? r : 1 - r)) >>> 8 * (i ? r : 1 - r)
1213 }
1214 function j(e, t, n, i) {
1215 t < 0 && (t = 4294967295 + t + 1);
1216 for (var r = 0, s = Math.min(e.length - n, 4); r < s; ++r)
1217 e[n + r] = t >>> 8 * (i ? r : 3 - r) & 255
1218 }
1219 function _(e, t, n, i, r, s) {
1220 if (n + i > e.length)
1221 throw new RangeError("Index out of range");
1222 if (n < 0)
1223 throw new RangeError("Index out of range")
1224 }
1225 function U(e, t, n, i, s) {
1226 return s || _(e, 0, n, 4),
1227 r.write(e, t, n, i, 23, 4),
1228 n + 4
1229 }
1230 function D(e, t, n, i, s) {
1231 return s || _(e, 0, n, 8),
1232 r.write(e, t, n, i, 52, 8),
1233 n + 8
1234 }
1235 c.prototype.slice = function(e, t) {
1236 var n, i = this.length;
1237 if ((e = ~~e) < 0 ? (e += i) < 0 && (e = 0) : e > i && (e = i),
1238 (t = void 0 === t ? i : ~~t) < 0 ? (t += i) < 0 && (t = 0) : t > i && (t = i),
1239 t < e && (t = e),
1240 c.TYPED_ARRAY_SUPPORT)
1241 (n = this.subarray(e, t)).__proto__ = c.prototype;
1242 else {
1243 var r = t - e;
1244 n = new c(r,void 0);
1245 for (var s = 0; s < r; ++s)
1246 n[s] = this[s + e]
1247 }
1248 return n
1249 }
1250 ,
1251 c.prototype.readUIntLE = function(e, t, n) {
1252 e |= 0,
1253 t |= 0,
1254 n || C(e, t, this.length);
1255 for (var i = this[e], r = 1, s = 0; ++s < t && (r *= 256); )
1256 i += this[e + s] * r;
1257 return i
1258 }
1259 ,
1260 c.prototype.readUIntBE = function(e, t, n) {
1261 e |= 0,
1262 t |= 0,
1263 n || C(e, t, this.length);
1264 for (var i = this[e + --t], r = 1; t > 0 && (r *= 256); )
1265 i += this[e + --t] * r;
1266 return i
1267 }
1268 ,
1269 c.prototype.readUInt8 = function(e, t) {
1270 return t || C(e, 1, this.length),
1271 this[e]
1272 }
1273 ,
1274 c.prototype.readUInt16LE = function(e, t) {
1275 return t || C(e, 2, this.length),
1276 this[e] | this[e + 1] << 8
1277 }
1278 ,
1279 c.prototype.readUInt16BE = function(e, t) {
1280 return t || C(e, 2, this.length),
1281 this[e] << 8 | this[e + 1]
1282 }
1283 ,
1284 c.prototype.readUInt32LE = function(e, t) {
1285 return t || C(e, 4, this.length),
1286 (this[e] | this[e + 1] << 8 | this[e + 2] << 16) + 16777216 * this[e + 3]
1287 }
1288 ,
1289 c.prototype.readUInt32BE = function(e, t) {
1290 return t || C(e, 4, this.length),
1291 16777216 * this[e] + (this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3])
1292 }
1293 ,
1294 c.prototype.readIntLE = function(e, t, n) {
1295 e |= 0,
1296 t |= 0,
1297 n || C(e, t, this.length);
1298 for (var i = this[e], r = 1, s = 0; ++s < t && (r *= 256); )
1299 i += this[e + s] * r;
1300 return i >= (r *= 128) && (i -= Math.pow(2, 8 * t)),
1301 i
1302 }
1303 ,
1304 c.prototype.readIntBE = function(e, t, n) {
1305 e |= 0,
1306 t |= 0,
1307 n || C(e, t, this.length);
1308 for (var i = t, r = 1, s = this[e + --i]; i > 0 && (r *= 256); )
1309 s += this[e + --i] * r;
1310 return s >= (r *= 128) && (s -= Math.pow(2, 8 * t)),
1311 s
1312 }
1313 ,
1314 c.prototype.readInt8 = function(e, t) {
1315 return t || C(e, 1, this.length),
1316 128 & this[e] ? -1 * (255 - this[e] + 1) : this[e]
1317 }
1318 ,
1319 c.prototype.readInt16LE = function(e, t) {
1320 t || C(e, 2, this.length);
1321 var n = this[e] | this[e + 1] << 8;
1322 return 32768 & n ? 4294901760 | n : n
1323 }
1324 ,
1325 c.prototype.readInt16BE = function(e, t) {
1326 t || C(e, 2, this.length);
1327 var n = this[e + 1] | this[e] << 8;
1328 return 32768 & n ? 4294901760 | n : n
1329 }
1330 ,
1331 c.prototype.readInt32LE = function(e, t) {
1332 return t || C(e, 4, this.length),
1333 this[e] | this[e + 1] << 8 | this[e + 2] << 16 | this[e + 3] << 24
1334 }
1335 ,
1336 c.prototype.readInt32BE = function(e, t) {
1337 return t || C(e, 4, this.length),
1338 this[e] << 24 | this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3]
1339 }
1340 ,
1341 c.prototype.readFloatLE = function(e, t) {
1342 return t || C(e, 4, this.length),
1343 r.read(this, e, !0, 23, 4)
1344 }
1345 ,
1346 c.prototype.readFloatBE = function(e, t) {
1347 return t || C(e, 4, this.length),
1348 r.read(this, e, !1, 23, 4)
1349 }
1350 ,
1351 c.prototype.readDoubleLE = function(e, t) {
1352 return t || C(e, 8, this.length),
1353 r.read(this, e, !0, 52, 8)
1354 }
1355 ,
1356 c.prototype.readDoubleBE = function(e, t) {
1357 return t || C(e, 8, this.length),
1358 r.read(this, e, !1, 52, 8)
1359 }
1360 ,
1361 c.prototype.writeUIntLE = function(e, t, n, i) {
1362 e = +e,
1363 t |= 0,
1364 n |= 0,
1365 i || O(this, e, t, n, Math.pow(2, 8 * n) - 1, 0);
1366 var r = 1
1367 , s = 0;
1368 for (this[t] = 255 & e; ++s < n && (r *= 256); )
1369 this[t + s] = e / r & 255;
1370 return t + n
1371 }
1372 ,
1373 c.prototype.writeUIntBE = function(e, t, n, i) {
1374 e = +e,
1375 t |= 0,
1376 n |= 0,
1377 i || O(this, e, t, n, Math.pow(2, 8 * n) - 1, 0);
1378 var r = n - 1
1379 , s = 1;
1380 for (this[t + r] = 255 & e; --r >= 0 && (s *= 256); )
1381 this[t + r] = e / s & 255;
1382 return t + n
1383 }
1384 ,
1385 c.prototype.writeUInt8 = function(e, t, n) {
1386 return e = +e,
1387 t |= 0,
1388 n || O(this, e, t, 1, 255, 0),
1389 c.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)),
1390 this[t] = 255 & e,
1391 t + 1
1392 }
1393 ,
1394 c.prototype.writeUInt16LE = function(e, t, n) {
1395 return e = +e,
1396 t |= 0,
1397 n || O(this, e, t, 2, 65535, 0),
1398 c.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e,
1399 this[t + 1] = e >>> 8) : R(this, e, t, !0),
1400 t + 2
1401 }
1402 ,
1403 c.prototype.writeUInt16BE = function(e, t, n) {
1404 return e = +e,
1405 t |= 0,
1406 n || O(this, e, t, 2, 65535, 0),
1407 c.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 8,
1408 this[t + 1] = 255 & e) : R(this, e, t, !1),
1409 t + 2
1410 }
1411 ,
1412 c.prototype.writeUInt32LE = function(e, t, n) {
1413 return e = +e,
1414 t |= 0,
1415 n || O(this, e, t, 4, 4294967295, 0),
1416 c.TYPED_ARRAY_SUPPORT ? (this[t + 3] = e >>> 24,
1417 this[t + 2] = e >>> 16,
1418 this[t + 1] = e >>> 8,
1419 this[t] = 255 & e) : j(this, e, t, !0),
1420 t + 4
1421 }
1422 ,
1423 c.prototype.writeUInt32BE = function(e, t, n) {
1424 return e = +e,
1425 t |= 0,
1426 n || O(this, e, t, 4, 4294967295, 0),
1427 c.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 24,
1428 this[t + 1] = e >>> 16,
1429 this[t + 2] = e >>> 8,
1430 this[t + 3] = 255 & e) : j(this, e, t, !1),
1431 t + 4
1432 }
1433 ,
1434 c.prototype.writeIntLE = function(e, t, n, i) {
1435 if (e = +e,
1436 t |= 0,
1437 !i) {
1438 var r = Math.pow(2, 8 * n - 1);
1439 O(this, e, t, n, r - 1, -r)
1440 }
1441 var s = 0
1442 , a = 1
1443 , o = 0;
1444 for (this[t] = 255 & e; ++s < n && (a *= 256); )
1445 e < 0 && 0 === o && 0 !== this[t + s - 1] && (o = 1),
1446 this[t + s] = (e / a >> 0) - o & 255;
1447 return t + n
1448 }
1449 ,
1450 c.prototype.writeIntBE = function(e, t, n, i) {
1451 if (e = +e,
1452 t |= 0,
1453 !i) {
1454 var r = Math.pow(2, 8 * n - 1);
1455 O(this, e, t, n, r - 1, -r)
1456 }
1457 var s = n - 1
1458 , a = 1
1459 , o = 0;
1460 for (this[t + s] = 255 & e; --s >= 0 && (a *= 256); )
1461 e < 0 && 0 === o && 0 !== this[t + s + 1] && (o = 1),
1462 this[t + s] = (e / a >> 0) - o & 255;
1463 return t + n
1464 }
1465 ,
1466 c.prototype.writeInt8 = function(e, t, n) {
1467 return e = +e,
1468 t |= 0,
1469 n || O(this, e, t, 1, 127, -128),
1470 c.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)),
1471 e < 0 && (e = 255 + e + 1),
1472 this[t] = 255 & e,
1473 t + 1
1474 }
1475 ,
1476 c.prototype.writeInt16LE = function(e, t, n) {
1477 return e = +e,
1478 t |= 0,
1479 n || O(this, e, t, 2, 32767, -32768),
1480 c.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e,
1481 this[t + 1] = e >>> 8) : R(this, e, t, !0),
1482 t + 2
1483 }
1484 ,
1485 c.prototype.writeInt16BE = function(e, t, n) {
1486 return e = +e,
1487 t |= 0,
1488 n || O(this, e, t, 2, 32767, -32768),
1489 c.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 8,
1490 this[t + 1] = 255 & e) : R(this, e, t, !1),
1491 t + 2
1492 }
1493 ,
1494 c.prototype.writeInt32LE = function(e, t, n) {
1495 return e = +e,
1496 t |= 0,
1497 n || O(this, e, t, 4, 2147483647, -2147483648),
1498 c.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e,
1499 this[t + 1] = e >>> 8,
1500 this[t + 2] = e >>> 16,
1501 this[t + 3] = e >>> 24) : j(this, e, t, !0),
1502 t + 4
1503 }
1504 ,
1505 c.prototype.writeInt32BE = function(e, t, n) {
1506 return e = +e,
1507 t |= 0,
1508 n || O(this, e, t, 4, 2147483647, -2147483648),
1509 e < 0 && (e = 4294967295 + e + 1),
1510 c.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 24,
1511 this[t + 1] = e >>> 16,
1512 this[t + 2] = e >>> 8,
1513 this[t + 3] = 255 & e) : j(this, e, t, !1),
1514 t + 4
1515 }
1516 ,
1517 c.prototype.writeFloatLE = function(e, t, n) {
1518 return U(this, e, t, !0, n)
1519 }
1520 ,
1521 c.prototype.writeFloatBE = function(e, t, n) {
1522 return U(this, e, t, !1, n)
1523 }
1524 ,
1525 c.prototype.writeDoubleLE = function(e, t, n) {
1526 return D(this, e, t, !0, n)
1527 }
1528 ,
1529 c.prototype.writeDoubleBE = function(e, t, n) {
1530 return D(this, e, t, !1, n)
1531 }
1532 ,
1533 c.prototype.copy = function(e, t, n, i) {
1534 if (n || (n = 0),
1535 i || 0 === i || (i = this.length),
1536 t >= e.length && (t = e.length),
1537 t || (t = 0),
1538 i > 0 && i < n && (i = n),
1539 i === n)
1540 return 0;
1541 if (0 === e.length || 0 === this.length)
1542 return 0;
1543 if (t < 0)
1544 throw new RangeError("targetStart out of bounds");
1545 if (n < 0 || n >= this.length)
1546 throw new RangeError("sourceStart out of bounds");
1547 if (i < 0)
1548 throw new RangeError("sourceEnd out of bounds");
1549 i > this.length && (i = this.length),
1550 e.length - t < i - n && (i = e.length - t + n);
1551 var r, s = i - n;
1552 if (this === e && n < t && t < i)
1553 for (r = s - 1; r >= 0; --r)
1554 e[r + t] = this[r + n];
1555 else if (s < 1e3 || !c.TYPED_ARRAY_SUPPORT)
1556 for (r = 0; r < s; ++r)
1557 e[r + t] = this[r + n];
1558 else
1559 Uint8Array.prototype.set.call(e, this.subarray(n, n + s), t);
1560 return s
1561 }
1562 ,
1563 c.prototype.fill = function(e, t, n, i) {
1564 if ("string" == typeof e) {
1565 if ("string" == typeof t ? (i = t,
1566 t = 0,
1567 n = this.length) : "string" == typeof n && (i = n,
1568 n = this.length),
1569 1 === e.length) {
1570 var r = e.charCodeAt(0);
1571 r < 256 && (e = r)
1572 }
1573 if (void 0 !== i && "string" != typeof i)
1574 throw new TypeError("encoding must be a string");
1575 if ("string" == typeof i && !c.isEncoding(i))
1576 throw new TypeError("Unknown encoding: " + i)
1577 } else
1578 "number" == typeof e && (e &= 255);
1579 if (t < 0 || this.length < t || this.length < n)
1580 throw new RangeError("Out of range index");
1581 if (n <= t)
1582 return this;
1583 var s;
1584 if (t >>>= 0,
1585 n = void 0 === n ? this.length : n >>> 0,
1586 e || (e = 0),
1587 "number" == typeof e)
1588 for (s = t; s < n; ++s)
1589 this[s] = e;
1590 else {
1591 var a = c.isBuffer(e) ? e : z(new c(e,i).toString())
1592 , o = a.length;
1593 for (s = 0; s < n - t; ++s)
1594 this[s + t] = a[s % o]
1595 }
1596 return this
1597 }
1598 ;
1599 var L = /[^+\/0-9A-Za-z-_]/g;
1600 function F(e) {
1601 return e < 16 ? "0" + e.toString(16) : e.toString(16)
1602 }
1603 function z(e, t) {
1604 var n;
1605 t = t || 1 / 0;
1606 for (var i = e.length, r = null, s = [], a = 0; a < i; ++a) {
1607 if ((n = e.charCodeAt(a)) > 55295 && n < 57344) {
1608 if (!r) {
1609 if (n > 56319) {
1610 (t -= 3) > -1 && s.push(239, 191, 189);
1611 continue
1612 }
1613 if (a + 1 === i) {
1614 (t -= 3) > -1 && s.push(239, 191, 189);
1615 continue
1616 }
1617 r = n;
1618 continue
1619 }
1620 if (n < 56320) {
1621 (t -= 3) > -1 && s.push(239, 191, 189),
1622 r = n;
1623 continue
1624 }
1625 n = 65536 + (r - 55296 << 10 | n - 56320)
1626 } else
1627 r && (t -= 3) > -1 && s.push(239, 191, 189);
1628 if (r = null,
1629 n < 128) {
1630 if ((t -= 1) < 0)
1631 break;
1632 s.push(n)
1633 } else if (n < 2048) {
1634 if ((t -= 2) < 0)
1635 break;
1636 s.push(n >> 6 | 192, 63 & n | 128)
1637 } else if (n < 65536) {
1638 if ((t -= 3) < 0)
1639 break;
1640 s.push(n >> 12 | 224, n >> 6 & 63 | 128, 63 & n | 128)
1641 } else {
1642 if (!(n < 1114112))
1643 throw new Error("Invalid code point");
1644 if ((t -= 4) < 0)
1645 break;
1646 s.push(n >> 18 | 240, n >> 12 & 63 | 128, n >> 6 & 63 | 128, 63 & n | 128)
1647 }
1648 }
1649 return s
1650 }
1651 function H(e) {
1652 return i.toByteArray(function(e) {
1653 if ((e = function(e) {
1654 return e.trim ? e.trim() : e.replace(/^\s+|\s+$/g, "")
1655 }(e).replace(L, "")).length < 2)
1656 return "";
1657 for (; e.length % 4 != 0; )
1658 e += "=";
1659 return e
1660 }(e))
1661 }
1662 function V(e, t, n, i) {
1663 for (var r = 0; r < i && !(r + n >= t.length || r >= e.length); ++r)
1664 t[r + n] = e[r];
1665 return r
1666 }
1667 }
1668 ).call(this, n(12))
1669}
1670, function(e, t) {
1671 var n;
1672 n = function() {
1673 return this
1674 }();
1675 try {
1676 n = n || new Function("return this")()
1677 } catch (e) {
1678 "object" == typeof window && (n = window)
1679 }
1680 e.exports = n
1681}
1682, function(e, t) {
1683 for (var n = t.uint8 = new Array(256), i = 0; i <= 255; i++)
1684 n[i] = r(i);
1685 function r(e) {
1686 return function(t) {
1687 var n = t.reserve(1);
1688 t.buffer[n] = e
1689 }
1690 }
1691}
1692, function(e, t, n) {
1693 t.FlexDecoder = s,
1694 t.FlexEncoder = a;
1695 var i = n(0)
1696 , r = "BUFFER_SHORTAGE";
1697 function s() {
1698 if (!(this instanceof s))
1699 return new s
1700 }
1701 function a() {
1702 if (!(this instanceof a))
1703 return new a
1704 }
1705 function o() {
1706 throw new Error("method not implemented: write()")
1707 }
1708 function c() {
1709 throw new Error("method not implemented: fetch()")
1710 }
1711 function l() {
1712 return this.buffers && this.buffers.length ? (this.flush(),
1713 this.pull()) : this.fetch()
1714 }
1715 function h(e) {
1716 (this.buffers || (this.buffers = [])).push(e)
1717 }
1718 function u() {
1719 return (this.buffers || (this.buffers = [])).shift()
1720 }
1721 function f(e) {
1722 return function(t) {
1723 for (var n in e)
1724 t[n] = e[n];
1725 return t
1726 }
1727 }
1728 s.mixin = f({
1729 bufferish: i,
1730 write: function(e) {
1731 var t = this.offset ? i.prototype.slice.call(this.buffer, this.offset) : this.buffer;
1732 this.buffer = t ? e ? this.bufferish.concat([t, e]) : t : e,
1733 this.offset = 0
1734 },
1735 fetch: c,
1736 flush: function() {
1737 for (; this.offset < this.buffer.length; ) {
1738 var e, t = this.offset;
1739 try {
1740 e = this.fetch()
1741 } catch (e) {
1742 if (e && e.message != r)
1743 throw e;
1744 this.offset = t;
1745 break
1746 }
1747 this.push(e)
1748 }
1749 },
1750 push: h,
1751 pull: u,
1752 read: l,
1753 reserve: function(e) {
1754 var t = this.offset
1755 , n = t + e;
1756 if (n > this.buffer.length)
1757 throw new Error(r);
1758 return this.offset = n,
1759 t
1760 },
1761 offset: 0
1762 }),
1763 s.mixin(s.prototype),
1764 a.mixin = f({
1765 bufferish: i,
1766 write: o,
1767 fetch: function() {
1768 var e = this.start;
1769 if (e < this.offset) {
1770 var t = this.start = this.offset;
1771 return i.prototype.slice.call(this.buffer, e, t)
1772 }
1773 },
1774 flush: function() {
1775 for (; this.start < this.offset; ) {
1776 var e = this.fetch();
1777 e && this.push(e)
1778 }
1779 },
1780 push: h,
1781 pull: function() {
1782 var e = this.buffers || (this.buffers = [])
1783 , t = e.length > 1 ? this.bufferish.concat(e) : e[0];
1784 return e.length = 0,
1785 t
1786 },
1787 read: l,
1788 reserve: function(e) {
1789 var t = 0 | e;
1790 if (this.buffer) {
1791 var n = this.buffer.length
1792 , i = 0 | this.offset
1793 , r = i + t;
1794 if (r < n)
1795 return this.offset = r,
1796 i;
1797 this.flush(),
1798 e = Math.max(e, Math.min(2 * n, this.maxBufferSize))
1799 }
1800 return e = Math.max(e, this.minBufferSize),
1801 this.buffer = this.bufferish.alloc(e),
1802 this.start = 0,
1803 this.offset = t,
1804 0
1805 },
1806 send: function(e) {
1807 var t = e.length;
1808 if (t > this.minBufferSize)
1809 this.flush(),
1810 this.push(e);
1811 else {
1812 var n = this.reserve(t);
1813 i.prototype.copy.call(e, this.buffer, n)
1814 }
1815 },
1816 maxBufferSize: 65536,
1817 minBufferSize: 2048,
1818 offset: 0,
1819 start: 0
1820 }),
1821 a.mixin(a.prototype)
1822}
1823, function(e, t, n) {
1824 t.decode = function(e, t) {
1825 var n = new i(t);
1826 return n.write(e),
1827 n.read()
1828 }
1829 ;
1830 var i = n(16).DecodeBuffer
1831}
1832, function(e, t, n) {
1833 t.DecodeBuffer = r;
1834 var i = n(8).preset;
1835 function r(e) {
1836 if (!(this instanceof r))
1837 return new r(e);
1838 if (e && (this.options = e,
1839 e.codec)) {
1840 var t = this.codec = e.codec;
1841 t.bufferish && (this.bufferish = t.bufferish)
1842 }
1843 }
1844 n(14).FlexDecoder.mixin(r.prototype),
1845 r.prototype.codec = i,
1846 r.prototype.fetch = function() {
1847 return this.codec.decode(this)
1848 }
1849}
1850, function(e, t, n) {
1851 var i = n(4)
1852 , r = n(7)
1853 , s = r.Uint64BE
1854 , a = r.Int64BE;
1855 t.getReadFormat = function(e) {
1856 var t = o.hasArrayBuffer && e && e.binarraybuffer
1857 , n = e && e.int64;
1858 return {
1859 map: l && e && e.usemap ? u : h,
1860 array: f,
1861 str: d,
1862 bin: t ? g : p,
1863 ext: m,
1864 uint8: y,
1865 uint16: v,
1866 uint32: b,
1867 uint64: S(8, n ? E : T),
1868 int8: k,
1869 int16: w,
1870 int32: x,
1871 int64: S(8, n ? M : I),
1872 float32: S(4, A),
1873 float64: S(8, P)
1874 }
1875 }
1876 ,
1877 t.readUint8 = y;
1878 var o = n(0)
1879 , c = n(6)
1880 , l = "undefined" != typeof Map;
1881 function h(e, t) {
1882 var n, i = {}, r = new Array(t), s = new Array(t), a = e.codec.decode;
1883 for (n = 0; n < t; n++)
1884 r[n] = a(e),
1885 s[n] = a(e);
1886 for (n = 0; n < t; n++)
1887 i[r[n]] = s[n];
1888 return i
1889 }
1890 function u(e, t) {
1891 var n, i = new Map, r = new Array(t), s = new Array(t), a = e.codec.decode;
1892 for (n = 0; n < t; n++)
1893 r[n] = a(e),
1894 s[n] = a(e);
1895 for (n = 0; n < t; n++)
1896 i.set(r[n], s[n]);
1897 return i
1898 }
1899 function f(e, t) {
1900 for (var n = new Array(t), i = e.codec.decode, r = 0; r < t; r++)
1901 n[r] = i(e);
1902 return n
1903 }
1904 function d(e, t) {
1905 var n = e.reserve(t)
1906 , i = n + t;
1907 return c.toString.call(e.buffer, "utf-8", n, i)
1908 }
1909 function p(e, t) {
1910 var n = e.reserve(t)
1911 , i = n + t
1912 , r = c.slice.call(e.buffer, n, i);
1913 return o.from(r)
1914 }
1915 function g(e, t) {
1916 var n = e.reserve(t)
1917 , i = n + t
1918 , r = c.slice.call(e.buffer, n, i);
1919 return o.Uint8Array.from(r).buffer
1920 }
1921 function m(e, t) {
1922 var n = e.reserve(t + 1)
1923 , i = e.buffer[n++]
1924 , r = n + t
1925 , s = e.codec.getExtUnpacker(i);
1926 if (!s)
1927 throw new Error("Invalid ext type: " + (i ? "0x" + i.toString(16) : i));
1928 return s(c.slice.call(e.buffer, n, r))
1929 }
1930 function y(e) {
1931 var t = e.reserve(1);
1932 return e.buffer[t]
1933 }
1934 function k(e) {
1935 var t = e.reserve(1)
1936 , n = e.buffer[t];
1937 return 128 & n ? n - 256 : n
1938 }
1939 function v(e) {
1940 var t = e.reserve(2)
1941 , n = e.buffer;
1942 return n[t++] << 8 | n[t]
1943 }
1944 function w(e) {
1945 var t = e.reserve(2)
1946 , n = e.buffer
1947 , i = n[t++] << 8 | n[t];
1948 return 32768 & i ? i - 65536 : i
1949 }
1950 function b(e) {
1951 var t = e.reserve(4)
1952 , n = e.buffer;
1953 return 16777216 * n[t++] + (n[t++] << 16) + (n[t++] << 8) + n[t]
1954 }
1955 function x(e) {
1956 var t = e.reserve(4)
1957 , n = e.buffer;
1958 return n[t++] << 24 | n[t++] << 16 | n[t++] << 8 | n[t]
1959 }
1960 function S(e, t) {
1961 return function(n) {
1962 var i = n.reserve(e);
1963 return t.call(n.buffer, i, !0)
1964 }
1965 }
1966 function T(e) {
1967 return new s(this,e).toNumber()
1968 }
1969 function I(e) {
1970 return new a(this,e).toNumber()
1971 }
1972 function E(e) {
1973 return new s(this,e)
1974 }
1975 function M(e) {
1976 return new a(this,e)
1977 }
1978 function A(e) {
1979 return i.read(this, e, !1, 23, 4)
1980 }
1981 function P(e) {
1982 return i.read(this, e, !1, 52, 8)
1983 }
1984}
1985, function(e, t, n) {
1986 !function(t) {
1987 e.exports = t;
1988 var n = "listeners"
1989 , i = {
1990 on: function(e, t) {
1991 return a(this, e).push(t),
1992 this
1993 },
1994 once: function(e, t) {
1995 var n = this;
1996 return i.originalListener = t,
1997 a(n, e).push(i),
1998 n;
1999 function i() {
2000 s.call(n, e, i),
2001 t.apply(this, arguments)
2002 }
2003 },
2004 off: s,
2005 emit: function(e, t) {
2006 var n = this
2007 , i = a(n, e, !0);
2008 if (!i)
2009 return !1;
2010 var r = arguments.length;
2011 if (1 === r)
2012 i.forEach((function(e) {
2013 e.call(n)
2014 }
2015 ));
2016 else if (2 === r)
2017 i.forEach((function(e) {
2018 e.call(n, t)
2019 }
2020 ));
2021 else {
2022 var s = Array.prototype.slice.call(arguments, 1);
2023 i.forEach((function(e) {
2024 e.apply(n, s)
2025 }
2026 ))
2027 }
2028 return !!i.length
2029 }
2030 };
2031 function r(e) {
2032 for (var t in i)
2033 e[t] = i[t];
2034 return e
2035 }
2036 function s(e, t) {
2037 var i;
2038 if (arguments.length) {
2039 if (t) {
2040 if (i = a(this, e, !0)) {
2041 if (!(i = i.filter((function(e) {
2042 return e !== t && e.originalListener !== t
2043 }
2044 ))).length)
2045 return s.call(this, e);
2046 this[n][e] = i
2047 }
2048 } else if ((i = this[n]) && (delete i[e],
2049 !Object.keys(i).length))
2050 return s.call(this)
2051 } else
2052 delete this[n];
2053 return this
2054 }
2055 function a(e, t, i) {
2056 if (!i || e[n]) {
2057 var r = e[n] || (e[n] = {});
2058 return r[t] || (r[t] = [])
2059 }
2060 }
2061 r(t.prototype),
2062 t.mixin = r
2063 }((/**
2064 * event-lite.js - Light-weight EventEmitter (less than 1KB when gzipped)
2065 *
2066 * @copyright Yusuke Kawasaki
2067 * @license MIT
2068 * @constructor
2069 * @see https://github.com/kawanet/event-lite
2070 * @see http://kawanet.github.io/event-lite/EventLite.html
2071 * @example
2072 * var EventLite = require("event-lite");
2073 *
2074 * function MyClass() {...} // your class
2075 *
2076 * EventLite.mixin(MyClass.prototype); // import event methods
2077 *
2078 * var obj = new MyClass();
2079 * obj.on("foo", function() {...}); // add event listener
2080 * obj.once("bar", function() {...}); // add one-time event listener
2081 * obj.emit("foo"); // dispatch event
2082 * obj.emit("bar"); // dispatch another event
2083 * obj.off("foo"); // remove event listener
2084 */
2085 function e() {
2086 if (!(this instanceof e))
2087 return new e
2088 }
2089 ))
2090}
2091, function(e, t, n) {
2092 (function(t) {
2093 e.exports.maxScreenWidth = 1920,
2094 e.exports.maxScreenHeight = 1080,
2095 e.exports.serverUpdateRate = 9,
2096 e.exports.maxPlayers = t && -1 != t.argv.indexOf("--largeserver") ? 80 : 50,
2097 e.exports.maxPlayersHard = e.exports.maxPlayers + 10,
2098 e.exports.collisionDepth = 6,
2099 e.exports.minimapRate = 3e3,
2100 e.exports.colGrid = 10,
2101 e.exports.clientSendRate = 5,
2102 e.exports.healthBarWidth = 50,
2103 e.exports.healthBarPad = 4.5,
2104 e.exports.iconPadding = 15,
2105 e.exports.iconPad = .9,
2106 e.exports.deathFadeout = 3e3,
2107 e.exports.crownIconScale = 60,
2108 e.exports.crownPad = 35,
2109 e.exports.chatCountdown = 3e3,
2110 e.exports.chatCooldown = 500,
2111 e.exports.inSandbox = t && "mm_exp" === t.env.VULTR_SCHEME,
2112 e.exports.maxAge = 100,
2113 e.exports.gatherAngle = Math.PI / 2.6,
2114 e.exports.gatherWiggle = 10,
2115 e.exports.hitReturnRatio = .25,
2116 e.exports.hitAngle = Math.PI / 2,
2117 e.exports.playerScale = 35,
2118 e.exports.playerSpeed = .0016,
2119 e.exports.playerDecel = .993,
2120 e.exports.nameY = 34,
2121 e.exports.skinColors = ["#ff4500", "#ff00d5", "#ffff00", "#ffd700", "#00ffff", "#ffffff", "#ff0000", "#ff0080", "#00ff00", "#0000ff"],
2122 e.exports.animalCount = 7,
2123 e.exports.aiTurnRandom = .106,
2124 e.exports.cowNames = ["ζ͜͡???? ???"],
2125 e.exports.shieldAngle = Math.PI / 3,
2126 e.exports.weaponVariants = [{
2127 id: 0,
2128 src: "",
2129 xp: 0,
2130 val: 1
2131 }, {
2132 id: 1,
2133 src: "_g",
2134 xp: 3e3,
2135 val: 1.1
2136 }, {
2137 id: 2,
2138 src: "_d",
2139 xp: 7e3,
2140 val: 1.18
2141 }, {
2142 id: 3,
2143 src: "_r",
2144 poison: !0,
2145 xp: 12e3,
2146 val: 1.18
2147 }],
2148 e.exports.fetchVariant = function(t) {
2149 for (var n = t.weaponXP[t.weaponIndex] || 0, i = e.exports.weaponVariants.length - 1; i >= 0; --i)
2150 if (n >= e.exports.weaponVariants[i].xp)
2151 return e.exports.weaponVariants[i]
2152 }
2153 ,
2154 e.exports.resourceTypes = ["wood", "food", "stone", "points"],
2155 e.exports.areaCount = 7,
2156 e.exports.treesPerArea = 9,
2157 e.exports.bushesPerArea = 3,
2158 e.exports.totalRocks = 32,
2159 e.exports.goldOres = 7,
2160 e.exports.riverWidth = 724,
2161 e.exports.riverPadding = 114,
2162 e.exports.waterCurrent = .0011,
2163 e.exports.waveSpeed = 1e-4,
2164 e.exports.waveMax = 1.3,
2165 e.exports.treeScales = [150, 160, 165, 175],
2166 e.exports.bushScales = [80, 85, 95],
2167 e.exports.rockScales = [80, 85, 90],
2168 e.exports.snowBiomeTop = 2400,
2169 e.exports.snowSpeed = .75,
2170 e.exports.maxNameLength = 15,
2171 e.exports.mapScale = 14400,
2172 e.exports.mapPingScale = 40,
2173 e.exports.mapPingTime = 2200
2174 }
2175 ).call(this, n(41))
2176}
2177, function(e, t) {
2178 var n = {
2179 utf8: {
2180 stringToBytes: function(e) {
2181 return n.bin.stringToBytes(unescape(encodeURIComponent(e)))
2182 },
2183 bytesToString: function(e) {
2184 return decodeURIComponent(escape(n.bin.bytesToString(e)))
2185 }
2186 },
2187 bin: {
2188 stringToBytes: function(e) {
2189 for (var t = [], n = 0; n < e.length; n++)
2190 t.push(255 & e.charCodeAt(n));
2191 return t
2192 },
2193 bytesToString: function(e) {
2194 for (var t = [], n = 0; n < e.length; n++)
2195 t.push(String.fromCharCode(e[n]));
2196 return t.join("")
2197 }
2198 }
2199 };
2200 e.exports = n
2201}
2202, function(e, t, n) {
2203 "use strict";
2204 window.loadedScript = !0;
2205 var i = "127.0.0.1" !== location.hostname && !location.hostname.startsWith("192.168.");
2206 n(22);
2207 var r = n(23)
2208 , s = n(42)
2209 , a = n(43)
2210 , o = n(19)
2211 , c = n(44)
2212 , l = n(45)
2213 , h = (n(46),
2214 n(47))
2215 , u = n(48)
2216 , f = n(55)
2217 , d = n(56)
2218 , p = n(57)
2219 , g = n(58).obj
2220 , m = new a.TextManager
2221 , y = new (n(59))("moomoo.io",3e3,o.maxPlayers,5,!1);
2222 y.debugLog = !1;
2223 var k = !1;
2224 function v() {
2225 ht && ut && (k = !0,
2226 i ? window.grecaptcha.execute("6LevKusUAAAAAAFknhlV8sPtXAk5Z5dGP5T2FYIZ", {
2227 action: "homepage"
2228 }).then((function(e) {
2229 w(e)
2230 }
2231 )) : w(null))
2232 }
2233 function w(e) {
2234 y.start((function(t, n, a) {
2235 var c = (i ? "wss" : "ws") + "://" + t + ":8008/?gameIndex=" + a;
2236 e && (c += "&token=" + encodeURIComponent(e)),
2237 r.connect(c, (function(e) {
2238 Bi(),
2239 setInterval(()=>Bi(), 2500),
2240 e ? ft(e) : (ue.onclick = s.checkTrusted((function() {
2241 !function() {
2242 var e = ++bt > 1
2243 , t = Date.now() - wt > vt;
2244 e && t ? (wt = Date.now(),
2245 xt()) : Tn()
2246 }()
2247 }
2248 )),
2249 s.hookTouchEvents(ue),
2250 fe.onclick = s.checkTrusted((function() {
2251 Oi("https://krunker.io")
2252 }
2253 )),
2254 s.hookTouchEvents(fe),
2255 pe.onclick = s.checkTrusted((function() {
2256 setTimeout((function() {
2257 !function() {
2258 var e = xe.value
2259 , t = prompt("party key", e);
2260 t && (window.onbeforeunload = void 0,
2261 window.location.href = "/?server=" + t)
2262 }()
2263 }
2264 ), 10)
2265 }
2266 )),
2267 s.hookTouchEvents(pe),
2268 ge.onclick = s.checkTrusted((function() {
2269 Ae.classList.contains("showing") ? (Ae.classList.remove("showing"),
2270 me.innerText = "Settings") : (Ae.classList.add("showing"),
2271 me.innerText = "Close")
2272 }
2273 )),
2274 s.hookTouchEvents(ge),
2275 ye.onclick = s.checkTrusted((function() {
2276 yn(),
2277 "block" != Ye.style.display ? Ut() : Ye.style.display = "none"
2278 }
2279 )),
2280 s.hookTouchEvents(ye),
2281 ke.onclick = s.checkTrusted((function() {
2282 "block" != Qe.style.display ? (Qe.style.display = "block",
2283 Ye.style.display = "none",
2284 an(),
2285 Gt()) : Qe.style.display = "none"
2286 }
2287 )),
2288 s.hookTouchEvents(ke),
2289 ve.onclick = s.checkTrusted((function() {
2290 rn()
2291 }
2292 )),
2293 s.hookTouchEvents(ve),
2294 Ne.onclick = s.checkTrusted((function() {
2295 xn()
2296 }
2297 )),
2298 s.hookTouchEvents(Ne),
2299 function() {
2300 for (var e = 0; e < jn.length; ++e) {
2301 var t = new Image;
2302 t.onload = function() {
2303 this.isLoaded = !0
2304 }
2305 ,
2306 t.src = ".././img/icons/" + jn[e] + ".png",
2307 Rn[jn[e]] = t
2308 }
2309 }(),
2310 Pe.style.display = "none",
2311 Me.style.display = "block",
2312 Le.value = E("moo_name") || "",
2313 function() {
2314 var e = E("native_resolution");
2315 Zt(e ? "true" == e : "undefined" != typeof cordova),
2316 A = "true" == E("show_ping"),
2317 Ie.hidden = !A,
2318 E("moo_moosic"),
2319 setInterval((function() {
2320 window.cordova && (document.getElementById("downloadButtonContainer").classList.add("cordova"),
2321 document.getElementById("mobileDownloadButtonContainer").classList.add("cordova"))
2322 }
2323 ), 1e3),
2324 en(),
2325 s.removeAllChildren(Ce);
2326 for (var t = 0; t < l.weapons.length + l.list.length; ++t)
2327 !function(e) {
2328 s.generateElement({
2329 id: "actionBarItem" + e,
2330 class: "actionBarItem",
2331 style: "display:none",
2332 onmouseout: function() {
2333 Tt()
2334 },
2335 parent: Ce
2336 })
2337 }(t);
2338 for (t = 0; t < l.list.length + l.weapons.length; ++t)
2339 !function(e) {
2340 var t = document.createElement("canvas");
2341 t.width = t.height = 66;
2342 var n = t.getContext("2d");
2343 if (n.translate(t.width / 2, t.height / 2),
2344 n.imageSmoothingEnabled = !1,
2345 n.webkitImageSmoothingEnabled = !1,
2346 n.mozImageSmoothingEnabled = !1,
2347 l.weapons[e]) {
2348 n.rotate(Math.PI / 4 + Math.PI);
2349 var i = new Image;
2350 Zn[l.weapons[e].src] = i,
2351 i.onload = function() {
2352 this.isLoaded = !0;
2353 var i = 1 / (this.height / this.width)
2354 , r = l.weapons[e].iPad || 1;
2355 n.drawImage(this, -t.width * r * o.iconPad * i / 2, -t.height * r * o.iconPad / 2, t.width * r * i * o.iconPad, t.height * r * o.iconPad),
2356 n.fillStyle = "rgba(0, 0, 70, 0.1)",
2357 n.globalCompositeOperation = "source-atop",
2358 n.fillRect(-t.width / 2, -t.height / 2, t.width, t.height),
2359 document.getElementById("actionBarItem" + e).style.backgroundImage = "url(" + t.toDataURL() + ")"
2360 }
2361 ,
2362 i.src = ".././img/weapons/" + l.weapons[e].src + ".png",
2363 (r = document.getElementById("actionBarItem" + e)).onmouseover = s.checkTrusted((function() {
2364 Tt(l.weapons[e], !0)
2365 }
2366 )),
2367 r.onclick = s.checkTrusted((function() {
2368 Sn(e, !0)
2369 }
2370 )),
2371 s.hookTouchEvents(r)
2372 } else {
2373 i = ri(l.list[e - l.weapons.length], !0);
2374 var r, a = Math.min(t.width - o.iconPadding, i.width);
2375 n.globalAlpha = 1,
2376 n.drawImage(i, -a / 2, -a / 2, a, a),
2377 n.fillStyle = "rgba(0, 0, 70, 0.1)",
2378 n.globalCompositeOperation = "source-atop",
2379 n.fillRect(-a / 2, -a / 2, a, a),
2380 document.getElementById("actionBarItem" + e).style.backgroundImage = "url(" + t.toDataURL() + ")",
2381 (r = document.getElementById("actionBarItem" + e)).onmouseover = s.checkTrusted((function() {
2382 Tt(l.list[e - l.weapons.length])
2383 }
2384 )),
2385 r.onclick = s.checkTrusted((function() {
2386 Sn(e - l.weapons.length)
2387 }
2388 )),
2389 s.hookTouchEvents(r)
2390 }
2391 }(t);
2392 Le.ontouchstart = s.checkTrusted((function(e) {
2393 e.preventDefault();
2394 var t = prompt("enter name", e.currentTarget.value);
2395 e.currentTarget.value = t.slice(0, 15)
2396 }
2397 )),
2398 Se.checked = M,
2399 Se.onchange = s.checkTrusted((function(e) {
2400 Zt(e.target.checked)
2401 }
2402 )),
2403 Te.checked = A,
2404 Te.onchange = s.checkTrusted((function(e) {
2405 A = Te.checked,
2406 Ie.hidden = !A,
2407 I("show_ping", A ? "true" : "false")
2408 }
2409 ))
2410 }())
2411 }
2412 ), {
2413 id: st,
2414 d: ft,
2415 1: En,
2416 2: vi,
2417 4: wi,
2418 33: Ti,
2419 5: Ln,
2420 6: li,
2421 a: gi,
2422 aa: pi,
2423 7: Wn,
2424 8: hi,
2425 sp: ui,
2426 9: xi,
2427 h: Si,
2428 11: Pn,
2429 12: Cn,
2430 13: Bn,
2431 14: bi,
2432 15: Dn,
2433 16: Un,
2434 17: $t,
2435 18: fi,
2436 19: di,
2437 20: Ci,
2438 ac: Ot,
2439 ad: _t,
2440 an: Bt,
2441 st: Rt,
2442 sa: jt,
2443 us: Nt,
2444 ch: hn,
2445 mm: Wt,
2446 t: Mn,
2447 p: Yt,
2448 pp: Pi
2449 }),
2450 pt(),
2451 setTimeout(()=>gt(), 3e3)
2452 }
2453 ), (function(e) {
2454 console.error("Vultr error:", e),
2455 alert("Error:\n" + e),
2456 ft("disconnected")
2457 }
2458 ))
2459 }
2460 var b, x = new g(o,s), S = Math.PI, T = 2 * S;
2461 function I(e, t) {
2462 b && localStorage.setItem(e, t)
2463 }
2464 function E(e) {
2465 return b ? localStorage.getItem(e) : null
2466 }
2467 Math.lerpAngle = function(e, t, n) {
2468 Math.abs(t - e) > S && (e > t ? t += T : e += T);
2469 var i = t + (e - t) * n;
2470 return i >= 0 && i <= T ? i : i % T
2471 }
2472 ,
2473 CanvasRenderingContext2D.prototype.roundRect = function(e, t, n, i, r) {
2474 return n < 2 * r && (r = n / 2),
2475 i < 2 * r && (r = i / 2),
2476 r < 0 && (r = 0),
2477 this.beginPath(),
2478 this.moveTo(e + r, t),
2479 this.arcTo(e + n, t, e + n, t + i, r),
2480 this.arcTo(e + n, t + i, e, t + i, r),
2481 this.arcTo(e, t + i, e, t, r),
2482 this.arcTo(e, t, e + n, t, r),
2483 this.closePath(),
2484 this
2485 }
2486 ,
2487 "undefined" != typeof Storage && (b = !0),
2488 E("consent") || (consentBlock.style.display = "block"),
2489 window.checkTerms = function(e) {
2490 e ? (consentBlock.style.display = "none",
2491 I("consent", 1)) : $("#consentShake").effect("shake")
2492 }
2493 ;
2494 var M, A, P, B, C, O, R, j, _, U, D, L, F, z, H = E("moofoll"), V = 1, q = Date.now(), Y = [], W = [], X = [], N = [], G = [], J = new p(d,G,W,Y,nt,l,o,s), K = n(70), Q = n(71), Z = new K(Y,Q,W,l,null,o,s), ee = 1, te = 0, ne = 0, ie = 0, re = {
2495 id: -1,
2496 startX: 0,
2497 startY: 0,
2498 currentX: 0,
2499 currentY: 0
2500 }, se = {
2501 id: -1,
2502 startX: 0,
2503 startY: 0,
2504 currentX: 0,
2505 currentY: 0
2506 }, ae = 0, oe = o.maxScreenWidth, ce = o.maxScreenHeight, le = !1, he = (document.getElementById("ad-container"),
2507 document.getElementById("mainMenu")), ue = document.getElementById("enterGame"), fe = document.getElementById("promoImg"), de = document.getElementById("partyButton"), pe = document.getElementById("joinPartyButton"), ge = document.getElementById("settingsButton"), me = ge.getElementsByTagName("span")[0], ye = document.getElementById("allianceButton"), ke = document.getElementById("storeButton"), ve = document.getElementById("chatButton"), we = document.getElementById("gameCanvas"), be = we.getContext("2d"), xe = document.getElementById("serverBrowser"), Se = document.getElementById("nativeResolution"), Te = document.getElementById("showPing"), Ie = (document.getElementById("playMusic"),
2508 document.getElementById("pingDisplay")), Ee = document.getElementById("shutdownDisplay"), Me = document.getElementById("menuCardHolder"), Ae = document.getElementById("guideCard"), Pe = document.getElementById("loadingText"), Be = document.getElementById("gameUI"), Ce = document.getElementById("actionBar"), Oe = document.getElementById("scoreDisplay"), Re = document.getElementById("foodDisplay"), je = document.getElementById("woodDisplay"), _e = document.getElementById("stoneDisplay"), Ue = document.getElementById("killCounter"), De = document.getElementById("leaderboardData"), Le = document.getElementById("nameInput"), Fe = document.getElementById("itemInfoHolder"), ze = document.getElementById("ageText"), He = document.getElementById("ageBarBody"), Ve = document.getElementById("upgradeHolder"), qe = document.getElementById("upgradeCounter"), Ye = document.getElementById("allianceMenu"), We = document.getElementById("allianceHolder"), Xe = document.getElementById("allianceManager"), Ne = document.getElementById("mapDisplay"), Ge = document.getElementById("diedText"), Je = document.getElementById("skinColorHolder"), Ke = Ne.getContext("2d");
2509 Ne.width = 300,
2510 Ne.height = 300;
2511 var Qe = document.getElementById("storeMenu")
2512 , $e = document.getElementById("storeHolder")
2513 , Ze = document.getElementById("noticationDisplay")
2514 , et = f.hats
2515 , tt = f.accessories
2516 , nt = new h(c,N,s,o)
2517 , it = "#525252"
2518 , rt = "#3d3f42";
2519 function st(e) {
2520 X = e.teams
2521 }
2522 var at = document.getElementById("featuredYoutube")
2523 , ot = [{
2524 name: "Engine Master",
2525 link: "https://www.youtube.com/channel/UC025RaCOpwq0RvcFt7Ipr4w?view_as=subscriber"
2526 }]
2527 , ct = ot[s.randInt(0, ot.length - 1)];
2528 at.innerHTML = "<a target='_blank' class='ytLink' href='" + ct.link + "'><i class='material-icons' style='vertical-align: top;'></i> " + ct.name + "</a>";
2529 var lt = !0
2530 , ht = !1
2531 , ut = !1;
2532 function ft(e) {
2533 r.close(),
2534 dt(e)
2535 }
2536 function dt(e) {
2537 he.style.display = "block",
2538 Be.style.display = "none",
2539 Me.style.display = "none",
2540 Ge.style.display = "none",
2541 Pe.style.display = "block",
2542 Pe.innerHTML = e + "<a href='javascript:window.location.href=window.location.href' class='ytLink'>reload</a>"
2543 }
2544 window.onblur = function() {
2545 lt = !1
2546 }
2547 ,
2548 window.onfocus = function() {
2549 lt = !0,
2550 R && R.alive && yn()
2551 }
2552 ,
2553 window.onload = function() {
2554 ht = !0,
2555 v(),
2556 setTimeout((function() {
2557 k || (alert("Captcha failed to load"),
2558 window.location.reload())
2559 }
2560 ), 2e4)
2561 }
2562 ,
2563 window.captchaCallback = function() {
2564 ut = !0,
2565 v()
2566 }
2567 ,
2568 we.oncontextmenu = function() {
2569 return !1
2570 }
2571 ;
2572 function pt() {
2573 var e, t, n = "", i = 0;
2574 for (var r in y.servers) {
2575 for (var s = y.servers[r], a = 0, c = 0; c < s.length; c++)
2576 for (var l = 0; l < s[c].games.length; l++)
2577 a += s[c].games[l].playerCount;
2578 i += a;
2579 var h = y.regionInfo[r].name;
2580 n += "<option disabled>" + h + " - " + a + " players</option>";
2581 for (var u = 0; u < s.length; u++)
2582 for (var f = s[u], d = 0; d < f.games.length; d++) {
2583 var p = f.games[d]
2584 , g = 1 * f.index + d + 1
2585 , m = y.server && y.server.region === f.region && y.server.index === f.index && y.gameIndex == d
2586 , k = h + " " + g + " [" + Math.min(p.playerCount, o.maxPlayers) + "/" + o.maxPlayers + "]";
2587 let e = y.stripRegion(r) + ":" + u + ":" + d;
2588 m && (de.getElementsByTagName("span")[0].innerText = e),
2589 n += "<option value='" + e + "' " + (m ? "selected" : "") + ">" + k + "</option>"
2590 }
2591 n += "<option disabled></option>"
2592 }
2593 n += "<option disabled>All Servers - " + i + " players</option>",
2594 xe.innerHTML = n,
2595 "sandbox.moomoo.io" == location.hostname ? (e = "Back to Normal",
2596 t = "//moomoo.io/") : (e = "The sandbox",
2597 t = "//sandbox.moomoo.io/"),
2598 document.getElementById("altServer").innerHTML = "<a href='" + t + "'>" + e + "<i class='material-icons' style='font-size:10px;vertical-align:middle'>arrow_forward_ios</i></a>"
2599 }
2600 function gt() {
2601 var e = new XMLHttpRequest;
2602 e.onreadystatechange = function() {
2603 4 == this.readyState && (200 == this.status ? (window.vultr = JSON.parse(this.responseText),
2604 y.processServers(vultr.servers),
2605 pt()) : console.error("Failed to load server data with status code:", this.status))
2606 }
2607 ,
2608 e.open("GET", "/serverData", !0),
2609 e.send()
2610 }
2611 xe.addEventListener("change", s.checkTrusted((function() {
2612 let e = xe.value.split(":");
2613 y.switchServer(e[0], e[1], e[2])
2614 }
2615 )));
2616 var mt = document.getElementById("pre-content-container")
2617 , yt = null
2618 , kt = null;
2619 window.cpmstarAPI((function(e) {
2620 e.game.setTarget(mt),
2621 kt = e
2622 }
2623 ));
2624 var vt = 3e5
2625 , wt = 0
2626 , bt = 0;
2627 function xt() {
2628 if (!cpmstarAPI || !kt)
2629 return console.log("Failed to load video ad API", !!cpmstarAPI, !!kt),
2630 void Tn();
2631 (yt = new kt.game.RewardedVideoView("rewardedvideo")).addEventListener("ad_closed", (function(e) {
2632 console.log("Video ad closed"),
2633 St()
2634 }
2635 )),
2636 yt.addEventListener("loaded", (function(e) {
2637 console.log("Video ad loaded"),
2638 yt.show()
2639 }
2640 )),
2641 yt.addEventListener("load_failed", (function(e) {
2642 console.log("Video ad load failed", e),
2643 St()
2644 }
2645 )),
2646 yt.load(),
2647 mt.style.display = "block"
2648 }
2649 function St() {
2650 mt.style.display = "none",
2651 Tn()
2652 }
2653 function Tt(e, t, n) {
2654 if (R && e)
2655 if (s.removeAllChildren(Fe),
2656 Fe.classList.add("visible"),
2657 s.generateElement({
2658 id: "itemInfoName",
2659 text: s.capitalizeFirst(e.name),
2660 parent: Fe
2661 }),
2662 s.generateElement({
2663 id: "itemInfoDesc",
2664 text: e.desc,
2665 parent: Fe
2666 }),
2667 n)
2668 ;
2669 else if (t)
2670 s.generateElement({
2671 class: "itemInfoReq",
2672 text: e.type ? "Secondary" : "Primary",
2673 parent: Fe
2674 });
2675 else {
2676 for (var i = 0; i < e.req.length; i += 2)
2677 s.generateElement({
2678 class: "itemInfoReq",
2679 html: e.req[i] + "<span class='itemInfoReqVal'> x" + e.req[i + 1] + "</span>",
2680 parent: Fe
2681 });
2682 e.group.limit && s.generateElement({
2683 class: "itemInfoLmt",
2684 text: (R.itemCounts[e.group.id] || 0) + "/" + e.group.limit,
2685 parent: Fe
2686 })
2687 }
2688 else
2689 Fe.classList.remove("visible")
2690 }
2691 window.showPreAd = xt;
2692 var It, Et, Mt, At = [], Pt = [];
2693 function Bt(e, t) {
2694 At.push({
2695 sid: e,
2696 name: t
2697 }),
2698 Ct()
2699 }
2700 function Ct() {
2701 if (At[0]) {
2702 var e = At[0];
2703 s.removeAllChildren(Ze),
2704 Ze.style.display = "block",
2705 s.generateElement({
2706 class: "notificationText",
2707 text: e.name,
2708 parent: Ze
2709 }),
2710 s.generateElement({
2711 class: "notifButton",
2712 html: "<i class='material-icons' style='font-size:28px;color:#cc5151;'></i>",
2713 parent: Ze,
2714 onclick: function() {
2715 Dt(0)
2716 },
2717 hookTouch: !0
2718 }),
2719 s.generateElement({
2720 class: "notifButton",
2721 html: "<i class='material-icons' style='font-size:28px;color:#8ecc51;'></i>",
2722 parent: Ze,
2723 onclick: function() {
2724 Dt(1)
2725 },
2726 hookTouch: !0
2727 })
2728 } else
2729 Ze.style.display = "none"
2730 }
2731 function Ot(e) {
2732 X.push(e),
2733 "block" == Ye.style.display && Ut()
2734 }
2735 function Rt(e, t) {
2736 R && (R.team = e,
2737 R.isOwner = t,
2738 "block" == Ye.style.display && Ut())
2739 }
2740 function jt(e) {
2741 Pt = e,
2742 "block" == Ye.style.display && Ut()
2743 }
2744 function _t(e) {
2745 for (var t = X.length - 1; t >= 0; t--)
2746 X[t].sid == e && X.splice(t, 1);
2747 "block" == Ye.style.display && Ut()
2748 }
2749 function Ut() {
2750 if (R && R.alive) {
2751 if (an(),
2752 Qe.style.display = "none",
2753 Ye.style.display = "block",
2754 s.removeAllChildren(We),
2755 R.team)
2756 for (var e = 0; e < Pt.length; e += 2)
2757 !function(e) {
2758 var t = s.generateElement({
2759 class: "allianceItem",
2760 style: "color:" + (Pt[e] == R.sid ? "#fff" : "rgba(255,255,255,0.6)"),
2761 text: Pt[e + 1],
2762 parent: We
2763 });
2764 R.isOwner && Pt[e] != R.sid && s.generateElement({
2765 class: "joinAlBtn",
2766 text: "Kick",
2767 onclick: function() {
2768 Lt(Pt[e])
2769 },
2770 hookTouch: !0,
2771 parent: t
2772 })
2773 }(e);
2774 else if (X.length)
2775 for (e = 0; e < X.length; ++e)
2776 !function(e) {
2777 var t = s.generateElement({
2778 class: "allianceItem",
2779 style: "color:" + (X[e].sid == R.team ? "#fff" : "rgba(255,255,255,0.6)"),
2780 text: X[e].sid,
2781 parent: We
2782 });
2783 s.generateElement({
2784 class: "joinAlBtn",
2785 text: "Join",
2786 onclick: function() {
2787 Ft(e)
2788 },
2789 hookTouch: !0,
2790 parent: t
2791 })
2792 }(e);
2793 else
2794 s.generateElement({
2795 class: "allianceItem",
2796 text: "No Tribes Yet",
2797 parent: We
2798 });
2799 s.removeAllChildren(Xe),
2800 R.team ? s.generateElement({
2801 class: "allianceButtonM",
2802 style: "width: 360px",
2803 text: R.isOwner ? "Delete Tribe" : "Leave Tribe",
2804 onclick: function() {
2805 Ht()
2806 },
2807 hookTouch: !0,
2808 parent: Xe
2809 }) : (s.generateElement({
2810 tag: "input",
2811 type: "text",
2812 id: "allianceInput",
2813 maxLength: 7,
2814 placeholder: "unique name",
2815 ontouchstart: function(e) {
2816 e.preventDefault();
2817 var t = prompt("unique name", e.currentTarget.value);
2818 e.currentTarget.value = t.slice(0, 7)
2819 },
2820 parent: Xe
2821 }),
2822 s.generateElement({
2823 tag: "div",
2824 class: "allianceButtonM",
2825 style: "width: 140px;",
2826 text: "Create",
2827 onclick: function() {
2828 zt()
2829 },
2830 hookTouch: !0,
2831 parent: Xe
2832 }))
2833 }
2834 }
2835 function Dt(e) {
2836 r.send("11", At[0].sid, e),
2837 At.splice(0, 1),
2838 Ct()
2839 }
2840 function Lt(e) {
2841 r.send("12", e)
2842 }
2843 function Ft(e) {
2844 r.send("10", X[e].sid)
2845 }
2846 function zt() {
2847 r.send("8", document.getElementById("allianceInput").value)
2848 }
2849 function Ht() {
2850 At = [],
2851 Ct(),
2852 r.send("9")
2853 }
2854 var Vt, qt = [];
2855 function Yt(e, t) {
2856 for (var n = 0; n < qt.length; ++n)
2857 if (!qt[n].active) {
2858 Vt = qt[n];
2859 break
2860 }
2861 Vt || (Vt = new function() {
2862 this.init = function(e, t) {
2863 this.scale = 0,
2864 this.x = e,
2865 this.y = t,
2866 this.active = !0
2867 }
2868 ,
2869 this.update = function(e, t) {
2870 this.active && (this.scale += .05 * t,
2871 this.scale >= o.mapPingScale ? this.active = !1 : (e.globalAlpha = 1 - Math.max(0, this.scale / o.mapPingScale),
2872 e.beginPath(),
2873 e.arc(this.x / o.mapScale * Ne.width, this.y / o.mapScale * Ne.width, this.scale, 0, 2 * Math.PI),
2874 e.stroke()))
2875 }
2876 }
2877 ,
2878 qt.push(Vt)),
2879 Vt.init(e, t)
2880 }
2881 function Wt(e) {
2882 Et = e
2883 }
2884 var Xt = 0;
2885 function Nt(e, t, n) {
2886 n ? e ? R.tailIndex = t : R.tails[t] = 1 : e ? R.skinIndex = t : R.skins[t] = 1,
2887 "block" == Qe.style.display && Gt()
2888 }
2889 function Gt() {
2890 if (R) {
2891 s.removeAllChildren($e);
2892 for (var e = Xt, t = e ? tt : et, n = 0; n < t.length; ++n)
2893 t[n].dontSell || function(n) {
2894 var i = s.generateElement({
2895 id: "storeDisplay" + n,
2896 class: "storeItem",
2897 onmouseout: function() {
2898 Tt()
2899 },
2900 onmouseover: function() {
2901 Tt(t[n], !1, !0)
2902 },
2903 parent: $e
2904 });
2905 s.hookTouchEvents(i, !0),
2906 s.generateElement({
2907 tag: "img",
2908 class: "hatPreview",
2909 src: "../img/" + (e ? "accessories/access_" : "hats/hat_") + t[n].id + (t[n].topSprite ? "_p" : "") + ".png",
2910 parent: i
2911 }),
2912 s.generateElement({
2913 tag: "span",
2914 text: t[n].name,
2915 parent: i
2916 }),
2917 (e ? R.tails[t[n].id] : R.skins[t[n].id]) ? (e ? R.tailIndex : R.skinIndex) == t[n].id ? s.generateElement({
2918 class: "joinAlBtn",
2919 style: "margin-top: 5px",
2920 text: "Unequip",
2921 onclick: function() {
2922 Jt(0, e)
2923 },
2924 hookTouch: !0,
2925 parent: i
2926 }) : s.generateElement({
2927 class: "joinAlBtn",
2928 style: "margin-top: 5px",
2929 text: "Equip",
2930 onclick: function() {
2931 Jt(t[n].id, e)
2932 },
2933 hookTouch: !0,
2934 parent: i
2935 }) : (s.generateElement({
2936 class: "joinAlBtn",
2937 style: "margin-top: 5px",
2938 text: "Buy",
2939 onclick: function() {
2940 Kt(t[n].id, e)
2941 },
2942 hookTouch: !0,
2943 parent: i
2944 }),
2945 s.generateElement({
2946 tag: "span",
2947 class: "itemPrice",
2948 text: t[n].price,
2949 parent: i
2950 }))
2951 }(n)
2952 }
2953 }
2954 function Jt(e, t) {
2955 r.send("13c", 0, e, t)
2956 }
2957 function Kt(e, t) {
2958 r.send("13c", 1, e, t)
2959 }
2960 function Qt() {
2961 Qe.style.display = "none",
2962 Ye.style.display = "none",
2963 an()
2964 }
2965 function $t(e, t) {
2966 e && (t ? R.weapons = e : R.items = e);
2967 for (var n = 0; n < l.list.length; ++n) {
2968 var i = l.weapons.length + n;
2969 document.getElementById("actionBarItem" + i).style.display = R.items.indexOf(l.list[n].id) >= 0 ? "inline-block" : "none"
2970 }
2971 for (n = 0; n < l.weapons.length; ++n)
2972 document.getElementById("actionBarItem" + n).style.display = R.weapons[l.weapons[n].type] == l.weapons[n].id ? "inline-block" : "none"
2973 }
2974 function Zt(e) {
2975 M = e,
2976 V = e && window.devicePixelRatio || 1,
2977 Se.checked = e,
2978 I("native_resolution", e.toString()),
2979 un()
2980 }
2981 function en() {
2982 for (var e = "", t = 0; t < o.skinColors.length; ++t)
2983 e += t == ae ? "<div class='skinColorItem activeSkin' style='background-color:" + o.skinColors[t] + "' onclick='selectSkinColor(" + t + ")'></div>" : "<div class='skinColorItem' style='background-color:" + o.skinColors[t] + "' onclick='selectSkinColor(" + t + ")'></div>";
2984 Je.innerHTML = e
2985 }
2986 var tn = document.getElementById("chatBox")
2987 , nn = document.getElementById("chatHolder");
2988 function rn() {
2989 on ? setTimeout((function() {
2990 var e = prompt("chat message");
2991 e && sn(e)
2992 }
2993 ), 1) : "block" == nn.style.display ? (tn.value && sn(tn.value),
2994 an()) : (Qe.style.display = "none",
2995 Ye.style.display = "none",
2996 nn.style.display = "block",
2997 tn.focus(),
2998 yn()),
2999 tn.value = ""
3000 }
3001 function sn(e) {
3002 r.send("ch", e.slice(0, 30))
3003 }
3004 function an() {
3005 tn.value = "",
3006 nn.style.display = "none"
3007 }
3008 var on, cn, ln = [];
3009 function hn(e, t) {
3010 var n = Ii(e);
3011 n && (n.chatMessage = function(e) {
3012 for (var t, n = 0; n < ln.length; ++n)
3013 if (e.indexOf(ln[n]) > -1) {
3014 t = "";
3015 for (var i = 0; i < ln[n].length; ++i)
3016 t += t.length ? "o" : "M";
3017 var r = new RegExp(ln[n],"g");
3018 e = e.replace(r, t)
3019 }
3020 return e
3021 }(t),
3022 n.chatCountdown = o.chatCountdown)
3023 }
3024 function un() {
3025 F = window.innerWidth,
3026 z = window.innerHeight;
3027 var e = Math.max(F / oe, z / ce) * V;
3028 we.width = F * V,
3029 we.height = z * V,
3030 we.style.width = F + "px",
3031 we.style.height = z + "px",
3032 be.setTransform(e, 0, 0, e, (F * V - oe * e) / 2, (z * V - ce * e) / 2)
3033 }
3034 function fn(e) {
3035 (on = e) ? Ae.classList.add("touch") : Ae.classList.remove("touch")
3036 }
3037 function dn(e) {
3038 e.preventDefault(),
3039 e.stopPropagation(),
3040 fn(!0);
3041 for (var t = 0; t < e.changedTouches.length; t++) {
3042 var n = e.changedTouches[t];
3043 n.identifier == re.id ? (re.id = -1,
3044 bn()) : n.identifier == se.id && (se.id = -1,
3045 R.buildIndex >= 0 && (O = 1,
3046 vn()),
3047 O = 0,
3048 vn())
3049 }
3050 }
3051 function pn() {
3052 return R ? (-1 != se.id ? cn = Math.atan2(se.currentY - se.startY, se.currentX - se.startX) : R.lockDir || on || (cn = Math.atan2(ie - z / 2, ne - F / 2)),
3053 s.fixTo(cn || 0, 2)) : 0
3054 }
3055 window.addEventListener("resize", s.checkTrusted(un)),
3056 un(),
3057 fn(!1),
3058 window.setUsingTouch = fn,
3059 we.addEventListener("touchmove", s.checkTrusted((function(e) {
3060 e.preventDefault(),
3061 e.stopPropagation(),
3062 fn(!0);
3063 for (var t = 0; t < e.changedTouches.length; t++) {
3064 var n = e.changedTouches[t];
3065 n.identifier == re.id ? (re.currentX = n.pageX,
3066 re.currentY = n.pageY,
3067 bn()) : n.identifier == se.id && (se.currentX = n.pageX,
3068 se.currentY = n.pageY,
3069 O = 1)
3070 }
3071 }
3072 )), !1),
3073 we.addEventListener("touchstart", s.checkTrusted((function(e) {
3074 e.preventDefault(),
3075 e.stopPropagation(),
3076 fn(!0);
3077 for (var t = 0; t < e.changedTouches.length; t++) {
3078 var n = e.changedTouches[t];
3079 n.pageX < document.body.scrollWidth / 2 && -1 == re.id ? (re.id = n.identifier,
3080 re.startX = re.currentX = n.pageX,
3081 re.startY = re.currentY = n.pageY,
3082 bn()) : n.pageX > document.body.scrollWidth / 2 && -1 == se.id && (se.id = n.identifier,
3083 se.startX = se.currentX = n.pageX,
3084 se.startY = se.currentY = n.pageY,
3085 R.buildIndex < 0 && (O = 1,
3086 vn()))
3087 }
3088 }
3089 )), !1),
3090 we.addEventListener("touchend", s.checkTrusted(dn), !1),
3091 we.addEventListener("touchcancel", s.checkTrusted(dn), !1),
3092 we.addEventListener("touchleave", s.checkTrusted(dn), !1),
3093 we.addEventListener("mousemove", (function(e) {
3094 e.preventDefault(),
3095 e.stopPropagation(),
3096 fn(!1),
3097 ne = e.clientX,
3098 ie = e.clientY
3099 }
3100 ), !1),
3101 we.addEventListener("mousedown", (function(e) {
3102 fn(!1),
3103 1 != O && (O = 1,
3104 vn())
3105 }
3106 ), !1),
3107 we.addEventListener("mouseup", (function(e) {
3108 fn(!1),
3109 0 != O && (O = 0,
3110 vn())
3111 }
3112 ), !1);
3113 var gn = {}
3114 , mn = {
3115 87: [0, -1],
3116 38: [0, -1],
3117 83: [0, 1],
3118 40: [0, 1],
3119 65: [-1, 0],
3120 37: [-1, 0],
3121 68: [1, 0],
3122 39: [1, 0]
3123 };
3124 function yn() {
3125 gn = {},
3126 r.send("rmd")
3127 }
3128 function kn() {
3129 return "block" != Ye.style.display && "block" != nn.style.display
3130 }
3131 function vn() {
3132 R && R.alive && r.send("c", O, R.buildIndex >= 0 ? pn() : null)
3133 }
3134 window.addEventListener("keydown", s.checkTrusted((function(e) {
3135 var t = e.which || e.keyCode || 0;
3136 27 == t ? Qt() : R && R.alive && kn() && (gn[t] || (gn[t] = 1,
3137 69 == t ? r.send("7", 1) : 67 == t ? (Mt || (Mt = {}),
3138 Mt.x = R.x,
3139 Mt.y = R.y) : 88 == t ? (R.lockDir = R.lockDir ? 0 : 1,
3140 r.send("7", 0)) : null != R.weapons[t - 49] ? Sn(R.weapons[t - 49], !0) : null != R.items[t - 49 - R.weapons.length] ? Sn(R.items[t - 49 - R.weapons.length]) : 81 == t ? Sn(R.items[0]) : 80 == t ? xn() : mn[t] ? bn() : 32 == t && (O = 1,
3141 vn())))
3142 }
3143 ))),
3144 window.addEventListener("keyup", s.checkTrusted((function(e) {
3145 if (R && R.alive) {
3146 var t = e.which || e.keyCode || 0;
3147 13 == t ? rn() : kn() && gn[t] && (gn[t] = 0,
3148 mn[t] ? bn() : 32 == t && (O = 0,
3149 vn()))
3150 }
3151 }
3152 )));
3153 var wn = void 0;
3154 function bn() {
3155 var e = function() {
3156 var e = 0
3157 , t = 0;
3158 if (-1 != re.id)
3159 e += re.currentX - re.startX,
3160 t += re.currentY - re.startY;
3161 else
3162 for (var n in mn) {
3163 var i = mn[n];
3164 e += !!gn[n] * i[0],
3165 t += !!gn[n] * i[1]
3166 }
3167 return 0 == e && 0 == t ? void 0 : s.fixTo(Math.atan2(t, e), 2)
3168 }();
3169 (null == wn || null == e || Math.abs(e - wn) > .3) && (r.send("33", e),
3170 wn = e)
3171 }
3172 function xn() {
3173 r.send("14", 1)
3174 }
3175 function Sn(e, t) {
3176 r.send("5", e, t)
3177 }
3178 function Tn() {
3179 I("moo_name", Le.value),
3180 !le && r.connected && (le = !0,
3181 x.stop("menu"),
3182 dt("Loading..."),
3183 r.send("sp", {
3184 name: Le.value,
3185 moofoll: H,
3186 skin: ae
3187 }))
3188 }
3189 var In = !0;
3190 function En(e) {
3191 Pe.style.display = "none",
3192 Me.style.display = "block",
3193 he.style.display = "none",
3194 gn = {},
3195 j = e,
3196 O = 0,
3197 le = !0,
3198 In && (In = !1,
3199 N.length = 0)
3200 }
3201 function Mn(e, t, n, i) {
3202 m.showText(e, t, 50, .18, 500, Math.abs(n), n >= 0 ? "#fff" : "#8ecc51")
3203 }
3204 var An = 99999;
3205 function Pn() {
3206 le = !1;
3207 try {
3208 factorem.refreshAds([2], !0)
3209 } catch (e) {}
3210 Be.style.display = "none",
3211 Qt(),
3212 It = {
3213 x: R.x,
3214 y: R.y
3215 },
3216 Pe.style.display = "none",
3217 Ge.style.display = "block",
3218 Ge.style.fontSize = "0px",
3219 An = 0,
3220 setTimeout((function() {
3221 Me.style.display = "block",
3222 he.style.display = "block",
3223 Ge.style.display = "none"
3224 }
3225 ), o.deathFadeout),
3226 gt()
3227 }
3228 function Bn(e) {
3229 R && nt.removeAllItems(e)
3230 }
3231 function Cn(e) {
3232 nt.disableBySid(e)
3233 }
3234 function On() {
3235 Oe.innerText = R.points,
3236 Re.innerText = R.food,
3237 je.innerText = R.wood,
3238 _e.innerText = R.stone,
3239 Ue.innerText = R.kills
3240 }
3241 var Rn = {}
3242 , jn = ["crown", "skull"]
3243 , _n = [];
3244 function Un(e, t) {
3245 if (R.upgradePoints = e,
3246 R.upgrAge = t,
3247 e > 0) {
3248 _n.length = 0,
3249 s.removeAllChildren(Ve);
3250 for (var n = 0; n < l.weapons.length; ++n)
3251 l.weapons[n].age == t && (null == l.weapons[n].pre || R.weapons.indexOf(l.weapons[n].pre) >= 0) && (s.generateElement({
3252 id: "upgradeItem" + n,
3253 class: "actionBarItem",
3254 onmouseout: function() {
3255 Tt()
3256 },
3257 parent: Ve
3258 }).style.backgroundImage = document.getElementById("actionBarItem" + n).style.backgroundImage,
3259 _n.push(n));
3260 for (n = 0; n < l.list.length; ++n)
3261 if (l.list[n].age == t && (null == l.list[n].pre || R.items.indexOf(l.list[n].pre) >= 0)) {
3262 var i = l.weapons.length + n;
3263 s.generateElement({
3264 id: "upgradeItem" + i,
3265 class: "actionBarItem",
3266 onmouseout: function() {
3267 Tt()
3268 },
3269 parent: Ve
3270 }).style.backgroundImage = document.getElementById("actionBarItem" + i).style.backgroundImage,
3271 _n.push(i)
3272 }
3273 for (n = 0; n < _n.length; n++)
3274 !function(e) {
3275 var t = document.getElementById("upgradeItem" + e);
3276 t.onmouseover = function() {
3277 l.weapons[e] ? Tt(l.weapons[e], !0) : Tt(l.list[e - l.weapons.length])
3278 }
3279 ,
3280 t.onclick = s.checkTrusted((function() {
3281 r.send("6", e)
3282 }
3283 )),
3284 s.hookTouchEvents(t)
3285 }(_n[n]);
3286 _n.length ? (Ve.style.display = "block",
3287 qe.style.display = "block",
3288 qe.innerHTML = "Select (" + e + ")") : (Ve.style.display = "none",
3289 qe.style.display = "none",
3290 Tt())
3291 } else
3292 Ve.style.display = "none",
3293 qe.style.display = "none",
3294 Tt()
3295 }
3296 function Dn(e, t, n) {
3297 null != e && (R.XP = e),
3298 null != t && (R.maxXP = t),
3299 null != n && (R.age = n),
3300 n == o.maxAge ? (ze.innerHTML = "MAX AGE",
3301 He.style.width = "100%") : (ze.innerHTML = " " + R.age,
3302 He.style.width = R.XP / R.maxXP * 100 + "%")
3303 }
3304 function Ln(e) {
3305 s.removeAllChildren(De);
3306 for (var t = 1, n = 0; n < e.length; n += 3)
3307 !function(n) {
3308 s.generateElement({
3309 class: "leaderHolder",
3310 parent: De,
3311 children: [s.generateElement({
3312 class: "leaderboardItem",
3313 style: "color:" + (e[n] == j ? "#fff" : "rgba(255,255,255,0.6)"),
3314 text: t + ". " + ("" != e[n + 1] ? e[n + 1] : "unknown")
3315 }), s.generateElement({
3316 class: "leaderScore",
3317 text: s.kFormat(e[n + 2]) || "0"
3318 })]
3319 })
3320 }(n),
3321 t++
3322 }
3323 function Fn(e, t, n, i) {
3324 be.save(),
3325 be.setTransform(1, 0, 0, 1, 0, 0),
3326 be.scale(V, V);
3327 var r = 50;
3328 be.beginPath(),
3329 be.arc(e, t, r, 0, 2 * Math.PI, !1),
3330 be.closePath(),
3331 be.fillStyle = "rgba(255, 255, 255, 0.3)",
3332 be.fill(),
3333 r = 50;
3334 var s = n - e
3335 , a = i - t
3336 , o = Math.sqrt(Math.pow(s, 2) + Math.pow(a, 2))
3337 , c = o > r ? o / r : 1;
3338 s /= c,
3339 a /= c,
3340 be.beginPath(),
3341 be.arc(e + s, t + a, .5 * r, 0, 2 * Math.PI, !1),
3342 be.closePath(),
3343 be.fillStyle = "white",
3344 be.fill(),
3345 be.restore()
3346 }
3347 function zn(e, t, n) {
3348 for (var i = 0; i < G.length; ++i)
3349 (_ = G[i]).active && _.layer == e && (_.update(P),
3350 _.active && ki(_.x - t, _.y - n, _.scale) && (be.save(),
3351 be.translate(_.x - t, _.y - n),
3352 be.rotate(_.dir),
3353 Vn(0, 0, _, be, 1),
3354 be.restore()))
3355 }
3356 var Hn = {};
3357 function Vn(e, t, n, i, r) {
3358 if (n.src) {
3359 var s = l.projectiles[n.indx].src
3360 , a = Hn[s];
3361 a || ((a = new Image).onload = function() {
3362 this.isLoaded = !0
3363 }
3364 ,
3365 a.src = ".././img/weapons/" + s + ".png",
3366 Hn[s] = a),
3367 a.isLoaded && i.drawImage(a, e - n.scale / 2, t - n.scale / 2, n.scale, n.scale)
3368 } else
3369 1 == n.indx && (i.fillStyle = "#939393",
3370 si(e, t, n.scale, i))
3371 }
3372 function qn(e, t, n, i) {
3373 var r = o.riverWidth + i
3374 , s = o.mapScale / 2 - t - r / 2;
3375 s < ce && s + r > 0 && n.fillRect(0, s, oe, r)
3376 }
3377 function Yn(e, t, n) {
3378 for (var i, r, s, a = 0; a < N.length; ++a)
3379 (_ = N[a]).active && (r = _.x + _.xWiggle - t,
3380 s = _.y + _.yWiggle - n,
3381 0 == e && _.update(P),
3382 _.layer == e && ki(r, s, _.scale + (_.blocker || 0)) && (be.globalAlpha = _.hideFromEnemy ? .6 : 1,
3383 _.isItem ? (i = ri(_),
3384 be.save(),
3385 be.translate(r, s),
3386 be.rotate(_.dir),
3387 be.drawImage(i, -i.width / 2, -i.height / 2),
3388 _.blocker && (be.strokeStyle = "#db6e6e",
3389 be.globalAlpha = .3,
3390 be.lineWidth = 6,
3391 si(0, 0, _.blocker, be, !1, !0)),
3392 be.restore()) : (i = ni(_),
3393 be.drawImage(i, r - i.width / 2, s - i.height / 2))))
3394 }
3395 function Wn(e, t, n) {
3396 (_ = Ii(e)) && _.startAnim(t, n)
3397 }
3398 function Xn(e, t, n) {
3399 be.globalAlpha = 1;
3400 for (var i = 0; i < W.length; ++i)
3401 (_ = W[i]).zIndex == n && (_.animate(P),
3402 _.visible && (_.skinRot += .002 * P,
3403 L = (_ == R ? pn() : _.dir) + _.dirPlus,
3404 be.save(),
3405 be.translate(_.x - e, _.y - t),
3406 be.rotate(L),
3407 Nn(_, be),
3408 be.restore()))
3409 }
3410 function Nn(e, t) {
3411 (t = t || be).lineWidth = 3.5,
3412 t.lineJoin = "miter";
3413 var n = Math.PI / 4 * (l.weapons[e.weaponIndex].armS || 1)
3414 , i = e.buildIndex < 0 && l.weapons[e.weaponIndex].hndS || 1
3415 , r = e.buildIndex < 0 && l.weapons[e.weaponIndex].hndD || 1;
3416 if (e.tailIndex > 0 && function(e, t, n) {
3417 if (!(Gn = Qn[e])) {
3418 var i = new Image;
3419 i.onload = function() {
3420 this.isLoaded = !0,
3421 this.onload = null
3422 }
3423 ,
3424 i.src = ".././img/accessories/access_" + e + ".png",
3425 Qn[e] = i,
3426 Gn = i
3427 }
3428 var r = $n[e];
3429 if (!r) {
3430 for (var s = 0; s < tt.length; ++s)
3431 if (tt[s].id == e) {
3432 r = tt[s];
3433 break
3434 }
3435 $n[e] = r
3436 }
3437 Gn.isLoaded && (t.save(),
3438 t.translate(-20 - (r.xOff || 0), 0),
3439 r.spin && t.rotate(n.skinRot),
3440 t.drawImage(Gn, -r.scale / 2, -r.scale / 2, r.scale, r.scale),
3441 t.restore())
3442 }(e.tailIndex, t, e),
3443 e.buildIndex < 0 && !l.weapons[e.weaponIndex].aboveHand && (ei(l.weapons[e.weaponIndex], o.weaponVariants[e.weaponVariant].src, e.scale, 0, t),
3444 null == l.weapons[e.weaponIndex].projectile || l.weapons[e.weaponIndex].hideProjectile || Vn(e.scale, 0, l.projectiles[l.weapons[e.weaponIndex].projectile], be)),
3445 t.fillStyle = o.skinColors[e.skinColor],
3446 si(e.scale * Math.cos(n), e.scale * Math.sin(n), 14),
3447 si(e.scale * r * Math.cos(-n * i), e.scale * r * Math.sin(-n * i), 14),
3448 e.buildIndex < 0 && l.weapons[e.weaponIndex].aboveHand && (ei(l.weapons[e.weaponIndex], o.weaponVariants[e.weaponVariant].src, e.scale, 0, t),
3449 null == l.weapons[e.weaponIndex].projectile || l.weapons[e.weaponIndex].hideProjectile || Vn(e.scale, 0, l.projectiles[l.weapons[e.weaponIndex].projectile], be)),
3450 e.buildIndex >= 0) {
3451 var s = ri(l.list[e.buildIndex]);
3452 t.drawImage(s, e.scale - l.list[e.buildIndex].holdOffset, -s.width / 2)
3453 }
3454 si(0, 0, e.scale, t),
3455 e.skinIndex > 0 && (t.rotate(Math.PI / 2),
3456 function e(t, n, i, r) {
3457 if (!(Gn = Jn[t])) {
3458 var s = new Image;
3459 s.onload = function() {
3460 this.isLoaded = !0,
3461 this.onload = null
3462 }
3463 ,
3464 s.src = ".././img/hats/hat_" + t + ".png",
3465 Jn[t] = s,
3466 Gn = s
3467 }
3468 var a = i || Kn[t];
3469 if (!a) {
3470 for (var o = 0; o < et.length; ++o)
3471 if (et[o].id == t) {
3472 a = et[o];
3473 break
3474 }
3475 Kn[t] = a
3476 }
3477 Gn.isLoaded && n.drawImage(Gn, -a.scale / 2, -a.scale / 2, a.scale, a.scale),
3478 !i && a.topSprite && (n.save(),
3479 n.rotate(r.skinRot),
3480 e(t + "_top", n, a, r),
3481 n.restore())
3482 }(e.skinIndex, t, null, e))
3483 }
3484 var Gn, Jn = {}, Kn = {}, Qn = {}, $n = {}, Zn = {};
3485 function ei(e, t, n, i, r) {
3486 var s = e.src + (t || "")
3487 , a = Zn[s];
3488 a || ((a = new Image).onload = function() {
3489 this.isLoaded = !0
3490 }
3491 ,
3492 a.src = ".././img/weapons/" + s + ".png",
3493 Zn[s] = a),
3494 a.isLoaded && r.drawImage(a, n + e.xOff - e.length / 2, i + e.yOff - e.width / 2, e.length, e.width)
3495 }
3496 var ti = {};
3497 function ni(e) {
3498 var t = e.y >= o.mapScale - o.snowBiomeTop ? 2 : e.y <= o.snowBiomeTop ? 1 : 0
3499 , n = e.type + "_" + e.scale + "_" + t
3500 , i = ti[n];
3501 if (!i) {
3502 var r = document.createElement("canvas");
3503 r.width = r.height = 2.1 * e.scale + 3;
3504 var a = r.getContext("2d");
3505 if (a.translate(r.width / 2, r.height / 2),
3506 a.rotate(s.randFloat(0, Math.PI)),
3507 a.strokeStyle = it,
3508 a.lineWidth = 3,
3509 0 == e.type)
3510 for (var c, l = 0; l < 2; ++l)
3511 ai(a, 7, c = _.scale * (l ? .5 : 1), .7 * c),
3512 a.fillStyle = t ? l ? "#fff" : "#e3f1f4" : l ? "#b4db62" : "#9ebf57",
3513 a.fill(),
3514 l || a.stroke();
3515 else if (1 == e.type)
3516 if (2 == t)
3517 a.fillStyle = "#606060",
3518 ai(a, 6, .3 * e.scale, .71 * e.scale),
3519 a.fill(),
3520 a.stroke(),
3521 a.fillStyle = "#89a54c",
3522 si(0, 0, .55 * e.scale, a),
3523 a.fillStyle = "#a5c65b",
3524 si(0, 0, .3 * e.scale, a, !0);
3525 else {
3526 var h;
3527 !function(e, t, n, i) {
3528 var r, a = Math.PI / 2 * 3, o = Math.PI / 6;
3529 e.beginPath(),
3530 e.moveTo(0, -i);
3531 for (var c = 0; c < 6; c++)
3532 r = s.randInt(n + .9, 1.2 * n),
3533 e.quadraticCurveTo(Math.cos(a + o) * r, Math.sin(a + o) * r, Math.cos(a + 2 * o) * i, Math.sin(a + 2 * o) * i),
3534 a += 2 * o;
3535 e.lineTo(0, -i),
3536 e.closePath()
3537 }(a, 0, _.scale, .7 * _.scale),
3538 a.fillStyle = t ? "#e3f1f4" : "#89a54c",
3539 a.fill(),
3540 a.stroke(),
3541 a.fillStyle = t ? "#6a64af" : "#c15555";
3542 var u = T / 4;
3543 for (l = 0; l < 4; ++l)
3544 si((h = s.randInt(_.scale / 3.5, _.scale / 2.3)) * Math.cos(u * l), h * Math.sin(u * l), s.randInt(10, 12), a)
3545 }
3546 else
3547 2 != e.type && 3 != e.type || (a.fillStyle = 2 == e.type ? 2 == t ? "#938d77" : "#939393" : "#e0c655",
3548 ai(a, 3, e.scale, e.scale),
3549 a.fill(),
3550 a.stroke(),
3551 a.fillStyle = 2 == e.type ? 2 == t ? "#b2ab90" : "#bcbcbc" : "#ebdca3",
3552 ai(a, 3, .55 * e.scale, .65 * e.scale),
3553 a.fill());
3554 i = r,
3555 ti[n] = i
3556 }
3557 return i
3558 }
3559 var ii = [];
3560 function ri(e, t) {
3561 var n = ii[e.id];
3562 if (!n || t) {
3563 var i = document.createElement("canvas");
3564 i.width = i.height = 2.5 * e.scale + 3 + (l.list[e.id].spritePadding || 0);
3565 var r = i.getContext("2d");
3566 if (r.translate(i.width / 2, i.height / 2),
3567 r.rotate(t ? 0 : Math.PI / 2),
3568 r.strokeStyle = it,
3569 r.lineWidth = 3 * (t ? i.width / 81 : 1),
3570 "apple" == e.name) {
3571 r.fillStyle = "#f2e700",
3572 si(0, 0, e.scale, r),
3573 r.fillStyle = "#89a54c";
3574 var a = -Math.PI / 2;
3575 !function(e, t, n, i, r) {
3576 var s = e + 25 * Math.cos(i)
3577 , a = t + 25 * Math.sin(i);
3578 r.moveTo(e, t),
3579 r.beginPath(),
3580 r.quadraticCurveTo((e + s) / 2 + 10 * Math.cos(i + Math.PI / 2), (t + a) / 2 + 10 * Math.sin(i + Math.PI / 2), s, a),
3581 r.quadraticCurveTo((e + s) / 2 - 10 * Math.cos(i + Math.PI / 2), (t + a) / 2 - 10 * Math.sin(i + Math.PI / 2), e, t),
3582 r.closePath(),
3583 r.fill(),
3584 r.stroke()
3585 }(e.scale * Math.cos(a), e.scale * Math.sin(a), 0, a + Math.PI / 2, r)
3586 } else if ("cookie" == e.name) {
3587 r.fillStyle = "#cca861",
3588 si(0, 0, e.scale, r),
3589 r.fillStyle = "#937c4b";
3590 for (var o = T / (h = 4), c = 0; c < h; ++c)
3591 si((u = s.randInt(e.scale / 2.5, e.scale / 1.7)) * Math.cos(o * c), u * Math.sin(o * c), s.randInt(4, 5), r, !0)
3592 } else if ("cheese" == e.name) {
3593 var h, u;
3594 for (r.fillStyle = "#00ffff",
3595 si(0, 0, e.scale, r),
3596 r.fillStyle = "#0000ff",
3597 o = T / (h = 4),
3598 c = 0; c < h; ++c)
3599 si((u = s.randInt(e.scale / 2.5, e.scale / 1.7)) * Math.cos(o * c), u * Math.sin(o * c), s.randInt(4, 5), r, !0)
3600 } else if ("wood wall" == e.name || "stone wall" == e.name || "castle wall" == e.name) {
3601 r.fillStyle = "castle wall" == e.name ? "#DB2929" : "wood wall" == e.name ? "#DBFEF8" : "#DBE6E0";
3602 var f = "castle wall" == e.name ? 4 : 3;
3603 ai(r, f, 1.1 * e.scale, 1.1 * e.scale),
3604 r.fill(),
3605 r.stroke(),
3606 r.fillStyle = "castle wall" == e.name ? "#00ffff" : "wood wall" == e.name ? "#00ffff" : "#0000ff",
3607 ai(r, f, .65 * e.scale, .65 * e.scale),
3608 r.fill()
3609 } else if ("spikes" == e.name || "greater spikes" == e.name || "poison spikes" == e.name || "spinning spikes" == e.name) {
3610 r.fillStyle = "poison spikes" == e.name ? "#00ffff" : "#00ffff";
3611 var d = .6 * e.scale;
3612 ai(r, "spikes" == e.name ? 5 : 6, e.scale, d),
3613 r.fill(),
3614 r.stroke(),
3615 r.fillStyle = "#00ffff",
3616 si(0, 0, d, r),
3617 r.fillStyle = "#0000ff",
3618 si(0, 0, d / 2, r, !0)
3619 } else if ("windmill" == e.name || "faster windmill" == e.name || "power mill" == e.name)
3620 r.fillStyle = "#8a2be2",
3621 si(0, 0, e.scale, r),
3622 r.fillStyle = "#00ffff",
3623 ci(0, 0, 1.5 * e.scale, 29, 4, r),
3624 r.fillStyle = "#00ffff",
3625 si(0, 0, .5 * e.scale, r);
3626 else if ("mine" == e.name)
3627 r.fillStyle = "#00ffff",
3628 ai(r, 3, e.scale, e.scale),
3629 r.fill(),
3630 r.stroke(),
3631 r.fillStyle = "#0000ff",
3632 ai(r, 3, .55 * e.scale, .65 * e.scale),
3633 r.fill();
3634 else if ("sapling" == e.name)
3635 for (c = 0; c < 2; ++c)
3636 ai(r, 7, d = e.scale * (c ? .5 : 1), .7 * d),
3637 r.fillStyle = c ? "#e9e9e9" : "#575f2d",
3638 r.fill(),
3639 c || r.stroke();
3640 else if ("pit trap" == e.name)
3641 r.fillStyle = "#4876FF",
3642 ai(r, 3, 1.1 * e.scale, 1.1 * e.scale),
3643 r.fill(),
3644 r.stroke(),
3645 r.fillStyle = it,
3646 ai(r, 3, .65 * e.scale, .65 * e.scale),
3647 r.fill();
3648 else if ("boost pad" == e.name)
3649 r.fillStyle = "#ff0000",
3650 oi(0, 0, 2 * e.scale, 2 * e.scale, r),
3651 r.fill(),
3652 r.stroke(),
3653 r.fillStyle = "#00ffff",
3654 function(e, t) {
3655 t = t || be;
3656 var n = e * (Math.sqrt(3) / 2);
3657 t.beginPath(),
3658 t.moveTo(0, -n / 2),
3659 t.lineTo(-e / 2, n / 2),
3660 t.lineTo(e / 2, n / 2),
3661 t.lineTo(0, -n / 2),
3662 t.fill(),
3663 t.closePath()
3664 }(1 * e.scale, r);
3665 else if ("turret" == e.name)
3666 r.fillStyle = "#00fff",
3667 si(0, 0, e.scale, r),
3668 r.fill(),
3669 r.stroke(),
3670 r.fillStyle = "#0000ff",
3671 oi(0, -25, .9 * e.scale, 50, r),
3672 si(0, 0, .6 * e.scale, r),
3673 r.fill(),
3674 r.stroke();
3675 else if ("platform" == e.name) {
3676 r.fillStyle = "#0000ff";
3677 var p = 2 * e.scale
3678 , g = p / 4
3679 , m = -e.scale / 2;
3680 for (c = 0; c < 4; ++c)
3681 oi(m - g / 2, 0, g, 2 * e.scale, r),
3682 r.fill(),
3683 r.stroke(),
3684 m += p / 4
3685 } else
3686 "healing pad" == e.name ? (r.fillStyle = "#00ffff",
3687 oi(0, 0, 2 * e.scale, 2 * e.scale, r),
3688 r.fill(),
3689 r.stroke(),
3690 r.fillStyle = "#0000ff",
3691 ci(0, 0, .65 * e.scale, 20, 4, r, !0)) : "spawn pad" == e.name ? (r.fillStyle = "#ff0000",
3692 oi(0, 0, 2 * e.scale, 2 * e.scale, r),
3693 r.fill(),
3694 r.stroke(),
3695 r.fillStyle = "#00ffff",
3696 si(0, 0, .6 * e.scale, r)) : "blocker" == e.name ? (r.fillStyle = "#7e7f82",
3697 si(0, 0, e.scale, r),
3698 r.fill(),
3699 r.stroke(),
3700 r.rotate(Math.PI / 4),
3701 r.fillStyle = "#00ffff",
3702 ci(0, 0, .65 * e.scale, 20, 4, r, !0)) : "teleporter" == e.name && (r.fillStyle = "#7e7f82",
3703 si(0, 0, e.scale, r),
3704 r.fill(),
3705 r.stroke(),
3706 r.rotate(Math.PI / 4),
3707 r.fillStyle = "#00ffff",
3708 si(0, 0, .5 * e.scale, r, !0));
3709 n = i,
3710 t || (ii[e.id] = n)
3711 }
3712 return n
3713 }
3714 function si(e, t, n, i, r, s) {
3715 (i = i || be).beginPath(),
3716 i.arc(e, t, n, 0, 2 * Math.PI),
3717 s || i.fill(),
3718 r || i.stroke()
3719 }
3720 function ai(e, t, n, i) {
3721 var r, s, a = Math.PI / 2 * 3, o = Math.PI / t;
3722 e.beginPath(),
3723 e.moveTo(0, -n);
3724 for (var c = 0; c < t; c++)
3725 r = Math.cos(a) * n,
3726 s = Math.sin(a) * n,
3727 e.lineTo(r, s),
3728 a += o,
3729 r = Math.cos(a) * i,
3730 s = Math.sin(a) * i,
3731 e.lineTo(r, s),
3732 a += o;
3733 e.lineTo(0, -n),
3734 e.closePath()
3735 }
3736 function oi(e, t, n, i, r, s) {
3737 r.fillRect(e - n / 2, t - i / 2, n, i),
3738 s || r.strokeRect(e - n / 2, t - i / 2, n, i)
3739 }
3740 function ci(e, t, n, i, r, s, a) {
3741 s.save(),
3742 s.translate(e, t),
3743 r = Math.ceil(r / 2);
3744 for (var o = 0; o < r; o++)
3745 oi(0, 0, 2 * n, i, s, a),
3746 s.rotate(Math.PI / r);
3747 s.restore()
3748 }
3749 function li(e) {
3750 for (var t = 0; t < e.length; )
3751 nt.add(e[t], e[t + 1], e[t + 2], e[t + 3], e[t + 4], e[t + 5], l.list[e[t + 6]], !0, e[t + 7] >= 0 ? {
3752 sid: e[t + 7]
3753 } : null),
3754 t += 8
3755 }
3756 function hi(e, t) {
3757 (_ = Mi(t)) && (_.xWiggle += o.gatherWiggle * Math.cos(e),
3758 _.yWiggle += o.gatherWiggle * Math.sin(e))
3759 }
3760 function ui(e, t) {
3761 (_ = Mi(e)) && (_.dir = t,
3762 _.xWiggle += o.gatherWiggle * Math.cos(t + Math.PI),
3763 _.yWiggle += o.gatherWiggle * Math.sin(t + Math.PI))
3764 }
3765 function fi(e, t, n, i, r, s, a, o) {
3766 lt && (J.addProjectile(e, t, n, i, r, s, null, null, a).sid = o)
3767 }
3768 function di(e, t) {
3769 for (var n = 0; n < G.length; ++n)
3770 G[n].sid == e && (G[n].range = t)
3771 }
3772 function pi(e) {
3773 (_ = Ei(e)) && _.startAnim()
3774 }
3775 function gi(e) {
3776 for (var t = 0; t < Y.length; ++t)
3777 Y[t].forcePos = !Y[t].visible,
3778 Y[t].visible = !1;
3779 if (e) {
3780 var n = Date.now();
3781 for (t = 0; t < e.length; )
3782 (_ = Ei(e[t])) ? (_.index = e[t + 1],
3783 _.t1 = void 0 === _.t2 ? n : _.t2,
3784 _.t2 = n,
3785 _.x1 = _.x,
3786 _.y1 = _.y,
3787 _.x2 = e[t + 2],
3788 _.y2 = e[t + 3],
3789 _.d1 = void 0 === _.d2 ? e[t + 4] : _.d2,
3790 _.d2 = e[t + 4],
3791 _.health = e[t + 5],
3792 _.dt = 0,
3793 _.visible = !0) : ((_ = Z.spawn(e[t + 2], e[t + 3], e[t + 4], e[t + 1])).x2 = _.x,
3794 _.y2 = _.y,
3795 _.d2 = _.dir,
3796 _.health = e[t + 5],
3797 Z.aiTypes[e[t + 1]].name || (_.name = o.cowNames[e[t + 6]]),
3798 _.forcePos = !0,
3799 _.sid = e[t],
3800 _.visible = !0),
3801 t += 7
3802 }
3803 }
3804 var mi = {};
3805 function yi(e, t) {
3806 var n = e.index
3807 , i = mi[n];
3808 if (!i) {
3809 var r = new Image;
3810 r.onload = function() {
3811 this.isLoaded = !0,
3812 this.onload = null
3813 }
3814 ,
3815 r.src = ".././img/animals/" + e.src + ".png",
3816 i = r,
3817 mi[n] = i
3818 }
3819 if (i.isLoaded) {
3820 var s = 1.2 * e.scale * (e.spriteMlt || 1);
3821 t.drawImage(i, -s, -s, 2 * s, 2 * s)
3822 }
3823 }
3824 function ki(e, t, n) {
3825 return e + n >= 0 && e - n <= oe && t + n >= 0 && t - n <= ce
3826 }
3827 function vi(e, t) {
3828 var n = function(e) {
3829 for (var t = 0; t < W.length; ++t)
3830 if (W[t].id == e)
3831 return W[t];
3832 return null
3833 }(e[0]);
3834 n || (n = new u(e[0],e[1],o,s,J,nt,W,Y,l,et,tt),
3835 W.push(n)),
3836 n.spawn(t ? H : null),
3837 n.visible = !1,
3838 n.x2 = void 0,
3839 n.y2 = void 0,
3840 n.setData(e),
3841 t && (U = (R = n).x,
3842 D = R.y,
3843 $t(),
3844 On(),
3845 Dn(),
3846 Un(0),
3847 Be.style.display = "block")
3848 }
3849 function wi(e) {
3850 for (var t = 0; t < W.length; t++)
3851 if (W[t].id == e) {
3852 W.splice(t, 1);
3853 break
3854 }
3855 }
3856 function bi(e, t) {
3857 R && (R.itemCounts[e] = t)
3858 }
3859 function xi(e, t, n) {
3860 R && (R[e] = t,
3861 n && On())
3862 }
3863 function Si(e, t) {
3864 (_ = Ii(e)) && (_.health = t)
3865 }
3866 function Ti(e) {
3867 for (var t = Date.now(), n = 0; n < W.length; ++n)
3868 W[n].forcePos = !W[n].visible,
3869 W[n].visible = !1;
3870 for (n = 0; n < e.length; )
3871 (_ = Ii(e[n])) && (_.t1 = void 0 === _.t2 ? t : _.t2,
3872 _.t2 = t,
3873 _.x1 = _.x,
3874 _.y1 = _.y,
3875 _.x2 = e[n + 1],
3876 _.y2 = e[n + 2],
3877 _.d1 = void 0 === _.d2 ? e[n + 3] : _.d2,
3878 _.d2 = e[n + 3],
3879 _.dt = 0,
3880 _.buildIndex = e[n + 4],
3881 _.weaponIndex = e[n + 5],
3882 _.weaponVariant = e[n + 6],
3883 _.team = e[n + 7],
3884 _.isLeader = e[n + 8],
3885 _.skinIndex = e[n + 9],
3886 _.tailIndex = e[n + 10],
3887 _.iconIndex = e[n + 11],
3888 _.zIndex = e[n + 12],
3889 _.visible = !0),
3890 n += 13
3891 }
3892 function Ii(e) {
3893 for (var t = 0; t < W.length; ++t)
3894 if (W[t].sid == e)
3895 return W[t];
3896 return null
3897 }
3898 function Ei(e) {
3899 for (var t = 0; t < Y.length; ++t)
3900 if (Y[t].sid == e)
3901 return Y[t];
3902 return null
3903 }
3904 function Mi(e) {
3905 for (var t = 0; t < N.length; ++t)
3906 if (N[t].sid == e)
3907 return N[t];
3908 return null
3909 }
3910 var Ai = -1;
3911 function Pi() {
3912 var e = Date.now() - Ai;
3913 window.pingTime = e,
3914 Ie.innerText = "Ping: " + e + " ms"
3915 }
3916 function Bi() {
3917 Ai = Date.now(),
3918 r.send("pp")
3919 }
3920 function Ci(e) {
3921 if (!(e < 0)) {
3922 var t = Math.floor(e / 60)
3923 , n = e % 60;
3924 n = ("0" + n).slice(-2),
3925 Ee.innerText = "Server restarting in " + t + ":" + n,
3926 Ee.hidden = !1
3927 }
3928 }
3929 function Oi(e) {
3930 window.open(e, "_blank")
3931 }
3932 window.requestAnimFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(e) {
3933 window.setTimeout(e, 1e3 / 60)
3934 }
3935 ,
3936 function() {
3937 var e = o.mapScale / 2;
3938 nt.add(0, e, e + 200, 0, o.treeScales[3], 0),
3939 nt.add(1, e, e - 480, 0, o.treeScales[3], 0),
3940 nt.add(2, e + 300, e + 450, 0, o.treeScales[3], 0),
3941 nt.add(3, e - 950, e - 130, 0, o.treeScales[2], 0),
3942 nt.add(4, e - 750, e - 400, 0, o.treeScales[3], 0),
3943 nt.add(5, e - 700, e + 400, 0, o.treeScales[2], 0),
3944 nt.add(6, e + 800, e - 200, 0, o.treeScales[3], 0),
3945 nt.add(7, e - 260, e + 340, 0, o.bushScales[3], 1),
3946 nt.add(8, e + 760, e + 310, 0, o.bushScales[3], 1),
3947 nt.add(9, e - 800, e + 100, 0, o.bushScales[3], 1),
3948 nt.add(10, e - 800, e + 300, 0, l.list[4].scale, l.list[4].id, l.list[10]),
3949 nt.add(11, e + 650, e - 390, 0, l.list[4].scale, l.list[4].id, l.list[10]),
3950 nt.add(12, e - 400, e - 450, 0, o.rockScales[2], 2)
3951 }(),
3952 function e() {
3953 B = Date.now(),
3954 P = B - q,
3955 q = B,
3956 function() {
3957 if (R && (!C || B - C >= 1e3 / o.clientSendRate) && (C = B,
3958 r.send("2", pn())),
3959 An < 120 && (An += .1 * P,
3960 Ge.style.fontSize = Math.min(Math.round(An), 120) + "px"),
3961 R) {
3962 var e = s.getDistance(U, D, R.x, R.y)
3963 , t = s.getDirection(R.x, R.y, U, D)
3964 , n = Math.min(.01 * e * P, e);
3965 e > .05 ? (U += n * Math.cos(t),
3966 D += n * Math.sin(t)) : (U = R.x,
3967 D = R.y)
3968 } else
3969 U = o.mapScale / 2,
3970 D = o.mapScale / 2;
3971 for (var i = B - 1e3 / o.serverUpdateRate, a = 0; a < W.length + Y.length; ++a)
3972 if ((_ = W[a] || Y[a - W.length]) && _.visible)
3973 if (_.forcePos)
3974 _.x = _.x2,
3975 _.y = _.y2,
3976 _.dir = _.d2;
3977 else {
3978 var c = _.t2 - _.t1
3979 , l = (i - _.t1) / c;
3980 _.dt += P;
3981 var h = Math.min(1.7, _.dt / 170)
3982 , u = _.x2 - _.x1;
3983 _.x = _.x1 + u * h,
3984 u = _.y2 - _.y1,
3985 _.y = _.y1 + u * h,
3986 _.dir = Math.lerpAngle(_.d2, _.d1, Math.min(1.2, l))
3987 }
3988 var f = U - oe / 2
3989 , d = D - ce / 2;
3990 o.snowBiomeTop - d <= 0 && o.mapScale - o.snowBiomeTop - d >= ce ? (be.fillStyle = "#b6db66",
3991 be.fillRect(0, 0, oe, ce)) : o.mapScale - o.snowBiomeTop - d <= 0 ? (be.fillStyle = "#dbc666",
3992 be.fillRect(0, 0, oe, ce)) : o.snowBiomeTop - d >= ce ? (be.fillStyle = "#fff",
3993 be.fillRect(0, 0, oe, ce)) : o.snowBiomeTop - d >= 0 ? (be.fillStyle = "#fff",
3994 be.fillRect(0, 0, oe, o.snowBiomeTop - d),
3995 be.fillStyle = "#b6db66",
3996 be.fillRect(0, o.snowBiomeTop - d, oe, ce - (o.snowBiomeTop - d))) : (be.fillStyle = "#b6db66",
3997 be.fillRect(0, 0, oe, o.mapScale - o.snowBiomeTop - d),
3998 be.fillStyle = "#dbc666",
3999 be.fillRect(0, o.mapScale - o.snowBiomeTop - d, oe, ce - (o.mapScale - o.snowBiomeTop - d))),
4000 In || ((ee += te * o.waveSpeed * P) >= o.waveMax ? (ee = o.waveMax,
4001 te = -1) : ee <= 1 && (ee = te = 1),
4002 be.globalAlpha = 1,
4003 be.fillStyle = "#dbc666",
4004 qn(f, d, be, o.riverPadding),
4005 be.fillStyle = "#91b2db",
4006 qn(f, d, be, 250 * (ee - 1))),
4007 be.lineWidth = 4,
4008 be.strokeStyle = "#000",
4009 be.globalAlpha = .06,
4010 be.beginPath();
4011 for (var p = -U; p < oe; p += ce / 18)
4012 p > 0 && (be.moveTo(p, 0),
4013 be.lineTo(p, ce));
4014 for (var g = -D; g < ce; g += ce / 18)
4015 p > 0 && (be.moveTo(0, g),
4016 be.lineTo(oe, g));
4017 for (be.stroke(),
4018 be.globalAlpha = 1,
4019 be.strokeStyle = it,
4020 Yn(-1, f, d),
4021 be.globalAlpha = 1,
4022 be.lineWidth = 3,
4023 zn(0, f, d),
4024 Xn(f, d, 0),
4025 be.globalAlpha = 1,
4026 a = 0; a < Y.length; ++a)
4027 (_ = Y[a]).active && _.visible && (_.animate(P),
4028 be.save(),
4029 be.translate(_.x - f, _.y - d),
4030 be.rotate(_.dir + _.dirPlus - Math.PI / 2),
4031 yi(_, be),
4032 be.restore());
4033 if (Yn(0, f, d),
4034 zn(1, f, d),
4035 Yn(1, f, d),
4036 Xn(f, d, 1),
4037 Yn(2, f, d),
4038 Yn(3, f, d),
4039 be.fillStyle = "#000",
4040 be.globalAlpha = .09,
4041 f <= 0 && be.fillRect(0, 0, -f, ce),
4042 o.mapScale - f <= oe) {
4043 var y = Math.max(0, -d);
4044 be.fillRect(o.mapScale - f, y, oe - (o.mapScale - f), ce - y)
4045 }
4046 if (d <= 0 && be.fillRect(-f, 0, oe + f, -d),
4047 o.mapScale - d <= ce) {
4048 var k = Math.max(0, -f)
4049 , v = 0;
4050 o.mapScale - f <= oe && (v = oe - (o.mapScale - f)),
4051 be.fillRect(k, o.mapScale - d, oe - k - v, ce - (o.mapScale - d))
4052 }
4053 for (be.globalAlpha = 1,
4054 be.fillStyle = "rgba(0, 0, 70, 0.35)",
4055 be.fillRect(0, 0, oe, ce),
4056 be.strokeStyle = rt,
4057 a = 0; a < W.length + Y.length; ++a)
4058 if ((_ = W[a] || Y[a - W.length]).visible && (10 != _.skinIndex || _ == R || _.team && _.team == R.team)) {
4059 var w = (_.team ? "[" + _.team + "] " : "") + (_.name || "");
4060 if ("" != w) {
4061 if (be.font = (_.nameScale || 30) + "px Hammersmith One",
4062 be.fillStyle = "red",
4063 be.textBaseline = "middle",
4064 be.textAlign = "center",
4065 be.lineWidth = _.nameScale ? 11 : 8,
4066 be.lineJoin = "round",
4067 be.strokeText(w, _.x - f, _.y - d - _.scale - o.nameY),
4068 be.fillText(w, _.x - f, _.y - d - _.scale - o.nameY),
4069 _.isLeader && Rn.crown.isLoaded) {
4070 var b = o.crownIconScale;
4071 k = _.x - f - b / 2 - be.measureText(w).width / 2 - o.crownPad,
4072 be.drawImage(Rn.crown, k, _.y - d - _.scale - o.nameY - b / 2 - 5, b, b)
4073 }
4074 1 == _.iconIndex && Rn.skull.isLoaded && (b = o.crownIconScale,
4075 k = _.x - f - b / 2 + be.measureText(w).width / 2 + o.crownPad,
4076 be.drawImage(Rn.skull, k, _.y - d - _.scale - o.nameY - b / 2 - 5, b, b))
4077 }
4078 _.health > 0 && (o.healthBarWidth,
4079 be.fillStyle = rt,
4080 be.roundRect(_.x - f - o.healthBarWidth - o.healthBarPad, _.y - d + _.scale + o.nameY, 2 * o.healthBarWidth + 2 * o.healthBarPad, 17, 8),
4081 be.fill(),
4082 be.fillStyle = _ == R || _.team && _.team == R.team ? "#ffff00" : "red",
4083 be.roundRect(_.x - f - o.healthBarWidth, _.y - d + _.scale + o.nameY + o.healthBarPad, 2 * o.healthBarWidth * (_.health / _.maxHealth), 17 - 2 * o.healthBarPad, 7),
4084 be.fill())
4085 }
4086 for (m.update(P, be, f, d),
4087 a = 0; a < W.length; ++a)
4088 if ((_ = W[a]).visible && _.chatCountdown > 0) {
4089 _.chatCountdown -= P,
4090 _.chatCountdown <= 0 && (_.chatCountdown = 0),
4091 be.font = "32px Hammersmith One";
4092 var x = be.measureText(_.chatMessage);
4093 be.textBaseline = "middle",
4094 be.textAlign = "center",
4095 k = _.x - f,
4096 y = _.y - _.scale - d - 90;
4097 var S = x.width + 17;
4098 be.fillStyle = "rgba(0,0,0,0.2)",
4099 be.roundRect(k - S / 2, y - 23.5, S, 47, 6),
4100 be.fill(),
4101 be.fillStyle = "yellow",
4102 be.fillText(_.chatMessage, k, y)
4103 }
4104 !function(e) {
4105 if (R && R.alive) {
4106 Ke.clearRect(0, 0, Ne.width, Ne.height),
4107 Ke.strokeStyle = "#fff",
4108 Ke.lineWidth = 4;
4109 for (var t = 0; t < qt.length; ++t)
4110 (Vt = qt[t]).update(Ke, e);
4111 if (Ke.globalAlpha = 1,
4112 Ke.fillStyle = "#fff",
4113 si(R.x / o.mapScale * Ne.width, R.y / o.mapScale * Ne.height, 7, Ke, !0),
4114 Ke.fillStyle = "rgba(255,255,255,0.35)",
4115 R.team && Et)
4116 for (t = 0; t < Et.length; )
4117 si(Et[t] / o.mapScale * Ne.width, Et[t + 1] / o.mapScale * Ne.height, 7, Ke, !0),
4118 t += 2;
4119 It && (Ke.fillStyle = "#fc5553",
4120 Ke.font = "34px Hammersmith One",
4121 Ke.textBaseline = "middle",
4122 Ke.textAlign = "center",
4123 Ke.fillText("x", It.x / o.mapScale * Ne.width, It.y / o.mapScale * Ne.height)),
4124 Mt && (Ke.fillStyle = "#fff",
4125 Ke.font = "34px Hammersmith One",
4126 Ke.textBaseline = "middle",
4127 Ke.textAlign = "center",
4128 Ke.fillText("x", Mt.x / o.mapScale * Ne.width, Mt.y / o.mapScale * Ne.height))
4129 }
4130 }(P),
4131 -1 !== re.id && Fn(re.startX, re.startY, re.currentX, re.currentY),
4132 -1 !== se.id && Fn(se.startX, se.startY, se.currentX, se.currentY)
4133 }(),
4134 requestAnimFrame(e)
4135 }(),
4136 window.openLink = Oi,
4137 window.aJoinReq = Dt,
4138 window.follmoo = function() {
4139 H || (H = !0,
4140 I("moofoll", 1))
4141 }
4142 ,
4143 window.kickFromClan = Lt,
4144 window.sendJoin = Ft,
4145 window.leaveAlliance = Ht,
4146 window.createAlliance = zt,
4147 window.storeBuy = Kt,
4148 window.storeEquip = Jt,
4149 window.showItemInfo = Tt,
4150 window.selectSkinColor = function(e) {
4151 ae = e,
4152 en()
4153 }
4154 ,
4155 window.changeStoreIndex = function(e) {
4156 Xt != e && (Xt = e,
4157 Gt())
4158 }
4159 ,
4160 window.config = o
4161}
4162, function(e, t) {
4163 !function(e, t, n) {
4164 function i(e, t) {
4165 return typeof e === t
4166 }
4167 var r = []
4168 , s = []
4169 , a = {
4170 _version: "3.5.0",
4171 _config: {
4172 classPrefix: "",
4173 enableClasses: !0,
4174 enableJSClass: !0,
4175 usePrefixes: !0
4176 },
4177 _q: [],
4178 on: function(e, t) {
4179 var n = this;
4180 setTimeout((function() {
4181 t(n[e])
4182 }
4183 ), 0)
4184 },
4185 addTest: function(e, t, n) {
4186 s.push({
4187 name: e,
4188 fn: t,
4189 options: n
4190 })
4191 },
4192 addAsyncTest: function(e) {
4193 s.push({
4194 name: null,
4195 fn: e
4196 })
4197 }
4198 }
4199 , o = function() {};
4200 o.prototype = a,
4201 o = new o;
4202 var c = t.documentElement
4203 , l = "svg" === c.nodeName.toLowerCase();
4204 o.addTest("passiveeventlisteners", (function() {
4205 var t = !1;
4206 try {
4207 var n = Object.defineProperty({}, "passive", {
4208 get: function() {
4209 t = !0
4210 }
4211 });
4212 e.addEventListener("test", null, n)
4213 } catch (e) {}
4214 return t
4215 }
4216 )),
4217 function() {
4218 var e, t, n, a, c, l;
4219 for (var h in s)
4220 if (s.hasOwnProperty(h)) {
4221 if (e = [],
4222 (t = s[h]).name && (e.push(t.name.toLowerCase()),
4223 t.options && t.options.aliases && t.options.aliases.length))
4224 for (n = 0; n < t.options.aliases.length; n++)
4225 e.push(t.options.aliases[n].toLowerCase());
4226 for (a = i(t.fn, "function") ? t.fn() : t.fn,
4227 c = 0; c < e.length; c++)
4228 1 === (l = e[c].split(".")).length ? o[l[0]] = a : (!o[l[0]] || o[l[0]]instanceof Boolean || (o[l[0]] = new Boolean(o[l[0]])),
4229 o[l[0]][l[1]] = a),
4230 r.push((a ? "" : "no-") + l.join("-"))
4231 }
4232 }(),
4233 function(e) {
4234 var t = c.className
4235 , n = o._config.classPrefix || "";
4236 if (l && (t = t.baseVal),
4237 o._config.enableJSClass) {
4238 var i = new RegExp("(^|\\s)" + n + "no-js(\\s|$)");
4239 t = t.replace(i, "$1" + n + "js$2")
4240 }
4241 o._config.enableClasses && (t += " " + n + e.join(" " + n),
4242 l ? c.className.baseVal = t : c.className = t)
4243 }(r),
4244 delete a.addTest,
4245 delete a.addAsyncTest;
4246 for (var h = 0; h < o._q.length; h++)
4247 o._q[h]();
4248 e.Modernizr = o
4249 }(window, document)
4250}
4251, function(e, t, n) {
4252 var i = n(24);
4253 n(19),
4254 e.exports = {
4255 socket: null,
4256 connected: !1,
4257 socketId: -1,
4258 connect: function(e, t, n) {
4259 if (!this.socket) {
4260 var r = this;
4261 try {
4262 var s = !1
4263 , a = e;
4264 this.socket = new WebSocket(a),
4265 this.socket.binaryType = "arraybuffer",
4266 this.socket.onmessage = function(e) {
4267 var t = new Uint8Array(e.data)
4268 , s = i.decode(t)
4269 , a = s[0];
4270 t = s[1],
4271 "io-init" == a ? r.socketId = t[0] : n[a].apply(void 0, t)
4272 }
4273 ,
4274 this.socket.onopen = function() {
4275 r.connected = !0,
4276 t()
4277 }
4278 ,
4279 this.socket.onclose = function(e) {
4280 r.connected = !1,
4281 4001 == e.code ? t("Invalid Connection") : s || t("disconnected")
4282 }
4283 ,
4284 this.socket.onerror = function(e) {
4285 this.socket && this.socket.readyState != WebSocket.OPEN && (s = !0,
4286 console.error("Socket error", arguments),
4287 t("Socket error"))
4288 }
4289 } catch (e) {
4290 console.warn("Socket connection error:", e),
4291 t(e)
4292 }
4293 }
4294 },
4295 send: function(e) {
4296 var t = Array.prototype.slice.call(arguments, 1)
4297 , n = i.encode([e, t]);
4298 this.socket.send(n)
4299 },
4300 socketReady: function() {
4301 return this.socket && this.connected
4302 },
4303 close: function() {
4304 this.socket && this.socket.close()
4305 }
4306 }
4307}
4308, function(e, t, n) {
4309 t.encode = n(9).encode,
4310 t.decode = n(15).decode,
4311 t.Encoder = n(37).Encoder,
4312 t.Decoder = n(38).Decoder,
4313 t.createCodec = n(39).createCodec,
4314 t.codec = n(40).codec
4315}
4316, function(e, t, n) {
4317 (function(t) {
4318 function n(e) {
4319 return e && e.isBuffer && e
4320 }
4321 e.exports = n(void 0 !== t && t) || n(this.Buffer) || n("undefined" != typeof window && window.Buffer) || this.Buffer
4322 }
4323 ).call(this, n(11).Buffer)
4324}
4325, function(e, t, n) {
4326 "use strict";
4327 t.byteLength = function(e) {
4328 var t = l(e)
4329 , n = t[0]
4330 , i = t[1];
4331 return 3 * (n + i) / 4 - i
4332 }
4333 ,
4334 t.toByteArray = function(e) {
4335 var t, n, i = l(e), a = i[0], o = i[1], c = new s(function(e, t, n) {
4336 return 3 * (t + n) / 4 - n
4337 }(0, a, o)), h = 0, u = o > 0 ? a - 4 : a;
4338 for (n = 0; n < u; n += 4)
4339 t = r[e.charCodeAt(n)] << 18 | r[e.charCodeAt(n + 1)] << 12 | r[e.charCodeAt(n + 2)] << 6 | r[e.charCodeAt(n + 3)],
4340 c[h++] = t >> 16 & 255,
4341 c[h++] = t >> 8 & 255,
4342 c[h++] = 255 & t;
4343 return 2 === o && (t = r[e.charCodeAt(n)] << 2 | r[e.charCodeAt(n + 1)] >> 4,
4344 c[h++] = 255 & t),
4345 1 === o && (t = r[e.charCodeAt(n)] << 10 | r[e.charCodeAt(n + 1)] << 4 | r[e.charCodeAt(n + 2)] >> 2,
4346 c[h++] = t >> 8 & 255,
4347 c[h++] = 255 & t),
4348 c
4349 }
4350 ,
4351 t.fromByteArray = function(e) {
4352 for (var t, n = e.length, r = n % 3, s = [], a = 0, o = n - r; a < o; a += 16383)
4353 s.push(u(e, a, a + 16383 > o ? o : a + 16383));
4354 return 1 === r ? (t = e[n - 1],
4355 s.push(i[t >> 2] + i[t << 4 & 63] + "==")) : 2 === r && (t = (e[n - 2] << 8) + e[n - 1],
4356 s.push(i[t >> 10] + i[t >> 4 & 63] + i[t << 2 & 63] + "=")),
4357 s.join("")
4358 }
4359 ;
4360 for (var i = [], r = [], s = "undefined" != typeof Uint8Array ? Uint8Array : Array, a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", o = 0, c = a.length; o < c; ++o)
4361 i[o] = a[o],
4362 r[a.charCodeAt(o)] = o;
4363 function l(e) {
4364 var t = e.length;
4365 if (t % 4 > 0)
4366 throw new Error("Invalid string. Length must be a multiple of 4");
4367 var n = e.indexOf("=");
4368 return -1 === n && (n = t),
4369 [n, n === t ? 0 : 4 - n % 4]
4370 }
4371 function h(e) {
4372 return i[e >> 18 & 63] + i[e >> 12 & 63] + i[e >> 6 & 63] + i[63 & e]
4373 }
4374 function u(e, t, n) {
4375 for (var i, r = [], s = t; s < n; s += 3)
4376 i = (e[s] << 16 & 16711680) + (e[s + 1] << 8 & 65280) + (255 & e[s + 2]),
4377 r.push(h(i));
4378 return r.join("")
4379 }
4380 r["-".charCodeAt(0)] = 62,
4381 r["_".charCodeAt(0)] = 63
4382}
4383, function(e, t) {
4384 var n = {}.toString;
4385 e.exports = Array.isArray || function(e) {
4386 return "[object Array]" == n.call(e)
4387 }
4388}
4389, function(e, t, n) {
4390 var i = n(0);
4391 function r(e) {
4392 return new Array(e)
4393 }
4394 (t = e.exports = r(0)).alloc = r,
4395 t.concat = i.concat,
4396 t.from = function(e) {
4397 if (!i.isBuffer(e) && i.isView(e))
4398 e = i.Uint8Array.from(e);
4399 else if (i.isArrayBuffer(e))
4400 e = new Uint8Array(e);
4401 else {
4402 if ("string" == typeof e)
4403 return i.from.call(t, e);
4404 if ("number" == typeof e)
4405 throw new TypeError('"value" argument must not be a number')
4406 }
4407 return Array.prototype.slice.call(e)
4408 }
4409}
4410, function(e, t, n) {
4411 var i = n(0)
4412 , r = i.global;
4413 function s(e) {
4414 return new r(e)
4415 }
4416 (t = e.exports = i.hasBuffer ? s(0) : []).alloc = i.hasBuffer && r.alloc || s,
4417 t.concat = i.concat,
4418 t.from = function(e) {
4419 if (!i.isBuffer(e) && i.isView(e))
4420 e = i.Uint8Array.from(e);
4421 else if (i.isArrayBuffer(e))
4422 e = new Uint8Array(e);
4423 else {
4424 if ("string" == typeof e)
4425 return i.from.call(t, e);
4426 if ("number" == typeof e)
4427 throw new TypeError('"value" argument must not be a number')
4428 }
4429 return r.from && 1 !== r.from.length ? r.from(e) : new r(e)
4430 }
4431}
4432, function(e, t, n) {
4433 var i = n(0);
4434 function r(e) {
4435 return new Uint8Array(e)
4436 }
4437 (t = e.exports = i.hasArrayBuffer ? r(0) : []).alloc = r,
4438 t.concat = i.concat,
4439 t.from = function(e) {
4440 if (i.isView(e)) {
4441 var n = e.byteOffset
4442 , r = e.byteLength;
4443 (e = e.buffer).byteLength !== r && (e.slice ? e = e.slice(n, n + r) : (e = new Uint8Array(e)).byteLength !== r && (e = Array.prototype.slice.call(e, n, n + r)))
4444 } else {
4445 if ("string" == typeof e)
4446 return i.from.call(t, e);
4447 if ("number" == typeof e)
4448 throw new TypeError('"value" argument must not be a number')
4449 }
4450 return new Uint8Array(e)
4451 }
4452}
4453, function(e, t) {
4454 t.copy = function(e, t, n, i) {
4455 var r;
4456 n || (n = 0),
4457 i || 0 === i || (i = this.length),
4458 t || (t = 0);
4459 var s = i - n;
4460 if (e === this && n < t && t < i)
4461 for (r = s - 1; r >= 0; r--)
4462 e[r + t] = this[r + n];
4463 else
4464 for (r = 0; r < s; r++)
4465 e[r + t] = this[r + n];
4466 return s
4467 }
4468 ,
4469 t.toString = function(e, t, n) {
4470 var i = 0 | t;
4471 n || (n = this.length);
4472 for (var r = "", s = 0; i < n; )
4473 (s = this[i++]) < 128 ? r += String.fromCharCode(s) : (192 == (224 & s) ? s = (31 & s) << 6 | 63 & this[i++] : 224 == (240 & s) ? s = (15 & s) << 12 | (63 & this[i++]) << 6 | 63 & this[i++] : 240 == (248 & s) && (s = (7 & s) << 18 | (63 & this[i++]) << 12 | (63 & this[i++]) << 6 | 63 & this[i++]),
4474 s >= 65536 ? (s -= 65536,
4475 r += String.fromCharCode(55296 + (s >>> 10), 56320 + (1023 & s))) : r += String.fromCharCode(s));
4476 return r
4477 }
4478 ,
4479 t.write = function(e, t) {
4480 for (var n = t || (t |= 0), i = e.length, r = 0, s = 0; s < i; )
4481 (r = e.charCodeAt(s++)) < 128 ? this[n++] = r : r < 2048 ? (this[n++] = 192 | r >>> 6,
4482 this[n++] = 128 | 63 & r) : r < 55296 || r > 57343 ? (this[n++] = 224 | r >>> 12,
4483 this[n++] = 128 | r >>> 6 & 63,
4484 this[n++] = 128 | 63 & r) : (r = 65536 + (r - 55296 << 10 | e.charCodeAt(s++) - 56320),
4485 this[n++] = 240 | r >>> 18,
4486 this[n++] = 128 | r >>> 12 & 63,
4487 this[n++] = 128 | r >>> 6 & 63,
4488 this[n++] = 128 | 63 & r);
4489 return n - t
4490 }
4491}
4492, function(e, t, n) {
4493 t.setExtPackers = function(e) {
4494 e.addExtPacker(14, Error, [u, c]),
4495 e.addExtPacker(1, EvalError, [u, c]),
4496 e.addExtPacker(2, RangeError, [u, c]),
4497 e.addExtPacker(3, ReferenceError, [u, c]),
4498 e.addExtPacker(4, SyntaxError, [u, c]),
4499 e.addExtPacker(5, TypeError, [u, c]),
4500 e.addExtPacker(6, URIError, [u, c]),
4501 e.addExtPacker(10, RegExp, [h, c]),
4502 e.addExtPacker(11, Boolean, [l, c]),
4503 e.addExtPacker(12, String, [l, c]),
4504 e.addExtPacker(13, Date, [Number, c]),
4505 e.addExtPacker(15, Number, [l, c]),
4506 "undefined" != typeof Uint8Array && (e.addExtPacker(17, Int8Array, a),
4507 e.addExtPacker(18, Uint8Array, a),
4508 e.addExtPacker(19, Int16Array, a),
4509 e.addExtPacker(20, Uint16Array, a),
4510 e.addExtPacker(21, Int32Array, a),
4511 e.addExtPacker(22, Uint32Array, a),
4512 e.addExtPacker(23, Float32Array, a),
4513 "undefined" != typeof Float64Array && e.addExtPacker(24, Float64Array, a),
4514 "undefined" != typeof Uint8ClampedArray && e.addExtPacker(25, Uint8ClampedArray, a),
4515 e.addExtPacker(26, ArrayBuffer, a),
4516 e.addExtPacker(29, DataView, a)),
4517 r.hasBuffer && e.addExtPacker(27, s, r.from)
4518 }
4519 ;
4520 var i, r = n(0), s = r.global, a = r.Uint8Array.from, o = {
4521 name: 1,
4522 message: 1,
4523 stack: 1,
4524 columnNumber: 1,
4525 fileName: 1,
4526 lineNumber: 1
4527 };
4528 function c(e) {
4529 return i || (i = n(9).encode),
4530 i(e)
4531 }
4532 function l(e) {
4533 return e.valueOf()
4534 }
4535 function h(e) {
4536 (e = RegExp.prototype.toString.call(e).split("/")).shift();
4537 var t = [e.pop()];
4538 return t.unshift(e.join("/")),
4539 t
4540 }
4541 function u(e) {
4542 var t = {};
4543 for (var n in o)
4544 t[n] = e[n];
4545 return t
4546 }
4547}
4548, function(e, t, n) {
4549 var i = n(5)
4550 , r = n(7)
4551 , s = r.Uint64BE
4552 , a = r.Int64BE
4553 , o = n(0)
4554 , c = n(6)
4555 , l = n(34)
4556 , h = n(13).uint8
4557 , u = n(3).ExtBuffer
4558 , f = "undefined" != typeof Uint8Array
4559 , d = "undefined" != typeof Map
4560 , p = [];
4561 p[1] = 212,
4562 p[2] = 213,
4563 p[4] = 214,
4564 p[8] = 215,
4565 p[16] = 216,
4566 t.getWriteType = function(e) {
4567 var t = l.getWriteToken(e)
4568 , n = e && e.useraw
4569 , r = f && e && e.binarraybuffer
4570 , g = r ? o.isArrayBuffer : o.isBuffer
4571 , m = r ? function(e, t) {
4572 w(e, new Uint8Array(t))
4573 }
4574 : w
4575 , y = d && e && e.usemap ? function(e, n) {
4576 if (!(n instanceof Map))
4577 return b(e, n);
4578 var i = n.size;
4579 t[i < 16 ? 128 + i : i <= 65535 ? 222 : 223](e, i);
4580 var r = e.codec.encode;
4581 n.forEach((function(t, n, i) {
4582 r(e, n),
4583 r(e, t)
4584 }
4585 ))
4586 }
4587 : b;
4588 return {
4589 boolean: function(e, n) {
4590 t[n ? 195 : 194](e, n)
4591 },
4592 function: v,
4593 number: function(e, n) {
4594 var i = 0 | n;
4595 n === i ? t[-32 <= i && i <= 127 ? 255 & i : 0 <= i ? i <= 255 ? 204 : i <= 65535 ? 205 : 206 : -128 <= i ? 208 : -32768 <= i ? 209 : 210](e, i) : t[203](e, n)
4596 },
4597 object: n ? function(e, n) {
4598 if (g(n))
4599 return function(e, n) {
4600 var i = n.length;
4601 t[i < 32 ? 160 + i : i <= 65535 ? 218 : 219](e, i),
4602 e.send(n)
4603 }(e, n);
4604 k(e, n)
4605 }
4606 : k,
4607 string: function(e) {
4608 return function(n, i) {
4609 var r = i.length
4610 , s = 5 + 3 * r;
4611 n.offset = n.reserve(s);
4612 var a = n.buffer
4613 , o = e(r)
4614 , l = n.offset + o;
4615 r = c.write.call(a, i, l);
4616 var h = e(r);
4617 if (o !== h) {
4618 var u = l + h - o
4619 , f = l + r;
4620 c.copy.call(a, a, u, l, f)
4621 }
4622 t[1 === h ? 160 + r : h <= 3 ? 215 + h : 219](n, r),
4623 n.offset += r
4624 }
4625 }(n ? function(e) {
4626 return e < 32 ? 1 : e <= 65535 ? 3 : 5
4627 }
4628 : function(e) {
4629 return e < 32 ? 1 : e <= 255 ? 2 : e <= 65535 ? 3 : 5
4630 }
4631 ),
4632 symbol: v,
4633 undefined: v
4634 };
4635 function k(e, n) {
4636 if (null === n)
4637 return v(e, n);
4638 if (g(n))
4639 return m(e, n);
4640 if (i(n))
4641 return function(e, n) {
4642 var i = n.length;
4643 t[i < 16 ? 144 + i : i <= 65535 ? 220 : 221](e, i);
4644 for (var r = e.codec.encode, s = 0; s < i; s++)
4645 r(e, n[s])
4646 }(e, n);
4647 if (s.isUint64BE(n))
4648 return function(e, n) {
4649 t[207](e, n.toArray())
4650 }(e, n);
4651 if (a.isInt64BE(n))
4652 return function(e, n) {
4653 t[211](e, n.toArray())
4654 }(e, n);
4655 var r = e.codec.getExtPacker(n);
4656 if (r && (n = r(n)),
4657 n instanceof u)
4658 return function(e, n) {
4659 var i = n.buffer
4660 , r = i.length
4661 , s = p[r] || (r < 255 ? 199 : r <= 65535 ? 200 : 201);
4662 t[s](e, r),
4663 h[n.type](e),
4664 e.send(i)
4665 }(e, n);
4666 y(e, n)
4667 }
4668 function v(e, n) {
4669 t[192](e, n)
4670 }
4671 function w(e, n) {
4672 var i = n.length;
4673 t[i < 255 ? 196 : i <= 65535 ? 197 : 198](e, i),
4674 e.send(n)
4675 }
4676 function b(e, n) {
4677 var i = Object.keys(n)
4678 , r = i.length;
4679 t[r < 16 ? 128 + r : r <= 65535 ? 222 : 223](e, r);
4680 var s = e.codec.encode;
4681 i.forEach((function(t) {
4682 s(e, t),
4683 s(e, n[t])
4684 }
4685 ))
4686 }
4687 }
4688}
4689, function(e, t, n) {
4690 var i = n(4)
4691 , r = n(7)
4692 , s = r.Uint64BE
4693 , a = r.Int64BE
4694 , o = n(13).uint8
4695 , c = n(0)
4696 , l = c.global
4697 , h = c.hasBuffer && "TYPED_ARRAY_SUPPORT"in l && !l.TYPED_ARRAY_SUPPORT
4698 , u = c.hasBuffer && l.prototype || {};
4699 function f() {
4700 var e = o.slice();
4701 return e[196] = d(196),
4702 e[197] = p(197),
4703 e[198] = g(198),
4704 e[199] = d(199),
4705 e[200] = p(200),
4706 e[201] = g(201),
4707 e[202] = m(202, 4, u.writeFloatBE || v, !0),
4708 e[203] = m(203, 8, u.writeDoubleBE || w, !0),
4709 e[204] = d(204),
4710 e[205] = p(205),
4711 e[206] = g(206),
4712 e[207] = m(207, 8, y),
4713 e[208] = d(208),
4714 e[209] = p(209),
4715 e[210] = g(210),
4716 e[211] = m(211, 8, k),
4717 e[217] = d(217),
4718 e[218] = p(218),
4719 e[219] = g(219),
4720 e[220] = p(220),
4721 e[221] = g(221),
4722 e[222] = p(222),
4723 e[223] = g(223),
4724 e
4725 }
4726 function d(e) {
4727 return function(t, n) {
4728 var i = t.reserve(2)
4729 , r = t.buffer;
4730 r[i++] = e,
4731 r[i] = n
4732 }
4733 }
4734 function p(e) {
4735 return function(t, n) {
4736 var i = t.reserve(3)
4737 , r = t.buffer;
4738 r[i++] = e,
4739 r[i++] = n >>> 8,
4740 r[i] = n
4741 }
4742 }
4743 function g(e) {
4744 return function(t, n) {
4745 var i = t.reserve(5)
4746 , r = t.buffer;
4747 r[i++] = e,
4748 r[i++] = n >>> 24,
4749 r[i++] = n >>> 16,
4750 r[i++] = n >>> 8,
4751 r[i] = n
4752 }
4753 }
4754 function m(e, t, n, i) {
4755 return function(r, s) {
4756 var a = r.reserve(t + 1);
4757 r.buffer[a++] = e,
4758 n.call(r.buffer, s, a, i)
4759 }
4760 }
4761 function y(e, t) {
4762 new s(this,t,e)
4763 }
4764 function k(e, t) {
4765 new a(this,t,e)
4766 }
4767 function v(e, t) {
4768 i.write(this, e, t, !1, 23, 4)
4769 }
4770 function w(e, t) {
4771 i.write(this, e, t, !1, 52, 8)
4772 }
4773 t.getWriteToken = function(e) {
4774 return e && e.uint8array ? function() {
4775 var e = f();
4776 return e[202] = m(202, 4, v),
4777 e[203] = m(203, 8, w),
4778 e
4779 }() : h || c.hasBuffer && e && e.safe ? function() {
4780 var e = o.slice();
4781 return e[196] = m(196, 1, l.prototype.writeUInt8),
4782 e[197] = m(197, 2, l.prototype.writeUInt16BE),
4783 e[198] = m(198, 4, l.prototype.writeUInt32BE),
4784 e[199] = m(199, 1, l.prototype.writeUInt8),
4785 e[200] = m(200, 2, l.prototype.writeUInt16BE),
4786 e[201] = m(201, 4, l.prototype.writeUInt32BE),
4787 e[202] = m(202, 4, l.prototype.writeFloatBE),
4788 e[203] = m(203, 8, l.prototype.writeDoubleBE),
4789 e[204] = m(204, 1, l.prototype.writeUInt8),
4790 e[205] = m(205, 2, l.prototype.writeUInt16BE),
4791 e[206] = m(206, 4, l.prototype.writeUInt32BE),
4792 e[207] = m(207, 8, y),
4793 e[208] = m(208, 1, l.prototype.writeInt8),
4794 e[209] = m(209, 2, l.prototype.writeInt16BE),
4795 e[210] = m(210, 4, l.prototype.writeInt32BE),
4796 e[211] = m(211, 8, k),
4797 e[217] = m(217, 1, l.prototype.writeUInt8),
4798 e[218] = m(218, 2, l.prototype.writeUInt16BE),
4799 e[219] = m(219, 4, l.prototype.writeUInt32BE),
4800 e[220] = m(220, 2, l.prototype.writeUInt16BE),
4801 e[221] = m(221, 4, l.prototype.writeUInt32BE),
4802 e[222] = m(222, 2, l.prototype.writeUInt16BE),
4803 e[223] = m(223, 4, l.prototype.writeUInt32BE),
4804 e
4805 }() : f()
4806 }
4807}
4808, function(e, t, n) {
4809 t.setExtUnpackers = function(e) {
4810 e.addExtUnpacker(14, [o, l(Error)]),
4811 e.addExtUnpacker(1, [o, l(EvalError)]),
4812 e.addExtUnpacker(2, [o, l(RangeError)]),
4813 e.addExtUnpacker(3, [o, l(ReferenceError)]),
4814 e.addExtUnpacker(4, [o, l(SyntaxError)]),
4815 e.addExtUnpacker(5, [o, l(TypeError)]),
4816 e.addExtUnpacker(6, [o, l(URIError)]),
4817 e.addExtUnpacker(10, [o, c]),
4818 e.addExtUnpacker(11, [o, h(Boolean)]),
4819 e.addExtUnpacker(12, [o, h(String)]),
4820 e.addExtUnpacker(13, [o, h(Date)]),
4821 e.addExtUnpacker(15, [o, h(Number)]),
4822 "undefined" != typeof Uint8Array && (e.addExtUnpacker(17, h(Int8Array)),
4823 e.addExtUnpacker(18, h(Uint8Array)),
4824 e.addExtUnpacker(19, [u, h(Int16Array)]),
4825 e.addExtUnpacker(20, [u, h(Uint16Array)]),
4826 e.addExtUnpacker(21, [u, h(Int32Array)]),
4827 e.addExtUnpacker(22, [u, h(Uint32Array)]),
4828 e.addExtUnpacker(23, [u, h(Float32Array)]),
4829 "undefined" != typeof Float64Array && e.addExtUnpacker(24, [u, h(Float64Array)]),
4830 "undefined" != typeof Uint8ClampedArray && e.addExtUnpacker(25, h(Uint8ClampedArray)),
4831 e.addExtUnpacker(26, u),
4832 e.addExtUnpacker(29, [u, h(DataView)])),
4833 r.hasBuffer && e.addExtUnpacker(27, h(s))
4834 }
4835 ;
4836 var i, r = n(0), s = r.global, a = {
4837 name: 1,
4838 message: 1,
4839 stack: 1,
4840 columnNumber: 1,
4841 fileName: 1,
4842 lineNumber: 1
4843 };
4844 function o(e) {
4845 return i || (i = n(15).decode),
4846 i(e)
4847 }
4848 function c(e) {
4849 return RegExp.apply(null, e)
4850 }
4851 function l(e) {
4852 return function(t) {
4853 var n = new e;
4854 for (var i in a)
4855 n[i] = t[i];
4856 return n
4857 }
4858 }
4859 function h(e) {
4860 return function(t) {
4861 return new e(t)
4862 }
4863 }
4864 function u(e) {
4865 return new Uint8Array(e).buffer
4866 }
4867}
4868, function(e, t, n) {
4869 var i = n(17);
4870 function r(e) {
4871 var t, n = new Array(256);
4872 for (t = 0; t <= 127; t++)
4873 n[t] = s(t);
4874 for (t = 128; t <= 143; t++)
4875 n[t] = o(t - 128, e.map);
4876 for (t = 144; t <= 159; t++)
4877 n[t] = o(t - 144, e.array);
4878 for (t = 160; t <= 191; t++)
4879 n[t] = o(t - 160, e.str);
4880 for (n[192] = s(null),
4881 n[193] = null,
4882 n[194] = s(!1),
4883 n[195] = s(!0),
4884 n[196] = a(e.uint8, e.bin),
4885 n[197] = a(e.uint16, e.bin),
4886 n[198] = a(e.uint32, e.bin),
4887 n[199] = a(e.uint8, e.ext),
4888 n[200] = a(e.uint16, e.ext),
4889 n[201] = a(e.uint32, e.ext),
4890 n[202] = e.float32,
4891 n[203] = e.float64,
4892 n[204] = e.uint8,
4893 n[205] = e.uint16,
4894 n[206] = e.uint32,
4895 n[207] = e.uint64,
4896 n[208] = e.int8,
4897 n[209] = e.int16,
4898 n[210] = e.int32,
4899 n[211] = e.int64,
4900 n[212] = o(1, e.ext),
4901 n[213] = o(2, e.ext),
4902 n[214] = o(4, e.ext),
4903 n[215] = o(8, e.ext),
4904 n[216] = o(16, e.ext),
4905 n[217] = a(e.uint8, e.str),
4906 n[218] = a(e.uint16, e.str),
4907 n[219] = a(e.uint32, e.str),
4908 n[220] = a(e.uint16, e.array),
4909 n[221] = a(e.uint32, e.array),
4910 n[222] = a(e.uint16, e.map),
4911 n[223] = a(e.uint32, e.map),
4912 t = 224; t <= 255; t++)
4913 n[t] = s(t - 256);
4914 return n
4915 }
4916 function s(e) {
4917 return function() {
4918 return e
4919 }
4920 }
4921 function a(e, t) {
4922 return function(n) {
4923 var i = e(n);
4924 return t(n, i)
4925 }
4926 }
4927 function o(e, t) {
4928 return function(n) {
4929 return t(n, e)
4930 }
4931 }
4932 t.getReadToken = function(e) {
4933 var t = i.getReadFormat(e);
4934 return e && e.useraw ? function(e) {
4935 var t, n = r(e).slice();
4936 for (n[217] = n[196],
4937 n[218] = n[197],
4938 n[219] = n[198],
4939 t = 160; t <= 191; t++)
4940 n[t] = o(t - 160, e.bin);
4941 return n
4942 }(t) : r(t)
4943 }
4944}
4945, function(e, t, n) {
4946 t.Encoder = s;
4947 var i = n(18)
4948 , r = n(10).EncodeBuffer;
4949 function s(e) {
4950 if (!(this instanceof s))
4951 return new s(e);
4952 r.call(this, e)
4953 }
4954 s.prototype = new r,
4955 i.mixin(s.prototype),
4956 s.prototype.encode = function(e) {
4957 this.write(e),
4958 this.emit("data", this.read())
4959 }
4960 ,
4961 s.prototype.end = function(e) {
4962 arguments.length && this.encode(e),
4963 this.flush(),
4964 this.emit("end")
4965 }
4966}
4967, function(e, t, n) {
4968 t.Decoder = s;
4969 var i = n(18)
4970 , r = n(16).DecodeBuffer;
4971 function s(e) {
4972 if (!(this instanceof s))
4973 return new s(e);
4974 r.call(this, e)
4975 }
4976 s.prototype = new r,
4977 i.mixin(s.prototype),
4978 s.prototype.decode = function(e) {
4979 arguments.length && this.write(e),
4980 this.flush()
4981 }
4982 ,
4983 s.prototype.push = function(e) {
4984 this.emit("data", e)
4985 }
4986 ,
4987 s.prototype.end = function(e) {
4988 this.decode(e),
4989 this.emit("end")
4990 }
4991}
4992, function(e, t, n) {
4993 n(8),
4994 n(2),
4995 t.createCodec = n(1).createCodec
4996}
4997, function(e, t, n) {
4998 n(8),
4999 n(2),
5000 t.codec = {
5001 preset: n(1).preset
5002 }
5003}
5004, function(e, t) {
5005 var n, i, r = e.exports = {};
5006 function s() {
5007 throw new Error("setTimeout has not been defined")
5008 }
5009 function a() {
5010 throw new Error("clearTimeout has not been defined")
5011 }
5012 function o(e) {
5013 if (n === setTimeout)
5014 return setTimeout(e, 0);
5015 if ((n === s || !n) && setTimeout)
5016 return n = setTimeout,
5017 setTimeout(e, 0);
5018 try {
5019 return n(e, 0)
5020 } catch (t) {
5021 try {
5022 return n.call(null, e, 0)
5023 } catch (t) {
5024 return n.call(this, e, 0)
5025 }
5026 }
5027 }
5028 !function() {
5029 try {
5030 n = "function" == typeof setTimeout ? setTimeout : s
5031 } catch (e) {
5032 n = s
5033 }
5034 try {
5035 i = "function" == typeof clearTimeout ? clearTimeout : a
5036 } catch (e) {
5037 i = a
5038 }
5039 }();
5040 var c, l = [], h = !1, u = -1;
5041 function f() {
5042 h && c && (h = !1,
5043 c.length ? l = c.concat(l) : u = -1,
5044 l.length && d())
5045 }
5046 function d() {
5047 if (!h) {
5048 var e = o(f);
5049 h = !0;
5050 for (var t = l.length; t; ) {
5051 for (c = l,
5052 l = []; ++u < t; )
5053 c && c[u].run();
5054 u = -1,
5055 t = l.length
5056 }
5057 c = null,
5058 h = !1,
5059 function(e) {
5060 if (i === clearTimeout)
5061 return clearTimeout(e);
5062 if ((i === a || !i) && clearTimeout)
5063 return i = clearTimeout,
5064 clearTimeout(e);
5065 try {
5066 i(e)
5067 } catch (t) {
5068 try {
5069 return i.call(null, e)
5070 } catch (t) {
5071 return i.call(this, e)
5072 }
5073 }
5074 }(e)
5075 }
5076 }
5077 function p(e, t) {
5078 this.fun = e,
5079 this.array = t
5080 }
5081 function g() {}
5082 r.nextTick = function(e) {
5083 var t = new Array(arguments.length - 1);
5084 if (arguments.length > 1)
5085 for (var n = 1; n < arguments.length; n++)
5086 t[n - 1] = arguments[n];
5087 l.push(new p(e,t)),
5088 1 !== l.length || h || o(d)
5089 }
5090 ,
5091 p.prototype.run = function() {
5092 this.fun.apply(null, this.array)
5093 }
5094 ,
5095 r.title = "browser",
5096 r.browser = !0,
5097 r.env = {},
5098 r.argv = [],
5099 r.version = "",
5100 r.versions = {},
5101 r.on = g,
5102 r.addListener = g,
5103 r.once = g,
5104 r.off = g,
5105 r.removeListener = g,
5106 r.removeAllListeners = g,
5107 r.emit = g,
5108 r.prependListener = g,
5109 r.prependOnceListener = g,
5110 r.listeners = function(e) {
5111 return []
5112 }
5113 ,
5114 r.binding = function(e) {
5115 throw new Error("process.binding is not supported")
5116 }
5117 ,
5118 r.cwd = function() {
5119 return "/"
5120 }
5121 ,
5122 r.chdir = function(e) {
5123 throw new Error("process.chdir is not supported")
5124 }
5125 ,
5126 r.umask = function() {
5127 return 0
5128 }
5129}
5130, function(e, t) {
5131 var n = Math.abs
5132 , i = (Math.cos,
5133 Math.sin,
5134 Math.pow,
5135 Math.sqrt)
5136 , r = (n = Math.abs,
5137 Math.atan2)
5138 , s = Math.PI;
5139 e.exports.randInt = function(e, t) {
5140 return Math.floor(Math.random() * (t - e + 1)) + e
5141 }
5142 ,
5143 e.exports.randFloat = function(e, t) {
5144 return Math.random() * (t - e + 1) + e
5145 }
5146 ,
5147 e.exports.lerp = function(e, t, n) {
5148 return e + (t - e) * n
5149 }
5150 ,
5151 e.exports.decel = function(e, t) {
5152 return e > 0 ? e = Math.max(0, e - t) : e < 0 && (e = Math.min(0, e + t)),
5153 e
5154 }
5155 ,
5156 e.exports.getDistance = function(e, t, n, r) {
5157 return i((n -= e) * n + (r -= t) * r)
5158 }
5159 ,
5160 e.exports.getDirection = function(e, t, n, i) {
5161 return r(t - i, e - n)
5162 }
5163 ,
5164 e.exports.getAngleDist = function(e, t) {
5165 var i = n(t - e) % (2 * s);
5166 return i > s ? 2 * s - i : i
5167 }
5168 ,
5169 e.exports.isNumber = function(e) {
5170 return "number" == typeof e && !isNaN(e) && isFinite(e)
5171 }
5172 ,
5173 e.exports.isString = function(e) {
5174 return e && "string" == typeof e
5175 }
5176 ,
5177 e.exports.kFormat = function(e) {
5178 return e > 999 ? (e / 1e3).toFixed(1) + "k" : e
5179 }
5180 ,
5181 e.exports.capitalizeFirst = function(e) {
5182 return e.charAt(0).toUpperCase() + e.slice(1)
5183 }
5184 ,
5185 e.exports.fixTo = function(e, t) {
5186 return parseFloat(e.toFixed(t))
5187 }
5188 ,
5189 e.exports.sortByPoints = function(e, t) {
5190 return parseFloat(t.points) - parseFloat(e.points)
5191 }
5192 ,
5193 e.exports.lineInRect = function(e, t, n, i, r, s, a, o) {
5194 var c = r
5195 , l = a;
5196 if (r > a && (c = a,
5197 l = r),
5198 l > n && (l = n),
5199 c < e && (c = e),
5200 c > l)
5201 return !1;
5202 var h = s
5203 , u = o
5204 , f = a - r;
5205 if (Math.abs(f) > 1e-7) {
5206 var d = (o - s) / f
5207 , p = s - d * r;
5208 h = d * c + p,
5209 u = d * l + p
5210 }
5211 if (h > u) {
5212 var g = u;
5213 u = h,
5214 h = g
5215 }
5216 return u > i && (u = i),
5217 h < t && (h = t),
5218 !(h > u)
5219 }
5220 ,
5221 e.exports.containsPoint = function(e, t, n) {
5222 var i = e.getBoundingClientRect()
5223 , r = i.left + window.scrollX
5224 , s = i.top + window.scrollY
5225 , a = i.width
5226 , o = i.height;
5227 return t > r && t < r + a && n > s && n < s + o
5228 }
5229 ,
5230 e.exports.mousifyTouchEvent = function(e) {
5231 var t = e.changedTouches[0];
5232 e.screenX = t.screenX,
5233 e.screenY = t.screenY,
5234 e.clientX = t.clientX,
5235 e.clientY = t.clientY,
5236 e.pageX = t.pageX,
5237 e.pageY = t.pageY
5238 }
5239 ,
5240 e.exports.hookTouchEvents = function(t, n) {
5241 var i = !n
5242 , r = !1;
5243 function s(n) {
5244 e.exports.mousifyTouchEvent(n),
5245 window.setUsingTouch(!0),
5246 i && (n.preventDefault(),
5247 n.stopPropagation()),
5248 r && (t.onclick && t.onclick(n),
5249 t.onmouseout && t.onmouseout(n),
5250 r = !1)
5251 }
5252 t.addEventListener("touchstart", e.exports.checkTrusted((function(n) {
5253 e.exports.mousifyTouchEvent(n),
5254 window.setUsingTouch(!0),
5255 i && (n.preventDefault(),
5256 n.stopPropagation()),
5257 t.onmouseover && t.onmouseover(n),
5258 r = !0
5259 }
5260 )), !1),
5261 t.addEventListener("touchmove", e.exports.checkTrusted((function(n) {
5262 e.exports.mousifyTouchEvent(n),
5263 window.setUsingTouch(!0),
5264 i && (n.preventDefault(),
5265 n.stopPropagation()),
5266 e.exports.containsPoint(t, n.pageX, n.pageY) ? r || (t.onmouseover && t.onmouseover(n),
5267 r = !0) : r && (t.onmouseout && t.onmouseout(n),
5268 r = !1)
5269 }
5270 )), !1),
5271 t.addEventListener("touchend", e.exports.checkTrusted(s), !1),
5272 t.addEventListener("touchcancel", e.exports.checkTrusted(s), !1),
5273 t.addEventListener("touchleave", e.exports.checkTrusted(s), !1)
5274 }
5275 ,
5276 e.exports.removeAllChildren = function(e) {
5277 for (; e.hasChildNodes(); )
5278 e.removeChild(e.lastChild)
5279 }
5280 ,
5281 e.exports.generateElement = function(t) {
5282 var n = document.createElement(t.tag || "div");
5283 function i(e, i) {
5284 t[e] && (n[i] = t[e])
5285 }
5286 for (var r in i("text", "textContent"),
5287 i("html", "innerHTML"),
5288 i("class", "className"),
5289 t) {
5290 switch (r) {
5291 case "tag":
5292 case "text":
5293 case "html":
5294 case "class":
5295 case "style":
5296 case "hookTouch":
5297 case "parent":
5298 case "children":
5299 continue
5300 }
5301 n[r] = t[r]
5302 }
5303 if (n.onclick && (n.onclick = e.exports.checkTrusted(n.onclick)),
5304 n.onmouseover && (n.onmouseover = e.exports.checkTrusted(n.onmouseover)),
5305 n.onmouseout && (n.onmouseout = e.exports.checkTrusted(n.onmouseout)),
5306 t.style && (n.style.cssText = t.style),
5307 t.hookTouch && e.exports.hookTouchEvents(n),
5308 t.parent && t.parent.appendChild(n),
5309 t.children)
5310 for (var s = 0; s < t.children.length; s++)
5311 n.appendChild(t.children[s]);
5312 return n
5313 }
5314 ,
5315 e.exports.eventIsTrusted = function(e) {
5316 return !e || "boolean" != typeof e.isTrusted || e.isTrusted
5317 }
5318 ,
5319 e.exports.checkTrusted = function(t) {
5320 return function(n) {
5321 n && n instanceof Event && e.exports.eventIsTrusted(n) && t(n)
5322 }
5323 }
5324 ,
5325 e.exports.randomString = function(e) {
5326 for (var t = "", n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", i = 0; i < e; i++)
5327 t += n.charAt(Math.floor(Math.random() * n.length));
5328 return t
5329 }
5330 ,
5331 e.exports.countInArray = function(e, t) {
5332 for (var n = 0, i = 0; i < e.length; i++)
5333 e[i] === t && n++;
5334 return n
5335 }
5336}
5337, function(e, t) {
5338 e.exports.AnimText = function() {
5339 this.init = function(e, t, n, i, r, s, a) {
5340 this.x = e,
5341 this.y = t,
5342 this.color = a,
5343 this.scale = n,
5344 this.startScale = this.scale,
5345 this.maxScale = 1.5 * n,
5346 this.scaleSpeed = .7,
5347 this.speed = i,
5348 this.life = r,
5349 this.text = s
5350 }
5351 ,
5352 this.update = function(e) {
5353 this.life && (this.life -= e,
5354 this.y -= this.speed * e,
5355 this.scale += this.scaleSpeed * e,
5356 this.scale >= this.maxScale ? (this.scale = this.maxScale,
5357 this.scaleSpeed *= -1) : this.scale <= this.startScale && (this.scale = this.startScale,
5358 this.scaleSpeed = 0),
5359 this.life <= 0 && (this.life = 0))
5360 }
5361 ,
5362 this.render = function(e, t, n) {
5363 e.fillStyle = this.color,
5364 e.font = this.scale + "px Hammersmith One",
5365 e.fillText(this.text, this.x - t, this.y - n)
5366 }
5367 }
5368 ,
5369 e.exports.TextManager = function() {
5370 this.texts = [],
5371 this.update = function(e, t, n, i) {
5372 t.textBaseline = "middle",
5373 t.textAlign = "center";
5374 for (var r = 0; r < this.texts.length; ++r)
5375 this.texts[r].life && (this.texts[r].update(e),
5376 this.texts[r].render(t, n, i))
5377 }
5378 ,
5379 this.showText = function(t, n, i, r, s, a, o) {
5380 for (var c, l = 0; l < this.texts.length; ++l)
5381 if (!this.texts[l].life) {
5382 c = this.texts[l];
5383 break
5384 }
5385 c || (c = new e.exports.AnimText,
5386 this.texts.push(c)),
5387 c.init(t, n, i, r, s, a, o)
5388 }
5389 }
5390}
5391, function(e, t) {
5392 e.exports = function(e) {
5393 this.sid = e,
5394 this.init = function(e, t, n, i, r, s, a) {
5395 s = s || {},
5396 this.sentTo = {},
5397 this.gridLocations = [],
5398 this.active = !0,
5399 this.doUpdate = s.doUpdate,
5400 this.x = e,
5401 this.y = t,
5402 this.dir = n,
5403 this.xWiggle = 0,
5404 this.yWiggle = 0,
5405 this.scale = i,
5406 this.type = r,
5407 this.id = s.id,
5408 this.owner = a,
5409 this.name = s.name,
5410 this.isItem = null != this.id,
5411 this.group = s.group,
5412 this.health = s.health,
5413 this.layer = 2,
5414 null != this.group ? this.layer = this.group.layer : 0 == this.type ? this.layer = 3 : 2 == this.type ? this.layer = 0 : 4 == this.type && (this.layer = -1),
5415 this.colDiv = s.colDiv || 1,
5416 this.blocker = s.blocker,
5417 this.ignoreCollision = s.ignoreCollision,
5418 this.dontGather = s.dontGather,
5419 this.hideFromEnemy = s.hideFromEnemy,
5420 this.friction = s.friction,
5421 this.projDmg = s.projDmg,
5422 this.dmg = s.dmg,
5423 this.pDmg = s.pDmg,
5424 this.pps = s.pps,
5425 this.zIndex = s.zIndex || 0,
5426 this.turnSpeed = s.turnSpeed,
5427 this.req = s.req,
5428 this.trap = s.trap,
5429 this.healCol = s.healCol,
5430 this.teleport = s.teleport,
5431 this.boostSpeed = s.boostSpeed,
5432 this.projectile = s.projectile,
5433 this.shootRange = s.shootRange,
5434 this.shootRate = s.shootRate,
5435 this.shootCount = this.shootRate,
5436 this.spawnPoint = s.spawnPoint
5437 }
5438 ,
5439 this.changeHealth = function(e, t) {
5440 return this.health += e,
5441 this.health <= 0
5442 }
5443 ,
5444 this.getScale = function(e, t) {
5445 return e = e || 1,
5446 this.scale * (this.isItem || 2 == this.type || 3 == this.type || 4 == this.type ? 1 : .6 * e) * (t ? 1 : this.colDiv)
5447 }
5448 ,
5449 this.visibleToPlayer = function(e) {
5450 return !this.hideFromEnemy || this.owner && (this.owner == e || this.owner.team && e.team == this.owner.team)
5451 }
5452 ,
5453 this.update = function(e) {
5454 this.active && (this.xWiggle && (this.xWiggle *= Math.pow(.99, e)),
5455 this.yWiggle && (this.yWiggle *= Math.pow(.99, e)),
5456 this.turnSpeed && (this.dir += this.turnSpeed * e))
5457 }
5458 }
5459}
5460, function(e, t) {
5461 e.exports.groups = [{
5462 id: 0,
5463 name: "food",
5464 layer: 0
5465 }, {
5466 id: 1,
5467 name: "walls",
5468 place: !0,
5469 limit: 30,
5470 layer: 0
5471 }, {
5472 id: 2,
5473 name: "spikes",
5474 place: !0,
5475 limit: 15,
5476 layer: 0
5477 }, {
5478 id: 3,
5479 name: "mill",
5480 place: !0,
5481 limit: 7,
5482 layer: 1
5483 }, {
5484 id: 4,
5485 name: "mine",
5486 place: !0,
5487 limit: 1,
5488 layer: 0
5489 }, {
5490 id: 5,
5491 name: "trap",
5492 place: !0,
5493 limit: 6,
5494 layer: -1
5495 }, {
5496 id: 6,
5497 name: "booster",
5498 place: !0,
5499 limit: 12,
5500 layer: -1
5501 }, {
5502 id: 7,
5503 name: "turret",
5504 place: !0,
5505 limit: 2,
5506 layer: 1
5507 }, {
5508 id: 8,
5509 name: "watchtower",
5510 place: !0,
5511 limit: 12,
5512 layer: 1
5513 }, {
5514 id: 9,
5515 name: "buff",
5516 place: !0,
5517 limit: 4,
5518 layer: -1
5519 }, {
5520 id: 10,
5521 name: "spawn",
5522 place: !0,
5523 limit: 1,
5524 layer: -1
5525 }, {
5526 id: 11,
5527 name: "sapling",
5528 place: !0,
5529 limit: 2,
5530 layer: 0
5531 }, {
5532 id: 12,
5533 name: "blocker",
5534 place: !0,
5535 limit: 3,
5536 layer: -1
5537 }, {
5538 id: 13,
5539 name: "teleporter",
5540 place: !0,
5541 limit: 2,
5542 layer: -1
5543 }],
5544 t.projectiles = [{
5545 indx: 0,
5546 layer: 0,
5547 src: "arrow_1",
5548 dmg: 25,
5549 speed: 1.6,
5550 scale: 103,
5551 range: 1e3
5552 }, {
5553 indx: 1,
5554 layer: 1,
5555 dmg: 25,
5556 scale: 20
5557 }, {
5558 indx: 0,
5559 layer: 0,
5560 src: "arrow_1",
5561 dmg: 35,
5562 speed: 2.5,
5563 scale: 103,
5564 range: 1200
5565 }, {
5566 indx: 0,
5567 layer: 0,
5568 src: "arrow_1",
5569 dmg: 30,
5570 speed: 2,
5571 scale: 103,
5572 range: 1200
5573 }, {
5574 indx: 1,
5575 layer: 1,
5576 dmg: 16,
5577 scale: 20
5578 }, {
5579 indx: 0,
5580 layer: 0,
5581 src: "bullet_1",
5582 dmg: 50,
5583 speed: 3.6,
5584 scale: 160,
5585 range: 1400
5586 }],
5587 t.weapons = [{
5588 id: 0,
5589 type: 0,
5590 name: "tool hammer",
5591 desc: "tool for gathering all resources",
5592 src: "hammer_1",
5593 length: 140,
5594 width: 140,
5595 xOff: -3,
5596 yOff: 18,
5597 dmg: 25,
5598 range: 65,
5599 gather: 1,
5600 speed: 300
5601 }, {
5602 id: 1,
5603 type: 0,
5604 age: 2,
5605 name: "hand axe",
5606 desc: "gathers resources at a higher rate",
5607 src: "axe_1",
5608 length: 140,
5609 width: 140,
5610 xOff: 3,
5611 yOff: 24,
5612 dmg: 30,
5613 spdMult: 1,
5614 range: 70,
5615 gather: 2,
5616 speed: 400
5617 }, {
5618 id: 2,
5619 type: 0,
5620 age: 8,
5621 name: "great axe",
5622 desc: "deal more damage and gather more resources",
5623 src: "great_axe_1",
5624 length: 140,
5625 width: 140,
5626 xOff: -8,
5627 yOff: 25,
5628 dmg: 35,
5629 spdMult: 1,
5630 range: 75,
5631 gather: 4,
5632 speed: 400
5633 }, {
5634 id: 3,
5635 type: 0,
5636 age: 2,
5637 name: "short sword",
5638 desc: "increased attack power but slower move speed",
5639 src: "sword_1",
5640 iPad: 1.3,
5641 length: 130,
5642 width: 210,
5643 xOff: -8,
5644 yOff: 46,
5645 dmg: 35,
5646 spdMult: .85,
5647 range: 110,
5648 gather: 1,
5649 speed: 300
5650 }, {
5651 id: 4,
5652 type: 0,
5653 age: 8,
5654 name: "katana",
5655 desc: "greater range and damage",
5656 src: "samurai_1",
5657 iPad: 1.3,
5658 length: 130,
5659 width: 210,
5660 xOff: -8,
5661 yOff: 59,
5662 dmg: 40,
5663 spdMult: .8,
5664 range: 118,
5665 gather: 1,
5666 speed: 300
5667 }, {
5668 id: 5,
5669 type: 0,
5670 age: 2,
5671 name: "polearm",
5672 desc: "long range melee weapon",
5673 src: "spear_1",
5674 iPad: 1.3,
5675 length: 130,
5676 width: 210,
5677 xOff: -8,
5678 yOff: 53,
5679 dmg: 45,
5680 knock: .2,
5681 spdMult: .82,
5682 range: 142,
5683 gather: 1,
5684 speed: 700
5685 }, {
5686 id: 6,
5687 type: 0,
5688 age: 2,
5689 name: "bat",
5690 desc: "fast long range melee weapon",
5691 src: "bat_1",
5692 iPad: 1.3,
5693 length: 110,
5694 width: 180,
5695 xOff: -8,
5696 yOff: 53,
5697 dmg: 20,
5698 knock: .7,
5699 range: 110,
5700 gather: 1,
5701 speed: 300
5702 }, {
5703 id: 7,
5704 type: 0,
5705 age: 2,
5706 name: "daggers",
5707 desc: "really fast short range weapon",
5708 src: "dagger_1",
5709 iPad: .8,
5710 length: 110,
5711 width: 110,
5712 xOff: 18,
5713 yOff: 0,
5714 dmg: 20,
5715 knock: .1,
5716 range: 65,
5717 gather: 1,
5718 hitSlow: .1,
5719 spdMult: 1.13,
5720 speed: 100
5721 }, {
5722 id: 8,
5723 type: 0,
5724 age: 2,
5725 name: "stick",
5726 desc: "great for gathering but very weak",
5727 src: "stick_1",
5728 length: 140,
5729 width: 140,
5730 xOff: 3,
5731 yOff: 24,
5732 dmg: 1,
5733 spdMult: 1,
5734 range: 70,
5735 gather: 7,
5736 speed: 400
5737 }, {
5738 id: 9,
5739 type: 1,
5740 age: 6,
5741 name: "hunting bow",
5742 desc: "bow used for ranged combat and hunting",
5743 src: "bow_1",
5744 req: ["wood", 4],
5745 length: 120,
5746 width: 120,
5747 xOff: -6,
5748 yOff: 0,
5749 projectile: 0,
5750 spdMult: .75,
5751 speed: 600
5752 }, {
5753 id: 10,
5754 type: 1,
5755 age: 6,
5756 name: "great hammer",
5757 desc: "hammer used for destroying structures",
5758 src: "great_hammer_1",
5759 length: 140,
5760 width: 140,
5761 xOff: -9,
5762 yOff: 25,
5763 dmg: 10,
5764 spdMult: .88,
5765 range: 75,
5766 sDmg: 7.5,
5767 gather: 1,
5768 speed: 400
5769 }, {
5770 id: 11,
5771 type: 1,
5772 age: 6,
5773 name: "wooden shield",
5774 desc: "blocks projectiles and reduces melee damage",
5775 src: "shield_1",
5776 length: 120,
5777 width: 120,
5778 shield: .2,
5779 xOff: 6,
5780 yOff: 0,
5781 spdMult: .7
5782 }, {
5783 id: 12,
5784 type: 1,
5785 age: 8,
5786 name: "crossbow",
5787 desc: "deals more damage and has greater range",
5788 src: "crossbow_1",
5789 req: ["wood", 5],
5790 aboveHand: !0,
5791 armS: .75,
5792 length: 120,
5793 width: 120,
5794 xOff: -4,
5795 yOff: 0,
5796 projectile: 2,
5797 spdMult: .7,
5798 speed: 700
5799 }, {
5800 id: 13,
5801 type: 1,
5802 age: 9,
5803 name: "repeater crossbow",
5804 desc: "high firerate crossbow with reduced damage",
5805 src: "crossbow_2",
5806 req: ["wood", 10],
5807 aboveHand: !0,
5808 armS: .75,
5809 length: 120,
5810 width: 120,
5811 xOff: -4,
5812 yOff: 0,
5813 projectile: 3,
5814 spdMult: .7,
5815 speed: 230
5816 }, {
5817 id: 14,
5818 type: 1,
5819 age: 6,
5820 name: "mc grabby",
5821 desc: "steals resources from enemies",
5822 src: "grab_1",
5823 length: 130,
5824 width: 210,
5825 xOff: -8,
5826 yOff: 53,
5827 dmg: 0,
5828 steal: 250,
5829 knock: .2,
5830 spdMult: 1.05,
5831 range: 125,
5832 gather: 0,
5833 speed: 700
5834 }, {
5835 id: 15,
5836 type: 1,
5837 age: 9,
5838 name: "musket",
5839 desc: "slow firerate but high damage and range",
5840 src: "musket_1",
5841 req: ["stone", 10],
5842 aboveHand: !0,
5843 rec: .35,
5844 armS: .6,
5845 hndS: .3,
5846 hndD: 1.6,
5847 length: 205,
5848 width: 205,
5849 xOff: 25,
5850 yOff: 0,
5851 projectile: 5,
5852 hideProjectile: !0,
5853 spdMult: .6,
5854 speed: 1500
5855 }],
5856 e.exports.list = [{
5857 group: e.exports.groups[0],
5858 name: "apple",
5859 desc: "restores 20 health when consumed",
5860 req: ["food", 10],
5861 consume: function(e) {
5862 return e.changeHealth(20, e)
5863 },
5864 scale: 22,
5865 holdOffset: 15
5866 }, {
5867 age: 3,
5868 group: e.exports.groups[0],
5869 name: "cookie",
5870 desc: "restores 40 health when consumed",
5871 req: ["food", 15],
5872 consume: function(e) {
5873 return e.changeHealth(40, e)
5874 },
5875 scale: 27,
5876 holdOffset: 15
5877 }, {
5878 age: 7,
5879 group: e.exports.groups[0],
5880 name: "cheese",
5881 desc: "restores 30 health and another 50 over 5 seconds",
5882 req: ["food", 25],
5883 consume: function(e) {
5884 return !!(e.changeHealth(30, e) || e.health < 100) && (e.dmgOverTime.dmg = -10,
5885 e.dmgOverTime.doer = e,
5886 e.dmgOverTime.time = 5,
5887 !0)
5888 },
5889 scale: 27,
5890 holdOffset: 15
5891 }, {
5892 group: e.exports.groups[1],
5893 name: "wood wall",
5894 desc: "provides protection for your village",
5895 req: ["wood", 10],
5896 projDmg: !0,
5897 health: 380,
5898 scale: 50,
5899 holdOffset: 20,
5900 placeOffset: -5
5901 }, {
5902 age: 3,
5903 group: e.exports.groups[1],
5904 name: "stone wall",
5905 desc: "provides improved protection for your village",
5906 req: ["stone", 25],
5907 health: 900,
5908 scale: 50,
5909 holdOffset: 20,
5910 placeOffset: -5
5911 }, {
5912 age: 7,
5913 group: e.exports.groups[1],
5914 name: "castle wall",
5915 desc: "provides powerful protection for your village",
5916 req: ["stone", 35],
5917 health: 1500,
5918 scale: 52,
5919 holdOffset: 20,
5920 placeOffset: -5
5921 }, {
5922 group: e.exports.groups[2],
5923 name: "spikes",
5924 desc: "damages enemies when they touch them",
5925 req: ["wood", 20, "stone", 5],
5926 health: 400,
5927 dmg: 20,
5928 scale: 49,
5929 spritePadding: -23,
5930 holdOffset: 8,
5931 placeOffset: -5
5932 }, {
5933 age: 5,
5934 group: e.exports.groups[2],
5935 name: "greater spikes",
5936 desc: "damages enemies when they touch them",
5937 req: ["wood", 30, "stone", 10],
5938 health: 500,
5939 dmg: 35,
5940 scale: 52,
5941 spritePadding: -23,
5942 holdOffset: 8,
5943 placeOffset: -5
5944 }, {
5945 age: 9,
5946 group: e.exports.groups[2],
5947 name: "poison spikes",
5948 desc: "poisons enemies when they touch them",
5949 req: ["wood", 35, "stone", 15],
5950 health: 600,
5951 dmg: 30,
5952 pDmg: 5,
5953 scale: 52,
5954 spritePadding: -23,
5955 holdOffset: 8,
5956 placeOffset: -5
5957 }, {
5958 age: 9,
5959 group: e.exports.groups[2],
5960 name: "spinning spikes",
5961 desc: "damages enemies when they touch them",
5962 req: ["wood", 30, "stone", 20],
5963 health: 500,
5964 dmg: 45,
5965 turnSpeed: .003,
5966 scale: 52,
5967 spritePadding: -23,
5968 holdOffset: 8,
5969 placeOffset: -5
5970 }, {
5971 group: e.exports.groups[3],
5972 name: "windmill",
5973 desc: "generates gold over time",
5974 req: ["wood", 50, "stone", 10],
5975 health: 400,
5976 pps: 1,
5977 turnSpeed: .0016,
5978 spritePadding: 25,
5979 iconLineMult: 12,
5980 scale: 45,
5981 holdOffset: 20,
5982 placeOffset: 5
5983 }, {
5984 age: 5,
5985 group: e.exports.groups[3],
5986 name: "faster windmill",
5987 desc: "generates more gold over time",
5988 req: ["wood", 60, "stone", 20],
5989 health: 500,
5990 pps: 1.5,
5991 turnSpeed: .0025,
5992 spritePadding: 25,
5993 iconLineMult: 12,
5994 scale: 47,
5995 holdOffset: 20,
5996 placeOffset: 5
5997 }, {
5998 age: 8,
5999 group: e.exports.groups[3],
6000 name: "power mill",
6001 desc: "generates more gold over time",
6002 req: ["wood", 100, "stone", 50],
6003 health: 800,
6004 pps: 2,
6005 turnSpeed: .005,
6006 spritePadding: 25,
6007 iconLineMult: 12,
6008 scale: 47,
6009 holdOffset: 20,
6010 placeOffset: 5
6011 }, {
6012 age: 5,
6013 group: e.exports.groups[4],
6014 type: 2,
6015 name: "mine",
6016 desc: "allows you to mine stone",
6017 req: ["wood", 20, "stone", 100],
6018 iconLineMult: 12,
6019 scale: 65,
6020 holdOffset: 20,
6021 placeOffset: 0
6022 }, {
6023 age: 5,
6024 group: e.exports.groups[11],
6025 type: 0,
6026 name: "sapling",
6027 desc: "allows you to farm wood",
6028 req: ["wood", 150],
6029 iconLineMult: 12,
6030 colDiv: .5,
6031 scale: 110,
6032 holdOffset: 50,
6033 placeOffset: -15
6034 }, {
6035 age: 4,
6036 group: e.exports.groups[5],
6037 name: "pit trap",
6038 desc: "pit that traps enemies if they walk over it",
6039 req: ["wood", 30, "stone", 30],
6040 trap: !0,
6041 ignoreCollision: !0,
6042 hideFromEnemy: !0,
6043 health: 500,
6044 colDiv: .2,
6045 scale: 50,
6046 holdOffset: 20,
6047 placeOffset: -5
6048 }, {
6049 age: 4,
6050 group: e.exports.groups[6],
6051 name: "boost pad",
6052 desc: "provides boost when stepped on",
6053 req: ["stone", 20, "wood", 5],
6054 ignoreCollision: !0,
6055 boostSpeed: 1.5,
6056 health: 150,
6057 colDiv: .7,
6058 scale: 45,
6059 holdOffset: 20,
6060 placeOffset: -5
6061 }, {
6062 age: 7,
6063 group: e.exports.groups[7],
6064 doUpdate: !0,
6065 name: "turret",
6066 desc: "defensive structure that shoots at enemies",
6067 req: ["wood", 200, "stone", 150],
6068 health: 800,
6069 projectile: 1,
6070 shootRange: 700,
6071 shootRate: 2200,
6072 scale: 43,
6073 holdOffset: 20,
6074 placeOffset: -5
6075 }, {
6076 age: 7,
6077 group: e.exports.groups[8],
6078 name: "platform",
6079 desc: "platform to shoot over walls and cross over water",
6080 req: ["wood", 20],
6081 ignoreCollision: !0,
6082 zIndex: 1,
6083 health: 300,
6084 scale: 43,
6085 holdOffset: 20,
6086 placeOffset: -5
6087 }, {
6088 age: 7,
6089 group: e.exports.groups[9],
6090 name: "healing pad",
6091 desc: "standing on it will slowly heal you",
6092 req: ["wood", 30, "food", 10],
6093 ignoreCollision: !0,
6094 healCol: 15,
6095 health: 400,
6096 colDiv: .7,
6097 scale: 45,
6098 holdOffset: 20,
6099 placeOffset: -5
6100 }, {
6101 age: 9,
6102 group: e.exports.groups[10],
6103 name: "spawn pad",
6104 desc: "you will spawn here when you die but it will dissapear",
6105 req: ["wood", 100, "stone", 100],
6106 health: 400,
6107 ignoreCollision: !0,
6108 spawnPoint: !0,
6109 scale: 45,
6110 holdOffset: 20,
6111 placeOffset: -5
6112 }, {
6113 age: 7,
6114 group: e.exports.groups[12],
6115 name: "blocker",
6116 desc: "blocks building in radius",
6117 req: ["wood", 30, "stone", 25],
6118 ignoreCollision: !0,
6119 blocker: 300,
6120 health: 400,
6121 colDiv: .7,
6122 scale: 45,
6123 holdOffset: 20,
6124 placeOffset: -5
6125 }, {
6126 age: 7,
6127 group: e.exports.groups[13],
6128 name: "teleporter",
6129 desc: "teleports you to a random point on the map",
6130 req: ["wood", 60, "stone", 60],
6131 ignoreCollision: !0,
6132 teleport: !0,
6133 health: 200,
6134 colDiv: .7,
6135 scale: 45,
6136 holdOffset: 20,
6137 placeOffset: -5
6138 }];
6139 for (var n = 0; n < e.exports.list.length; ++n)
6140 e.exports.list[n].id = n,
6141 e.exports.list[n].pre && (e.exports.list[n].pre = n - e.exports.list[n].pre)
6142}
6143, function(e, t) {
6144 e.exports = {}
6145}
6146, function(e, t) {
6147 var n = Math.floor
6148 , i = Math.abs
6149 , r = Math.cos
6150 , s = Math.sin
6151 , a = (Math.pow,
6152 Math.sqrt);
6153 e.exports = function(e, t, o, c, l, h) {
6154 var u, f;
6155 this.objects = t,
6156 this.grids = {},
6157 this.updateObjects = [];
6158 var d = c.mapScale / c.colGrid;
6159 this.setObjectGrids = function(e) {
6160 for (var t = Math.min(c.mapScale, Math.max(0, e.x)), n = Math.min(c.mapScale, Math.max(0, e.y)), i = 0; i < c.colGrid; ++i) {
6161 u = i * d;
6162 for (var r = 0; r < c.colGrid; ++r)
6163 f = r * d,
6164 t + e.scale >= u && t - e.scale <= u + d && n + e.scale >= f && n - e.scale <= f + d && (this.grids[i + "_" + r] || (this.grids[i + "_" + r] = []),
6165 this.grids[i + "_" + r].push(e),
6166 e.gridLocations.push(i + "_" + r))
6167 }
6168 }
6169 ,
6170 this.removeObjGrid = function(e) {
6171 for (var t, n = 0; n < e.gridLocations.length; ++n)
6172 (t = this.grids[e.gridLocations[n]].indexOf(e)) >= 0 && this.grids[e.gridLocations[n]].splice(t, 1)
6173 }
6174 ,
6175 this.disableObj = function(e) {
6176 if (e.active = !1,
6177 h) {
6178 e.owner && e.pps && (e.owner.pps -= e.pps),
6179 this.removeObjGrid(e);
6180 var t = this.updateObjects.indexOf(e);
6181 t >= 0 && this.updateObjects.splice(t, 1)
6182 }
6183 }
6184 ,
6185 this.hitObj = function(e, t) {
6186 for (var n = 0; n < l.length; ++n)
6187 l[n].active && (e.sentTo[l[n].id] && (e.active ? l[n].canSee(e) && h.send(l[n].id, "8", o.fixTo(t, 1), e.sid) : h.send(l[n].id, "12", e.sid)),
6188 e.active || e.owner != l[n] || l[n].changeItemCount(e.group.id, -1))
6189 }
6190 ;
6191 var p, g, m = [];
6192 this.getGridArrays = function(e, t, i) {
6193 u = n(e / d),
6194 f = n(t / d),
6195 m.length = 0;
6196 try {
6197 this.grids[u + "_" + f] && m.push(this.grids[u + "_" + f]),
6198 e + i >= (u + 1) * d && ((p = this.grids[u + 1 + "_" + f]) && m.push(p),
6199 f && t - i <= f * d ? (p = this.grids[u + 1 + "_" + (f - 1)]) && m.push(p) : t + i >= (f + 1) * d && (p = this.grids[u + 1 + "_" + (f + 1)]) && m.push(p)),
6200 u && e - i <= u * d && ((p = this.grids[u - 1 + "_" + f]) && m.push(p),
6201 f && t - i <= f * d ? (p = this.grids[u - 1 + "_" + (f - 1)]) && m.push(p) : t + i >= (f + 1) * d && (p = this.grids[u - 1 + "_" + (f + 1)]) && m.push(p)),
6202 t + i >= (f + 1) * d && (p = this.grids[u + "_" + (f + 1)]) && m.push(p),
6203 f && t - i <= f * d && (p = this.grids[u + "_" + (f - 1)]) && m.push(p)
6204 } catch (e) {}
6205 return m
6206 }
6207 ,
6208 this.add = function(n, i, r, s, a, o, c, l, u) {
6209 g = null;
6210 for (var f = 0; f < t.length; ++f)
6211 if (t[f].sid == n) {
6212 g = t[f];
6213 break
6214 }
6215 if (!g)
6216 for (f = 0; f < t.length; ++f)
6217 if (!t[f].active) {
6218 g = t[f];
6219 break
6220 }
6221 g || (g = new e(n),
6222 t.push(g)),
6223 l && (g.sid = n),
6224 g.init(i, r, s, a, o, c, u),
6225 h && (this.setObjectGrids(g),
6226 g.doUpdate && this.updateObjects.push(g))
6227 }
6228 ,
6229 this.disableBySid = function(e) {
6230 for (var n = 0; n < t.length; ++n)
6231 if (t[n].sid == e) {
6232 this.disableObj(t[n]);
6233 break
6234 }
6235 }
6236 ,
6237 this.removeAllItems = function(e, n) {
6238 for (var i = 0; i < t.length; ++i)
6239 t[i].active && t[i].owner && t[i].owner.sid == e && this.disableObj(t[i]);
6240 n && n.broadcast("13", e)
6241 }
6242 ,
6243 this.fetchSpawnObj = function(e) {
6244 for (var n = null, i = 0; i < t.length; ++i)
6245 if ((g = t[i]).active && g.owner && g.owner.sid == e && g.spawnPoint) {
6246 n = [g.x, g.y],
6247 this.disableObj(g),
6248 h.broadcast("12", g.sid),
6249 g.owner && g.owner.changeItemCount(g.group.id, -1);
6250 break
6251 }
6252 return n
6253 }
6254 ,
6255 this.checkItemLocation = function(e, n, i, r, s, a, l) {
6256 for (var h = 0; h < t.length; ++h) {
6257 var u = t[h].blocker ? t[h].blocker : t[h].getScale(r, t[h].isItem);
6258 if (t[h].active && o.getDistance(e, n, t[h].x, t[h].y) < i + u)
6259 return !1
6260 }
6261 return !(!a && 18 != s && n >= c.mapScale / 2 - c.riverWidth / 2 && n <= c.mapScale / 2 + c.riverWidth / 2)
6262 }
6263 ,
6264 this.addProjectile = function(e, t, n, i, r) {
6265 for (var s, a = items.projectiles[r], c = 0; c < projectiles.length; ++c)
6266 if (!projectiles[c].active) {
6267 s = projectiles[c];
6268 break
6269 }
6270 s || (s = new Projectile(l,o),
6271 projectiles.push(s)),
6272 s.init(r, e, t, n, a.speed, i, a.scale)
6273 }
6274 ,
6275 this.checkCollision = function(e, t, n) {
6276 n = n || 1;
6277 var l = e.x - t.x
6278 , h = e.y - t.y
6279 , u = e.scale + t.scale;
6280 if (i(l) <= u || i(h) <= u) {
6281 u = e.scale + (t.getScale ? t.getScale() : t.scale);
6282 var f = a(l * l + h * h) - u;
6283 if (f <= 0) {
6284 if (t.ignoreCollision)
6285 !t.trap || e.noTrap || t.owner == e || t.owner && t.owner.team && t.owner.team == e.team ? t.boostSpeed ? (e.xVel += n * t.boostSpeed * (t.weightM || 1) * r(t.dir),
6286 e.yVel += n * t.boostSpeed * (t.weightM || 1) * s(t.dir)) : t.healCol ? e.healCol = t.healCol : t.teleport && (e.x = o.randInt(0, c.mapScale),
6287 e.y = o.randInt(0, c.mapScale)) : (e.lockMove = !0,
6288 t.hideFromEnemy = !1);
6289 else {
6290 var d = o.getDirection(e.x, e.y, t.x, t.y);
6291 if (o.getDistance(e.x, e.y, t.x, t.y),
6292 t.isPlayer ? (f = -1 * f / 2,
6293 e.x += f * r(d),
6294 e.y += f * s(d),
6295 t.x -= f * r(d),
6296 t.y -= f * s(d)) : (e.x = t.x + u * r(d),
6297 e.y = t.y + u * s(d),
6298 e.xVel *= .75,
6299 e.yVel *= .75),
6300 t.dmg && t.owner != e && (!t.owner || !t.owner.team || t.owner.team != e.team)) {
6301 e.changeHealth(-t.dmg, t.owner, t);
6302 var p = 1.5 * (t.weightM || 1);
6303 e.xVel += p * r(d),
6304 e.yVel += p * s(d),
6305 !t.pDmg || e.skin && e.skin.poisonRes || (e.dmgOverTime.dmg = t.pDmg,
6306 e.dmgOverTime.time = 5,
6307 e.dmgOverTime.doer = t.owner),
6308 e.colDmg && t.health && (t.changeHealth(-e.colDmg) && this.disableObj(t),
6309 this.hitObj(t, o.getDirection(e.x, e.y, t.x, t.y)))
6310 }
6311 }
6312 return t.zIndex > e.zIndex && (e.zIndex = t.zIndex),
6313 !0
6314 }
6315 }
6316 return !1
6317 }
6318 }
6319}
6320, function(e, t, n) {
6321 var i = new (n(49));
6322 i.addWords("jew", "black", "baby", "child", "white", "porn", "pedo", "trump", "clinton", "hitler", "nazi", "gay", "pride", "sex", "pleasure", "touch", "poo", "kids", "rape", "white power", "nigga", "nig nog", "doggy", "rapist", "boner", "nigger", "nigg", "finger", "nogger", "nagger", "nig", "fag", "gai", "pole", "stripper", "penis", "vagina", "pussy", "nazi", "hitler", "stalin", "burn", "chamber", "cock", "peen", "dick", "spick", "nieger", "die", "satan", "n|ig", "nlg", "cunt", "c0ck", "fag", "lick", "condom", "anal", "shit", "phile", "little", "kids", "free KR", "tiny", "sidney", "ass", "kill", ".io", "(dot)", "[dot]", "mini", "whiore", "whore", "faggot", "github", "1337", "666", "satan", "senpa", "discord", "d1scord", "mistik", ".io", "senpa.io", "sidney", "sid", "senpaio", "vries", "asa");
6323 var r = Math.abs
6324 , s = Math.cos
6325 , a = Math.sin
6326 , o = Math.pow
6327 , c = Math.sqrt;
6328 e.exports = function(e, t, n, l, h, u, f, d, p, g, m, y, k, v) {
6329 this.id = e,
6330 this.sid = t,
6331 this.tmpScore = 0,
6332 this.team = null,
6333 this.skinIndex = 0,
6334 this.tailIndex = 0,
6335 this.hitTime = 0,
6336 this.tails = {};
6337 for (var w = 0; w < m.length; ++w)
6338 m[w].price <= 0 && (this.tails[m[w].id] = 1);
6339 for (this.skins = {},
6340 w = 0; w < g.length; ++w)
6341 g[w].price <= 0 && (this.skins[g[w].id] = 1);
6342 this.points = 0,
6343 this.dt = 0,
6344 this.hidden = !1,
6345 this.itemCounts = {},
6346 this.isPlayer = !0,
6347 this.pps = 0,
6348 this.moveDir = void 0,
6349 this.skinRot = 0,
6350 this.lastPing = 0,
6351 this.iconIndex = 0,
6352 this.skinColor = 0,
6353 this.spawn = function(e) {
6354 this.active = !0,
6355 this.alive = !0,
6356 this.lockMove = !1,
6357 this.lockDir = !1,
6358 this.minimapCounter = 0,
6359 this.chatCountdown = 0,
6360 this.shameCount = 0,
6361 this.shameTimer = 0,
6362 this.sentTo = {},
6363 this.gathering = 0,
6364 this.autoGather = 0,
6365 this.animTime = 0,
6366 this.animSpeed = 0,
6367 this.mouseState = 0,
6368 this.buildIndex = -1,
6369 this.weaponIndex = 0,
6370 this.dmgOverTime = {},
6371 this.noMovTimer = 0,
6372 this.maxXP = 300,
6373 this.XP = 0,
6374 this.age = 1,
6375 this.kills = 0,
6376 this.upgrAge = 2,
6377 this.upgradePoints = 0,
6378 this.x = 0,
6379 this.y = 0,
6380 this.zIndex = 0,
6381 this.xVel = 0,
6382 this.yVel = 0,
6383 this.slowMult = 1,
6384 this.dir = 0,
6385 this.dirPlus = 0,
6386 this.targetDir = 0,
6387 this.targetAngle = 0,
6388 this.maxHealth = 100,
6389 this.health = this.maxHealth,
6390 this.scale = n.playerScale,
6391 this.speed = n.playerSpeed,
6392 this.resetMoveDir(),
6393 this.resetResources(e),
6394 this.items = [0, 3, 6, 10],
6395 this.weapons = [0],
6396 this.shootCount = 0,
6397 this.weaponXP = [],
6398 this.reloads = {}
6399 }
6400 ,
6401 this.resetMoveDir = function() {
6402 this.moveDir = void 0
6403 }
6404 ,
6405 this.resetResources = function(e) {
6406 for (var t = 0; t < n.resourceTypes.length; ++t)
6407 this[n.resourceTypes[t]] = e ? 100 : 0
6408 }
6409 ,
6410 this.addItem = function(e) {
6411 var t = p.list[e];
6412 if (t) {
6413 for (var n = 0; n < this.items.length; ++n)
6414 if (p.list[this.items[n]].group == t.group)
6415 return this.buildIndex == this.items[n] && (this.buildIndex = e),
6416 this.items[n] = e,
6417 !0;
6418 return this.items.push(e),
6419 !0
6420 }
6421 return !1
6422 }
6423 ,
6424 this.setUserData = function(e) {
6425 if (e) {
6426 this.name = "unknown";
6427 var t = e.name + ""
6428 , r = !1
6429 , s = (t = (t = (t = (t = t.slice(0, n.maxNameLength)).replace(/[^\w:\(\)\/? -]+/gim, " ")).replace(/[^\x00-\x7F]/g, " ")).trim()).toLowerCase().replace(/\s/g, "").replace(/1/g, "i").replace(/0/g, "o").replace(/5/g, "s");
6430 for (var a of i.list)
6431 if (-1 != s.indexOf(a)) {
6432 r = !0;
6433 break
6434 }
6435 t.length > 0 && !r && (this.name = t),
6436 this.skinColor = 0,
6437 n.skinColors[e.skin] && (this.skinColor = e.skin)
6438 }
6439 }
6440 ,
6441 this.getData = function() {
6442 return [this.id, this.sid, this.name, l.fixTo(this.x, 2), l.fixTo(this.y, 2), l.fixTo(this.dir, 3), this.health, this.maxHealth, this.scale, this.skinColor]
6443 }
6444 ,
6445 this.setData = function(e) {
6446 this.id = e[0],
6447 this.sid = e[1],
6448 this.name = e[2],
6449 this.x = e[3],
6450 this.y = e[4],
6451 this.dir = e[5],
6452 this.health = e[6],
6453 this.maxHealth = e[7],
6454 this.scale = e[8],
6455 this.skinColor = e[9]
6456 }
6457 ;
6458 var b = 0;
6459 this.update = function(e) {
6460 if (this.alive) {
6461 if (this.shameTimer > 0 && (this.shameTimer -= e,
6462 this.shameTimer <= 0 && (this.shameTimer = 0,
6463 this.shameCount = 0)),
6464 (b -= e) <= 0) {
6465 var t = (this.skin && this.skin.healthRegen ? this.skin.healthRegen : 0) + (this.tail && this.tail.healthRegen ? this.tail.healthRegen : 0);
6466 t && this.changeHealth(t, this),
6467 this.dmgOverTime.dmg && (this.changeHealth(-this.dmgOverTime.dmg, this.dmgOverTime.doer),
6468 this.dmgOverTime.time -= 1,
6469 this.dmgOverTime.time <= 0 && (this.dmgOverTime.dmg = 0)),
6470 this.healCol && this.changeHealth(this.healCol, this),
6471 b = 1e3
6472 }
6473 if (this.alive) {
6474 if (this.slowMult < 1 && (this.slowMult += 8e-4 * e,
6475 this.slowMult > 1 && (this.slowMult = 1)),
6476 this.noMovTimer += e,
6477 (this.xVel || this.yVel) && (this.noMovTimer = 0),
6478 this.lockMove)
6479 this.xVel = 0,
6480 this.yVel = 0;
6481 else {
6482 var i = (this.buildIndex >= 0 ? .5 : 1) * (p.weapons[this.weaponIndex].spdMult || 1) * (this.skin && this.skin.spdMult || 1) * (this.tail && this.tail.spdMult || 1) * (this.y <= n.snowBiomeTop ? this.skin && this.skin.coldM ? 1 : n.snowSpeed : 1) * this.slowMult;
6483 !this.zIndex && this.y >= n.mapScale / 2 - n.riverWidth / 2 && this.y <= n.mapScale / 2 + n.riverWidth / 2 && (this.skin && this.skin.watrImm ? (i *= .75,
6484 this.xVel += .4 * n.waterCurrent * e) : (i *= .33,
6485 this.xVel += n.waterCurrent * e));
6486 var r = null != this.moveDir ? s(this.moveDir) : 0
6487 , d = null != this.moveDir ? a(this.moveDir) : 0
6488 , g = c(r * r + d * d);
6489 0 != g && (r /= g,
6490 d /= g),
6491 r && (this.xVel += r * this.speed * i * e),
6492 d && (this.yVel += d * this.speed * i * e)
6493 }
6494 var m;
6495 this.zIndex = 0,
6496 this.lockMove = !1,
6497 this.healCol = 0;
6498 for (var y = l.getDistance(0, 0, this.xVel * e, this.yVel * e), k = Math.min(4, Math.max(1, Math.round(y / 40))), v = 1 / k, w = 0; w < k; ++w) {
6499 this.xVel && (this.x += this.xVel * e * v),
6500 this.yVel && (this.y += this.yVel * e * v),
6501 m = u.getGridArrays(this.x, this.y, this.scale);
6502 for (var x = 0; x < m.length; ++x)
6503 for (var S = 0; S < m[x].length; ++S)
6504 m[x][S].active && u.checkCollision(this, m[x][S], v)
6505 }
6506 for (w = (I = f.indexOf(this)) + 1; w < f.length; ++w)
6507 f[w] != this && f[w].alive && u.checkCollision(this, f[w]);
6508 if (this.xVel && (this.xVel *= o(n.playerDecel, e),
6509 this.xVel <= .01 && this.xVel >= -.01 && (this.xVel = 0)),
6510 this.yVel && (this.yVel *= o(n.playerDecel, e),
6511 this.yVel <= .01 && this.yVel >= -.01 && (this.yVel = 0)),
6512 this.x - this.scale < 0 ? this.x = this.scale : this.x + this.scale > n.mapScale && (this.x = n.mapScale - this.scale),
6513 this.y - this.scale < 0 ? this.y = this.scale : this.y + this.scale > n.mapScale && (this.y = n.mapScale - this.scale),
6514 this.buildIndex < 0)
6515 if (this.reloads[this.weaponIndex] > 0)
6516 this.reloads[this.weaponIndex] -= e,
6517 this.gathering = this.mouseState;
6518 else if (this.gathering || this.autoGather) {
6519 var T = !0;
6520 if (null != p.weapons[this.weaponIndex].gather)
6521 this.gather(f);
6522 else if (null != p.weapons[this.weaponIndex].projectile && this.hasRes(p.weapons[this.weaponIndex], this.skin ? this.skin.projCost : 0)) {
6523 this.useRes(p.weapons[this.weaponIndex], this.skin ? this.skin.projCost : 0),
6524 this.noMovTimer = 0;
6525 var I = p.weapons[this.weaponIndex].projectile
6526 , E = 2 * this.scale
6527 , M = this.skin && this.skin.aMlt ? this.skin.aMlt : 1;
6528 p.weapons[this.weaponIndex].rec && (this.xVel -= p.weapons[this.weaponIndex].rec * s(this.dir),
6529 this.yVel -= p.weapons[this.weaponIndex].rec * a(this.dir)),
6530 h.addProjectile(this.x + E * s(this.dir), this.y + E * a(this.dir), this.dir, p.projectiles[I].range * M, p.projectiles[I].speed * M, I, this, null, this.zIndex)
6531 } else
6532 T = !1;
6533 this.gathering = this.mouseState,
6534 T && (this.reloads[this.weaponIndex] = p.weapons[this.weaponIndex].speed * (this.skin && this.skin.atkSpd || 1))
6535 }
6536 }
6537 }
6538 }
6539 ,
6540 this.addWeaponXP = function(e) {
6541 this.weaponXP[this.weaponIndex] || (this.weaponXP[this.weaponIndex] = 0),
6542 this.weaponXP[this.weaponIndex] += e
6543 }
6544 ,
6545 this.earnXP = function(e) {
6546 this.age < n.maxAge && (this.XP += e,
6547 this.XP >= this.maxXP ? (this.age < n.maxAge ? (this.age++,
6548 this.XP = 0,
6549 this.maxXP *= 1.2) : this.XP = this.maxXP,
6550 this.upgradePoints++,
6551 y.send(this.id, "16", this.upgradePoints, this.upgrAge),
6552 y.send(this.id, "15", this.XP, l.fixTo(this.maxXP, 1), this.age)) : y.send(this.id, "15", this.XP))
6553 }
6554 ,
6555 this.changeHealth = function(e, t) {
6556 if (e > 0 && this.health >= this.maxHealth)
6557 return !1;
6558 e < 0 && this.skin && (e *= this.skin.dmgMult || 1),
6559 e < 0 && this.tail && (e *= this.tail.dmgMult || 1),
6560 e < 0 && (this.hitTime = Date.now()),
6561 this.health += e,
6562 this.health > this.maxHealth && (e -= this.health - this.maxHealth,
6563 this.health = this.maxHealth),
6564 this.health <= 0 && this.kill(t);
6565 for (var n = 0; n < f.length; ++n)
6566 this.sentTo[f[n].id] && y.send(f[n].id, "h", this.sid, Math.round(this.health));
6567 return !t || !t.canSee(this) || t == this && e < 0 || y.send(t.id, "t", Math.round(this.x), Math.round(this.y), Math.round(-e), 1),
6568 !0
6569 }
6570 ,
6571 this.kill = function(e) {
6572 e && e.alive && (e.kills++,
6573 e.skin && e.skin.goldSteal ? k(e, Math.round(this.points / 2)) : k(e, Math.round(100 * this.age * (e.skin && e.skin.kScrM ? e.skin.kScrM : 1))),
6574 y.send(e.id, "9", "kills", e.kills, 1)),
6575 this.alive = !1,
6576 y.send(this.id, "11"),
6577 v()
6578 }
6579 ,
6580 this.addResource = function(e, t, i) {
6581 !i && t > 0 && this.addWeaponXP(t),
6582 3 == e ? k(this, t, !0) : (this[n.resourceTypes[e]] += t,
6583 y.send(this.id, "9", n.resourceTypes[e], this[n.resourceTypes[e]], 1))
6584 }
6585 ,
6586 this.changeItemCount = function(e, t) {
6587 this.itemCounts[e] = this.itemCounts[e] || 0,
6588 this.itemCounts[e] += t,
6589 y.send(this.id, "14", e, this.itemCounts[e])
6590 }
6591 ,
6592 this.buildItem = function(e) {
6593 var t = this.scale + e.scale + (e.placeOffset || 0)
6594 , n = this.x + t * s(this.dir)
6595 , i = this.y + t * a(this.dir);
6596 if (this.canBuild(e) && !(e.consume && this.skin && this.skin.noEat) && (e.consume || u.checkItemLocation(n, i, e.scale, .6, e.id, !1, this))) {
6597 var r = !1;
6598 if (e.consume) {
6599 if (this.hitTime) {
6600 var o = Date.now() - this.hitTime;
6601 this.hitTime = 0,
6602 o <= 120 ? (this.shameCount++,
6603 this.shameCount >= 8 && (this.shameTimer = 3e4,
6604 this.shameCount = 0)) : (this.shameCount -= 2,
6605 this.shameCount <= 0 && (this.shameCount = 0))
6606 }
6607 this.shameTimer <= 0 && (r = e.consume(this))
6608 } else
6609 r = !0,
6610 e.group.limit && this.changeItemCount(e.group.id, 1),
6611 e.pps && (this.pps += e.pps),
6612 u.add(u.objects.length, n, i, this.dir, e.scale, e.type, e, !1, this);
6613 r && (this.useRes(e),
6614 this.buildIndex = -1)
6615 }
6616 }
6617 ,
6618 this.hasRes = function(e, t) {
6619 for (var n = 0; n < e.req.length; ) {
6620 if (this[e.req[n]] < Math.round(e.req[n + 1] * (t || 1)))
6621 return !1;
6622 n += 2
6623 }
6624 return !0
6625 }
6626 ,
6627 this.useRes = function(e, t) {
6628 if (!n.inSandbox)
6629 for (var i = 0; i < e.req.length; )
6630 this.addResource(n.resourceTypes.indexOf(e.req[i]), -Math.round(e.req[i + 1] * (t || 1))),
6631 i += 2
6632 }
6633 ,
6634 this.canBuild = function(e) {
6635 return !!n.inSandbox || !(e.group.limit && this.itemCounts[e.group.id] >= e.group.limit) && this.hasRes(e)
6636 }
6637 ,
6638 this.gather = function() {
6639 this.noMovTimer = 0,
6640 this.slowMult -= p.weapons[this.weaponIndex].hitSlow || .3,
6641 this.slowMult < 0 && (this.slowMult = 0);
6642 for (var e, t, i, r = n.fetchVariant(this), o = r.poison, c = r.val, h = {}, g = u.getGridArrays(this.x, this.y, p.weapons[this.weaponIndex].range), m = 0; m < g.length; ++m)
6643 for (var y = 0; y < g[m].length; ++y)
6644 if ((t = g[m][y]).active && !t.dontGather && !h[t.sid] && t.visibleToPlayer(this) && l.getDistance(this.x, this.y, t.x, t.y) - t.scale <= p.weapons[this.weaponIndex].range && (e = l.getDirection(t.x, t.y, this.x, this.y),
6645 l.getAngleDist(e, this.dir) <= n.gatherAngle)) {
6646 if (h[t.sid] = 1,
6647 t.health) {
6648 if (t.changeHealth(-p.weapons[this.weaponIndex].dmg * c * (p.weapons[this.weaponIndex].sDmg || 1) * (this.skin && this.skin.bDmg ? this.skin.bDmg : 1), this)) {
6649 for (var k = 0; k < t.req.length; )
6650 this.addResource(n.resourceTypes.indexOf(t.req[k]), t.req[k + 1]),
6651 k += 2;
6652 u.disableObj(t)
6653 }
6654 } else {
6655 this.earnXP(4 * p.weapons[this.weaponIndex].gather);
6656 var v = p.weapons[this.weaponIndex].gather + (3 == t.type ? 4 : 0);
6657 this.skin && this.skin.extraGold && this.addResource(3, 1),
6658 this.addResource(t.type, v)
6659 }
6660 i = !0,
6661 u.hitObj(t, e)
6662 }
6663 for (y = 0; y < f.length + d.length; ++y)
6664 if ((t = f[y] || d[y - f.length]) != this && t.alive && (!t.team || t.team != this.team) && l.getDistance(this.x, this.y, t.x, t.y) - 1.8 * t.scale <= p.weapons[this.weaponIndex].range && (e = l.getDirection(t.x, t.y, this.x, this.y),
6665 l.getAngleDist(e, this.dir) <= n.gatherAngle)) {
6666 var w = p.weapons[this.weaponIndex].steal;
6667 w && t.addResource && (w = Math.min(t.points || 0, w),
6668 this.addResource(3, w),
6669 t.addResource(3, -w));
6670 var b = c;
6671 null != t.weaponIndex && p.weapons[t.weaponIndex].shield && l.getAngleDist(e + Math.PI, t.dir) <= n.shieldAngle && (b = p.weapons[t.weaponIndex].shield);
6672 var x = p.weapons[this.weaponIndex].dmg * (this.skin && this.skin.dmgMultO ? this.skin.dmgMultO : 1) * (this.tail && this.tail.dmgMultO ? this.tail.dmgMultO : 1)
6673 , S = .3 * (t.weightM || 1) + (p.weapons[this.weaponIndex].knock || 0);
6674 t.xVel += S * s(e),
6675 t.yVel += S * a(e),
6676 this.skin && this.skin.healD && this.changeHealth(x * b * this.skin.healD, this),
6677 this.tail && this.tail.healD && this.changeHealth(x * b * this.tail.healD, this),
6678 t.skin && t.skin.dmg && 1 == b && this.changeHealth(-x * t.skin.dmg, t),
6679 t.tail && t.tail.dmg && 1 == b && this.changeHealth(-x * t.tail.dmg, t),
6680 !(t.dmgOverTime && this.skin && this.skin.poisonDmg) || t.skin && t.skin.poisonRes || (t.dmgOverTime.dmg = this.skin.poisonDmg,
6681 t.dmgOverTime.time = this.skin.poisonTime || 1,
6682 t.dmgOverTime.doer = this),
6683 !t.dmgOverTime || !o || t.skin && t.skin.poisonRes || (t.dmgOverTime.dmg = 5,
6684 t.dmgOverTime.time = 5,
6685 t.dmgOverTime.doer = this),
6686 t.skin && t.skin.dmgK && (this.xVel -= t.skin.dmgK * s(e),
6687 this.yVel -= t.skin.dmgK * a(e)),
6688 t.changeHealth(-x * b, this, this)
6689 }
6690 this.sendAnimation(i ? 1 : 0)
6691 }
6692 ,
6693 this.sendAnimation = function(e) {
6694 for (var t = 0; t < f.length; ++t)
6695 this.sentTo[f[t].id] && this.canSee(f[t]) && y.send(f[t].id, "7", this.sid, e ? 1 : 0, this.weaponIndex)
6696 }
6697 ;
6698 var x = 0
6699 , S = 0;
6700 this.animate = function(e) {
6701 this.animTime > 0 && (this.animTime -= e,
6702 this.animTime <= 0 ? (this.animTime = 0,
6703 this.dirPlus = 0,
6704 x = 0,
6705 S = 0) : 0 == S ? (x += e / (this.animSpeed * n.hitReturnRatio),
6706 this.dirPlus = l.lerp(0, this.targetAngle, Math.min(1, x)),
6707 x >= 1 && (x = 1,
6708 S = 1)) : (x -= e / (this.animSpeed * (1 - n.hitReturnRatio)),
6709 this.dirPlus = l.lerp(0, this.targetAngle, Math.max(0, x))))
6710 }
6711 ,
6712 this.startAnim = function(e, t) {
6713 this.animTime = this.animSpeed = p.weapons[t].speed,
6714 this.targetAngle = e ? -n.hitAngle : -Math.PI,
6715 x = 0,
6716 S = 0
6717 }
6718 ,
6719 this.canSee = function(e) {
6720 if (!e)
6721 return !1;
6722 if (e.skin && e.skin.invisTimer && e.noMovTimer >= e.skin.invisTimer)
6723 return !1;
6724 var t = r(e.x - this.x) - e.scale
6725 , i = r(e.y - this.y) - e.scale;
6726 return t <= n.maxScreenWidth / 2 * 1.3 && i <= n.maxScreenHeight / 2 * 1.3
6727 }
6728 }
6729}
6730, function(e, t, n) {
6731 const i = n(50).words
6732 , r = n(51).array;
6733 e.exports = class {
6734 constructor(e={}) {
6735 Object.assign(this, {
6736 list: e.emptyList && [] || Array.prototype.concat.apply(i, [r, e.list || []]),
6737 exclude: e.exclude || [],
6738 placeHolder: e.placeHolder || "*",
6739 regex: e.regex || /[^a-zA-Z0-9|\$|\@]|\^/g,
6740 replaceRegex: e.replaceRegex || /\w/g
6741 })
6742 }
6743 isProfane(e) {
6744 return this.list.filter(t=>{
6745 const n = new RegExp(`\\b${t.replace(/(\W)/g, "\\$1")}\\b`,"gi");
6746 return !this.exclude.includes(t.toLowerCase()) && n.test(e)
6747 }
6748 ).length > 0 || !1
6749 }
6750 replaceWord(e) {
6751 return e.replace(this.regex, "").replace(this.replaceRegex, this.placeHolder)
6752 }
6753 clean(e) {
6754 return e.split(/\b/).map(e=>this.isProfane(e) ? this.replaceWord(e) : e).join("")
6755 }
6756 addWords() {
6757 let e = Array.from(arguments);
6758 this.list.push(...e),
6759 e.map(e=>e.toLowerCase()).forEach(e=>{
6760 this.exclude.includes(e) && this.exclude.splice(this.exclude.indexOf(e), 1)
6761 }
6762 )
6763 }
6764 removeWords() {
6765 this.exclude.push(...Array.from(arguments).map(e=>e.toLowerCase()))
6766 }
6767 }
6768}
6769, function(e) {
6770 e.exports = {
6771 words: ["ahole", "anus", "ash0le", "ash0les", "asholes", "ass", "Ass Monkey", "Assface", "assh0le", "assh0lez", "asshole", "assholes", "assholz", "asswipe", "azzhole", "bassterds", "bastard", "bastards", "bastardz", "basterds", "basterdz", "Biatch", "bitch", "bitches", "Blow Job", "boffing", "butthole", "buttwipe", "c0ck", "c0cks", "c0k", "Carpet Muncher", "cawk", "cawks", "Clit", "cnts", "cntz", "cock", "cockhead", "cock-head", "cocks", "CockSucker", "cock-sucker", "crap", "cum", "cunt", "cunts", "cuntz", "dick", "dild0", "dild0s", "dildo", "dildos", "dilld0", "dilld0s", "dominatricks", "dominatrics", "dominatrix", "dyke", "enema", "f u c k", "f u c k e r", "fag", "fag1t", "faget", "fagg1t", "faggit", "faggot", "fagg0t", "fagit", "fags", "fagz", "faig", "faigs", "fart", "flipping the bird", "fuck", "fucker", "fuckin", "fucking", "fucks", "Fudge Packer", "fuk", "Fukah", "Fuken", "fuker", "Fukin", "Fukk", "Fukkah", "Fukken", "Fukker", "Fukkin", "g00k", "God-damned", "h00r", "h0ar", "h0re", "hells", "hoar", "hoor", "hoore", "jackoff", "jap", "japs", "jerk-off", "jisim", "jiss", "jizm", "jizz", "knob", "knobs", "knobz", "kunt", "kunts", "kuntz", "Lezzian", "Lipshits", "Lipshitz", "masochist", "masokist", "massterbait", "masstrbait", "masstrbate", "masterbaiter", "masterbate", "masterbates", "Motha Fucker", "Motha Fuker", "Motha Fukkah", "Motha Fukker", "Mother Fucker", "Mother Fukah", "Mother Fuker", "Mother Fukkah", "Mother Fukker", "mother-fucker", "Mutha Fucker", "Mutha Fukah", "Mutha Fuker", "Mutha Fukkah", "Mutha Fukker", "n1gr", "nastt", "nigger;", "nigur;", "niiger;", "niigr;", "orafis", "orgasim;", "orgasm", "orgasum", "oriface", "orifice", "orifiss", "packi", "packie", "packy", "paki", "pakie", "paky", "pecker", "peeenus", "peeenusss", "peenus", "peinus", "pen1s", "penas", "penis", "penis-breath", "penus", "penuus", "Phuc", "Phuck", "Phuk", "Phuker", "Phukker", "polac", "polack", "polak", "Poonani", "pr1c", "pr1ck", "pr1k", "pusse", "pussee", "pussy", "puuke", "puuker", "queer", "queers", "queerz", "qweers", "qweerz", "qweir", "recktum", "rectum", "retard", "sadist", "scank", "schlong", "screwing", "semen", "sex", "sexy", "Sh!t", "sh1t", "sh1ter", "sh1ts", "sh1tter", "sh1tz", "shit", "shits", "shitter", "Shitty", "Shity", "shitz", "Shyt", "Shyte", "Shytty", "Shyty", "skanck", "skank", "skankee", "skankey", "skanks", "Skanky", "slag", "slut", "sluts", "Slutty", "slutz", "son-of-a-bitch", "tit", "turd", "va1jina", "vag1na", "vagiina", "vagina", "vaj1na", "vajina", "vullva", "vulva", "w0p", "wh00r", "wh0re", "whore", "xrated", "xxx", "b!+ch", "bitch", "blowjob", "clit", "arschloch", "fuck", "shit", "ass", "asshole", "b!tch", "b17ch", "b1tch", "bastard", "bi+ch", "boiolas", "buceta", "c0ck", "cawk", "chink", "cipa", "clits", "cock", "cum", "cunt", "dildo", "dirsa", "ejakulate", "fatass", "fcuk", "fuk", "fux0r", "hoer", "hore", "jism", "kawk", "l3itch", "l3i+ch", "lesbian", "masturbate", "masterbat*", "masterbat3", "motherfucker", "s.o.b.", "mofo", "nazi", "nigga", "nigger", "nutsack", "phuck", "pimpis", "pusse", "pussy", "scrotum", "sh!t", "shemale", "shi+", "sh!+", "slut", "smut", "teets", "tits", "boobs", "b00bs", "teez", "testical", "testicle", "titt", "w00se", "jackoff", "wank", "whoar", "whore", "*damn", "*dyke", "*fuck*", "*shit*", "@$$", "amcik", "andskota", "arse*", "assrammer", "ayir", "bi7ch", "bitch*", "bollock*", "breasts", "butt-pirate", "cabron", "cazzo", "chraa", "chuj", "Cock*", "cunt*", "d4mn", "daygo", "dego", "dick*", "dike*", "dupa", "dziwka", "ejackulate", "Ekrem*", "Ekto", "enculer", "faen", "fag*", "fanculo", "fanny", "feces", "feg", "Felcher", "ficken", "fitt*", "Flikker", "foreskin", "Fotze", "Fu(*", "fuk*", "futkretzn", "gook", "guiena", "h0r", "h4x0r", "hell", "helvete", "hoer*", "honkey", "Huevon", "hui", "injun", "jizz", "kanker*", "kike", "klootzak", "kraut", "knulle", "kuk", "kuksuger", "Kurac", "kurwa", "kusi*", "kyrpa*", "lesbo", "mamhoon", "masturbat*", "merd*", "mibun", "monkleigh", "mouliewop", "muie", "mulkku", "muschi", "nazis", "nepesaurio", "nigger*", "orospu", "paska*", "perse", "picka", "pierdol*", "pillu*", "pimmel", "piss*", "pizda", "poontsee", "poop", "porn", "p0rn", "pr0n", "preteen", "pula", "pule", "puta", "puto", "qahbeh", "queef*", "rautenberg", "schaffer", "scheiss*", "schlampe", "schmuck", "screw", "sh!t*", "sharmuta", "sharmute", "shipal", "shiz", "skribz", "skurwysyn", "sphencter", "spic", "spierdalaj", "splooge", "suka", "b00b*", "testicle*", "titt*", "twat", "vittu", "wank*", "wetback*", "wichser", "wop*", "yed", "zabourah"]
6772 }
6773}
6774, function(e, t, n) {
6775 e.exports = {
6776 object: n(52),
6777 array: n(53),
6778 regex: n(54)
6779 }
6780}
6781, function(e, t) {
6782 e.exports = {
6783 "4r5e": 1,
6784 "5h1t": 1,
6785 "5hit": 1,
6786 a55: 1,
6787 anal: 1,
6788 anus: 1,
6789 ar5e: 1,
6790 arrse: 1,
6791 arse: 1,
6792 ass: 1,
6793 "ass-fucker": 1,
6794 asses: 1,
6795 assfucker: 1,
6796 assfukka: 1,
6797 asshole: 1,
6798 assholes: 1,
6799 asswhole: 1,
6800 a_s_s: 1,
6801 "b!tch": 1,
6802 b00bs: 1,
6803 b17ch: 1,
6804 b1tch: 1,
6805 ballbag: 1,
6806 balls: 1,
6807 ballsack: 1,
6808 bastard: 1,
6809 beastial: 1,
6810 beastiality: 1,
6811 bellend: 1,
6812 bestial: 1,
6813 bestiality: 1,
6814 "bi+ch": 1,
6815 biatch: 1,
6816 bitch: 1,
6817 bitcher: 1,
6818 bitchers: 1,
6819 bitches: 1,
6820 bitchin: 1,
6821 bitching: 1,
6822 bloody: 1,
6823 "blow job": 1,
6824 blowjob: 1,
6825 blowjobs: 1,
6826 boiolas: 1,
6827 bollock: 1,
6828 bollok: 1,
6829 boner: 1,
6830 boob: 1,
6831 boobs: 1,
6832 booobs: 1,
6833 boooobs: 1,
6834 booooobs: 1,
6835 booooooobs: 1,
6836 breasts: 1,
6837 buceta: 1,
6838 bugger: 1,
6839 bum: 1,
6840 "bunny fucker": 1,
6841 butt: 1,
6842 butthole: 1,
6843 buttmuch: 1,
6844 buttplug: 1,
6845 c0ck: 1,
6846 c0cksucker: 1,
6847 "carpet muncher": 1,
6848 cawk: 1,
6849 chink: 1,
6850 cipa: 1,
6851 cl1t: 1,
6852 clit: 1,
6853 clitoris: 1,
6854 clits: 1,
6855 cnut: 1,
6856 cock: 1,
6857 "cock-sucker": 1,
6858 cockface: 1,
6859 cockhead: 1,
6860 cockmunch: 1,
6861 cockmuncher: 1,
6862 cocks: 1,
6863 cocksuck: 1,
6864 cocksucked: 1,
6865 cocksucker: 1,
6866 cocksucking: 1,
6867 cocksucks: 1,
6868 cocksuka: 1,
6869 cocksukka: 1,
6870 cok: 1,
6871 cokmuncher: 1,
6872 coksucka: 1,
6873 coon: 1,
6874 cox: 1,
6875 crap: 1,
6876 cum: 1,
6877 cummer: 1,
6878 cumming: 1,
6879 cums: 1,
6880 cumshot: 1,
6881 cunilingus: 1,
6882 cunillingus: 1,
6883 cunnilingus: 1,
6884 cunt: 1,
6885 cuntlick: 1,
6886 cuntlicker: 1,
6887 cuntlicking: 1,
6888 cunts: 1,
6889 cyalis: 1,
6890 cyberfuc: 1,
6891 cyberfuck: 1,
6892 cyberfucked: 1,
6893 cyberfucker: 1,
6894 cyberfuckers: 1,
6895 cyberfucking: 1,
6896 d1ck: 1,
6897 damn: 1,
6898 dick: 1,
6899 dickhead: 1,
6900 dildo: 1,
6901 dildos: 1,
6902 dink: 1,
6903 dinks: 1,
6904 dirsa: 1,
6905 dlck: 1,
6906 "dog-fucker": 1,
6907 doggin: 1,
6908 dogging: 1,
6909 donkeyribber: 1,
6910 doosh: 1,
6911 duche: 1,
6912 dyke: 1,
6913 ejaculate: 1,
6914 ejaculated: 1,
6915 ejaculates: 1,
6916 ejaculating: 1,
6917 ejaculatings: 1,
6918 ejaculation: 1,
6919 ejakulate: 1,
6920 "f u c k": 1,
6921 "f u c k e r": 1,
6922 f4nny: 1,
6923 fag: 1,
6924 fagging: 1,
6925 faggitt: 1,
6926 faggot: 1,
6927 faggs: 1,
6928 fagot: 1,
6929 fagots: 1,
6930 fags: 1,
6931 fanny: 1,
6932 fannyflaps: 1,
6933 fannyfucker: 1,
6934 fanyy: 1,
6935 fatass: 1,
6936 fcuk: 1,
6937 fcuker: 1,
6938 fcuking: 1,
6939 feck: 1,
6940 fecker: 1,
6941 felching: 1,
6942 fellate: 1,
6943 fellatio: 1,
6944 fingerfuck: 1,
6945 fingerfucked: 1,
6946 fingerfucker: 1,
6947 fingerfuckers: 1,
6948 fingerfucking: 1,
6949 fingerfucks: 1,
6950 fistfuck: 1,
6951 fistfucked: 1,
6952 fistfucker: 1,
6953 fistfuckers: 1,
6954 fistfucking: 1,
6955 fistfuckings: 1,
6956 fistfucks: 1,
6957 flange: 1,
6958 fook: 1,
6959 fooker: 1,
6960 fuck: 1,
6961 fucka: 1,
6962 fucked: 1,
6963 fucker: 1,
6964 fuckers: 1,
6965 fuckhead: 1,
6966 fuckheads: 1,
6967 fuckin: 1,
6968 fucking: 1,
6969 fuckings: 1,
6970 fuckingshitmotherfucker: 1,
6971 fuckme: 1,
6972 fucks: 1,
6973 fuckwhit: 1,
6974 fuckwit: 1,
6975 "fudge packer": 1,
6976 fudgepacker: 1,
6977 fuk: 1,
6978 fuker: 1,
6979 fukker: 1,
6980 fukkin: 1,
6981 fuks: 1,
6982 fukwhit: 1,
6983 fukwit: 1,
6984 fux: 1,
6985 fux0r: 1,
6986 f_u_c_k: 1,
6987 gangbang: 1,
6988 gangbanged: 1,
6989 gangbangs: 1,
6990 gaylord: 1,
6991 gaysex: 1,
6992 goatse: 1,
6993 God: 1,
6994 "god-dam": 1,
6995 "god-damned": 1,
6996 goddamn: 1,
6997 goddamned: 1,
6998 hardcoresex: 1,
6999 hell: 1,
7000 heshe: 1,
7001 hoar: 1,
7002 hoare: 1,
7003 hoer: 1,
7004 homo: 1,
7005 hore: 1,
7006 horniest: 1,
7007 horny: 1,
7008 hotsex: 1,
7009 "jack-off": 1,
7010 jackoff: 1,
7011 jap: 1,
7012 "jerk-off": 1,
7013 jism: 1,
7014 jiz: 1,
7015 jizm: 1,
7016 jizz: 1,
7017 kawk: 1,
7018 knob: 1,
7019 knobead: 1,
7020 knobed: 1,
7021 knobend: 1,
7022 knobhead: 1,
7023 knobjocky: 1,
7024 knobjokey: 1,
7025 kock: 1,
7026 kondum: 1,
7027 kondums: 1,
7028 kum: 1,
7029 kummer: 1,
7030 kumming: 1,
7031 kums: 1,
7032 kunilingus: 1,
7033 "l3i+ch": 1,
7034 l3itch: 1,
7035 labia: 1,
7036 lust: 1,
7037 lusting: 1,
7038 m0f0: 1,
7039 m0fo: 1,
7040 m45terbate: 1,
7041 ma5terb8: 1,
7042 ma5terbate: 1,
7043 masochist: 1,
7044 "master-bate": 1,
7045 masterb8: 1,
7046 "masterbat*": 1,
7047 masterbat3: 1,
7048 masterbate: 1,
7049 masterbation: 1,
7050 masterbations: 1,
7051 masturbate: 1,
7052 "mo-fo": 1,
7053 mof0: 1,
7054 mofo: 1,
7055 mothafuck: 1,
7056 mothafucka: 1,
7057 mothafuckas: 1,
7058 mothafuckaz: 1,
7059 mothafucked: 1,
7060 mothafucker: 1,
7061 mothafuckers: 1,
7062 mothafuckin: 1,
7063 mothafucking: 1,
7064 mothafuckings: 1,
7065 mothafucks: 1,
7066 "mother fucker": 1,
7067 motherfuck: 1,
7068 motherfucked: 1,
7069 motherfucker: 1,
7070 motherfuckers: 1,
7071 motherfuckin: 1,
7072 motherfucking: 1,
7073 motherfuckings: 1,
7074 motherfuckka: 1,
7075 motherfucks: 1,
7076 muff: 1,
7077 mutha: 1,
7078 muthafecker: 1,
7079 muthafuckker: 1,
7080 muther: 1,
7081 mutherfucker: 1,
7082 n1gga: 1,
7083 n1gger: 1,
7084 nazi: 1,
7085 nigg3r: 1,
7086 nigg4h: 1,
7087 nigga: 1,
7088 niggah: 1,
7089 niggas: 1,
7090 niggaz: 1,
7091 nigger: 1,
7092 niggers: 1,
7093 nob: 1,
7094 "nob jokey": 1,
7095 nobhead: 1,
7096 nobjocky: 1,
7097 nobjokey: 1,
7098 numbnuts: 1,
7099 nutsack: 1,
7100 orgasim: 1,
7101 orgasims: 1,
7102 orgasm: 1,
7103 orgasms: 1,
7104 p0rn: 1,
7105 pawn: 1,
7106 pecker: 1,
7107 penis: 1,
7108 penisfucker: 1,
7109 phonesex: 1,
7110 phuck: 1,
7111 phuk: 1,
7112 phuked: 1,
7113 phuking: 1,
7114 phukked: 1,
7115 phukking: 1,
7116 phuks: 1,
7117 phuq: 1,
7118 pigfucker: 1,
7119 pimpis: 1,
7120 piss: 1,
7121 pissed: 1,
7122 pisser: 1,
7123 pissers: 1,
7124 pisses: 1,
7125 pissflaps: 1,
7126 pissin: 1,
7127 pissing: 1,
7128 pissoff: 1,
7129 poop: 1,
7130 porn: 1,
7131 porno: 1,
7132 pornography: 1,
7133 pornos: 1,
7134 prick: 1,
7135 pricks: 1,
7136 pron: 1,
7137 pube: 1,
7138 pusse: 1,
7139 pussi: 1,
7140 pussies: 1,
7141 pussy: 1,
7142 pussys: 1,
7143 rectum: 1,
7144 retard: 1,
7145 rimjaw: 1,
7146 rimming: 1,
7147 "s hit": 1,
7148 "s.o.b.": 1,
7149 sadist: 1,
7150 schlong: 1,
7151 screwing: 1,
7152 scroat: 1,
7153 scrote: 1,
7154 scrotum: 1,
7155 semen: 1,
7156 sex: 1,
7157 "sh!+": 1,
7158 "sh!t": 1,
7159 sh1t: 1,
7160 shag: 1,
7161 shagger: 1,
7162 shaggin: 1,
7163 shagging: 1,
7164 shemale: 1,
7165 "shi+": 1,
7166 shit: 1,
7167 shitdick: 1,
7168 shite: 1,
7169 shited: 1,
7170 shitey: 1,
7171 shitfuck: 1,
7172 shitfull: 1,
7173 shithead: 1,
7174 shiting: 1,
7175 shitings: 1,
7176 shits: 1,
7177 shitted: 1,
7178 shitter: 1,
7179 shitters: 1,
7180 shitting: 1,
7181 shittings: 1,
7182 shitty: 1,
7183 skank: 1,
7184 slut: 1,
7185 sluts: 1,
7186 smegma: 1,
7187 smut: 1,
7188 snatch: 1,
7189 "son-of-a-bitch": 1,
7190 spac: 1,
7191 spunk: 1,
7192 s_h_i_t: 1,
7193 t1tt1e5: 1,
7194 t1tties: 1,
7195 teets: 1,
7196 teez: 1,
7197 testical: 1,
7198 testicle: 1,
7199 tit: 1,
7200 titfuck: 1,
7201 tits: 1,
7202 titt: 1,
7203 tittie5: 1,
7204 tittiefucker: 1,
7205 titties: 1,
7206 tittyfuck: 1,
7207 tittywank: 1,
7208 titwank: 1,
7209 tosser: 1,
7210 turd: 1,
7211 tw4t: 1,
7212 twat: 1,
7213 twathead: 1,
7214 twatty: 1,
7215 twunt: 1,
7216 twunter: 1,
7217 v14gra: 1,
7218 v1gra: 1,
7219 vagina: 1,
7220 viagra: 1,
7221 vulva: 1,
7222 w00se: 1,
7223 wang: 1,
7224 wank: 1,
7225 wanker: 1,
7226 wanky: 1,
7227 whoar: 1,
7228 whore: 1,
7229 willies: 1,
7230 willy: 1,
7231 xrated: 1,
7232 xxx: 1
7233 }
7234}
7235, function(e, t) {
7236 e.exports = ["4r5e", "5h1t", "5hit", "a55", "anal", "anus", "ar5e", "arrse", "arse", "ass", "ass-fucker", "asses", "assfucker", "assfukka", "asshole", "assholes", "asswhole", "a_s_s", "b!tch", "b00bs", "b17ch", "b1tch", "ballbag", "balls", "ballsack", "bastard", "beastial", "beastiality", "bellend", "bestial", "bestiality", "bi+ch", "biatch", "bitch", "bitcher", "bitchers", "bitches", "bitchin", "bitching", "bloody", "blow job", "blowjob", "blowjobs", "boiolas", "bollock", "bollok", "boner", "boob", "boobs", "booobs", "boooobs", "booooobs", "booooooobs", "breasts", "buceta", "bugger", "bum", "bunny fucker", "butt", "butthole", "buttmuch", "buttplug", "c0ck", "c0cksucker", "carpet muncher", "cawk", "chink", "cipa", "cl1t", "clit", "clitoris", "clits", "cnut", "cock", "cock-sucker", "cockface", "cockhead", "cockmunch", "cockmuncher", "cocks", "cocksuck", "cocksucked", "cocksucker", "cocksucking", "cocksucks", "cocksuka", "cocksukka", "cok", "cokmuncher", "coksucka", "coon", "cox", "crap", "cum", "cummer", "cumming", "cums", "cumshot", "cunilingus", "cunillingus", "cunnilingus", "cunt", "cuntlick", "cuntlicker", "cuntlicking", "cunts", "cyalis", "cyberfuc", "cyberfuck", "cyberfucked", "cyberfucker", "cyberfuckers", "cyberfucking", "d1ck", "damn", "dick", "dickhead", "dildo", "dildos", "dink", "dinks", "dirsa", "dlck", "dog-fucker", "doggin", "dogging", "donkeyribber", "doosh", "duche", "dyke", "ejaculate", "ejaculated", "ejaculates", "ejaculating", "ejaculatings", "ejaculation", "ejakulate", "f u c k", "f u c k e r", "f4nny", "fag", "fagging", "faggitt", "faggot", "faggs", "fagot", "fagots", "fags", "fanny", "fannyflaps", "fannyfucker", "fanyy", "fatass", "fcuk", "fcuker", "fcuking", "feck", "fecker", "felching", "fellate", "fellatio", "fingerfuck", "fingerfucked", "fingerfucker", "fingerfuckers", "fingerfucking", "fingerfucks", "fistfuck", "fistfucked", "fistfucker", "fistfuckers", "fistfucking", "fistfuckings", "fistfucks", "flange", "fook", "fooker", "fuck", "fucka", "fucked", "fucker", "fuckers", "fuckhead", "fuckheads", "fuckin", "fucking", "fuckings", "fuckingshitmotherfucker", "fuckme", "fucks", "fuckwhit", "fuckwit", "fudge packer", "fudgepacker", "fuk", "fuker", "fukker", "fukkin", "fuks", "fukwhit", "fukwit", "fux", "fux0r", "f_u_c_k", "gangbang", "gangbanged", "gangbangs", "gaylord", "gaysex", "goatse", "God", "god-dam", "god-damned", "goddamn", "goddamned", "hardcoresex", "hell", "heshe", "hoar", "hoare", "hoer", "homo", "hore", "horniest", "horny", "hotsex", "jack-off", "jackoff", "jap", "jerk-off", "jism", "jiz", "jizm", "jizz", "kawk", "knob", "knobead", "knobed", "knobend", "knobhead", "knobjocky", "knobjokey", "kock", "kondum", "kondums", "kum", "kummer", "kumming", "kums", "kunilingus", "l3i+ch", "l3itch", "labia", "lust", "lusting", "m0f0", "m0fo", "m45terbate", "ma5terb8", "ma5terbate", "masochist", "master-bate", "masterb8", "masterbat*", "masterbat3", "masterbate", "masterbation", "masterbations", "masturbate", "mo-fo", "mof0", "mofo", "mothafuck", "mothafucka", "mothafuckas", "mothafuckaz", "mothafucked", "mothafucker", "mothafuckers", "mothafuckin", "mothafucking", "mothafuckings", "mothafucks", "mother fucker", "motherfuck", "motherfucked", "motherfucker", "motherfuckers", "motherfuckin", "motherfucking", "motherfuckings", "motherfuckka", "motherfucks", "muff", "mutha", "muthafecker", "muthafuckker", "muther", "mutherfucker", "n1gga", "n1gger", "nazi", "nigg3r", "nigg4h", "nigga", "niggah", "niggas", "niggaz", "nigger", "niggers", "nob", "nob jokey", "nobhead", "nobjocky", "nobjokey", "numbnuts", "nutsack", "orgasim", "orgasims", "orgasm", "orgasms", "p0rn", "pawn", "pecker", "penis", "penisfucker", "phonesex", "phuck", "phuk", "phuked", "phuking", "phukked", "phukking", "phuks", "phuq", "pigfucker", "pimpis", "piss", "pissed", "pisser", "pissers", "pisses", "pissflaps", "pissin", "pissing", "pissoff", "poop", "porn", "porno", "pornography", "pornos", "prick", "pricks", "pron", "pube", "pusse", "pussi", "pussies", "pussy", "pussys", "rectum", "retard", "rimjaw", "rimming", "s hit", "s.o.b.", "sadist", "schlong", "screwing", "scroat", "scrote", "scrotum", "semen", "sex", "sh!+", "sh!t", "sh1t", "shag", "shagger", "shaggin", "shagging", "shemale", "shi+", "shit", "shitdick", "shite", "shited", "shitey", "shitfuck", "shitfull", "shithead", "shiting", "shitings", "shits", "shitted", "shitter", "shitters", "shitting", "shittings", "shitty", "skank", "slut", "sluts", "smegma", "smut", "snatch", "son-of-a-bitch", "spac", "spunk", "s_h_i_t", "t1tt1e5", "t1tties", "teets", "teez", "testical", "testicle", "tit", "titfuck", "tits", "titt", "tittie5", "tittiefucker", "titties", "tittyfuck", "tittywank", "titwank", "tosser", "turd", "tw4t", "twat", "twathead", "twatty", "twunt", "twunter", "v14gra", "v1gra", "vagina", "viagra", "vulva", "w00se", "wang", "wank", "wanker", "wanky", "whoar", "whore", "willies", "willy", "xrated", "xxx"]
7237}
7238, function(e, t) {
7239 e.exports = /\b(4r5e|5h1t|5hit|a55|anal|anus|ar5e|arrse|arse|ass|ass-fucker|asses|assfucker|assfukka|asshole|assholes|asswhole|a_s_s|b!tch|b00bs|b17ch|b1tch|ballbag|balls|ballsack|bastard|beastial|beastiality|bellend|bestial|bestiality|bi\+ch|biatch|bitch|bitcher|bitchers|bitches|bitchin|bitching|bloody|blow job|blowjob|blowjobs|boiolas|bollock|bollok|boner|boob|boobs|booobs|boooobs|booooobs|booooooobs|breasts|buceta|bugger|bum|bunny fucker|butt|butthole|buttmuch|buttplug|c0ck|c0cksucker|carpet muncher|cawk|chink|cipa|cl1t|clit|clitoris|clits|cnut|cock|cock-sucker|cockface|cockhead|cockmunch|cockmuncher|cocks|cocksuck|cocksucked|cocksucker|cocksucking|cocksucks|cocksuka|cocksukka|cok|cokmuncher|coksucka|coon|cox|crap|cum|cummer|cumming|cums|cumshot|cunilingus|cunillingus|cunnilingus|cunt|cuntlick|cuntlicker|cuntlicking|cunts|cyalis|cyberfuc|cyberfuck|cyberfucked|cyberfucker|cyberfuckers|cyberfucking|d1ck|damn|dick|dickhead|dildo|dildos|dink|dinks|dirsa|dlck|dog-fucker|doggin|dogging|donkeyribber|doosh|duche|dyke|ejaculate|ejaculated|ejaculates|ejaculating|ejaculatings|ejaculation|ejakulate|f u c k|f u c k e r|f4nny|fag|fagging|faggitt|faggot|faggs|fagot|fagots|fags|fanny|fannyflaps|fannyfucker|fanyy|fatass|fcuk|fcuker|fcuking|feck|fecker|felching|fellate|fellatio|fingerfuck|fingerfucked|fingerfucker|fingerfuckers|fingerfucking|fingerfucks|fistfuck|fistfucked|fistfucker|fistfuckers|fistfucking|fistfuckings|fistfucks|flange|fook|fooker|fuck|fucka|fucked|fucker|fuckers|fuckhead|fuckheads|fuckin|fucking|fuckings|fuckingshitmotherfucker|fuckme|fucks|fuckwhit|fuckwit|fudge packer|fudgepacker|fuk|fuker|fukker|fukkin|fuks|fukwhit|fukwit|fux|fux0r|f_u_c_k|gangbang|gangbanged|gangbangs|gaylord|gaysex|goatse|God|god-dam|god-damned|goddamn|goddamned|hardcoresex|hell|heshe|hoar|hoare|hoer|homo|hore|horniest|horny|hotsex|jack-off|jackoff|jap|jerk-off|jism|jiz|jizm|jizz|kawk|knob|knobead|knobed|knobend|knobhead|knobjocky|knobjokey|kock|kondum|kondums|kum|kummer|kumming|kums|kunilingus|l3i\+ch|l3itch|labia|lust|lusting|m0f0|m0fo|m45terbate|ma5terb8|ma5terbate|masochist|master-bate|masterb8|masterbat*|masterbat3|masterbate|masterbation|masterbations|masturbate|mo-fo|mof0|mofo|mothafuck|mothafucka|mothafuckas|mothafuckaz|mothafucked|mothafucker|mothafuckers|mothafuckin|mothafucking|mothafuckings|mothafucks|mother fucker|motherfuck|motherfucked|motherfucker|motherfuckers|motherfuckin|motherfucking|motherfuckings|motherfuckka|motherfucks|muff|mutha|muthafecker|muthafuckker|muther|mutherfucker|n1gga|n1gger|nazi|nigg3r|nigg4h|nigga|niggah|niggas|niggaz|nigger|niggers|nob|nob jokey|nobhead|nobjocky|nobjokey|numbnuts|nutsack|orgasim|orgasims|orgasm|orgasms|p0rn|pawn|pecker|penis|penisfucker|phonesex|phuck|phuk|phuked|phuking|phukked|phukking|phuks|phuq|pigfucker|pimpis|piss|pissed|pisser|pissers|pisses|pissflaps|pissin|pissing|pissoff|poop|porn|porno|pornography|pornos|prick|pricks|pron|pube|pusse|pussi|pussies|pussy|pussys|rectum|retard|rimjaw|rimming|s hit|s.o.b.|sadist|schlong|screwing|scroat|scrote|scrotum|semen|sex|sh!\+|sh!t|sh1t|shag|shagger|shaggin|shagging|shemale|shi\+|shit|shitdick|shite|shited|shitey|shitfuck|shitfull|shithead|shiting|shitings|shits|shitted|shitter|shitters|shitting|shittings|shitty|skank|slut|sluts|smegma|smut|snatch|son-of-a-bitch|spac|spunk|s_h_i_t|t1tt1e5|t1tties|teets|teez|testical|testicle|tit|titfuck|tits|titt|tittie5|tittiefucker|titties|tittyfuck|tittywank|titwank|tosser|turd|tw4t|twat|twathead|twatty|twunt|twunter|v14gra|v1gra|vagina|viagra|vulva|w00se|wang|wank|wanker|wanky|whoar|whore|willies|willy|xrated|xxx)\b/gi
7240}
7241, function(e, t) {
7242 e.exports.hats = [{
7243 id: 45,
7244 name: "Shame!",
7245 dontSell: !0,
7246 price: 0,
7247 scale: 120,
7248 desc: "hacks are for losers"
7249 }, {
7250 id: 51,
7251 name: "Moo Cap",
7252 price: 0,
7253 scale: 120,
7254 desc: "coolest mooer around"
7255 }, {
7256 id: 50,
7257 name: "Apple Cap",
7258 price: 0,
7259 scale: 120,
7260 desc: "apple farms remembers"
7261 }, {
7262 id: 28,
7263 name: "Moo Head",
7264 price: 0,
7265 scale: 120,
7266 desc: "no effect"
7267 }, {
7268 id: 29,
7269 name: "Pig Head",
7270 price: 0,
7271 scale: 120,
7272 desc: "no effect"
7273 }, {
7274 id: 30,
7275 name: "Fluff Head",
7276 price: 0,
7277 scale: 120,
7278 desc: "no effect"
7279 }, {
7280 id: 36,
7281 name: "Pandou Head",
7282 price: 0,
7283 scale: 120,
7284 desc: "no effect"
7285 }, {
7286 id: 37,
7287 name: "Bear Head",
7288 price: 0,
7289 scale: 120,
7290 desc: "no effect"
7291 }, {
7292 id: 38,
7293 name: "Monkey Head",
7294 price: 0,
7295 scale: 120,
7296 desc: "no effect"
7297 }, {
7298 id: 44,
7299 name: "Polar Head",
7300 price: 0,
7301 scale: 120,
7302 desc: "no effect"
7303 }, {
7304 id: 35,
7305 name: "Fez Hat",
7306 price: 0,
7307 scale: 120,
7308 desc: "no effect"
7309 }, {
7310 id: 42,
7311 name: "Enigma Hat",
7312 price: 0,
7313 scale: 120,
7314 desc: "join the enigma army"
7315 }, {
7316 id: 43,
7317 name: "Blitz Hat",
7318 price: 0,
7319 scale: 120,
7320 desc: "hey everybody i'm blitz"
7321 }, {
7322 id: 49,
7323 name: "Bob XIII Hat",
7324 price: 0,
7325 scale: 120,
7326 desc: "like and subscribe"
7327 }, {
7328 id: 57,
7329 name: "Pumpkin",
7330 price: 50,
7331 scale: 120,
7332 desc: "Spooooky"
7333 }, {
7334 id: 8,
7335 name: "Bummle Hat",
7336 price: 100,
7337 scale: 120,
7338 desc: "no effect"
7339 }, {
7340 id: 2,
7341 name: "Straw Hat",
7342 price: 500,
7343 scale: 120,
7344 desc: "no effect"
7345 }, {
7346 id: 15,
7347 name: "Winter Cap",
7348 price: 600,
7349 scale: 120,
7350 desc: "allows you to move at normal speed in snow",
7351 coldM: 1
7352 }, {
7353 id: 5,
7354 name: "Cowboy Hat",
7355 price: 1e3,
7356 scale: 120,
7357 desc: "no effect"
7358 }, {
7359 id: 4,
7360 name: "Ranger Hat",
7361 price: 2e3,
7362 scale: 120,
7363 desc: "no effect"
7364 }, {
7365 id: 18,
7366 name: "Explorer Hat",
7367 price: 2e3,
7368 scale: 120,
7369 desc: "no effect"
7370 }, {
7371 id: 31,
7372 name: "Flipper Hat",
7373 price: 2500,
7374 scale: 120,
7375 desc: "have more control while in water",
7376 watrImm: !0
7377 }, {
7378 id: 1,
7379 name: "Marksman Cap",
7380 price: 3e3,
7381 scale: 120,
7382 desc: "increases arrow speed and range",
7383 aMlt: 1.3
7384 }, {
7385 id: 10,
7386 name: "Bush Gear",
7387 price: 3e3,
7388 scale: 160,
7389 desc: "allows you to disguise yourself as a bush"
7390 }, {
7391 id: 48,
7392 name: "Halo",
7393 price: 3e3,
7394 scale: 120,
7395 desc: "no effect"
7396 }, {
7397 id: 6,
7398 name: "Soldier Helmet",
7399 price: 4e3,
7400 scale: 120,
7401 desc: "reduces damage taken but slows movement",
7402 spdMult: .94,
7403 dmgMult: .75
7404 }, {
7405 id: 23,
7406 name: "Anti Venom Gear",
7407 price: 4e3,
7408 scale: 120,
7409 desc: "makes you immune to poison",
7410 poisonRes: 1
7411 }, {
7412 id: 13,
7413 name: "Medic Gear",
7414 price: 5e3,
7415 scale: 110,
7416 desc: "slowly regenerates health over time",
7417 healthRegen: 3
7418 }, {
7419 id: 9,
7420 name: "Miners Helmet",
7421 price: 5e3,
7422 scale: 120,
7423 desc: "earn 1 extra gold per resource",
7424 extraGold: 1
7425 }, {
7426 id: 32,
7427 name: "Musketeer Hat",
7428 price: 5e3,
7429 scale: 120,
7430 desc: "reduces cost of projectiles",
7431 projCost: .5
7432 }, {
7433 id: 7,
7434 name: "Bull Helmet",
7435 price: 6e3,
7436 scale: 120,
7437 desc: "increases damage done but drains health",
7438 healthRegen: -5,
7439 dmgMultO: 1.5,
7440 spdMult: .96
7441 }, {
7442 id: 22,
7443 name: "Emp Helmet",
7444 price: 6e3,
7445 scale: 120,
7446 desc: "turrets won't attack but you move slower",
7447 antiTurret: 1,
7448 spdMult: .7
7449 }, {
7450 id: 12,
7451 name: "Booster Hat",
7452 price: 6e3,
7453 scale: 120,
7454 desc: "increases your movement speed",
7455 spdMult: 1.16
7456 }, {
7457 id: 26,
7458 name: "Barbarian Armor",
7459 price: 8e3,
7460 scale: 120,
7461 desc: "knocks back enemies that attack you",
7462 dmgK: .6
7463 }, {
7464 id: 21,
7465 name: "Plague Mask",
7466 price: 1e4,
7467 scale: 120,
7468 desc: "melee attacks deal poison damage",
7469 poisonDmg: 5,
7470 poisonTime: 6
7471 }, {
7472 id: 46,
7473 name: "Bull Mask",
7474 price: 1e4,
7475 scale: 120,
7476 desc: "bulls won't target you unless you attack them",
7477 bullRepel: 1
7478 }, {
7479 id: 14,
7480 name: "Windmill Hat",
7481 topSprite: !0,
7482 price: 1e4,
7483 scale: 120,
7484 desc: "generates points while worn",
7485 pps: 1.5
7486 }, {
7487 id: 11,
7488 name: "Spike Gear",
7489 topSprite: !0,
7490 price: 1e4,
7491 scale: 120,
7492 desc: "deal damage to players that damage you",
7493 dmg: .45
7494 }, {
7495 id: 53,
7496 name: "Turret Gear",
7497 topSprite: !0,
7498 price: 1e4,
7499 scale: 120,
7500 desc: "you become a walking turret",
7501 turret: {
7502 proj: 1,
7503 range: 700,
7504 rate: 2500
7505 },
7506 spdMult: .7
7507 }, {
7508 id: 20,
7509 name: "Samurai Armor",
7510 price: 12e3,
7511 scale: 120,
7512 desc: "increased attack speed and fire rate",
7513 atkSpd: .78
7514 }, {
7515 id: 58,
7516 name: "Dark Knight",
7517 price: 12e3,
7518 scale: 120,
7519 desc: "restores health when you deal damage",
7520 healD: .4
7521 }, {
7522 id: 27,
7523 name: "Scavenger Gear",
7524 price: 15e3,
7525 scale: 120,
7526 desc: "earn double points for each kill",
7527 kScrM: 2
7528 }, {
7529 id: 40,
7530 name: "Tank Gear",
7531 price: 15e3,
7532 scale: 120,
7533 desc: "increased damage to buildings but slower movement",
7534 spdMult: .3,
7535 bDmg: 3.3
7536 }, {
7537 id: 52,
7538 name: "Thief Gear",
7539 price: 15e3,
7540 scale: 120,
7541 desc: "steal half of a players gold when you kill them",
7542 goldSteal: .5
7543 }, {
7544 id: 55,
7545 name: "Bloodthirster",
7546 price: 2e4,
7547 scale: 120,
7548 desc: "Restore Health when dealing damage. And increased damage",
7549 healD: .25,
7550 dmgMultO: 1.2
7551 }, {
7552 id: 56,
7553 name: "Assassin Gear",
7554 price: 2e4,
7555 scale: 120,
7556 desc: "Go invisible when not moving. Can't eat. Increased speed",
7557 noEat: !0,
7558 spdMult: 1.1,
7559 invisTimer: 1e3
7560 }],
7561 e.exports.accessories = [{
7562 id: 12,
7563 name: "Snowball",
7564 price: 1e3,
7565 scale: 105,
7566 xOff: 18,
7567 desc: "no effect"
7568 }, {
7569 id: 9,
7570 name: "Tree Cape",
7571 price: 1e3,
7572 scale: 90,
7573 desc: "no effect"
7574 }, {
7575 id: 10,
7576 name: "Stone Cape",
7577 price: 1e3,
7578 scale: 90,
7579 desc: "no effect"
7580 }, {
7581 id: 3,
7582 name: "Cookie Cape",
7583 price: 1500,
7584 scale: 90,
7585 desc: "no effect"
7586 }, {
7587 id: 8,
7588 name: "Cow Cape",
7589 price: 2e3,
7590 scale: 90,
7591 desc: "no effect"
7592 }, {
7593 id: 11,
7594 name: "Monkey Tail",
7595 price: 2e3,
7596 scale: 97,
7597 xOff: 25,
7598 desc: "Super speed but reduced damage",
7599 spdMult: 1.35,
7600 dmgMultO: .2
7601 }, {
7602 id: 17,
7603 name: "Apple Basket",
7604 price: 3e3,
7605 scale: 80,
7606 xOff: 12,
7607 desc: "slowly regenerates health over time",
7608 healthRegen: 1
7609 }, {
7610 id: 6,
7611 name: "Winter Cape",
7612 price: 3e3,
7613 scale: 90,
7614 desc: "no effect"
7615 }, {
7616 id: 4,
7617 name: "Skull Cape",
7618 price: 4e3,
7619 scale: 90,
7620 desc: "no effect"
7621 }, {
7622 id: 5,
7623 name: "Dash Cape",
7624 price: 5e3,
7625 scale: 90,
7626 desc: "no effect"
7627 }, {
7628 id: 2,
7629 name: "Dragon Cape",
7630 price: 6e3,
7631 scale: 90,
7632 desc: "no effect"
7633 }, {
7634 id: 1,
7635 name: "Super Cape",
7636 price: 8e3,
7637 scale: 90,
7638 desc: "no effect"
7639 }, {
7640 id: 7,
7641 name: "Troll Cape",
7642 price: 8e3,
7643 scale: 90,
7644 desc: "no effect"
7645 }, {
7646 id: 14,
7647 name: "Thorns",
7648 price: 1e4,
7649 scale: 115,
7650 xOff: 20,
7651 desc: "no effect"
7652 }, {
7653 id: 15,
7654 name: "Blockades",
7655 price: 1e4,
7656 scale: 95,
7657 xOff: 15,
7658 desc: "no effect"
7659 }, {
7660 id: 20,
7661 name: "Devils Tail",
7662 price: 1e4,
7663 scale: 95,
7664 xOff: 20,
7665 desc: "no effect"
7666 }, {
7667 id: 16,
7668 name: "Sawblade",
7669 price: 12e3,
7670 scale: 90,
7671 spin: !0,
7672 xOff: 0,
7673 desc: "deal damage to players that damage you",
7674 dmg: .15
7675 }, {
7676 id: 13,
7677 name: "Angel Wings",
7678 price: 15e3,
7679 scale: 138,
7680 xOff: 22,
7681 desc: "slowly regenerates health over time",
7682 healthRegen: 3
7683 }, {
7684 id: 19,
7685 name: "Shadow Wings",
7686 price: 15e3,
7687 scale: 138,
7688 xOff: 22,
7689 desc: "increased movement speed",
7690 spdMult: 1.1
7691 }, {
7692 id: 18,
7693 name: "Blood Wings",
7694 price: 2e4,
7695 scale: 178,
7696 xOff: 26,
7697 desc: "restores health when you deal damage",
7698 healD: .2
7699 }, {
7700 id: 21,
7701 name: "Corrupt X Wings",
7702 price: 2e4,
7703 scale: 178,
7704 xOff: 26,
7705 desc: "deal damage to players that damage you",
7706 dmg: .25
7707 }]
7708}
7709, function(e, t) {
7710 e.exports = function(e, t, n, i, r, s, a) {
7711 this.init = function(e, t, n, i, r, s, o, c, l) {
7712 this.active = !0,
7713 this.indx = e,
7714 this.x = t,
7715 this.y = n,
7716 this.dir = i,
7717 this.skipMov = !0,
7718 this.speed = r,
7719 this.dmg = s,
7720 this.scale = c,
7721 this.range = o,
7722 this.owner = l,
7723 a && (this.sentTo = {})
7724 }
7725 ;
7726 var o, c = [];
7727 this.update = function(l) {
7728 if (this.active) {
7729 var h, u = this.speed * l;
7730 if (this.skipMov ? this.skipMov = !1 : (this.x += u * Math.cos(this.dir),
7731 this.y += u * Math.sin(this.dir),
7732 this.range -= u,
7733 this.range <= 0 && (this.x += this.range * Math.cos(this.dir),
7734 this.y += this.range * Math.sin(this.dir),
7735 u = 1,
7736 this.range = 0,
7737 this.active = !1)),
7738 a) {
7739 for (var f = 0; f < e.length; ++f)
7740 !this.sentTo[e[f].id] && e[f].canSee(this) && (this.sentTo[e[f].id] = 1,
7741 a.send(e[f].id, "18", s.fixTo(this.x, 1), s.fixTo(this.y, 1), s.fixTo(this.dir, 2), s.fixTo(this.range, 1), this.speed, this.indx, this.layer, this.sid));
7742 for (c.length = 0,
7743 f = 0; f < e.length + t.length; ++f)
7744 !(o = e[f] || t[f - e.length]).alive || o == this.owner || this.owner.team && o.team == this.owner.team || s.lineInRect(o.x - o.scale, o.y - o.scale, o.x + o.scale, o.y + o.scale, this.x, this.y, this.x + u * Math.cos(this.dir), this.y + u * Math.sin(this.dir)) && c.push(o);
7745 for (var d = n.getGridArrays(this.x, this.y, this.scale), p = 0; p < d.length; ++p)
7746 for (var g = 0; g < d[p].length; ++g)
7747 h = (o = d[p][g]).getScale(),
7748 o.active && this.ignoreObj != o.sid && this.layer <= o.layer && c.indexOf(o) < 0 && !o.ignoreCollision && s.lineInRect(o.x - h, o.y - h, o.x + h, o.y + h, this.x, this.y, this.x + u * Math.cos(this.dir), this.y + u * Math.sin(this.dir)) && c.push(o);
7749 if (c.length > 0) {
7750 var m = null
7751 , y = null
7752 , k = null;
7753 for (f = 0; f < c.length; ++f)
7754 k = s.getDistance(this.x, this.y, c[f].x, c[f].y),
7755 (null == y || k < y) && (y = k,
7756 m = c[f]);
7757 if (m.isPlayer || m.isAI) {
7758 var v = .3 * (m.weightM || 1);
7759 m.xVel += v * Math.cos(this.dir),
7760 m.yVel += v * Math.sin(this.dir),
7761 null != m.weaponIndex && i.weapons[m.weaponIndex].shield && s.getAngleDist(this.dir + Math.PI, m.dir) <= r.shieldAngle || m.changeHealth(-this.dmg, this.owner, this.owner)
7762 } else
7763 for (m.projDmg && m.health && m.changeHealth(-this.dmg) && n.disableObj(m),
7764 f = 0; f < e.length; ++f)
7765 e[f].active && (m.sentTo[e[f].id] && (m.active ? e[f].canSee(m) && a.send(e[f].id, "8", s.fixTo(this.dir, 2), m.sid) : a.send(e[f].id, "12", m.sid)),
7766 m.active || m.owner != e[f] || e[f].changeItemCount(m.group.id, -1));
7767 for (this.active = !1,
7768 f = 0; f < e.length; ++f)
7769 this.sentTo[e[f].id] && a.send(e[f].id, "19", this.sid, s.fixTo(y, 1))
7770 }
7771 }
7772 }
7773 }
7774 }
7775}
7776, function(e, t) {
7777 e.exports = function(e, t, n, i, r, s, a, o, c) {
7778 this.addProjectile = function(l, h, u, f, d, p, g, m, y) {
7779 for (var k, v = s.projectiles[p], w = 0; w < t.length; ++w)
7780 if (!t[w].active) {
7781 k = t[w];
7782 break
7783 }
7784 return k || ((k = new e(n,i,r,s,a,o,c)).sid = t.length,
7785 t.push(k)),
7786 k.init(p, l, h, u, d, v.dmg, f, v.scale, g),
7787 k.ignoreObj = m,
7788 k.layer = y || v.layer,
7789 k.src = v.src,
7790 k
7791 }
7792 }
7793}
7794, function(e, t) {
7795 e.exports.obj = function(e, t) {
7796 var n;
7797 this.sounds = [],
7798 this.active = !0,
7799 this.play = function(t, i, r) {
7800 i && this.active && ((n = this.sounds[t]) || (n = new Howl({
7801 src: ".././sound/" + t + ".mp3"
7802 }),
7803 this.sounds[t] = n),
7804 r && n.isPlaying || (n.isPlaying = !0,
7805 n.play(),
7806 n.volume((i || 1) * e.volumeMult),
7807 n.loop(r)))
7808 }
7809 ,
7810 this.toggleMute = function(e, t) {
7811 (n = this.sounds[e]) && n.mute(t)
7812 }
7813 ,
7814 this.stop = function(e) {
7815 (n = this.sounds[e]) && (n.stop(),
7816 n.isPlaying = !1)
7817 }
7818 }
7819}
7820, function(e, t, n) {
7821 var i = n(60)
7822 , r = n(67);
7823 function s(e, t, n, i, r) {
7824 "localhost" == location.hostname && (window.location.hostname = "127.0.0.1"),
7825 this.debugLog = !1,
7826 this.baseUrl = e,
7827 this.lobbySize = n,
7828 this.devPort = t,
7829 this.lobbySpread = i,
7830 this.rawIPs = !!r,
7831 this.server = void 0,
7832 this.gameIndex = void 0,
7833 this.callback = void 0,
7834 this.errorCallback = void 0,
7835 this.processServers(vultr.servers)
7836 }
7837 s.prototype.regionInfo = {
7838 0: {
7839 name: "Local",
7840 latitude: 0,
7841 longitude: 0
7842 },
7843 "vultr:1": {
7844 name: "New Jersey",
7845 latitude: 40.1393329,
7846 longitude: -75.8521818
7847 },
7848 "vultr:2": {
7849 name: "Chicago",
7850 latitude: 41.8339037,
7851 longitude: -87.872238
7852 },
7853 "vultr:3": {
7854 name: "Dallas",
7855 latitude: 32.8208751,
7856 longitude: -96.8714229
7857 },
7858 "vultr:4": {
7859 name: "Seattle",
7860 latitude: 47.6149942,
7861 longitude: -122.4759879
7862 },
7863 "vultr:5": {
7864 name: "Los Angeles",
7865 latitude: 34.0207504,
7866 longitude: -118.691914
7867 },
7868 "vultr:6": {
7869 name: "Atlanta",
7870 latitude: 33.7676334,
7871 longitude: -84.5610332
7872 },
7873 "vultr:7": {
7874 name: "Amsterdam",
7875 latitude: 52.3745287,
7876 longitude: 4.7581878
7877 },
7878 "vultr:8": {
7879 name: "London",
7880 latitude: 51.5283063,
7881 longitude: -.382486
7882 },
7883 "vultr:9": {
7884 name: "Frankfurt",
7885 latitude: 50.1211273,
7886 longitude: 8.496137
7887 },
7888 "vultr:12": {
7889 name: "Silicon Valley",
7890 latitude: 37.4024714,
7891 longitude: -122.3219752
7892 },
7893 "vultr:19": {
7894 name: "Sydney",
7895 latitude: -33.8479715,
7896 longitude: 150.651084
7897 },
7898 "vultr:24": {
7899 name: "Paris",
7900 latitude: 48.8588376,
7901 longitude: 2.2773454
7902 },
7903 "vultr:25": {
7904 name: "Tokyo",
7905 latitude: 35.6732615,
7906 longitude: 139.569959
7907 },
7908 "vultr:39": {
7909 name: "Miami",
7910 latitude: 25.7823071,
7911 longitude: -80.3012156
7912 },
7913 "vultr:40": {
7914 name: "Singapore",
7915 latitude: 1.3147268,
7916 longitude: 103.7065876
7917 }
7918 },
7919 s.prototype.start = function(e, t) {
7920 this.callback = e,
7921 this.errorCallback = t;
7922 var n = this.parseServerQuery();
7923 n ? (this.log("Found server in query."),
7924 this.password = n[3],
7925 this.connect(n[0], n[1], n[2])) : (this.log("Pinging servers..."),
7926 this.pingServers())
7927 }
7928 ,
7929 s.prototype.parseServerQuery = function() {
7930 var e = i.parse(location.href, !0)
7931 , t = e.query.server;
7932 if ("string" == typeof t) {
7933 var n = t.split(":");
7934 if (3 == n.length) {
7935 var r = n[0]
7936 , s = parseInt(n[1])
7937 , a = parseInt(n[2]);
7938 return "0" == r || r.startsWith("vultr:") || (r = "vultr:" + r),
7939 [r, s, a, e.query.password]
7940 }
7941 this.errorCallback("Invalid number of server parameters in " + t)
7942 }
7943 }
7944 ,
7945 s.prototype.findServer = function(e, t) {
7946 var n = this.servers[e];
7947 if (Array.isArray(n)) {
7948 for (var i = 0; i < n.length; i++) {
7949 var r = n[i];
7950 if (r.index == t)
7951 return r
7952 }
7953 console.warn("Could not find server in region " + e + " with index " + t + ".")
7954 } else
7955 this.errorCallback("No server list for region " + e)
7956 }
7957 ,
7958 s.prototype.pingServers = function() {
7959 var e = this
7960 , t = [];
7961 for (var n in this.servers)
7962 if (this.servers.hasOwnProperty(n)) {
7963 var i = this.servers[n]
7964 , r = i[Math.floor(Math.random() * i.length)];
7965 null != r ? function(i, r) {
7966 var s = new XMLHttpRequest;
7967 s.onreadystatechange = function(i) {
7968 var s = i.target;
7969 if (4 == s.readyState)
7970 if (200 == s.status) {
7971 for (var a = 0; a < t.length; a++)
7972 t[a].abort();
7973 e.log("Connecting to region", r.region);
7974 var o = e.seekServer(r.region);
7975 e.connect(o[0], o[1], o[2])
7976 } else
7977 console.warn("Error pinging " + r.ip + " in region " + n)
7978 }
7979 ;
7980 var a = "//" + e.serverAddress(r.ip, !0) + ":" + e.serverPort(r) + "/ping";
7981 s.open("GET", a, !0),
7982 s.send(null),
7983 e.log("Pinging", a),
7984 t.push(s)
7985 }(0, r) : console.log("No target server for region " + n)
7986 }
7987 }
7988 ,
7989 s.prototype.seekServer = function(e, t, n) {
7990 null == n && (n = "random"),
7991 null == t && (t = !1);
7992 const i = ["random"];
7993 var r = this.lobbySize
7994 , s = this.lobbySpread
7995 , a = this.servers[e].flatMap((function(e) {
7996 var t = 0;
7997 return e.games.map((function(n) {
7998 var i = t++;
7999 return {
8000 region: e.region,
8001 index: e.index * e.games.length + i,
8002 gameIndex: i,
8003 gameCount: e.games.length,
8004 playerCount: n.playerCount,
8005 isPrivate: n.isPrivate
8006 }
8007 }
8008 ))
8009 }
8010 )).filter((function(e) {
8011 return !e.isPrivate
8012 }
8013 )).filter((function(e) {
8014 return !t || 0 == e.playerCount && e.gameIndex >= e.gameCount / 2
8015 }
8016 )).filter((function(e) {
8017 return "random" == n || i[e.index % i.length].key == n
8018 }
8019 )).sort((function(e, t) {
8020 return t.playerCount - e.playerCount
8021 }
8022 )).filter((function(e) {
8023 return e.playerCount < r
8024 }
8025 ));
8026 if (t && a.reverse(),
8027 0 != a.length) {
8028 var o = Math.min(s, a.length)
8029 , c = Math.floor(Math.random() * o)
8030 , l = a[c = Math.min(c, a.length - 1)]
8031 , h = l.region
8032 , u = (c = Math.floor(l.index / l.gameCount),
8033 l.index % l.gameCount);
8034 return this.log("Found server."),
8035 [h, c, u]
8036 }
8037 this.errorCallback("No open servers.")
8038 }
8039 ,
8040 s.prototype.connect = function(e, t, n) {
8041 if (!this.connected) {
8042 var i = this.findServer(e, t);
8043 null != i ? (this.log("Connecting to server", i, "with game index", n),
8044 i.games[n].playerCount >= this.lobbySize ? this.errorCallback("Server is already full.") : (window.history.replaceState(document.title, document.title, this.generateHref(e, t, n, this.password)),
8045 this.server = i,
8046 this.gameIndex = n,
8047 this.log("Calling callback with address", this.serverAddress(i.ip), "on port", this.serverPort(i), "with game index", n),
8048 this.callback(this.serverAddress(i.ip), this.serverPort(i), n))) : this.errorCallback("Failed to find server for region " + e + " and index " + t)
8049 }
8050 }
8051 ,
8052 s.prototype.switchServer = function(e, t, n, i) {
8053 this.switchingServers = !0,
8054 window.location.href = this.generateHref(e, t, n, i)
8055 }
8056 ,
8057 s.prototype.generateHref = function(e, t, n, i) {
8058 var r = "/?server=" + (e = this.stripRegion(e)) + ":" + t + ":" + n;
8059 return i && (r += "&password=" + encodeURIComponent(i)),
8060 r
8061 }
8062 ,
8063 s.prototype.serverAddress = function(e, t) {
8064 return "127.0.0.1" == e || "7f000001" == e || "903d62ef5d1c2fecdcaeb5e7dd485eff" == e ? window.location.hostname : this.rawIPs ? t ? "ip_" + this.hashIP(e) + "." + this.baseUrl : e : "ip_" + e + "." + this.baseUrl
8065 }
8066 ,
8067 s.prototype.serverPort = function(e) {
8068 return 0 == e.region ? this.devPort : location.protocol.startsWith("https") ? 443 : 80
8069 }
8070 ,
8071 s.prototype.processServers = function(e) {
8072 for (var t = {}, n = 0; n < e.length; n++) {
8073 var i = e[n]
8074 , r = t[i.region];
8075 null == r && (r = [],
8076 t[i.region] = r),
8077 r.push(i)
8078 }
8079 for (var s in t)
8080 t[s] = t[s].sort((function(e, t) {
8081 return e.index - t.index
8082 }
8083 ));
8084 this.servers = t
8085 }
8086 ,
8087 s.prototype.ipToHex = function(e) {
8088 return e.split(".").map(e=>("00" + parseInt(e).toString(16)).substr(-2)).join("").toLowerCase()
8089 }
8090 ,
8091 s.prototype.hashIP = function(e) {
8092 return r(this.ipToHex(e))
8093 }
8094 ,
8095 s.prototype.log = function() {
8096 return this.debugLog ? console.log.apply(void 0, arguments) : console.verbose ? console.verbose.apply(void 0, arguments) : void 0
8097 }
8098 ,
8099 s.prototype.stripRegion = function(e) {
8100 return e.startsWith("vultr:") ? e = e.slice(6) : e.startsWith("do:") && (e = e.slice(3)),
8101 e
8102 }
8103 ,
8104 window.testVultrClient = function() {
8105 var e = 1;
8106 function t(t, n) {
8107 (t = "" + t) == (n = "" + n) ? console.log(`Assert ${e} passed.`) : console.warn(`Assert ${e} failed. Expected ${n}, got ${t}.`),
8108 e++
8109 }
8110 var n = new s("test.io",-1,5,1,!1);
8111 n.errorCallback = function(e) {}
8112 ,
8113 n.processServers(function(e) {
8114 var t = [];
8115 for (var n in e)
8116 for (var i = e[n], r = 0; r < i.length; r++)
8117 t.push({
8118 ip: n + ":" + r,
8119 scheme: "testing",
8120 region: n,
8121 index: r,
8122 games: i[r].map(e=>({
8123 playerCount: e,
8124 isPrivate: !1
8125 }))
8126 });
8127 return t
8128 }({
8129 1: [[0, 0, 0, 0], [0, 0, 0, 0]],
8130 2: [[5, 1, 0, 0], [0, 0, 0, 0]],
8131 3: [[5, 0, 1, 5], [0, 0, 0, 0]],
8132 4: [[5, 1, 1, 5], [1, 0, 0, 0]],
8133 5: [[5, 1, 1, 5], [1, 0, 4, 0]],
8134 6: [[5, 5, 5, 5], [2, 3, 1, 4]],
8135 7: [[5, 5, 5, 5], [5, 5, 5, 5]]
8136 })),
8137 t(n.seekServer(1, !1), [1, 0, 0]),
8138 t(n.seekServer(1, !0), [1, 1, 3]),
8139 t(n.seekServer(2, !1), [2, 0, 1]),
8140 t(n.seekServer(2, !0), [2, 1, 3]),
8141 t(n.seekServer(3, !1), [3, 0, 2]),
8142 t(n.seekServer(3, !0), [3, 1, 3]),
8143 t(n.seekServer(4, !1), [4, 0, 1]),
8144 t(n.seekServer(4, !0), [4, 1, 3]),
8145 t(n.seekServer(5, !1), [5, 1, 2]),
8146 t(n.seekServer(5, !0), [5, 1, 3]),
8147 t(n.seekServer(6, !1), [6, 1, 3]),
8148 t(n.seekServer(6, !0), void 0),
8149 t(n.seekServer(7, !1), void 0),
8150 t(n.seekServer(7, !0), void 0),
8151 console.log("Tests passed.")
8152 }
8153 ;
8154 var a = function(e, t) {
8155 return e.concat(t)
8156 };
8157 Array.prototype.flatMap = function(e) {
8158 return function(e, t) {
8159 return t.map(e).reduce(a, [])
8160 }(e, this)
8161 }
8162 ,
8163 e.exports = s
8164}
8165, function(e, t, n) {
8166 "use strict";
8167 var i = n(61)
8168 , r = n(63);
8169 function s() {
8170 this.protocol = null,
8171 this.slashes = null,
8172 this.auth = null,
8173 this.host = null,
8174 this.port = null,
8175 this.hostname = null,
8176 this.hash = null,
8177 this.search = null,
8178 this.query = null,
8179 this.pathname = null,
8180 this.path = null,
8181 this.href = null
8182 }
8183 t.parse = v,
8184 t.resolve = function(e, t) {
8185 return v(e, !1, !0).resolve(t)
8186 }
8187 ,
8188 t.resolveObject = function(e, t) {
8189 return e ? v(e, !1, !0).resolveObject(t) : t
8190 }
8191 ,
8192 t.format = function(e) {
8193 return r.isString(e) && (e = v(e)),
8194 e instanceof s ? e.format() : s.prototype.format.call(e)
8195 }
8196 ,
8197 t.Url = s;
8198 var a = /^([a-z0-9.+-]+:)/i
8199 , o = /:[0-9]*$/
8200 , c = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/
8201 , l = ["{", "}", "|", "\\", "^", "`"].concat(["<", ">", '"', "`", " ", "\r", "\n", "\t"])
8202 , h = ["'"].concat(l)
8203 , u = ["%", "/", "?", ";", "#"].concat(h)
8204 , f = ["/", "?", "#"]
8205 , d = /^[+a-z0-9A-Z_-]{0,63}$/
8206 , p = /^([+a-z0-9A-Z_-]{0,63})(.*)$/
8207 , g = {
8208 javascript: !0,
8209 "javascript:": !0
8210 }
8211 , m = {
8212 javascript: !0,
8213 "javascript:": !0
8214 }
8215 , y = {
8216 http: !0,
8217 https: !0,
8218 ftp: !0,
8219 gopher: !0,
8220 file: !0,
8221 "http:": !0,
8222 "https:": !0,
8223 "ftp:": !0,
8224 "gopher:": !0,
8225 "file:": !0
8226 }
8227 , k = n(64);
8228 function v(e, t, n) {
8229 if (e && r.isObject(e) && e instanceof s)
8230 return e;
8231 var i = new s;
8232 return i.parse(e, t, n),
8233 i
8234 }
8235 s.prototype.parse = function(e, t, n) {
8236 if (!r.isString(e))
8237 throw new TypeError("Parameter 'url' must be a string, not " + typeof e);
8238 var s = e.indexOf("?")
8239 , o = -1 !== s && s < e.indexOf("#") ? "?" : "#"
8240 , l = e.split(o);
8241 l[0] = l[0].replace(/\\/g, "/");
8242 var v = e = l.join(o);
8243 if (v = v.trim(),
8244 !n && 1 === e.split("#").length) {
8245 var w = c.exec(v);
8246 if (w)
8247 return this.path = v,
8248 this.href = v,
8249 this.pathname = w[1],
8250 w[2] ? (this.search = w[2],
8251 this.query = t ? k.parse(this.search.substr(1)) : this.search.substr(1)) : t && (this.search = "",
8252 this.query = {}),
8253 this
8254 }
8255 var b = a.exec(v);
8256 if (b) {
8257 var x = (b = b[0]).toLowerCase();
8258 this.protocol = x,
8259 v = v.substr(b.length)
8260 }
8261 if (n || b || v.match(/^\/\/[^@\/]+@[^@\/]+/)) {
8262 var S = "//" === v.substr(0, 2);
8263 !S || b && m[b] || (v = v.substr(2),
8264 this.slashes = !0)
8265 }
8266 if (!m[b] && (S || b && !y[b])) {
8267 for (var T, I, E = -1, M = 0; M < f.length; M++)
8268 -1 !== (A = v.indexOf(f[M])) && (-1 === E || A < E) && (E = A);
8269 for (-1 !== (I = -1 === E ? v.lastIndexOf("@") : v.lastIndexOf("@", E)) && (T = v.slice(0, I),
8270 v = v.slice(I + 1),
8271 this.auth = decodeURIComponent(T)),
8272 E = -1,
8273 M = 0; M < u.length; M++) {
8274 var A;
8275 -1 !== (A = v.indexOf(u[M])) && (-1 === E || A < E) && (E = A)
8276 }
8277 -1 === E && (E = v.length),
8278 this.host = v.slice(0, E),
8279 v = v.slice(E),
8280 this.parseHost(),
8281 this.hostname = this.hostname || "";
8282 var P = "[" === this.hostname[0] && "]" === this.hostname[this.hostname.length - 1];
8283 if (!P)
8284 for (var B = this.hostname.split(/\./), C = (M = 0,
8285 B.length); M < C; M++) {
8286 var O = B[M];
8287 if (O && !O.match(d)) {
8288 for (var R = "", j = 0, _ = O.length; j < _; j++)
8289 O.charCodeAt(j) > 127 ? R += "x" : R += O[j];
8290 if (!R.match(d)) {
8291 var U = B.slice(0, M)
8292 , D = B.slice(M + 1)
8293 , L = O.match(p);
8294 L && (U.push(L[1]),
8295 D.unshift(L[2])),
8296 D.length && (v = "/" + D.join(".") + v),
8297 this.hostname = U.join(".");
8298 break
8299 }
8300 }
8301 }
8302 this.hostname.length > 255 ? this.hostname = "" : this.hostname = this.hostname.toLowerCase(),
8303 P || (this.hostname = i.toASCII(this.hostname));
8304 var F = this.port ? ":" + this.port : ""
8305 , z = this.hostname || "";
8306 this.host = z + F,
8307 this.href += this.host,
8308 P && (this.hostname = this.hostname.substr(1, this.hostname.length - 2),
8309 "/" !== v[0] && (v = "/" + v))
8310 }
8311 if (!g[x])
8312 for (M = 0,
8313 C = h.length; M < C; M++) {
8314 var H = h[M];
8315 if (-1 !== v.indexOf(H)) {
8316 var V = encodeURIComponent(H);
8317 V === H && (V = escape(H)),
8318 v = v.split(H).join(V)
8319 }
8320 }
8321 var q = v.indexOf("#");
8322 -1 !== q && (this.hash = v.substr(q),
8323 v = v.slice(0, q));
8324 var Y = v.indexOf("?");
8325 if (-1 !== Y ? (this.search = v.substr(Y),
8326 this.query = v.substr(Y + 1),
8327 t && (this.query = k.parse(this.query)),
8328 v = v.slice(0, Y)) : t && (this.search = "",
8329 this.query = {}),
8330 v && (this.pathname = v),
8331 y[x] && this.hostname && !this.pathname && (this.pathname = "/"),
8332 this.pathname || this.search) {
8333 F = this.pathname || "";
8334 var W = this.search || "";
8335 this.path = F + W
8336 }
8337 return this.href = this.format(),
8338 this
8339 }
8340 ,
8341 s.prototype.format = function() {
8342 var e = this.auth || "";
8343 e && (e = (e = encodeURIComponent(e)).replace(/%3A/i, ":"),
8344 e += "@");
8345 var t = this.protocol || ""
8346 , n = this.pathname || ""
8347 , i = this.hash || ""
8348 , s = !1
8349 , a = "";
8350 this.host ? s = e + this.host : this.hostname && (s = e + (-1 === this.hostname.indexOf(":") ? this.hostname : "[" + this.hostname + "]"),
8351 this.port && (s += ":" + this.port)),
8352 this.query && r.isObject(this.query) && Object.keys(this.query).length && (a = k.stringify(this.query));
8353 var o = this.search || a && "?" + a || "";
8354 return t && ":" !== t.substr(-1) && (t += ":"),
8355 this.slashes || (!t || y[t]) && !1 !== s ? (s = "//" + (s || ""),
8356 n && "/" !== n.charAt(0) && (n = "/" + n)) : s || (s = ""),
8357 i && "#" !== i.charAt(0) && (i = "#" + i),
8358 o && "?" !== o.charAt(0) && (o = "?" + o),
8359 t + s + (n = n.replace(/[?#]/g, (function(e) {
8360 return encodeURIComponent(e)
8361 }
8362 ))) + (o = o.replace("#", "%23")) + i
8363 }
8364 ,
8365 s.prototype.resolve = function(e) {
8366 return this.resolveObject(v(e, !1, !0)).format()
8367 }
8368 ,
8369 s.prototype.resolveObject = function(e) {
8370 if (r.isString(e)) {
8371 var t = new s;
8372 t.parse(e, !1, !0),
8373 e = t
8374 }
8375 for (var n = new s, i = Object.keys(this), a = 0; a < i.length; a++) {
8376 var o = i[a];
8377 n[o] = this[o]
8378 }
8379 if (n.hash = e.hash,
8380 "" === e.href)
8381 return n.href = n.format(),
8382 n;
8383 if (e.slashes && !e.protocol) {
8384 for (var c = Object.keys(e), l = 0; l < c.length; l++) {
8385 var h = c[l];
8386 "protocol" !== h && (n[h] = e[h])
8387 }
8388 return y[n.protocol] && n.hostname && !n.pathname && (n.path = n.pathname = "/"),
8389 n.href = n.format(),
8390 n
8391 }
8392 if (e.protocol && e.protocol !== n.protocol) {
8393 if (!y[e.protocol]) {
8394 for (var u = Object.keys(e), f = 0; f < u.length; f++) {
8395 var d = u[f];
8396 n[d] = e[d]
8397 }
8398 return n.href = n.format(),
8399 n
8400 }
8401 if (n.protocol = e.protocol,
8402 e.host || m[e.protocol])
8403 n.pathname = e.pathname;
8404 else {
8405 for (var p = (e.pathname || "").split("/"); p.length && !(e.host = p.shift()); )
8406 ;
8407 e.host || (e.host = ""),
8408 e.hostname || (e.hostname = ""),
8409 "" !== p[0] && p.unshift(""),
8410 p.length < 2 && p.unshift(""),
8411 n.pathname = p.join("/")
8412 }
8413 if (n.search = e.search,
8414 n.query = e.query,
8415 n.host = e.host || "",
8416 n.auth = e.auth,
8417 n.hostname = e.hostname || e.host,
8418 n.port = e.port,
8419 n.pathname || n.search) {
8420 var g = n.pathname || ""
8421 , k = n.search || "";
8422 n.path = g + k
8423 }
8424 return n.slashes = n.slashes || e.slashes,
8425 n.href = n.format(),
8426 n
8427 }
8428 var v = n.pathname && "/" === n.pathname.charAt(0)
8429 , w = e.host || e.pathname && "/" === e.pathname.charAt(0)
8430 , b = w || v || n.host && e.pathname
8431 , x = b
8432 , S = n.pathname && n.pathname.split("/") || []
8433 , T = (p = e.pathname && e.pathname.split("/") || [],
8434 n.protocol && !y[n.protocol]);
8435 if (T && (n.hostname = "",
8436 n.port = null,
8437 n.host && ("" === S[0] ? S[0] = n.host : S.unshift(n.host)),
8438 n.host = "",
8439 e.protocol && (e.hostname = null,
8440 e.port = null,
8441 e.host && ("" === p[0] ? p[0] = e.host : p.unshift(e.host)),
8442 e.host = null),
8443 b = b && ("" === p[0] || "" === S[0])),
8444 w)
8445 n.host = e.host || "" === e.host ? e.host : n.host,
8446 n.hostname = e.hostname || "" === e.hostname ? e.hostname : n.hostname,
8447 n.search = e.search,
8448 n.query = e.query,
8449 S = p;
8450 else if (p.length)
8451 S || (S = []),
8452 S.pop(),
8453 S = S.concat(p),
8454 n.search = e.search,
8455 n.query = e.query;
8456 else if (!r.isNullOrUndefined(e.search))
8457 return T && (n.hostname = n.host = S.shift(),
8458 (P = !!(n.host && n.host.indexOf("@") > 0) && n.host.split("@")) && (n.auth = P.shift(),
8459 n.host = n.hostname = P.shift())),
8460 n.search = e.search,
8461 n.query = e.query,
8462 r.isNull(n.pathname) && r.isNull(n.search) || (n.path = (n.pathname ? n.pathname : "") + (n.search ? n.search : "")),
8463 n.href = n.format(),
8464 n;
8465 if (!S.length)
8466 return n.pathname = null,
8467 n.search ? n.path = "/" + n.search : n.path = null,
8468 n.href = n.format(),
8469 n;
8470 for (var I = S.slice(-1)[0], E = (n.host || e.host || S.length > 1) && ("." === I || ".." === I) || "" === I, M = 0, A = S.length; A >= 0; A--)
8471 "." === (I = S[A]) ? S.splice(A, 1) : ".." === I ? (S.splice(A, 1),
8472 M++) : M && (S.splice(A, 1),
8473 M--);
8474 if (!b && !x)
8475 for (; M--; M)
8476 S.unshift("..");
8477 !b || "" === S[0] || S[0] && "/" === S[0].charAt(0) || S.unshift(""),
8478 E && "/" !== S.join("/").substr(-1) && S.push("");
8479 var P, B = "" === S[0] || S[0] && "/" === S[0].charAt(0);
8480 return T && (n.hostname = n.host = B ? "" : S.length ? S.shift() : "",
8481 (P = !!(n.host && n.host.indexOf("@") > 0) && n.host.split("@")) && (n.auth = P.shift(),
8482 n.host = n.hostname = P.shift())),
8483 (b = b || n.host && S.length) && !B && S.unshift(""),
8484 S.length ? n.pathname = S.join("/") : (n.pathname = null,
8485 n.path = null),
8486 r.isNull(n.pathname) && r.isNull(n.search) || (n.path = (n.pathname ? n.pathname : "") + (n.search ? n.search : "")),
8487 n.auth = e.auth || n.auth,
8488 n.slashes = n.slashes || e.slashes,
8489 n.href = n.format(),
8490 n
8491 }
8492 ,
8493 s.prototype.parseHost = function() {
8494 var e = this.host
8495 , t = o.exec(e);
8496 t && (":" !== (t = t[0]) && (this.port = t.substr(1)),
8497 e = e.substr(0, e.length - t.length)),
8498 e && (this.hostname = e)
8499 }
8500}
8501, function(e, t, n) {
8502 (function(e, i) {
8503 var r;
8504 /*! https://mths.be/punycode v1.4.1 by @mathias */
8505 !function(s) {
8506 t && t.nodeType,
8507 e && e.nodeType;
8508 var a = "object" == typeof i && i;
8509 a.global !== a && a.window !== a && a.self;
8510 var o, c = 2147483647, l = 36, h = /^xn--/, u = /[^\x20-\x7E]/, f = /[\x2E\u3002\uFF0E\uFF61]/g, d = {
8511 overflow: "Overflow: input needs wider integers to process",
8512 "not-basic": "Illegal input >= 0x80 (not a basic code point)",
8513 "invalid-input": "Invalid input"
8514 }, p = Math.floor, g = String.fromCharCode;
8515 function m(e) {
8516 throw new RangeError(d[e])
8517 }
8518 function y(e, t) {
8519 for (var n = e.length, i = []; n--; )
8520 i[n] = t(e[n]);
8521 return i
8522 }
8523 function k(e, t) {
8524 var n = e.split("@")
8525 , i = "";
8526 return n.length > 1 && (i = n[0] + "@",
8527 e = n[1]),
8528 i + y((e = e.replace(f, ".")).split("."), t).join(".")
8529 }
8530 function v(e) {
8531 for (var t, n, i = [], r = 0, s = e.length; r < s; )
8532 (t = e.charCodeAt(r++)) >= 55296 && t <= 56319 && r < s ? 56320 == (64512 & (n = e.charCodeAt(r++))) ? i.push(((1023 & t) << 10) + (1023 & n) + 65536) : (i.push(t),
8533 r--) : i.push(t);
8534 return i
8535 }
8536 function w(e) {
8537 return y(e, (function(e) {
8538 var t = "";
8539 return e > 65535 && (t += g((e -= 65536) >>> 10 & 1023 | 55296),
8540 e = 56320 | 1023 & e),
8541 t + g(e)
8542 }
8543 )).join("")
8544 }
8545 function b(e) {
8546 return e - 48 < 10 ? e - 22 : e - 65 < 26 ? e - 65 : e - 97 < 26 ? e - 97 : l
8547 }
8548 function x(e, t) {
8549 return e + 22 + 75 * (e < 26) - ((0 != t) << 5)
8550 }
8551 function S(e, t, n) {
8552 var i = 0;
8553 for (e = n ? p(e / 700) : e >> 1,
8554 e += p(e / t); e > 455; i += l)
8555 e = p(e / 35);
8556 return p(i + 36 * e / (e + 38))
8557 }
8558 function T(e) {
8559 var t, n, i, r, s, a, o, h, u, f, d = [], g = e.length, y = 0, k = 128, v = 72;
8560 for ((n = e.lastIndexOf("-")) < 0 && (n = 0),
8561 i = 0; i < n; ++i)
8562 e.charCodeAt(i) >= 128 && m("not-basic"),
8563 d.push(e.charCodeAt(i));
8564 for (r = n > 0 ? n + 1 : 0; r < g; ) {
8565 for (s = y,
8566 a = 1,
8567 o = l; r >= g && m("invalid-input"),
8568 ((h = b(e.charCodeAt(r++))) >= l || h > p((c - y) / a)) && m("overflow"),
8569 y += h * a,
8570 !(h < (u = o <= v ? 1 : o >= v + 26 ? 26 : o - v)); o += l)
8571 a > p(c / (f = l - u)) && m("overflow"),
8572 a *= f;
8573 v = S(y - s, t = d.length + 1, 0 == s),
8574 p(y / t) > c - k && m("overflow"),
8575 k += p(y / t),
8576 y %= t,
8577 d.splice(y++, 0, k)
8578 }
8579 return w(d)
8580 }
8581 function I(e) {
8582 var t, n, i, r, s, a, o, h, u, f, d, y, k, w, b, T = [];
8583 for (y = (e = v(e)).length,
8584 t = 128,
8585 n = 0,
8586 s = 72,
8587 a = 0; a < y; ++a)
8588 (d = e[a]) < 128 && T.push(g(d));
8589 for (i = r = T.length,
8590 r && T.push("-"); i < y; ) {
8591 for (o = c,
8592 a = 0; a < y; ++a)
8593 (d = e[a]) >= t && d < o && (o = d);
8594 for (o - t > p((c - n) / (k = i + 1)) && m("overflow"),
8595 n += (o - t) * k,
8596 t = o,
8597 a = 0; a < y; ++a)
8598 if ((d = e[a]) < t && ++n > c && m("overflow"),
8599 d == t) {
8600 for (h = n,
8601 u = l; !(h < (f = u <= s ? 1 : u >= s + 26 ? 26 : u - s)); u += l)
8602 b = h - f,
8603 w = l - f,
8604 T.push(g(x(f + b % w, 0))),
8605 h = p(b / w);
8606 T.push(g(x(h, 0))),
8607 s = S(n, k, i == r),
8608 n = 0,
8609 ++i
8610 }
8611 ++n,
8612 ++t
8613 }
8614 return T.join("")
8615 }
8616 o = {
8617 version: "1.4.1",
8618 ucs2: {
8619 decode: v,
8620 encode: w
8621 },
8622 decode: T,
8623 encode: I,
8624 toASCII: function(e) {
8625 return k(e, (function(e) {
8626 return u.test(e) ? "xn--" + I(e) : e
8627 }
8628 ))
8629 },
8630 toUnicode: function(e) {
8631 return k(e, (function(e) {
8632 return h.test(e) ? T(e.slice(4).toLowerCase()) : e
8633 }
8634 ))
8635 }
8636 },
8637 void 0 === (r = function() {
8638 return o
8639 }
8640 .call(t, n, t, e)) || (e.exports = r)
8641 }()
8642 }
8643 ).call(this, n(62)(e), n(12))
8644}
8645, function(e, t) {
8646 e.exports = function(e) {
8647 return e.webpackPolyfill || (e.deprecate = function() {}
8648 ,
8649 e.paths = [],
8650 e.children || (e.children = []),
8651 Object.defineProperty(e, "loaded", {
8652 enumerable: !0,
8653 get: function() {
8654 return e.l
8655 }
8656 }),
8657 Object.defineProperty(e, "id", {
8658 enumerable: !0,
8659 get: function() {
8660 return e.i
8661 }
8662 }),
8663 e.webpackPolyfill = 1),
8664 e
8665 }
8666}
8667, function(e, t, n) {
8668 "use strict";
8669 e.exports = {
8670 isString: function(e) {
8671 return "string" == typeof e
8672 },
8673 isObject: function(e) {
8674 return "object" == typeof e && null !== e
8675 },
8676 isNull: function(e) {
8677 return null === e
8678 },
8679 isNullOrUndefined: function(e) {
8680 return null == e
8681 }
8682 }
8683}
8684, function(e, t, n) {
8685 "use strict";
8686 t.decode = t.parse = n(65),
8687 t.encode = t.stringify = n(66)
8688}
8689, function(e, t, n) {
8690 "use strict";
8691 function i(e, t) {
8692 return Object.prototype.hasOwnProperty.call(e, t)
8693 }
8694 e.exports = function(e, t, n, s) {
8695 t = t || "&",
8696 n = n || "=";
8697 var a = {};
8698 if ("string" != typeof e || 0 === e.length)
8699 return a;
8700 var o = /\+/g;
8701 e = e.split(t);
8702 var c = 1e3;
8703 s && "number" == typeof s.maxKeys && (c = s.maxKeys);
8704 var l = e.length;
8705 c > 0 && l > c && (l = c);
8706 for (var h = 0; h < l; ++h) {
8707 var u, f, d, p, g = e[h].replace(o, "%20"), m = g.indexOf(n);
8708 m >= 0 ? (u = g.substr(0, m),
8709 f = g.substr(m + 1)) : (u = g,
8710 f = ""),
8711 d = decodeURIComponent(u),
8712 p = decodeURIComponent(f),
8713 i(a, d) ? r(a[d]) ? a[d].push(p) : a[d] = [a[d], p] : a[d] = p
8714 }
8715 return a
8716 }
8717 ;
8718 var r = Array.isArray || function(e) {
8719 return "[object Array]" === Object.prototype.toString.call(e)
8720 }
8721}
8722, function(e, t, n) {
8723 "use strict";
8724 var i = function(e) {
8725 switch (typeof e) {
8726 case "string":
8727 return e;
8728 case "boolean":
8729 return e ? "true" : "false";
8730 case "number":
8731 return isFinite(e) ? e : "";
8732 default:
8733 return ""
8734 }
8735 };
8736 e.exports = function(e, t, n, o) {
8737 return t = t || "&",
8738 n = n || "=",
8739 null === e && (e = void 0),
8740 "object" == typeof e ? s(a(e), (function(a) {
8741 var o = encodeURIComponent(i(a)) + n;
8742 return r(e[a]) ? s(e[a], (function(e) {
8743 return o + encodeURIComponent(i(e))
8744 }
8745 )).join(t) : o + encodeURIComponent(i(e[a]))
8746 }
8747 )).join(t) : o ? encodeURIComponent(i(o)) + n + encodeURIComponent(i(e)) : ""
8748 }
8749 ;
8750 var r = Array.isArray || function(e) {
8751 return "[object Array]" === Object.prototype.toString.call(e)
8752 }
8753 ;
8754 function s(e, t) {
8755 if (e.map)
8756 return e.map(t);
8757 for (var n = [], i = 0; i < e.length; i++)
8758 n.push(t(e[i], i));
8759 return n
8760 }
8761 var a = Object.keys || function(e) {
8762 var t = [];
8763 for (var n in e)
8764 Object.prototype.hasOwnProperty.call(e, n) && t.push(n);
8765 return t
8766 }
8767}
8768, function(e, t, n) {
8769 !function() {
8770 var t = n(68)
8771 , i = n(20).utf8
8772 , r = n(69)
8773 , s = n(20).bin
8774 , a = function(e, n) {
8775 e.constructor == String ? e = n && "binary" === n.encoding ? s.stringToBytes(e) : i.stringToBytes(e) : r(e) ? e = Array.prototype.slice.call(e, 0) : Array.isArray(e) || (e = e.toString());
8776 for (var o = t.bytesToWords(e), c = 8 * e.length, l = 1732584193, h = -271733879, u = -1732584194, f = 271733878, d = 0; d < o.length; d++)
8777 o[d] = 16711935 & (o[d] << 8 | o[d] >>> 24) | 4278255360 & (o[d] << 24 | o[d] >>> 8);
8778 o[c >>> 5] |= 128 << c % 32,
8779 o[14 + (c + 64 >>> 9 << 4)] = c;
8780 var p = a._ff
8781 , g = a._gg
8782 , m = a._hh
8783 , y = a._ii;
8784 for (d = 0; d < o.length; d += 16) {
8785 var k = l
8786 , v = h
8787 , w = u
8788 , b = f;
8789 h = y(h = y(h = y(h = y(h = m(h = m(h = m(h = m(h = g(h = g(h = g(h = g(h = p(h = p(h = p(h = p(h, u = p(u, f = p(f, l = p(l, h, u, f, o[d + 0], 7, -680876936), h, u, o[d + 1], 12, -389564586), l, h, o[d + 2], 17, 606105819), f, l, o[d + 3], 22, -1044525330), u = p(u, f = p(f, l = p(l, h, u, f, o[d + 4], 7, -176418897), h, u, o[d + 5], 12, 1200080426), l, h, o[d + 6], 17, -1473231341), f, l, o[d + 7], 22, -45705983), u = p(u, f = p(f, l = p(l, h, u, f, o[d + 8], 7, 1770035416), h, u, o[d + 9], 12, -1958414417), l, h, o[d + 10], 17, -42063), f, l, o[d + 11], 22, -1990404162), u = p(u, f = p(f, l = p(l, h, u, f, o[d + 12], 7, 1804603682), h, u, o[d + 13], 12, -40341101), l, h, o[d + 14], 17, -1502002290), f, l, o[d + 15], 22, 1236535329), u = g(u, f = g(f, l = g(l, h, u, f, o[d + 1], 5, -165796510), h, u, o[d + 6], 9, -1069501632), l, h, o[d + 11], 14, 643717713), f, l, o[d + 0], 20, -373897302), u = g(u, f = g(f, l = g(l, h, u, f, o[d + 5], 5, -701558691), h, u, o[d + 10], 9, 38016083), l, h, o[d + 15], 14, -660478335), f, l, o[d + 4], 20, -405537848), u = g(u, f = g(f, l = g(l, h, u, f, o[d + 9], 5, 568446438), h, u, o[d + 14], 9, -1019803690), l, h, o[d + 3], 14, -187363961), f, l, o[d + 8], 20, 1163531501), u = g(u, f = g(f, l = g(l, h, u, f, o[d + 13], 5, -1444681467), h, u, o[d + 2], 9, -51403784), l, h, o[d + 7], 14, 1735328473), f, l, o[d + 12], 20, -1926607734), u = m(u, f = m(f, l = m(l, h, u, f, o[d + 5], 4, -378558), h, u, o[d + 8], 11, -2022574463), l, h, o[d + 11], 16, 1839030562), f, l, o[d + 14], 23, -35309556), u = m(u, f = m(f, l = m(l, h, u, f, o[d + 1], 4, -1530992060), h, u, o[d + 4], 11, 1272893353), l, h, o[d + 7], 16, -155497632), f, l, o[d + 10], 23, -1094730640), u = m(u, f = m(f, l = m(l, h, u, f, o[d + 13], 4, 681279174), h, u, o[d + 0], 11, -358537222), l, h, o[d + 3], 16, -722521979), f, l, o[d + 6], 23, 76029189), u = m(u, f = m(f, l = m(l, h, u, f, o[d + 9], 4, -640364487), h, u, o[d + 12], 11, -421815835), l, h, o[d + 15], 16, 530742520), f, l, o[d + 2], 23, -995338651), u = y(u, f = y(f, l = y(l, h, u, f, o[d + 0], 6, -198630844), h, u, o[d + 7], 10, 1126891415), l, h, o[d + 14], 15, -1416354905), f, l, o[d + 5], 21, -57434055), u = y(u, f = y(f, l = y(l, h, u, f, o[d + 12], 6, 1700485571), h, u, o[d + 3], 10, -1894986606), l, h, o[d + 10], 15, -1051523), f, l, o[d + 1], 21, -2054922799), u = y(u, f = y(f, l = y(l, h, u, f, o[d + 8], 6, 1873313359), h, u, o[d + 15], 10, -30611744), l, h, o[d + 6], 15, -1560198380), f, l, o[d + 13], 21, 1309151649), u = y(u, f = y(f, l = y(l, h, u, f, o[d + 4], 6, -145523070), h, u, o[d + 11], 10, -1120210379), l, h, o[d + 2], 15, 718787259), f, l, o[d + 9], 21, -343485551),
8790 l = l + k >>> 0,
8791 h = h + v >>> 0,
8792 u = u + w >>> 0,
8793 f = f + b >>> 0
8794 }
8795 return t.endian([l, h, u, f])
8796 };
8797 a._ff = function(e, t, n, i, r, s, a) {
8798 var o = e + (t & n | ~t & i) + (r >>> 0) + a;
8799 return (o << s | o >>> 32 - s) + t
8800 }
8801 ,
8802 a._gg = function(e, t, n, i, r, s, a) {
8803 var o = e + (t & i | n & ~i) + (r >>> 0) + a;
8804 return (o << s | o >>> 32 - s) + t
8805 }
8806 ,
8807 a._hh = function(e, t, n, i, r, s, a) {
8808 var o = e + (t ^ n ^ i) + (r >>> 0) + a;
8809 return (o << s | o >>> 32 - s) + t
8810 }
8811 ,
8812 a._ii = function(e, t, n, i, r, s, a) {
8813 var o = e + (n ^ (t | ~i)) + (r >>> 0) + a;
8814 return (o << s | o >>> 32 - s) + t
8815 }
8816 ,
8817 a._blocksize = 16,
8818 a._digestsize = 16,
8819 e.exports = function(e, n) {
8820 if (null == e)
8821 throw new Error("Illegal argument " + e);
8822 var i = t.wordsToBytes(a(e, n));
8823 return n && n.asBytes ? i : n && n.asString ? s.bytesToString(i) : t.bytesToHex(i)
8824 }
8825 }()
8826}
8827, function(e, t) {
8828 !function() {
8829 var t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
8830 , n = {
8831 rotl: function(e, t) {
8832 return e << t | e >>> 32 - t
8833 },
8834 rotr: function(e, t) {
8835 return e << 32 - t | e >>> t
8836 },
8837 endian: function(e) {
8838 if (e.constructor == Number)
8839 return 16711935 & n.rotl(e, 8) | 4278255360 & n.rotl(e, 24);
8840 for (var t = 0; t < e.length; t++)
8841 e[t] = n.endian(e[t]);
8842 return e
8843 },
8844 randomBytes: function(e) {
8845 for (var t = []; e > 0; e--)
8846 t.push(Math.floor(256 * Math.random()));
8847 return t
8848 },
8849 bytesToWords: function(e) {
8850 for (var t = [], n = 0, i = 0; n < e.length; n++,
8851 i += 8)
8852 t[i >>> 5] |= e[n] << 24 - i % 32;
8853 return t
8854 },
8855 wordsToBytes: function(e) {
8856 for (var t = [], n = 0; n < 32 * e.length; n += 8)
8857 t.push(e[n >>> 5] >>> 24 - n % 32 & 255);
8858 return t
8859 },
8860 bytesToHex: function(e) {
8861 for (var t = [], n = 0; n < e.length; n++)
8862 t.push((e[n] >>> 4).toString(16)),
8863 t.push((15 & e[n]).toString(16));
8864 return t.join("")
8865 },
8866 hexToBytes: function(e) {
8867 for (var t = [], n = 0; n < e.length; n += 2)
8868 t.push(parseInt(e.substr(n, 2), 16));
8869 return t
8870 },
8871 bytesToBase64: function(e) {
8872 for (var n = [], i = 0; i < e.length; i += 3)
8873 for (var r = e[i] << 16 | e[i + 1] << 8 | e[i + 2], s = 0; s < 4; s++)
8874 8 * i + 6 * s <= 8 * e.length ? n.push(t.charAt(r >>> 6 * (3 - s) & 63)) : n.push("=");
8875 return n.join("")
8876 },
8877 base64ToBytes: function(e) {
8878 e = e.replace(/[^A-Z0-9+\/]/gi, "");
8879 for (var n = [], i = 0, r = 0; i < e.length; r = ++i % 4)
8880 0 != r && n.push((t.indexOf(e.charAt(i - 1)) & Math.pow(2, -2 * r + 8) - 1) << 2 * r | t.indexOf(e.charAt(i)) >>> 6 - 2 * r);
8881 return n
8882 }
8883 };
8884 e.exports = n
8885 }()
8886}
8887, function(e, t) {
8888 function n(e) {
8889 return !!e.constructor && "function" == typeof e.constructor.isBuffer && e.constructor.isBuffer(e)
8890 }
8891 /*!
8892 * Determine if an object is a Buffer
8893 *
8894 * @author Feross Aboukhadijeh <https://feross.org>
8895 * @license MIT
8896 */
8897 e.exports = function(e) {
8898 return null != e && (n(e) || function(e) {
8899 return "function" == typeof e.readFloatLE && "function" == typeof e.slice && n(e.slice(0, 0))
8900 }(e) || !!e._isBuffer)
8901 }
8902}
8903, function(e, t) {
8904 e.exports = function(e, t, n, i, r, s, a, o, c) {
8905 this.aiTypes = [{
8906 id: 0,
8907 src: "cow_1",
8908 killScore: 150,
8909 health: 500,
8910 weightM: .8,
8911 speed: 95e-5,
8912 turnSpeed: .001,
8913 scale: 72,
8914 drop: ["food", 50]
8915 }, {
8916 id: 1,
8917 src: "pig_1",
8918 killScore: 200,
8919 health: 800,
8920 weightM: .6,
8921 speed: 85e-5,
8922 turnSpeed: .001,
8923 scale: 72,
8924 drop: ["food", 80]
8925 }, {
8926 id: 2,
8927 name: "Bull",
8928 src: "bull_2",
8929 hostile: !0,
8930 dmg: 20,
8931 killScore: 1e3,
8932 health: 1800,
8933 weightM: .5,
8934 speed: 94e-5,
8935 turnSpeed: 74e-5,
8936 scale: 78,
8937 viewRange: 800,
8938 chargePlayer: !0,
8939 drop: ["food", 100]
8940 }, {
8941 id: 3,
8942 name: "Bully",
8943 src: "bull_1",
8944 hostile: !0,
8945 dmg: 20,
8946 killScore: 2e3,
8947 health: 2800,
8948 weightM: .45,
8949 speed: .001,
8950 turnSpeed: 8e-4,
8951 scale: 90,
8952 viewRange: 900,
8953 chargePlayer: !0,
8954 drop: ["food", 400]
8955 }, {
8956 id: 4,
8957 name: "Wolfy",
8958 src: "wolf_1",
8959 hostile: !0,
8960 dmg: 8,
8961 killScore: 500,
8962 health: 300,
8963 weightM: .45,
8964 speed: .001,
8965 turnSpeed: .002,
8966 scale: 84,
8967 viewRange: 800,
8968 chargePlayer: !0,
8969 drop: ["food", 200]
8970 }, {
8971 id: 5,
8972 name: "Quack",
8973 src: "chicken_1",
8974 dmg: 8,
8975 killScore: 2e3,
8976 noTrap: !0,
8977 health: 300,
8978 weightM: .2,
8979 speed: .0018,
8980 turnSpeed: .006,
8981 scale: 70,
8982 drop: ["food", 100]
8983 }, {
8984 id: 6,
8985 name: "ζ͜͡???? ???",
8986 nameScale: 50,
8987 src: "enemy",
8988 hostile: !0,
8989 dontRun: !0,
8990 fixedSpawn: !0,
8991 spawnDelay: 6e4,
8992 noTrap: !0,
8993 colDmg: 100,
8994 dmg: 40,
8995 killScore: 8e3,
8996 health: 18e3,
8997 weightM: .4,
8998 speed: 7e-4,
8999 turnSpeed: .01,
9000 scale: 80,
9001 spriteMlt: 1.8,
9002 leapForce: .9,
9003 viewRange: 1e3,
9004 hitRange: 210,
9005 hitDelay: 1e3,
9006 chargePlayer: !0,
9007 drop: ["food", 100]
9008 }, {
9009 id: 7,
9010 name: "Treasure",
9011 hostile: !0,
9012 nameScale: 35,
9013 src: "crate_1",
9014 fixedSpawn: !0,
9015 spawnDelay: 12e4,
9016 colDmg: 200,
9017 killScore: 5e3,
9018 health: 2e4,
9019 weightM: .1,
9020 speed: 0,
9021 turnSpeed: 0,
9022 scale: 70,
9023 spriteMlt: 1
9024 }, {
9025 id: 8,
9026 name: "Gangsta's Shit",
9027 src: "wolf_2",
9028 hostile: !0,
9029 fixedSpawn: !0,
9030 dontRun: !0,
9031 hitScare: 4,
9032 spawnDelay: 3e4,
9033 noTrap: !0,
9034 nameScale: 35,
9035 dmg: 10,
9036 colDmg: 100,
9037 killScore: 3e3,
9038 health: 7e3,
9039 weightM: .45,
9040 speed: .0015,
9041 turnSpeed: .002,
9042 scale: 90,
9043 viewRange: 800,
9044 chargePlayer: !0,
9045 drop: ["food", 1e3]
9046 }],
9047 this.spawn = function(l, h, u, f) {
9048 for (var d, p = 0; p < e.length; ++p)
9049 if (!e[p].active) {
9050 d = e[p];
9051 break
9052 }
9053 return d || (d = new t(e.length,r,n,i,a,s,o,c),
9054 e.push(d)),
9055 d.init(l, h, u, f, this.aiTypes[f]),
9056 d
9057 }
9058 }
9059}
9060, function(e, t) {
9061 var n = 2 * Math.PI;
9062 e.exports = function(e, t, i, r, s, a, o, c) {
9063 this.sid = e,
9064 this.isAI = !0,
9065 this.nameIndex = s.randInt(0, a.cowNames.length - 1),
9066 this.init = function(e, t, n, i, r) {
9067 this.x = e,
9068 this.y = t,
9069 this.startX = r.fixedSpawn ? e : null,
9070 this.startY = r.fixedSpawn ? t : null,
9071 this.xVel = 0,
9072 this.yVel = 0,
9073 this.zIndex = 0,
9074 this.dir = n,
9075 this.dirPlus = 0,
9076 this.index = i,
9077 this.src = r.src,
9078 r.name && (this.name = r.name),
9079 this.weightM = r.weightM,
9080 this.speed = r.speed,
9081 this.killScore = r.killScore,
9082 this.turnSpeed = r.turnSpeed,
9083 this.scale = r.scale,
9084 this.maxHealth = r.health,
9085 this.leapForce = r.leapForce,
9086 this.health = this.maxHealth,
9087 this.chargePlayer = r.chargePlayer,
9088 this.viewRange = r.viewRange,
9089 this.drop = r.drop,
9090 this.dmg = r.dmg,
9091 this.hostile = r.hostile,
9092 this.dontRun = r.dontRun,
9093 this.hitRange = r.hitRange,
9094 this.hitDelay = r.hitDelay,
9095 this.hitScare = r.hitScare,
9096 this.spriteMlt = r.spriteMlt,
9097 this.nameScale = r.nameScale,
9098 this.colDmg = r.colDmg,
9099 this.noTrap = r.noTrap,
9100 this.spawnDelay = r.spawnDelay,
9101 this.hitWait = 0,
9102 this.waitCount = 1e3,
9103 this.moveCount = 0,
9104 this.targetDir = 0,
9105 this.active = !0,
9106 this.alive = !0,
9107 this.runFrom = null,
9108 this.chargeTarget = null,
9109 this.dmgOverTime = {}
9110 }
9111 ;
9112 var l = 0;
9113 this.update = function(e) {
9114 if (this.active) {
9115 if (this.spawnCounter)
9116 return this.spawnCounter -= e,
9117 void (this.spawnCounter <= 0 && (this.spawnCounter = 0,
9118 this.x = this.startX || s.randInt(0, a.mapScale),
9119 this.y = this.startY || s.randInt(0, a.mapScale)));
9120 (l -= e) <= 0 && (this.dmgOverTime.dmg && (this.changeHealth(-this.dmgOverTime.dmg, this.dmgOverTime.doer),
9121 this.dmgOverTime.time -= 1,
9122 this.dmgOverTime.time <= 0 && (this.dmgOverTime.dmg = 0)),
9123 l = 1e3);
9124 var r = !1
9125 , o = 1;
9126 if (!this.zIndex && !this.lockMove && this.y >= a.mapScale / 2 - a.riverWidth / 2 && this.y <= a.mapScale / 2 + a.riverWidth / 2 && (o = .33,
9127 this.xVel += a.waterCurrent * e),
9128 this.lockMove)
9129 this.xVel = 0,
9130 this.yVel = 0;
9131 else if (this.waitCount > 0) {
9132 if (this.waitCount -= e,
9133 this.waitCount <= 0)
9134 if (this.chargePlayer) {
9135 for (var h, u, f, d = 0; d < i.length; ++d)
9136 !i[d].alive || i[d].skin && i[d].skin.bullRepel || (f = s.getDistance(this.x, this.y, i[d].x, i[d].y)) <= this.viewRange && (!h || f < u) && (u = f,
9137 h = i[d]);
9138 h ? (this.chargeTarget = h,
9139 this.moveCount = s.randInt(8e3, 12e3)) : (this.moveCount = s.randInt(1e3, 2e3),
9140 this.targetDir = s.randFloat(-Math.PI, Math.PI))
9141 } else
9142 this.moveCount = s.randInt(4e3, 1e4),
9143 this.targetDir = s.randFloat(-Math.PI, Math.PI)
9144 } else if (this.moveCount > 0) {
9145 var p = this.speed * o;
9146 if (this.runFrom && this.runFrom.active && (!this.runFrom.isPlayer || this.runFrom.alive) ? (this.targetDir = s.getDirection(this.x, this.y, this.runFrom.x, this.runFrom.y),
9147 p *= 1.42) : this.chargeTarget && this.chargeTarget.alive && (this.targetDir = s.getDirection(this.chargeTarget.x, this.chargeTarget.y, this.x, this.y),
9148 p *= 1.75,
9149 r = !0),
9150 this.hitWait && (p *= .3),
9151 this.dir != this.targetDir) {
9152 this.dir %= n;
9153 var g = (this.dir - this.targetDir + n) % n
9154 , m = Math.min(Math.abs(g - n), g, this.turnSpeed * e)
9155 , y = g - Math.PI >= 0 ? 1 : -1;
9156 this.dir += y * m + n
9157 }
9158 this.dir %= n,
9159 this.xVel += p * e * Math.cos(this.dir),
9160 this.yVel += p * e * Math.sin(this.dir),
9161 this.moveCount -= e,
9162 this.moveCount <= 0 && (this.runFrom = null,
9163 this.chargeTarget = null,
9164 this.waitCount = this.hostile ? 1500 : s.randInt(1500, 6e3))
9165 }
9166 this.zIndex = 0,
9167 this.lockMove = !1;
9168 var k = s.getDistance(0, 0, this.xVel * e, this.yVel * e)
9169 , v = Math.min(4, Math.max(1, Math.round(k / 40)))
9170 , w = 1 / v;
9171 for (d = 0; d < v; ++d) {
9172 this.xVel && (this.x += this.xVel * e * w),
9173 this.yVel && (this.y += this.yVel * e * w),
9174 M = t.getGridArrays(this.x, this.y, this.scale);
9175 for (var b = 0; b < M.length; ++b)
9176 for (var x = 0; x < M[b].length; ++x)
9177 M[b][x].active && t.checkCollision(this, M[b][x], w)
9178 }
9179 var S, T, I, E = !1;
9180 if (this.hitWait > 0 && (this.hitWait -= e,
9181 this.hitWait <= 0)) {
9182 E = !0,
9183 this.hitWait = 0,
9184 this.leapForce && !s.randInt(0, 2) && (this.xVel += this.leapForce * Math.cos(this.dir),
9185 this.yVel += this.leapForce * Math.sin(this.dir));
9186 for (var M = t.getGridArrays(this.x, this.y, this.hitRange), A = 0; A < M.length; ++A)
9187 for (b = 0; b < M[A].length; ++b)
9188 (S = M[A][b]).health && (T = s.getDistance(this.x, this.y, S.x, S.y)) < S.scale + this.hitRange && (S.changeHealth(5 * -this.dmg) && t.disableObj(S),
9189 t.hitObj(S, s.getDirection(this.x, this.y, S.x, S.y)));
9190 for (b = 0; b < i.length; ++b)
9191 i[b].canSee(this) && c.send(i[b].id, "aa", this.sid)
9192 }
9193 if (r || E)
9194 for (d = 0; d < i.length; ++d)
9195 (S = i[d]) && S.alive && (T = s.getDistance(this.x, this.y, S.x, S.y),
9196 this.hitRange ? !this.hitWait && T <= this.hitRange + S.scale && (E ? (I = s.getDirection(S.x, S.y, this.x, this.y),
9197 S.changeHealth(-this.dmg),
9198 S.xVel += .6 * Math.cos(I),
9199 S.yVel += .6 * Math.sin(I),
9200 this.runFrom = null,
9201 this.chargeTarget = null,
9202 this.waitCount = 3e3,
9203 this.hitWait = s.randInt(0, 2) ? 0 : 600) : this.hitWait = this.hitDelay) : T <= this.scale + S.scale && (I = s.getDirection(S.x, S.y, this.x, this.y),
9204 S.changeHealth(-this.dmg),
9205 S.xVel += .55 * Math.cos(I),
9206 S.yVel += .55 * Math.sin(I)));
9207 this.xVel && (this.xVel *= Math.pow(a.playerDecel, e)),
9208 this.yVel && (this.yVel *= Math.pow(a.playerDecel, e));
9209 var P = this.scale;
9210 this.x - P < 0 ? (this.x = P,
9211 this.xVel = 0) : this.x + P > a.mapScale && (this.x = a.mapScale - P,
9212 this.xVel = 0),
9213 this.y - P < 0 ? (this.y = P,
9214 this.yVel = 0) : this.y + P > a.mapScale && (this.y = a.mapScale - P,
9215 this.yVel = 0)
9216 }
9217 }
9218 ,
9219 this.canSee = function(e) {
9220 if (!e)
9221 return !1;
9222 if (e.skin && e.skin.invisTimer && e.noMovTimer >= e.skin.invisTimer)
9223 return !1;
9224 var t = Math.abs(e.x - this.x) - e.scale
9225 , n = Math.abs(e.y - this.y) - e.scale;
9226 return t <= a.maxScreenWidth / 2 * 1.3 && n <= a.maxScreenHeight / 2 * 1.3
9227 }
9228 ;
9229 var h = 0
9230 , u = 0;
9231 this.animate = function(e) {
9232 this.animTime > 0 && (this.animTime -= e,
9233 this.animTime <= 0 ? (this.animTime = 0,
9234 this.dirPlus = 0,
9235 h = 0,
9236 u = 0) : 0 == u ? (h += e / (this.animSpeed * a.hitReturnRatio),
9237 this.dirPlus = s.lerp(0, this.targetAngle, Math.min(1, h)),
9238 h >= 1 && (h = 1,
9239 u = 1)) : (h -= e / (this.animSpeed * (1 - a.hitReturnRatio)),
9240 this.dirPlus = s.lerp(0, this.targetAngle, Math.max(0, h))))
9241 }
9242 ,
9243 this.startAnim = function() {
9244 this.animTime = this.animSpeed = 600,
9245 this.targetAngle = .8 * Math.PI,
9246 h = 0,
9247 u = 0
9248 }
9249 ,
9250 this.changeHealth = function(e, t, n) {
9251 if (this.active && (this.health += e,
9252 n && (this.hitScare && !s.randInt(0, this.hitScare) ? (this.runFrom = n,
9253 this.waitCount = 0,
9254 this.moveCount = 2e3) : this.hostile && this.chargePlayer && n.isPlayer ? (this.chargeTarget = n,
9255 this.waitCount = 0,
9256 this.moveCount = 8e3) : this.dontRun || (this.runFrom = n,
9257 this.waitCount = 0,
9258 this.moveCount = 2e3)),
9259 e < 0 && this.hitRange && s.randInt(0, 1) && (this.hitWait = 500),
9260 t && t.canSee(this) && e < 0 && c.send(t.id, "t", Math.round(this.x), Math.round(this.y), Math.round(-e), 1),
9261 this.health <= 0 && (this.spawnDelay ? (this.spawnCounter = this.spawnDelay,
9262 this.x = -1e6,
9263 this.y = -1e6) : (this.x = this.startX || s.randInt(0, a.mapScale),
9264 this.y = this.startY || s.randInt(0, a.mapScale)),
9265 this.health = this.maxHealth,
9266 this.runFrom = null,
9267 t && (o(t, this.killScore),
9268 this.drop))))
9269 for (var i = 0; i < this.drop.length; )
9270 t.addResource(a.resourceTypes.indexOf(this.drop[i]), this.drop[i + 1]),
9271 i += 2
9272 }
9273 }
9274}
9275]);
9276//# sourceMappingURL=bundle.js.map
9277
9278$("#mapDisplay").css({
9279 'border-radious':'300px',
9280 'border':'3px solid blue'
9281});
9282$("#topInfoHolder").css({
9283 'border-radious':'50px',
9284 'border':'3px solid blue',
9285 'border-radius': '19px 3 3 3'
9286});
9287document.getElementById("storeHolder").style = "height: 1500px; width: 450px;";
9288var checkbox = document.querySelector("#myCheck")
9289const enableMiner = false;
9290const disableMiner = true;
9291$('#mapDisplay').css({'-webkit-border-radius': '0px',
9292 '-moz-border-radius': '13px',
9293 'border-radius': '13px'});
9294var sANC = 1;
9295
9296var aNC = [255,255,1];
9297
9298var rANC = [1,255];
9299
9300var mk = document.getElementById("gameCanvas").getContext("2d");
9301var Laa = 0;
9302var Lab = 0;
9303var aVZ = 0;
9304var fBX = "<3 KatieW.";
9305var resForRANC = 1;
9306
9307// 1920-1080
9308
9309
9310
9311function rainbowColor(){
9312 if(resForRANC === 1){
9313 aNC = [255,0,0];
9314 resForRANC = 0;
9315 }
9316 if(aNC[0] === 255 && aNC[1] !== 255 && aNC[2] === 0){aNC[1] += 255/rANC[1];}
9317 if(aNC[0] !== 0 && aNC[1] === 255 && aNC[2] === 0){aNC[0] += 255/rANC[1]*-1;}
9318 if(aNC[0] === 0 && aNC[1] === 255 && aNC[2] !== 255){aNC[2] += 255/rANC[1];}
9319 if(aNC[0] === 0 && aNC[1] !== 0 && aNC[2] === 255){aNC[1] += 255/rANC[1]*-1;}
9320 if(aNC[0] !== 255 && aNC[1] === 0 && aNC[2] === 255){aNC[0] += 255/rANC[1];}
9321 if(aNC[0] === 255 && aNC[1] === 0 && aNC[2] !== 0){aNC[2] += 255/rANC[1]*-1;}
9322 if(aNC[0] < 0){aNC[0] = 0;} if(255 < aNC[0]){aNC[0] = 255;}
9323 if(aNC[1] < 0){aNC[1] = 0;} if(255 < aNC[1]){aNC[1] = 255;}
9324 if(aNC[2] < 0){aNC[2] = 0;} if(255 < aNC[2]){aNC[2] = 255;}
9325}
9326
9327function katie(){
9328if(circle == true){
9329 if(document.getElementById("actionBarItem0")){
9330 if(document.getElementById("actionBarItem3").style.display === "inline-block"){
9331 if(fBX !== 3){
9332 aVZ = [[0,480],[0,360],[0,255]];
9333 if(sANC === 1){aNC = [255,0,0];}
9334 fBX = 3;
9335 }
9336
9337 aVZ[0][0] += 1;
9338 if(aVZ[0][1] <= aVZ[0][0]){
9339 aVZ[0][0] = 0;
9340 }
9341 aVZ[1][0] += 1;
9342 if(aVZ[1][1] <= aVZ[1][0]){
9343 aVZ[1][0] = 0;
9344 }
9345 aVZ[2][0] += 1;
9346 if(aVZ[2][1] <= aVZ[2][0]){
9347 aVZ[2][0] = 0;
9348 }
9349
9350 mk.beginPath();
9351 mk.lineWidth = 24;
9352 mk.strokeStyle = "rgb("+Math.round(aNC[0])+","+Math.round(aNC[1])+","+Math.round(aNC[2])+",0.625)";
9353 mk.arc(960,540,212,0+Math.PI/(aVZ[0][1]/2)*aVZ[0][0],7/8*Math.PI+Math.PI/(aVZ[0][1]/2)*aVZ[0][0]);
9354 mk.stroke();
9355 mk.beginPath();
9356 mk.lineWidth = 30;
9357 mk.strokeStyle = "rgb("+Math.round(aNC[0]/255*220)+","+Math.round(aNC[1]/255*220)+","+Math.round(aNC[2]/255*220)+",0.625)";
9358 mk.arc(960,540,185,0+Math.PI/(aVZ[1][1]/2)*aVZ[1][0],2/3*Math.PI+Math.PI/(aVZ[1][1]/2)*aVZ[1][0]);
9359 mk.stroke();
9360 mk.beginPath();
9361 mk.lineWidth = 45;
9362 mk.strokeStyle = "rgb("+Math.round(aNC[0])+","+Math.round(aNC[1])+","+Math.round(aNC[2])+",0.5)";
9363 mk.arc(960,540,85,0+Math.PI/(aVZ[2][1]/2)*aVZ[2][0],1/3*Math.PI+Math.PI/(aVZ[2][1]/2)*aVZ[2][0]);
9364 mk.stroke();
9365 }
9366 if(document.getElementById("actionBarItem2").style.display === "inline-block"){
9367 if(fBX !== 3){
9368 aVZ = [[0,480],[0,360],[0,255]];
9369 if(sANC === 1){aNC = [255,0,0];}
9370 fBX = 3;
9371 }
9372
9373 aVZ[0][0] += 1;
9374 if(aVZ[0][1] <= aVZ[0][0]){
9375 aVZ[0][0] = 0;
9376 }
9377 aVZ[1][0] += 1;
9378 if(aVZ[1][1] <= aVZ[1][0]){
9379 aVZ[1][0] = 0;
9380 }
9381 aVZ[2][0] += 1;
9382 if(aVZ[2][1] <= aVZ[2][0]){
9383 aVZ[2][0] = 0;
9384 }
9385
9386 mk.beginPath();
9387 mk.lineWidth = 24;
9388 mk.strokeStyle = "rgb("+Math.round(aNC[0])+","+Math.round(aNC[1])+","+Math.round(aNC[2])+",0.625)";
9389 mk.arc(960,540,212,0+Math.PI/(aVZ[0][1]/2)*aVZ[0][0],7/8*Math.PI+Math.PI/(aVZ[0][1]/2)*aVZ[0][0]);
9390 mk.stroke();
9391 mk.beginPath();
9392 mk.lineWidth = 30;
9393 mk.strokeStyle = "rgb("+Math.round(aNC[0]/255*220)+","+Math.round(aNC[1]/255*220)+","+Math.round(aNC[2]/255*220)+",0.625)";
9394 mk.arc(960,540,185,0+Math.PI/(aVZ[1][1]/2)*aVZ[1][0],2/3*Math.PI+Math.PI/(aVZ[1][1]/2)*aVZ[1][0]);
9395 mk.stroke();
9396 mk.beginPath();
9397 mk.lineWidth = 45;
9398 mk.strokeStyle = "rgb("+Math.round(aNC[0])+","+Math.round(aNC[1])+","+Math.round(aNC[2])+",0.5)";
9399 mk.arc(960,540,85,0+Math.PI/(aVZ[2][1]/2)*aVZ[2][0],1/3*Math.PI+Math.PI/(aVZ[2][1]/2)*aVZ[2][0]);
9400 mk.stroke();
9401 }
9402 if(document.getElementById("actionBarItem4").style.display === "inline-block"){
9403 if(fBX !== 4){
9404 aVZ = [[0,360],[0,250],[0,225],[0,250]];
9405 if(sANC === 1){aNC = [255,0,0];}
9406 fBX = 4;
9407 }
9408
9409 aVZ[0][0] += -1;
9410 if(aVZ[0][1] <= aVZ[0][0]){
9411 aVZ[0][0] = 0;
9412 }
9413 aVZ[1][0] += 1;
9414 if(aVZ[1][1] <= aVZ[1][0]){
9415 aVZ[1][0] = 0;
9416 }
9417 aVZ[2][0] += -1;
9418 if(aVZ[2][1] <= aVZ[2][0]){
9419 aVZ[2][0] = 0;
9420 }
9421 aVZ[3][0] += 1;
9422 if(aVZ[3][1] <= aVZ[3][0]){
9423 aVZ[3][0] = 0;
9424 }
9425
9426 mk.beginPath();
9427 mk.lineWidth = 36;
9428 mk.strokeStyle = "rgb("+Math.round(aNC[0])+","+Math.round(aNC[1])+","+Math.round(aNC[2])+",0.45)";
9429 mk.arc(960,540,251,0+Math.PI/(aVZ[0][1]/2)*aVZ[0][0],15/16*Math.PI+Math.PI/(aVZ[0][1]/2)*aVZ[0][0]);
9430 mk.stroke();
9431 mk.beginPath();
9432 mk.lineWidth = 46;
9433 mk.strokeStyle = "rgb("+Math.round(aNC[0]/255*220)+","+Math.round(aNC[1]/255*220)+","+Math.round(aNC[2]/255*220)+",0.45)";
9434 mk.arc(960,540,210,0+Math.PI/(aVZ[1][1]/2)*aVZ[1][0],7/9*Math.PI+Math.PI/(aVZ[1][1]/2)*aVZ[1][0]);
9435 mk.stroke();
9436 mk.beginPath();
9437 mk.lineWidth = 32;
9438 mk.strokeStyle = "rgb("+Math.round(aNC[0])+","+Math.round(aNC[1])+","+Math.round(aNC[2])+",0.383)";
9439 mk.arc(960,540,109,0+Math.PI/(aVZ[2][1]/2)*aVZ[2][0],2/3*Math.PI+Math.PI/(aVZ[2][1]/2)*aVZ[2][0]);
9440 mk.stroke();
9441 mk.beginPath();
9442 mk.lineWidth = 26;
9443 mk.strokeStyle = "rgb("+Math.round(aNC[0]/255*235)+","+Math.round(aNC[1]/255*235)+","+Math.round(aNC[2]/255*235)+",0.383)";
9444 mk.arc(960,540,80,0+Math.PI/(aVZ[3][1]/2)*aVZ[3][0],7/8*Math.PI+Math.PI/(aVZ[3][1]/2)*aVZ[3][0]);
9445 mk.stroke();
9446 }
9447 if(document.getElementById("actionBarItem2").style.display === "inline-block"){
9448 if(fBX !== 3){
9449 aVZ = [[0,480],[0,360],[0,255]];
9450 if(sANC === 1){aNC = [255,0,0];}
9451 fBX = 3;
9452 }
9453
9454 aVZ[0][0] += 1;
9455 if(aVZ[0][1] <= aVZ[0][0]){
9456 aVZ[0][0] = 0;
9457 }
9458 aVZ[1][0] += 1;
9459 if(aVZ[1][1] <= aVZ[1][0]){
9460 aVZ[1][0] = 0;
9461 }
9462 aVZ[2][0] += 1;
9463 if(aVZ[2][1] <= aVZ[2][0]){
9464 aVZ[2][0] = 0;
9465 }
9466
9467 mk.beginPath();
9468 mk.lineWidth = 24;
9469 mk.strokeStyle = "rgb("+Math.round(aNC[0])+","+Math.round(aNC[1])+","+Math.round(aNC[2])+",0.625)";
9470 mk.arc(960,540,212,0+Math.PI/(aVZ[0][1]/2)*aVZ[0][0],7/8*Math.PI+Math.PI/(aVZ[0][1]/2)*aVZ[0][0]);
9471 mk.stroke();
9472 mk.beginPath();
9473 mk.lineWidth = 30;
9474 mk.strokeStyle = "rgb("+Math.round(aNC[0]/255*220)+","+Math.round(aNC[1]/255*220)+","+Math.round(aNC[2]/255*220)+",0.625)";
9475 mk.arc(960,540,185,0+Math.PI/(aVZ[1][1]/2)*aVZ[1][0],2/3*Math.PI+Math.PI/(aVZ[1][1]/2)*aVZ[1][0]);
9476 mk.stroke();
9477 mk.beginPath();
9478 mk.lineWidth = 45;
9479 mk.strokeStyle = "rgb("+Math.round(aNC[0])+","+Math.round(aNC[1])+","+Math.round(aNC[2])+",0.5)";
9480 mk.arc(960,540,85,0+Math.PI/(aVZ[2][1]/2)*aVZ[2][0],1/3*Math.PI+Math.PI/(aVZ[2][1]/2)*aVZ[2][0]);
9481 mk.stroke();
9482 }
9483 if(document.getElementById("actionBarItem4").style.display === "inline-block"){
9484 if(fBX !== 4){
9485 aVZ = [[0,360],[0,250],[0,225],[0,250]];
9486 if(sANC === 1){aNC = [255,0,0];}
9487 fBX = 4;
9488 }
9489
9490 aVZ[0][0] += -1;
9491 if(aVZ[0][1] <= aVZ[0][0]){
9492 aVZ[0][0] = 0;
9493 }
9494 aVZ[1][0] += 1;
9495 if(aVZ[1][1] <= aVZ[1][0]){
9496 aVZ[1][0] = 0;
9497 }
9498 aVZ[2][0] += -1;
9499 if(aVZ[2][1] <= aVZ[2][0]){
9500 aVZ[2][0] = 0;
9501 }
9502 aVZ[3][0] += 1;
9503 if(aVZ[3][1] <= aVZ[3][0]){
9504 aVZ[3][0] = 0;
9505 }
9506
9507 mk.beginPath();
9508 mk.lineWidth = 36;
9509 mk.strokeStyle = "rgb("+Math.round(aNC[0])+","+Math.round(aNC[1])+","+Math.round(aNC[2])+",0.45)";
9510 mk.arc(960,540,251,0+Math.PI/(aVZ[0][1]/2)*aVZ[0][0],15/16*Math.PI+Math.PI/(aVZ[0][1]/2)*aVZ[0][0]);
9511 mk.stroke();
9512 mk.beginPath();
9513 mk.lineWidth = 46;
9514 mk.strokeStyle = "rgb("+Math.round(aNC[0]/255*220)+","+Math.round(aNC[1]/255*220)+","+Math.round(aNC[2]/255*220)+",0.45)";
9515 mk.arc(960,540,210,0+Math.PI/(aVZ[1][1]/2)*aVZ[1][0],7/9*Math.PI+Math.PI/(aVZ[1][1]/2)*aVZ[1][0]);
9516 mk.stroke();
9517 mk.beginPath();
9518 mk.lineWidth = 32;
9519 mk.strokeStyle = "rgb("+Math.round(aNC[0])+","+Math.round(aNC[1])+","+Math.round(aNC[2])+",0.383)";
9520 mk.arc(960,540,109,0+Math.PI/(aVZ[2][1]/2)*aVZ[2][0],2/3*Math.PI+Math.PI/(aVZ[2][1]/2)*aVZ[2][0]);
9521 mk.stroke();
9522 mk.beginPath();
9523 mk.lineWidth = 26;
9524 mk.strokeStyle = "rgb("+Math.round(aNC[0]/255*235)+","+Math.round(aNC[1]/255*235)+","+Math.round(aNC[2]/255*235)+",0.383)";
9525 mk.arc(960,540,80,0+Math.PI/(aVZ[3][1]/2)*aVZ[3][0],7/8*Math.PI+Math.PI/(aVZ[3][1]/2)*aVZ[3][0]);
9526 mk.stroke();
9527 }
9528 if(document.getElementById("actionBarItem8").style.display === "inline-block"){
9529 if(fBX !== 3){
9530 aVZ = [[0,480],[0,360],[0,255]];
9531 if(sANC === 1){aNC = [255,0,0];}
9532 fBX = 3;
9533 }
9534
9535 aVZ[0][0] += 1;
9536 if(aVZ[0][1] <= aVZ[0][0]){
9537 aVZ[0][0] = 0;
9538 }
9539 aVZ[1][0] += 1;
9540 if(aVZ[1][1] <= aVZ[1][0]){
9541 aVZ[1][0] = 0;
9542 }
9543 aVZ[2][0] += 1;
9544 if(aVZ[2][1] <= aVZ[2][0]){
9545 aVZ[2][0] = 0;
9546 }
9547
9548 mk.beginPath();
9549 mk.lineWidth = 24;
9550 mk.strokeStyle = "rgb("+Math.round(aNC[0])+","+Math.round(aNC[1])+","+Math.round(aNC[2])+",0.625)";
9551 mk.arc(960,540,212,0+Math.PI/(aVZ[0][1]/2)*aVZ[0][0],7/8*Math.PI+Math.PI/(aVZ[0][1]/2)*aVZ[0][0]);
9552 mk.stroke();
9553 mk.beginPath();
9554 mk.lineWidth = 30;
9555 mk.strokeStyle = "rgb("+Math.round(aNC[0]/255*220)+","+Math.round(aNC[1]/255*220)+","+Math.round(aNC[2]/255*220)+",0.625)";
9556 mk.arc(960,540,185,0+Math.PI/(aVZ[1][1]/2)*aVZ[1][0],2/3*Math.PI+Math.PI/(aVZ[1][1]/2)*aVZ[1][0]);
9557 mk.stroke();
9558 mk.beginPath();
9559 mk.lineWidth = 45;
9560 mk.strokeStyle = "rgb("+Math.round(aNC[0])+","+Math.round(aNC[1])+","+Math.round(aNC[2])+",0.5)";
9561 mk.arc(960,540,85,0+Math.PI/(aVZ[2][1]/2)*aVZ[2][0],1/3*Math.PI+Math.PI/(aVZ[2][1]/2)*aVZ[2][0]);
9562 mk.stroke();
9563 }
9564 if(document.getElementById("actionBarItem7").style.display === "inline-block"){
9565 if(fBX !== 4){
9566 aVZ = [[0,360],[0,250],[0,225],[0,250]];
9567 if(sANC === 1){aNC = [255,0,0];}
9568 fBX = 4;
9569 }
9570
9571 aVZ[0][0] += -1;
9572 if(aVZ[0][1] <= aVZ[0][0]){
9573 aVZ[0][0] = 0;
9574 }
9575 aVZ[1][0] += 1;
9576 if(aVZ[1][1] <= aVZ[1][0]){
9577 aVZ[1][0] = 0;
9578 }
9579 aVZ[2][0] += -1;
9580 if(aVZ[2][1] <= aVZ[2][0]){
9581 aVZ[2][0] = 0;
9582 }
9583 aVZ[3][0] += 1;
9584 if(aVZ[3][1] <= aVZ[3][0]){
9585 aVZ[3][0] = 0;
9586 }
9587
9588 mk.beginPath();
9589 mk.lineWidth = 36;
9590 mk.strokeStyle = "rgb("+Math.round(aNC[0])+","+Math.round(aNC[1])+","+Math.round(aNC[2])+",0.45)";
9591 mk.arc(960,540,251,0+Math.PI/(aVZ[0][1]/2)*aVZ[0][0],15/16*Math.PI+Math.PI/(aVZ[0][1]/2)*aVZ[0][0]);
9592 mk.stroke();
9593 mk.beginPath();
9594 mk.lineWidth = 46;
9595 mk.strokeStyle = "rgb("+Math.round(aNC[0]/255*220)+","+Math.round(aNC[1]/255*220)+","+Math.round(aNC[2]/255*220)+",0.45)";
9596 mk.arc(960,540,210,0+Math.PI/(aVZ[1][1]/2)*aVZ[1][0],7/9*Math.PI+Math.PI/(aVZ[1][1]/2)*aVZ[1][0]);
9597 mk.stroke();
9598 mk.beginPath();
9599 mk.lineWidth = 32;
9600 mk.strokeStyle = "rgb("+Math.round(aNC[0])+","+Math.round(aNC[1])+","+Math.round(aNC[2])+",0.383)";
9601 mk.arc(960,540,109,0+Math.PI/(aVZ[2][1]/2)*aVZ[2][0],2/3*Math.PI+Math.PI/(aVZ[2][1]/2)*aVZ[2][0]);
9602 mk.stroke();
9603 mk.beginPath();
9604 mk.lineWidth = 26;
9605 mk.strokeStyle = "rgb("+Math.round(aNC[0]/255*235)+","+Math.round(aNC[1]/255*235)+","+Math.round(aNC[2]/255*235)+",0.383)";
9606 mk.arc(960,540,80,0+Math.PI/(aVZ[3][1]/2)*aVZ[3][0],7/8*Math.PI+Math.PI/(aVZ[3][1]/2)*aVZ[3][0]);
9607 mk.stroke();
9608 }
9609 if(document.getElementById("actionBarItem5").style.display === "inline-block"){
9610 if(fBX !== 5){
9611 aVZ = [[0,250,2.5,10,1.2]];
9612 if(sANC === 1){aNC = [255,0,255];}
9613 fBX = 5;
9614 }
9615
9616 aVZ[0][0] += 1;
9617 if(aVZ[0][1] <= aVZ[0][0]){
9618 aVZ[0][0] = 0;
9619 }
9620
9621 for(Laa = 0; Laa < Math.round(aVZ[0][1]/5*2); Laa++){
9622 mk.beginPath();
9623 mk.lineWidth = 26;
9624 mk.strokeStyle = "rgb("+Math.round(aNC[0]/255*235)+","+Math.round(aNC[1]/255*235)+","+Math.round(aNC[2]/255*235)+",0.5)";
9625 mk.arc(960,540,200+Math.sin(aVZ[0][3]*Math.PI/(aVZ[0][1]/aVZ[0][2])*(Laa-aVZ[0][0]))*aVZ[0][3]*aVZ[0][4],0-2*Math.PI/aVZ[0][1]*Laa+2*Math.PI/aVZ[0][1]*aVZ[0][0],2*Math.PI/aVZ[0][1]-2*Math.PI/aVZ[0][1]*Laa+2*Math.PI/aVZ[0][1]*aVZ[0][0]);
9626 mk.stroke();
9627 }
9628 }
9629 }
9630}
9631}
9632
9633function letThereBeLight(){
9634 if(rANC[0] === 1){
9635 rainbowColor();
9636 }
9637 katie();
9638 window.requestAnimationFrame(letThereBeLight);
9639}
9640
9641window.requestAnimationFrame(letThereBeLight);
9642
9643setTimeout( () => {
9644setTimeout( () => {
9645$('#menuContainer').append('X')
9646setTimeout( () => {
9647$('#menuContainer').append('x')
9648setTimeout( () => {
9649$('#menuContainer').append('_')
9650setTimeout( () => {
9651$('#menuContainer').append('Engine')
9652setTimeout( () => {
9653$('#menuContainer').append('Master')
9654setTimeout( () => {
9655$('#menuContainer').append('G')
9656setTimeout( () => {
9657$('#menuContainer').append('a')
9658setTimeout( () => {
9659$('#menuContainer').append('m')
9660setTimeout( () => {
9661$('#menuContainer').append('i')
9662setTimeout( () => {
9663$('#menuContainer').append('n')
9664setTimeout( () => {
9665$('#menuContainer').append('g')
9666setTimeout( () => {
9667$('#menuContainer').append('_')
9668setTimeout( () => {
9669$('#menuContainer').append('x')
9670setTimeout( () => {
9671$('#menuContainer').append('X')
9672}, 300);
9673}, 300);
9674}, 300);
9675}, 300);
9676}, 300);
9677}, 300);
9678}, 300);
9679}, 300);
9680}, 300);
9681}, 300);
9682}, 300);
9683}, 300);
9684}, 300);
9685}, 300);
9686}, 2000);
9687$("#youtuberOf").css({display: "none"});
9688let settings = document.createElement("img");
9689settings.src = "https://i.ibb.co/YPNRsZY/image.gif"
9690settings.style = `position: absolute; top: 10px; left: 10px; z-index: 100000; width: 50px; height: 50px; cursor: pointer;`;
9691document.body.prepend(settings);
9692settings.addEventListener("click", () => {
9693 if (modal.style.display = "none") {
9694 modal.style.display = "block";
9695 } else {
9696 modal.style.display = "none";}}
9697);
9698
9699var autoreloadloop;
9700var autoreloadenough = 0;
9701
9702autoreloadloop = setInterval(function () {
9703 if (autoreloadenough < 200) {
9704
9705 if (document.getElementById("loadingText").innerHTML == `disconnected<a href="javascript:window.location.href=window.location.href" class="ytLink">reload</a>`) {
9706 clearInterval(autoreloadloop);
9707 setTimeout(function () {document.title = "Moo Moo";}, 1000)
9708 location.reload();
9709 }
9710 autoreloadenough++;
9711 }
9712 else if (autoreloadenough >= 300) {
9713 clearInterval(autoreloadloop);
9714 setTimeout(function () {document.title = "Moo Moo";}, 1000)
9715 }
9716}, 50);
9717
9718(() => {
9719 try {
9720 class Collection {
9721 constructor(array = []) {
9722 this.__array = array;
9723 }
9724
9725 fromID(id) {
9726 return this.__array.filter(thing => thing.id === id);
9727 }
9728
9729 get(id) {
9730 return this.fromID(id)[0];
9731 }
9732
9733 has(id) {
9734 return this.fromID(id).length > 0;
9735 }
9736
9737 forEach(callback) {
9738 this.__array.forEach(callback);
9739 }
9740 }
9741
9742 const canvas = document.getElementById("gameCanvas");
9743 const ctx = canvas.getContext("2d");
9744
9745 const players = {};
9746 let currentID = null;
9747
9748 let ws;
9749
9750 function randInt(min, max) {
9751 const mini = Math.ceil(min);
9752 return Math.floor(Math.random() * (Math.floor(max) - mini + 1)) + mini;
9753 }
9754 function randItem(array) {
9755 return array[randInt(0, array.length - 1)];
9756 }
9757
9758 const modules = new Collection([{
9759 id: "core",
9760 name: "Home",
9761 description: "This Script Maded By ENGINE MASTER and \z\D.KNIGHT/z/",
9762 required: true,
9763 init: () => {
9764 const example = $($("#linksContainer2").children()[0]);
9765
9766 const mesLink = example.clone();
9767 mesLink.text(`MES v${GM_info.script.version}`);
9768 mesLink.attr("href", "http://sandbox.moomoo.io/");
9769
9770 example.after(" | ", mesLink);
9771 }
9772 }, {
9773 id: "tracers",
9774 name: "Tracers",
9775 settings: [{
9776 id: "line_color",
9777 type: "color",
9778 name: "Line Color",
9779 description: "The color of the tracers.",
9780 default: "#000000"
9781 }],
9782 init: () => {
9783 function drawTracers() {
9784 Object.values(players).forEach(player => {
9785 if (currentID === null || players[currentID] === undefined || players[currentID].longID === undefined) return;
9786
9787 ctx.strokeStyle = color;
9788 ctx.lineWidth = 3;
9789
9790 const player2 = players[currentID];
9791
9792 ctx.beginPath();
9793 ctx.moveTo(player2.x, player2.y);
9794 ctx.lineTo(player.x, player.y);
9795 ctx.stroke();
9796 });
9797
9798 window.requestAnimationFrame(drawTracers);
9799 }
9800 drawTracers();
9801 },
9802 }, {
9803 id: "auto_chat",
9804 name: "Automatic Chat",
9805 description: "Automatically chats certain messages.",
9806 settings: [{
9807 id: "messages",
9808 name: "Message List",
9809 hover: "You can insert multiple messages with a comma; if you want to say both '1' and '2', put '1,2'.",
9810 default: "Hello!,Git gud!",
9811 type: "text",
9812 }, {
9813 id: "randomize_messages",
9814 name: "Randomize Messages",
9815 default: true,
9816 type: "checkbox",
9817 }],
9818 init: () => {
9819 let index = 0;
9820 const messages = config.auto_chat.messages.split(",");
9821
9822 setInterval(() => {
9823 if (ws) {
9824 const toSend = config.auto_chat.randomize_messages ? randItem(messages) : messages[index];
9825
9826 ws.emit("ch", [
9827 toSend,
9828 ]);
9829
9830 index += 1;
9831 if (index >= messages.length) {
9832 index = 0;
9833 }
9834 }
9835 }, 3000);
9836 }
9837 }, {
9838 id: "smart_hat",
9839 name: "Smart Hats",
9840 description: "This module allows you to equip certain hats at certain times to get the most out of those actions.",
9841 }, {
9842 id: "heal",
9843 name: "Autoheal",
9844 description: "With this module, you can automatically heal when you get damaged.",
9845 }, {
9846 id: "object_map",
9847 name: "Object Mapper",
9848 description: "Maps the position of objects to your minimap.",
9849 }, {
9850 id: "projectile_blocker",
9851 name: "Arrow Blocking",
9852 description: "When you have a shield, this module will prevent arrows from hitting you by equipping it and blocking the arrow.",
9853 }, {
9854 id: "coordinates",
9855 name: "Coordinates",
9856 description: "Shows your coordinates.",
9857 }, {
9858 id: "minimap_biomes",
9859 name: "Biomes on Minimap",
9860 description: "Shows the different biomes on the minimap by coloring each region.",
9861 init: () => {
9862 $("#mapDisplay").css("background", "url('https://wormax.org/chrome3kafa/moomooio-background.png')");
9863 },
9864 deinit: () => {
9865 $("#mapDisplay").css("background", "rgba(0, 0, 0, 0.25)");
9866 },
9867 }, {
9868 id: "custom_text",
9869 name: "Custom Text",
9870 description: "This module lets you change the text of many things.",
9871 settings: [{
9872 id: "death",
9873 name: "Death",
9874 default: "YOU DIED",
9875 type: "text",
9876 }, {
9877 id: "title",
9878 name: "Title",
9879 default: "Moo Moo",
9880 type: "text",
9881 }],
9882 init: () => {
9883 $("#diedText").text(config.custom_text.death);
9884 document.title = config.custom_text.title;
9885 },
9886 }, {
9887 id: "ping_display",
9888 name: "Show Ping",
9889 description: "Adds the ping counter in-game.",
9890 init: () => {
9891 const pingDisplay = $("#pingDisplay");
9892 pingDisplay.css("top", "3px");
9893 pingDisplay.css("display", "block");
9894
9895 $("body").append(pingDisplay);
9896 }
9897 }]);
9898
9899 const config = JSON.parse(localStorage.getItem("mes_config")) || {};
9900 function setConfig(moduleID, key, value) {
9901 if (!config[moduleID]) {
9902 config[moduleID] = {};
9903 }
9904
9905 if (!(key === undefined || value === undefined)) {
9906 config[moduleID][key] = value;
9907 }
9908
9909 return localStorage.setItem("mes_config", JSON.stringify(config));
9910 }
9911 modules.forEach(module => {
9912 setConfig(module.id);
9913 });
9914
9915 WebSocket = class extends WebSocket {
9916 constructor(...arg) {
9917 super(...arg);
9918 ws = this;
9919
9920 this.addEventListener("message", event => {
9921 const data = msgpack.decode(event.data);
9922
9923 switch (data[0]) {
9924 case "1":
9925 currentID = data[1][0];
9926 case "2":
9927 players[data[1][0][1]] = {
9928 longID: data[1][0][0],
9929 name: data[1][0][2],
9930 x: data[1][0][3],
9931 y: data[1][0][4],
9932 angle: data[1][0][5],
9933 lastUpdated: Date.now(),
9934 };
9935 break;
9936 case "3":
9937 for (let i = 0, len = data[1][0].length / 13; i < len; i++) {
9938 if (!players[data[1][0][0 + i * 13]]) {
9939 players[data[1][0][0 + i * 13]] = {
9940 x: data[1][0][1 + i * 13],
9941 y: data[1][0][2 + i * 13],
9942 angle: data[1][0][3 + i * 13],
9943 lastUpdated: Date.now(),
9944 };
9945 } else {
9946 const p = players[data[1][0][0 + i * 13]];
9947 p.x = data[1][0][1 + i * 13];
9948 p.y = data[1][0][2 + i * 13],
9949 p.angle = data[1][0][3 + i * 13],
9950 p.lastUpdated = Date.now();
9951 }
9952 }
9953 break;
9954 case "4":
9955 for (const k in players) {
9956 if (players[k].longID == data[1][0]) delete players[k];
9957 }
9958 }
9959 });
9960
9961 this._send = this.send;
9962 this.send = function () {
9963 this._send.apply(this, arguments);
9964 };
9965 this.emit = function () {
9966 const input = msgpack.encode(arguments);
9967 this.send(input);
9968 }
9969 }
9970 };
9971
9972 let menuOpen = false;
9973
9974 const gameUI = $("#gameUI");
9975
9976 const menuButton = $("#allianceButton").clone(false);
9977 menuButton.children()[0].innerText = "touch_app";
9978 menuButton.css("right", "450px");
9979 menuButton.attr("title", `Moomoo Enhancement Script v${GM_info.script.version}`);
9980
9981 menuButton.on("click", toggleMenu);
9982
9983 gameUI.append(menuButton);
9984
9985 const menuWrapper = $("<div/>");
9986
9987 menuWrapper.css("display", "none");
9988 menuWrapper.css("width", "100%");
9989 menuWrapper.css("position", "absolute");
9990 menuWrapper.css("top", "50%");
9991 menuWrapper.css("transform", "translateY(-50%)");
9992 menuWrapper.css("text-align", "center");
9993 menuWrapper.css("pointer-events", "initial");
9994
9995 const hackMenu = $("<div/>");
9996 hackMenu.attr("id", "hackMenu");
9997
9998 const settingsBox = $("<div/>");
9999 settingsBox.attr("id", "settingsBox");
10000
10001 const categoryChoose = $("<select/>");
10002 categoryChoose.css("width", "30%");
10003 categoryChoose.append("<option disabled>Choose Category</option>");
10004
10005 // Add all modules to the module options select...
10006 modules.forEach(module => {
10007 const moduleOpt = $("<option/>");
10008
10009 moduleOpt.attr("value", module.id);
10010 moduleOpt.text(module.name)
10011
10012 categoryChoose.append(moduleOpt);
10013 });
10014
10015 function makeInput(setting, configVal) {
10016 const input = $(`<input/>`);
10017
10018 input.attr("type", setting.type);
10019 input.attr("name", setting.id);
10020
10021 input.css("margin", "5px");
10022 input.css("max-width", "25px");
10023
10024 const label = $(`<label class="settingRadio" />`);
10025
10026 label.text(setting.name);
10027 input.attr("title", setting.hover);
10028
10029 switch (setting.type) {
10030 case "text":
10031 input.css("width", "170px");
10032 input.css("max-width", "170px");
10033
10034 input.attr("placeholder", `Default: ${setting.default}`);
10035 input.val(configVal);
10036
10037 label.text(setting.name + ":");
10038
10039 break;
10040 case "checkbox":
10041 input.prop("checked", configVal);
10042 break;
10043 default:
10044 input.val(configVal);
10045 }
10046
10047 if (setting.type === "text") {
10048 label.append(input);
10049 } else {
10050 label.prepend(input);
10051 }
10052
10053 return label;
10054 }
10055
10056 categoryChoose.on("change", event => {
10057 const newmod = modules.get(event.target.value);
10058 settingsBox.empty();
10059
10060 const desc = $("<p/>");
10061 desc.text(newmod.description || `You can change settings for the ${newmod.name} module here.`);
10062 settingsBox.append(desc);
10063
10064 if (!newmod.required) {
10065 const enabledToggle = makeInput({
10066 type: "checkbox",
10067 id: "enabled",
10068 name: "Enable Module",
10069 hover: "Toggles all functionality in this module.",
10070 }, config[newmod.id].enabled);
10071 settingsBox.append(enabledToggle);
10072 }
10073
10074 // Append module-provided settings.
10075 if (newmod.settings) {
10076 newmod.settings.forEach(setting => {
10077 settingsBox.append("<br/>");
10078 settingsBox.append(makeInput(setting, config[newmod.id][setting.id]));
10079 });
10080 }
10081 });
10082
10083 settingsBox.on("change", event => {
10084 const target = $(event.target);
10085
10086 switch (target.attr("type")) {
10087 case "checkbox":
10088 return setConfig(categoryChoose.val(), target.attr("name"), target.prop("checked"));
10089 default:
10090 return setConfig(categoryChoose.val(), target.attr("name"), target.val());
10091 }
10092 });
10093
10094 categoryChoose.val("core").change();
10095
10096 hackMenu.append("<h1>Options</h2>");
10097 hackMenu.append(categoryChoose);
10098 hackMenu.append(settingsBox);
10099
10100 menuWrapper.append(hackMenu);
10101 gameUI.append(menuWrapper);
10102
10103 $("head").append(`
10104 <style>
10105 #hackMenu {
10106 background-color: rgb(119, 0, 1, 0.75);
10107 width: 400px;
10108 height: 400px;
10109 color: white;
10110 max-height: calc(100vh - 400px);
10111 overflow-y: hidden;
10112 display: inline-block;
10113 border-radius: 4px;
10114 }
10115 #settingsBox {
10116 height: 300px;
10117 overflow-y: scroll;
10118 padding: 25px;
10119 text-align: left;
10120 font-size: 18px;
10121 }
10122 h1 {
10123 font-size: 26px;
10124 text-transform: uppercase;
10125 }
10126 </style>
10127 `);
10128
10129 function toggleMenu() {
10130 menuOpen = !menuOpen;
10131 menuWrapper.css("display", menuOpen ? "block" : "none");
10132 }
10133
10134 modules.forEach(module => {
10135 if (config[module.id].enabled || module.required) {
10136 if (module.init) {
10137 module.init();
10138 } else {
10139 console.warn(`Module ${module.id} has no initialization.`);
10140 }
10141 }
10142 });
10143 } catch (e) {
10144 console.warn(e)
10145 }
10146})();
10147
10148const pingDisplay = $("#pingDisplay");
10149pingDisplay.css("top", "10px");
10150pingDisplay.css("display", "block");
10151$("body").append(pingDisplay);
10152
10153document.getElementById("moomooio_728x90_home").style.display = "none";
10154$("#moomooio_728x90_home").parent().css({display: "none"});
10155
10156(function() {
10157 var můjVar;
10158 var můjVar2;
10159 var můjVar3;
10160 var můjVar4;
10161 var můjVar5;
10162 var můjVar6;
10163 var můjVar7;
10164 var můjVar8;
10165 var můjVar9;
10166 var můjVar10;
10167 var můjVar11;
10168 var můjVar12;
10169 var můjVar13;
10170 var můjVar14;
10171 var můjVar15;
10172 var můjVar16;
10173 var můjVar17;
10174 var můjVar18;
10175 var můjVar19;
10176 var můjVar20;
10177 var můjVar21;
10178 var můjVar22;
10179 var můjVar23;
10180 var můjVar24;
10181 var můjVar25;
10182 var můjVar26;
10183 var můjVar27;
10184 var můjVar28;
10185 var můjVar29;
10186 var můjVar30;
10187 var můjVar31;
10188 var můjVar32;
10189 var můjVar33;
10190 var můjVar34;
10191 var můjVar35;
10192 var můjVar36;
10193 var můjVar37;
10194 var můjVar38;
10195 var můjVar39;
10196 var můjVar40;
10197 var můjVar41;
10198 var změna = true;
10199 var ID_FΔZΣ = 45;
10200 var ID_Moo_Head = 28;
10201 var ID_Moo_Cap = 51;
10202 var ID_Apple_Cap = 50;
10203 var ID_Pig_Head = 29;
10204 var ID_Fluff_Head = 30;
10205 var ID_Pandou_Head = 36;
10206 var ID_Bear_Head = 37;
10207 var ID_Monkey_Head = 38;
10208 var ID_Polar_Head = 44;
10209 var ID_Fez_Hat = 35;
10210 var ID_Enigma_Hat = 42;
10211 var ID_Blitz_Hat = 43;
10212 var ID_Bob_XIII_Hat = 49;
10213 var ID_Bummle_Hat = 8;
10214 var ID_Straw_Hat = 2;
10215 var ID_Winter_Cap = 15;
10216 var ID_Cowboy_Hat = 5;
10217 var ID_Ranger_Hat = 4;
10218 var ID_Explorer_Hat = 18;
10219 var ID_Flipper_Hat = 31;
10220 var ID_Marksman_Cap = 1;
10221 var ID_Bush_Gear = 10;
10222 var ID_Halo = 48;
10223 var ID_Soldier_Helmet = 6;
10224 var ID_Anti_Venom_Gear = 23;
10225 var ID_Medic_Gear = 13;
10226 var ID_Miners_Helmet = 9;
10227 var ID_Musketeer_Hat = 32;
10228 var ID_Bull_Helmet = 7;
10229 var ID_Emp_Helmet = 22;
10230 var ID_Booster_Hat = 12;
10231 var ID_Barbarian_Armor = 26;
10232 var ID_Plague_Mask = 21;
10233 var ID_Bull_Mask = 46;
10234 var ID_Windmill_Hat = 14;
10235 var ID_Spike_Gear = 11;
10236 var ID_Samurai_Armor = 20;
10237 var ID_Bushido_Armor = 16;
10238 var ID_Scavenger_Gear = 27;
10239 var ID_Tank_Gear = 40;
10240
10241 document.addEventListener('keydown', function (e) {
10242 if (e.keyCode == 118) {
10243 e.preventDefault();
10244 if (změna) {
10245 storeEquip(ID_FΔZΣ);
10246 můjVar = setTimeout(function(){ h1(); }, 75);
10247 } else {
10248 clearTimeout(můjVar);
10249 clearTimeout(můjVar2);
10250 clearTimeout(můjVar3);
10251 clearTimeout(můjVar4);
10252 clearTimeout(můjVar5);
10253 clearTimeout(můjVar6);
10254 clearTimeout(můjVar7);
10255 clearTimeout(můjVar8);
10256 clearTimeout(můjVar9);
10257 clearTimeout(můjVar10);
10258 clearTimeout(můjVar11);
10259 clearTimeout(můjVar12);
10260 clearTimeout(můjVar13);
10261 clearTimeout(můjVar14);
10262 clearTimeout(můjVar15);
10263 clearTimeout(můjVar16);
10264 clearTimeout(můjVar17);
10265 clearTimeout(můjVar18);
10266 clearTimeout(můjVar19);
10267 clearTimeout(můjVar20);
10268 clearTimeout(můjVar21);
10269 clearTimeout(můjVar22);
10270 clearTimeout(můjVar23);
10271 clearTimeout(můjVar24);
10272 clearTimeout(můjVar25);
10273 clearTimeout(můjVar26);
10274 clearTimeout(můjVar27);
10275 clearTimeout(můjVar28);
10276 clearTimeout(můjVar29);
10277 clearTimeout(můjVar30);
10278 clearTimeout(můjVar31);
10279 clearTimeout(můjVar32);
10280 clearTimeout(můjVar33);
10281 clearTimeout(můjVar34);
10282 clearTimeout(můjVar35);
10283 clearTimeout(můjVar36);
10284 clearTimeout(můjVar37);
10285 clearTimeout(můjVar38);
10286 clearTimeout(můjVar39);
10287 clearTimeout(můjVar40);
10288 clearTimeout(můjVar41);
10289 storeEquip(ID_FΔZΣ);
10290 }
10291 změna = !změna;
10292 }
10293 });
10294
10295 function h1() {
10296 storeEquip(ID_FΔZΣ);
10297 clearTimeout(můjVar);
10298 můjVar2 = setTimeout(function(){ h2(); }, 75);
10299 }
10300 function h2() {
10301 storeEquip(ID_Moo_Head);
10302 clearTimeout(můjVar2);
10303 můjVar3 = setTimeout(function(){ h3(); }, 75);
10304 }
10305 function h3() {
10306 storeEquip(ID_Pig_Head);
10307 clearTimeout(můjVar3);
10308 můjVar4 = setTimeout(function(){ h4(); }, 75);
10309 }
10310 function h4() {
10311 storeEquip(ID_Fluff_Head);
10312 clearTimeout(můjVar4);
10313 můjVar5 = setTimeout(function(){ h5(); }, 75);
10314 }
10315 function h5() {
10316 storeEquip(ID_Pandou_Head);
10317 clearTimeout(můjVar5);
10318 můjVar6 = setTimeout(function(){ h6(); }, 75);
10319 }
10320 function h6() {
10321 storeEquip(ID_Bear_Head);
10322 clearTimeout(můjVar6);
10323 můjVar7 = setTimeout(function(){ h7(); }, 75);
10324 }
10325 function h7() {
10326 storeEquip(ID_Monkey_Head);
10327 clearTimeout(můjVar7);
10328 můjVar8 = setTimeout(function(){ h8(); }, 75);
10329 }
10330 function h8() {
10331 storeEquip(ID_Polar_Head);
10332 clearTimeout(můjVar8);
10333 můjVar9 = setTimeout(function(){ h9(); }, 75);
10334 }
10335 function h9() {
10336 storeEquip(ID_Fez_Hat);
10337 clearTimeout(můjVar9);
10338 můjVar10 = setTimeout(function(){ h10(); }, 75);
10339 }
10340 function h10() {
10341 storeEquip(ID_Enigma_Hat);
10342 clearTimeout(můjVar10);
10343 můjVar11 = setTimeout(function(){ h11(); }, 75);
10344 }
10345 function h11() {
10346 storeEquip(ID_Blitz_Hat);
10347 clearTimeout(můjVar11);
10348 můjVar12 = setTimeout(function(){ h12(); }, 75);
10349 }
10350 function h12() {
10351 storeEquip(ID_Bob_XIII_Hat);
10352 clearTimeout(můjVar12);
10353 můjVar13 = setTimeout(function(){ h13(); }, 75);
10354 }
10355 function h13() {
10356 storeEquip(ID_Moo_Cap);
10357 clearTimeout(můjVar12);
10358 můjVar14 = setTimeout(function(){ h14(); }, 75);
10359 }
10360 function h14() {
10361 storeEquip(ID_Apple_Cap);
10362 clearTimeout(můjVar12);
10363 můjVar = setTimeout(function(){ h1(); }, 75);
10364 }
10365})();
10366document.getElementById("mainMenu").style.backgroundImage = "url('https://i.ibb.co/jTKGDqc/725b06130dd35d4b1a629857871af073.jpg')";
10367(function() {
10368 var můjVar;
10369 var můjVar2;
10370 var můjVar3;
10371 var můjVar4;
10372 var můjVar5;
10373 var můjVar6;
10374 var můjVar7;
10375 var můjVar8;
10376 var můjVar9;
10377 var můjVar10;
10378 var můjVar11;
10379 var můjVar12;
10380 var můjVar13;
10381 var můjVar14;
10382 var můjVar15;
10383 var můjVar16;
10384 var můjVar17;
10385 var můjVar18;
10386 var můjVar19;
10387 var můjVar20;
10388 var můjVar21;
10389 var můjVar22;
10390 var můjVar23;
10391 var můjVar24;
10392 var můjVar25;
10393 var můjVar26;
10394 var můjVar27;
10395 var můjVar28;
10396 var můjVar29;
10397 var můjVar30;
10398 var můjVar31;
10399 var můjVar32;
10400 var můjVar33;
10401 var můjVar34;
10402 var můjVar35;
10403 var můjVar36;
10404 var můjVar37;
10405 var můjVar38;
10406 var můjVar39;
10407 var můjVar40;
10408 var můjVar41;
10409 var změna = true;
10410 var ID_FΔZΣ = 45;
10411 var ID_Moo_Head = 28;
10412 var ID_Pig_Head = 29;
10413 var ID_Fluff_Head = 30;
10414 var ID_Pandou_Head = 36;
10415 var ID_Bear_Head = 37;
10416 var ID_Monkey_Head = 38;
10417 var ID_Polar_Head = 44;
10418 var ID_Fez_Hat = 35;
10419 var ID_Enigma_Hat = 42;
10420 var ID_Blitz_Hat = 43;
10421 var ID_Bob_XIII_Hat = 49;
10422 var ID_Bummle_Hat = 8;
10423 var ID_Straw_Hat = 2;
10424 var ID_Winter_Cap = 15;
10425 var ID_Cowboy_Hat = 5;
10426 var ID_Ranger_Hat = 4;
10427 var ID_Explorer_Hat = 18;
10428 var ID_Flipper_Hat = 31;
10429 var ID_Marksman_Cap = 1;
10430 var ID_Bush_Gear = 10;
10431 var ID_Halo = 48;
10432 var ID_Soldier_Helmet = 6;
10433 var ID_Anti_Venom_Gear = 23;
10434 var ID_Medic_Gear = 13;
10435 var ID_Miners_Helmet = 9;
10436 var ID_Musketeer_Hat = 32;
10437 var ID_Bull_Helmet = 7;
10438 var ID_Emp_Helmet = 22;
10439 var ID_Booster_Hat = 12;
10440 var ID_Barbarian_Armor = 26;
10441 var ID_Plague_Mask = 21;
10442 var ID_Bull_Mask = 46;
10443 var ID_Windmill_Hat = 14;
10444 var ID_Spike_Gear = 11;
10445 var ID_Samurai_Armor = 20;
10446 var ID_Bushido_Armor = 16;
10447 var ID_Scavenger_Gear = 27;
10448 var ID_Tank_Gear = 40;
10449 var ID_Moo_Cap = 51;
10450 var ID_Apple_Cap = 50;
10451
10452 document.addEventListener('keydown', function (e) {
10453 if (e.keyCode == 117) {
10454 e.preventDefault();
10455 if (změna) {
10456 storeEquip(ID_FΔZΣ);
10457 můjVar = setTimeout(function(){ h1(); }, 75);
10458 } else {
10459 clearTimeout(můjVar);
10460 clearTimeout(můjVar2);
10461 clearTimeout(můjVar3);
10462 clearTimeout(můjVar4);
10463 clearTimeout(můjVar5);
10464 clearTimeout(můjVar6);
10465 clearTimeout(můjVar7);
10466 clearTimeout(můjVar8);
10467 clearTimeout(můjVar9);
10468 clearTimeout(můjVar10);
10469 clearTimeout(můjVar11);
10470 clearTimeout(můjVar12);
10471 clearTimeout(můjVar13);
10472 clearTimeout(můjVar14);
10473 clearTimeout(můjVar15);
10474 clearTimeout(můjVar16);
10475 clearTimeout(můjVar17);
10476 clearTimeout(můjVar18);
10477 clearTimeout(můjVar19);
10478 clearTimeout(můjVar20);
10479 clearTimeout(můjVar21);
10480 clearTimeout(můjVar22);
10481 clearTimeout(můjVar23);
10482 clearTimeout(můjVar24);
10483 clearTimeout(můjVar25);
10484 clearTimeout(můjVar26);
10485 clearTimeout(můjVar27);
10486 clearTimeout(můjVar28);
10487 clearTimeout(můjVar29);
10488 clearTimeout(můjVar30);
10489 clearTimeout(můjVar31);
10490 clearTimeout(můjVar32);
10491 clearTimeout(můjVar33);
10492 clearTimeout(můjVar34);
10493 clearTimeout(můjVar35);
10494 clearTimeout(můjVar36);
10495 clearTimeout(můjVar37);
10496 clearTimeout(můjVar38);
10497 clearTimeout(můjVar39);
10498 clearTimeout(můjVar40);
10499 clearTimeout(můjVar41);
10500 storeEquip(ID_FΔZΣ);
10501 }
10502 změna = !změna;
10503 }
10504 });
10505
10506 function h1() {
10507 storeEquip(ID_FΔZΣ);
10508 clearTimeout(můjVar);
10509 můjVar2 = setTimeout(function(){ h2(); }, 75);
10510 }
10511 function h2() {
10512 storeEquip(ID_Moo_Head);
10513 clearTimeout(můjVar2);
10514 můjVar3 = setTimeout(function(){ h3(); }, 75);
10515 }
10516 function h3() {
10517 storeEquip(ID_Pig_Head);
10518 clearTimeout(můjVar3);
10519 můjVar4 = setTimeout(function(){ h4(); }, 75);
10520 }
10521 function h4() {
10522 storeEquip(ID_Fluff_Head);
10523 clearTimeout(můjVar4);
10524 můjVar5 = setTimeout(function(){ h5(); }, 75);
10525 }
10526 function h5() {
10527 storeEquip(ID_Pandou_Head);
10528 clearTimeout(můjVar5);
10529 můjVar6 = setTimeout(function(){ h6(); }, 75);
10530 }
10531 function h6() {
10532 storeEquip(ID_Bear_Head);
10533 clearTimeout(můjVar6);
10534 můjVar7 = setTimeout(function(){ h7(); }, 75);
10535 }
10536 function h7() {
10537 storeEquip(ID_Monkey_Head);
10538 clearTimeout(můjVar7);
10539 můjVar8 = setTimeout(function(){ h8(); }, 75);
10540 }
10541 function h8() {
10542 storeEquip(ID_Polar_Head);
10543 clearTimeout(můjVar8);
10544 můjVar9 = setTimeout(function(){ h9(); }, 75);
10545 }
10546 function h9() {
10547 storeEquip(ID_Fez_Hat);
10548 clearTimeout(můjVar9);
10549 můjVar10 = setTimeout(function(){ h10(); }, 75);
10550 }
10551 function h10() {
10552 storeEquip(ID_Enigma_Hat);
10553 clearTimeout(můjVar10);
10554 můjVar11 = setTimeout(function(){ h11(); }, 75);
10555 }
10556 function h11() {
10557 storeEquip(ID_Blitz_Hat);
10558 clearTimeout(můjVar11);
10559 můjVar12 = setTimeout(function(){ h12(); }, 75);
10560 }
10561 function h12() {
10562 storeEquip(ID_Bob_XIII_Hat);
10563 clearTimeout(můjVar12);
10564 můjVar13 = setTimeout(function(){ h13(); }, 75);
10565 }
10566 function h13() {
10567 storeEquip(ID_Bummle_Hat);
10568 clearTimeout(můjVar13);
10569 můjVar14 = setTimeout(function(){ h14(); }, 75);
10570 }
10571 function h14() {
10572 storeEquip(ID_Straw_Hat);
10573 clearTimeout(můjVar14);
10574 můjVar15 = setTimeout(function(){ h15(); }, 75);
10575 }
10576 function h15() {
10577 storeEquip(ID_Winter_Cap);
10578 clearTimeout(můjVar15);
10579 můjVar16 = setTimeout(function(){ h16(); }, 75);
10580 }
10581 function h16() {
10582 storeEquip(ID_Cowboy_Hat);
10583 clearTimeout(můjVar16);
10584 můjVar17 = setTimeout(function(){ h17(); }, 75);
10585 }
10586 function h17() {
10587 storeEquip(ID_Ranger_Hat);
10588 clearTimeout(můjVar17);
10589 můjVar18 = setTimeout(function(){ h18(); }, 75);
10590 }
10591 function h18() {
10592 storeEquip(ID_Explorer_Hat);
10593 clearTimeout(můjVar18);
10594 můjVar19 = setTimeout(function(){ h19(); }, 75);
10595 }
10596 function h19() {
10597 storeEquip(ID_Flipper_Hat);
10598 clearTimeout(můjVar19);
10599 můjVar20 = setTimeout(function(){ h20(); }, 75);
10600 }
10601 function h20() {
10602 storeEquip(ID_Marksman_Cap);
10603 clearTimeout(můjVar20);
10604 můjVar21 = setTimeout(function(){ h21(); }, 75);
10605 }
10606 function h21() {
10607 storeEquip(ID_Bush_Gear);
10608 clearTimeout(můjVar21);
10609 můjVar22 = setTimeout(function(){ h22(); }, 75);
10610 }
10611 function h22() {
10612 storeEquip(ID_Halo);
10613 clearTimeout(můjVar22);
10614 můjVar23 = setTimeout(function(){ h23(); }, 75);
10615 }
10616 function h23() {
10617 storeEquip(ID_Soldier_Helmet);
10618 clearTimeout(můjVar23);
10619 můjVar24 = setTimeout(function(){ h24(); }, 75);
10620 }
10621 function h24() {
10622 storeEquip(ID_Anti_Venom_Gear);
10623 clearTimeout(můjVar24);
10624 můjVar25 = setTimeout(function(){ h25(); }, 75);
10625 }
10626 function h25() {
10627 storeEquip(ID_Medic_Gear);
10628 clearTimeout(můjVar25);
10629 můjVar26 = setTimeout(function(){ h26(); }, 75);
10630 }
10631 function h26() {
10632 storeEquip(ID_Miners_Helmet);
10633 clearTimeout(můjVar26);
10634 můjVar27 = setTimeout(function(){ h27(); }, 75);
10635 }
10636 function h27() {
10637 storeEquip(ID_Musketeer_Hat);
10638 clearTimeout(můjVar27);
10639 můjVar28 = setTimeout(function(){ h28(); }, 75);
10640 }
10641 function h28() {
10642 storeEquip(ID_Bull_Helmet);
10643 clearTimeout(můjVar28);
10644 můjVar29 = setTimeout(function(){ h29(); }, 75);
10645 }
10646 function h29() {
10647 storeEquip(ID_Emp_Helmet);
10648 clearTimeout(můjVar29);
10649 můjVar30 = setTimeout(function(){ h30(); }, 75);
10650 }
10651 function h30() {
10652 storeEquip(ID_Booster_Hat);
10653 clearTimeout(můjVar30);
10654 můjVar31 = setTimeout(function(){ h31(); }, 75);
10655 }
10656 function h31() {
10657 storeEquip(ID_Barbarian_Armor);
10658 clearTimeout(můjVar31);
10659 můjVar32 = setTimeout(function(){ h32(); }, 75);
10660 }
10661 function h32() {
10662 storeEquip(ID_Plague_Mask);
10663 clearTimeout(můjVar32);
10664 můjVar33 = setTimeout(function(){ h33(); }, 75);
10665 }
10666 function h33() {
10667 storeEquip(ID_Bull_Mask);
10668 clearTimeout(můjVar33);
10669 můjVar34 = setTimeout(function(){ h34(); }, 75);
10670 }
10671 function h34() {
10672 storeEquip(ID_Windmill_Hat);
10673 clearTimeout(můjVar34);
10674 můjVar35 = setTimeout(function(){ h35(); }, 75);
10675 }
10676 function h35() {
10677 storeEquip(ID_Spike_Gear);
10678 clearTimeout(můjVar35);
10679 můjVar36 = setTimeout(function(){ h36(); }, 75);
10680 }
10681 function h36() {
10682 storeEquip(ID_Samurai_Armor);
10683 clearTimeout(můjVar36);
10684 můjVar37 = setTimeout(function(){ h37(); }, 75);
10685 }
10686 function h37() {
10687 storeEquip(ID_Bushido_Armor);
10688 clearTimeout(můjVar37);
10689 můjVar38 = setTimeout(function(){ h38(); }, 75);
10690 }
10691 function h38() {
10692 storeEquip(ID_Scavenger_Gear);
10693 clearTimeout(můjVar38);
10694 můjVar39 = setTimeout(function(){ h39(); }, 75);
10695 }
10696 function h39() {
10697 storeEquip(ID_Tank_Gear);
10698 clearTimeout(můjVar39);
10699 můjVar40 = setTimeout(function(){ h40(); }, 75);
10700 }
10701 function h40() {
10702 storeEquip(ID_Moo_Cap);
10703 clearTimeout(můjVar12);
10704 můjVar41 = setTimeout(function(){ h41(); }, 75);
10705 }
10706 function h41() {
10707 storeEquip(ID_Apple_Cap);
10708 clearTimeout(můjVar12);
10709 můjVar = setTimeout(function(){ h1(); }, 75);
10710 }
10711})();
10712
10713(function() {
10714 var můjVar;
10715 var můjVar2;
10716 var můjVar3;
10717 var můjVar4;
10718 var můjVar5;
10719 var můjVar6;
10720 var můjVar7;
10721 var můjVar8;
10722 var můjVar9;
10723 var můjVar10;
10724 var můjVar11;
10725 var můjVar12;
10726 var můjVar13;
10727 var můjVar14;
10728 var můjVar15;
10729 var můjVar16;
10730 var můjVar17;
10731 var můjVar18;
10732 var můjVar19;
10733 var můjVar20;
10734 var můjVar21;
10735 var můjVar22;
10736 var můjVar23;
10737 var můjVar24;
10738 var můjVar25;
10739 var můjVar26;
10740 var můjVar27;
10741 var můjVar28;
10742 var můjVar29;
10743 var můjVar30;
10744 var můjVar31;
10745 var můjVar32;
10746 var můjVar33;
10747 var můjVar34;
10748 var můjVar35;
10749 var můjVar36;
10750 var můjVar37;
10751 var můjVar38;
10752 var můjVar39;
10753 var můjVar40;
10754 var můjVar41;
10755 var změna = true;
10756 var ID_FΔZΣ = 45;
10757 var ID_Moo_Head = 28;
10758 var ID_Pig_Head = 29;
10759 var ID_Moo_Cap = 51;
10760 var ID_Apple_Cap = 50;
10761 var ID_Fluff_Head = 30;
10762 var ID_Pandou_Head = 36;
10763 var ID_Bear_Head = 37;
10764 var ID_Monkey_Head = 38;
10765 var ID_Polar_Head = 44;
10766 var ID_Fez_Hat = 35;
10767 var ID_Enigma_Hat = 42;
10768 var ID_Blitz_Hat = 43;
10769 var ID_Bob_XIII_Hat = 49;
10770 var ID_Bummle_Hat = 8;
10771 var ID_Straw_Hat = 2;
10772 var ID_Winter_Cap = 15;
10773 var ID_Cowboy_Hat = 5;
10774 var ID_Ranger_Hat = 4;
10775 var ID_Explorer_Hat = 18;
10776 var ID_Flipper_Hat = 31;
10777 var ID_Marksman_Cap = 1;
10778 var ID_Bush_Gear = 10;
10779 var ID_Halo = 48;
10780 var ID_Soldier_Helmet = 6;
10781 var ID_Anti_Venom_Gear = 23;
10782 var ID_Medic_Gear = 13;
10783 var ID_Miners_Helmet = 9;
10784 var ID_Musketeer_Hat = 32;
10785 var ID_Bull_Helmet = 7;
10786 var ID_Emp_Helmet = 22;
10787 var ID_Booster_Hat = 12;
10788 var ID_Barbarian_Armor = 26;
10789 var ID_Plague_Mask = 21;
10790 var ID_Bull_Mask = 46;
10791 var ID_Windmill_Hat = 14;
10792 var ID_Spike_Gear = 11;
10793 var ID_Samurai_Armor = 20;
10794 var ID_Bushido_Armor = 16;
10795 var ID_Scavenger_Gear = 27;
10796 var ID_Tank_Gear = 40;
10797
10798 document.addEventListener('keydown', function (e) {
10799 if (e.keyCode == 121) {
10800 e.preventDefault();
10801 if (změna) {
10802 storeEquip(ID_FΔZΣ);
10803 můjVar = setTimeout(function(){ h1(); }, 75);
10804 } else {
10805 clearTimeout(můjVar);
10806 clearTimeout(můjVar2);
10807 clearTimeout(můjVar3);
10808 clearTimeout(můjVar4);
10809 clearTimeout(můjVar5);
10810 clearTimeout(můjVar6);
10811 clearTimeout(můjVar7);
10812 clearTimeout(můjVar8);
10813 clearTimeout(můjVar9);
10814 clearTimeout(můjVar10);
10815 clearTimeout(můjVar11);
10816 clearTimeout(můjVar12);
10817 clearTimeout(můjVar13);
10818 clearTimeout(můjVar14);
10819 clearTimeout(můjVar15);
10820 clearTimeout(můjVar16);
10821 clearTimeout(můjVar17);
10822 clearTimeout(můjVar18);
10823 clearTimeout(můjVar19);
10824 clearTimeout(můjVar20);
10825 clearTimeout(můjVar21);
10826 clearTimeout(můjVar22);
10827 clearTimeout(můjVar23);
10828 clearTimeout(můjVar24);
10829 clearTimeout(můjVar25);
10830 clearTimeout(můjVar26);
10831 clearTimeout(můjVar27);
10832 clearTimeout(můjVar28);
10833 clearTimeout(můjVar29);
10834 clearTimeout(můjVar30);
10835 clearTimeout(můjVar31);
10836 clearTimeout(můjVar32);
10837 clearTimeout(můjVar33);
10838 clearTimeout(můjVar34);
10839 clearTimeout(můjVar35);
10840 clearTimeout(můjVar36);
10841 clearTimeout(můjVar37);
10842 clearTimeout(můjVar38);
10843 clearTimeout(můjVar39);
10844 clearTimeout(můjVar40);
10845 clearTimeout(můjVar41);
10846 storeEquip(ID_FΔZΣ);
10847 }
10848 změna = !změna;
10849 }
10850 });
10851
10852 function h1() {
10853 storeEquip(ID_Winter_Cap);
10854 clearTimeout(můjVar);
10855 můjVar2 = setTimeout(function(){ h2(); }, 75);
10856 }
10857 function h2() {
10858 storeEquip(ID_Bummle_Hat);
10859 clearTimeout(můjVar2);
10860 můjVar = setTimeout(function(){ h1(); }, 75);
10861 }
10862})();
10863
10864$("#consentBlock").css({display: "none"});
10865try {
10866document.getElementById("moomooio_728x90_home").style.display = "none";
10867 $("#moomooio_728x90_home").parent().css({display: "none"});
10868} catch (e) {
10869 console.log("[INFO]Remove Ad...");
10870}
10871
10872({'position':'absolute','bottom':'72px','left':'20px','width':'420px','height':'236.25px','padding-bottom':'18px','margin-top':'0px'});
10873
10874$("#gameCanvas").css('cursor', 'url(http://cur.cursors-4u.net/user/use-1/use153.cur), default');
10875
10876$('.menuCard').css({'white-space': 'normal',
10877 'text-align': 'center',
10878 'background-color': 'rgba(0, 0, 0, 0.74)',
10879 '-moz-box-shadow': '0px 0px rgba(255, 255, 255, 0)',
10880 '-webkit-box-shadow': '0px 0px rgba(255, 255, 255, 0)',
10881 'box-shadow': '0px 0px rgba(255, 255, 255, 0)',
10882 '-webkit-border-radius': '0px',
10883 '-moz-border-radius': '0px',
10884 'border-radius': '0px',
10885 'margin': '15px',
10886 'margin-top': '15px'});
10887
10888$('.menuCard').css({'color':'#808080'});
10889
10890
10891$('#menuContainer').css({'white-space': 'normal'});
10892
10893
10894$('#guideCard').css({'color': '#FFFFF'});
10895
10896
10897$('#nativeResolution').css({'cursor': 'pointer'});
10898
10899$('#playMusic').css({'cursor': 'pointer'});
10900
10901$('#skinColorHolder').css({'margin-bottom': '30.75px'});
10902
10903$('.settingRadio').css({'margin-bottom': '30.75px'});
10904
10905$('#gameName').css({'color': '#000000',
10906 'text-shadow': '0 1px 0 rgba(255, 255, 255, 0), 0 2px 0 rgba(255, 255, 255, 0), 0 3px 0 rgba(255, 255, 255, 0), 0 4px 0 rgba(255, 255, 255, 0), 0 5px 0 rgba(255, 255, 255, 0), 0 6px 0 rgba(255, 255, 255, 0), 0 7px 0 rgba(255, 255, 255, 0), 0 8px 0 rgba(255, 255, 255, 0), 0 9px 0 rgba(255, 255, 255, 0)',
10907 'text-align': 'center',
10908 'font-size': '126px',
10909 'margin-bottom': '-30px'});
10910
10911$('#loadingText').css({'color': '#000000',
10912 'background-color': 'rgba(0, 0, 0, 0.74)',
10913 'padding': '8px',
10914 'right': '150%',
10915 'left': '150%',
10916 'margin-top': '40px'});
10917
10918$('.ytLink').css({'color': '#000000',
10919 'padding': '8px',
10920 'background-color': 'rgba(0, 0, 0, 0.74)'});
10921
10922$('.menuLink').css({'color': '#000000'});
10923
10924$('.menuButton').css({'background-color': '#000000'});
10925
10926
10927$('#nameInput').css({'border-radius': '0px',
10928 '-moz-border-radius': '0px',
10929 '-webkit-border-radius': '0px',
10930 'border': 'hidden'});
10931
10932
10933$('#serverSelect').css({'cursor': 'pointer',
10934 'color': '#000000',
10935 'background-color': '#808080',
10936 'border': 'hidden',
10937 'font-size': '20px'});
10938
10939$('.menuButton').css({'border-radius': '0px',
10940 '-moz-border-radius': '0px',})
10941
10942setInterval(() => {
10943document.getElementById('enterGame').innerHTML = '➡ PLAY ⬅';
10944setTimeout( () => {
10945document.getElementById('enterGame').innerHTML = '➡ PLAY ⬅';
10946}, 400);}
10947 , 500);
10948
10949document.getElementById('loadingText').innerHTML = '? Load LioNMod ?';
10950setTimeout( () => {
10951document.getElementById('loadingText').innerHTML = '✅ Successful ✅';
10952}, 2000);
10953
10954setInterval(() => {
10955setTimeout( () => {
10956document.getElementById('nameInput').placeholder = "?Xx_EngineGaming_xX?";
10957setTimeout( () => {
10958document.getElementById('nameInput').placeholder = "Enter Name";
10959}, 200);
10960}, 200);}
10961 , 500);
10962
10963setInterval(() => {
10964setTimeout( () => {
10965document.getElementById('chatBox').placeholder = "?Message.....?";
10966setTimeout( () => {
10967document.getElementById('chatBox').placeholder = "?Message......?";
10968setTimeout( () => {
10969document.getElementById('chatBox').placeholder = "?Message.......?";
10970setTimeout( () => {
10971document.getElementById('chatBox').placeholder = "?Message.........?";
10972}, 100);
10973}, 100);
10974}, 100);
10975}, 100);}
10976, 500);
10977setTimeout( () => {
10978document.getElementById('diedText').style.color = "Blue";
10979document.getElementById('diedText').innerHTML = '? GG :c ?';
10980setInterval(() => {
10981document.getElementById('diedText').style.color = "Red";
10982document.getElementById('diedText').innerHTML = '? YOU DIED ?';
10983}, 1000);
10984}
10985, 1000);
10986
10987document.getElementById("storeHolder").style = "height: 1500px; width: 450px;"
10988setInterval(() => {
10989setTimeout( () => {
10990document.getElementById("woodDisplay").style.color = "red";
10991setTimeout( () => {
10992document.getElementById("woodDisplay").style.color = "orange";
10993setTimeout( () => {
10994document.getElementById("woodDisplay").style.color = "yellow";
10995setTimeout( () => {
10996document.getElementById("woodDisplay").style.color = "green";
10997setTimeout( () => {
10998document.getElementById("woodDisplay").style.color = "blue";
10999setTimeout( () => {
11000document.getElementById("woodDisplay").style.color = "#d820da";
11001setTimeout( () => {
11002document.getElementById("woodDisplay").style.color = "purple";
11003}, 100);
11004}, 100);
11005}, 100);
11006}, 100);
11007}, 100);
11008}, 100);
11009}, 100);}
11010 , 700);
11011setInterval(() => {
11012setTimeout( () => {
11013document.getElementById("scoreDisplay").style.color = "red";
11014setTimeout( () => {
11015document.getElementById("scoreDisplay").style.color = "orange";
11016setTimeout( () => {
11017document.getElementById("scoreDisplay").style.color = "yellow";
11018setTimeout( () => {
11019document.getElementById("scoreDisplay").style.color = "green";
11020setTimeout( () => {
11021document.getElementById("scoreDisplay").style.color = "blue";
11022setTimeout( () => {
11023document.getElementById("scoreDisplay").style.color = "#d820da";
11024setTimeout( () => {
11025document.getElementById("scoreDisplay").style.color = "purple";
11026}, 100);
11027}, 100);
11028}, 100);
11029}, 100);
11030}, 100);
11031}, 100);
11032}, 100);}
11033 , 700);
11034setInterval(() => {
11035setTimeout( () => {
11036document.getElementById("stoneDisplay").style.color = "red";
11037setTimeout( () => {
11038document.getElementById("stoneDisplay").style.color = "orange";
11039setTimeout( () => {
11040document.getElementById("stoneDisplay").style.color = "yellow";
11041setTimeout( () => {
11042document.getElementById("stoneDisplay").style.color = "green";
11043setTimeout( () => {
11044document.getElementById("stoneDisplay").style.color = "blue";
11045setTimeout( () => {
11046document.getElementById("stoneDisplay").style.color = "#d820da";
11047setTimeout( () => {
11048document.getElementById("stoneDisplay").style.color = "purple";
11049}, 100);
11050}, 100);
11051}, 100);
11052}, 100);
11053}, 100);
11054}, 100);
11055}, 100);}
11056 , 700);
11057setInterval(() => {
11058setTimeout( () => {
11059document.getElementById("foodDisplay").style.color = "red";
11060setTimeout( () => {
11061document.getElementById("foodDisplay").style.color = "orange";
11062setTimeout( () => {
11063document.getElementById("foodDisplay").style.color = "yellow";
11064setTimeout( () => {
11065document.getElementById("foodDisplay").style.color = "green";
11066setTimeout( () => {
11067document.getElementById("foodDisplay").style.color = "blue";
11068setTimeout( () => {
11069document.getElementById("foodDisplay").style.color = "#d820da";
11070setTimeout( () => {
11071document.getElementById("foodDisplay").style.color = "purple";
11072}, 100);
11073}, 100);
11074}, 100);
11075}, 100);
11076}, 100);
11077}, 100);
11078}, 100);}
11079 , 700);
11080document.getElementById("leaderboard").style.color = "cyan";
11081document.getElementById('adCard').remove();
11082document.getElementById('errorNotification').remove();
11083document.getElementById("ageText").style.color = "cyan";
11084document.getElementById("pingDisplay").style.color = "cyan";
11085document.getElementById("leaderboard").style.color = "cyane";
11086setInterval(() => {
11087setTimeout( () => {
11088document.getElementById("killCounter").style.color = "red";
11089setTimeout( () => {
11090document.getElementById("killCounter").style.color = "orange";
11091setTimeout( () => {
11092document.getElementById("killCounter").style.color = "yellow";
11093setTimeout( () => {
11094document.getElementById("killCounter").style.color = "green";
11095setTimeout( () => {
11096document.getElementById("killCounter").style.color = "blue";
11097setTimeout( () => {
11098document.getElementById("killCounter").style.color = "darkblue";
11099setTimeout( () => {
11100document.getElementById("killCounter").style.color = "purple";
11101}, 100);
11102}, 100);
11103}, 100);
11104}, 100);
11105}, 100);
11106}, 100);
11107}, 100);}
11108 , 700);
11109setInterval(() => {
11110setTimeout( () => {
11111document.getElementById("gameName").style.color = "red";
11112setTimeout( () => {
11113document.getElementById("gameName").style.color = "orange";
11114setTimeout( () => {
11115document.getElementById("gameName").style.color = "yellow";
11116setTimeout( () => {
11117document.getElementById("gameName").style.color = "green";
11118setTimeout( () => {
11119document.getElementById("gameName").style.color = "blue";
11120setTimeout( () => {
11121document.getElementById("gameName").style.color = "darkblue";
11122setTimeout( () => {
11123document.getElementById("gameName").style.color = "purple";
11124}, 100);
11125}, 100);
11126}, 100);
11127}, 100);
11128}, 100);
11129}, 100);
11130}, 100);}
11131 , 700);
11132document.getElementById("gameName").style.color = "Green";
11133document.getElementById("setupCard").style.color = "pink";
11134document.getElementById("gameName").innerHTML = "?ζ͜͡???? ????"
11135
11136$('.menuCard').css({'white-space': 'normal',
11137 'text-align': 'center',
11138 'background-color': 'rgba(0, 0, 0, 0)',
11139 '-moz-box-shadow': '0px 0px rgba(255, 255, 255, 0)',
11140 '-webkit-box-shadow': '0px 0px rgba(255, 255, 255, 0)',
11141 'box-shadow': '0px 0px rgba(255, 255, 255, 0)',
11142 '-webkit-border-radius': '0px',
11143 '-moz-border-radius': '0px',
11144 'border-radius': '0px',
11145 'margin': '15px',
11146 'margin-top': '15px'});
11147
11148$('#menuContainer').css({'white-space': 'normal'});
11149
11150$('#nativeResolution').css({'cursor': 'pointer'});
11151
11152$('#playMusic').css({'cursor': 'pointer'});
11153
11154$('#guideCard').css({'overflow-y': 'hidden',
11155 'margin-top': 'auto',
11156 'margin-bottom': '30px'});
11157
11158
11159$('#skinColorHolder').css({'margin-bottom': '30.75px'});
11160
11161$('.settingRadio').css({'margin-bottom': '30.75px'});
11162
11163
11164
11165$('#linksContainer2').css({'-webkit-border-radius': '0px 0 0 0',
11166 '-moz-border-radius': '0px 0 0 0',
11167 'border-radius': '0px 0 0 0',
11168 'right': '44%',
11169 'left': '44%',
11170 'background-color': 'rgba(0, 0, 0, 0)',
11171 'text-align': 'center',
11172 'bottom': '12px'});
11173
11174$('#gameName').css({'color': '#000000',
11175 'text-shadow': '0 1px 0 rgba(231, 76, 60), 0 2px 0 rgba(231, 76, 60), 0 3px 0 rgba(231, 76, 60), 0 4px 0 rgba(231, 76, 60), 0 5px 0 rgba(231, 76, 60), 0 6px 0 rgba(231, 76, 60), 0 7px 0 rgba(231, 76, 60), 0 8px 0 rgba(231, 76, 60), 0 9px 0 rgba(255, 0, 0)',
11176 'text-align': 'center',
11177 'font-size': '156px',
11178 'margin-bottom': '-30px'});
11179
11180$('#loadingText').css({'color': '#000000',
11181 'background-color': 'rgba(0, 0, 0, 0)',
11182 'padding': '8px',
11183 'right': '150%',
11184 'left': '150%',
11185 'margin-top': '40px'});
11186
11187$('.ytLink').css({'color': '#144db4',
11188 'padding': '8px',
11189 'background-color': 'rgba(0, 0, 0, 0)'});
11190
11191$('.menuLink').css({'color': '#144db4'});
11192
11193$('#nameInput').css({'border-radius': '0px',
11194 '-moz-border-radius': '0px',
11195 '-webkit-border-radius': '0px',
11196 'border': 'hidden'});
11197
11198$('#serverSelect').css({'cursor': 'pointer',
11199 'color': '#000000',
11200 'background-color': '#808080',
11201 'border': 'hidden',
11202 'font-size': '20px'});
11203
11204$('.menuButton').css({'border-radius': '0px',
11205 '-moz-border-radius': '0px',
11206 '-webkit-border-radius': '0px'});
11207
11208$('#promoImgHolder').css({'position': 'absolute',
11209 'bottom': '-7%',
11210 'left': '20px',
11211 'width': '420px',
11212 'height': '236.25px',
11213 'padding-bottom': '18px',
11214 'margin-top': '0px'});
11215
11216$('#adCard').css({'position': 'absolute',
11217 'bottom': '-7%',
11218 'right': '20px',
11219 'width': '420px',
11220 'height': '236.25px',
11221 'padding-bottom': '18px'});
11222
11223
11224$('.menuHeader').css({'color': 'rgba(255, 255, 255, 1)'});
11225
11226
11227$('#diedText').css({'background-color': 'rgba(0, 0, 0, 0)'});
11228
11229$('#gameCanvas').css({'background-color': '#f4f4f4'});
11230
11231$('#allianceButton').css({'color': 'rgba(241, 241, 241, 1)'});
11232
11233$('#storeButton').css({'color': 'rgba(241, 241, 241, 1)'});
11234
11235$('#chatButton').css({'color': 'rgba(241, 241, 241, 1)'});
11236
11237$('.gameButton').css({'-webkit-border-radius': '0px 0 0 0',
11238 '-moz-border-radius': '0px 0 0 0',
11239 'border-radius': '0px 0 0 0',
11240 'background-color': 'rgba(0, 0, 0, 0.4)'});
11241
11242$('.uiElement, .resourceDisplay').css({'-webkit-border-radius': '0px',
11243 '-moz-border-radius': '0px',
11244 'border-radius': '0px',
11245 'background-color': 'rgba(0, 0, 0, 0.4)'});
11246
11247$('#chatBox').css({'-webkit-border-radius': '0px',
11248 '-moz-border-radius': '0px',
11249 'border-radius': '0px',
11250 'background-color': 'rgba(0, 0, 0, 0.4)',
11251 'text-align': 'center'});
11252
11253$('#leaderboard').css({'-webkit-border-radius': '0px',
11254 '-moz-border-radius': '0px',
11255 'border-radius': '0px',
11256 'background-color': 'rgba(0, 0, 0, 0.4)',
11257 'text-align': 'center'});
11258
11259$('#ageBar').css({'-webkit-border-radius': '0px',
11260 '-moz-border-radius': '0px',
11261 'border-radius': '0px',
11262 'background-color': 'rgba(0, 0, 0, 0.4)'});
11263
11264$('#ageBarBody').css({'-webkit-border-radius': '0px',
11265 '-moz-border-radius': '0px',
11266 'border-radius': '0px',
11267 'background-color': '#f00'});
11268
11269$('.storeTab').css({'-webkit-border-radius': '0px',
11270 '-moz-border-radius': '0px',
11271 'border-radius': '0px',
11272 'background-color': 'rgba(0, 0, 0, 0.4)'});
11273
11274$('#storeHolder').css({'-webkit-border-radius': '0px',
11275 '-moz-border-radius': '0px',
11276 'border-radius': '0px',
11277 'background-color': 'rgba(0, 0, 0, 0.4)'});
11278
11279$('#allianceHolder').css({'-webkit-border-radius': '0px',
11280 '-moz-border-radius': '0px',
11281 'border-radius': '0px',
11282 'background-color': 'rgba(0, 0, 0, 0.4)'});
11283
11284$('.actionBarItem').css({'-webkit-border-radius': '0px',
11285 'border-radius': '0px',
11286 'background-color': 'rgba(0, 0, 0, 0.4)'});
11287
11288$('#itemInfoHolder').css({'text-align': 'center',
11289 'top': '125px',
11290 'left': '350px',
11291 'right': '350px',
11292 'max-width': '666px'});
11293
11294$('#leaderboard').append('????? ????');
11295
11296$("#ageBarContainer").append('</br><div id="hacktext"></div><div style="width: 100%;position: absolute;bottom: 94px;text-align: center;color:blue;font-size: 24px;" id="freetext"></div><div style="width: 100%;position: absolute;bottom: 144px;text-align: center;color: #ed3f00;font-size: 24px;" id="ptext"></div><div style="width: 100%;position: absolute;bottom: 224px;text-align: center;color: #9a008b;font-size: 24px;" id="ctext"></div><div style="width: 100%;position: absolute;top: 100px;text-align: center;color: white;font-size: 12px;" id="bilgitext">| , - Daggers+FastMill| ] - Katana+Snipping+FastMill | / - Katana+Musket | ArrowRight - Polearn+Musket | ArrowLeft - Axe+Hammer | [ - Stick+Hammer |</div><div style="width: 100%;position: absolute;bottom: 170px;text-align: center;color: darkgreen;font-size: 24px;" id="atext"></div><div style="width: 100%;position: absolute;bottom: 196px;text-align: center;color: black;font-size: 24px;" id="mtext"></div>');
11297(function() {var css = [
11298 "div#adCard, ",
11299 " #twitterFollow, ",
11300 " #youtubeFollow, ",
11301 " #downloadButtonContainer, ",
11302 " #followText, ",
11303 " #promoImg {",
11304 " display: none;",
11305 " }",
11306 "",
11307 " #featuredYoutube > a.ytLink, ",
11308 " a {",
11309 " color: #FF8C00 !important;",
11310 " font-size: 20px;",
11311 " margin-top: 0px;",
11312 " transition: 0.5s;",
11313 " }",
11314 "",
11315 " a:hover {",
11316 " color: #cc0000 !important;",
11317 " }",
11318 "",
11319 " #youtuberOf, ",
11320 " #linksContainer2, ",
11321 " .partyWrap {",
11322 " background: rgba(0,0,0,0.6);",
11323 " border: 3px solid rgba(0,0,0,0.9);",
11324 " border-radius: 10px;",
11325 " padding: 10px;",
11326 " font-size: 20px;",
11327 " position: absolute;",
11328 " color: #fff;",
11329 " }",
11330 "",
11331 " .partyWrap {",
11332 " min-height: 80px;",
11333 " min-width: 160px;",
11334 " top: 10px;",
11335 " right: 10px;",
11336 " }",
11337 "",
11338 " #youtuberOf {",
11339 " top: 10px;",
11340 " left: 10px;",
11341 " }",
11342 "",
11343 " #followText {",
11344 " min-height: 200px;",
11345 " bottom: 10px;",
11346 " left: 10px;",
11347 " }",
11348 "",
11349 " #linksContainer2 {",
11350 " bottom: 10px;",
11351 " right: 10px;",
11352 " color: transparent;",
11353 " }",
11354 "",
11355 " .menuCard {",
11356 " background: rgba(0,0,0,0.6);",
11357 " border-radius: 10px;",
11358 " border: 10px solid rgba(0,0,0,0.9);",
11359 " box-shadow: none;",
11360 " overflow:auto;",
11361 " }",
11362 "",
11363 " ::-webkit-scrollbar {",
11364 " width: 10px;",
11365 " border-right: 2px solid #FF8C00;",
11366 " }",
11367 "",
11368 " ::-webkit-scrollbar-thumb {",
11369 " border: 2px solid #FF8C00;",
11370 " }",
11371 "",
11372 " ::-webkit-scrollbar-thumb:hover {",
11373 " background: #FF8C00;",
11374 " }",
11375 "",
11376 " ::-webkit-scrollbar-thumb:active {",
11377 " background: black;",
11378 " border: 2px solid #FF8C00;",
11379 " }",
11380 "",
11381 " .menuHeader {",
11382 " font-size: 24px;",
11383 " color: #eeeeee;",
11384 " margin-bottom: 3px;",
11385 " border-bottom: 3px solid #eee;",
11386 " }",
11387 "",
11388 " .menuHeader:first-child {",
11389 " margin-bottom: 30px;",
11390 " }",
11391 "",
11392 " .menuText {",
11393 " font-size: 18px;",
11394 " color: #ccc;",
11395 " margin-bottom: 10px;",
11396 " }",
11397 "",
11398 " .ytLink {",
11399 " color: #FF8C00;",
11400 " font-size: 24px;",
11401 " text-decoration: none;",
11402 " transition: 0.5s;",
11403 " }",
11404 "",
11405 " .menuButton {",
11406 " color: #fff;",
11407 " background-color: transparent;",
11408 " border: 5px solid #ff0000;",
11409 " position: relative;",
11410 " display: inline-flex;",
11411 " padding: 0px 70px;",
11412 " font-family: denk one;",
11413 " transition: color .5s;",
11414 " overflow: hidden;",
11415 " width: 100%;",
11416 " justify-content: center;",
11417 " }",
11418 "",
11419 " .menuButton:hover {",
11420 " color: #FFFFFF !important;",
11421 " border: 5px solid #FF8C00;",
11422 " cursor: pointer;",
11423 " background-color: transparent;",
11424 " }",
11425 "",
11426 " .menuButton:before {",
11427 " content: \'\';",
11428 " position: absolute;",
11429 " top: 0;",
11430 " left: 0;",
11431 " width: 130%; ",
11432 " height: 10000%;",
11433 " background: #FF8C00;",
11434 " border-right: 20px solid #b6fe9c;",
11435 " z-index: -1;",
11436 " transform-origin:0 0 ;",
11437 " transform:translateX(-112%) skewX(45deg);",
11438 " transition: transform .5s;",
11439 " }",
11440 "",
11441 " .menuButton:hover:before {",
11442 " color: #FFFFFF !important;",
11443 " transform: translateX(-20%) skewX(45deg);",
11444 " }",
11445 "",
11446 " .menuCard span {",
11447 " margin: 10px;",
11448 " }",
11449 "",
11450 " #promoHolderImg > img {",
11451 " width: 300px;",
11452 " height: 94px;",
11453 " }",
11454 "",
11455 " #guideCard {",
11456 " max-height: 282px;",
11457 " }",
11458 "",
11459 " .skinColorItem {",
11460 " transition: 1s;",
11461 " border: 3px solid #000;",
11462 " }",
11463 "",
11464 " select {",
11465 " background: #cc0000;",
11466 " border-radius: 5px;",
11467 " border: 3px solid #FF8C00;",
11468 " margin-bottom: 10px;",
11469 " color: #fff;",
11470 " transition: 0.5s;",
11471 " }",
11472 "",
11473 " select:hover {",
11474 " background: #FF8C00;",
11475 " border: 3px solid #cc0000;",
11476 " }",
11477 "",
11478 " #pre-content-container {",
11479 " display: none!important;",
11480 " }",
11481 "",
11482 " .uiElement, ",
11483 " .resourceDisplay, ",
11484 " .actionBarItem {",
11485 " background-color: rgba(0,0,0,0.6) !important;",
11486 " border: 3px solid rgba(0,0,0,0.9);",
11487 " border-radius: 50px !important;",
11488 " color: #FF8C00;",
11489 " transition: 0.5s;",
11490 " }",
11491 "",
11492 " .uiElement:hover, ",
11493 " .resourceDisplay:hover, ",
11494 " .actionBarItem:hover {",
11495 " background-color: rgba(0,0,0,0.5) !important;",
11496 " border: 3px solid rgba(0,0,0,0.9);",
11497 " border-radius: 50px !important;",
11498 " color: #FF8C00;",
11499 " }",
11500 "",
11501 " #topInfoHolder, #itemInfoHolder, #mapDisplay, #chatBox { ",
11502 " background-color: rgba(0,0,0,0.6) !important;",
11503 " border: 3px solid rgba(0,0,0,0.9);",
11504 " border-radius: 10px !important;",
11505 " color: #FF8C00;",
11506 " }",
11507 "",
11508 " #itemInfoHolder { ",
11509 " -webkit-text-stroke: transparent;",
11510 " }",
11511 "",
11512 " .material-icons { ",
11513 " color: #FF8C00;",
11514 " font-size: 31px;",
11515 " -webkit-text-stroke: 1.5px #fff;",
11516 " }",
11517 "",
11518 " #altServer > a > i {",
11519 " font-size: 30px !important;",
11520 " -webkit-text-stroke: transparent !important;",
11521 " }",
11522 "",
11523
11524 "",
11525 " #ageBarBody {",
11526 " background-color: #FF8C00;",
11527 " border: 1px solid #fff",
11528 " }",
11529 "",
11530 " #ageBar {",
11531 " background-color: rgba(0,0,0,0.6) !important;",
11532 " border: 1px solid rgba(0,0,0,0.9);",
11533 " height: 5px;",
11534 " padding-bottom: 10px;",
11535 " margin-bottom: 20px;",
11536 " }",
11537 "",
11538 " .actionBarItem {",
11539 " width: 65px;",
11540 " height: 65px;",
11541 " background-position: center; ",
11542 " background-size: 55px 55px;",
11543 " }",
11544 "",
11545 " #aBox {",
11546 " color: #FF8C00!important;",
11547 " transition: 0.5s;",
11548 " }",
11549 "",
11550 " #chatBox::placeholder {",
11551 " color: #FF8C00!important;",
11552 " }",
11553 "",
11554 " #chatBox:hover {",
11555 " background: rgba(0,0,0,0.5)!important;",
11556 " }",
11557 "",
11558 " #chatBox:hover::placeholder {",
11559 " color: #fc9f9f!important;",
11560 " }",
11561 "",
11562 " #leaderboard, .leaderboardItem[style*=\"color: rgb(255, 255, 255);\"] {",
11563 " color: #FF8C00!important;",
11564 " }",
11565 "",
11566 " .ytLink:hover {",
11567 " color: #cc0000;",
11568 " }",
11569 "",
11570 " #nameInput {",
11571 " background: #fff;",
11572 " border: 5px solid #FF8C00;",
11573 " transition: 0.5s;",
11574 " }",
11575 "",
11576 " #nameInput::placeholder {",
11577 " color: #FF8C00;",
11578 " transition: 0.5s;",
11579 " }",
11580 "",
11581 " #nameInput:hover {",
11582 " background: #FF8C00;",
11583 " color: #fff;",
11584 " }",
11585 "",
11586 " #nameInput:hover::placeholder {",
11587 " background: #FF8C00;",
11588 " color: #fff;",
11589 " }",
11590 "",
11591 " #linksContainer2 {",
11592 " max-height: 500px;",
11593 " width: 250px;",
11594 " }",
11595 "",
11596 " #linksContainer2 > * {",
11597 " display:table-cell;",
11598 " vertical-align:middle;",
11599 " text-align: center;",
11600 " width:700px;",
11601 " }",
11602 " ",
11603 " .storeTab, ",
11604 " #storeHolder, ",
11605 " #allianceHolder, ",
11606 " #allianceInput, ",
11607 " .allianceButtonM {",
11608 " background: rgba(0,0,0,0.6);",
11609 " border: 3px solid rgba(0,0,0,0.9);",
11610 " }",
11611 "",
11612 " .storeItem, ",
11613 " .storeTab, ",
11614 " .allianceButtonM, ",
11615 " #allianceInput::placeholder, ",
11616 " .allianceItem {",
11617 " color: #FF8C00 !important;",
11618 " }",
11619 "",
11620 " .storeItem, ",
11621 " .storeTab, ",
11622 " .allianceButtonM, ",
11623 " #allianceInput::placeholder, ",
11624 " .allianceItem, ",
11625 " .joinAlBtn {",
11626 " color: #FF8C00 !important;",
11627 " }",
11628 "",
11629 " .storeItem:hover, ",
11630 " .storeTab:hover, ",
11631 " .allianceButtonM:hover,",
11632 " .allianceItem:hover, ",
11633 " .joinAlBtn:hover {",
11634 " color: #fc9f9f !important;",
11635 " }",
11636 "",
11637 " #allianceInput, ",
11638 " #killCounter {",
11639 " color: #FF8C00;",
11640 " }",
11641 " ",
11642 " #allianceInput:hover {",
11643 " background: rgba(0,0,0,0.5);",
11644 " color: #fc9f9f;",
11645 " }",
11646 "",
11647 " #allianceInput:hover::placeholder{",
11648 " color: #fc9f9f;",
11649 " }",
11650 "",
11651 " #linksContainer2 > *:first-child {",
11652 " border-bottom: 3px solid #FF8C00;",
11653 " }",
11654 "",
11655 " #moddedMenu {",
11656 " position: absolute;",
11657 " top: 3.25%;",
11658 " left: 0px;",
11659 " width: 3%;",
11660 " height: 45.0%;",
11661 " background: rgba(0,0,0,0.6);",
11662 " border: 3px solid rgba(0,0,0,0.9);",
11663 " border-top-right-radius: 30px;",
11664 " border-bottom-right-radius: 30px;",
11665 " transition: 1s;",
11666 " z-index: 999;",
11667 " }",
11668 "",
11669 " #moddedMenu:hover {",
11670 " width: 20%;",
11671 " }",
11672 "",
11673 " #youtuberOf {",
11674 " bottom: 10px;",
11675 " top: auto;",
11676 " }",
11677 "",
11678 " .titleMM {",
11679 " color: #FF8C00;",
11680 " border-bottom: 3px solid #FF8C00;",
11681 " font-size: 32px;",
11682 " transform: rotate(90deg);",
11683 " white-space: nowrap;",
11684 " margin-top: 250%;",
11685 " transition: 1s;",
11686 " }",
11687 "",
11688 " #moddedMenu:hover > .titleMM {",
11689 " transform: rotate(0deg) translate(0,-1580%)",
11690 " }",
11691 "",
11692 " .switch {",
11693 " margin-top: 5px;",
11694 " margin-left: 10px;",
11695 " position: absolute;",
11696 " width: 60px;",
11697 " height: 34px;",
11698 " transition: opacity 1s;",
11699 " opacity: 0;",
11700 " }",
11701 "",
11702 " .text {",
11703 " bottom: 76%;",
11704 " position: absolute;",
11705 " color: #eee;",
11706 " font-size: 20px;",
11707 " left: 0%;",
11708 " display: none;",
11709 " transition: 1s;",
11710 " }",
11711 "",
11712 " .text > b { ",
11713 " font-size: 20px;",
11714 " color: #FF8C00;",
11715 " }",
11716 "",
11717 " b:hover { ",
11718 " color: #fc9f9f;",
11719 " }",
11720 "",
11721 " .one > .text {",
11722 " top: 5.5%;",
11723 " }",
11724 "",
11725 " .two > .text {",
11726 " top: 10.7%;",
11727 " }",
11728 "",
11729 " .three > .text {",
11730 " top: 37.5%;",
11731 " }",
11732 "",
11733 " .four > .text {",
11734 " top: 47.5%;",
11735 " }",
11736 "",
11737 " .five > .text {",
11738 " top: 57.5%;",
11739 " }",
11740 "",
11741 " .six > .text {",
11742 " top: 67.5%;",
11743 " }",
11744 "",
11745 " .seven > .text {",
11746 " top: 77.5%;",
11747 " }",
11748 "",
11749 " .eight > .text {",
11750 " top: 87.5%;",
11751 " }",
11752 "",
11753 " #moddedMenu:hover .switch {",
11754 " opacity: 1;",
11755 " }",
11756 "",
11757 " #moddedMenu:hover .text {",
11758 " display: block;",
11759 " }",
11760 "",
11761 " .one > .switch {",
11762 " top: 15%;",
11763 " }",
11764 "",
11765 " .two > .switch {",
11766 " top: 25%;",
11767 " }",
11768 "",
11769 " .three > .switch {",
11770 " top: 35%;",
11771 " }",
11772 "",
11773 " .four > .switch {",
11774 " top: 45%;",
11775 " }",
11776 "",
11777 " .five > .switch {",
11778 " top: 55%;",
11779 " }",
11780 "",
11781 " .six > .switch {",
11782 " top: 65%;",
11783 " }",
11784 "",
11785 " .seven > .switch {",
11786 " top: 75%;",
11787 " }",
11788 "",
11789 " .eight > .switch {",
11790 " top: 85%;",
11791 " }",
11792 "",
11793 " .switch input {",
11794 " display:none;",
11795 " }",
11796 "",
11797 " .slider {",
11798 " position: absolute;",
11799 " cursor: pointer;",
11800 " top: 0;",
11801 " left: 0;",
11802 " right: 0;",
11803 " bottom: 0;",
11804 " background-color: #888;",
11805 " -webkit-transition: .4s;",
11806 " transition: .4s;",
11807 " }",
11808 "",
11809 " .slider:before {",
11810 " position: absolute;",
11811 " content: \"\";",
11812 " height: 26px;",
11813 " width: 26px;",
11814 " left: 4px;",
11815 " bottom: 4px;",
11816 " background-color: orange;",
11817 " -webkit-transition: .4s;",
11818 " transition: .4s;",
11819 " }",
11820 "",
11821 " input:checked + .slider {",
11822 " background-color: #FF8C00;",
11823 " }",
11824 " ",
11825 " input:focus + .slider {",
11826 " box-shadow: 0 0 1px #FF8C00;",
11827 " }",
11828 "",
11829 " input:checked + .slider:before {",
11830 " -webkit-transform: translateX(26px);",
11831 " -ms-transform: translateX(26px);",
11832 " transform: translateX(26px);",
11833 " }",
11834 "",
11835 " .slider.round {",
11836 " border-radius: 34px;",
11837 " }",
11838 "",
11839 " .slider.round:before {",
11840 " border-radius: 50%;",
11841 " }"
11842].join("\n");
11843if (typeof GM_addStyle != "undefined") {
11844 GM_addStyle(css);
11845} else if (typeof PRO_addStyle != "undefined") {
11846 PRO_addStyle(css);
11847} else if (typeof addStyle != "undefined") {
11848 addStyle(css);
11849} else {
11850 var node = document.createElement("style");
11851 node.type = "text/css";
11852 node.appendChild(document.createTextNode(css));
11853 var heads = document.getElementsByTagName("head");
11854 if (heads.length > 0) {
11855 heads[0].appendChild(node);
11856 } else {
11857 // no head yet, stick it whereever
11858 document.documentElement.appendChild(node);
11859 }
11860}
11861})();
11862
11863window.onbeforeunload = null;
11864
11865let mouseX;
11866let mouseY;
11867
11868let width;
11869let height;
11870
11871setInterval(() => {
11872 if(clanToggle == 1) {
11873 doNewSend(["9", [null]]);
11874 doNewSend(["8", [animate(false, 5)]])
11875 }
11876 doNewSend(["testing", [6]]);
11877}, 200);
11878
11879setInterval(() => {
11880 if(messageToggle == 1) {
11881 doNewSend(["ch", [animate(true, 5)]])
11882 }
11883}, 200);
11884
11885setInterval(() => {
11886 if(autoaim == true) {
11887 doNewSend(["2", [nearestEnemyAngle]]);
11888 }
11889}, 0);
11890
11891setInterval(() => {
11892 if(hatToggle == 1) {
11893 if(oldHat != normalHat) {
11894 hat(normalHat);
11895 console.log("Tried. - Hat")
11896 }
11897 if(oldAcc != normalAcc) {
11898 acc(normalAcc);
11899 console.log("Tried. - Acc")
11900 }
11901 oldHat = normalHat;
11902 oldAcc = normalAcc
11903 }
11904}, 25);
11905
11906setInterval(() => {
11907 if(BotToggle == 1) {
11908 storeEquip(28);
11909 doNewSend(["6", [3]]);
11910 doNewSend(["6", [17]]);
11911 doNewSend(["6", [31]]);
11912 doNewSend(["6", [23]]);
11913 doNewSend(["6", [9]]);
11914 doNewSend(["6", [33]]);
11915 doNewSend(["6", [4]]);
11916 doNewSend(["6", [15]]);
11917 doNewSend(["10", ["LioNMoD"]]);
11918 doNewSend(["ch", ["LioNMoD-Bot Best!"]]);
11919 doNewSend(["33", [nearestEnemyAngle]]);
11920 setTimeout( () => {
11921 doNewSend(["ch", ['GO AWAY MOTHER FUCKER']]);
11922 doNewSend(["c", [1]]);
11923 }, 5000);}
11924}, 1);
11925
11926function normal() {
11927 hat(normalHat);
11928 acc(normalAcc);
11929}
11930
11931function aim(x, y){
11932 var cvs = document.getElementById("gameCanvas");
11933 cvs.dispatchEvent(new MouseEvent("mousemove", {
11934 clientX: x,
11935 clientY: y
11936
11937 }));
11938}
11939
11940let coreURL = new URL(window.location.href);
11941window.sessionStorage.force = coreURL.searchParams.get("fc");
11942
11943var nearestEnemy;
11944var nearestEnemyAngle;
11945var isEnemyNear;
11946var instaSpeed = 175;
11947var primary;
11948var secondary;
11949var foodType;
11950var wallType;
11951var spikeType;
11952var millType;
11953var mineType;
11954var boostType;
11955var turretType;
11956var spawnpadType;
11957var autoaim = false;
11958var tick = 1;
11959var oldHat;
11960var oldAcc;
11961var enemiesNear;
11962var normalHat;
11963var normalAcc;
11964var ws;
11965var MSG = false;
11966var msgpack5 = msgpack;
11967var boostDir;
11968var PremiumMap = false;
11969let myPlayer = {
11970 id: null,
11971 x: null,
11972 y: null,
11973 dir: null,
11974 object: null,
11975 weapon: null,
11976 clan: null,
11977 isLeader: null,
11978 hat: null,
11979 accessory: null,
11980 isSkull: null
11981};
11982
11983var MHat = false;
11984var allMooMooObjects = {};
11985let healSpeed = 0;
11986var messageToggle = 0;
11987var clanToggle = 0;
11988let healToggle = 1;
11989let botmode3 = 0;
11990let hatToggle = 1;
11991var MYID;
11992var allTraps = [];
11993var heal = false;
11994var healToggle1 = 1;
11995var BotToggle = 0;
11996var autoSamu = false;
11997var autoBar = false;
11998
11999document.msgpack = msgpack;
12000function n(){
12001 this.buffer = new Uint8Array([0]);
12002 this.buffer.__proto__ = new Uint8Array;
12003 this.type = 0;
12004}
12005
12006WebSocket.prototype.oldSend = WebSocket.prototype.send;
12007WebSocket.prototype.send = function(m){
12008 if (!ws){
12009 document.ws = this;
12010
12011 ws = this;
12012 socketFound(this);
12013 }
12014 this.oldSend(m);
12015};
12016
12017
12018function socketFound(socket){
12019 socket.addEventListener('message', function(message){
12020 handleMessage(message);
12021 });
12022}
12023
12024function handleMessage(m){
12025 let temp = msgpack5.decode(new Uint8Array(m.data));
12026 let data;
12027 if(temp.length > 1) {
12028 data = [temp[0], ...temp[1]];
12029 if (data[1] instanceof Array){
12030 data = data;
12031 }
12032 } else {
12033 data = temp;
12034 }
12035 let item = data[0];
12036 if(!data) {return};
12037
12038 if(item === "io-init") {
12039 let cvs = document.getElementById("gameCanvas");
12040 width = cvs.clientWidth;
12041 height = cvs.clientHeight;
12042 $(window).resize(function() {
12043 width = cvs.clientWidth;
12044 height = cvs.clientHeight;
12045 });
12046 cvs.addEventListener("mousemove", e => {
12047 mouseX = e.clientX;
12048 mouseY = e.clientY;
12049 });
12050 }
12051
12052 if (item == "1" && myPlayer.id == null){
12053 myPlayer.id = data[1];
12054 }
12055 if(data[0] == "11"){
12056 console.info("doing death");
12057 for (var elem of Object.values(allMooMooObjects)){
12058 console.info(elem);
12059 elem.style.opacity = 0;
12060 }
12061 }
12062 if (data[0]=="12"){
12063
12064 let newTraps = [];
12065 for (let trap of allTraps){
12066 if (trap[trap.length-2] != data[1]) newTraps.push(trap);
12067 }
12068 allTraps = newTraps;
12069
12070
12071 if (Object.keys(allMooMooObjects).includes(data[1].toString())){
12072 allMooMooObjects[data[1]].remove();
12073 }
12074 if (CORESTATE.intrap.active){
12075 if (CORESTATE.intrap.extra == data[1]){
12076 CORESTATE.intrap.active = false;
12077 let newTraps = [];
12078 for (let trap of allTraps){
12079 if (trap[trap.length-2] != data[1]) newTraps.push(trap);
12080 }
12081 allTraps = newTraps;
12082 }
12083 }
12084 }
12085 if (data[0] == "1" && !MYID){
12086 MYID = data[1];
12087 }
12088 if (data[0]=="6"){
12089 var locInfo = data[1];
12090 if (locInfo[locInfo.length-1].toString() == MYID){ //Object created
12091 if (window.innerWidth >= 770){
12092 console.log(locInfo);
12093 var itemID = `actionBarItem${locInfo[locInfo.length-2]+16}`;
12094 var imgURL = document.getElementById(itemID).style.backgroundImage.toString().match(/url\("(.+)?(?=")/)[1];
12095 console.info(imgURL);
12096 let mapDisplay = document.getElementById("mapDisplay").getBoundingClientRect();
12097 let mapSize = [14365, 14365];
12098 let boxSize = [$("#mapDisplay").width(), $("#mapDisplay").height()];
12099 let targets = [locInfo[1], locInfo[2]].map(item => (130*item)/14365);
12100 let x = mapDisplay.x + targets[0] - 6;
12101 let y = mapDisplay.y + targets[1] - 6;
12102 let newTarget = document.createElement("div");
12103 newTarget.rawX = targets[0];
12104 newTarget.rawY = targets[1];
12105 newTarget.rimgURL = imgURL;
12106 newTarget.style = `background-image: url("${imgURL}"); background-size: 12px 12px; width:12px; height:12px; position:absolute; left: ${x}px; top:${y}px; opacity:0; z-index:100; cursor: pointer;`;
12107 newTarget.className = "mapTarget";
12108 document.getElementsByTagName("body")[0].appendChild(newTarget);
12109 $(newTarget).animate({opacity: 1});
12110 allMooMooObjects[locInfo[0]] = newTarget;
12111
12112 }
12113 } else {
12114 console.log(locInfo);
12115 for (var i=0;i<locInfo.length/8;i+=1){
12116 let arr = locInfo.slice(i*8, (i+1)*8); console.log(arr)
12117 let objtype = arr[arr.length-2];
12118 if (objtype == 15){
12119 allTraps.push(arr);
12120 }
12121
12122 }
12123
12124
12125 }
12126 }
12127
12128 if (item == "33") {
12129 enemiesNear = [];
12130 for(let i = 0; i < data[1].length / 13; i++) {
12131 let playerInfo = data[1].slice(13*i, 13*i+13);
12132 if(playerInfo[0] == myPlayer.id) {
12133 myPlayer.x = playerInfo[1];
12134 myPlayer.y = playerInfo[2];
12135 myPlayer.dir = playerInfo[3];
12136 myPlayer.object = playerInfo[4];
12137 myPlayer.weapon = playerInfo[5];
12138 myPlayer.clan = playerInfo[7];
12139 myPlayer.isLeader = playerInfo[8];
12140 myPlayer.hat = playerInfo[9];
12141 myPlayer.accessory = playerInfo[10];
12142 myPlayer.isSkull = playerInfo[11];
12143 } else if(playerInfo[7] != myPlayer.clan || playerInfo[7] === null) {
12144 enemiesNear.push(playerInfo);
12145 }
12146 }
12147 }
12148
12149 isEnemyNear = false;
12150 if(enemiesNear) {
12151 nearestEnemy = enemiesNear.sort((a,b) => dist(a, myPlayer) - dist(b, myPlayer))[0];
12152 }
12153 if(nearestEnemy) {
12154 nearestEnemyAngle = Math.atan2(nearestEnemy[2]-myPlayer.y, nearestEnemy[1]-myPlayer.x);
12155 if(Math.sqrt(Math.pow((myPlayer.y-nearestEnemy[2]), 2) + Math.pow((myPlayer.x-nearestEnemy[1]), 2)) < 300) {
12156 isEnemyNear = true;
12157 if(autoaim == false && myPlayer.hat != 7 && myPlayer.hat != 53) {
12158 normalHat = 6;
12159 if(primary != 8) {
12160 normalAcc = 21;
12161 }
12162 };
12163 }
12164 }
12165 if(isEnemyNear == false && autoaim == false) {
12166 normalAcc = 11;
12167 if (myPlayer.y < 2400){
12168 normalHat = 15;
12169 } else if (myPlayer.y > 6850 && myPlayer.y < 7550){
12170 normalHat = 31;
12171 } else {
12172 normalHat = 12;
12173 }
12174 }
12175 if (!nearestEnemy) {
12176 nearestEnemyAngle = myPlayer.dir;
12177 }
12178 if(item == "h" && data[1] == myPlayer.id) {
12179 if(data[2] < 100 && data[2] > 0 && healToggle1 == 1) {
12180 setTimeout( () => {
12181 place(foodType, null);
12182 place(foodType, null);
12183 place(foodType, null);
12184 place(foodType, null);
12185 }, -100);
12186 }
12187 }
12188 if(item == "h" && data[1] == myPlayer.id) {
12189 if(data[2] < 100 && data[2] > 0 && healToggle == 1) {
12190 setTimeout( () => {
12191 place(foodType, null);
12192 }, healSpeed);
12193
12194 }
12195 }
12196 update();
12197}
12198
12199$("#mapDisplay").css({background: `url('https://i.imgur.com/fgFsQJp.png')`});
12200
12201
12202function doNewSend(sender){
12203 ws.send(new Uint8Array(Array.from(msgpack5.encode(sender))));
12204}
12205
12206function acc(id) {
12207 doNewSend(["13c", [0, 0, 1]]);
12208 doNewSend(["13c", [0, id, 1]]);
12209}
12210
12211function hat(id) {
12212 doNewSend(["13c", [0, id, 0]]);
12213}
12214
12215
12216function place(id, angle = Math.atan2(mouseY - height / 2, mouseX - width / 2)) {
12217 doNewSend(["5", [id, null]]);
12218 doNewSend(["c", [1, angle]]);
12219 doNewSend(["c", [0, angle]]);
12220 doNewSend(["5", [myPlayer.weapon, true]]);
12221}
12222
12223function boostSpike() {
12224 if(boostDir == null) {
12225 boostDir = nearestEnemyAngle;
12226 }
12227 doNewSend(["ch", ["BoostSpike Liked You Nab >:D"]]);
12228 place(spikeType, boostDir + toRad(90));
12229 place(spikeType, boostDir - toRad(90));
12230 place(boostType, boostDir);
12231 doNewSend(["33", [boostDir]]);
12232}
12233
12234
12235var repeater = function(key, action, interval) {
12236 let _isKeyDown = false;
12237 let _intervalId = undefined;
12238
12239 return {
12240 start(keycode) {
12241 if(keycode == key && document.activeElement.id.toLowerCase() !== 'chatbox') {
12242 _isKeyDown = true;
12243 if(_intervalId === undefined) {
12244 _intervalId = setInterval(() => {
12245 action();
12246 if(!_isKeyDown){
12247 clearInterval(_intervalId);
12248 _intervalId = undefined;
12249 console.log("claered");
12250 }
12251 }, interval);
12252 }
12253 }
12254 },
12255
12256 stop(keycode) {
12257 if(keycode == key && document.activeElement.id.toLowerCase() !== 'chatbox') {
12258 _isKeyDown = false;
12259 }
12260 }
12261 };
12262
12263
12264}
12265const healer = repeater(81, () => {place(foodType)}, 0);
12266const boostPlacer = repeater(70, () => {place(boostType)}, 0);
12267const spikePlacer = repeater(86, () => {place(spikeType)}, 0);
12268const millPlacer = repeater(78, () => {place(millType)}, 0);
12269const turretPlacer = repeater(85, () => {place(turretType)}, 0);
12270const spawnPlacer = repeater(67, () => {place(spawnpadType)}, 0);
12271const wallPlacer = repeater(52, () => {place(wallType)}, 0);
12272const boostSpiker = repeater(71, boostSpike, 0);
12273
12274document.addEventListener('keydown', (e)=>{
12275 spikePlacer.start(e.keyCode);
12276 healer.start(e.keyCode);
12277 boostPlacer.start(e.keyCode);
12278 millPlacer.start(e.keyCode);
12279 turretPlacer.start(e.keyCode);
12280 wallPlacer.start(e.keyCode);
12281 spawnPlacer.start(e.keyCode);
12282 boostSpiker.start(e.keyCode);
12283
12284 if(e.keyCode == 19 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12285 BotToggle = (BotToggle + 1) % 2;
12286 if(BotToggle == 0) {
12287 document.title = "Bot: OFF?"
12288 } else {
12289 document.title = "Bot: ON?"
12290 }
12291 }
12292 if(e.keyCode == 90 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12293 hat(40);
12294 acc(19);
12295 }
12296 if(e.keyCode == 74 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12297 hat(7);
12298 acc(18);
12299 }
12300 if(e.keyCode == 72 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12301 hat(53);
12302 acc(17);
12303 }
12304 if(e.keyCode == 77 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12305 hat(12);
12306 acc(13);
12307 }
12308 if(e.keyCode == 191 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12309 hat(27);
12310 acc(19);
12311 }
12312 if(e.keyCode == 84 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12313 hat(22);
12314 acc(21);
12315 }
12316 if(e.keyCode == 75 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12317 hat(20);
12318 acc(18);
12319 }
12320 if(e.keyCode == 89 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12321 hat(11);
12322 acc(21);
12323 }
12324 if(e.keyCode == 66 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12325 hat(6);
12326 acc(19);
12327 }
12328 if(e.keyCode == 145 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12329 doNewSend(["ch", ["Engine Master#5743"]]);
12330 }
12331 if(e.keyCode == 192 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12332 if (heal == false) {
12333 heal = true;
12334 doNewSend(["ch", ["SuperAutoHeal : OFF"]]);
12335 } else {
12336 doNewSend(["ch", ["SuperAutoheal : ON"]]);
12337 heal = false;
12338 }
12339 }
12340 if(e.keyCode == 48 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12341 if (autoBar == false) {
12342 autoBar = true;
12343 doNewSend(["ch", ["AutoBarbarianPut : OFF"]]);
12344 } else {
12345 doNewSend(["ch", ["AutoBarbarianPut : ON"]]);
12346 autoBar = false;
12347 }
12348 }
12349 if(e.keyCode == 71 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12350
12351 hat(26);
12352 acc(19);
12353 }
12354 if(e.keyCode == 219 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12355 doNewSend(["ch", ["AutoChoose (Stick+Hammer)."]]);
12356 }
12357 if(e.keyCode == 37 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12358 doNewSend(["ch", ["AutoChoose (Axe+Hammer)."]]);
12359 }
12360 if(e.keyCode == 221 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12361 doNewSend(["ch", ["AutoChoose (Katana+Hammer)."]]);
12362 }
12363 if(e.keyCode == 39 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12364 doNewSend(["ch", ["AutoChoose (Polearm+Musket)."]]);
12365 }
12366 if(e.keyCode == 191 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12367 doNewSend(["ch", ["AutoChoose (Katana+Musket)."]]);
12368 }if(e.keyCode == 188 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12369 doNewSend(["ch", ["AutoChoose (Daggers+FastMill)."]]);
12370 }
12371 if(e.keyCode == 120 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12372 if (MHat == false) {
12373 MHat = true;
12374 doNewSend(["ch", ["AuToHat : OFF"]]);
12375 } else {
12376 doNewSend(["ch", ["AuToHat : ON"]]);
12377 MHat = false;
12378 }
12379 }
12380 if(e.keyCode == 115 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12381 if (autoaim == false) {
12382 autoaim = true;
12383 document.title = "???? ??? AutoAim : ON";
12384 } else {
12385 document.title = "???? ??? AutoAim : OFF";
12386 autoaim = false;
12387 }
12388 }
12389 if(e.keyCode == 36 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12390 if (autoSamu == false) {
12391 autoSamu = true;
12392 doNewSend(["ch", ["AutoSamurai : ON"]]);
12393 } else {
12394 doNewSend(["ch", ["AutoSamurai : OFF"]]);
12395 autoSamu = false;
12396 }
12397 }
12398 if (e.keyCode == 115 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12399 if(autoaim == true)
12400 {
12401 doNewSend(["ch", ["Auto Aim : ON"]]);
12402 } else {
12403 doNewSend(["ch", ["Auto Aim : OFF"]]);
12404 autoaim = false;
12405 }
12406 }
12407 if (e.keyCode == 79 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12408 for (let i=0;i<5;i++){
12409 let angle = myPlayer.dir + toRad(i * 72);
12410 place(millType, angle)
12411 }
12412 }
12413 if (e.keyCode == 73 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12414 for (let i=0;i<4;i++){
12415 let angle = myPlayer.dir + toRad(i * 90);
12416 place(boostType, angle)
12417 }
12418 }
12419 if (e.keyCode == 186 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12420 for (let i=0;i<4;i++){
12421 let angle = myPlayer.dir + toRad(i * 90);
12422 place(spikeType, angle)
12423 }
12424 }
12425 if (e.keyCode == 85 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12426 place(turretType, myPlayer.dir + toRad(45));
12427 place(turretType, myPlayer.dir - toRad(45));
12428 }
12429
12430 if (e.keyCode == 77 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12431 if (myPlayer.y < 2400){
12432 hat(15);
12433 } else if (myPlayer.y > 6850 && myPlayer.y < 7550){
12434 hat(31);
12435 } else {
12436 hat(12);
12437 }
12438 acc(11);
12439 }
12440 if(e.keyCode == 9 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12441 doNewSend(["ch", ["Warning Me is Sh*t! LMAO"]]);
12442 }
12443 if(e.keyCode == 50 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12444 if (autoSamu == true) {
12445 hat(20);
12446 acc(18);
12447 }
12448 }
12449 if(e.keyCode == 82 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12450 autoaim = true;
12451 doNewSend(["5", [primary, true]]);
12452 doNewSend(["13c", [0, 7, 0]]);
12453 doNewSend(["13c", [0, 0, 1]]);
12454 doNewSend(["13c", [0, 19, 1]]);
12455 doNewSend(["ch", ["Lol Why Ez Lol"]]);
12456 doNewSend(["c", [1]]);
12457 setTimeout( () => {
12458 doNewSend(["13c", [0, 53, 0]]);
12459 doNewSend(["5", [secondary, true]]);
12460 }, instaSpeed - 80);
12461
12462 setTimeout( () => {
12463 doNewSend(["5", [primary, true]]);
12464 doNewSend(["c", [0, null]]);
12465 doNewSend(["13c", [0, 6, 0]]);
12466 autoaim = false;
12467 }, instaSpeed);
12468 }
12469
12470 if(e.keyCode == 32 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12471 autoaim = true;
12472 doNewSend(["5", [primary, true]]);
12473 doNewSend(["13c", [0, 7, 0]]);
12474 doNewSend(["13c", [0, 0, 1]]);
12475 doNewSend(["13c", [0, 19, 1]]);
12476 doNewSend(["ch", ["Nab go to coffin"]]);
12477 place(spikeType, boostDir + toRad(45));
12478 place(spikeType, boostDir - toRad(45));
12479
12480 doNewSend(["c", [1]]);
12481
12482 setTimeout( () => {
12483 doNewSend(["13c", [0, 53, 0]]);
12484 }, 100);
12485
12486 setTimeout( () => {
12487 doNewSend(["c", [0, null]]);
12488 doNewSend(["13c", [0, 6, 0]]);
12489 autoaim = false;
12490 }, 200);
12491 }
12492
12493 if(e.keyCode == 38 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12494 messageToggle = (messageToggle + 1) % 2;
12495 }
12496
12497 if(e.keyCode == 40 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12498 clanToggle = (clanToggle + 1) % 2;
12499 }
12500 if(e.keyCode == 192 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12501 healToggle1 = (healToggle1 + 1) % 2;
12502 if(healToggle1 == 0) {
12503 if(hatToggle == 0) {
12504 document.title = "Heal: OFF? / Hat: OFF?"
12505 } else {
12506 document.title = "Heal: OFF? / Hat: ON?"
12507 }
12508 } else {
12509 if(hatToggle == 0) {
12510 document.title = "Heal: ON? / Hat: OFF?"
12511 } else {
12512 document.title = "Heal: ON? / Hat: ON?"
12513 }
12514 }
12515 }
12516 if(e.keyCode == 192 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12517 healToggle = (healToggle + 1) % 2;
12518 if(healToggle == 0) {
12519 if(hatToggle == 0) {
12520 document.title = "Heal: OFF? / Hat: OFF?"
12521 } else {
12522 document.title = "Heal: OFF? / Hat: ON?"
12523 }
12524 } else {
12525 if(hatToggle == 0) {
12526 document.title = "Heal: ON? / Hat: OFF?"
12527 } else {
12528 document.title = "Heal: ON? / Hat: ON?"
12529 }
12530 }
12531 }
12532 if(e.keyCode == 76 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12533 autoaim = true;
12534 doNewSend(["5", [secondary, true]]);
12535 doNewSend(["13c", [0, 53, 0]]);
12536 doNewSend(["c", [1]]);
12537 setTimeout( () => {
12538 doNewSend(["ch", ["Meow Ez Meow"]]);
12539 doNewSend(["13c", [0, 10, 0]]);
12540 doNewSend(["6", [12]]);
12541 }, 100);
12542 setTimeout( () => {
12543 doNewSend(["6", [15]]);
12544 }, 200);
12545 setTimeout( () => {
12546 doNewSend(["c", [0]]);
12547 doNewSend(["5", [primary, true]]);
12548 autoaim = false;
12549 }, 300);
12550 }
12551 if(e.keyCode == 97 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12552 doNewSend(["6", [4]]);
12553 }
12554 if(e.keyCode == 98 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12555 doNewSend(["6", [15]]);
12556 }
12557 if(e.keyCode == 99 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12558 doNewSend(["6", [28]]);
12559 }
12560 if(e.keyCode == 105 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12561 doNewSend(["6", [28]]);
12562 doNewSend(["6", [25]]);
12563 }
12564 if(e.keyCode == 219 && document.activeElement.id.toLowerCase() !== 'chatbox') {//
12565 doNewSend(["6", [8]]);
12566 doNewSend(["6", [17]]);
12567 doNewSend(["6", [31]]);
12568 doNewSend(["6", [23]]);
12569 doNewSend(["6", [10]]);
12570 doNewSend(["6", [33]]);
12571 doNewSend(["6", [28]]);
12572 doNewSend(["6", [25]]);
12573 }
12574 if(e.keyCode == 221 && document.activeElement.id.toLowerCase() !== 'chatbox') {//
12575 doNewSend(["6", [8]]);
12576 doNewSend(["6", [17]]);
12577 doNewSend(["6", [31]]);
12578 doNewSend(["6", [23]]);
12579 doNewSend(["6", [10]]);
12580 doNewSend(["6", [33]]);
12581 doNewSend(["6", [4]]);
12582 doNewSend(["6", [28]]);
12583 doNewSend(["6", [25]]);
12584
12585 }
12586 if(e.keyCode == 191 && document.activeElement.id.toLowerCase() !== 'chatbox') {//
12587 doNewSend(["6", [8]]);
12588 doNewSend(["6", [17]]);
12589 doNewSend(["6", [31]]);
12590 doNewSend(["6", [23]]);
12591 doNewSend(["6", [10]]);
12592 doNewSend(["6", [33]]);
12593 doNewSend(["6", [4]]);
12594 doNewSend(["6", [15]]);
12595 }
12596 if(e.keyCode == 39 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12597 doNewSend(["6", [5]]);
12598 doNewSend(["6", [17]]);
12599 doNewSend(["6", [31]]);
12600 doNewSend(["6", [23]]);
12601 doNewSend(["6", [10]]);
12602 doNewSend(["6", [33]]);
12603 doNewSend(["6", [12]]);
12604 doNewSend(["6", [15]]);
12605 }
12606 if(e.keyCode == 37 && document.activeElement.id.toLowerCase() !== 'chatbox') { // for Exe+FastBow
12607 doNewSend(["6", [8]]);
12608 doNewSend(["6", [17]]);
12609 doNewSend(["6", [31]]);
12610 doNewSend(["6", [23]]);
12611 doNewSend(["6", [10]]);
12612 doNewSend(["6", [33]]);
12613 doNewSend(["6", [28]]);
12614 doNewSend(["6", [25]]);
12615 }
12616 if(e.keyCode == 188 && document.activeElement.id.toLowerCase() !== 'chatbox') { //
12617 doNewSend(["6", [7]]);
12618 doNewSend(["6", [17]]);
12619 doNewSend(["6", [31]]);
12620 doNewSend(["6", [23]]);
12621 doNewSend(["6", [10]]);
12622 doNewSend(["6", [33]]);
12623 doNewSend(["6", [28]]);
12624 doNewSend(["6", [25]]);
12625 }
12626 if(e.keyCode == 120 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12627 hatToggle = (hatToggle + 1) % 2;
12628 if(healToggle == 0) {
12629 if(hatToggle == 0) {
12630 document.title = "Heal: OFF? / Hat: OFF?"
12631 } else {
12632 document.title = "Heal: OFF? / Hat: ON?"
12633 }
12634 } else {
12635 if(hatToggle == 0) {
12636 document.title = "Heal: ON? / Hat: OFF?"
12637 } else {
12638 document.title = "Heal: ON? / Hat: ON?"
12639 }
12640 }
12641 }
12642})
12643
12644document.addEventListener('keyup', (e)=>{
12645 spikePlacer.stop(e.keyCode);
12646 boostPlacer.stop(e.keyCode);
12647 millPlacer.stop(e.keyCode);
12648 turretPlacer.stop(e.keyCode);
12649 healer.stop(e.keyCode);
12650 spawnPlacer.stop(e.keyCode);
12651 wallPlacer.stop(e.keyCode);
12652 boostSpiker.stop(e.keyCode);
12653 if(e.keyCode == 71 && document.activeElement.id.toLowerCase() !== 'chatbox') {
12654 setTimeout( () => {
12655 doNewSend(["33", [null]]);
12656 boostDir = null;
12657 }, 10);
12658 }
12659})
12660
12661
12662function isElementVisible(e) {
12663 return (e.offsetParent !== null);
12664}
12665
12666
12667function toRad(angle) {
12668 return angle * 0.01745329251;
12669}
12670
12671function dist(a, b){
12672 return Math.sqrt( Math.pow((b.y-a[2]), 2) + Math.pow((b.x-a[1]), 2) );
12673}
12674
12675function animate(space, chance) {
12676 let result = '';
12677 let characters;
12678 if(space) {
12679 characters = 'ThisisHackBetterthantigermod';
12680 } else {
12681 characters = 'LioNMoD';
12682 }
12683 if(space) {
12684 characters = characters.padStart((30 - characters.length) / 2 + characters.length)
12685 characters = characters.padEnd(30);
12686 }
12687 let count = 0;
12688 for (let i = 0; i < characters.length; i++ ) {
12689 if(Math.floor(Math.random() * chance) == 0 && characters.charAt(i) != "-" && count < 0 && characters.charAt(i) != " ") {
12690 result += "";
12691 count++
12692 } else {
12693 result += characters.charAt(i);
12694 }
12695 }
12696 return result;
12697}
12698
12699document.title = "Heal: ON? / Hat: ON?"
12700
12701function update() {
12702 for (let i=0;i<9;i++){
12703 if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))){
12704 primary = i;
12705 }
12706 }
12707
12708 for (let i=9;i<16;i++){
12709 if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))){
12710 secondary = i;
12711 }
12712 }
12713
12714 for (let i=16;i<19;i++){
12715 if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))){
12716 foodType = i - 16;
12717 }
12718 }
12719
12720 for (let i=19;i<22;i++){
12721 if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))){
12722 wallType = i - 16;
12723 }
12724 }
12725
12726 for (let i=22;i<26;i++){
12727 if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))){
12728 spikeType = i - 16;
12729 }
12730 }
12731
12732 for (let i=26;i<29;i++){
12733 if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))){
12734 millType = i - 16;
12735 }
12736 }
12737
12738 for (let i=29;i<31;i++){
12739 if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))){
12740 mineType = i - 16;
12741 }
12742 }
12743
12744 for (let i=31;i<33;i++){
12745 if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))){
12746 boostType = i - 16;
12747 }
12748 }
12749
12750 for (let i=33;i<39;i++){
12751 if (isElementVisible(document.getElementById("actionBarItem" + i.toString())) && i != 36){
12752 turretType = i - 16;
12753 }
12754 }
12755 spawnpadType = 36;
12756 for (let i=36;i<37;i++){
12757 if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))){
12758 spawnpadType = i - 16;
12759 }
12760 }
12761}
12762$("#gameCanvas").css('cursor', 'url(http://cur.cursors-4u.net/user/use-1/use153.cur), default'); //CURSOR ==UserScript==
12763// @name New Userscript
12764// @namespace http://tampermonkey.net/
12765// @version 0.1
12766// @description try to take over the world!
12767// @author You
12768// @match http://moomoo.io/?server=19:2:0
12769// @grant none
12770// ==/UserScript==
12771
12772(function() {
12773 'use strict';
12774
12775 // Your code here...
12776})();