RIOT2361

ignore this

Feb 26th, 2020
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ((function (window) {
  2.     var arguments = [];
  3.     var cp5 = {
  4.         contexts: [],
  5.         images: [],
  6.         sockets: [],
  7.         patterns: []
  8.     };
  9.     var cp5_destroyed = false;
  10.     var FontDetect = (function () {
  11.         function e() {
  12.             if (!n) {
  13.                 n = !0;
  14.                 var e = document.body,
  15.                     t = document.body.firstChild,
  16.                     i = document.getElementById("fontdetectHelper") || document.createElement("div");
  17.                 i.id = "fontdetectHelper";
  18.                 r = document.createElement("span");
  19.                 r.innerText = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  20.                 i.appendChild(r);
  21.                 e.insertBefore(i, t);
  22.                 i.style.position = "absolute";
  23.                 i.style.visibility = "hidden";
  24.                 i.style.top = "-200px";
  25.                 i.style.left = "-100000px";
  26.                 i.style.width = "100000px";
  27.                 i.style.height = "200px";
  28.                 i.style.fontSize = "100px"
  29.             }
  30.         }
  31.  
  32.         function t(e, t) {
  33.             return e instanceof Element ? window.getComputedStyle(e).getPropertyValue(t) : window.jQuery ? $(e).css(t) : ""
  34.         }
  35.         var n = !1,
  36.             i = ["serif", "sans-serif", "monospace", "cursive", "fantasy"],
  37.             r = null;
  38.         return {
  39.             onFontLoaded: (function (t, i, r, o) {
  40.                 if (t) {
  41.                     var s = o && o.msInterval ? o.msInterval : 100,
  42.                         a = o && o.msTimeout ? o.msTimeout : 2e3;
  43.                     if (i || r) {
  44.                         if (n || e(), this.isFontLoaded(t)) return void(i && i(t));
  45.                         var l = this,
  46.                             f = (new Date).getTime(),
  47.                             d = setInterval((function () {
  48.                                 if (l.isFontLoaded(t)) return clearInterval(d), void i(t);
  49.                                 var e = (new Date).getTime();
  50.                                 e - f > a && (clearInterval(d), r && r(t))
  51.                             }), s)
  52.                     }
  53.                 }
  54.             }),
  55.             isFontLoaded: (function (t) {
  56.                 var o = 0,
  57.                     s = 0;
  58.                 n || e();
  59.                 for (var a = 0; a < i.length; ++a) {
  60.                     if (r.style.fontFamily = '"' + t + '",' + i[a], o = r.offsetWidth, a > 0 && o != s) return !1;
  61.                     s = o
  62.                 }
  63.                 return !0
  64.             }),
  65.             whichFont: (function (e) {
  66.                 for (var n = t(e, "font-family"), r = n.split(","), o = r.shift(); o;) {
  67.                     o = o.replace(/^\s*['"]?\s*([^'"]*)\s*['"]?\s*$/, "$1");
  68.                     for (var s = 0; s < i.length; s++)
  69.                         if (o == i[s]) return o;
  70.                     if (this.isFontLoaded(o)) return o;
  71.                     o = r.shift()
  72.                 }
  73.                 return null
  74.             })
  75.         }
  76.     })();
  77.     var haveFontsLoaded = false;
  78.     var idleDeadline = null;
  79.  
  80.     function idleCallback(deadline) {
  81.         if (cp5_destroyed) return;
  82.         if (deadline["timeRemaining"]() < 0) return;
  83.         idleDeadline = deadline;
  84.         _6fd50752();
  85.         window["requestIdleCallback"](idleCallback)
  86.     }
  87.     if (typeof Module == "undefined") Module = {};
  88.     Module["postRun"] = Module["preRun"] || [];
  89.     Module["postRun"].push((function () {
  90.         if ("requestIdleCallback" in window) {
  91.             window["requestIdleCallback"](idleCallback)
  92.         }
  93.     }));
  94.     var curScript = window.document.currentScript;
  95.     var textInput = document.getElementById("textInput");
  96.     var textInputContainer = document.getElementById("textInputContainer");
  97.  
  98.     function reload(version) {
  99.         if (window["setLoadingStatus"]) window["setLoadingStatus"]("Updating...");
  100.         setTimeout((function () {
  101.             window.location.reload(true)
  102.         }), 2e3)
  103.     }
  104.  
  105.     function allocateUTF8(str) {
  106.         if (str == null) return 0;
  107.         var l = str.length * 4 + 1;
  108.         var ptr = _6849a7e7(l);
  109.         stringToUTF8(str, ptr, l);
  110.         return ptr
  111.     }
  112.     var Module = Module || {};
  113.     Module["postRun"] = Module["postRun"] || [];
  114.     Module["postRun"].push((function () {
  115.         window["input"] = {
  116.             "mouse": _75951e0,
  117.             "keyDown": _1aef7396,
  118.             "keyUp": _6eb7beea,
  119.             "blur": _4741af2e,
  120.             "wheel": _259add5b,
  121.             "prevent_right_click": _7afddd24,
  122.             "flushInputHooks": _344570a2,
  123.             "set_convar": (function (key, value) {
  124.                 var k = allocateUTF8(key.toString());
  125.                 var v = allocateUTF8(value.toString());
  126.                 var r = !!_757c06fc(k, v);
  127.                 _71a9251a(k);
  128.                 _71a9251a(v);
  129.                 return r
  130.             }),
  131.             "get_convar": (function (key) {
  132.                 var k = allocateUTF8(key.toString());
  133.                 var r = _2cf05b9b(k);
  134.                 _71a9251a(k);
  135.                 return r ? UTF8ToString(r) : null
  136.             }),
  137.             "execute": (function (v) {
  138.                 var k = allocateUTF8(v.toString());
  139.                 _e655780(k);
  140.                 _71a9251a(k)
  141.             }),
  142.             "print_convar_help": _59c35f61,
  143.             "should_prevent_unload": _67bfe025
  144.         }
  145.     }));
  146.     Module["noExitRuntime"] = true;
  147.     Module["print"] = (function (text, color) {
  148.         console.log(text)
  149.     });
  150.     Module["printErr"] = (function (text) {
  151.         console.error(text)
  152.     });
  153.     Module["setStatus"] = (function (text) {
  154.         console.log(text)
  155.     });
  156.     Module["totalDependencies"] = 0;
  157.     Module["monitorRunDependencies"] = (function (left) {
  158.         console.log(left + " dependencies left")
  159.     });
  160.     Module["setStatus"]("Downloading d.js...");
  161.     window["connect"] = (function (ip) {
  162.         var p = allocateUTF8(ip);
  163.         _9faf4fa(p);
  164.         _71a9251a(p)
  165.     });
  166.  
  167.     function copyToKeyboard(text) {
  168.         var textArea = document.createElement("textarea");
  169.         textArea.style.position = "fixed";
  170.         textArea.style.top = 0;
  171.         textArea.style.left = 0;
  172.         textArea.style.width = "2em";
  173.         textArea.style.height = "2em";
  174.         textArea.style.margin = 0;
  175.         textArea.style.padding = 0;
  176.         textArea.style.border = "none";
  177.         textArea.style.outline = "none";
  178.         textArea.style.boxShadow = "none";
  179.         textArea.style.background = "transparent";
  180.         textArea.value = text;
  181.         document.body.appendChild(textArea);
  182.         textArea.focus();
  183.         textArea.select();
  184.         var res = false;
  185.         try {
  186.             res = document.execCommand("copy");
  187.             if (!res) console.log("execCommand copy failed")
  188.         } catch (e) {}
  189.         document.body.removeChild(textArea);
  190.         if (!res) {
  191.             window["prompt"]("Copy the following link to your clipboard:", text)
  192.         }
  193.     }
  194.     var originalFunctionToString = Function.prototype.toString;
  195.     var Module;
  196.     if (!Module) Module = eval("(function() { try { return Module || {} } catch(e) {  return  {} } })()");
  197.     var moduleOverrides = {};
  198.     for (var key in Module) {
  199.         if (Module.hasOwnProperty(key)) {
  200.             moduleOverrides[key] = Module[key]
  201.         }
  202.     }
  203.     var ENVIRONMENT_IS_WEB = true;
  204.     var ENVIRONMENT_IS_WORKER = false;
  205.     var ENVIRONMENT_IS_NODE = false;
  206.     var ENVIRONMENT_IS_SHELL = false;
  207.     if (Module["ENVIRONMENT"]) {
  208.         if (Module["ENVIRONMENT"] === "WEB") {
  209.             ENVIRONMENT_IS_WEB = true
  210.         } else if (Module["ENVIRONMENT"] === "WORKER") {
  211.             ENVIRONMENT_IS_WORKER = true
  212.         } else if (Module["ENVIRONMENT"] === "NODE") {
  213.             ENVIRONMENT_IS_NODE = true
  214.         } else if (Module["ENVIRONMENT"] === "SHELL") {
  215.             ENVIRONMENT_IS_SHELL = true
  216.         } else {
  217.             throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.")
  218.         }
  219.     } else {
  220.         ENVIRONMENT_IS_WEB = typeof window === "object";
  221.         ENVIRONMENT_IS_WORKER = typeof importScripts === "function";
  222.         ENVIRONMENT_IS_NODE = typeof process === "object" && typeof require === "function" && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER;
  223.         ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER
  224.     }
  225.     if (ENVIRONMENT_IS_NODE) {
  226.         if (!Module["print"]) Module["print"] = console.log;
  227.         if (!Module["printErr"]) Module["printErr"] = console.warn;
  228.         var nodeFS;
  229.         var nodePath;
  230.         Module["read"] = function read(filename, binary) {
  231.             if (!nodeFS) nodeFS = require("fs");
  232.             if (!nodePath) nodePath = require("path");
  233.             filename = nodePath["normalize"](filename);
  234.             var ret = nodeFS["readFileSync"](filename);
  235.             return binary ? ret : ret.toString()
  236.         };
  237.         Module["readBinary"] = function readBinary(filename) {
  238.             var ret = Module["read"](filename, true);
  239.             if (!ret.buffer) {
  240.                 ret = new Uint8Array(ret)
  241.             }
  242.             assert(ret.buffer);
  243.             return ret
  244.         };
  245.         Module["load"] = function load(f) {
  246.             globalEval(read(f))
  247.         };
  248.         if (!Module["thisProgram"]) {
  249.             if (process["argv"].length > 1) {
  250.                 Module["thisProgram"] = process["argv"][1].replace(/\\/g, "/")
  251.             } else {
  252.                 Module["thisProgram"] = "unknown-program"
  253.             }
  254.         }
  255.         Module["arguments"] = process["argv"].slice(2);
  256.         if (typeof module !== "undefined") {
  257.             module["exports"] = Module
  258.         }
  259.         process["on"]("uncaughtException", (function (ex) {
  260.             if (!(ex instanceof ExitStatus)) {
  261.                 throw ex
  262.             }
  263.         }));
  264.         Module["inspect"] = (function () {
  265.             return "[Emscripten Module object]"
  266.         })
  267.     } else if (ENVIRONMENT_IS_SHELL) {
  268.         if (!Module["print"]) Module["print"] = print;
  269.         if (typeof printErr != "undefined") Module["printErr"] = printErr;
  270.         if (typeof read != "undefined") {
  271.             Module["read"] = read
  272.         } else {
  273.             Module["read"] = function read() {
  274.                 throw "no read() available"
  275.             }
  276.         }
  277.         Module["readBinary"] = function readBinary(f) {
  278.             if (typeof readbuffer === "function") {
  279.                 return new Uint8Array(readbuffer(f))
  280.             }
  281.             var data = read(f, "binary");
  282.             assert(typeof data === "object");
  283.             return data
  284.         };
  285.         if (typeof scriptArgs != "undefined") {
  286.             Module["arguments"] = scriptArgs
  287.         } else if (typeof arguments != "undefined") {
  288.             Module["arguments"] = arguments
  289.         }
  290.         if (typeof quit === "function") {
  291.             Module["quit"] = (function (status, toThrow) {
  292.                 quit(status)
  293.             })
  294.         }
  295.         eval("if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined")
  296.     } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
  297.         Module["read"] = function read(url) {
  298.             var xhr = new XMLHttpRequest;
  299.             xhr.open("GET", url, false);
  300.             xhr.send(null);
  301.             return xhr.responseText
  302.         };
  303.         if (ENVIRONMENT_IS_WORKER) {
  304.             Module["readBinary"] = function read(url) {
  305.                 var xhr = new XMLHttpRequest;
  306.                 xhr.open("GET", url, false);
  307.                 xhr.responseType = "arraybuffer";
  308.                 xhr.send(null);
  309.                 return xhr.response
  310.             }
  311.         }
  312.         Module["readAsync"] = function readAsync(url, onload, onerror) {
  313.             var xhr = new XMLHttpRequest;
  314.             xhr.open("GET", url, true);
  315.             xhr.responseType = "arraybuffer";
  316.             xhr.onload = function xhr_onload() {
  317.                 if (xhr.status == 200 || xhr.status == 0 && xhr.response) {
  318.                     onload(xhr.response)
  319.                 } else {
  320.                     onerror()
  321.                 }
  322.             };
  323.             xhr.onerror = onerror;
  324.             xhr.send(null)
  325.         };
  326.         if (typeof arguments != "undefined") {
  327.             Module["arguments"] = arguments
  328.         }
  329.         if (typeof console !== "undefined") {
  330.             if (!Module["print"]) Module["print"] = function print(x) {
  331.                 console.log(x)
  332.             };
  333.             if (!Module["printErr"]) Module["printErr"] = function printErr(x) {
  334.                 console.warn(x)
  335.             }
  336.         } else {
  337.             var TRY_USE_DUMP = false;
  338.             if (!Module["print"]) Module["print"] = TRY_USE_DUMP && typeof dump !== "undefined" ? (function (x) {
  339.                 dump(x)
  340.             }) : (function (x) {})
  341.         }
  342.         if (ENVIRONMENT_IS_WORKER) {
  343.             Module["load"] = importScripts
  344.         }
  345.         if (typeof Module["setWindowTitle"] === "undefined") {
  346.             Module["setWindowTitle"] = (function (title) {
  347.                 document.title = title
  348.             })
  349.         }
  350.     } else {
  351.         throw "Unknown runtime environment. Where are we?"
  352.     }
  353.  
  354.     function globalEval(x) {
  355.         eval.call(null, x)
  356.     }
  357.     if (!Module["load"] && Module["read"]) {
  358.         Module["load"] = function load(f) {
  359.             globalEval(Module["read"](f))
  360.         }
  361.     }
  362.     if (!Module["print"]) {
  363.         Module["print"] = (function () {})
  364.     }
  365.     if (!Module["printErr"]) {
  366.         Module["printErr"] = Module["print"]
  367.     }
  368.     if (!Module["arguments"]) {
  369.         Module["arguments"] = []
  370.     }
  371.     if (!Module["thisProgram"]) {
  372.         Module["thisProgram"] = "./this.program"
  373.     }
  374.     if (!Module["quit"]) {
  375.         Module["quit"] = (function (status, toThrow) {
  376.             throw toThrow
  377.         })
  378.     }
  379.     Module.print = Module["print"];
  380.     Module.printErr = Module["printErr"];
  381.     Module["preRun"] = [];
  382.     Module["postRun"] = [];
  383.     for (var key in moduleOverrides) {
  384.         if (moduleOverrides.hasOwnProperty(key)) {
  385.             Module[key] = moduleOverrides[key]
  386.         }
  387.     }
  388.     moduleOverrides = undefined;
  389.     var Runtime = {
  390.         setTempRet0: (function (value) {
  391.             tempRet0 = value;
  392.             return value
  393.         }),
  394.         getTempRet0: (function () {
  395.             return tempRet0
  396.         }),
  397.         stackSave: (function () {
  398.             return STACKTOP
  399.         }),
  400.         stackRestore: (function (stackTop) {
  401.             STACKTOP = stackTop
  402.         }),
  403.         getNativeTypeSize: (function (type) {
  404.             switch (type) {
  405.                 case "i1":
  406.                 case "i8":
  407.                     return 1;
  408.                 case "i16":
  409.                     return 2;
  410.                 case "i32":
  411.                     return 4;
  412.                 case "i64":
  413.                     return 8;
  414.                 case "float":
  415.                     return 4;
  416.                 case "double":
  417.                     return 8;
  418.                 default:
  419.                     {
  420.                         if (type[type.length - 1] === "*") {
  421.                             return Runtime.QUANTUM_SIZE
  422.                         } else if (type[0] === "i") {
  423.                             var bits = parseInt(type.substr(1));
  424.                             assert(bits % 8 === 0);
  425.                             return bits / 8
  426.                         } else {
  427.                             return 0
  428.                         }
  429.                     }
  430.             }
  431.         }),
  432.         getNativeFieldSize: (function (type) {
  433.             return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE)
  434.         }),
  435.         STACK_ALIGN: 16,
  436.         prepVararg: (function (ptr, type) {
  437.             if (type === "double" || type === "i64") {
  438.                 if (ptr & 7) {
  439.                     assert((ptr & 7) === 4);
  440.                     ptr += 4
  441.                 }
  442.             } else {
  443.                 assert((ptr & 3) === 0)
  444.             }
  445.             return ptr
  446.         }),
  447.         getAlignSize: (function (type, size, vararg) {
  448.             if (!vararg && (type == "i64" || type == "double")) return 8;
  449.             if (!type) return Math.min(size, 8);
  450.             return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE)
  451.         }),
  452.         dynCall: (function (sig, ptr, args) {
  453.             if (args && args.length) {
  454.                 return Module["dynCall_" + sig].apply(null, [ptr].concat(args))
  455.             } else {
  456.                 return Module["dynCall_" + sig].call(null, ptr)
  457.             }
  458.         }),
  459.         functionPointers: [],
  460.         addFunction: (function (func) {
  461.             for (var i = 0; i < Runtime.functionPointers.length; i++) {
  462.                 if (!Runtime.functionPointers[i]) {
  463.                     Runtime.functionPointers[i] = func;
  464.                     return 2 * (1 + i)
  465.                 }
  466.             }
  467.             throw "Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."
  468.         }),
  469.         removeFunction: (function (index) {
  470.             Runtime.functionPointers[(index - 2) / 2] = null
  471.         }),
  472.         warnOnce: (function (text) {
  473.             if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {};
  474.             if (!Runtime.warnOnce.shown[text]) {
  475.                 Runtime.warnOnce.shown[text] = 1;
  476.                 Module.printErr(text)
  477.             }
  478.         }),
  479.         funcWrappers: {},
  480.         getFuncWrapper: (function (func, sig) {
  481.             assert(sig);
  482.             if (!Runtime.funcWrappers[sig]) {
  483.                 Runtime.funcWrappers[sig] = {}
  484.             }
  485.             var sigCache = Runtime.funcWrappers[sig];
  486.             if (!sigCache[func]) {
  487.                 if (sig.length === 1) {
  488.                     sigCache[func] = function dynCall_wrapper() {
  489.                         return Runtime.dynCall(sig, func)
  490.                     }
  491.                 } else if (sig.length === 2) {
  492.                     sigCache[func] = function dynCall_wrapper(arg) {
  493.                         return Runtime.dynCall(sig, func, [arg])
  494.                     }
  495.                 } else {
  496.                     sigCache[func] = function dynCall_wrapper() {
  497.                         return Runtime.dynCall(sig, func, Array.prototype.slice.call(arguments))
  498.                     }
  499.                 }
  500.             }
  501.             return sigCache[func]
  502.         }),
  503.         getCompilerSetting: (function (name) {
  504.             throw "You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work"
  505.         }),
  506.         stackAlloc: (function (size) {
  507.             var ret = STACKTOP;
  508.             STACKTOP = STACKTOP + size | 0;
  509.             STACKTOP = STACKTOP + 15 & -16;
  510.             return ret
  511.         }),
  512.         staticAlloc: (function (size) {
  513.             var ret = STATICTOP;
  514.             STATICTOP = STATICTOP + size | 0;
  515.             STATICTOP = STATICTOP + 15 & -16;
  516.             return ret
  517.         }),
  518.         dynamicAlloc: (function (size) {
  519.             var ret = HEAP32[DYNAMICTOP_PTR >> 2];
  520.             var end = (ret + size + 15 | 0) & -16;
  521.             HEAP32[DYNAMICTOP_PTR >> 2] = end;
  522.             if (end >= TOTAL_MEMORY) {
  523.                 var success = enlargeMemory();
  524.                 if (!success) {
  525.                     HEAP32[DYNAMICTOP_PTR >> 2] = ret;
  526.                     return 0
  527.                 }
  528.             }
  529.             return ret
  530.         }),
  531.         alignMemory: (function (size, quantum) {
  532.             var ret = size = Math.ceil(size / (quantum ? quantum : 16)) * (quantum ? quantum : 16);
  533.             return ret
  534.         }),
  535.         makeBigInt: (function (low, high, unsigned) {
  536.             var ret = unsigned ? +(low >>> 0) + +(high >>> 0) * +4294967296 : +(low >>> 0) + +(high | 0) * +4294967296;
  537.             return ret
  538.         }),
  539.         GLOBAL_BASE: 1024,
  540.         QUANTUM_SIZE: 4,
  541.         _1082e8bb: 0
  542.     };
  543.     Module["Runtime"] = Runtime;
  544.     Runtime["addFunction"] = Runtime.addFunction;
  545.     Runtime["removeFunction"] = Runtime.removeFunction;
  546.     var ABORT = 0;
  547.     var EXITSTATUS = 0;
  548.  
  549.     function assert(condition, text) {
  550.         if (!condition) {
  551.             abort("Assertion failed: " + text)
  552.         }
  553.     }
  554.  
  555.     function getCFunc(ident) {
  556.         var func = Module["_" + ident];
  557.         if (!func) {
  558.             try {
  559.                 func = eval("_" + ident)
  560.             } catch (e) {}
  561.         }
  562.         assert(func, "Cannot call unknown function " + ident + " (perhaps LLVM optimizations or closure removed it?)");
  563.         return func
  564.     }
  565.     var cwrap, ccall;
  566.     ((function () {
  567.         var JSfuncs = {
  568.             "stackSave": (function () {
  569.                 Runtime.stackSave()
  570.             }),
  571.             "stackRestore": (function () {
  572.                 Runtime.stackRestore()
  573.             }),
  574.             "arrayToC": (function (arr) {
  575.                 var ret = Runtime.stackAlloc(arr.length);
  576.                 writeArrayToMemory(arr, ret);
  577.                 return ret
  578.             }),
  579.             "stringToC": (function (str) {
  580.                 var ret = 0;
  581.                 if (str !== null && str !== undefined && str !== 0) {
  582.                     var len = (str.length << 2) + 1;
  583.                     ret = Runtime.stackAlloc(len);
  584.                     stringToUTF8(str, ret, len)
  585.                 }
  586.                 return ret
  587.             })
  588.         };
  589.         var toC = {
  590.             "string": JSfuncs["stringToC"],
  591.             "array": JSfuncs["arrayToC"]
  592.         };
  593.         ccall = function ccallFunc(ident, returnType, argTypes, args, opts) {
  594.             var func = getCFunc(ident);
  595.             var cArgs = [];
  596.             var stack = 0;
  597.             if (args) {
  598.                 for (var i = 0; i < args.length; i++) {
  599.                     var converter = toC[argTypes[i]];
  600.                     if (converter) {
  601.                         if (stack === 0) stack = Runtime.stackSave();
  602.                         cArgs[i] = converter(args[i])
  603.                     } else {
  604.                         cArgs[i] = args[i]
  605.                     }
  606.                 }
  607.             }
  608.             var ret = func.apply(null, cArgs);
  609.             if (returnType === "string") ret = Pointer_stringify(ret);
  610.             if (stack !== 0) {
  611.                 if (opts && opts.async) {
  612.                     EmterpreterAsync.asyncFinalizers.push((function () {
  613.                         Runtime.stackRestore(stack)
  614.                     }));
  615.                     return
  616.                 }
  617.                 Runtime.stackRestore(stack)
  618.             }
  619.             return ret
  620.         };
  621.         var sourceRegex = /^function\s*[a-zA-Z$_0-9]*\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?: return\s*(.*?)[;\s]*)?}$/;
  622.  
  623.         function parseJSFunc(jsfunc) {
  624.             var parsed = jsfunc.toString().match(sourceRegex).slice(1);
  625.             return {
  626.                 arguments: parsed[0],
  627.                 body: parsed[1],
  628.                 returnValue: parsed[2]
  629.             }
  630.         }
  631.         var JSsource = null;
  632.  
  633.         function ensureJSsource() {
  634.             if (!JSsource) {
  635.                 JSsource = {};
  636.                 for (var fun in JSfuncs) {
  637.                     if (JSfuncs.hasOwnProperty(fun)) {
  638.                         JSsource[fun] = parseJSFunc(JSfuncs[fun])
  639.                     }
  640.                 }
  641.             }
  642.         }
  643.         cwrap = function cwrap(ident, returnType, argTypes) {
  644.             argTypes = argTypes || [];
  645.             var cfunc = getCFunc(ident);
  646.             var numericArgs = argTypes.every((function (type) {
  647.                 return type === "number"
  648.             }));
  649.             var numericRet = returnType !== "string";
  650.             if (numericRet && numericArgs) {
  651.                 return cfunc
  652.             }
  653.             var argNames = argTypes.map((function (x, i) {
  654.                 return "$" + i
  655.             }));
  656.             var funcstr = "(function(" + argNames.join(",") + ") {";
  657.             var nargs = argTypes.length;
  658.             if (!numericArgs) {
  659.                 ensureJSsource();
  660.                 funcstr += "var stack = " + JSsource["stackSave"].body + ";";
  661.                 for (var i = 0; i < nargs; i++) {
  662.                     var arg = argNames[i],
  663.                         type = argTypes[i];
  664.                     if (type === "number") continue;
  665.                     var convertCode = JSsource[type + "ToC"];
  666.                     funcstr += "var " + convertCode.arguments + " = " + arg + ";";
  667.                     funcstr += convertCode.body + ";";
  668.                     funcstr += arg + "=(" + convertCode.returnValue + ");"
  669.                 }
  670.             }
  671.             var cfuncname = parseJSFunc((function () {
  672.                 return cfunc
  673.             })).returnValue;
  674.             funcstr += "var ret = " + cfuncname + "(" + argNames.join(",") + ");";
  675.             if (!numericRet) {
  676.                 var strgfy = parseJSFunc((function () {
  677.                     return Pointer_stringify
  678.                 })).returnValue;
  679.                 funcstr += "ret = " + strgfy + "(ret);"
  680.             }
  681.             if (!numericArgs) {
  682.                 ensureJSsource();
  683.                 funcstr += JSsource["stackRestore"].body.replace("()", "(stack)") + ";"
  684.             }
  685.             funcstr += "return ret})";
  686.             return eval(funcstr)
  687.         }
  688.     }))();
  689.     Module["ccall"] = ccall;
  690.     Module["cwrap"] = cwrap;
  691.  
  692.     function setValue(ptr, value, type, noSafe) {
  693.         type = type || "i8";
  694.         if (type.charAt(type.length - 1) === "*") type = "i32";
  695.         switch (type) {
  696.             case "i1":
  697.                 HEAP8[ptr >> 0] = value;
  698.                 break;
  699.             case "i8":
  700.                 HEAP8[ptr >> 0] = value;
  701.                 break;
  702.             case "i16":
  703.                 HEAP16[ptr >> 1] = value;
  704.                 break;
  705.             case "i32":
  706.                 HEAP32[ptr >> 2] = value;
  707.                 break;
  708.             case "i64":
  709.                 tempI64 = [value >>> 0, (tempDouble = value, +Math_abs(tempDouble) >= +1 ? tempDouble > +0 ? (Math_min(+Math_floor(tempDouble / +4294967296), +4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / +4294967296) >>> 0 : 0)], HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1];
  710.                 break;
  711.             case "float":
  712.                 HEAPF32[ptr >> 2] = value;
  713.                 break;
  714.             case "double":
  715.                 HEAPF64[ptr >> 3] = value;
  716.                 break;
  717.             default:
  718.                 abort("invalid type for setValue: " + type)
  719.         }
  720.     }
  721.     Module["setValue"] = setValue;
  722.  
  723.     function getValue(ptr, type, noSafe) {
  724.         type = type || "i8";
  725.         if (type.charAt(type.length - 1) === "*") type = "i32";
  726.         switch (type) {
  727.             case "i1":
  728.                 return HEAP8[ptr >> 0];
  729.             case "i8":
  730.                 return HEAP8[ptr >> 0];
  731.             case "i16":
  732.                 return HEAP16[ptr >> 1];
  733.             case "i32":
  734.                 return HEAP32[ptr >> 2];
  735.             case "i64":
  736.                 return HEAP32[ptr >> 2];
  737.             case "float":
  738.                 return HEAPF32[ptr >> 2];
  739.             case "double":
  740.                 return HEAPF64[ptr >> 3];
  741.             default:
  742.                 abort("invalid type for setValue: " + type)
  743.         }
  744.         return null
  745.     }
  746.     Module["getValue"] = getValue;
  747.     var ALLOC_NORMAL = 0;
  748.     var ALLOC_STACK = 1;
  749.     var ALLOC_STATIC = 2;
  750.     var ALLOC_DYNAMIC = 3;
  751.     var ALLOC_NONE = 4;
  752.     Module["ALLOC_NORMAL"] = ALLOC_NORMAL;
  753.     Module["ALLOC_STACK"] = ALLOC_STACK;
  754.     Module["ALLOC_STATIC"] = ALLOC_STATIC;
  755.     Module["ALLOC_DYNAMIC"] = ALLOC_DYNAMIC;
  756.     Module["ALLOC_NONE"] = ALLOC_NONE;
  757.  
  758.     function allocate(slab, types, allocator, ptr) {
  759.         var zeroinit, size;
  760.         if (typeof slab === "number") {
  761.             zeroinit = true;
  762.             size = slab
  763.         } else {
  764.             zeroinit = false;
  765.             size = slab.length
  766.         }
  767.         var singleType = typeof types === "string" ? types : null;
  768.         var ret;
  769.         if (allocator == ALLOC_NONE) {
  770.             ret = ptr
  771.         } else {
  772.             ret = [typeof _6849a7e7 === "function" ? _6849a7e7 : Runtime.staticAlloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length))
  773.         }
  774.         if (zeroinit) {
  775.             var ptr = ret,
  776.                 stop;
  777.             assert((ret & 3) == 0);
  778.             stop = ret + (size & ~3);
  779.             for (; ptr < stop; ptr += 4) {
  780.                 HEAP32[ptr >> 2] = 0
  781.             }
  782.             stop = ret + size;
  783.             while (ptr < stop) {
  784.                 HEAP8[ptr++ >> 0] = 0
  785.             }
  786.             return ret
  787.         }
  788.         if (singleType === "i8") {
  789.             if (slab.subarray || slab.slice) {
  790.                 HEAPU8.set(slab, ret)
  791.             } else {
  792.                 HEAPU8.set(new Uint8Array(slab), ret)
  793.             }
  794.             return ret
  795.         }
  796.         var i = 0,
  797.             type, typeSize, previousType;
  798.         while (i < size) {
  799.             var curr = slab[i];
  800.             if (typeof curr === "function") {
  801.                 curr = Runtime.getFunctionIndex(curr)
  802.             }
  803.             type = singleType || types[i];
  804.             if (type === 0) {
  805.                 i++;
  806.                 continue
  807.             }
  808.             if (type == "i64") type = "i32";
  809.             setValue(ret + i, curr, type);
  810.             if (previousType !== type) {
  811.                 typeSize = Runtime.getNativeTypeSize(type);
  812.                 previousType = type
  813.             }
  814.             i += typeSize
  815.         }
  816.         return ret
  817.     }
  818.     Module["allocate"] = allocate;
  819.  
  820.     function getMemory(size) {
  821.         if (!staticSealed) return Runtime.staticAlloc(size);
  822.         if (!runtimeInitialized) return Runtime.dynamicAlloc(size);
  823.         return _6849a7e7(size)
  824.     }
  825.     Module["getMemory"] = getMemory;
  826.  
  827.     function Pointer_stringify(ptr, length) {
  828.         if (length === 0 || !ptr) return "";
  829.         var hasUtf = 0;
  830.         var t;
  831.         var i = 0;
  832.         while (1) {
  833.             t = HEAPU8[ptr + i >> 0];
  834.             hasUtf |= t;
  835.             if (t == 0 && !length) break;
  836.             i++;
  837.             if (length && i == length) break
  838.         }
  839.         if (!length) length = i;
  840.         var ret = "";
  841.         if (hasUtf < 128) {
  842.             var MAX_CHUNK = 1024;
  843.             var curr;
  844.             while (length > 0) {
  845.                 curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)));
  846.                 ret = ret ? ret + curr : curr;
  847.                 ptr += MAX_CHUNK;
  848.                 length -= MAX_CHUNK
  849.             }
  850.             return ret
  851.         }
  852.         return Module["UTF8ToString"](ptr)
  853.     }
  854.     Module["Pointer_stringify"] = Pointer_stringify;
  855.  
  856.     function AsciiToString(ptr) {
  857.         var str = "";
  858.         while (1) {
  859.             var ch = HEAP8[ptr++ >> 0];
  860.             if (!ch) return str;
  861.             str += String.fromCharCode(ch)
  862.         }
  863.     }
  864.     Module["AsciiToString"] = AsciiToString;
  865.  
  866.     function stringToAscii(str, outPtr) {
  867.         return writeAsciiToMemory(str, outPtr, false)
  868.     }
  869.     Module["stringToAscii"] = stringToAscii;
  870.     var UTF8Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf8") : undefined;
  871.  
  872.     function UTF8ArrayToString(u8Array, idx) {
  873.         var endPtr = idx;
  874.         while (u8Array[endPtr]) ++endPtr;
  875.         if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) {
  876.             return UTF8Decoder.decode(u8Array.subarray(idx, endPtr))
  877.         } else {
  878.             var u0, u1, u2, u3, u4, u5;
  879.             var str = "";
  880.             while (1) {
  881.                 u0 = u8Array[idx++];
  882.                 if (!u0) return str;
  883.                 if (!(u0 & 128)) {
  884.                     str += String.fromCharCode(u0);
  885.                     continue
  886.                 }
  887.                 u1 = u8Array[idx++] & 63;
  888.                 if ((u0 & 224) == 192) {
  889.                     str += String.fromCharCode((u0 & 31) << 6 | u1);
  890.                     continue
  891.                 }
  892.                 u2 = u8Array[idx++] & 63;
  893.                 if ((u0 & 240) == 224) {
  894.                     u0 = (u0 & 15) << 12 | u1 << 6 | u2
  895.                 } else {
  896.                     u3 = u8Array[idx++] & 63;
  897.                     if ((u0 & 248) == 240) {
  898.                         u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u3
  899.                     } else {
  900.                         u4 = u8Array[idx++] & 63;
  901.                         if ((u0 & 252) == 248) {
  902.                             u0 = (u0 & 3) << 24 | u1 << 18 | u2 << 12 | u3 << 6 | u4
  903.                         } else {
  904.                             u5 = u8Array[idx++] & 63;
  905.                             u0 = (u0 & 1) << 30 | u1 << 24 | u2 << 18 | u3 << 12 | u4 << 6 | u5
  906.                         }
  907.                     }
  908.                 }
  909.                 if (u0 < 65536) {
  910.                     str += String.fromCharCode(u0)
  911.                 } else {
  912.                     var ch = u0 - 65536;
  913.                     str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023)
  914.                 }
  915.             }
  916.         }
  917.     }
  918.     Module["UTF8ArrayToString"] = UTF8ArrayToString;
  919.  
  920.     function UTF8ToString(ptr) {
  921.         return UTF8ArrayToString(HEAPU8, ptr)
  922.     }
  923.     Module["UTF8ToString"] = UTF8ToString;
  924.  
  925.     function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {
  926.         if (!(maxBytesToWrite > 0)) return 0;
  927.         var startIdx = outIdx;
  928.         var endIdx = outIdx + maxBytesToWrite - 1;
  929.         for (var i = 0; i < str.length; ++i) {
  930.             var u = str.charCodeAt(i);
  931.             if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;
  932.             if (u <= 127) {
  933.                 if (outIdx >= endIdx) break;
  934.                 outU8Array[outIdx++] = u
  935.             } else if (u <= 2047) {
  936.                 if (outIdx + 1 >= endIdx) break;
  937.                 outU8Array[outIdx++] = 192 | u >> 6;
  938.                 outU8Array[outIdx++] = 128 | u & 63
  939.             } else if (u <= 65535) {
  940.                 if (outIdx + 2 >= endIdx) break;
  941.                 outU8Array[outIdx++] = 224 | u >> 12;
  942.                 outU8Array[outIdx++] = 128 | u >> 6 & 63;
  943.                 outU8Array[outIdx++] = 128 | u & 63
  944.             } else if (u <= 2097151) {
  945.                 if (outIdx + 3 >= endIdx) break;
  946.                 outU8Array[outIdx++] = 240 | u >> 18;
  947.                 outU8Array[outIdx++] = 128 | u >> 12 & 63;
  948.                 outU8Array[outIdx++] = 128 | u >> 6 & 63;
  949.                 outU8Array[outIdx++] = 128 | u & 63
  950.             } else if (u <= 67108863) {
  951.                 if (outIdx + 4 >= endIdx) break;
  952.                 outU8Array[outIdx++] = 248 | u >> 24;
  953.                 outU8Array[outIdx++] = 128 | u >> 18 & 63;
  954.                 outU8Array[outIdx++] = 128 | u >> 12 & 63;
  955.                 outU8Array[outIdx++] = 128 | u >> 6 & 63;
  956.                 outU8Array[outIdx++] = 128 | u & 63
  957.             } else {
  958.                 if (outIdx + 5 >= endIdx) break;
  959.                 outU8Array[outIdx++] = 252 | u >> 30;
  960.                 outU8Array[outIdx++] = 128 | u >> 24 & 63;
  961.                 outU8Array[outIdx++] = 128 | u >> 18 & 63;
  962.                 outU8Array[outIdx++] = 128 | u >> 12 & 63;
  963.                 outU8Array[outIdx++] = 128 | u >> 6 & 63;
  964.                 outU8Array[outIdx++] = 128 | u & 63
  965.             }
  966.         }
  967.         outU8Array[outIdx] = 0;
  968.         return outIdx - startIdx
  969.     }
  970.     Module["stringToUTF8Array"] = stringToUTF8Array;
  971.  
  972.     function stringToUTF8(str, outPtr, maxBytesToWrite) {
  973.         return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite)
  974.     }
  975.     Module["stringToUTF8"] = stringToUTF8;
  976.  
  977.     function lengthBytesUTF8(str) {
  978.         var len = 0;
  979.         for (var i = 0; i < str.length; ++i) {
  980.             var u = str.charCodeAt(i);
  981.             if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;
  982.             if (u <= 127) {
  983.                 ++len
  984.             } else if (u <= 2047) {
  985.                 len += 2
  986.             } else if (u <= 65535) {
  987.                 len += 3
  988.             } else if (u <= 2097151) {
  989.                 len += 4
  990.             } else if (u <= 67108863) {
  991.                 len += 5
  992.             } else {
  993.                 len += 6
  994.             }
  995.         }
  996.         return len
  997.     }
  998.     Module["lengthBytesUTF8"] = lengthBytesUTF8;
  999.     var UTF16Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf-16le") : undefined;
  1000.  
  1001.     function demangle(func) {
  1002.         var _62e97afe = Module["_3aa8d576"] || Module["_629d7afc"];
  1003.         if (_62e97afe) {
  1004.             try {
  1005.                 var s = func.substr(1);
  1006.                 var len = lengthBytesUTF8(s) + 1;
  1007.                 var buf = _6849a7e7(len);
  1008.                 stringToUTF8(s, buf, len);
  1009.                 var status = _6849a7e7(4);
  1010.                 var ret = _62e97afe(buf, 0, 0, status);
  1011.                 if (getValue(status, "i32") === 0 && ret) {
  1012.                     return Pointer_stringify(ret)
  1013.                 }
  1014.             } catch (e) {} finally {
  1015.                 if (buf) _71a9251a(buf);
  1016.                 if (status) _71a9251a(status);
  1017.                 if (ret) _71a9251a(ret)
  1018.             }
  1019.             return func
  1020.         }
  1021.         Runtime.warnOnce("warning: build with  -s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling");
  1022.         return func
  1023.     }
  1024.  
  1025.     function demangleAll(text) {
  1026.         var regex = /_5d996191[\w\d_]+/g;
  1027.         return text.replace(regex, (function (x) {
  1028.             var y = demangle(x);
  1029.             return x === y ? x : x + " [" + y + "]"
  1030.         }))
  1031.     }
  1032.  
  1033.     function jsStackTrace() {
  1034.         var err = new Error;
  1035.         if (!err.stack) {
  1036.             try {
  1037.                 throw new Error(0)
  1038.             } catch (e) {
  1039.                 err = e
  1040.             }
  1041.             if (!err.stack) {
  1042.                 return "(no stack trace available)"
  1043.             }
  1044.         }
  1045.         return err.stack.toString()
  1046.     }
  1047.  
  1048.     function stackTrace() {
  1049.         var js = jsStackTrace();
  1050.         if (Module["extraStackTrace"]) js += "\n" + Module["extraStackTrace"]();
  1051.         return demangleAll(js)
  1052.     }
  1053.     Module["stackTrace"] = stackTrace;
  1054.     var WASM_PAGE_SIZE = 65536;
  1055.     var ASMJS_PAGE_SIZE = 16777216;
  1056.  
  1057.     function alignUp(x, multiple) {
  1058.         if (x % multiple > 0) {
  1059.             x += multiple - x % multiple
  1060.         }
  1061.         return x
  1062.     }
  1063.     var HEAP;
  1064.     var buffer;
  1065.     var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
  1066.  
  1067.     function updateGlobalBuffer(buf) {
  1068.         Module["buffer"] = buffer = buf
  1069.     }
  1070.  
  1071.     function updateGlobalBufferViews() {
  1072.         Module["HEAP8"] = HEAP8 = new Int8Array(buffer);
  1073.         Module["HEAP16"] = HEAP16 = new Int16Array(buffer);
  1074.         Module["HEAP32"] = HEAP32 = new Int32Array(buffer);
  1075.         Module["HEAPU8"] = HEAPU8 = new Uint8Array(buffer);
  1076.         Module["HEAPU16"] = HEAPU16 = new Uint16Array(buffer);
  1077.         Module["HEAPU32"] = HEAPU32 = new Uint32Array(buffer);
  1078.         Module["HEAPF32"] = HEAPF32 = new Float32Array(buffer);
  1079.         Module["HEAPF64"] = HEAPF64 = new Float64Array(buffer)
  1080.     }
  1081.     var STATIC_BASE, STATICTOP, staticSealed;
  1082.     var STACK_BASE, STACKTOP, STACK_MAX;
  1083.     var DYNAMIC_BASE, DYNAMICTOP_PTR;
  1084.     STATIC_BASE = STATICTOP = STACK_BASE = STACKTOP = STACK_MAX = DYNAMIC_BASE = DYNAMICTOP_PTR = 0;
  1085.     staticSealed = false;
  1086.  
  1087.     function abortOnCannotGrowMemory() {
  1088.         abort("Cannot enlarge memory arrays. Either (1) compile with  -s TOTAL_MEMORY=X  with X higher than the current value " + TOTAL_MEMORY + ", (2) compile with  -s ALLOW_MEMORY_GROWTH=1  which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with  -s ABORTING_MALLOC=0 ")
  1089.     }
  1090.  
  1091.     function enlargeMemory() {
  1092.         abortOnCannotGrowMemory()
  1093.     }
  1094.     var TOTAL_STACK = Module["TOTAL_STACK"] || 5242880;
  1095.     var TOTAL_MEMORY = Module["TOTAL_MEMORY"] || 67108864;
  1096.     if (TOTAL_MEMORY < TOTAL_STACK) Module.printErr("TOTAL_MEMORY should be larger than TOTAL_STACK , was " + TOTAL_MEMORY + "! (TOTAL_STACK=" + TOTAL_STACK + ")");
  1097.     if (Module["buffer"]) {
  1098.         buffer = Module["buffer"]
  1099.     } else {
  1100.         if (typeof WebAssembly === "object" && typeof WebAssembly.Memory === "function") {
  1101.             Module["wasmMemory"] = new WebAssembly.Memory({
  1102.                 "initial": TOTAL_MEMORY / WASM_PAGE_SIZE,
  1103.                 "maximum": TOTAL_MEMORY / WASM_PAGE_SIZE
  1104.             });
  1105.             buffer = Module["wasmMemory"].buffer
  1106.         } else {
  1107.             buffer = new ArrayBuffer(TOTAL_MEMORY)
  1108.         }
  1109.     }
  1110.     updateGlobalBufferViews();
  1111.  
  1112.     function getTotalMemory() {
  1113.         return TOTAL_MEMORY
  1114.     }
  1115.     HEAP32[0] = 1668509029;
  1116.     HEAP16[1] = 25459;
  1117.     if (HEAPU8[2] !== 115 || HEAPU8[3] !== 99) throw "Runtime error: expected the system to be little-endian!";
  1118.     Module["HEAP"] = HEAP;
  1119.     Module["buffer"] = buffer;
  1120.     Module["HEAP8"] = HEAP8;
  1121.     Module["HEAP16"] = HEAP16;
  1122.     Module["HEAP32"] = HEAP32;
  1123.     Module["HEAPU8"] = HEAPU8;
  1124.     Module["HEAPU16"] = HEAPU16;
  1125.     Module["HEAPU32"] = HEAPU32;
  1126.     Module["HEAPF32"] = HEAPF32;
  1127.     Module["HEAPF64"] = HEAPF64;
  1128.  
  1129.     function callRuntimeCallbacks(callbacks) {
  1130.         while (callbacks.length > 0) {
  1131.             var callback = callbacks.shift();
  1132.             if (typeof callback == "function") {
  1133.                 callback();
  1134.                 continue
  1135.             }
  1136.             var func = callback.func;
  1137.             if (typeof func === "number") {
  1138.                 if (callback.arg === undefined) {
  1139.                     Module["dynCall_v"](func)
  1140.                 } else {
  1141.                     Module["dynCall_vi"](func, callback.arg)
  1142.                 }
  1143.             } else {
  1144.                 func(callback.arg === undefined ? null : callback.arg)
  1145.             }
  1146.         }
  1147.     }
  1148.     var _28df220d = [];
  1149.     var _23924693 = [];
  1150.     var _3ffafdb5 = [];
  1151.     var _66c070c = [];
  1152.     var _5c02330a = [];
  1153.     var runtimeInitialized = false;
  1154.     var runtimeExited = false;
  1155.  
  1156.     function preRun() {
  1157.         if (Module["preRun"]) {
  1158.             if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]];
  1159.             while (Module["preRun"].length) {
  1160.                 addOnPreRun(Module["preRun"].shift())
  1161.             }
  1162.         }
  1163.         callRuntimeCallbacks(_28df220d)
  1164.     }
  1165.  
  1166.     function ensureInitRuntime() {
  1167.         if (runtimeInitialized) return;
  1168.         runtimeInitialized = true;
  1169.         callRuntimeCallbacks(_23924693)
  1170.     }
  1171.  
  1172.     function preMain() {
  1173.         callRuntimeCallbacks(_3ffafdb5)
  1174.     }
  1175.  
  1176.     function exitRuntime() {
  1177.         callRuntimeCallbacks(_66c070c);
  1178.         runtimeExited = true
  1179.     }
  1180.  
  1181.     function postRun() {
  1182.         if (Module["postRun"]) {
  1183.             if (typeof Module["postRun"] == "function") Module["postRun"] = [Module["postRun"]];
  1184.             while (Module["postRun"].length) {
  1185.                 addOnPostRun(Module["postRun"].shift())
  1186.             }
  1187.         }
  1188.         callRuntimeCallbacks(_5c02330a)
  1189.     }
  1190.  
  1191.     function addOnPreRun(cb) {
  1192.         _28df220d.unshift(cb)
  1193.     }
  1194.     Module["addOnPreRun"] = addOnPreRun;
  1195.  
  1196.     function addOnInit(cb) {
  1197.         _23924693.unshift(cb)
  1198.     }
  1199.     Module["addOnInit"] = addOnInit;
  1200.  
  1201.     function addOnPreMain(cb) {
  1202.         _3ffafdb5.unshift(cb)
  1203.     }
  1204.     Module["addOnPreMain"] = addOnPreMain;
  1205.  
  1206.     function addOnExit(cb) {
  1207.         _66c070c.unshift(cb)
  1208.     }
  1209.     Module["addOnExit"] = addOnExit;
  1210.  
  1211.     function addOnPostRun(cb) {
  1212.         _5c02330a.unshift(cb)
  1213.     }
  1214.     Module["addOnPostRun"] = addOnPostRun;
  1215.  
  1216.     function intArrayFromString(stringy, dontAddNull, length) {
  1217.         var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;
  1218.         var u8array = new Array(len);
  1219.         var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);
  1220.         if (dontAddNull) u8array.length = numBytesWritten;
  1221.         return u8array
  1222.     }
  1223.     Module["intArrayFromString"] = intArrayFromString;
  1224.  
  1225.     function intArrayToString(array) {
  1226.         var ret = [];
  1227.         for (var i = 0; i < array.length; i++) {
  1228.             var chr = array[i];
  1229.             if (chr > 255) {
  1230.                 chr &= 255
  1231.             }
  1232.             ret.push(String.fromCharCode(chr))
  1233.         }
  1234.         return ret.join("")
  1235.     }
  1236.     Module["intArrayToString"] = intArrayToString;
  1237.  
  1238.     function writeStringToMemory(string, buffer, dontAddNull) {
  1239.         Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!");
  1240.         var lastChar, end;
  1241.         if (dontAddNull) {
  1242.             end = buffer + lengthBytesUTF8(string);
  1243.             lastChar = HEAP8[end]
  1244.         }
  1245.         stringToUTF8(string, buffer, Infinity);
  1246.         if (dontAddNull) HEAP8[end] = lastChar
  1247.     }
  1248.     Module["writeStringToMemory"] = writeStringToMemory;
  1249.  
  1250.     function writeArrayToMemory(array, buffer) {
  1251.         HEAP8.set(array, buffer)
  1252.     }
  1253.     Module["writeArrayToMemory"] = writeArrayToMemory;
  1254.  
  1255.     function writeAsciiToMemory(str, buffer, dontAddNull) {
  1256.         for (var i = 0; i < str.length; ++i) {
  1257.             HEAP8[buffer++ >> 0] = str.charCodeAt(i)
  1258.         }
  1259.         if (!dontAddNull) HEAP8[buffer >> 0] = 0
  1260.     }
  1261.     Module["writeAsciiToMemory"] = writeAsciiToMemory;
  1262.     if (!Math["imul"] || Math["imul"](4294967295, 5) !== -5) Math["imul"] = function imul(a, b) {
  1263.         var ah = a >>> 16;
  1264.         var al = a & 65535;
  1265.         var bh = b >>> 16;
  1266.         var bl = b & 65535;
  1267.         return al * bl + (ah * bl + al * bh << 16) | 0
  1268.     };
  1269.     Math.imul = Math["imul"];
  1270.     if (!Math["fround"]) {
  1271.         var froundBuffer = new Float32Array(1);
  1272.         Math["fround"] = (function (x) {
  1273.             froundBuffer[0] = x;
  1274.             return froundBuffer[0]
  1275.         })
  1276.     }
  1277.     Math.fround = Math["fround"];
  1278.     if (!Math["clz32"]) Math["clz32"] = (function (x) {
  1279.         x = x >>> 0;
  1280.         for (var i = 0; i < 32; i++) {
  1281.             if (x & 1 << 31 - i) return i
  1282.         }
  1283.         return 32
  1284.     });
  1285.     Math.clz32 = Math["clz32"];
  1286.     if (!Math["trunc"]) Math["trunc"] = (function (x) {
  1287.         return x < 0 ? Math.ceil(x) : Math.floor(x)
  1288.     });
  1289.     Math.trunc = Math["trunc"];
  1290.     var Math_abs = Math.abs;
  1291.     var Math_cos = Math.cos;
  1292.     var Math_sin = Math.sin;
  1293.     var Math_tan = Math.tan;
  1294.     var Math_acos = Math.acos;
  1295.     var Math_asin = Math.asin;
  1296.     var Math_atan = Math.atan;
  1297.     var Math_atan2 = Math.atan2;
  1298.     var Math_exp = Math.exp;
  1299.     var Math_log = Math.log;
  1300.     var Math_sqrt = Math.sqrt;
  1301.     var Math_ceil = Math.ceil;
  1302.     var Math_floor = Math.floor;
  1303.     var Math_pow = Math.pow;
  1304.     var Math_imul = Math.imul;
  1305.     var Math_fround = Math.fround;
  1306.     var Math_round = Math.round;
  1307.     var Math_min = Math.min;
  1308.     var Math_clz32 = Math.clz32;
  1309.     var Math_trunc = Math.trunc;
  1310.     var runDependencies = 0;
  1311.     var runDependencyWatcher = null;
  1312.     var dependenciesFulfilled = null;
  1313.  
  1314.     function getUniqueRunDependency(id) {
  1315.         return id
  1316.     }
  1317.  
  1318.     function addRunDependency(id) {
  1319.         runDependencies++;
  1320.         if (Module["monitorRunDependencies"]) {
  1321.             Module["monitorRunDependencies"](runDependencies)
  1322.         }
  1323.     }
  1324.     Module["addRunDependency"] = addRunDependency;
  1325.  
  1326.     function removeRunDependency(id) {
  1327.         runDependencies--;
  1328.         if (Module["monitorRunDependencies"]) {
  1329.             Module["monitorRunDependencies"](runDependencies)
  1330.         }
  1331.         if (runDependencies == 0) {
  1332.             if (runDependencyWatcher !== null) {
  1333.                 clearInterval(runDependencyWatcher);
  1334.                 runDependencyWatcher = null
  1335.             }
  1336.             if (dependenciesFulfilled) {
  1337.                 var callback = dependenciesFulfilled;
  1338.                 dependenciesFulfilled = null;
  1339.                 callback()
  1340.             }
  1341.         }
  1342.     }
  1343.     Module["removeRunDependency"] = removeRunDependency;
  1344.     Module["preloadedImages"] = {};
  1345.     Module["preloadedAudios"] = {};
  1346.     var memoryInitializer = null;
  1347.  
  1348.     function integrateWasmJS(Module) {
  1349.         var method = Module["wasmJSMethod"] || "native-wasm";
  1350.         Module["wasmJSMethod"] = method;
  1351.         var wasmTextFile = Module["wasmTextFile"] || "build_b1be5c3dfa7fd6366ee111f1e0048680dd1d3eba.wasm.wast";
  1352.         var wasmBinaryFile = Module["wasmBinaryFile"] || "build_b1be5c3dfa7fd6366ee111f1e0048680dd1d3eba.wasm.wasm";
  1353.         var asmjsCodeFile = Module["asmjsCodeFile"] || "build_b1be5c3dfa7fd6366ee111f1e0048680dd1d3eba.wasm.temp.asm.js";
  1354.         var wasmPageSize = 64 * 1024;
  1355.         var asm2wasmImports = {
  1356.             "f64-rem": (function (x, y) {
  1357.                 return x % y
  1358.             }),
  1359.             "f64-to-int": (function (x) {
  1360.                 return x | 0
  1361.             }),
  1362.             "i32s-div": (function (x, y) {
  1363.                 return (x | 0) / (y | 0) | 0
  1364.             }),
  1365.             "i32u-div": (function (x, y) {
  1366.                 return (x >>> 0) / (y >>> 0) >>> 0
  1367.             }),
  1368.             "i32s-rem": (function (x, y) {
  1369.                 return (x | 0) % (y | 0) | 0
  1370.             }),
  1371.             "i32u-rem": (function (x, y) {
  1372.                 return (x >>> 0) % (y >>> 0) >>> 0
  1373.             }),
  1374.             "debugger": (function () {
  1375.                 debugger
  1376.             })
  1377.         };
  1378.         var info = {
  1379.             "global": null,
  1380.             "env": null,
  1381.             "asm2wasm": asm2wasmImports,
  1382.             "parent": Module
  1383.         };
  1384.         var exports = null;
  1385.  
  1386.         function lookupImport(mod, base) {
  1387.             var lookup = info;
  1388.             if (mod.indexOf(".") < 0) {
  1389.                 lookup = (lookup || {})[mod]
  1390.             } else {
  1391.                 var parts = mod.split(".");
  1392.                 lookup = (lookup || {})[parts[0]];
  1393.                 lookup = (lookup || {})[parts[1]]
  1394.             }
  1395.             if (base) {
  1396.                 lookup = (lookup || {})[base]
  1397.             }
  1398.             if (lookup === undefined) {
  1399.                 abort("bad lookupImport to (" + mod + ")." + base)
  1400.             }
  1401.             return lookup
  1402.         }
  1403.  
  1404.         function mergeMemory(newBuffer) {
  1405.             var oldBuffer = Module["buffer"];
  1406.             if (newBuffer.byteLength < oldBuffer.byteLength) {
  1407.                 Module["printErr"]("the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here")
  1408.             }
  1409.             var oldView = new Int8Array(oldBuffer);
  1410.             var newView = new Int8Array(newBuffer);
  1411.             if (!memoryInitializer) {
  1412.                 oldView.set(newView.subarray(Module["STATIC_BASE"], Module["STATIC_BASE"] + Module["STATIC_BUMP"]), Module["STATIC_BASE"])
  1413.             }
  1414.             newView.set(oldView);
  1415.             updateGlobalBuffer(newBuffer);
  1416.             updateGlobalBufferViews()
  1417.         }
  1418.         var WasmTypes = {
  1419.             none: 0,
  1420.             i32: 1,
  1421.             i64: 2,
  1422.             f32: 3,
  1423.             f64: 4
  1424.         };
  1425.  
  1426.         function fixImports(imports) {
  1427.             if (!0) return imports;
  1428.             var ret = {};
  1429.             for (var i in imports) {
  1430.                 var fixed = i;
  1431.                 if (fixed[0] == "_") fixed = fixed.substr(1);
  1432.                 ret[fixed] = imports[i]
  1433.             }
  1434.             return ret
  1435.         }
  1436.  
  1437.         function getBinary() {
  1438.             var binary;
  1439.             if (Module["wasmBinary"]) {
  1440.                 binary = Module["wasmBinary"];
  1441.                 binary = new Uint8Array(binary)
  1442.             } else if (Module["readBinary"]) {
  1443.                 binary = Module["readBinary"](wasmBinaryFile)
  1444.             } else {
  1445.                 throw "on the web ,  we need the wasm binary to be preloaded and set on Module['wasmBinary']. emcc.py will do that for you when generating HTML (but not JS)"
  1446.             }
  1447.             return binary
  1448.         }
  1449.  
  1450.         function getBinaryPromise() {
  1451.             if (!Module["wasmBinary"] && typeof fetch === "function") {
  1452.                 return fetch(wasmBinaryFile).then((function (response) {
  1453.                     return response.arrayBuffer()
  1454.                 }))
  1455.             }
  1456.             return new Promise((function (resolve, reject) {
  1457.                 resolve(getBinary())
  1458.             }))
  1459.         }
  1460.  
  1461.         function doJustAsm(global, env, providedBuffer) {
  1462.             if (typeof Module["asm"] !== "function" || Module["asm"] === methodHandler) {
  1463.                 if (!Module["asmPreload"]) {
  1464.                     eval(Module["read"](asmjsCodeFile))
  1465.                 } else {
  1466.                     Module["asm"] = Module["asmPreload"]
  1467.                 }
  1468.             }
  1469.             if (typeof Module["asm"] !== "function") {
  1470.                 Module["printErr"]("asm evalling did not set the module properly");
  1471.                 return false
  1472.             }
  1473.             return Module["asm"](global, env, providedBuffer)
  1474.         }
  1475.  
  1476.         function doNativeWasm(global, env, providedBuffer) {
  1477.             if (typeof WebAssembly !== "object") {
  1478.                 Module["printErr"]("no native wasm support detected");
  1479.                 return false
  1480.             }
  1481.             if (!(Module["wasmMemory"] instanceof WebAssembly.Memory)) {
  1482.                 Module["printErr"]("no native wasm Memory in use");
  1483.                 return false
  1484.             }
  1485.             env["memory"] = Module["wasmMemory"];
  1486.             info["global"] = {
  1487.                 "NaN": NaN,
  1488.                 "Infinity": Infinity
  1489.             };
  1490.             info["global.Math"] = global.Math;
  1491.             info["env"] = env;
  1492.  
  1493.             function receiveInstance(instance) {
  1494.                 exports = instance.exports;
  1495.                 if (exports.memory) mergeMemory(exports.memory);
  1496.                 Module["asm"] = exports;
  1497.                 Module["usingWasm"] = true;
  1498.                 removeRunDependency("wasm-instantiate")
  1499.             }
  1500.             addRunDependency("wasm-instantiate");
  1501.             if (Module["instantiateWasm"]) {
  1502.                 try {
  1503.                     return Module["instantiateWasm"](info, receiveInstance)
  1504.                 } catch (e) {
  1505.                     Module["printErr"]("Module.instantiateWasm callback failed with error: " + e);
  1506.                     return false
  1507.                 }
  1508.             }
  1509.             Module["printErr"]("asynchronously preparing wasm");
  1510.             getBinaryPromise().then((function (binary) {
  1511.                 return WebAssembly.instantiate(binary, info)
  1512.             })).then((function (output) {
  1513.                 receiveInstance(output.instance)
  1514.             })).catch((function (reason) {
  1515.                 Module["printErr"]("failed to asynchronously prepare wasm: " + reason);
  1516.                 Module["quit"](1, reason)
  1517.             }));
  1518.             return {}
  1519.         }
  1520.  
  1521.         function doWasmPolyfill(global, env, providedBuffer, method) {
  1522.             if (typeof WasmJS !== "function") {
  1523.                 Module["printErr"]("WasmJS not detected - polyfill not bundled?");
  1524.                 return false
  1525.             }
  1526.             var wasmJS = WasmJS({});
  1527.             wasmJS["outside"] = Module;
  1528.             wasmJS["info"] = info;
  1529.             wasmJS["lookupImport"] = lookupImport;
  1530.             assert(providedBuffer === Module["buffer"]);
  1531.             info.global = global;
  1532.             info.env = env;
  1533.             assert(providedBuffer === Module["buffer"]);
  1534.             env["memory"] = providedBuffer;
  1535.             assert(env["memory"] instanceof ArrayBuffer);
  1536.             wasmJS["providedTotalMemory"] = Module["buffer"].byteLength;
  1537.             var code;
  1538.             if (method === "interpret-binary") {
  1539.                 code = getBinary()
  1540.             } else {
  1541.                 code = Module["read"](method == "interpret-asm2wasm" ? asmjsCodeFile : wasmTextFile)
  1542.             }
  1543.             var temp;
  1544.             if (method == "interpret-asm2wasm") {
  1545.                 temp = wasmJS["_6849a7e7"](code.length + 1);
  1546.                 wasmJS["writeAsciiToMemory"](code, temp);
  1547.                 wasmJS["_16a01314"](temp)
  1548.             } else if (method === "interpret-s-expr") {
  1549.                 temp = wasmJS["_6849a7e7"](code.length + 1);
  1550.                 wasmJS["writeAsciiToMemory"](code, temp);
  1551.                 wasmJS["_12102ffe"](temp)
  1552.             } else if (method === "interpret-binary") {
  1553.                 temp = wasmJS["_6849a7e7"](code.length);
  1554.                 wasmJS["HEAPU8"].set(code, temp);
  1555.                 wasmJS["_2919e225"](temp, code.length)
  1556.             } else {
  1557.                 throw "what? " + method
  1558.             }
  1559.             wasmJS["_71a9251a"](temp);
  1560.             wasmJS["_26ed7474"](temp);
  1561.             if (Module["newBuffer"]) {
  1562.                 mergeMemory(Module["newBuffer"]);
  1563.                 Module["newBuffer"] = null
  1564.             }
  1565.             exports = wasmJS["asmExports"];
  1566.             return exports
  1567.         }
  1568.         Module["asmPreload"] = Module["asm"];
  1569.         Module["reallocBuffer"] = (function (size) {
  1570.             var PAGE_MULTIPLE = Module["usingWasm"] ? WASM_PAGE_SIZE : ASMJS_PAGE_SIZE;
  1571.             size = alignUp(size, PAGE_MULTIPLE);
  1572.             var old = Module["buffer"];
  1573.             var oldSize = old.byteLength;
  1574.             if (Module["usingWasm"]) {
  1575.                 try {
  1576.                     var result = Module["wasmMemory"].grow((size - oldSize) / wasmPageSize);
  1577.                     if (result !== (-1 | 0)) {
  1578.                         return Module["buffer"] = Module["wasmMemory"].buffer
  1579.                     } else {
  1580.                         return null
  1581.                     }
  1582.                 } catch (e) {
  1583.                     return null
  1584.                 }
  1585.             } else {
  1586.                 exports["_1324baf1"]((size - oldSize) / wasmPageSize);
  1587.                 return Module["buffer"] !== old ? Module["buffer"] : null
  1588.             }
  1589.         });
  1590.         Module["asm"] = (function (global, env, providedBuffer) {
  1591.             global = fixImports(global);
  1592.             env = fixImports(env);
  1593.             if (!env["table"]) {
  1594.                 var TABLE_SIZE = Module["wasmTableSize"];
  1595.                 if (TABLE_SIZE === undefined) TABLE_SIZE = 1024;
  1596.                 var MAX_TABLE_SIZE = Module["wasmMaxTableSize"];
  1597.                 if (typeof WebAssembly === "object" && typeof WebAssembly.Table === "function") {
  1598.                     if (MAX_TABLE_SIZE !== undefined) {
  1599.                         env["table"] = new WebAssembly.Table({
  1600.                             "initial": TABLE_SIZE,
  1601.                             "maximum": MAX_TABLE_SIZE,
  1602.                             "element": "anyfunc"
  1603.                         })
  1604.                     } else {
  1605.                         env["table"] = new WebAssembly.Table({
  1606.                             "initial": TABLE_SIZE,
  1607.                             element: "anyfunc"
  1608.                         })
  1609.                     }
  1610.                 } else {
  1611.                     env["table"] = new Array(TABLE_SIZE)
  1612.                 }
  1613.                 Module["wasmTable"] = env["table"]
  1614.             }
  1615.             if (!env["memoryBase"]) {
  1616.                 env["memoryBase"] = Module["STATIC_BASE"]
  1617.             }
  1618.             if (!env["tableBase"]) {
  1619.                 env["tableBase"] = 0
  1620.             }
  1621.             var exports;
  1622.             var methods = method.split(", ");
  1623.             for (var i = 0; i < methods.length; i++) {
  1624.                 var curr = methods[i];
  1625.                 Module["printErr"]("trying binaryen method: " + curr);
  1626.                 if (curr === "native-wasm") {
  1627.                     if (exports = doNativeWasm(global, env, providedBuffer)) break
  1628.                 } else if (curr === "asmjs") {
  1629.                     if (exports = doJustAsm(global, env, providedBuffer)) break
  1630.                 } else if (curr === "interpret-asm2wasm" || curr === "interpret-s-expr" || curr === "interpret-binary") {
  1631.                     if (exports = doWasmPolyfill(global, env, providedBuffer, curr)) break
  1632.                 } else {
  1633.                     throw "bad method: " + curr
  1634.                 }
  1635.             }
  1636.             if (!exports) throw "no binaryen method succeeded. consider enabling more options, like interpreting, if you want that: https://github.com/kripken/emscripten/wiki/WebAssembly#binaryen-methods";
  1637.             Module["printErr"]("binaryen method succeeded.");
  1638.             return exports
  1639.         });
  1640.         var methodHandler = Module["asm"]
  1641.     }
  1642.     integrateWasmJS(Module);
  1643.     var ASM_CONSTS = [(function ($0) {
  1644.         {
  1645.             cp5.contexts[$0] = null
  1646.         }
  1647.     }), (function ($0) {
  1648.         {
  1649.             if (window["setLoadingStatus"]) window["setLoadingStatus"](UTF8ToString($0))
  1650.         }
  1651.     }), (function ($0, $1, $2) {
  1652.         {
  1653.             var w = cp5.sockets[$0];
  1654.             if (w.readyState != 1) return 0;
  1655.             try {
  1656.                 w.send(HEAP8.subarray($1, $1 + $2))
  1657.             } catch (e) {
  1658.                 return 0
  1659.             }
  1660.             return 1
  1661.         }
  1662.     }), (function () {
  1663.         {
  1664.             return window.navigator.getGamepads && window.navigator.getGamepads()[0] != null && window.navigator.getGamepads()[0]["mapping"] == "standard"
  1665.         }
  1666.     }), (function () {
  1667.         {
  1668.             setTimeout((function () {
  1669.                 window.location.reload(true)
  1670.             }), 100)
  1671.         }
  1672.     }), (function () {
  1673.         {
  1674.             return "google_ad_client" in window && typeof window.google_ad_client == "undefined"
  1675.         }
  1676.     }), (function ($0) {
  1677.         {
  1678.             return typeof window[UTF8ToString($0)] != "undefined"
  1679.         }
  1680.     }), (function ($0) {
  1681.         {
  1682.             return typeof process != UTF8ToString($0)
  1683.         }
  1684.     }), (function ($0) {
  1685.         {
  1686.             return allocateUTF8(UTF8ToString($0))
  1687.         }
  1688.     }), (function ($0) {
  1689.         {
  1690.             window.alert(UTF8ToString($0))
  1691.         }
  1692.     }), (function () {
  1693.         {
  1694.             var ctx = document.createElement("canvas").getContext("2d");
  1695.             for (var i = 0; i < cp5.contexts.length; ++i) {
  1696.                 if (cp5.contexts[i] != null) continue;
  1697.                 cp5.contexts[i] = ctx;
  1698.                 return i
  1699.             }
  1700.             cp5.contexts.push(ctx);
  1701.             return cp5.contexts.length - 1
  1702.         }
  1703.     }), (function ($0, $1, $2) {
  1704.         {
  1705.             var canvas = cp5.contexts[$0].canvas;
  1706.             HEAP32[$1 >> 2] = canvas.width;
  1707.             HEAP32[$2 >> 2] = canvas.height
  1708.         }
  1709.     }), (function ($0) {
  1710.         {
  1711.             cp5.contexts[$0].save()
  1712.         }
  1713.     }), (function ($0) {
  1714.         {
  1715.             cp5.contexts[$0].restore()
  1716.         }
  1717.     }), (function ($0) {
  1718.         {
  1719.             return !!window[UTF8ToString($0)]
  1720.         }
  1721.     }), (function () {
  1722.         {
  1723.             return document.getElementsByName("google_osd_static_frame").length > 0
  1724.         }
  1725.     }), (function ($0) {
  1726.         {
  1727.             delete window["acu" + $0]
  1728.         }
  1729.     }), (function ($0, $1, $2) {
  1730.         {
  1731.             var hasLoaded = false;
  1732.             var f = new Image;
  1733.             f.onload = (function () {
  1734.                 if (!window["acu" + $2]) return;
  1735.                 hasLoaded = true;
  1736.                 window["acu" + $2][$1] = false
  1737.             });
  1738.             f.onerror = (function () {
  1739.                 if (!window["acu" + $2]) return;
  1740.                 if (!hasLoaded) window["acu" + $2][$1] = true
  1741.             });
  1742.             f.src = window.location.protocol + UTF8ToString($0)
  1743.         }
  1744.     }), (function ($0, $1) {
  1745.         {
  1746.             return !window["acu" + $1] || !!window["acu" + $1][$0]
  1747.         }
  1748.     }), (function ($0, $1) {
  1749.         {
  1750.             return typeof window["acu" + $1][$0] == "undefined"
  1751.         }
  1752.     }), (function ($0) {
  1753.         {
  1754.             var s = document.querySelectorAll(UTF8ToString($0));
  1755.             for (var i = 0; i < s.length; ++i) {
  1756.                 if (s[i].clientHeight != 0) {
  1757.                     var c = s[i];
  1758.                     while (c && c != document.body) {
  1759.                         c = c.parentNode
  1760.                     }
  1761.                     return c == document.body
  1762.                 }
  1763.             }
  1764.             return false
  1765.         }
  1766.     }), (function () {
  1767.         {
  1768.             var v = window.location.href.split("?")[0];
  1769.             return allocateUTF8(v.slice(0, v.lastIndexOf("/")))
  1770.         }
  1771.     }), (function ($0, $1) {
  1772.         {
  1773.             var s0 = UTF8ToString($0);
  1774.             var s1 = UTF8ToString($1);
  1775.             var iframe = document.createElement("iframe");
  1776.             iframe.id = s0;
  1777.             iframe.name = "1.0.4;" + s1.length + ";" + s1;
  1778.             iframe.src = window.location.protocol + "//tpc.googlesyndication.com/safeframe/1-0-4/html/container.html#xpc=sf-gdn-exp-1&p=http%3A//diep.io";
  1779.             iframe.style.display = "none";
  1780.             document.body.appendChild(iframe)
  1781.         }
  1782.     }), (function () {
  1783.         {
  1784.             setTimeout((function () {
  1785.                 for (var i in window.localStorage) {
  1786.                     if (i.indexOf("acu$") == 0) {
  1787.                         delete window.localStorage[i]
  1788.                     }
  1789.                 }
  1790.             }), 15e3)
  1791.         }
  1792.     }), (function ($0) {
  1793.         {
  1794.             delete window.localStorage[UTF8ToString($0)]
  1795.         }
  1796.     }), (function ($0) {
  1797.         {
  1798.             var f = document.getElementById(UTF8ToString($0));
  1799.             if (f && f.parentNode) f.parentNode.removeChild(f)
  1800.         }
  1801.     }), (function ($0, $1, $2, $3) {
  1802.         {
  1803.             var a = document.getElementById(UTF8ToString($0));
  1804.             if (!a) return true;
  1805.             var key = UTF8ToString($1);
  1806.             if (!a[key]) return true;
  1807.             return a[key][UTF8ToString($2)] == UTF8ToString($3)
  1808.         }
  1809.     }), (function ($0) {
  1810.         {
  1811.             var fs = document.querySelectorAll(UTF8ToString($0));
  1812.             if (fs.length == 0) return true;
  1813.             for (var i = 0; i < fs.length; ++i) {
  1814.                 if (fs[i].src == "about:blank") return true
  1815.             }
  1816.             return false
  1817.         }
  1818.     }), (function ($0) {
  1819.         {
  1820.             if (!window["ga"]) return;
  1821.             window["ga"]("send", "event", "HasAdblock", $0 ? "Yes" : "No", {
  1822.                 nonInteraction: true
  1823.             })
  1824.         }
  1825.     }), (function ($0, $1, $2) {
  1826.         {
  1827.             window.localStorage[UTF8ToString($0)] = String.fromCharCode.apply(null, HEAPU8.subarray($1, $1 + $2))
  1828.         }
  1829.     }), (function ($0, $1) {
  1830.         {
  1831.             var str = window.localStorage[UTF8ToString($0)];
  1832.             if (!str) str = "";
  1833.             var arr = _6849a7e7(str.length);
  1834.             HEAPU32[$1 >> 2] = str.length;
  1835.             for (var i = 0; i < str.length; ++i) {
  1836.                 HEAPU8[arr + i] = str.charCodeAt(i)
  1837.             }
  1838.             return arr
  1839.         }
  1840.     }), (function ($0) {
  1841.         {
  1842.             var str = UTF8ToString($0);
  1843.             setTimeout(reload(str), 1)
  1844.         }
  1845.     }), (function () {
  1846.         {
  1847.             alert("Invalid party ID")
  1848.         }
  1849.     }), (function () {
  1850.         {
  1851.             window.location.hash = ""
  1852.         }
  1853.     }), (function ($0) {
  1854.         {
  1855.             var axes = window.navigator.getGamepads()[0]["axes"];
  1856.             if ($0 >= axes.length) return 0;
  1857.             return axes[$0]
  1858.         }
  1859.     }), (function ($0) {
  1860.         {
  1861.             var buttons = window.navigator.getGamepads()[0]["buttons"];
  1862.             if ($0 >= buttons.length) return false;
  1863.             return buttons[$0]["pressed"]
  1864.         }
  1865.     }), (function () {
  1866.         {
  1867.             if (!document.fullscreenElement && !document.webkitFullscreenElement && !document.mozFullscreenElement) {
  1868.                 var e = document.body;
  1869.                 if (!e) return;
  1870.                 if (e.requestFullscreen) e.requestFullscreen();
  1871.                 else if (e.webkitRequestFullscreen) e.webkitRequestFullscreen();
  1872.                 else if (e.mozRequestFullScreen) e.mozRequestFullScreen()
  1873.             } else if (document.exitFullscreen) {
  1874.                 document.exitFullscreen()
  1875.             } else if (document.mozCancelFullScreen) {
  1876.                 document.mozCancelFullScreen()
  1877.             } else if (document.webkitExitFullscreen) {
  1878.                 document.webkitExitFullscreen()
  1879.             }
  1880.         }
  1881.     }), (function ($0, $1) {
  1882.         {
  1883.             return $0 % $1
  1884.         }
  1885.     }), (function () {
  1886.         {
  1887.             if (!haveFontsLoaded) haveFontsLoaded = FontDetect.isFontLoaded("Ubuntu");
  1888.             return haveFontsLoaded
  1889.         }
  1890.     }), (function ($0, $1, $2, $3, $4, $5, $6) {
  1891.         {
  1892.             cp5.contexts[$0].setTransform($1, $2, $3, $4, $5, $6)
  1893.         }
  1894.     }), (function ($0, $1) {
  1895.         {
  1896.             return cp5.contexts[$0].measureText(UTF8ToString($1)).width
  1897.         }
  1898.     }), (function () {
  1899.         {
  1900.             return curScript != null ? allocateUTF8(curScript.innerHTML) : 0
  1901.         }
  1902.     }), (function ($0) {
  1903.         {
  1904.             return document.getElementById(UTF8ToString($0)) != null
  1905.         }
  1906.     }), (function ($0) {
  1907.         {
  1908.             return document.getElementsByClassName(UTF8ToString($0)).length > 0
  1909.         }
  1910.     }), (function () {
  1911.         {
  1912.             return allocateUTF8(document.body.innerHTML)
  1913.         }
  1914.     }), (function () {
  1915.         {
  1916.             return (function () {}).prototype.constructor.toString.apply(document.querySelector).indexOf(" return ") != -1
  1917.         }
  1918.     }), (function () {
  1919.         {
  1920.             return document.body.parentElement != document.documentElement
  1921.         }
  1922.     }), (function () {
  1923.         {
  1924.             return allocateUTF8(window.navigator.userAgent)
  1925.         }
  1926.     }), (function ($0, $1, $2) {
  1927.         {
  1928.             var s0 = UTF8ToString($0);
  1929.             return window[UTF8ToString($2)].prototype[s0][UTF8ToString($1)] != s0
  1930.         }
  1931.     }), (function () {
  1932.         {
  1933.             return allocateUTF8((function () {}).prototype.constructor.toString.apply(document.querySelector))
  1934.         }
  1935.     }), (function () {
  1936.         {
  1937.             return allocateUTF8((function () {}).prototype.constructor.toString.apply(CanvasRenderingContext2D.prototype.fillText))
  1938.         }
  1939.     }), (function () {
  1940.         {
  1941.             return allocateUTF8((function () {}).prototype.constructor.toString.apply(CanvasRenderingContext2D.prototype.strokeRect))
  1942.         }
  1943.     }), (function () {
  1944.         {
  1945.             return allocateUTF8((function () {}).prototype.constructor.toString.apply(CanvasRenderingContext2D.prototype.strokeText))
  1946.         }
  1947.     }), (function () {
  1948.         {
  1949.             return allocateUTF8((function () {}).prototype.constructor.toString.apply(CanvasRenderingContext2D.prototype.scale))
  1950.         }
  1951.     }), (function () {
  1952.         {
  1953.             return allocateUTF8((function () {}).prototype.constructor.toString.apply(CanvasRenderingContext2D.prototype.translate))
  1954.         }
  1955.     }), (function () {
  1956.         {
  1957.             return allocateUTF8((function () {}).prototype.constructor.toString.apply(CanvasRenderingContext2D.prototype.fillRect))
  1958.         }
  1959.     }), (function () {
  1960.         {
  1961.             return allocateUTF8((function () {}).prototype.constructor.toString.apply(CanvasRenderingContext2D.prototype.rotate))
  1962.         }
  1963.     }), (function () {
  1964.         {
  1965.             return allocateUTF8((function () {}).prototype.constructor.toString.apply(CanvasRenderingContext2D.prototype.getImageData))
  1966.         }
  1967.     }), (function ($0) {
  1968.         {
  1969.             return document.querySelector(UTF8ToString($0)) != null
  1970.         }
  1971.     }), (function () {
  1972.         {
  1973.             return Function.prototype.toString != originalFunctionToString
  1974.         }
  1975.     }), (function ($0) {
  1976.         {
  1977.             var r = UTF8ToString($0);
  1978.             return document.getElementById("canvas")[r] !== document.body[r]
  1979.         }
  1980.     }), (function ($0) {
  1981.         {
  1982.             return document.body[UTF8ToString($0)] !== void 0
  1983.         }
  1984.     }), (function ($0) {
  1985.         {
  1986.             return !!document.body[UTF8ToString($0)]
  1987.         }
  1988.     }), (function ($0, $1) {
  1989.         {
  1990.             var f = UTF8ToString($0);
  1991.             var d = document.createElement("div");
  1992.             if (!d[f]) return false;
  1993.             return d[f]() == document.body[UTF8ToString($1)]
  1994.         }
  1995.     }), (function ($0, $1) {
  1996.         {
  1997.             var s0 = UTF8ToString($0);
  1998.             var s1 = UTF8ToString($1);
  1999.             var t = window[s0][s1];
  2000.             window[s0][s1] = (function () {
  2001.                 return "abcdef"
  2002.             });
  2003.             var res = window[s0][s1].toString().indexOf("abcdef") == -1;
  2004.             window[s0][s1] = t;
  2005.             return res
  2006.         }
  2007.     }), (function () {
  2008.         {
  2009.             return curScript != null ? allocateUTF8(curScript.src) : 0
  2010.         }
  2011.     }), (function () {
  2012.         {
  2013.             document.getElementById("canvas").style.cursor = "default"
  2014.         }
  2015.     }), (function () {
  2016.         {
  2017.             document.getElementById("canvas").style.cursor = "text"
  2018.         }
  2019.     }), (function () {
  2020.         {
  2021.             document.getElementById("canvas").style.cursor = "pointer"
  2022.         }
  2023.     }), (function ($0) {
  2024.         {
  2025.             textInput.value = UTF8ToString($0)
  2026.         }
  2027.     }), (function () {
  2028.         {
  2029.             return allocateUTF8(textInput.value)
  2030.         }
  2031.     }), (function ($0, $1, $2, $3, $4) {
  2032.         {
  2033.             window["setTyping"](true);
  2034.             var padding = 5;
  2035.             textInputContainer.style.display = "block";
  2036.             textInputContainer.style.position = "absolute";
  2037.             textInputContainer.style.left = window["unscale"]($0) + "px";
  2038.             textInputContainer.style.top = window["unscale"]($1) + "px";
  2039.             textInput.style.width = window["unscale"]($2 * .96) + "px";
  2040.             textInput.style.height = window["unscale"]($3) + "px";
  2041.             textInput.style.lineHeight = window["unscale"]($3 * .9) + "px";
  2042.             textInput.style.fontSize = window["unscale"]($3 * .9) + "px";
  2043.             textInput.style.paddingLeft = padding + "px";
  2044.             textInput.style.paddingRight = padding + "px";
  2045.             textInput.disabled = !$4;
  2046.             textInput.focus()
  2047.         }
  2048.     }), (function () {
  2049.         {
  2050.             window["setTyping"](false);
  2051.             textInput.blur();
  2052.             textInput.value = "";
  2053.             textInputContainer.style.display = "none"
  2054.         }
  2055.     }), (function () {
  2056.         {
  2057.             var c = document.getElementById("canvas");
  2058.             if (document.activeElement && document.activeElement != c) document.activeElement.blur();
  2059.             c.focus()
  2060.         }
  2061.     }), (function () {
  2062.         {
  2063.             setTimeout(reload, 1)
  2064.         }
  2065.     }), (function () {
  2066.         {
  2067.             return allocateUTF8(window.location.search)
  2068.         }
  2069.     }), (function () {
  2070.         {
  2071.             return allocateUTF8(window.document.referrer)
  2072.         }
  2073.     }), (function () {
  2074.         {
  2075.             return window.top.location != window.location
  2076.         }
  2077.     }), (function () {
  2078.         {
  2079.             window.top.location = "http://diep.io/"
  2080.         }
  2081.     }), (function () {
  2082.         {
  2083.             window.top.location = "https://play.google.com/store/apps/details?id=com.miniclip.diep.io"
  2084.         }
  2085.     }), (function () {
  2086.         {
  2087.             window.top.location = "https://itunes.apple.com/app/diep.io/id1114751883?mt=8&at=1l3vajp"
  2088.         }
  2089.     }), (function () {
  2090.         {
  2091.             return typeof window.navigator.orientation != "undefined"
  2092.         }
  2093.     }), (function () {
  2094.         {
  2095.             return window.navigator.standalone
  2096.         }
  2097.     }), (function () {
  2098.         {
  2099.             return "onorientationchange" in window
  2100.         }
  2101.     }), (function ($0, $1, $2) {
  2102.         {
  2103.             var canvas = cp5.contexts[$0].canvas;
  2104.             canvas.width = $1;
  2105.             canvas.height = $2
  2106.         }
  2107.     }), (function ($0, $1) {
  2108.         {
  2109.             cp5.contexts[$0].globalAlpha *= $1
  2110.         }
  2111.     }), (function ($0) {
  2112.         {
  2113.             cp5.contexts[$0].beginPath()
  2114.         }
  2115.     }), (function ($0, $1, $2, $3) {
  2116.         {
  2117.             cp5.contexts[$0].fillStyle = "rgb(" + $1 + " ," + $2 + "," + $3 + ")"
  2118.         }
  2119.     }), (function ($0) {
  2120.         {
  2121.             cp5.contexts[$0].fill()
  2122.         }
  2123.     }), (function ($0) {
  2124.         {
  2125.             cp5.contexts[$0].setTransform(1, 0, 0, 1, 0, 0)
  2126.         }
  2127.     }), (function ($0, $1, $2) {
  2128.         {
  2129.             cp5.contexts[$0].moveTo($1, $2)
  2130.         }
  2131.     }), (function ($0, $1, $2) {
  2132.         {
  2133.             cp5.contexts[$0].lineTo($1, $2)
  2134.         }
  2135.     }), (function ($0) {
  2136.         {
  2137.             cp5.contexts[$0].closePath()
  2138.         }
  2139.     }), (function ($0) {
  2140.         {
  2141.             cp5.contexts[$0].lineJoin = "round"
  2142.         }
  2143.     }), (function ($0, $1, $2, $3) {
  2144.         {
  2145.             cp5.contexts[$0].strokeStyle = "rgb(" + $1 + "," + $2 + "," + $3 + ")"
  2146.         }
  2147.     }), (function ($0, $1) {
  2148.         {
  2149.             cp5.contexts[$0].lineWidth = $1
  2150.         }
  2151.     }), (function ($0, $1, $2, $3, $4) {
  2152.         {
  2153.             cp5.contexts[$0].setTransform($1, $2, $3, $4, 0, 0)
  2154.         }
  2155.     }), (function ($0) {
  2156.         {
  2157.             cp5.contexts[$0].stroke()
  2158.         }
  2159.     }), (function ($0, $1) {
  2160.         {
  2161.             cp5.contexts[$0].drawImage(cp5.contexts[$1].canvas, 0, 0)
  2162.         }
  2163.     }), (function ($0) {
  2164.         {
  2165.             window["acu" + $0] = []
  2166.         }
  2167.     }), (function () {
  2168.         {
  2169.             if (!localStorage["playwireAB"]) localStorage["playwireAB"] = Math.random();
  2170.             var player = document.getElementById("player");
  2171.             if (player && player.parentNode) player.parentNode.style.display = "none";
  2172.             var f = (function (playerName) {
  2173.                 console.log("Bolt loaded " + playerName);
  2174.                 if (playerName != "player") return;
  2175.                 var Bolt = window["Bolt"];
  2176.                 if (!Bolt) return;
  2177.                 Bolt["on"](playerName, Bolt["BOLT_AD_STARTED"], (function () {
  2178.                     console.log("Ad started")
  2179.                 }));
  2180.                 Bolt["on"](playerName, Bolt["BOLT_AD_ERROR"], (function () {
  2181.                     console.log("Ad error");
  2182.                     _3f64fe8a()
  2183.                 }));
  2184.                 Bolt["on"](playerName, Bolt["BOLT_AD_COMPLETE"], (function () {
  2185.                     console.log("Ad complete");
  2186.                     _3f64fe8a()
  2187.                 }))
  2188.             });
  2189.             window["onBoltLoaded"] = f
  2190.         }
  2191.     }), (function () {
  2192.         {
  2193.             var player = document.getElementById("player");
  2194.             if (player) {
  2195.                 player.innerHTML = "";
  2196.                 player.style.display = "none";
  2197.                 if (player.parentNode) player.parentNode.style.display = "none"
  2198.             }
  2199.         }
  2200.     }), (function () {
  2201.         {
  2202.             return allocateUTF8(window.location.hash)
  2203.         }
  2204.     }), (function ($0, $1) {
  2205.         {
  2206.             var requestID = $0;
  2207.             window["m28n"]["findServerPreference"](UTF8ToString($1), (function (err, servers) {
  2208.                 if (err || servers.length == 0) {
  2209.                     _3d7327d9(requestID, 0, 0, 0)
  2210.                 } else {
  2211.                     var server = servers[0];
  2212.                     var id = allocateUTF8(server["id"]);
  2213.                     var ipv4 = allocateUTF8(server["ipv4"]);
  2214.                     var ipv6 = allocateUTF8(server["ipv6"]);
  2215.                     _3d7327d9(requestID, id, ipv4, ipv6);
  2216.                     _71a9251a(id);
  2217.                     _71a9251a(ipv4);
  2218.                     _71a9251a(ipv6)
  2219.                 }
  2220.             }))
  2221.         }
  2222.     }), (function () {
  2223.         {
  2224.             return window.location.protocol == "https:"
  2225.         }
  2226.     }), (function ($0, $1) {
  2227.         {
  2228.             var requestID = $0;
  2229.             window["m28n"]["findServerByID"](UTF8ToString($1), (function (err, server) {
  2230.                 if (err || server == null) {
  2231.                     _3d7327d9(requestID, 0, 0, 0)
  2232.                 } else {
  2233.                     var id = allocateUTF8(server["id"]);
  2234.                     var ipv4 = allocateUTF8(server["ipv4"]);
  2235.                     var ipv6 = allocateUTF8(server["ipv6"]);
  2236.                     _3d7327d9(requestID, id, ipv4, ipv6);
  2237.                     _71a9251a(id);
  2238.                     _71a9251a(ipv4);
  2239.                     _71a9251a(ipv6)
  2240.                 }
  2241.             }))
  2242.         }
  2243.     }), (function ($0) {
  2244.         {
  2245.             cp5.contexts[$0].rect(0, 0, 1, 1)
  2246.         }
  2247.     }), (function ($0) {
  2248.         {
  2249.             cp5.contexts[$0].clip()
  2250.         }
  2251.     }), (function ($0) {
  2252.         {
  2253.             cp5.contexts[$0].fillRect(0, 0, 1, 1)
  2254.         }
  2255.     }), (function ($0, $1) {
  2256.         {
  2257.             cp5.contexts[$0].font = ($1 * 2048 | 0) / 2048 + "px Ubuntu"
  2258.         }
  2259.     }), (function ($0) {
  2260.         {
  2261.             cp5.contexts[$0].textBaseline = "middle"
  2262.         }
  2263.     }), (function ($0, $1) {
  2264.         {
  2265.             cp5.contexts[$0].globalAlpha = $1
  2266.         }
  2267.     }), (function ($0) {
  2268.         {
  2269.             var ctx = cp5.contexts[$0];
  2270.             var canvas = ctx.canvas;
  2271.             ctx.clearRect(0, 0, canvas.width, canvas.height)
  2272.         }
  2273.     }), (function ($0) {
  2274.         {
  2275.             var ws = new WebSocket(UTF8ToString($0));
  2276.             ws.binaryType = "arraybuffer";
  2277.             ws.events = [];
  2278.             ws.onopen = (function () {
  2279.                 ws.events.push([2, 0, 0]);
  2280.                 _6adaf797()
  2281.             });
  2282.             ws.onerror = (function () {
  2283.                 ws.events.push([3, 0, 0]);
  2284.                 _6adaf797()
  2285.             });
  2286.             ws.onclose = (function () {
  2287.                 ws.events.push([4, 0, 0]);
  2288.                 _6adaf797()
  2289.             });
  2290.             ws.onmessage = (function (e) {
  2291.                 var view = new Uint8Array(e.data);
  2292.                 var ptr = _6849a7e7(view.length);
  2293.                 writeArrayToMemory(view, ptr);
  2294.                 ws.events.push([1, ptr, view.length]);
  2295.                 _6adaf797()
  2296.             });
  2297.             for (var i = 0; i < cp5.sockets.length; ++i) {
  2298.                 if (cp5.sockets[i] != null) continue;
  2299.                 cp5.sockets[i] = ws;
  2300.                 return i
  2301.             }
  2302.             cp5.sockets.push(ws);
  2303.             return cp5.sockets.length - 1
  2304.         }
  2305.     }), (function ($0) {
  2306.         {
  2307.             var w = cp5.sockets[$0];
  2308.             w.onopen = w.onclose = w.onmessage = w.onerror = (function () {});
  2309.             for (var i = 0; i < w.events.length; ++i) _71a9251a(w.events[i][1]);
  2310.             w.events = null;
  2311.             try {
  2312.                 w.close()
  2313.             } catch (e) {}
  2314.             cp5.sockets[$0] = null
  2315.         }
  2316.     }), (function ($0, $1, $2) {
  2317.         {
  2318.             var w = cp5.sockets[$0];
  2319.             if (w.events.length == 0) return 0;
  2320.             var e = w.events.shift();
  2321.             HEAPU32[$1 >> 2] = e[1];
  2322.             HEAP32[$2 >> 2] = e[2];
  2323.             return e[0]
  2324.         }
  2325.     }), (function () {
  2326.         {
  2327.             return !!CanvasRenderingContext2D.prototype.createPattern
  2328.         }
  2329.     }), (function ($0, $1) {
  2330.         {
  2331.             var pattern = cp5.contexts[$0].createPattern(cp5.contexts[$1].canvas, null);
  2332.             for (var i = 0; i < cp5.patterns.length; ++i) {
  2333.                 if (cp5.patterns[i] == null) {
  2334.                     cp5.patterns[i] = pattern;
  2335.                     return i
  2336.                 }
  2337.             }
  2338.             cp5.patterns.push(pattern);
  2339.             return cp5.patterns.length - 1
  2340.         }
  2341.     }), (function ($0, $1, $2) {
  2342.         {
  2343.             var d = cp5.contexts[$0].getImageData($1, $2, 1, 1);
  2344.             return d.data[0] << 16 | d.data[1] << 8 | d.data[2]
  2345.         }
  2346.     }), (function () {
  2347.         {
  2348.             var a = document.getElementById("a");
  2349.             var aa = document.querySelectorAll(".aa");
  2350.             if (a) a.style.display = "none";
  2351.             for (var i = 0; i < aa.length; ++i) aa[i].style.display = "none";
  2352.             if (!window["googletag"]) return;
  2353.             if (!window["googletag"]["cmd"]) return;
  2354.             window["googletag"]["cmd"].push((function () {
  2355.                 if (!window["googletag"]["pubads"]) return;
  2356.                 if (!window["googletag"]["pubads"]().clear) return;
  2357.                 window["googletag"]["pubads"]().clear()
  2358.             }))
  2359.         }
  2360.     }), (function ($0, $1) {
  2361.         {
  2362.             var a = document.getElementById("a");
  2363.             var aa = document.getElementById(UTF8ToString($0));
  2364.             if (a) a.style.display = "block";
  2365.             if (aa) aa.style.display = "block";
  2366.             if (!window["googletag"]) return;
  2367.             if (!window["googletag"]["cmd"]) return;
  2368.             window["googletag"]["cmd"].push((function () {
  2369.                 if (!window["googletag"]["pubads"]) return;
  2370.                 if (!window["googletag"]["pubads"]()["refresh"]) return;
  2371.                 window["googletag"]["pubads"]()["refresh"](window[UTF8ToString($1)])
  2372.             }))
  2373.         }
  2374.     }), (function () {
  2375.         {
  2376.             var Bolt = window["Bolt"];
  2377.             if (!Bolt) return false;
  2378.             var player = document.getElementById("player");
  2379.             if (!player) return false;
  2380.             player.style.display = "block";
  2381.             if (player.parentNode) player.parentNode.style.display = "block";
  2382.             Bolt["renderPlayer"]("player");
  2383.             return true
  2384.         }
  2385.     }), (function () {
  2386.         {
  2387.             var a = document.getElementById("a");
  2388.             if (!a) return;
  2389.             a.style.display = "block"
  2390.         }
  2391.     }), (function () {
  2392.         {
  2393.             var a = document.getElementById("a");
  2394.             if (!a) return;
  2395.             a.style.display = "none"
  2396.         }
  2397.     }), (function ($0) {
  2398.         {
  2399.             cp5.contexts[$0].lineCap = "round"
  2400.         }
  2401.     }), (function ($0) {
  2402.         {
  2403.             cp5.contexts[$0].lineCap = "butt"
  2404.         }
  2405.     }), (function ($0) {
  2406.         {
  2407.             cp5.contexts[$0].lineCap = "square"
  2408.         }
  2409.     }), (function ($0, $1, $2, $3) {
  2410.         {
  2411.             var i = cp5.images[$0];
  2412.             HEAPU8[$1 >> 0] = i.isLoaded | 0;
  2413.             HEAP32[$2 >> 2] = i.width;
  2414.             HEAP32[$3 >> 2] = i.height
  2415.         }
  2416.     }), (function ($0) {
  2417.         {
  2418.             var img = new Image;
  2419.             img.isLoaded = false;
  2420.             img.onload = (function () {
  2421.                 img.isLoaded = true
  2422.             });
  2423.             img.src = UTF8ToString($0);
  2424.             for (var i = 0; i < cp5.images.length; ++i) {
  2425.                 if (cp5.images[i] != null) continue;
  2426.                 cp5.images[i] = img;
  2427.                 return i
  2428.             }
  2429.             cp5.images.push(img);
  2430.             return cp5.images.length - 1
  2431.         }
  2432.     }), (function ($0) {
  2433.         {
  2434.             window.location = UTF8ToString($0)
  2435.         }
  2436.     }), (function ($0) {
  2437.         {
  2438.             copyToKeyboard(UTF8ToString($0))
  2439.         }
  2440.     }), (function ($0, $1, $2, $3) {
  2441.         {
  2442.             cp5.contexts[$0].fillStyle = cp5.patterns[$1];
  2443.             cp5.contexts[$0].fillRect(0, 0, $2, $3)
  2444.         }
  2445.     }), (function ($0, $1, $2, $3, $4, $5) {
  2446.         {
  2447.             cp5.contexts[$0].drawImage(cp5.contexts[$1].canvas, $2, $3, $4, $5, 0, 0, 1, 1)
  2448.         }
  2449.     }), (function ($0, $1) {
  2450.         {
  2451.             var img = cp5.images[$1];
  2452.             if (!img.isLoaded) return;
  2453.             if (img.width == 0 || img.height == 0) return;
  2454.             cp5.contexts[$0].drawImage(img, 0, 0, img.width, img.height, 0, 0, 1, 1)
  2455.         }
  2456.     }), (function ($0, $1, $2, $3) {
  2457.         {
  2458.             cp5.contexts[$0].arc(0, 0, 1, $1, $2, $3)
  2459.         }
  2460.     }), (function ($0, $1) {
  2461.         {
  2462.             var canvas = cp5.contexts[$1].canvas;
  2463.             cp5.contexts[$0].drawImage(canvas, 0, 0, canvas.width, canvas.height, 0, 0, 1, 1)
  2464.         }
  2465.     }), (function ($0) {
  2466.         {
  2467.             cp5.contexts[$0].strokeRect(0, 0, 1, 1)
  2468.         }
  2469.     }), (function ($0) {
  2470.         {
  2471.             cp5.contexts[$0].lineJoin = "miter"
  2472.         }
  2473.     }), (function ($0, $1) {
  2474.         {
  2475.             cp5.contexts[$0].miterLimit = $1
  2476.         }
  2477.     }), (function ($0) {
  2478.         {
  2479.             cp5.contexts[$0].textBaseline = "alphabetic"
  2480.         }
  2481.     }), (function ($0, $1) {
  2482.         {
  2483.             cp5.contexts[$0].fillText(UTF8ToString($1), 0, 0)
  2484.         }
  2485.     }), (function ($0, $1) {
  2486.         {
  2487.             cp5.contexts[$0].strokeText(UTF8ToString($1), 0, 0)
  2488.         }
  2489.     }), (function ($0) {
  2490.         {
  2491.             cp5.patterns[$0] = null
  2492.         }
  2493.     }), (function ($0, $1) {
  2494.         {
  2495.             var elem = document.getElementById(UTF8ToString($0));
  2496.             if (elem == null) {
  2497.                 debugger;
  2498.                 return -1
  2499.             }
  2500.             var ctx = elem.getContext("2d", {
  2501.                 "alpha": !!$1
  2502.             });
  2503.             for (var i = 0; i < cp5.contexts.length; ++i) {
  2504.                 if (cp5.contexts[i] != null) continue;
  2505.                 cp5.contexts[i] = ctx;
  2506.                 return i
  2507.             }
  2508.             cp5.contexts.push(ctx);
  2509.             return cp5.contexts.length - 1
  2510.         }
  2511.     })];
  2512.  
  2513.     function _39ca9369(code, a0, a1, a2, a3) {
  2514.         return ASM_CONSTS[code](a0, a1, a2, a3)
  2515.     }
  2516.  
  2517.     function _516891bb(code, a0, a1) {
  2518.         return ASM_CONSTS[code](a0, a1)
  2519.     }
  2520.  
  2521.     function _1dcd48db(code, a0) {
  2522.         return ASM_CONSTS[code](a0)
  2523.     }
  2524.  
  2525.     function _727b9bd3(code) {
  2526.         return ASM_CONSTS[code]()
  2527.     }
  2528.  
  2529.     function _7e438ad8(code, a0, a1, a2, a3) {
  2530.         return ASM_CONSTS[code](a0, a1, a2, a3)
  2531.     }
  2532.  
  2533.     function _557fca7f(code, a0) {
  2534.         return ASM_CONSTS[code](a0)
  2535.     }
  2536.  
  2537.     function _3c858435(code, a0, a1) {
  2538.         return ASM_CONSTS[code](a0, a1)
  2539.     }
  2540.  
  2541.     function _19e2b3c3(code, a0, a1, a2) {
  2542.         return ASM_CONSTS[code](a0, a1, a2)
  2543.     }
  2544.  
  2545.     function _1ef9ed5a(code, a0, a1, a2, a3, a4) {
  2546.         return ASM_CONSTS[code](a0, a1, a2, a3, a4)
  2547.     }
  2548.  
  2549.     function _f545f51(code, a0, a1, a2) {
  2550.         return ASM_CONSTS[code](a0, a1, a2)
  2551.     }
  2552.  
  2553.     function _169de5e8(code) {
  2554.         return ASM_CONSTS[code]()
  2555.     }
  2556.  
  2557.     function _4ce4ca21(code, a0, a1, a2, a3, a4, a5) {
  2558.         return ASM_CONSTS[code](a0, a1, a2, a3, a4, a5)
  2559.     }
  2560.  
  2561.     function _b67b105(code, a0, a1, a2, a3, a4) {
  2562.         return ASM_CONSTS[code](a0, a1, a2, a3, a4)
  2563.     }
  2564.  
  2565.     function _48a0dd12(code, a0, a1, a2, a3) {
  2566.         return ASM_CONSTS[code](a0, a1, a2, a3)
  2567.     }
  2568.  
  2569.     function _1b1a303d(code, a0, a1) {
  2570.         return ASM_CONSTS[code](a0, a1)
  2571.     }
  2572.  
  2573.     function _552715ba(code, a0, a1, a2, a3, a4, a5, a6) {
  2574.         return ASM_CONSTS[code](a0, a1, a2, a3, a4, a5, a6)
  2575.     }
  2576.  
  2577.     function _4836a480(code, a0, a1) {
  2578.         return ASM_CONSTS[code](a0, a1)
  2579.     }
  2580.     STATIC_BASE = 1024;
  2581.     STATICTOP = STATIC_BASE + 183152;
  2582.     _23924693.push({
  2583.         func: (function () {
  2584.             _5d84cf6()
  2585.         })
  2586.     }, {
  2587.         func: (function () {
  2588.             _26ae057d()
  2589.         })
  2590.     });
  2591.     memoryInitializer = Module["wasmJSMethod"].indexOf("asmjs") >= 0 || Module["wasmJSMethod"].indexOf("interpret-asm2wasm") >= 0 ? "build_b1be5c3dfa7fd6366ee111f1e0048680dd1d3eba.wasm.js.mem" : null;
  2592.     var STATIC_BUMP = 183152;
  2593.     Module["STATIC_BASE"] = STATIC_BASE;
  2594.     Module["STATIC_BUMP"] = STATIC_BUMP;
  2595.     var tempDoublePtr = STATICTOP;
  2596.     STATICTOP += 16;
  2597.     Module["_345fbbaf"] = _345fbbaf;
  2598.  
  2599.     function _28ad6ddf(condition, filename, line, func) {
  2600.         ABORT = true;
  2601.         throw "Assertion failed: " + Pointer_stringify(condition) + ", at: " + [filename ? Pointer_stringify(filename) : "unknown filename", line, func ? Pointer_stringify(func) : "unknown function"] + " at " + stackTrace()
  2602.     }
  2603.     Module["_56beea56"] = _56beea56;
  2604.     Module["_680bbb40"] = _680bbb40;
  2605.     Module["_71ce5170"] = _71ce5170;
  2606.  
  2607.     function _5723d091(year) {
  2608.         return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)
  2609.     }
  2610.  
  2611.     function _45904969(array, index) {
  2612.         var sum = 0;
  2613.         for (var i = 0; i <= index; sum += array[i++]);
  2614.         return sum
  2615.     }
  2616.     var _5bd921b8 = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
  2617.     var _60617de1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
  2618.  
  2619.     function _8f28c82(date, days) {
  2620.         var newDate = new Date(date.getTime());
  2621.         while (days > 0) {
  2622.             var leap = _5723d091(newDate.getFullYear());
  2623.             var currentMonth = newDate.getMonth();
  2624.             var daysInCurrentMonth = (leap ? _5bd921b8 : _60617de1)[currentMonth];
  2625.             if (days > daysInCurrentMonth - newDate.getDate()) {
  2626.                 days -= daysInCurrentMonth - newDate.getDate() + 1;
  2627.                 newDate.setDate(1);
  2628.                 if (currentMonth < 11) {
  2629.                     newDate.setMonth(currentMonth + 1)
  2630.                 } else {
  2631.                     newDate.setMonth(0);
  2632.                     newDate.setFullYear(newDate.getFullYear() + 1)
  2633.                 }
  2634.             } else {
  2635.                 newDate.setDate(newDate.getDate() + days);
  2636.                 return newDate
  2637.             }
  2638.         }
  2639.         return newDate
  2640.     }
  2641.  
  2642.     function _41b75089(s, maxsize, format, tm) {
  2643.         var tm_zone = HEAP32[tm + 40 >> 2];
  2644.         var date = {
  2645.             tm_sec: HEAP32[tm >> 2],
  2646.             tm_min: HEAP32[tm + 4 >> 2],
  2647.             tm_hour: HEAP32[tm + 8 >> 2],
  2648.             tm_mday: HEAP32[tm + 12 >> 2],
  2649.             tm_mon: HEAP32[tm + 16 >> 2],
  2650.             tm_year: HEAP32[tm + 20 >> 2],
  2651.             tm_wday: HEAP32[tm + 24 >> 2],
  2652.             tm_yday: HEAP32[tm + 28 >> 2],
  2653.             tm_isdst: HEAP32[tm + 32 >> 2],
  2654.             tm_gmtoff: HEAP32[tm + 36 >> 2],
  2655.             tm_zone: tm_zone ? Pointer_stringify(tm_zone) : ""
  2656.         };
  2657.         var pattern = Pointer_stringify(format);
  2658.         var EXPANSION_RULES_1 = {
  2659.             "%c": "%a %b %d %H:%M:%S %Y",
  2660.             "%D": "%m/%d/%y",
  2661.             "%F": "%Y-%m-%d",
  2662.             "%h": "%b",
  2663.             "%r": "%I:%M:%S %p",
  2664.             "%R": "%H:%M",
  2665.             "%T": "%H:%M:%S",
  2666.             "%x": "%m/%d/%y",
  2667.             "%X": "%H:%M:%S"
  2668.         };
  2669.         for (var rule in EXPANSION_RULES_1) {
  2670.             pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_1[rule])
  2671.         }
  2672.         var WEEKDAYS = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
  2673.         var MONTHS = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
  2674.  
  2675.         function leadingSomething(value, digits, character) {
  2676.             var str = typeof value === "number" ? value.toString() : value || "";
  2677.             while (str.length < digits) {
  2678.                 str = character[0] + str
  2679.             }
  2680.             return str
  2681.         }
  2682.  
  2683.         function leadingNulls(value, digits) {
  2684.             return leadingSomething(value, digits, "0")
  2685.         }
  2686.  
  2687.         function compareByDay(date1, date2) {
  2688.             function sgn(value) {
  2689.                 return value < 0 ? -1 : value > 0 ? 1 : 0
  2690.             }
  2691.             var compare;
  2692.             if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {
  2693.                 if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) {
  2694.                     compare = sgn(date1.getDate() - date2.getDate())
  2695.                 }
  2696.             }
  2697.             return compare
  2698.         }
  2699.  
  2700.         function getFirstWeekStartDate(janFourth) {
  2701.             switch (janFourth.getDay()) {
  2702.                 case 0:
  2703.                     return new Date(janFourth.getFullYear() - 1, 11, 29);
  2704.                 case 1:
  2705.                     return janFourth;
  2706.                 case 2:
  2707.                     return new Date(janFourth.getFullYear(), 0, 3);
  2708.                 case 3:
  2709.                     return new Date(janFourth.getFullYear(), 0, 2);
  2710.                 case 4:
  2711.                     return new Date(janFourth.getFullYear(), 0, 1);
  2712.                 case 5:
  2713.                     return new Date(janFourth.getFullYear() - 1, 11, 31);
  2714.                 case 6:
  2715.                     return new Date(janFourth.getFullYear() - 1, 11, 30)
  2716.             }
  2717.         }
  2718.  
  2719.         function getWeekBasedYear(date) {
  2720.             var thisDate = _8f28c82(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);
  2721.             var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);
  2722.             var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);
  2723.             var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);
  2724.             var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);
  2725.             if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {
  2726.                 if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) {
  2727.                     return thisDate.getFullYear() + 1
  2728.                 } else {
  2729.                     return thisDate.getFullYear()
  2730.                 }
  2731.             } else {
  2732.                 return thisDate.getFullYear() - 1
  2733.             }
  2734.         }
  2735.         var EXPANSION_RULES_2 = {
  2736.             "%a": (function (date) {
  2737.                 return WEEKDAYS[date.tm_wday].substring(0, 3)
  2738.             }),
  2739.             "%A": (function (date) {
  2740.                 return WEEKDAYS[date.tm_wday]
  2741.             }),
  2742.             "%b": (function (date) {
  2743.                 return MONTHS[date.tm_mon].substring(0, 3)
  2744.             }),
  2745.             "%B": (function (date) {
  2746.                 return MONTHS[date.tm_mon]
  2747.             }),
  2748.             "%C": (function (date) {
  2749.                 var year = date.tm_year + 1900;
  2750.                 return leadingNulls(year / 100 | 0, 2)
  2751.             }),
  2752.             "%d": (function (date) {
  2753.                 return leadingNulls(date.tm_mday, 2)
  2754.             }),
  2755.             "%e": (function (date) {
  2756.                 return leadingSomething(date.tm_mday, 2, " ")
  2757.             }),
  2758.             "%g": (function (date) {
  2759.                 return getWeekBasedYear(date).toString().substring(2)
  2760.             }),
  2761.             "%G": (function (date) {
  2762.                 return getWeekBasedYear(date)
  2763.             }),
  2764.             "%H": (function (date) {
  2765.                 return leadingNulls(date.tm_hour, 2)
  2766.             }),
  2767.             "%I": (function (date) {
  2768.                 var twelveHour = date.tm_hour;
  2769.                 if (twelveHour == 0) twelveHour = 12;
  2770.                 else if (twelveHour > 12) twelveHour -= 12;
  2771.                 return leadingNulls(twelveHour, 2)
  2772.             }),
  2773.             "%j": (function (date) {
  2774.                 return leadingNulls(date.tm_mday + _45904969(_5723d091(date.tm_year + 1900) ? _5bd921b8 : _60617de1, date.tm_mon - 1), 3)
  2775.             }),
  2776.             "%m": (function (date) {
  2777.                 return leadingNulls(date.tm_mon + 1, 2)
  2778.             }),
  2779.             "%M": (function (date) {
  2780.                 return leadingNulls(date.tm_min, 2)
  2781.             }),
  2782.             "%n": (function () {
  2783.                 return "\n"
  2784.             }),
  2785.             "%p": (function (date) {
  2786.                 if (date.tm_hour >= 0 && date.tm_hour < 12) {
  2787.                     return "AM"
  2788.                 } else {
  2789.                     return "PM"
  2790.                 }
  2791.             }),
  2792.             "%S": (function (date) {
  2793.                 return leadingNulls(date.tm_sec, 2)
  2794.             }),
  2795.             "%t": (function () {
  2796.                 return "\t"
  2797.             }),
  2798.             "%u": (function (date) {
  2799.                 var day = new Date(date.tm_year + 1900, date.tm_mon + 1, date.tm_mday, 0, 0, 0, 0);
  2800.                 return day.getDay() || 7
  2801.             }),
  2802.             "%U": (function (date) {
  2803.                 var janFirst = new Date(date.tm_year + 1900, 0, 1);
  2804.                 var firstSunday = janFirst.getDay() === 0 ? janFirst : _8f28c82(janFirst, 7 - janFirst.getDay());
  2805.                 var endDate = new Date(date.tm_year + 1900, date.tm_mon, date.tm_mday);
  2806.                 if (compareByDay(firstSunday, endDate) < 0) {
  2807.                     var februaryFirstUntilEndMonth = _45904969(_5723d091(endDate.getFullYear()) ? _5bd921b8 : _60617de1, endDate.getMonth() - 1) - 31;
  2808.                     var firstSundayUntilEndJanuary = 31 - firstSunday.getDate();
  2809.                     var days = firstSundayUntilEndJanuary + februaryFirstUntilEndMonth + endDate.getDate();
  2810.                     return leadingNulls(Math.ceil(days / 7), 2)
  2811.                 }
  2812.                 return compareByDay(firstSunday, janFirst) === 0 ? "01" : "00"
  2813.             }),
  2814.             "%V": (function (date) {
  2815.                 var janFourthThisYear = new Date(date.tm_year + 1900, 0, 4);
  2816.                 var janFourthNextYear = new Date(date.tm_year + 1901, 0, 4);
  2817.                 var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);
  2818.                 var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);
  2819.                 var endDate = _8f28c82(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);
  2820.                 if (compareByDay(endDate, firstWeekStartThisYear) < 0) {
  2821.                     return "53"
  2822.                 }
  2823.                 if (compareByDay(firstWeekStartNextYear, endDate) <= 0) {
  2824.                     return "01"
  2825.                 }
  2826.                 var daysDifference;
  2827.                 if (firstWeekStartThisYear.getFullYear() < date.tm_year + 1900) {
  2828.                     daysDifference = date.tm_yday + 32 - firstWeekStartThisYear.getDate()
  2829.                 } else {
  2830.                     daysDifference = date.tm_yday + 1 - firstWeekStartThisYear.getDate()
  2831.                 }
  2832.                 return leadingNulls(Math.ceil(daysDifference / 7), 2)
  2833.             }),
  2834.             "%w": (function (date) {
  2835.                 var day = new Date(date.tm_year + 1900, date.tm_mon + 1, date.tm_mday, 0, 0, 0, 0);
  2836.                 return day.getDay()
  2837.             }),
  2838.             "%W": (function (date) {
  2839.                 var janFirst = new Date(date.tm_year, 0, 1);
  2840.                 var firstMonday = janFirst.getDay() === 1 ? janFirst : _8f28c82(janFirst, janFirst.getDay() === 0 ? 1 : 7 - janFirst.getDay() + 1);
  2841.                 var endDate = new Date(date.tm_year + 1900, date.tm_mon, date.tm_mday);
  2842.                 if (compareByDay(firstMonday, endDate) < 0) {
  2843.                     var februaryFirstUntilEndMonth = _45904969(_5723d091(endDate.getFullYear()) ? _5bd921b8 : _60617de1, endDate.getMonth() - 1) - 31;
  2844.                     var firstMondayUntilEndJanuary = 31 - firstMonday.getDate();
  2845.                     var days = firstMondayUntilEndJanuary + februaryFirstUntilEndMonth + endDate.getDate();
  2846.                     return leadingNulls(Math.ceil(days / 7), 2)
  2847.                 }
  2848.                 return compareByDay(firstMonday, janFirst) === 0 ? "01" : "00"
  2849.             }),
  2850.             "%y": (function (date) {
  2851.                 return (date.tm_year + 1900).toString().substring(2)
  2852.             }),
  2853.             "%Y": (function (date) {
  2854.                 return date.tm_year + 1900
  2855.             }),
  2856.             "%z": (function (date) {
  2857.                 var off = date.tm_gmtoff;
  2858.                 var ahead = off >= 0;
  2859.                 off = Math.abs(off) / 60;
  2860.                 off = off / 60 * 100 + off % 60;
  2861.                 return (ahead ? "+" : "-") + String("0000" + off).slice(-4)
  2862.             }),
  2863.             "%Z": (function (date) {
  2864.                 return date.tm_zone
  2865.             }),
  2866.             "%%": (function () {
  2867.                 return "%"
  2868.             })
  2869.         };
  2870.         for (var rule in EXPANSION_RULES_2) {
  2871.             if (pattern.indexOf(rule) >= 0) {
  2872.                 pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_2[rule](date))
  2873.             }
  2874.         }
  2875.         var bytes = intArrayFromString(pattern, false);
  2876.         if (bytes.length > maxsize) {
  2877.             return 0
  2878.         }
  2879.         writeArrayToMemory(bytes, s);
  2880.         return bytes.length - 1
  2881.     }
  2882.  
  2883.     function _49181f3f(s, maxsize, format, tm) {
  2884.         return _41b75089(s, maxsize, format, tm)
  2885.     }
  2886.  
  2887.     function _a643679() {
  2888.         Module["abort"]()
  2889.     }
  2890.  
  2891.     function _63144176() {}
  2892.  
  2893.     function _d73d820() {}
  2894.  
  2895.     function _77e31241(mode, value) {
  2896.         Browser.mainLoop.timingMode = mode;
  2897.         Browser.mainLoop.timingValue = value;
  2898.         if (!Browser.mainLoop.func) {
  2899.             return 1
  2900.         }
  2901.         if (mode == 0) {
  2902.             Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setTimeout() {
  2903.                 var timeUntilNextTick = Math.max(0, Browser.mainLoop.tickStartTime + value - _193d0694()) | 0;
  2904.                 setTimeout(Browser.mainLoop.runner, timeUntilNextTick)
  2905.             };
  2906.             Browser.mainLoop.method = "timeout"
  2907.         } else if (mode == 1) {
  2908.             Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_rAF() {
  2909.                 Browser.requestAnimationFrame(Browser.mainLoop.runner)
  2910.             };
  2911.             Browser.mainLoop.method = "rAF"
  2912.         } else if (mode == 2) {
  2913.             if (!window["setImmediate"]) {
  2914.                 var setImmediates = [];
  2915.                 var emscriptenMainLoopMessageId = "setimmediate";
  2916.  
  2917.                 function Browser_setImmediate_messageHandler(event) {
  2918.                     if (event.source === window && event.data === emscriptenMainLoopMessageId) {
  2919.                         event.stopPropagation();
  2920.                         setImmediates.shift()()
  2921.                     }
  2922.                 }
  2923.                 window.addEventListener("message", Browser_setImmediate_messageHandler, true);
  2924.                 window["setImmediate"] = function Browser_emulated_setImmediate(func) {
  2925.                     setImmediates.push(func);
  2926.                     if (ENVIRONMENT_IS_WORKER) {
  2927.                         if (Module["setImmediates"] === undefined) Module["setImmediates"] = [];
  2928.                         Module["setImmediates"].push(func);
  2929.                         window.postMessage({
  2930.                             target: emscriptenMainLoopMessageId
  2931.                         })
  2932.                     } else window.postMessage(emscriptenMainLoopMessageId, "*")
  2933.                 }
  2934.             }
  2935.             Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setImmediate() {
  2936.                 window["setImmediate"](Browser.mainLoop.runner)
  2937.             };
  2938.             Browser.mainLoop.method = "immediate"
  2939.         }
  2940.         return 0
  2941.     }
  2942.  
  2943.     function _193d0694() {
  2944.         abort()
  2945.     }
  2946.  
  2947.     function _2731fd00(func, fps, simulateInfiniteLoop, arg, noSetTiming) {
  2948.         Module["noExitRuntime"] = true;
  2949.         assert(!Browser.mainLoop.func, "emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");
  2950.         Browser.mainLoop.func = func;
  2951.         Browser.mainLoop.arg = arg;
  2952.         var browserIterationFunc;
  2953.         if (typeof arg !== "undefined") {
  2954.             browserIterationFunc = (function () {
  2955.                 Module["dynCall_vi"](func, arg)
  2956.             })
  2957.         } else {
  2958.             browserIterationFunc = (function () {
  2959.                 Module["dynCall_v"](func)
  2960.             })
  2961.         }
  2962.         var thisMainLoopId = Browser.mainLoop.currentlyRunningMainloop;
  2963.         Browser.mainLoop.runner = function Browser_mainLoop_runner() {
  2964.             if (ABORT) return;
  2965.             if (Browser.mainLoop.queue.length > 0) {
  2966.                 var start = Date.now();
  2967.                 var blocker = Browser.mainLoop.queue.shift();
  2968.                 blocker.func(blocker.arg);
  2969.                 if (Browser.mainLoop.remainingBlockers) {
  2970.                     var remaining = Browser.mainLoop.remainingBlockers;
  2971.                     var next = remaining % 1 == 0 ? remaining - 1 : Math.floor(remaining);
  2972.                     if (blocker.counted) {
  2973.                         Browser.mainLoop.remainingBlockers = next
  2974.                     } else {
  2975.                         next = next + .5;
  2976.                         Browser.mainLoop.remainingBlockers = (8 * remaining + next) / 9
  2977.                     }
  2978.                 }
  2979.                 console.log('main loop blocker "' + blocker.name + '" took ' + (Date.now() - start) + " ms");
  2980.                 Browser.mainLoop.updateStatus();
  2981.                 if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;
  2982.                 setTimeout(Browser.mainLoop.runner, 0);
  2983.                 return
  2984.             }
  2985.             if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;
  2986.             Browser.mainLoop.currentFrameNumber = Browser.mainLoop.currentFrameNumber + 1 | 0;
  2987.             if (Browser.mainLoop.timingMode == 1 && Browser.mainLoop.timingValue > 1 && Browser.mainLoop.currentFrameNumber % Browser.mainLoop.timingValue != 0) {
  2988.                 Browser.mainLoop.scheduler();
  2989.                 return
  2990.             } else if (Browser.mainLoop.timingMode == 0) {
  2991.                 Browser.mainLoop.tickStartTime = _193d0694()
  2992.             }
  2993.             if (Browser.mainLoop.method === "timeout" && Module.ctx) {
  2994.                 Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame,  as that can greatly improve your frame rates!");
  2995.                 Browser.mainLoop.method = ""
  2996.             }
  2997.             Browser.mainLoop.runIter(browserIterationFunc);
  2998.             if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;
  2999.             if (typeof SDL === "object" && SDL.audio && SDL.audio.queueNewAudioData) SDL.audio.queueNewAudioData();
  3000.             Browser.mainLoop.scheduler()
  3001.         };
  3002.         if (!noSetTiming) {
  3003.             if (fps && fps > 0) _77e31241(0, 1e3 / fps);
  3004.             else _77e31241(1, 1);
  3005.             Browser.mainLoop.scheduler()
  3006.         }
  3007.         if (simulateInfiniteLoop) {
  3008.             throw "SimulateInfiniteLoop"
  3009.         }
  3010.     }
  3011.     var Browser = {
  3012.         mainLoop: {
  3013.             scheduler: null,
  3014.             method: "",
  3015.             currentlyRunningMainloop: 0,
  3016.             func: null,
  3017.             arg: 0,
  3018.             timingMode: 0,
  3019.             timingValue: 0,
  3020.             currentFrameNumber: 0,
  3021.             queue: [],
  3022.             pause: (function () {
  3023.                 Browser.mainLoop.scheduler = null;
  3024.                 Browser.mainLoop.currentlyRunningMainloop++
  3025.             }),
  3026.             resume: (function () {
  3027.                 Browser.mainLoop.currentlyRunningMainloop++;
  3028.                 var timingMode = Browser.mainLoop.timingMode;
  3029.                 var timingValue = Browser.mainLoop.timingValue;
  3030.                 var func = Browser.mainLoop.func;
  3031.                 Browser.mainLoop.func = null;
  3032.                 _2731fd00(func, 0, false, Browser.mainLoop.arg, true);
  3033.                 _77e31241(timingMode, timingValue);
  3034.                 Browser.mainLoop.scheduler()
  3035.             }),
  3036.             updateStatus: (function () {
  3037.                 if (Module["setStatus"]) {
  3038.                     var message = Module["statusMessage"] || "Please wait...";
  3039.                     var remaining = Browser.mainLoop.remainingBlockers;
  3040.                     var expected = Browser.mainLoop.expectedBlockers;
  3041.                     if (remaining) {
  3042.                         if (remaining < expected) {
  3043.                             Module["setStatus"](message + " (" + (expected - remaining) + "/" + expected + ")")
  3044.                         } else {
  3045.                             Module["setStatus"](message)
  3046.                         }
  3047.                     } else {
  3048.                         Module["setStatus"]("")
  3049.                     }
  3050.                 }
  3051.             }),
  3052.             runIter: (function (func) {
  3053.                 if (ABORT) return;
  3054.                 if (Module["preMainLoop"]) {
  3055.                     var preRet = Module["preMainLoop"]();
  3056.                     if (preRet === false) {
  3057.                         return
  3058.                     }
  3059.                 }
  3060.                 try {
  3061.                     func()
  3062.                 } catch (e) {
  3063.                     if (e instanceof ExitStatus) {
  3064.                         return
  3065.                     } else {
  3066.                         if (e && typeof e === "object" && e.stack) Module.printErr("exception thrown: " + [e, e.stack]);
  3067.                         throw e
  3068.                     }
  3069.                 }
  3070.                 if (Module["postMainLoop"]) Module["postMainLoop"]()
  3071.             })
  3072.         },
  3073.         isFullscreen: false,
  3074.         pointerLock: false,
  3075.         moduleContextCreatedCallbacks: [],
  3076.         workers: [],
  3077.         init: (function () {
  3078.             if (!Module["preloadPlugins"]) Module["preloadPlugins"] = [];
  3079.             if (Browser.initted) return;
  3080.             Browser.initted = true;
  3081.             try {
  3082.                 new Blob;
  3083.                 Browser.hasBlobConstructor = true
  3084.             } catch (e) {
  3085.                 Browser.hasBlobConstructor = false;
  3086.                 console.log("warning: no blob constructor, cannot create blobs with mimetypes")
  3087.             }
  3088.             Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : !Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null;
  3089.             Browser.URLObject = typeof window != "undefined" ? window.URL ? window.URL : window.webkitURL : undefined;
  3090.             if (!Module.noImageDecoding && typeof Browser.URLObject === "undefined") {
  3091.                 console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");
  3092.                 Module.noImageDecoding = true
  3093.             }
  3094.             var imagePlugin = {};
  3095.             imagePlugin["canHandle"] = function imagePlugin_canHandle(name) {
  3096.                 return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name)
  3097.             };
  3098.             imagePlugin["handle"] = function imagePlugin_handle(byteArray, name, onload, onerror) {
  3099.                 var b = null;
  3100.                 if (Browser.hasBlobConstructor) {
  3101.                     try {
  3102.                         b = new Blob([byteArray], {
  3103.                             type: Browser.getMimetype(name)
  3104.                         });
  3105.                         if (b.size !== byteArray.length) {
  3106.                             b = new Blob([(new Uint8Array(byteArray)).buffer], {
  3107.                                 type: Browser.getMimetype(name)
  3108.                             })
  3109.                         }
  3110.                     } catch (e) {
  3111.                         Runtime.warnOnce("Blob constructor present but fails: " + e + "; falling back to blob builder")
  3112.                     }
  3113.                 }
  3114.                 if (!b) {
  3115.                     var bb = new Browser.BlobBuilder;
  3116.                     bb.append((new Uint8Array(byteArray)).buffer);
  3117.                     b = bb.getBlob()
  3118.                 }
  3119.                 var url = Browser.URLObject.createObjectURL(b);
  3120.                 var img = new Image;
  3121.                 img.onload = function img_onload() {
  3122.                     assert(img.complete, "Image " + name + " could not be decoded");
  3123.                     var canvas = document.createElement("canvas");
  3124.                     canvas.width = img.width;
  3125.                     canvas.height = img.height;
  3126.                     var ctx = canvas.getContext("2d");
  3127.                     ctx.drawImage(img, 0, 0);
  3128.                     Module["preloadedImages"][name] = canvas;
  3129.                     Browser.URLObject.revokeObjectURL(url);
  3130.                     if (onload) onload(byteArray)
  3131.                 };
  3132.                 img.onerror = function img_onerror(event) {
  3133.                     console.log("Image " + url + " could not be decoded");
  3134.                     if (onerror) onerror()
  3135.                 };
  3136.                 img.src = url
  3137.             };
  3138.             Module["preloadPlugins"].push(imagePlugin);
  3139.             var audioPlugin = {};
  3140.             audioPlugin["canHandle"] = function audioPlugin_canHandle(name) {
  3141.                 return !Module.noAudioDecoding && name.substr(-4) in {
  3142.                     ".ogg": 1,
  3143.                     ".wav": 1,
  3144.                     ".mp3": 1
  3145.                 }
  3146.             };
  3147.             audioPlugin["handle"] = function audioPlugin_handle(byteArray, name, onload, onerror) {
  3148.                 var done = false;
  3149.  
  3150.                 function finish(audio) {
  3151.                     if (done) return;
  3152.                     done = true;
  3153.                     Module["preloadedAudios"][name] = audio;
  3154.                     if (onload) onload(byteArray)
  3155.                 }
  3156.  
  3157.                 function fail() {
  3158.                     if (done) return;
  3159.                     done = true;
  3160.                     Module["preloadedAudios"][name] = new Audio;
  3161.                     if (onerror) onerror()
  3162.                 }
  3163.                 if (Browser.hasBlobConstructor) {
  3164.                     try {
  3165.                         var b = new Blob([byteArray], {
  3166.                             type: Browser.getMimetype(name)
  3167.                         })
  3168.                     } catch (e) {
  3169.                         return fail()
  3170.                     }
  3171.                     var url = Browser.URLObject.createObjectURL(b);
  3172.                     var audio = new Audio;
  3173.                     audio.addEventListener("canplaythrough", (function () {
  3174.                         finish(audio)
  3175.                     }), false);
  3176.                     audio.onerror = function audio_onerror(event) {
  3177.                         if (done) return;
  3178.                         console.log("warning: browser could not fully decode audio " + name + ",  trying slower base64 approach");
  3179.  
  3180.                         function encode64(data) {
  3181.                             var BASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  3182.                             var PAD = "=";
  3183.                             var ret = "";
  3184.                             var leftchar = 0;
  3185.                             var leftbits = 0;
  3186.                             for (var i = 0; i < data.length; i++) {
  3187.                                 leftchar = leftchar << 8 | data[i];
  3188.                                 leftbits += 8;
  3189.                                 while (leftbits >= 6) {
  3190.                                     var curr = leftchar >> leftbits - 6 & 63;
  3191.                                     leftbits -= 6;
  3192.                                     ret += BASE[curr]
  3193.                                 }
  3194.                             }
  3195.                             if (leftbits == 2) {
  3196.                                 ret += BASE[(leftchar & 3) << 4];
  3197.                                 ret += PAD + PAD
  3198.                             } else if (leftbits == 4) {
  3199.                                 ret += BASE[(leftchar & 15) << 2];
  3200.                                 ret += PAD
  3201.                             }
  3202.                             return ret
  3203.                         }
  3204.                         audio.src = "data:audio/x-" + name.substr(-3) + ";base64," + encode64(byteArray);
  3205.                         finish(audio)
  3206.                     };
  3207.                     audio.src = url;
  3208.                     Browser.safeSetTimeout((function () {
  3209.                         finish(audio)
  3210.                     }), 1e4)
  3211.                 } else {
  3212.                     return fail()
  3213.                 }
  3214.             };
  3215.             Module["preloadPlugins"].push(audioPlugin);
  3216.  
  3217.             function pointerLockChange() {
  3218.                 Browser.pointerLock = document["pointerLockElement"] === Module["canvas"] || document["mozPointerLockElement"] === Module["canvas"] || document["webkitPointerLockElement"] === Module["canvas"] || document["msPointerLockElement"] === Module["canvas"]
  3219.             }
  3220.             var canvas = Module["canvas"];
  3221.             if (canvas) {
  3222.                 canvas.requestPointerLock = canvas["requestPointerLock"] || canvas["mozRequestPointerLock"] || canvas["webkitRequestPointerLock"] || canvas["msRequestPointerLock"] || (function () {});
  3223.                 canvas.exitPointerLock = document["exitPointerLock"] || document["mozExitPointerLock"] || document["webkitExitPointerLock"] || document["msExitPointerLock"] || (function () {});
  3224.                 canvas.exitPointerLock = canvas.exitPointerLock.bind(document);
  3225.                 document.addEventListener("pointerlockchange", pointerLockChange, false);
  3226.                 document.addEventListener("mozpointerlockchange", pointerLockChange, false);
  3227.                 document.addEventListener("webkitpointerlockchange", pointerLockChange, false);
  3228.                 document.addEventListener("mspointerlockchange", pointerLockChange, false);
  3229.                 if (Module["elementPointerLock"]) {
  3230.                     canvas.addEventListener("click", (function (ev) {
  3231.                         if (!Browser.pointerLock && Module["canvas"].requestPointerLock) {
  3232.                             Module["canvas"].requestPointerLock();
  3233.                             ev.preventDefault()
  3234.                         }
  3235.                     }), false)
  3236.                 }
  3237.             }
  3238.         }),
  3239.         createContext: (function (canvas, useWebGL, setInModule, webGLContextAttributes) {
  3240.             if (useWebGL && Module.ctx && canvas == Module.canvas) return Module.ctx;
  3241.             var ctx;
  3242.             var contextHandle;
  3243.             if (useWebGL) {
  3244.                 var contextAttributes = {
  3245.                     antialias: false,
  3246.                     alpha: false
  3247.                 };
  3248.                 if (webGLContextAttributes) {
  3249.                     for (var attribute in webGLContextAttributes) {
  3250.                         contextAttributes[attribute] = webGLContextAttributes[attribute]
  3251.                     }
  3252.                 }
  3253.                 contextHandle = GL.createContext(canvas, contextAttributes);
  3254.                 if (contextHandle) {
  3255.                     ctx = GL.getContext(contextHandle).GLctx
  3256.                 }
  3257.             } else {
  3258.                 ctx = canvas.getContext("2d")
  3259.             }
  3260.             if (!ctx) return null;
  3261.             if (setInModule) {
  3262.                 if (!useWebGL) assert(typeof GLctx === "undefined", "cannot set in module if GLctx is used ,  but we are a non-GL context that would replace it");
  3263.                 Module.ctx = ctx;
  3264.                 if (useWebGL) GL.makeContextCurrent(contextHandle);
  3265.                 Module.useWebGL = useWebGL;
  3266.                 Browser.moduleContextCreatedCallbacks.forEach((function (callback) {
  3267.                     callback()
  3268.                 }));
  3269.                 Browser.init()
  3270.             }
  3271.             return ctx
  3272.         }),
  3273.         destroyContext: (function (canvas, useWebGL, setInModule) {}),
  3274.         fullscreenHandlersInstalled: false,
  3275.         lockPointer: undefined,
  3276.         resizeCanvas: undefined,
  3277.         requestFullscreen: (function (lockPointer, resizeCanvas, vrDevice) {
  3278.             Browser.lockPointer = lockPointer;
  3279.             Browser.resizeCanvas = resizeCanvas;
  3280.             Browser.vrDevice = vrDevice;
  3281.             if (typeof Browser.lockPointer === "undefined") Browser.lockPointer = true;
  3282.             if (typeof Browser.resizeCanvas === "undefined") Browser.resizeCanvas = false;
  3283.             if (typeof Browser.vrDevice === "undefined") Browser.vrDevice = null;
  3284.             var canvas = Module["canvas"];
  3285.  
  3286.             function fullscreenChange() {
  3287.                 Browser.isFullscreen = false;
  3288.                 var canvasContainer = canvas.parentNode;
  3289.                 if ((document["fullscreenElement"] || document["mozFullScreenElement"] || document["msFullscreenElement"] || document["webkitFullscreenElement"] || document["webkitCurrentFullScreenElement"]) === canvasContainer) {
  3290.                     canvas.exitFullscreen = document["exitFullscreen"] || document["cancelFullScreen"] || document["mozCancelFullScreen"] || document["msExitFullscreen"] || document["webkitCancelFullScreen"] || (function () {});
  3291.                     canvas.exitFullscreen = canvas.exitFullscreen.bind(document);
  3292.                     if (Browser.lockPointer) canvas.requestPointerLock();
  3293.                     Browser.isFullscreen = true;
  3294.                     if (Browser.resizeCanvas) Browser.setFullscreenCanvasSize()
  3295.                 } else {
  3296.                     canvasContainer.parentNode.insertBefore(canvas, canvasContainer);
  3297.                     canvasContainer.parentNode.removeChild(canvasContainer);
  3298.                     if (Browser.resizeCanvas) Browser.setWindowedCanvasSize()
  3299.                 }
  3300.                 if (Module["onFullScreen"]) Module["onFullScreen"](Browser.isFullscreen);
  3301.                 if (Module["onFullscreen"]) Module["onFullscreen"](Browser.isFullscreen);
  3302.                 Browser.updateCanvasDimensions(canvas)
  3303.             }
  3304.             if (!Browser.fullscreenHandlersInstalled) {
  3305.                 Browser.fullscreenHandlersInstalled = true;
  3306.                 document.addEventListener("fullscreenchange", fullscreenChange, false);
  3307.                 document.addEventListener("mozfullscreenchange", fullscreenChange, false);
  3308.                 document.addEventListener("webkitfullscreenchange", fullscreenChange, false);
  3309.                 document.addEventListener("MSFullscreenChange", fullscreenChange, false)
  3310.             }
  3311.             var canvasContainer = document.createElement("div");
  3312.             canvas.parentNode.insertBefore(canvasContainer, canvas);
  3313.             canvasContainer.appendChild(canvas);
  3314.             canvasContainer.requestFullscreen = canvasContainer["requestFullscreen"] || canvasContainer["mozRequestFullScreen"] || canvasContainer["msRequestFullscreen"] || (canvasContainer["webkitRequestFullscreen"] ? (function () {
  3315.                 canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])
  3316.             }) : null) || (canvasContainer["webkitRequestFullScreen"] ? (function () {
  3317.                 canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])
  3318.             }) : null);
  3319.             if (vrDevice) {
  3320.                 canvasContainer.requestFullscreen({
  3321.                     vrDisplay: vrDevice
  3322.                 })
  3323.             } else {
  3324.                 canvasContainer.requestFullscreen()
  3325.             }
  3326.         }),
  3327.         requestFullScreen: (function (lockPointer, resizeCanvas, vrDevice) {
  3328.             Module.printErr("Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead.");
  3329.             Browser.requestFullScreen = (function (lockPointer, resizeCanvas, vrDevice) {
  3330.                 return Browser.requestFullscreen(lockPointer, resizeCanvas, vrDevice)
  3331.             });
  3332.             return Browser.requestFullscreen(lockPointer, resizeCanvas, vrDevice)
  3333.         }),
  3334.         nextRAF: 0,
  3335.         fakeRequestAnimationFrame: (function (func) {
  3336.             var now = Date.now();
  3337.             if (Browser.nextRAF === 0) {
  3338.                 Browser.nextRAF = now + 1e3 / 60
  3339.             } else {
  3340.                 while (now + 2 >= Browser.nextRAF) {
  3341.                     Browser.nextRAF += 1e3 / 60
  3342.                 }
  3343.             }
  3344.             var delay = Math.max(Browser.nextRAF - now, 0);
  3345.             setTimeout(func, delay)
  3346.         }),
  3347.         requestAnimationFrame: function requestAnimationFrame(func) {
  3348.             if (typeof window === "undefined") {
  3349.                 Browser.fakeRequestAnimationFrame(func)
  3350.             } else {
  3351.                 if (!window.requestAnimationFrame) {
  3352.                     window.requestAnimationFrame = window["requestAnimationFrame"] || window["mozRequestAnimationFrame"] || window["webkitRequestAnimationFrame"] || window["msRequestAnimationFrame"] || window["oRequestAnimationFrame"] || Browser.fakeRequestAnimationFrame
  3353.                 }
  3354.                 window.requestAnimationFrame(func)
  3355.             }
  3356.         },
  3357.         safeCallback: (function (func) {
  3358.             return (function () {
  3359.                 if (!ABORT) return func.apply(null, arguments)
  3360.             })
  3361.         }),
  3362.         allowAsyncCallbacks: true,
  3363.         queuedAsyncCallbacks: [],
  3364.         pauseAsyncCallbacks: (function () {
  3365.             Browser.allowAsyncCallbacks = false
  3366.         }),
  3367.         resumeAsyncCallbacks: (function () {
  3368.             Browser.allowAsyncCallbacks = true;
  3369.             if (Browser.queuedAsyncCallbacks.length > 0) {
  3370.                 var callbacks = Browser.queuedAsyncCallbacks;
  3371.                 Browser.queuedAsyncCallbacks = [];
  3372.                 callbacks.forEach((function (func) {
  3373.                     func()
  3374.                 }))
  3375.             }
  3376.         }),
  3377.         safeRequestAnimationFrame: (function (func) {
  3378.             return Browser.requestAnimationFrame((function () {
  3379.                 if (ABORT) return;
  3380.                 if (Browser.allowAsyncCallbacks) {
  3381.                     func()
  3382.                 } else {
  3383.                     Browser.queuedAsyncCallbacks.push(func)
  3384.                 }
  3385.             }))
  3386.         }),
  3387.         safeSetTimeout: (function (func, timeout) {
  3388.             Module["noExitRuntime"] = true;
  3389.             return setTimeout((function () {
  3390.                 if (ABORT) return;
  3391.                 if (Browser.allowAsyncCallbacks) {
  3392.                     func()
  3393.                 } else {
  3394.                     Browser.queuedAsyncCallbacks.push(func)
  3395.                 }
  3396.             }), timeout)
  3397.         }),
  3398.         safeSetInterval: (function (func, timeout) {
  3399.             Module["noExitRuntime"] = true;
  3400.             return setInterval((function () {
  3401.                 if (ABORT) return;
  3402.                 if (Browser.allowAsyncCallbacks) {
  3403.                     func()
  3404.                 }
  3405.             }), timeout)
  3406.         }),
  3407.         getMimetype: (function (name) {
  3408.             return {
  3409.                 "jpg": "image/jpeg",
  3410.                 "jpeg": "image/jpeg",
  3411.                 "png": "image/png",
  3412.                 "bmp": "image/bmp",
  3413.                 "ogg": "audio/ogg",
  3414.                 "wav": "audio/wav",
  3415.                 "mp3": "audio/mpeg"
  3416.             }[name.substr(name.lastIndexOf(".") + 1)]
  3417.         }),
  3418.         getUserMedia: (function (func) {
  3419.             if (!window.getUserMedia) {
  3420.                 window.getUserMedia = navigator["getUserMedia"] || navigator["mozGetUserMedia"]
  3421.             }
  3422.             window.getUserMedia(func)
  3423.         }),
  3424.         getMovementX: (function (event) {
  3425.             return event["movementX"] || event["mozMovementX"] || event["webkitMovementX"] || 0
  3426.         }),
  3427.         getMovementY: (function (event) {
  3428.             return event["movementY"] || event["mozMovementY"] || event["webkitMovementY"] || 0
  3429.         }),
  3430.         getMouseWheelDelta: (function (event) {
  3431.             var delta = 0;
  3432.             switch (event.type) {
  3433.                 case "DOMMouseScroll":
  3434.                     delta = event.detail;
  3435.                     break;
  3436.                 case "mousewheel":
  3437.                     delta = event.wheelDelta;
  3438.                     break;
  3439.                 case "wheel":
  3440.                     delta = event["deltaY"];
  3441.                     break;
  3442.                 default:
  3443.                     throw "unrecognized mouse wheel event: " + event.type
  3444.             }
  3445.             return delta
  3446.         }),
  3447.         mouseX: 0,
  3448.         mouseY: 0,
  3449.         mouseMovementX: 0,
  3450.         mouseMovementY: 0,
  3451.         touches: {},
  3452.         lastTouches: {},
  3453.         calculateMouseEvent: (function (event) {
  3454.             if (Browser.pointerLock) {
  3455.                 if (event.type != "mousemove" && "mozMovementX" in event) {
  3456.                     Browser.mouseMovementX = Browser.mouseMovementY = 0
  3457.                 } else {
  3458.                     Browser.mouseMovementX = Browser.getMovementX(event);
  3459.                     Browser.mouseMovementY = Browser.getMovementY(event)
  3460.                 }
  3461.                 if (typeof SDL != "undefined") {
  3462.                     Browser.mouseX = SDL.mouseX + Browser.mouseMovementX;
  3463.                     Browser.mouseY = SDL.mouseY + Browser.mouseMovementY
  3464.                 } else {
  3465.                     Browser.mouseX += Browser.mouseMovementX;
  3466.                     Browser.mouseY += Browser.mouseMovementY
  3467.                 }
  3468.             } else {
  3469.                 var rect = Module["canvas"].getBoundingClientRect();
  3470.                 var cw = Module["canvas"].width;
  3471.                 var ch = Module["canvas"].height;
  3472.                 var scrollX = typeof window.scrollX !== "undefined" ? window.scrollX : window.pageXOffset;
  3473.                 var scrollY = typeof window.scrollY !== "undefined" ? window.scrollY : window.pageYOffset;
  3474.                 if (event.type === "touchstart" || event.type === "touchend" || event.type === "touchmove") {
  3475.                     var touch = event.touch;
  3476.                     if (touch === undefined) {
  3477.                         return
  3478.                     }
  3479.                     var adjustedX = touch.pageX - (scrollX + rect.left);
  3480.                     var adjustedY = touch.pageY - (scrollY + rect.top);
  3481.                     adjustedX = adjustedX * (cw / rect.width);
  3482.                     adjustedY = adjustedY * (ch / rect.height);
  3483.                     var coords = {
  3484.                         x: adjustedX,
  3485.                         y: adjustedY
  3486.                     };
  3487.                     if (event.type === "touchstart") {
  3488.                         Browser.lastTouches[touch.identifier] = coords;
  3489.                         Browser.touches[touch.identifier] = coords
  3490.                     } else if (event.type === "touchend" || event.type === "touchmove") {
  3491.                         var last = Browser.touches[touch.identifier];
  3492.                         if (!last) last = coords;
  3493.                         Browser.lastTouches[touch.identifier] = last;
  3494.                         Browser.touches[touch.identifier] = coords
  3495.                     }
  3496.                     return
  3497.                 }
  3498.                 var x = event.pageX - (scrollX + rect.left);
  3499.                 var y = event.pageY - (scrollY + rect.top);
  3500.                 x = x * (cw / rect.width);
  3501.                 y = y * (ch / rect.height);
  3502.                 Browser.mouseMovementX = x - Browser.mouseX;
  3503.                 Browser.mouseMovementY = y - Browser.mouseY;
  3504.                 Browser.mouseX = x;
  3505.                 Browser.mouseY = y
  3506.             }
  3507.         }),
  3508.         asyncLoad: (function (url, onload, onerror, noRunDep) {
  3509.             var dep = !noRunDep ? getUniqueRunDependency("al " + url) : "";
  3510.             Module["readAsync"](url, (function (arrayBuffer) {
  3511.                 assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).');
  3512.                 onload(new Uint8Array(arrayBuffer));
  3513.                 if (dep) removeRunDependency(dep)
  3514.             }), (function (event) {
  3515.                 if (onerror) {
  3516.                     onerror()
  3517.                 } else {
  3518.                     throw 'Loading data file "' + url + '" failed.'
  3519.                 }
  3520.             }));
  3521.             if (dep) addRunDependency(dep)
  3522.         }),
  3523.         resizeListeners: [],
  3524.         updateResizeListeners: (function () {
  3525.             var canvas = Module["canvas"];
  3526.             Browser.resizeListeners.forEach((function (listener) {
  3527.                 listener(canvas.width, canvas.height)
  3528.             }))
  3529.         }),
  3530.         setCanvasSize: (function (width, height, noUpdates) {
  3531.             var canvas = Module["canvas"];
  3532.             Browser.updateCanvasDimensions(canvas, width, height);
  3533.             if (!noUpdates) Browser.updateResizeListeners()
  3534.         }),
  3535.         windowedWidth: 0,
  3536.         windowedHeight: 0,
  3537.         setFullscreenCanvasSize: (function () {
  3538.             if (typeof SDL != "undefined") {
  3539.                 var flags = HEAPU32[SDL.screen + Runtime.QUANTUM_SIZE * 0 >> 2];
  3540.                 flags = flags | 8388608;
  3541.                 HEAP32[SDL.screen + Runtime.QUANTUM_SIZE * 0 >> 2] = flags
  3542.             }
  3543.             Browser.updateResizeListeners()
  3544.         }),
  3545.         setWindowedCanvasSize: (function () {
  3546.             if (typeof SDL != "undefined") {
  3547.                 var flags = HEAPU32[SDL.screen + Runtime.QUANTUM_SIZE * 0 >> 2];
  3548.                 flags = flags & ~8388608;
  3549.                 HEAP32[SDL.screen + Runtime.QUANTUM_SIZE * 0 >> 2] = flags
  3550.             }
  3551.             Browser.updateResizeListeners()
  3552.         }),
  3553.         updateCanvasDimensions: (function (canvas, wNative, hNative) {
  3554.             if (wNative && hNative) {
  3555.                 canvas.widthNative = wNative;
  3556.                 canvas.heightNative = hNative
  3557.             } else {
  3558.                 wNative = canvas.widthNative;
  3559.                 hNative = canvas.heightNative
  3560.             }
  3561.             var w = wNative;
  3562.             var h = hNative;
  3563.             if (Module["forcedAspectRatio"] && Module["forcedAspectRatio"] > 0) {
  3564.                 if (w / h < Module["forcedAspectRatio"]) {
  3565.                     w = Math.round(h * Module["forcedAspectRatio"])
  3566.                 } else {
  3567.                     h = Math.round(w / Module["forcedAspectRatio"])
  3568.                 }
  3569.             }
  3570.             if ((document["fullscreenElement"] || document["mozFullScreenElement"] || document["msFullscreenElement"] || document["webkitFullscreenElement"] || document["webkitCurrentFullScreenElement"]) === canvas.parentNode && typeof screen != "undefined") {
  3571.                 var factor = Math.min(screen.width / w, screen.height / h);
  3572.                 w = Math.round(w * factor);
  3573.                 h = Math.round(h * factor)
  3574.             }
  3575.             if (Browser.resizeCanvas) {
  3576.                 if (canvas.width != w) canvas.width = w;
  3577.                 if (canvas.height != h) canvas.height = h;
  3578.                 if (typeof canvas.style != "undefined") {
  3579.                     canvas.style.removeProperty("width");
  3580.                     canvas.style.removeProperty("height")
  3581.                 }
  3582.             } else {
  3583.                 if (canvas.width != wNative) canvas.width = wNative;
  3584.                 if (canvas.height != hNative) canvas.height = hNative;
  3585.                 if (typeof canvas.style != "undefined") {
  3586.                     if (w != wNative || h != hNative) {
  3587.                         canvas.style.setProperty("width", w + "px", "important");
  3588.                         canvas.style.setProperty("height", h + "px", "important")
  3589.                     } else {
  3590.                         canvas.style.removeProperty("width");
  3591.                         canvas.style.removeProperty("height")
  3592.                     }
  3593.                 }
  3594.             }
  3595.         }),
  3596.         wgetRequests: {},
  3597.         nextWgetRequestHandle: 0,
  3598.         getNextWgetRequestHandle: (function () {
  3599.             var handle = Browser.nextWgetRequestHandle;
  3600.             Browser.nextWgetRequestHandle++;
  3601.             return handle
  3602.         })
  3603.     };
  3604.  
  3605.     function _673690ea(status) {
  3606.         Module["noExitRuntime"] = false;
  3607.         Module["exit"](status)
  3608.     }
  3609.     var _4b33567d = Math_pow;
  3610.     Module["_34a2056e"] = _34a2056e;
  3611.  
  3612.     function _38e295b() {
  3613.         Module["noExitRuntime"] = true;
  3614.         throw "SimulateInfiniteLoop"
  3615.     }
  3616.     var SYSCALLS = {
  3617.         varargs: 0,
  3618.         get: (function (varargs) {
  3619.             SYSCALLS.varargs += 4;
  3620.             var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];
  3621.             return ret
  3622.         }),
  3623.         getStr: (function () {
  3624.             var ret = Pointer_stringify(SYSCALLS.get());
  3625.             return ret
  3626.         }),
  3627.         get64: (function () {
  3628.             var low = SYSCALLS.get(),
  3629.                 high = SYSCALLS.get();
  3630.             if (low >= 0) assert(high === 0);
  3631.             else assert(high === -1);
  3632.             return low
  3633.         }),
  3634.         getZero: (function () {
  3635.             assert(SYSCALLS.get() === 0)
  3636.         })
  3637.     };
  3638.  
  3639.     function _f8c6677(which, varargs) {
  3640.         SYSCALLS.varargs = varargs;
  3641.         try {
  3642.             var addr = SYSCALLS.get(),
  3643.                 len = SYSCALLS.get();
  3644.             var info = SYSCALLS.mappings[addr];
  3645.             if (!info) return 0;
  3646.             if (len === info.len) {
  3647.                 var stream = FS.getStream(info.fd);
  3648.                 SYSCALLS.doMsync(addr, stream, len, info.flags);
  3649.                 FS.munmap(stream);
  3650.                 SYSCALLS.mappings[addr] = null;
  3651.                 if (info.allocated) {
  3652.                     _71a9251a(info.malloc)
  3653.                 }
  3654.             }
  3655.             return 0
  3656.         } catch (e) {
  3657.             if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
  3658.             return -e.errno
  3659.         }
  3660.     }
  3661.  
  3662.     function _132e7f17(which, varargs) {
  3663.         SYSCALLS.varargs = varargs;
  3664.         try {
  3665.             return 0
  3666.         } catch (e) {
  3667.             if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
  3668.             return -e.errno
  3669.         }
  3670.     }
  3671.     Module["_560b4a3c"] = _560b4a3c;
  3672.  
  3673.     function _fa4d() {
  3674.         ABORT = true;
  3675.         throw "Pure virtual function called!"
  3676.     }
  3677.     Module["_5f8a1ffa"] = _5f8a1ffa;
  3678.     var _597f19bf = STATICTOP;
  3679.     STATICTOP += 16;
  3680.  
  3681.     function _25823f4f(env) {
  3682.         var MAX_ENV_VALUES = 64;
  3683.         var TOTAL_ENV_SIZE = 1024;
  3684.         var poolPtr;
  3685.         var envPtr;
  3686.         if (!_25823f4f.called) {
  3687.             _25823f4f.called = true;
  3688.             ENV["USER"] = ENV["LOGNAME"] = "web_user";
  3689.             ENV["PATH"] = "/";
  3690.             ENV["PWD"] = "/";
  3691.             ENV["HOME"] = "/home/web_user";
  3692.             ENV["LANG"] = "C";
  3693.             ENV["_"] = Module["thisProgram"];
  3694.             poolPtr = allocate(TOTAL_ENV_SIZE, "i8", ALLOC_STATIC);
  3695.             envPtr = allocate(MAX_ENV_VALUES * 4, "i8*", ALLOC_STATIC);
  3696.             HEAP32[envPtr >> 2] = poolPtr;
  3697.             HEAP32[_597f19bf >> 2] = envPtr
  3698.         } else {
  3699.             envPtr = HEAP32[_597f19bf >> 2];
  3700.             poolPtr = HEAP32[envPtr >> 2]
  3701.         }
  3702.         var strings = [];
  3703.         var totalSize = 0;
  3704.         for (var key in env) {
  3705.             if (typeof env[key] === "string") {
  3706.                 var line = key + "=" + env[key];
  3707.                 strings.push(line);
  3708.                 totalSize += line.length
  3709.             }
  3710.         }
  3711.         if (totalSize > TOTAL_ENV_SIZE) {
  3712.             throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")
  3713.         }
  3714.         var ptrSize = 4;
  3715.         for (var i = 0; i < strings.length; i++) {
  3716.             var line = strings[i];
  3717.             writeAsciiToMemory(line, poolPtr);
  3718.             HEAP32[envPtr + i * ptrSize >> 2] = poolPtr;
  3719.             poolPtr += line.length + 1
  3720.         }
  3721.         HEAP32[envPtr + strings.length * ptrSize >> 2] = 0
  3722.     }
  3723.     var ENV = {};
  3724.  
  3725.     function _3de77134(name) {
  3726.         if (name === 0) return 0;
  3727.         name = Pointer_stringify(name);
  3728.         if (!ENV.hasOwnProperty(name)) return 0;
  3729.         if (_3de77134.ret) _71a9251a(_3de77134.ret);
  3730.         _3de77134.ret = allocate(intArrayFromString(ENV[name]), "i8", ALLOC_NORMAL);
  3731.         return _3de77134.ret
  3732.     }
  3733.     var ERRNO_CODES = {
  3734.         EPERM: 1,
  3735.         ENOENT: 2,
  3736.         ESRCH: 3,
  3737.         EINTR: 4,
  3738.         EIO: 5,
  3739.         ENXIO: 6,
  3740.         E2BIG: 7,
  3741.         ENOEXEC: 8,
  3742.         EBADF: 9,
  3743.         ECHILD: 10,
  3744.         EAGAIN: 11,
  3745.         EWOULDBLOCK: 11,
  3746.         ENOMEM: 12,
  3747.         EACCES: 13,
  3748.         EFAULT: 14,
  3749.         ENOTBLK: 15,
  3750.         EBUSY: 16,
  3751.         EEXIST: 17,
  3752.         EXDEV: 18,
  3753.         ENODEV: 19,
  3754.         ENOTDIR: 20,
  3755.         EISDIR: 21,
  3756.         EINVAL: 22,
  3757.         ENFILE: 23,
  3758.         EMFILE: 24,
  3759.         ENOTTY: 25,
  3760.         ETXTBSY: 26,
  3761.         EFBIG: 27,
  3762.         ENOSPC: 28,
  3763.         ESPIPE: 29,
  3764.         EROFS: 30,
  3765.         EMLINK: 31,
  3766.         EPIPE: 32,
  3767.         EDOM: 33,
  3768.         ERANGE: 34,
  3769.         ENOMSG: 42,
  3770.         EIDRM: 43,
  3771.         ECHRNG: 44,
  3772.         EL2NSYNC: 45,
  3773.         EL3HLT: 46,
  3774.         EL3RST: 47,
  3775.         ELNRNG: 48,
  3776.         EUNATCH: 49,
  3777.         ENOCSI: 50,
  3778.         EL2HLT: 51,
  3779.         EDEADLK: 35,
  3780.         ENOLCK: 37,
  3781.         EBADE: 52,
  3782.         EBADR: 53,
  3783.         EXFULL: 54,
  3784.         ENOANO: 55,
  3785.         EBADRQC: 56,
  3786.         EBADSLT: 57,
  3787.         EDEADLOCK: 35,
  3788.         EBFONT: 59,
  3789.         ENOSTR: 60,
  3790.         ENODATA: 61,
  3791.         ETIME: 62,
  3792.         ENOSR: 63,
  3793.         ENONET: 64,
  3794.         ENOPKG: 65,
  3795.         EREMOTE: 66,
  3796.         ENOLINK: 67,
  3797.         EADV: 68,
  3798.         ESRMNT: 69,
  3799.         ECOMM: 70,
  3800.         EPROTO: 71,
  3801.         EMULTIHOP: 72,
  3802.         EDOTDOT: 73,
  3803.         EBADMSG: 74,
  3804.         ENOTUNIQ: 76,
  3805.         EBADFD: 77,
  3806.         EREMCHG: 78,
  3807.         ELIBACC: 79,
  3808.         ELIBBAD: 80,
  3809.         ELIBSCN: 81,
  3810.         ELIBMAX: 82,
  3811.         ELIBEXEC: 83,
  3812.         ENOSYS: 38,
  3813.         ENOTEMPTY: 39,
  3814.         ENAMETOOLONG: 36,
  3815.         ELOOP: 40,
  3816.         EOPNOTSUPP: 95,
  3817.         EPFNOSUPPORT: 96,
  3818.         ECONNRESET: 104,
  3819.         ENOBUFS: 105,
  3820.         EAFNOSUPPORT: 97,
  3821.         EPROTOTYPE: 91,
  3822.         ENOTSOCK: 88,
  3823.         ENOPROTOOPT: 92,
  3824.         ESHUTDOWN: 108,
  3825.         ECONNREFUSED: 111,
  3826.         EADDRINUSE: 98,
  3827.         ECONNABORTED: 103,
  3828.         ENETUNREACH: 101,
  3829.         ENETDOWN: 100,
  3830.         ETIMEDOUT: 110,
  3831.         EHOSTDOWN: 112,
  3832.         EHOSTUNREACH: 113,
  3833.         EINPROGRESS: 115,
  3834.         EALREADY: 114,
  3835.         EDESTADDRREQ: 89,
  3836.         EMSGSIZE: 90,
  3837.         EPROTONOSUPPORT: 93,
  3838.         ESOCKTNOSUPPORT: 94,
  3839.         EADDRNOTAVAIL: 99,
  3840.         ENETRESET: 102,
  3841.         EISCONN: 106,
  3842.         ENOTCONN: 107,
  3843.         ETOOMANYREFS: 109,
  3844.         EUSERS: 87,
  3845.         EDQUOT: 122,
  3846.         ESTALE: 116,
  3847.         ENOTSUP: 95,
  3848.         ENOMEDIUM: 123,
  3849.         EILSEQ: 84,
  3850.         EOVERFLOW: 75,
  3851.         ECANCELED: 125,
  3852.         ENOTRECOVERABLE: 131,
  3853.         EOWNERDEAD: 130,
  3854.         ESTRPIPE: 86
  3855.     };
  3856.  
  3857.     function _4d939a3e(value) {
  3858.         if (Module["_3b68ab7e"]) HEAP32[Module["_3b68ab7e"]() >> 2] = value;
  3859.         return value
  3860.     }
  3861.  
  3862.     function _2f3e8db0(pathname, size) {
  3863.         _4d939a3e(ERRNO_CODES.EPERM);
  3864.         return -1
  3865.     }
  3866.     Module["_6ce94622"] = _6ce94622;
  3867.     var cttz_i8 = allocate([8, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0], "i8", ALLOC_STATIC);
  3868.  
  3869.     function _2215aafb(x) {
  3870.         x = x | 0;
  3871.         var ret = 0;
  3872.         ret = HEAP8[cttz_i8 + (x & 255) >> 0] | 0;
  3873.         if ((ret | 0) < 8) return ret | 0;
  3874.         ret = HEAP8[cttz_i8 + (x >> 8 & 255) >> 0] | 0;
  3875.         if ((ret | 0) < 8) return ret + 8 | 0;
  3876.         ret = HEAP8[cttz_i8 + (x >> 16 & 255) >> 0] | 0;
  3877.         if ((ret | 0) < 8) return ret + 16 | 0;
  3878.         return (HEAP8[cttz_i8 + (x >>> 24) >> 0] | 0) + 24 | 0
  3879.     }
  3880.     Module["_2433f883"] = _2433f883;
  3881.     Module["_2c81b5f9"] = _2c81b5f9;
  3882.  
  3883.     function _129abf50(dest, src, num) {
  3884.         HEAPU8.set(HEAPU8.subarray(src, src + num), dest);
  3885.         return dest
  3886.     }
  3887.     Module["_49a1de77"] = _49a1de77;
  3888.  
  3889.     function _51835286(which, varargs) {
  3890.         SYSCALLS.varargs = varargs;
  3891.         try {
  3892.             var stream = SYSCALLS.getStreamFromFD();
  3893.             FS.close(stream);
  3894.             return 0
  3895.         } catch (e) {
  3896.             if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
  3897.             return -e.errno
  3898.         }
  3899.     }
  3900.  
  3901.     function _6c8bee3f() {
  3902.         return !!_6c8bee3f.uncaught_exception
  3903.     }
  3904.     Module["_5f5d9e98"] = _5f5d9e98;
  3905.     Module["_290992bd"] = _290992bd;
  3906.     var _5551d8fc = Math_pow;
  3907.     Module["_7d4f49ee"] = _7d4f49ee;
  3908.     Module["_96ae4d0"] = _96ae4d0;
  3909.     Module["_4d3c8304"] = _4d3c8304;
  3910.     Module["_3d963582"] = _3d963582;
  3911.  
  3912.     function _fb3dc3a() {
  3913.         return 0
  3914.     }
  3915.     Module["_651291f9"] = _651291f9;
  3916.  
  3917.     function _144a327(which, varargs) {
  3918.         SYSCALLS.varargs = varargs;
  3919.         try {
  3920.             var stream = SYSCALLS.getStreamFromFD(),
  3921.                 offset_high = SYSCALLS.get(),
  3922.                 offset_low = SYSCALLS.get(),
  3923.                 result = SYSCALLS.get(),
  3924.                 whence = SYSCALLS.get();
  3925.             var offset = offset_low;
  3926.             assert(offset_high === 0);
  3927.             FS.llseek(stream, offset, whence);
  3928.             HEAP32[result >> 2] = stream.position;
  3929.             if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;
  3930.             return 0
  3931.         } catch (e) {
  3932.             if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
  3933.             return -e.errno
  3934.         }
  3935.     }
  3936.  
  3937.     function _623dad57() {
  3938.         return Math.random()
  3939.     }
  3940.  
  3941.     function _7c61c83(which, varargs) {
  3942.         SYSCALLS.varargs = varargs;
  3943.         try {
  3944.             var stream = SYSCALLS.get(),
  3945.                 iov = SYSCALLS.get(),
  3946.                 iovcnt = SYSCALLS.get();
  3947.             var ret = 0;
  3948.             if (!_7c61c83.buffer) {
  3949.                 _7c61c83.buffers = [null, [],
  3950.                     []
  3951.                 ];
  3952.                 _7c61c83.printChar = (function (stream, curr) {
  3953.                     var buffer = _7c61c83.buffers[stream];
  3954.                     assert(buffer);
  3955.                     if (curr === 0 || curr === 10) {
  3956.                         (stream === 1 ? Module["print"] : Module["printErr"])(UTF8ArrayToString(buffer, 0));
  3957.                         buffer.length = 0
  3958.                     } else {
  3959.                         buffer.push(curr)
  3960.                     }
  3961.                 })
  3962.             }
  3963.             for (var i = 0; i < iovcnt; i++) {
  3964.                 var ptr = HEAP32[iov + i * 8 >> 2];
  3965.                 var len = HEAP32[iov + (i * 8 + 4) >> 2];
  3966.                 for (var j = 0; j < len; j++) {
  3967.                     _7c61c83.printChar(stream, HEAPU8[ptr + j])
  3968.                 }
  3969.                 ret += len
  3970.             }
  3971.             return ret
  3972.         } catch (e) {
  3973.             if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
  3974.             return -e.errno
  3975.         }
  3976.     }
  3977.     Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, resizeCanvas, vrDevice) {
  3978.         Module.printErr("Module.requestFullScreen is deprecated. Please call Module.requestFullscreen instead.");
  3979.         Module["requestFullScreen"] = Module["requestFullscreen"];
  3980.         Browser.requestFullScreen(lockPointer, resizeCanvas, vrDevice)
  3981.     };
  3982.     Module["requestFullscreen"] = function Module_requestFullscreen(lockPointer, resizeCanvas, vrDevice) {
  3983.         Browser.requestFullscreen(lockPointer, resizeCanvas, vrDevice)
  3984.     };
  3985.     Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) {
  3986.         Browser.requestAnimationFrame(func)
  3987.     };
  3988.     Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) {
  3989.         Browser.setCanvasSize(width, height, noUpdates)
  3990.     };
  3991.     Module["pauseMainLoop"] = function Module_pauseMainLoop() {
  3992.         Browser.mainLoop.pause()
  3993.     };
  3994.     Module["resumeMainLoop"] = function Module_resumeMainLoop() {
  3995.         Browser.mainLoop.resume()
  3996.     };
  3997.     Module["getUserMedia"] = function Module_getUserMedia() {
  3998.         Browser.getUserMedia()
  3999.     };
  4000.     Module["createContext"] = function Module_createContext(canvas, useWebGL, setInModule, webGLContextAttributes) {
  4001.         return Browser.createContext(canvas, useWebGL, setInModule, webGLContextAttributes)
  4002.     };
  4003.     if (ENVIRONMENT_IS_NODE) {
  4004.         _193d0694 = function _161b4383() {
  4005.             var t = process["hrtime"]();
  4006.             return t[0] * 1e3 + t[1] / 1e6
  4007.         }
  4008.     } else if (typeof dateNow !== "undefined") {
  4009.         _193d0694 = dateNow
  4010.     } else if (typeof self === "object" && self["performance"] && typeof self["performance"]["now"] === "function") {
  4011.         _193d0694 = (function () {
  4012.             return self["performance"]["now"]()
  4013.         })
  4014.     } else if (typeof performance === "object" && typeof performance["now"] === "function") {
  4015.         _193d0694 = (function () {
  4016.             return performance["now"]()
  4017.         })
  4018.     } else {
  4019.         _193d0694 = Date.now
  4020.     }
  4021.     _25823f4f(ENV);
  4022.     _66c070c.push((function () {
  4023.         var fflush = Module["_63bdf0d0"];
  4024.         if (fflush) fflush(0);
  4025.         var printChar = _7c61c83.printChar;
  4026.         if (!printChar) return;
  4027.         var buffers = _7c61c83.buffers;
  4028.         if (buffers[1].length) printChar(1, 10);
  4029.         if (buffers[2].length) printChar(2, 10)
  4030.     }));
  4031.     DYNAMICTOP_PTR = allocate(1, "i32", ALLOC_STATIC);
  4032.     STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);
  4033.     STACK_MAX = STACK_BASE + TOTAL_STACK;
  4034.     DYNAMIC_BASE = Runtime.alignMemory(STACK_MAX);
  4035.     HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE;
  4036.     staticSealed = true;
  4037.     Module["wasmTableSize"] = 768;
  4038.     Module["wasmMaxTableSize"] = 768;
  4039.  
  4040.     function invoke_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {
  4041.         try {
  4042.             return Module["dynCall_iiiiiiii"](index, a1, a2, a3, a4, a5, a6, a7)
  4043.         } catch (e) {
  4044.             if (typeof e !== "number" && e !== "longjmp") throw e;
  4045.             Module["setThrew"](1, 0)
  4046.         }
  4047.     }
  4048.  
  4049.     function invoke_iiii(index, a1, a2, a3) {
  4050.         try {
  4051.             return Module["dynCall_iiii"](index, a1, a2, a3)
  4052.         } catch (e) {
  4053.             if (typeof e !== "number" && e !== "longjmp") throw e;
  4054.             Module["setThrew"](1, 0)
  4055.         }
  4056.     }
  4057.  
  4058.     function invoke_viiiiii(index, a1, a2, a3, a4, a5, a6) {
  4059.         try {
  4060.             Module["dynCall_viiiiii"](index, a1, a2, a3, a4, a5, a6)
  4061.         } catch (e) {
  4062.             if (typeof e !== "number" && e !== "longjmp") throw e;
  4063.             Module["setThrew"](1, 0)
  4064.         }
  4065.     }
  4066.  
  4067.     function invoke_viiiii(index, a1, a2, a3, a4, a5) {
  4068.         try {
  4069.             Module["dynCall_viiiii"](index, a1, a2, a3, a4, a5)
  4070.         } catch (e) {
  4071.             if (typeof e !== "number" && e !== "longjmp") throw e;
  4072.             Module["setThrew"](1, 0)
  4073.         }
  4074.     }
  4075.  
  4076.     function invoke_dii(index, a1, a2) {
  4077.         try {
  4078.             return Module["dynCall_dii"](index, a1, a2)
  4079.         } catch (e) {
  4080.             if (typeof e !== "number" && e !== "longjmp") throw e;
  4081.             Module["setThrew"](1, 0)
  4082.         }
  4083.     }
  4084.  
  4085.     function invoke_iiiiiid(index, a1, a2, a3, a4, a5, a6) {
  4086.         try {
  4087.             return Module["dynCall_iiiiiid"](index, a1, a2, a3, a4, a5, a6)
  4088.         } catch (e) {
  4089.             if (typeof e !== "number" && e !== "longjmp") throw e;
  4090.             Module["setThrew"](1, 0)
  4091.         }
  4092.     }
  4093.  
  4094.     function invoke_vi(index, a1) {
  4095.         try {
  4096.             Module["dynCall_vi"](index, a1)
  4097.         } catch (e) {
  4098.             if (typeof e !== "number" && e !== "longjmp") throw e;
  4099.             Module["setThrew"](1, 0)
  4100.         }
  4101.     }
  4102.  
  4103.     function invoke_vii(index, a1, a2) {
  4104.         try {
  4105.             Module["dynCall_vii"](index, a1, a2)
  4106.         } catch (e) {
  4107.             if (typeof e !== "number" && e !== "longjmp") throw e;
  4108.             Module["setThrew"](1, 0)
  4109.         }
  4110.     }
  4111.  
  4112.     function invoke_iiiiiii(index, a1, a2, a3, a4, a5, a6) {
  4113.         try {
  4114.             return Module["dynCall_iiiiiii"](index, a1, a2, a3, a4, a5, a6)
  4115.         } catch (e) {
  4116.             if (typeof e !== "number" && e !== "longjmp") throw e;
  4117.             Module["setThrew"](1, 0)
  4118.         }
  4119.     }
  4120.  
  4121.     function invoke_ii(index, a1) {
  4122.         try {
  4123.             return Module["dynCall_ii"](index, a1)
  4124.         } catch (e) {
  4125.             if (typeof e !== "number" && e !== "longjmp") throw e;
  4126.             Module["setThrew"](1, 0)
  4127.         }
  4128.     }
  4129.  
  4130.     function invoke_viii(index, a1, a2, a3) {
  4131.         try {
  4132.             Module["dynCall_viii"](index, a1, a2, a3)
  4133.         } catch (e) {
  4134.             if (typeof e !== "number" && e !== "longjmp") throw e;
  4135.             Module["setThrew"](1, 0)
  4136.         }
  4137.     }
  4138.  
  4139.     function invoke_v(index) {
  4140.         try {
  4141.             Module["dynCall_v"](index)
  4142.         } catch (e) {
  4143.             if (typeof e !== "number" && e !== "longjmp") throw e;
  4144.             Module["setThrew"](1, 0)
  4145.         }
  4146.     }
  4147.  
  4148.     function invoke_iiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {
  4149.         try {
  4150.             return Module["dynCall_iiiiiiiii"](index, a1, a2, a3, a4, a5, a6, a7, a8)
  4151.         } catch (e) {
  4152.             if (typeof e !== "number" && e !== "longjmp") throw e;
  4153.             Module["setThrew"](1, 0)
  4154.         }
  4155.     }
  4156.  
  4157.     function invoke_iiiii(index, a1, a2, a3, a4) {
  4158.         try {
  4159.             return Module["dynCall_iiiii"](index, a1, a2, a3, a4)
  4160.         } catch (e) {
  4161.             if (typeof e !== "number" && e !== "longjmp") throw e;
  4162.             Module["setThrew"](1, 0)
  4163.         }
  4164.     }
  4165.  
  4166.     function invoke_idd(index, a1, a2) {
  4167.         try {
  4168.             return Module["dynCall_idd"](index, a1, a2)
  4169.         } catch (e) {
  4170.             if (typeof e !== "number" && e !== "longjmp") throw e;
  4171.             Module["setThrew"](1, 0)
  4172.         }
  4173.     }
  4174.  
  4175.     function invoke_viiii(index, a1, a2, a3, a4) {
  4176.         try {
  4177.             Module["dynCall_viiii"](index, a1, a2, a3, a4)
  4178.         } catch (e) {
  4179.             if (typeof e !== "number" && e !== "longjmp") throw e;
  4180.             Module["setThrew"](1, 0)
  4181.         }
  4182.     }
  4183.  
  4184.     function invoke_iii(index, a1, a2) {
  4185.         try {
  4186.             return Module["dynCall_iii"](index, a1, a2)
  4187.         } catch (e) {
  4188.             if (typeof e !== "number" && e !== "longjmp") throw e;
  4189.             Module["setThrew"](1, 0)
  4190.         }
  4191.     }
  4192.  
  4193.     function invoke_iiiiid(index, a1, a2, a3, a4, a5) {
  4194.         try {
  4195.             return Module["dynCall_iiiiid"](index, a1, a2, a3, a4, a5)
  4196.         } catch (e) {
  4197.             if (typeof e !== "number" && e !== "longjmp") throw e;
  4198.             Module["setThrew"](1, 0)
  4199.         }
  4200.     }
  4201.  
  4202.     function invoke_iiiiii(index, a1, a2, a3, a4, a5) {
  4203.         try {
  4204.             return Module["dynCall_iiiiii"](index, a1, a2, a3, a4, a5)
  4205.         } catch (e) {
  4206.             if (typeof e !== "number" && e !== "longjmp") throw e;
  4207.             Module["setThrew"](1, 0)
  4208.         }
  4209.     }
  4210.     Module.asmGlobalArg = {
  4211.         "Math": Math,
  4212.         "Int8Array": Int8Array,
  4213.         "Int16Array": Int16Array,
  4214.         "Int32Array": Int32Array,
  4215.         "Uint8Array": Uint8Array,
  4216.         "Uint16Array": Uint16Array,
  4217.         "Uint32Array": Uint32Array,
  4218.         "Float32Array": Float32Array,
  4219.         "Float64Array": Float64Array,
  4220.         "NaN": NaN,
  4221.         "Infinity": Infinity
  4222.     };
  4223.     Module.asmLibraryArg = {
  4224.         "abort": abort,
  4225.         "assert": assert,
  4226.         "enlargeMemory": enlargeMemory,
  4227.         "getTotalMemory": getTotalMemory,
  4228.         "abortOnCannotGrowMemory": abortOnCannotGrowMemory,
  4229.         "invoke_iiiiiiii": invoke_iiiiiiii,
  4230.         "invoke_iiii": invoke_iiii,
  4231.         "invoke_viiiiii": invoke_viiiiii,
  4232.         "invoke_viiiii": invoke_viiiii,
  4233.         "invoke_dii": invoke_dii,
  4234.         "invoke_iiiiiid": invoke_iiiiiid,
  4235.         "invoke_vi": invoke_vi,
  4236.         "invoke_vii": invoke_vii,
  4237.         "invoke_iiiiiii": invoke_iiiiiii,
  4238.         "invoke_ii": invoke_ii,
  4239.         "invoke_viii": invoke_viii,
  4240.         "invoke_v": invoke_v,
  4241.         "invoke_iiiiiiiii": invoke_iiiiiiiii,
  4242.         "invoke_iiiii": invoke_iiiii,
  4243.         "invoke_idd": invoke_idd,
  4244.         "invoke_viiii": invoke_viiii,
  4245.         "invoke_iii": invoke_iii,
  4246.         "invoke_iiiiid": invoke_iiiiid,
  4247.         "invoke_iiiiii": invoke_iiiiii,
  4248.         "_fb3dc3a": _fb3dc3a,
  4249.         "_39ca9369": _39ca9369,
  4250.         "_5551d8fc": _5551d8fc,
  4251.         "_4836a480": _4836a480,
  4252.         "_a643679": _a643679,
  4253.         "_77e31241": _77e31241,
  4254.         "_28ad6ddf": _28ad6ddf,
  4255.         "_6c8bee3f": _6c8bee3f,
  4256.         "_f545f51": _f545f51,
  4257.         "_25823f4f": _25823f4f,
  4258.         "_557fca7f": _557fca7f,
  4259.         "_623dad57": _623dad57,
  4260.         "_552715ba": _552715ba,
  4261.         "_f8c6677": _f8c6677,
  4262.         "_727b9bd3": _727b9bd3,
  4263.         "_8f28c82": _8f28c82,
  4264.         "_2731fd00": _2731fd00,
  4265.         "_49181f3f": _49181f3f,
  4266.         "_2215aafb": _2215aafb,
  4267.         "_4d939a3e": _4d939a3e,
  4268.         "_4b33567d": _4b33567d,
  4269.         "_193d0694": _193d0694,
  4270.         "_129abf50": _129abf50,
  4271.         "_169de5e8": _169de5e8,
  4272.         "_41b75089": _41b75089,
  4273.         "_45904969": _45904969,
  4274.         "_1dcd48db": _1dcd48db,
  4275.         "_b67b105": _b67b105,
  4276.         "_673690ea": _673690ea,
  4277.         "_3de77134": _3de77134,
  4278.         "_3c858435": _3c858435,
  4279.         "_2f3e8db0": _2f3e8db0,
  4280.         "_132e7f17": _132e7f17,
  4281.         "_d73d820": _d73d820,
  4282.         "_5723d091": _5723d091,
  4283.         "_48a0dd12": _48a0dd12,
  4284.         "_1b1a303d": _1b1a303d,
  4285.         "_1ef9ed5a": _1ef9ed5a,
  4286.         "_19e2b3c3": _19e2b3c3,
  4287.         "_63144176": _63144176,
  4288.         "_7e438ad8": _7e438ad8,
  4289.         "_51835286": _51835286,
  4290.         "_516891bb": _516891bb,
  4291.         "_144a327": _144a327,
  4292.         "_4ce4ca21": _4ce4ca21,
  4293.         "_fa4d": _fa4d,
  4294.         "_7c61c83": _7c61c83,
  4295.         "_38e295b": _38e295b,
  4296.         "DYNAMICTOP_PTR": DYNAMICTOP_PTR,
  4297.         "tempDoublePtr": tempDoublePtr,
  4298.         "ABORT": ABORT,
  4299.         "STACKTOP": STACKTOP,
  4300.         "STACK_MAX": STACK_MAX,
  4301.         "cttz_i8": cttz_i8
  4302.     };
  4303.     var asm = Module["asm"](Module.asmGlobalArg, Module.asmLibraryArg, buffer);
  4304.     Module["asm"] = asm;
  4305.     var _75951e0 = Module["_75951e0"] = (function () {
  4306.         return Module["asm"]["_75951e0"].apply(null, arguments)
  4307.     });
  4308.     var _56beea56 = Module["_56beea56"] = (function () {
  4309.         return Module["asm"]["_56beea56"].apply(null, arguments)
  4310.     });
  4311.     var _5d84cf6 = Module["_5d84cf6"] = (function () {
  4312.         return Module["asm"]["_5d84cf6"].apply(null, arguments)
  4313.     });
  4314.     var _4741af2e = Module["_4741af2e"] = (function () {
  4315.         return Module["asm"]["_4741af2e"].apply(null, arguments)
  4316.     });
  4317.     var _356fc733 = Module["_356fc733"] = (function () {
  4318.         return Module["asm"]["_356fc733"].apply(null, arguments)
  4319.     });
  4320.     var stackSave = Module["stackSave"] = (function () {
  4321.         return Module["asm"]["stackSave"].apply(null, arguments)
  4322.     });
  4323.     var getTempRet0 = Module["getTempRet0"] = (function () {
  4324.         return Module["asm"]["getTempRet0"].apply(null, arguments)
  4325.     });
  4326.     var _252fdd0d = Module["_252fdd0d"] = (function () {
  4327.         return Module["asm"]["_252fdd0d"].apply(null, arguments)
  4328.     });
  4329.     var _2c81b5f9 = Module["_2c81b5f9"] = (function () {
  4330.         return Module["asm"]["_2c81b5f9"].apply(null, arguments)
  4331.     });
  4332.     var _688eefcb = Module["_688eefcb"] = (function () {
  4333.         return Module["asm"]["_688eefcb"].apply(null, arguments)
  4334.     });
  4335.     var setThrew = Module["setThrew"] = (function () {
  4336.         return Module["asm"]["setThrew"].apply(null, arguments)
  4337.     });
  4338.     var _7afddd24 = Module["_7afddd24"] = (function () {
  4339.         return Module["asm"]["_7afddd24"].apply(null, arguments)
  4340.     });
  4341.     var _6adaf797 = Module["_6adaf797"] = (function () {
  4342.         return Module["asm"]["_6adaf797"].apply(null, arguments)
  4343.     });
  4344.     var _560b4a3c = Module["_560b4a3c"] = (function () {
  4345.         return Module["asm"]["_560b4a3c"].apply(null, arguments)
  4346.     });
  4347.     var _96ae4d0 = Module["_96ae4d0"] = (function () {
  4348.         return Module["asm"]["_96ae4d0"].apply(null, arguments)
  4349.     });
  4350.     var _259add5b = Module["_259add5b"] = (function () {
  4351.         return Module["asm"]["_259add5b"].apply(null, arguments)
  4352.     });
  4353.     var setTempRet0 = Module["setTempRet0"] = (function () {
  4354.         return Module["asm"]["setTempRet0"].apply(null, arguments)
  4355.     });
  4356.     var _e655780 = Module["_e655780"] = (function () {
  4357.         return Module["asm"]["_e655780"].apply(null, arguments)
  4358.     });
  4359.     var _59c35f61 = Module["_59c35f61"] = (function () {
  4360.         return Module["asm"]["_59c35f61"].apply(null, arguments)
  4361.     });
  4362.     var _680bbb40 = Module["_680bbb40"] = (function () {
  4363.         return Module["asm"]["_680bbb40"].apply(null, arguments)
  4364.     });
  4365.     var _26ae057d = Module["_26ae057d"] = (function () {
  4366.         return Module["asm"]["_26ae057d"].apply(null, arguments)
  4367.     });
  4368.     var _7d4f49ee = Module["_7d4f49ee"] = (function () {
  4369.         return Module["asm"]["_7d4f49ee"].apply(null, arguments)
  4370.     });
  4371.     var _49a1de77 = Module["_49a1de77"] = (function () {
  4372.         return Module["asm"]["_49a1de77"].apply(null, arguments)
  4373.     });
  4374.     var stackAlloc = Module["stackAlloc"] = (function () {
  4375.         return Module["asm"]["stackAlloc"].apply(null, arguments)
  4376.     });
  4377.     var _290992bd = Module["_290992bd"] = (function () {
  4378.         return Module["asm"]["_290992bd"].apply(null, arguments)
  4379.     });
  4380.     var _3d963582 = Module["_3d963582"] = (function () {
  4381.         return Module["asm"]["_3d963582"].apply(null, arguments)
  4382.     });
  4383.     var _6fd50752 = Module["_6fd50752"] = (function () {
  4384.         return Module["asm"]["_6fd50752"].apply(null, arguments)
  4385.     });
  4386.     var _6eb7beea = Module["_6eb7beea"] = (function () {
  4387.         return Module["asm"]["_6eb7beea"].apply(null, arguments)
  4388.     });
  4389.     var _345fbbaf = Module["_345fbbaf"] = (function () {
  4390.         return Module["asm"]["_345fbbaf"].apply(null, arguments)
  4391.     });
  4392.     var _2433f883 = Module["_2433f883"] = (function () {
  4393.         return Module["asm"]["_2433f883"].apply(null, arguments)
  4394.     });
  4395.     var _3d7327d9 = Module["_3d7327d9"] = (function () {
  4396.         return Module["asm"]["_3d7327d9"].apply(null, arguments)
  4397.     });
  4398.     var _34a2056e = Module["_34a2056e"] = (function () {
  4399.         return Module["asm"]["_34a2056e"].apply(null, arguments)
  4400.     });
  4401.     var _9faf4fa = Module["_9faf4fa"] = (function () {
  4402.         return Module["asm"]["_9faf4fa"].apply(null, arguments)
  4403.     });
  4404.     var _6ce94622 = Module["_6ce94622"] = (function () {
  4405.         return Module["asm"]["_6ce94622"].apply(null, arguments)
  4406.     });
  4407.     var _5c78c81d = Module["_5c78c81d"] = (function () {
  4408.         return Module["asm"]["_5c78c81d"].apply(null, arguments)
  4409.     });
  4410.     var _3f64fe8a = Module["_3f64fe8a"] = (function () {
  4411.         return Module["asm"]["_3f64fe8a"].apply(null, arguments)
  4412.     });
  4413.     var _5f8a1ffa = Module["_5f8a1ffa"] = (function () {
  4414.         return Module["asm"]["_5f8a1ffa"].apply(null, arguments)
  4415.     });
  4416.     var _651291f9 = Module["_651291f9"] = (function () {
  4417.         return Module["asm"]["_651291f9"].apply(null, arguments)
  4418.     });
  4419.     var _5f5d9e98 = Module["_5f5d9e98"] = (function () {
  4420.         return Module["asm"]["_5f5d9e98"].apply(null, arguments)
  4421.     });
  4422.     var _344570a2 = Module["_344570a2"] = (function () {
  4423.         return Module["asm"]["_344570a2"].apply(null, arguments)
  4424.     });
  4425.     var _71a9251a = Module["_71a9251a"] = (function () {
  4426.         return Module["asm"]["_71a9251a"].apply(null, arguments)
  4427.     });
  4428.     var runPostSets = Module["runPostSets"] = (function () {
  4429.         return Module["asm"]["runPostSets"].apply(null, arguments)
  4430.     });
  4431.     var _757c06fc = Module["_757c06fc"] = (function () {
  4432.         return Module["asm"]["_757c06fc"].apply(null, arguments)
  4433.     });
  4434.     var _4d3c8304 = Module["_4d3c8304"] = (function () {
  4435.         return Module["asm"]["_4d3c8304"].apply(null, arguments)
  4436.     });
  4437.     var _2cf05b9b = Module["_2cf05b9b"] = (function () {
  4438.         return Module["asm"]["_2cf05b9b"].apply(null, arguments)
  4439.     });
  4440.     var stackRestore = Module["stackRestore"] = (function () {
  4441.         return Module["asm"]["stackRestore"].apply(null, arguments)
  4442.     });
  4443.     var _6849a7e7 = Module["_6849a7e7"] = (function () {
  4444.         return Module["asm"]["_6849a7e7"].apply(null, arguments)
  4445.     });
  4446.     var establishStackSpace = Module["establishStackSpace"] = (function () {
  4447.         return Module["asm"]["establishStackSpace"].apply(null, arguments)
  4448.     });
  4449.     var _71ce5170 = Module["_71ce5170"] = (function () {
  4450.         return Module["asm"]["_71ce5170"].apply(null, arguments)
  4451.     });
  4452.     var _1aef7396 = Module["_1aef7396"] = (function () {
  4453.         return Module["asm"]["_1aef7396"].apply(null, arguments)
  4454.     });
  4455.     var _67bfe025 = Module["_67bfe025"] = (function () {
  4456.         return Module["asm"]["_67bfe025"].apply(null, arguments)
  4457.     });
  4458.     var dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = (function () {
  4459.         return Module["asm"]["dynCall_iiiiiiii"].apply(null, arguments)
  4460.     });
  4461.     var dynCall_iiii = Module["dynCall_iiii"] = (function () {
  4462.         return Module["asm"]["dynCall_iiii"].apply(null, arguments)
  4463.     });
  4464.     var dynCall_viiiiii = Module["dynCall_viiiiii"] = (function () {
  4465.         return Module["asm"]["dynCall_viiiiii"].apply(null, arguments)
  4466.     });
  4467.     var dynCall_viiiii = Module["dynCall_viiiii"] = (function () {
  4468.         return Module["asm"]["dynCall_viiiii"].apply(null, arguments)
  4469.     });
  4470.     var dynCall_dii = Module["dynCall_dii"] = (function () {
  4471.         return Module["asm"]["dynCall_dii"].apply(null, arguments)
  4472.     });
  4473.     var dynCall_iiiiiid = Module["dynCall_iiiiiid"] = (function () {
  4474.         return Module["asm"]["dynCall_iiiiiid"].apply(null, arguments)
  4475.     });
  4476.     var dynCall_vi = Module["dynCall_vi"] = (function () {
  4477.         return Module["asm"]["dynCall_vi"].apply(null, arguments)
  4478.     });
  4479.     var dynCall_vii = Module["dynCall_vii"] = (function () {
  4480.         return Module["asm"]["dynCall_vii"].apply(null, arguments)
  4481.     });
  4482.     var dynCall_iiiiiii = Module["dynCall_iiiiiii"] = (function () {
  4483.         return Module["asm"]["dynCall_iiiiiii"].apply(null, arguments)
  4484.     });
  4485.     var dynCall_ii = Module["dynCall_ii"] = (function () {
  4486.         return Module["asm"]["dynCall_ii"].apply(null, arguments)
  4487.     });
  4488.     var dynCall_viii = Module["dynCall_viii"] = (function () {
  4489.         return Module["asm"]["dynCall_viii"].apply(null, arguments)
  4490.     });
  4491.     var dynCall_v = Module["dynCall_v"] = (function () {
  4492.         return Module["asm"]["dynCall_v"].apply(null, arguments)
  4493.     });
  4494.     var dynCall_iiiiiiiii = Module["dynCall_iiiiiiiii"] = (function () {
  4495.         return Module["asm"]["dynCall_iiiiiiiii"].apply(null, arguments)
  4496.     });
  4497.     var dynCall_iiiii = Module["dynCall_iiiii"] = (function () {
  4498.         return Module["asm"]["dynCall_iiiii"].apply(null, arguments)
  4499.     });
  4500.     var dynCall_idd = Module["dynCall_idd"] = (function () {
  4501.         return Module["asm"]["dynCall_idd"].apply(null, arguments)
  4502.     });
  4503.     var dynCall_viiii = Module["dynCall_viiii"] = (function () {
  4504.         return Module["asm"]["dynCall_viiii"].apply(null, arguments)
  4505.     });
  4506.     var dynCall_iii = Module["dynCall_iii"] = (function () {
  4507.         return Module["asm"]["dynCall_iii"].apply(null, arguments)
  4508.     });
  4509.     var dynCall_iiiiid = Module["dynCall_iiiiid"] = (function () {
  4510.         return Module["asm"]["dynCall_iiiiid"].apply(null, arguments)
  4511.     });
  4512.     var dynCall_iiiiii = Module["dynCall_iiiiii"] = (function () {
  4513.         return Module["asm"]["dynCall_iiiiii"].apply(null, arguments)
  4514.     });
  4515.     Runtime.stackAlloc = Module["stackAlloc"];
  4516.     Runtime.stackSave = Module["stackSave"];
  4517.     Runtime.stackRestore = Module["stackRestore"];
  4518.     Runtime.establishStackSpace = Module["establishStackSpace"];
  4519.     Runtime.setTempRet0 = Module["setTempRet0"];
  4520.     Runtime.getTempRet0 = Module["getTempRet0"];
  4521.     Module["asm"] = asm;
  4522.     if (memoryInitializer) {
  4523.         if (typeof Module["locateFile"] === "function") {
  4524.             memoryInitializer = Module["locateFile"](memoryInitializer)
  4525.         } else if (Module["memoryInitializerPrefixURL"]) {
  4526.             memoryInitializer = Module["memoryInitializerPrefixURL"] + memoryInitializer
  4527.         }
  4528.         if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) {
  4529.             var data = Module["readBinary"](memoryInitializer);
  4530.             HEAPU8.set(data, Runtime.GLOBAL_BASE)
  4531.         } else {
  4532.             addRunDependency("memory initializer");
  4533.             var applyMemoryInitializer = (function (data) {
  4534.                 if (data.byteLength) data = new Uint8Array(data);
  4535.                 HEAPU8.set(data, Runtime.GLOBAL_BASE);
  4536.                 if (Module["memoryInitializerRequest"]) delete Module["memoryInitializerRequest"].response;
  4537.                 removeRunDependency("memory initializer")
  4538.             });
  4539.  
  4540.             function doBrowserLoad() {
  4541.                 Module["readAsync"](memoryInitializer, applyMemoryInitializer, (function () {
  4542.                     throw "could not load memory initializer " + memoryInitializer
  4543.                 }))
  4544.             }
  4545.             if (Module["memoryInitializerRequest"]) {
  4546.                 function useRequest() {
  4547.                     var request = Module["memoryInitializerRequest"];
  4548.                     if (request.status !== 200 && request.status !== 0) {
  4549.                         console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: " + request.status + " , retrying " + memoryInitializer);
  4550.                         doBrowserLoad();
  4551.                         return
  4552.                     }
  4553.                     applyMemoryInitializer(request.response)
  4554.                 }
  4555.                 if (Module["memoryInitializerRequest"].response) {
  4556.                     setTimeout(useRequest, 0)
  4557.                 } else {
  4558.                     Module["memoryInitializerRequest"].addEventListener("load", useRequest)
  4559.                 }
  4560.             } else {
  4561.                 doBrowserLoad()
  4562.             }
  4563.         }
  4564.     }
  4565.  
  4566.     function ExitStatus(status) {
  4567.         this.name = "ExitStatus";
  4568.         this.message = "Program terminated with exit(" + status + ")";
  4569.         this.status = status
  4570.     }
  4571.     ExitStatus.prototype = new Error;
  4572.     ExitStatus.prototype.constructor = ExitStatus;
  4573.     var initialStackTop;
  4574.     var preloadStartTime = null;
  4575.     var calledMain = false;
  4576.     dependenciesFulfilled = function runCaller() {
  4577.         if (!Module["calledRun"]) run();
  4578.         if (!Module["calledRun"]) dependenciesFulfilled = runCaller
  4579.     };
  4580.     Module["callMain"] = Module.callMain = function callMain(args) {
  4581.         args = args || [];
  4582.         ensureInitRuntime();
  4583.         var argc = args.length + 1;
  4584.  
  4585.         function pad() {
  4586.             for (var i = 0; i < 4 - 1; i++) {
  4587.                 argv.push(0)
  4588.             }
  4589.         }
  4590.         var argv = [allocate(intArrayFromString(Module["thisProgram"]), "i8", ALLOC_NORMAL)];
  4591.         pad();
  4592.         for (var i = 0; i < argc - 1; i = i + 1) {
  4593.             argv.push(allocate(intArrayFromString(args[i]), "i8", ALLOC_NORMAL));
  4594.             pad()
  4595.         }
  4596.         argv.push(0);
  4597.         argv = allocate(argv, "i32", ALLOC_NORMAL);
  4598.         try {
  4599.             var ret = Module["_356fc733"](argc, argv, 0);
  4600.             exit(ret, true)
  4601.         } catch (e) {
  4602.             if (e instanceof ExitStatus) {
  4603.                 return
  4604.             } else if (e == "SimulateInfiniteLoop") {
  4605.                 Module["noExitRuntime"] = true;
  4606.                 return
  4607.             } else {
  4608.                 var toLog = e;
  4609.                 if (e && typeof e === "object" && e.stack) {
  4610.                     toLog = [e, e.stack]
  4611.                 }
  4612.                 Module.printErr("exception thrown: " + toLog);
  4613.                 Module["quit"](1, e)
  4614.             }
  4615.         } finally {
  4616.             calledMain = true
  4617.         }
  4618.     };
  4619.  
  4620.     function run(args) {
  4621.         args = args || Module["arguments"];
  4622.         if (preloadStartTime === null) preloadStartTime = Date.now();
  4623.         if (runDependencies > 0) {
  4624.             return
  4625.         }
  4626.         preRun();
  4627.         if (runDependencies > 0) return;
  4628.         if (Module["calledRun"]) return;
  4629.  
  4630.         function doRun() {
  4631.             if (Module["calledRun"]) return;
  4632.             Module["calledRun"] = true;
  4633.             if (ABORT) return;
  4634.             ensureInitRuntime();
  4635.             preMain();
  4636.             if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"]();
  4637.             if (Module["_356fc733"] && shouldRunNow) Module["callMain"](args);
  4638.             postRun()
  4639.         }
  4640.         if (Module["setStatus"]) {
  4641.             Module["setStatus"]("Running...");
  4642.             setTimeout((function () {
  4643.                 setTimeout((function () {
  4644.                     Module["setStatus"]("")
  4645.                 }), 1);
  4646.                 doRun()
  4647.             }), 1)
  4648.         } else {
  4649.             doRun()
  4650.         }
  4651.     }
  4652.     Module["run"] = Module.run = run;
  4653.  
  4654.     function exit(status, implicit) {
  4655.         if (implicit && Module["noExitRuntime"]) {
  4656.             return
  4657.         }
  4658.         if (Module["noExitRuntime"]) {} else {
  4659.             ABORT = true;
  4660.             EXITSTATUS = status;
  4661.             STACKTOP = initialStackTop;
  4662.             exitRuntime();
  4663.             if (Module["onExit"]) Module["onExit"](status)
  4664.         }
  4665.         if (ENVIRONMENT_IS_NODE) {
  4666.             process["exit"](status)
  4667.         }
  4668.         Module["quit"](status, new ExitStatus(status))
  4669.     }
  4670.     Module["exit"] = Module.exit = exit;
  4671.     var abortDecorators = [];
  4672.  
  4673.     function abort(what) {
  4674.         if (what !== undefined) {
  4675.             Module.print(what);
  4676.             Module.printErr(what);
  4677.             what = JSON.stringify(what)
  4678.         } else {
  4679.             what = ""
  4680.         }
  4681.         ABORT = true;
  4682.         EXITSTATUS = 1;
  4683.         var extra = "\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";
  4684.         var output = "abort(" + what + ") at " + stackTrace() + extra;
  4685.         if (abortDecorators) {
  4686.             abortDecorators.forEach((function (decorator) {
  4687.                 output = decorator(output, what)
  4688.             }))
  4689.         }
  4690.         throw output
  4691.     }
  4692.     Module["abort"] = Module.abort = abort;
  4693.     if (Module["preInit"]) {
  4694.         if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]];
  4695.         while (Module["preInit"].length > 0) {
  4696.             Module["preInit"].pop()()
  4697.         }
  4698.     }
  4699.     var shouldRunNow = true;
  4700.     if (Module["noInitialRun"]) {
  4701.         shouldRunNow = false
  4702.     }
  4703.     Module["noExitRuntime"] = true;
  4704.     run()
  4705. }))(window)
Add Comment
Please, Sign In to add comment