Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Relay Chess Stockfish.js
This file has been truncated, but you can view the full file.
var Module = {
print: (function(stdout) {
postMessage(stdout)
})
};
var Module;
if (!Module) Module = (typeof Module !== "undefined" ? Module : null) || {};
var moduleOverrides = {};
for (var key in Module) {
if (Module.hasOwnProperty(key)) {
moduleOverrides[key] = Module[key]
}
}
var ENVIRONMENT_IS_WEB = typeof window === "object";
var ENVIRONMENT_IS_WORKER = typeof importScripts === "function";
var ENVIRONMENT_IS_NODE = typeof process === "object" && typeof require === "function" && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER;
var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
if (ENVIRONMENT_IS_NODE) {
if (!Module["print"]) Module["print"] = function print(x) {
process["stdout"].write(x + "\n")
};
if (!Module["printErr"]) Module["printErr"] = function printErr(x) {
process["stderr"].write(x + "\n")
};
var nodeFS = require("fs");
var nodePath = require("path");
Module["read"] = function read(filename, binary) {
filename = nodePath["normalize"](filename);
var ret = nodeFS["readFileSync"](filename);
if (!ret && filename != nodePath["resolve"](filename)) {
filename = path.join(__dirname, "..", "src", filename);
ret = nodeFS["readFileSync"](filename)
}
if (ret && !binary) ret = ret.toString();
return ret
};
Module["readBinary"] = function readBinary(filename) {
var ret = Module["read"](filename, true);
if (!ret.buffer) {
ret = new Uint8Array(ret)
}
assert(ret.buffer);
return ret
};
Module["load"] = function load(f) {
globalEval(read(f))
};
if (!Module["thisProgram"]) {
if (process["argv"].length > 1) {
Module["thisProgram"] = process["argv"][1].replace(/\\/g, "/")
} else {
Module["thisProgram"] = "unknown-program"
}
}
Module["arguments"] = process["argv"].slice(2);
if (typeof module !== "undefined") {
module["exports"] = Module
}
process["on"]("uncaughtException", (function(ex) {
if (!(ex instanceof ExitStatus)) {
throw ex
}
}));
Module["inspect"] = (function() {
return "[Emscripten Module object]"
})
} else if (ENVIRONMENT_IS_SHELL) {
if (!Module["print"]) Module["print"] = print;
if (typeof printErr != "undefined") Module["printErr"] = printErr;
if (typeof read != "undefined") {
Module["read"] = read
} else {
Module["read"] = function read() {
throw "no read() available (jsc?)"
}
}
Module["readBinary"] = function readBinary(f) {
if (typeof readbuffer === "function") {
return new Uint8Array(readbuffer(f))
}
var data = read(f, "binary");
assert(typeof data === "object");
return data
};
if (typeof scriptArgs != "undefined") {
Module["arguments"] = scriptArgs
} else if (typeof arguments != "undefined") {
Module["arguments"] = arguments
}
} else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
Module["read"] = function read(url) {
var xhr = new XMLHttpRequest;
xhr.open("GET", url, false);
xhr.send(null);
return xhr.responseText
};
if (typeof arguments != "undefined") {
Module["arguments"] = arguments
}
if (typeof console !== "undefined") {
if (!Module["print"]) Module["print"] = function print(x) {
console.log(x)
};
if (!Module["printErr"]) Module["printErr"] = function printErr(x) {
console.log(x)
}
} else {
var TRY_USE_DUMP = false;
if (!Module["print"]) Module["print"] = TRY_USE_DUMP && typeof dump !== "undefined" ? (function(x) {
dump(x)
}) : (function(x) {})
}
if (ENVIRONMENT_IS_WORKER) {
Module["load"] = importScripts
}
if (typeof Module["setWindowTitle"] === "undefined") {
Module["setWindowTitle"] = (function(title) {
document.title = title
})
}
} else {
throw "Unknown runtime environment. Where are we?"
}
function globalEval(x) {
eval.call(null, x)
}
if (!Module["load"] && Module["read"]) {
Module["load"] = function load(f) {
globalEval(Module["read"](f))
}
}
if (!Module["print"]) {
Module["print"] = (function() {})
}
if (!Module["printErr"]) {
Module["printErr"] = Module["print"]
}
if (!Module["arguments"]) {
Module["arguments"] = []
}
if (!Module["thisProgram"]) {
Module["thisProgram"] = "./this.program"
}
Module.print = Module["print"];
Module.printErr = Module["printErr"];
Module["preRun"] = [];
Module["postRun"] = [];
for (var key in moduleOverrides) {
if (moduleOverrides.hasOwnProperty(key)) {
Module[key] = moduleOverrides[key]
}
}
var Runtime = {
setTempRet0: (function(value) {
tempRet0 = value
}),
getTempRet0: (function() {
return tempRet0
}),
stackSave: (function() {
return STACKTOP
}),
stackRestore: (function(stackTop) {
STACKTOP = stackTop
}),
getNativeTypeSize: (function(type) {
switch (type) {
case "i1":
case "i8":
return 1;
case "i16":
return 2;
case "i32":
return 4;
case "i64":
return 8;
case "float":
return 4;
case "double":
return 8;
default:
{
if (type[type.length - 1] === "*") {
return Runtime.QUANTUM_SIZE
} else if (type[0] === "i") {
var bits = parseInt(type.substr(1));
assert(bits % 8 === 0);
return bits / 8
} else {
return 0
}
}
}
}),
getNativeFieldSize: (function(type) {
return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE)
}),
STACK_ALIGN: 16,
prepVararg: (function(ptr, type) {
if (type === "double" || type === "i64") {
if (ptr & 7) {
assert((ptr & 7) === 4);
ptr += 4
}
} else {
assert((ptr & 3) === 0)
}
return ptr
}),
getAlignSize: (function(type, size, vararg) {
if (!vararg && (type == "i64" || type == "double")) return 8;
if (!type) return Math.min(size, 8);
return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE)
}),
dynCall: (function(sig, ptr, args) {
if (args && args.length) {
if (!args.splice) args = Array.prototype.slice.call(args);
args.splice(0, 0, ptr);
return Module["dynCall_" + sig].apply(null, args)
} else {
return Module["dynCall_" + sig].call(null, ptr)
}
}),
functionPointers: [],
addFunction: (function(func) {
for (var i = 0; i < Runtime.functionPointers.length; i++) {
if (!Runtime.functionPointers[i]) {
Runtime.functionPointers[i] = func;
return 2 * (1 + i)
}
}
throw "Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."
}),
removeFunction: (function(index) {
Runtime.functionPointers[(index - 2) / 2] = null
}),
warnOnce: (function(text) {
if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {};
if (!Runtime.warnOnce.shown[text]) {
Runtime.warnOnce.shown[text] = 1;
Module.printErr(text)
}
}),
funcWrappers: {},
getFuncWrapper: (function(func, sig) {
assert(sig);
if (!Runtime.funcWrappers[sig]) {
Runtime.funcWrappers[sig] = {}
}
var sigCache = Runtime.funcWrappers[sig];
if (!sigCache[func]) {
sigCache[func] = function dynCall_wrapper() {
return Runtime.dynCall(sig, func, arguments)
}
}
return sigCache[func]
}),
getCompilerSetting: (function(name) {
throw "You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work"
}),
stackAlloc: (function(size) {
var ret = STACKTOP;
STACKTOP = STACKTOP + size | 0;
STACKTOP = STACKTOP + 15 & -16;
return ret
}),
staticAlloc: (function(size) {
var ret = STATICTOP;
STATICTOP = STATICTOP + size | 0;
STATICTOP = STATICTOP + 15 & -16;
return ret
}),
dynamicAlloc: (function(size) {
var ret = DYNAMICTOP;
DYNAMICTOP = DYNAMICTOP + size | 0;
DYNAMICTOP = DYNAMICTOP + 15 & -16;
if (DYNAMICTOP >= TOTAL_MEMORY) {
var success = enlargeMemory();
if (!success) {
DYNAMICTOP = ret;
return 0
}
}
return ret
}),
alignMemory: (function(size, quantum) {
var ret = size = Math.ceil(size / (quantum ? quantum : 16)) * (quantum ? quantum : 16);
return ret
}),
makeBigInt: (function(low, high, unsigned) {
var ret = unsigned ? +(low >>> 0) + +(high >>> 0) * +4294967296 : +(low >>> 0) + +(high | 0) * +4294967296;
return ret
}),
GLOBAL_BASE: 8,
QUANTUM_SIZE: 4,
__dummy__: 0
};
Module["Runtime"] = Runtime;
var __THREW__ = 0;
var ABORT = false;
var EXITSTATUS = 0;
var undef = 0;
var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD, tempDouble, tempFloat;
var tempI64, tempI64b;
var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9;
function assert(condition, text) {
if (!condition) {
abort("Assertion failed: " + text)
}
}
var globalScope = this;
function getCFunc(ident) {
var func = Module["_" + ident];
if (!func) {
try {
func = eval("_" + ident)
} catch (e) {}
}
assert(func, "Cannot call unknown function " + ident + " (perhaps LLVM optimizations or closure removed it?)");
return func
}
var cwrap, ccall;
((function() {
var JSfuncs = {
"stackSave": (function() {
Runtime.stackSave()
}),
"stackRestore": (function() {
Runtime.stackRestore()
}),
"arrayToC": (function(arr) {
var ret = Runtime.stackAlloc(arr.length);
writeArrayToMemory(arr, ret);
return ret
}),
"stringToC": (function(str) {
var ret = 0;
if (str !== null && str !== undefined && str !== 0) {
ret = Runtime.stackAlloc((str.length << 2) + 1);
writeStringToMemory(str, ret)
}
return ret
})
};
var toC = {
"string": JSfuncs["stringToC"],
"array": JSfuncs["arrayToC"]
};
ccall = function ccallFunc(ident, returnType, argTypes, args, opts) {
var func = getCFunc(ident);
var cArgs = [];
var stack = 0;
if (args) {
for (var i = 0; i < args.length; i++) {
var converter = toC[argTypes[i]];
if (converter) {
if (stack === 0) stack = Runtime.stackSave();
cArgs[i] = converter(args[i])
} else {
cArgs[i] = args[i]
}
}
}
var ret = func.apply(null, cArgs);
if (returnType === "string") ret = Pointer_stringify(ret);
if (stack !== 0) {
if (opts && opts.async) {
EmterpreterAsync.asyncFinalizers.push((function() {
Runtime.stackRestore(stack)
}));
return
}
Runtime.stackRestore(stack)
}
return ret
};
var sourceRegex = /^function\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/;
function parseJSFunc(jsfunc) {
var parsed = jsfunc.toString().match(sourceRegex).slice(1);
return {
arguments: parsed[0],
body: parsed[1],
returnValue: parsed[2]
}
}
var JSsource = {};
for (var fun in JSfuncs) {
if (JSfuncs.hasOwnProperty(fun)) {
JSsource[fun] = parseJSFunc(JSfuncs[fun])
}
}
cwrap = function cwrap(ident, returnType, argTypes) {
argTypes = argTypes || [];
var cfunc = getCFunc(ident);
var numericArgs = argTypes.every((function(type) {
return type === "number"
}));
var numericRet = returnType !== "string";
if (numericRet && numericArgs) {
return cfunc
}
var argNames = argTypes.map((function(x, i) {
return "$" + i
}));
var funcstr = "(function(" + argNames.join(",") + ") {";
var nargs = argTypes.length;
if (!numericArgs) {
funcstr += "var stack = " + JSsource["stackSave"].body + ";";
for (var i = 0; i < nargs; i++) {
var arg = argNames[i],
type = argTypes[i];
if (type === "number") continue;
var convertCode = JSsource[type + "ToC"];
funcstr += "var " + convertCode.arguments + " = " + arg + ";";
funcstr += convertCode.body + ";";
funcstr += arg + "=" + convertCode.returnValue + ";"
}
}
var cfuncname = parseJSFunc((function() {
return cfunc
})).returnValue;
funcstr += "var ret = " + cfuncname + "(" + argNames.join(",") + ");";
if (!numericRet) {
var strgfy = parseJSFunc((function() {
return Pointer_stringify
})).returnValue;
funcstr += "ret = " + strgfy + "(ret);"
}
if (!numericArgs) {
funcstr += JSsource["stackRestore"].body.replace("()", "(stack)") + ";"
}
funcstr += "return ret})";
return eval(funcstr)
}
}))();
Module["ccall"] = ccall;
Module["cwrap"] = cwrap;
function setValue(ptr, value, type, noSafe) {
type = type || "i8";
if (type.charAt(type.length - 1) === "*") type = "i32";
switch (type) {
case "i1":
HEAP8[ptr >> 0] = value;
break;
case "i8":
HEAP8[ptr >> 0] = value;
break;
case "i16":
HEAP16[ptr >> 1] = value;
break;
case "i32":
HEAP32[ptr >> 2] = value;
break;
case "i64":
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];
break;
case "float":
HEAPF32[ptr >> 2] = value;
break;
case "double":
HEAPF64[ptr >> 3] = value;
break;
default:
abort("invalid type for setValue: " + type)
}
}
Module["setValue"] = setValue;
function getValue(ptr, type, noSafe) {
type = type || "i8";
if (type.charAt(type.length - 1) === "*") type = "i32";
switch (type) {
case "i1":
return HEAP8[ptr >> 0];
case "i8":
return HEAP8[ptr >> 0];
case "i16":
return HEAP16[ptr >> 1];
case "i32":
return HEAP32[ptr >> 2];
case "i64":
return HEAP32[ptr >> 2];
case "float":
return HEAPF32[ptr >> 2];
case "double":
return HEAPF64[ptr >> 3];
default:
abort("invalid type for setValue: " + type)
}
return null
}
Module["getValue"] = getValue;
var ALLOC_NORMAL = 0;
var ALLOC_STACK = 1;
var ALLOC_STATIC = 2;
var ALLOC_DYNAMIC = 3;
var ALLOC_NONE = 4;
Module["ALLOC_NORMAL"] = ALLOC_NORMAL;
Module["ALLOC_STACK"] = ALLOC_STACK;
Module["ALLOC_STATIC"] = ALLOC_STATIC;
Module["ALLOC_DYNAMIC"] = ALLOC_DYNAMIC;
Module["ALLOC_NONE"] = ALLOC_NONE;
function allocate(slab, types, allocator, ptr) {
var zeroinit, size;
if (typeof slab === "number") {
zeroinit = true;
size = slab
} else {
zeroinit = false;
size = slab.length
}
var singleType = typeof types === "string" ? types : null;
var ret;
if (allocator == ALLOC_NONE) {
ret = ptr
} else {
ret = [_malloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length))
}
if (zeroinit) {
var ptr = ret,
stop;
assert((ret & 3) == 0);
stop = ret + (size & ~3);
for (; ptr < stop; ptr += 4) {
HEAP32[ptr >> 2] = 0
}
stop = ret + size;
while (ptr < stop) {
HEAP8[ptr++ >> 0] = 0
}
return ret
}
if (singleType === "i8") {
if (slab.subarray || slab.slice) {
HEAPU8.set(slab, ret)
} else {
HEAPU8.set(new Uint8Array(slab), ret)
}
return ret
}
var i = 0,
type, typeSize, previousType;
while (i < size) {
var curr = slab[i];
if (typeof curr === "function") {
curr = Runtime.getFunctionIndex(curr)
}
type = singleType || types[i];
if (type === 0) {
i++;
continue
}
if (type == "i64") type = "i32";
setValue(ret + i, curr, type);
if (previousType !== type) {
typeSize = Runtime.getNativeTypeSize(type);
previousType = type
}
i += typeSize
}
return ret
}
Module["allocate"] = allocate;
function getMemory(size) {
if (!staticSealed) return Runtime.staticAlloc(size);
if (typeof _sbrk !== "undefined" && !_sbrk.called || !runtimeInitialized) return Runtime.dynamicAlloc(size);
return _malloc(size)
}
Module["getMemory"] = getMemory;
function Pointer_stringify(ptr, length) {
if (length === 0 || !ptr) return "";
var hasUtf = 0;
var t;
var i = 0;
while (1) {
t = HEAPU8[ptr + i >> 0];
hasUtf |= t;
if (t == 0 && !length) break;
i++;
if (length && i == length) break
}
if (!length) length = i;
var ret = "";
if (hasUtf < 128) {
var MAX_CHUNK = 1024;
var curr;
while (length > 0) {
curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)));
ret = ret ? ret + curr : curr;
ptr += MAX_CHUNK;
length -= MAX_CHUNK
}
return ret
}
return Module["UTF8ToString"](ptr)
}
Module["Pointer_stringify"] = Pointer_stringify;
function AsciiToString(ptr) {
var str = "";
while (1) {
var ch = HEAP8[ptr++ >> 0];
if (!ch) return str;
str += String.fromCharCode(ch)
}
}
Module["AsciiToString"] = AsciiToString;
function stringToAscii(str, outPtr) {
return writeAsciiToMemory(str, outPtr, false)
}
Module["stringToAscii"] = stringToAscii;
function UTF8ArrayToString(u8Array, idx) {
var u0, u1, u2, u3, u4, u5;
var str = "";
while (1) {
u0 = u8Array[idx++];
if (!u0) return str;
if (!(u0 & 128)) {
str += String.fromCharCode(u0);
continue
}
u1 = u8Array[idx++] & 63;
if ((u0 & 224) == 192) {
str += String.fromCharCode((u0 & 31) << 6 | u1);
continue
}
u2 = u8Array[idx++] & 63;
if ((u0 & 240) == 224) {
u0 = (u0 & 15) << 12 | u1 << 6 | u2
} else {
u3 = u8Array[idx++] & 63;
if ((u0 & 248) == 240) {
u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u3
} else {
u4 = u8Array[idx++] & 63;
if ((u0 & 252) == 248) {
u0 = (u0 & 3) << 24 | u1 << 18 | u2 << 12 | u3 << 6 | u4
} else {
u5 = u8Array[idx++] & 63;
u0 = (u0 & 1) << 30 | u1 << 24 | u2 << 18 | u3 << 12 | u4 << 6 | u5
}
}
}
if (u0 < 65536) {
str += String.fromCharCode(u0)
} else {
var ch = u0 - 65536;
str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023)
}
}
}
Module["UTF8ArrayToString"] = UTF8ArrayToString;
function UTF8ToString(ptr) {
return UTF8ArrayToString(HEAPU8, ptr)
}
Module["UTF8ToString"] = UTF8ToString;
function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {
if (!(maxBytesToWrite > 0)) return 0;
var startIdx = outIdx;
var endIdx = outIdx + maxBytesToWrite - 1;
for (var i = 0; i < str.length; ++i) {
var u = str.charCodeAt(i);
if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;
if (u <= 127) {
if (outIdx >= endIdx) break;
outU8Array[outIdx++] = u
} else if (u <= 2047) {
if (outIdx + 1 >= endIdx) break;
outU8Array[outIdx++] = 192 | u >> 6;
outU8Array[outIdx++] = 128 | u & 63
} else if (u <= 65535) {
if (outIdx + 2 >= endIdx) break;
outU8Array[outIdx++] = 224 | u >> 12;
outU8Array[outIdx++] = 128 | u >> 6 & 63;
outU8Array[outIdx++] = 128 | u & 63
} else if (u <= 2097151) {
if (outIdx + 3 >= endIdx) break;
outU8Array[outIdx++] = 240 | u >> 18;
outU8Array[outIdx++] = 128 | u >> 12 & 63;
outU8Array[outIdx++] = 128 | u >> 6 & 63;
outU8Array[outIdx++] = 128 | u & 63
} else if (u <= 67108863) {
if (outIdx + 4 >= endIdx) break;
outU8Array[outIdx++] = 248 | u >> 24;
outU8Array[outIdx++] = 128 | u >> 18 & 63;
outU8Array[outIdx++] = 128 | u >> 12 & 63;
outU8Array[outIdx++] = 128 | u >> 6 & 63;
outU8Array[outIdx++] = 128 | u & 63
} else {
if (outIdx + 5 >= endIdx) break;
outU8Array[outIdx++] = 252 | u >> 30;
outU8Array[outIdx++] = 128 | u >> 24 & 63;
outU8Array[outIdx++] = 128 | u >> 18 & 63;
outU8Array[outIdx++] = 128 | u >> 12 & 63;
outU8Array[outIdx++] = 128 | u >> 6 & 63;
outU8Array[outIdx++] = 128 | u & 63
}
}
outU8Array[outIdx] = 0;
return outIdx - startIdx
}
Module["stringToUTF8Array"] = stringToUTF8Array;
function stringToUTF8(str, outPtr, maxBytesToWrite) {
return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite)
}
Module["stringToUTF8"] = stringToUTF8;
function lengthBytesUTF8(str) {
var len = 0;
for (var i = 0; i < str.length; ++i) {
var u = str.charCodeAt(i);
if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;
if (u <= 127) {
++len
} else if (u <= 2047) {
len += 2
} else if (u <= 65535) {
len += 3
} else if (u <= 2097151) {
len += 4
} else if (u <= 67108863) {
len += 5
} else {
len += 6
}
}
return len
}
Module["lengthBytesUTF8"] = lengthBytesUTF8;
function UTF16ToString(ptr) {
var i = 0;
var str = "";
while (1) {
var codeUnit = HEAP16[ptr + i * 2 >> 1];
if (codeUnit == 0) return str;
++i;
str += String.fromCharCode(codeUnit)
}
}
Module["UTF16ToString"] = UTF16ToString;
function stringToUTF16(str, outPtr, maxBytesToWrite) {
if (maxBytesToWrite === undefined) {
maxBytesToWrite = 2147483647
}
if (maxBytesToWrite < 2) return 0;
maxBytesToWrite -= 2;
var startPtr = outPtr;
var numCharsToWrite = maxBytesToWrite < str.length * 2 ? maxBytesToWrite / 2 : str.length;
for (var i = 0; i < numCharsToWrite; ++i) {
var codeUnit = str.charCodeAt(i);
HEAP16[outPtr >> 1] = codeUnit;
outPtr += 2
}
HEAP16[outPtr >> 1] = 0;
return outPtr - startPtr
}
Module["stringToUTF16"] = stringToUTF16;
function lengthBytesUTF16(str) {
return str.length * 2
}
Module["lengthBytesUTF16"] = lengthBytesUTF16;
function UTF32ToString(ptr) {
var i = 0;
var str = "";
while (1) {
var utf32 = HEAP32[ptr + i * 4 >> 2];
if (utf32 == 0) return str;
++i;
if (utf32 >= 65536) {
var ch = utf32 - 65536;
str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023)
} else {
str += String.fromCharCode(utf32)
}
}
}
Module["UTF32ToString"] = UTF32ToString;
function stringToUTF32(str, outPtr, maxBytesToWrite) {
if (maxBytesToWrite === undefined) {
maxBytesToWrite = 2147483647
}
if (maxBytesToWrite < 4) return 0;
var startPtr = outPtr;
var endPtr = startPtr + maxBytesToWrite - 4;
for (var i = 0; i < str.length; ++i) {
var codeUnit = str.charCodeAt(i);
if (codeUnit >= 55296 && codeUnit <= 57343) {
var trailSurrogate = str.charCodeAt(++i);
codeUnit = 65536 + ((codeUnit & 1023) << 10) | trailSurrogate & 1023
}
HEAP32[outPtr >> 2] = codeUnit;
outPtr += 4;
if (outPtr + 4 > endPtr) break
}
HEAP32[outPtr >> 2] = 0;
return outPtr - startPtr
}
Module["stringToUTF32"] = stringToUTF32;
function lengthBytesUTF32(str) {
var len = 0;
for (var i = 0; i < str.length; ++i) {
var codeUnit = str.charCodeAt(i);
if (codeUnit >= 55296 && codeUnit <= 57343) ++i;
len += 4
}
return len
}
Module["lengthBytesUTF32"] = lengthBytesUTF32;
function demangle(func) {
var hasLibcxxabi = !!Module["___cxa_demangle"];
if (hasLibcxxabi) {
try {
var buf = _malloc(func.length);
writeStringToMemory(func.substr(1), buf);
var status = _malloc(4);
var ret = Module["___cxa_demangle"](buf, 0, 0, status);
if (getValue(status, "i32") === 0 && ret) {
return Pointer_stringify(ret)
}
} catch (e) {} finally {
if (buf) _free(buf);
if (status) _free(status);
if (ret) _free(ret)
}
}
var i = 3;
var basicTypes = {
"v": "void",
"b": "bool",
"c": "char",
"s": "short",
"i": "int",
"l": "long",
"f": "float",
"d": "double",
"w": "wchar_t",
"a": "signed char",
"h": "unsigned char",
"t": "unsigned short",
"j": "unsigned int",
"m": "unsigned long",
"x": "long long",
"y": "unsigned long long",
"z": "..."
};
var subs = [];
var first = true;
function dump(x) {
if (x) Module.print(x);
Module.print(func);
var pre = "";
for (var a = 0; a < i; a++) pre += " ";
Module.print(pre + "^")
}
function parseNested() {
i++;
if (func[i] === "K") i++;
var parts = [];
while (func[i] !== "E") {
if (func[i] === "S") {
i++;
var next = func.indexOf("_", i);
var num = func.substring(i, next) || 0;
parts.push(subs[num] || "?");
i = next + 1;
continue
}
if (func[i] === "C") {
parts.push(parts[parts.length - 1]);
i += 2;
continue
}
var size = parseInt(func.substr(i));
var pre = size.toString().length;
if (!size || !pre) {
i--;
break
}
var curr = func.substr(i + pre, size);
parts.push(curr);
subs.push(curr);
i += pre + size
}
i++;
return parts
}
function parse(rawList, limit, allowVoid) {
limit = limit || Infinity;
var ret = "",
list = [];
function flushList() {
return "(" + list.join(", ") + ")"
}
var name;
if (func[i] === "N") {
name = parseNested().join("::");
limit--;
if (limit === 0) return rawList ? [name] : name
} else {
if (func[i] === "K" || first && func[i] === "L") i++;
var size = parseInt(func.substr(i));
if (size) {
var pre = size.toString().length;
name = func.substr(i + pre, size);
i += pre + size
}
}
first = false;
if (func[i] === "I") {
i++;
var iList = parse(true);
var iRet = parse(true, 1, true);
ret += iRet[0] + " " + name + "<" + iList.join(", ") + ">"
} else {
ret = name
}
paramLoop: while (i < func.length && limit-- > 0) {
var c = func[i++];
if (c in basicTypes) {
list.push(basicTypes[c])
} else {
switch (c) {
case "P":
list.push(parse(true, 1, true)[0] + "*");
break;
case "R":
list.push(parse(true, 1, true)[0] + "&");
break;
case "L":
{
i++;
var end = func.indexOf("E", i);
var size = end - i;list.push(func.substr(i, size));i += size + 2;
break
};
case "A":
{
var size = parseInt(func.substr(i));i += size.toString().length;
if (func[i] !== "_") throw "?";i++;list.push(parse(true, 1, true)[0] + " [" + size + "]");
break
};
case "E":
break paramLoop;
default:
ret += "?" + c;
break paramLoop
}
}
}
if (!allowVoid && list.length === 1 && list[0] === "void") list = [];
if (rawList) {
if (ret) {
list.push(ret + "?")
}
return list
} else {
return ret + flushList()
}
}
var parsed = func;
try {
if (func == "Object._main" || func == "_main") {
return "main()"
}
if (typeof func === "number") func = Pointer_stringify(func);
if (func[0] !== "_") return func;
if (func[1] !== "_") return func;
if (func[2] !== "Z") return func;
switch (func[3]) {
case "n":
return "operator new()";
case "d":
return "operator delete()"
}
parsed = parse()
} catch (e) {
parsed += "?"
}
if (parsed.indexOf("?") >= 0 && !hasLibcxxabi) {
Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling")
}
return parsed
}
function demangleAll(text) {
return text.replace(/__Z[\w\d_]+/g, (function(x) {
var y = demangle(x);
return x === y ? x : x + " [" + y + "]"
}))
}
function jsStackTrace() {
var err = new Error;
if (!err.stack) {
try {
throw new Error(0)
} catch (e) {
err = e
}
if (!err.stack) {
return "(no stack trace available)"
}
}
return err.stack.toString()
}
function stackTrace() {
return demangleAll(jsStackTrace())
}
Module["stackTrace"] = stackTrace;
var PAGE_SIZE = 4096;
function alignMemoryPage(x) {
if (x % 4096 > 0) {
x += 4096 - x % 4096
}
return x
}
var HEAP;
var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
var STATIC_BASE = 0,
STATICTOP = 0,
staticSealed = false;
var STACK_BASE = 0,
STACKTOP = 0,
STACK_MAX = 0;
var DYNAMIC_BASE = 0,
DYNAMICTOP = 0;
function abortOnCannotGrowMemory() {
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 ")
}
function enlargeMemory() {
abortOnCannotGrowMemory()
}
var TOTAL_STACK = Module["TOTAL_STACK"] || 5242880;
var TOTAL_MEMORY = Module["TOTAL_MEMORY"] || 3355e4;
var totalMemory = 64 * 1024;
while (totalMemory < TOTAL_MEMORY || totalMemory < 2 * TOTAL_STACK) {
if (totalMemory < 16 * 1024 * 1024) {
totalMemory *= 2
} else {
totalMemory += 16 * 1024 * 1024
}
}
if (totalMemory !== TOTAL_MEMORY) {
TOTAL_MEMORY = totalMemory
}
assert(typeof Int32Array !== "undefined" && typeof Float64Array !== "undefined" && !!(new Int32Array(1))["subarray"] && !!(new Int32Array(1))["set"], "JS engine does not provide full typed array support");
var buffer;
buffer = new ArrayBuffer(TOTAL_MEMORY);
HEAP8 = new Int8Array(buffer);
HEAP16 = new Int16Array(buffer);
HEAP32 = new Int32Array(buffer);
HEAPU8 = new Uint8Array(buffer);
HEAPU16 = new Uint16Array(buffer);
HEAPU32 = new Uint32Array(buffer);
HEAPF32 = new Float32Array(buffer);
HEAPF64 = new Float64Array(buffer);
HEAP32[0] = 255;
assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, "Typed arrays 2 must be run on a little-endian system");
Module["HEAP"] = HEAP;
Module["buffer"] = buffer;
Module["HEAP8"] = HEAP8;
Module["HEAP16"] = HEAP16;
Module["HEAP32"] = HEAP32;
Module["HEAPU8"] = HEAPU8;
Module["HEAPU16"] = HEAPU16;
Module["HEAPU32"] = HEAPU32;
Module["HEAPF32"] = HEAPF32;
Module["HEAPF64"] = HEAPF64;
function callRuntimeCallbacks(callbacks) {
while (callbacks.length > 0) {
var callback = callbacks.shift();
if (typeof callback == "function") {
callback();
continue
}
var func = callback.func;
if (typeof func === "number") {
if (callback.arg === undefined) {
Runtime.dynCall("v", func)
} else {
Runtime.dynCall("vi", func, [callback.arg])
}
} else {
func(callback.arg === undefined ? null : callback.arg)
}
}
}
var __ATPRERUN__ = [];
var __ATINIT__ = [];
var __ATMAIN__ = [];
var __ATEXIT__ = [];
var __ATPOSTRUN__ = [];
var runtimeInitialized = false;
var runtimeExited = false;
function preRun() {
if (Module["preRun"]) {
if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]];
while (Module["preRun"].length) {
addOnPreRun(Module["preRun"].shift())
}
}
callRuntimeCallbacks(__ATPRERUN__)
}
function ensureInitRuntime() {
if (runtimeInitialized) return;
runtimeInitialized = true;
callRuntimeCallbacks(__ATINIT__)
}
function preMain() {
callRuntimeCallbacks(__ATMAIN__)
}
function exitRuntime() {
callRuntimeCallbacks(__ATEXIT__);
runtimeExited = true
}
function postRun() {
if (Module["postRun"]) {
if (typeof Module["postRun"] == "function") Module["postRun"] = [Module["postRun"]];
while (Module["postRun"].length) {
addOnPostRun(Module["postRun"].shift())
}
}
callRuntimeCallbacks(__ATPOSTRUN__)
}
function addOnPreRun(cb) {
__ATPRERUN__.unshift(cb)
}
Module["addOnPreRun"] = addOnPreRun;
function addOnInit(cb) {
__ATINIT__.unshift(cb)
}
Module["addOnInit"] = addOnInit;
function addOnPreMain(cb) {
__ATMAIN__.unshift(cb)
}
Module["addOnPreMain"] = addOnPreMain;
function addOnExit(cb) {
__ATEXIT__.unshift(cb)
}
Module["addOnExit"] = addOnExit;
function addOnPostRun(cb) {
__ATPOSTRUN__.unshift(cb)
}
Module["addOnPostRun"] = addOnPostRun;
function intArrayFromString(stringy, dontAddNull, length) {
var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;
var u8array = new Array(len);
var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);
if (dontAddNull) u8array.length = numBytesWritten;
return u8array
}
Module["intArrayFromString"] = intArrayFromString;
function intArrayToString(array) {
var ret = [];
for (var i = 0; i < array.length; i++) {
var chr = array[i];
if (chr > 255) {
chr &= 255
}
ret.push(String.fromCharCode(chr))
}
return ret.join("")
}
Module["intArrayToString"] = intArrayToString;
function writeStringToMemory(string, buffer, dontAddNull) {
var array = intArrayFromString(string, dontAddNull);
var i = 0;
while (i < array.length) {
var chr = array[i];
HEAP8[buffer + i >> 0] = chr;
i = i + 1
}
}
Module["writeStringToMemory"] = writeStringToMemory;
function writeArrayToMemory(array, buffer) {
for (var i = 0; i < array.length; i++) {
HEAP8[buffer++ >> 0] = array[i]
}
}
Module["writeArrayToMemory"] = writeArrayToMemory;
function writeAsciiToMemory(str, buffer, dontAddNull) {
for (var i = 0; i < str.length; ++i) {
HEAP8[buffer++ >> 0] = str.charCodeAt(i)
}
if (!dontAddNull) HEAP8[buffer >> 0] = 0
}
Module["writeAsciiToMemory"] = writeAsciiToMemory;
function unSign(value, bits, ignore) {
if (value >= 0) {
return value
}
return bits <= 32 ? 2 * Math.abs(1 << bits - 1) + value : Math.pow(2, bits) + value
}
function reSign(value, bits, ignore) {
if (value <= 0) {
return value
}
var half = bits <= 32 ? Math.abs(1 << bits - 1) : Math.pow(2, bits - 1);
if (value >= half && (bits <= 32 || value > half)) {
value = -2 * half + value
}
return value
}
if (!Math["imul"] || Math["imul"](4294967295, 5) !== -5) Math["imul"] = function imul(a, b) {
var ah = a >>> 16;
var al = a & 65535;
var bh = b >>> 16;
var bl = b & 65535;
return al * bl + (ah * bl + al * bh << 16) | 0
};
Math.imul = Math["imul"];
if (!Math["clz32"]) Math["clz32"] = (function(x) {
x = x >>> 0;
for (var i = 0; i < 32; i++) {
if (x & 1 << 31 - i) return i
}
return 32
});
Math.clz32 = Math["clz32"];
var Math_abs = Math.abs;
var Math_cos = Math.cos;
var Math_sin = Math.sin;
var Math_tan = Math.tan;
var Math_acos = Math.acos;
var Math_asin = Math.asin;
var Math_atan = Math.atan;
var Math_atan2 = Math.atan2;
var Math_exp = Math.exp;
var Math_log = Math.log;
var Math_sqrt = Math.sqrt;
var Math_ceil = Math.ceil;
var Math_floor = Math.floor;
var Math_pow = Math.pow;
var Math_imul = Math.imul;
var Math_fround = Math.fround;
var Math_min = Math.min;
var Math_clz32 = Math.clz32;
var runDependencies = 0;
var runDependencyWatcher = null;
var dependenciesFulfilled = null;
function getUniqueRunDependency(id) {
return id
}
function addRunDependency(id) {
runDependencies++;
if (Module["monitorRunDependencies"]) {
Module["monitorRunDependencies"](runDependencies)
}
}
Module["addRunDependency"] = addRunDependency;
function removeRunDependency(id) {
runDependencies--;
if (Module["monitorRunDependencies"]) {
Module["monitorRunDependencies"](runDependencies)
}
if (runDependencies == 0) {
if (runDependencyWatcher !== null) {
clearInterval(runDependencyWatcher);
runDependencyWatcher = null
}
if (dependenciesFulfilled) {
var callback = dependenciesFulfilled;
dependenciesFulfilled = null;
callback()
}
}
}
Module["removeRunDependency"] = removeRunDependency;
Module["preloadedImages"] = {};
Module["preloadedAudios"] = {};
var memoryInitializer = null;
var ASM_CONSTS = [];
STATIC_BASE = 8;
STATICTOP = STATIC_BASE + 1181472;
__ATINIT__.push({
func: (function() {
__GLOBAL__I_000101()
})
}, {
func: (function() {
__GLOBAL__sub_I_bitbase_cpp()
})
}, {
func: (function() {
__GLOBAL__sub_I_bitboard_cpp()
})
}, {
func: (function() {
__GLOBAL__sub_I_endgame_cpp()
})
}, {
func: (function() {
__GLOBAL__sub_I_evaluate_cpp()
})
}, {
func: (function() {
__GLOBAL__sub_I_main_cpp()
})
}, {
func: (function() {
__GLOBAL__sub_I_material_cpp()
})
}, {
func: (function() {
__GLOBAL__sub_I_misc_cpp()
})
}, {
func: (function() {
__GLOBAL__sub_I_movegen_cpp()
})
}, {
func: (function() {
__GLOBAL__sub_I_movepick_cpp()
})
}, {
func: (function() {
__GLOBAL__sub_I_pawns_cpp()
})
}, {
func: (function() {
__GLOBAL__sub_I_position_cpp()
})
}, {
func: (function() {
__GLOBAL__sub_I_psqt_cpp()
})
}, {
func: (function() {
__GLOBAL__sub_I_search_cpp()
})
}, {
func: (function() {
__GLOBAL__sub_I_thread_cpp()
})
}, {
func: (function() {
__GLOBAL__sub_I_timeman_cpp()
})
}, {
func: (function() {
__GLOBAL__sub_I_tt_cpp()
})
}, {
func: (function() {
__GLOBAL__sub_I_uci_cpp()
})
}, {
func: (function() {
__GLOBAL__sub_I_ucioption_cpp()
})
}, {
func: (function() {
__GLOBAL__sub_I_iostream_cpp()
})
});
allocate([], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
allocate([15, 15, 15, 15, 15, 0, 0, 0, 15, 15, 15, 15, 15, 0, 0, 0, 15, 15, 15, 15, 15, 0, 0, 0, 60, 60, 60, 60, 60, 0, 0, 0, 60, 60, 60, 60, 60, 0, 0, 0, 240, 240, 240, 240, 240, 0, 0, 0, 240, 240, 240, 240, 240, 0, 0, 0, 240, 240, 240, 240, 240, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 0, 0, 0, 15, 15, 15, 15, 15, 0, 0, 0, 15, 15, 15, 15, 15, 0, 0, 0, 60, 60, 60, 60, 60, 0, 0, 0, 60, 60, 60, 60, 60, 0, 0, 0, 240, 240, 240, 240, 240, 0, 0, 0, 240, 240, 240, 240, 240, 0, 0, 0, 240, 240, 240, 240, 240], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 949056);
allocate([12, 179, 16, 0, 70, 229, 17, 0, 72, 178, 14, 0, 0, 0, 0, 0, 228, 178, 16, 0, 83, 229, 17, 0, 228, 178, 16, 0, 96, 229, 17, 0, 12, 179, 16, 0, 109, 229, 17, 0, 80, 178, 14, 0, 0, 0, 0, 0, 12, 179, 16, 0, 142, 229, 17, 0, 88, 178, 14, 0, 0, 0, 0, 0, 12, 179, 16, 0, 176, 229, 17, 0, 104, 178, 14, 0, 0, 0, 0, 0, 12, 179, 16, 0, 213, 229, 17, 0, 104, 178, 14, 0, 0, 0, 0, 0, 12, 179, 16, 0, 17, 251, 17, 0, 8, 179, 14, 0, 0, 0, 0, 0, 12, 179, 16, 0, 80, 251, 17, 0, 8, 179, 14, 0, 0, 0, 0, 0, 12, 179, 16, 0, 104, 251, 17, 0, 0, 179, 14, 0, 0, 0, 0, 0, 12, 179, 16, 0, 129, 251, 17, 0, 0, 179, 14, 0, 0, 0, 0, 0, 228, 178, 16, 0, 92, 252, 17, 0, 12, 179, 16, 0, 110, 252, 17, 0, 216, 178, 14, 0, 0, 0, 0, 0, 12, 179, 16, 0, 152, 252, 17, 0, 216, 178, 14, 0, 0, 0, 0, 0, 228, 178, 16, 0, 194, 252, 17, 0, 228, 178, 16, 0, 243, 252, 17, 0, 52, 179, 16, 0, 36, 253, 17, 0, 0, 0, 0, 0, 1, 0, 0, 0, 224, 178, 14, 0, 3, 244, 255, 255, 52, 179, 16, 0, 83, 253, 17, 0, 0, 0, 0, 0, 1, 0, 0, 0, 240, 178, 14, 0, 3, 244, 255, 255, 52, 179, 16, 0, 130, 253, 17, 0, 0, 0, 0, 0, 1, 0, 0, 0, 224, 178, 14, 0, 3, 244, 255, 255, 52, 179, 16, 0, 177, 253, 17, 0, 0, 0, 0, 0, 1, 0, 0, 0, 240, 178, 14, 0, 3, 244, 255, 255, 12, 179, 16, 0, 1, 254, 17, 0, 96, 186, 14, 0, 0, 0, 0, 0, 52, 179, 16, 0, 23, 254, 17, 0, 0, 0, 0, 0, 2, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 144, 185, 14, 0, 2, 0, 0, 0, 52, 179, 16, 0, 41, 254, 17, 0, 0, 0, 0, 0, 2, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 152, 185, 14, 0, 2, 0, 0, 0, 52, 179, 16, 0, 75, 254, 17, 0, 0, 0, 0, 0, 2, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 152, 185, 14, 0, 2, 0, 0, 0, 52, 179, 16, 0, 110, 254, 17, 0, 0, 0, 0, 0, 2, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 152, 185, 14, 0, 2, 0, 0, 0, 12, 179, 16, 0, 145, 254, 17, 0, 224, 179, 14, 0, 0, 0, 0, 0, 12, 179, 16, 0, 179, 254, 17, 0, 224, 179, 14, 0, 0, 0, 0, 0, 52, 179, 16, 0, 214, 254, 17, 0, 0, 0, 0, 0, 2, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 152, 185, 14, 0, 2, 0, 0, 0, 12, 179, 16, 0, 248, 254, 17, 0, 112, 179, 14, 0, 0, 0, 0, 0, 12, 179, 16, 0, 14, 255, 17, 0, 112, 179, 14, 0, 0, 0, 0, 0, 12, 179, 16, 0, 34, 255, 17, 0, 112, 179, 14, 0, 0, 0, 0, 0, 52, 179, 16, 0, 54, 255, 17, 0, 0, 0, 0, 0, 2, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 144, 185, 14, 0, 2, 0, 0, 0, 12, 179, 16, 0, 72, 255, 17, 0, 112, 179, 14, 0, 0, 0, 0, 0, 12, 179, 16, 0, 93, 255, 17, 0, 112, 179, 14, 0, 0, 0, 0, 0, 52, 179, 16, 0, 114, 255, 17, 0, 0, 0, 0, 0, 2, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 160, 185, 14, 0, 0, 0, 0, 0, 52, 179, 16, 0, 182, 255, 17, 0, 0, 0, 0, 0, 2, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 184, 185, 14, 0, 0, 0, 0, 0, 52, 179, 16, 0, 250, 255, 17, 0, 0, 0, 0, 0, 2, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 208, 185, 14, 0, 0, 0, 0, 0, 52, 179, 16, 0, 62, 0, 18, 0, 0, 0, 0, 0, 2, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 232, 185, 14, 0, 0, 0, 0, 0, 52, 179, 16, 0, 130, 0, 18, 0, 0, 0, 0, 0, 3, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 0, 186, 14, 0, 2, 0, 0, 0, 8, 186, 14, 0, 0, 8, 0, 0, 52, 179, 16, 0, 199, 0, 18, 0, 0, 0, 0, 0, 3, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 0, 186, 14, 0, 2, 0, 0, 0, 16, 186, 14, 0, 0, 8, 0, 0, 52, 179, 16, 0, 12, 1, 18, 0, 0, 0, 0, 0, 2, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 24, 186, 14, 0, 0, 8, 0, 0, 52, 179, 16, 0, 81, 1, 18, 0, 0, 0, 0, 0, 2, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 24, 186, 14, 0, 0, 8, 0, 0, 52, 179, 16, 0, 150, 1, 18, 0, 0, 0, 0, 0, 2, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 32, 186, 14, 0, 2, 0, 0, 0, 52, 179, 16, 0, 178, 1, 18, 0, 0, 0, 0, 0, 2, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 32, 186, 14, 0, 2, 0, 0, 0, 52, 179, 16, 0, 206, 1, 18, 0, 0, 0, 0, 0, 2, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 32, 186, 14, 0, 2, 0, 0, 0, 52, 179, 16, 0, 234, 1, 18, 0, 0, 0, 0, 0, 2, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 32, 186, 14, 0, 2, 0, 0, 0, 52, 179, 16, 0, 6, 2, 18, 0, 0, 0, 0, 0, 2, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 40, 186, 14, 0, 0, 0, 0, 0, 52, 179, 16, 0, 76, 2, 18, 0, 0, 0, 0, 0, 2, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 48, 186, 14, 0, 0, 0, 0, 0, 52, 179, 16, 0, 146, 2, 18, 0, 0, 0, 0, 0, 2, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 56, 186, 14, 0, 0, 0, 0, 0, 52, 179, 16, 0, 216, 2, 18, 0, 0, 0, 0, 0, 2, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 64, 186, 14, 0, 0, 0, 0, 0, 52, 179, 16, 0, 30, 3, 18, 0, 0, 0, 0, 0, 2, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 72, 186, 14, 0, 2, 0, 0, 0, 52, 179, 16, 0, 51, 3, 18, 0, 0, 0, 0, 0, 2, 0, 0, 0, 112, 179, 14, 0, 2, 0, 0, 0, 72, 186, 14, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 178, 16, 0, 236, 6, 18, 0, 228, 178, 16, 0, 213, 6, 18, 0, 52, 179, 16, 0, 191, 6, 18, 0, 0, 0, 0, 0, 1, 0, 0, 0, 88, 186, 14, 0, 0, 0, 0, 0, 52, 179, 16, 0, 144, 6, 18, 0, 0, 0, 0, 0, 1, 0, 0, 0, 88, 186, 14, 0, 0, 0, 0, 0, 52, 179, 16, 0, 122, 6, 18, 0, 0, 0, 0, 0, 1, 0, 0, 0, 80, 186, 14, 0, 0, 0, 0, 0, 52, 179, 16, 0, 75, 6, 18, 0, 0, 0, 0, 0, 1, 0, 0, 0, 80, 186, 14, 0, 0, 0, 0, 0, 228, 178, 16, 0, 56, 6, 18, 0, 228, 178, 16, 0, 22, 6, 18, 0, 228, 178, 16, 0, 244, 5, 18, 0, 228, 178, 16, 0, 223, 5, 18, 0, 228, 178, 16, 0, 202, 5, 18, 0, 228, 178, 16, 0, 177, 5, 18, 0, 228, 178, 16, 0, 152, 5, 18, 0, 228, 178, 16, 0, 127, 5, 18, 0, 228, 178, 16, 0, 102, 5, 18, 0, 228, 178, 16, 0, 78, 5, 18, 0, 228, 178, 16, 0, 97, 6, 18, 0, 228, 178, 16, 0, 166, 6, 18, 0, 228, 178, 16, 0, 1, 7, 18], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 963120);
allocate([7, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0, 0, 10, 0, 0, 0, 6, 0, 0, 0, 250, 255, 255, 255, 246, 255, 255, 255, 241, 255, 255, 255, 239, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 7, 0, 0, 0, 249, 255, 255, 255, 247, 255, 255, 255, 8, 0, 0, 0, 1, 0, 0, 0, 255, 255, 255, 255, 248, 255, 255, 255, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 248, 255, 255, 255, 255, 255, 255, 255, 9, 0, 0, 0, 249, 255, 255, 255, 247, 255, 255, 255, 7, 0, 0, 0, 17, 35, 0, 0, 16, 174, 0, 0, 71, 212, 0, 0, 86, 152, 0, 0, 99, 22, 0, 0, 229, 115, 1, 0, 208, 153, 1, 0, 124, 66, 0, 0, 216, 2, 0, 0, 76, 40, 0, 0, 229, 214, 0, 0, 35, 128, 0, 0, 249, 47, 0, 0, 252, 58, 0, 0, 5, 65, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 90, 0, 0, 0, 80, 0, 0, 0, 70, 0, 0, 0, 70, 0, 0, 0, 80, 0, 0, 0, 90, 0, 0, 0, 100, 0, 0, 0, 90, 0, 0, 0, 70, 0, 0, 0, 60, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 60, 0, 0, 0, 70, 0, 0, 0, 90, 0, 0, 0, 80, 0, 0, 0, 60, 0, 0, 0, 40, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 40, 0, 0, 0, 60, 0, 0, 0, 80, 0, 0, 0, 70, 0, 0, 0, 50, 0, 0, 0, 30, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 30, 0, 0, 0, 50, 0, 0, 0, 70, 0, 0, 0, 70, 0, 0, 0, 50, 0, 0, 0, 30, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 30, 0, 0, 0, 50, 0, 0, 0, 70, 0, 0, 0, 80, 0, 0, 0, 60, 0, 0, 0, 40, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 40, 0, 0, 0, 60, 0, 0, 0, 80, 0, 0, 0, 90, 0, 0, 0, 70, 0, 0, 0, 60, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0, 60, 0, 0, 0, 70, 0, 0, 0, 90, 0, 0, 0, 100, 0, 0, 0, 90, 0, 0, 0, 80, 0, 0, 0, 70, 0, 0, 0, 70, 0, 0, 0, 80, 0, 0, 0, 90, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 80, 0, 0, 0, 60, 0, 0, 0, 40, 0, 0, 0, 20, 0, 0, 0, 10, 0, 0, 0, 200, 0, 0, 0, 190, 0, 0, 0, 180, 0, 0, 0, 170, 0, 0, 0, 160, 0, 0, 0, 150, 0, 0, 0, 140, 0, 0, 0, 130, 0, 0, 0, 190, 0, 0, 0, 180, 0, 0, 0, 170, 0, 0, 0, 160, 0, 0, 0, 150, 0, 0, 0, 140, 0, 0, 0, 130, 0, 0, 0, 140, 0, 0, 0, 180, 0, 0, 0, 170, 0, 0, 0, 155, 0, 0, 0, 140, 0, 0, 0, 140, 0, 0, 0, 125, 0, 0, 0, 140, 0, 0, 0, 150, 0, 0, 0, 170, 0, 0, 0, 160, 0, 0, 0, 140, 0, 0, 0, 120, 0, 0, 0, 110, 0, 0, 0, 140, 0, 0, 0, 150, 0, 0, 0, 160, 0, 0, 0, 160, 0, 0, 0, 150, 0, 0, 0, 140, 0, 0, 0, 110, 0, 0, 0, 120, 0, 0, 0, 140, 0, 0, 0, 160, 0, 0, 0, 170, 0, 0, 0, 150, 0, 0, 0, 140, 0, 0, 0, 125, 0, 0, 0, 140, 0, 0, 0, 140, 0, 0, 0, 155, 0, 0, 0, 170, 0, 0, 0, 180, 0, 0, 0, 140, 0, 0, 0, 130, 0, 0, 0, 140, 0, 0, 0, 150, 0, 0, 0, 160, 0, 0, 0, 170, 0, 0, 0, 180, 0, 0, 0, 190, 0, 0, 0, 130, 0, 0, 0, 140, 0, 0, 0, 150, 0, 0, 0, 160, 0, 0, 0, 170, 0, 0, 0, 180, 0, 0, 0, 190, 0, 0, 0, 200, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 40, 0, 0, 0, 60, 0, 0, 0, 80, 0, 0, 0, 90, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 14, 0, 0, 0, 21, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 15, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 17, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 27, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 31, 0, 0, 0, 73, 0, 0, 0, 166, 0, 0, 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 14, 0, 0, 0, 38, 0, 0, 0, 73, 0, 0, 0, 166, 0, 0, 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 56, 0, 0, 0, 248, 255, 255, 255, 0, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 192, 255, 255, 255, 192, 255, 255, 255, 0, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 192, 255, 255, 255, 192, 255, 255, 255, 0, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 17, 0, 0, 0, 3, 0, 0, 0, 18, 0, 0, 0, 52, 108, 15, 0, 0, 109, 15, 0, 112, 108, 15, 0, 132, 108, 15, 0, 220, 117, 15, 0, 240, 117, 15, 0, 40, 109, 15, 0, 20, 109, 15, 0, 92, 108, 15, 0, 72, 108, 15, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 56, 0, 0, 0, 248, 255, 255, 255, 0, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 192, 255, 255, 255, 192, 255, 255, 255, 0, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 255, 0, 0, 0, 253, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 255, 255, 255, 254, 255, 255, 255, 47, 0, 0, 0, 105, 0, 0, 0, 107, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 255, 255, 255, 24, 0, 0, 0, 122, 0, 0, 0, 137, 0, 0, 0, 122, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 65, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 39, 0, 0, 0, 24, 0, 0, 0, 232, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 100, 0, 0, 0, 219, 255, 255, 255, 141, 0, 0, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 37, 0, 0, 0, 21, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 38, 0, 0, 0, 22, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 39, 0, 0, 0, 23, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 40, 0, 0, 0, 24, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 41, 0, 0, 0, 25, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 152, 255, 255, 255, 152, 255, 255, 255, 0, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 152, 255, 255, 255, 152, 255, 255, 255, 0, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 26, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 24, 0, 0, 0, 3, 0, 0, 0, 25, 0, 0, 0, 40, 113, 15, 0, 248, 111, 15, 0, 12, 112, 15, 0, 60, 113, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 29, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 30, 0, 0, 0, 20, 0, 0, 0, 26, 0, 0, 0, 3, 0, 0, 0, 27, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 21, 0, 0, 0, 26, 0, 0, 0, 51, 0, 0, 0, 87, 0, 0, 0, 89, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 76, 0, 0, 0, 88, 0, 0, 0, 103, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 7, 0, 0, 0, 54, 0, 0, 0, 78, 0, 0, 0, 77, 0, 0, 0, 92, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 11, 0, 0, 0, 44, 0, 0, 0, 68, 0, 0, 0, 87, 0, 0, 0, 90, 0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 134, 0, 0, 0, 38, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 139, 0, 0, 0, 37, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 115, 0, 0, 0, 43, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 124, 0, 0, 0, 57, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 43, 0, 0, 0, 100, 0, 0, 0, 56, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 20, 0, 0, 0, 98, 0, 0, 0, 40, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 39, 0, 0, 0, 103, 0, 0, 0, 36, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 19, 0, 0, 0, 108, 0, 0, 0, 42, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 14, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 30, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 22, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 24, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 254, 255, 255, 231, 254, 255, 255, 57, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 141, 0, 0, 0, 39, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 142, 0, 0, 0, 48, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 126, 0, 0, 0, 51, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 200, 255, 255, 255, 200, 255, 255, 255, 0, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 200, 255, 255, 255, 200, 255, 255, 255, 0, 0, 0, 0, 56, 0, 0, 0, 57, 0, 0, 0, 4, 118, 15, 0, 220, 117, 15, 0, 240, 117, 15, 0, 24, 118, 15, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 196, 255, 255, 255, 196, 255, 255, 255, 0, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 196, 255, 255, 255, 196, 255, 255, 255, 0, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 148, 118, 15, 0, 108, 118, 15, 0, 128, 118, 15, 0, 168, 118, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 241, 2, 0, 0, 58, 3, 0, 0, 5, 5, 0, 0, 209, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 0, 0, 0, 64, 3, 0, 0, 129, 3, 0, 0, 91, 5, 0, 0, 90, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 254, 255, 255, 92, 254, 255, 255, 88, 253, 255, 255, 75, 252, 255, 255, 88, 252, 255, 255, 26, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 253, 255, 255, 219, 254, 255, 255, 137, 255, 255, 255, 22, 255, 255, 255, 195, 252, 255, 255, 88, 255, 255, 255], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 1008272);
allocate([62, 0, 0, 0, 63, 0, 0, 0, 64], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 1028240);
allocate([227, 1, 0, 0, 58, 2, 0, 0, 91, 2, 0, 0, 42, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56, 178, 14, 0, 67, 0, 0, 0, 68, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 178, 14, 0, 69, 0, 0, 0, 70, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 120, 178, 14, 0, 69, 0, 0, 0, 73, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 136, 178, 14, 0, 69, 0, 0, 0, 74, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 192, 3, 0, 0, 192, 4, 0, 0, 192, 5, 0, 0, 192, 6, 0, 0, 192, 7, 0, 0, 192, 8, 0, 0, 192, 9, 0, 0, 192, 10, 0, 0, 192, 11, 0, 0, 192, 12, 0, 0, 192, 13, 0, 0, 192, 14, 0, 0, 192, 15, 0, 0, 192, 16, 0, 0, 192, 17, 0, 0, 192, 18, 0, 0, 192, 19, 0, 0, 192, 20, 0, 0, 192, 21, 0, 0, 192, 22, 0, 0, 192, 23, 0, 0, 192, 24, 0, 0, 192, 25, 0, 0, 192, 26, 0, 0, 192, 27, 0, 0, 192, 28, 0, 0, 192, 29, 0, 0, 192, 30, 0, 0, 192, 31, 0, 0, 192, 0, 0, 0, 179, 1, 0, 0, 195, 2, 0, 0, 195, 3, 0, 0, 195, 4, 0, 0, 195, 5, 0, 0, 195, 6, 0, 0, 195, 7, 0, 0, 195, 8, 0, 0, 195, 9, 0, 0, 195, 10, 0, 0, 195, 11, 0, 0, 195, 12, 0, 0, 195, 13, 0, 0, 211, 14, 0, 0, 195, 15, 0, 0, 195, 0, 0, 12, 187, 1, 0, 12, 195, 2, 0, 12, 195, 3, 0, 12, 195, 4, 0, 12, 211, 12, 181, 16, 0, 124, 181, 16, 0, 236, 181, 16, 0, 236, 181, 16, 0, 220, 221, 16, 0, 92, 190, 16, 0, 92, 184, 16, 0, 0, 0, 0, 0, 10, 0, 0, 0, 100, 0, 0, 0, 232, 3, 0, 0, 16, 39, 0, 0, 160, 134, 1, 0, 64, 66, 15, 0, 128, 150, 152, 0, 0, 225, 245, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 177, 248, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 169, 244, 17, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 8, 0, 0, 0, 161, 240, 17, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 57, 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, 70, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 81, 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, 70, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 81, 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 90, 0, 0, 0, 123, 0, 0, 0, 124, 0, 0, 0, 125, 0, 0, 0, 126, 0, 0, 0, 127], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 1094164);
allocate([1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 57, 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 100, 0, 0, 0, 101, 0, 0, 0, 102, 0, 0, 0, 103, 0, 0, 0, 104, 0, 0, 0, 105, 0, 0, 0, 106, 0, 0, 0, 107, 0, 0, 0, 108, 0, 0, 0, 109, 0, 0, 0, 110, 0, 0, 0, 111, 0, 0, 0, 112, 0, 0, 0, 113, 0, 0, 0, 114, 0, 0, 0, 115, 0, 0, 0, 116, 0, 0, 0, 117, 0, 0, 0, 118, 0, 0, 0, 119, 0, 0, 0, 120, 0, 0, 0, 121, 0, 0, 0, 122, 0, 0, 0, 91, 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 100, 0, 0, 0, 101, 0, 0, 0, 102, 0, 0, 0, 103, 0, 0, 0, 104, 0, 0, 0, 105, 0, 0, 0, 106, 0, 0, 0, 107, 0, 0, 0, 108, 0, 0, 0, 109, 0, 0, 0, 110, 0, 0, 0, 111, 0, 0, 0, 112, 0, 0, 0, 113, 0, 0, 0, 114, 0, 0, 0, 115, 0, 0, 0, 116, 0, 0, 0, 117, 0, 0, 0, 118, 0, 0, 0, 119, 0, 0, 0, 120, 0, 0, 0, 121, 0, 0, 0, 122, 0, 0, 0, 123, 0, 0, 0, 124, 0, 0, 0, 125, 0, 0, 0, 126, 0, 0, 0, 127], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 1097304);
allocate([152, 178, 14, 0, 75, 0, 0, 0, 76, 0, 0, 0, 3, 0, 0, 0, 11, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 28, 0, 0, 0, 13, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 168, 178, 14, 0, 75, 0, 0, 0, 77, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 37, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 30, 0, 0, 0, 14, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 184, 178, 14, 0, 50, 0, 0, 0, 78, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 40, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 41, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, 0, 15, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 200, 178, 14, 0, 50, 0, 0, 0, 79, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 33, 0, 0, 0, 3, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 14, 0, 50, 0, 0, 0, 80, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 41, 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, 0, 3, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 8, 179, 14, 0, 75, 0, 0, 0, 81, 0, 0, 0, 7, 0, 0, 0, 11, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 37, 0, 0, 0, 34, 0, 0, 0, 12, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 28, 0, 0, 0, 14, 0, 0, 0, 31, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 16, 179, 14, 0, 25, 0, 0, 0, 26, 0, 0, 0, 248, 255, 255, 255, 248, 255, 255, 255, 16, 179, 14, 0, 27, 0, 0, 0, 28, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 40, 179, 14, 0, 82, 0, 0, 0, 83, 0, 0, 0, 248, 255, 255, 255, 248, 255, 255, 255, 40, 179, 14, 0, 84, 0, 0, 0, 85, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 64, 179, 14, 0, 42, 0, 0, 0, 43, 0, 0, 0, 252, 255, 255, 255, 252, 255, 255, 255, 64, 179, 14, 0, 44, 0, 0, 0, 45, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 88, 179, 14, 0, 86, 0, 0, 0, 87, 0, 0, 0, 252, 255, 255, 255, 252, 255, 255, 255, 88, 179, 14, 0, 88, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 216, 178, 14, 0, 90, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 80, 180, 14, 0, 92, 0, 0, 0, 93, 0, 0, 0, 94, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 180, 14, 0, 95, 0, 0, 0, 96, 0, 0, 0, 94, 0, 0, 0, 2, 0, 0, 0, 9, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 180, 14, 0, 97, 0, 0, 0, 98, 0, 0, 0, 94, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 180, 14, 0, 99, 0, 0, 0, 100, 0, 0, 0, 94, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 180, 14, 0, 101, 0, 0, 0, 102, 0, 0, 0, 94, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 23, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 181, 14, 0, 103, 0, 0, 0, 104, 0, 0, 0, 94, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 25, 0, 0, 0, 9, 0, 0, 0, 26, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 181, 14, 0, 105, 0, 0, 0, 106, 0, 0, 0, 94, 0, 0, 0, 44, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 248, 255, 255, 255, 48, 181, 14, 0, 45, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 181, 14, 0, 107, 0, 0, 0, 108, 0, 0, 0, 94, 0, 0, 0, 52, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0, 248, 255, 255, 255, 88, 181, 14, 0, 53, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 57, 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 181, 14, 0, 109, 0, 0, 0, 110, 0, 0, 0, 94, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 181, 14, 0, 111, 0, 0, 0, 112, 0, 0, 0, 94, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 181, 14, 0, 113, 0, 0, 0, 114, 0, 0, 0, 94, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 62, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 181, 14, 0, 115, 0, 0, 0, 116, 0, 0, 0, 94, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 65, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 182, 14, 0, 117, 0, 0, 0, 118, 0, 0, 0, 94, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 68, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 182, 14, 0, 119, 0, 0, 0, 120, 0, 0, 0, 94, 0, 0, 0, 69, 0, 0, 0, 70, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 71, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 182, 14, 0, 121, 0, 0, 0, 122, 0, 0, 0, 94, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 182, 14, 0, 123, 0, 0, 0, 124, 0, 0, 0, 94, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 182, 14, 0, 125, 0, 0, 0, 126, 0, 0, 0, 94, 0, 0, 0, 1, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 182, 14, 0, 127, 0, 0, 0, 128, 0, 0, 0, 94, 0, 0, 0, 2, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 182, 14, 0, 129, 0, 0, 0, 130, 0, 0, 0, 94, 0, 0, 0, 18, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 182, 14, 0, 131, 0, 0, 0, 132, 0, 0, 0, 94, 0, 0, 0, 19, 0, 0, 0, 9, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 180, 14, 0, 133, 0, 0, 0, 134, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 180, 14, 0, 135, 0, 0, 0, 136, 0, 0, 0, 94, 0, 0, 0, 35, 0, 0, 0, 20, 0, 0, 0, 36, 0, 0, 0, 21, 0, 0, 0, 37, 0, 0, 0, 1, 0, 0, 0, 22, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 180, 14, 0, 137, 0, 0, 0, 138, 0, 0, 0, 94, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 13, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 180, 14, 0, 139, 0, 0, 0, 140, 0, 0, 0, 94, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 160, 180, 14, 0, 141, 0, 0, 0, 142, 0, 0, 0, 94, 0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 37, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 112, 179, 14, 0, 143, 0, 0, 0, 144, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 128, 179, 14, 0, 143, 0, 0, 0, 145, 0, 0, 0, 94, 0, 0, 0, 23, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 38, 0, 0, 0, 24, 0, 0, 0, 39, 0, 0, 0, 25, 0, 0, 0, 40, 0, 0, 0, 5, 0, 0, 0, 26, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 160, 179, 14, 0, 143, 0, 0, 0, 146, 0, 0, 0, 94, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 15, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 16, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 192, 179, 14, 0, 143, 0, 0, 0, 147, 0, 0, 0, 94, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 18, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 224, 179, 14, 0, 143, 0, 0, 0, 148, 0, 0, 0, 94, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 19, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 20, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 180, 14, 0, 143, 0, 0, 0, 149, 0, 0, 0, 94, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 19, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 20, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 16, 180, 14, 0, 143, 0, 0, 0, 150, 0, 0, 0, 94, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 19, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 20, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 72, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 77, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 83, 0, 0, 0, 37, 0, 0, 0, 109, 0, 0, 0, 47, 0, 0, 0, 37, 0, 0, 0, 100, 0, 0, 0, 47, 0, 0, 0, 37, 0, 0, 0, 121, 0, 0, 0, 37, 0, 0, 0, 89, 0, 0, 0, 45, 0, 0, 0, 37, 0, 0, 0, 109, 0, 0, 0, 45, 0, 0, 0, 37, 0, 0, 0, 100, 0, 0, 0, 37, 0, 0, 0, 73, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 77, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 83, 0, 0, 0, 32, 0, 0, 0, 37, 0, 0, 0, 112, 0, 0, 0, 37, 0, 0, 0, 72, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 77, 0, 0, 0, 37, 0, 0, 0, 72, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 77, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 114, 0, 0, 0, 117, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 97, 0, 0, 0, 108, 0, 0, 0, 115, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 117, 0, 0, 0, 110, 0, 0, 0, 100, 0, 0, 0, 97, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 111, 0, 0, 0, 110, 0, 0, 0, 100, 0, 0, 0, 97, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 117, 0, 0, 0, 101, 0, 0, 0, 115, 0, 0, 0, 100, 0, 0, 0, 97, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 101, 0, 0, 0, 100, 0, 0, 0, 110, 0, 0, 0, 101, 0, 0, 0, 115, 0, 0, 0, 100, 0, 0, 0, 97, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 104, 0, 0, 0, 117, 0, 0, 0, 114, 0, 0, 0, 115, 0, 0, 0, 100, 0, 0, 0, 97, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 114, 0, 0, 0, 105, 0, 0, 0, 100, 0, 0, 0, 97, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 97, 0, 0, 0, 116, 0, 0, 0, 117, 0, 0, 0, 114, 0, 0, 0, 100, 0, 0, 0, 97, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 117, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 111, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 117, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 101, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 104, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 114, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 97, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 97, 0, 0, 0, 110, 0, 0, 0, 117, 0, 0, 0, 97, 0, 0, 0, 114, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 101, 0, 0, 0, 98, 0, 0, 0, 114, 0, 0, 0, 117, 0, 0, 0, 97, 0, 0, 0, 114, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 97, 0, 0, 0, 114, 0, 0, 0, 99, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 112, 0, 0, 0, 114, 0, 0, 0, 105, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 97, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 117, 0, 0, 0, 110, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 117, 0, 0, 0, 108, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 117, 0, 0, 0, 103, 0, 0, 0, 117, 0, 0, 0, 115, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 101, 0, 0, 0, 112, 0, 0, 0, 116, 0, 0, 0, 101, 0, 0, 0, 109, 0, 0, 0, 98, 0, 0, 0, 101, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 99, 0, 0, 0, 116, 0, 0, 0, 111, 0, 0, 0, 98, 0, 0, 0, 101, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 111, 0, 0, 0, 118, 0, 0, 0, 101, 0, 0, 0, 109, 0, 0, 0, 98, 0, 0, 0, 101, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 101, 0, 0, 0, 99, 0, 0, 0, 101, 0, 0, 0, 109, 0, 0, 0, 98, 0, 0, 0, 101, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 97, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 101, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 97, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 112, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 117, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 117, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 117, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 101, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 99, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 111, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 101, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 109, 0, 0, 0, 47, 0, 0, 0, 37, 0, 0, 0, 100, 0, 0, 0, 47, 0, 0, 0, 37, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 72, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 77, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 97, 0, 0, 0, 32, 0, 0, 0, 37, 0, 0, 0, 98, 0, 0, 0, 32, 0, 0, 0, 37, 0, 0, 0, 100, 0, 0, 0, 32, 0, 0, 0, 37, 0, 0, 0, 72, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 77, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 83, 0, 0, 0, 32, 0, 0, 0, 37, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 73, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 77, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 83, 0, 0, 0, 32, 0, 0, 0, 37, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 3, 32, 2, 32, 2, 32, 2, 32, 2, 32, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 1, 96, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 8, 216, 8, 216, 8, 216, 8, 216, 8, 216, 8, 216, 8, 216, 8, 216, 8, 216, 8, 216, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 8, 213, 8, 213, 8, 213, 8, 213, 8, 213, 8, 213, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 8, 214, 8, 214, 8, 214, 8, 214, 8, 214, 8, 214, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 4, 192, 4, 192, 4, 192, 4, 192, 2], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 1099856);
allocate([75, 80, 75, 0, 75, 78, 78, 75, 0, 75, 66, 78, 75, 0, 75, 82, 75, 80, 0, 75, 82, 75, 66, 0, 75, 82, 75, 78, 0, 75, 81, 75, 80, 0, 75, 81, 75, 82, 0, 75, 78, 80, 75, 0, 75, 78, 80, 75, 66, 0, 75, 82, 80, 75, 82, 0, 75, 82, 80, 75, 66, 0, 75, 66, 80, 75, 66, 0, 75, 66, 80, 75, 78, 0, 75, 66, 80, 80, 75, 66, 0, 75, 82, 80, 80, 75, 82, 80, 0, 47, 56, 47, 56, 47, 56, 47, 56, 47, 56, 47, 56, 47, 0, 32, 119, 32, 45, 32, 45, 32, 48, 32, 49, 48, 0, 74, 97, 110, 32, 70, 101, 98, 32, 77, 97, 114, 32, 65, 112, 114, 32, 77, 97, 121, 32, 74, 117, 110, 32, 74, 117, 108, 32, 65, 117, 103, 32, 83, 101, 112, 32, 79, 99, 116, 32, 78, 111, 118, 32, 68, 101, 99, 0, 79, 99, 116, 32, 32, 50, 32, 50, 48, 49, 54, 0, 83, 116, 111, 99, 107, 102, 105, 115, 104, 32, 0, 10, 105, 100, 32, 97, 117, 116, 104, 111, 114, 32, 0, 32, 98, 121, 32, 0, 84, 46, 32, 82, 111, 109, 115, 116, 97, 100, 44, 32, 77, 46, 32, 67, 111, 115, 116, 97, 108, 98, 97, 44, 32, 74, 46, 32, 75, 105, 105, 115, 107, 105, 44, 32, 71, 46, 32, 76, 105, 110, 115, 99, 111, 116, 116, 0, 119, 0, 60, 60, 32, 0, 62, 62, 32, 0, 32, 119, 32, 0, 32, 98, 32, 0, 32, 45, 32, 0, 43, 0, 32, 80, 78, 66, 82, 81, 75, 32, 32, 112, 110, 98, 114, 113, 107, 0, 0, 0, 105, 110, 102, 111, 32, 100, 101, 112, 116, 104, 32, 48, 32, 115, 99, 111, 114, 101, 32, 0, 98, 101, 115, 116, 109, 111, 118, 101, 32, 0, 32, 112, 111, 110, 100, 101, 114, 32, 0, 105, 110, 102, 111, 0, 32, 100, 101, 112, 116, 104, 32, 0, 32, 115, 101, 108, 100, 101, 112, 116, 104, 32, 0, 32, 109, 117, 108, 116, 105, 112, 118, 32, 0, 32, 115, 99, 111, 114, 101, 32, 0, 32, 117, 112, 112, 101, 114, 98, 111, 117, 110, 100, 0, 32, 108, 111, 119, 101, 114, 98, 111, 117, 110, 100, 0, 32, 110, 111, 100, 101, 115, 32, 0, 32, 110, 112, 115, 32, 0, 32, 104, 97, 115, 104, 102, 117, 108, 108, 32, 0, 32, 116, 98, 104, 105, 116, 115, 32, 0, 32, 116, 105, 109, 101, 32, 0, 32, 112, 118, 0, 105, 110, 102, 111, 32, 110, 111, 100, 101, 115, 32, 0, 105, 110, 102, 111, 32, 100, 101, 112, 116, 104, 32, 0, 32, 99, 117, 114, 114, 109, 111, 118, 101, 32, 0, 32, 99, 117, 114, 114, 109, 111, 118, 101, 110, 117, 109, 98, 101, 114, 32, 0, 70, 97, 105, 108, 101, 100, 32, 116, 111, 32, 97, 108, 108, 111, 99, 97, 116, 101, 32, 0, 77, 66, 32, 102, 111, 114, 32, 116, 114, 97, 110, 115, 112, 111, 115, 105, 116, 105, 111, 110, 32, 116, 97, 98, 108, 101, 46, 0, 0, 114, 110, 98, 113, 107, 98, 110, 114, 47, 112, 112, 112, 112, 112, 112, 112, 112, 47, 56, 47, 56, 47, 56, 47, 56, 47, 80, 80, 80, 80, 80, 80, 80, 80, 47, 82, 78, 66, 81, 75, 66, 78, 82, 32, 119, 32, 75, 81, 107, 113, 32, 45, 32, 48, 32, 49, 0, 113, 117, 105, 116, 0, 115, 116, 111, 112, 0, 112, 111, 110, 100, 101, 114, 104, 105, 116, 0, 117, 99, 105, 0, 105, 100, 32, 110, 97, 109, 101, 32, 0, 10, 0, 10, 117, 99, 105, 111, 107, 0, 117, 99, 105, 110, 101, 119, 103, 97, 109, 101, 0, 105, 115, 114, 101, 97, 100, 121, 0, 114, 101, 97, 100, 121, 111, 107, 0, 103, 111, 0, 115, 101, 97, 114, 99, 104, 109, 111, 118, 101, 115, 0, 119, 116, 105, 109, 101, 0, 98, 116, 105, 109, 101, 0, 119, 105, 110, 99, 0, 98, 105, 110, 99, 0, 109, 111, 118, 101, 115, 116, 111, 103, 111, 0, 100, 101, 112, 116, 104, 0, 110, 111, 100, 101, 115, 0, 109, 111, 118, 101, 116, 105, 109, 101, 0, 109, 97, 116, 101, 0, 105, 110, 102, 105, 110, 105, 116, 101, 0, 112, 111, 110, 100, 101, 114, 0, 112, 111, 115, 105, 116, 105, 111, 110, 0, 115, 116, 97, 114, 116, 112, 111, 115, 0, 114, 110, 98, 113, 107, 98, 110, 114, 47, 112, 112, 112, 112, 112, 112, 112, 112, 47, 56, 47, 49, 80, 80, 50, 80, 80, 49, 47, 80, 80, 80, 80, 80, 80, 80, 80, 47, 80, 80, 80, 80, 80, 80, 80, 80, 47, 80, 80, 80, 80, 80, 80, 80, 80, 47, 80, 80, 80, 80, 80, 80, 80, 80, 32, 119, 32, 107, 113, 32, 45, 32, 48, 32, 49, 0, 56, 47, 56, 47, 56, 47, 56, 47, 56, 47, 56, 47, 107, 114, 98, 110, 78, 66, 82, 75, 47, 113, 114, 98, 110, 78, 66, 82, 81, 32, 119, 32, 45, 32, 45, 32, 48, 32, 49, 0, 114, 110, 98, 113, 107, 98, 110, 114, 47, 112, 112, 112, 112, 112, 112, 112, 112, 47, 56, 47, 56, 47, 56, 47, 56, 47, 80, 80, 80, 80, 80, 80, 80, 80, 47, 82, 78, 66, 81, 75, 66, 78, 82, 32, 119, 32, 75, 81, 107, 113, 32, 45, 32, 51, 43, 51, 32, 48, 32, 49, 0, 102, 101, 110, 0, 109, 111, 118, 101, 115, 0, 32, 0, 105, 110, 102, 111, 32, 115, 116, 114, 105, 110, 103, 32, 118, 97, 114, 105, 97, 110, 116, 32, 0, 32, 115, 116, 97, 114, 116, 112, 111, 115, 32, 0, 115, 101, 116, 111, 112, 116, 105, 111, 110, 0, 118, 97, 108, 117, 101, 0, 78, 111, 32, 115, 117, 99, 104, 32, 111, 112, 116, 105, 111, 110, 58, 32, 0, 85, 110, 107, 110, 111, 119, 110, 32, 99, 111, 109, 109, 97, 110, 100, 58, 32, 0, 99, 112, 32, 0, 109, 97, 116, 101, 32, 0, 40, 110, 111, 110, 101, 41, 0, 48, 48, 48, 48, 0, 32, 112, 110, 98, 114, 113, 107, 0, 115, 112, 105, 110, 0, 68, 101, 98, 117, 103, 32, 76, 111, 103, 32, 70, 105, 108, 101, 0, 115, 116, 114, 105, 110, 103, 0, 67, 111, 110, 116, 101, 109, 112, 116, 0, 84, 104, 114, 101, 97, 100, 115, 0, 72, 97, 115, 104, 0, 67, 108, 101, 97, 114, 32, 72, 97, 115, 104, 0, 98, 117, 116, 116, 111, 110, 0, 80, 111, 110, 100, 101, 114, 0, 99, 104, 101, 99, 107, 0, 77, 117, 108, 116, 105, 80, 86, 0, 83, 107, 105, 108, 108, 32, 76, 101, 118, 101, 108, 0, 77, 111, 118, 101, 32, 79, 118, 101, 114, 104, 101, 97, 100, 0, 77, 105, 110, 105, 109, 117, 109, 32, 84, 104, 105, 110, 107, 105, 110, 103, 32, 84, 105, 109, 101, 0, 83, 108, 111, 119, 32, 77, 111, 118, 101, 114, 0, 110, 111, 100, 101, 115, 116, 105, 109, 101, 0, 85, 67, 73, 95, 67, 104, 101, 115, 115, 57, 54, 48, 0, 85, 67, 73, 95, 86, 97, 114, 105, 97, 110, 116, 0, 10, 111, 112, 116, 105, 111, 110, 32, 110, 97, 109, 101, 32, 0, 32, 116, 121, 112, 101, 32, 0, 32, 100, 101, 102, 97, 117, 108, 116, 32, 0, 99, 111, 109, 98, 111, 0, 32, 118, 97, 114, 32, 0, 32, 109, 105, 110, 32, 0, 32, 109, 97, 120, 32, 0, 99, 104, 101, 115, 115, 0, 97, 116, 111, 109, 105, 99, 0, 103, 105, 118, 101, 97, 119, 97, 121, 0, 104, 111, 114, 100, 101, 0, 107, 105, 110, 103, 111, 102, 116, 104, 101, 104, 105, 108, 108, 0, 114, 97, 99, 105, 110, 103, 107, 105, 110, 103, 115, 0, 114, 101, 108, 97, 121, 0, 116, 104, 114, 101, 101, 99, 104, 101, 99, 107, 0, 83, 116, 57, 98, 97, 100, 95, 97, 108, 108, 111, 99, 0, 83, 116, 57, 101, 120, 99, 101, 112, 116, 105, 111, 110, 0, 83, 116, 57, 116, 121, 112, 101, 95, 105, 110, 102, 111, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 49, 54, 95, 95, 115, 104, 105, 109, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 49, 55, 95, 95, 99, 108, 97, 115, 115, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 50, 48, 95, 95, 115, 105, 95, 99, 108, 97, 115, 115, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 50, 49, 95, 95, 118, 109, 105, 95, 99, 108, 97, 115, 115, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 0, 33, 34, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 32, 108, 101, 110, 103, 116, 104, 95, 101, 114, 114, 111, 114, 34, 0, 67, 58, 92, 99, 121, 103, 100, 114, 105, 118, 101, 92, 99, 92, 80, 114, 111, 103, 114, 97, 109, 32, 70, 105, 108, 101, 115, 92, 69, 109, 115, 99, 114, 105, 112, 116, 101, 110, 92, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 92, 49, 46, 51, 53, 46, 48, 92, 115, 121, 115, 116, 101, 109, 92, 105, 110, 99, 108, 117, 100, 101, 92, 108, 105, 98, 99, 120, 120, 92, 115, 116, 114, 105, 110, 103, 0, 95, 95, 116, 104, 114, 111, 119, 95, 108, 101, 110, 103, 116, 104, 95, 101, 114, 114, 111, 114, 0, 33, 34, 118, 101, 99, 116, 111, 114, 32, 108, 101, 110, 103, 116, 104, 95, 101, 114, 114, 111, 114, 34, 0, 112, 116, 104, 114, 101, 97, 100, 95, 111, 110, 99, 101, 32, 102, 97, 105, 108, 117, 114, 101, 32, 105, 110, 32, 95, 95, 99, 120, 97, 95, 103, 101, 116, 95, 103, 108, 111, 98, 97, 108, 115, 95, 102, 97, 115, 116, 40, 41, 0, 115, 116, 100, 58, 58, 98, 97, 100, 95, 97, 108, 108, 111, 99, 0, 116, 101, 114, 109, 105, 110, 97, 116, 101, 95, 104, 97, 110, 100, 108, 101, 114, 32, 117, 110, 101, 120, 112, 101, 99, 116, 101, 100, 108, 121, 32, 114, 101, 116, 117, 114, 110, 101, 100, 0, 99, 97, 110, 110, 111, 116, 32, 99, 114, 101, 97, 116, 101, 32, 112, 116, 104, 114, 101, 97, 100, 32, 107, 101, 121, 32, 102, 111, 114, 32, 95, 95, 99, 120, 97, 95, 103, 101, 116, 95, 103, 108, 111, 98, 97, 108, 115, 40, 41, 0, 99, 97, 110, 110, 111, 116, 32, 122, 101, 114, 111, 32, 111, 117, 116, 32, 116, 104, 114, 101, 97, 100, 32, 118, 97, 108, 117, 101, 32, 102, 111, 114, 32, 95, 95, 99, 120, 97, 95, 103, 101, 116, 95, 103, 108, 111, 98, 97, 108, 115, 40, 41, 0, 33, 34, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 32, 111, 117, 116, 95, 111, 102, 95, 114, 97, 110, 103, 101, 34, 0, 116, 101, 114, 109, 105, 110, 97, 116, 105, 110, 103, 32, 119, 105, 116, 104, 32, 37, 115, 32, 101, 120, 99, 101, 112, 116, 105, 111, 110, 32, 111, 102, 32, 116, 121, 112, 101, 32, 37, 115, 58, 32, 37, 115, 0, 116, 101, 114, 109, 105, 110, 97, 116, 105, 110, 103, 32, 119, 105, 116, 104, 32, 37, 115, 32, 101, 120, 99, 101, 112, 116, 105, 111, 110, 32, 111, 102, 32, 116, 121, 112, 101, 32, 37, 115, 0, 116, 101, 114, 109, 105, 110, 97, 116, 105, 110, 103, 32, 119, 105, 116, 104, 32, 37, 115, 32, 102, 111, 114, 101, 105, 103, 110, 32, 101, 120, 99, 101, 112, 116, 105, 111, 110, 0, 116, 101, 114, 109, 105, 110, 97, 116, 105, 110, 103, 0, 117, 110, 99, 97, 117, 103, 104, 116, 0, 84, 33, 34, 25, 13, 1, 2, 3, 17, 75, 28, 12, 16, 4, 11, 29, 18, 30, 39, 104, 110, 111, 112, 113, 98, 32, 5, 6, 15, 19, 20, 21, 26, 8, 22, 7, 40, 36, 23, 24, 9, 10, 14, 27, 31, 37, 35, 131, 130, 125, 38, 42, 43, 60, 61, 62, 63, 67, 71, 74, 77, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 99, 100, 101, 102, 103, 105, 106, 107, 108, 114, 115, 116, 121, 122, 123, 124, 0, 73, 108, 108, 101, 103, 97, 108, 32, 98, 121, 116, 101, 32, 115, 101, 113, 117, 101, 110, 99, 101, 0, 68, 111, 109, 97, 105, 110, 32, 101, 114, 114, 111, 114, 0, 82, 101, 115, 117, 108, 116, 32, 110, 111, 116, 32, 114, 101, 112, 114, 101, 115, 101, 110, 116, 97, 98, 108, 101, 0, 78, 111, 116, 32, 97, 32, 116, 116, 121, 0, 80, 101, 114, 109, 105, 115, 115, 105, 111, 110, 32, 100, 101, 110, 105, 101, 100, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 110, 111, 116, 32, 112, 101, 114, 109, 105, 116, 116, 101, 100, 0, 78, 111, 32, 115, 117, 99, 104, 32, 102, 105, 108, 101, 32, 111, 114, 32, 100, 105, 114, 101, 99, 116, 111, 114, 121, 0, 78, 111, 32, 115, 117, 99, 104, 32, 112, 114, 111, 99, 101, 115, 115, 0, 70, 105, 108, 101, 32, 101, 120, 105, 115, 116, 115, 0, 86, 97, 108, 117, 101, 32, 116, 111, 111, 32, 108, 97, 114, 103, 101, 32, 102, 111, 114, 32, 100, 97, 116, 97, 32, 116, 121, 112, 101, 0, 78, 111, 32, 115, 112, 97, 99, 101, 32, 108, 101, 102, 116, 32, 111, 110, 32, 100, 101, 118, 105, 99, 101, 0, 79, 117, 116, 32, 111, 102, 32, 109, 101, 109, 111, 114, 121, 0, 82, 101, 115, 111, 117, 114, 99, 101, 32, 98, 117, 115, 121, 0, 73, 110, 116, 101, 114, 114, 117, 112, 116, 101, 100, 32, 115, 121, 115, 116, 101, 109, 32, 99, 97, 108, 108, 0, 82, 101, 115, 111, 117, 114, 99, 101, 32, 116, 101, 109, 112, 111, 114, 97, 114, 105, 108, 121, 32, 117, 110, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 73, 110, 118, 97, 108, 105, 100, 32, 115, 101, 101, 107, 0, 67, 114, 111, 115, 115, 45, 100, 101, 118, 105, 99, 101, 32, 108, 105, 110, 107, 0, 82, 101, 97, 100, 45, 111, 110, 108, 121, 32, 102, 105, 108, 101, 32, 115, 121, 115, 116, 101, 109, 0, 68, 105, 114, 101, 99, 116, 111, 114, 121, 32, 110, 111, 116, 32, 101, 109, 112, 116, 121, 0, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 32, 114, 101, 115, 101, 116, 32, 98, 121, 32, 112, 101, 101, 114, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 116, 105, 109, 101, 100, 32, 111, 117, 116, 0, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 32, 114, 101, 102, 117, 115, 101, 100, 0, 72, 111, 115, 116, 32, 105, 115, 32, 100, 111, 119, 110, 0, 72, 111, 115, 116, 32, 105, 115, 32, 117, 110, 114, 101, 97, 99, 104, 97, 98, 108, 101, 0, 65, 100, 100, 114, 101, 115, 115, 32, 105, 110, 32, 117, 115, 101, 0, 66, 114, 111, 107, 101, 110, 32, 112, 105, 112, 101, 0, 73, 47, 79, 32, 101, 114, 114, 111, 114, 0, 78, 111, 32, 115, 117, 99, 104, 32, 100, 101, 118, 105, 99, 101, 32, 111, 114, 32, 97, 100, 100, 114, 101, 115, 115, 0, 66, 108, 111, 99, 107, 32, 100, 101, 118, 105, 99, 101, 32, 114, 101, 113, 117, 105, 114, 101, 100, 0, 78, 111, 32, 115, 117, 99, 104, 32, 100, 101, 118, 105, 99, 101, 0, 78, 111, 116, 32, 97, 32, 100, 105, 114, 101, 99, 116, 111, 114, 121, 0, 73, 115, 32, 97, 32, 100, 105, 114, 101, 99, 116, 111, 114, 121, 0, 84, 101, 120, 116, 32, 102, 105, 108, 101, 32, 98, 117, 115, 121, 0, 69, 120, 101, 99, 32, 102, 111, 114, 109, 97, 116, 32, 101, 114, 114, 111, 114, 0, 73, 110, 118, 97, 108, 105, 100, 32, 97, 114, 103, 117, 109, 101, 110, 116, 0, 65, 114, 103, 117, 109, 101, 110, 116, 32, 108, 105, 115, 116, 32, 116, 111, 111, 32, 108, 111, 110, 103, 0, 83, 121, 109, 98, 111, 108, 105, 99, 32, 108, 105, 110, 107, 32, 108, 111, 111, 112, 0, 70, 105, 108, 101, 110, 97, 109, 101, 32, 116, 111, 111, 32, 108, 111, 110, 103, 0, 84, 111, 111, 32, 109, 97, 110, 121, 32, 111, 112, 101, 110, 32, 102, 105, 108, 101, 115, 32, 105, 110, 32, 115, 121, 115, 116, 101, 109, 0, 78, 111, 32, 102, 105, 108, 101, 32, 100, 101, 115, 99, 114, 105, 112, 116, 111, 114, 115, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 66, 97, 100, 32, 102, 105, 108, 101, 32, 100, 101, 115, 99, 114, 105, 112, 116, 111, 114, 0, 78, 111, 32, 99, 104, 105, 108, 100, 32, 112, 114, 111, 99, 101, 115, 115, 0, 66, 97, 100, 32, 97, 100, 100, 114, 101, 115, 115, 0, 70, 105, 108, 101, 32, 116, 111, 111, 32, 108, 97, 114, 103, 101, 0, 84, 111, 111, 32, 109, 97, 110, 121, 32, 108, 105, 110, 107, 115, 0, 78, 111, 32, 108, 111, 99, 107, 115, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 82, 101, 115, 111, 117, 114, 99, 101, 32, 100, 101, 97, 100, 108, 111, 99, 107, 32, 119, 111, 117, 108, 100, 32, 111, 99, 99, 117, 114, 0, 83, 116, 97, 116, 101, 32, 110, 111, 116, 32, 114, 101, 99, 111, 118, 101, 114, 97, 98, 108, 101, 0, 80, 114, 101, 118, 105, 111, 117, 115, 32, 111, 119, 110, 101, 114, 32, 100, 105, 101, 100, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 99, 97, 110, 99, 101, 108, 101, 100, 0, 70, 117, 110, 99, 116, 105, 111, 110, 32, 110, 111, 116, 32, 105, 109, 112, 108, 101, 109, 101, 110, 116, 101, 100, 0, 78, 111, 32, 109, 101, 115, 115, 97, 103, 101, 32, 111, 102, 32, 100, 101, 115, 105, 114, 101, 100, 32, 116, 121, 112, 101, 0, 73, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 114, 101, 109, 111, 118, 101, 100, 0, 68, 101, 118, 105, 99, 101, 32, 110, 111, 116, 32, 97, 32, 115, 116, 114, 101, 97, 109, 0, 78, 111, 32, 100, 97, 116, 97, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 68, 101, 118, 105, 99, 101, 32, 116, 105, 109, 101, 111, 117, 116, 0, 79, 117, 116, 32, 111, 102, 32, 115, 116, 114, 101, 97, 109, 115, 32, 114, 101, 115, 111, 117, 114, 99, 101, 115, 0, 76, 105, 110, 107, 32, 104, 97, 115, 32, 98, 101, 101, 110, 32, 115, 101, 118, 101, 114, 101, 100, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 101, 114, 114, 111, 114, 0, 66, 97, 100, 32, 109, 101, 115, 115, 97, 103, 101, 0, 70, 105, 108, 101, 32, 100, 101, 115, 99, 114, 105, 112, 116, 111, 114, 32, 105, 110, 32, 98, 97, 100, 32, 115, 116, 97, 116, 101, 0, 78, 111, 116, 32, 97, 32, 115, 111, 99, 107, 101, 116, 0, 68, 101, 115, 116, 105, 110, 97, 116, 105, 111, 110, 32, 97, 100, 100, 114, 101, 115, 115, 32, 114, 101, 113, 117, 105, 114, 101, 100, 0, 77, 101, 115, 115, 97, 103, 101, 32, 116, 111, 111, 32, 108, 97, 114, 103, 101, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 119, 114, 111, 110, 103, 32, 116, 121, 112, 101, 32, 102, 111, 114, 32, 115, 111, 99, 107, 101, 116, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 110, 111, 116, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 83, 111, 99, 107, 101, 116, 32, 116, 121, 112, 101, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 78, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 102, 97, 109, 105, 108, 121, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 65, 100, 100, 114, 101, 115, 115, 32, 102, 97, 109, 105, 108, 121, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 32, 98, 121, 32, 112, 114, 111, 116, 111, 99, 111, 108, 0, 65, 100, 100, 114, 101, 115, 115, 32, 110, 111, 116, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 78, 101, 116, 119, 111, 114, 107, 32, 105, 115, 32, 100, 111, 119, 110, 0, 78, 101, 116, 119, 111, 114, 107, 32, 117, 110, 114, 101, 97, 99, 104, 97, 98, 108, 101, 0, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 32, 114, 101, 115, 101, 116, 32, 98, 121, 32, 110, 101, 116, 119, 111, 114, 107, 0, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 32, 97, 98, 111, 114, 116, 101, 100, 0, 78, 111, 32, 98, 117, 102, 102, 101, 114, 32, 115, 112, 97, 99, 101, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 83, 111, 99, 107, 101, 116, 32, 105, 115, 32, 99, 111, 110, 110, 101, 99, 116, 101, 100, 0, 83, 111, 99, 107, 101, 116, 32, 110, 111, 116, 32, 99, 111, 110, 110, 101, 99, 116, 101, 100, 0, 67, 97, 110, 110, 111, 116, 32, 115, 101, 110, 100, 32, 97, 102, 116, 101, 114, 32, 115, 111, 99, 107, 101, 116, 32, 115, 104, 117, 116, 100, 111, 119, 110, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 97, 108, 114, 101, 97, 100, 121, 32, 105, 110, 32, 112, 114, 111, 103, 114, 101, 115, 115, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 105, 110, 32, 112, 114, 111, 103, 114, 101, 115, 115, 0, 83, 116, 97, 108, 101, 32, 102, 105, 108, 101, 32, 104, 97, 110, 100, 108, 101, 0, 82, 101, 109, 111, 116, 101, 32, 73, 47, 79, 32, 101, 114, 114, 111, 114, 0, 81, 117, 111, 116, 97, 32, 101, 120, 99, 101, 101, 100, 101, 100, 0, 78, 111, 32, 109, 101, 100, 105, 117, 109, 32, 102, 111, 117, 110, 100, 0, 87, 114, 111, 110, 103, 32, 109, 101, 100, 105, 117, 109, 32, 116, 121, 112, 101, 0, 78, 111, 32, 101, 114, 114, 111, 114, 32, 105, 110, 102, 111, 114, 109, 97, 116, 105, 111, 110, 0, 0, 105, 110, 102, 105, 110, 105, 116, 121, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 255, 255, 255, 255, 255, 255, 255, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 255, 255, 255, 255, 255, 255, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 1, 2, 4, 7, 3, 6, 5, 0, 80, 79, 83, 73, 88, 0, 114, 119, 97], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 1171412);
allocate([17, 0, 10, 0, 17, 17, 17, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 15, 10, 17, 17, 17, 3, 10, 7, 0, 1, 19, 9, 11, 11, 0, 0, 9, 6, 11, 0, 0, 11, 0, 6, 17, 0, 0, 0, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 10, 10, 17, 17, 17, 0, 10, 0, 0, 2, 0, 9, 11, 0, 0, 0, 9, 0, 11, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 12, 0, 0, 0, 0, 9, 12, 0, 0, 0, 0, 0, 12, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 4, 13, 0, 0, 0, 0, 9, 14, 0, 0, 0, 0, 0, 14, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 15, 0, 0, 0, 0, 9, 16, 0, 0, 0, 0, 0, 16, 0, 0, 16, 0, 0, 18, 0, 0, 0, 18, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 18, 18, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 10, 0, 0, 0, 0, 9, 11, 0, 0, 0, 0, 0, 11, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 12, 0, 0, 0, 0, 9, 12, 0, 0, 0, 0, 0, 12, 0, 0, 12, 0, 0, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70, 45, 43, 32, 32, 32, 48, 88, 48, 120, 0, 40, 110, 117, 108, 108, 41, 0, 45, 48, 88, 43, 48, 88, 32, 48, 88, 45, 48, 120, 43, 48, 120, 32, 48, 120, 0, 105, 110, 102, 0, 73, 78, 70, 0, 110, 97, 110, 0, 78, 65, 78, 0, 46, 0, 99, 111, 110, 100, 105, 116, 105, 111, 110, 95, 118, 97, 114, 105, 97, 98, 108, 101, 58, 58, 119, 97, 105, 116, 58, 32, 109, 117, 116, 101, 120, 32, 110, 111, 116, 32, 108, 111, 99, 107, 101, 100, 0, 99, 111, 110, 100, 105, 116, 105, 111, 110, 95, 118, 97, 114, 105, 97, 98, 108, 101, 32, 119, 97, 105, 116, 32, 102, 97, 105, 108, 101, 100, 0, 78, 83, 116, 51, 95, 95, 49, 49, 49, 95, 95, 115, 116, 100, 111, 117, 116, 98, 117, 102, 73, 119, 69, 69, 0, 117, 110, 115, 117, 112, 112, 111, 114, 116, 101, 100, 32, 108, 111, 99, 97, 108, 101, 32, 102, 111, 114, 32, 115, 116, 97, 110, 100, 97, 114, 100, 32, 105, 110, 112, 117, 116, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 115, 116, 100, 105, 110, 98, 117, 102, 73, 119, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 49, 95, 95, 115, 116, 100, 111, 117, 116, 98, 117, 102, 73, 99, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 115, 116, 100, 105, 110, 98, 117, 102, 73, 99, 69, 69, 0, 109, 117, 116, 101, 120, 32, 108, 111, 99, 107, 32, 102, 97, 105, 108, 101, 100, 0, 101, 99, 32, 61, 61, 32, 48, 0, 67, 58, 92, 99, 121, 103, 100, 114, 105, 118, 101, 92, 99, 92, 80, 114, 111, 103, 114, 97, 109, 32, 70, 105, 108, 101, 115, 92, 69, 109, 115, 99, 114, 105, 112, 116, 101, 110, 92, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 92, 49, 46, 51, 53, 46, 48, 92, 115, 121, 115, 116, 101, 109, 92, 108, 105, 98, 92, 108, 105, 98, 99, 120, 120, 92, 109, 117, 116, 101, 120, 46, 99, 112, 112, 0, 117, 110, 108, 111, 99, 107, 0, 115, 116, 111, 105, 0, 37, 100, 0, 58, 32, 110, 111, 32, 99, 111, 110, 118, 101, 114, 115, 105, 111, 110, 0, 58, 32, 111, 117, 116, 32, 111, 102, 32, 114, 97, 110, 103, 101, 0, 99, 108, 111, 99, 107, 95, 103, 101, 116, 116, 105, 109, 101, 40, 67, 76, 79, 67, 75, 95, 77, 79, 78, 79, 84, 79, 78, 73, 67, 41, 32, 102, 97, 105, 108, 101, 100, 0, 78, 83, 116, 51, 95, 95, 49, 56, 105, 111, 115, 95, 98, 97, 115, 101, 69, 0, 78, 83, 116, 51, 95, 95, 49, 57, 98, 97, 115, 105, 99, 95, 105, 111, 115, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 57, 98, 97, 115, 105, 99, 95, 105, 111, 115, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 53, 98, 97, 115, 105, 99, 95, 115, 116, 114, 101, 97, 109, 98, 117, 102, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 53, 98, 97, 115, 105, 99, 95, 115, 116, 114, 101, 97, 109, 98, 117, 102, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 51, 98, 97, 115, 105, 99, 95, 105, 115, 116, 114, 101, 97, 109, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 51, 98, 97, 115, 105, 99, 95, 105, 115, 116, 114, 101, 97, 109, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 51, 98, 97, 115, 105, 99, 95, 111, 115, 116, 114, 101, 97, 109, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 51, 98, 97, 115, 105, 99, 95, 111, 115, 116, 114, 101, 97, 109, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 69, 69, 0, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99, 100, 101, 102, 65, 66, 67, 68, 69, 70, 120, 88, 43, 45, 112, 80, 105, 73, 110, 78, 0, 78, 83, 116, 51, 95, 95, 49, 54, 108, 111, 99, 97, 108, 101, 53, 102, 97, 99, 101, 116, 69, 0, 78, 83, 116, 51, 95, 95, 49, 53, 99, 116, 121, 112, 101, 73, 119, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 55, 99, 111, 100, 101, 99, 118, 116, 73, 99, 99, 49, 49, 95, 95, 109, 98, 115, 116, 97, 116, 101, 95, 116, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 55, 99, 111, 100, 101, 99, 118, 116, 73, 68, 115, 99, 49, 49, 95, 95, 109, 98, 115, 116, 97, 116, 101, 95, 116, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 55, 99, 111, 100, 101, 99, 118, 116, 73, 68, 105, 99, 49, 49, 95, 95, 109, 98, 115, 116, 97, 116, 101, 95, 116, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 54, 95, 95, 110, 97, 114, 114, 111, 119, 95, 116, 111, 95, 117, 116, 102, 56, 73, 76, 106, 51, 50, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 55, 95, 95, 119, 105, 100, 101, 110, 95, 102, 114, 111, 109, 95, 117, 116, 102, 56, 73, 76, 106, 51, 50, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 55, 99, 111, 100, 101, 99, 118, 116, 73, 119, 99, 49, 49, 95, 95, 109, 98, 115, 116, 97, 116, 101, 95, 116, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 54, 108, 111, 99, 97, 108, 101, 53, 95, 95, 105, 109, 112, 69, 0, 78, 83, 116, 51, 95, 95, 49, 55, 99, 111, 108, 108, 97, 116, 101, 73, 99, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 55, 99, 111, 108, 108, 97, 116, 101, 73, 119, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 53, 99, 116, 121, 112, 101, 73, 99, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 56, 110, 117, 109, 112, 117, 110, 99, 116, 73, 99, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 56, 110, 117, 109, 112, 117, 110, 99, 116, 73, 119, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 55, 110, 117, 109, 95, 103, 101, 116, 73, 99, 78, 83, 95, 49, 57, 105, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 55, 110, 117, 109, 95, 103, 101, 116, 73, 119, 78, 83, 95, 49, 57, 105, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 55, 110, 117, 109, 95, 112, 117, 116, 73, 99, 78, 83, 95, 49, 57, 111, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 55, 110, 117, 109, 95, 112, 117, 116, 73, 119, 78, 83, 95, 49, 57, 111, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 56, 116, 105, 109, 101, 95, 103, 101, 116, 73, 99, 78, 83, 95, 49, 57, 105, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 56, 116, 105, 109, 101, 95, 103, 101, 116, 73, 119, 78, 83, 95, 49, 57, 105, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 56, 116, 105, 109, 101, 95, 112, 117, 116, 73, 99, 78, 83, 95, 49, 57, 111, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 56, 116, 105, 109, 101, 95, 112, 117, 116, 73, 119, 78, 83, 95, 49, 57, 111, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 109, 111, 110, 101, 121, 112, 117, 110, 99, 116, 73, 99, 76, 98, 48, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 109, 111, 110, 101, 121, 112, 117, 110, 99, 116, 73, 99, 76, 98, 49, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 109, 111, 110, 101, 121, 112, 117, 110, 99, 116, 73, 119, 76, 98, 48, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 109, 111, 110, 101, 121, 112, 117, 110, 99, 116, 73, 119, 76, 98, 49, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 57, 109, 111, 110, 101, 121, 95, 103, 101, 116, 73, 99, 78, 83, 95, 49, 57, 105, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 57, 109, 111, 110, 101, 121, 95, 103, 101, 116, 73, 119, 78, 83, 95, 49, 57, 105, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 57, 109, 111, 110, 101, 121, 95, 112, 117, 116, 73, 99, 78, 83, 95, 49, 57, 111, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 57, 109, 111, 110, 101, 121, 95, 112, 117, 116, 73, 119, 78, 83, 95, 49, 57, 111, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 56, 109, 101, 115, 115, 97, 103, 101, 115, 73, 99, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 56, 109, 101, 115, 115, 97, 103, 101, 115, 73, 119, 69, 69, 0, 37, 112, 0, 67, 0, 37, 0, 0, 0, 0, 0, 108, 0, 108, 108, 0, 0, 76, 0, 37, 112, 0, 0, 0, 0, 37, 72, 58, 37, 77, 58, 37, 83, 37, 109, 47, 37, 100, 47, 37, 121, 37, 89, 45, 37, 109, 45, 37, 100, 37, 73, 58, 37, 77, 58, 37, 83, 32, 37, 112, 37, 72, 58, 37, 77, 37, 72, 58, 37, 77, 58, 37, 83, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 0, 37, 76, 102, 0, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 0, 37, 46, 48, 76, 102, 0, 33, 34, 118, 101, 99, 116, 111, 114, 32, 111, 117, 116, 95, 111, 102, 95, 114, 97, 110, 103, 101, 34, 0, 67, 58, 92, 99, 121, 103, 100, 114, 105, 118, 101, 92, 99, 92, 80, 114, 111, 103, 114, 97, 109, 32, 70, 105, 108, 101, 115, 92, 69, 109, 115, 99, 114, 105, 112, 116, 101, 110, 92, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 92, 49, 46, 51, 53, 46, 48, 92, 115, 121, 115, 116, 101, 109, 92, 105, 110, 99, 108, 117, 100, 101, 92, 108, 105, 98, 99, 120, 120, 92, 118, 101, 99, 116, 111, 114, 0, 95, 95, 116, 104, 114, 111, 119, 95, 111, 117, 116, 95, 111, 102, 95, 114, 97, 110, 103, 101, 0, 116, 114, 117, 101, 0, 102, 97, 108, 115, 101, 0, 83, 117, 110, 100, 97, 121, 0, 77, 111, 110, 100, 97, 121, 0, 84, 117, 101, 115, 100, 97, 121, 0, 87, 101, 100, 110, 101, 115, 100, 97, 121, 0, 84, 104, 117, 114, 115, 100, 97, 121, 0, 70, 114, 105, 100, 97, 121, 0, 83, 97, 116, 117, 114, 100, 97, 121, 0, 83, 117, 110, 0, 77, 111, 110, 0, 84, 117, 101, 0, 87, 101, 100, 0, 84, 104, 117, 0, 70, 114, 105, 0, 83, 97, 116, 0, 74, 97, 110, 117, 97, 114, 121, 0, 70, 101, 98, 114, 117, 97, 114, 121, 0, 77, 97, 114, 99, 104, 0, 65, 112, 114, 105, 108, 0, 77, 97, 121, 0, 74, 117, 110, 101, 0, 74, 117, 108, 121, 0, 65, 117, 103, 117, 115, 116, 0, 83, 101, 112, 116, 101, 109, 98, 101, 114, 0, 79, 99, 116, 111, 98, 101, 114, 0, 78, 111, 118, 101, 109, 98, 101, 114, 0, 68, 101, 99, 101, 109, 98, 101, 114, 0, 74, 97, 110, 0, 70, 101, 98, 0, 77, 97, 114, 0, 65, 112, 114, 0, 74, 117, 110, 0, 74, 117, 108, 0, 65, 117, 103, 0, 83, 101, 112, 0, 79, 99, 116, 0, 78, 111, 118, 0, 68, 101, 99, 0, 65, 77, 0, 80, 77, 0, 37, 109, 47, 37, 100, 47, 37, 121, 0, 37, 72, 58, 37, 77, 58, 37, 83, 0, 37, 97, 32, 37, 98, 32, 37, 100, 32, 37, 72, 58, 37, 77, 58, 37, 83, 32, 37, 89, 0, 37, 73, 58, 37, 77, 58, 37, 83, 32, 37, 112, 0, 78, 83, 116, 51, 95, 95, 49, 49, 51, 109, 101, 115, 115, 97, 103, 101, 115, 95, 98, 97, 115, 101, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 49, 95, 95, 109, 111, 110, 101, 121, 95, 112, 117, 116, 73, 119, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 49, 95, 95, 109, 111, 110, 101, 121, 95, 112, 117, 116, 73, 99, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 49, 95, 95, 109, 111, 110, 101, 121, 95, 103, 101, 116, 73, 119, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 49, 95, 95, 109, 111, 110, 101, 121, 95, 103, 101, 116, 73, 99, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 109, 111, 110, 101, 121, 95, 98, 97, 115, 101, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 116, 105, 109, 101, 95, 112, 117, 116, 69, 0, 78, 83, 116, 51, 95, 95, 49, 50, 48, 95, 95, 116, 105, 109, 101, 95, 103, 101, 116, 95, 99, 95, 115, 116, 111, 114, 97, 103, 101, 73, 119, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 50, 48, 95, 95, 116, 105, 109, 101, 95, 103, 101, 116, 95, 99, 95, 115, 116, 111, 114, 97, 103, 101, 73, 99, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 57, 116, 105, 109, 101, 95, 98, 97, 115, 101, 69, 0, 78, 83, 116, 51, 95, 95, 49, 57, 95, 95, 110, 117, 109, 95, 112, 117, 116, 73, 119, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 52, 95, 95, 110, 117, 109, 95, 112, 117, 116, 95, 98, 97, 115, 101, 69, 0, 78, 83, 116, 51, 95, 95, 49, 57, 95, 95, 110, 117, 109, 95, 112, 117, 116, 73, 99, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 57, 95, 95, 110, 117, 109, 95, 103, 101, 116, 73, 119, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 52, 95, 95, 110, 117, 109, 95, 103, 101, 116, 95, 98, 97, 115, 101, 69, 0, 78, 83, 116, 51, 95, 95, 49, 57, 95, 95, 110, 117, 109, 95, 103, 101, 116, 73, 99, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 50, 99, 111, 100, 101, 99, 118, 116, 95, 98, 97, 115, 101, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 99, 116, 121, 112, 101, 95, 98, 97, 115, 101, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 52, 95, 95, 115, 104, 97, 114, 101, 100, 95, 99, 111, 117, 110, 116, 69, 0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 1177769);
var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8);
assert(tempDoublePtr % 8 == 0);
function copyTempFloat(ptr) {
HEAP8[tempDoublePtr] = HEAP8[ptr];
HEAP8[tempDoublePtr + 1] = HEAP8[ptr + 1];
HEAP8[tempDoublePtr + 2] = HEAP8[ptr + 2];
HEAP8[tempDoublePtr + 3] = HEAP8[ptr + 3]
}
function copyTempDouble(ptr) {
HEAP8[tempDoublePtr] = HEAP8[ptr];
HEAP8[tempDoublePtr + 1] = HEAP8[ptr + 1];
HEAP8[tempDoublePtr + 2] = HEAP8[ptr + 2];
HEAP8[tempDoublePtr + 3] = HEAP8[ptr + 3];
HEAP8[tempDoublePtr + 4] = HEAP8[ptr + 4];
HEAP8[tempDoublePtr + 5] = HEAP8[ptr + 5];
HEAP8[tempDoublePtr + 6] = HEAP8[ptr + 6];
HEAP8[tempDoublePtr + 7] = HEAP8[ptr + 7]
}
function _emscripten_get_now() {
if (!_emscripten_get_now.actual) {
if (ENVIRONMENT_IS_NODE) {
_emscripten_get_now.actual = function _emscripten_get_now_actual() {
var t = process["hrtime"]();
return t[0] * 1e3 + t[1] / 1e6
}
} else if (typeof dateNow !== "undefined") {
_emscripten_get_now.actual = dateNow
} else if (typeof self === "object" && self["performance"] && typeof self["performance"]["now"] === "function") {
_emscripten_get_now.actual = function _emscripten_get_now_actual() {
return self["performance"]["now"]()
}
} else if (typeof performance === "object" && typeof performance["now"] === "function") {
_emscripten_get_now.actual = function _emscripten_get_now_actual() {
return performance["now"]()
}
} else {
_emscripten_get_now.actual = Date.now
}
}
return _emscripten_get_now.actual()
}
function _emscripten_get_now_is_monotonic() {
return ENVIRONMENT_IS_NODE || typeof dateNow !== "undefined" || (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && self["performance"] && self["performance"]["now"]
}
var ERRNO_CODES = {
EPERM: 1,
ENOENT: 2,
ESRCH: 3,
EINTR: 4,
EIO: 5,
ENXIO: 6,
E2BIG: 7,
ENOEXEC: 8,
EBADF: 9,
ECHILD: 10,
EAGAIN: 11,
EWOULDBLOCK: 11,
ENOMEM: 12,
EACCES: 13,
EFAULT: 14,
ENOTBLK: 15,
EBUSY: 16,
EEXIST: 17,
EXDEV: 18,
ENODEV: 19,
ENOTDIR: 20,
EISDIR: 21,
EINVAL: 22,
ENFILE: 23,
EMFILE: 24,
ENOTTY: 25,
ETXTBSY: 26,
EFBIG: 27,
ENOSPC: 28,
ESPIPE: 29,
EROFS: 30,
EMLINK: 31,
EPIPE: 32,
EDOM: 33,
ERANGE: 34,
ENOMSG: 42,
EIDRM: 43,
ECHRNG: 44,
EL2NSYNC: 45,
EL3HLT: 46,
EL3RST: 47,
ELNRNG: 48,
EUNATCH: 49,
ENOCSI: 50,
EL2HLT: 51,
EDEADLK: 35,
ENOLCK: 37,
EBADE: 52,
EBADR: 53,
EXFULL: 54,
ENOANO: 55,
EBADRQC: 56,
EBADSLT: 57,
EDEADLOCK: 35,
EBFONT: 59,
ENOSTR: 60,
ENODATA: 61,
ETIME: 62,
ENOSR: 63,
ENONET: 64,
ENOPKG: 65,
EREMOTE: 66,
ENOLINK: 67,
EADV: 68,
ESRMNT: 69,
ECOMM: 70,
EPROTO: 71,
EMULTIHOP: 72,
EDOTDOT: 73,
EBADMSG: 74,
ENOTUNIQ: 76,
EBADFD: 77,
EREMCHG: 78,
ELIBACC: 79,
ELIBBAD: 80,
ELIBSCN: 81,
ELIBMAX: 82,
ELIBEXEC: 83,
ENOSYS: 38,
ENOTEMPTY: 39,
ENAMETOOLONG: 36,
ELOOP: 40,
EOPNOTSUPP: 95,
EPFNOSUPPORT: 96,
ECONNRESET: 104,
ENOBUFS: 105,
EAFNOSUPPORT: 97,
EPROTOTYPE: 91,
ENOTSOCK: 88,
ENOPROTOOPT: 92,
ESHUTDOWN: 108,
ECONNREFUSED: 111,
EADDRINUSE: 98,
ECONNABORTED: 103,
ENETUNREACH: 101,
ENETDOWN: 100,
ETIMEDOUT: 110,
EHOSTDOWN: 112,
EHOSTUNREACH: 113,
EINPROGRESS: 115,
EALREADY: 114,
EDESTADDRREQ: 89,
EMSGSIZE: 90,
EPROTONOSUPPORT: 93,
ESOCKTNOSUPPORT: 94,
EADDRNOTAVAIL: 99,
ENETRESET: 102,
EISCONN: 106,
ENOTCONN: 107,
ETOOMANYREFS: 109,
EUSERS: 87,
EDQUOT: 122,
ESTALE: 116,
ENOTSUP: 95,
ENOMEDIUM: 123,
EILSEQ: 84,
EOVERFLOW: 75,
ECANCELED: 125,
ENOTRECOVERABLE: 131,
EOWNERDEAD: 130,
ESTRPIPE: 86
};
function ___setErrNo(value) {
if (Module["___errno_location"]) HEAP32[Module["___errno_location"]() >> 2] = value;
return value
}
function _clock_gettime(clk_id, tp) {
var now;
if (clk_id === 0) {
now = Date.now()
} else if (clk_id === 1 && _emscripten_get_now_is_monotonic()) {
now = _emscripten_get_now()
} else {
___setErrNo(ERRNO_CODES.EINVAL);
return -1
}
HEAP32[tp >> 2] = now / 1e3 | 0;
HEAP32[tp + 4 >> 2] = now % 1e3 * 1e3 * 1e3 | 0;
return 0
}
Module["_i64Subtract"] = _i64Subtract;
function ___assert_fail(condition, filename, line, func) {
ABORT = true;
throw "Assertion failed: " + Pointer_stringify(condition) + ", at: " + [filename ? Pointer_stringify(filename) : "unknown filename", line, func ? Pointer_stringify(func) : "unknown function"] + " at " + stackTrace()
}
function __ZSt18uncaught_exceptionv() {
return !!__ZSt18uncaught_exceptionv.uncaught_exception
}
var EXCEPTIONS = {
last: 0,
caught: [],
infos: {},
deAdjust: (function(adjusted) {
if (!adjusted || EXCEPTIONS.infos[adjusted]) return adjusted;
for (var ptr in EXCEPTIONS.infos) {
var info = EXCEPTIONS.infos[ptr];
if (info.adjusted === adjusted) {
return ptr
}
}
return adjusted
}),
addRef: (function(ptr) {
if (!ptr) return;
var info = EXCEPTIONS.infos[ptr];
info.refcount++
}),
decRef: (function(ptr) {
if (!ptr) return;
var info = EXCEPTIONS.infos[ptr];
assert(info.refcount > 0);
info.refcount--;
if (info.refcount === 0) {
if (info.destructor) {
Runtime.dynCall("vi", info.destructor, [ptr])
}
delete EXCEPTIONS.infos[ptr];
___cxa_free_exception(ptr)
}
}),
clearRef: (function(ptr) {
if (!ptr) return;
var info = EXCEPTIONS.infos[ptr];
info.refcount = 0
})
};
function ___resumeException(ptr) {
if (!EXCEPTIONS.last) {
EXCEPTIONS.last = ptr
}
EXCEPTIONS.clearRef(EXCEPTIONS.deAdjust(ptr));
throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."
}
function ___cxa_find_matching_catch() {
var thrown = EXCEPTIONS.last;
if (!thrown) {
return (asm["setTempRet0"](0), 0) | 0
}
var info = EXCEPTIONS.infos[thrown];
var throwntype = info.type;
if (!throwntype) {
return (asm["setTempRet0"](0), thrown) | 0
}
var typeArray = Array.prototype.slice.call(arguments);
var pointer = Module["___cxa_is_pointer_type"](throwntype);
if (!___cxa_find_matching_catch.buffer) ___cxa_find_matching_catch.buffer = _malloc(4);
HEAP32[___cxa_find_matching_catch.buffer >> 2] = thrown;
thrown = ___cxa_find_matching_catch.buffer;
for (var i = 0; i < typeArray.length; i++) {
if (typeArray[i] && Module["___cxa_can_catch"](typeArray[i], throwntype, thrown)) {
thrown = HEAP32[thrown >> 2];
info.adjusted = thrown;
return (asm["setTempRet0"](typeArray[i]), thrown) | 0
}
}
thrown = HEAP32[thrown >> 2];
return (asm["setTempRet0"](throwntype), thrown) | 0
}
function ___cxa_throw(ptr, type, destructor) {
EXCEPTIONS.infos[ptr] = {
ptr: ptr,
adjusted: ptr,
type: type,
destructor: destructor,
refcount: 0
};
EXCEPTIONS.last = ptr;
if (!("uncaught_exception" in __ZSt18uncaught_exceptionv)) {
__ZSt18uncaught_exceptionv.uncaught_exception = 1
} else {
__ZSt18uncaught_exceptionv.uncaught_exception++
}
throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."
}
Module["_memset"] = _memset;
var _BDtoILow = true;
function _pthread_mutex_lock() {}
function _pthread_cond_signal() {}
function _abort() {
Module["abort"]()
}
function _pthread_cond_destroy() {}
function _pthread_mutex_destroy() {}
function _pthread_once(ptr, func) {
if (!_pthread_once.seen) _pthread_once.seen = {};
if (ptr in _pthread_once.seen) return;
Runtime.dynCall("v", func);
_pthread_once.seen[ptr] = 1
}
function ___lock() {}
function ___unlock() {}
var PTHREAD_SPECIFIC = {};
function _pthread_getspecific(key) {
return PTHREAD_SPECIFIC[key] || 0
}
var _log = Math_log;
var _fabs = Math_abs;
var PTHREAD_SPECIFIC_NEXT_KEY = 1;
function _pthread_key_create(key, destructor) {
if (key == 0) {
return ERRNO_CODES.EINVAL
}
HEAP32[key >> 2] = PTHREAD_SPECIFIC_NEXT_KEY;
PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY] = 0;
PTHREAD_SPECIFIC_NEXT_KEY++;
return 0
}
function __isLeapYear(year) {
return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)
}
function __arraySum(array, index) {
var sum = 0;
for (var i = 0; i <= index; sum += array[i++]);
return sum
}
var __MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
var __MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
function __addDays(date, days) {
var newDate = new Date(date.getTime());
while (days > 0) {
var leap = __isLeapYear(newDate.getFullYear());
var currentMonth = newDate.getMonth();
var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth];
if (days > daysInCurrentMonth - newDate.getDate()) {
days -= daysInCurrentMonth - newDate.getDate() + 1;
newDate.setDate(1);
if (currentMonth < 11) {
newDate.setMonth(currentMonth + 1)
} else {
newDate.setMonth(0);
newDate.setFullYear(newDate.getFullYear() + 1)
}
} else {
newDate.setDate(newDate.getDate() + days);
return newDate
}
}
return newDate
}
function _strftime(s, maxsize, format, tm) {
var tm_zone = HEAP32[tm + 40 >> 2];
var date = {
tm_sec: HEAP32[tm >> 2],
tm_min: HEAP32[tm + 4 >> 2],
tm_hour: HEAP32[tm + 8 >> 2],
tm_mday: HEAP32[tm + 12 >> 2],
tm_mon: HEAP32[tm + 16 >> 2],
tm_year: HEAP32[tm + 20 >> 2],
tm_wday: HEAP32[tm + 24 >> 2],
tm_yday: HEAP32[tm + 28 >> 2],
tm_isdst: HEAP32[tm + 32 >> 2],
tm_gmtoff: HEAP32[tm + 36 >> 2],
tm_zone: tm_zone ? Pointer_stringify(tm_zone) : ""
};
var pattern = Pointer_stringify(format);
var EXPANSION_RULES_1 = {
"%c": "%a %b %d %H:%M:%S %Y",
"%D": "%m/%d/%y",
"%F": "%Y-%m-%d",
"%h": "%b",
"%r": "%I:%M:%S %p",
"%R": "%H:%M",
"%T": "%H:%M:%S",
"%x": "%m/%d/%y",
"%X": "%H:%M:%S"
};
for (var rule in EXPANSION_RULES_1) {
pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_1[rule])
}
var WEEKDAYS = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var MONTHS = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
function leadingSomething(value, digits, character) {
var str = typeof value === "number" ? value.toString() : value || "";
while (str.length < digits) {
str = character[0] + str
}
return str
}
function leadingNulls(value, digits) {
return leadingSomething(value, digits, "0")
}
function compareByDay(date1, date2) {
function sgn(value) {
return value < 0 ? -1 : value > 0 ? 1 : 0
}
var compare;
if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {
if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) {
compare = sgn(date1.getDate() - date2.getDate())
}
}
return compare
}
function getFirstWeekStartDate(janFourth) {
switch (janFourth.getDay()) {
case 0:
return new Date(janFourth.getFullYear() - 1, 11, 29);
case 1:
return janFourth;
case 2:
return new Date(janFourth.getFullYear(), 0, 3);
case 3:
return new Date(janFourth.getFullYear(), 0, 2);
case 4:
return new Date(janFourth.getFullYear(), 0, 1);
case 5:
return new Date(janFourth.getFullYear() - 1, 11, 31);
case 6:
return new Date(janFourth.getFullYear() - 1, 11, 30)
}
}
function getWeekBasedYear(date) {
var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);
var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);
var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);
var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);
var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);
if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {
if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) {
return thisDate.getFullYear() + 1
} else {
return thisDate.getFullYear()
}
} else {
return thisDate.getFullYear() - 1
}
}
var EXPANSION_RULES_2 = {
"%a": (function(date) {
return WEEKDAYS[date.tm_wday].substring(0, 3)
}),
"%A": (function(date) {
return WEEKDAYS[date.tm_wday]
}),
"%b": (function(date) {
return MONTHS[date.tm_mon].substring(0, 3)
}),
"%B": (function(date) {
return MONTHS[date.tm_mon]
}),
"%C": (function(date) {
var year = date.tm_year + 1900;
return leadingNulls(year / 100 | 0, 2)
}),
"%d": (function(date) {
return leadingNulls(date.tm_mday, 2)
}),
"%e": (function(date) {
return leadingSomething(date.tm_mday, 2, " ")
}),
"%g": (function(date) {
return getWeekBasedYear(date).toString().substring(2)
}),
"%G": (function(date) {
return getWeekBasedYear(date)
}),
"%H": (function(date) {
return leadingNulls(date.tm_hour, 2)
}),
"%I": (function(date) {
return leadingNulls(date.tm_hour < 13 ? date.tm_hour : date.tm_hour - 12, 2)
}),
"%j": (function(date) {
return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3)
}),
"%m": (function(date) {
return leadingNulls(date.tm_mon + 1, 2)
}),
"%M": (function(date) {
return leadingNulls(date.tm_min, 2)
}),
"%n": (function() {
return "\n"
}),
"%p": (function(date) {
if (date.tm_hour > 0 && date.tm_hour < 13) {
return "AM"
} else {
return "PM"
}
}),
"%S": (function(date) {
return leadingNulls(date.tm_sec, 2)
}),
"%t": (function() {
return "\t"
}),
"%u": (function(date) {
var day = new Date(date.tm_year + 1900, date.tm_mon + 1, date.tm_mday, 0, 0, 0, 0);
return day.getDay() || 7
}),
"%U": (function(date) {
var janFirst = new Date(date.tm_year + 1900, 0, 1);
var firstSunday = janFirst.getDay() === 0 ? janFirst : __addDays(janFirst, 7 - janFirst.getDay());
var endDate = new Date(date.tm_year + 1900, date.tm_mon, date.tm_mday);
if (compareByDay(firstSunday, endDate) < 0) {
var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth() - 1) - 31;
var firstSundayUntilEndJanuary = 31 - firstSunday.getDate();
var days = firstSundayUntilEndJanuary + februaryFirstUntilEndMonth + endDate.getDate();
return leadingNulls(Math.ceil(days / 7), 2)
}
return compareByDay(firstSunday, janFirst) === 0 ? "01" : "00"
}),
"%V": (function(date) {
var janFourthThisYear = new Date(date.tm_year + 1900, 0, 4);
var janFourthNextYear = new Date(date.tm_year + 1901, 0, 4);
var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);
var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);
var endDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);
if (compareByDay(endDate, firstWeekStartThisYear) < 0) {
return "53"
}
if (compareByDay(firstWeekStartNextYear, endDate) <= 0) {
return "01"
}
var daysDifference;
if (firstWeekStartThisYear.getFullYear() < date.tm_year + 1900) {
daysDifference = date.tm_yday + 32 - firstWeekStartThisYear.getDate()
} else {
daysDifference = date.tm_yday + 1 - firstWeekStartThisYear.getDate()
}
return leadingNulls(Math.ceil(daysDifference / 7), 2)
}),
"%w": (function(date) {
var day = new Date(date.tm_year + 1900, date.tm_mon + 1, date.tm_mday, 0, 0, 0, 0);
return day.getDay()
}),
"%W": (function(date) {
var janFirst = new Date(date.tm_year, 0, 1);
var firstMonday = janFirst.getDay() === 1 ? janFirst : __addDays(janFirst, janFirst.getDay() === 0 ? 1 : 7 - janFirst.getDay() + 1);
var endDate = new Date(date.tm_year + 1900, date.tm_mon, date.tm_mday);
if (compareByDay(firstMonday, endDate) < 0) {
var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth() - 1) - 31;
var firstMondayUntilEndJanuary = 31 - firstMonday.getDate();
var days = firstMondayUntilEndJanuary + februaryFirstUntilEndMonth + endDate.getDate();
return leadingNulls(Math.ceil(days / 7), 2)
}
return compareByDay(firstMonday, janFirst) === 0 ? "01" : "00"
}),
"%y": (function(date) {
return (date.tm_year + 1900).toString().substring(2)
}),
"%Y": (function(date) {
return date.tm_year + 1900
}),
"%z": (function(date) {
var off = date.tm_gmtoff;
var ahead = off >= 0;
off = Math.abs(off) / 60;
off = off / 60 * 100 + off % 60;
return (ahead ? "+" : "-") + String("0000" + off).slice(-4)
}),
"%Z": (function(date) {
return date.tm_zone
}),
"%%": (function() {
return "%"
})
};
for (var rule in EXPANSION_RULES_2) {
if (pattern.indexOf(rule) >= 0) {
pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_2[rule](date))
}
}
var bytes = intArrayFromString(pattern, false);
if (bytes.length > maxsize) {
return 0
}
writeArrayToMemory(bytes, s);
return bytes.length - 1
}
function _strftime_l(s, maxsize, format, tm) {
return _strftime(s, maxsize, format, tm)
}
var ERRNO_MESSAGES = {
0: "Success",
1: "Not super-user",
2: "No such file or directory",
3: "No such process",
4: "Interrupted system call",
5: "I/O error",
6: "No such device or address",
7: "Arg list too long",
8: "Exec format error",
9: "Bad file number",
10: "No children",
11: "No more processes",
12: "Not enough core",
13: "Permission denied",
14: "Bad address",
15: "Block device required",
16: "Mount device busy",
17: "File exists",
18: "Cross-device link",
19: "No such device",
20: "Not a directory",
21: "Is a directory",
22: "Invalid argument",
23: "Too many open files in system",
24: "Too many open files",
25: "Not a typewriter",
26: "Text file busy",
27: "File too large",
28: "No space left on device",
29: "Illegal seek",
30: "Read only file system",
31: "Too many links",
32: "Broken pipe",
33: "Math arg out of domain of func",
34: "Math result not representable",
35: "File locking deadlock error",
36: "File or path name too long",
37: "No record locks available",
38: "Function not implemented",
39: "Directory not empty",
40: "Too many symbolic links",
42: "No message of desired type",
43: "Identifier removed",
44: "Channel number out of range",
45: "Level 2 not synchronized",
46: "Level 3 halted",
47: "Level 3 reset",
48: "Link number out of range",
49: "Protocol driver not attached",
50: "No CSI structure available",
51: "Level 2 halted",
52: "Invalid exchange",
53: "Invalid request descriptor",
54: "Exchange full",
55: "No anode",
56: "Invalid request code",
57: "Invalid slot",
59: "Bad font file fmt",
60: "Device not a stream",
61: "No data (for no delay io)",
62: "Timer expired",
63: "Out of streams resources",
64: "Machine is not on the network",
65: "Package not installed",
66: "The object is remote",
67: "The link has been severed",
68: "Advertise error",
69: "Srmount error",
70: "Communication error on send",
71: "Protocol error",
72: "Multihop attempted",
73: "Cross mount point (not really error)",
74: "Trying to read unreadable message",
75: "Value too large for defined data type",
76: "Given log. name not unique",
77: "f.d. invalid for this operation",
78: "Remote address changed",
79: "Can access a needed shared lib",
80: "Accessing a corrupted shared lib",
81: ".lib section in a.out corrupted",
82: "Attempting to link in too many libs",
83: "Attempting to exec a shared library",
84: "Illegal byte sequence",
86: "Streams pipe error",
87: "Too many users",
88: "Socket operation on non-socket",
89: "Destination address required",
90: "Message too long",
91: "Protocol wrong type for socket",
92: "Protocol not available",
93: "Unknown protocol",
94: "Socket type not supported",
95: "Not supported",
96: "Protocol family not supported",
97: "Address family not supported by protocol family",
98: "Address already in use",
99: "Address not available",
100: "Network interface is not configured",
101: "Network is unreachable",
102: "Connection reset by network",
103: "Connection aborted",
104: "Connection reset by peer",
105: "No buffer space available",
106: "Socket is already connected",
107: "Socket is not connected",
108: "Can't send after socket shutdown",
109: "Too many references",
110: "Connection timed out",
111: "Connection refused",
112: "Host is down",
113: "Host is unreachable",
114: "Socket already connected",
115: "Connection already in progress",
116: "Stale file handle",
122: "Quota exceeded",
123: "No medium (in tape drive)",
125: "Operation canceled",
130: "Previous owner died",
131: "State not recoverable"
};
var TTY = {
ttys: [],
init: (function() {}),
shutdown: (function() {}),
register: (function(dev, ops) {
TTY.ttys[dev] = {
input: [],
output: [],
ops: ops
};
FS.registerDevice(dev, TTY.stream_ops)
}),
stream_ops: {
open: (function(stream) {
var tty = TTY.ttys[stream.node.rdev];
if (!tty) {
throw new FS.ErrnoError(ERRNO_CODES.ENODEV)
}
stream.tty = tty;
stream.seekable = false
}),
close: (function(stream) {
stream.tty.ops.flush(stream.tty)
}),
flush: (function(stream) {
stream.tty.ops.flush(stream.tty)
}),
read: (function(stream, buffer, offset, length, pos) {
if (!stream.tty || !stream.tty.ops.get_char) {
throw new FS.ErrnoError(ERRNO_CODES.ENXIO)
}
var bytesRead = 0;
for (var i = 0; i < length; i++) {
var result;
try {
result = stream.tty.ops.get_char(stream.tty)
} catch (e) {
throw new FS.ErrnoError(ERRNO_CODES.EIO)
}
if (result === undefined && bytesRead === 0) {
throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)
}
if (result === null || result === undefined) break;
bytesRead++;
buffer[offset + i] = result
}
if (bytesRead) {
stream.node.timestamp = Date.now()
}
return bytesRead
}),
write: (function(stream, buffer, offset, length, pos) {
if (!stream.tty || !stream.tty.ops.put_char) {
throw new FS.ErrnoError(ERRNO_CODES.ENXIO)
}
for (var i = 0; i < length; i++) {
try {
stream.tty.ops.put_char(stream.tty, buffer[offset + i])
} catch (e) {
throw new FS.ErrnoError(ERRNO_CODES.EIO)
}
}
if (length) {
stream.node.timestamp = Date.now()
}
return i
})
},
default_tty_ops: {
get_char: (function(tty) {
if (!tty.input.length) {
var result = null;
if (ENVIRONMENT_IS_NODE) {
var BUFSIZE = 256;
var buf = new Buffer(BUFSIZE);
var bytesRead = 0;
var fd = process.stdin.fd;
var usingDevice = false;
try {
fd = fs.openSync("/dev/stdin", "r");
usingDevice = true
} catch (e) {}
bytesRead = fs.readSync(fd, buf, 0, BUFSIZE, null);
if (usingDevice) {
fs.closeSync(fd)
}
if (bytesRead > 0) {
result = buf.slice(0, bytesRead).toString("utf-8")
} else {
result = null
}
} else if (typeof window != "undefined" && typeof window.prompt == "function") {
result = window.prompt("Input: ");
if (result !== null) {
result += "\n"
}
} else if (typeof readline == "function") {
result = readline();
if (result !== null) {
result += "\n"
}
}
if (!result) {
return null
}
tty.input = intArrayFromString(result, true)
}
return tty.input.shift()
}),
put_char: (function(tty, val) {
if (val === null || val === 10) {
Module["print"](UTF8ArrayToString(tty.output, 0));
tty.output = []
} else {
if (val != 0) tty.output.push(val)
}
}),
flush: (function(tty) {
if (tty.output && tty.output.length > 0) {
Module["print"](UTF8ArrayToString(tty.output, 0));
tty.output = []
}
})
},
default_tty1_ops: {
put_char: (function(tty, val) {
if (val === null || val === 10) {
Module["printErr"](UTF8ArrayToString(tty.output, 0));
tty.output = []
} else {
if (val != 0) tty.output.push(val)
}
}),
flush: (function(tty) {
if (tty.output && tty.output.length > 0) {
Module["printErr"](UTF8ArrayToString(tty.output, 0));
tty.output = []
}
})
}
};
var MEMFS = {
ops_table: null,
mount: (function(mount) {
return MEMFS.createNode(null, "/", 16384 | 511, 0)
}),
createNode: (function(parent, name, mode, dev) {
if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM)
}
if (!MEMFS.ops_table) {
MEMFS.ops_table = {
dir: {
node: {
getattr: MEMFS.node_ops.getattr,
setattr: MEMFS.node_ops.setattr,
lookup: MEMFS.node_ops.lookup,
mknod: MEMFS.node_ops.mknod,
rename: MEMFS.node_ops.rename,
unlink: MEMFS.node_ops.unlink,
rmdir: MEMFS.node_ops.rmdir,
readdir: MEMFS.node_ops.readdir,
symlink: MEMFS.node_ops.symlink
},
stream: {
llseek: MEMFS.stream_ops.llseek
}
},
file: {
node: {
getattr: MEMFS.node_ops.getattr,
setattr: MEMFS.node_ops.setattr
},
stream: {
llseek: MEMFS.stream_ops.llseek,
read: MEMFS.stream_ops.read,
write: MEMFS.stream_ops.write,
allocate: MEMFS.stream_ops.allocate,
mmap: MEMFS.stream_ops.mmap,
msync: MEMFS.stream_ops.msync
}
},
link: {
node: {
getattr: MEMFS.node_ops.getattr,
setattr: MEMFS.node_ops.setattr,
readlink: MEMFS.node_ops.readlink
},
stream: {}
},
chrdev: {
node: {
getattr: MEMFS.node_ops.getattr,
setattr: MEMFS.node_ops.setattr
},
stream: FS.chrdev_stream_ops
}
}
}
var node = FS.createNode(parent, name, mode, dev);
if (FS.isDir(node.mode)) {
node.node_ops = MEMFS.ops_table.dir.node;
node.stream_ops = MEMFS.ops_table.dir.stream;
node.contents = {}
} else if (FS.isFile(node.mode)) {
node.node_ops = MEMFS.ops_table.file.node;
node.stream_ops = MEMFS.ops_table.file.stream;
node.usedBytes = 0;
node.contents = null
} else if (FS.isLink(node.mode)) {
node.node_ops = MEMFS.ops_table.link.node;
node.stream_ops = MEMFS.ops_table.link.stream
} else if (FS.isChrdev(node.mode)) {
node.node_ops = MEMFS.ops_table.chrdev.node;
node.stream_ops = MEMFS.ops_table.chrdev.stream
}
node.timestamp = Date.now();
if (parent) {
parent.contents[name] = node
}
return node
}),
getFileDataAsRegularArray: (function(node) {
if (node.contents && node.contents.subarray) {
var arr = [];
for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]);
return arr
}
return node.contents
}),
getFileDataAsTypedArray: (function(node) {
if (!node.contents) return new Uint8Array;
if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);
return new Uint8Array(node.contents)
}),
expandFileStorage: (function(node, newCapacity) {
if (node.contents && node.contents.subarray && newCapacity > node.contents.length) {
node.contents = MEMFS.getFileDataAsRegularArray(node);
node.usedBytes = node.contents.length
}
if (!node.contents || node.contents.subarray) {
var prevCapacity = node.contents ? node.contents.buffer.byteLength : 0;
if (prevCapacity >= newCapacity) return;
var CAPACITY_DOUBLING_MAX = 1024 * 1024;
newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) | 0);
if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);
var oldContents = node.contents;
node.contents = new Uint8Array(newCapacity);
if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);
return
}
if (!node.contents && newCapacity > 0) node.contents = [];
while (node.contents.length < newCapacity) node.contents.push(0)
}),
resizeFileStorage: (function(node, newSize) {
if (node.usedBytes == newSize) return;
if (newSize == 0) {
node.contents = null;
node.usedBytes = 0;
return
}
if (!node.contents || node.contents.subarray) {
var oldContents = node.contents;
node.contents = new Uint8Array(new ArrayBuffer(newSize));
if (oldContents) {
node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)))
}
node.usedBytes = newSize;
return
}
if (!node.contents) node.contents = [];
if (node.contents.length > newSize) node.contents.length = newSize;
else
while (node.contents.length < newSize) node.contents.push(0);
node.usedBytes = newSize
}),
node_ops: {
getattr: (function(node) {
var attr = {};
attr.dev = FS.isChrdev(node.mode) ? node.id : 1;
attr.ino = node.id;
attr.mode = node.mode;
attr.nlink = 1;
attr.uid = 0;
attr.gid = 0;
attr.rdev = node.rdev;
if (FS.isDir(node.mode)) {
attr.size = 4096
} else if (FS.isFile(node.mode)) {
attr.size = node.usedBytes
} else if (FS.isLink(node.mode)) {
attr.size = node.link.length
} else {
attr.size = 0
}
attr.atime = new Date(node.timestamp);
attr.mtime = new Date(node.timestamp);
attr.ctime = new Date(node.timestamp);
attr.blksize = 4096;
attr.blocks = Math.ceil(attr.size / attr.blksize);
return attr
}),
setattr: (function(node, attr) {
if (attr.mode !== undefined) {
node.mode = attr.mode
}
if (attr.timestamp !== undefined) {
node.timestamp = attr.timestamp
}
if (attr.size !== undefined) {
MEMFS.resizeFileStorage(node, attr.size)
}
}),
lookup: (function(parent, name) {
throw FS.genericErrors[ERRNO_CODES.ENOENT]
}),
mknod: (function(parent, name, mode, dev) {
return MEMFS.createNode(parent, name, mode, dev)
}),
rename: (function(old_node, new_dir, new_name) {
if (FS.isDir(old_node.mode)) {
var new_node;
try {
new_node = FS.lookupNode(new_dir, new_name)
} catch (e) {}
if (new_node) {
for (var i in new_node.contents) {
throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)
}
}
}
delete old_node.parent.contents[old_node.name];
old_node.name = new_name;
new_dir.contents[new_name] = old_node;
old_node.parent = new_dir
}),
unlink: (function(parent, name) {
delete parent.contents[name]
}),
rmdir: (function(parent, name) {
var node = FS.lookupNode(parent, name);
for (var i in node.contents) {
throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)
}
delete parent.contents[name]
}),
readdir: (function(node) {
var entries = [".", ".."];
for (var key in node.contents) {
if (!node.contents.hasOwnProperty(key)) {
continue
}
entries.push(key)
}
return entries
}),
symlink: (function(parent, newname, oldpath) {
var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);
node.link = oldpath;
return node
}),
readlink: (function(node) {
if (!FS.isLink(node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
}
return node.link
})
},
stream_ops: {
read: (function(stream, buffer, offset, length, position) {
var contents = stream.node.contents;
if (position >= stream.node.usedBytes) return 0;
var size = Math.min(stream.node.usedBytes - position, length);
assert(size >= 0);
if (size > 8 && contents.subarray) {
buffer.set(contents.subarray(position, position + size), offset)
} else {
for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]
}
return size
}),
write: (function(stream, buffer, offset, length, position, canOwn) {
if (!length) return 0;
var node = stream.node;
node.timestamp = Date.now();
if (buffer.subarray && (!node.contents || node.contents.subarray)) {
if (canOwn) {
node.contents = buffer.subarray(offset, offset + length);
node.usedBytes = length;
return length
} else if (node.usedBytes === 0 && position === 0) {
node.contents = new Uint8Array(buffer.subarray(offset, offset + length));
node.usedBytes = length;
return length
} else if (position + length <= node.usedBytes) {
node.contents.set(buffer.subarray(offset, offset + length), position);
return length
}
}
MEMFS.expandFileStorage(node, position + length);
if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position);
else {
for (var i = 0; i < length; i++) {
node.contents[position + i] = buffer[offset + i]
}
}
node.usedBytes = Math.max(node.usedBytes, position + length);
return length
}),
llseek: (function(stream, offset, whence) {
var position = offset;
if (whence === 1) {
position += stream.position
} else if (whence === 2) {
if (FS.isFile(stream.node.mode)) {
position += stream.node.usedBytes
}
}
if (position < 0) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
}
return position
}),
allocate: (function(stream, offset, length) {
MEMFS.expandFileStorage(stream.node, offset + length);
stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length)
}),
mmap: (function(stream, buffer, offset, length, position, prot, flags) {
if (!FS.isFile(stream.node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.ENODEV)
}
var ptr;
var allocated;
var contents = stream.node.contents;
if (!(flags & 2) && (contents.buffer === buffer || contents.buffer === buffer.buffer)) {
allocated = false;
ptr = contents.byteOffset
} else {
if (position > 0 || position + length < stream.node.usedBytes) {
if (contents.subarray) {
contents = contents.subarray(position, position + length)
} else {
contents = Array.prototype.slice.call(contents, position, position + length)
}
}
allocated = true;
ptr = _malloc(length);
if (!ptr) {
throw new FS.ErrnoError(ERRNO_CODES.ENOMEM)
}
buffer.set(contents, ptr)
}
return {
ptr: ptr,
allocated: allocated
}
}),
msync: (function(stream, buffer, offset, length, mmapFlags) {
if (!FS.isFile(stream.node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.ENODEV)
}
if (mmapFlags & 2) {
return 0
}
var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);
return 0
})
}
};
var IDBFS = {
dbs: {},
indexedDB: (function() {
if (typeof indexedDB !== "undefined") return indexedDB;
var ret = null;
if (typeof window === "object") ret = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
assert(ret, "IDBFS used, but indexedDB not supported");
return ret
}),
DB_VERSION: 21,
DB_STORE_NAME: "FILE_DATA",
mount: (function(mount) {
return MEMFS.mount.apply(null, arguments)
}),
syncfs: (function(mount, populate, callback) {
IDBFS.getLocalSet(mount, (function(err, local) {
if (err) return callback(err);
IDBFS.getRemoteSet(mount, (function(err, remote) {
if (err) return callback(err);
var src = populate ? remote : local;
var dst = populate ? local : remote;
IDBFS.reconcile(src, dst, callback)
}))
}))
}),
getDB: (function(name, callback) {
var db = IDBFS.dbs[name];
if (db) {
return callback(null, db)
}
var req;
try {
req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION)
} catch (e) {
return callback(e)
}
req.onupgradeneeded = (function(e) {
var db = e.target.result;
var transaction = e.target.transaction;
var fileStore;
if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) {
fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME)
} else {
fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME)
}
if (!fileStore.indexNames.contains("timestamp")) {
fileStore.createIndex("timestamp", "timestamp", {
unique: false
})
}
});
req.onsuccess = (function() {